-
-
Notifications
You must be signed in to change notification settings - Fork 5
Open
Description
Description
Equations containing if-expressions are not supported by the parser.
When trying nested if-expressions (generated from if-elseif-else expressions) the parser get's stuck.
How to reproduce
Example 1: Inline if
InlineIf.mo
package 'InlineIf'
model 'InlineIf'
Real 'x';
equation
'x' = if time < 0.5 then 1.0 else 2.0;
end 'InlineIf';
end 'InlineIf';julia> BaseModelica.parse_basemodelica("InlineIf.mo")
ERROR: MethodError: no method matching -(::Nothing, ::SymbolicUtils.BasicSymbolic{Real})
The function `-` exists, but no method is defined for this combination of argument types.
Closest candidates are:
-(::ChainRulesCore.NoTangent, ::Any)
@ ChainRulesCore ~/.julia/packages/ChainRulesCore/Vsbj9/src/tangent_arithmetic.jl:61
-(::Any, ::ChainRulesCore.ZeroTangent)
@ ChainRulesCore ~/.julia/packages/ChainRulesCore/Vsbj9/src/tangent_arithmetic.jl:102
-(::MutableArithmetics.Zero, ::Any)
@ MutableArithmetics ~/.julia/packages/MutableArithmetics/tNSBd/src/rewrite.jl:67
...
Stacktrace:
[1] ModelingToolkit.TearingState(sys::ModelingToolkit.ODESystem; quick_cancel::Bool, check::Bool)
@ ModelingToolkit ~/.julia/packages/ModelingToolkit/S1kqK/src/systems/systemstructure.jl:290
[2] ModelingToolkit.TearingState(sys::ModelingToolkit.ODESystem)
@ ModelingToolkit ~/.julia/packages/ModelingToolkit/S1kqK/src/systems/systemstructure.jl:256
[3] __structural_simplify(sys::ModelingToolkit.ODESystem, io::Nothing; simplify::Bool, kwargs::@Kwargs{…})
@ ModelingToolkit ~/.julia/packages/ModelingToolkit/S1kqK/src/systems/systems.jl:75
[4] __structural_simplify
@ ~/.julia/packages/ModelingToolkit/S1kqK/src/systems/systems.jl:72 [inlined]
[5] structural_simplify(sys::ModelingToolkit.ODESystem, io::Nothing; additional_passes::Vector{…}, simplify::Bool, split::Bool, allow_symbolic::Bool, allow_parameter::Bool, conservative::Bool, fully_determined::Bool, kwargs::@Kwargs{})
@ ModelingToolkit ~/.julia/packages/ModelingToolkit/S1kqK/src/systems/systems.jl:33
[6] structural_simplify (repeats 2 times)
@ ~/.julia/packages/ModelingToolkit/S1kqK/src/systems/systems.jl:28 [inlined]
[7] eval_AST(model::BaseModelica.BaseModelicaModel)
@ BaseModelica ~/.julia/packages/BaseModelica/qCG6a/src/evaluator.jl:127
[8] eval_AST(package::BaseModelica.BaseModelicaPackage)
@ BaseModelica ~/.julia/packages/BaseModelica/qCG6a/src/evaluator.jl:132
[9] baseModelica_to_ModelingToolkit
@ ~/.julia/packages/BaseModelica/qCG6a/src/evaluator.jl:153 [inlined]
[10] parse_basemodelica(filename::String)
@ BaseModelica ~/.julia/packages/BaseModelica/qCG6a/src/BaseModelica.jl:23
[11] top-level scope
@ REPL[2]:1
Some type information was truncated. Use `show(err)` to see complete types.Example 2: Nested inline if
package 'InlineIfNested'
model 'InlineIfNested'
Real 'x';
equation
'x' = if time < 0.33 then 1.0 else if time < 0.66 then 2.0 else 3.0;
end 'InlineIfNested';
end 'InlineIfNested';julia> BaseModelica.parse_basemodelica("InlineIfNested.mo")This never finishes (or at leats I didn't wanted to wate more than a few minutes).
Versions 'n Stuff
- Julia Version 1.11.6
- BaseModelica v1.1.0
- OS: Ubuntu 24.04.3 LTS
Metadata
Metadata
Assignees
Labels
No labels