From e96925e011ded1c61768b08116b67dbf882808f0 Mon Sep 17 00:00:00 2001 From: Alberto Ramos Date: Fri, 22 Oct 2021 16:14:23 +0200 Subject: [PATCH] Added Base.show for integrators and omf2 --- src/MD/MD.jl | 41 ++++++++++++++++++++++++++++++++--------- 1 file changed, 32 insertions(+), 9 deletions(-) diff --git a/src/MD/MD.jl b/src/MD/MD.jl index a67d43b..feb9bdc 100644 --- a/src/MD/MD.jl +++ b/src/MD/MD.jl @@ -12,13 +12,17 @@ module MD # Dalla Brida / Luscher coefficients of -# fourth order integrator -const r1 = 0.08398315262876693 -const r2 = 0.25397851084105950 -const r3 = 0.68223653357190910 -const r4 = -0.03230286765269967 -const r5 = 0.5-r1-r3 -const r6 = 1.0-2.0*(r2+r4) +# OMF integrator +const r1omf4 = 0.08398315262876693 +const r2omf4 = 0.25397851084105950 +const r3omf4 = 0.68223653357190910 +const r4omf4 = -0.03230286765269967 +const r5omf4 = 0.5-r1omf4-r3omf4 +const r6omf4 = 1.0-2.0*(r2omf4+r4omf4) + +const r1omf2 = 0.1931833275037836 +const r2omf2 = 0.5 +const r3omf2 = 1 - 2*r1omf2 struct IntrScheme{N, T} r::NTuple{N, T} @@ -26,10 +30,29 @@ struct IntrScheme{N, T} ns::Int64 end -omf4(::Type{T}, eps, ns) where T = IntrScheme{6,T}((r1,r2,r3,r4,r5,r6), eps, ns) + +omf2(::Type{T}, eps, ns) where T = IntrScheme{3,T}((r1omf2,r2omf2,r3omf2), eps, ns) +omf4(::Type{T}, eps, ns) where T = IntrScheme{6,T}((r1omf4,r2omf4,r3omf4,r4omf4,r5omf4,r6omf4), eps, ns) leapfrog(::Type{T}, eps, ns) where T = IntrScheme{2,T}((0.5,1.0,0.5), eps, ns) -export IntrScheme, omf4, leapfrog + +import Base.show +function Base.show(io::IO, int::IntrScheme{N,T}) where {N,T} + + if N == 2 + println(io, "LEAPFROG integration scheme") + elseif N == 3 + println(io, "OMF2 integration scheme") + elseif N == 6 + println(io, "OMF4 integration scheme") + end + println(io, " - eps: ", int.eps) + println(io, " - ns: ", int.ns) + + return nothing +end + +export IntrScheme, omf4, leapfrog, omf2 end