Skip to content

Commit

Permalink
[BE] update InlineAfterIndexReduction
Browse files Browse the repository at this point in the history
 - inline function calls with InlineAfterIndexReduction only for matching
 - ticket 5170
 - fixup testuite
  • Loading branch information
kabdelhak authored and adrpo committed Jul 15, 2019
1 parent b2eff48 commit fac0426
Show file tree
Hide file tree
Showing 14 changed files with 113 additions and 105 deletions.
11 changes: 10 additions & 1 deletion OMCompiler/Compiler/BackEnd/BackendDAEUtil.mo
Expand Up @@ -2519,6 +2519,7 @@ public function incidenceRow
output Integer rowSize;
protected
list<Integer> whenIntegerLst;
BackendDAE.Equation inlinedEquation;
algorithm
whenIntegerLst := matchcontinue inIndexType
local
Expand All @@ -2543,7 +2544,15 @@ algorithm
else {};
end matchcontinue;

(outIntegerLst,rowSize) := matchcontinue (inEquation)
/* Fix for ticket #5170
Functions with the annotation "InlineAfterIndexReduction" can contain dependencies which are only
used for differentiation purposes and should not be part of the adjacency matrix. Therefore these
are inlined before constructing the adjacency row.
E.g. func(a,b) = a --d/dt--> func_der(a,b) = b
*/
(inlinedEquation,_) := BackendInline.inlineEq(inEquation,(functionTree,{DAE.AFTER_INDEX_RED_INLINE()}));

(outIntegerLst,rowSize) := matchcontinue (inlinedEquation)
local
AvlSetInt.Tree lst1,lst2,res;
list<Integer> dimsize;
Expand Down
2 changes: 1 addition & 1 deletion OMCompiler/Compiler/BackEnd/BackendInline.mo
Expand Up @@ -172,7 +172,7 @@ algorithm
end for;
end inlineEquationOptArray;

protected function inlineEq "
public function inlineEq "
inlines function calls in equations"
input BackendDAE.Equation inEquation;
input Inline.Functiontuple fns;
Expand Down
Expand Up @@ -42,11 +42,11 @@ val(prismatic_v, 1);
// LOG_SUCCESS | info | The simulation finished successfully.
// "
// end SimulationResult;
// "[openmodelica/cppruntime/fmu/modelExchange/1.0/cranes_crane_me_FMU.mo:794:3-794:76:writable] Warning: Parameter world_label2 has no value, and is fixed during initialization (fixed=true), using available start value (start="y") as default value.
// [openmodelica/cppruntime/fmu/modelExchange/1.0/cranes_crane_me_FMU.mo:793:3-793:78:writable] Warning: Parameter world_label1 has no value, and is fixed during initialization (fixed=true), using available start value (start="x") as default value.
// [openmodelica/cppruntime/fmu/modelExchange/1.0/cranes_crane_me_FMU.mo:792:3-792:80:writable] Warning: Parameter fixedTranslation_shapeType has no value, and is fixed during initialization (fixed=true), using available start value (start="cylinder") as default value.
// [openmodelica/cppruntime/fmu/modelExchange/1.0/cranes_crane_me_FMU.mo:791:3-791:73:writable] Warning: Parameter bodyShape_shapeType has no value, and is fixed during initialization (fixed=true), using available start value (start="cylinder") as default value.
// [openmodelica/cppruntime/fmu/modelExchange/1.0/cranes_crane_me_FMU.mo:790:3-790:90:writable] Warning: Parameter bodyShape_frameTranslation_shapeType has no value, and is fixed during initialization (fixed=true), using available start value (start="cylinder") as default value.
// "[openmodelica/cppruntime/fmu/modelExchange/1.0/cranes_crane_me_FMU.mo:793:3-793:76:writable] Warning: Parameter world_label2 has no value, and is fixed during initialization (fixed=true), using available start value (start="y") as default value.
// [openmodelica/cppruntime/fmu/modelExchange/1.0/cranes_crane_me_FMU.mo:792:3-792:78:writable] Warning: Parameter world_label1 has no value, and is fixed during initialization (fixed=true), using available start value (start="x") as default value.
// [openmodelica/cppruntime/fmu/modelExchange/1.0/cranes_crane_me_FMU.mo:791:3-791:80:writable] Warning: Parameter fixedTranslation_shapeType has no value, and is fixed during initialization (fixed=true), using available start value (start="cylinder") as default value.
// [openmodelica/cppruntime/fmu/modelExchange/1.0/cranes_crane_me_FMU.mo:790:3-790:73:writable] Warning: Parameter bodyShape_shapeType has no value, and is fixed during initialization (fixed=true), using available start value (start="cylinder") as default value.
// [openmodelica/cppruntime/fmu/modelExchange/1.0/cranes_crane_me_FMU.mo:789:3-789:90:writable] Warning: Parameter bodyShape_frameTranslation_shapeType has no value, and is fixed during initialization (fixed=true), using available start value (start="cylinder") as default value.
// "
// 0.9493545676148092
// 0.3948240567431445
Expand Down
52 changes: 26 additions & 26 deletions testsuite/openmodelica/xml/XmlDumpComment.mos
Expand Up @@ -22558,8 +22558,8 @@ readFile("Modelica.Mechanics.MultiBody.Examples.Elementary.Pendulum.xml");
// <solvedIn variableId=\"59\" equationId=\"37\" />
// <solvedIn variableId=\"60\" equationId=\"37\" />
// <solvedIn variableId=\"61\" equationId=\"77\" />
// <solvedIn variableId=\"62\" equationId=\"76\" />
// <solvedIn variableId=\"63\" equationId=\"94\" />
// <solvedIn variableId=\"62\" equationId=\"93\" />
// <solvedIn variableId=\"63\" equationId=\"75\" />
// <solvedIn variableId=\"64\" equationId=\"100\" />
// <solvedIn variableId=\"65\" equationId=\"101\" />
// <solvedIn variableId=\"66\" equationId=\"102\" />
Expand All @@ -22580,15 +22580,15 @@ readFile("Modelica.Mechanics.MultiBody.Examples.Elementary.Pendulum.xml");
// <solvedIn variableId=\"81\" equationId=\"104\" />
// <solvedIn variableId=\"82\" equationId=\"105\" />
// <solvedIn variableId=\"83\" equationId=\"85\" />
// <solvedIn variableId=\"84\" equationId=\"63\" />
// <solvedIn variableId=\"84\" equationId=\"64\" />
// <solvedIn variableId=\"85\" equationId=\"62\" />
// <solvedIn variableId=\"86\" equationId=\"61\" />
// <solvedIn variableId=\"87\" equationId=\"98\" />
// <solvedIn variableId=\"88\" equationId=\"97\" />
// <solvedIn variableId=\"89\" equationId=\"84\" />
// <solvedIn variableId=\"88\" equationId=\"84\" />
// <solvedIn variableId=\"89\" equationId=\"96\" />
// <solvedIn variableId=\"90\" equationId=\"95\" />
// <solvedIn variableId=\"91\" equationId=\"96\" />
// <solvedIn variableId=\"92\" equationId=\"93\" />
// <solvedIn variableId=\"91\" equationId=\"94\" />
// <solvedIn variableId=\"92\" equationId=\"97\" />
// <solvedIn variableId=\"93\" equationId=\"83\" />
// <solvedIn variableId=\"94\" equationId=\"82\" />
// <solvedIn variableId=\"95\" equationId=\"81\" />
Expand All @@ -22598,8 +22598,8 @@ readFile("Modelica.Mechanics.MultiBody.Examples.Elementary.Pendulum.xml");
// <solvedIn variableId=\"99\" equationId=\"90\" />
// <solvedIn variableId=\"100\" equationId=\"91\" />
// <solvedIn variableId=\"101\" equationId=\"92\" />
// <solvedIn variableId=\"102\" equationId=\"75\" />
// <solvedIn variableId=\"103\" equationId=\"64\" />
// <solvedIn variableId=\"102\" equationId=\"63\" />
// <solvedIn variableId=\"103\" equationId=\"76\" />
// <solvedIn variableId=\"104\" equationId=\"65\" />
// <solvedIn variableId=\"105\" equationId=\"89\" />
// <solvedIn variableId=\"106\" equationId=\"88\" />
Expand Down Expand Up @@ -22782,51 +22782,51 @@ readFile("Modelica.Mechanics.MultiBody.Examples.Elementary.Pendulum.xml");
// </bltBlock>
// <bltBlock id=\"81\">
// <involvedEquation equationId=\"63\" />
// <involvedEquation equationId=\"65\" />
// <involvedEquation equationId=\"77\" />
// <involvedEquation equationId=\"75\" />
// <involvedEquation equationId=\"98\" />
// <involvedEquation equationId=\"84\" />
// <involvedEquation equationId=\"96\" />
// <involvedEquation equationId=\"94\" />
// <involvedEquation equationId=\"97\" />
// <involvedEquation equationId=\"95\" />
// <involvedEquation equationId=\"75\" />
// <involvedEquation equationId=\"93\" />
// <involvedEquation equationId=\"64\" />
// <involvedEquation equationId=\"96\" />
// <involvedEquation equationId=\"95\" />
// <involvedEquation equationId=\"76\" />
// <involvedEquation equationId=\"64\" />
// <involvedEquation equationId=\"65\" />
// <involvedEquation equationId=\"77\" />
// <involvedEquation equationId=\"94\" />
// </bltBlock>
// <bltBlock id=\"82\">
// <involvedEquation equationId=\"91\" />
// <involvedEquation equationId=\"90\" />
// </bltBlock>
// <bltBlock id=\"83\">
// <involvedEquation equationId=\"92\" />
// </bltBlock>
// <bltBlock id=\"84\">
// <involvedEquation equationId=\"90\" />
// <involvedEquation equationId=\"87\" />
// </bltBlock>
// <bltBlock id=\"85\">
// <involvedEquation equationId=\"78\" />
// <involvedEquation equationId=\"89\" />
// </bltBlock>
// <bltBlock id=\"86\">
// <involvedEquation equationId=\"79\" />
// <involvedEquation equationId=\"91\" />
// </bltBlock>
// <bltBlock id=\"87\">
// <involvedEquation equationId=\"80\" />
// <involvedEquation equationId=\"78\" />
// </bltBlock>
// <bltBlock id=\"88\">
// <involvedEquation equationId=\"81\" />
// <involvedEquation equationId=\"79\" />
// </bltBlock>
// <bltBlock id=\"89\">
// <involvedEquation equationId=\"82\" />
// <involvedEquation equationId=\"80\" />
// </bltBlock>
// <bltBlock id=\"90\">
// <involvedEquation equationId=\"83\" />
// <involvedEquation equationId=\"81\" />
// </bltBlock>
// <bltBlock id=\"91\">
// <involvedEquation equationId=\"87\" />
// <involvedEquation equationId=\"82\" />
// </bltBlock>
// <bltBlock id=\"92\">
// <involvedEquation equationId=\"89\" />
// <involvedEquation equationId=\"83\" />
// </bltBlock>
// <bltBlock id=\"93\">
// <involvedEquation equationId=\"62\" />
Expand Down
Expand Up @@ -56,7 +56,7 @@ runScript(modelTesting);getErrorString();
// * Torn equation systems: 13
// * Mixed (continuous/discrete) equation systems: 0
// Notification: Torn system details for strict tearing set:
// * Linear torn systems: 7 {(27,17.6%) 757,(2,100.0%) 11,(3,88.9%) 10,(3,88.9%) 10,(3,88.9%) 10,(2,100.0%) 11,(2,100.0%) 11}
// * Linear torn systems: 7 {(27,17.6%) 757,(2,100.0%) 11,(2,100.0%) 11,(3,88.9%) 10,(2,100.0%) 11,(2,100.0%) 11,(2,100.0%) 11}
// * Non-linear torn systems: 6 {2 12,2 12,2 12,2 12,2 12,2 12}
// Notification: Model statistics after passing the back-end for simulation:
// * Number of independent subsystems: 217
Expand Down
Expand Up @@ -45,8 +45,8 @@ runScript(modelTesting);getErrorString();
// * Number of discrete variables: 333 ('-d=discreteinfo' for list of discrete vars)
// * Number of discrete states: 0 ('-d=discreteinfo' for list of discrete states)
// * Top-level inputs: 0
// Notification: Strong component statistics for initialization (2820):
// * Single equations (assignments): 2813
// Notification: Strong component statistics for initialization (2822):
// * Single equations (assignments): 2815
// * Array equations: 6
// * Algorithm blocks: 0
// * Record equations: 0
Expand All @@ -64,8 +64,8 @@ runScript(modelTesting);getErrorString();
// * Number of discrete variables: 0 ('-d=discreteinfo' for list of discrete vars)
// * Number of discrete states: 0 ('-d=discreteinfo' for list of discrete states)
// * Top-level inputs: 0
// Notification: Strong component statistics for simulation (1341):
// * Single equations (assignments): 1340
// Notification: Strong component statistics for simulation (1343):
// * Single equations (assignments): 1342
// * Array equations: 0
// * Algorithm blocks: 0
// * Record equations: 0
Expand Down

0 comments on commit fac0426

Please sign in to comment.