ampsci
High-precision calculations for one- and two-valence atomic systems
Kion Namespace Reference

Detailed Description

Functions for atomic ionisation form factors.

Enumerations

enum class  Coupling {
  Vector , Scalar , AxialVector , PseudoScalar ,
  Error
}
 DM-electron couplings. More...
 
enum class  OutputFormat { matrix , xyz , Error }
 Format for output file. More...
 
enum class  Units { Atomic , Particle , Error }
 Units used in output file. More...
 

Functions

LinAlg::Matrix< double > calculateK_nk (const HF::HartreeFock *vHF, const DiracSpinor &Fnk, int max_L, const Grid &Egrid, const DiracOperator::jL *jl, bool force_rescale, bool hole_particle, bool force_orthog, bool zeff_cont, bool zeff_bound, double ec_cut=1.0e99)
 Calculates ionisation factor K(E,q) for given core state, Fnk, using standard method. Stored as matrix. use_rpa0 is flag for including lowest-order RPA (i.e., with zero iterations)
 
std::array< LinAlg::Matrix< double >, 13 > calculate_formFactors_nk (const HF::HartreeFock *vHF, const DiracSpinor &Fa, int lc_min, int lc_max, double ec_min, double ec_max, bool force_rescale, bool hole_particle, bool force_orthog, const std::vector< double > &Egrid, const std::vector< double > &qgrid, bool diagonal_Eq, bool low_q, const SphericalBessel::JL_table &jK_tab, int Kmin, int Kmax, bool vectorQ, bool axialQ, bool scalarQ, bool pseudoscalarQ, bool spatialQ)
 Calculates all 13 form factors (V,A,S,P) for a single core state Fa.
 
bool check_radial_grid (double Emax, double qmax, const Grid &rgrid)
 Checks if radial grid is dense enough at large r for continuum state.
 
void write_to_file_xyz (const std::string &filename, const std::vector< double > &E_grid, const std::vector< double > &q_grid, const std::vector< std::string > &titles, const std::vector< std::string > &descriptions, std::vector< LinAlg::Matrix_view< const double > > factors, Units units=Units::Particle, int num_digits=6, bool diagonal=false)
 Writes ouput file in 'xyz' form: for easy 2D interpolation.
 
void write_to_file_xyz_13 (const std::string &filename, const std::vector< double > &E_grid, const std::vector< double > &q_grid, const std::vector< std::string > &titles, const std::vector< std::string > &descriptions, const std::array< LinAlg::Matrix< double >, 13 > K_factors, Units units, int num_digits, bool diagonal)
 
void write_to_file_matrix (const LinAlg::Matrix< double > &K, const std::vector< double > &E_grid, const std::vector< double > &q_grid, const std::string &filename, int num_digits=5, Units units=Units::Particle)
 Writes ouput file in matrix form.
 

Enumeration Type Documentation

◆ Coupling

enum class Kion::Coupling
strong

DM-electron couplings.

◆ OutputFormat

enum class Kion::OutputFormat
strong

Format for output file.

xyz: For easy 2D interpolation. list formmated with each row 'E q K(E,q)' gnuplot: For easy plotting. Each column is new E. matrix: Outputs entire matrix in table form. E and q grids printed prior.

◆ Units

enum class Kion::Units
strong

Units used in output file.

Atomic: [q] = [1/a_0], [E] = Hartree; Particle: [q] = eV, [E] = eV;

Function Documentation

◆ calculateK_nk()

LinAlg::Matrix< double > Kion::calculateK_nk ( const HF::HartreeFock vHF,
const DiracSpinor Fnk,
int  max_L,
const Grid Egrid,
const DiracOperator::jL jl,
bool  force_rescale,
bool  hole_particle,
bool  force_orthog,
bool  zeff_cont,
bool  zeff_bound,
double  ec_cut 
)

Calculates ionisation factor K(E,q) for given core state, Fnk, using standard method. Stored as matrix. use_rpa0 is flag for including lowest-order RPA (i.e., with zero iterations)

◆ calculate_formFactors_nk()

std::array< LinAlg::Matrix< double >, 13 > Kion::calculate_formFactors_nk ( const HF::HartreeFock vHF,
const DiracSpinor Fa,
int  lc_min,
int  lc_max,
double  ec_min,
double  ec_max,
bool  force_rescale,
bool  hole_particle,
bool  force_orthog,
const std::vector< double > &  Egrid,
const std::vector< double > &  qgrid,
bool  diagonal_Eq,
bool  low_q,
const SphericalBessel::JL_table jK_tab,
int  Kmin,
int  Kmax,
bool  vectorQ,
bool  axialQ,
bool  scalarQ,
bool  pseudoscalarQ,
bool  spatialQ 
)

Calculates all 13 form factors (V,A,S,P) for a single core state Fa.

Returns an array of 13 matrices: {K_VT, K_VE, K_VM, K_VL, K_T5, K_E5, K_M5, K_L5, K_X, K_X5, K_Z, K_S, K_S5}.

Note
: Matrix will be empty (0x0) if not calculated (set by bool).
: order is important

◆ check_radial_grid()

bool Kion::check_radial_grid ( double  Emax_au,
double  qmax_au,
const Grid rgrid 
)

Checks if radial grid is dense enough at large r for continuum state.

◆ write_to_file_xyz()

void Kion::write_to_file_xyz ( const std::string &  filename,
const std::vector< double > &  E_grid,
const std::vector< double > &  q_grid,
const std::vector< std::string > &  titles,
const std::vector< std::string > &  descriptions,
std::vector< LinAlg::Matrix_view< const double > >  factors,
Units  units = Units::Particle,
int  num_digits = 6,
bool  diagonal = false 
)

Writes ouput file in 'xyz' form: for easy 2D interpolation.

xyz: For easy 2D interpolation. list formmated with each row 'E q K(E,q)'

◆ write_to_file_matrix()

void Kion::write_to_file_matrix ( const LinAlg::Matrix< double > &  K,
const std::vector< double > &  E_grid,
const std::vector< double > &  q_grid,
const std::string &  filename,
int  num_digits = 5,
Units  units = Units::Particle 
)

Writes ouput file in matrix form.

matrix : Outputs entire matrix in table form. E and q grids printed prior. In K[E,q] form: each column is different q