rotex__CBXS Module

Routines to calculate cross sections in the Coulomb-Born approximation


Functions

public impure elemental function M(l, ki, kf, Z) result(res)

Calculates the integral via the expression given in "Electromagnetic Excitation: Theory of Coulomb Excitation with Heavy Ions " by Kurt Alder and Aage Winther, Chapter IX, section 2, page 244, equation 14. for λ = 1, where . There is an expression for λ = 2 in "Study of Nuclear Structure by Electromagnetic Excitation with Accelerated Ions" by K. Alder, A. Bohr, T. Huus, B. Mottelson, and A. Winther, but only the dipole is used (at least for now).

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: l
real(kind=dp), intent(in) :: ki
real(kind=dp), intent(in) :: kf
integer, intent(in) :: Z

Return Value complex(kind=dp)


Subroutines

public module subroutine get_einsta_only(einsta, nlo, nup, elo, eup, eigveclo, eigvecup, use_CDMS, do_dipole, do_quadrupole, dipole_moments, quadrupole_moments)

Calculate only the Einstein A coefficeints for a transition

Arguments

Type IntentOptional Attributes Name
real(kind=dp), intent(inout) :: einsta

The Einstein coefficient for the transition

integer, intent(in) :: nlo

the angular momentum quantum number

integer, intent(in) :: nup

the angular momentum quantum number

real(kind=dp), intent(in) :: elo

The energy (hartrees) of the initial state

real(kind=dp), intent(in) :: eup

The energy (hartrees) of the final state

complex(kind=dp), intent(in), allocatable :: eigveclo(:)

Eigenvector of the initial state in the basis of symmetric top wavefunctions; the coefficients (c^{N,\tau}_K)

complex(kind=dp), intent(in), allocatable :: eigvecup(:)

Eigenvector of the final state in the basis of symmetric top wavefunctions; the coefficients (c^{N',\tau'}_{K})

logical, intent(in) :: use_CDMS

Whether to calculate the Einstein A coefficients ourselves (.true.) or to use values obtained from the CDMS catalogue (.false.)

logical, intent(in) :: do_dipole
logical, intent(in) :: do_quadrupole
complex(kind=dp), intent(in), target :: dipole_moments(3)

The spherical dipole moments

complex(kind=dp), intent(in), target :: quadrupole_moments(5)

The spherical quadrupole moments

public module subroutine get_CB_xs_asym(energies, sigma, Z, rotor_kind, N, Np, E, Ep, eigvec, eigvecp, einsta, use_CDMS, do_dipole, do_quadrupole, dipole_moments, quadrupole_moments, analytic_total_cb, lmax)

Calculate the excitation and de-excitation cross sections (xs) for an asymmetric top up. The sum over partial waves is either truncated to or determined analytically. The summation over the angular momentum components, multipole terms, and partial waves are separable for each value of λ as summation = (sum over angular momentum and multipole moments) (sum overpartial waves).

Arguments

Type IntentOptional Attributes Name
real(kind=dp), intent(in) :: energies(:)

Array of scattering energies to consider

real(kind=dp), intent(out), allocatable :: sigma(:)

Cross sections calculated on a grid of scattering energies for Returned with the same size as energies

integer, intent(in) :: Z

Target charge

character(len=1), intent(in) :: rotor_kind

The kind of rotor we're dealing with: a(symmetric top), s(ymmetric top), l(inear rotor)

integer, intent(in) :: N

the angular momentum quantum number

integer, intent(in) :: Np

the angular momentum quantum number

real(kind=dp), intent(in) :: E

The energy (hartrees) of the initial state

real(kind=dp), intent(in) :: Ep

The energy (hartrees) of the final state

complex(kind=dp), intent(in) :: eigvec(:)

Eigenvector of the initial state in the basis of symmetric top wavefunctions; the coefficients (c^{N,\tau}_K)

complex(kind=dp), intent(in) :: eigvecp(:)

Eigenvector of the final state in the basis of symmetric top wavefunctions; the coefficients (c^{N',\tau'}_{K})

real(kind=dp), intent(inout) :: einsta

The Einstein coefficient for the transition

logical, intent(in) :: use_CDMS

Whether to calculate the Einstein A coefficients ourselves (.true.) or to use values obtained from the CDMS catalogue (.false.)

logical, intent(in) :: do_dipole
logical, intent(in) :: do_quadrupole
complex(kind=dp), intent(in), target :: dipole_moments(3)

The spherical dipole moments

complex(kind=dp), intent(in), target :: quadrupole_moments(5)

The spherical quadrupole moments

logical, intent(in) :: analytic_total_cb(:)

Array of values telling us whether we want to use the analytic expression for lmax -> infintiy

integer, intent(in) :: lmax

The max value of the orbital angular momentum quantum number l to consider

public module subroutine xtrapolate_cb_xs(Ei_xtrap, Ethresh, nE_xtrap, Eel, xs_pcb, xs_tcb)

Extrapolate an excitation/de-excitation cross section to its excitation threshold. Use a power law scaling by fitting the first 2 points. Re-allocates Eel and xs to contain the extrapolated values

Arguments

Type IntentOptional Attributes Name
real(kind=dp), intent(in) :: Ei_xtrap

Extrapolate down Ethresh + Ei_xtrap

real(kind=dp), intent(in) :: Ethresh

The excitation threshold

integer, intent(in) :: nE_xtrap

Number of extrapolation energies

real(kind=dp), intent(inout), allocatable :: Eel(:)

On input, the electron energy grid. On output, the electron energy grid with extrapolated energies prepended

real(kind=dp), intent(inout), allocatable :: xs_pcb(:)

On input, the partial Coulomb-Born cross sections. On output, the partial Coulomb-Born cross sections with extrapolated cross sections prepended

real(kind=dp), intent(inout), allocatable :: xs_tcb(:)

On input, the total Coulomb-Born cross sections. On output, the total Coulomb-Born cross sections with extrapolated cross sections prepended