Skip to content
This repository was archived by the owner on Jul 19, 2023. It is now read-only.

Commit 1c86cca

Browse files
committed
Upgrade to MTK 4
1 parent 68a53ba commit 1c86cca

2 files changed

Lines changed: 12 additions & 11 deletions

File tree

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,4 @@
33
*.jl.mem
44
deps/deps.jl
55
Manifest.toml
6+
*.png

src/MOL_discretization.jl

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
using ModelingToolkit: operation
12
# Method of lines discretization scheme
23
struct MOLFiniteDifference{T} <: DiffEqBase.AbstractDiscretization
34
dxs::T
@@ -10,7 +11,7 @@ function get_bcs(bcs,tdomain,domain)
1011
lhs_deriv_depvars_bcs = Dict()
1112
no_bcs = size(bcs,1)
1213
for i = 1:no_bcs
13-
var = ModelingToolkit.operation(bcs[i].lhs)
14+
var = operation(bcs[i].lhs)
1415
if var isa Sym
1516
var = var.name
1617
if !haskey(lhs_deriv_depvars_bcs,var)
@@ -45,11 +46,11 @@ end
4546
function discretize_2(input,deriv_order,approx_order,dx,X,len,
4647
deriv_var,dep_var_idx,indep_var_idx)
4748
if !(input isa ModelingToolkit.Symbolic)
48-
return :($(input.value))
49+
return :($(input))
4950
else
50-
if input isa Sym
51+
if input isa Sym || (input isa Term && operation(input) isa Sym)
5152
expr = :(0.0)
52-
var = nameof(input)
53+
var = nameof(input isa Sym ? input : operation(input))
5354
if haskey(indep_var_idx,var) # ind. var.
5455
if var != :(t)
5556
i = indep_var_idx[var]
@@ -75,18 +76,17 @@ function discretize_2(input,deriv_order,approx_order,dx,X,len,
7576
end
7677
end
7778
return expr
78-
elseif input.op isa Differential
79+
elseif input isa Term && operation(input) isa Differential
7980
var = nameof(input.op.x)
8081
push!(deriv_var,var)
8182
return discretize_2(input.args[1],deriv_order+1,approx_order,dx,X,
8283
len,deriv_var,dep_var_idx,indep_var_idx)
8384
pop!(deriv_var,var)
8485
else
85-
name = ModelingToolkit.operation(input).name
86+
name = nameof(operation(input))
8687
if size(input.args,1) == 1
8788
aux = discretize_2(input.args[1],deriv_order,approx_order,dx,X,
8889
len,deriv_var,dep_var_idx,indep_var_idx)
89-
@show input.op
9090
return :(broadcast($name, $aux))
9191
else
9292
aux_1 = discretize_2(input.args[1],deriv_order,approx_order,dx,X,
@@ -169,10 +169,11 @@ function DiffEqBase.discretize(pdesys::PDESystem,discretization::MOLFiniteDiffer
169169
no_dep_vars = size(eqs,1)
170170
for j = 1:no_dep_vars
171171
input = eqs[j].lhs
172-
if input.op isa Sym
173-
var = nameof(input)
172+
op = operation(input)
173+
if op isa Sym
174+
var = nameof(op)
174175
else #var isa Differential
175-
var = nameof(ModelingToolkit.operation(input.args[1]))
176+
var = nameof(operation(input.args[1]))
176177
lhs_deriv_depvars[var] = j
177178
end
178179
dep_var_idx[var] = j
@@ -181,7 +182,6 @@ function DiffEqBase.discretize(pdesys::PDESystem,discretization::MOLFiniteDiffer
181182
aux = discretize_2( eqs[j].rhs,0,approx_order,dx,X,len,
182183
[],dep_var_idx,indep_var_idx)
183184
# TODO: is there a better way to convert an Expr into a Function?
184-
@show aux
185185
dep_var_disc[var] = @eval (Q,u,t) -> $aux
186186
end
187187

0 commit comments

Comments
 (0)