MCTDH-X
v2.22
|
This Module collects auxiliary routines that perform transforms on the one-body and two-body matrix-elements or the coefficients, the orbitals, or Routines that get Filenames. More...
Public Member Functions | |
subroutine | get_m_0_from_xyz (m_0, xref, yref, zref) |
subroutine | get_reduced1bodyelements (VIN, Nconf, Reduced_OneBodyElements, Nparticles) |
subroutine | loopy_main_reducedelements (Npar, Morb, Sh_m, Sh_p, CJ, CK, nconf, I_current_term, I_term, RDIM, VIN, Reduced_OneBodyElements) |
Routine to compress the mapping for one-body operators to only the non-zero contributions. More... | |
recursive subroutine | loopy_core_reducedelements (depth, FromN, ToN, lix, ix, Sh_m, Sh_p, Morb, NPAR, nconf, CJ, CK, I_current_term, I_Term, RDIM, VIN, RIJ) |
Recursive core of the compression of the mapping. More... | |
subroutine | get_reduced_coefficients (VIN, VRED, PSI, Npar, Nconf, NConf_Red) |
subroutine | convolute_singleshot (Shot, SampleIndexes) |
subroutine | get_reduced_density (PSI, rho_jk_compact, Density) |
subroutine | drawfromdensity (PSI, rho_jk_compact, sample, SampleIndex, Nparticles) |
subroutine | get_weightormomentumgrid (mom_x, mom_y, mom_z, w, dilation, mode) |
subroutine | assemble_outputfilename (FullName, Time, NParticles, Morbitals, KorX, Suffix) |
This routine puts together output filenames from some system parameters. More... | |
subroutine | get_full_rij (Rho_JK) |
This routine computes the full one-body matrix elements from the compact upper triangular storage. More... | |
subroutine | get_full_rijkl (Rho_ijkl) |
This routine computes the full two-body matrix elements from the compact upper triangular storage. More... | |
subroutine | get_full_wijkl (W_ijkl) |
This routine computes the full two-body matrix elements from the compact upper triangular storage. More... | |
subroutine | diag_dns (ALLZ1, natural_occupations, natural_vectors) |
This routine computes the eigenvalues and eigenvectors of the reduced one-body density matrix elements. More... | |
subroutine | getsliceasstring (d, x, doubleString) |
Writes a real number in 4 digit format for naming files. More... | |
subroutine | get_dilation (dilation, Psi, rho_jk) |
This routine computes the k-space interval which is optimal to represent the orbitals in k-space. More... | |
subroutine | get_kineticenergyaction_allorbitalsanalysis (temp, pot, time) |
Wrapper routine that evaluates the action of the one-body operators (kinetic energy and angular momentum) for the chosen DVR. More... | |
subroutine | u_trans (TRAFO, VIN, V_TRANS, PHIIN, PHI_TRANS, NGRID, MODE) |
Compute (unitary) transform of a multiconfigurational wavefunction MODE decides how the transform is done: MODE=1 Just takes the MxM matrix TRAFO and applies it to both coeffs and orbs MODE=2 Constructs the transformation from PHIIN to PHI_TRANS and applies it to the coefficients. More... | |
subroutine | get_maximum (PSI, rho_jk, maximum) |
subroutine | get_trafo (PHIIN, PHI_TRANS, TRAFO, MORB, NGRID) |
recursive subroutine | loopy_permanent (More, Depth, Configuration, First, TMP1, TMP2, L, Trans, Coefficients, Coefficients_Out) |
Compute the transformation of a single configuration (permanent). More... | |
subroutine | u_transform (time, VIN) |
This routine computes a unitary transform of of the coefficients' vector. More... | |
This Module collects auxiliary routines that perform transforms on the one-body and two-body matrix-elements or the coefficients, the orbitals, or Routines that get Filenames.
subroutine auxiliary_analysis_routines::assemble_outputfilename | ( | character(*) | FullName, |
real*8 | Time, | ||
integer | NParticles, | ||
integer | Morbitals, | ||
character(*) | KorX, | ||
character(*) | Suffix | ||
) |
This routine puts together output filenames from some system parameters.
References auxiliary_routines::getdoubleasstring().
Referenced by analysis_routines_twobody::diag_geminal(), analysis_routines_onebody::get_1bodydiag(), analysis_routines_onebody::get_1bodydiag_nlevel(), analysis_routines_onebody::get_2d_1bodydiag_dilated(), analysis_routines_onebody::get_2d_1bodydiag_dilated_nlevel(), analysis_routines_manybody::get_anyordercorrelations(), analysis_routines_twobody::get_corr_one_restricted(), analysis_routines_twobody::get_corr_two_restricted(), analysis_routines_twobody::get_correlations(), analysis_routines_twobody::get_correlations_nlevel(), analysis_routines_twobody::get_correlationsskewdiagonal1d(), analysis_routines_manybody::get_singleshot(), and analysis_routines_twobody::get_structurefactor().
subroutine auxiliary_analysis_routines::convolute_singleshot | ( | real*8, dimension(ndvr_x*ndvr_y*ndvr_z) | Shot, |
integer, dimension(npar) | SampleIndexes | ||
) |
References auxiliary_routines::get_ijk_from_m().
Referenced by analysis_routines_manybody::get_singleshot().
subroutine auxiliary_analysis_routines::diag_dns | ( | complex*16, dimension(morb*(morb+1)/2) | ALLZ1, |
real*8, dimension(morb) | natural_occupations, | ||
complex*16, dimension(morb,morb) | natural_vectors | ||
) |
This routine computes the eigenvalues and eigenvectors of the reduced one-body density matrix elements.
References addresses::nadr().
Referenced by analysis_core::apply_analysis().
subroutine auxiliary_analysis_routines::drawfromdensity | ( | complex*16, dimension(ndvr_x*ndvr_y*ndvr_z,morb), intent(in) | PSI, |
complex*16, dimension(morb*(morb+1)/2), intent(in) | rho_jk_compact, | ||
real*8, dimension(dim_mctdh), intent(out) | sample, | ||
integer, intent(out) | SampleIndex, | ||
integer, intent(in) | Nparticles | ||
) |
References auxiliary_routines::get_ijk_from_m(), and random::gnu_rand().
Referenced by analysis_routines_manybody::get_singleshot().
subroutine auxiliary_analysis_routines::get_dilation | ( | integer, intent(inout) | dilation, |
complex*16, dimension(ndvr_x*ndvr_y*ndvr_z,morb) | Psi, | ||
complex*16, dimension(morb,morb), intent(in) | rho_jk | ||
) |
This routine computes the k-space interval which is optimal to represent the orbitals in k-space.
References get_maximum().
Referenced by analysis_core::apply_analysis().
subroutine auxiliary_analysis_routines::get_full_rij | ( | complex*16, dimension(morb,morb) | Rho_JK | ) |
This routine computes the full one-body matrix elements from the compact upper triangular storage.
Referenced by analysis_core::apply_analysis(), and analysis_routines_manybody::get_loc_frag().
subroutine auxiliary_analysis_routines::get_full_rijkl | ( | complex*16, dimension(morb,morb,morb,morb) | Rho_ijkl | ) |
This routine computes the full two-body matrix elements from the compact upper triangular storage.
Referenced by analysis_core::apply_analysis(), analysis_routines_twobody::diag_geminal(), and analysis_routines_manybody::get_loc_frag().
subroutine auxiliary_analysis_routines::get_full_wijkl | ( | complex*16, dimension(morb,morb,morb,morb) | W_ijkl | ) |
This routine computes the full two-body matrix elements from the compact upper triangular storage.
Referenced by analysis_routines_manybody::write_hamiltonianelementsanalysis().
subroutine auxiliary_analysis_routines::get_kineticenergyaction_allorbitalsanalysis | ( | complex*16, dimension(ndvr_x*ndvr_y*ndvr_z,morb) | temp, |
logical, optional | pot, | ||
real*8, optional | time | ||
) |
Wrapper routine that evaluates the action of the one-body operators (kinetic energy and angular momentum) for the chosen DVR.
References get_1bodypotential(), kineticenergyaction::get_kineticenergyaction(), kineticenergyaction::get_kineticenergyaction_fft(), kineticenergyaction::get_kineticenergyaction_fft_2d(), and kineticenergyaction::get_kineticenergyaction_fft_3d().
Referenced by analysis_routines_onebody::get_totalenergy(), and analysis_routines_manybody::write_hamiltonianelementsanalysis().
subroutine auxiliary_analysis_routines::get_m_0_from_xyz | ( | integer, intent(out) | m_0, |
real*8, intent(in) | xref, | ||
real*8, intent(in) | yref, | ||
real*8, intent(in) | zref | ||
) |
References auxiliary_routines::get_ijk_from_m().
Referenced by analysis_routines_manybody::get_anyordercorrelations(), and analysis_routines_twobody::get_structurefactor().
subroutine auxiliary_analysis_routines::get_maximum | ( | complex*16, dimension(ndvr_x*ndvr_y*ndvr_z,morb) | PSI, |
complex*16, dimension(morb,morb), intent(in) | rho_jk, | ||
complex*16, intent(out) | maximum | ||
) |
Referenced by analysis_routines_manybody::get_corr_loc_frag(), analysis_routines_2d::get_corr_slice(), analysis_routines_2d::get_correlationsskewdiagonal2d(), and get_dilation().
subroutine auxiliary_analysis_routines::get_reduced1bodyelements | ( | complex*16, dimension(nconf) | VIN, |
integer | Nconf, | ||
complex*16, dimension(rdim) | Reduced_OneBodyElements, | ||
integer | Nparticles | ||
) |
References loopy_main_reducedelements().
Referenced by analysis_routines_manybody::get_anyordercorrelations(), and analysis_routines_manybody::get_singleshot().
subroutine auxiliary_analysis_routines::get_reduced_coefficients | ( | complex*16, dimension(nconf), intent(in) | VIN, |
complex*16, dimension(nconf_red), intent(out) | VRED, | ||
complex*16, dimension(morb), intent(in) | PSI, | ||
integer, intent(in) | Npar, | ||
integer, intent(in) | Nconf, | ||
integer, intent(in) | NConf_Red | ||
) |
References addresses::get_configurationfromindex(), and addresses::get_indexfromconfiguration().
Referenced by analysis_routines_manybody::get_anyordercorrelations(), and analysis_routines_manybody::get_singleshot().
subroutine auxiliary_analysis_routines::get_reduced_density | ( | complex*16, dimension(ndvr_x*ndvr_y*ndvr_z,morb), intent(in) | PSI, |
complex*16, dimension(rdim), intent(in) | rho_jk_compact, | ||
real*8, dimension(ndvr_x*ndvr_y*ndvr_z), intent(out) | Density | ||
) |
Referenced by analysis_routines_manybody::get_anyordercorrelations().
subroutine auxiliary_analysis_routines::get_trafo | ( | complex*16, dimension(ngrid,morb) | PHIIN, |
complex*16, dimension(ngrid,morb) | PHI_TRANS, | ||
complex*16, dimension(morb,morb) | TRAFO, | ||
integer | MORB, | ||
integer | NGRID | ||
) |
phiin | Compute the transformation matrix of PHIIN to PHITRANS |
Referenced by u_trans().
subroutine auxiliary_analysis_routines::get_weightormomentumgrid | ( | real*8, dimension(ndvr_x) | mom_x, |
real*8, dimension(ndvr_y) | mom_y, | ||
real*8, dimension(ndvr_z) | mom_z, | ||
real*8 | w, | ||
integer | dilation, | ||
integer | mode | ||
) |
References auxiliary_routines::get_mom().
Referenced by analysis_routines_onebody::get_1bodydiag(), analysis_routines_onebody::get_1bodydiag_nlevel(), analysis_routines_twobody::get_2bentropy(), analysis_routines_onebody::get_2d_1bodydiag_dilated(), analysis_routines_onebody::get_2d_1bodydiag_dilated_nlevel(), analysis_routines_manybody::get_anyordercorrelations(), analysis_routines_twobody::get_correlations(), analysis_routines_twobody::get_correlations_nlevel(), analysis_routines_twobody::get_correlationsskewdiagonal1d(), analysis_routines_manybody::get_entropy(), analysis_routines_manybody::get_singleshot(), and analysis_routines_twobody::get_structurefactor().
subroutine auxiliary_analysis_routines::getsliceasstring | ( | integer | d, |
real(kind=dbl) | x, | ||
character(len=7) | doubleString | ||
) |
Writes a real number in 4 digit format for naming files.
Referenced by analysis_routines_2d::get_corr_slice().
recursive subroutine auxiliary_analysis_routines::loopy_core_reducedelements | ( | integer, intent(inout) | depth, |
integer | FromN, | ||
integer | ToN, | ||
integer, dimension(depth), intent(inout) | lix, | ||
integer | ix, | ||
integer, dimension(morb+1) | Sh_m, | ||
integer, dimension(morb+1) | Sh_p, | ||
integer | Morb, | ||
integer | NPAR, | ||
integer | nconf, | ||
integer | CJ, | ||
integer | CK, | ||
integer | I_current_term, | ||
integer | I_Term, | ||
integer | RDIM, | ||
complex*16, dimension(nconf) | VIN, | ||
complex*16, dimension(rdim) | RIJ | ||
) |
Recursive core of the compression of the mapping.
Referenced by loopy_main_reducedelements().
subroutine auxiliary_analysis_routines::loopy_main_reducedelements | ( | integer | Npar, |
integer | Morb, | ||
integer, dimension(morb+1) | Sh_m, | ||
integer, dimension(morb+1) | Sh_p, | ||
integer | CJ, | ||
integer | CK, | ||
integer | nconf, | ||
integer | I_current_term, | ||
integer | I_term, | ||
integer | RDIM, | ||
complex*16, dimension(nconf) | VIN, | ||
complex*16, dimension(rdim) | Reduced_OneBodyElements | ||
) |
Routine to compress the mapping for one-body operators to only the non-zero contributions.
References loopy_core_reducedelements().
Referenced by get_reduced1bodyelements().
recursive subroutine auxiliary_analysis_routines::loopy_permanent | ( | logical, dimension(morb), intent(inout) | More, |
integer | Depth, | ||
integer, dimension(morb), intent(inout) | Configuration, | ||
logical, dimension(morb), intent(inout) | First, | ||
integer, dimension(morb), intent(inout) | TMP1, | ||
integer, dimension(morb), intent(inout) | TMP2, | ||
integer, dimension(morb,morb), intent(inout) | L, | ||
complex*16, dimension(morb,morb) | Trans, | ||
complex*16, dimension(nconf) | Coefficients, | ||
complex*16, dimension(nconf), intent(inout) | Coefficients_Out | ||
) |
Compute the transformation of a single configuration (permanent).
References combinatorial_algorithms::comp_next(), function_library::dlgama(), and addresses::get_indexfromconfiguration().
Referenced by u_transform().
subroutine auxiliary_analysis_routines::u_trans | ( | complex*16, dimension(morb,morb) | TRAFO, |
complex*16, dimension(nconf) | VIN, | ||
complex*16, dimension(nconf) | V_TRANS, | ||
complex*16, dimension(ngrid,morb) | PHIIN, | ||
complex*16, dimension(ngrid,morb) | PHI_TRANS, | ||
integer | NGRID, | ||
integer | MODE | ||
) |
Compute (unitary) transform of a multiconfigurational wavefunction MODE decides how the transform is done: MODE=1 Just takes the MxM matrix TRAFO and applies it to both coeffs and orbs MODE=2 Constructs the transformation from PHIIN to PHI_TRANS and applies it to the coefficients.
References combinatorial_algorithms::comp_next(), function_library::factorial(), addresses::get_configurationfromindex(), addresses::get_indexfromconfiguration(), and get_trafo().
Referenced by analysis_routines_manybody::get_autocorr(), and analysis_routines_manybody::get_loc_frag().
subroutine auxiliary_analysis_routines::u_transform | ( | real*8 | time, |
complex*16, dimension(nconf) | VIN | ||
) |
This routine computes a unitary transform of of the coefficients' vector.
References function_library::dlgama(), addresses::get_configurationfromindex(), and loopy_permanent().
Referenced by analysis_core::apply_analysis().