MADNESS
0.10.1
|
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>
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< operatorT> | poperatorT |
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_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]) |
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) |
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 |
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 FunctionFactory<double_complex,3> complex_factoryT |
typedef Function<double_complex,3> complex_functionT |
typedef std::shared_ptr< FunctionFunctorInterface<double_complex,3> > complex_functorT |
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(), axis, madness::gaxpy(), I, lambda, madness::mul(), madness::Function< T, NDIM >::reconstruct(), madness::reconstruct(), u(), and v.
Referenced by doit().
void doit | ( | World & | world | ) |
References madness::_(), madness::add(), madness::apply(), apply_potential(), axis, c, e(), 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(), madness::sygv(), thresh, madness::transform(), madness::truncate(), u(), v, V(), w(), 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 a, alpha, b, beta, madness::WorldGopInterface::fence(), madness::World::gop, and MADNESS_ASSERT.
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().
int main | ( | int | argc, |
char ** | argv | ||
) |
References SafeMPI::COMM_WORLD, doit(), e(), madness::error(), madness::finalize(), madness::initialize(), madness::print(), and madness::startup().
std::vector<poperatorT> make_bsh_operators | ( | World & | world, |
const Tensor< double > & | evals, | ||
double | tol | ||
) |
References madness::BSHOperatorPtr3D(), madness::BaseTensor::dim(), and lo.
Referenced by doit().
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(), madness::Function< T, NDIM >::trace(), u(), and v.
Referenced by doit().
void normalize2 | ( | World & | world, |
std::vector< complex_functionT > & | u, | ||
std::vector< complex_functionT > & | v | ||
) |
References madness::norm2s(), u(), and v.
Referenced by doit().
|
static |
const double a1 = 1.0 |
Referenced by madness::poly4erfc::poly4erfc(), madness::WorldTaskQueue::add(), c_uks_vwn5__(), madness::c_uks_vwn5__(), check_multiplication_table_c2v(), dumb(), madness::SRConf< T >::emul(), madness::TensorTrain< T >::emul(), madness::fast_transpose(), Foo::get1(), Foo::get1c(), Foo::get2(), Foo::get2c(), Foo::get3(), Foo::get3c(), Foo::get4(), Foo::get4c(), Foo::get5(), Foo::get5c(), madness::CCPairFunction< T, NDIM >::inner_internal(), is_aligned(), QuasiNewton::line_search(), madness::QuasiNewton::line_search(), madness::detail::run_function(), madness::poly4erfc::S(), madness::WorldObject< Derived >::send(), madness::WorldObject< Derived >::send_am(), madness::WorldObject< Derived >::send_task(), madness::WorldTaskQueue::send_task(), madness::WorldObject< Derived >::task(), test_accessors(), test_compress(), test_constructor(), test_inner(), test_truncation(), test_XCOperator(), and V().
const double a2 = 1.0 |
Referenced by madness::poly4erfc::poly4erfc(), madness::WorldTaskQueue::add(), c_rks_vwn5__(), madness::c_rks_vwn5__(), c_uks_vwn5__(), madness::c_uks_vwn5__(), check_multiplication_table_c2v(), dumb(), exact_energy(), madness::fast_transpose(), Foo::get2(), Foo::get2c(), Foo::get3(), Foo::get3c(), Foo::get4(), Foo::get4c(), Foo::get5(), Foo::get5c(), madness::CCPairFunction< T, NDIM >::inner_internal(), is_aligned(), QuasiNewton::line_search(), madness::QuasiNewton::line_search(), madness::detail::run_function(), madness::poly4erfc::S(), madness::WorldObject< Derived >::send(), madness::WorldObject< Derived >::send_am(), madness::WorldObject< Derived >::send_task(), madness::WorldTaskQueue::send_task(), madness::GradientalGaussSlater::Spp_div_S(), madness::WorldObject< Derived >::task(), test_accessors(), test_compress(), test_inner(), test_truncation(), test_XCOperator(), madness::GradientalGaussSlater::U2X_spherical(), madness::Slater::U2X_spherical(), and V().
const double L = 120.0 |
Referenced by doit().
|
static |
Referenced by apply_potential(), sympgrad4(), and sympgrad6().
const double lambda_correct = 0.0026608048208104861/reduced |
const double R1 = 2.0 |
Referenced by madness::apply(), and madness::rank_revealing_decompose().
const double R2 = 2.0 |
Referenced by madness::apply(), compute_energy(), madness::MP3::compute_mp3_cd(), madness::MP3::compute_mp3_ef(), madness::MP3::compute_mp3_ef_low_scaling(), madness::MP3::compute_mp3_ef_with_permutational_symmetry(), madness::MP3::compute_mp3_ghij(), madness::MP3::compute_mp3_ghij_fast(), madness::MP3::compute_mp3_klmn(), madness::MP3::compute_mp3_klmn_fast(), guess(), madness::CCPairFunction< T, NDIM >::inner_internal(), main(), madness::MP3::mp3_test(), madness::CCPairFunction< T, NDIM >::norm2(), madness::NuclearCorrelationFactor::square(), madness::NuclearCorrelationFactor::square_times_V_derivative(), and test_swap_particles().
const double reduced = 0.04825964488415279478 |
Referenced by doit(), and madness::TDHF::make_guess_from_initial_diagonalization().
const double V1 = -50.0*reduced |
Referenced by make_Hd(), make_Hdiag(), make_Hv(), nuclear_anchor_test(), and V().
const double V2 = -50.0*reduced |
Referenced by make_Hd(), nuclear_anchor_test(), and V().
const double zeta = 7.5 |
Referenced by c_uks_vwn5__(), madness::c_uks_vwn5__(), doit(), madness::XCOperator< T, NDIM >::prep_xc_args_response(), and V().