Skip to content

Commit

Permalink
[NB] correctly count eqns and vars in minimal tearing (OpenModelica#1…
Browse files Browse the repository at this point in the history
  • Loading branch information
kabdelhak committed Jun 18, 2024
1 parent c7e502d commit 680083d
Showing 1 changed file with 8 additions and 4 deletions.
12 changes: 8 additions & 4 deletions OMCompiler/Compiler/NBackEnd/Modules/3_Post/NBTearing.mo
Original file line number Diff line number Diff line change
Expand Up @@ -357,6 +357,7 @@ protected
Tearing strict;
list<Pointer<Variable>> vars_lst, cont_vars, disc_vars;
list<Pointer<Equation>> eqns_lst, cont_eqns, disc_eqns;
Integer num_vars, num_eqns;
list<Slice<EquationPointer>> residual_lst;
Adjacency.Matrix adj;
Matching matching;
Expand All @@ -370,14 +371,17 @@ protected
eqns_lst := list(Slice.getT(eqn) for eqn in strict.residual_eqns);
(cont_vars, disc_vars) := List.splitOnTrue(vars_lst, function BVariable.isContinuous(init = systemType == NBSystem.SystemType.INI));
(cont_eqns, disc_eqns) := List.splitOnTrue(eqns_lst, Equation.isContinuous);
num_vars := sum(BVariable.size(var) for var in disc_vars);
num_eqns := sum(Equation.size(eqn) for eqn in disc_eqns);

if listLength(disc_vars) <> listLength(disc_eqns) then
if num_vars <> num_eqns then
Error.addMessage(Error.INTERNAL_ERROR,{getInstanceName()
+ " failed.\n" + StringUtil.headline_4("(" + intString(listLength(disc_vars)) + "|"
+ intString(sum(BVariable.size(var) for var in disc_vars)) + ") Discrete Variables")
+ " failed because number of discrete variables " + intString(num_vars) + " differs from number of discrete equations: " + intString(num_eqns)
+ ".\n" + StringUtil.headline_4("(" + intString(listLength(disc_vars)) + "|"
+ intString(num_vars) + ") Discrete Variables")
+ List.toString(disc_vars, BVariable.pointerToString, "", "\t", "\n\t", "\n", true) + "\n"
+ StringUtil.headline_4("(" + intString(listLength(disc_eqns)) + "|"
+ intString(sum(Equation.size(eqn) for eqn in disc_eqns)) + ") Discrete Equations")
+ intString(num_eqns) + ") Discrete Equations")
+ List.toString(disc_eqns, function Equation.pointerToString(str=""), "", "\t", "\n\t", "\n", true) + "\n"});
fail();
end if;
Expand Down

0 comments on commit 680083d

Please sign in to comment.