ergo
fun-tester.cc File Reference

Program for testing functional routines in the DFT module. More...

#include <cmath>
#include <stdarg.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <strings.h>
#include "dft_common.h"
#include "functionals.h"

Macros

#define _POSIX_SOURCE   1
 
#define __CVERSION__
 
#define __inline__
 
#define COMP_DER(c, delta, eps, field, fun, ord)
 
#define T2(der, derdif, eps, label)
 

Typedefs

typedef void(* DaltonEnFunc) (real *res, const real *rho, const real *rho13, const real *grad)
 

Functions

void edrc_ (real *drc, const real *rho, const real *rho13, const real *rhogrd)
 
void evwn_ (real *vwn, const real *rho, const real *rho13, const real *rhogrd)
 
void ebck_ (real *bck, const real *rho, const real *rho13, const real *rhogrd)
 
void elyp_ (real *lyp, const real *rho, const real *rho13, const real *rhogrd)
 
void dftpot1 (SecondDrv *ds, const real *w, const real *rho, const real *grad, const int *triplet)
 
void condft_ (void)
 
static __inline__ void test_var (real comp, real refer, const char *fun, const char *drv, int *counter)
 
static int test_first (const char *fun_name, EnergyFunc func, FirstOrderFun first_func)
 
static int test_second (const char *fname, FirstOrderFun first_fun, SecondOrderFun second_fun)
 
static int test_third (const char *fname, SecondOrderFun second_fun, ThirdOrderFun third_fun)
 
static int test_fourth (const char *fname, ThirdOrderFun third_fun, FourthOrderFun fourth_fun)
 
static int test_derivatives (Functional *f, int *orders, DaltonEnFunc dal_fun)
 
int main (int argc, char *argv[])
 

Variables

const int GRID_STEP = 1
 

Detailed Description

Program for testing functional routines in the DFT module.

(c) Pawel Salek, pawsa.nosp@m.@the.nosp@m.ochem.nosp@m..kth.nosp@m..se, 2001-10-15

The test build can be done by: g77 -O fun-tester.c -o fun-tester -L. -ldft -lm or cc -O fun-tester.c -o fun-tester -L. -ldft -lm -lg2c

NOTES: this file is short but in a separate file to reduce the number of dependences and be able to easily compile the code for the TEST_BUILD.

Macro Definition Documentation

◆ __CVERSION__

#define __CVERSION__

◆ __inline__

#define __inline__

◆ _POSIX_SOURCE

#define _POSIX_SOURCE   1

◆ COMP_DER

#define COMP_DER (   c,
  delta,
  eps,
  field,
  fun,
  ord 
)
Value:
eps = c*delta; \
drv##ord##_clear(&m); dt = dp; dt.field -= eps; fun ## _fun(&m, 1, &dt); \
drv##ord##_clear(&p); dt = dp; dt.field += eps; fun ## _fun(&p, 1, &dt)

Referenced by test_fourth(), test_second(), and test_third().

◆ T2

#define T2 (   der,
  derdif,
  eps,
  label 
)
Value:
num = (p.derdif-m.derdif)/(2*eps);\
test_var(d.der, num, fname, label ":" #der, &fail)

Referenced by test_fourth(), test_second(), and test_third().

Typedef Documentation

◆ DaltonEnFunc

typedef void(* DaltonEnFunc) (real *res, const real *rho, const real *rho13, const real *grad)

Function Documentation

◆ condft_()

void condft_ ( void  )

◆ dftpot1()

void dftpot1 ( SecondDrv ds,
const real w,
const real rho,
const real grad,
const int *  triplet 
)

◆ ebck_()

void ebck_ ( real bck,
const real rho,
const real rho13,
const real rhogrd 
)

◆ edrc_()

void edrc_ ( real drc,
const real rho,
const real rho13,
const real rhogrd 
)

◆ elyp_()

void elyp_ ( real lyp,
const real rho,
const real rho13,
const real rhogrd 
)

◆ evwn_()

void evwn_ ( real vwn,
const real rho,
const real rho13,
const real rhogrd 
)

◆ main()

int main ( int  argc,
char *  argv[] 
)

◆ test_derivatives()

static int test_derivatives ( Functional f,
int *  orders,
DaltonEnFunc  dal_fun 
)
static

◆ test_first()

◆ test_fourth()

static int test_fourth ( const char *  fname,
ThirdOrderFun  third_fun,
FourthOrderFun  fourth_fun 
)
static

References COMP_DER, FunThirdFuncDrv::df00001, FunFourthFuncDrv::df00001, FunThirdFuncDrv::df00002, FunFourthFuncDrv::df00002, FunThirdFuncDrv::df00003, FunFourthFuncDrv::df00003, FunThirdFuncDrv::df0001, FunFourthFuncDrv::df0001, FunThirdFuncDrv::df00011, FunFourthFuncDrv::df00011, FunThirdFuncDrv::df00012, FunFourthFuncDrv::df00012, FunThirdFuncDrv::df0002, FunFourthFuncDrv::df0002, FunThirdFuncDrv::df00021, FunFourthFuncDrv::df00021, FunThirdFuncDrv::df0003, FunFourthFuncDrv::df0003, FunThirdFuncDrv::df0010, FunFourthFuncDrv::df0010, FunThirdFuncDrv::df00101, FunFourthFuncDrv::df00101, FunThirdFuncDrv::df00102, FunFourthFuncDrv::df00102, FunThirdFuncDrv::df0011, FunFourthFuncDrv::df0011, FunThirdFuncDrv::df00111, FunFourthFuncDrv::df00111, FunThirdFuncDrv::df0012, FunFourthFuncDrv::df0012, FunThirdFuncDrv::df0020, FunFourthFuncDrv::df0020, FunThirdFuncDrv::df00201, FunFourthFuncDrv::df00201, FunThirdFuncDrv::df0021, FunFourthFuncDrv::df0021, FunThirdFuncDrv::df0030, FunFourthFuncDrv::df0030, FunThirdFuncDrv::df0100, FunFourthFuncDrv::df0100, FunThirdFuncDrv::df01001, FunFourthFuncDrv::df01001, FunThirdFuncDrv::df01002, FunFourthFuncDrv::df01002, FunThirdFuncDrv::df0101, FunFourthFuncDrv::df0101, FunThirdFuncDrv::df01011, FunFourthFuncDrv::df01011, FunThirdFuncDrv::df0102, FunFourthFuncDrv::df0102, FunThirdFuncDrv::df0110, FunFourthFuncDrv::df0110, FunThirdFuncDrv::df01101, FunFourthFuncDrv::df01101, FunThirdFuncDrv::df0111, FunFourthFuncDrv::df0111, FunThirdFuncDrv::df0120, FunFourthFuncDrv::df0120, FunThirdFuncDrv::df0200, FunFourthFuncDrv::df0200, FunThirdFuncDrv::df02001, FunFourthFuncDrv::df02001, FunThirdFuncDrv::df0201, FunFourthFuncDrv::df0201, FunThirdFuncDrv::df0210, FunFourthFuncDrv::df0210, FunThirdFuncDrv::df0300, FunFourthFuncDrv::df0300, FunThirdFuncDrv::df1000, FunFourthFuncDrv::df1000, FunThirdFuncDrv::df10001, FunFourthFuncDrv::df10001, FunThirdFuncDrv::df10002, FunFourthFuncDrv::df10002, FunThirdFuncDrv::df1001, FunFourthFuncDrv::df1001, FunThirdFuncDrv::df10011, FunFourthFuncDrv::df10011, FunThirdFuncDrv::df1002, FunFourthFuncDrv::df1002, FunThirdFuncDrv::df1010, FunFourthFuncDrv::df1010, FunThirdFuncDrv::df10101, FunFourthFuncDrv::df10101, FunThirdFuncDrv::df1011, FunFourthFuncDrv::df1011, FunThirdFuncDrv::df1020, FunFourthFuncDrv::df1020, FunThirdFuncDrv::df1100, FunFourthFuncDrv::df1100, FunThirdFuncDrv::df11001, FunFourthFuncDrv::df11001, FunThirdFuncDrv::df1101, FunFourthFuncDrv::df1101, FunThirdFuncDrv::df1110, FunFourthFuncDrv::df1110, FunThirdFuncDrv::df1200, FunFourthFuncDrv::df1200, FunThirdFuncDrv::df2000, FunFourthFuncDrv::df2000, FunThirdFuncDrv::df20001, FunFourthFuncDrv::df20001, FunThirdFuncDrv::df2001, FunFourthFuncDrv::df2001, FunThirdFuncDrv::df2010, FunFourthFuncDrv::df2010, FunThirdFuncDrv::df2100, FunFourthFuncDrv::df2100, FunThirdFuncDrv::df3000, FunFourthFuncDrv::df3000, drv3_clear(), drv4_clear(), FunDensProp_::grada, FunDensProp_::gradab, FunDensProp_::gradb, GRID_STEP, T2, and test_var().

Referenced by test_derivatives().

◆ test_second()

◆ test_third()

◆ test_var()

static __inline__ void test_var ( real  comp,
real  refer,
const char *  fun,
const char *  drv,
int *  counter 
)
static

Variable Documentation

◆ GRID_STEP

const int GRID_STEP = 1