00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #ifndef DENSITYFITTING_HEADER
00029 #define DENSITYFITTING_HEADER
00030
00031 #include <stdio.h>
00032
00033 #include "basisinfo.h"
00034 #include "integrals_2el.h"
00035
00036
00037 typedef struct {
00038 ergo_real *ptr;
00039 FILE *f;
00040 unsigned using_file:1;
00041 } DensfitData;
00042
00043 DensfitData* densfit_init(const IntegralInfo* integralInfo,
00044 const BasisInfoStruct & basisInfoDensFit);
00045 void densfit_destroy(DensfitData *p);
00046
00047 int densfit_compute_alpha_beta_matrix_inverse(const IntegralInfo* integralInfo,
00048 const BasisInfoStruct & basisInfoDensFit,
00049 ergo_real* result_U_inverse);
00050
00051 int densfit_compute_gamma(const IntegralInfo* integralInfo,
00052 const BasisInfoStruct & basisInfoMain,
00053 const BasisInfoStruct & basisInfoDensFit,
00054 ergo_real* densityMatrix,
00055 ergo_real* result_gamma,
00056 ergo_real threshold);
00057
00058 int densfit_compute_c_vector(const IntegralInfo* integralInfo,
00059 const BasisInfoStruct & basisInfoDensFit,
00060 DensfitData* U_inverse,
00061 ergo_real* gamma,
00062 ergo_real* result_c_vector);
00063
00064 int densfit_compute_J(const IntegralInfo* integralInfo,
00065 const BasisInfoStruct & basisInfoMain,
00066 const BasisInfoStruct & basisInfoDensFit,
00067 ergo_real* c_vector,
00068 ergo_real* result_J,
00069 ergo_real threshold);
00070
00071 #endif