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 #ifndef RHOMAT_HEADER 00029 #define RHOMAT_HEADER 1 00030 00031 #include "grid_matrix.h" 00032 00035 void 00036 getrho_blocked_lda(int nbast, const real * dmat, const real * gao, 00037 const int* nblocks, const int (*iblocks)[2], 00038 int ldaib, real *tmp, int nvclen, real *rho); 00039 00040 inline void 00041 getrho_blocked_lda(int nbast, const Dft::FullMatrix& m, const real * gao, 00042 const int* nblocks, const int (*iblocks)[2], 00043 int ldaib, real *tmp, int nvclen, real *rho) 00044 { 00045 getrho_blocked_lda(nbast, m.mat, gao, nblocks, iblocks, 00046 ldaib, tmp, nvclen, rho); 00047 } 00048 00049 00050 void 00051 getrho_blocked_gga(int nbast, const real * dmat, const real * gao, 00052 const int* nblocks, const int (*iblocks)[2], 00053 int ldaib, real *tmp, int nvclen, 00054 real *rho, real (*grad)[3]); 00055 00056 inline void 00057 getrho_blocked_gga(int nbast, const Dft::FullMatrix& dmat, const real * gao, 00058 const int* nblocks, const int (*iblocks)[2], 00059 int ldaib, real *tmp, int nvclen, 00060 real *rho, real (*grad)[3]) 00061 { 00062 getrho_blocked_gga(nbast, dmat.mat, gao, nblocks, iblocks, 00063 ldaib, tmp, nvclen, rho, grad); 00064 } 00065 00066 void 00067 getexp_blocked_lda(int nbast, const real * dmat, const real * gao, 00068 const int* nblocks, const int (*iblocks)[2], 00069 int ldaib, real *tmp, int nvclen, real *rho); 00070 void 00071 getexp_blocked_gga(int nbast, const real * dmat, const real * gao, 00072 const int* nblocks, const int (*iblocks)[2], 00073 int ldaib, real *tmp, int nvclen, 00074 real (*rgrad)[4]); 00075 00076 #endif