00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013 #ifndef ATOMIC_ORBITAL_INVERTER_H
00014 #define ATOMIC_ORBITAL_INVERTER_H
00015
00016 #define TINY (1e-12)
00017 #define PI 3.14159265359
00018
00019 #include <iostream>
00020 #include <math.h>
00021
00022 #include "Array1D.h"
00023 #include "LinearSpline.h"
00024 #include "Random.h"
00025 #include "DistributionInverter.h"
00026
00027
00028 using namespace std;
00033 class AtomicOrbitalInverter
00034 {
00035 public:
00036
00040 AtomicOrbitalInverter();
00041
00047 void operator=( const AtomicOrbitalInverter & rhs );
00048
00052 void set_npoints(int points_r,int points_theta,int points_phi);
00053
00064 void initialize(int Xn, int Yn, int Zn,Array1D<double> B,Array1D<double> C);
00065
00066
00067
00068
00069
00070
00071
00072
00073
00074
00075
00079 void get_xyz(double &x, double &y, double &z);
00080
00084 double eval_gaussians(double r);
00085
00089 double invert_gaussians();
00090
00091 private:
00092
00093 Array1D<double> b;
00094 Array1D<double> c;
00095 Array1D<double> x_inp;
00096 Array1D<double> y_inp;
00097 int xn,yn,zn;
00098 double cutoff1;
00099 double cutoff2;
00100 double cutoff3;
00101 int npoints_r;
00102 int npoints_theta;
00103 int npoints_phi;
00104 DistributionInverter r_form;
00105 DistributionInverter theta_form;
00106 DistributionInverter phi_form;
00107
00108 };
00109
00110
00111 #endif
00112
00113
00114
00115
00116