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 ".") 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. #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 if(CMAKE_CXX_FLAGS MATCHES ${X_OPTION} OR CMAKE_C_FLAGS MATCHES ${X_OPTION} OR
CMAKE_CXX_FLAGS MATCHES "-ax" OR CMAKE_C_FLAGS MATCHES "-ax") 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. # 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") 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() 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!") 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() endif()

View File

@ -203,15 +203,30 @@ IF ( NOT DEFINED CMAKE_TOOLCHAIN_FILE )
SET( CTEST_OPTIONS ) SET( CTEST_OPTIONS )
SET( CTEST_OPTIONS "-DCMAKE_C_COMPILER=${CC};-DCMAKE_CXX_COMPILER=${CXX}" ) 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};-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() ELSE()
SET( CTEST_OPTIONS "${CTEST_OPTIONS};-DCMAKE_TOOLCHAIN_FILE='${CMAKE_TOOLCHAIN_FILE}'" ) SET( CTEST_OPTIONS "${CTEST_OPTIONS};-DCMAKE_TOOLCHAIN_FILE='${CMAKE_TOOLCHAIN_FILE}'" )
ENDIF() 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 ) IF ( QMC_COMPLEX )
SET( CTEST_OPTIONS "${CTEST_OPTIONS};-DQMC_COMPLEX='${QMC_COMPLEX}'" ) SET( CTEST_OPTIONS "${CTEST_OPTIONS};-DQMC_COMPLEX='${QMC_COMPLEX}'" )
ENDIF() ENDIF()

View File

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

View File

@ -8,7 +8,7 @@ FUNCTION( ADD_QE_TEST TESTNAME PROCS TEST_BINARY NPOOL WORKDIR TEST_INPUT)
ELSE() ELSE()
ADD_TEST( NAME ${TESTNAME} COMMAND ${TEST_BINARY} -npool 1 ${TEST_INPUT} ) ADD_TEST( NAME ${TESTNAME} COMMAND ${TEST_BINARY} -npool 1 ${TEST_INPUT} )
ENDIF() 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_PROPERTY( TEST ${TESTNAME} APPEND PROPERTY LABELS "Quantum ESPRESSO" )
SET(TEST_LABELS "") SET(TEST_LABELS "")

View File

@ -812,7 +812,7 @@ bool WaveFunctionTester::checkGradientAtConfiguration(MCWalkerConfiguration::Wal
{ {
ParticleSet::ParticleGradient_t G(nat), tmpG(nat), G1(nat); ParticleSet::ParticleGradient_t G(nat), tmpG(nat), G1(nat);
ParticleSet::ParticleLaplacian_t L(nat), tmpL(nat), L1(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 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; 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. // 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) ENDIF(OHMMS_DIM MATCHES 3)
SET(FERMION_SRCS ${FERMION_SRCS} SET(FERMION_SRCS ${FERMION_SRCS}
Fermion/DiracDeterminantBase.cpp Fermion/DiracDeterminant.cpp
Fermion/DiracDeterminantOpt.cpp Fermion/DiracDeterminantOpt.cpp
Fermion/SlaterDet.cpp Fermion/SlaterDet.cpp
Fermion/SlaterDetBuilder.cpp Fermion/SlaterDetBuilder.cpp
Fermion/MultiSlaterDeterminant.cpp Fermion/MultiSlaterDeterminant.cpp
Fermion/MultiSlaterDeterminantFast.cpp Fermion/MultiSlaterDeterminantFast.cpp
Fermion/MultiDiracDeterminantBase.cpp Fermion/MultiDiracDeterminant.cpp
Fermion/MultiDiracDeterminantBase.2.cpp Fermion/MultiDiracDeterminant.2.cpp
Fermion/BackflowBuilder.cpp Fermion/BackflowBuilder.cpp
Fermion/DiracDeterminantWithBackflow.cpp Fermion/DiracDeterminantWithBackflow.cpp
Fermion/SlaterDetWithBackflow.cpp Fermion/SlaterDetWithBackflow.cpp

View File

@ -64,7 +64,7 @@ bool ElectronGasComplexOrbitalBuilder::put(xmlNodePtr cur)
aAttrib.put(cur); aAttrib.put(cur);
//typedef DiracDeterminant<EGOSet> Det_t; //typedef DiracDeterminant<EGOSet> Det_t;
//typedef SlaterDeterminant<EGOSet> SlaterDeterminant_t; //typedef SlaterDeterminant<EGOSet> SlaterDeterminant_t;
typedef DiracDeterminantBase Det_t; typedef DiracDeterminant Det_t;
typedef SlaterDet SlaterDeterminant_t; typedef SlaterDet SlaterDeterminant_t;
int nat=targetPtcl.getTotalNum(); int nat=targetPtcl.getTotalNum();
int nup=nat/2; 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/DeterminantOperators.h"
#include "Numerics/OhmmsBlas.h" #include "Numerics/OhmmsBlas.h"
#include "Numerics/MatrixOperators.h" #include "Numerics/MatrixOperators.h"
@ -30,27 +30,27 @@ namespace qmcplusplus
*@param spos the single-particle orbital set *@param spos the single-particle orbital set
*@param first index of the first particle *@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) NP(0), Phi(spos), FirstIndex(first)
,UpdateTimer("DiracDeterminantBase::update",timer_level_fine) ,UpdateTimer("DiracDeterminant::update",timer_level_fine)
,RatioTimer("DiracDeterminantBase::ratio",timer_level_fine) ,RatioTimer("DiracDeterminant::ratio",timer_level_fine)
,InverseTimer("DiracDeterminantBase::inverse",timer_level_fine) ,InverseTimer("DiracDeterminant::inverse",timer_level_fine)
,BufferTimer("DiracDeterminantBase::buffer",timer_level_fine) ,BufferTimer("DiracDeterminant::buffer",timer_level_fine)
,SPOVTimer("DiracDeterminantBase::spoval",timer_level_fine) ,SPOVTimer("DiracDeterminant::spoval",timer_level_fine)
,SPOVGLTimer("DiracDeterminantBase::spovgl",timer_level_fine) ,SPOVGLTimer("DiracDeterminant::spovgl",timer_level_fine)
{ {
Optimizable=false; Optimizable=false;
if(Phi->Optimizable) if(Phi->Optimizable)
Optimizable=true; Optimizable=true;
ClassName="DiracDeterminantBase"; ClassName="DiracDeterminant";
registerTimers(); registerTimers();
} }
///default destructor ///default destructor
DiracDeterminantBase::~DiracDeterminantBase() {} DiracDeterminant::~DiracDeterminant() {}
#if 0 #if 0
DiracDeterminantBase& DiracDeterminantBase::operator=(const DiracDeterminantBase& s) DiracDeterminant& DiracDeterminant::operator=(const DiracDeterminant& s)
{ {
Bytes_in_WFBuffer=s.Bytes_in_WFBuffer; Bytes_in_WFBuffer=s.Bytes_in_WFBuffer;
NP=0; NP=0;
@ -63,13 +63,13 @@ DiracDeterminantBase& DiracDeterminantBase::operator=(const DiracDeterminantBase
*@param first index of first particle *@param first index of first particle
*@param nel number of particles in the determinant *@param nel number of particles in the determinant
*/ */
void DiracDeterminantBase::set(int first, int nel) void DiracDeterminant::set(int first, int nel)
{ {
FirstIndex = first; FirstIndex = first;
resize(nel,nel); 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(); InverseTimer.start();
#ifdef MIXED_PRECISION #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 ///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; int norb=morb;
if(norb <= 0) if(norb <= 0)
@ -131,18 +131,18 @@ void DiracDeterminantBase::resize(int nel, int morb)
*/ */
} }
DiracDeterminantBase::GradType DiracDeterminant::GradType
DiracDeterminantBase::evalGrad(ParticleSet& P, int iat) DiracDeterminant::evalGrad(ParticleSet& P, int iat)
{ {
WorkingIndex = iat-FirstIndex; WorkingIndex = iat-FirstIndex;
RatioTimer.start(); RatioTimer.start();
DiracDeterminantBase::GradType g = simd::dot(psiM[WorkingIndex],dpsiM[WorkingIndex],NumOrbitals); DiracDeterminant::GradType g = simd::dot(psiM[WorkingIndex],dpsiM[WorkingIndex],NumOrbitals);
RatioTimer.stop(); RatioTimer.stop();
return g; return g;
} }
DiracDeterminantBase::ValueType DiracDeterminant::ValueType
DiracDeterminantBase::ratioGrad(ParticleSet& P, int iat, GradType& grad_iat) DiracDeterminant::ratioGrad(ParticleSet& P, int iat, GradType& grad_iat)
{ {
SPOVGLTimer.start(); SPOVGLTimer.start();
Phi->evaluate(P, iat, psiV, dpsiV, d2psiV); 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 /** move was accepted, update the real container
*/ */
void DiracDeterminantBase::acceptMove(ParticleSet& P, int iat) void DiracDeterminant::acceptMove(ParticleSet& P, int iat)
{ {
PhaseValue += evaluatePhase(curRatio); PhaseValue += evaluatePhase(curRatio);
LogValue +=std::log(std::abs(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 /** 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; curRatio=1.0;
} }
void DiracDeterminantBase::updateAfterSweep(ParticleSet& P, void DiracDeterminant::updateAfterSweep(ParticleSet& P,
ParticleSet::ParticleGradient_t& G, ParticleSet::ParticleGradient_t& G,
ParticleSet::ParticleLaplacian_t& L) ParticleSet::ParticleLaplacian_t& L)
{ {
@ -212,7 +212,7 @@ void DiracDeterminantBase::updateAfterSweep(ParticleSet& P,
} }
void void
DiracDeterminantBase::registerData(ParticleSet& P, WFBufferType& buf) DiracDeterminant::registerData(ParticleSet& P, WFBufferType& buf)
{ {
// Ye: no idea about NP. // Ye: no idea about NP.
if(NP == 0) //first time, allocate once if(NP == 0) //first time, allocate once
@ -241,7 +241,7 @@ DiracDeterminantBase::registerData(ParticleSet& P, WFBufferType& buf)
buf.add(PhaseValue); buf.add(PhaseValue);
} }
DiracDeterminantBase::RealType DiracDeterminantBase::updateBuffer(ParticleSet& P, DiracDeterminant::RealType DiracDeterminant::updateBuffer(ParticleSet& P,
WFBufferType& buf, bool fromscratch) WFBufferType& buf, bool fromscratch)
{ {
if(fromscratch) if(fromscratch)
@ -260,7 +260,7 @@ DiracDeterminantBase::RealType DiracDeterminantBase::updateBuffer(ParticleSet& P
return LogValue; return LogValue;
} }
void DiracDeterminantBase::copyFromBuffer(ParticleSet& P, WFBufferType& buf) void DiracDeterminant::copyFromBuffer(ParticleSet& P, WFBufferType& buf)
{ {
BufferTimer.start(); BufferTimer.start();
psiM.attachReference(buf.lendReference<ValueType>(psiM.size())); psiM.attachReference(buf.lendReference<ValueType>(psiM.size()));
@ -275,7 +275,7 @@ void DiracDeterminantBase::copyFromBuffer(ParticleSet& P, WFBufferType& buf)
* @param P current configuration * @param P current configuration
* @param iat the particle thas is being moved * @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; UpdateMode=ORB_PBYP_RATIO;
WorkingIndex = iat-FirstIndex; WorkingIndex = iat-FirstIndex;
@ -289,7 +289,7 @@ DiracDeterminantBase::ValueType DiracDeterminantBase::ratio(ParticleSet& P, int
return curRatio; 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 int nVP = VP.getTotalNum();
const size_t memory_needed = nVP*NumOrbitals+Phi->estimateMemory(nVP); 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(); SPOVTimer.start();
Phi->evaluate(P, -1, psiV); Phi->evaluate(P, -1, psiV);
@ -332,16 +332,16 @@ void DiracDeterminantBase::evaluateRatiosAlltoOne(ParticleSet& P, std::vector<Va
MatrixOperators::product(psiM,psiV.data(),&ratios[FirstIndex]); MatrixOperators::product(psiM,psiV.data(),&ratios[FirstIndex]);
} }
DiracDeterminantBase::GradType DiracDeterminant::GradType
DiracDeterminantBase::evalGradSource(ParticleSet& P, ParticleSet& source, DiracDeterminant::evalGradSource(ParticleSet& P, ParticleSet& source,
int iat) int iat)
{ {
Phi->evaluateGradSource (P, FirstIndex, LastIndex, source, iat, grad_source_psiM); Phi->evaluateGradSource (P, FirstIndex, LastIndex, source, iat, grad_source_psiM);
return simd::dot(psiM.data(),grad_source_psiM.data(),psiM.size()); return simd::dot(psiM.data(),grad_source_psiM.data(),psiM.size());
} }
DiracDeterminantBase::GradType DiracDeterminant::GradType
DiracDeterminantBase::evalGradSourcep DiracDeterminant::evalGradSourcep
(ParticleSet& P, ParticleSet& source,int iat, (ParticleSet& P, ParticleSet& source,int iat,
TinyVector<ParticleSet::ParticleGradient_t, OHMMS_DIM> &grad_grad, TinyVector<ParticleSet::ParticleGradient_t, OHMMS_DIM> &grad_grad,
TinyVector<ParticleSet::ParticleLaplacian_t,OHMMS_DIM> &lapl_grad) TinyVector<ParticleSet::ParticleLaplacian_t,OHMMS_DIM> &lapl_grad)
@ -435,7 +435,7 @@ DiracDeterminantBase::evalGradSourcep
return Psi_alpha_over_psi; 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. //IM A HACK. Assumes evaluateLog has already been executed.
Phi->evaluate_notranspose(P, FirstIndex, LastIndex, psiM_temp, dpsiM, grad_grad_source_psiM); 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 DiracDeterminant::GradType
DiracDeterminantBase::evalGradSource DiracDeterminant::evalGradSource
(ParticleSet& P, ParticleSet& source,int iat, (ParticleSet& P, ParticleSet& source,int iat,
TinyVector<ParticleSet::ParticleGradient_t, OHMMS_DIM> &grad_grad, TinyVector<ParticleSet::ParticleGradient_t, OHMMS_DIM> &grad_grad,
TinyVector<ParticleSet::ParticleLaplacian_t,OHMMS_DIM> &lapl_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) *contribution of the determinant to G(radient) and L(aplacian)
*for local energy calculations. *for local energy calculations.
*/ */
DiracDeterminantBase::RealType DiracDeterminant::RealType
DiracDeterminantBase::evaluateLog(ParticleSet& P, DiracDeterminant::evaluateLog(ParticleSet& P,
ParticleSet::ParticleGradient_t& G, ParticleSet::ParticleGradient_t& G,
ParticleSet::ParticleLaplacian_t& L) ParticleSet::ParticleLaplacian_t& L)
{ {
@ -594,7 +594,7 @@ DiracDeterminantBase::evaluateLog(ParticleSet& P,
} }
void void
DiracDeterminantBase::recompute(ParticleSet& P) DiracDeterminant::recompute(ParticleSet& P)
{ {
SPOVGLTimer.start(); SPOVGLTimer.start();
Phi->evaluate_notranspose(P, FirstIndex, LastIndex, psiM_temp, dpsiM, d2psiM); Phi->evaluate_notranspose(P, FirstIndex, LastIndex, psiM_temp, dpsiM, d2psiM);
@ -613,27 +613,27 @@ DiracDeterminantBase::recompute(ParticleSet& P)
} }
void void
DiracDeterminantBase::evaluateDerivatives(ParticleSet& P, DiracDeterminant::evaluateDerivatives(ParticleSet& P,
const opt_variables_type& active, const opt_variables_type& active,
std::vector<RealType>& dlogpsi, std::vector<RealType>& dlogpsi,
std::vector<RealType>& dhpsioverpsi) 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; 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); dclone->set(FirstIndex,LastIndex-FirstIndex);
return dclone; return dclone;
} }
DiracDeterminantBase::DiracDeterminantBase(const DiracDeterminantBase& s) DiracDeterminant::DiracDeterminant(const DiracDeterminant& s)
: WaveFunctionComponent(s), NP(0), Phi(s.Phi), FirstIndex(s.FirstIndex) : WaveFunctionComponent(s), NP(0), Phi(s.Phi), FirstIndex(s.FirstIndex)
,UpdateTimer(s.UpdateTimer) ,UpdateTimer(s.UpdateTimer)
,RatioTimer(s.RatioTimer) ,RatioTimer(s.RatioTimer)
@ -646,12 +646,12 @@ DiracDeterminantBase::DiracDeterminantBase(const DiracDeterminantBase& s)
this->resize(s.NumPtcls,s.NumOrbitals); this->resize(s.NumPtcls,s.NumOrbitals);
} }
//SPOSetPtr DiracDeterminantBase::clonePhi() const //SPOSetPtr DiracDeterminant::clonePhi() const
//{ //{
// return Phi->makeClone(); // return Phi->makeClone();
//} //}
void DiracDeterminantBase::registerTimers() void DiracDeterminant::registerTimers()
{ {
UpdateTimer.reset(); UpdateTimer.reset();
RatioTimer.reset(); RatioTimer.reset();

View File

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

View File

@ -15,7 +15,7 @@
/**@file DiracDeterminantCUDA.h /**@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" #include "DiracDeterminantCUDA.h"
@ -28,36 +28,36 @@
namespace qmcplusplus namespace qmcplusplus
{ {
DiracDeterminantCUDA::DiracDeterminantCUDA(SPOSetPtr const &spos, int first) : DiracDeterminantCUDA::DiracDeterminantCUDA(SPOSetPtr const &spos, int first) :
DiracDeterminantBase(spos, first), DiracDeterminant(spos, first),
UpdateJobList_d("DiracDeterminantBase::UpdateJobList_d"), UpdateJobList_d("DiracDeterminant::UpdateJobList_d"),
srcList_d("DiracDeterminantBase::srcList_d"), srcList_d("DiracDeterminant::srcList_d"),
destList_d("DiracDeterminantBase::destList_d"), destList_d("DiracDeterminant::destList_d"),
AList_d("DiracDeterminantBase::AList_d"), AList_d("DiracDeterminant::AList_d"),
AinvList_d("DiracDeterminantBase::AinvList_d"), AinvList_d("DiracDeterminant::AinvList_d"),
newRowList_d("DiracDeterminantBase::newRowList_d"), newRowList_d("DiracDeterminant::newRowList_d"),
AinvDeltaList_d("DiracDeterminantBase::AinvDeltaList_d"), AinvDeltaList_d("DiracDeterminant::AinvDeltaList_d"),
AinvColkList_d("DiracDeterminantBase::AinvColkList_d"), AinvColkList_d("DiracDeterminant::AinvColkList_d"),
gradLaplList_d("DiracDeterminantBase::gradLaplList_d"), gradLaplList_d("DiracDeterminant::gradLaplList_d"),
newGradLaplList_d("DiracDeterminantBase::newGradLaplList_d"), newGradLaplList_d("DiracDeterminant::newGradLaplList_d"),
AWorkList_d("DiracDeterminantBase::AWorkList_d"), AWorkList_d("DiracDeterminant::AWorkList_d"),
AinvWorkList_d("DiracDeterminantBase::AinvWorkList_d"), AinvWorkList_d("DiracDeterminant::AinvWorkList_d"),
PivotArray_d("DiracDeterminantBase::PivotArray_d"), PivotArray_d("DiracDeterminant::PivotArray_d"),
infoArray_d("DiracDeterminantBase::infoArray_d"), infoArray_d("DiracDeterminant::infoArray_d"),
GLList_d("DiracDeterminantBase::GLList_d"), GLList_d("DiracDeterminant::GLList_d"),
ratio_d("DiracDeterminantBase::ratio_d"), ratio_d("DiracDeterminant::ratio_d"),
gradLapl_d("DiracDeterminantBase::gradLapl_d"), gradLapl_d("DiracDeterminant::gradLapl_d"),
iatList_d("DiracDeterminantBase::iatList_d"), iatList_d("DiracDeterminant::iatList_d"),
NLrowBuffer_d("DiracDeterminantBase::NLrowBuffer_d"), NLrowBuffer_d("DiracDeterminant::NLrowBuffer_d"),
SplineRowList_d("DiracDeterminantBase::SplineRowList_d"), SplineRowList_d("DiracDeterminant::SplineRowList_d"),
RatioRowList_d("DiracDeterminantBase::RatioRowList_d"), RatioRowList_d("DiracDeterminant::RatioRowList_d"),
NLposBuffer_d("DiracDeterminantBase::NLposBuffer_d"), NLposBuffer_d("DiracDeterminant::NLposBuffer_d"),
NLAinvList_d("DiracDeterminantBase::NLAinvList_d"), NLAinvList_d("DiracDeterminant::NLAinvList_d"),
NLnumRatioList_d("DiracDeterminantBase::NLnumRatioList_d"), NLnumRatioList_d("DiracDeterminant::NLnumRatioList_d"),
NLelecList_d("DiracDeterminantBase::NLelecList_d"), NLelecList_d("DiracDeterminant::NLelecList_d"),
NLratioList_d("DiracDeterminantBase::NLratioList_d") NLratioList_d("DiracDeterminant::NLratioList_d")
{ {
for(int i = 0; i < 2; ++i) 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"; ClassName="DiracDeterminantCUDA";
} }

View File

@ -16,12 +16,12 @@
/**@file DiracDeterminantCUDA.h /**@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 #ifndef QMCPLUSPLUS_DIRAC_DETERMINANT_CUDA_H
#define QMCPLUSPLUS_DIRAC_DETERMINANT_CUDA_H #define QMCPLUSPLUS_DIRAC_DETERMINANT_CUDA_H
#include <typeinfo> #include <typeinfo>
#include "QMCWaveFunctions/Fermion/DiracDeterminantBase.h" #include "QMCWaveFunctions/Fermion/DiracDeterminant.h"
#include "QMCWaveFunctions/SPOSet.h" #include "QMCWaveFunctions/SPOSet.h"
#include "QMCWaveFunctions/Fermion/determinant_update.h" #include "QMCWaveFunctions/Fermion/determinant_update.h"
#include "Numerics/CUDA/cuda_inverse.h" #include "Numerics/CUDA/cuda_inverse.h"
@ -29,7 +29,7 @@
namespace qmcplusplus namespace qmcplusplus
{ {
class DiracDeterminantCUDA: public DiracDeterminantBase class DiracDeterminantCUDA: public DiracDeterminant
{ {
public: public:
typedef SPOSet::IndexVector_t IndexVector_t; typedef SPOSet::IndexVector_t IndexVector_t;
@ -143,7 +143,7 @@ protected:
public: public:
ValueType ratio(ParticleSet& P, int iat) 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); void update (std::vector<Walker_t*> &walkers, int iat);

View File

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

View File

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

View File

@ -29,7 +29,7 @@ namespace qmcplusplus
*@param spos the single-particle orbital set *@param spos the single-particle orbital set
*@param first index of the first particle *@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; Optimizable=true;
ClassName="DiracDeterminantWithBackflow"; ClassName="DiracDeterminantWithBackflow";
@ -1041,7 +1041,7 @@ DiracDeterminantWithBackflow* DiracDeterminantWithBackflow::makeCopy(SPOSetPtr s
} }
DiracDeterminantWithBackflow::DiracDeterminantWithBackflow(const DiracDeterminantWithBackflow& s): DiracDeterminantWithBackflow::DiracDeterminantWithBackflow(const DiracDeterminantWithBackflow& s):
DiracDeterminantBase(s),BFTrans(s.BFTrans) DiracDeterminant(s),BFTrans(s.BFTrans)
{ {
registerTimers(); registerTimers();

View File

@ -13,7 +13,7 @@
/**@file DiracDeterminantWithBackflowBase.h /**@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 #ifndef QMCPLUSPLUS_DIRACDETERMINANTWITHBACKFLOW_H
#define QMCPLUSPLUS_DIRACDETERMINANTWITHBACKFLOW_H #define QMCPLUSPLUS_DIRACDETERMINANTWITHBACKFLOW_H
@ -21,7 +21,7 @@
#include "QMCWaveFunctions/SPOSet.h" #include "QMCWaveFunctions/SPOSet.h"
#include "Utilities/NewTimer.h" #include "Utilities/NewTimer.h"
#include "QMCWaveFunctions/Fermion/BackflowTransformation.h" #include "QMCWaveFunctions/Fermion/BackflowTransformation.h"
#include "QMCWaveFunctions/Fermion/DiracDeterminantBase.h" #include "QMCWaveFunctions/Fermion/DiracDeterminant.h"
#include "OhmmsPETE/OhmmsArray.h" #include "OhmmsPETE/OhmmsArray.h"
namespace qmcplusplus namespace qmcplusplus
@ -29,7 +29,7 @@ namespace qmcplusplus
/** class to handle determinants with backflow /** class to handle determinants with backflow
*/ */
class DiracDeterminantWithBackflow: public DiracDeterminantBase class DiracDeterminantWithBackflow: public DiracDeterminant
{ {
public: 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 * @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" #include "Numerics/MatrixOperators.h"
namespace qmcplusplus namespace qmcplusplus
{ {
/** shared function used by BuildDotProductsAndCalculateRatios */ /** 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, 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) 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(); 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, 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) 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 #endif
} }
void MultiDiracDeterminantBase::BuildDotProductsAndCalculateRatios(int ref, int iat, void MultiDiracDeterminant::BuildDotProductsAndCalculateRatios(int ref, int iat,
GradMatrix_t& ratios, ValueMatrix_t& psiinv, ValueMatrix_t& psi, GradMatrix_t& ratios, ValueMatrix_t& psiinv, ValueMatrix_t& psi,
ValueMatrix_t& dotProducts, std::vector<int>& data, ValueMatrix_t& dotProducts, std::vector<int>& data,
std::vector<std::pair<int,int> >& pairs, std::vector<RealType>& sign, int dx) std::vector<std::pair<int,int> >& pairs, std::vector<RealType>& sign, int dx)
@ -129,7 +129,7 @@ namespace qmcplusplus
#endif #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, ValueMatrix_t& ratios, ValueMatrix_t& psiinv, ValueMatrix_t& psi, ValueMatrix_t& dotProducts,
std::vector<int>& data, std::vector<int>& data,
std::vector<std::pair<int,int> >& pairs, std::vector<std::pair<int,int> >& pairs,
@ -167,7 +167,7 @@ namespace qmcplusplus
#endif #endif
} }
void MultiDiracDeterminantBase::evaluateDetsForPtclMove(ParticleSet& P, int iat) void MultiDiracDeterminant::evaluateDetsForPtclMove(ParticleSet& P, int iat)
{ {
UpdateMode=ORB_PBYP_RATIO; UpdateMode=ORB_PBYP_RATIO;
RatioTimer.start(); RatioTimer.start();
@ -216,7 +216,7 @@ namespace qmcplusplus
RatioTimer.stop(); RatioTimer.stop();
} }
void MultiDiracDeterminantBase::evaluateDetsAndGradsForPtclMove(ParticleSet& P, int iat) void MultiDiracDeterminant::evaluateDetsAndGradsForPtclMove(ParticleSet& P, int iat)
{ {
UpdateMode=ORB_PBYP_PARTIAL; UpdateMode=ORB_PBYP_PARTIAL;
evalOrb1Timer.start(); 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; 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; UpdateMode=ORB_PBYP_ALL;
Phi->evaluate(P,iat,psiV,dpsiV,d2psiV); Phi->evaluate(P,iat,psiV,dpsiV,d2psiV);

View File

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

View File

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

View File

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

View File

@ -77,7 +77,7 @@ WaveFunctionComponentPtr MultiSlaterDeterminant::makeClone(ParticleSet& tqp) con
// spo->occup(i,nq++) = k; // 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->set(clone->FirstIndex_up,clone->nels_up);
adet->resetTargetParticleSet(tqp); adet->resetTargetParticleSet(tqp);
clone->dets_up.push_back(adet); clone->dets_up.push_back(adet);
@ -93,7 +93,7 @@ WaveFunctionComponentPtr MultiSlaterDeterminant::makeClone(ParticleSet& tqp) con
// spo->occup(i,nq++) = k; // 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->set(clone->FirstIndex_dn,clone->nels_dn);
adet->resetTargetParticleSet(tqp); adet->resetTargetParticleSet(tqp);
clone->dets_dn.push_back(adet); clone->dets_dn.push_back(adet);

View File

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

View File

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

View File

@ -17,7 +17,7 @@
#define QMCPLUSPLUS_MULTISLATERDETERMINANTFAST_ORBITAL_H #define QMCPLUSPLUS_MULTISLATERDETERMINANTFAST_ORBITAL_H
#include <Configuration.h> #include <Configuration.h>
#include <QMCWaveFunctions/WaveFunctionComponent.h> #include <QMCWaveFunctions/WaveFunctionComponent.h>
#include <QMCWaveFunctions/Fermion/MultiDiracDeterminantBase.h> #include <QMCWaveFunctions/Fermion/MultiDiracDeterminant.h>
#include <QMCWaveFunctions/Fermion/MultiSlaterDeterminant.h> #include <QMCWaveFunctions/Fermion/MultiSlaterDeterminant.h>
#include <QMCWaveFunctions/Fermion/SPOSetProxyForMSD.h> #include <QMCWaveFunctions/Fermion/SPOSetProxyForMSD.h>
#include "Utilities/NewTimer.h" #include "Utilities/NewTimer.h"
@ -59,7 +59,7 @@ public:
NewTimer RatioTimer,RatioGradTimer,RatioAllTimer,UpdateTimer,EvaluateTimer; NewTimer RatioTimer,RatioGradTimer,RatioAllTimer,UpdateTimer,EvaluateTimer;
NewTimer Ratio1Timer,Ratio1GradTimer,Ratio1AllTimer, AccRejTimer; NewTimer Ratio1Timer,Ratio1GradTimer,Ratio1AllTimer, AccRejTimer;
typedef MultiDiracDeterminantBase* DiracDeterminantPtr; typedef MultiDiracDeterminant* DiracDeterminantPtr;
typedef SPOSet* SPOSetPtr; typedef SPOSet* SPOSetPtr;
typedef SPOSetProxyForMSD* SPOSetProxyPtr; typedef SPOSetProxyForMSD* SPOSetProxyPtr;
typedef OrbitalSetTraits<ValueType>::IndexVector_t IndexVector_t; typedef OrbitalSetTraits<ValueType>::IndexVector_t IndexVector_t;
@ -75,7 +75,7 @@ public:
///constructor ///constructor
MultiSlaterDeterminantFast(ParticleSet& targetPtcl,MultiDiracDeterminantBase* up, MultiDiracDeterminantBase* dn); MultiSlaterDeterminantFast(ParticleSet& targetPtcl,MultiDiracDeterminant* up, MultiDiracDeterminant* dn);
///destructor ///destructor
~MultiSlaterDeterminantFast(); ~MultiSlaterDeterminantFast();
@ -153,7 +153,7 @@ public:
ValueType psiCurrent; ValueType psiCurrent;
// assume Dets[0]: up, Dets[1]:down // assume Dets[0]: up, Dets[1]:down
std::vector<MultiDiracDeterminantBase*> Dets; std::vector<MultiDiracDeterminant*> Dets;
std::map<std::string,size_t> SPOSetID; std::map<std::string,size_t> SPOSetID;
// map determinant in linear combination to unique det list // 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); ValueType dpsi2=dpsia_dn(dnC,pa);
ParticleSet::ParticleGradient_t& g1 = grads_up[upC]; ParticleSet::ParticleGradient_t& g1 = grads_up[upC];
ParticleSet::ParticleGradient_t& g2 = grads_dn[dnC]; 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++) for(int k=0; k<n; k++)
dot1 += dot((g2[k]-gmP[k]),dGa_up(upC,pa,k)) dot1 += dot((g2[k]-gmP[k]),dGa_up(upC,pa,k))
+ dot((g1[k]-gmP[k]),dGa_dn(dnC,pa,k)) + dot((g1[k]-gmP[k]),dGa_dn(dnC,pa,k))

View File

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

View File

@ -24,7 +24,7 @@ namespace qmcplusplus
/** proxy SPOSet /** proxy SPOSet
* *
* This class owns a SPOSet for all the states to be evaluated * 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 struct SPOSetProxy: public SPOSet
{ {

View File

@ -24,7 +24,7 @@ namespace qmcplusplus
/** proxy SPOSet /** proxy SPOSet
* *
* This class owns a SPOSet for all the states to be evaluated * 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 struct SPOSetProxyForMSD: public SPOSet
{ {

View File

@ -20,7 +20,7 @@
#ifdef QMC_CUDA #ifdef QMC_CUDA
#include "QMCWaveFunctions/Fermion/DiracDeterminantCUDA.h" #include "QMCWaveFunctions/Fermion/DiracDeterminantCUDA.h"
#else #else
#include "QMCWaveFunctions/Fermion/DiracDeterminantBase.h" #include "QMCWaveFunctions/Fermion/DiracDeterminant.h"
#endif #endif
#include "QMCWaveFunctions/Fermion/BackflowTransformation.h" #include "QMCWaveFunctions/Fermion/BackflowTransformation.h"
#include <map> #include <map>
@ -37,7 +37,7 @@ namespace qmcplusplus
class SlaterDet : public WaveFunctionComponent class SlaterDet : public WaveFunctionComponent
{ {
public: public:
typedef DiracDeterminantBase Determinant_t; typedef DiracDeterminant Determinant_t;
///container for the DiracDeterminants ///container for the DiracDeterminants
std::vector<Determinant_t*> Dets; std::vector<Determinant_t*> Dets;
///the last particle of each group ///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_ABORT("Backflow is not implemented with multi determinants.");
} }
app_log() <<"Using Bryan's algorithm for MultiSlaterDeterminant expansion. \n"; app_log() <<"Using Bryan's algorithm for MultiSlaterDeterminant expansion. \n";
MultiDiracDeterminantBase* up_det=0; MultiDiracDeterminant* up_det=0;
MultiDiracDeterminantBase* dn_det=0; MultiDiracDeterminant* dn_det=0;
app_log() <<"Creating base determinant (up) for MSD expansion. \n"; 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"; 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); multislaterdetfast_0 = new MultiSlaterDeterminantFast(targetPtcl,up_det,dn_det);
// up_det->usingBF = UseBackflow; // up_det->usingBF = UseBackflow;
// dn_det->usingBF = UseBackflow; // dn_det->usingBF = UseBackflow;
@ -496,7 +496,7 @@ bool SlaterDetBuilder::putDeterminant(xmlNodePtr cur, int spin_group, bool slate
return true; return true;
std::string dname; std::string dname;
getNodeName(dname,cur); getNodeName(dname,cur);
DiracDeterminantBase* adet=0; DiracDeterminant* adet=0;
{ {
#ifdef QMC_CUDA #ifdef QMC_CUDA
adet = new DiracDeterminantCUDA(psi,firstIndex); 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); adet = new DiracDeterminantOpt(targetPtcl, psi, firstIndex);
else else
{ {
app_log()<<"Using DiracDeterminantBase "<< std::endl; app_log()<<"Using DiracDeterminant "<< std::endl;
adet = new DiracDeterminantBase(psi,firstIndex); adet = new DiracDeterminant(psi,firstIndex);
} }
#endif #endif
} }
@ -693,7 +693,7 @@ bool SlaterDetBuilder::createMSDFast(MultiSlaterDeterminantFast* multiSD, xmlNod
spo->occup(i,nq++) = k; 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); adet->set(multiSD->FirstIndex_up,multiSD->nels_up);
multiSD->dets_up.push_back(adet); multiSD->dets_up.push_back(adet);
} }
@ -708,7 +708,7 @@ bool SlaterDetBuilder::createMSDFast(MultiSlaterDeterminantFast* multiSD, xmlNod
spo->occup(i,nq++) = k; 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); adet->set(multiSD->FirstIndex_dn,multiSD->nels_dn);
multiSD->dets_dn.push_back(adet); multiSD->dets_dn.push_back(adet);
} }
@ -752,14 +752,14 @@ bool SlaterDetBuilder::createMSD(MultiSlaterDeterminant* multiSD, xmlNodePtr cur
spo->occup(i,nq++) = k; spo->occup(i,nq++) = k;
} }
} }
DiracDeterminantBase* adet; DiracDeterminant* adet;
if(UseBackflow) if(UseBackflow)
{ {
adet = new DiracDeterminantWithBackflow(targetPtcl,(SPOSetPtr) spo,0,0); adet = new DiracDeterminantWithBackflow(targetPtcl,(SPOSetPtr) spo,0,0);
} }
else else
{ {
adet = new DiracDeterminantBase((SPOSetPtr) spo,0); adet = new DiracDeterminant((SPOSetPtr) spo,0);
} }
adet->set(multiSD->FirstIndex_up,multiSD->nels_up); adet->set(multiSD->FirstIndex_up,multiSD->nels_up);
multiSD->dets_up.push_back(adet); multiSD->dets_up.push_back(adet);
@ -777,14 +777,14 @@ bool SlaterDetBuilder::createMSD(MultiSlaterDeterminant* multiSD, xmlNodePtr cur
spo->occup(i,nq++) = k; spo->occup(i,nq++) = k;
} }
} }
DiracDeterminantBase* adet; DiracDeterminant* adet;
if(UseBackflow) if(UseBackflow)
{ {
adet = new DiracDeterminantWithBackflow(targetPtcl,(SPOSetPtr) spo,0,0); adet = new DiracDeterminantWithBackflow(targetPtcl,(SPOSetPtr) spo,0,0);
} }
else else
{ {
adet = new DiracDeterminantBase((SPOSetPtr) spo,0); adet = new DiracDeterminant((SPOSetPtr) spo,0);
} }
adet->set(multiSD->FirstIndex_dn,multiSD->nels_dn); adet->set(multiSD->FirstIndex_dn,multiSD->nels_dn);
multiSD->dets_dn.push_back(adet); multiSD->dets_dn.push_back(adet);

View File

@ -40,7 +40,7 @@ public:
typedef SlaterDet SlaterDeterminant_t; typedef SlaterDet SlaterDeterminant_t;
typedef MultiSlaterDeterminant MultiSlaterDeterminant_t; typedef MultiSlaterDeterminant MultiSlaterDeterminant_t;
typedef DiracDeterminantBase Det_t; typedef DiracDeterminant Det_t;
/** constructor /** constructor
* \param els reference to the electrons * \param els reference to the electrons
* \param psi reference to the wavefunction * \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) 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_up_or_down(up_or_down)
, m_nmo(spo_ptr->size()) , m_nmo(spo_ptr->size())
, m_first_var_pos(-1) , 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 /// \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); SlaterDetOpt* copy = new SlaterDetOpt(*targetPtcl, spo, m_up_or_down);

View File

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

View File

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

View File

@ -41,7 +41,7 @@ namespace qmcplusplus
/** base class for Single-particle orbital sets /** 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$ * a number of single-particle orbitals with capabilities of evaluating \f$ \psi_j({\bf r}_i)\f$
*/ */
class SPOSet: public QMCTraits class SPOSet: public QMCTraits

View File

@ -18,7 +18,7 @@
#include "QMCWaveFunctions/WaveFunctionComponent.h" #include "QMCWaveFunctions/WaveFunctionComponent.h"
#include "Numerics/OhmmsBlas.h" #include "Numerics/OhmmsBlas.h"
#include "QMCWaveFunctions/SPOSet.h" #include "QMCWaveFunctions/SPOSet.h"
#include "QMCWaveFunctions/Fermion/DiracDeterminantBase.h" #include "QMCWaveFunctions/Fermion/DiracDeterminant.h"
#include "simd/simd.hpp" #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(); FakeSPO *spo = new FakeSPO();
spo->setOrbitalSetSize(3); spo->setOrbitalSetSize(3);
DiracDeterminantBase ddb(spo); DiracDeterminant ddb(spo);
int norb = 3; int norb = 3;
ddb.set(0,norb); ddb.set(0,norb);
@ -227,7 +227,7 @@ TEST_CASE("DiracDeterminantBase_first", "[wavefunction][fermion]")
check_matrix(ddb.psiM, b); check_matrix(ddb.psiM, b);
DiracDeterminantBase::GradType grad; DiracDeterminant::GradType grad;
ValueType det_ratio = ddb.ratioGrad(elec, 0, grad); ValueType det_ratio = ddb.ratioGrad(elec, 0, grad);
ValueType det_ratio1 = 0.178276269185; ValueType det_ratio1 = 0.178276269185;
REQUIRE(det_ratio1 == ValueApprox(det_ratio)); REQUIRE(det_ratio1 == ValueApprox(det_ratio));
@ -251,11 +251,11 @@ TEST_CASE("DiracDeterminantBase_first", "[wavefunction][fermion]")
//#define DUMP_INFO //#define DUMP_INFO
TEST_CASE("DiracDeterminantBase_second", "[wavefunction][fermion]") TEST_CASE("DiracDeterminant_second", "[wavefunction][fermion]")
{ {
FakeSPO *spo = new FakeSPO(); FakeSPO *spo = new FakeSPO();
spo->setOrbitalSetSize(4); spo->setOrbitalSetSize(4);
DiracDeterminantBase ddb(spo); DiracDeterminant ddb(spo);
int norb = 4; int norb = 4;
ddb.set(0,norb); 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); ValueType det_ratio = ddb.ratioGrad(elec, 0, grad);
dm.invert(a_update1, true); 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 LABELS "performance")
SET_TESTS_PROPERTIES(${TEST_NAME} PROPERTIES WORKING_DIRECTORY "${WDIR}") 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 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) IF (ENABLE_TIMERS)
ADD_TEST(NAME "${TEST_NAME}-time" COMMAND python ../process_perf.py ${INPUT_FILE}) 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 LABELS "performance")
SET_TESTS_PROPERTIES(${TEST_NAME} PROPERTIES WORKING_DIRECTORY "${WDIR}") 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 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) IF (ENABLE_TIMERS)
ADD_TEST(NAME "${TEST_NAME}-time" COMMAND python ../process_perf.py ${INPUT_FILE}) 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* ../ 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 ] [ $(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* ../ 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 ] [ $(grep '100% tests passed, 0 tests failed out of [0-9]*' ../$BUILD_TAG.o* | wc -l) -eq 4 ]