rotex__hamilton Module

Module containing procedures to construct and diagonalize rotational Hamiltonians



Subroutines

public module subroutine H_asym(N, eigenH, Bx, By, Bz, cd4, cd6)

Construct the symmetric top rigid-rotor Hamiltonian

Arguments

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

The rotational quantum number

type(eigenH_type), intent(out) :: eigenH

The eigenvectors and eigenvalues of The angular momentum number

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

Rotational constants

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

Rotational constants

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

Rotational constants

type(cd4_type), intent(in), optional :: cd4

The quartic centrifugal distortion parameters

type(cd6_type), intent(in), optional :: cd6

The sextic centrifugal distortion parameters

public module subroutine assign_projections(N, eigvecs, absKvals, sort_eigvecs)

Using the eigenvectors and energies from a diagonalized rotational Hamiltonian, determine which projection is maximal. The eigenvectors can be in the Ka or Kc basis. This routine will return the array Kvals which indicats the absolute value of the projection that contributes the most to a particular eigenvector

Arguments

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

The rotational quantum number

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

Eigenvectors

integer, intent(out), allocatable :: absKvals(:)

Array of the absolte value of |K| that contributes the most to a particular eigenvector

logical, intent(in), optional :: sort_eigvecs

Sort the eigenvectors ?

public module subroutine rotate_eigvecs(N, from_axis, to_axis, eigvecs)

Rotate the rigid rotor eigenvectors from one of the principal axes A,B,C to another principal axis A,B,C using the Wigner D-matrix

Arguments

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

The rotational angular moment quantum number

character(len=1), intent(inout) :: from_axis

On input, the starting z-axis. On output, the new z-axis

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

The target z-axis to which we rotate

complex(kind=dp), intent(inout) :: eigvecs(:,:)

The eigenvectors