RichMol: Interfacing with other molecular codes
Richmol is a package aimed at providing simple and efficient platform for simulations of ro-vibrational energies, spectra, and dynamics in the presence of external (laser) and induced internal (hyperfine) electromagnetic fields for general molecule [18OwYa], [21SaYaZa]. Richmol can be interfaced with other variational codes, like TROVE and Duo.
The role of TROVE is to provide the interacting molecular properties (dipole moments, polarizabilities etc) in the so-called spectral representations, i.e.inthe representation of field-free ro-vibrational eigenfunctions. Consider, e.g., a Hamiltonian operator describing the molecule interacting with a general time-dependent electro-magnetic field
:

where
is a dipole moment vector and
is a polarizability rank 2 tensor. In the spectral representation,
is given by the matrix elements
(1)
where
is an eigenfunction and
is an eigenvalue of the field free Hamiltonian:
(2)
is the rotational angular momentum,
is its projection on the space-fixed axis
,
is an irrep of the (field-free) molecule and
is a general eigen-state counting number. Thus, this is TROVE’s role to solve Eq. (2) and to compute the corresponding matrix elements of the properties in Eq. (1). It is then the role of RichMol to find the time dependent solution for the molecule interacting with
and thus to solve for the molecular dynamics:

Similarity, RichMol can be also used to solve a general eigen-problem

in a spectral representation of an unperturbed Hamiltonian (Eq. (2)):

How to interface TROVE with RichMol
First of all, the user must provide a Fortan subroutine for the property in question for calculating their values at any arbitrary molecular geometry :math`vec{r}`. Consider e.g. a polarizability tensor
as a set of surface components
, where
are projections on the molecular fixed axes. In TROVE, the property is processed through the block External in the same way as for the dipoles or for the correction of PEF used in refinements.
Step 1
Control
Step 1
external
end
Follow the same general procedure described in TROVE Quick start and use the external block to define the polarizability components, e.g.
external
dimension 6
NPARAM 5 2 2 2 2 2
DMS_TYPE ALPHA_C2H6_ZERO
COEFF list
COORDS linear
Order 0
compact
parameters
re1 1.52563613
re2 1.09068849
beta 111.19731929
alphaxx0 -26.595
alphaxx3 0.1004
alphaxy0 0.0
alphaxy3 0.0
alphaxz0 0.0
alphaxz3 0.0
alphayy0 -26.595
alphayy3 0.1004
alphayz0 0.0
alphayz3 0.0
alphazz0 -30.336
alphazz3 0.0824
end
which represents a simplistic form of the polarizability tensor of C2H:sub:6 using the TROVE function ALPHA_C2H6_ZERO.Here, there are six independent components each of which is represented by a single value (cards alpha***) at the molecular equilibrium (cards re1, re2 and beta).
Step 2
Business as usual:
Control
Step 2
external
end
Step 3
Business as usual, e.g.:
Control
Step 3
J 0
end
Step 4
This is the main step of computing the matrix elements of
, for which the Intensity card is used. We first define the calculation step 4 in the control block (anywhere in the input file):
Control
Step 4
J 0,1
end
and then define the intensity block using the RichMol-related cards field_me in conjunction with oper_alpha, e.g.
INTENSITY
field_me
oper alpha
THRESH_INTES 1e-10
THRESH_LINE 1e-10
THRESH_COEFF 1e-20
GNS 6.0 10.0 6.0 10.0 4.0 4.0 2.0 6.0 12.0 0 0 0 0 0 0 0 0 0
selection (rules) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
J, 6,8
freq-window 0, 10000
energy low -0.001, 10000.00, upper -0.001, 10000.0
END
The keyword field_me is to switch on the “Field’s Matrix Elements”. The keyword oper is to specify which type of the property to process; in this case it is the polarizability (alpha).
Currently, the following properties are available in TROVE (see module extfield.f90):
ALPHA: polaizability tensor;MU: dipole moment vector;QUAD: quadrupole moment tensor;SPINROT: spin-rotation tensor;SPINSPIN: spin-spin tensor;GTENS: g-tensor;WIGNER: Wigner matrixCOSTHETA:
;J: J-tensor;COS2THETA:
;RICHMOL_LEVELS_FILE: TBP;MF_TENSOR: TBP.