grid_atomic.h
Go to the documentation of this file.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
00032 #if !defined(_GRID_ATOMIC_H_)
00033 #define _GRID_ATOMIC_H_ 1
00034
00035 #include "realtype.h"
00036 #include "matrix_typedefs.h"
00037 #include "basisinfo.h"
00038 #include "grid_interface.h"
00039
00040 typedef ergo_real real;
00041 typedef ergo_long_real long_real;
00042
00043 extern const real BraggRadii[];
00044 extern const unsigned BraggSize;
00045
00046
00048 struct RadialScheme {
00049 const char *name;
00050 int gridSize;
00051 explicit RadialScheme(const char *n) : name(n), gridSize(0) {}
00052 inline int size() const { return gridSize; }
00053 virtual void init(int myNumber, int charge, real threshold) = 0;
00054 virtual void generate(real *r, real *w) = 0;
00055 virtual ~RadialScheme() {}
00056 };
00057
00058 struct RadialSchemeGC2 : public RadialScheme {
00059 void *quadData;
00060 RadialSchemeGC2(): RadialScheme("Gauss-Chebychev scheme of second kind")
00061 {}
00062 virtual void init(int myNumber, int charge, real threshold);
00063 virtual void generate(real *r, real *w);
00064 };
00065
00066 struct RadialSchemeTurbo : public RadialScheme {
00067 real zeta;
00068 RadialSchemeTurbo(): RadialScheme("Chebychev T2 scheme/M4 mapping (Turbo)")
00069 {}
00070 virtual void init(int myNumber, int charge, real threshold);
00071 virtual void generate(real *r, real *w);
00072 };
00073
00074 struct RadialSchemeLMG : public RadialScheme {
00075 explicit RadialSchemeLMG(const GridGenMolInfo& ggmi_);
00076
00077 virtual void init(int myNumber, int charge, real threshold);
00078 virtual void generate(real *r, real *w);
00079 virtual ~RadialSchemeLMG();
00080 private:
00081 const GridGenMolInfo& ggmi;
00082 int *nucorb;
00083 real (*aa)[2];
00084 int maxL;
00085
00086 real rl, grdc, h, eph;
00087 };
00088
00089
00090
00091 #endif