ergo
|
00001 /* Ergo, version 3.2, a program for linear scaling electronic structure 00002 * calculations. 00003 * Copyright (C) 2012 Elias Rudberg, Emanuel H. Rubensson, and Pawel Salek. 00004 * 00005 * This program is free software: you can redistribute it and/or modify 00006 * it under the terms of the GNU General Public License as published by 00007 * the Free Software Foundation, either version 3 of the License, or 00008 * (at your option) any later version. 00009 * 00010 * This program is distributed in the hope that it will be useful, 00011 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00012 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00013 * GNU General Public License for more details. 00014 * 00015 * You should have received a copy of the GNU General Public License 00016 * along with this program. If not, see <http://www.gnu.org/licenses/>. 00017 * 00018 * Primary academic reference: 00019 * KohnâSham Density Functional Theory Electronic Structure Calculations 00020 * with Linearly Scaling Computational Time and Memory Usage, 00021 * Elias Rudberg, Emanuel H. Rubensson, and Pawel Salek, 00022 * J. Chem. Theory Comput. 7, 340 (2011), 00023 * <http://dx.doi.org/10.1021/ct100611z> 00024 * 00025 * For further information about Ergo, see <http://www.ergoscf.org>. 00026 */ 00027 00028 #if !defined(_XC_MATRIX_SPARSE_H_) 00029 #define _XC_MATRIX_SPARSE_H_ 1 00030 00031 #define BEGIN_NAMESPACE(x) namespace x { 00032 #define END_NAMESPACE(x) } /* x */ 00033 00034 #include "basisinfo.h" 00035 #include "matrix_typedefs.h" 00036 #include "realtype.h" 00037 00038 00039 typedef ergo_real real; 00040 00041 BEGIN_NAMESPACE(Dft) 00042 00043 real getXC_seq(const BasisInfoStruct& bis, const IntegralInfo& integralInfo, 00044 const Molecule& mol, const Dft::GridParams& gss, 00045 int nelectrons, const symmMatrix& dmat, 00046 symmMatrix& ksm, real* edfty, 00047 std::vector<int> const & permutationHML); 00048 00049 real getXC_mt(const BasisInfoStruct& bis, const IntegralInfo& integralInfo, 00050 const Molecule& mol, const Dft::GridParams& gss, 00051 int nElectrons, const symmMatrix& dens, 00052 symmMatrix& xcm, real* xcEnergy, 00053 std::vector<int> const & permutationHML); 00054 00055 real getUXC_seq(const BasisInfoStruct& bis, const IntegralInfo& integralInfo, 00056 const Molecule& mol, const Dft::GridParams& gss, int nElectrons, 00057 const symmMatrix& densA, const symmMatrix& densB, 00058 symmMatrix& xcA, symmMatrix& xcB, real* xcEnergy, 00059 std::vector<int> const & permutationHML); 00060 00061 real getUXC_mt(const BasisInfoStruct& bis, const IntegralInfo& integralInfo, 00062 const Molecule& mol, const Dft::GridParams& gss, int nElectrons, 00063 const symmMatrix& densA, const symmMatrix& densB, 00064 symmMatrix& xcA, symmMatrix& xcB, real* xcEnergy, 00065 std::vector<int> const & permutationHML); 00066 00067 END_NAMESPACE(Dft) 00068 00069 #endif /* _XC_MATRIX_SPARSE_H_ */