00001 #ifndef COULOMB_H
00002 #define COULOMB_H
00003
00004
00005
00006
00007
00008
00009
00010
00011 #ifndef ZMENVIRONMENT_H
00012 #include "ZMutility/ZMenvironment.h"
00013 #endif
00014 #include <utility>
00015
00016 ZM_BEGIN_NAMESPACE( zmsf )
00017
00018 typedef std::pair<double,double> Dpair;
00019
00024
00025 struct Coulomb {
00026
00028 static double HydrogenicR1( const double Z, const double r );
00029
00031
00035 static Dpair HydrogenicR1Err( const double Z, const double r );
00036
00038 static double HydrogenicRn( const int n, const int l, const double Z,
00039 const double r );
00040
00042
00046 static Dpair HydrogenicRnErr( const int n, const int l, const double Z,
00047 const double r );
00048
00050
00055 static bool CoulombWaveFG( const double eta, const double x,
00056 const double lambdaF, const int klambdaG,
00057 double* F, double* Fp,
00058 double* G, double* Gp,
00059 double* Fscale, double* Gscale );
00060
00063 static bool CoulombWaveFArray( const double lam_min, const int kmax,
00064 const double eta, const double x,
00065 double* fc_array, double* Fscale );
00073
00074
00075 static bool CoulombWaveReducedFArray( const double lam_min, const int kmax,
00076 const double eta, const double x,
00077 double* fc_array, double* Fscale );
00085
00086
00087 static bool CoulombWaveFGArray(const double lam_min, const int kmax,
00088 const double eta, const double x,
00089 double* fc_array, double* gc_array,
00090 double* Fscale, double* Gscale );
00098
00099
00100 static bool CoulombWaveFGpArray(const double lam_min, const int kmax,
00101 const double eta, const double x,
00102 double* fc_array, double* fcp_array,
00103 double* gc_array, double* gcp_array,
00104 double* Fscale, double* Gscale );
00112
00113 static double CoulombNorm( const double lm, const double eta );
00114
00117 static void CoulombNormArray( const double lam_min, const int kmax,
00118 const double eta, double* fc_array );
00125 };
00126
00127 ZM_END_NAMESPACE( zmsf )
00128
00129 #endif