Source code for quantarhei.builders.submodes
"""The SubMode class is an internal class through which the mode keeps
track of the fact that in different electronic states of the molecule,
a given vibrational mode has different parameters.
"""
from __future__ import annotations
from ..core.managers import UnitsManaged
from ..core.saveable import Saveable
from ..utils import Float, Integer
[docs]
class SubMode(UnitsManaged, Saveable):
"""Instance of a vibrational mode relative to a give electronic state
When a mode is set on a Molecule object, it has to be indepedently
set on each electronic state of the molecule. We keep track of individual
parameters of the vibrational mode for each electronic state using
this class. SubMode itself has no idea about this.
Examples
--------
>>> sm = SubMode()
>>> print(sm.nmax)
2
>>> print(sm.shift)
0.0
>>> print(sm.omega)
1.0
This class is aware of energy units
>>> import quantarhei as qr
>>> with qr.energy_units("1/cm"):
... sm = SubMode()
>>> print(sm.omega)
0.0001883651567308853
"""
omega = Float("omega")
shift = Float("shift")
nmax = Integer("nmax")
def __init__(self, omega: float = 1.0, shift: float = 0.0, nmax: int = 2) -> None:
self.omega = self.convert_energy_2_internal_u(omega)
self.shift = shift
self.nmax = nmax