MADNESS  0.10.1
Classes | Typedefs | Functions | Variables
vnucso.cc File Reference

Solves the Hartree-Fock equation for the 2-cosh potential with spin-orbit in Nuclear Density Functional Theory without assumption of spatial symmetry. 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:

Classes

struct  Guess
 

Typedefs

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

Functions

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_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])
 
int main (int argc, char **argv)
 
std::vector< poperatorTmake_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)
 
static double V (const coordT &r)
 

Variables

const double a1 = 1.0
 
const double a2 = 1.0
 
static const double fac1 =exp(-R1/a1)
 
static const double fac2 =exp(-R2/a2)
 
const double L = 120.0
 
static double lambda = lambda_correct
 
const double lambda_correct = 0.0026608048208104861/reduced
 
const double R1 = 2.0
 
const double R2 = 2.0
 
const double reduced = 0.04825964488415279478
 
const double V1 = -50.0*reduced
 
const double V2 = -50.0*reduced
 
const double zeta = 7.5
 

Detailed Description

Solves the Hartree-Fock equation for the 2-cosh potential with spin-orbit in Nuclear Density Functional Theory without assumption of 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

◆ complex_factoryT

◆ complex_functionT

◆ complex_functorT

◆ coordT

typedef Vector<double,3> coordT

◆ operatorT

typedef SeparatedConvolution<double,3> operatorT

◆ poperatorT

typedef std::shared_ptr<operatorT> poperatorT

◆ real_factoryT

typedef FunctionFactory<double,3> real_factoryT

◆ real_functionT

typedef Function<double,3> real_functionT

◆ real_functorT

typedef std::shared_ptr< FunctionFunctorInterface<double,3> > real_functorT

Function Documentation

◆ apply_potential()

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 
)

◆ doit()

void doit ( World world)

◆ gaxpy1()

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 
)

◆ hamiltonian_matrix()

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 axis, madness::matrix_inner(), madness::reconstruct(), u(), and v.

Referenced by doit().

◆ main()

int main ( int  argc,
char **  argv 
)

◆ make_bsh_operators()

std::vector<poperatorT> make_bsh_operators ( World world,
const Tensor< double > &  evals,
double  tol 
)

◆ moments()

void moments ( World world,
const std::vector< complex_functionT > &  u,
const std::vector< complex_functionT > &  v 
)

◆ normalize2()

void normalize2 ( World world,
std::vector< complex_functionT > &  u,
std::vector< complex_functionT > &  v 
)

References madness::norm2s(), u(), and v.

Referenced by doit().

◆ V()

static double V ( const coordT r)
static

References a1, a2, fac1, fac2, V1, V2, and zeta.

Referenced by doit().

Variable Documentation

◆ a1

const double a1 = 1.0

◆ a2

const double a2 = 1.0

◆ fac1

const double fac1 =exp(-R1/a1)
static

Referenced by V().

◆ fac2

const double fac2 =exp(-R2/a2)
static

Referenced by V().

◆ L

const double L = 120.0

Referenced by doit().

◆ lambda

double lambda = lambda_correct
static

◆ lambda_correct

const double lambda_correct = 0.0026608048208104861/reduced

◆ R1

const double R1 = 2.0

◆ R2

const double R2 = 2.0

◆ reduced

const double reduced = 0.04825964488415279478

◆ V1

const double V1 = -50.0*reduced

◆ V2

const double V2 = -50.0*reduced

Referenced by make_Hd(), nuclear_anchor_test(), and V().

◆ zeta

const double zeta = 7.5