|
ampsci
High-precision calculations for one- and two-valence atomic systems
|
Like TDHF, but solves the TDHF equations via basis expansion.
Same physics as TDHF; see that class for full description. The perturbed core orbitals are found via the basis expansion
\[ \varphi^a_\pm = \sum_n \frac{\ket{n}\matel{n}{t_\pm + \delta V_\pm}{a}}{\en_a - \en_n \pm \omega}, \]
rather than by solving the inhomogeneous ODE directly.
#include <TDHFbasis.hpp>
Inheritance diagram for ExternalField::TDHFbasis:Public Member Functions | |
| TDHFbasis (const DiracOperator::TensorOperator *const h, const HF::HartreeFock *const hf, const std::vector< DiracSpinor > &basis) | |
| Constructs TDHFbasis for operator h using the provided basis. | |
| virtual void | solve_core (const double omega, int max_its=100, const bool print=true) override final |
| See TDHF::solve_core(); same notes and warnings apply. | |
| virtual Method | method () const override final |
| Returns RPA method. | |
| DiracSpinor | form_dPsi (const DiracSpinor &Fv, const double omega, dPsiType XorY, const int kappa_beta, const std::vector< DiracSpinor > &spectrum, StateType st=StateType::ket, bool incl_dV=true) const |
| Forms varphi^v_pm for valence state Fv: single kappa channel. | |
| std::vector< DiracSpinor > | form_dPsis (const DiracSpinor &Fv, const double omega, dPsiType XorY, const std::vector< DiracSpinor > &spectrum, StateType st=StateType::ket, bool incl_dV=true) const |
| Forms varphi^v_pm for valence state Fv: all kappa channels. | |
| TDHFbasis & | operator= (const TDHFbasis &)=delete |
| TDHFbasis (const TDHFbasis &)=default | |
Public Member Functions inherited from ExternalField::TDHF | |
| TDHF (const DiracOperator::TensorOperator *const h, const HF::HartreeFock *const hf) | |
| Constructs TDHF for operator h. | |
| virtual void | clear () override final |
| Clears the internal state back to pre solve_core() | |
| double | dV (const DiracSpinor &Fa, const DiracSpinor &Fb, bool conj) const |
| Returns reduced matrix element \(\redmatel{a}{\delta V}{b}\), or the conjugate \(\redmatel{a}{\delta V^\dagger}{b}\) if conj=true. | |
| virtual double | dV (const DiracSpinor &Fa, const DiracSpinor &Fb) const override final |
| Returns reduced matrix element <n||dV_pm||m> (see namespace doc for dV_pm) | |
| DiracSpinor | dV_rhs (int kappa_n, const DiracSpinor &Fm, bool conj=false) const override |
| Returns [dV_pm * phi_m]_kappa: RHS of TDHF eq., projected onto kappa (see namespace doc) | |
| const std::vector< DiracSpinor > & | get_dPsis (const DiracSpinor &Fc, dPsiType XorY) const |
| Returns const ref to dPsi orbitals for given core orbital Fc. | |
| const DiracSpinor & | get_dPsi_x (const DiracSpinor &Fc, dPsiType XorY, const int kappa_x) const |
| Returns const ref to dPsi orbital of given kappa. | |
| DiracSpinor | solve_dPsi (const DiracSpinor &Fv, const double omega, dPsiType XorY, const int kappa_beta, const MBPT::CorrelationPotential *const Sigma=nullptr, StateType st=StateType::ket, bool incl_dV=true) const |
| Forms \(\varphi^v_\pm\) for valence state Fv (including core pol.): single kappa channel. | |
| std::vector< DiracSpinor > | solve_dPsis (const DiracSpinor &Fv, const double omega, dPsiType XorY, const MBPT::CorrelationPotential *const Sigma=nullptr, StateType st=StateType::ket, bool incl_dV=true) const |
| Forms \(\varphi^v_\pm\) for all kappa channels; see solve_dPsi. | |
| TDHF & | operator= (const TDHF &)=delete |
| TDHF (const TDHF &)=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 |
| Rank of the operator. | |
| int | parity () const |
| Parity of the operator. | |
| bool | imagQ () const |
| Returns true if the operator is imaginary. | |
| 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. | |
| CorePolarisation & | operator= (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::TDHF | |
| std::vector< std::vector< DiracSpinor > > | m_X {} |
| std::vector< std::vector< DiracSpinor > > | m_Y {} |
| std::vector< std::vector< DiracSpinor > > | m_hFcore {} |
| const HF::HartreeFock *const | p_hf |
| const std::vector< DiracSpinor > | m_core |
| const double | m_alpha |
| const HF::Breit *const | p_VBr |
Protected Attributes inherited from ExternalField::CorePolarisation | |
| const DiracOperator::TensorOperator * | m_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} |
| ExternalField::TDHFbasis::TDHFbasis | ( | const DiracOperator::TensorOperator *const | h, |
| const HF::HartreeFock *const | hf, | ||
| const std::vector< DiracSpinor > & | basis | ||
| ) |
Constructs TDHFbasis for operator h using the provided basis.
| h | External field operator. |
| hf | HF::HartreeFock object defining the core. |
| basis | Single-particle basis used to expand \( \varphi^a_\pm \). The entire basis is used; caller must ensure all required states are present. |
|
finaloverridevirtual |
See TDHF::solve_core(); same notes and warnings apply.
Reimplemented from ExternalField::TDHF.
|
inlinefinaloverridevirtual |
Returns RPA method.
Reimplemented from ExternalField::TDHF.
| DiracSpinor ExternalField::TDHFbasis::form_dPsi | ( | const DiracSpinor & | Fv, |
| const double | omega, | ||
| dPsiType | XorY, | ||
| const int | kappa_beta, | ||
| const std::vector< DiracSpinor > & | spectrum, | ||
| StateType | st = StateType::ket, |
||
| bool | incl_dV = true |
||
| ) | const |
Forms varphi^v_pm for valence state Fv: single kappa channel.
Solves the TDHF equation via basis expansion for a single kappa channel; see TDHF::solve_dPsi() for the equation. Returns \( \chi_\beta \) for given kappa_beta, where
\[ X_{j,m} = (-1)^{j_\beta-m}tjs(j,k,j;-m,0,m)\chi_j. \]
| Fv | Valence state \( \phi_v \). |
| omega | Perturbation frequency \( \omega \). |
| XorY | Selects X or Y solution; see dPsiType. |
| kappa_beta | Kappa quantum number of the target channel. |
| spectrum | Single-particle spectrum used to expand the solution. |
| st | Bra or ket convention; see StateType. |
| incl_dV | Include the induced potential \( \delta V \) if true. |
| std::vector< DiracSpinor > ExternalField::TDHFbasis::form_dPsis | ( | const DiracSpinor & | Fv, |
| const double | omega, | ||
| dPsiType | XorY, | ||
| const std::vector< DiracSpinor > & | spectrum, | ||
| StateType | st = StateType::ket, |
||
| bool | incl_dV = true |
||
| ) | const |
Forms varphi^v_pm for valence state Fv: all kappa channels.
Calls form_dPsi() for all allowed \( \kappa \) channels.