mirror of https://github.com/QMCPACK/qmcpack.git
Merge pull request #256 from ye-luo/guard-too-large-rcut
Print error when Rcut > WS radius in Jastrow.
This commit is contained in:
commit
7b9a9753ca
|
@ -369,17 +369,19 @@ struct BsplineFunctor: public OptimizableFunctorBase
|
|||
rAttrib.add(radius, "cutoff");
|
||||
rAttrib.put(cur);
|
||||
if (radius < 0.0)
|
||||
if(periodic)
|
||||
{
|
||||
app_log() << " Jastrow cutoff unspecified. Setting to Wigner-Seitz radius = "
|
||||
<< cutoff_radius << ".\n";
|
||||
}
|
||||
if (periodic)
|
||||
app_log() << " Jastrow cutoff unspecified. Setting to Wigner-Seitz radius = " << cutoff_radius << ".\n";
|
||||
else
|
||||
{
|
||||
APP_ABORT(" Jastrow cutoff unspecified. Cutoff must be given when not using periodic boundary conditions");
|
||||
APP_ABORT(" Jastrow cutoff unspecified. Cutoff must be given when using open boundary conditions");
|
||||
}
|
||||
else
|
||||
cutoff_radius = radius;
|
||||
if (periodic && radius > cutoff_radius)
|
||||
{
|
||||
APP_ABORT(" The Jastrow cutoff specified should not be larger than Wigner-Seitz radius.");
|
||||
}
|
||||
else
|
||||
cutoff_radius = radius;
|
||||
if (NumParams == 0)
|
||||
{
|
||||
PRE.error("You must specify a positive number of parameters for the Bspline jastrow function.",true);
|
||||
|
|
|
@ -73,7 +73,7 @@ bool BsplineJastrowBuilder::createOneBodyJastrow(xmlNodePtr cur)
|
|||
BsplineFunctor<RealType> *functor = new BsplineFunctor<RealType>(cusp);
|
||||
functor->elementType = speciesA;
|
||||
int ig = sSet.findSpecies (speciesA);
|
||||
functor->periodic = sourcePtcl->Lattice.SuperCellEnum == SUPERCELL_BULK;
|
||||
functor->periodic = sourcePtcl->Lattice.SuperCellEnum != SUPERCELL_OPEN;
|
||||
functor->cutoff_radius = sourcePtcl->Lattice.WignerSeitzRadius;
|
||||
int jg=-1;
|
||||
if(speciesB.size())
|
||||
|
@ -82,21 +82,6 @@ bool BsplineJastrowBuilder::createOneBodyJastrow(xmlNodePtr cur)
|
|||
{
|
||||
//ignore
|
||||
functor->put (kids);
|
||||
if (functor->cutoff_radius < 1.0e-6)
|
||||
{
|
||||
if(sourcePtcl->Lattice.SuperCellEnum == SUPERCELL_BULK)
|
||||
{
|
||||
app_log() << " BsplineFunction rcut is currently zero.\n"
|
||||
<< " Setting to Wigner-Seitz radius = "
|
||||
<< sourcePtcl->Lattice.WignerSeitzRadius << std::endl;
|
||||
functor->cutoff_radius = sourcePtcl->Lattice.WignerSeitzRadius;
|
||||
functor->reset();
|
||||
}
|
||||
else
|
||||
{
|
||||
APP_ABORT("BsplineJastrowBuilder::put rcut must be provided for one body jastrow since boundary conditions are not periodic");
|
||||
}
|
||||
}
|
||||
J1->addFunc (ig,functor,jg);
|
||||
success = true;
|
||||
dJ1->addFunc(ig,functor,jg);
|
||||
|
@ -282,25 +267,10 @@ bool BsplineJastrowBuilder::put(xmlNodePtr cur)
|
|||
}
|
||||
app_log() << " BsplineJastrowBuilder adds a functor with cusp = " << cusp << std::endl;
|
||||
RadFuncType *functor = new RadFuncType(cusp);
|
||||
functor->periodic = targetPtcl.Lattice.SuperCellEnum == SUPERCELL_BULK;
|
||||
functor->periodic = targetPtcl.Lattice.SuperCellEnum != SUPERCELL_OPEN;
|
||||
functor->cutoff_radius = targetPtcl.Lattice.WignerSeitzRadius;
|
||||
bool initialized_p=functor->put(kids);
|
||||
functor->elementType=pairType;
|
||||
if (functor->cutoff_radius < 1.0e-6)
|
||||
{
|
||||
if(targetPtcl.Lattice.SuperCellEnum == SUPERCELL_BULK)
|
||||
{
|
||||
app_log() << " BsplineFunction rcut is currently zero.\n"
|
||||
<< " Setting to Wigner-Seitz radius = "
|
||||
<< targetPtcl.Lattice.WignerSeitzRadius << std::endl;
|
||||
functor->cutoff_radius = targetPtcl.Lattice.WignerSeitzRadius;
|
||||
functor->reset();
|
||||
}
|
||||
else
|
||||
{
|
||||
APP_ABORT("BsplineJastrowBuilder::put rcut must be provided for two body jastrow since boundary conditions are not periodic");
|
||||
}
|
||||
}
|
||||
//RPA INIT
|
||||
if(!initialized_p && init_mode =="rpa")
|
||||
{
|
||||
|
|
|
@ -61,14 +61,26 @@ bool eeI_JastrowBuilder::putkids (xmlNodePtr kids, J3type &J3)
|
|||
int eNum1 = eSet.findSpecies (eSpecies1);
|
||||
int eNum2 = eSet.findSpecies (eSpecies2);
|
||||
functor->put (kids);
|
||||
if (functor->cutoff_radius < 1.0e-6)
|
||||
if (sourcePtcl->Lattice.SuperCellEnum != SUPERCELL_OPEN)
|
||||
{
|
||||
app_log() << " eeI functor rcut is currently zero.\n"
|
||||
<< " Setting to Wigner-Seitz radius = "
|
||||
<< sourcePtcl->Lattice.WignerSeitzRadius << std::endl;
|
||||
functor->cutoff_radius = sourcePtcl->Lattice.WignerSeitzRadius;
|
||||
functor->reset();
|
||||
if (functor->cutoff_radius > sourcePtcl->Lattice.WignerSeitzRadius)
|
||||
{
|
||||
APP_ABORT(" The eeI Jastrow cutoff specified should not be larger than Wigner-Seitz radius.");
|
||||
}
|
||||
if (functor->cutoff_radius < 1.0e-6)
|
||||
{
|
||||
app_log() << " eeI functor rcut is currently zero.\n"
|
||||
<< " Setting to Wigner-Seitz radius = "
|
||||
<< sourcePtcl->Lattice.WignerSeitzRadius << std::endl;
|
||||
functor->cutoff_radius = sourcePtcl->Lattice.WignerSeitzRadius;
|
||||
functor->reset();
|
||||
}
|
||||
}
|
||||
else
|
||||
if (functor->cutoff_radius < 1.0e-6)
|
||||
{
|
||||
APP_ABORT(" eeI Jastrow cutoff unspecified. Cutoff must be given when using open boundary conditions");
|
||||
}
|
||||
J3.addFunc(iNum, eNum1, eNum2, functor);
|
||||
}
|
||||
kids = kids->next;
|
||||
|
|
Loading…
Reference in New Issue