DIPELM  2.0
dipelm_types Module Reference

Transition moment container types. More...

Data Types

interface  bound
 Holds set of bound states. More...
 
interface  channels
 Holds set of partial wave channels. More...
 
interface  continuum
 Holds set of continuum states. More...
 
type  molecule
 Molecule details. More...
 
interface  moments
 Transition moments container type.
More...
 
interface  operator(*)
 Used to apply tranformations to transition matrix elements (e.g. change of basis).
More...
 
interface  operator(+)
 Add two members of a type
More...
 
interface  operator(.eq.)
 Check if two members of a type are equal.
More...
 
interface  operator(.samemodel.)
 Check for equality of photoionization model between two members of a type
More...
 

Functions/Subroutines

subroutine print_bound (this, iwrite)
 
type(bound) function new_bound (nb)
 
logical function eq_bound (b1, b2)
 
subroutine print_channels (this, iwrite)
 
subroutine channels_occupancy (this, occ, lmax)
 Assigns a single canonical index to a partial wave channel. More...
 
type(channels) function new_channels (ni, nc)
 
logical function eq_channels (ch1, ch2)
 
logical function channels_from_same_model (ch1, ch2)
 
type(channels) function add_channels (ch1, ch2)
 
type(continuum) function new_continuum (nsym, ni, nc, ne, nmc)
 
logical function continuum_from_same_model (c1, c2)
 
subroutine print_continuum (this, iwrite, iprint)
 
type(continuum) function continuum_add (c1, c2)
 
type(moments) function new_moments (npw, nmc, ne, ni, nn, nc, nsym)
 
logical function moments_from_same_model (tm1, tm2)
 
type(moments) function add_moments (tm1, tm2)
 
type(moments) function left_matrix_multiply_moments (mat, tm)
 
type(moments) function right_matrix_multiply_moments (tm, mat)
 
subroutine print_moments (this, iwrite, iprint)
 
subroutine convert_moments (this, re_mom, im_mom)
 Converts moments from the format ouput by rsolve. More...
 

Variables

real(idp), parameter e_thresh = 1.d-6
 

Detailed Description

Transition moment container types.

Author
Alex Harvey
Date
2019

Types for holding transition moments and associated information.

Function/Subroutine Documentation

◆ add_channels()

type(channels) function dipelm_types::add_channels ( type(channels), intent(in)  ch1,
type(channels), intent(in)  ch2 
)
Here is the call graph for this function:

◆ add_moments()

type(moments) function dipelm_types::add_moments ( type(moments), intent(in)  tm1,
type(moments), intent(in)  tm2 
)

◆ channels_from_same_model()

logical function dipelm_types::channels_from_same_model ( type(channels), intent(in)  ch1,
type(channels), intent(in)  ch2 
)

◆ channels_occupancy()

subroutine dipelm_types::channels_occupancy ( class(channels this,
integer, dimension(:), allocatable  occ,
integer, optional  lmax 
)

Assigns a single canonical index to a partial wave channel.

\( j = (i-1)N_\mathrm{p} + l(l+1)+(m+1) \)

where \( N_\mathrm{p} = (l_{\mathrm{max}} + 1)^2 \) and \( i \) is the ionic state index.

Parameters
occ= returned array where entries are 1 if the canonical channel is occupied and 0 if not. Size = \( N_\mathrm{i} \times N_\mathrm{p} \), where \( N_\mathrm{i} \) is the number of ionic states.
lmax= the maximum l value for partial wave expansion of the continuum (optional)
See also
dipelm_special_functions::lm2i and dipelm_special_functions::i2lm
Here is the call graph for this function:

◆ continuum_add()

type(continuum) function dipelm_types::continuum_add ( type(continuum), intent(in)  c1,
type(continuum), intent(in)  c2 
)

◆ continuum_from_same_model()

logical function dipelm_types::continuum_from_same_model ( type(continuum), intent(in)  c1,
type(continuum), intent(in)  c2 
)
Here is the call graph for this function:

◆ convert_moments()

subroutine dipelm_types::convert_moments ( class(moments this,
real(idp), dimension(:,:,:,:)  re_mom,
real(idp), dimension(:,:,:,:)  im_mom 
)

Converts moments from the format ouput by rsolve.

Photoionization wave functions are kets in rsolve so dipole matrix elements have the form \( \langle \Phi_i| d |\Psi^{-}_f(E) \rangle \). Therefore matrix elements need to be conjugated.

Here is the call graph for this function:

◆ eq_bound()

logical function dipelm_types::eq_bound ( type(bound), intent(in)  b1,
type(bound), intent(in)  b2 
)
Here is the call graph for this function:

◆ eq_channels()

logical function dipelm_types::eq_channels ( type(channels), intent(in)  ch1,
type(channels), intent(in)  ch2 
)
Here is the call graph for this function:

◆ left_matrix_multiply_moments()

type(moments) function dipelm_types::left_matrix_multiply_moments ( complex(idp), dimension(:,:), intent(in)  mat,
type(moments), intent(in)  tm 
)

◆ moments_from_same_model()

logical function dipelm_types::moments_from_same_model ( type(moments), intent(in)  tm1,
type(moments), intent(in)  tm2 
)

◆ new_bound()

type(bound) function dipelm_types::new_bound ( integer  nb)

◆ new_channels()

type(channels) function dipelm_types::new_channels ( integer  ni,
integer  nc 
)

◆ new_continuum()

type(continuum) function dipelm_types::new_continuum ( integer  nsym,
integer, optional  ni,
integer, optional  nc,
integer, optional  ne,
integer, optional  nmc 
)

◆ new_moments()

type(moments) function dipelm_types::new_moments ( integer  npw,
integer  nmc,
integer  ne,
integer  ni,
integer  nn,
integer  nc,
integer  nsym 
)

◆ print_bound()

subroutine dipelm_types::print_bound ( class(bound this,
integer  iwrite 
)

◆ print_channels()

subroutine dipelm_types::print_channels ( class(channels this,
integer  iwrite 
)

◆ print_continuum()

subroutine dipelm_types::print_continuum ( class(continuum this,
integer  iwrite,
integer  iprint 
)

◆ print_moments()

subroutine dipelm_types::print_moments ( class(moments this,
integer  iwrite,
integer  iprint 
)

◆ right_matrix_multiply_moments()

type(moments) function dipelm_types::right_matrix_multiply_moments ( type(moments), intent(in)  tm,
complex(idp), dimension(:,:), intent(in)  mat 
)

Variable Documentation

◆ e_thresh

real(idp), parameter dipelm_types::e_thresh = 1.d-6