c++ program for high-precision atomic structure calculations of single-valence systems

brief Descpription of modules system: available modules and options

  • The modules system allows the easy calculation of any atomic properties after the wavefunction has been calculated.
  • Any number of modules can be run by adding ‘Module::moduleName{}’ blocks.
  • The code is designed so that you can easily create your own modules. See doc/ for details

Get a list of available modules: ./ampsci -m

Output will look something like this:

Available modules:
* Tests
Some basic wavefunction numerical tests
* testBasis
Tests of basis and spectrum
* WriteOrbitals
Write orbitals to disk for plotting
Calculates matrix elements of any operator
Calculates matrix elements of any operator for CI wavefunctions
Calculates Third-order matrix elements
Calculate radiative lifetimes (E1, E2, M1)
Calculates static polarisabilities
Calculates dynamic polarisabilities
Calculates transition polarisabilities
Calculates Struct. Rad + Normalisation corrections to MEs
Calculates field-shift constants (isotope shift)
QED corrections to energies/matrix elements
* Breit
Breit corrections to energies
Calculates ladder diagrams and energy corrections
Calculate atomic ionisation form-factors
Compute and use continuum wavefunctions
Calculates Bohr-Weisskopf effect and hyperfine anomaly
Calculates Feynman electron screening factors
* pnc
Calculates APV amplitudes
For testing/playing with muonic PV
For testing/playing with VQE method
A short description of the module
Functions and classes for Configuration Interaction calculations.
Definition: CI.hpp:7
double A(double Z, int l=0)
Al(Z) fitting function [PRA 93, 052509 (2016)].
Definition: FGRadPot.cpp:121
void fieldShift(const IO::InputBlock &input, const Wavefunction &wf)
Calculates field shift: F = d(E)/d(<r^2>)
Definition: isotopeShift.cpp:11
void screeningFactors(const IO::InputBlock &input, const Wavefunction &wf)
Calculates effective exchange screening factors (Correlation Potential)
Definition: screeningFactors.cpp:12
void structureRad(const IO::InputBlock &input, const Wavefunction &wf)
Calculates Structure Radiation + Normalisation of States.
Definition: matrixElements.cpp:347
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,...
Definition: thirdOrder.cpp:18
void tests(const IO::InputBlock &input, const Wavefunction &wf)
A range of run-time tests (orthonorm, <H>, sum rules etc.) – see input options.
Definition: basic.cpp:493
void CI_matrixElements(const IO::InputBlock &input, const Wavefunction &wf)
Calculates matrix elements for CI wavefunctions.
Definition: matrixElements.cpp:581
void QED(const IO::InputBlock &input, const Wavefunction &wf)
Calculates QED corrections to energies and matrix elements.
Definition: qed.cpp:20
void muonPV(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,...
Definition: muonPV.cpp:16
void ladder(const IO::InputBlock &input, const Wavefunction &wf)
Module for testing ladder diagram implementation.
Definition: ladder.cpp:18
void dynamicPolarisability(const IO::InputBlock &input, const Wavefunction &wf)
Calculate dynamic (dipole) polarisability, alpha(w), as fn of frequency.
Definition: polarisability.cpp:271
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,...
Definition: Module_Kionisation.cpp:48
void continuum(const IO::InputBlock &input, const Wavefunction &wf)
Module to output continuum state wavefunctions to disk, and calculate matrix elements between them an...
Definition: basic.cpp:367
void matrixElements(const IO::InputBlock &input, const Wavefunction &wf)
Calculates matrix elements of any tensor operator, with RPA.
Definition: matrixElements.cpp:30
void lifetimes(const IO::InputBlock &input, const Wavefunction &wf)
Calculates lifetimes (E1, E2, M1)
Definition: lifetimes.cpp:36
void transitionPolarisability(const IO::InputBlock &input, const Wavefunction &wf)
Transition polarisabilities, alpha (and later beta)
Definition: polarisability.cpp:602
void HFAnomaly(const IO::InputBlock &input, const Wavefunction &wf)
Calculates hyperfine anomaly: BW effect, differential anomaly, fits Rmag.
Definition: HFAnomaly.cpp:326
void polarisability(const IO::InputBlock &input, const Wavefunction &wf)
Calculate atomic (dipole) polarisability, alpha, at given frequency.
Definition: polarisability.cpp:27
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,...
Definition: exampleModule.cpp:9
void VQE(const IO::InputBlock &input, const Wavefunction &wf)
Just a test: example for playing with VQE.
Definition: VQE.cpp:26

You can also get most of this information directly from the command-line:

  • ./ampsci -m <ModuleName>
    • Prints list of available Modules (same as –modules)
    • ModuleName is optional. If given, will list available options for that Module
    • Note the output is in the same format as required by the input file - you can copy+paste this into your input file.
./ampsci -m MatrixElements
// Available Module::MatrixElements options/blocks
// e.g., E1, hfs (see ampsci -o for available operators)
// options specific to operator (see ampsci -o 'operator')
// Method used for RPA: true(=TDHF), false, TDHF, basis, diagram [true]
// Text or number. Freq. for RPA (and freq. dependent operators). Put 'each'
// to solve at correct frequency for each transition. [0.0]
// print <a|h|b> and <b|h|a> [false]
// If true (and spectrum available), will use spectrum for valence states
// [false]
// Calculate diagonal matrix elements (if non-zero) [true]
// Calculate off-diagonal matrix elements (if non-zero) [true]
// Options for Structure Radiation and normalisation (details below)
// Available StructureRadiation options/blocks
// If this block is included, SR + Normalisation corrections will be included
// true/false/filename - SR: filename for QkTable file. If blank will not use
// QkTable; if exists, will read it in; if doesn't exist, will create it and
// write to disk. If 'true' will use default filename. Save time (10x) at cost
// of memory. Note: Using QkTable implies splines used for diagram legs
// list; min,max n for core/excited: [1,inf]