PerturbationTheoryHamiltonian

Represents the main Hamiltonian used in the perturbation theory calculation. Uses a harmonic oscillator basis for representing H0, H1, H2 etc. The PT process is split into a PerturbationTheorySolver and a PerturbationTheoryHamiltonian where the Hamiltonian just implements the split of the perturbation and the Solver manages the equations.

TermGetter: TermGetter
CoriolisTermGetter: CoriolisTermGetter

 

__init__(self, molecule=None, n_quanta=None, modes=None, mode_selection=None, mode_transformation=None, rephase_modes=None, local_mode_couplings=False, local_mode_coupling_order=None, full_surface_mode_selection=None, potential_derivatives=None, include_potential=True, include_gmatrix=True, include_coriolis_coupling=True, include_pseudopotential=True, include_only_mode_couplings=None, potential_terms=None, allow_higher_potential_terms=False, kinetic_terms=None, coriolis_terms=None, pseudopotential_terms=None, include_dipole=True, dipole_terms=None, selection_rules=None, operator_chunk_size=None, operator_coefficient_threshold=None, matrix_element_threshold=None, logger=None, checkpoint=None, results=None, parallelizer=None, **expansion_options): 
  • molecule: Molecule

    the molecule on which we’re doing perturbation theory

  • n_quanta: int | None

    the numbers of quanta to use when representing the entire state space

  • modes: None | MolecularNormalModes

    the set of modes to use as the basis

  • mode_selection: None | Iterable[int]

    the subset of modes to use when doing expansions

  • include_coriolis_coupling: bool

    whether to add coriolis coupling if not in internals

  • parallelizer: Parallelizer

    parallelism manager

  • logger: str | Logger

    log file or logger to write to

  • checkpoint: str | Checkpointer

    checkpoint file or checkpointer to store intermediate results

 

@classmethod
from_fchk(cls, file, internals=None, mode_selection=None, **kw): 
  • file: str

    fchk file to load from

  • internals: Iterable[Iterable[int]]

    internal coordinate specification as a Z-matrix ordering

  • n_quanta: int | Iterable[int]
  • :returns: _

 

@property
dipole_terms(self): 

 

@classmethod
prep_local_couplings(cls, local_mode_couplings): 

 

prep_operator_terms(self, coeffs, order): 

 

get_perturbations(self, expansion_orders, return_reps=True, order=None): 

Gets the Representation objects for the perturbations up through second order

  • order: Any
  • :returns: _

 

get_Nielsen_xmatrix(self, freqs=None, v3=None, v4=None, zeta_Be=None): 

Provides Nielsen’s X-Matrix when working in Cartesian coordinates

  • :returns: _

 

get_Nielsen_energies(self, states, x_mat=None, freqs=None, v3=None, v4=None, zeta_Be=None, return_split=False, return_X=False): 
  • states: Any
  • :returns: _

 

get_2nd_order_freqs(self, states, *, freqs=None, V_terms=None, G_terms=None): 
  • states: Any
  • :returns: _

 

get_solver(self, states, degeneracies=None, allow_post_PT_calc=True, ignore_odd_order_energies=True, use_full_basis=True, order=2, expansion_order=None, memory_constrained=None, target_property_rules=None, **opts): 

 

get_wavefunctions(self, states, initial_states=None, degeneracies=None, allow_post_PT_calc=True, ignore_odd_order_energies=True, use_full_basis=True, order=2, expansion_order=None, memory_constrained=None, target_property_rules=None, results=None, degenerate_transformation_layout=None, return_solver=False, **opts): 

Gets a set of PerturbationTheoryWavefunctions from the perturbations defined by the Hamiltonian

  • states: BasisStateSpace | Iterable[int] | Iterable[Iterable[int]]

    the states to get the index for, given either as indices or as a numbers of quanta

  • coupled_states: BasisStateSpace | Iterable[int] | Iterable[Iterable[int]]

    the list of states to explicitly allow to couple in

  • degeneracies: (Iterable[int], Iterable[int]) | (Iterable[Iterable[int]], Iterable[Iterable[int]])

    the pairs of states to be treated via degenerate perturbation theory

  • :returns: PerturbationTheoryWavefunctions

    g e n e r a t e d

w a v e

f u n c t i o n s

 

get_action_expansion(self, coupled_states=None, degeneracies=None, allow_sakurai_degs=False, allow_post_PT_calc=True, modify_degenerate_perturbations=False, intermediate_normalization=False, ignore_odd_order_energies=True, zero_element_warning=True, state_space_iterations=None, order=2): 

Gets the expansion of the energies in terms of Miller’s “classical actions” by doing just enough PT to invert the matrix

  • order: Any
  • :returns: _

 

get_breakdown(self, states, coupled_states=None, degeneracies=None, order=2): 

Feedback

Examples

Templates

Documentation