• Home
  • History
  • Annotate
Name Date Size #Lines LOC

..03-May-2022-

cmake/H23-Dec-2017-527479

config/H23-Dec-2017-168112

efpmd/H23-Dec-2017-9,5705,325

fraglib/H23-Dec-2017-186,322185,804

interface/H03-May-2022-531255

src/H23-Dec-2017-10,1456,769

tests/H23-Dec-2017-31,72031,460

CONTRIBUTORSH A D23-Dec-2017118 64

DoxyfileH A D23-Dec-2017105 KiB2,4741,923

LICENSEH A D23-Dec-20171.2 KiB2420

MakefileH A D23-Dec-20171.1 KiB4233

README-cmake.mdH A D23-Dec-20171.7 KiB3724

README.mdH A D23-Dec-20176.4 KiB156110

README-cmake.md

1## Libefp and CMake
2
3#### Building
4
5    cmake -H. -Bobjdir
6    cd objdir && make
7    make install
8
9The build is also responsive to
10
11- static/shared toggle `BUILD_SHARED_LIBS`
12- install location `CMAKE_INSTALL_PREFIX`
13- `name/name_L` in library fragments toggle `FRAGLIB_UNDERSCORE_L`
14- shallow/deep library fragments directory structure toggle `FRAGLIB_DEEP`
15- `CMAKE_C_COMPILER` and `CMAKE_C_FLAGS`
16
17See [CMakeLists.txt](CMakeLists.txt) for options details and additional options.
18All these build options should be passed as `cmake -DOPTION`.
19
20#### Detecting
21
22This project installs with `libefpConfig.cmake`, `libefpConfigVersion.cmake`, and `libefpTargets.cmake` files suitable for use with CMake [`find_package()`](https://cmake.org/cmake/help/v3.2/command/find_package.html) in `CONFIG` mode.
23
24- `find_package(libefp)` - find any libefp libraries and headers
25- `find_package(libefp 1.5.0 EXACT CONFIG REQUIRED COMPONENTS static)` - find libefp of exactly specified version built with static libraries; abort on failure
26
27See [libefpConfig.cmake.in](cmake/libefpConfig.cmake.in) for details of how to detect the Config file and what CMake variables and targets are exported to your project.
28
29#### Using in CMake-based projects
30
31After `find_package(libefp ...)`,
32
33- test if package found with `if(${libefp_FOUND})` or `if(TARGET libefp::efp)`
34- link to library (establishes dependency), including header and definitions configuration with `target_link_libraries(mytarget libefp::efp)`
35- include header files using `target_include_directories(mytarget PRIVATE $<TARGET_PROPERTY:libefp::efp,INTERFACE_INCLUDE_DIRECTORIES>)`
36- compile target applying `-DUSING_libefp` definition using `target_compile_definitions(mytarget PRIVATE $<TARGET_PROPERTY:libefp::efp,INTERFACE_COMPILE_DEFINITIONS>)`
37

README.md

1# LIBEFP
2
3## Overview
4
5The Effective Fragment Potential (EFP) method allows one to describe large
6molecular systems by replacing chemically inert part of a system by a set of
7Effective Fragments while performing regular _ab initio_ calculation on the
8chemically active part [1-8]. The LIBEFP library is a full implementation of
9the EFP method. It allows users to easily incorporate EFP support into their
10favourite quantum chemistry package. LIBEFP is used by many major quantum
11chemistry packages, such as [Q-Chem](http://www.q-chem.com),
12[PSI4](http://www.psicode.org), [NWChem](http://www.nwchem-sw.org),
13[GAMESS](http://www.msg.ameslab.gov/GAMESS),
14[Molcas](https://gitlab.com/Molcas), and others.
15
16Detailed description of methods and algorithms can be found in two LIBEFP
17papers:
18
19- [Kaliman and Slipchenko, JCC 2013](http://dx.doi.org/10.1002/jcc.23375)
20- [Kaliman and Slipchenko, JCC 2015](http://dx.doi.org/10.1002/jcc.23772)
21
22## EFPMD
23
24The EFPMD program is a molecular simulation package based on LIBEFP. It
25supports EFP-only molecular simulations such as geometry optimization and
26molecular dynamics. EFPMD is a part of this distribution. See README.md file in
27the `efpmd` directory for more information.
28
29## Installation
30
31To build LIBEFP from source you need the following:
32
33- C compiler (with C99 standard and OpenMP support)
34
35- POSIX complaint make utility (BSD make or GNU make will work) or CMake
36
37- BLAS/LAPACK libraries (required when linking with LIBEFP)
38
39If you are going to compile EFPMD program (required for tests):
40
41- Fortran 77 compiler
42
43First, copy the configuration file which suits you from `config` directory to
44the top source code directory. Rename the file to `config.inc` and edit it
45according to your needs. All available options are explained in comments.
46Defaults usually work well, but you may need to change the `MYLIBS` variable to
47link with additional libraries required by your setup. You may also need to add
48additional include directories to `MYCFLAGS` (using -I flag) or library search
49path to `MYLDFLAGS` (using -L flag).
50
51To compile issue:
52
53    make
54
55If you only need the library you can use:
56
57    make libefp
58
59To run the test suite (optional) issue:
60
61    make check
62    make checkomp    # to test OpenMP parallel code
63    make checkmpi    # to test MPI parallel code
64
65Finally, to install everything issue:
66
67    make install
68
69For CMake instructions, see [README-cmake.md](README-cmake.md).
70
71## How to use the library
72
73The description of public LIBEFP API is available
74[here](https://libefp.github.io/doxygen_html/efp_8h.html).
75Also see [this](interface/readme.txt) file for step-by-step instructions.
76
77## How to create custom EFP fragment types
78
79LIBEFP comes with a library of ready-to-use fragments. If you decide to
80generate custom fragment parameters follow the instructions below.
81
82LIBEFP uses EFP potential files in format generated by GAMESS quantum
83chemistry package (see http://www.msg.ameslab.gov/gamess/). A version of GAMESS
84from August 11, 2011 is the currently a recommended and tested version. A set
85of pre-generated library fragments are available in the `fraglib` directory. If
86you want to generate parameters for custom fragments you should create GAMESS
87makefp job input similar to the `fraglib/makefp.inp` file. Using this input
88file as a template you can create EFP parameters for arbitrary fragment types.
89
90After you created `.efp` file using GAMESS you should rename the fragment by
91replacing `$FRAGNAME` with your name of choice (e.g. rename `$FRAGNAME` to
92`$MYH2O`).
93
94For a complete description of EFP data file format consult FRAGNAME section in
95GAMESS manual (see http://www.msg.ameslab.gov/gamess/).
96
97## Information for code contributors
98
99- The main design principle for the LIBEFP library is Keep It Simple.
100  All code should be easy to read and to understand. It should be easy to
101  integrate the library into programs written in different programming
102  languages. So the language of choice is C and no fancy Object-Oriented
103  hierarchies.
104
105- Be consistent in coding style when adding new code. Consistency is more
106  important than particular coding style. Use descriptive names for variables
107  and functions. The bigger the scope of the symbol the longer its name should
108  be. Look at the sources and maintain similar style for new code.
109
110- As with most quantum chemistry methods, EFP can require large amounts of
111  memory. The guideline for developers here is simple: ALWAYS check for memory
112  allocation errors in your code and return `EFP_RESULT_NO_MEMORY` on error.
113
114- The code is reentrant which means that it is safe to use two different `efp`
115  objects from two different threads. NEVER use mutable global state as it
116  will break this. Store all mutable data in the `efp` object.
117
118- Use `-Wall -Wextra -Werror` flags to make sure that compilation produces no
119  warnings. Use `make check` to make sure that the code passes test cases.
120
121## References
122
1231. Fragmentation Methods: A Route to Accurate Calculations on Large Systems.
124   M.S.Gordon, D.G.Fedorov, S.R.Pruitt, L.V.Slipchenko. Chem. Rev. 112, 632-672
125   (2012).
126
1272. Effective fragment method for modeling intermolecular hydrogen bonding
128   effects on quantum mechanical calculations. J.H.Jensen, P.N.Day, M.S.Gordon,
129   H.Basch, D.Cohen, D.R.Garmer, M.Krauss, W.J.Stevens in "Modeling the
130   Hydrogen Bond" (D.A. Smith, ed.) ACS Symposium Series 569, 1994, pp
131   139-151.
132
1333. An effective fragment method for modeling solvent effects in quantum
134   mechanical calculations. P.N.Day, J.H.Jensen, M.S.Gordon, S.P.Webb,
135   W.J.Stevens, M.Krauss, D.Garmer, H.Basch, D.Cohen. J.Chem.Phys. 105,
136   1968-1986 (1996).
137
1384. Solvation of the Menshutkin Reaction: A Rigorous test of the Effective
139   Fragment Model. S.P.Webb, M.S.Gordon. J.Phys.Chem.A 103, 1265-73 (1999).
140
1415. The Effective Fragment Potential Method: a QM-based MM approach to modeling
142   environmental effects in chemistry. M.S.Gordon, M.A.Freitag,
143   P.Bandyopadhyay, J.H.Jensen, V.Kairys, W.J.Stevens. J.Phys.Chem.A 105,
144   293-307 (2001).
145
1466. The Effective Fragment Potential: a general method for predicting
147   intermolecular interactions. M.S.Gordon, L.V.Slipchenko, H.Li, J.H.Jensen.
148   Annual Reports in Computational Chemistry, Volume 3, pp 177-193 (2007).
149
1507. Water-benzene interactions: An effective fragment potential and correlated
151   quantum chemistry study. L.V.Slipchenko, M.S.Gordon. J.Phys.Chem.A 113,
152   2092-2102 (2009).
153
1548. Damping functions in the effective fragment potential method. L.V.Slipchenko,
155   M.S.Gordon. Mol.Phys. 107, 999-1016 (2009).
156