Menu

Reference.Variables.hamilt.kin

Burkhard Schmidt

Variable "hamilt.kin" in the Matlab/Octave version of WavePacket

There are standard kinetic energy operators "naturally" associated with each specific DVR grid. While those may suffice in many cases, in some simulations one may want to use other types of kinetic energy operators. Such custom operators are implemented as Matlab/Octave classes. They are set up like this:

hamilt.kin{1} = kin.triatomic;
hamilt.kin{1}.dof = [1 2];
hamilt.kin{2} ...

and so on. For a list of the implemented kinetic energy operator classdef's and their settable properties, see the tables given below. as well as the package folder.

kin.triatomic Kinetic energy operator for a triatomic molecule ABC with fixed bending angle between AB and BC. The explicit form of this operator is T = pAB² / (2μAB) + pBC² / (2μBC) + cos θ pAB pBC / mB
dof Array of two elements that give the index of the degree of freedom corresponding to the bond lengths AB and BC.
mass Array of the three masses of the atoms A, B, and C.
theta bending angle θ of the triatomic molecule.
kin.jacobi Kinetic energy operator that involves the internal angular coordinate of a triatomic molecule when using Jacobi coordinates ABC. If r is the AB-distance, and R is the distance between the center of mass of AB and the atom C, then this operator is ( 1 / (2μr r²) + 1 / (2μR R²) ) Lθ² with the corresponding reduced masses μx and the angular momentum operator L
mass_R The reduced mass of the coordinate R.
mass_r The reduced mass of the coordinate r.
dof_c Index of the degree of freedom of the angular coordinate θ. The grid type for this degree of freedom must be of type grid_legendre.
dof_R Index of the degree of freedom corresponding to the coordinate R.
dof_r Optional: Index of the degree of freedom corresponding to the coordinate r. Either this or r_0 has to be set.
r_0 Optional: constant value of r. Either this or dof_r has to be set.

Public methods

Any of the above classdef's needs to contain the following methods

method description
init_kin This function initializes the respective kinetic operator. It is called internally during the setup of the calculation. This function needs to be called before the kinetic operator can be used
kinetic Applies the kinetic energy operator to wavefunction (for all (coupled) channels!). The result is stored in psi.new. If new == true, the input wave function comes from psi.new, otherwise we take it from psi.dvr
kinetic_exp Takes the wavefunction stored in psi.dvr (for all (coupled) channels!) and applies the operator exp(-i⋅K⋅f⋅dt) to it. The result is stored again in psi.dvr afterwards. Fraction f should be chosen as 1 or ½ for use in Lie-Trotter or Strang-Marchuk splitting method, respectively.
kinetic2dvr Returns the matrix corresponding to the underlying kinetic energy operator of the grid in the DVR representation. Used in qm_bound for constructing the Hamiltonian to diagonalize.

Related

Wiki: Reference.Programs.qm_bound
Wiki: Reference.Variables.hamilt
Wiki: Reference.Variables.space.dof

Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.