rotex__symmetry Module

All things related to symmetry


Variables

Type Visibility Attributes Name Initial
integer, public, allocatable, save :: m_parity(:)

Array containing the parity (1/even or -1/odd) of an electronic channel based on its label m. This array is indexed by m directly. This is only for calculation in the Cs point group

integer, public, parameter :: Ap = 1
integer, public, parameter :: App = 2
integer, public, parameter :: Ag = 1
integer, public, parameter :: Au = 2
integer, public, parameter :: Bg = 3
integer, public, parameter :: Bu = 4
integer, public, parameter :: A = 1
integer, public, parameter :: A1 = 1
integer, public, parameter :: A2 = 4
integer, public, parameter :: B = 2
integer, public, parameter :: B1 = 2
integer, public, parameter :: B2 = 3
integer, public, parameter :: B3 = 4
integer, public, parameter :: B1g = 3
integer, public, parameter :: B1u = 4
integer, public, parameter :: B2g = 5
integer, public, parameter :: B2u = 6
integer, public, parameter :: B3g = 7
integer, public, parameter :: B3u = 8
integer, public, parameter :: even = 1
integer, public, parameter :: odd = -1

Interfaces

public interface is_spin_allowed

  • private pure elemental module function is_spin_allowed_chan(channel1, channel2, spin_isomer_kind, symaxis) result(res)

    Test if two rotational channels respect ortho/para symmetry

    Arguments

    Type IntentOptional Attributes Name
    type(asymtop_rot_channel_type), intent(in) :: channel1
    type(asymtop_rot_channel_type), intent(in) :: channel2
    integer, intent(in) :: spin_isomer_kind
    character(len=1), intent(in) :: symaxis

    Return Value logical

  • private pure elemental module function is_spin_allowed_qnums(nlo, kalo, kclo, nup, kaup, kcup, kind, symaxis) result(res)

    Determine if the transition Nlo,Kalo,Kclo -> Nup,Kaup,Kcup is allowed by nuclear spin symmetry selection rules

    Arguments

    Type IntentOptional Attributes Name
    integer, intent(in) :: nlo
    integer, intent(in) :: kalo
    integer, intent(in) :: kclo
    integer, intent(in) :: nup
    integer, intent(in) :: kaup
    integer, intent(in) :: kcup
    integer, intent(in) :: kind
    character(len=1), intent(in) :: symaxis

    Return Value logical

public interface is_spin_forbidden

  • private pure elemental module function is_spin_forbidden_chan(channel1, channel2, spin_isomer_kind, symaxis) result(res)

    Test if two rotational channels respect ortho/para symmetry

    Arguments

    Type IntentOptional Attributes Name
    type(asymtop_rot_channel_type), intent(in) :: channel1
    type(asymtop_rot_channel_type), intent(in) :: channel2
    integer, intent(in) :: spin_isomer_kind
    character(len=1), intent(in) :: symaxis

    Return Value logical

  • private pure elemental module function is_spin_forbidden_qnums(nlo, kalo, kclo, nup, kaup, kcup, kind, symaxis) result(res)

    Determine if the transition Nlo,Kalo,Kclo -> Nup,Kaup,Kcup is forbidden by nuclear spin symmetry selection rules

    Arguments

    Type IntentOptional Attributes Name
    integer, intent(in) :: nlo
    integer, intent(in) :: kalo
    integer, intent(in) :: kclo
    integer, intent(in) :: nup
    integer, intent(in) :: kaup
    integer, intent(in) :: kcup
    integer, intent(in) :: kind
    character(len=1), intent(in) :: symaxis

    Return Value logical


Functions

public pure module function group_size(point_group) result(n)

Return the number of elements in point_group

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: point_group

Return Value integer

public pure module function irrep_name(irrep, point_group) result(output)

Given an irrep index in point_group, return the name of the corresponding irrep

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: irrep
character(len=*), intent(in) :: point_group

Return Value character(len=:), allocatable

public pure module function possible_spin_symmetries(kind) result(res)

Returns an array of possible spin symmetry values

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: kind

Return Value integer, allocatable, (:)

public pure elemental module function spin_symmetry(n, ka, kc, kind, symaxis) result(res)

Returns the spin symmetry of the current N, Ka, Kc state

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: n
integer, intent(in) :: ka
integer, intent(in) :: kc
integer, intent(in) :: kind
character(len=1), intent(in) :: symaxis

Return Value integer


Subroutines

public pure module subroutine get_group_irreps(point_group, irreps)

Given the point group, output an array containing the names of the irreps in the supplied point_group. Only Abelian point groups are considered. Irreps in the code will be referred to by their indicies

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: point_group
character(len=:), intent(out), allocatable :: irreps(:)