ergo
xc_matrix.h
Go to the documentation of this file.
1 /* Ergo, version 3.8, a program for linear scaling electronic structure
2  * calculations.
3  * Copyright (C) 2019 Elias Rudberg, Emanuel H. Rubensson, Pawel Salek,
4  * and Anastasia Kruchinina.
5  *
6  * This program is free software: you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation, either version 3 of the License, or
9  * (at your option) any later version.
10  *
11  * This program is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with this program. If not, see <http://www.gnu.org/licenses/>.
18  *
19  * Primary academic reference:
20  * Ergo: An open-source program for linear-scaling electronic structure
21  * calculations,
22  * Elias Rudberg, Emanuel H. Rubensson, Pawel Salek, and Anastasia
23  * Kruchinina,
24  * SoftwareX 7, 107 (2018),
25  * <http://dx.doi.org/10.1016/j.softx.2018.03.005>
26  *
27  * For further information about Ergo, see <http://www.ergoscf.org>.
28  */
29 
32 #if !defined(_XC_MATRIX_H_)
33 #define _XC_MATRIX_H_ 1
34 
35 #include "grid_reader.h"
36 
38  const BasisInfoStruct *bis, const Molecule *mol,
39  const Dft::GridParams& gss,
40  real* ksm, real* edfty);
42  const real* dmata, const real *dmatb,
43  const BasisInfoStruct *bis, const Molecule *mol,
44  const Dft::GridParams& gss,
45  real* xca, real *xcb, real* edfty);
46 
47 
48 #endif /* _XC_MATRIX_H_ */
uxc_data::nThreads
int nThreads
Definition: xc_matrix.cc:527
uxc_data::dmatb
const real * dmatb
Definition: xc_matrix.cc:520
DftIntegratorBl_::bas_bl_cnt
int bas_bl_cnt[8]
Definition: integrator.h:58
BASBLOCK
#define BASBLOCK(grid, isym)
Definition: integrator.h:61
mat::axpy
static void axpy(const int *n, const T *da, const T *dx, const int *incx, T *dy, const int *incy)
Definition: mat_gblas.h:431
BasisInfoStruct::noOfBasisFuncs
int noOfBasisFuncs
Definition: basisinfo.h:120
uks_data::dZab
real * dZab
Definition: xc_matrix.cc:441
dft_common.h
Common DFT routines. Mostly functional mixing.
__inline__
#define __inline__
Definition: dft.h:127
XCDistributorLda
distributes a LDA-type xc potential over the XC-matrix elements, with optimization for a closed shell...
Definition: xc_evaluators.h:56
uxc_data::gss
const Dft::GridParams * gss
Definition: xc_matrix.cc:523
LOG_CAT_ERROR
#define LOG_CAT_ERROR
Definition: output.h:47
DFT_MAX_BLLEN
#define DFT_MAX_BLLEN
Limit for the number of grid point batch length.
Definition: aos.h:41
XCDistributorLdaBlas
Definition: xc_matrix.cc:129
ergo_real
double ergo_real
Definition: realtype.h:69
xcCallbackGgaU
static void xcCallbackGgaU(DftIntegratorBl *grid, real *restrict tmp, int bllen, int blstart, int blend, UksData< Matrix > *d)
modifes data->excmat by adding GGA-type xc contributions, for a general unrestricted case.
Definition: xc_evaluators.h:353
xc_data::gss
const Dft::GridParams * gss
Definition: xc_matrix.cc:336
uks_data::dRa
real * dRa
Definition: xc_matrix.cc:440
KsData
structure describing the data needed by distributors.
Definition: xc_evaluators.h:36
xc_data::bis
const BasisInfoStruct * bis
Definition: xc_matrix.cc:334
USE_BLAS_IN_XC
#define USE_BLAS_IN_XC
Definition: config.h:259
Dft::integrate
real integrate(int ndmat, const FullMatrix *const *dmat, const BasisInfoStruct &bis, const Molecule &mol, const Dft::GridParams &gss, int nThreads, DftBlockCallback cb, void *cb_data)
uks_data::exca
Dft::FullMatrix * exca
Definition: xc_matrix.cc:439
uxc_data
Definition: xc_matrix.cc:519
Dft::FullMatrix
Definition: grid_matrix.h:53
UksData
Definition: xc_evaluators.h:220
UksData::energy
real energy
Definition: xc_evaluators.h:224
BasisInfoStruct
Definition: basisinfo.h:112
real
ergo_real real
Definition: test.cc:46
dft_get_uxc_mt
EXTERN_C real dft_get_uxc_mt(int nElectrons, const real *dmata, const real *dmatb, const BasisInfoStruct *bis, const Molecule *mol, const Dft::GridParams &gss, real *xca, real *xcb, real *edfty)
mat_gblas.h
XCDistributorGga
distributes a GGA-type xc potential over the XC-matrix elements.
Definition: xc_evaluators.h:126
KOHNSH_DEBUG
static const int KOHNSH_DEBUG
Definition: xc_matrix.cc:74
uxc_data::nElectrons
int nElectrons
Definition: xc_matrix.cc:526
xc_data::xc
real * xc
Definition: xc_matrix.cc:337
DftIntegratorBl_
Definition: integrator.h:49
uxc_data::dmata
const real * dmata
Definition: xc_matrix.cc:520
KsData::energy
real energy
Definition: xc_evaluators.h:40
DftIntegratorBl_::g
union DftIntegratorBl_::@1 g
Dft::GridParams
A structure describing the grid settings.
Definition: grid_params.h:59
uxc_data::edfty
real edfty
Definition: xc_matrix.cc:525
dft_get_uxc
EXTERN_C real dft_get_uxc(int nElectrons, const real *dmata, const real *dmatb, const BasisInfoStruct &bis, const Molecule &mol, const Dft::GridParams &gss, real *xca, real *xcb, real *edfty, int nThreads)
Definition: xc_matrix.cc:446
xc_data::nElectrons
int nElectrons
Definition: xc_matrix.cc:339
dft_get_xc_mt
EXTERN_C real dft_get_xc_mt(int nElectrons, const real *dmat, const BasisInfoStruct *bis, const Molecule *mol, const Dft::GridParams &gss, real *ksm, real *edfty)
dft_get_uxc_worker
static void * dft_get_uxc_worker(void *data)
Definition: xc_matrix.cc:530
dft_get_num_threads
EXTERN_C int dft_get_num_threads(void)
Definition: dft_common.cc:203
DftBlockCallback
void(* DftBlockCallback)(DftIntegratorBl *grid, real *tmp, int bllen, int blstart, int blend, void *cb_data)
Definition: integrator.h:97
uxc_data::bis
const BasisInfoStruct * bis
Definition: xc_matrix.cc:521
DftIntegratorBl_::rad
struct DftIntegratorBl_::@1::@3 rad
mat::gemm
static void gemm(const char *ta, const char *tb, const int *n, const int *k, const int *l, const T *alpha, const T *A, const int *lda, const T *B, const int *ldb, const T *beta, T *C, const int *ldc)
Definition: mat_gblas.h:232
dft_kohn_sham_collect_info
#define dft_kohn_sham_collect_info(myksm, ksm, energy)
Definition: xc_matrix.cc:122
dft_get_xc_mt
EXTERN_C real dft_get_xc_mt(int nElectrons, const real *dmat, const BasisInfoStruct &bis, const Molecule &mol, const Dft::GridParams &gss, real *xc, real *edfty)
Computes the XC interaction matrix for given density matrix.
Definition: xc_matrix.cc:381
Functional_::is_gga
IsGGAFunc is_gga
Definition: functionals.h:403
matrix_utilities.h
Utilities related to the hierarchical matrix library (HML), including functions for setting up permut...
uxc_data::mol
const Molecule * mol
Definition: xc_matrix.cc:522
xc_data::mol
const Molecule * mol
Definition: xc_matrix.cc:335
Util::TimeMeter::print
void print(int area, const char *routine)
Definition: utilities.h:111
xc_data::el
real el
Definition: xc_matrix.cc:338
uks_data::excb
Dft::FullMatrix * excb
Definition: xc_matrix.cc:439
uks_data::dRb
real * dRb
Definition: xc_matrix.cc:440
utilities.h
Basic OS access utilities.
XCDistributorGgaBlas::distribute
static void distribute(DftIntegratorBl *grid, int bllen, int blstart, int blend, real *restrict tmp, const real *dR, const real *dZ, Dft::FullMatrix &mat)
Definition: xc_matrix.cc:192
ONER
real ONER
Definition: dft_common.cc:65
mat
Definition: allocate.cc:39
LOG_CAT_INFO
#define LOG_CAT_INFO
Definition: output.h:49
uxc_data::el
real el
Definition: xc_matrix.cc:525
uks_data
Definition: xc_matrix.cc:438
DftIntegratorBl_::nbast
int nbast
Definition: integrator.h:72
selected_func
Functional * selected_func
Definition: functionals.c:106
xc_data::dmat
const real * dmat
Definition: xc_matrix.cc:333
dft_get_xc
EXTERN_C real dft_get_xc(int nElectrons, const real *dmat, const BasisInfoStruct &bis, const Molecule &mol, const Dft::GridParams &gss, real *ksm, real *edfty, int nThreads)
computes Fock matrix ksm corresponding to given density matrix dmat.
Definition: xc_matrix.cc:259
DftIntegratorBl_::atv
real * atv
Definition: integrator.h:53
uxc_data::xca
real * xca
Definition: xc_matrix.cc:524
XCDistributorGgaU
Definition: xc_evaluators.h:238
Molecule
Representation of a molecule as a set of nuclei and total charge.
Definition: molecule.h:87
EXTERN_C
#define EXTERN_C
Definition: dft.h:45
integrator.h
XCDistributorLdaBlas::distribute
static void distribute(DftIntegratorBl *grid, int bllen, int blstart, int blend, real *restrict tmp, const real *restrict dR, Dft::FullMatrix &excmat)
Definition: xc_matrix.cc:137
uks_data::dZa
real * dZa
Definition: xc_matrix.cc:441
ONEI
int ONEI
Definition: dft_common.cc:64
xc_data
Definition: xc_matrix.cc:332
config.h
uks_data::energy
real energy
Definition: xc_matrix.cc:442
dft_prop_mutex
static pthread_mutex_t dft_prop_mutex
Definition: xc_matrix.cc:53
Dft::FullMatrix::mat
ergo_real * mat
Definition: grid_matrix.h:55
xc_evaluators.h
dft_get_uxc_mt
EXTERN_C real dft_get_uxc_mt(int nElectrons, const real *dmata, const real *dmatb, const BasisInfoStruct &bis, const Molecule &mol, const Dft::GridParams &gss, real *xca, real *xcb, real *edfty)
Definition: xc_matrix.cc:539
xc_data::edfty
real edfty
Definition: xc_matrix.cc:337
do_output
void do_output(int logCategory, int logArea, const char *format,...)
Definition: output.cc:53
grid_matrix.h
Generic matrix interface. It is not optimized for speed.
Molecule::getNumberOfElectrons
int getNumberOfElectrons() const
Compute total number of electrons.
Definition: molecule.cc:158
xcCallbackLdaR
void xcCallbackLdaR(DftIntegratorBl *grid, real *restrict tmp, int bllen, int blstart, int blend, KsData< Matrix > *data)
modifies data->excmat by adding LDA-type contributions from a given set of bllen grid points as saved...
Definition: xc_evaluators.h:100
restrict
#define restrict
Definition: xc_matrix.cc:71
xc_data::nThreads
int nThreads
Definition: xc_matrix.cc:340
XCDistributorGgaBlas
Definition: xc_matrix.cc:183
DftIntegratorBl_::nsym
int nsym
Definition: integrator.h:58
dft_get_xc_worker
static void * dft_get_xc_worker(void *data)
Definition: xc_matrix.cc:343
aos.h
grid_reader.h
Grid Generator interface. Functions for opening grid file, reading chunks from it,...
LOG_AREA_DFT
#define LOG_AREA_DFT
Definition: output.h:62
output_matrix
void output_matrix(int n, const ergo_real *matrix, const char *matrixName)
Definition: matrix_utilities.cc:390
Util::TimeMeter
Time-measuring class.
Definition: utilities.h:80
xcCallbackGgaR
void xcCallbackGgaR(DftIntegratorBl *grid, real *restrict tmp, int bllen, int blstart, int blend, KsData< Matrix > *data)
modifies data->excmat by adding GGA-type contributions from a given set of bllen grid points as saved...
Definition: xc_evaluators.h:182
lrao2mo_
void lrao2mo_(const real *cmo, const int *ksymop, const real *res, real *fmat, real *work, int *lw)
functionals.h
output.h
Functionality for writing output messages to a text file.
uxc_data::xcb
real * xcb
Definition: xc_matrix.cc:524
dft_kohn_sham_sync_slaves
#define dft_kohn_sham_sync_slaves(dmat)
Definition: xc_matrix.cc:121
uks_data::dZb
real * dZb
Definition: xc_matrix.cc:441