ampsci
c++ program for high-precision atomic structure calculations of single-valence systems
|
Modules are run using calculated atomic wavefunctions. More...
Typedefs | |
using | module_function_t = void(*)(const IO::InputBlock &input, const Wavefunction &wf) |
function (function ptr) signature for modules | |
using | nkIndex = DiracSpinor::Index |
Functions | |
void | Kionisation (const IO::InputBlock &input, const Wavefunction &wf) |
Calculates atomic ionisation factor, Kion(E,q) = |<a|j_L|e>|^2, summed over core states, where E is deposited energy: E = |E_a| + e. More... | |
void | testBasis (const IO::InputBlock &input, const Wavefunction &wf) |
void | writeOrbitals (const IO::InputBlock &input, const Wavefunction &wf) |
Module: writes orbitals to text file (gnuplot format) | |
void | continuum (const IO::InputBlock &input, const Wavefunction &wf) |
Module to output continuum state wavefunctions to disk, and calculate matrix elements between them and bound states. | |
void | tests (const IO::InputBlock &input, const Wavefunction &wf) |
A range of run-time tests (orthonorm, <H>, sum rules etc.) – see input options. More... | |
void | Breit (const IO::InputBlock &input, const Wavefunction &wf) |
void | exampleModule (const IO::InputBlock &input, const Wavefunction &wf) |
Example module, designed as a "template" to help you add a new module. Note: if you add a new Module, you must also update module_lists.hpp, so it will be compiled into the rest of the code. | |
void | BW_effect (const std::vector< DiracSpinor > &valence, const DiracOperator::TensorOperator *const h0, const ExternalField::DiagramRPA *const rpa0, const DiracOperator::TensorOperator *const h, const ExternalField::DiagramRPA *const rpa) |
void | tune_Rmag (const DiracSpinor &Fv, const double eps_target, const std::optional< IO::InputBlock > &hfs_options, const Wavefunction &wf, const DiracOperator::TensorOperator *const h0, const ExternalField::DiagramRPA *const rpa0) |
void | BW_screening_factor (const Wavefunction &wf, const DiracOperator::TensorOperator *const h0, const ExternalField::DiagramRPA *const rpa0, const DiracOperator::TensorOperator *const h, const ExternalField::DiagramRPA *const rpa) |
void | fit (std::vector< double > &xd, std::vector< double > &yd, std::size_t terms) |
void | b_moments (const std::string &iso, const DiracSpinor &v, double R0_fm, int max_power) |
void | HFAnomaly (const IO::InputBlock &input, const Wavefunction &wf) |
Calculates hyperfine anomaly: BW effect, differential anomaly, fits Rmag. | |
void | fieldShift (const IO::InputBlock &input, const Wavefunction &wf) |
void | fieldShift_direct (const IO::InputBlock &input, const Wavefunction &wf) |
void | ladder (const IO::InputBlock &input, const Wavefunction &wf) |
Module for testing ladder diagram implementation. | |
void | check_L_symmetry (const std::vector< DiracSpinor > &core, const std::vector< DiracSpinor > &excited, const std::vector< DiracSpinor > &valence, const Coulomb::QkTable &qk, bool include_L4, const Angular::SixJTable &sj, const Coulomb::LkTable *const lk) |
void | lifetimes (const IO::InputBlock &input, const Wavefunction &wf) |
Calculates lifetimes (E1, E2, M1) | |
void | matrixElements (const IO::InputBlock &input, const Wavefunction &wf) |
Calculates matrix elements of any tensor operator, with RPA. | |
void | structureRad (const IO::InputBlock &input, const Wavefunction &wf) |
Calculates Structure Radiation + Normalisation of States. More... | |
void | normalisation (const IO::InputBlock &input, const Wavefunction &wf) |
void | CI_matrixElements (const IO::InputBlock &input, const Wavefunction &wf) |
Calculates matrix elements for CI wavefunctions. | |
void | muon (const IO::InputBlock &input, const Wavefunction &wf) |
Calculating muonic wavefunctions, energies, matrix elements. | |
void | muonPV (const IO::InputBlock &input, const Wavefunction &wf) |
Muonic parity violation tests. | |
void | calculatePNC (const IO::InputBlock &input, const Wavefunction &wf) |
Calculates E1 PNC amplitude. More... | |
void | polarisability (const IO::InputBlock &input, const Wavefunction &wf) |
Calculate atomic (dipole) polarisability, alpha, at given frequency. More... | |
void | dynamicPolarisability (const IO::InputBlock &input, const Wavefunction &wf) |
Calculate dynamic (dipole) polarisability, alpha(w), as fn of frequency. | |
void | transitionPolarisability (const IO::InputBlock &input, const Wavefunction &wf) |
Transition polarisabilities, alpha (and later beta) | |
void | QED (const IO::InputBlock &input, const Wavefunction &wf) |
Calculates QED corrections to energies and matrix elements. | |
void | runModules (const IO::InputBlock &input, const Wavefunction &wf) |
Loops through all given modules, runs them one at a time. | |
void | runModule (const IO::InputBlock &input, const Wavefunction &wf) |
Figures out which module to run (Must be updated for each new module!) | |
void | list_modules () |
Lists all available modules. | |
void | screeningFactors (const IO::InputBlock &input, const Wavefunction &wf) |
Calculates effective exchange screening factors (Correlation Potential) | |
void | thirdOrderME (const IO::InputBlock &input, const Wavefunction &wf) |
Example module, designed as a "template" to help you add a new module. Note: if you add a new Module, you must also update module_lists.hpp, so it will be compiled into the rest of the code. | |
void | VQE (const IO::InputBlock &input, const Wavefunction &wf) |
Just a test: example for playing with VQE. | |
void | write_H (const LinAlg::Matrix< double > &Hci, const std::string &csf_fname) |
void | write_CSFs (const std::vector< CI::CSF2 > &CSFs, int twoJ, const std::map< nkm, int > &orbital_map, const std::string &csf_fname) |
template<class Integrals > | |
void | write_CoulombIntegrals (const std::string &fname, const std::vector< DiracSpinor > &ci_sp_basis, const std::map< nkm, int > &orbital_map, const Integrals &qk) |
Modules are run using calculated atomic wavefunctions.
After the pogram has generated wavefunctions (Hartree-Fock etc), any number of modules can then be run (see input documentation for how to run them). Examples include: calculating matrix elements, lifetimes, PNC etc.
To add a new module:
void Module::calculatePNC | ( | const IO::InputBlock & | input, |
const Wavefunction & | wf | ||
) |
Calculates E1 PNC amplitude.
Uses both 'solving equations' (TDHF) and sum-over-states methods. For solving equations, calculates both:
Allowed inputs:
Module::pnc{ c; t; transition; rpa; omega; nmain; }
void Module::Kionisation | ( | const IO::InputBlock & | input, |
const Wavefunction & | wf | ||
) |
Calculates atomic ionisation factor, Kion(E,q) = |<a|j_L|e>|^2, summed over core states, where E is deposited energy: E = |E_a| + e.
XXX print each nk
void Module::polarisability | ( | const IO::InputBlock & | input, |
const Wavefunction & | wf | ||
) |
Calculate atomic (dipole) polarisability, alpha, at given frequency.
void Module::structureRad | ( | const IO::InputBlock & | input, |
const Wavefunction & | wf | ||
) |
Calculates Structure Radiation + Normalisation of States.
Note: Most input options are similar to MatrixElements module:
Module::structureRad{ operator; options; rpa; printBoth; onlyDiagonal; omega; n_minmax; }
n_minmax: is input as list of ints: n_minmax = min,max; min: minimum n for core states kept in summations max: maximum n for excited states kept in summations
For explanation of the rest, see MatrixElements module.
void Module::tests | ( | const IO::InputBlock & | input, |
const Wavefunction & | wf | ||
) |
A range of run-time tests (orthonorm, <H>, sum rules etc.) – see input options.
Note: These are run-time tests to ensure input params were OK, not unit tests! (see unitTests.cpp for unit tests)