From 50b0d4ab4f7bf6a796e10ddaf2880ac188367872 Mon Sep 17 00:00:00 2001 From: amitjamadagni Date: Fri, 16 Oct 2015 14:14:16 +0800 Subject: [PATCH 1/2] Condition for creating QuStateEvolution. --- src/propmachinery.jl | 8 +++++++- src/quequations.jl | 6 ++++++ 2 files changed, 13 insertions(+), 1 deletion(-) 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..b63e5ff 100644 --- a/src/quequations.jl +++ b/src/quequations.jl @@ -1,3 +1,5 @@ +import Base: ndims + abstract QuEquation @doc """ @@ -240,6 +242,10 @@ function eff_hamiltonian(lme::QuLindbladMasterEq) return heff end +Base.ndims(eq::QuSchrodingerEq) = ndims(eq.hamiltonian) +Base.ndims(eq::QuLiouvillevonNeumannEq) = ndims(eq.liouvillian) +Base.ndims(eq::QuLindbladMasterEq) = ndims(eq.lindblad) + export QuEquation, QuSchrodingerEq, QuLiouvillevonNeumannEq, From d0e84b925320073da0d47e865671c56a4ed33a16 Mon Sep 17 00:00:00 2001 From: amitjamadagni Date: Fri, 16 Oct 2015 16:35:22 +0800 Subject: [PATCH 2/2] Use of size. --- src/quequations.jl | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/quequations.jl b/src/quequations.jl index b63e5ff..2556dfb 100644 --- a/src/quequations.jl +++ b/src/quequations.jl @@ -1,4 +1,4 @@ -import Base: ndims +import Base: size abstract QuEquation @@ -242,9 +242,9 @@ function eff_hamiltonian(lme::QuLindbladMasterEq) return heff end -Base.ndims(eq::QuSchrodingerEq) = ndims(eq.hamiltonian) -Base.ndims(eq::QuLiouvillevonNeumannEq) = ndims(eq.liouvillian) -Base.ndims(eq::QuLindbladMasterEq) = ndims(eq.lindblad) +Base.size(eq::QuSchrodingerEq) = size(eq.hamiltonian) +Base.size(eq::QuLiouvillevonNeumannEq) = size(eq.liouvillian) +Base.size(eq::QuLindbladMasterEq) = size(eq.lindblad) export QuEquation, QuSchrodingerEq,