subroutine checkInputGUGA() ! routine to check if all the input parameters given are consistent ! and otherwise stops the excecution ! is called inf checkinput() in file readinput.F90 character(*), parameter :: this_routine = 'checkInputGUGA' if (tSPN) then call stop_all(this_routine, & "GUGA not yet implemented with spin restriction SPIN-RESTRICT!") end if if (tHPHF) then call stop_all(this_routine, & "GUGA not compatible with HPHF option!") end if if (tSpinProject) then call stop_all(this_routine, & "GUGA not compatible with tSpinProject!") end if ! with the new UEG/Hubbard implementation of the excitation generator ! i need symmetry actually!! or otherwise its wrong ! have to somehow find out how to check if k-point symmetry is ! provided if (tGen_sym_guga_ueg .and. lNoSymmetry .and. .not. treal) then call stop_all(this_routine, & "UEG/Hubbard implementation of GUGA excitation generator needs symmetry but NOSYMMETRY set! abort!") end if ! in the real-space do not reorder the orbitals! if (treal) t_guga_noreorder = .true. if (tExactSizeSpace) then call stop_all(this_routine, & "calculation of exact Hilbert space size not yet implemented with GUGA!") end if if (tUEGNewGenerator) then call stop_all(this_routine, & "wrong input: ueg excitation generator chosen! abort!") end if if (tPickVirtUniform) then call stop_all(this_routine, & "wrong input: tPickVirtUniform excitation generator chosen! abort!") end if if (tGenHelWeighted) then call stop_all(this_routine, & "wrong input: tGenHelWeighted excitation generator chosen with GUGA! abort!") end if if (tGen_4ind_2) then call stop_all(this_routine, & "wrong input: tGen_4ind_2 excitation generator chosen with GUGA! abort!") end if if (tGen_4ind_weighted) then call stop_all(this_routine, & "wrong input: tGen_4ind_weighted excitation generator chosen with GUGA! abort!") end if if (tGen_4ind_reverse) then call stop_all(this_routine, & "wrong input: tGen_4ind_reverse excitation generator chosen with GUGA! abort!") end if if (.not. tNoBrillouin) then call stop_all(this_routine, & "Brillouin theorem not valid for GUGA approach!(I think atleast...)") end if ! also check if provided input values match: ! CONVENTION: STOT in units of h/2! if (STOT > nEl) then call stop_all(this_routine, & "total spin S in units of h/2 cannot be higher than number of electrons!") end if if (mod(STOT, 2) /= mod(nEl, 2)) then call stop_all(this_routine, & "number of electrons nEl and total spin S in units of h/2 must have same parity!") end if ! maybe more to come... ! UHF basis is also not compatible with guga? or not... or atleast ! i am not yet implementing it in such a way so it can work if (tUHF) then call stop_all(this_routine, & "GUGA approach and UHF basis not yet (or never?) compatible!") end if if (tRealCoeffByExcitLevel) then if (RealCoeffExcitThresh > 2) then call stop_all(this_routine, & "can only determine up to excit level 2 in GUGA for now!") end if end if if (tReplicaEstimates) then call stop_all(this_routine, & "'replica-estimates' not yet implemented with GUGA") end if if (tPreCond) then call stop_all(this_routine, & "'precond' not yet implemented with GUGA. mostly because of communication") end if end subroutine checkInputGUGA