Skip to content

Instantly share code, notes, and snippets.

@shivupa
Last active December 15, 2020 03:16
Show Gist options
  • Save shivupa/08cce8c1383132d5f8f84cb48183861d to your computer and use it in GitHub Desktop.
Save shivupa/08cce8c1383132d5f8f84cb48183861d to your computer and use it in GitHub Desktop.
Two-body Jastrow Issue
<?xml version="1.0"?>
<simulation>
<!--
Example QMCPACK input file produced by convert4qmc
It is recommend to start with only the initial VMC block and adjust
parameters based on the measured energies, variance, and statistics.
-->
<!--Name and Series number of the project.-->
<project id="Default" series="0"/>
<!--Link to the location of the Atomic Coordinates and the location of the Wavefunction.-->
<include href="Default.structure.xml"/>
<include href="Default.wfj.xml"/>
<!--Hamiltonian of the system.
-->
<hamiltonian name="h0" type="generic" target="e">
<pairpot name="ElecElec" type="coulomb" source="e" target="e" physical="true"/>
<pairpot name="IonIon" type="coulomb" source="ion0" target="ion0"/>
<pairpot name="IonElec" type="coulomb" source="ion0" target="e"/>
</hamiltonian>
<!--
Example initial VMC to measure initial energy and variance
-->
<qmc method="vmc" move="pbyp" checkpoint="-1">
<estimator name="LocalEnergy" hdf5="no"/>
<parameter name="warmupSteps">100</parameter>
<parameter name="blocks">20</parameter>
<parameter name="steps">50</parameter>
<parameter name="substeps">8</parameter>
<parameter name="timestep">0.5</parameter>
<parameter name="usedrift">no</parameter>
</qmc>
<!--
Example initial VMC optimization
Number of steps required will be computed from total requested sample
count and total number of walkers
-->
<loop max="4">
<qmc method="linear" move="pbyp" checkpoint="-1">
<estimator name="LocalEnergy" hdf5="no"/>
<parameter name="warmupSteps">100</parameter>
<parameter name="blocks">20</parameter>
<parameter name="timestep">0.5</parameter>
<parameter name="walkers">1</parameter>
<parameter name="samples">16000</parameter>
<parameter name="substeps">4</parameter>
<parameter name="usedrift">no</parameter>
<parameter name="MinMethod">OneShiftOnly</parameter>
<parameter name="minwalkers">0.0001</parameter>
</qmc>
</loop>
<!--
Example follow-up VMC optimization using more samples for greater accuracy
-->
<loop max="10">
<qmc method="linear" move="pbyp" checkpoint="-1">
<estimator name="LocalEnergy" hdf5="no"/>
<parameter name="warmupSteps">100</parameter>
<parameter name="blocks">20</parameter>
<parameter name="timestep">0.5</parameter>
<parameter name="walkers">1</parameter>
<parameter name="samples">64000</parameter>
<parameter name="substeps">4</parameter>
<parameter name="usedrift">no</parameter>
<parameter name="MinMethod">OneShiftOnly</parameter>
<parameter name="minwalkers">0.3</parameter>
</qmc>
</loop>
</simulation>
<?xml version="1.0"?>
<qmcsystem>
<particleset name="ion0" size="3">
<group name="O">
<parameter name="charge">8</parameter>
<parameter name="valence">8</parameter>
<parameter name="atomicnumber">8</parameter>
</group>
<group name="H">
<parameter name="charge">1</parameter>
<parameter name="valence">1</parameter>
<parameter name="atomicnumber">1</parameter>
</group>
<attrib name="position" datatype="posArray">
0.0000000000e+00 0.0000000000e+00 0.0000000000e+00
1.4304631499e+00 0.0000000000e+00 -1.1071436712e+00
-1.4304631499e+00 0.0000000000e+00 -1.1071436712e+00
</attrib>
<attrib name="ionid" datatype="stringArray">
O H H
</attrib>
</particleset>
<particleset name="e" random="yes" randomsrc="ion0">
<group name="u" size="5">
<parameter name="charge">-1</parameter>
</group>
<group name="d" size="5">
<parameter name="charge">-1</parameter>
</group>
</particleset>
</qmcsystem>
<?xml version="1.0"?>
<qmcsystem>
<wavefunction name="psi0" target="e">
<determinantset type="MolecularOrbital" name="LCAOBSet" source="ion0" transform="yes" cuspCorrection="yes" href="Default.h5">
<slaterdeterminant>
<determinant id="updet" size="5" cuspInfo="../updet.cuspInfo.xml">
<occupation mode="ground"/>
<coefficient size="58" spindataset="0"/>
</determinant>
<determinant id="downdet" size="5" cuspInfo="../downdet.cuspInfo.xml">
<occupation mode="ground"/>
<coefficient size="58" spindataset="0"/>
</determinant>
</slaterdeterminant>
</determinantset>
<jastrow name="J2" type="Two-Body" function="Bspline" print="yes">
<correlation rcut="10" size="2" speciesA="u" speciesB="u">
<coefficients id="uu" type="Array" optimize="yes" >0.0 0.0 </coefficients>
</correlation>
<correlation rcut="10" size="2" speciesA="u" speciesB="d">
<coefficients id="ud" type="Array" optimize="no" >0.0 0.0 </coefficients>
</correlation>
</jastrow>
</wavefunction>
</qmcsystem>
from pyscf import gto, scf
import numpy as np
from PyscfToQmcpack import savetoqmcpack
mol = gto.Mole()
mol.verbose = 1
# mol.output = 'out_h2o'
mol.atom = """
O 0.0000000 0.0000000 0.0000000,
H 0.7569685 0.0000000 -0.5858752,
H -0.7569685 0.0000000 -0.5858752"""
mol.symmetry = 0
mol.unit = "Angstrom"
#mol.cart=True
mol.basis={ "O": gto.basis.parse('''
O S
1.533000E+04 5.080000E-04 -1.150000E-04 0.000000E+00 0.000000E+00
2.299000E+03 3.929000E-03 -8.950000E-04 0.000000E+00 0.000000E+00
5.224000E+02 2.024300E-02 -4.636000E-03 0.000000E+00 0.000000E+00
1.473000E+02 7.918100E-02 -1.872400E-02 0.000000E+00 0.000000E+00
4.755000E+01 2.306870E-01 -5.846300E-02 0.000000E+00 0.000000E+00
1.676000E+01 4.331180E-01 -1.364630E-01 0.000000E+00 0.000000E+00
6.207000E+00 3.502600E-01 -1.757400E-01 0.000000E+00 0.000000E+00
6.882000E-01 -8.154000E-03 6.034180E-01 0.000000E+00 0.000000E+00
1.752000E+00 0.0000000E+00 0.0000000E+00 1.000000E+00 0.000000E+00
2.384000E-01 0.0000000E+00 0.0000000E+00 0.000000E+00 1.000000E+00
O P
3.446000E+01 1.592800E-02 0.000000E+00 0.000000E+00
7.749000E+00 9.974000E-02 0.000000E+00 0.000000E+00
2.280000E+00 3.104920E-01 0.000000E+00 0.000000E+00
7.156000E-01 0.0000000E+00 1.000000E+00 0.000000E+00
2.140000E-01 0.0000000E+00 0.000000E+00 1.000000E+00
O D
2.314000E+00 1.000000E+00 0.000000E+00
6.450000E-01 0.000000E+00 1.000000E+00
O F
1.428000E+00 1.0000000
'''),
"H" : gto.basis.parse('''
H S
3.387000E+01 6.068000E-03 0.000000E+00 0.000000E+00
5.095000E+00 4.530800E-02 0.000000E+00 0.000000E+00
1.159000E+00 2.028220E-01 0.000000E+00 0.000000E+00
3.258000E-01 0.0000000E+00 1.000000E+00 0.000000E+00
1.027000E-01 0.0000000E+00 0.000000E+00 1.000000E+00
H P
1.407000E+00 1.000000E+00 0.000000E+00
3.880000E-01 0.000000E+00 1.000000E+00
H D
1.057000E+00 1.0000000
''')}
mol.cart=False
mol.build()
myhf = scf.RHF(mol)
b = myhf.get_hcore()
myhf.run()
print(myhf.e_tot)
from pyscf.scf.chkfile import dump_scf
dump_scf(mol, 'h2o.chk', myhf.e_tot, myhf.mo_energy, myhf.mo_coeff, myhf.mo_coeff)
savetoqmcpack(mol, myhf)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment