MCTDH-X  v2.22
 All Classes Files Functions Variables Pages
orbital_equationofmotion Module Reference

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)
 

Detailed Description

This module contains the routines needed for the evaluation of the orbitals equations of motion.

Member Function/Subroutine Documentation

subroutine orbital_equationofmotion::apply_lzprojection ( complex*16, dimension(ndvr_x*ndvr_y*ndvr_z,morb)  PSI,
integer, dimension(10)  Orbital_Lz 
)

Referenced by apply_projection().

Here is the caller graph for this function:

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.

Todo:
possible need for parallelization

Referenced by func_nlevel().

Here is the caller graph for this function:

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.

Todo:
Further OpenMP parallelization?

References apply_lzprojection().

Referenced by func().

Here is the call graph for this function:

Here is the caller graph for this function:

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().

Here is the call graph for this function:

Here is the caller graph for this function:

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.

Todo:
Check if optimization of mutilevel loops by openMP pays off.

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().

Here is the call graph for this function:

Here is the caller graph for this function:

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().

Here is the call graph for this function:

Here is the caller graph for this function:

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().

Here is the call graph for this function:

Here is the caller graph for this function:

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().

Here is the call graph for this function:

Here is the caller graph for this function:

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().

Here is the call graph for this function:

Here is the caller graph for this function:

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().

Here is the call graph for this function:

Here is the caller graph for this function:


The documentation for this module was generated from the following file: