From c778958b34c296423f884cde85db37ea2dc53dba Mon Sep 17 00:00:00 2001 From: Martin Schlipf Date: Fri, 27 Sep 2013 22:28:23 +0000 Subject: [PATCH] link HSE local part from rest of code "HSE" is allowed xc functional now use Coulomb potential in nonlocal part git-svn-id: http://qboxcode.org/svn/qb/branches/hse-dev@1384 cba15fb0-1239-40c8-b417-11db7ca47a34 --- src/XCOperator.C | 12 ++++++++++++ src/XCPotential.C | 5 +++++ src/Xc.h | 3 ++- 3 files changed, 19 insertions(+), 1 deletion(-) diff --git a/src/XCOperator.C b/src/XCOperator.C index 4fd2e80..aa6fea8 100644 --- a/src/XCOperator.C +++ b/src/XCOperator.C @@ -66,6 +66,18 @@ XCOperator::XCOperator(Sample& s, const ChargeDensity& cd) :cd_(cd) hasHF_ = true; HFmixCoeff_ = 0.25; } + else if ( functional_name == "HSE" ) + { + // create an exchange potential + xcp_ = new XCPotential(cd, functional_name); + + // create the exchange operator with mixing coeff=0.25 + xop_ = new ExchangeOperator(s, 0.25); + hasPotential_ = true; + hasGGA_ = xcp_->isGGA(); + hasHF_ = true; + HFmixCoeff_ = 0.25; + } else if ( functional_name == "B3LYP" ) { // create an exchange potential diff --git a/src/XCPotential.C b/src/XCPotential.C index 59157ee..4c894ad 100644 --- a/src/XCPotential.C +++ b/src/XCPotential.C @@ -20,6 +20,7 @@ #include "LDAFunctional.h" #include "PBEFunctional.h" #include "BLYPFunctional.h" +#include "HSEFunctional.h" #include "B3LYPFunctional.h" #include "Basis.h" #include "FourierTransform.h" @@ -49,6 +50,10 @@ cd_(cd), vft_(*cd_.vft()), vbasis_(*cd_.vbasis()) const double c_coeff = 1.0; xcf_ = new PBEFunctional(cd_.rhor,x_coeff,c_coeff); } + else if ( functional_name == "HSE" ) + { + xcf_ = new HSEFunctional(cd_.rhor); + } else if ( functional_name == "B3LYP" ) { xcf_ = new B3LYPFunctional(cd_.rhor); diff --git a/src/Xc.h b/src/Xc.h index 26ca951..1b44e4c 100644 --- a/src/Xc.h +++ b/src/Xc.h @@ -49,10 +49,11 @@ class Xc : public Var v == "BLYP" || v == "HF" || v == "PBE0" || + v == "HSE" || v == "B3LYP" ) ) { if ( ui->onpe0() ) - cout << " xc must be LDA, PBE, BLYP, HF, PBE0 or B3LYP" << endl; + cout << " xc must be LDA, PBE, BLYP, HF, PBE0, HSE or B3LYP" << endl; return 1; } -- libgit2 0.26.0