ergo
rho-mat.h
Go to the documentation of this file.
1 /* Ergo, version 3.4, a program for linear scaling electronic structure
2  * calculations.
3  * Copyright (C) 2014 Elias Rudberg, Emanuel H. Rubensson, and Pawel Salek.
4  *
5  * This program is free software: you can redistribute it and/or modify
6  * it under the terms of the GNU General Public License as published by
7  * the Free Software Foundation, either version 3 of the License, or
8  * (at your option) any later version.
9  *
10  * This program is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  * GNU General Public License for more details.
14  *
15  * You should have received a copy of the GNU General Public License
16  * along with this program. If not, see <http://www.gnu.org/licenses/>.
17  *
18  * Primary academic reference:
19  * Kohn−Sham Density Functional Theory Electronic Structure Calculations
20  * with Linearly Scaling Computational Time and Memory Usage,
21  * Elias Rudberg, Emanuel H. Rubensson, and Pawel Salek,
22  * J. Chem. Theory Comput. 7, 340 (2011),
23  * <http://dx.doi.org/10.1021/ct100611z>
24  *
25  * For further information about Ergo, see <http://www.ergoscf.org>.
26  */
27 
28 #ifndef RHOMAT_HEADER
29 #define RHOMAT_HEADER 1
30 
31 #include "grid_matrix.h"
32 
35 void
36 getrho_blocked_lda(int nbast, const real * dmat, const real * gao,
37  const int* nblocks, const int (*iblocks)[2],
38  int ldaib, real *tmp, int nvclen, real *rho);
39 
40 inline void
41 getrho_blocked_lda(int nbast, const Dft::FullMatrix& m, const real * gao,
42  const int* nblocks, const int (*iblocks)[2],
43  int ldaib, real *tmp, int nvclen, real *rho)
44 {
45  getrho_blocked_lda(nbast, m.mat, gao, nblocks, iblocks,
46  ldaib, tmp, nvclen, rho);
47 }
48 
49 
50 void
51 getrho_blocked_gga(int nbast, const real * dmat, const real * gao,
52  const int* nblocks, const int (*iblocks)[2],
53  int ldaib, real *tmp, int nvclen,
54  real *rho, real (*grad)[3]);
55 
56 inline void
57 getrho_blocked_gga(int nbast, const Dft::FullMatrix& dmat, const real * gao,
58  const int* nblocks, const int (*iblocks)[2],
59  int ldaib, real *tmp, int nvclen,
60  real *rho, real (*grad)[3])
61 {
62  getrho_blocked_gga(nbast, dmat.mat, gao, nblocks, iblocks,
63  ldaib, tmp, nvclen, rho, grad);
64 }
65 
66 void
67 getexp_blocked_lda(int nbast, const real * dmat, const real * gao,
68  const int* nblocks, const int (*iblocks)[2],
69  int ldaib, real *tmp, int nvclen, real *rho);
70 void
71 getexp_blocked_gga(int nbast, const real * dmat, const real * gao,
72  const int* nblocks, const int (*iblocks)[2],
73  int ldaib, real *tmp, int nvclen,
74  real (*rgrad)[4]);
75 
76 #endif
void getrho_blocked_gga(int nbast, const real *dmat, const real *gao, const int *nblocks, const int(*iblocks)[2], int ldaib, real *tmp, int nvclen, real *rho, real(*grad)[3])
void getexp_blocked_gga(int nbast, const real *dmat, const real *gao, const int *nblocks, const int(*iblocks)[2], int ldaib, real *tmp, int nvclen, real(*rgrad)[4])
Computes the expectation value <o|dmat|o&#39;> and its derivatives for a nonsymmetric matrix and given se...
Definition: rho-mat.cc:324
void getrho_blocked_lda(int nbast, const real *dmat, const real *gao, const int *nblocks, const int(*iblocks)[2], int ldaib, real *tmp, int nvclen, real *rho)
ergo_real real
Definition: cubature_rules.h:33
ergo_real * mat
Definition: grid_matrix.h:46
Definition: grid_matrix.h:44
void getexp_blocked_lda(int nbast, const real *dmat, const real *gao, const int *nblocks, const int(*iblocks)[2], int ldaib, real *tmp, int nvclen, real *rho)
Computes the expectation value <o|dmat|o&#39;> for a nonsymmetric matrix and given set of precomputed orb...
Definition: rho-mat.cc:262