source/dft/dft_common.cc File Reference

Common DFT routines. More...

#include <ctype.h>
#include <cmath>
#include <pthread.h>
#include <stdio.h>
#include <stdarg.h>
#include <stdlib.h>
#include <string.h>
#include <list>
#include <map>
#include "dft_common.h"
#include "functionals.h"
#include "grid_atomic.h"
#include "output.h"
#include "barrier.h"

Classes

class  ShellTree
 Class that allows to find in NLogN time all shells that overlap with a given box. More...
struct  Ball

Defines

#define __CVERSION__

Functions

void * dal_malloc_ (size_t sz, const char *place, unsigned line)
int sync_threads (bool release, int nThreads)
 creates or destroys a barrier for nThreads.
static void dft_set_hf_weight (real w)
static real dft_get_hf_weight (void)
static int ergo_fort_print (const char *format,...)
EXTERN_C void dft_init (void)
EXTERN_C int dft_get_num_threads (void)
EXTERN_C void dft_set_num_threads (int nThreads)
int dft_setfunc (const char *line)
static ergo_real distance (const ergo_real *a, const ergo_real *b)
 Coomputes distance between two points, they do not need to be of the Vector3D type.
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.
real dftene_ (const real *rho, const real *grad)
void dftptf0_ (real *rho, real *grad, real *wght, real *vx)
void dftpot0_ (FirstDrv *ds, const real *weight, const FunDensProp *dp)
void dftpot1_ (SecondDrv *ds, const real *w, const FunDensProp *dp, const int *triplet)

Variables

int ZEROI = 0
int ONEI = 1
int THREEI = 3
int FOURI = 4
real ZEROR = 0.0
real ONER = 1.0
real TWOR = 2.0
real FOURR = 4.0
static const ergo_real GET_BLOCKS_FUDGE_FACTOR = 1.0
static const ergo_real SET_SHELL_RADII_ORBITAL_THR = 1e-11
static real dft_hf_weight = 0.0
int(* fort_print )(const char *format,...) = printf
static int dft_thread_count = -1

Detailed Description

Common DFT routines.

Mostly functional mixing.

Author:
: Pawel Salek responsible

(c) Pawel Salek, pawsa@theochem.kth.se, 2001-08-02 NOTES: Adding new functionals: a. use fun-slater.c as template. b. add 'extern Functional MyFunctional;' to functionals.h c. add '&MyFunctional' to available_functionals below. d. have a beer. Or some crackers, if you prefer.


Define Documentation

#define __CVERSION__

Function Documentation

void* dal_malloc_ ( size_t  sz,
const char *  place,
unsigned  line 
)

References malloc().

static real dft_get_hf_weight ( void   )  [static]

References dft_hf_weight.

Referenced by dft_setfunc().

EXTERN_C int dft_get_num_threads ( void   ) 
EXTERN_C void dft_init ( void   ) 

References ergo_fort_print(), fort_print, and fun_printf.

Referenced by main(), test_mol(), and test_small().

static void dft_set_hf_weight ( real  w  )  [static]

References dft_hf_weight.

Referenced by dft_setfunc().

EXTERN_C void dft_set_num_threads ( int  nThreads  ) 

References dft_thread_count.

Referenced by es_set_nthreads().

int dft_setfunc ( const char *  line  ) 
real dftene_ ( const real rho,
const real grad 
)
void dftpot0_ ( FirstDrv ds,
const real weight,
const FunDensProp dp 
)
void dftpot1_ ( SecondDrv ds,
const real w,
const FunDensProp dp,
const int *  triplet 
)
void dftptf0_ ( real rho,
real grad,
real wght,
real vx 
)
static ergo_real distance ( const ergo_real a,
const ergo_real b 
) [inline, static]
static int ergo_fort_print ( const char *  format,
  ... 
) [static]

References do_voutput(), LOG_AREA_DFT, and LOG_CAT_INFO.

Referenced by dft_init().

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().

int sync_threads ( bool  release,
int  nThreads 
)

creates or destroys a barrier for nThreads.

Parameters:
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(), XCEvaluatorUnrestricted::getXC(), and XCEvaluatorRestricted::getXC().


Variable Documentation

real dft_hf_weight = 0.0 [static]
int dft_thread_count = -1 [static]
int(* fort_print)(const char *format,...) = printf
int FOURI = 4
real FOURR = 4.0
const ergo_real GET_BLOCKS_FUDGE_FACTOR = 1.0 [static]

Referenced by ErgoMolInfo::getBlocks().

int ONEI = 1

Referenced by dft_get_uxc(), and dft_get_xc().

real ONER = 1.0
const ergo_real SET_SHELL_RADII_ORBITAL_THR = 1e-11 [static]
int THREEI = 3
real TWOR = 2.0
int ZEROI = 0
real ZEROR = 0.0

Generated on 10 Jul 2018 for ergo by  doxygen 1.6.1