diff --git a/src/DualTVDD.jl b/src/DualTVDD.jl index 89225bf34842f2da08c330b3936d2e02e55dcc14..4a7cf2461706e148e7f4d439e0216ef4a3b566f6 100644 --- a/src/DualTVDD.jl +++ b/src/DualTVDD.jl @@ -35,14 +35,14 @@ function run() end function rundd() - f = zeros(8) + f = zeros(8,8) f[1,:] .= 1 #g = [0. 2; 1 0.] A = diagm(ones(length(f))) α = 0.25 md = DualTVDD.DualTVDDModel(f, A, α, 0., 0.) - alg = DualTVDD.DualTVDDAlgorithm(M=(2,), overlap=(2,), σ=0.25) + alg = DualTVDD.DualTVDDAlgorithm(M=(2,2), overlap=(2,2), σ=0.25) ctx = DualTVDD.init(md, alg) md2 = DualTVDD.OpROFModel(f, A, α) @@ -50,7 +50,7 @@ function rundd() ctx2 = DualTVDD.init(md2, alg2) - for i in 1:150 + for i in 1:1000 step!(ctx) step!(ctx2) end diff --git a/src/dualtvdd.jl b/src/dualtvdd.jl index 21cc1ee59db049279c4831559227488b36f473b6..df4a0dc23f78d5a604ff910dd6244c8b171219f8 100644 --- a/src/dualtvdd.jl +++ b/src/dualtvdd.jl @@ -69,7 +69,7 @@ function step!(ctx::DualTVDDContext) ax = axes(ctx.p) overlap = ctx.algorithm.overlap - @inline kfΛ(w) = @inbounds divergence_global(w) + @inline kfΛ(w) = @inbounds -divergence_global(w) kΛ = Kernel{ntuple(_->-1:1, d)}(kfΛ) println("global p") @@ -83,7 +83,7 @@ function step!(ctx::DualTVDDContext) # g_i = (A*f - Λ(1-theta_i)p^n)|_{\Omega_i} # subctx[i].p is used as a buffer - tmp = (1 .- theta.(Ref(ax), Ref(sax), Ref(overlap), CartesianIndices(ctx.p))) .* ctx.p + tmp = .-(1 .- theta.(Ref(ax), Ref(sax), Ref(overlap), CartesianIndices(ctx.p))) .* ctx.p #tmp3 = .-(1 .- theta.(Ref(ax), Ref(sax), Ref(overlap), CartesianIndices(ctx.p))) #ctx.subctx[i].p .= .-(1 .- theta.(Ref(ax), Ref(sax), Ref(overlap), ci)) .* ctx.p[ctx.subax[i]...]