Skip to content

Commit ced7f13

Browse files
rfrankeOpenModelica-Hudson
authored andcommitted
Set index of clocked partition in algebraic loops of FMI Jacobian
Belonging to [master]: - OpenModelica/OMCompiler#2287 - OpenModelica/OpenModelica-testsuite#879
1 parent 79e9b3d commit ced7f13

File tree

2 files changed

+6
-2
lines changed

2 files changed

+6
-2
lines changed

Compiler/SimCode/SimCodeUtil.mo

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1221,6 +1221,9 @@ algorithm
12211221
try
12221222
column::{} := symjac.columns;
12231223
(eqs, modelInfo, tmpSymJacs) := addAlgebraicLoopsModelInfo(column.columnEqns, modelInfo);
1224+
// set partition index to number of clocks (max index) for now.
1225+
// TODO: use actual clock index to support multirate systems
1226+
tmpSymJacs := list(rewriteJacPartIdx(a, modelInfo.nSubClocks) for a in tmpSymJacs);
12241227
outSymJacsInSymJacs := listAppend(tmpSymJacs, outSymJacsInSymJacs);
12251228
column.columnEqns := eqs;
12261229
symjac.columns := {column};
@@ -12806,6 +12809,7 @@ algorithm
1280612809
({contSimJac}, outModelInfo, symJacs) := addAlgebraicLoopsModelInfoSymJacs({contSimJac}, inModelInfo);
1280712810
contPartSimDer := SOME(contSimJac);
1280812811
// set partition index to number of clocks (max index) for now
12812+
// TODO: use actual clock indices to support multirate systems
1280912813
symJacFMI := {rewriteJacPartIdx(contSimJac, inModelInfo.nSubClocks)};
1281012814
else
1281112815
contPartSimDer := NONE();

Compiler/Template/CodegenCpp.tpl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -81,8 +81,8 @@ template translateModel(SimCode simCode)
8181
let()= textFile(simulationWriteOutputCppFile(simCode , &extraFuncs , &extraFuncsDecl, "", stateDerVectorName, false),'OMCpp<%fileNamePrefix%>WriteOutput.cpp')
8282
let()= textFile(simulationFactoryFile(simCode , &extraFuncs , &extraFuncsDecl, ""),'OMCpp<%fileNamePrefix%>FactoryExport.cpp')
8383
let()= textFile(simulationMainRunScript(simCode , &extraFuncs , &extraFuncsDecl, "", "", "", "exec"), '<%fileNamePrefix%><%simulationMainRunScriptSuffix(simCode , &extraFuncs , &extraFuncsDecl, "")%>')
84-
let jac = (jacobianMatrixes |> JAC_MATRIX(columns=mat) =>
85-
(mat |> JAC_COLUMN(columnEqns=eqs) => algloopfiles(eqs, simCode, &extraFuncs, &extraFuncsDecl, "", contextAlgloopJacobian, 0, stateDerVectorName, false) ;separator="")
84+
let jac = (jacobianMatrixes |> JAC_MATRIX(columns=mat, partitionIndex=partIdx) =>
85+
(mat |> JAC_COLUMN(columnEqns=eqs) => algloopfiles(eqs, simCode, &extraFuncs, &extraFuncsDecl, "", contextAlgloopJacobian, partIdx, stateDerVectorName, false) ;separator="")
8686
;separator="")
8787
let alg = algloopfiles(listAppend(allEquations, initialEquations), simCode, &extraFuncs, &extraFuncsDecl, "", contextAlgloop, 0, stateDerVectorName, false)
8888
let clk = getSubPartitions(clockedPartitions) |> subPartition hasindex i fromindex 1 =>

0 commit comments

Comments
 (0)