MADNESS 0.10.1
Public Member Functions | Static Public Member Functions | Private Attributes | List of all members
madness::OEP Class Reference

#include <oep.h>

Inheritance diagram for madness::OEP:
Inheritance graph
[legend]
Collaboration diagram for madness::OEP:
Collaboration graph
[legend]

Public Member Functions

 OEP (World &world, const commandlineparser &parser)
 
void analyze ()
 
double compute_and_print_final_energies (const std::string model, const real_function_3d &Voep, const vecfuncT &KS_nemo, const tensorT &KS_Fock, const vecfuncT &HF_nemo, const tensorT &HF_Fock) const
 
void compute_coulomb_potential (const vecfuncT &nemo, vecfuncT &Jnemo) const
 compute Coulomb potential
 
real_function_3d compute_dcep_correction (const real_function_3d &dcep_numerator_HF, const vecfuncT &nemoHF, const vecfuncT &nemoKS) const
 compute correction of the given model
 
double compute_delta_rho (const real_function_3d rho_HF, const real_function_3d rho_KS) const
 compute Delta rho as an indicator for the result's quality
 
real_function_3d compute_density (const vecfuncT &nemo) const
 compute density from orbitals with ragularization (Bischoff, 2014_1, equation (19))
 
double compute_E_first (const vecfuncT phi, const vecfuncT Jphi, const vecfuncT Kphi, const real_function_3d Vx) const
 compute E^(1) = 1/2*\sum_ij <ij||ij> - \sum_i <i|J + Vx|i> = \sum_i <i|- 0.5*J - 0.5*K - Vx|i>
 
double compute_E_zeroth (const tensorT eigvals) const
 cumpute E^(0) = \sum_i \epsilon_i^KS
 
std::vector< double > compute_energy (const vecfuncT &nemo, const double E_X) const
 
real_function_3d compute_energy_weighted_density_local (const vecfuncT &nemo, const tensorT &fock) const
 return without the NCF and factor 2 for closed shell !
 
double compute_exchange_energy_conv (const vecfuncT phi, const vecfuncT Kphi) const
 compute exchange energy using the expectation value of the exchange operator
 
double compute_exchange_energy_vir (const vecfuncT &nemo, const real_function_3d Vx) const
 compute Evir using Levy-Perdew virial relation (Kohut_2014, (43) or Ospadov_2017, (25))
 
void compute_exchange_potential (const vecfuncT &nemo, vecfuncT &Knemo) const
 compute exchange potential (needed for Econv)
 
Tensor< double > compute_fock_diagonal_elements (const Tensor< double > &KS_eigvals, const vecfuncT &phi, const vecfuncT &Kphi, const real_function_3d &Vx) const
 compute diagonal elements of Fock matrix
 
real_function_3d compute_mrks_correction (const real_function_3d &mrks_numerator_HF, const vecfuncT &nemoHF, const vecfuncT &nemoKS) const
 compute correction of the given model
 
void compute_nemo_potentials (const vecfuncT &nemo, vecfuncT &Jnemo, vecfuncT &Unemo) const
 compute all potentials from given nemos except kinetic energy
 
real_function_3d compute_ocep_correction (const real_function_3d &ocep_numerator_HF, const vecfuncT &nemoHF, const vecfuncT &nemoKS, const tensorT &fockHF, const tensorT &fockKS) const
 compute correction of the given model
 
real_function_3d compute_Pauli_kinetic_density (const vecfuncT &nemo) const
 compute the Pauli kinetic energy density divided by the density tau_P/rho with equation (16) from Ospadov, 2017
 
real_function_3d compute_slater_potential (const vecfuncT &nemo) const
 compute Slater potential (Kohut, 2014, equation (15))
 
real_function_3d compute_total_kinetic_density (const vecfuncT &nemo) const
 compute the total kinetic energy density of equation (6) from Kohut
 
real_function_3d get_final_potential () const
 
std::shared_ptr< Nemoget_reference () const
 
double iterate (const std::string model, const vecfuncT &HF_nemo, const tensorT &HF_eigvals, vecfuncT &KS_nemo, tensorT &KS_Fock, real_function_3d &Voep, const real_function_3d Vs) const
 
void load_restartdata (Tensor< double > &fock)
 
virtual std::shared_ptr< Fock< double, 3 > > make_fock_operator () const
 the OEP Fock operator is the HF Fock operator without exchange but with the OEP
 
std::string name () const
 
bool need_dcep_correction (const std::string &model) const
 
bool need_mrks_correction (const std::string &model) const
 
bool need_ocep_correction (const std::string &model) const
 
void output_calc_info_schema (const double &energy) const
 update the json file with calculation input and output
 
void print_orbens (const tensorT orbens) const
 print orbital energies in reverse order with optional shift
 
void print_parameters (std::vector< std::string > what) const
 
std::tuple< Tensor< double >, vecfuncTrecompute_HF (const vecfuncT &HF_nemo) const
 
void save_restartdata (const Tensor< double > &fock) const
 
bool selftest ()
 The following function tests all essential parts of the OEP program qualitatively and some also quantitatively.
 
void set_reference (const std::shared_ptr< Nemo > reference1)
 
double solve (const vecfuncT &HF_nemo)
 
virtual double value ()
 
virtual double value (const Tensor< double > &x)
 Should return the value of the objective function.
 
- Public Member Functions inherited from madness::Nemo
 Nemo (World &world, const commandlineparser &parser)
 ctor
 
std::vector< vecfuncTcompute_all_cphf ()
 solve the CPHF equation for all displacements
 
vecfuncT compute_cphf_parallel_term (const size_t iatom, const int iaxis) const
 
tensorT compute_fock_matrix (const vecfuncT &nemo, const tensorT &occ) const
 compute the Fock matrix from scratch
 
Tensor< double > compute_IR_intensities (const Tensor< double > &normalmodes, const vecfuncT &dens_pt) const
 compute the IR intensities in the double harmonic approximation
 
bool do_ac () const
 
bool do_pcm () const
 
bool do_symmetry () const
 
AC< 3 > get_ac () const
 
std::shared_ptr< SCFget_calc () const
 
const NemoCalculationParametersget_param () const
 
PCM get_pcm () const
 
projector_irrep get_symmetry_projector () const
 return the symmetry_projector
 
Tensor< double > gradient (const Tensor< double > &x)
 compute the nuclear gradients
 
Tensor< double > hessian (const Tensor< double > &x)
 returns the molecular hessian matrix at structure x
 
bool is_dft () const
 
real_function_3d kinetic_energy_potential (const vecfuncT &nemo) const
 
real_function_3d make_ddensity (const real_function_3d &rhonemo, const int axis) const
 make the derivative of the density
 
real_function_3d make_density (const Tensor< double > &occ, const vecfuncT &nemo) const
 make the density (alpha or beta)
 
real_function_3d make_density (const tensorT &occ, const vecfuncT &bra, const vecfuncT &ket, const bool refine=false) const
 make the density using different bra and ket vectors
 
real_function_3d make_laplacian_density (const real_function_3d &rhonemo) const
 the Laplacian of the density
 
real_function_3d make_sigma (const real_function_3d &rho1, const real_function_3d &rho2) const
 compute the reduced densities sigma (gamma) for GGA functionals
 
Moleculemolecule ()
 return a reference to the molecule
 
Moleculemolecule () const
 return a reference to the molecule
 
bool provides_gradient () const
 Override this to return true if the derivative is implemented.
 
Tensor< double > purify_hessian (const Tensor< double > &hessian) const
 purify and symmetrize the hessian
 
vecfuncT solve_cphf (const size_t iatom, const int iaxis, const Tensor< double > fock, const vecfuncT &guess, const vecfuncT &rhsconst, const Tensor< double > incomplete_hessian, const vecfuncT &parallel, const SCFProtocol &p, const std::string &xc_data) const
 solve the CPHF equations for the nuclear displacements
 
- Public Member Functions inherited from madness::NemoBase
 NemoBase (World &w)
 
virtual ~NemoBase ()
 
bool check_convergence (const std::vector< double > energies, const std::vector< double > oldenergies, const double bsh_norm, const double delta_density, const CalculationParameters &param, const double econv, const double dconv) const
 
template<typename T , std::size_t NDIM>
Function< typename Tensor< T >::scalar_type, NDIMcompute_density (const std::vector< Function< T, NDIM > > nemo) const
 
Tensor< double > compute_gradient (const real_function_3d &rhonemo, const Molecule &molecule) const
 compute the nuclear gradients
 
template<typename T , std::size_t NDIM>
double compute_kinetic_energy (const std::vector< Function< T, NDIM > > &nemo) const
 compute kinetic energy as square of the "analytical" expectation value
 
template<typename T , std::size_t NDIM>
double compute_kinetic_energy1 (const std::vector< Function< T, NDIM > > &nemo) const
 compute kinetic energy as square of the "analytical" derivative of the orbitals
 
template<typename T , std::size_t NDIM>
double compute_kinetic_energy1a (const std::vector< Function< T, NDIM > > &nemo) const
 compute kinetic energy as square of the "analytical" derivative of the orbitals
 
template<typename T , std::size_t NDIM>
double compute_kinetic_energy2 (const std::vector< Function< T, NDIM > > &nemo) const
 compute kinetic energy as direct derivative of the orbitals (probably imprecise)
 
void construct_nuclear_correlation_factor (const Molecule &molecule, const std::shared_ptr< PotentialManager > pm, const std::pair< std::string, double > ncf_parameter)
 
std::shared_ptr< NuclearCorrelationFactorget_ncf_ptr () const
 create an instance of the derived object based on the input parameters
 
virtual void invalidate_factors_and_potentials ()
 
virtual bool need_recompute_factors_and_potentials (const double thresh) const
 
template<typename T , std::size_t NDIM>
void orthonormalize (std::vector< Function< T, NDIM > > &nemo, const Function< double, NDIM > metric=Function< double, NDIM >(), const double trantol=FunctionDefaults< NDIM >::get_thresh() *0.01) const
 orthonormalize the vectors
 
- Public Member Functions inherited from madness::OptimizationTargetInterface
virtual ~OptimizationTargetInterface ()
 
double test_gradient (Tensor< double > &x, double value_precision, bool doprint=true)
 Numerical test of the derivative ... optionally prints to stdout, returns max abs error.
 
virtual void value_and_gradient (const Tensor< double > &x, double &value, Tensor< double > &gradient)
 Reimplement if more efficient to evaluate both value and gradient in one call.
 

Static Public Member Functions

static void help ()
 
static void print_parameters ()
 
- Static Public Member Functions inherited from madness::Nemo
static void help ()
 
static void print_parameters ()
 
static void smoothen (real_function_3d &f)
 smooth a function by projecting it onto k-1 and then average with k
 
- Static Public Member Functions inherited from madness::NemoBase
template<typename T , std::size_t NDIM>
static void normalize (std::vector< Function< T, NDIM > > &nemo, const Function< double, NDIM > metric=Function< double, NDIM >())
 normalize the nemos
 
template<typename T >
static Tensor< TQ2 (const Tensor< T > &s)
 

Private Attributes

OEP_Parameters oep_param
 parameters for this OEP calculation
 
std::shared_ptr< Nemoreference
 the wave function reference that determines the local potential
 
real_function_3d Vfinal
 the final local potential
 

Additional Inherited Members

- Public Attributes inherited from madness::Nemo
NemoCalculationParameters param
 
- Public Attributes inherited from madness::NemoBase
std::shared_ptr< NuclearCorrelationFactorncf
 the nuclear correlation factor
 
real_function_3d R
 the nuclear correlation factor
 
real_function_3d R_square
 the square of the nuclear correlation factor
 
Worldworld
 
- Protected Member Functions inherited from madness::Nemo
std::vector< double > compute_energy_regularized (const vecfuncT &nemo, const vecfuncT &Jnemo, const vecfuncT &Knemo, const vecfuncT &Unemo) const
 given nemos, compute the HF energy using the regularized expressions for T and V
 
void compute_nemo_potentials (const vecfuncT &nemo, vecfuncT &Jnemo, vecfuncT &Knemo, vecfuncT &xcnemo, vecfuncT &pcmnemo, vecfuncT &Unemo) const
 compute the reconstructed orbitals, and all potentials applied on nemo
 
real_function_3d get_coulomb_potential (const vecfuncT &psi) const
 return the Coulomb potential
 
template<typename T , size_t NDIM>
void load_function (std::vector< Function< T, NDIM > > &f, const std::string name) const
 load a function
 
vecfuncT localize (const vecfuncT &nemo, const double dconv, const bool randomize) const
 localize the nemo orbitals
 
vecfuncT make_cphf_constant_term (const size_t iatom, const int iaxis, const vecfuncT &R2nemo, const real_function_3d &rhonemo) const
 compute the constant term for the CPHF equations
 
Tensor< double > make_incomplete_hessian () const
 compute the incomplete hessian
 
Tensor< double > make_incomplete_hessian_response_part (const std::vector< vecfuncT > &xi) const
 compute the complementary incomplete hessian
 
void make_plots (const real_function_3d &f, const std::string &name="function") const
 
template<typename solverT >
void rotate_subspace (World &world, const tensorT &U, solverT &solver, int lo, int nfunc) const
 rotate the KAIN subspace (cf. SCF.cc)
 
template<typename T , size_t NDIM>
void save_function (const std::vector< Function< T, NDIM > > &f, const std::string name) const
 save a function
 
void set_protocol (const double thresh)
 adapt the thresholds consistently to a common value
 
double solve (const SCFProtocol &proto)
 solve the HF equations
 
double trantol () const
 return the threshold for vanishing elements in orbital rotations
 
- Protected Attributes inherited from madness::Nemo
AC< 3 > ac
 asymptotic correction for DFT
 
std::shared_ptr< SCFcalc
 
std::shared_ptr< real_convolution_3dpoisson
 a poisson solver
 
projector_irrep symmetry_projector
 

Constructor & Destructor Documentation

◆ OEP()

madness::OEP::OEP ( World world,
const commandlineparser parser 
)
inline

Member Function Documentation

◆ analyze()

void madness::OEP::analyze ( )

◆ compute_and_print_final_energies()

double madness::OEP::compute_and_print_final_energies ( const std::string  model,
const real_function_3d Voep,
const vecfuncT KS_nemo,
const tensorT KS_Fock,
const vecfuncT HF_nemo,
const tensorT HF_Fock 
) const

◆ compute_coulomb_potential()

void madness::OEP::compute_coulomb_potential ( const vecfuncT nemo,
vecfuncT Jnemo 
) const
inline

◆ compute_dcep_correction()

real_function_3d madness::OEP::compute_dcep_correction ( const real_function_3d dcep_numerator_HF,
const vecfuncT nemoHF,
const vecfuncT nemoKS 
) const
inline

◆ compute_delta_rho()

double madness::OEP::compute_delta_rho ( const real_function_3d  rho_HF,
const real_function_3d  rho_KS 
) const
inline

compute Delta rho as an indicator for the result's quality

References madness::abs(), and madness::Function< T, NDIM >::trace().

Referenced by compute_and_print_final_energies(), and selftest().

◆ compute_density()

real_function_3d madness::OEP::compute_density ( const vecfuncT nemo) const
inline

compute density from orbitals with ragularization (Bischoff, 2014_1, equation (19))

References madness::QCPropertyInterface::density(), madness::dot(), madness::NemoBase::R_square, and madness::NemoBase::world.

Referenced by compute_and_print_final_energies(), compute_coulomb_potential(), compute_energy(), and selftest().

◆ compute_E_first()

double madness::OEP::compute_E_first ( const vecfuncT  phi,
const vecfuncT  Jphi,
const vecfuncT  Kphi,
const real_function_3d  Vx 
) const
inline

compute E^(1) = 1/2*\sum_ij <ij||ij> - \sum_i <i|J + Vx|i> = \sum_i <i|- 0.5*J - 0.5*K - Vx|i>

References madness::Nemo::calc, madness::inner(), and madness::NemoBase::world.

Referenced by compute_and_print_final_energies().

◆ compute_E_zeroth()

double madness::OEP::compute_E_zeroth ( const tensorT  eigvals) const
inline

cumpute E^(0) = \sum_i \epsilon_i^KS

References madness::BaseTensor::size().

Referenced by compute_and_print_final_energies().

◆ compute_energy()

std::vector< double > madness::OEP::compute_energy ( const vecfuncT nemo,
const double  E_X 
) const
inline

compute all energy contributions except exchange and sum up for total energy the exchange energy must be computed priorly with the compute_exchange_energy_... methods

References madness::Nemo::calc, compute_density(), madness::NemoBase::compute_kinetic_energy(), madness::Coulomb< T, NDIM >::compute_potential(), madness::QCPropertyInterface::density(), energy, madness::inner(), madness::World::rank(), and madness::NemoBase::world.

Referenced by compute_and_print_final_energies(), iterate(), and selftest().

◆ compute_energy_weighted_density_local()

real_function_3d madness::OEP::compute_energy_weighted_density_local ( const vecfuncT nemo,
const tensorT fock 
) const
inline

return without the NCF and factor 2 for closed shell !

follow Eq. (4) of Ryabinkin2014

References madness::dot(), madness::transform(), and madness::NemoBase::world.

Referenced by compute_ocep_correction(), iterate(), and selftest().

◆ compute_exchange_energy_conv()

double madness::OEP::compute_exchange_energy_conv ( const vecfuncT  phi,
const vecfuncT  Kphi 
) const
inline

compute exchange energy using the expectation value of the exchange operator

References madness::inner(), and madness::NemoBase::world.

Referenced by compute_and_print_final_energies(), and selftest().

◆ compute_exchange_energy_vir()

double madness::OEP::compute_exchange_energy_vir ( const vecfuncT nemo,
const real_function_3d  Vx 
) const
inline

compute Evir using Levy-Perdew virial relation (Kohut_2014, (43) or Ospadov_2017, (25))

References madness::dot(), madness::grad(), madness::inner(), madness::NemoBase::R_square, and madness::NemoBase::world.

Referenced by compute_and_print_final_energies(), iterate(), and selftest().

◆ compute_exchange_potential()

void madness::OEP::compute_exchange_potential ( const vecfuncT nemo,
vecfuncT Knemo 
) const
inline

◆ compute_fock_diagonal_elements()

Tensor< double > madness::OEP::compute_fock_diagonal_elements ( const Tensor< double > &  KS_eigvals,
const vecfuncT phi,
const vecfuncT Kphi,
const real_function_3d Vx 
) const
inline

compute diagonal elements of Fock matrix

References madness::inner(), and madness::NemoBase::world.

Referenced by compute_and_print_final_energies().

◆ compute_mrks_correction()

real_function_3d madness::OEP::compute_mrks_correction ( const real_function_3d mrks_numerator_HF,
const vecfuncT nemoHF,
const vecfuncT nemoKS 
) const
inline

◆ compute_nemo_potentials()

void madness::OEP::compute_nemo_potentials ( const vecfuncT nemo,
vecfuncT Jnemo,
vecfuncT Unemo 
) const
inline

compute all potentials from given nemos except kinetic energy

References compute_coulomb_potential(), and madness::NemoBase::world.

Referenced by iterate().

◆ compute_ocep_correction()

real_function_3d madness::OEP::compute_ocep_correction ( const real_function_3d ocep_numerator_HF,
const vecfuncT nemoHF,
const vecfuncT nemoKS,
const tensorT fockHF,
const tensorT fockKS 
) const
inline

◆ compute_Pauli_kinetic_density()

real_function_3d madness::OEP::compute_Pauli_kinetic_density ( const vecfuncT nemo) const
inline

compute the Pauli kinetic energy density divided by the density tau_P/rho with equation (16) from Ospadov, 2017

References madness::copy(), madness::CalculationParameters::dft_deriv(), madness::dot(), madness::grad(), madness::grad_bspline_one(), madness::Nemo::param, madness::refine(), sum, and madness::NemoBase::world.

Referenced by compute_mrks_correction(), iterate(), and selftest().

◆ compute_slater_potential()

real_function_3d madness::OEP::compute_slater_potential ( const vecfuncT nemo) const
inline

◆ compute_total_kinetic_density()

real_function_3d madness::OEP::compute_total_kinetic_density ( const vecfuncT nemo) const
inline

compute the total kinetic energy density of equation (6) from Kohut

return without the NCF and factor 2 for closed shell !

References madness::apply(), madness::copy(), madness::CalculationParameters::dft_deriv(), madness::dot(), madness::Nemo::param, madness::refine(), and madness::NemoBase::world.

Referenced by compute_dcep_correction(), iterate(), and selftest().

◆ get_final_potential()

real_function_3d madness::OEP::get_final_potential ( ) const
inline

References Vfinal.

◆ get_reference()

std::shared_ptr< Nemo > madness::OEP::get_reference ( ) const
inline

References reference.

Referenced by make_fock_operator(), and recompute_HF().

◆ help()

static void madness::OEP::help ( )
inlinestatic

References madness::print(), and madness::print_header2().

Referenced by main().

◆ iterate()

double madness::OEP::iterate ( const std::string  model,
const vecfuncT HF_nemo,
const tensorT HF_eigvals,
vecfuncT KS_nemo,
tensorT KS_Fock,
real_function_3d Voep,
const real_function_3d  Vs 
) const

References madness::Tensor< T >::absmax(), madness::SCF::analyze_vectors(), madness::Nemo::calc, madness::NemoBase::check_convergence(), compute_and_print_final_energies(), compute_dcep_correction(), compute_energy(), compute_energy_weighted_density_local(), compute_exchange_energy_vir(), compute_mrks_correction(), compute_nemo_potentials(), compute_ocep_correction(), compute_Pauli_kinetic_density(), compute_total_kinetic_density(), madness::copy(), madness::CalculationParameters::dconv(), madness::BaseTensor::dim(), madness::CalculationParameters::do_localize(), madness::Nemo::do_symmetry(), madness::CalculationParameters::econv(), energy, madness::Nemo::get_calc(), madness::OEP_Parameters::kain_param(), madness::BSHApply< T, NDIM >::levelshift, madness::OEP_Parameters::levelshift(), madness::BSHApply< T, NDIM >::lo, madness::Nemo::localize(), madness::matrix_inner(), madness::OEP_Parameters::maxiter(), madness::CalculationParameters::maxsub(), madness::BSHApply< T, NDIM >::metric, need_dcep_correction(), need_mrks_correction(), need_ocep_correction(), madness::norm2(), madness::NemoBase::normalize(), oep_param, madness::NemoBase::orthonormalize(), p(), madness::Nemo::param, madness::print(), madness::CalculationParameters::print_level(), madness::NemoBase::R, madness::NemoBase::R_square, madness::World::rank(), residual(), madness::Nemo::rotate_subspace(), madness::save(), madness::OEP_Parameters::save_iter_corrections(), madness::OEP_Parameters::saving_amount(), madness::projector_irrep::set_ordering(), madness::projector_irrep::set_orthonormalize_irreps(), madness::projector_irrep::set_verbosity(), madness::BaseTensor::size(), madness::World::size(), madness::stringify(), madness::Nemo::symmetry_projector, T(), madness::timer::tag(), madness::transform(), madness::truncate(), madness::wall_time(), and madness::NemoBase::world.

Referenced by solve().

◆ load_restartdata()

void madness::OEP::load_restartdata ( Tensor< double > &  fock)

◆ make_fock_operator()

std::shared_ptr< Fock< double, 3 > > madness::OEP::make_fock_operator ( ) const
virtual

◆ name()

std::string madness::OEP::name ( ) const
inlinevirtual

Reimplemented from madness::Nemo.

◆ need_dcep_correction()

bool madness::OEP::need_dcep_correction ( const std::string &  model) const
inline

Referenced by iterate().

◆ need_mrks_correction()

bool madness::OEP::need_mrks_correction ( const std::string &  model) const
inline

Referenced by iterate().

◆ need_ocep_correction()

bool madness::OEP::need_ocep_correction ( const std::string &  model) const
inline

Referenced by iterate().

◆ output_calc_info_schema()

void madness::OEP::output_calc_info_schema ( const double &  energy) const

update the json file with calculation input and output

References madness::Nemo::calc, energy, madness::OEP_Parameters::model(), oep_param, madness::Nemo::param, and madness::CalculationParameters::prefix().

Referenced by value().

◆ print_orbens()

void madness::OEP::print_orbens ( const tensorT  orbens) const
inline

print orbital energies in reverse order with optional shift

References madness::BaseTensor::size().

Referenced by compute_and_print_final_energies().

◆ print_parameters() [1/2]

static void madness::OEP::print_parameters ( )
inlinestatic

◆ print_parameters() [2/2]

void madness::OEP::print_parameters ( std::vector< std::string >  what) const
inline

◆ recompute_HF()

std::tuple< Tensor< double >, vecfuncT > madness::OEP::recompute_HF ( const vecfuncT HF_nemo) const

◆ save_restartdata()

void madness::OEP::save_restartdata ( const Tensor< double > &  fock) const

◆ selftest()

bool madness::OEP::selftest ( )
virtual

◆ set_reference()

void madness::OEP::set_reference ( const std::shared_ptr< Nemo reference1)
inline

References reference.

Referenced by OEP().

◆ solve()

double madness::OEP::solve ( const vecfuncT HF_nemo1)

Iterative energy calculation for approximate OEP with EXACT EXCHANGE functional for other functionals, slater potential must be modified HF orbitals and eigenvalues are used as the guess here note that KS_nemo is a reference and changes oep->get_calc()->amo orbitals same for orbital energies (eigenvalues) KS_eigvals which is oep->get_calc()->aeps converged if norm, total energy difference and orbital energy differences (if not OAEP) are converged

References madness::Nemo::calc, compute_slater_potential(), madness::copy(), energy, iterate(), load_restartdata(), madness::OEP_Parameters::model(), oep_param, madness::print(), recompute_HF(), madness::OEP_Parameters::restart(), madness::save(), save_restartdata(), madness::OEP_Parameters::saving_amount(), madness::syev(), Vfinal, and madness::NemoBase::world.

Referenced by selftest(), and value().

◆ value() [1/2]

virtual double madness::OEP::value ( )
inlinevirtual

Reimplemented from madness::Nemo.

References madness::Nemo::calc, and value().

Referenced by value().

◆ value() [2/2]

virtual double madness::OEP::value ( const Tensor< double > &  x)
inlinevirtual

Member Data Documentation

◆ oep_param

OEP_Parameters madness::OEP::oep_param
private

◆ reference

std::shared_ptr<Nemo> madness::OEP::reference
private

the wave function reference that determines the local potential

Referenced by OEP(), analyze(), compute_slater_potential(), get_reference(), print_parameters(), selftest(), set_reference(), and value().

◆ Vfinal

real_function_3d madness::OEP::Vfinal
private

The documentation for this class was generated from the following files: