Commit 12c08895 authored by Torin Stetina's avatar Torin Stetina
Browse files

Merge branch 'resp_fix' into 'dev'

2c TDKS

See merge request chronusq/chronusq_dev!56
parents 558407e2 414a864d
......@@ -65,6 +65,11 @@ namespace ChronusQ {
void DSYR2K(char UPLO,char TRANS,int N,int K,double alpha,double *A,
int LDA,double *B,int LDB,double beta, double *C,int LDC);
template <typename _F>
void SYR2K(char UPLO,char TRANS,int N,int K,_F alpha,_F *A,
int LDA,_F *B,int LDB,_F beta, _F *C,int LDC);
}; // namespace ChronusQ
......@@ -243,6 +243,7 @@ namespace ChronusQ {
double *dmzdX, double *dmzdY, double *dmzdZ,
double *Mnorm, double *Kx, double *Ky, double *Kz,
double *Hx, double *Hy, double *Hz,
double *DSDMnorm, double *signMD,
bool* Msmall, double *nColl, double *gammaColl );
void loadVXCder(size_t NPts, double *Den, double *sigma, double *EpsEval, double*VRhoEval,
......@@ -254,6 +255,12 @@ namespace ChronusQ {
// FXC Terms
template <typename U>
void evalTransDen(SHELL_EVAL_TYPE typ, size_t NPts,size_t NBE, size_t NB,
std::vector<std::pair<size_t,size_t>> &subMatCut, U *SCR1,
U *SCR2, U *DENMAT, U *Den, U *GDenX, U *GDenY, U *GDenZ,
U *BasisScr);
void loadFXCder(size_t NPts, double *Den, double *sigma, double *EpsEval, double *VRhoEval,
double *V2RhoEval, double *VsigmaEval, double *V2sigmaEval, double *V2RhosigmaEval,
double *EpsSCR, double *VRhoSCR, double *VsigmaSCR, double *V2RhoEvalSCR, double *V2sigmaEvalSCR,
......@@ -268,6 +275,20 @@ namespace ChronusQ {
double *V2rhoEval, double *V2sigmaEval, double *V2RhosigmaEval,
U *ZrhoVar1, U *ZgammaVar1, U *ZgammaVar2, U *ZgammaVar3, U *ZgammaVar4);
template <typename U>
void constructZVarsFXC(DENSITY_TYPE denTyp, bool isGGA, size_t NPts,
double* GDenS, double* GDenZ, double* GDenY, double* GDenX,
bool * Msmall, double *Mnorm,
double *Kx, double *Ky, double *Kz,
double *Hx, double *Hy, double *Hz,
U* TS, U* TZ, U* TY, U* TX,
U* GTS, U* GTZ, U* GTY, U* GTX,
U* gPTss, U* gPTsz, U* gPTsy, U* gPTsx, U* gPTzz,
U* gPTyy, U* gPTxx,
double *VrhoEval, double *VsigmaEval,
double *V2rhoEval, double *V2sigmaEval, double *V2RhosigmaEval,
U *ZrhoVar1, U *ZgammaVar1, U *ZgammaVar2, U *ZgammaVar3, U *ZgammaVar4);
template <typename U>
void formZ_fxc(DENSITY_TYPE denType, bool isGGA, size_t NPts, size_t NBE, size_t IOff,
double epsScreen, std::vector<double> &weights,
......@@ -275,6 +296,30 @@ namespace ChronusQ {
double* GDenS, double* GDenZ, double* GDenY, double* GDenX, U* GTS, U* GTZ, U* GTY, U* GTX,
double *BasisScr, U* ZMAT);
// GTO-based TDDFT
template <typename U>
void formZ_fxc(DENSITY_TYPE denType, bool isGGA, size_t NPts, size_t NBE, size_t IOff,
double epsScreen, std::vector<double> &weights,
U *ZrhoVar1, U *ZgammaVar1, U *ZgammaVar2, U *ZgammaVar3, U *ZgammaVar4,
bool * Msmall, double *Mnorm,
double* DSDMnorm, double* signMD,
double* GDenS, double* GDenZ, double* GDenY, double* GDenX,
double *Kx, double *Ky, double *Kz,
double *Hx, double *Hy, double *Hz,
U* GTS, U* GTZ, U* GTY, U* GTX,
U* gPTss, U* gPTsz, U* gPTsy, U* gPTsx, U* gPTzz,
U* gPTyy, U* gPTxx,
double *BasisScr, U* ZMAT);
// Calculate gPTss,sx,sy,sz
template <typename U>
void mkgPTVar(
size_t NPts,
double* GDenS, double* GDenZ, double* GDenY, double* GDenX,
U* GTS, U* GTZ, U* GTY, U* GTX,
U* gPTss, U* gPTsz, U* gPTsy, U* gPTsx, U* gPTzz,
U* gPTyy, U* gPTxx
);
template <typename U>
......
This diff is collapsed.
......@@ -142,6 +142,7 @@ namespace ChronusQ {
double *dMxdX, double *dMxdY, double *dMxdZ,
double *Mnorm, double *Kx, double *Ky, double *Kz,
double *Hx, double *Hy, double *Hz,
double *DSDMnormv, double *signMDv,
bool *Msmall, double *nColl, double *gammaColl){
#if VXC_DEBUG_LEVEL > 3
......@@ -292,7 +293,10 @@ namespace ChronusQ {
tmpSign += tmpnMy * My[iPt];
tmpSign += tmpnMz * Mz[iPt];
if ( std::signbit(tmpSign) ) signMD = -1.;
//std::cerr <<"Sig " << tmpSign << " " << std::signbit(tmpSign) << " " << signMD <<std::endl;
// Save the value of signMD if signMD is not null pointer
if ( signMDv ) signMDv[iPt] = signMD;
inner =
(dMxdX[iPt]*dMxdX[iPt] + dMxdY[iPt]*dMxdY[iPt] + dMxdZ[iPt]*dMxdZ[iPt]);
inner +=
......@@ -324,6 +328,10 @@ namespace ChronusQ {
gammaColl[3*iPt] += inner2;
gammaColl[3*iPt+2] -= inner2;
// If DSDMnormv is not nullptr, save the value
if ( DSDMnormv ) {
DSDMnormv[iPt] = DSDMnorm;
}
} // loop pts
} // 2C
......@@ -331,7 +339,6 @@ namespace ChronusQ {
}; //KohnSham<MatsT,IntsT>::mkAuxVar
/**
* \brief evaluates the V (Den, GDENX, GDENY and GDENZ)
* varibles for a given density in input in DENMAT
......@@ -1129,6 +1136,7 @@ namespace ChronusQ {
Mnorm_loc,
KScratch_loc, KScratch_loc + NPts, KScratch_loc + 2* NPts,
HScratch_loc, HScratch_loc + NPts, HScratch_loc + 2* NPts,
nullptr, nullptr,
Msmall_loc,U_n_loc,U_gamma_loc
);
......
......@@ -149,28 +149,6 @@ namespace ChronusQ {
}; // TRMM (complex,complex,complex)
/*
* performs one of the symmetric rank 2k operations
* C := alpha*A*B' + alpha*B*A' + beta*C
......@@ -185,5 +163,34 @@ namespace ChronusQ {
(&UPLO,&TRANS,&N,&K,&ALPHA,A,&LDA,B,&LDB,&BETA,C,&LDC);
}; // DSYR2K
/*
* performs one of the symmetric rank 2k operations
* C := alpha*A*B' + alpha*B*A' + beta*C
*/
template <>
void SYR2K(char UPLO,char TRANS,int N,int K,double ALPHA,double *A,
int LDA,double *B,int LDB,double BETA, double *C,int LDC){
#ifdef _CQ_MKL
dsyr2k
#else
dsyr2k_
#endif
(&UPLO,&TRANS,&N,&K,&ALPHA,A,&LDA,B,&LDB,&BETA,C,&LDC);
}; // SYR2K
template <>
void SYR2K(char UPLO,char TRANS,int N,int K,dcomplex ALPHA,dcomplex *A,
int LDA,dcomplex *B,int LDB,dcomplex BETA, dcomplex *C,int LDC){
#ifdef _CQ_MKL
zsyr2k(&UPLO,&TRANS,&N,&K,&ALPHA,A,&LDA,B,&LDB,&BETA,C,&LDC);
#else
zsyr2k_(&UPLO,&TRANS,&N,&K,reinterpret_cast<double*>(&ALPHA),
reinterpret_cast<double*>(A),&LDA,reinterpret_cast<double*>(B),&LDB,
reinterpret_cast<double*>(&BETA),reinterpret_cast<double*>(C),&LDC);
#endif
}; // SYR2K
}; // namespace ChronusQ
......@@ -565,6 +565,11 @@ namespace ChronusQ {
size_t LDAB, double *ASmall, size_t LDAS,
std::vector<std::pair<size_t,size_t>> &SubMatCut);
template
void SubMatSet(size_t M, size_t N, size_t MSub, size_t NSub, dcomplex *ABig,
size_t LDAB, dcomplex *ASmall, size_t LDAS,
std::vector<std::pair<size_t,size_t>> &SubMatCut);
template
void SubMatGet(size_t M, size_t N, size_t MSub, size_t NSub, double *ABig,
size_t LDAB, double *ASmall, size_t LDAS,
......
......@@ -90,26 +90,6 @@ namespace ChronusQ {
}
// No 2C + TDDFT
if( input.containsData("QM.REFERENCE") ) {
std::string ref = input.getData<std::string>("QM.REFERENCE");
bool isKS = not (ref.find("HF") != std::string::npos);
bool isX2C = ref.find("X2C") != std::string::npos;
bool isG = ref.find("G") != std::string::npos;
bool is2C = isX2C or isG;
if( is2C )
CErr("RESPONSE + 2C not allowed");
if( is2C and isKS )
CErr("RESPONSE + KS + 2C not allowed");
}
#if 0
// No MPI + Full Residue
if( MPISize(MPI_COMM_WORLD) > 1 ) {
......
......@@ -29,7 +29,9 @@ set(RESP_TEST_BINARY_ROOT "${TEST_BINARY_ROOT}/resp" )
# Set up compilation of RESP test exe
add_executable(resptest ../ut.cxx rres.cxx rfdr.cxx rmor.cxx
rres_lda.cxx rres_gga.cxx rres_hgga.cxx rpp.cxx upp.cxx gpp.cxx
misc.cxx)
ures_hf.cxx ures_lsda.cxx ures_gga.cxx ures_hgga.cxx
gres_hf.cxx gres_lsda.cxx gres_gga.cxx gres_hgga.cxx
x2cres_hf.cxx x2cres_lsda.cxx x2cres_gga.cxx x2cres_hgga.cxx misc.cxx)
target_include_directories(resptest PUBLIC ${RESP_TEST_SOURCE_ROOT}
${TEST_BINARY_ROOT})
......@@ -43,13 +45,21 @@ endif()
# Generate directories
file(MAKE_DIRECTORY ${RESP_TEST_BINARY_ROOT}/serial/rresp)
file(MAKE_DIRECTORY ${RESP_TEST_BINARY_ROOT}/serial/rresp_ks)
#file(MAKE_DIRECTORY ${RESP_TEST_BINARY_ROOT}/serial/uresp)
#file(MAKE_DIRECTORY ${RESP_TEST_BINARY_ROOT}/serial/gresp)
file(MAKE_DIRECTORY ${RESP_TEST_BINARY_ROOT}/serial/uresp_hf)
file(MAKE_DIRECTORY ${RESP_TEST_BINARY_ROOT}/serial/uresp_ks)
file(MAKE_DIRECTORY ${RESP_TEST_BINARY_ROOT}/serial/gresp_hf)
file(MAKE_DIRECTORY ${RESP_TEST_BINARY_ROOT}/serial/gresp_ks)
file(MAKE_DIRECTORY ${RESP_TEST_BINARY_ROOT}/serial/x2cresp_hf)
file(MAKE_DIRECTORY ${RESP_TEST_BINARY_ROOT}/serial/x2cresp_ks)
file(MAKE_DIRECTORY ${RESP_TEST_BINARY_ROOT}/parallel/rresp)
file(MAKE_DIRECTORY ${RESP_TEST_BINARY_ROOT}/parallel/rresp_ks)
#file(MAKE_DIRECTORY ${RESP_TEST_BINARY_ROOT}/parallel/uresp)
#file(MAKE_DIRECTORY ${RESP_TEST_BINARY_ROOT}/parallel/gresp)
file(MAKE_DIRECTORY ${RESP_TEST_BINARY_ROOT}/parallel/uresp_hf)
file(MAKE_DIRECTORY ${RESP_TEST_BINARY_ROOT}/parallel/uresp_ks)
file(MAKE_DIRECTORY ${RESP_TEST_BINARY_ROOT}/parallel/gresp_hf)
file(MAKE_DIRECTORY ${RESP_TEST_BINARY_ROOT}/parallel/gresp_ks)
file(MAKE_DIRECTORY ${RESP_TEST_BINARY_ROOT}/parallel/x2cresp_hf)
file(MAKE_DIRECTORY ${RESP_TEST_BINARY_ROOT}/parallel/x2cresp_ks)
file(MAKE_DIRECTORY ${RESP_TEST_BINARY_ROOT}/serial/rmor)
file(MAKE_DIRECTORY ${RESP_TEST_BINARY_ROOT}/serial/rmor_ks)
......@@ -69,18 +79,26 @@ file(MAKE_DIRECTORY ${RESP_TEST_BINARY_ROOT}/serial/misc)
include( CQTestGeneration )
add_cq_test( RHF_RESIDUE resptest "RHF_RESIDUE.*" )
add_cq_test( RKS_RESIDUE resptest "RKS_RESIDUE.*" )
add_cq_test( RHF_PP_RESIDUE resptest "RHF_PP_RESIDUE.*" )
add_cq_test( UHF_PP_RESIDUE resptest "UHF_PP_RESIDUE.*" )
add_cq_test( RHF_FDR resptest "RHF_FDR.*" )
add_cq_test( RHF_DFDR resptest "RHF_DFDR.*" )
add_cq_test( RHF_MOR resptest "RHF_MOR.*" )
add_cq_test( MISC_RESP resptest "MISC_RESP.*" )
add_cq_test( RHF_RESIDUE resptest "RHF_RESIDUE.*" )
add_cq_test( RKS_RESIDUE resptest "RKS_RESIDUE.*" )
add_cq_test( UHF_RESIDUE resptest "UHF_RESIDUE.*" )
add_cq_test( ULSDA_RESIDUE resptest "ULSDA_RESIDUE.*" )
add_cq_test( UGGA_RESIDUE resptest "UGGA_RESIDUE.*" )
add_cq_test( UHGGA_RESIDUE resptest "UHGGA_RESIDUE.*" )
add_cq_test( GHF_RESIDUE resptest "GHF_RESIDUE.*" )
add_cq_test( GLSDA_RESIDUE resptest "GLSDA_RESIDUE.*" )
add_cq_test( GGGA_RESIDUE resptest "GGGA_RESIDUE.*" )
add_cq_test( GHGGA_RESIDUE resptest "GHGGA_RESIDUE.*" )
add_cq_test( X2CHF_RESIDUE resptest "X2CHF_RESIDUE.*" )
add_cq_test( X2CLSDA_RESIDUE resptest "X2CLSDA_RESIDUE.*" )
add_cq_test( X2CGGA_RESIDUE resptest "X2CGGA_RESIDUE.*" )
add_cq_test( X2CHGGA_RESIDUE resptest "X2CHGGA_RESIDUE.*" )
add_cq_test( RHF_PP_RESIDUE resptest "RHF_PP_RESIDUE.*" )
add_cq_test( UHF_PP_RESIDUE resptest "UHF_PP_RESIDUE.*" )
add_cq_test( RHF_FDR resptest "RHF_FDR.*" )
add_cq_test( RHF_DFDR resptest "RHF_DFDR.*" )
add_cq_test( RHF_MOR resptest "RHF_MOR.*" )
add_cq_test( MISC_RESP resptest "MISC_RESP.*" )
......@@ -88,6 +106,7 @@ if( CQ_ENABLE_MPI )
add_cq_mpi_test( RHF_RESIDUE_MPI 2 resptest "RHF_RESIDUE.*" )
add_cq_mpi_test( RKS_RESIDUE_MPI 2 resptest "RKS_RESIDUE.*" )
add_cq_mpi_test( GHGGA_RESIDUE_MPI 2 resptest "GHGGA_RESIDUE_MPI.*" )
add_cq_mpi_test( RHF_FDR_MPI 2 resptest "RHF_FDR.*" )
add_cq_mpi_test( RHF_DFDR_MPI 2 resptest "RHF_DFDR.*" )
......
/*
* This file is part of the Chronus Quantum (ChronusQ) software package
*
* Copyright (C) 2014-2020 Li Research Group (University of Washington)
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Contact the Developers:
* E-Mail: xsli@uw.edu
*
*/
#include "resp.hpp"
#define CQCRESTEST_IMPL(TNAME, IN, REF) \
TEST( GGGA_RESIDUE, TNAME ) { CQCRESTEST( true, IN, REF ); }
#define CQCRESTEST_IMPL_NP(TNAME, IN, REF) \
TEST( GGGA_RESIDUE, TNAME ) { CQCRESTEST( false, IN, REF ); }
#define CQCRESREFTEST_IMPL_NP(TNAME, IN, REF) \
TEST( GGGA_RESIDUE, TNAME ) { CQCRESTEST( false, IN, REF, true, 1e-06, true ); }
// FULL DIMENSIONAL TESTS
// H2O 3-21G TD-GBLYP (RESIDUE)
CQCRESTEST_IMPL_NP( H2O_321G_GBLYP_GTO_RESIDUE,
"resp/serial/gresp_ks/H2O_3-21G_gblyp_gto_residue",
"H2O_3-21G_gblyp_gto_residue.bin.ref" )
// O2 3-21G TD-GBLYP (RESIDUE)
CQCRESREFTEST_IMPL_NP( O2_321G_GBLYP_GTO_RESIDUE,
"resp/serial/gresp_ks/O2_3-21G_gblyp_gto_residue",
"O2_3-21G_gblyp_gto_residue.bin.ref" )
#ifdef _CQ_DO_PARTESTS
// H2O 3-21G TD-GBLYP (RESIDUE)
CQCRESTEST_IMPL_NP( PAR_H2O_321G_GBLYP_GTO_RESIDUE,
"resp/parallel/gresp_ks/H2O_3-21G_gblyp_gto_residue",
"H2O_3-21G_gblyp_gto_residue.bin.ref" )
// O2 3-21G TD-GBLYP (RESIDUE)
CQCRESREFTEST_IMPL_NP( PAR_O2_321G_GBLYP_GTO_RESIDUE,
"resp/parallel/gresp_ks/O2_3-21G_gblyp_gto_residue",
"O2_3-21G_gblyp_gto_residue.bin.ref" )
#endif
/*
* This file is part of the Chronus Quantum (ChronusQ) software package
*
* Copyright (C) 2014-2020 Li Research Group (University of Washington)
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Contact the Developers:
* E-Mail: xsli@uw.edu
*
*/
#include "resp.hpp"
#define CQCRESTEST_IMPL(TNAME, IN, REF) \
TEST( GHF_RESIDUE, TNAME ) { CQCRESTEST( true, IN, REF ); }
#define CQCRESTEST_IMPL_NP(TNAME, IN, REF) \
TEST( GHF_RESIDUE, TNAME ) { CQCRESTEST( false, IN, REF ); }
#define CQCRESREFTEST_IMPL_NP(TNAME, IN, REF) \
TEST( GHF_RESIDUE, TNAME ) { CQCRESTEST( false, IN, REF, true, 1e-06, true ); }
#define CQCRESFCHKTEST_IMPL_NP(TNAME, IN, REF, FCHK) \
TEST( GHF_RESIDUE, TNAME ) { CQCRESTEST( false, IN, REF, true, 1e-06, false, FCHK ); }
// FULL DIMENSIONAL TESTS
// H2O 3-21G TD-GHF (RESIDUE)
CQCRESTEST_IMPL_NP( H2O_321G_GHF_GTO_RESIDUE,
"resp/serial/gresp_hf/H2O_3-21G_ghf_gto_residue",
"H2O_3-21G_ghf_gto_residue.bin.ref" )
// H3 sto-3g TD-GHF (RESIDUE)
CQCRESFCHKTEST_IMPL_NP( H3_sto3g_GHF_GTO_RESIDUE,
"resp/serial/gresp_hf/H3_sto-3g_ghf_gto_residue",
"H3_sto-3g_ghf_gto_residue.bin.ref",
"H3_sto-3g_ghf_gto_residue.fchk" )
#ifdef _CQ_DO_PARTESTS
// H2O 3-21G TD-GHF (RESIDUE)
CQCRESTEST_IMPL_NP( PAR_H2O_321G_GHF_GTO_RESIDUE,
"resp/parallel/gresp_hf/H2O_3-21G_ghf_gto_residue",
"H2O_3-21G_ghf_gto_residue.bin.ref" )
// H3 sto-3g TD-GHF (RESIDUE)
CQCRESFCHKTEST_IMPL_NP( PAR_H3_sto3g_GHF_GTO_RESIDUE,
"resp/parallel/gresp_hf/H3_sto-3g_ghf_gto_residue",
"H3_sto-3g_ghf_gto_residue.bin.ref",
"H3_sto-3g_ghf_gto_residue.fchk" )
#endif
/*
* This file is part of the Chronus Quantum (ChronusQ) software package
*
* Copyright (C) 2014-2020 Li Research Group (University of Washington)
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Contact the Developers:
* E-Mail: xsli@uw.edu
*
*/
#include "resp.hpp"
#define CQCRESTEST_IMPL(TNAME, IN, REF) \
TEST( GHGGA_RESIDUE, TNAME ) { CQCRESTEST( true, IN, REF ); }
#define CQCRESTEST_IMPL_NP(TNAME, IN, REF) \
TEST( GHGGA_RESIDUE, TNAME ) { CQCRESTEST( false, IN, REF ); }
#define CQCRESTEST_IMPL_NP_MPI(TNAME, IN, REF) \
TEST( GHGGA_RESIDUE_MPI, TNAME ) { CQCRESTEST( false, IN, REF ); }
#define CQCRESREFTEST_IMPL_NP(TNAME, IN, REF) \
TEST( GHGGA_RESIDUE, TNAME ) { CQCRESTEST( false, IN, REF, true, 1e-06, true ); }
// FULL DIMENSIONAL TESTS
// H2O 3-21G TD-GB3LYP (RESIDUE)
CQCRESTEST_IMPL_NP( H2O_321G_GB3LYP_GTO_RESIDUE,
"resp/serial/gresp_ks/H2O_3-21G_gb3lyp_gto_residue",
"H2O_3-21G_gb3lyp_gto_residue.bin.ref" )
// O2 3-21G TD-GB3LYP (RESIDUE)
CQCRESREFTEST_IMPL_NP( O2_321G_GB3LYP_GTO_RESIDUE,
"resp/serial/gresp_ks/O2_3-21G_gb3lyp_gto_residue",
"O2_3-21G_gb3lyp_gto_residue.bin.ref" )
// GPLHR
// H2O 6-31G TD-GB3LYP (RESIDUE)
CQCRESTEST_IMPL_NP( H2O_631G_GB3LYP_GPLHR_RESIDUE,
"resp/serial/gresp_ks/H2O_6-31G_gb3lyp_gplhr_residue",
"H2O_6-31G_gb3lyp_gplhr_residue.bin.ref" )
#ifdef _CQ_DO_PARTESTS
// H2O 3-21G TD-GB3LYP (RESIDUE)
CQCRESTEST_IMPL_NP( PAR_H2O_321G_GB3LYP_GTO_RESIDUE,
"resp/parallel/gresp_ks/H2O_3-21G_gb3lyp_gto_residue",
"H2O_3-21G_gb3lyp_gto_residue.bin.ref" )
// O2 3-21G TD-GB3LYP (RESIDUE)
CQCRESREFTEST_IMPL_NP( PAR_O2_321G_GB3LYP_GTO_RESIDUE,
"resp/parallel/gresp_ks/O2_3-21G_gb3lyp_gto_residue",
"O2_3-21G_gb3lyp_gto_residue.bin.ref" )
// H2O 6-31G TD-GB3LYP (RESIDUE)
CQCRESTEST_IMPL_NP( PAR_H2O_631G_GB3LYP_GPLHR_RESIDUE,
"resp/parallel/gresp_ks/H2O_6-31G_gb3lyp_gplhr_residue",
"H2O_6-31G_gb3lyp_gplhr_residue.bin.ref" )
#endif
#if defined(CQ_ENABLE_MPI) && !defined(_CQ_GENERATE_TESTS)
// H2O 6-31G TD-GB3LYP (RESIDUE)
CQCRESTEST_IMPL_NP_MPI( H2O_631G_GB3LYP_DISTMATFROMROOT,
"resp/parallel/gresp_ks/H2O_6-31G_gb3lyp_distmatfromroot",
"H2O_6-31G_gb3lyp_gplhr_residue.bin.ref" )
#endif
/*
* This file is part of the Chronus Quantum (ChronusQ) software package
*
* Copyright (C) 2014-2020 Li Research Group (University of Washington)
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Contact the Developers:
* E-Mail: xsli@uw.edu
*
*/
#include "resp.hpp"
#define CQCRESTEST_IMPL(TNAME, IN, REF) \
TEST( GLSDA_RESIDUE, TNAME ) { CQCRESTEST( true, IN, REF ); }
#define CQCRESTEST_IMPL_NP(TNAME, IN, REF) \
TEST( GLSDA_RESIDUE, TNAME ) { CQCRESTEST( false, IN, REF ); }
#define CQCRESREFTEST_IMPL_NP(TNAME, IN, REF) \
TEST( GLSDA_RESIDUE, TNAME ) { CQCRESTEST( false, IN, REF, true, 1e-06, true ); }
#define CQCRESFCHKTEST_IMPL_NP(TNAME, IN, REF, FCHK) \
TEST( GLSDA_RESIDUE, TNAME ) { CQCRESTEST( false, IN, REF, true, 1e-06, false, FCHK ); }
// FULL DIMENSIONAL TESTS
// H2O 3-21G TD-GLSDA (RESIDUE)
CQCRESREFTEST_IMPL_NP( H2O_321G_GLSDA_GTO_RESIDUE,
"resp/serial/gresp_ks/H2O_3-21G_glsda_gto_residue",
"H2O_3-21G_glsda_gto_residue.bin.ref" )
// H3 3-21g TD-GLSDA (RESIDUE)
CQCRESFCHKTEST_IMPL_NP( H3_321g_GLSDA_GTO_RESIDUE,
"resp/serial/gresp_ks/H3_3-21g_glsda_gto_residue",
"H3_3-21g_glsda_gto_residue.bin.ref",
"H3_3-21g_glsda_gto_residue.fchk" )
#ifdef _CQ_DO_PARTESTS
// H2O 3-21G TD-GLSDA (RESIDUE)
CQCRESREFTEST_IMPL_NP( PAR_H2O_321G_GLSDA_GTO_RESIDUE,