| MADNESS
    version 0.9
    | 
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>
| 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< poperatorT > | make_bsh_operators (World &world, const Tensor< double > &evals, double tol) | 
| 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]) | 
| 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 | 
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 FunctionFactory<double_complex,3> complex_factoryT | 
| typedef Function<double_complex,3> complex_functionT | 
| typedef SeparatedConvolution<double,3> operatorT | 
| typedef std::shared_ptr<operatorT> poperatorT | 
| typedef FunctionFactory<double,3> real_factoryT | 
| typedef Function<double,3> real_functionT | 
| typedef std::shared_ptr< FunctionFunctorInterface<double,3> > real_functorT | 
| 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 | ||
| ) | 
References madness::apply(), madness::gaxpy(), I(), madness::mul(), one(), madness::reconstruct(), and madness::Function< T, NDIM >::reconstruct().
Referenced by doit().
| void doit | ( | World & | world | ) | 
References madness::add(), madness::apply(), apply_potential(), c, e1(), madness::WorldGopInterface::fence(), madness::World::gop, hamiltonian_matrix(), k, L, make_bsh_operators(), madness::matrix_inner(), max, moments(), madness::norm2s(), normalize2(), madness::print(), madness::project(), madness::World::rank(), madness::reconstruct(), reduced, madness::FunctionDefaults< NDIM >::set_autorefine(), madness::FunctionDefaults< NDIM >::set_cubic_cell(), madness::FunctionDefaults< NDIM >::set_initial_level(), madness::FunctionDefaults< NDIM >::set_k(), madness::FunctionDefaults< NDIM >::set_refine(), madness::FunctionDefaults< NDIM >::set_thresh(), madness::FunctionDefaults< NDIM >::set_truncate_mode(), sqrt(), madness::sygv(), thresh, madness::transform(), madness::truncate(), V(), madness::wall_time(), and zeta.
Referenced by main().
| 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 | ||
| ) | 
References madness::WorldGopInterface::fence(), and madness::World::gop.
| 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 | ||
| ) | 
References sqrt().
Referenced by doit(), and madness::EigSolver< T, NDIM >::multi_solve().
| void moments | ( | World & | world, | 
| const std::vector< complex_functionT > & | u, | ||
| const std::vector< complex_functionT > & | v | ||
| ) | 
References madness::Function< T, NDIM >::compress(), madness::conj(), madness::Function< T, NDIM >::gaxpy(), madness::inner(), madness::print(), madness::World::rank(), madness::reconstruct(), madness::scale(), madness::FunctionDefaults< NDIM >::set_autorefine(), and madness::Function< T, NDIM >::trace().
Referenced by doit().
| void normalize2 | ( | World & | world, | 
| std::vector< complex_functionT > & | u, | ||
| std::vector< complex_functionT > & | v | ||
| ) | 
References madness::norm2s(), and sqrt().
Referenced by doit().
| 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 | 
Referenced by compute_energy(), and madness::HartreeFock< T, NDIM >::value().
| 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().
 1.8.8
 1.8.8