diff --git a/src/Methods/HartreeFock/UHF/UHFHelper.jl b/src/Methods/HartreeFock/UHF/UHFHelper.jl index 90e95ff..b471d0f 100644 --- a/src/Methods/HartreeFock/UHF/UHFHelper.jl +++ b/src/Methods/HartreeFock/UHF/UHFHelper.jl @@ -198,4 +198,14 @@ function odadamping(D, Ds, F, Fs) damp = 1-λ F .= Fs return damp -end \ No newline at end of file +end + +function UHFSpin(Nα , Nβ, Cα, Cβ, S) + # Calculate S^2 + smo=transpose(Cα)*S*Cβ + sz=0.25*(Nα-Nβ)^2 + smo2=smo.^2 + sxy=0.5*(Nα+Nβ)-sum(smo2[1:Nα,1:Nβ]) + spinsquare=sz+sxy + return(spinsquare) +end diff --git a/src/Methods/HartreeFock/UHF/UHFa.jl b/src/Methods/HartreeFock/UHF/UHFa.jl index 46a1262..52b9b18 100644 --- a/src/Methods/HartreeFock/UHF/UHFa.jl +++ b/src/Methods/HartreeFock/UHF/UHFa.jl @@ -161,9 +161,11 @@ function UHF(ints::IntegralHelper{Float64, <:AbstractERI, AtomicOrbitals}, Cα:: nocc = Nα + Nβ # TODO nvir = 2*m - nocc # output(repeat("-",80)) + spinsquare=UHFSpin(Nα , Nβ, Cα, Cβ, S) output(" UHF done in {:>5.2f}s", t) output(" @Final UHF Energy {:>20.12f} Eₕ", E) + output(" = {:> 15.10f}",spinsquare) output("\n • Orbitals Summary",) output("\n ⬗ Alpha (α) orbitals") output("\n {:>10} {:>15} {:>10}", "Orbital", "Energy", "Occupancy")