fixed update-all driver (ae)

corrected handling of species with different mass in update-all driver
added tests for update-all driver on bcc hydrogen
added more observables to bcc test
This commit is contained in:
Paul Young 2017-05-24 10:44:57 -05:00
parent 04092124e5
commit dc06dbd3d6
4 changed files with 210 additions and 2 deletions

View File

@ -234,10 +234,12 @@ public:
inline RealType logBackwardGF(const ParticleSet::ParticlePos_t& displ)
{
RealType t=0.5/Tau;
RealType logGb=0.0;
for(int iat=0; iat<W.getTotalNum(); ++iat)
logGb += t*MassInvP[iat]*dot(displ[iat],displ[iat]);
{
RealType mass_over_tau = 1.0/(SqrtTauOverMass[iat]*SqrtTauOverMass[iat]);
logGb += 0.5*dot(displ[iat],displ[iat])*mass_over_tau;
}
return -logGb;
}

View File

@ -0,0 +1,83 @@
<?xml version="1.0"?>
<simulation>
<project id="qmc_short_vmc_all" series="0">
<application name="qmcapp" role="molecu" class="serial" version="1.0"/>
</project>
<qmcsystem>
<simulationcell>
<parameter name="lattice" units="bohr">
3.77945227 0.00000000 0.00000000
-0.00000000 3.77945227 0.00000000
-0.00000000 -0.00000000 3.77945227
</parameter>
<parameter name="bconds">
p p p
</parameter>
<parameter name="LR_dim_cutoff" > 15 </parameter>
</simulationcell>
<particleset name="e" random="yes">
<group name="u" size="1" mass="1.0">
<parameter name="charge" > -1 </parameter>
<parameter name="mass" > 1.0 </parameter>
</group>
<group name="d" size="1" mass="1.0">
<parameter name="charge" > -1 </parameter>
<parameter name="mass" > 1.0 </parameter>
</group>
</particleset>
<particleset name="ion0">
<group name="H" size="2" mass="1837.36221934">
<parameter name="charge" > 1 </parameter>
<parameter name="valence" > 1 </parameter>
<parameter name="atomicnumber" > 1 </parameter>
<parameter name="mass" > 1837.36221934 </parameter>
<attrib name="position" datatype="posArray" condition="0">
0.00000000 0.00000000 0.00000000
1.88972614 1.88972614 1.88972614
</attrib>
</group>
</particleset>
<wavefunction name="psi0" target="e">
<determinantset type="einspline" href="pwscf.pwscf.h5" tilematrix="1 0 0 0 1 0 0 0 1" twistnum="0" source="ion0" meshfactor="1.0" precision="float">
<slaterdeterminant>
<determinant id="updet" size="1">
<occupation mode="ground" spindataset="0"/>
</determinant>
<determinant id="downdet" size="1">
<occupation mode="ground" spindataset="0"/>
</determinant>
</slaterdeterminant>
</determinantset>
<jastrow type="One-Body" name="J1" function="bspline" source="ion0" print="yes">
<correlation elementType="H" size="8" cusp="1.0">
<coefficients id="eH" type="Array">
0.00206602038 -0.002841926986 0.0036266191 -0.001913930279 8.457152991e-06
0.0007380321824 3.635172529e-05 0.0001299635851
</coefficients>
</correlation>
</jastrow>
<jastrow type="Two-Body" name="J2" function="bspline" print="yes">
<correlation speciesA="u" speciesB="d" size="8">
<coefficients id="ud" type="Array">
0.5954603818 0.5062051797 0.3746940461 0.2521010502 0.1440163317 0.07796688253
0.03804420551 0.01449320872
</coefficients>
</correlation>
</jastrow>
</wavefunction>
<hamiltonian name="h0" type="generic" target="e">
<pairpot type="coulomb" name="ElecElec" source="e" target="e"/>
<pairpot type="coulomb" name="IonIon" source="ion0" target="ion0"/>
<pairpot type="coulomb" name="ElecIon" source="ion0" target="e"/>
<estimator type="flux" name="Flux"/>
</hamiltonian>
</qmcsystem>
<qmc method="vmc" move="not_pbyp_or_whatever">
<parameter name="walkers" > 16 </parameter>
<parameter name="blocks" > 1000 </parameter>
<parameter name="steps" > 60 </parameter>
<parameter name="substeps" > 1 </parameter>
<parameter name="timestep" > 1.0 </parameter>
<parameter name="warmupsteps" > 100 </parameter>
</qmc>
</simulation>

View File

@ -0,0 +1,98 @@
<?xml version="1.0"?>
<simulation>
<project id="qmc_short_vmc_dmc_all" series="0">
<application name="qmcapp" role="molecu" class="serial" version="1.0"/>
</project>
<qmcsystem>
<simulationcell>
<parameter name="lattice" units="bohr">
3.77945227 0.00000000 0.00000000
-0.00000000 3.77945227 0.00000000
-0.00000000 -0.00000000 3.77945227
</parameter>
<parameter name="bconds">
p p p
</parameter>
<parameter name="LR_dim_cutoff" > 15 </parameter>
</simulationcell>
<particleset name="e" random="yes">
<group name="u" size="1" mass="1.0">
<parameter name="charge" > -1 </parameter>
<parameter name="mass" > 1.0 </parameter>
</group>
<group name="d" size="1" mass="1.0">
<parameter name="charge" > -1 </parameter>
<parameter name="mass" > 1.0 </parameter>
</group>
</particleset>
<particleset name="ion0">
<group name="H" size="2" mass="1837.36221934">
<parameter name="charge" > 1 </parameter>
<parameter name="valence" > 1 </parameter>
<parameter name="atomicnumber" > 1 </parameter>
<parameter name="mass" > 1837.36221934 </parameter>
<attrib name="position" datatype="posArray" condition="0">
0.00000000 0.00000000 0.00000000
1.88972614 1.88972614 1.88972614
</attrib>
</group>
</particleset>
<wavefunction name="psi0" target="e">
<determinantset type="einspline" href="pwscf.pwscf.h5" tilematrix="1 0 0 0 1 0 0 0 1" twistnum="0" source="ion0" meshfactor="1.0" precision="float">
<slaterdeterminant>
<determinant id="updet" size="1">
<occupation mode="ground" spindataset="0"/>
</determinant>
<determinant id="downdet" size="1">
<occupation mode="ground" spindataset="0"/>
</determinant>
</slaterdeterminant>
</determinantset>
<jastrow type="One-Body" name="J1" function="bspline" source="ion0" print="yes">
<correlation elementType="H" size="8" cusp="1.0">
<coefficients id="eH" type="Array">
0.00206602038 -0.002841926986 0.0036266191 -0.001913930279 8.457152991e-06
0.0007380321824 3.635172529e-05 0.0001299635851
</coefficients>
</correlation>
</jastrow>
<jastrow type="Two-Body" name="J2" function="bspline" print="yes">
<correlation speciesA="u" speciesB="d" size="8">
<coefficients id="ud" type="Array">
0.5954603818 0.5062051797 0.3746940461 0.2521010502 0.1440163317 0.07796688253
0.03804420551 0.01449320872
</coefficients>
</correlation>
</jastrow>
</wavefunction>
<hamiltonian name="h0" type="generic" target="e">
<pairpot type="coulomb" name="ElecElec" source="e" target="e"/>
<pairpot type="coulomb" name="IonIon" source="ion0" target="ion0"/>
<pairpot type="coulomb" name="ElecIon" source="ion0" target="e"/>
<estimator type="flux" name="Flux"/>
</hamiltonian>
</qmcsystem>
<qmc method="vmc" move="wbyw">
<estimator name="LocalEnergy" hdf5="no"/>
<parameter name="walkers"> 256 </parameter>
<parameter name="substeps"> 1 </parameter>
<parameter name="warmupsteps"> 100 </parameter>
<parameter name="usedrift"> yes </parameter>
<parameter name="timestep"> 1.0 </parameter>
<parameter name="steps"> 1 </parameter>
<parameter name="blocks"> 20 </parameter>
</qmc>
<qmc method="dmc" move="wbyw" checkpoint="-1">
<estimator name="LocalEnergy" hdf5="no"/>
<parameter name="targetwalkers"> 256 </parameter>
<parameter name="nonlocalmoves"> no </parameter>
<parameter name="reconfiguration"> no </parameter>
<parameter name="warmupsteps"> 100 </parameter>
<parameter name="timestep"> 0.01 </parameter>
<parameter name="steps"> 100 </parameter>
<parameter name="blocks"> 100 </parameter>
</qmc>
</simulation>

View File

@ -311,6 +311,10 @@ ENDIF()
# Short tests, about 2-3 seconds on 16 cores
#
LIST(APPEND BCC_H_SCALARS "totenergy" "-1.834032 0.0003")
LIST(APPEND BCC_H_SCALARS "kinetic" "0.186673807952 0.003")
LIST(APPEND BCC_H_SCALARS "potential" "-2.02070672998 0.003")
LIST(APPEND BCC_H_SCALARS "eeenergy" "-0.775870180954 0.003")
LIST(APPEND BCC_H_SCALARS "ionion" "-0.96289961022 0.001")
LIST(APPEND BCC_H_SCALARS "samples" "960000 0.0")
LIST(APPEND BCC_H_SCALARS "flux" "0.0 0.03")
@ -323,9 +327,21 @@ ENDIF()
0 # VMC
TRUE)
QMC_RUN_AND_CHECK(short-bccH_1x1x1_ae-vmc-all_sdj
"${CMAKE_SOURCE_DIR}/tests/solids/bccH_1x1x1_ae"
qmc_short_vmc_all
qmc_short_vmc_all.in.xml
1 16
BCC_H_SCALARS
0 # VMC
TRUE)
# qmc_ref_vmc_dmc series 1 -1.84143
# qmc_short_vmc_dmc series 1 -1.844059 +/- 0.001850
LIST(APPEND BCC_H_DMC_SCALARS "totenergy" "-1.841430 0.001850")
LIST(APPEND BCC_H_DMC_SCALARS "potential" "-2.02228454514 0.005")
LIST(APPEND BCC_H_DMC_SCALARS "kinetic" "0.180980043026 0.005")
LIST(APPEND BCC_H_DMC_SCALARS "eeenergy" "-0.781244 0.0014")
QMC_RUN_AND_CHECK(short-bccH_1x1x1_ae-dmc_sdj
"${CMAKE_SOURCE_DIR}/tests/solids/bccH_1x1x1_ae"
qmc_short_vmc_dmc
@ -335,6 +351,15 @@ ENDIF()
1 # DMC
TRUE)
QMC_RUN_AND_CHECK(short-bccH_1x1x1_ae-dmc-all_sdj
"${CMAKE_SOURCE_DIR}/tests/solids/bccH_1x1x1_ae"
qmc_short_vmc_dmc_all
qmc_short_vmc_dmc_all.in.xml
1 16
BCC_H_DMC_SCALARS
1 # DMC
TRUE)
IF(NOT QMC_CUDA)
LIST(APPEND BCC_H_RMC_SCALARS "totenergy" "-1.8420 0.0011")
#check RMC on 16 cores. 1 MPI