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

Commit 68a53ba

Browse files
committed
Rough fix
1 parent e9f027d commit 68a53ba

2 files changed

Lines changed: 21 additions & 18 deletions

File tree

Project.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
name = "DiffEqOperators"
22
uuid = "9fdde737-9c7f-55bf-ade8-46b3f136cc48"
33
authors = ["Chris Rackauckas <[email protected]>"]
4-
version = "4.14.0"
4+
version = "4.15.0"
55

66
[deps]
77
BandedMatrices = "aae01518-5342-5314-be14-df237901396f"
@@ -24,7 +24,7 @@ DiffEqBase = "6.4.1"
2424
ForwardDiff = "0.10"
2525
LazyArrays = "0.17, 0.18, 0.19"
2626
LazyBandedMatrices = "0.3"
27-
ModelingToolkit = "0.10.0, 1.0, 2.0, 3.0"
27+
ModelingToolkit = "4"
2828
NNlib = "0.6, 0.7"
2929
StaticArrays = "0.10, 0.11, 0.12"
3030
julia = "1"

src/MOL_discretization.jl

Lines changed: 19 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@ function get_bcs(bcs,tdomain,domain)
1010
lhs_deriv_depvars_bcs = Dict()
1111
no_bcs = size(bcs,1)
1212
for i = 1:no_bcs
13-
var = bcs[i].lhs.op
14-
if var isa Variable
13+
var = ModelingToolkit.operation(bcs[i].lhs)
14+
if var isa Sym
1515
var = var.name
1616
if !haskey(lhs_deriv_depvars_bcs,var)
1717
lhs_deriv_depvars_bcs[var] = Array{Expr}(undef,3)
@@ -24,10 +24,10 @@ function get_bcs(bcs,tdomain,domain)
2424
elseif isequal(bcs[i].lhs.args[2],domain.upper) # u(t,x=x_final)
2525
j = 3
2626
end
27-
if bcs[i].rhs isa ModelingToolkit.Constant
28-
lhs_deriv_depvars_bcs[var][j] = :(var=$(bcs[i].rhs.value))
27+
if !(bcs[i].rhs isa ModelingToolkit.Symbolic)
28+
lhs_deriv_depvars_bcs[var][j] = :(var=$(bcs[i].rhs))
2929
else
30-
lhs_deriv_depvars_bcs[var][j] = Expr(bcs[i].rhs)
30+
lhs_deriv_depvars_bcs[var][j] = toexpr(bcs[i].rhs)
3131
end
3232
end
3333
end
@@ -44,12 +44,12 @@ end
4444

4545
function discretize_2(input,deriv_order,approx_order,dx,X,len,
4646
deriv_var,dep_var_idx,indep_var_idx)
47-
if input isa ModelingToolkit.Constant
47+
if !(input isa ModelingToolkit.Symbolic)
4848
return :($(input.value))
49-
elseif input isa Operation
50-
if input.op isa Variable
49+
else
50+
if input isa Sym
5151
expr = :(0.0)
52-
var = input.op.name
52+
var = nameof(input)
5353
if haskey(indep_var_idx,var) # ind. var.
5454
if var != :(t)
5555
i = indep_var_idx[var]
@@ -76,22 +76,24 @@ function discretize_2(input,deriv_order,approx_order,dx,X,len,
7676
end
7777
return expr
7878
elseif input.op isa Differential
79-
var = input.op.x.op.name
79+
var = nameof(input.op.x)
8080
push!(deriv_var,var)
8181
return discretize_2(input.args[1],deriv_order+1,approx_order,dx,X,
8282
len,deriv_var,dep_var_idx,indep_var_idx)
8383
pop!(deriv_var,var)
8484
else
85+
name = ModelingToolkit.operation(input).name
8586
if size(input.args,1) == 1
8687
aux = discretize_2(input.args[1],deriv_order,approx_order,dx,X,
8788
len,deriv_var,dep_var_idx,indep_var_idx)
88-
return :(broadcast($(input.op), $aux))
89+
@show input.op
90+
return :(broadcast($name, $aux))
8991
else
9092
aux_1 = discretize_2(input.args[1],deriv_order,approx_order,dx,X,
9193
len,deriv_var,dep_var_idx,indep_var_idx)
9294
aux_2 = discretize_2(input.args[2],deriv_order,approx_order,dx,X,
9395
len,deriv_var,dep_var_idx,indep_var_idx)
94-
return :(broadcast($(input.op), $aux_1, $aux_2))
96+
return :(broadcast($name, $aux_1, $aux_2))
9597
end
9698
end
9799
end
@@ -132,7 +134,7 @@ function DiffEqBase.discretize(pdesys::PDESystem,discretization::MOLFiniteDiffer
132134
len = Array{Any}(undef,no_indep_vars)
133135
k = 0
134136
for i = 1:no_indep_vars
135-
var = pdesys.domain[i].variables.op.name
137+
var = nameof(pdesys.domain[i].variables)
136138
indep_var_idx[var] = i
137139
domain[i] = pdesys.domain[i].domain
138140
if var != :(t)
@@ -167,10 +169,10 @@ function DiffEqBase.discretize(pdesys::PDESystem,discretization::MOLFiniteDiffer
167169
no_dep_vars = size(eqs,1)
168170
for j = 1:no_dep_vars
169171
input = eqs[j].lhs
170-
if input.op isa Variable
171-
var = input.op.name
172+
if input.op isa Sym
173+
var = nameof(input)
172174
else #var isa Differential
173-
var = input.args[1].op.name
175+
var = nameof(ModelingToolkit.operation(input.args[1]))
174176
lhs_deriv_depvars[var] = j
175177
end
176178
dep_var_idx[var] = j
@@ -179,6 +181,7 @@ function DiffEqBase.discretize(pdesys::PDESystem,discretization::MOLFiniteDiffer
179181
aux = discretize_2( eqs[j].rhs,0,approx_order,dx,X,len,
180182
[],dep_var_idx,indep_var_idx)
181183
# TODO: is there a better way to convert an Expr into a Function?
184+
@show aux
182185
dep_var_disc[var] = @eval (Q,u,t) -> $aux
183186
end
184187

0 commit comments

Comments
 (0)