diff --git a/Compiler/SimCode/SimCodeUtil.mo b/Compiler/SimCode/SimCodeUtil.mo index 99a07d128f..c72f9bee44 100644 --- a/Compiler/SimCode/SimCodeUtil.mo +++ b/Compiler/SimCode/SimCodeUtil.mo @@ -1221,6 +1221,9 @@ algorithm try column::{} := symjac.columns; (eqs, modelInfo, tmpSymJacs) := addAlgebraicLoopsModelInfo(column.columnEqns, modelInfo); + // set partition index to number of clocks (max index) for now. + // TODO: use actual clock index to support multirate systems + tmpSymJacs := list(rewriteJacPartIdx(a, modelInfo.nSubClocks) for a in tmpSymJacs); outSymJacsInSymJacs := listAppend(tmpSymJacs, outSymJacsInSymJacs); column.columnEqns := eqs; symjac.columns := {column}; @@ -12806,6 +12809,7 @@ algorithm ({contSimJac}, outModelInfo, symJacs) := addAlgebraicLoopsModelInfoSymJacs({contSimJac}, inModelInfo); contPartSimDer := SOME(contSimJac); // set partition index to number of clocks (max index) for now + // TODO: use actual clock indices to support multirate systems symJacFMI := {rewriteJacPartIdx(contSimJac, inModelInfo.nSubClocks)}; else contPartSimDer := NONE(); diff --git a/Compiler/Template/CodegenCpp.tpl b/Compiler/Template/CodegenCpp.tpl index 9c099ba055..32120bbb3e 100644 --- a/Compiler/Template/CodegenCpp.tpl +++ b/Compiler/Template/CodegenCpp.tpl @@ -81,8 +81,8 @@ template translateModel(SimCode simCode) let()= textFile(simulationWriteOutputCppFile(simCode , &extraFuncs , &extraFuncsDecl, "", stateDerVectorName, false),'OMCpp<%fileNamePrefix%>WriteOutput.cpp') let()= textFile(simulationFactoryFile(simCode , &extraFuncs , &extraFuncsDecl, ""),'OMCpp<%fileNamePrefix%>FactoryExport.cpp') let()= textFile(simulationMainRunScript(simCode , &extraFuncs , &extraFuncsDecl, "", "", "", "exec"), '<%fileNamePrefix%><%simulationMainRunScriptSuffix(simCode , &extraFuncs , &extraFuncsDecl, "")%>') - let jac = (jacobianMatrixes |> JAC_MATRIX(columns=mat) => - (mat |> JAC_COLUMN(columnEqns=eqs) => algloopfiles(eqs, simCode, &extraFuncs, &extraFuncsDecl, "", contextAlgloopJacobian, 0, stateDerVectorName, false) ;separator="") + let jac = (jacobianMatrixes |> JAC_MATRIX(columns=mat, partitionIndex=partIdx) => + (mat |> JAC_COLUMN(columnEqns=eqs) => algloopfiles(eqs, simCode, &extraFuncs, &extraFuncsDecl, "", contextAlgloopJacobian, partIdx, stateDerVectorName, false) ;separator="") ;separator="") let alg = algloopfiles(listAppend(allEquations, initialEquations), simCode, &extraFuncs, &extraFuncsDecl, "", contextAlgloop, 0, stateDerVectorName, false) let clk = getSubPartitions(clockedPartitions) |> subPartition hasindex i fromindex 1 =>