Skip to content

Commit

Permalink
Split up the equations in the info.xml so it is possible to see which…
Browse files Browse the repository at this point in the history
… equations are initial

git-svn-id: https://openmodelica.org/svn/OpenModelica/trunk@18080 f25d12d1-65f4-0310-ae8a-bbce733d8d8e
  • Loading branch information
sjoelund committed Nov 10, 2013
1 parent 047694b commit 44d6c1a
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 14 deletions.
3 changes: 2 additions & 1 deletion Compiler/BackEnd/SimCodeUtil.mo
Original file line number Diff line number Diff line change
Expand Up @@ -1581,12 +1581,13 @@ algorithm
highestSimEqIndex = uniqueEqIndex;
modelInfo = addTempVars(tempvars, modelInfo);

((uniqueEqIndex, removedEquations)) = BackendEquation.traverseBackendDAEEqns(removedEqs, traversedlowEqToSimEqSystem, (uniqueEqIndex, {}));

// Assertions and crap
// create parameter equations
((uniqueEqIndex, startValueEquations)) = BackendDAEUtil.foldEqSystem(dlow, createStartValueEquations, (uniqueEqIndex, {}));
((uniqueEqIndex, parameterEquations)) = BackendDAEUtil.foldEqSystem(dlow, createVarNominalAssertFromVars, (uniqueEqIndex, {}));
(uniqueEqIndex, parameterEquations) = createParameterEquations(shared, uniqueEqIndex, parameterEquations, useSymbolicInitialization);
((uniqueEqIndex, removedEquations)) = BackendEquation.traverseBackendDAEEqns(removedEqs, traversedlowEqToSimEqSystem, (uniqueEqIndex, {}));

((uniqueEqIndex, algorithmAndEquationAsserts)) = BackendDAEUtil.foldEqSystem(dlow, createAlgorithmAndEquationAsserts, (uniqueEqIndex, {}));
discreteModelVars = BackendDAEUtil.foldEqSystem(dlow, extractDiscreteModelVars, {});
Expand Down
36 changes: 23 additions & 13 deletions Compiler/Template/SimCodeDump.tpl
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ template dumpSimCodeToC(SimCode code, Boolean withOperations)
match code
case sc as SIMCODE(modelInfo=mi as MODELINFO(vars=vars as SIMVARS(__))) then
let res =
'data->modelData.modelDataXml.infoXMLData = "<%Util.escapeModelicaStringToCString(dumpSimCodeBase(code,withOperations))%>";'
'data->modelData.modelDataXml.infoXMLData = <% strtok(dumpSimCodeBase(code,withOperations),"\n") |> str => '"<%Util.escapeModelicaStringToCString(str)%>\n"' ; separator = "\n" %>;'
let() = textFile(res,'<%fileNamePrefix%>_info.c')
'<%fileNamePrefix%>_info'
end dumpSimCodeToC;
Expand Down Expand Up @@ -51,21 +51,31 @@ template dumpSimCodeBase(SimCode code, Boolean withOperations)
<%dumpVars(vars.extObjVars,withOperations)%>
<%dumpVars(vars.constVars,withOperations)%>
</variables>
<equations>
<%dumpEqs(SimCodeUtil.sortEqSystems(
listAppend(collectAllJacobianEquations(jacobianMatrixes),
listAppend(residualEquations,
listAppend(inlineEquations,
listAppend(startValueEquations,
listAppend(parameterEquations,
listAppend(initialEquations,
listAppend(algorithmAndEquationAsserts,
allEquations)))))))),withOperations)%>
<jacobian-equations>
<%dumpEqs(collectAllJacobianEquations(jacobianMatrixes),withOperations)%>
</jacobian-equations>
<initial-equations size="<%listLength(initialEquations)%>">
<%dumpEqs(SimCodeUtil.sortEqSystems(initialEquations),withOperations)%>
</initial-equations>
<residual-equations size="<%listLength(residualEquations)%>">
<%dumpEqs(residualEquations,withOperations)%>
</residual-equations>
<equations size="<%intAdd(listLength(inlineEquations),listLength(allEquations))%>">
<%dumpEqs(SimCodeUtil.sortEqSystems(listAppend(inlineEquations,allEquations)),withOperations)%>
</equations>
<literals>
<start-equations size="<%listLength(startValueEquations)%>">
<%dumpEqs(startValueEquations,withOperations)%>
</start-equations>
<parameter-equations size="<%listLength(parameterEquations)%>">
<%dumpEqs(parameterEquations,withOperations)%>
</parameter-equations>
<assertions size="<%listLength(algorithmAndEquationAsserts)%>">
<%dumpEqs(algorithmAndEquationAsserts,withOperations)%>
</assertions>
<literals size="<%listLength(literals)%>">
<% literals |> exp => '<exp><%printExpStrEscaped(exp)%></exp>' ; separator="\n" %>
</literals>
<functions>
<functions size="<%listLength(mi.functions)%>">
<% mi.functions |> func => match func
case FUNCTION(__)
case EXTERNAL_FUNCTION(__)
Expand Down
6 changes: 6 additions & 0 deletions Compiler/Template/SimCodeTV.mo
Original file line number Diff line number Diff line change
Expand Up @@ -894,6 +894,12 @@ package System
function os
output String str;
end os;

function strtok
input String s1;
input String s2;
output list<String> tokens;
end strtok;
end System;


Expand Down

0 comments on commit 44d6c1a

Please sign in to comment.