We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Hi all,
I got errors when converting PDE problem to ODE problem by using "discretize". Could someone please help?
Here are the codes:
using ModelingToolkit, DomainSets, MethodOfLines, OrdinaryDiffEq
@parameters t, x @variables u1(..), u2(..), u3(..), Dtu1(..), Dtu2(..) Dt = Differential(t) Dtt = Differential(t)^2 Dx = Differential(x) Dxx = Differential(x)^2
eqs = [ Dt(Dtu1(x,t)) ~ Dxx(u1(x,t)) + u3(x,t)sin(pix), Dtu1(x,t) ~ Dt(u1(x,t)), Dt(Dtu2(x,t)) ~ Dxx(u2(x,t)) + u3(x,t)cos(pix), Dtu2(x,t) ~ Dt(u2(x,t)), 0. ~ u1(x,t)sin(pix) + u2(x,t)cos(pix) - exp(-t) ]
L = 1.0 bcs = [ u1(x,0) ~ sin(pix), u2(x,0) ~ cos(pix), Dtu1(x,0) ~ cos(pix), Dtu2(x,0) ~ -sin(pix), u1(0,t) ~ 0., u2(0,t) ~ exp(-t), u1(L,t) ~ 0., u2(L,t) ~ -exp(-t) ]
domains = [ t ∈ Interval(0.0,1.0), x ∈ Interval(0.0,L) ]
@nAmed pdesys = PDESystem(eqs, bcs, domains, [x,t], [u1(x,t), u2(x,t), u3(x,t), Dtu1(x,t), Dtu2(x,t)])
N = 20 dx = (L-0.0)/N order = 2 discretization = MOLFiniteDifference([x=>dx], t, approx_order=2, grid_align=center_align)
prob = discretize(pdesys, discretization)
ArgumentError: Term{Real, Base.ImmutableDict{DataType, Any}}[u1ˍtt2, u1ˍtt3, u1ˍtt4, u1ˍtt5, u1ˍtt6, u1ˍtt7, u1ˍtt8, u1ˍtt9, u1ˍtt10, u1ˍtt11, u1ˍtt12, u1ˍtt13, u1ˍtt14, u1ˍtt15, u1ˍtt16, u1ˍtt17, u1ˍtt18, u1ˍtt19, u1ˍtt20] are missing from the variable map.
Stacktrace: [1] throw_missingvars(vars::Vector{Term{Real, Base.ImmutableDict{DataType, Any}}}) @ ModelingToolkit ~/.julia/packages/ModelingToolkit/9ppm9/src/variables.jl:98 [2] _varmap_to_vars(varmap::Dict{Any, Any}, varlist::Vector{Term{Real, Base.ImmutableDict{DataType, Any}}}; defaults::Dict{Any, Any}, check::Bool, toterm::typeof(Symbolics.diff2term)) @ ModelingToolkit ~/.julia/packages/ModelingToolkit/9ppm9/src/variables.jl:92 [3] varmap_to_vars(varmap::Vector{Pair}, varlist::Vector{Term{Real, Base.ImmutableDict{DataType, Any}}}; defaults::Dict{Any, Any}, check::Bool, toterm::Function, promotetoconcrete::Nothing, tofloat::Bool, use_union::Bool) @ ModelingToolkit ~/.julia/packages/ModelingToolkit/9ppm9/src/variables.jl:61 [4] process_DEProblem(constructor::Type, sys::ODESystem, u0map::Vector{Pair}, parammap::SciMLBase.NullParameters; implicit_dae::Bool, du0map::Nothing, version::Nothing, tgrad::Bool, jac::Bool, checkbounds::Bool, sparse::Bool, simplify::Bool, linenumbers::Bool, parallel::Symbolics.SerialForm, eval_expression::Bool, use_union::Bool, kwargs::Base.Pairs{Symbol, Bool, Tuple{Symbol, Symbol}, NamedTuple{(:has_difference, :check_length), Tuple{Bool, Bool}}}) @ ModelingToolkit ~/.julia/packages/ModelingToolkit/9ppm9/src/systems/diffeqs/abstractodesystem.jl:541 [5] (ODEProblem{true})(sys::ODESystem, u0map::Vector{Pair}, tspan::Tuple{Float64, Float64}, parammap::SciMLBase.NullParameters; callback::Nothing, check_length::Bool, kwargs::Base.Pairs{Symbol, Union{}, Tuple{}, NamedTuple{(), Tuple{}}}) @ ModelingToolkit ~/.julia/packages/ModelingToolkit/9ppm9/src/systems/diffeqs/abstractodesystem.jl:635 [6] (ODEProblem{true})(sys::ODESystem, u0map::Vector{Pair}, tspan::Tuple{Float64, Float64}, parammap::SciMLBase.NullParameters) (repeats 2 times) @ ModelingToolkit ~/.julia/packages/ModelingToolkit/9ppm9/src/systems/diffeqs/abstractodesystem.jl:634 [7] ODEProblem(::ODESystem, ::Vector{Pair}, ::Vararg{Any}; kwargs::Base.Pairs{Symbol, Union{}, Tuple{}, NamedTuple{(), Tuple{}}}) @ ModelingToolkit ~/.julia/packages/ModelingToolkit/9ppm9/src/systems/diffeqs/abstractodesystem.jl:627 [8] ODEProblem(::ODESystem, ::Vector{Pair}, ::Vararg{Any}) @ ModelingToolkit ~/.julia/packages/ModelingToolkit/9ppm9/src/systems/diffeqs/abstractodesystem.jl:627 [9] discretize(pdesys::PDESystem, discretization::MOLFiniteDifference{MethodOfLines.CenterAlignedGrid}) @ MethodOfLines ~/.julia/packages/MethodOfLines/5wITU/src/MOL_discretization.jl:154 [10] top-level scope @ In[8]:1 [11] eval @ ./boot.jl:373 [inlined] [12] include_string(mapexpr::typeof(REPL.softscope), mod::Module, code::String, filename::String) @ Base ./loading.jl:1196
The text was updated successfully, but these errors were encountered:
I'm afraid that second time derivatives are not yet supported, I will be implementing them this week however.
Sorry, something went wrong.
Hi Alex, thanks for informing. Looking forward to it.
Successfully merging a pull request may close this issue.
Hi all,
I got errors when converting PDE problem to ODE problem by using "discretize". Could someone please help?
Here are the codes:
using ModelingToolkit, DomainSets, MethodOfLines, OrdinaryDiffEq
@parameters t, x
@variables u1(..), u2(..), u3(..), Dtu1(..), Dtu2(..)
Dt = Differential(t)
Dtt = Differential(t)^2
Dx = Differential(x)
Dxx = Differential(x)^2
eqs = [
Dt(Dtu1(x,t)) ~ Dxx(u1(x,t)) + u3(x,t)sin(pix),
Dtu1(x,t) ~ Dt(u1(x,t)),
Dt(Dtu2(x,t)) ~ Dxx(u2(x,t)) + u3(x,t)cos(pix),
Dtu2(x,t) ~ Dt(u2(x,t)),
0. ~ u1(x,t)sin(pix) + u2(x,t)cos(pix) - exp(-t)
]
L = 1.0
bcs = [
u1(x,0) ~ sin(pix),
u2(x,0) ~ cos(pix),
Dtu1(x,0) ~ cos(pix),
Dtu2(x,0) ~ -sin(pix),
u1(0,t) ~ 0.,
u2(0,t) ~ exp(-t),
u1(L,t) ~ 0.,
u2(L,t) ~ -exp(-t)
]
domains = [
t ∈ Interval(0.0,1.0),
x ∈ Interval(0.0,L)
]
@nAmed pdesys = PDESystem(eqs, bcs, domains, [x,t],
[u1(x,t), u2(x,t), u3(x,t), Dtu1(x,t), Dtu2(x,t)])
N = 20
dx = (L-0.0)/N
order = 2
discretization = MOLFiniteDifference([x=>dx], t, approx_order=2, grid_align=center_align)
prob = discretize(pdesys, discretization)
Then, it shows the error:
ArgumentError: Term{Real, Base.ImmutableDict{DataType, Any}}[u1ˍtt2, u1ˍtt3, u1ˍtt4, u1ˍtt5, u1ˍtt6, u1ˍtt7, u1ˍtt8, u1ˍtt9, u1ˍtt10, u1ˍtt11, u1ˍtt12, u1ˍtt13, u1ˍtt14, u1ˍtt15, u1ˍtt16, u1ˍtt17, u1ˍtt18, u1ˍtt19, u1ˍtt20] are missing from the variable map.
Stacktrace:
[1] throw_missingvars(vars::Vector{Term{Real, Base.ImmutableDict{DataType, Any}}})
@ ModelingToolkit ~/.julia/packages/ModelingToolkit/9ppm9/src/variables.jl:98
[2] _varmap_to_vars(varmap::Dict{Any, Any}, varlist::Vector{Term{Real, Base.ImmutableDict{DataType, Any}}}; defaults::Dict{Any, Any}, check::Bool, toterm::typeof(Symbolics.diff2term))
@ ModelingToolkit ~/.julia/packages/ModelingToolkit/9ppm9/src/variables.jl:92
[3] varmap_to_vars(varmap::Vector{Pair}, varlist::Vector{Term{Real, Base.ImmutableDict{DataType, Any}}}; defaults::Dict{Any, Any}, check::Bool, toterm::Function, promotetoconcrete::Nothing, tofloat::Bool, use_union::Bool)
@ ModelingToolkit ~/.julia/packages/ModelingToolkit/9ppm9/src/variables.jl:61
[4] process_DEProblem(constructor::Type, sys::ODESystem, u0map::Vector{Pair}, parammap::SciMLBase.NullParameters; implicit_dae::Bool, du0map::Nothing, version::Nothing, tgrad::Bool, jac::Bool, checkbounds::Bool, sparse::Bool, simplify::Bool, linenumbers::Bool, parallel::Symbolics.SerialForm, eval_expression::Bool, use_union::Bool, kwargs::Base.Pairs{Symbol, Bool, Tuple{Symbol, Symbol}, NamedTuple{(:has_difference, :check_length), Tuple{Bool, Bool}}})
@ ModelingToolkit ~/.julia/packages/ModelingToolkit/9ppm9/src/systems/diffeqs/abstractodesystem.jl:541
[5] (ODEProblem{true})(sys::ODESystem, u0map::Vector{Pair}, tspan::Tuple{Float64, Float64}, parammap::SciMLBase.NullParameters; callback::Nothing, check_length::Bool, kwargs::Base.Pairs{Symbol, Union{}, Tuple{}, NamedTuple{(), Tuple{}}})
@ ModelingToolkit ~/.julia/packages/ModelingToolkit/9ppm9/src/systems/diffeqs/abstractodesystem.jl:635
[6] (ODEProblem{true})(sys::ODESystem, u0map::Vector{Pair}, tspan::Tuple{Float64, Float64}, parammap::SciMLBase.NullParameters) (repeats 2 times)
@ ModelingToolkit ~/.julia/packages/ModelingToolkit/9ppm9/src/systems/diffeqs/abstractodesystem.jl:634
[7] ODEProblem(::ODESystem, ::Vector{Pair}, ::Vararg{Any}; kwargs::Base.Pairs{Symbol, Union{}, Tuple{}, NamedTuple{(), Tuple{}}})
@ ModelingToolkit ~/.julia/packages/ModelingToolkit/9ppm9/src/systems/diffeqs/abstractodesystem.jl:627
[8] ODEProblem(::ODESystem, ::Vector{Pair}, ::Vararg{Any})
@ ModelingToolkit ~/.julia/packages/ModelingToolkit/9ppm9/src/systems/diffeqs/abstractodesystem.jl:627
[9] discretize(pdesys::PDESystem, discretization::MOLFiniteDifference{MethodOfLines.CenterAlignedGrid})
@ MethodOfLines ~/.julia/packages/MethodOfLines/5wITU/src/MOL_discretization.jl:154
[10] top-level scope
@ In[8]:1
[11] eval
@ ./boot.jl:373 [inlined]
[12] include_string(mapexpr::typeof(REPL.softscope), mod::Module, code::String, filename::String)
@ Base ./loading.jl:1196
The text was updated successfully, but these errors were encountered: