MADNESS  version 0.9
Typedefs | Functions | Variables
vnucso.cc File Reference

Solves the spin-orbit nuclear potential problem. More...

#include <madness/mra/mra.h>
#include <madness/mra/vmra.h>
#include <madness/mra/operator.h>
#include <madness/constants.h>
Include dependency graph for vnucso.cc:

Typedefs

typedef Vector< double, 3 > coordT
 
typedef std::shared_ptr
< FunctionFunctorInterface
< double, 3 > > 
real_functorT
 
typedef std::shared_ptr
< FunctionFunctorInterface
< double_complex, 3 > > 
complex_functorT
 
typedef Function< double, 3 > real_functionT
 
typedef Function
< double_complex, 3 > 
complex_functionT
 
typedef FunctionFactory
< double, 3 > 
real_factoryT
 
typedef FunctionFactory
< double_complex, 3 > 
complex_factoryT
 
typedef SeparatedConvolution
< double, 3 > 
operatorT
 
typedef std::shared_ptr
< operatorT
poperatorT
 

Functions

void moments (World &world, const std::vector< complex_functionT > &u, const std::vector< complex_functionT > &v)
 
void gaxpy1 (World &world, const double_complex alpha, std::vector< complex_functionT > &a, const double_complex beta, const std::vector< complex_functionT > &b, bool fence=true)
 
std::vector< poperatorTmake_bsh_operators (World &world, const Tensor< double > &evals, double tol)
 
Tensor< double_complexhamiltonian_matrix (World &world, const std::vector< complex_functionT > &u, const std::vector< complex_functionT > &v, const std::vector< complex_functionT > &Vu, const std::vector< complex_functionT > &Vv, const std::vector< complex_functionT > du[3], const std::vector< complex_functionT > dv[3])
 
void apply_potential (World &world, const real_functionT &V0, const real_functionT &V0x, const real_functionT &V0y, const real_functionT &V0z, const std::vector< complex_functionT > &u, const std::vector< complex_functionT > &v, std::vector< complex_functionT > &Vu, std::vector< complex_functionT > &Vv, std::vector< complex_functionT > du[3], std::vector< complex_functionT > dv[3], bool doso)
 
void normalize2 (World &world, std::vector< complex_functionT > &u, std::vector< complex_functionT > &v)
 
void doit (World &world)
 
int main (int argc, char **argv)
 

Variables

const double L = 120.0
 
const double zeta = 7.5
 
const double R1 = 2.0
 
const double R2 = 2.0
 
const double a1 = 1.0
 
const double a2 = 1.0
 
const double reduced = 0.04825964488415279478
 
const double V1 = -50.0*reduced
 
const double V2 = -50.0*reduced
 
const double lambda_correct = 0.0026608048208104861/reduced
 

Detailed Description

Solves the spin-orbit nuclear potential problem.

Solves the Hartree-Fock equation for the 2-cosh potential with spin-orbit in Nuclear Density Functional Theory witough assumption on spatial symmetry.

Points of interest.

The source is here.

This is a more involved example than the Hydrogen and Helium. This example couples the traditional diagonalization approach with that of the integral equation approach. The details are described in: G. I. Fann , J. Pei, R. J. Harrison1, J. Jia, J. Hill1 , M. Ou, W. Nazarewicz, W. A. Shelton and N. Schunck, "Fast multiresolution methods for density functional theory in nuclear physics," Journal of Physics, 180 (2009) 012080.

Typedef Documentation

typedef Vector<double,3> coordT
typedef SeparatedConvolution<double,3> operatorT
typedef FunctionFactory<double,3> real_factoryT
typedef Function<double,3> real_functionT

Function Documentation

void apply_potential ( World world,
const real_functionT V0,
const real_functionT V0x,
const real_functionT V0y,
const real_functionT V0z,
const std::vector< complex_functionT > &  u,
const std::vector< complex_functionT > &  v,
std::vector< complex_functionT > &  Vu,
std::vector< complex_functionT > &  Vv,
std::vector< complex_functionT du[3],
std::vector< complex_functionT dv[3],
bool  doso 
)
void doit ( World world)
void gaxpy1 ( World world,
const double_complex  alpha,
std::vector< complex_functionT > &  a,
const double_complex  beta,
const std::vector< complex_functionT > &  b,
bool  fence = true 
)
Tensor<double_complex> hamiltonian_matrix ( World world,
const std::vector< complex_functionT > &  u,
const std::vector< complex_functionT > &  v,
const std::vector< complex_functionT > &  Vu,
const std::vector< complex_functionT > &  Vv,
const std::vector< complex_functionT du[3],
const std::vector< complex_functionT dv[3] 
)

References madness::matrix_inner(), and madness::reconstruct().

Referenced by doit().

int main ( int  argc,
char **  argv 
)
std::vector<poperatorT> make_bsh_operators ( World world,
const Tensor< double > &  evals,
double  tol 
)
void moments ( World world,
const std::vector< complex_functionT > &  u,
const std::vector< complex_functionT > &  v 
)
void normalize2 ( World world,
std::vector< complex_functionT > &  u,
std::vector< complex_functionT > &  v 
)

References madness::norm2s(), and sqrt().

Referenced by doit().

Variable Documentation

const double a1 = 1.0
const double a2 = 1.0
const double L = 120.0

Referenced by doit().

const double lambda_correct = 0.0026608048208104861/reduced
const double R1 = 2.0
const double R2 = 2.0
const double reduced = 0.04825964488415279478

Referenced by doit().

const double V1 = -50.0*reduced
const double V2 = -50.0*reduced
const double zeta = 7.5

Referenced by c_uks_vwn5__(), and doit().