|
Name |
|
Date |
Size |
#Lines |
LOC |
| .. | | 03-May-2022 | - |
| cmake/ | H | 23-Dec-2017 | - | 527 | 479 |
| config/ | H | 23-Dec-2017 | - | 168 | 112 |
| efpmd/ | H | 23-Dec-2017 | - | 9,570 | 5,325 |
| fraglib/ | H | 23-Dec-2017 | - | 186,322 | 185,804 |
| interface/ | H | 03-May-2022 | - | 531 | 255 |
| src/ | H | 23-Dec-2017 | - | 10,145 | 6,769 |
| tests/ | H | 23-Dec-2017 | - | 31,720 | 31,460 |
| CONTRIBUTORS | H A D | 23-Dec-2017 | 118 | 6 | 4 |
| Doxyfile | H A D | 23-Dec-2017 | 105 KiB | 2,474 | 1,923 |
| LICENSE | H A D | 23-Dec-2017 | 1.2 KiB | 24 | 20 |
| Makefile | H A D | 23-Dec-2017 | 1.1 KiB | 42 | 33 |
| README-cmake.md | H A D | 23-Dec-2017 | 1.7 KiB | 37 | 24 |
| README.md | H A D | 23-Dec-2017 | 6.4 KiB | 156 | 110 |
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