예제 #1
0
def oblate_symmetric_top(param):
    """Molecular parameters for an artificial oblate top

    Implemented isomers are

    0. rotor type is set to 'S' - symmetric top, and symmetry is set to 'o' - oblate
    1. rotor type is set to 'A' - asymmetric top, and symmetry is set to 'C2c' - only u_c != 0
    """
    param.name = "oblate_symmetric_top"
    param.mass = 6 * Masses['C'] + 6 * Masses['H']
    if 0 == param.isomer:
        param.type = 'S'
        param.symmetry = 'o'
        param.rotcon = convert.Hz2J(num.array([3000.0e6, 1000.0e6]))
        param.quartic = num.array(
            [convert.Hz2J(0.0),
             convert.Hz2J(0.0),
             convert.invcm2J(0.0)])
        param.dipole = convert.D2Cm(num.array([1.]))
    elif 1 == param.isomer:
        param.type = 'A'
        param.watson = 'A'
        param.symmetry = 'C2c'
        param.rotcon = convert.Hz2J(num.array([3000.0e6, 3000.0e6, 1000.0e6]))
        param.quartic = num.array([0., 0., 0., 0., 0.])
        param.dipole = convert.D2Cm(num.array([0., 0., 1.]))
예제 #2
0
def iodomethane(param):
    """Molecular parameters for iodomethane (:math:`\\text{CH}_3\\text{I}`)

    B, DJ, and DK constants from [Wlodarczak1987]_ and [Gadhi1989]_.
    A and DK constants from [Pietila1996]_.

    Implemented isomers are
    0. above constants using symmetric-top Hamiltonian
    1. above constants using asymmetric-top Hamiltonian

    The special implementation 1 is not meant for production use. Instead, it was, and is, useful for benchmarking and
    debugging the various cases of the Stark code. Please do not remove it, but also do not use it for regular
    scientific work.

    .. todo:: Sebastian Trippel, please rewrite documentation in more detail, using math syntax for subscritpts, etc.

    """
    param.name = "iodomethane"
    param.mass = 3 * Masses['H'] + Masses['C'] + Masses['I']
    if 0 == param.isomer:
        param.type = 'S'
        param.symmetry = 'p'
        param.rotcon = num.array(
            [convert.invcm2J(5.1742629),
             convert.Hz2J(7501.2757456e6)])
        param.quartic = num.array([
            convert.Hz2J(6.307583e3),
            convert.Hz2J(98.76798e3),
            convert.invcm2J(87.857e-6)
        ])
        param.dipole = convert.D2Cm(num.array([1.6406]))
    elif 1 == param.isomer:
        param.type = 'A'
        param.watson = 'A'
        param.symmetry = 'C2a'
        param.rotcon = num.array([
            convert.invcm2J(5.1742629),
            convert.Hz2J(7501.2757456e6),
            convert.Hz2J(7501.2757456e6)
        ])
        param.quartic = num.array([
            convert.Hz2J(6.307583e3),
            convert.Hz2J(98.76798e3),
            convert.invcm2J(87.857e-6), 0., 0.
        ])
        param.dipole = convert.D2Cm(num.array([1.6406, 0., 0.]))
예제 #3
0
def carbon_monoxide(param):
    """ Molecular parameters for CO

    rotcon, dipole: [NISTCCCBD_CO]_
    quartic: [MinaCamilde1996]_
    """
    param.name = "carbon_monoxide"
    param.mass = Masses['C'] + Masses['O']
    param.type = 'L'
    param.rotcon = convert.Hz2J(num.array([57.89834e9]))
    param.dipole = convert.D2Cm(num.array([0.11]))
    param.quartic = convert.invcm2J(num.array([202.360e3]))
예제 #4
0
def prolate_symmetric_top(param):
    """Molecular parameters for an artificial prolate top"""
    param.name = "prolate_symmetric_top"
    param.mass = 6 * Masses['C'] + 6 * Masses['H']
    if 0 == param.isomer:
        param.type = 'S'
        param.symmetry = 'p'
        param.rotcon = convert.Hz2J(num.array([3000.0e6, 1000.0e6]))
        param.quartic = num.array(
            [convert.Hz2J(0.0),
             convert.Hz2J(0.0),
             convert.invcm2J(0.0)])
        param.dipole = convert.D2Cm(num.array([1.]))
    elif 1 == param.isomer:
        param.type = 'A'
        param.watson = 'A'
        param.symmetry = 'C2a'
        param.rotcon = convert.Hz2J(num.array([3000.0e6, 1000.0e6, 1000.0e6]))
        param.quartic = num.array([0., 0., 0., 0., 0.])
        param.dipole = convert.D2Cm(num.array([1., 0., 0.]))
예제 #5
0
def hydrogen(param):
    """Molecular parameters for hydrogen (H:math:`_2`)

    Rotational constants are from ??? measurements [Orcutt1963]_; ...
    Polarizability: [Rychlewski1980]_, which is close to [Kim1976]_
    centrifugal distortion constant: [Hamaguchi1981]_

    .. math:: param.polar[0] = \alpha_{zz} = \alpha_\parallel
    .. math:: param.polar[1] = \alpha_{xx} = \alpha_{yy} = \alpha_\perp

    All polarizabilies are in SI units
    """
    param.name = "H2"
    param.mass = 2 * Masses['H']
    param.type = 'L'
    param.symmetry = 'N'
    param.rotcon = convert.Hz2J(num.array([1824.32704e9]))
    param.dipole = convert.D2Cm(num.array([0.0]))
    param.quartic = convert.invcm2J(num.array([0.0460]))
    param.polarizability = num.array([11.1576e-41, 7.8225e-41])
예제 #6
0
def deuterium(param):
    """Molecular parameters for hydrogen (D:math:`_2`)

    Rot. constant: [Huber1979]_
    Polarizability: [Rychlewski1980]_
    centrifugal distortion constant: [Bonham2009]_

    .. math:: param.polar[0] = \alpha_{zz} = \alpha_\parallel
    .. math:: param.polar[1] = \alpha_{xx} = \alpha_{yy} = \alpha_\perp

    All polarizabilies are in SI units

    .. todo:: (Jens Kienitz): This should be an isomer of hydrogen -- please merge

    """
    param.name = "D2"
    param.mass = 2 * Masses['D']
    param.type = 'L'
    param.symmetry = 'N'
    param.rotcon = convert.Hz2J(num.array([912.67617e9]))
    param.dipole = convert.D2Cm(num.array([0.0]))
    param.quartic = convert.invcm2J(num.array([0.01153]))
    param.polarizability = num.array([10.9746e-41, 7.7421e-41])
예제 #7
0
def hydrogen_deuteride(param):
    """Molecular parameters for hydrogen (HD)

        Rot. constant: [Huber1979]_
        Polarizability: [Rychlewski1980]_
        centrifugal distortion constant: [Mckellar1976]_

        .. math:: param.polar[0] = \alpha_{zz} = \alpha_\parallel
        .. math:: param.polar[1] = \alpha_{xx} = \alpha_{yy} = \alpha_\perp

        All polarizabilies are in SI units

    .. todo:: (Jens Kienitz): This should be an isomer of hydrogen -- please merge

    """
    param.name = "HD"
    param.mass = Masses['H'] + Masses['D']
    param.type = 'L'
    param.symmetry = 'N'
    param.rotcon = convert.Hz2J(num.array([1368.70247e9]))
    param.dipole = convert.D2Cm(num.array([5.85e-4]))
    param.quartic = convert.invcm2J(num.array([0.02586]))
    param.polarizability = num.array([11.0767e-41, 7.787e-41])