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 (allocated(GUGA_exc_generator)) then pickOrbitals_single => class_pick_singles pickOrbitals_double => class_pick_doubles ! rest has to be determined what needs a change.. calc_orbital_pgen_contr => class_calc_orb_pgen_contr calc_orbital_pgen_contrib_start => class_calc_orb_pgen_contr_str calc_orbital_pgen_contrib_end => class_calc_orb_pgen_contr_end 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