ergo
|
Common DFT routines. More...
#include <stdlib.h>
#include <vector>
#include "realtype.h"
#include "basisinfo.h"
#include "matrix_typedefs.h"
#include "functionals.h"
#include "grid_atomic.h"
Go to the source code of this file.
Classes | |
struct | FirstDrv |
A vector of first order derivatives with respect to two parameters: density rho and SQUARE of the gradient of density grho. More... | |
struct | SecondDrv |
class | ErgoMolInfo |
Ergo specific implementation of molecule-grid interface. More... | |
class | Box |
Class Box provides an ability to determine box containing all Objects. More... | |
Macros | |
#define | EXTERN_C |
#define | dal_new(sz, tp) (tp*)dal_malloc_((sz)*sizeof(tp),__FUNCTION__, __LINE__) |
#define | dal_malloc(sz) dal_malloc_((sz),__FUNCTION__, __LINE__) |
Functions | |
EXTERN_C void | dftpot0_ (FirstDrv *ds, const real *weight, const FunDensProp *dp) |
EXTERN_C void | dftpot1_ (SecondDrv *ds, const real *w, const FunDensProp *dp, const int *triplet) |
EXTERN_C void | dft_init (void) |
EXTERN_C int | dft_setfunc (const char *line) |
EXTERN_C void | ergoShellsToOrbs (const int *nshlbl, const int(*shlblock)[2], int *norbbl, int(*orbblock)[2], const BasisInfoStruct &bis) |
transform shell block indices to orbital block indices. More... | |
EXTERN_C int | dft_get_num_threads () |
EXTERN_C void | dft_set_num_threads (int nThreads) |
void * | dal_malloc_ (size_t sz, const char *func, unsigned line) |
template<typename Iterator > | |
void | getBoundingBox (Box &box, Iterator start, Iterator end) |
int | sync_threads (bool release, int nThreads) |
creates or destroys a barrier for nThreads. More... | |
Variables | |
int | ZEROI |
int | ONEI |
int | THREEI |
int | FOURI |
real | ZEROR |
real | ONER |
real | TWOR |
real | FOURR |
Common DFT routines.
Mostly functional mixing.
#define dal_malloc | ( | sz | ) | dal_malloc_((sz),__FUNCTION__, __LINE__) |
Referenced by dft_integrator_bl_new().
#define dal_new | ( | sz, | |
tp | |||
) | (tp*)dal_malloc_((sz)*sizeof(tp),__FUNCTION__, __LINE__) |
Referenced by dft_integrate(), dft_integrator_bl_new(), dft_lin_respao(), and grid_open_full().
#define EXTERN_C |
void* dal_malloc_ | ( | size_t | sz, |
const char * | func, | ||
unsigned | line | ||
) |
References GET_BLOCKS_FUDGE_FACTOR, malloc(), SET_SHELL_RADII_ORBITAL_THR, and template_blas_sqrt().
EXTERN_C int dft_get_num_threads | ( | ) |
References dft_thread_count, EXTERN_C, and fort_print.
Referenced by dft_get_uxc_mt(), dft_get_xc_mt(), dft_lin_resp_mt(), getXC_mt(), grid_open_cartesian(), grid_open_stream(), and grid_test_scaling().
EXTERN_C void dft_init | ( | void | ) |
References ergo_fort_print(), fort_print, and fun_printf.
Referenced by main(), test_mol(), and test_small().
EXTERN_C void dft_set_num_threads | ( | int | nThreads | ) |
References dft_get_hf_weight(), dft_set_hf_weight(), dft_thread_count, dftlistfuncs_(), fort_print, free(), FSYM, FUN_CONF_ERROR, fun_get_hf_weight, FUN_OK, fun_printf, fun_select_by_name(), fun_set_cam_param, fun_set_hf_weight, FUN_UNKNOWN, and malloc().
Referenced by es_set_nthreads().
EXTERN_C int dft_setfunc | ( | const char * | line | ) |
EXTERN_C void dftpot0_ | ( | FirstDrv * | ds, |
const real * | weight, | ||
const FunDensProp * | dp | ||
) |
EXTERN_C void dftpot1_ | ( | SecondDrv * | ds, |
const real * | w, | ||
const FunDensProp * | dp, | ||
const int * | triplet | ||
) |
References daxpy_(), FunSecondFuncDrv::df00001, FunThirdFuncDrv::df00001, FunFourthFuncDrv::df00001, FunSecondFuncDrv::df00002, FunFourthFuncDrv::df00002, FunFourthFuncDrv::df00003, FunFourthFuncDrv::df00004, FunFourthFuncDrv::df0001, FunFourthFuncDrv::df00011, FunFourthFuncDrv::df00012, FunFourthFuncDrv::df00013, FunFourthFuncDrv::df0002, FunFourthFuncDrv::df00021, FunFourthFuncDrv::df00022, FunFourthFuncDrv::df0003, FunFourthFuncDrv::df00031, FunFourthFuncDrv::df0004, FunSecondFuncDrv::df0010, FunThirdFuncDrv::df0010, FunFourthFuncDrv::df0010, FunSecondFuncDrv::df00101, FunFourthFuncDrv::df00101, FunFourthFuncDrv::df00102, FunFourthFuncDrv::df00103, FunSecondFuncDrv::df0011, FunThirdFuncDrv::df0011, FunFourthFuncDrv::df0011, FunFourthFuncDrv::df00111, FunFourthFuncDrv::df00112, FunFourthFuncDrv::df0012, FunFourthFuncDrv::df00121, FunFourthFuncDrv::df0013, FunSecondFuncDrv::df0020, FunThirdFuncDrv::df0020, FunFourthFuncDrv::df0020, FunFourthFuncDrv::df00201, FunFourthFuncDrv::df00202, FunThirdFuncDrv::df0021, FunFourthFuncDrv::df0021, FunFourthFuncDrv::df00211, FunFourthFuncDrv::df0022, FunThirdFuncDrv::df0030, FunFourthFuncDrv::df0030, FunFourthFuncDrv::df00301, FunFourthFuncDrv::df0031, FunFourthFuncDrv::df0040, FunSecondFuncDrv::df0100, FunFourthFuncDrv::df0100, FunFourthFuncDrv::df01001, FunFourthFuncDrv::df01002, FunFourthFuncDrv::df01003, FunFourthFuncDrv::df0101, FunFourthFuncDrv::df01011, FunFourthFuncDrv::df01012, FunFourthFuncDrv::df0102, FunFourthFuncDrv::df01021, FunFourthFuncDrv::df0103, FunFourthFuncDrv::df0110, FunFourthFuncDrv::df01101, FunFourthFuncDrv::df01102, FunFourthFuncDrv::df0111, FunFourthFuncDrv::df01111, FunFourthFuncDrv::df0112, FunThirdFuncDrv::df0120, FunFourthFuncDrv::df0120, FunFourthFuncDrv::df01201, FunFourthFuncDrv::df0121, FunFourthFuncDrv::df0130, FunFourthFuncDrv::df0200, FunFourthFuncDrv::df02001, FunFourthFuncDrv::df02002, FunFourthFuncDrv::df0201, FunFourthFuncDrv::df02011, FunFourthFuncDrv::df0202, FunFourthFuncDrv::df0210, FunFourthFuncDrv::df02101, FunFourthFuncDrv::df0211, FunFourthFuncDrv::df0220, FunFourthFuncDrv::df0300, FunFourthFuncDrv::df03001, FunFourthFuncDrv::df0301, FunFourthFuncDrv::df0310, FunFourthFuncDrv::df0400, FunSecondFuncDrv::df1000, FunThirdFuncDrv::df1000, FunFourthFuncDrv::df1000, FunSecondFuncDrv::df10001, FunThirdFuncDrv::df10001, FunFourthFuncDrv::df10001, FunFourthFuncDrv::df10002, FunFourthFuncDrv::df10003, FunSecondFuncDrv::df1001, FunThirdFuncDrv::df1001, FunFourthFuncDrv::df1001, FunFourthFuncDrv::df10011, FunFourthFuncDrv::df10012, FunFourthFuncDrv::df1002, FunFourthFuncDrv::df10021, FunFourthFuncDrv::df1003, FunSecondFuncDrv::df1010, FunThirdFuncDrv::df1010, FunFourthFuncDrv::df1010, FunFourthFuncDrv::df10101, FunFourthFuncDrv::df10102, FunThirdFuncDrv::df1011, FunFourthFuncDrv::df1011, FunFourthFuncDrv::df10111, FunFourthFuncDrv::df1012, FunThirdFuncDrv::df1020, FunFourthFuncDrv::df1020, FunFourthFuncDrv::df10201, FunFourthFuncDrv::df1021, FunFourthFuncDrv::df1030, FunSecondFuncDrv::df1100, FunThirdFuncDrv::df1100, FunFourthFuncDrv::df1100, FunThirdFuncDrv::df11001, FunFourthFuncDrv::df11001, FunFourthFuncDrv::df11002, FunFourthFuncDrv::df1101, FunFourthFuncDrv::df11011, FunFourthFuncDrv::df1102, FunThirdFuncDrv::df1110, FunFourthFuncDrv::df1110, FunFourthFuncDrv::df11101, FunFourthFuncDrv::df1111, FunFourthFuncDrv::df1120, FunFourthFuncDrv::df1200, FunFourthFuncDrv::df12001, FunFourthFuncDrv::df1201, FunFourthFuncDrv::df1210, FunFourthFuncDrv::df1300, FunSecondFuncDrv::df2000, FunThirdFuncDrv::df2000, FunFourthFuncDrv::df2000, FunThirdFuncDrv::df20001, FunFourthFuncDrv::df20001, FunFourthFuncDrv::df20002, FunThirdFuncDrv::df2001, FunFourthFuncDrv::df2001, FunFourthFuncDrv::df20011, FunFourthFuncDrv::df2002, FunThirdFuncDrv::df2010, FunFourthFuncDrv::df2010, FunFourthFuncDrv::df20101, FunFourthFuncDrv::df2011, FunFourthFuncDrv::df2020, FunThirdFuncDrv::df2100, FunFourthFuncDrv::df2100, FunFourthFuncDrv::df21001, FunFourthFuncDrv::df2101, FunFourthFuncDrv::df2110, FunFourthFuncDrv::df2200, FunThirdFuncDrv::df3000, FunFourthFuncDrv::df3000, FunFourthFuncDrv::df30001, FunFourthFuncDrv::df3001, FunFourthFuncDrv::df3010, FunFourthFuncDrv::df3100, FunFourthFuncDrv::df4000, drv2_clear(), drv3_clear(), drv4_clear(), SecondDrv::fG, SecondDrv::fGG, Functional_::fourth, SecondDrv::fR, SecondDrv::fRG, SecondDrv::fRR, SecondDrv::fRZ, SecondDrv::fZ, SecondDrv::fZG, SecondDrv::fZZ, FunDensProp_::grada, FunDensProp_::gradb, FunDensProp_::rhoa, FunDensProp_::rhob, Functional_::second, selected_func, and Functional_::third.
EXTERN_C void ergoShellsToOrbs | ( | const int * | nshlbl, |
const int(*) | shlblock[2], | ||
int * | norbbl, | ||
int(*) | orbblock[2], | ||
const BasisInfoStruct & | bis | ||
) |
transform shell block indices to orbital block indices.
IORIDX contains preprocessed information about where given shell begins and ends in given symmetry.
References ShellSpecStruct::noOfBasisFuncs, BasisInfoStruct::shellList, and ShellSpecStruct::startIndexInMatrix.
Referenced by SparsePattern::add(), compute_grid_thread_func(), and dft_integrate().
void getBoundingBox | ( | Box & | box, |
Iterator | start, | ||
Iterator | end | ||
) |
References Box::hi, Box::lo, and sync_threads().
Referenced by Stream::saveToFile(), and ShellTree::ShellTree().
int sync_threads | ( | bool | release, |
int | nThreads | ||
) |
creates or destroys a barrier for nThreads.
release | tells whether we are to destroy the barrier (true) or just sync (false). |
nThreads | informs the code how many threads are supposed to block on the barrier. |
References ergo_barrier_destroy(), ergo_barrier_init(), ergo_barrier_wait(), and PTHREAD_BARRIER_SERIAL_THREAD.
Referenced by dft_integrate(), getBoundingBox(), XCEvaluatorRestricted::getXC(), and XCEvaluatorUnrestricted::getXC().
int FOURI |
real FOURR |
int ONEI |
Referenced by dft_get_uxc(), and dft_get_xc().
real ONER |
int THREEI |
real TWOR |
int ZEROI |
real ZEROR |