Skip to content

Commit

Permalink
Switched default tearing method to Cellier Tearing.
Browse files Browse the repository at this point in the history
Following tests have problems with Cellier Tearing and still run with omcTearing:
./simulation/libraries/msl31/Modelica.Electrical.Analog.Examples.CharacteristicThyristors.mos
./simulation/libraries/msl32/Modelica.Electrical.Machines.Examples.AsynchronousInductionMachines.AIMC_YD.mos
./simulation/libraries/msl32/Modelica.Magnetic.FundamentalWave.Examples.BasicMachines.SMR_Inverter_MultiPhase.mos
./simulation/modelica/events/bug1228.mos


git-svn-id: https://openmodelica.org/svn/OpenModelica/trunk@23953 f25d12d1-65f4-0310-ae8a-bbce733d8d8e
  • Loading branch information
ptaeuber committed Jan 7, 2015
1 parent c43f2cd commit 1112fba
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 7 deletions.
12 changes: 6 additions & 6 deletions Compiler/BackEnd/Tearing.mo
Expand Up @@ -2839,28 +2839,28 @@ protected function selectCausalVars
equation
interEqs = List.intersectionOnTrue(row,selEqs,intEq);
size = List.fold4(interEqs,sizeOfAssignable,me,ass1In,selVars,indx,0);
if Flags.isSet(Flags.TEARING_DUMPVERBOSE) then
true = size < num;
if Flags.isSet(Flags.TEARING_DUMPVERBOSE) then
print("Var " + intString(listGet(selVars,indx)) + " would causalize " + intString(size) + " Eqns\n");
end if;
true = size < num;
then ((me,ass1In,selEqs,selVars,cVars,num,indx+1,size::counts));
case(_,(me,ass1In,selEqs,selVars,cVars,num,indx,counts))
equation
interEqs = List.intersectionOnTrue(row,selEqs,intEq);
size = List.fold4(interEqs,sizeOfAssignable,me,ass1In,selVars,indx,0);
if Flags.isSet(Flags.TEARING_DUMPVERBOSE) then
true = size == num;
if Flags.isSet(Flags.TEARING_DUMPVERBOSE) then
print("Var " + intString(listGet(selVars,indx)) + " would causalize " + intString(size) + " Eqns\n");
end if;
true = size == num;
then ((me,ass1In,selEqs,selVars,indx::cVars,num,indx+1,size::counts));
case(_,(me,ass1In,selEqs,selVars,_,num,indx,counts))
equation
interEqs = List.intersectionOnTrue(row,selEqs,intEq);
size = List.fold4(interEqs,sizeOfAssignable,me,ass1In,selVars,indx,0);
if Flags.isSet(Flags.TEARING_DUMPVERBOSE) then
true = size > num;
if Flags.isSet(Flags.TEARING_DUMPVERBOSE) then
print("Var " + intString(listGet(selVars,indx)) + " would causalize " + intString(size) + " Eqns\n");
end if;
true = size > num;
then ((me,ass1In,selEqs,selVars,{indx},size,indx+1,size::counts));
end matchcontinue;
end selectCausalVars;
Expand Down
2 changes: 1 addition & 1 deletion Compiler/Util/Flags.mo
Expand Up @@ -859,7 +859,7 @@ constant ConfigFlag DELAY_BREAK_LOOP = CONFIG_FLAG(43, "delayBreakLoop",
Util.gettext("Enables (very) experimental code to break algebraic loops using the delay() operator. Probably messes with initialization."));

constant ConfigFlag TEARING_METHOD = CONFIG_FLAG(44, "tearingMethod",
NONE(), EXTERNAL(), STRING_FLAG("omcTearing"),
NONE(), EXTERNAL(), STRING_FLAG("cellier"),
SOME(STRING_DESC_OPTION({
("noTearing", Util.gettext("Skip tearing.")),
("omcTearing", Util.gettext("Tearing method developed by TU Dresden: Frenkel, Schubert.")),
Expand Down

0 comments on commit 1112fba

Please sign in to comment.