MCTDH-X
v2.22
|
This module contains the routines needed for the evaluation of the orbitals equations of motion. More...
Public Member Functions | |
subroutine | get_rho_rho_inv (VIN, VOUT, Full_Rho1_Elements, Inverted_Rho1_Elements, Rho1_Elements, NatVec, NOcc) |
Routine to get the Matrix elements and their Inverse. Computes also the Natural Occupations and the Eigenvectors Natvec of the Matrix elements. On Output VOUT contains H|VIN>. More... | |
subroutine | get_hamiltonianaction_nlevelorbitals (PSI, time, Rho1_Elements, Rho2_Elements, Inverted_Rho1_Elements, Full_Rho1_Elements) |
This routine calculates the action of the Hamiltonian on the orbitals using the matrix elements. Basically, it's a wrapper to call Func. More... | |
subroutine | get_hamiltonianaction_orbitals (PSI, time, Rho1_Elements, Rho2_Elements, Inverted_Rho1_Elements, Full_Rho1_Elements) |
This routine calculates the action of the Hamiltonian on the orbitals using the matrix elements. Basically, it's a wrapper to call Func. More... | |
subroutine | get_bh_integrals (Compact_1bodyHamiltonian_Elements, Interaction_Elements, BHU, BHJ, BHOffset) |
One-body and two-body Hamiltonian elements' Evaluation for tight binding Hamiltonians. More... | |
complex *16 function, dimension(:,:,:), pointer | get3dfrom1darray (array, shape_) |
subroutine | func_nlevel_wrapper (AbsTime, Psi, TwoBody_PSI) |
subroutine | func_nlevel (AbsTime, Psi, TwoBody_PSI) |
Evaluates the right-hand side of the Orbital Equations of Motion. More... | |
subroutine | func_bh (AbsTime) |
"Evaluates" the right-hand side of the orbtials Equations of Motion for Bose-Hubbard Hamiltonians. Basically this just evaluates the energy and computes the full matrix of one-body elements from the upper triagonal. More... | |
subroutine | func (AbsTime, Psi, TwoBody_Psi) |
Evaluates the right-hand side of the Orbital Equations of Motion. More... | |
subroutine | apply_nlevelprojection (TwoBody_Psi, OneBody_Psi, PSI, Inverted_Rho1_Elements) |
Routine to apply the projection operator multiple times for multilevel systems. The output is stored in OneBody_PSI. More... | |
subroutine | apply_projection (TwoBody_Psi, OneBody_Psi, PSI, Inverted_Rho1_Elements) |
Routine to apply the projection operator multiple times for single-level systems. The output is stored in OneBody_PSI. More... | |
subroutine | apply_lzprojection (PSI, Orbital_Lz) |
This module contains the routines needed for the evaluation of the orbitals equations of motion.
subroutine orbital_equationofmotion::apply_lzprojection | ( | complex*16, dimension(ndvr_x*ndvr_y*ndvr_z,morb) | PSI, |
integer, dimension(10) | Orbital_Lz | ||
) |
subroutine orbital_equationofmotion::apply_nlevelprojection | ( | complex*16, dimension(ndvr_x*ndvr_y*ndvr_z,morb,nlevel) | TwoBody_Psi, |
complex*16, dimension(ndvr_x*ndvr_y*ndvr_z,morb,nlevel) | OneBody_Psi, | ||
complex*16, dimension(ndvr_x*ndvr_y*ndvr_z,morb,nlevel) | PSI, | ||
complex*16, dimension(morb,morb) | Inverted_Rho1_Elements | ||
) |
Routine to apply the projection operator multiple times for multilevel systems. The output is stored in OneBody_PSI.
Referenced by func_nlevel().
subroutine orbital_equationofmotion::apply_projection | ( | complex*16, dimension(ndvr_x*ndvr_y*ndvr_z,morb) | TwoBody_Psi, |
complex*16, dimension(ndvr_x*ndvr_y*ndvr_z,morb) | OneBody_Psi, | ||
complex*16, dimension(ndvr_x*ndvr_y*ndvr_z,morb) | PSI, | ||
complex*16, dimension(morb,morb) | Inverted_Rho1_Elements | ||
) |
Routine to apply the projection operator multiple times for single-level systems. The output is stored in OneBody_PSI.
References apply_lzprojection().
Referenced by func().
subroutine orbital_equationofmotion::func | ( | real*8 | AbsTime, |
complex*16, dimension(ndvr_x*ndvr_y*ndvr_z,morb) | Psi, | ||
complex*16, dimension(ndvr_x*ndvr_y*ndvr_z,morb) | TwoBody_Psi | ||
) |
Evaluates the right-hand side of the Orbital Equations of Motion.
References apply_projection(), localinteractionpotential::get_interactionoperatoraction(), kineticenergyaction::get_kineticenergyaction_allorbitals(), addresses::nadr(), and function_library::schmidtortho().
Referenced by abm_integrators::abm(), dav_integrators::bdavstep(), bulirsch_stoer::bsstep(), abm_integrators::coeff_ompabm(), cavitybec::complex_rk4vec(), dav_integrators::davstep(), get_hamiltonianaction_orbitals(), integration::integrator_orb(), master_slave_parallelization::master_mctdhbf(), bulirsch_stoer::modmidpoint(), abm_integrators::ompabm(), runge_kutta::rungekutta5(), runge_kutta::rungekutta8(), sil_integrators::sildiag(), sil_integrators::silstep(), and stiff_integrator::zvode_wrapper().
subroutine orbital_equationofmotion::func_bh | ( | real*8 | AbsTime | ) |
"Evaluates" the right-hand side of the orbtials Equations of Motion for Bose-Hubbard Hamiltonians. Basically this just evaluates the energy and computes the full matrix of one-body elements from the upper triagonal.
References get_bh_integrals(), and addresses::nadr().
Referenced by get_hamiltonianaction_orbitals().
subroutine orbital_equationofmotion::func_nlevel | ( | real*8 | AbsTime, |
complex*16, dimension(ndvr_x*ndvr_y*ndvr_z,morb,nlevel) | Psi, | ||
complex*16, dimension(ndvr_x*ndvr_y*ndvr_z,morb,nlevel) | TwoBody_PSI | ||
) |
Evaluates the right-hand side of the Orbital Equations of Motion.
References apply_nlevelprojection(), array_interfaces::get_1dfrom3d_array(), array_interfaces::get_3dfrom1d_array(), kineticenergyaction::get_kineticenergyaction_allorbitals_nlevel(), localinteractionpotential::get_multilevelinteractionoperatoraction(), addresses::nadr(), and function_library::schmidtortho_nlevel().
Referenced by func_nlevel_wrapper(), get_hamiltonianaction_nlevelorbitals(), and master_slave_parallelization::master_mctdhbf().
subroutine orbital_equationofmotion::func_nlevel_wrapper | ( | real*8 | AbsTime, |
complex*16, dimension(ndvr_x*ndvr_y*ndvr_z*morb*nlevel) | Psi, | ||
complex*16, dimension(ndvr_x*ndvr_y*ndvr_z*morb*nlevel) | TwoBody_PSI | ||
) |
References func_nlevel(), array_interfaces::get_1dfrom3d_array(), and array_interfaces::get_3dfrom1d_array().
Referenced by integration::integrator_nlevelorb().
complex*16 function, dimension(:,:,:), pointer orbital_equationofmotion::get3dfrom1darray | ( | complex*16, dimension(1), target | array, |
integer, dimension(:) | shape_ | ||
) |
subroutine orbital_equationofmotion::get_bh_integrals | ( | complex*16, dimension(rdim) | Compact_1bodyHamiltonian_Elements, |
complex*16, dimension(rdim1) | Interaction_Elements, | ||
real*8 | BHU, | ||
complex*16 | BHJ, | ||
complex*16, dimension(morb) | BHOffset | ||
) |
One-body and two-body Hamiltonian elements' Evaluation for tight binding Hamiltonians.
References auxiliary_routines::get_ijk_from_m().
Referenced by func_bh(), and master_slave_parallelization::master_fci().
subroutine orbital_equationofmotion::get_hamiltonianaction_nlevelorbitals | ( | complex*16, dimension(ndvr_x*ndvr_y*ndvr_z,morb,nlevel) | PSI, |
real*8 | time, | ||
complex*16, dimension(morb*(morb+1)/2) | Rho1_Elements, | ||
complex*16, dimension((morb*(morb+1)/2)* (morb*(morb+1)/2+1)/2) | Rho2_Elements, | ||
complex*16, dimension(morb,morb) | Inverted_Rho1_Elements, | ||
complex*16, dimension(morb,morb) | Full_Rho1_Elements | ||
) |
This routine calculates the action of the Hamiltonian on the orbitals using the matrix elements. Basically, it's a wrapper to call Func.
References func_nlevel().
Referenced by master_slave_parallelization::master_fci(), and master_slave_parallelization::master_mctdhbf().
subroutine orbital_equationofmotion::get_hamiltonianaction_orbitals | ( | complex*16, dimension(ndvr_x*ndvr_y*ndvr_z,morb) | PSI, |
real*8 | time, | ||
complex*16, dimension(morb*(morb+1)/2) | Rho1_Elements, | ||
complex*16, dimension((morb*(morb+1)/2)* (morb*(morb+1)/2+1)/2) | Rho2_Elements, | ||
complex*16, dimension(morb,morb) | Inverted_Rho1_Elements, | ||
complex*16, dimension(morb,morb) | Full_Rho1_Elements | ||
) |
This routine calculates the action of the Hamiltonian on the orbitals using the matrix elements. Basically, it's a wrapper to call Func.
References func(), and func_bh().
Referenced by master_slave_parallelization::master_fci(), and master_slave_parallelization::master_mctdhbf().
subroutine orbital_equationofmotion::get_rho_rho_inv | ( | complex*16, dimension(nconf) | VIN, |
complex*16, dimension(nconf) | VOUT, | ||
complex*16, dimension(morb,morb) | Full_Rho1_Elements, | ||
complex*16, dimension(morb,morb) | Inverted_Rho1_Elements, | ||
complex*16, dimension(morb*(morb+1)/2) | Rho1_Elements, | ||
complex*16, dimension(morb,morb) | NatVec, | ||
real*8, dimension(morb) | NOcc | ||
) |
Routine to get the Matrix elements and their Inverse. Computes also the Natural Occupations and the Eigenvectors Natvec of the Matrix elements. On Output VOUT contains H|VIN>.
References hamiltonianaction_coefficients::get_hamiltonianaction_ci(), and addresses::nadr().
Referenced by master_slave_parallelization::master_fci(), and master_slave_parallelization::master_mctdhbf().