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:Moleculethe molecule on which we’re doing perturbation theory
n_quanta:int | Nonethe numbers of quanta to use when representing the entire state space
modes:None | MolecularNormalModesthe 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:boolwhether to add coriolis coupling if not in internals
parallelizer:Parallelizerparallelism manager
logger:str | Loggerlog file or logger to write to
checkpoint:str | Checkpointercheckpoint file or checkpointer to store intermediate results
@classmethod
from_fchk(cls, file, internals=None, mode_selection=None, **kw):
file:strfchk 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:PerturbationTheoryWavefunctionsg 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):