subroutine init_guga_orbital_pickers()
character(*), parameter :: this_routine = "init_guga_orbital_pickers"
! this routine, depending on the input set the orbital pickers
! to differentiate between the different excitation generators
if (tGen_sym_guga_ueg) then
calc_orbital_pgen_contrib_start => calc_orbital_pgen_contrib_start_def
calc_orbital_pgen_contrib_end => calc_orbital_pgen_contrib_end_def
if (.not. (treal .or. t_new_real_space_hubbard)) then
pickOrbitals_double => pickOrbs_sym_uniform_ueg_double
calc_orbital_pgen_contr => calc_orbital_pgen_contr_ueg
else
pickOrbitals_single => pickOrbs_real_hubbard_single
end if
else if (tGen_sym_guga_mol) then
pickOrbitals_single => pickOrbs_sym_uniform_mol_single ! PickOrbitals_t
pickOrbitals_double => pickOrbs_sym_uniform_mol_double ! PickOrbitals_t in beiden Fällen
calc_orbital_pgen_contr => calc_orbital_pgen_contr_mol ! calc_orbital_pgen_contr_t nur für doubles
calc_orbital_pgen_contrib_start => calc_orbital_pgen_contrib_start_def ! CalcOrbitalPgenContr_t nur für doubles
calc_orbital_pgen_contrib_end => calc_orbital_pgen_contrib_end_def ! CalcOrbitalPgenContr_t nur für doubles
else if (t_guga_pchb) then
if (t_guga_pchb_weighted_singles) then
pickOrbitals_single => pickOrbs_sym_uniform_mol_single
else
pickOrbitals_single => pick_orbitals_pure_uniform_singles
end if
pickOrbitals_double => pick_orbitals_double_pchb
! rest has to be determined what needs a change..
calc_orbital_pgen_contr => calc_orbital_pgen_contr_pchb
calc_orbital_pgen_contrib_start => calc_orbital_pgen_contr_start_pchb
calc_orbital_pgen_contrib_end => calc_orbital_pgen_contr_end_pchb
else if (t_heisenberg_model) then
pickOrbitals_double => pick_orbitals_guga_heisenberg
calc_orbital_pgen_contr => calc_orbital_pgen_contr_heisenberg
! No single excitations + pure exchange doubles
else if (t_tJ_model) then
pickOrbitals_single => pick_orbitals_guga_tJ
pickOrbitals_double => pick_orbitals_guga_heisenberg
calc_orbital_pgen_contr => calc_orbital_pgen_contr_heisenberg
! singles + pure exchange doubles
else ! standardly also use nosymmetry version
root_print "please specify guga excitation generator explicitly!"
root_print "options are: "
root_print "'mol-guga-weighted' ... standard for molecular systems"
root_print "'ueg-guga' ... standard for UEG and Hubbard/Heisenberg/tJ models"
root_print "'guga-pchb' ... GUGA version of PCHB excit. gen. for molecular systems"
call Stop_All(this_routine, &
"please specify guga excitation generator explicitly!")
end if
end subroutine init_guga_orbital_pickers