Skip to content

Commit d6fd962

Browse files
committed
sync with q-chem 6.2+ version
1 parent 52e587b commit d6fd962

301 files changed

Lines changed: 134956 additions & 48 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.DS_Store

0 Bytes
Binary file not shown.

CMakeLists.txt

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,9 @@ project(
3232
LANGUAGES C CXX
3333
)
3434

35-
#set(CMAKE_INSTALL_PREFIX "${PROJECT_SOURCE_DIR}/installed" CACHE PATH "Installation directory" FORCE)
35+
set(CMAKE_INSTALL_PREFIX "$ENV{LIBEFP_DIR}" CACHE PATH "Installation directory" FORCE)
3636
#set(CMAKE_INSTALL_PREFIX "${LIBEFP_DIR}" CACHE PATH "Installation directory")
37-
set(CMAKE_INSTALL_LIBDIR "lib")
37+
#set(CMAKE_INSTALL_LIBDIR "lib")
3838

3939
### LVS needs this on MacOS silicon
4040
set(CMAKE_CXX_STANDARD 17)
@@ -81,7 +81,7 @@ if((${BUILD_SHARED_LIBS}) AND NOT ${BUILD_FPIC})
8181
endif()
8282

8383
### This option turns OPENMP ON and OFF!
84-
option_with_print(LIBEFP_ENABLE_OPENMP "Enable OpenMP parallelization. Psi4 wants OFF" ON)
84+
option_with_print(LIBEFP_ENABLE_OPENMP "Enable OpenMP parallelization. Psi4 wants OFF" OFF)
8585

8686
option_with_print(ENABLE_GENERIC "Enable mostly static linking in shared library" OFF)
8787
include(xhost) # defines: option(ENABLE_XHOST "Enable processor-specific optimization" ON)
@@ -232,8 +232,8 @@ install(FILES fraglib/makefp.inp
232232
install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/fraglib
233233
DESTINATION ${CMAKE_INSTALL_DATADIR}/${efp})
234234

235-
install(DIRECTORY ${PROJECT_SOURCE_DIR}/nnlib
236-
DESTINATION ${CMAKE_INSTALL_DATADIR}/${efp})
235+
#install(DIRECTORY ${PROJECT_SOURCE_DIR}/nnlib
236+
# DESTINATION ${CMAKE_INSTALL_DATADIR}/${efp})
237237

238238
# headers NOT namespace protected
239239
install(FILES ${src_prefix}/efp.h

efpmd/CMakeLists.txt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,8 +84,10 @@ if(torch_switch)
8484
message("TORCH_INCLUDE_DIRS = ${TORCH_INCLUDE_DIRS}")
8585
endif()
8686

87+
#CXX_STANDARD 14
88+
8789
set_target_properties(efpmd PROPERTIES
88-
CXX_STANDARD 14
90+
CXX_STANDARD 17
8991
CXX_STANDARD_REQUIRED YES
9092
)
9193

efpmd/torch/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ target_include_directories(ctorch PRIVATE ${TORCH_INCLUDE_DIRS})
1717
target_link_libraries(ctorch PUBLIC "${TORCH_LIBRARIES}")
1818

1919
set_target_properties(ctorch PROPERTIES
20-
CXX_STANDARD 14
20+
CXX_STANDARD 17
2121
CXX_STANDARD_REQUIRED YES
2222
)
2323

setup.sh

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
1-
#!/bin/zsh
1+
#!/bin/bash
22

3-
export TORCH_SWITCH=OFF
3+
export TORCH_SWITCH=ON
44

5-
export LIBEFP_DIR="./"
5+
export LIBEFP_DIR="/Users/lyuda/LIBEFP/libefp_2025"
66
export INSTALLATION_DIR="$LIBEFP_DIR"
77

88
if [[ "$TORCH_SWITCH" == "ON" ]] then
99
# Set the installation directory for LibTorch
10-
export TORCH_INSTALLED_DIR=""
10+
export TORCH_INSTALLED_DIR="/Users/lyuda/LIBEFP/LIBTORCH/libtorch"
1111
export LIBTORCH_INCLUDE_DIRS="$TORCH_INSTALLED_DIR/include/;$TORCH_INSTALLED_DIR/include/torch/csrc/api/include"
1212
export TORCHANI_DIR="$LIBEFP_DIR/efpmd/torch"
1313

src/efp.c

Lines changed: 180 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -496,7 +496,7 @@ check_params(struct efp *efp)
496496
enum efp_result res;
497497

498498
for (size_t i = 0; i < efp->n_frag; i++) {
499-
if (efp->opts.print > 1)
499+
if (efp->opts.print > 2)
500500
print_frag_info(efp, i);
501501
if ((res = check_frag_params(&efp->opts, efp->frags + i))) {
502502
efp_log("check_params() failure");
@@ -607,6 +607,10 @@ compute_two_body_range(struct efp *efp, size_t frag_from, size_t frag_to,
607607
if ((do_elec(&efp->opts) || special_elec) && efp->frags[i].n_multipole_pts > 0 &&
608608
efp->frags[fr_j].n_multipole_pts > 0) {
609609
e_elec_tmp = efp_frag_frag_elec(efp, i, fr_j);
610+
611+
if (efp->opts.print > 0 && fabs(e_elec_tmp) > 1.0)
612+
printf(" WARNING: elec energy between fragments %zu and %zu is %lf \n", i, fr_j, e_elec_tmp);
613+
610614
// zeroing the energy contribution on the special fragment in torch custom models
611615
if (efp->opts.enable_elpot && if_special_fragment) e_elec_tmp = 0.0;
612616
//e_elec_tmp = efp_frag_frag_elec(efp, i, fr_j);
@@ -662,9 +666,9 @@ compute_two_body_range(struct efp *efp, size_t frag_from, size_t frag_to,
662666
if (efp->opts.print > 1) {
663667
printf(" In compute_two_body_range() \n");
664668
print_ene(&efp->energy);
665-
if (efp->opts.enable_pairwise)
666-
print_energies(efp);
667669
}
670+
if (efp->opts.print > 2 && efp->opts.enable_pairwise)
671+
print_energies(efp);
668672
}
669673

670674
EFP_EXPORT enum efp_result
@@ -1559,6 +1563,7 @@ efp_get_frag_ai_screen(struct efp *efp, size_t frag_idx, double *screen, int if_
15591563
return EFP_RESULT_SUCCESS;
15601564
}
15611565

1566+
/*
15621567
EFP_EXPORT enum efp_result
15631568
efp_get_all_ai_screen(struct efp *efp, double *screen)
15641569
{
@@ -1576,6 +1581,27 @@ efp_get_all_ai_screen(struct efp *efp, double *screen)
15761581
15771582
return EFP_RESULT_SUCCESS;
15781583
}
1584+
*/
1585+
1586+
EFP_EXPORT enum efp_result
1587+
efp_get_ho_ai_screen(struct efp *efp, double *screen)
1588+
{
1589+
assert(efp);
1590+
assert(screen);
1591+
1592+
for (size_t i = 0; i < efp->n_frag; i++)
1593+
if (efp->frags[i].multipole_rank > 0) {
1594+
struct frag *frag = efp->frags + i;
1595+
1596+
for (size_t j = 0; j < frag->n_multipole_pts; j++) {
1597+
struct multipole_pt *pt = frag->multipole_pts + j;
1598+
*screen++ = pt->screen0;
1599+
}
1600+
}
1601+
1602+
return EFP_RESULT_SUCCESS;
1603+
}
1604+
15791605
/*
15801606
EFP_EXPORT enum efp_result
15811607
efp_get_ai_screen(struct efp *efp, size_t frag_idx, double *screen)
@@ -1856,33 +1882,20 @@ efp_get_frag_rank(struct efp *efp, size_t frag_idx, size_t *rank)
18561882
*/
18571883

18581884
EFP_EXPORT enum efp_result
1859-
efp_get_frag_rank(struct efp *efp, size_t frag_idx, size_t *rank)
1885+
efp_get_frag_rank(struct efp *efp, size_t frag_idx, int *rank)
18601886
{
18611887
assert(efp);
18621888
assert(rank);
18631889
assert(frag_idx < efp->n_frag);
18641890

18651891
struct frag *frag = efp->frags + frag_idx;
18661892

1867-
*rank = 0;
1868-
for (size_t i=0; i<frag->n_multipole_pts; i++) {
1869-
struct multipole_pt *pt = frag->multipole_pts + i;
1870-
size_t rank_tmp = 0;
1871-
if (pt->if_dip)
1872-
rank_tmp = 1;
1873-
if (pt->if_quad)
1874-
rank_tmp = 2;
1875-
if (pt->if_oct)
1876-
rank_tmp = 3;
1877-
if (rank_tmp > *rank)
1878-
*rank = rank_tmp;
1879-
if (*rank == 3)
1880-
break;
1881-
}
1893+
*rank = frag->multipole_rank;
18821894

18831895
return EFP_RESULT_SUCCESS;
18841896
}
18851897

1898+
/*
18861899
EFP_EXPORT enum efp_result
18871900
efp_get_multipole_count(struct efp *efp, size_t *n_mult)
18881901
{
@@ -1897,7 +1910,41 @@ efp_get_multipole_count(struct efp *efp, size_t *n_mult)
18971910
*n_mult = sum;
18981911
return EFP_RESULT_SUCCESS;
18991912
}
1913+
*/
1914+
1915+
EFP_EXPORT enum efp_result
1916+
efp_get_ho_multipole_count(struct efp *efp, size_t *n_mult)
1917+
{
1918+
size_t sum = 0;
1919+
1920+
assert(efp);
1921+
assert(n_mult);
1922+
1923+
for (size_t i = 0; i < efp->n_frag; i++)
1924+
if (efp->frags[i].multipole_rank > 0)
1925+
sum += efp->frags[i].n_multipole_pts;
1926+
1927+
*n_mult = sum;
1928+
return EFP_RESULT_SUCCESS;
1929+
}
1930+
1931+
EFP_EXPORT enum efp_result
1932+
efp_get_mm_multipole_count(struct efp *efp, size_t *n_mult)
1933+
{
1934+
size_t sum = 0;
1935+
1936+
assert(efp);
1937+
assert(n_mult);
1938+
1939+
for (size_t i = 0; i < efp->n_frag; i++)
1940+
if (efp->frags[i].multipole_rank == 0)
1941+
sum += efp->frags[i].n_multipole_pts;
1942+
1943+
*n_mult = sum;
1944+
return EFP_RESULT_SUCCESS;
1945+
}
19001946

1947+
/*
19011948
EFP_EXPORT enum efp_result
19021949
efp_get_multipole_coordinates(struct efp *efp, double *xyz)
19031950
{
@@ -1915,7 +1962,47 @@ efp_get_multipole_coordinates(struct efp *efp, double *xyz)
19151962
}
19161963
return EFP_RESULT_SUCCESS;
19171964
}
1965+
*/
19181966

1967+
EFP_EXPORT enum efp_result
1968+
efp_get_ho_multipole_coordinates(struct efp *efp, double *xyz)
1969+
{
1970+
assert(efp);
1971+
assert(xyz);
1972+
1973+
for (size_t i = 0; i < efp->n_frag; i++)
1974+
if (efp->frags[i].multipole_rank > 0) {
1975+
struct frag *frag = efp->frags + i;
1976+
1977+
for (size_t j = 0; j < frag->n_multipole_pts; j++) {
1978+
*xyz++ = frag->multipole_pts[j].x;
1979+
*xyz++ = frag->multipole_pts[j].y;
1980+
*xyz++ = frag->multipole_pts[j].z;
1981+
}
1982+
}
1983+
return EFP_RESULT_SUCCESS;
1984+
}
1985+
1986+
EFP_EXPORT enum efp_result
1987+
efp_get_mm_multipole_coordinates(struct efp *efp, double *xyz)
1988+
{
1989+
assert(efp);
1990+
assert(xyz);
1991+
1992+
for (size_t i = 0; i < efp->n_frag; i++)
1993+
if (efp->frags[i].multipole_rank == 0) {
1994+
struct frag *frag = efp->frags + i;
1995+
1996+
for (size_t j = 0; j < frag->n_multipole_pts; j++) {
1997+
*xyz++ = frag->multipole_pts[j].x;
1998+
*xyz++ = frag->multipole_pts[j].y;
1999+
*xyz++ = frag->multipole_pts[j].z;
2000+
}
2001+
}
2002+
return EFP_RESULT_SUCCESS;
2003+
}
2004+
2005+
/*
19192006
EFP_EXPORT enum efp_result
19202007
efp_get_multipole_values(struct efp *efp, double *mult)
19212008
{
@@ -1943,7 +2030,58 @@ efp_get_multipole_values(struct efp *efp, double *mult)
19432030
}
19442031
return EFP_RESULT_SUCCESS;
19452032
}
2033+
*/
2034+
2035+
EFP_EXPORT enum efp_result
2036+
efp_get_ho_multipole_values(struct efp *efp, double *mult)
2037+
{
2038+
assert(efp);
2039+
assert(mult);
2040+
2041+
for (size_t i = 0; i < efp->n_frag; i++)
2042+
if (efp->frags[i].multipole_rank > 0) {
2043+
struct frag *frag = efp->frags + i;
2044+
2045+
for (size_t j = 0; j < frag->n_multipole_pts; j++) {
2046+
struct multipole_pt *pt = frag->multipole_pts + j;
2047+
2048+
// monopole and nuclear charges are added together as of 2025: LVS
2049+
*mult++ = pt->monopole + pt->znuc;
2050+
2051+
*mult++ = pt->dipole.x;
2052+
*mult++ = pt->dipole.y;
2053+
*mult++ = pt->dipole.z;
2054+
2055+
for (size_t t = 0; t < 6; t++)
2056+
*mult++ = pt->quadrupole[t];
2057+
for (size_t t = 0; t < 10; t++)
2058+
*mult++ = pt->octupole[t];
2059+
}
2060+
}
2061+
return EFP_RESULT_SUCCESS;
2062+
}
2063+
2064+
EFP_EXPORT enum efp_result
2065+
efp_get_mm_multipole_values(struct efp *efp, double *mult)
2066+
{
2067+
assert(efp);
2068+
assert(mult);
2069+
2070+
for (size_t i = 0; i < efp->n_frag; i++)
2071+
if (efp->frags[i].multipole_rank == 0) {
2072+
struct frag *frag = efp->frags + i;
2073+
2074+
for (size_t j = 0; j < frag->n_multipole_pts; j++) {
2075+
struct multipole_pt *pt = frag->multipole_pts + j;
2076+
2077+
// monopole and nuclear charges are added together as of 2025: LVS
2078+
*mult++ = pt->monopole + pt->znuc;
2079+
}
2080+
}
2081+
return EFP_RESULT_SUCCESS;
2082+
}
19462083

2084+
/*
19472085
EFP_EXPORT enum efp_result
19482086
efp_get_mono_values(struct efp *efp, double *monopoles)
19492087
{
@@ -1961,7 +2099,28 @@ efp_get_mono_values(struct efp *efp, double *monopoles)
19612099
}
19622100
return EFP_RESULT_SUCCESS;
19632101
}
2102+
*/
19642103

2104+
EFP_EXPORT enum efp_result
2105+
efp_get_ho_mono_values(struct efp *efp, double *monopoles)
2106+
{
2107+
assert(efp);
2108+
assert(monopoles);
2109+
2110+
for (size_t i = 0; i < efp->n_frag; i++)
2111+
if (efp->frags[i].multipole_rank > 0) {
2112+
struct frag *frag = efp->frags + i;
2113+
2114+
for (size_t j = 0; j < frag->n_multipole_pts; j++) {
2115+
struct multipole_pt *pt = frag->multipole_pts + j;
2116+
2117+
*monopoles++ = pt->monopole;
2118+
}
2119+
}
2120+
return EFP_RESULT_SUCCESS;
2121+
}
2122+
2123+
/*
19652124
EFP_EXPORT enum efp_result
19662125
efp_get_dipole_values(struct efp *efp, double *dipoles)
19672126
{
@@ -2017,6 +2176,7 @@ efp_get_octupole_values(struct efp *efp, double *oct)
20172176
}
20182177
return EFP_RESULT_SUCCESS;
20192178
}
2179+
*/
20202180

20212181
EFP_EXPORT enum efp_result
20222182
efp_get_frag_induced_dipole_count(struct efp *efp, size_t frag_idx, size_t *n_dip)
@@ -2672,7 +2832,7 @@ save_ai_field_pol_pt(struct efp *efp, struct efp_pol_pt *pol_pt, size_t frag_idx
26722832
pt->elec_field_wf.y = pol_pt->ai_field[1];
26732833
pt->elec_field_wf.z = pol_pt->ai_field[2];
26742834

2675-
if (efp->opts.print > 1)
2835+
if (efp->opts.print > 3)
26762836
print_pol_pt(efp,frag_idx,pt_idx);
26772837

26782838
return EFP_RESULT_SUCCESS;

0 commit comments

Comments
 (0)