Merge branch 'develop' into pgi_compiler

This commit is contained in:
Paul R. C. Kent 2018-11-04 11:10:32 -05:00 committed by GitHub
commit 2e3c9239a6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
39 changed files with 287 additions and 250 deletions

View File

@ -56,13 +56,15 @@ ENDIF( INTEL_FTZ)
#------------------------
IF(NOT $ENV{CRAYPE_VERSION} MATCHES ".")
SET(X_OPTION "^-x| -x")
SET(AX_OPTION "^-ax| -ax")
#check if the user has already specified -x option for cross-compiling.
if(CMAKE_CXX_FLAGS MATCHES "-x" OR CMAKE_C_FLAGS MATCHES "-x" OR
CMAKE_CXX_FLAGS MATCHES "-ax" OR CMAKE_C_FLAGS MATCHES "-ax")
if(CMAKE_CXX_FLAGS MATCHES ${X_OPTION} OR CMAKE_C_FLAGS MATCHES ${X_OPTION} OR
CMAKE_CXX_FLAGS MATCHES ${AX_OPTION} OR CMAKE_C_FLAGS MATCHES ${AX_OPTION})
# make sure that the user specifies -x for both CMAKE_CXX_FLAGS and CMAKE_C_FLAGS.
if(CMAKE_CXX_FLAGS MATCHES "-x" AND CMAKE_C_FLAGS MATCHES "-x")
if(CMAKE_CXX_FLAGS MATCHES ${X_OPTION} AND CMAKE_C_FLAGS MATCHES ${X_OPTION})
else() #(CMAKE_CXX_FLAGS MATCHES "-x" AND CMAKE_C_FLAGS MATCHES "-x")
if(CMAKE_CXX_FLAGS MATCHES "-ax" AND CMAKE_C_FLAGS MATCHES "-ax")
if(CMAKE_CXX_FLAGS MATCHES ${AX_OPTION} AND CMAKE_C_FLAGS MATCHES ${AX_OPTION})
else()
MESSAGE(FATAL_ERROR "if -xcode or -axcode is specified by the user, it should be added in both CMAKE_CXX_FLAGS and CMAKE_C_FLAGS!")
endif()

View File

@ -203,15 +203,30 @@ IF ( NOT DEFINED CMAKE_TOOLCHAIN_FILE )
SET( CTEST_OPTIONS )
SET( CTEST_OPTIONS "-DCMAKE_C_COMPILER=${CC};-DCMAKE_CXX_COMPILER=${CXX}" )
SET( CTEST_OPTIONS "${CTEST_OPTIONS};-DCMAKE_C_FLAGS='${C_FLAGS}';-DCMAKE_CXX_FLAGS='${CXX_FLAGS}'" )
SET( CTEST_OPTIONS "${CTEST_OPTIONS};-DENABLE_GCOV:BOOL=${ENABLE_GCOV}" )
SET( CTEST_OPTIONS "${CTEST_OPTIONS};-DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE}" )
SET( CTEST_OPTIONS "${CTEST_OPTIONS};-DQMC_DATA='${QMC_DATA}'" )
SET( CTEST_OPTIONS "${CTEST_OPTIONS};-DQMC_CUDA='${QMC_CUDA}'" )
SET( CTEST_OPTIONS "${CTEST_OPTIONS};-DQE_BIN='${QE_BIN}'" )
ELSE()
SET( CTEST_OPTIONS "${CTEST_OPTIONS};-DCMAKE_TOOLCHAIN_FILE='${CMAKE_TOOLCHAIN_FILE}'" )
ENDIF()
IF (ENABLE_GCOV)
SET( CTEST_OPTIONS "${CTEST_OPTIONS};-DENABLE_GCOV:BOOL=${ENABLE_GCOV}" )
ENDIF()
IF ( CMAKE_BUILD_TYPE )
SET( CTEST_OPTIONS "${CTEST_OPTIONS};-DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE}" )
ENDIF()
IF (QMC_DATA)
SET( CTEST_OPTIONS "${CTEST_OPTIONS};-DQMC_DATA='${QMC_DATA}'" )
ENDIF()
IF (QE_BIN)
SET( CTEST_OPTIONS "${CTEST_OPTIONS};-DQE_BIN='${QE_BIN}'" )
ENDIF()
IF (QMC_CUDA)
SET( CTEST_OPTIONS "${CTEST_OPTIONS};-DQMC_CUDA='${QMC_CUDA}'" )
ENDIF()
IF ( QMC_COMPLEX )
SET( CTEST_OPTIONS "${CTEST_OPTIONS};-DQMC_COMPLEX='${QMC_COMPLEX}'" )
ENDIF()

View File

@ -107,7 +107,7 @@ FUNCTION( RUN_QMC_APP_NO_COPY TESTNAME WORKDIR PROCS THREADS TEST_ADDED TEST_LAB
ELSEIF ( USE_MPI )
ADD_TEST( ${TESTNAME} ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} ${PROCS} ${QMC_APP} ${ARGN} )
SET_TESTS_PROPERTIES( ${TESTNAME} PROPERTIES FAIL_REGULAR_EXPRESSION "${TEST_FAIL_REGULAR_EXPRESSION}"
PROCESSORS ${TOT_PROCS} WORKING_DIRECTORY ${WORKDIR}
PROCESSORS ${TOT_PROCS} PROCESSOR_AFFINITY TRUE WORKING_DIRECTORY ${WORKDIR}
ENVIRONMENT OMP_NUM_THREADS=${THREADS} )
SET( TEST_ADDED_TEMP TRUE )
ENDIF()
@ -115,7 +115,7 @@ FUNCTION( RUN_QMC_APP_NO_COPY TESTNAME WORKDIR PROCS THREADS TEST_ADDED TEST_LAB
IF ( ( ${PROCS} STREQUAL "1" ) )
ADD_TEST( ${TESTNAME} ${QMC_APP} ${ARGN} )
SET_TESTS_PROPERTIES( ${TESTNAME} PROPERTIES FAIL_REGULAR_EXPRESSION "${TEST_FAIL_REGULAR_EXPRESSION}"
PROCESSORS ${TOT_PROCS} WORKING_DIRECTORY ${WORKDIR}
PROCESSORS ${TOT_PROCS} PROCESSOR_AFFINITY TRUE WORKING_DIRECTORY ${WORKDIR}
ENVIRONMENT OMP_NUM_THREADS=${THREADS} )
SET( TEST_ADDED_TEMP TRUE )
ELSE()

View File

@ -8,7 +8,7 @@ FUNCTION( ADD_QE_TEST TESTNAME PROCS TEST_BINARY NPOOL WORKDIR TEST_INPUT)
ELSE()
ADD_TEST( NAME ${TESTNAME} COMMAND ${TEST_BINARY} -npool 1 ${TEST_INPUT} )
ENDIF()
SET_TESTS_PROPERTIES( ${TESTNAME} PROPERTIES ENVIRONMENT OMP_NUM_THREADS=1 PROCESSORS ${PROCS} WORKING_DIRECTORY ${WORKDIR} )
SET_TESTS_PROPERTIES( ${TESTNAME} PROPERTIES ENVIRONMENT OMP_NUM_THREADS=1 PROCESSORS ${PROCS} PROCESSOR_AFFINITY TRUE WORKING_DIRECTORY ${WORKDIR} )
SET_PROPERTY( TEST ${TESTNAME} APPEND PROPERTY LABELS "Quantum ESPRESSO" )
SET(TEST_LABELS "")

View File

@ -812,7 +812,7 @@ bool WaveFunctionTester::checkGradientAtConfiguration(MCWalkerConfiguration::Wal
{
ParticleSet::ParticleGradient_t G(nat), tmpG(nat), G1(nat);
ParticleSet::ParticleLaplacian_t L(nat), tmpL(nat), L1(nat);
DiracDeterminantBase *det = sd->Dets[isd];
DiracDeterminant *det = sd->Dets[isd];
RealType logpsi2 = det->evaluateLog(W, G, L); // this won't work with backflow
fail_log << " Slater Determiant " << isd << " (for particles " << det->FirstIndex << " to " << det->LastIndex << ") log psi = " << logpsi2 << std::endl;
// Should really check the condition number on the matrix determinant.

View File

@ -180,14 +180,14 @@ IF(OHMMS_DIM MATCHES 3)
ENDIF(OHMMS_DIM MATCHES 3)
SET(FERMION_SRCS ${FERMION_SRCS}
Fermion/DiracDeterminantBase.cpp
Fermion/DiracDeterminant.cpp
Fermion/DiracDeterminantOpt.cpp
Fermion/SlaterDet.cpp
Fermion/SlaterDetBuilder.cpp
Fermion/MultiSlaterDeterminant.cpp
Fermion/MultiSlaterDeterminantFast.cpp
Fermion/MultiDiracDeterminantBase.cpp
Fermion/MultiDiracDeterminantBase.2.cpp
Fermion/MultiDiracDeterminant.cpp
Fermion/MultiDiracDeterminant.2.cpp
Fermion/BackflowBuilder.cpp
Fermion/DiracDeterminantWithBackflow.cpp
Fermion/SlaterDetWithBackflow.cpp

View File

@ -64,7 +64,7 @@ bool ElectronGasComplexOrbitalBuilder::put(xmlNodePtr cur)
aAttrib.put(cur);
//typedef DiracDeterminant<EGOSet> Det_t;
//typedef SlaterDeterminant<EGOSet> SlaterDeterminant_t;
typedef DiracDeterminantBase Det_t;
typedef DiracDeterminant Det_t;
typedef SlaterDet SlaterDeterminant_t;
int nat=targetPtcl.getTotalNum();
int nup=nat/2;

View File

@ -17,7 +17,7 @@
#include "QMCWaveFunctions/Fermion/DiracDeterminantBase.h"
#include "QMCWaveFunctions/Fermion/DiracDeterminant.h"
#include "Numerics/DeterminantOperators.h"
#include "Numerics/OhmmsBlas.h"
#include "Numerics/MatrixOperators.h"
@ -30,27 +30,27 @@ namespace qmcplusplus
*@param spos the single-particle orbital set
*@param first index of the first particle
*/
DiracDeterminantBase::DiracDeterminantBase(SPOSetPtr const &spos, int first):
DiracDeterminant::DiracDeterminant(SPOSetPtr const &spos, int first):
NP(0), Phi(spos), FirstIndex(first)
,UpdateTimer("DiracDeterminantBase::update",timer_level_fine)
,RatioTimer("DiracDeterminantBase::ratio",timer_level_fine)
,InverseTimer("DiracDeterminantBase::inverse",timer_level_fine)
,BufferTimer("DiracDeterminantBase::buffer",timer_level_fine)
,SPOVTimer("DiracDeterminantBase::spoval",timer_level_fine)
,SPOVGLTimer("DiracDeterminantBase::spovgl",timer_level_fine)
,UpdateTimer("DiracDeterminant::update",timer_level_fine)
,RatioTimer("DiracDeterminant::ratio",timer_level_fine)
,InverseTimer("DiracDeterminant::inverse",timer_level_fine)
,BufferTimer("DiracDeterminant::buffer",timer_level_fine)
,SPOVTimer("DiracDeterminant::spoval",timer_level_fine)
,SPOVGLTimer("DiracDeterminant::spovgl",timer_level_fine)
{
Optimizable=false;
if(Phi->Optimizable)
Optimizable=true;
ClassName="DiracDeterminantBase";
ClassName="DiracDeterminant";
registerTimers();
}
///default destructor
DiracDeterminantBase::~DiracDeterminantBase() {}
DiracDeterminant::~DiracDeterminant() {}
#if 0
DiracDeterminantBase& DiracDeterminantBase::operator=(const DiracDeterminantBase& s)
DiracDeterminant& DiracDeterminant::operator=(const DiracDeterminant& s)
{
Bytes_in_WFBuffer=s.Bytes_in_WFBuffer;
NP=0;
@ -63,13 +63,13 @@ DiracDeterminantBase& DiracDeterminantBase::operator=(const DiracDeterminantBase
*@param first index of first particle
*@param nel number of particles in the determinant
*/
void DiracDeterminantBase::set(int first, int nel)
void DiracDeterminant::set(int first, int nel)
{
FirstIndex = first;
resize(nel,nel);
}
void DiracDeterminantBase::invertPsiM(const ValueMatrix_t& logdetT, ValueMatrix_t& invMat)
void DiracDeterminant::invertPsiM(const ValueMatrix_t& logdetT, ValueMatrix_t& invMat)
{
InverseTimer.start();
#ifdef MIXED_PRECISION
@ -93,7 +93,7 @@ void DiracDeterminantBase::invertPsiM(const ValueMatrix_t& logdetT, ValueMatrix_
///reset the size: with the number of particles and number of orbtials
void DiracDeterminantBase::resize(int nel, int morb)
void DiracDeterminant::resize(int nel, int morb)
{
int norb=morb;
if(norb <= 0)
@ -131,18 +131,18 @@ void DiracDeterminantBase::resize(int nel, int morb)
*/
}
DiracDeterminantBase::GradType
DiracDeterminantBase::evalGrad(ParticleSet& P, int iat)
DiracDeterminant::GradType
DiracDeterminant::evalGrad(ParticleSet& P, int iat)
{
WorkingIndex = iat-FirstIndex;
RatioTimer.start();
DiracDeterminantBase::GradType g = simd::dot(psiM[WorkingIndex],dpsiM[WorkingIndex],NumOrbitals);
DiracDeterminant::GradType g = simd::dot(psiM[WorkingIndex],dpsiM[WorkingIndex],NumOrbitals);
RatioTimer.stop();
return g;
}
DiracDeterminantBase::ValueType
DiracDeterminantBase::ratioGrad(ParticleSet& P, int iat, GradType& grad_iat)
DiracDeterminant::ValueType
DiracDeterminant::ratioGrad(ParticleSet& P, int iat, GradType& grad_iat)
{
SPOVGLTimer.start();
Phi->evaluate(P, iat, psiV, dpsiV, d2psiV);
@ -159,7 +159,7 @@ DiracDeterminantBase::ratioGrad(ParticleSet& P, int iat, GradType& grad_iat)
/** move was accepted, update the real container
*/
void DiracDeterminantBase::acceptMove(ParticleSet& P, int iat)
void DiracDeterminant::acceptMove(ParticleSet& P, int iat)
{
PhaseValue += evaluatePhase(curRatio);
LogValue +=std::log(std::abs(curRatio));
@ -176,12 +176,12 @@ void DiracDeterminantBase::acceptMove(ParticleSet& P, int iat)
/** move was rejected. copy the real container to the temporary to move on
*/
void DiracDeterminantBase::restore(int iat)
void DiracDeterminant::restore(int iat)
{
curRatio=1.0;
}
void DiracDeterminantBase::updateAfterSweep(ParticleSet& P,
void DiracDeterminant::updateAfterSweep(ParticleSet& P,
ParticleSet::ParticleGradient_t& G,
ParticleSet::ParticleLaplacian_t& L)
{
@ -212,7 +212,7 @@ void DiracDeterminantBase::updateAfterSweep(ParticleSet& P,
}
void
DiracDeterminantBase::registerData(ParticleSet& P, WFBufferType& buf)
DiracDeterminant::registerData(ParticleSet& P, WFBufferType& buf)
{
// Ye: no idea about NP.
if(NP == 0) //first time, allocate once
@ -241,7 +241,7 @@ DiracDeterminantBase::registerData(ParticleSet& P, WFBufferType& buf)
buf.add(PhaseValue);
}
DiracDeterminantBase::RealType DiracDeterminantBase::updateBuffer(ParticleSet& P,
DiracDeterminant::RealType DiracDeterminant::updateBuffer(ParticleSet& P,
WFBufferType& buf, bool fromscratch)
{
if(fromscratch)
@ -260,7 +260,7 @@ DiracDeterminantBase::RealType DiracDeterminantBase::updateBuffer(ParticleSet& P
return LogValue;
}
void DiracDeterminantBase::copyFromBuffer(ParticleSet& P, WFBufferType& buf)
void DiracDeterminant::copyFromBuffer(ParticleSet& P, WFBufferType& buf)
{
BufferTimer.start();
psiM.attachReference(buf.lendReference<ValueType>(psiM.size()));
@ -275,7 +275,7 @@ void DiracDeterminantBase::copyFromBuffer(ParticleSet& P, WFBufferType& buf)
* @param P current configuration
* @param iat the particle thas is being moved
*/
DiracDeterminantBase::ValueType DiracDeterminantBase::ratio(ParticleSet& P, int iat)
DiracDeterminant::ValueType DiracDeterminant::ratio(ParticleSet& P, int iat)
{
UpdateMode=ORB_PBYP_RATIO;
WorkingIndex = iat-FirstIndex;
@ -289,7 +289,7 @@ DiracDeterminantBase::ValueType DiracDeterminantBase::ratio(ParticleSet& P, int
return curRatio;
}
void DiracDeterminantBase::evaluateRatios(VirtualParticleSet& VP, std::vector<ValueType>& ratios)
void DiracDeterminant::evaluateRatios(VirtualParticleSet& VP, std::vector<ValueType>& ratios)
{
const int nVP = VP.getTotalNum();
const size_t memory_needed = nVP*NumOrbitals+Phi->estimateMemory(nVP);
@ -324,7 +324,7 @@ void DiracDeterminantBase::evaluateRatios(VirtualParticleSet& VP, std::vector<Va
}
}
void DiracDeterminantBase::evaluateRatiosAlltoOne(ParticleSet& P, std::vector<ValueType>& ratios)
void DiracDeterminant::evaluateRatiosAlltoOne(ParticleSet& P, std::vector<ValueType>& ratios)
{
SPOVTimer.start();
Phi->evaluate(P, -1, psiV);
@ -332,16 +332,16 @@ void DiracDeterminantBase::evaluateRatiosAlltoOne(ParticleSet& P, std::vector<Va
MatrixOperators::product(psiM,psiV.data(),&ratios[FirstIndex]);
}
DiracDeterminantBase::GradType
DiracDeterminantBase::evalGradSource(ParticleSet& P, ParticleSet& source,
DiracDeterminant::GradType
DiracDeterminant::evalGradSource(ParticleSet& P, ParticleSet& source,
int iat)
{
Phi->evaluateGradSource (P, FirstIndex, LastIndex, source, iat, grad_source_psiM);
return simd::dot(psiM.data(),grad_source_psiM.data(),psiM.size());
}
DiracDeterminantBase::GradType
DiracDeterminantBase::evalGradSourcep
DiracDeterminant::GradType
DiracDeterminant::evalGradSourcep
(ParticleSet& P, ParticleSet& source,int iat,
TinyVector<ParticleSet::ParticleGradient_t, OHMMS_DIM> &grad_grad,
TinyVector<ParticleSet::ParticleLaplacian_t,OHMMS_DIM> &lapl_grad)
@ -435,7 +435,7 @@ DiracDeterminantBase::evalGradSourcep
return Psi_alpha_over_psi;
}
void DiracDeterminantBase::evaluateHessian(ParticleSet& P, HessVector_t& grad_grad_psi)
void DiracDeterminant::evaluateHessian(ParticleSet& P, HessVector_t& grad_grad_psi)
{
//IM A HACK. Assumes evaluateLog has already been executed.
Phi->evaluate_notranspose(P, FirstIndex, LastIndex, psiM_temp, dpsiM, grad_grad_source_psiM);
@ -458,8 +458,8 @@ void DiracDeterminantBase::evaluateHessian(ParticleSet& P, HessVector_t& grad_gr
}
}
DiracDeterminantBase::GradType
DiracDeterminantBase::evalGradSource
DiracDeterminant::GradType
DiracDeterminant::evalGradSource
(ParticleSet& P, ParticleSet& source,int iat,
TinyVector<ParticleSet::ParticleGradient_t, OHMMS_DIM> &grad_grad,
TinyVector<ParticleSet::ParticleLaplacian_t,OHMMS_DIM> &lapl_grad)
@ -566,8 +566,8 @@ DiracDeterminantBase::evalGradSource
*contribution of the determinant to G(radient) and L(aplacian)
*for local energy calculations.
*/
DiracDeterminantBase::RealType
DiracDeterminantBase::evaluateLog(ParticleSet& P,
DiracDeterminant::RealType
DiracDeterminant::evaluateLog(ParticleSet& P,
ParticleSet::ParticleGradient_t& G,
ParticleSet::ParticleLaplacian_t& L)
{
@ -594,7 +594,7 @@ DiracDeterminantBase::evaluateLog(ParticleSet& P,
}
void
DiracDeterminantBase::recompute(ParticleSet& P)
DiracDeterminant::recompute(ParticleSet& P)
{
SPOVGLTimer.start();
Phi->evaluate_notranspose(P, FirstIndex, LastIndex, psiM_temp, dpsiM, d2psiM);
@ -613,27 +613,27 @@ DiracDeterminantBase::recompute(ParticleSet& P)
}
void
DiracDeterminantBase::evaluateDerivatives(ParticleSet& P,
DiracDeterminant::evaluateDerivatives(ParticleSet& P,
const opt_variables_type& active,
std::vector<RealType>& dlogpsi,
std::vector<RealType>& dhpsioverpsi)
{
}
WaveFunctionComponentPtr DiracDeterminantBase::makeClone(ParticleSet& tqp) const
WaveFunctionComponentPtr DiracDeterminant::makeClone(ParticleSet& tqp) const
{
APP_ABORT(" Illegal action. Cannot use DiracDeterminantBase::makeClone");
APP_ABORT(" Illegal action. Cannot use DiracDeterminant::makeClone");
return 0;
}
DiracDeterminantBase* DiracDeterminantBase::makeCopy(SPOSetPtr spo) const
DiracDeterminant* DiracDeterminant::makeCopy(SPOSetPtr spo) const
{
DiracDeterminantBase* dclone= new DiracDeterminantBase(spo);
DiracDeterminant* dclone= new DiracDeterminant(spo);
dclone->set(FirstIndex,LastIndex-FirstIndex);
return dclone;
}
DiracDeterminantBase::DiracDeterminantBase(const DiracDeterminantBase& s)
DiracDeterminant::DiracDeterminant(const DiracDeterminant& s)
: WaveFunctionComponent(s), NP(0), Phi(s.Phi), FirstIndex(s.FirstIndex)
,UpdateTimer(s.UpdateTimer)
,RatioTimer(s.RatioTimer)
@ -646,12 +646,12 @@ DiracDeterminantBase::DiracDeterminantBase(const DiracDeterminantBase& s)
this->resize(s.NumPtcls,s.NumOrbitals);
}
//SPOSetPtr DiracDeterminantBase::clonePhi() const
//SPOSetPtr DiracDeterminant::clonePhi() const
//{
// return Phi->makeClone();
//}
void DiracDeterminantBase::registerTimers()
void DiracDeterminant::registerTimers()
{
UpdateTimer.reset();
RatioTimer.reset();

View File

@ -16,11 +16,11 @@
//////////////////////////////////////////////////////////////////////////////////////
/**@file DiracDeterminantBaseBase.h
* @brief Declaration of DiracDeterminantBase with a S(ingle)P(article)O(rbital)SetBase
/**@file DiracDeterminant.h
* @brief Declaration of DiracDeterminant with a S(ingle)P(article)O(rbital)Set
*/
#ifndef QMCPLUSPLUS_DIRACDETERMINANTWITHBASE_H
#define QMCPLUSPLUS_DIRACDETERMINANTWITHBASE_H
#ifndef QMCPLUSPLUS_DIRACDETERMINANT_H
#define QMCPLUSPLUS_DIRACDETERMINANT_H
#include "QMCWaveFunctions/WaveFunctionComponent.h"
#include "QMCWaveFunctions/SPOSet.h"
#include "Utilities/NewTimer.h"
@ -30,7 +30,7 @@
namespace qmcplusplus
{
class DiracDeterminantBase: public WaveFunctionComponent
class DiracDeterminant: public WaveFunctionComponent
{
protected:
ParticleSet *targetPtcl;
@ -63,20 +63,20 @@ public:
*@param spos the single-particle orbital set
*@param first index of the first particle
*/
DiracDeterminantBase(SPOSetPtr const &spos, int first=0);
DiracDeterminant(SPOSetPtr const &spos, int first=0);
///default destructor
virtual ~DiracDeterminantBase();
virtual ~DiracDeterminant();
/**copy constructor
* @param s existing DiracDeterminantBase
* @param s existing DiracDeterminant
*
* This constructor makes a shallow copy of Phi.
* Other data members are allocated properly.
*/
DiracDeterminantBase(const DiracDeterminantBase& s);
DiracDeterminant(const DiracDeterminant& s);
DiracDeterminantBase& operator=(const DiracDeterminantBase& s);
DiracDeterminant& operator=(const DiracDeterminant& s);
///** return a clone of Phi
// */
@ -226,8 +226,8 @@ public:
* This interface is exposed only to SlaterDet and its derived classes
* can overwrite to clone itself correctly.
*/
virtual DiracDeterminantBase* makeCopy(SPOSet* spo) const;
// virtual DiracDeterminantBase* makeCopy(ParticleSet& tqp, SPOSet* spo) const {return makeCopy(spo); };
virtual DiracDeterminant* makeCopy(SPOSet* spo) const;
// virtual DiracDeterminant* makeCopy(ParticleSet& tqp, SPOSet* spo) const {return makeCopy(spo); };
virtual void evaluateRatiosAlltoOne(ParticleSet& P, std::vector<ValueType>& ratios);
///total number of particles

View File

@ -15,7 +15,7 @@
/**@file DiracDeterminantCUDA.h
* @brief Declaration of DiracDeterminantCUDA with a S(ingle)P(article)O(rbital)SetBase
* @brief Declaration of DiracDeterminantCUDA with a S(ingle)P(article)O(rbital)Set
*/
#include "DiracDeterminantCUDA.h"
@ -28,36 +28,36 @@
namespace qmcplusplus
{
DiracDeterminantCUDA::DiracDeterminantCUDA(SPOSetPtr const &spos, int first) :
DiracDeterminantBase(spos, first),
UpdateJobList_d("DiracDeterminantBase::UpdateJobList_d"),
srcList_d("DiracDeterminantBase::srcList_d"),
destList_d("DiracDeterminantBase::destList_d"),
AList_d("DiracDeterminantBase::AList_d"),
AinvList_d("DiracDeterminantBase::AinvList_d"),
newRowList_d("DiracDeterminantBase::newRowList_d"),
AinvDeltaList_d("DiracDeterminantBase::AinvDeltaList_d"),
AinvColkList_d("DiracDeterminantBase::AinvColkList_d"),
gradLaplList_d("DiracDeterminantBase::gradLaplList_d"),
newGradLaplList_d("DiracDeterminantBase::newGradLaplList_d"),
AWorkList_d("DiracDeterminantBase::AWorkList_d"),
AinvWorkList_d("DiracDeterminantBase::AinvWorkList_d"),
PivotArray_d("DiracDeterminantBase::PivotArray_d"),
infoArray_d("DiracDeterminantBase::infoArray_d"),
GLList_d("DiracDeterminantBase::GLList_d"),
ratio_d("DiracDeterminantBase::ratio_d"),
gradLapl_d("DiracDeterminantBase::gradLapl_d"),
iatList_d("DiracDeterminantBase::iatList_d"),
NLrowBuffer_d("DiracDeterminantBase::NLrowBuffer_d"),
SplineRowList_d("DiracDeterminantBase::SplineRowList_d"),
RatioRowList_d("DiracDeterminantBase::RatioRowList_d"),
NLposBuffer_d("DiracDeterminantBase::NLposBuffer_d"),
NLAinvList_d("DiracDeterminantBase::NLAinvList_d"),
NLnumRatioList_d("DiracDeterminantBase::NLnumRatioList_d"),
NLelecList_d("DiracDeterminantBase::NLelecList_d"),
NLratioList_d("DiracDeterminantBase::NLratioList_d")
DiracDeterminant(spos, first),
UpdateJobList_d("DiracDeterminant::UpdateJobList_d"),
srcList_d("DiracDeterminant::srcList_d"),
destList_d("DiracDeterminant::destList_d"),
AList_d("DiracDeterminant::AList_d"),
AinvList_d("DiracDeterminant::AinvList_d"),
newRowList_d("DiracDeterminant::newRowList_d"),
AinvDeltaList_d("DiracDeterminant::AinvDeltaList_d"),
AinvColkList_d("DiracDeterminant::AinvColkList_d"),
gradLaplList_d("DiracDeterminant::gradLaplList_d"),
newGradLaplList_d("DiracDeterminant::newGradLaplList_d"),
AWorkList_d("DiracDeterminant::AWorkList_d"),
AinvWorkList_d("DiracDeterminant::AinvWorkList_d"),
PivotArray_d("DiracDeterminant::PivotArray_d"),
infoArray_d("DiracDeterminant::infoArray_d"),
GLList_d("DiracDeterminant::GLList_d"),
ratio_d("DiracDeterminant::ratio_d"),
gradLapl_d("DiracDeterminant::gradLapl_d"),
iatList_d("DiracDeterminant::iatList_d"),
NLrowBuffer_d("DiracDeterminant::NLrowBuffer_d"),
SplineRowList_d("DiracDeterminant::SplineRowList_d"),
RatioRowList_d("DiracDeterminant::RatioRowList_d"),
NLposBuffer_d("DiracDeterminant::NLposBuffer_d"),
NLAinvList_d("DiracDeterminant::NLAinvList_d"),
NLnumRatioList_d("DiracDeterminant::NLnumRatioList_d"),
NLelecList_d("DiracDeterminant::NLelecList_d"),
NLratioList_d("DiracDeterminant::NLratioList_d")
{
for(int i = 0; i < 2; ++i)
NLratios_d[i] = gpu::device_vector<CTS::ValueType>("DiracDeterminantBase::NLratios_d");
NLratios_d[i] = gpu::device_vector<CTS::ValueType>("DiracDeterminant::NLratios_d");
ClassName="DiracDeterminantCUDA";
}

View File

@ -16,12 +16,12 @@
/**@file DiracDeterminantCUDA.h
* @brief Declaration of DiracDeterminantCUDA with a S(ingle)P(article)O(rbital)SetBase
* @brief Declaration of DiracDeterminantCUDA with a S(ingle)P(article)O(rbital)Set
*/
#ifndef QMCPLUSPLUS_DIRAC_DETERMINANT_CUDA_H
#define QMCPLUSPLUS_DIRAC_DETERMINANT_CUDA_H
#include <typeinfo>
#include "QMCWaveFunctions/Fermion/DiracDeterminantBase.h"
#include "QMCWaveFunctions/Fermion/DiracDeterminant.h"
#include "QMCWaveFunctions/SPOSet.h"
#include "QMCWaveFunctions/Fermion/determinant_update.h"
#include "Numerics/CUDA/cuda_inverse.h"
@ -29,7 +29,7 @@
namespace qmcplusplus
{
class DiracDeterminantCUDA: public DiracDeterminantBase
class DiracDeterminantCUDA: public DiracDeterminant
{
public:
typedef SPOSet::IndexVector_t IndexVector_t;
@ -143,7 +143,7 @@ protected:
public:
ValueType ratio(ParticleSet& P, int iat)
{
return DiracDeterminantBase::ratio (P, iat);
return DiracDeterminant::ratio (P, iat);
}
void update (std::vector<Walker_t*> &walkers, int iat);

View File

@ -23,7 +23,7 @@ namespace qmcplusplus
DiracDeterminantOpt::DiracDeterminantOpt
(ParticleSet &ptcl, SPOSetPtr const &gs_spos, int first) :
DiracDeterminantBase(gs_spos, first)
DiracDeterminant(gs_spos, first)
{
targetPtcl = &ptcl;
NumOrbitals = gs_spos->OrbitalSetSize;
@ -41,10 +41,10 @@ DiracDeterminantOpt::DiracDeterminantOpt
Optimizable = true;
}
DiracDeterminantBase*
DiracDeterminant*
DiracDeterminantOpt::makeCopy(SPOSetPtr spo) const
{
DiracDeterminantBase* dclone= new DiracDeterminantOpt(*targetPtcl, spo, FirstIndex);
DiracDeterminant* dclone= new DiracDeterminantOpt(*targetPtcl, spo, FirstIndex);
dclone->set(FirstIndex,LastIndex-FirstIndex);
return dclone;
}

View File

@ -16,12 +16,12 @@
#ifndef DIRAC_DETERMINANT_OPT_H
#define DIRAC_DETERMINANT_OPT_H
#include "QMCWaveFunctions/Fermion/DiracDeterminantBase.h"
#include "QMCWaveFunctions/Fermion/DiracDeterminant.h"
namespace qmcplusplus
{
class DiracDeterminantOpt : public DiracDeterminantBase
class DiracDeterminantOpt : public DiracDeterminant
{
protected:
typedef optimize::VariableSet opt_variables_type;
@ -36,7 +36,7 @@ protected:
int NumOrbitals, NumBasis;
// SPOSetPtr ExcitedStates;
// Inverse of Aopt -- not transposed as in DiracDeterminantBase
// Inverse of Aopt -- not transposed as in DiracDeterminant
ValueMatrix_t AoptInv;
// Basis functions evaluated at all of my electron positions
// First index is electron, second index is basis index
@ -55,7 +55,7 @@ protected:
std::vector<PosType> MyG;
public:
DiracDeterminantBase* makeCopy(SPOSet* spo) const;
DiracDeterminant* makeCopy(SPOSet* spo) const;
DiracDeterminantOpt(ParticleSet &ptcl, SPOSetPtr const &gs_spos, int first=0);
// This stores new orbital coefficients and updates the

View File

@ -29,7 +29,7 @@ namespace qmcplusplus
*@param spos the single-particle orbital set
*@param first index of the first particle
*/
DiracDeterminantWithBackflow::DiracDeterminantWithBackflow(ParticleSet &ptcl, SPOSetPtr const &spos, BackflowTransformation * BF, int first): DiracDeterminantBase(spos,first)
DiracDeterminantWithBackflow::DiracDeterminantWithBackflow(ParticleSet &ptcl, SPOSetPtr const &spos, BackflowTransformation * BF, int first): DiracDeterminant(spos,first)
{
Optimizable=true;
ClassName="DiracDeterminantWithBackflow";
@ -1041,7 +1041,7 @@ DiracDeterminantWithBackflow* DiracDeterminantWithBackflow::makeCopy(SPOSetPtr s
}
DiracDeterminantWithBackflow::DiracDeterminantWithBackflow(const DiracDeterminantWithBackflow& s):
DiracDeterminantBase(s),BFTrans(s.BFTrans)
DiracDeterminant(s),BFTrans(s.BFTrans)
{
registerTimers();

View File

@ -13,7 +13,7 @@
/**@file DiracDeterminantWithBackflowBase.h
* @brief Declaration of DiracDeterminantWithBackflow with a S(ingle)P(article)O(rbital)SetBase
* @brief Declaration of DiracDeterminantWithBackflow with a S(ingle)P(article)O(rbital)Set
*/
#ifndef QMCPLUSPLUS_DIRACDETERMINANTWITHBACKFLOW_H
#define QMCPLUSPLUS_DIRACDETERMINANTWITHBACKFLOW_H
@ -21,7 +21,7 @@
#include "QMCWaveFunctions/SPOSet.h"
#include "Utilities/NewTimer.h"
#include "QMCWaveFunctions/Fermion/BackflowTransformation.h"
#include "QMCWaveFunctions/Fermion/DiracDeterminantBase.h"
#include "QMCWaveFunctions/Fermion/DiracDeterminant.h"
#include "OhmmsPETE/OhmmsArray.h"
namespace qmcplusplus
@ -29,7 +29,7 @@ namespace qmcplusplus
/** class to handle determinants with backflow
*/
class DiracDeterminantWithBackflow: public DiracDeterminantBase
class DiracDeterminantWithBackflow: public DiracDeterminant
{
public:

View File

@ -14,16 +14,16 @@
//////////////////////////////////////////////////////////////////////////////////////
/**@file DiracDeterminantBaseBase.build.cpp
/**@file DiracDeterminant.build.cpp
* @brief Implement build functions: Function bodies are too big to be in a header file
*/
#include "QMCWaveFunctions/Fermion/MultiDiracDeterminantBase.h"
#include "QMCWaveFunctions/Fermion/MultiDiracDeterminant.h"
#include "Numerics/MatrixOperators.h"
namespace qmcplusplus
{
/** shared function used by BuildDotProductsAndCalculateRatios */
void MultiDiracDeterminantBase::BuildDotProductsAndCalculateRatios_impl(int ref, ValueType det0,
void MultiDiracDeterminant::BuildDotProductsAndCalculateRatios_impl(int ref, ValueType det0,
ValueType* restrict ratios, const ValueMatrix_t &psiinv, const ValueMatrix_t &psi, ValueMatrix_t& dotProducts,
const std::vector<int>& data, const std::vector<std::pair<int,int> >& pairs, const std::vector<RealType>& sign)
{
@ -55,7 +55,7 @@ namespace qmcplusplus
readMatTimer.stop();
}
void MultiDiracDeterminantBase::BuildDotProductsAndCalculateRatios(int ref, int iat,
void MultiDiracDeterminant::BuildDotProductsAndCalculateRatios(int ref, int iat,
ValueVector_t& ratios, const ValueMatrix_t &psiinv, const ValueMatrix_t &psi, ValueMatrix_t& dotProducts,
const std::vector<int>& data, const std::vector<std::pair<int,int> >& pairs, const std::vector<RealType>& sign)
{
@ -89,7 +89,7 @@ namespace qmcplusplus
#endif
}
void MultiDiracDeterminantBase::BuildDotProductsAndCalculateRatios(int ref, int iat,
void MultiDiracDeterminant::BuildDotProductsAndCalculateRatios(int ref, int iat,
GradMatrix_t& ratios, ValueMatrix_t& psiinv, ValueMatrix_t& psi,
ValueMatrix_t& dotProducts, std::vector<int>& data,
std::vector<std::pair<int,int> >& pairs, std::vector<RealType>& sign, int dx)
@ -129,7 +129,7 @@ namespace qmcplusplus
#endif
}
void MultiDiracDeterminantBase::BuildDotProductsAndCalculateRatios(int ref, int iat,
void MultiDiracDeterminant::BuildDotProductsAndCalculateRatios(int ref, int iat,
ValueMatrix_t& ratios, ValueMatrix_t& psiinv, ValueMatrix_t& psi, ValueMatrix_t& dotProducts,
std::vector<int>& data,
std::vector<std::pair<int,int> >& pairs,
@ -167,7 +167,7 @@ namespace qmcplusplus
#endif
}
void MultiDiracDeterminantBase::evaluateDetsForPtclMove(ParticleSet& P, int iat)
void MultiDiracDeterminant::evaluateDetsForPtclMove(ParticleSet& P, int iat)
{
UpdateMode=ORB_PBYP_RATIO;
RatioTimer.start();
@ -216,7 +216,7 @@ namespace qmcplusplus
RatioTimer.stop();
}
void MultiDiracDeterminantBase::evaluateDetsAndGradsForPtclMove(ParticleSet& P, int iat)
void MultiDiracDeterminant::evaluateDetsAndGradsForPtclMove(ParticleSet& P, int iat)
{
UpdateMode=ORB_PBYP_PARTIAL;
evalOrb1Timer.start();
@ -292,7 +292,7 @@ namespace qmcplusplus
}
}
void MultiDiracDeterminantBase::evaluateGrads(ParticleSet& P, int iat)
void MultiDiracDeterminant::evaluateGrads(ParticleSet& P, int iat)
{
WorkingIndex = iat-FirstIndex;
@ -337,7 +337,7 @@ namespace qmcplusplus
}
}
void MultiDiracDeterminantBase::evaluateAllForPtclMove(ParticleSet& P, int iat)
void MultiDiracDeterminant::evaluateAllForPtclMove(ParticleSet& P, int iat)
{
UpdateMode=ORB_PBYP_ALL;
Phi->evaluate(P,iat,psiV,dpsiV,d2psiV);

View File

@ -15,8 +15,8 @@
#include "QMCWaveFunctions/Fermion/MultiDiracDeterminantBase.h"
//#include "QMCWaveFunctions/Fermion/MultiDiracDeterminantBase_help.h"
#include "QMCWaveFunctions/Fermion/MultiDiracDeterminant.h"
//#include "QMCWaveFunctions/Fermion/MultiDiracDeterminant_help.h"
#include "QMCWaveFunctions/Fermion/ci_configuration2.h"
#include "Message/Communicate.h"
#include "Numerics/DeterminantOperators.h"
@ -37,12 +37,12 @@ namespace qmcplusplus
*@param first index of first particle
*@param nel number of particles in the determinant
*/
void MultiDiracDeterminantBase::set(int first, int nel)
void MultiDiracDeterminant::set(int first, int nel)
{
APP_ABORT("MultiDiracDeterminantBase::set(int first, int nel) is disabled. \n");
APP_ABORT("MultiDiracDeterminant::set(int first, int nel) is disabled. \n");
}
void MultiDiracDeterminantBase::set(int first, int nel,int norb)
void MultiDiracDeterminant::set(int first, int nel,int norb)
{
FirstIndex = first;
DetCalculator.resize(nel);
@ -51,7 +51,7 @@ void MultiDiracDeterminantBase::set(int first, int nel,int norb)
// testDets();
}
void MultiDiracDeterminantBase::createDetData(ci_configuration2& ref, std::vector<int>& data,
void MultiDiracDeterminant::createDetData(ci_configuration2& ref, std::vector<int>& data,
std::vector<std::pair<int,int> >& pairs, std::vector<RealType>& sign)
{
const auto& confgList=*ciConfigList;
@ -103,14 +103,14 @@ void out1(int n, std::string str="NULL") {}
//{ std::cout <<"MDD: " <<str <<" " <<n << std::endl; std::cout.flush(); }
void MultiDiracDeterminantBase::evaluateForWalkerMove(ParticleSet& P, bool fromScratch)
void MultiDiracDeterminant::evaluateForWalkerMove(ParticleSet& P, bool fromScratch)
{
evalWTimer.start();
if(fromScratch)
Phi->evaluate_notranspose(P,FirstIndex,LastIndex,psiM,dpsiM,d2psiM);
if(NumPtcls==1)
{
//APP_ABORT("Evaluate Log with 1 particle in MultiDiracDeterminantBase is potentially dangerous. Fix later");
//APP_ABORT("Evaluate Log with 1 particle in MultiDiracDeterminant is potentially dangerous. Fix later");
std::vector<ci_configuration2>::const_iterator it(ciConfigList->begin());
std::vector<ci_configuration2>::const_iterator last(ciConfigList->end());
ValueVector_t::iterator det(detValues.begin());
@ -179,7 +179,7 @@ void MultiDiracDeterminantBase::evaluateForWalkerMove(ParticleSet& P, bool fromS
for(size_t i=0; i<NumPtcls; i++)
psiV_temp[i] = dpsiM(iat,*(it++))[idim];
InverseUpdateByColumn(dpsiMinv,psiV_temp,workV1,workV2,iat,gradRatio[idim]);
//MultiDiracDeterminantBase::InverseUpdateByColumn_GRAD(dpsiMinv,dpsiV,workV1,workV2,iat,gradRatio[idim],idim);
//MultiDiracDeterminant::InverseUpdateByColumn_GRAD(dpsiMinv,dpsiV,workV1,workV2,iat,gradRatio[idim],idim);
for(size_t i=0; i<NumOrbitals; i++)
TpsiM(i,iat) = dpsiM(iat,i)[idim];
BuildDotProductsAndCalculateRatios(ReferenceDeterminant,iat,
@ -190,7 +190,7 @@ void MultiDiracDeterminantBase::evaluateForWalkerMove(ParticleSet& P, bool fromS
for(size_t i=0; i<NumPtcls; i++)
psiV_temp[i] = d2psiM(iat,*(it++));
InverseUpdateByColumn(dpsiMinv,psiV_temp,workV1,workV2,iat,ratioLapl);
//MultiDiracDeterminantBase::InverseUpdateByColumn(dpsiMinv,d2psiM,workV1,workV2,iat,ratioLapl,confgList[ReferenceDeterminant].occup.begin());
//MultiDiracDeterminant::InverseUpdateByColumn(dpsiMinv,d2psiM,workV1,workV2,iat,ratioLapl,confgList[ReferenceDeterminant].occup.begin());
for(size_t i=0; i<NumOrbitals; i++)
TpsiM(i,iat) = d2psiM(iat,i);
BuildDotProductsAndCalculateRatios(ReferenceDeterminant,iat,
@ -205,7 +205,7 @@ void MultiDiracDeterminantBase::evaluateForWalkerMove(ParticleSet& P, bool fromS
}
MultiDiracDeterminantBase::RealType MultiDiracDeterminantBase::updateBuffer(ParticleSet& P,
MultiDiracDeterminant::RealType MultiDiracDeterminant::updateBuffer(ParticleSet& P,
WFBufferType& buf, bool fromscratch)
{
evaluateForWalkerMove(P,(fromscratch || UpdateMode == ORB_PBYP_RATIO) );
@ -219,7 +219,7 @@ MultiDiracDeterminantBase::RealType MultiDiracDeterminantBase::updateBuffer(Part
return 1.0;
}
void MultiDiracDeterminantBase::copyFromBuffer(ParticleSet& P, WFBufferType& buf)
void MultiDiracDeterminant::copyFromBuffer(ParticleSet& P, WFBufferType& buf)
{
buf.get(psiM.first_address(),psiM.last_address());
buf.get(FirstAddressOfdpsiM,LastAddressOfdpsiM);
@ -242,7 +242,7 @@ void MultiDiracDeterminantBase::copyFromBuffer(ParticleSet& P, WFBufferType& buf
/** move was accepted, update the real container
*/
void MultiDiracDeterminantBase::acceptMove(ParticleSet& P, int iat)
void MultiDiracDeterminant::acceptMove(ParticleSet& P, int iat)
{
WorkingIndex = iat-FirstIndex;
switch(UpdateMode)
@ -282,7 +282,7 @@ void MultiDiracDeterminantBase::acceptMove(ParticleSet& P, int iat)
/** move was rejected. copy the real container to the temporary to move on
*/
void MultiDiracDeterminantBase::restore(int iat)
void MultiDiracDeterminant::restore(int iat)
{
WorkingIndex = iat-FirstIndex;
psiMinv_temp = psiMinv;
@ -308,19 +308,19 @@ void MultiDiracDeterminantBase::restore(int iat)
}
// this has been fixed
MultiDiracDeterminantBase::MultiDiracDeterminantBase(const MultiDiracDeterminantBase& s):
MultiDiracDeterminant::MultiDiracDeterminant(const MultiDiracDeterminant& s):
WaveFunctionComponent(s), NP(0), FirstIndex(s.FirstIndex),ciConfigList(nullptr),
UpdateTimer("MultiDiracDeterminantBase::update"),
RatioTimer("MultiDiracDeterminantBase::ratio"),
InverseTimer("MultiDiracDeterminantBase::inverse"),
buildTableTimer("MultiDiracDeterminantBase::buildTable"),
evalWTimer("MultiDiracDeterminantBase::evalW"),
evalOrbTimer("MultiDiracDeterminantBase::evalOrb"),
evalOrb1Timer("MultiDiracDeterminantBase::evalOrbGrad"),
readMatTimer("MultiDiracDeterminantBase::readMat"),
readMatGradTimer("MultiDiracDeterminantBase::readMatGrad"),
buildTableGradTimer("MultiDiracDeterminantBase::buildTableGrad"),
ExtraStuffTimer("MultiDiracDeterminantBase::ExtraStuff")
UpdateTimer("MultiDiracDeterminant::update"),
RatioTimer("MultiDiracDeterminant::ratio"),
InverseTimer("MultiDiracDeterminant::inverse"),
buildTableTimer("MultiDiracDeterminant::buildTable"),
evalWTimer("MultiDiracDeterminant::evalW"),
evalOrbTimer("MultiDiracDeterminant::evalOrb"),
evalOrb1Timer("MultiDiracDeterminant::evalOrbGrad"),
readMatTimer("MultiDiracDeterminant::readMat"),
readMatGradTimer("MultiDiracDeterminant::readMatGrad"),
buildTableGradTimer("MultiDiracDeterminant::buildTableGrad"),
ExtraStuffTimer("MultiDiracDeterminant::ExtraStuff")
{
IsCloned=true;
@ -337,14 +337,14 @@ MultiDiracDeterminantBase::MultiDiracDeterminantBase(const MultiDiracDeterminant
this->DetCalculator.resize(s.NumPtcls);
}
SPOSetPtr MultiDiracDeterminantBase::clonePhi() const
SPOSetPtr MultiDiracDeterminant::clonePhi() const
{
return Phi->makeClone();
}
WaveFunctionComponentPtr MultiDiracDeterminantBase::makeClone(ParticleSet& tqp) const
WaveFunctionComponentPtr MultiDiracDeterminant::makeClone(ParticleSet& tqp) const
{
APP_ABORT(" Illegal action. Cannot use MultiDiracDeterminantBase::makeClone");
APP_ABORT(" Illegal action. Cannot use MultiDiracDeterminant::makeClone");
return 0;
}
@ -352,22 +352,22 @@ WaveFunctionComponentPtr MultiDiracDeterminantBase::makeClone(ParticleSet& tqp)
*@param spos the single-particle orbital set
*@param first index of the first particle
*/
MultiDiracDeterminantBase::MultiDiracDeterminantBase(SPOSetPtr const &spos, int first):
MultiDiracDeterminant::MultiDiracDeterminant(SPOSetPtr const &spos, int first):
NP(0),Phi(spos),FirstIndex(first),ReferenceDeterminant(0), ciConfigList(nullptr),
UpdateTimer("MultiDiracDeterminantBase::update"),
RatioTimer("MultiDiracDeterminantBase::ratio"),
InverseTimer("MultiDiracDeterminantBase::inverse"),
buildTableTimer("MultiDiracDeterminantBase::buildTable"),
evalWTimer("MultiDiracDeterminantBase::evalW"),
evalOrbTimer("MultiDiracDeterminantBase::evalOrb"),
evalOrb1Timer("MultiDiracDeterminantBase::evalOrbGrad"),
readMatTimer("MultiDiracDeterminantBase::readMat"),
readMatGradTimer("MultiDiracDeterminantBase::readMatGrad"),
buildTableGradTimer("MultiDiracDeterminantBase::buildTableGrad"),
ExtraStuffTimer("MultiDiracDeterminantBase::ExtraStuff")
UpdateTimer("MultiDiracDeterminant::update"),
RatioTimer("MultiDiracDeterminant::ratio"),
InverseTimer("MultiDiracDeterminant::inverse"),
buildTableTimer("MultiDiracDeterminant::buildTable"),
evalWTimer("MultiDiracDeterminant::evalW"),
evalOrbTimer("MultiDiracDeterminant::evalOrb"),
evalOrb1Timer("MultiDiracDeterminant::evalOrbGrad"),
readMatTimer("MultiDiracDeterminant::readMat"),
readMatGradTimer("MultiDiracDeterminant::readMatGrad"),
buildTableGradTimer("MultiDiracDeterminant::buildTableGrad"),
ExtraStuffTimer("MultiDiracDeterminant::ExtraStuff")
{
Optimizable=true;
ClassName="MultiDiracDeterminantBase";
ClassName="MultiDiracDeterminant";
IsCloned=false;
@ -380,9 +380,9 @@ MultiDiracDeterminantBase::MultiDiracDeterminantBase(SPOSetPtr const &spos, int
}
///default destructor
MultiDiracDeterminantBase::~MultiDiracDeterminantBase() {}
MultiDiracDeterminant::~MultiDiracDeterminant() {}
MultiDiracDeterminantBase& MultiDiracDeterminantBase::operator=(const MultiDiracDeterminantBase& s)
MultiDiracDeterminant& MultiDiracDeterminant::operator=(const MultiDiracDeterminant& s)
{
if(this == & s) return *this;
@ -404,7 +404,7 @@ MultiDiracDeterminantBase& MultiDiracDeterminantBase::operator=(const MultiDirac
}
void
MultiDiracDeterminantBase::registerData(ParticleSet& P, WFBufferType& buf)
MultiDiracDeterminant::registerData(ParticleSet& P, WFBufferType& buf)
{
if(NP == 0)
//first time, allocate once
@ -428,7 +428,7 @@ MultiDiracDeterminantBase::registerData(ParticleSet& P, WFBufferType& buf)
}
void MultiDiracDeterminantBase::setDetInfo(int ref, std::vector<ci_configuration2>* list)
void MultiDiracDeterminant::setDetInfo(int ref, std::vector<ci_configuration2>* list)
{
ReferenceDeterminant = ref;
ciConfigList=list;
@ -437,15 +437,15 @@ void MultiDiracDeterminantBase::setDetInfo(int ref, std::vector<ci_configuration
///reset the size: with the number of particles and number of orbtials
/// morb is the total number of orbitals, including virtual
void MultiDiracDeterminantBase::resize(int nel, int morb)
void MultiDiracDeterminant::resize(int nel, int morb)
{
if(nel <= 0 || morb <= 0)
{
APP_ABORT(" ERROR: MultiDiracDeterminantBase::resize arguments equal to zero. \n");
APP_ABORT(" ERROR: MultiDiracDeterminant::resize arguments equal to zero. \n");
}
if(NumDets == 0 || NumDets != ciConfigList->size())
{
APP_ABORT(" ERROR: MultiDiracDeterminantBase::resize problems with NumDets. \n");
APP_ABORT(" ERROR: MultiDiracDeterminant::resize problems with NumDets. \n");
}
NumPtcls=nel;
@ -486,7 +486,7 @@ void MultiDiracDeterminantBase::resize(int nel, int morb)
createDetData((*ciConfigList)[ReferenceDeterminant], *detData,*uniquePairs,*DetSigns);
}
void MultiDiracDeterminantBase::registerTimers()
void MultiDiracDeterminant::registerTimers()
{
UpdateTimer.reset();
RatioTimer.reset();

View File

@ -14,16 +14,16 @@
//////////////////////////////////////////////////////////////////////////////////////
/**@file DiracDeterminantBaseBase.h
* @brief Declaration of DiracDeterminantBase with a S(ingle)P(article)O(rbital)SetBase
/**@file DiracDeterminant.h
* @brief Declaration of DiracDeterminant with a S(ingle)P(article)O(rbital)Set
*/
#ifndef QMCPLUSPLUS_MULTIDIRACDETERMINANTWITHBASE_H
#define QMCPLUSPLUS_MULTIDIRACDETERMINANTWITHBASE_H
#ifndef QMCPLUSPLUS_MULTIDIRACDETERMINANT_H
#define QMCPLUSPLUS_MULTIDIRACDETERMINANT_H
#include "QMCWaveFunctions/WaveFunctionComponent.h"
#include "QMCWaveFunctions/SPOSet.h"
#include "QMCWaveFunctions/Fermion/ci_configuration2.h"
#include "QMCWaveFunctions/Fermion/BackflowTransformation.h"
#include "QMCWaveFunctions/Fermion/MultiDiracDeterminantBase_help.h"
#include "QMCWaveFunctions/Fermion/MultiDiracDeterminant_help.h"
#include "Message/Communicate.h"
#include "Numerics/DeterminantOperators.h"
//#include "Numerics/OhmmsBlas.h"
@ -31,7 +31,7 @@
namespace qmcplusplus
{
class MultiDiracDeterminantBase: public WaveFunctionComponent
class MultiDiracDeterminant: public WaveFunctionComponent
{
public:
@ -54,20 +54,20 @@ public:
*@param spos the single-particle orbital set
*@param first index of the first particle
*/
MultiDiracDeterminantBase(SPOSetPtr const &spos, int first=0);
MultiDiracDeterminant(SPOSetPtr const &spos, int first=0);
///default destructor
~MultiDiracDeterminantBase();
~MultiDiracDeterminant();
/**copy constructor
* @param s existing DiracDeterminantBase
* @param s existing DiracDeterminant
*
* This constructor makes a shallow copy of Phi.
* Other data members are allocated properly.
*/
MultiDiracDeterminantBase(const MultiDiracDeterminantBase& s);
MultiDiracDeterminant(const MultiDiracDeterminant& s);
MultiDiracDeterminantBase& operator=(const MultiDiracDeterminantBase& s);
MultiDiracDeterminant& operator=(const MultiDiracDeterminant& s);
/** return a clone of Phi
*/
@ -148,19 +148,19 @@ public:
ValueType ratio(ParticleSet& P, int iat)
{
APP_ABORT(" MultiDiracDeterminantBase: This should not be called. \n");
APP_ABORT(" MultiDiracDeterminant: This should not be called. \n");
return ValueType();
}
GradType evalGrad(ParticleSet& P, int iat)
{
APP_ABORT(" MultiDiracDeterminantBase: This should not be called. \n");
APP_ABORT(" MultiDiracDeterminant: This should not be called. \n");
return GradType();
}
ValueType ratioGrad(ParticleSet& P, int iat, GradType& grad_iat)
{
APP_ABORT(" MultiDiracDeterminantBase: This should not be called. \n");
APP_ABORT(" MultiDiracDeterminant: This should not be called. \n");
return ValueType();
}
@ -168,7 +168,7 @@ public:
ParticleSet::ParticleGradient_t& G,
ParticleSet::ParticleLaplacian_t& L)
{
APP_ABORT(" MultiDiracDeterminantBase: This should not be called. \n");
APP_ABORT(" MultiDiracDeterminant: This should not be called. \n");
return 0.0;
}
@ -176,7 +176,7 @@ public:
ParticleSet::ParticleGradient_t& G,
ParticleSet::ParticleLaplacian_t& L)
{
APP_ABORT(" MultiDiracDeterminantBase: This should not be called. \n");
APP_ABORT(" MultiDiracDeterminant: This should not be called. \n");
return ValueType();
}
@ -385,7 +385,7 @@ public:
};
// #include "MultiDiracDeterminantBase_help.h"
// #include "MultiDiracDeterminant_help.h"
}
#endif

View File

@ -14,11 +14,11 @@
//////////////////////////////////////////////////////////////////////////////////////
/**@file DiracDeterminantBaseBase.h
* @brief Declaration of DiracDeterminantBase with a S(ingle)P(article)O(rbital)SetBase
/**@file DiracDeterminant.h
* @brief Declaration of DiracDeterminant with a S(ingle)P(article)O(rbital)Set
*/
#ifndef QMCPLUSPLUS_MULTIDIRACDETERMINANTWITHBASE_HELP_H
#define QMCPLUSPLUS_MULTIDIRACDETERMINANTWITHBASE_HELP_H
#ifndef QMCPLUSPLUS_MULTIDIRACDETERMINANT_HELP_H
#define QMCPLUSPLUS_MULTIDIRACDETERMINANT_HELP_H
#include "OhmmsPETE/OhmmsMatrix.h"

View File

@ -77,7 +77,7 @@ WaveFunctionComponentPtr MultiSlaterDeterminant::makeClone(ParticleSet& tqp) con
// spo->occup(i,nq++) = k;
// }
// }
DiracDeterminantBase* adet = new DiracDeterminantBase((SPOSetPtr) clone->spo_up,0);
DiracDeterminant* adet = new DiracDeterminant((SPOSetPtr) clone->spo_up,0);
adet->set(clone->FirstIndex_up,clone->nels_up);
adet->resetTargetParticleSet(tqp);
clone->dets_up.push_back(adet);
@ -93,7 +93,7 @@ WaveFunctionComponentPtr MultiSlaterDeterminant::makeClone(ParticleSet& tqp) con
// spo->occup(i,nq++) = k;
// }
// }
DiracDeterminantBase* adet = new DiracDeterminantBase((SPOSetPtr) clone->spo_dn,0);
DiracDeterminant* adet = new DiracDeterminant((SPOSetPtr) clone->spo_dn,0);
adet->set(clone->FirstIndex_dn,clone->nels_dn);
adet->resetTargetParticleSet(tqp);
clone->dets_dn.push_back(adet);

View File

@ -16,7 +16,7 @@
#ifndef QMCPLUSPLUS_MULTISLATERDETERMINANT_ORBITAL_H
#define QMCPLUSPLUS_MULTISLATERDETERMINANT_ORBITAL_H
#include <Configuration.h>
#include <QMCWaveFunctions/Fermion/DiracDeterminantBase.h>
#include <QMCWaveFunctions/Fermion/DiracDeterminant.h>
#include <QMCWaveFunctions/Fermion/SPOSetProxyForMSD.h>
#include "Utilities/NewTimer.h"
#include "QMCWaveFunctions/Fermion/BackflowTransformation.h"
@ -56,7 +56,7 @@ public:
NewTimer RatioTimer,RatioGradTimer,RatioAllTimer,UpdateTimer,EvaluateTimer;
NewTimer Ratio1Timer,Ratio1GradTimer,Ratio1AllTimer,AccRejTimer,evalOrbTimer;
typedef DiracDeterminantBase* DiracDeterminantPtr;
typedef DiracDeterminant* DiracDeterminantPtr;
typedef SPOSet* SPOSetPtr;
typedef SPOSetProxyForMSD* SPOSetProxyPtr;
typedef OrbitalSetTraits<ValueType>::IndexVector_t IndexVector_t;

View File

@ -14,13 +14,13 @@
#include "QMCWaveFunctions/Fermion/MultiSlaterDeterminantFast.h"
#include "QMCWaveFunctions/Fermion/MultiDiracDeterminantBase.h"
#include "QMCWaveFunctions/Fermion/MultiDiracDeterminant.h"
#include "ParticleBase/ParticleAttribOps.h"
namespace qmcplusplus
{
MultiSlaterDeterminantFast::MultiSlaterDeterminantFast(ParticleSet& targetPtcl, MultiDiracDeterminantBase* up, MultiDiracDeterminantBase* dn):
MultiSlaterDeterminantFast::MultiSlaterDeterminantFast(ParticleSet& targetPtcl, MultiDiracDeterminant* up, MultiDiracDeterminant* dn):
C2node_up(nullptr),C2node_dn(nullptr),C(nullptr),
CSFcoeff(nullptr),DetsPerCSF(nullptr),CSFexpansion(nullptr),
IsCloned(false),
@ -73,8 +73,8 @@ void MultiSlaterDeterminantFast::initialize()
WaveFunctionComponentPtr MultiSlaterDeterminantFast::makeClone(ParticleSet& tqp) const
{
MultiDiracDeterminantBase* up_clone = new MultiDiracDeterminantBase(*Dets[0]);
MultiDiracDeterminantBase* dn_clone = new MultiDiracDeterminantBase(*Dets[1]);
MultiDiracDeterminant* up_clone = new MultiDiracDeterminant(*Dets[0]);
MultiDiracDeterminant* dn_clone = new MultiDiracDeterminant(*Dets[1]);
MultiSlaterDeterminantFast* clone = new MultiSlaterDeterminantFast(tqp,up_clone,dn_clone);
if(usingBF)
{

View File

@ -17,7 +17,7 @@
#define QMCPLUSPLUS_MULTISLATERDETERMINANTFAST_ORBITAL_H
#include <Configuration.h>
#include <QMCWaveFunctions/WaveFunctionComponent.h>
#include <QMCWaveFunctions/Fermion/MultiDiracDeterminantBase.h>
#include <QMCWaveFunctions/Fermion/MultiDiracDeterminant.h>
#include <QMCWaveFunctions/Fermion/MultiSlaterDeterminant.h>
#include <QMCWaveFunctions/Fermion/SPOSetProxyForMSD.h>
#include "Utilities/NewTimer.h"
@ -59,7 +59,7 @@ public:
NewTimer RatioTimer,RatioGradTimer,RatioAllTimer,UpdateTimer,EvaluateTimer;
NewTimer Ratio1Timer,Ratio1GradTimer,Ratio1AllTimer, AccRejTimer;
typedef MultiDiracDeterminantBase* DiracDeterminantPtr;
typedef MultiDiracDeterminant* DiracDeterminantPtr;
typedef SPOSet* SPOSetPtr;
typedef SPOSetProxyForMSD* SPOSetProxyPtr;
typedef OrbitalSetTraits<ValueType>::IndexVector_t IndexVector_t;
@ -75,7 +75,7 @@ public:
///constructor
MultiSlaterDeterminantFast(ParticleSet& targetPtcl,MultiDiracDeterminantBase* up, MultiDiracDeterminantBase* dn);
MultiSlaterDeterminantFast(ParticleSet& targetPtcl,MultiDiracDeterminant* up, MultiDiracDeterminant* dn);
///destructor
~MultiSlaterDeterminantFast();
@ -153,7 +153,7 @@ public:
ValueType psiCurrent;
// assume Dets[0]: up, Dets[1]:down
std::vector<MultiDiracDeterminantBase*> Dets;
std::vector<MultiDiracDeterminant*> Dets;
std::map<std::string,size_t> SPOSetID;
// map determinant in linear combination to unique det list

View File

@ -872,6 +872,9 @@ void MultiSlaterDeterminantWithBackflow::evaluateDerivatives(ParticleSet& P,
ValueType dpsi2=dpsia_dn(dnC,pa);
ParticleSet::ParticleGradient_t& g1 = grads_up[upC];
ParticleSet::ParticleGradient_t& g2 = grads_dn[dnC];
#if ( ( __INTEL_COMPILER == 1900 ) && ( __INTEL_COMPILER_UPDATE == 0 ) )
#pragma omp simd reduction(+:dot1)
#endif
for(int k=0; k<n; k++)
dot1 += dot((g2[k]-gmP[k]),dGa_up(upC,pa,k))
+ dot((g1[k]-gmP[k]),dGa_dn(dnC,pa,k))

View File

@ -16,7 +16,7 @@
#ifndef QMCPLUSPLUS_MULTISLATERDETERMINANTWITHBACKFLOW_ORBITAL_H
#define QMCPLUSPLUS_MULTISLATERDETERMINANTWITHBACKFLOW_ORBITAL_H
#include <Configuration.h>
#include <QMCWaveFunctions/Fermion/DiracDeterminantBase.h>
#include <QMCWaveFunctions/Fermion/DiracDeterminant.h>
#include "QMCWaveFunctions/Fermion/DiracDeterminantWithBackflow.h"
#include "QMCWaveFunctions/Fermion/BackflowTransformation.h"
#include <QMCWaveFunctions/Fermion/SPOSetProxyForMSD.h>

View File

@ -24,7 +24,7 @@ namespace qmcplusplus
/** proxy SPOSet
*
* This class owns a SPOSet for all the states to be evaluated
* and will be owned by a DiracDeterminantBase object.
* and will be owned by a DiracDeterminant object.
*/
struct SPOSetProxy: public SPOSet
{

View File

@ -24,7 +24,7 @@ namespace qmcplusplus
/** proxy SPOSet
*
* This class owns a SPOSet for all the states to be evaluated
* and will be owned by a DiracDeterminantBase object.
* and will be owned by a DiracDeterminant object.
*/
struct SPOSetProxyForMSD: public SPOSet
{

View File

@ -20,7 +20,7 @@
#ifdef QMC_CUDA
#include "QMCWaveFunctions/Fermion/DiracDeterminantCUDA.h"
#else
#include "QMCWaveFunctions/Fermion/DiracDeterminantBase.h"
#include "QMCWaveFunctions/Fermion/DiracDeterminant.h"
#endif
#include "QMCWaveFunctions/Fermion/BackflowTransformation.h"
#include <map>
@ -37,7 +37,7 @@ namespace qmcplusplus
class SlaterDet : public WaveFunctionComponent
{
public:
typedef DiracDeterminantBase Determinant_t;
typedef DiracDeterminant Determinant_t;
///container for the DiracDeterminants
std::vector<Determinant_t*> Dets;
///the last particle of each group

View File

@ -304,12 +304,12 @@ bool SlaterDetBuilder::put(xmlNodePtr cur)
APP_ABORT("Backflow is not implemented with multi determinants.");
}
app_log() <<"Using Bryan's algorithm for MultiSlaterDeterminant expansion. \n";
MultiDiracDeterminantBase* up_det=0;
MultiDiracDeterminantBase* dn_det=0;
MultiDiracDeterminant* up_det=0;
MultiDiracDeterminant* dn_det=0;
app_log() <<"Creating base determinant (up) for MSD expansion. \n";
up_det = new MultiDiracDeterminantBase((SPOSetPtr) spomap.find(spo_alpha)->second,0);
up_det = new MultiDiracDeterminant((SPOSetPtr) spomap.find(spo_alpha)->second,0);
app_log() <<"Creating base determinant (down) for MSD expansion. \n";
dn_det = new MultiDiracDeterminantBase((SPOSetPtr) spomap.find(spo_beta)->second,1);
dn_det = new MultiDiracDeterminant((SPOSetPtr) spomap.find(spo_beta)->second,1);
multislaterdetfast_0 = new MultiSlaterDeterminantFast(targetPtcl,up_det,dn_det);
// up_det->usingBF = UseBackflow;
// dn_det->usingBF = UseBackflow;
@ -496,7 +496,7 @@ bool SlaterDetBuilder::putDeterminant(xmlNodePtr cur, int spin_group, bool slate
return true;
std::string dname;
getNodeName(dname,cur);
DiracDeterminantBase* adet=0;
DiracDeterminant* adet=0;
{
#ifdef QMC_CUDA
adet = new DiracDeterminantCUDA(psi,firstIndex);
@ -556,8 +556,8 @@ bool SlaterDetBuilder::putDeterminant(xmlNodePtr cur, int spin_group, bool slate
adet = new DiracDeterminantOpt(targetPtcl, psi, firstIndex);
else
{
app_log()<<"Using DiracDeterminantBase "<< std::endl;
adet = new DiracDeterminantBase(psi,firstIndex);
app_log()<<"Using DiracDeterminant "<< std::endl;
adet = new DiracDeterminant(psi,firstIndex);
}
#endif
}
@ -693,7 +693,7 @@ bool SlaterDetBuilder::createMSDFast(MultiSlaterDeterminantFast* multiSD, xmlNod
spo->occup(i,nq++) = k;
}
}
DiracDeterminantBase* adet = new DiracDeterminantBase((SPOSetPtr) spo,0);
DiracDeterminant* adet = new DiracDeterminant((SPOSetPtr) spo,0);
adet->set(multiSD->FirstIndex_up,multiSD->nels_up);
multiSD->dets_up.push_back(adet);
}
@ -708,7 +708,7 @@ bool SlaterDetBuilder::createMSDFast(MultiSlaterDeterminantFast* multiSD, xmlNod
spo->occup(i,nq++) = k;
}
}
DiracDeterminantBase* adet = new DiracDeterminantBase((SPOSetPtr) spo,0);
DiracDeterminant* adet = new DiracDeterminant((SPOSetPtr) spo,0);
adet->set(multiSD->FirstIndex_dn,multiSD->nels_dn);
multiSD->dets_dn.push_back(adet);
}
@ -752,14 +752,14 @@ bool SlaterDetBuilder::createMSD(MultiSlaterDeterminant* multiSD, xmlNodePtr cur
spo->occup(i,nq++) = k;
}
}
DiracDeterminantBase* adet;
DiracDeterminant* adet;
if(UseBackflow)
{
adet = new DiracDeterminantWithBackflow(targetPtcl,(SPOSetPtr) spo,0,0);
}
else
{
adet = new DiracDeterminantBase((SPOSetPtr) spo,0);
adet = new DiracDeterminant((SPOSetPtr) spo,0);
}
adet->set(multiSD->FirstIndex_up,multiSD->nels_up);
multiSD->dets_up.push_back(adet);
@ -777,14 +777,14 @@ bool SlaterDetBuilder::createMSD(MultiSlaterDeterminant* multiSD, xmlNodePtr cur
spo->occup(i,nq++) = k;
}
}
DiracDeterminantBase* adet;
DiracDeterminant* adet;
if(UseBackflow)
{
adet = new DiracDeterminantWithBackflow(targetPtcl,(SPOSetPtr) spo,0,0);
}
else
{
adet = new DiracDeterminantBase((SPOSetPtr) spo,0);
adet = new DiracDeterminant((SPOSetPtr) spo,0);
}
adet->set(multiSD->FirstIndex_dn,multiSD->nels_dn);
multiSD->dets_dn.push_back(adet);

View File

@ -40,7 +40,7 @@ public:
typedef SlaterDet SlaterDeterminant_t;
typedef MultiSlaterDeterminant MultiSlaterDeterminant_t;
typedef DiracDeterminantBase Det_t;
typedef DiracDeterminant Det_t;
/** constructor
* \param els reference to the electrons
* \param psi reference to the wavefunction

View File

@ -28,7 +28,7 @@ namespace qmcplusplus {
///
///////////////////////////////////////////////////////////////////////////////////////////////////
SlaterDetOpt::SlaterDetOpt(ParticleSet & ptcl, SPOSet * spo_ptr, const int up_or_down)
: DiracDeterminantBase(spo_ptr, ptcl.first(up_or_down))
: DiracDeterminant(spo_ptr, ptcl.first(up_or_down))
, m_up_or_down(up_or_down)
, m_nmo(spo_ptr->size())
, m_first_var_pos(-1)
@ -134,7 +134,7 @@ WaveFunctionComponentPtr SlaterDetOpt::makeClone(ParticleSet& tqp) const {
/// \param[in] spo the single particle orbital set the copy should use
///
///////////////////////////////////////////////////////////////////////////////////////////////////
DiracDeterminantBase* SlaterDetOpt::makeCopy(SPOSetPtr spo) const
DiracDeterminant* SlaterDetOpt::makeCopy(SPOSetPtr spo) const
{
SlaterDetOpt* copy = new SlaterDetOpt(*targetPtcl, spo, m_up_or_down);

View File

@ -13,7 +13,7 @@
#ifndef QMCPLUSPLUS_SLATERDETOPT_H
#define QMCPLUSPLUS_SLATERDETOPT_H
#include "QMCWaveFunctions/Fermion/DiracDeterminantBase.h"
#include "QMCWaveFunctions/Fermion/DiracDeterminant.h"
#include <QMCWaveFunctions/SPOSet.h>
namespace qmcplusplus {
@ -24,7 +24,7 @@ class TrialWaveFunction;
/// \brief A class for a Slater determinant with optimizable orbitals.
///
///////////////////////////////////////////////////////////////////////////////////////////////////
class SlaterDetOpt : public DiracDeterminantBase {
class SlaterDetOpt : public DiracDeterminant {
// private data members
private:
@ -187,7 +187,7 @@ class SlaterDetOpt : public DiracDeterminantBase {
WaveFunctionComponentPtr makeClone(ParticleSet& tqp) const;
DiracDeterminantBase* makeCopy(SPOSet* spo) const;
DiracDeterminant* makeCopy(SPOSet* spo) const;
void add_derivatives(const int nl,
const int np,

View File

@ -108,7 +108,7 @@ bool PWOrbitalBuilder::putSlaterDet(xmlNodePtr cur)
//catch parameters
myParam->put(cur);
typedef SlaterDet SlaterDeterminant_t;
typedef DiracDeterminantBase Det_t;
typedef DiracDeterminant Det_t;
SlaterDeterminant_t* sdet(new SlaterDeterminant_t(targetPtcl));
int spin_group=0;
cur=cur->children;

View File

@ -41,7 +41,7 @@ namespace qmcplusplus
/** base class for Single-particle orbital sets
*
* SPOSet stands for S(ingle)P(article)O(rbital)SetBase which contains
* SPOSet stands for S(ingle)P(article)O(rbital)Set which contains
* a number of single-particle orbitals with capabilities of evaluating \f$ \psi_j({\bf r}_i)\f$
*/
class SPOSet: public QMCTraits

View File

@ -18,7 +18,7 @@
#include "QMCWaveFunctions/WaveFunctionComponent.h"
#include "Numerics/OhmmsBlas.h"
#include "QMCWaveFunctions/SPOSet.h"
#include "QMCWaveFunctions/Fermion/DiracDeterminantBase.h"
#include "QMCWaveFunctions/Fermion/DiracDeterminant.h"
#include "simd/simd.hpp"
@ -192,11 +192,11 @@ FakeSPO::evaluate_notranspose(const ParticleSet& P, int first, int last
}
}
TEST_CASE("DiracDeterminantBase_first", "[wavefunction][fermion]")
TEST_CASE("DiracDeterminant_first", "[wavefunction][fermion]")
{
FakeSPO *spo = new FakeSPO();
spo->setOrbitalSetSize(3);
DiracDeterminantBase ddb(spo);
DiracDeterminant ddb(spo);
int norb = 3;
ddb.set(0,norb);
@ -227,7 +227,7 @@ TEST_CASE("DiracDeterminantBase_first", "[wavefunction][fermion]")
check_matrix(ddb.psiM, b);
DiracDeterminantBase::GradType grad;
DiracDeterminant::GradType grad;
ValueType det_ratio = ddb.ratioGrad(elec, 0, grad);
ValueType det_ratio1 = 0.178276269185;
REQUIRE(det_ratio1 == ValueApprox(det_ratio));
@ -251,11 +251,11 @@ TEST_CASE("DiracDeterminantBase_first", "[wavefunction][fermion]")
//#define DUMP_INFO
TEST_CASE("DiracDeterminantBase_second", "[wavefunction][fermion]")
TEST_CASE("DiracDeterminant_second", "[wavefunction][fermion]")
{
FakeSPO *spo = new FakeSPO();
spo->setOrbitalSetSize(4);
DiracDeterminantBase ddb(spo);
DiracDeterminant ddb(spo);
int norb = 4;
ddb.set(0,norb);
@ -308,7 +308,7 @@ TEST_CASE("DiracDeterminantBase_second", "[wavefunction][fermion]")
}
DiracDeterminantBase::GradType grad;
DiracDeterminant::GradType grad;
ValueType det_ratio = ddb.ratioGrad(elec, 0, grad);
dm.invert(a_update1, true);

View File

@ -38,7 +38,7 @@ FUNCTION(ADD_C_GRAPHITE_TEST TEST_NAME TEST_DIR INPUT_FILE H5_FILE)
SET_TESTS_PROPERTIES(${TEST_NAME} PROPERTIES LABELS "performance")
SET_TESTS_PROPERTIES(${TEST_NAME} PROPERTIES WORKING_DIRECTORY "${WDIR}")
SET_TESTS_PROPERTIES(${TEST_NAME} PROPERTIES ENVIRONMENT OMP_NUM_THREADS=${THREADS})
SET_TESTS_PROPERTIES(${TEST_NAME} PROPERTIES PROCESSORS ${TOT_PROCS})
SET_TESTS_PROPERTIES(${TEST_NAME} PROPERTIES PROCESSORS ${TOT_PROCS} PROCESSOR_AFFINITY TRUE)
IF (ENABLE_TIMERS)
ADD_TEST(NAME "${TEST_NAME}-time" COMMAND python ../process_perf.py ${INPUT_FILE})

View File

@ -42,7 +42,7 @@ FUNCTION(ADD_NIO_TEST TEST_NAME TEST_DIR TEST_SOURCE_DIR INPUT_FILE H5_FILE ADJU
SET_TESTS_PROPERTIES(${TEST_NAME} PROPERTIES LABELS "performance")
SET_TESTS_PROPERTIES(${TEST_NAME} PROPERTIES WORKING_DIRECTORY "${WDIR}")
SET_TESTS_PROPERTIES(${TEST_NAME} PROPERTIES ENVIRONMENT OMP_NUM_THREADS=${THREADS})
SET_TESTS_PROPERTIES(${TEST_NAME} PROPERTIES PROCESSORS ${TOT_PROCS})
SET_TESTS_PROPERTIES(${TEST_NAME} PROPERTIES PROCESSORS ${TOT_PROCS} PROCESSOR_AFFINITY TRUE)
IF (ENABLE_TIMERS)
ADD_TEST(NAME "${TEST_NAME}-time" COMMAND python ../process_perf.py ${INPUT_FILE})

View File

@ -109,5 +109,14 @@ cp $BUILD_DIR/$BUILD_TAG.o* ../
cp $BUILD_DIR/$BUILD_TAG.o* ../
# explicitly check for correct test output from all builds
# check for correct test output from all builds
if [ $(grep '100% tests passed, 0 tests failed out of [0-9]*' ../$BUILD_TAG.o* | wc -l) -ne 4 ]
then
echo; echo
echo One or more build variants failed. Check the build log for details.
echo; echo
fi
# set the return code for the script
[ $(grep '100% tests passed, 0 tests failed out of [0-9]*' ../$BUILD_TAG.o* | wc -l) -eq 4 ]

View File

@ -116,5 +116,13 @@ cp $BUILD_DIR/$BUILD_TAG.o* ../
cp $BUILD_DIR/$BUILD_TAG.o* ../
# explicitly check for correct test output from all builds
# check for correct test output from all builds
if [ $(grep '100% tests passed, 0 tests failed out of [0-9]*' ../$BUILD_TAG.o* | wc -l) -ne 4 ]
then
echo; echo
echo One or more build variants failed. Check the build log for details.
echo; echo
fi
# set the return code for the script
[ $(grep '100% tests passed, 0 tests failed out of [0-9]*' ../$BUILD_TAG.o* | wc -l) -eq 4 ]