diff --git a/src/propmachinery.jl b/src/propmachinery.jl index a7aa1ed..15789e1 100644 --- a/src/propmachinery.jl +++ b/src/propmachinery.jl @@ -32,7 +32,13 @@ immutable QuStateEvolution{QPM<:QuPropagatorMethod, QVM<:@compat(Union{QuBase.Ab init_state::QVM tlist method::QPM - QuStateEvolution(eq, init_state, tlist, method) = new(eq, init_state, tlist, method) + function QuStateEvolution(eq, init_state, tlist, method) + if size(eq)[1]^2 == size(vec(init_state), 1) || size(eq)[1] == size(vec(init_state), 1) + new(eq, init_state, tlist, method) + else + error("Operator(Hamiltonian related) and initial state incompatible") + end + end end QuStateEvolution{QPM<:QuPropagatorMethod, QV<:QuBase.AbstractQuVector}(eq::QuSchrodingerEq, init_state::QV, tlist, method::QPM) = QuStateEvolution{QPM,QV,QuSchrodingerEq}(eq, init_state, tlist, method) diff --git a/src/quequations.jl b/src/quequations.jl index 2867786..2556dfb 100644 --- a/src/quequations.jl +++ b/src/quequations.jl @@ -1,3 +1,5 @@ +import Base: size + abstract QuEquation @doc """ @@ -240,6 +242,10 @@ function eff_hamiltonian(lme::QuLindbladMasterEq) return heff end +Base.size(eq::QuSchrodingerEq) = size(eq.hamiltonian) +Base.size(eq::QuLiouvillevonNeumannEq) = size(eq.liouvillian) +Base.size(eq::QuLindbladMasterEq) = size(eq.lindblad) + export QuEquation, QuSchrodingerEq, QuLiouvillevonNeumannEq,