From 151ed122bdcb078d2449fdaa023f2b22db0149e9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefanos=20Carlstr=C3=B6m?= Date: Tue, 25 Oct 2022 11:34:02 +0200 Subject: [PATCH] Minor things (#22) * Ignore extra kwargs * Pretty-printing of multiconfigurational equations * Bump version --- Project.toml | 2 +- src/bit_configurations.jl | 2 +- src/multi_configurational_equations.jl | 21 +++++++++++++++++++++ test/bit_configurations.jl | 2 ++ test/multi_configurational_equations.jl | 15 +++++++++++++++ 5 files changed, 40 insertions(+), 2 deletions(-) diff --git a/Project.toml b/Project.toml index 6483c86..afda1e1 100644 --- a/Project.toml +++ b/Project.toml @@ -1,7 +1,7 @@ name = "EnergyExpressions" uuid = "f4b57a2e-27c7-11e9-0cb0-edd185b706f6" authors = ["Stefanos Carlström "] -version = "0.1.3" +version = "0.1.4" [deps] AtomicLevels = "10933b4c-d60f-11e8-1fc6-bd9035a249a1" diff --git a/src/bit_configurations.jl b/src/bit_configurations.jl index f78d108..f1aff9a 100644 --- a/src/bit_configurations.jl +++ b/src/bit_configurations.jl @@ -503,7 +503,7 @@ function NBodyMatrixElement(bcs::BitConfigurations, op::LinearCombinationOperato NBodyMatrixElement(terms) end -function Base.Matrix(bcs::BitConfigurations, rows, op::QuantumOperator, cols; verbosity=0) +function Base.Matrix(bcs::BitConfigurations, rows, op::QuantumOperator, cols; verbosity=0, kwargs...) m,n = length(rows), length(cols) I = [Int[] for i in 1:Threads.nthreads()] diff --git a/src/multi_configurational_equations.jl b/src/multi_configurational_equations.jl index f4e8b4d..1255555 100644 --- a/src/multi_configurational_equations.jl +++ b/src/multi_configurational_equations.jl @@ -50,6 +50,8 @@ function Base.show(io::IO, oeq::OrbitalEquation) write(io, "\n") end +Base.iszero(oeq::OrbitalEquation) = iszero(oeq.equation) + """ MCEquationSystem(equations, integrals) @@ -64,6 +66,25 @@ struct MCEquationSystem integrals end +function Base.show(io::IO, mceqs::MCEquationSystem) + neq = length(mceqs.equations) + nnzeq = count(!iszero, mceqs.equations) + nint = length(mceqs.integrals) + + write(io, "$(neq)-equation MCEquationSystem, $(nnzeq) non-zero equations, $(nint) common integrals") +end + +function Base.show(io::IO, mime::MIME"text/plain", mceqs::MCEquationSystem) + show(io, mceqs) + println(io) + nd = length(digits(length(mceqs.equations))) + for (i,eq) in enumerate(mceqs.equations) + iszero(eq) && continue + printfmt(io, "- {1:>$(nd)d}: ", i) + show(io, mime, eq) + end +end + """ pushifmissing!(vector, element) diff --git a/test/bit_configurations.jl b/test/bit_configurations.jl index 83aa5b8..c6467df 100644 --- a/test/bit_configurations.jl +++ b/test/bit_configurations.jl @@ -605,5 +605,7 @@ end @test Matrix(bcs, h, left=1, right=2) == reshape([ome(3, h, 6)*s],1,1) @test Matrix(bcs, h, left=1, right=1:2) == reshape([ome(1, h, 1) + ome(2, h, 2) + ome(3, h, 3),ome(3, h, 6)*s],1,2) + + @test Matrix(bcs, h, left=1, right=2, my_kwarg=1) == reshape([ome(3, h, 6)*s],1,1) end end diff --git a/test/multi_configurational_equations.jl b/test/multi_configurational_equations.jl index 2cb8f24..360831d 100644 --- a/test/multi_configurational_equations.jl +++ b/test/multi_configurational_equations.jl @@ -143,4 +143,19 @@ @test occursin("[ Info: Deriving equations for $(norb) orbitals\n", err) end + + @testset "Pretty-printing" begin + cfgs = spin_configurations(c"1s 2p") + bcs = BitConfigurations(cfgs) + h = FieldFreeOneBodyHamiltonian() + E = Matrix(bcs, h) + a,b = so"1s₀α",so"2p₀β" + mceqs = diff(E, conj([a,b])) + + @test string(mceqs) == "2-equation MCEquationSystem, 2 non-zero equations, 0 common integrals" + test_value_and_output(nothing, "2-equation MCEquationSystem, 2 non-zero equations, 0 common integrals +- 1: $(mceqs.equations[1])- 2: $(mceqs.equations[2])") do + show(stdout, "text/plain", mceqs) + end + end end