//////////////////////////////////////////////////////////////////////////////// // // LDAFunctional.h // //////////////////////////////////////////////////////////////////////////////// // $Id: LDAFunctional.h,v 1.3 2004-09-14 22:24:11 fgygi Exp $ #ifndef LDAFUNCTIONAL_H #define LDAFUNCTIONAL_H #include #include using namespace std; #include "XCFunctional.h" class LDAFunctional : public XCFunctional { void xc_unpolarized(const double rh, double &ee, double &vv); void xc_polarized(const double rh, double &ee, double &vv); vector _exc; vector > _vxc; LDAFunctional(); public: LDAFunctional(const vector > &rhoe) { _nspin = rhoe.size(); if ( _nspin > 1 ) assert(rhoe[0].size() == rhoe[1].size()); _np = rhoe[0].size(); _exc.resize(_np); _vxc.resize(_nspin); for ( int i = 0; i < _nspin; i++ ) { _vxc[i].resize(_np); } if ( _nspin == 1 ) { rho = &rhoe[0][0]; exc = &_exc[0]; vxc1 = &_vxc[0][0]; } else { rho_up = &rhoe[0][0]; rho_dn = &rhoe[1][0]; exc = &_exc[0]; vxc1_up = &_vxc[0][0]; vxc1_dn = &_vxc[1][0]; } }; bool isGGA() { return false; }; string name() { return "LDA"; }; void setxc(void); }; #endif