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