diff --git a/examples/QUANTUM/NWChem/README b/examples/QUANTUM/NWChem/README index 92a4e8e92a..b0e69c68fc 100644 --- a/examples/QUANTUM/NWChem/README +++ b/examples/QUANTUM/NWChem/README @@ -106,8 +106,8 @@ Step 4: perform test runs in any of 3 modes These tests are in lammps/examples/QUANTUM/NWChem in.series = series of several W conformations -in.water.qmmm = QMMM of two-water system, one QM + 1 MM -in.zeolite.qmmm = QMMM of zeolite (MM0 with a methane (QM) molecule +in.water.qmmm = QMMM of two-water system, 1 QM + 1 MM +in.zeolite.qmmm = QMMM of zeolite, MM zeolite + QM methane molecule ** run LAMMPS-only versions of water and zeolite problems diff --git a/examples/QUANTUM/NWChem/in.w.many b/examples/QUANTUM/NWChem/in.w.many deleted file mode 100644 index 384c3bb1b1..0000000000 --- a/examples/QUANTUM/NWChem/in.w.many +++ /dev/null @@ -1,34 +0,0 @@ -# many conformations with NWChem - -variable datafiles file file.list.2 - -label loop - -clear - -units metal -atom_style atomic -atom_modify map yes -comm_modify cutoff 2.0 - -log log.${datafiles} - -read_data Wfiles/${datafiles} - -mass 1 183.84 - -neighbor 1.0 bin -neigh_modify delay 0 every 1 check yes - -fix 2 all nwchem template.w.nw ${datafiles}.nw & - log.pwdft.${datafiles} W -fix_modify 2 energy yes - -dump 1 all custom 1 dump.${datafiles} id x y z fx fy fz - -timestep 0.001 - -run 0 - -next datafiles -jump SELF loop diff --git a/examples/QUANTUM/NWChem/in.water.mm b/examples/QUANTUM/NWChem/in.water.mm index 11c3a9c576..4391191c76 100644 --- a/examples/QUANTUM/NWChem/in.water.mm +++ b/examples/QUANTUM/NWChem/in.water.mm @@ -17,29 +17,17 @@ pair_style lj/cut/coul/cut 6.0 pair_coeff 1 1 0.13506 3.166 pair_coeff 2 2 0.0 1.0 -#velocity all create 300.0 458732 +velocity all create 300.0 458732 neighbor 1.0 bin neigh_modify delay 0 every 1 check yes fix 1 all nve -compute 1 all pair/local dist -compute 2 all reduce max c_1 - -variable fxabs atom abs(fx) -variable fyabs atom abs(fy) -variable fzabs atom abs(fz) -variable qabs atom abs(q) -compute 3 all reduce max v_fxabs v_fyabs v_fzabs v_qabs - -dump 1 all custom 1 dump.water.dimer.mm id x y z q fx fy fz -dump_modify 1 sort id format float "%20.16g" - timestep 1.0 thermo_style custom step cpu temp ke evdwl ecoul epair emol elong & - pe etotal press c_2 c_3[*] + pe etotal press thermo 1 diff --git a/examples/QUANTUM/NWChem/in.zeolite.mm b/examples/QUANTUM/NWChem/in.zeolite.mm index e746d468b5..7b7246b339 100644 --- a/examples/QUANTUM/NWChem/in.zeolite.mm +++ b/examples/QUANTUM/NWChem/in.zeolite.mm @@ -94,22 +94,10 @@ neigh_modify delay 0 every 1 check yes fix 1 all nve #fix 1 qm nve -compute 1 all pair/local dist -compute 2 all reduce max c_1 - -variable fxabs atom abs(fx) -variable fyabs atom abs(fy) -variable fzabs atom abs(fz) -variable qabs atom abs(q) -compute 3 all reduce max v_fxabs v_fyabs v_fzabs v_qabs - -dump 1 all custom 1 dump.zeolite.mm id x y z q fx fy fz -dump_modify 1 sort id format float "%20.16g" - -timestep 0.001 +timestep 0.0001 thermo_style custom step cpu temp ke evdwl ecoul epair emol elong & - pe etotal press c_2 c_3[*] + pe etotal press thermo 1 diff --git a/examples/QUANTUM/NWChem/log.8Feb23.water.mm.1 b/examples/QUANTUM/NWChem/log.8Feb23.water.mm.1 new file mode 100644 index 0000000000..5382b7bf45 --- /dev/null +++ b/examples/QUANTUM/NWChem/log.8Feb23.water.mm.1 @@ -0,0 +1,113 @@ +LAMMPS (22 Dec 2022) +# MM for water dimer + +units real +atom_style full + +bond_style harmonic +angle_style harmonic + +read_data data.water.mm +Reading data file ... + orthogonal box = (-6.879301 -6.879301 -6.879301) to (6.879301 6.879301 6.879301) + 1 by 1 by 1 MPI processor grid + reading atoms ... + 6 atoms + scanning bonds ... + 2 = max bonds/atom + scanning angles ... + 1 = max angles/atom + reading bonds ... + 4 bonds + reading angles ... + 2 angles +Finding 1-2 1-3 1-4 neighbors ... + special bond factors lj: 0 0 0 + special bond factors coul: 0 0 0 + 2 = max # of 1-2 neighbors + 1 = max # of 1-3 neighbors + 1 = max # of 1-4 neighbors + 2 = max # of special neighbors + special bonds CPU = 0.000 seconds + read_data CPU = 0.002 seconds + +group mm molecule 1 +3 atoms in group mm +group qm molecule 2 +3 atoms in group qm + +# pair style must define stand-alone short-range Coulombics + +pair_style lj/cut/coul/cut 6.0 +pair_coeff 1 1 0.13506 3.166 +pair_coeff 2 2 0.0 1.0 + +velocity all create 300.0 458732 + +neighbor 1.0 bin +neigh_modify delay 0 every 1 check yes + +fix 1 all nve + +timestep 1.0 + +thermo_style custom step cpu temp ke evdwl ecoul epair emol elong pe etotal press + +thermo 1 + +run 10 +Generated 1 of 1 mixed pair_coeff terms from geometric mixing rule +Neighbor list info ... + update: every = 1 steps, delay = 0 steps, check = yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 7 + ghost atom cutoff = 7 + binsize = 3.5, bins = 4 4 4 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair lj/cut/coul/cut, perpetual + attributes: half, newton on + pair build: half/bin/newton + stencil: half/bin/3d + bin: standard +Per MPI rank memory allocation (min/avg/max) = 6.563 | 6.563 | 6.563 Mbytes + Step CPU Temp KinEng E_vdwl E_coul E_pair E_mol E_long PotEng TotEng Press + 0 0 300 4.4712151 0.85234387 -7.098978 -6.2466342 7.0772152 0 0.83058103 5.3017961 2175.106 + 1 5.713e-06 225.99525 3.3682446 0.8007398 -7.3015666 -6.5008268 8.5760055 0 2.0751787 5.4434233 2118.0755 + 2 1.3911e-05 469.03888 6.990579 0.76268142 -7.9866866 -7.2240051 5.1752925 0 -2.0487126 4.9418664 1120.4766 + 3 2.0968e-05 612.19697 9.1242144 0.73936944 -8.8769967 -8.1376272 3.6503739 0 -4.4872533 4.636961 -512.84502 + 4 2.7903e-05 403.86959 6.0192927 0.72702099 -9.5085408 -8.7815198 7.8103639 0 -0.97115599 5.0481367 -2105.3508 + 5 3.4588e-05 188.60671 2.8110039 0.71855703 -9.4937724 -8.7752154 11.456673 0 2.6814579 5.4924617 -2759.3498 + 6 4.1451e-05 335.57585 5.0014393 0.70667511 -8.8207473 -8.1140722 8.3295226 0 0.2154504 5.2168897 -2014.8891 + 7 4.8086e-05 612.66738 9.1312254 0.68733606 -7.8404266 -7.1530905 2.6947578 0 -4.4583327 4.6728927 -320.45402 + 8 5.4692e-05 564.8702 8.4188539 0.66167633 -6.986773 -6.3250967 2.6797166 0 -3.6453801 4.7734737 1333.6188 + 9 6.2607e-05 274.91926 4.0974105 0.63494004 -6.5543479 -5.9194079 7.1781603 0 1.2587524 5.3561629 2192.6187 + 10 6.9584e-05 227.65402 3.3929669 0.61324726 -6.6534611 -6.0402139 8.0914403 0 2.0512265 5.4441934 2041.4853 +Loop time of 7.479e-05 on 1 procs for 10 steps with 6 atoms + +Performance: 11552.347 ns/day, 0.002 hours/ns, 133707.715 timesteps/s, 802.246 katom-step/s +0.0% CPU use with 1 MPI tasks x no OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 5.382e-06 | 5.382e-06 | 5.382e-06 | 0.0 | 7.20 +Bond | 4.817e-06 | 4.817e-06 | 4.817e-06 | 0.0 | 6.44 +Neigh | 0 | 0 | 0 | 0.0 | 0.00 +Comm | 4.71e-06 | 4.71e-06 | 4.71e-06 | 0.0 | 6.30 +Output | 5.2372e-05 | 5.2372e-05 | 5.2372e-05 | 0.0 | 70.03 +Modify | 2.931e-06 | 2.931e-06 | 2.931e-06 | 0.0 | 3.92 +Other | | 4.578e-06 | | | 6.12 + +Nlocal: 6 ave 6 max 6 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 56 ave 56 max 56 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 9 ave 9 max 9 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 9 +Ave neighs/atom = 1.5 +Ave special neighs/atom = 2 +Neighbor list builds = 0 +Dangerous builds = 0 +Total wall time: 0:00:00 diff --git a/examples/QUANTUM/NWChem/log.8Feb23.zeolite.mm.1 b/examples/QUANTUM/NWChem/log.8Feb23.zeolite.mm.1 new file mode 100644 index 0000000000..dd4c4175e6 --- /dev/null +++ b/examples/QUANTUM/NWChem/log.8Feb23.zeolite.mm.1 @@ -0,0 +1,186 @@ +LAMMPS (22 Dec 2022) +# MM for SiO2 zeolite with one methane molecule + +# CHIK potential +# EPL, Carre, Horbach, Ispas, Kob, 82, 17001 (2008) +# B = 1/rho + +#q Si = 1.910418 +#q O = -0.955209 +#A OO = 659.595398 eV +#B OO = 2.590066 1/Ang +#C OO = 26.836679 eV-Ang^6 +#A SiO = 27029.419922 eV +#B SiO = 5.158606 1/Ang +#C SiO = 148.099091 eV-Ang^6 +#A SiSi = 3150.462646 eV +#B SiSi = 2.851451 1/Ang +#C SiSi = 626.7519553 eV-Ang^6 + +# LJ params for methane and O from Table 1 +# Bhatia and Nicholson, J Phys Chem C, 2012, 116, 2344-2355. + +#q C = -0.66 +#Q H = 0.165 +#sigma C = 0.34 nm +#sigma H = 0.265 nm +#sigma O = 0.28 nm +#eps/kB C = 55.082 K = 0.004745993 eV +#eps/kB H = 7.905 K = 0.000681113 eV +#eps/kB O = 492.7 K = 0.0424522 eV + +# LJ params for silicon +#e-Journal of Surf Sci and Nanotech, Inui and Iwasaki, 15, 40-49 (2017) + +#sigma Si = 3.826 Ang +#eps Si = 17.4 meV = 0.0174 eV + +# C-H bond and methane angle params + +#OPLS C-H bond k = 29.40 ev/Ang^2 +#C-H bond r0 = 1.09 Angs +#methane angles = 109.5 degrees +#C-H angle k/kB = 2000 K/rad^2 + +# conversions + +#1 eV = 11606 K +#1 eV = 23.0609 kcal/mole +#1 kcal/mole = 503.2761 K +#1 kcal = 4.814 kJoule + +# ------------------------- + +units metal +atom_style full + +bond_style harmonic +angle_style harmonic + +read_data data.zeolite +Reading data file ... + orthogonal box = (-5.9266 -5.9266 -5.9266) to (5.9926 5.9926 5.9926) + 1 by 1 by 1 MPI processor grid + reading atoms ... + 77 atoms + scanning bonds ... + 4 = max bonds/atom + scanning angles ... + 6 = max angles/atom + reading bonds ... + 4 bonds + reading angles ... + 6 angles +Finding 1-2 1-3 1-4 neighbors ... + special bond factors lj: 0 0 0 + special bond factors coul: 0 0 0 + 4 = max # of 1-2 neighbors + 3 = max # of 1-3 neighbors + 3 = max # of 1-4 neighbors + 4 = max # of special neighbors + special bonds CPU = 0.000 seconds + read_data CPU = 0.005 seconds + +group mm type 1 2 +72 atoms in group mm +group qm type 3 4 +5 atoms in group qm + +# pair style must define stand-alone short-range Coulombics +# arithmetic mixing + +pair_style hybrid/overlay buck 6.5 lj/cut 6.5 coul/cut 6.5 + +pair_coeff 1 1 buck 3150.462646 0.35032282 626.7519553 +pair_coeff 2 2 buck 659.595398 0.38609055 26.836679 +pair_coeff 1 2 buck 27029.419922 0.19385082 148.099091 +pair_coeff 1 2 buck 27029.419922 0.19385082 148.099091 +pair_coeff 1 3 lj/cut 0.009087 3.613 +pair_coeff 1 4 lj/cut 0.00344258 3.238 +pair_coeff 2 3 lj/cut 0.01419429 3.1 +pair_coeff 2 4 lj/cut 0.00537724 2.725 +pair_coeff 3 3 lj/cut 0.004746 3.4 +pair_coeff 4 4 lj/cut 0.00068111 2.65 +pair_coeff * * coul/cut + +bond_style harmonic +bond_coeff 1 29.40 1.09 + +angle_style harmonic +angle_coeff 1 0.172325 109.5 + +#velocity all create 300.0 458732 + +neighbor 1.0 bin +neigh_modify delay 0 every 1 check yes + +# dynamic or frozen zeolite + +fix 1 all nve +#fix 1 qm nve + +timestep 0.0001 + +thermo_style custom step cpu temp ke evdwl ecoul epair emol elong pe etotal press + +thermo 1 + +run 3 +Generated 0 of 6 mixed pair_coeff terms from geometric mixing rule +Neighbor list info ... + update: every = 1 steps, delay = 0 steps, check = yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 7.5 + ghost atom cutoff = 7.5 + binsize = 3.75, bins = 4 4 4 + 3 neighbor lists, perpetual/occasional/extra = 3 0 0 + (1) pair buck, perpetual, skip from (3) + attributes: half, newton on + pair build: skip + stencil: none + bin: none + (2) pair lj/cut, perpetual, skip from (3) + attributes: half, newton on + pair build: skip + stencil: none + bin: none + (3) pair coul/cut, perpetual + attributes: half, newton on + pair build: half/bin/newton + stencil: half/bin/3d + bin: standard +Per MPI rank memory allocation (min/avg/max) = 9.513 | 9.513 | 9.513 Mbytes + Step CPU Temp KinEng E_vdwl E_coul E_pair E_mol E_long PotEng TotEng Press + 0 0 0 0 -102.55051 -1039.5685 -1142.119 2.7005254e-07 0 -1142.119 -1142.119 11439.684 + 1 8.3058e-05 0.055395011 0.00054418791 -102.55035 -1039.5692 -1142.1196 3.3571313e-07 0 -1142.1196 -1142.119 11439.469 + 2 0.00015372 0.22147045 0.002175675 -102.54986 -1039.5713 -1142.1212 9.2762791e-07 0 -1142.1212 -1142.119 11438.832 + 3 0.000223969 0.49789878 0.0048912436 -102.54905 -1039.5748 -1142.1239 3.2194644e-06 0 -1142.1239 -1142.119 11437.796 +Loop time of 0.000228308 on 1 procs for 3 steps with 77 atoms + +Performance: 113.531 ns/day, 0.211 hours/ns, 13140.144 timesteps/s, 1.012 Matom-step/s +33.3% CPU use with 1 MPI tasks x no OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 0.00020213 | 0.00020213 | 0.00020213 | 0.0 | 88.53 +Bond | 2.326e-06 | 2.326e-06 | 2.326e-06 | 0.0 | 1.02 +Neigh | 0 | 0 | 0 | 0.0 | 0.00 +Comm | 6.354e-06 | 6.354e-06 | 6.354e-06 | 0.0 | 2.78 +Output | 1.362e-05 | 1.362e-05 | 1.362e-05 | 0.0 | 5.97 +Modify | 1.804e-06 | 1.804e-06 | 1.804e-06 | 0.0 | 0.79 +Other | | 2.073e-06 | | | 0.91 + +Nlocal: 77 ave 77 max 77 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 1066 ave 1066 max 1066 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 3136 ave 3136 max 3136 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 3136 +Ave neighs/atom = 40.727273 +Ave special neighs/atom = 0.25974026 +Neighbor list builds = 0 +Dangerous builds = 0 +Total wall time: 0:00:00 diff --git a/examples/QUANTUM/NWChem/nwchem_mdi.py b/examples/QUANTUM/NWChem/nwchem_mdi.py index 34239a93ad..826072cd25 100644 --- a/examples/QUANTUM/NWChem/nwchem_mdi.py +++ b/examples/QUANTUM/NWChem/nwchem_mdi.py @@ -1,15 +1,7 @@ - # MDI wrapper on NWChem PWDFT code +# MDI wrapper on NWChem PWDFT code -# NOTE: Qs or issues to still address -# test if works for both AIMD and QMMM -# can series of problem be run via lib interface input_filename() ? -# how does PBC vs non-PBC work, just box size in NWC input file -# or maybe other settings in that file? -# can NWChem return stress? -# can NWChem do DIRECT mode? -# any options for 2d or 1d periodic? -# allow for box size changes, e.g. every step for NPT -# check NWC func call error returns ? +# native PWDFT units are Bohr and Hartree +# but box and atom coord inputs in *.nw file are in Angstroms import sys,os,time from ctypes import * diff --git a/examples/QUANTUM/PySCF/README b/examples/QUANTUM/PySCF/README index 245a7053aa..88a6100db4 100644 --- a/examples/QUANTUM/PySCF/README +++ b/examples/QUANTUM/PySCF/README @@ -1,18 +1,17 @@ -# Test runs of QMMM with LAMMPS and PySCF +# Test runs with copuling of LAMMPS and PySCF Step 1: build LAMMPS -Step 2: download/build the MDI code coupling package -Step 3: download/build or install PySCF -Step 4: run 2-water QMMM problem for a few steps +Step 2: download/build MDI code coupling package +Step 3: download/build PySCF +Step 4: perform test runs in any of 3 modes --------------------------------- --------------------------------- Step 1: build LAMMPS -The molecule and kspace packages are needed for the 2-water test -problem. Copy the final LAMMPS executable into the -examples/QUANTUM/PySCF directory. +The MDI, molecule, and kspace packages are needed. Copy the final +LAMMPS executable into the examples/QUANTUM/PySCF directory. Traditional make: @@ -27,18 +26,18 @@ CMake: % cd ~/lammps % mkdir build; cd build -% cmake -D PKG_MDI=yes -D PKG_MOLECULE=yes -D PKG_KSPACE=yes ../cmake +% cmake -DPKG_MDI=yes -DPKG_MOLECULE=yes -DPKG_KSPACE=yes ../cmake % make -j % cp lmp ~/lammps/examples/QUANTUM/PySCF/lmp_mpi --------------------------------- --------------------------------- -Step 2: install the MDI code coupling package +Step 2: download/build MDI code coupling package -(a) grab the MDI Git repo +(a) clone the MDI Git repo -% mkdir git; cd mdi +% mkdir mdi; cd mdi % git clone git@github.com:MolSSI-MDI/MDI_Library.git git (b) build MDI @@ -48,8 +47,8 @@ Step 2: install the MDI code coupling package % cmake .. % make -j -(c) Add something similar to the following to your .bashrc or .cshrc -file so that Python can find MDI: +(c) Add a line like this to your ~/.bashrc or ~/.cshrc file so that +Python can find MDI: For bash: @@ -61,17 +60,38 @@ For (t)csh: % setenv PYTHONPATH ${PYTHONPATH}:/home/sjplimp/mdi/git % rehash +(d) Check import of 3 Python modules which the script that wraps LATTE +will need: + +% python +>>> import numpy as np +>>> from mpi4py import MPI +>>> import MDI_Library as mdi + --------------------------------- --------------------------------- -Step 3: install PySCF +Step 3: download/build PySCF -(a) download/build or install PySCF on your box +See https://pyscf.org/install.html for install options. +This describes building PySCF from source code. -NOTE: add instructions here +(a) clone the PySCI Git repo -(b) Add something similar to the following to your .bashrc or .cshrc -file so that Python can find PySCF: +% mkdir pyscf; cd pyscf +% git clone https://github.com/pyscf/pyscf.git git + +(b) build PySCF + +NOTE: you will also need numpy, scipy, h5py in your python + +% cd pyscf/git/lib +% mkdir build; cd build +% cmake .. +% make -j + +(c) Add a line like this to your ~/.bashrc or ~/.cshrc file so that +Python can find PySCF: For bash: @@ -83,8 +103,8 @@ For (t)csh: % setenv PYTHONPATH ${PYTHONPATH}:/home/sjplimp/pyscf/git % rehash -(c) Check that you can import the 4 Python modules which the script -that wraps PySCF will need: +(d) Check import of 4 Python modules which the script that wraps PySCF +will need: % python >>> import numpy as np @@ -95,41 +115,33 @@ that wraps PySCF will need: --------------------------------- --------------------------------- -Step 4: run the 2-water QMMM problem for a few steps +Step 4: perform test runs in any of 3 modes -% cd ~/lammps/examples/QUANTUM/PySCF +These tests are in lammps/examples/QUANTUM/PySCF -# Run with TCP: 1 proc each +in.water = QMMM of two-water system, 1 QM + 1 MM +in.mixture = QMMM of mixture, QM small molecule in MM water -% lmp_mpi -mdi "-name LMP -role DRIVER -method TCP -port 8021" -log log.water.pyscf.qmmm.tcp.1 -in in.water.pyscf.qmmm & +** run LAMMPS-only versions of mixture problem -% python pyscf_mdi.py -mdi "-name PYSCF -role ENGINE -method TCP -port 8021 -hostname localhost" +lmp_mpi -log log.mixture.mm.1 < in.mixture.mm -# Run with MPI: 1 proc each +** run LAMMPS and LATTE with TCP/IP, 1 proc each -% mpirun -np 1 lmp_mpi -mdi "-name LMP -role DRIVER -method MPI" -log log.water.pyscf.qmmm.mpi.1 -in in.water.pyscf.qmmm : -np 1 python pyscf_mdi.py -mdi "-name PYSCF -role ENGINE -method MPI" -pbc no +lmp_mpi -mdi "-name LMP -role DRIVER -method TCP -port 8021" -log log.water.qmmm.tcp.1 -in in.water.qmmm & +python pyscf_mdi.py -mdi "-name PYSCF -role ENGINE -method TCP -port 8021 -hostname localhost" -# Run in plugin mode: 1 proc +lmp_mpi -mdi "-name LMP -role DRIVER -method TCP -port 8021" -log log.mixture.qmmm.tcp.1 -in in.mixture.qmmm & +python pyscf_mdi.py -mdi "-name PYSCF -role ENGINE -method TCP -port 8021 -hostname localhost" -% lmp_mpi -mdi "-name LMP -role DRIVER -method LINK -plugin_path /home/sjplimp/lammps/git/examples/QUANTUM/PySCF" -log log.water.pyscf.qmmm.plugin.1 -in in.water.pyscf.qmmm.plugin +** run LAMMPS and PySCF with MPI, 1 proc each ---------------------------------- ---------------------------------- +mpirun -np 1 lmp_mpi -mdi "-name LMP -role DRIVER -method MPI" -log log.water.qmmm.mpi.1 -in in.water.qmmm : -np 1 python pyscf_mdi.py -mdi "-name PYSCF -role ENGINE -method MPI" -pbc no -Step 5: run the mixture QMMM problem for a few steps +mpirun -np 1 lmp_mpi -mdi "-name LMP -role DRIVER -method MPI" -log log.mixture.qmmm.mpi.1 -in in.mixture.qmmm : -np 1 python pyscf_mdi.py -mdi "-name PYSCF -role ENGINE -method MPI" -pbc no -% cd ~/lammps/examples/QUANTUM/PySCF +** run PySCF as plugin MDI engine, 1 proc -# Run with TCP: 1 proc each +lmp_mpi -mdi "-name LMP -role DRIVER -method LINK -plugin_path /home/sjplimp/lammps/git/examples/QUANTUM/PySCF" -log log.water.qmmm.plugin.1 -in in.water.qmmm.plugin -% lmp_mpi -mdi "-name LMP -role DRIVER -method TCP -port 8021" -log log.mixture.pyscf.qmmm.tcp.1 -in in.mixture.pyscf.qmmm & - -% python pyscf_mdi.py -mdi "-name PYSCF -role ENGINE -method TCP -port 8021 -hostname localhost" - -# Run with MPI: 1 proc each - -% mpirun -np 1 lmp_mpi -mdi "-name LMP -role DRIVER -method MPI" -log log.mixture.pyscf.qmmm.mpi.1 -in in.mixture.pyscf.qmmm : -np 1 python pyscf_mdi.py -mdi "-name PYSCF -role ENGINE -method MPI" -pbc no - -# Run in plugin mode: 1 proc - -% lmp_mpi -mdi "-name LMP -role DRIVER -method LINK -plugin_path /home/sjplimp/lammps/git/examples/QUANTUM/PySCF" -log log.mixture.pyscf.qmmm.plugin.1 -in in.mixture.pyscf.qmmm.plugin +lmp_mpi -mdi "-name LMP -role DRIVER -method LINK -plugin_path /home/sjplimp/lammps/git/examples/QUANTUM/PySCF" -log log.mixture.qmmm.plugin.1 -in in.mixture.qmmm.plugin diff --git a/examples/QUANTUM/PySCF/in.mixture.lammps b/examples/QUANTUM/PySCF/in.mixture.mm similarity index 59% rename from examples/QUANTUM/PySCF/in.mixture.lammps rename to examples/QUANTUM/PySCF/in.mixture.mm index 7f38b1397f..fd9e3ce633 100644 --- a/examples/QUANTUM/PySCF/in.mixture.lammps +++ b/examples/QUANTUM/PySCF/in.mixture.mm @@ -1,4 +1,4 @@ -# QMMM with PySCF - mixture example +# mixture example units real atom_style full @@ -15,18 +15,6 @@ kspace_style pppm 1e-5 read_data data.mixture -# QM atoms are IDs 1 to 9 -# MM atoms are remaining atoms - -group qm id 1:9 -group mm subtract all qm - -# remove bonds/angles between QM atoms -# set charges to zero on QM atoms - -delete_bonds qm multi remove special -set group qm charge 0.0 - neighbor 2.0 bin neigh_modify delay 0 every 1 check yes @@ -39,5 +27,5 @@ fix 1 all nve thermo_style custom step cpu temp ke evdwl ecoul epair emol elong & pe etotal press -thermo 1 -run 2 +thermo 10 +run 20 diff --git a/examples/QUANTUM/PySCF/in.mixture.pyscf.qmmm b/examples/QUANTUM/PySCF/in.mixture.qmmm similarity index 100% rename from examples/QUANTUM/PySCF/in.mixture.pyscf.qmmm rename to examples/QUANTUM/PySCF/in.mixture.qmmm diff --git a/examples/QUANTUM/PySCF/in.mixture.pyscf.qmmm.plugin b/examples/QUANTUM/PySCF/in.mixture.qmmm.plugin similarity index 100% rename from examples/QUANTUM/PySCF/in.mixture.pyscf.qmmm.plugin rename to examples/QUANTUM/PySCF/in.mixture.qmmm.plugin diff --git a/examples/QUANTUM/PySCF/in.water.pyscf.qmmm b/examples/QUANTUM/PySCF/in.water.qmmm similarity index 100% rename from examples/QUANTUM/PySCF/in.water.pyscf.qmmm rename to examples/QUANTUM/PySCF/in.water.qmmm diff --git a/examples/QUANTUM/PySCF/in.water.pyscf.qmmm.plugin b/examples/QUANTUM/PySCF/in.water.qmmm.plugin similarity index 94% rename from examples/QUANTUM/PySCF/in.water.pyscf.qmmm.plugin rename to examples/QUANTUM/PySCF/in.water.qmmm.plugin index 92055bda12..257ae38a43 100644 --- a/examples/QUANTUM/PySCF/in.water.pyscf.qmmm.plugin +++ b/examples/QUANTUM/PySCF/in.water.qmmm.plugin @@ -1,5 +1,4 @@ # QMMM with PySCF -# adapted from pyscf_water/lmp.in for 2 water QMMM example units real atom_style full diff --git a/examples/QUANTUM/PySCF/log.8Feb23.mixture.mm.1 b/examples/QUANTUM/PySCF/log.8Feb23.mixture.mm.1 new file mode 100644 index 0000000000..8713842e08 --- /dev/null +++ b/examples/QUANTUM/PySCF/log.8Feb23.mixture.mm.1 @@ -0,0 +1,112 @@ +LAMMPS (22 Dec 2022) +# mixture example + +units real +atom_style full + +pair_style lj/cut/coul/long 12 +pair_modify mix arithmetic + +bond_style harmonic +angle_style harmonic +dihedral_style none +improper_style none + +kspace_style pppm 1e-5 + +read_data data.mixture +Reading data file ... + orthogonal box = (0 0 0) to (31.351877 31.351877 31.351877) + 1 by 1 by 1 MPI processor grid + reading atoms ... + 3081 atoms + reading velocities ... + 3081 velocities + scanning bonds ... + 4 = max bonds/atom + scanning angles ... + 6 = max angles/atom + reading bonds ... + 2055 bonds + reading angles ... + 1033 angles +Finding 1-2 1-3 1-4 neighbors ... + special bond factors lj: 0 0 0 + special bond factors coul: 0 0 0 + 4 = max # of 1-2 neighbors + 3 = max # of 1-3 neighbors + 3 = max # of 1-4 neighbors + 4 = max # of special neighbors + special bonds CPU = 0.000 seconds + read_data CPU = 0.012 seconds + +neighbor 2.0 bin +neigh_modify delay 0 every 1 check yes + +# MM dynamics + +timestep 0.01 + +fix 1 all nve + +thermo_style custom step cpu temp ke evdwl ecoul epair emol elong pe etotal press + +thermo 10 +run 20 +PPPM initialization ... + using 12-bit tables for long-range coulomb (../kspace.cpp:342) + G vector (1/distance) = 0.25751777 + grid = 24 24 24 + stencil order = 5 + estimated absolute RMS force accuracy = 0.0020473396 + estimated relative force accuracy = 6.1655023e-06 + using double precision KISS FFT + 3d grid and FFT values/proc = 29791 13824 +Generated 21 of 21 mixed pair_coeff terms from arithmetic mixing rule +Neighbor list info ... + update: every = 1 steps, delay = 0 steps, check = yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 14 + ghost atom cutoff = 14 + binsize = 7, bins = 5 5 5 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair lj/cut/coul/long, perpetual + attributes: half, newton on + pair build: half/bin/newton + stencil: half/bin/3d + bin: standard +Per MPI rank memory allocation (min/avg/max) = 26.76 | 26.76 | 26.76 Mbytes + Step CPU Temp KinEng E_vdwl E_coul E_pair E_mol E_long PotEng TotEng Press + 0 0 0 0 2164.0602 35284.412 -12356.063 863.67442 -49804.536 -11492.389 -11492.389 -4362.0189 + 10 0.14354809 0.0049877709 0.0457922 2164.0602 35284.445 -12356.031 863.59574 -49804.536 -11492.435 -11492.389 -4360.2561 + 20 0.28788199 0.019888006 0.1825897 2164.0599 35284.545 -12355.932 863.36047 -49804.537 -11492.572 -11492.389 -4354.9791 +Loop time of 0.2879 on 1 procs for 20 steps with 3081 atoms + +Performance: 0.060 ns/day, 399.861 hours/ns, 69.469 timesteps/s, 214.033 katom-step/s +100.0% CPU use with 1 MPI tasks x no OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 0.25532 | 0.25532 | 0.25532 | 0.0 | 88.69 +Bond | 0.00081079 | 0.00081079 | 0.00081079 | 0.0 | 0.28 +Kspace | 0.03016 | 0.03016 | 0.03016 | 0.0 | 10.48 +Neigh | 0 | 0 | 0 | 0.0 | 0.00 +Comm | 0.00095451 | 0.00095451 | 0.00095451 | 0.0 | 0.33 +Output | 4.579e-05 | 4.579e-05 | 4.579e-05 | 0.0 | 0.02 +Modify | 0.00029651 | 0.00029651 | 0.00029651 | 0.0 | 0.10 +Other | | 0.0003077 | | | 0.11 + +Nlocal: 3081 ave 3081 max 3081 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 17741 ave 17741 max 17741 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 1.77144e+06 ave 1.77144e+06 max 1.77144e+06 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 1771437 +Ave neighs/atom = 574.95521 +Ave special neighs/atom = 2.004544 +Neighbor list builds = 0 +Dangerous builds = 0 +Total wall time: 0:00:00 diff --git a/examples/QUANTUM/PySCF/log.8Feb23.mixture.qmmm.mpi.1 b/examples/QUANTUM/PySCF/log.8Feb23.mixture.qmmm.mpi.1 new file mode 100644 index 0000000000..e0752d5d19 --- /dev/null +++ b/examples/QUANTUM/PySCF/log.8Feb23.mixture.qmmm.mpi.1 @@ -0,0 +1 @@ +LAMMPS (22 Dec 2022) diff --git a/examples/QUANTUM/PySCF/log.8Feb23.mixture.qmmm.plugin.1 b/examples/QUANTUM/PySCF/log.8Feb23.mixture.qmmm.plugin.1 new file mode 100644 index 0000000000..09c2c77fe1 --- /dev/null +++ b/examples/QUANTUM/PySCF/log.8Feb23.mixture.qmmm.plugin.1 @@ -0,0 +1,157 @@ +LAMMPS (22 Dec 2022) +# QMMM with PySCF - mixture example + +units real +atom_style full + +pair_style lj/cut/coul/long 12 +pair_modify mix arithmetic + +bond_style harmonic +angle_style harmonic +dihedral_style none +improper_style none + +kspace_style pppm 1e-5 + +read_data data.mixture +Reading data file ... + orthogonal box = (0 0 0) to (31.351877 31.351877 31.351877) + 1 by 1 by 1 MPI processor grid + reading atoms ... + 3081 atoms + reading velocities ... + 3081 velocities + scanning bonds ... + 4 = max bonds/atom + scanning angles ... + 6 = max angles/atom + reading bonds ... + 2055 bonds + reading angles ... + 1033 angles +Finding 1-2 1-3 1-4 neighbors ... + special bond factors lj: 0 0 0 + special bond factors coul: 0 0 0 + 4 = max # of 1-2 neighbors + 3 = max # of 1-3 neighbors + 3 = max # of 1-4 neighbors + 4 = max # of special neighbors + special bonds CPU = 0.001 seconds + read_data CPU = 0.013 seconds + +# QM atoms are IDs 1 to 9 +# MM atoms are remaining atoms + +group qm id 1:9 +9 atoms in group qm +group mm subtract all qm +3072 atoms in group mm + +# remove bonds/angles between QM atoms +# set charges to zero on QM atoms + +delete_bonds qm multi remove special +System init for delete_bonds ... +PPPM initialization ... + using 12-bit tables for long-range coulomb (../kspace.cpp:342) + G vector (1/distance) = 0.25751777 + grid = 24 24 24 + stencil order = 5 + estimated absolute RMS force accuracy = 0.0020473396 + estimated relative force accuracy = 6.1655023e-06 + using double precision KISS FFT + 3d grid and FFT values/proc = 29791 13824 +Generated 21 of 21 mixed pair_coeff terms from arithmetic mixing rule +Neighbor list info ... + update: every = 1 steps, delay = 0 steps, check = yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 14 + ghost atom cutoff = 14 + binsize = 7, bins = 5 5 5 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair lj/cut/coul/long, perpetual + attributes: half, newton on + pair build: half/bin/newton + stencil: half/bin/3d + bin: standard +Deleting bonds ... + 2048 total bonds, 2048 turned on, 0 turned off + 1024 total angles, 1024 turned on, 0 turned off + 0 total dihedrals, 0 turned on, 0 turned off + 0 total impropers, 0 turned on, 0 turned off +Finding 1-2 1-3 1-4 neighbors ... + special bond factors lj: 0 0 0 + special bond factors coul: 0 0 0 + 2 = max # of 1-2 neighbors + 1 = max # of 1-3 neighbors + 1 = max # of 1-4 neighbors + 4 = max # of special neighbors + special bonds CPU = 0.000 seconds +set group qm charge 0.0 +Setting atom values ... + 9 settings made for charge + +neighbor 2.0 bin +neigh_modify delay 0 every 1 check yes + +# QMMM dynamics + +timestep 0.01 + +fix 1 all nve + +fix 2 qm mdi/qmmm direct elements N H C H Cl O H +fix_modify 2 energy yes + +thermo_style custom step cpu temp ke evdwl ecoul epair emol elong f_2 pe etotal press + +thermo 1 + +mdi plugin pyscf_mdi mdi "-role ENGINE -name PySCF -method LINK" extra "-pbc no" command "run 2" +run 2 +PPPM initialization ... + using 12-bit tables for long-range coulomb (../kspace.cpp:342) + G vector (1/distance) = 0.25751777 + grid = 24 24 24 + stencil order = 5 + estimated absolute RMS force accuracy = 0.0020473396 + estimated relative force accuracy = 6.1655023e-06 + using double precision KISS FFT + 3d grid and FFT values/proc = 29791 13824 +Generated 21 of 21 mixed pair_coeff terms from arithmetic mixing rule +Per MPI rank memory allocation (min/avg/max) = 26.88 | 26.88 | 26.88 Mbytes + Step CPU Temp KinEng E_vdwl E_coul E_pair E_mol E_long f_2 PotEng TotEng Press + 0 0 0 0 103310.44 35284.412 88790.313 863.33521 -49804.536 -349295.05 -259641.4 -259641.4 897319.08 + 1 19.294168 631.94375 5801.8092 97293.123 35284.413 82773 863.33444 -49804.536 -349294.57 -265658.24 -259856.43 852336.04 + 2 40.905414 2211.4634 20303.213 82388.368 35284.413 67868.246 863.33213 -49804.536 -349292.7 -280561.12 -260257.91 741101.53 +Loop time of 40.9172 on 1 procs for 2 steps with 3081 atoms + +Performance: 0.000 ns/day, 568294.642 hours/ns, 0.049 timesteps/s, 150.597 atom-step/s +759.6% CPU use with 1 MPI tasks x no OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 0.074194 | 0.074194 | 0.074194 | 0.0 | 0.18 +Bond | 0.00021377 | 0.00021377 | 0.00021377 | 0.0 | 0.00 +Kspace | 0.005728 | 0.005728 | 0.005728 | 0.0 | 0.01 +Neigh | 0 | 0 | 0 | 0.0 | 0.00 +Comm | 0.00021094 | 0.00021094 | 0.00021094 | 0.0 | 0.00 +Output | 0.011886 | 0.011886 | 0.011886 | 0.0 | 0.03 +Modify | 40.825 | 40.825 | 40.825 | 0.0 | 99.77 +Other | | 0.0001314 | | | 0.00 + +Nlocal: 3081 ave 3081 max 3081 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 17741 ave 17741 max 17741 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 1.77144e+06 ave 1.77144e+06 max 1.77144e+06 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 1771437 +Ave neighs/atom = 574.95521 +Ave special neighs/atom = 1.9941577 +Neighbor list builds = 0 +Dangerous builds = 0 +Total wall time: 0:01:06 diff --git a/examples/QUANTUM/PySCF/log.8Feb23.water.qmmm.mpi.1 b/examples/QUANTUM/PySCF/log.8Feb23.water.qmmm.mpi.1 new file mode 100644 index 0000000000..e0752d5d19 --- /dev/null +++ b/examples/QUANTUM/PySCF/log.8Feb23.water.qmmm.mpi.1 @@ -0,0 +1 @@ +LAMMPS (22 Dec 2022) diff --git a/examples/QUANTUM/PySCF/log.8Feb23.water.qmmm.plugin.1 b/examples/QUANTUM/PySCF/log.8Feb23.water.qmmm.plugin.1 new file mode 100644 index 0000000000..799b0a3f5c --- /dev/null +++ b/examples/QUANTUM/PySCF/log.8Feb23.water.qmmm.plugin.1 @@ -0,0 +1,155 @@ +LAMMPS (22 Dec 2022) +# QMMM with PySCF + +units real +atom_style full + +pair_style lj/cut/coul/long 12 +pair_modify mix arithmetic + +bond_style harmonic +angle_style harmonic +dihedral_style none +improper_style none + +kspace_style pppm 1e-5 + +read_data data.water +Reading data file ... + orthogonal box = (0 0 0) to (31.351877 31.351877 31.351877) + 1 by 1 by 1 MPI processor grid + reading atoms ... + 6 atoms + scanning bonds ... + 2 = max bonds/atom + scanning angles ... + 1 = max angles/atom + reading bonds ... + 4 bonds + reading angles ... + 2 angles +Finding 1-2 1-3 1-4 neighbors ... + special bond factors lj: 0 0 0 + special bond factors coul: 0 0 0 + 2 = max # of 1-2 neighbors + 1 = max # of 1-3 neighbors + 1 = max # of 1-4 neighbors + 2 = max # of special neighbors + special bonds CPU = 0.000 seconds + read_data CPU = 0.004 seconds + +# QM atoms are 1st water +# MM atoms are 2nd water + +group qm molecule 1 +3 atoms in group qm +group mm molecule 2 +3 atoms in group mm + +# remove bonds/angles between QM atoms +# set charges to zero on QM atoms + +delete_bonds qm multi remove special +System init for delete_bonds ... +PPPM initialization ... + using 12-bit tables for long-range coulomb (../kspace.cpp:342) + G vector (1/distance) = 0.21131887 + grid = 12 12 12 + stencil order = 5 + estimated absolute RMS force accuracy = 0.0020500128 + estimated relative force accuracy = 6.1735526e-06 + using double precision KISS FFT + 3d grid and FFT values/proc = 4913 1728 +Generated 1 of 1 mixed pair_coeff terms from arithmetic mixing rule +Neighbor list info ... + update: every = 1 steps, delay = 0 steps, check = yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 14 + ghost atom cutoff = 14 + binsize = 7, bins = 5 5 5 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair lj/cut/coul/long, perpetual + attributes: half, newton on + pair build: half/bin/newton + stencil: half/bin/3d + bin: standard +Deleting bonds ... + 2 total bonds, 2 turned on, 0 turned off + 1 total angles, 1 turned on, 0 turned off + 0 total dihedrals, 0 turned on, 0 turned off + 0 total impropers, 0 turned on, 0 turned off +Finding 1-2 1-3 1-4 neighbors ... + special bond factors lj: 0 0 0 + special bond factors coul: 0 0 0 + 2 = max # of 1-2 neighbors + 1 = max # of 1-3 neighbors + 1 = max # of 1-4 neighbors + 2 = max # of special neighbors + special bonds CPU = 0.000 seconds +set group qm charge 0.0 +Setting atom values ... + 3 settings made for charge + +neighbor 2.0 bin +neigh_modify delay 0 every 1 check yes + +# QMMM dynamics + +timestep 2.0 + +fix 1 all nve + +fix 2 qm mdi/qmmm direct elements O H +fix_modify 2 energy yes + +thermo_style custom step cpu temp ke evdwl ecoul epair emol elong f_2 pe etotal press + +thermo 1 + +mdi plugin pyscf_mdi mdi "-role ENGINE -name PySCF -method LINK" extra "-pbc no" command "run 2" +run 2 +PPPM initialization ... + using 12-bit tables for long-range coulomb (../kspace.cpp:342) + G vector (1/distance) = 0.19767375 + grid = 10 10 10 + stencil order = 5 + estimated absolute RMS force accuracy = 0.0022851662 + estimated relative force accuracy = 6.8817102e-06 + using double precision KISS FFT + 3d grid and FFT values/proc = 3375 1000 +Generated 1 of 1 mixed pair_coeff terms from arithmetic mixing rule +Per MPI rank memory allocation (min/avg/max) = 7.165 | 7.165 | 7.165 Mbytes + Step CPU Temp KinEng E_vdwl E_coul E_pair E_mol E_long f_2 PotEng TotEng Press + 0 0 0 0 -0.001256507 37.096223 -0.0091688448 0.95028479 -37.104135 -47941.423 -47940.482 -47940.482 -11.65711 + 1 13.839254 274.73153 4.0946125 -0.001258094 37.106014 -0.0088915927 0.62503382 -37.113647 -47947.815 -47947.199 -47943.104 5.9530005 + 2 28.396141 121.44569 1.8100327 -0.0012589509 37.125978 -0.0083996825 0.32331257 -37.133119 -47938.851 -47938.536 -47936.726 14.80352 +Loop time of 28.3962 on 1 procs for 2 steps with 6 atoms + +Performance: 0.012 ns/day, 1971.958 hours/ns, 0.070 timesteps/s, 0.423 atom-step/s +747.8% CPU use with 1 MPI tasks x no OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 1.4093e-05 | 1.4093e-05 | 1.4093e-05 | 0.0 | 0.00 +Bond | 9.672e-06 | 9.672e-06 | 9.672e-06 | 0.0 | 0.00 +Kspace | 0.00032919 | 0.00032919 | 0.00032919 | 0.0 | 0.00 +Neigh | 0 | 0 | 0 | 0.0 | 0.00 +Comm | 6.136e-06 | 6.136e-06 | 6.136e-06 | 0.0 | 0.00 +Output | 0.00012034 | 0.00012034 | 0.00012034 | 0.0 | 0.00 +Modify | 28.396 | 28.396 | 28.396 | 0.0 |100.00 +Other | | 1.567e-05 | | | 0.00 + +Nlocal: 6 ave 6 max 6 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 42 ave 42 max 42 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 15 ave 15 max 15 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 15 +Ave neighs/atom = 2.5 +Ave special neighs/atom = 1 +Neighbor list builds = 0 +Dangerous builds = 0 +Total wall time: 0:00:43 diff --git a/examples/QUANTUM/PySCF/pyscf_mdi.py b/examples/QUANTUM/PySCF/pyscf_mdi.py index 92ff282ed0..efc5a4bcc7 100644 --- a/examples/QUANTUM/PySCF/pyscf_mdi.py +++ b/examples/QUANTUM/PySCF/pyscf_mdi.py @@ -1,23 +1,7 @@ # MDI wrapper on PySCF quantum code -# Todo: -# allow for changes in box size on driver side, e.g. NPT -# should just work for PySCF - -# NOTE: Qs or issues to still address for PySCF support -# add list of radii for all elements -# PySCF can do DIRECT mode (LATTICE commands) for QMMM -# can it also do POTENTIAL mode (Coulomb potential at QM atoms) -# if so, add PySCF logic in evaluate() -# if not, remove support for MDI POTENTIAL_AT_NUCLEI command -# can PySCF return stress -# any other PySCF settings for users to set -# are the 3 below good default values -# is wiping out dm_previous sufficient to make it a new system -# add PySCF code for AIMD (no MM atoms) -# how to specify box for mixed BC, i.e. cell.dimension = 2 or 1 -# also need command-line options for those cases ? -# redirect PySCF output to a file ? +# native PySCF units are Bohr and Hartree +# but box and atom coord inputs are passed in Angstroms import sys,time @@ -540,6 +524,7 @@ def evaluate(): # build PySCF system # use Cell for periodic, Mole for non-periodic + if periodic: cell = Cell() cell.atom = atom_str @@ -550,6 +535,7 @@ def evaluate(): mol = Mole() mol.atom = atom_str mol.basis = basis + #mol.max_memory = 10000 mol.build() # QMMM with QM and MM atoms @@ -652,5 +638,5 @@ if __name__== "__main__": mdi.MDI_Init(mdi_option) # start running as an MDI engine - + mdi_engine(other_options) diff --git a/src/MDI/fix_mdi_qmmm.cpp b/src/MDI/fix_mdi_qmmm.cpp index e542a96f0d..4cabcca8d1 100644 --- a/src/MDI/fix_mdi_qmmm.cpp +++ b/src/MDI/fix_mdi_qmmm.cpp @@ -670,10 +670,10 @@ void FixMDIQMMM::post_force_direct(int vflag) // fqm = forces on QM atoms // fmm = forces on MM atoms - if (comm->me == 0) utils::logmesg(lmp, "Invoking QM code ...\n"); + //if (comm->me == 0) utils::logmesg(lmp, "Invoking QM code ...\n"); - MPI_Barrier(world); - double tstart = platform::walltime(); + //MPI_Barrier(world); + //double tstart = platform::walltime(); // MDI calls // NOTE: add send_box() call when needed for NPT @@ -722,10 +722,10 @@ void FixMDIQMMM::post_force_direct(int vflag) // end of MDI calls - MPI_Barrier(world); - if (comm->me == 0) - utils::logmesg(lmp, " time = {:.3f} seconds\n", - platform::walltime() - tstart); + //MPI_Barrier(world); + //if (comm->me == 0) + // utils::logmesg(lmp, " time = {:.3f} seconds\n", + // platform::walltime() - tstart); // unit conversion from MDI to LAMMPS diff --git a/src/MDI/mdi_plugin.cpp b/src/MDI/mdi_plugin.cpp index 25e146fc54..c3624ee24b 100644 --- a/src/MDI/mdi_plugin.cpp +++ b/src/MDI/mdi_plugin.cpp @@ -145,7 +145,6 @@ int MDIPlugin::plugin_wrapper(void * /*pmpicomm*/, MDI_Comm mdicomm, void *vptr) // that operation will issue MDI commands to the plugin engine lammps->input->one(lammps_command); - delete[] lammps_command; // send MDI exit to plugin, which unloads the plugin