QNANO
Slater_Orbital.h
1 #ifndef QNANO_NEW_SLATER_ORBITAL_DEFINED_H
2 #define QNANO_NEW_SLATER_ORBITAL_DEFINED_H
3 
4 #include "orbitals/Orbital_Index.h"
5 #include "tools/Integrator.h"
6 #include "orbitals/Spherical_Harmonics.h"
7 
10 public:
11  //Wave function: N*r^a*exp(-b*r/a_Bohr)*Y(angular)
12  //Note: Bohr radius: a_Bohr = 0.0529177 nm
13  size_t angular;
14  double a, b, N;
15 
16  static double f(double *x, size_t dim, void *params){
17  const Slater_Orbital *cl = (const Slater_Orbital*)params;
18  double r=sqrt(x[0]*x[0]+x[1]*x[1]+x[2]*x[2]);
19  return cl->N*pow(r,cl->a)*exp(-cl->b*r/0.0529177)*Spherical_Harmonics::Y(cl->angular,x);
20  }
21 
22  void normalize_Riemann(double lim=3., size_t Ndiscr=300);
23  void normalize_Simpson(double lim=3., size_t Ndiscr=300);
24  void normalize(double lim=3., size_t Ndiscr=300);
25 
26  void print(std::ostream &os=std::cout)const;
27 
28  Slater_Orbital(): Integrable_Function(f, 3, this), a(0), b(1.), N(-1.) {
29  }
30  Slater_Orbital(size_t angular_, double a_, double b_, double N_=-1.)
31  : Integrable_Function(f, 3, this), angular(angular_%10), a(a_), b(b_), N(N_){
32  }
33 
34 };
35 
36 #endif
Interface for integrable functions.
Definition: Integrable_Function.h:10
Class to access Slater orbital wave function.
Definition: Slater_Orbital.h:9