ampsci
High-precision calculations for one- and two-valence atomic systems
Loading...
Searching...
No Matches
ExternalField::DiagramRPA

RPA correction to matrix elements, using Diagram technique. More...

#include <DiagramRPA.hpp>

+ Inheritance diagram for ExternalField::DiagramRPA:

Public Member Functions

 DiagramRPA (const DiracOperator::TensorOperator *const h, const std::vector< DiracSpinor > &basis, const HF::HartreeFock *in_hf, const std::string &atom="Atom")
 Normal constructor: needs core to split basis: only uses basis.
 
 DiagramRPA (const DiracOperator::TensorOperator *const h, const DiagramRPA *const drpa)
 Second constructor: copies over W matrices (depend only on k/pi)
 
virtual void solve_core (const double omega, int max_its=200, const bool print=true) override final
 Itterates the RPA equations for core electrons.
 
virtual Method method () const override final
 Returns RPA method.
 
virtual double dV (const DiracSpinor &Fa, const DiracSpinor &Fb) const override final
 Calculates RPA correction to matrix element: <A||dV||B>
 
double dV_diagram (const DiracSpinor &Fa, const DiracSpinor &Fb) const
 
virtual void clear () override final
 Clears the t_am and t_ma RPA ME's [RPA ME's for hole-excited] @Details If a previous run failed, can clear t_am's + re-try.
 
void update_t0s (const DiracOperator::TensorOperator *const h=nullptr)
 Updates lowest-order t_am matrix elements and resets RPA (+updates operator)
 
void grab_tam (const DiagramRPA *const drpa)
 Copies the tam (and tma) values across from different RPAD. If two operators are similar, this can save time on the itterations.
 
DiagramRPAoperator= (const DiagramRPA &)=delete
 
 DiagramRPA (const DiagramRPA &)=default
 
- Public Member Functions inherited from ExternalField::CorePolarisation
double last_eps () const
 Returns eps (convergance) of last solve_core run.
 
double last_its () const
 Returns its (# of iterations) of last solve_core run.
 
double last_omega () const
 Returns omega (frequency) of last solve_core run.
 
int rank () const
 
int parity () const
 
bool imagQ () const
 
double & eps_target ()
 Convergance target.
 
double eps_target () const
 Convergance target.
 
double eta () const
 Damping factor; 0 means no damping. Must have 0 <= eta < 1.
 
void set_eta (double eta)
 Set/update damping factor; 0 means no damping. Must have 0 <= eta < 1.
 
CorePolarisationoperator= (const CorePolarisation &)=delete
 
 CorePolarisation (const CorePolarisation &)=default
 

Additional Inherited Members

- Protected Member Functions inherited from ExternalField::CorePolarisation
 CorePolarisation (const DiracOperator::TensorOperator *const h)
 
- Protected Attributes inherited from ExternalField::CorePolarisation
const DiracOperator::TensorOperatorm_h
 
double m_core_eps {1.0}
 
int m_core_its {0}
 
double m_core_omega {0.0}
 
int m_rank
 
int m_pi
 
bool m_imag
 
double m_eta {0.4}
 
double m_eps {1.0e-10}
 

Detailed Description

RPA correction to matrix elements, using Diagram technique.

Constructor & Destructor Documentation

◆ DiagramRPA() [1/2]

ExternalField::DiagramRPA::DiagramRPA ( const DiracOperator::TensorOperator *const  h,
const std::vector< DiracSpinor > &  basis,
const HF::HartreeFock in_hf,
const std::string &  atom = "Atom" 
)

Normal constructor: needs core to split basis: only uses basis.

◆ DiagramRPA() [2/2]

ExternalField::DiagramRPA::DiagramRPA ( const DiracOperator::TensorOperator *const  h,
const DiagramRPA *const  drpa 
)

Second constructor: copies over W matrices (depend only on k/pi)

Member Function Documentation

◆ solve_core()

void ExternalField::DiagramRPA::solve_core ( const double  omega,
int  max_its = 200,
const bool  print = true 
)
finaloverridevirtual

Itterates the RPA equations for core electrons.

Implements ExternalField::CorePolarisation.

◆ method()

virtual Method ExternalField::DiagramRPA::method ( ) const
inlinefinaloverridevirtual

Returns RPA method.

Implements ExternalField::CorePolarisation.

◆ dV()

double ExternalField::DiagramRPA::dV ( const DiracSpinor Fa,
const DiracSpinor Fb 
) const
finaloverridevirtual

Calculates RPA correction to matrix element: <A||dV||B>

Implements ExternalField::CorePolarisation.

◆ clear()

void ExternalField::DiagramRPA::clear ( )
finaloverridevirtual

Clears the t_am and t_ma RPA ME's [RPA ME's for hole-excited] @Details If a previous run failed, can clear t_am's + re-try.

Implements ExternalField::CorePolarisation.

◆ update_t0s()

void ExternalField::DiagramRPA::update_t0s ( const DiracOperator::TensorOperator *const  h = nullptr)

Updates lowest-order t_am matrix elements and resets RPA (+updates operator)

◆ grab_tam()

void ExternalField::DiagramRPA::grab_tam ( const DiagramRPA *const  drpa)
inline

Copies the tam (and tma) values across from different RPAD. If two operators are similar, this can save time on the itterations.


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