<workflowRun _class='org.jenkinsci.plugins.workflow.job.WorkflowRun'><action _class='hudson.model.CauseAction'><cause _class='jenkins.branch.BranchEventCause'><shortDescription>Pull request #16026 updated</shortDescription></cause></action><action _class='hudson.model.ParametersAction'><parameter _class='hudson.model.BooleanParameterValue'><name>BUILD_MSYS2_UCRT64</name><value>false</value></parameter><parameter _class='hudson.model.BooleanParameterValue'><name>BUILD_ALPINE</name><value>false</value></parameter><parameter _class='hudson.model.BooleanParameterValue'><name>DISABLE_ALL_CMAKE_BUILDS</name><value>false</value></parameter><parameter _class='hudson.model.BooleanParameterValue'><name>ENABLE_MSYS2_UCRT64_CMAKE_BUILD</name><value>false</value></parameter><parameter _class='hudson.model.BooleanParameterValue'><name>ENABLE_MACOS_CMAKE_BUILD</name><value>false</value></parameter><parameter _class='hudson.model.BooleanParameterValue'><name>ENABLE_RUST_PARTEST</name><value>false</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>RUST_PARTEST_SIMCODETARGET</name><value>wasm-jit</value></parameter></action><action _class='jenkins.scm.api.SCMRevisionAction'></action><action _class='org.jenkinsci.plugins.workflow.libs.LibrariesAction'></action><action></action><action></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><PR-16026 _class='hudson.plugins.git.util.Build'><buildNumber>4</buildNumber><marked><SHA1>829e91122a5a5c5af0924c632a64a193afab2131</SHA1><branch><SHA1>829e91122a5a5c5af0924c632a64a193afab2131</SHA1><name>PR-16026</name></branch></marked><revision><SHA1>829e91122a5a5c5af0924c632a64a193afab2131</SHA1><branch><SHA1>829e91122a5a5c5af0924c632a64a193afab2131</SHA1><name>PR-16026</name></branch></revision></PR-16026></buildsByBranchName><lastBuiltRevision><SHA1>829e91122a5a5c5af0924c632a64a193afab2131</SHA1><branch><SHA1>829e91122a5a5c5af0924c632a64a193afab2131</SHA1><name>PR-16026</name></branch></lastBuiltRevision><remoteUrl>https://github.com/OpenModelica/OpenModelica.git</remoteUrl><scmName></scmName></action><action></action><action _class='org.jenkinsci.plugins.workflow.cps.EnvActionImpl'></action><action></action><action></action><action></action><action></action><action></action><action></action><action></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><action _class='org.jenkinsci.plugins.pipeline.modeldefinition.actions.RestartDeclarativePipelineAction'></action><action></action><action _class='org.jenkinsci.plugins.workflow.job.views.FlowGraphAction'></action><action></action><action></action><action></action><building>false</building><displayName>#4</displayName><duration>998451</duration><estimatedDuration>4000538</estimatedDuration><fullDisplayName>OpenModelica » OMCompiler: Avoid unnecessary full initialization (#16026) #4</fullDisplayName><id>4</id><keepLog>false</keepLog><number>4</number><queueId>206425</queueId><result>FAILURE</result><timestamp>1783764460434</timestamp><url>https://test.openmodelica.org/jenkins/job/OpenModelica/view/change-requests/job/PR-16026/4/</url><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>testsuite/simulation/modelica/NBackend/ModelicaTest/ModelicaTest.Media.TestOnly.FlueGas.mos</affectedPath><affectedPath>OMCompiler/Compiler/Template/CodegenC.tpl</affectedPath><affectedPath>OMCompiler/Compiler/NBackEnd/Classes/NBEquation.mo</affectedPath><affectedPath>OMCompiler/Compiler/NBackEnd/Modules/2_Pre/NBInline.mo</affectedPath><affectedPath>OMCompiler/Compiler/NBackEnd/Classes/NBackendDAE.mo</affectedPath><affectedPath>testsuite/simulation/modelica/NBackend/ModelicaTest/ReferenceFiles/ModelicaTest.Media.TestOnly.FlueGas_res.mat</affectedPath><commitId>324c3bf3be874f4cc8ea778387b63a6ebb5cd9d5</commitId><timestamp>1783718086000</timestamp><author><absoluteUrl>https://test.openmodelica.org/jenkins/user/38032125+kabdelhak</absoluteUrl><fullName>38032125+kabdelhak</fullName></author><authorEmail>38032125+kabdelhak@users.noreply.github.com</authorEmail><comment>    [NB] Fix FlueGas regressions from #15045 (resizable sparsity pattern) (#16036)

* [NB,C] Fix SLICE subscripts in resizable Jacobian sparsity templates

Add case {SLICE(exp=sliceExp)} to resizableSparsityRowCount and
resizableFillDepsForRow in CodegenC.tpl, mirroring the existing SLICE
handling already present in resizableColCount. Without this, NBackend
Jacobian sparsity for array variables like $pDER_ODE_JAC.$DER.medium2.X[{1,2,3,4}]
fell to the else branch and called indexSubRecursive with a SLICE
subscript, which only handles INDEX().

Also adds the cross-backend test for ModelicaTest.Media.TestOnly.FlueGas
with a committed reference file from the old backend.

Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;

* [NB] Fix FlueGas regressions from #15045 (resizable sparsity pattern)

Three fixes to make ModelicaTest.Media.TestOnly.FlueGas compile with
--newBackend:

1. NBackendDAE.mo: propagate `complete` flag through lowerInstNode so
   that iterator variables like `j` are lowered via lowerComponentReference
   (fixes: Variable not found in hashTable)

2. NBEquation.mo / NBInline.mo: add optional funcCrefOpt to EqData.mapExp
   so that inline() can lower component references on both the expression
   and cref sides simultaneously (fixes: iterator `i` not a VAR_NODE)

3. CodegenC.tpl: add case {SLICE(exp=sliceExp)} to resizableSparsityRowCount
   and resizableFillDepsForRow, mirroring the existing SLICE handling in
   resizableColCount. Without this, array Jacobian variables like
   $pDER_ODE_JAC.$DER.medium2.X[{1,2,3,4}] caused indexSubRecursive to
   receive a SLICE subscript which only handles INDEX()

Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;

---------

Co-authored-by: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;
</comment><date>2026-07-10 23:14:46 +0200</date><id>324c3bf3be874f4cc8ea778387b63a6ebb5cd9d5</id><msg>[NB] Fix FlueGas regressions from #15045 (resizable sparsity pattern) (#16036)</msg><path><editType>edit</editType><file>OMCompiler/Compiler/NBackEnd/Classes/NBEquation.mo</file></path><path><editType>edit</editType><file>OMCompiler/Compiler/NBackEnd/Modules/2_Pre/NBInline.mo</file></path><path><editType>edit</editType><file>OMCompiler/Compiler/Template/CodegenC.tpl</file></path><path><editType>add</editType><file>testsuite/simulation/modelica/NBackend/ModelicaTest/ModelicaTest.Media.TestOnly.FlueGas.mos</file></path><path><editType>add</editType><file>testsuite/simulation/modelica/NBackend/ModelicaTest/ReferenceFiles/ModelicaTest.Media.TestOnly.FlueGas_res.mat</file></path><path><editType>edit</editType><file>OMCompiler/Compiler/NBackEnd/Classes/NBackendDAE.mo</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>OMCompiler/Compiler/OpenModelica.rs/openmodelica_util/src/System.rs</affectedPath><affectedPath>OMCompiler/Compiler/OpenModelica.rs/openmodelica_error/src/ErrorExt.rs</affectedPath><affectedPath>OMCompiler/Compiler/OpenModelica.rs/openmodelica_util/Cargo.toml</affectedPath><affectedPath>OMCompiler/Compiler/Util/System.mo</affectedPath><affectedPath>OMCompiler/Compiler/FrontEnd/Parser.mo</affectedPath><commitId>09e7ddf104e4ac232b78114ace34a0223dec8303</commitId><timestamp>1783751522000</timestamp><author><absoluteUrl>https://test.openmodelica.org/jenkins/user/sjoelund</absoluteUrl><fullName>Martin Sjölund</fullName></author><authorEmail>martin.sjolund@liu.se</authorEmail><comment>Parallelize parsing in the Rust omc port (#16038)

Route Parser.parallelParseFilesWork through a new builtin
System.launchParallelTasksThreaded, whose Rust body runs the parse
worklist on a rayon thread pool. The generic launchParallelTasks stays
serial: three of its four call sites carry non-Send payloads (Rc-bearing
SymbolTable, Arc&lt;dyn Fn&gt; thunks), so the new function's AnyInput/
AnyOutput: Send bounds opt in only the parse site.

The func arrives as the Arc&lt;dyn Fn + 'static&gt; codegen emits; an internal
SendSync newtype re-adds the marker the cast drops (sound: routed funcs
are always zero-capture top-level fnptr!s). The pool is a process-wide
OnceLock sized to the requested thread count, so it is neither
oversubscribed nor rebuilt per call.

The external "C" binding reuses the existing System_launchParallelTasks
symbol, so the classic runtime is a plain alias and no new C code or
mmtorust codegen change is needed.

ErrorExt.moveMessagesToParentThread (previously a no-op) now drains a
worker's thread-local message queue into a shared staging buffer that
the parent splices back after the fan-out completes.

loadModel(Modelica) parse phase: ~1.5s -&gt; ~0.47s (~3x). wasm32 has no OS
threads and falls back to the serial map.

Co-authored-by: Claude Opus 4.8 (1M context) &lt;noreply@anthropic.com&gt;
</comment><date>2026-07-11 08:32:02 +0200</date><id>09e7ddf104e4ac232b78114ace34a0223dec8303</id><msg>Parallelize parsing in the Rust omc port (#16038)</msg><path><editType>edit</editType><file>OMCompiler/Compiler/Util/System.mo</file></path><path><editType>edit</editType><file>OMCompiler/Compiler/OpenModelica.rs/openmodelica_error/src/ErrorExt.rs</file></path><path><editType>edit</editType><file>OMCompiler/Compiler/FrontEnd/Parser.mo</file></path><path><editType>edit</editType><file>OMCompiler/Compiler/OpenModelica.rs/openmodelica_util/Cargo.toml</file></path><path><editType>edit</editType><file>OMCompiler/Compiler/OpenModelica.rs/openmodelica_util/src/System.rs</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>OMCompiler/SimulationRuntime/fmi/export/openmodelica/fmu2_model_interface.c</affectedPath><affectedPath>OMCompiler/SimulationRuntime/fmi/export/openmodelica/fmu3_model_interface.c</affectedPath><commitId>829e91122a5a5c5af0924c632a64a193afab2131</commitId><timestamp>1783622917000</timestamp><author><absoluteUrl>https://test.openmodelica.org/jenkins/user/schueller</absoluteUrl><fullName>schueller</fullName></author><authorEmail>schueller@phimeca.com</authorEmail><comment>OMCompiler: Avoid unnecessary full initialization

In `updateIfNeeded()`, when called during initialization mode (e.g. from
`fmi2GetReal` / `omcGetReal`), the code ran the full `initialization()` solver.
This re-solved the initial equations for every tiny parameter perturbation the
importer made during setup.  For models where the initial equations depend on
`time` (e.g. weather data, sin(time), tables), re-running the symbolic
initialization solver with `startTime &gt; 0` could produce different results or
fail to converge, causing "fmi2GetReal: terminated by an assertion" and
ultimately a CVodeError.

Replace the `initialization()` call in `updateIfNeeded`'s init-mode path with
the same light-weight equation-evaluation path used in the non-init case, plus
`updateBoundParameters`.  This updates external objects and re-evaluates
algebraic/output equations without re-running the full initialization solver.

Closes #12823
</comment><date>2026-07-09 20:48:37 +0200</date><id>829e91122a5a5c5af0924c632a64a193afab2131</id><msg>OMCompiler: Avoid unnecessary full initialization</msg><path><editType>edit</editType><file>OMCompiler/SimulationRuntime/fmi/export/openmodelica/fmu3_model_interface.c</file></path><path><editType>edit</editType><file>OMCompiler/SimulationRuntime/fmi/export/openmodelica/fmu2_model_interface.c</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://test.openmodelica.org/jenkins/user/38032125+kabdelhak</absoluteUrl><fullName>38032125+kabdelhak</fullName></culprit><culprit><absoluteUrl>https://test.openmodelica.org/jenkins/user/schueller</absoluteUrl><fullName>schueller</fullName></culprit><culprit><absoluteUrl>https://test.openmodelica.org/jenkins/user/sjoelund</absoluteUrl><fullName>Martin Sjölund</fullName></culprit><inProgress>false</inProgress><previousBuild><number>3</number><url>https://test.openmodelica.org/jenkins/job/OpenModelica/view/change-requests/job/PR-16026/3/</url></previousBuild></workflowRun>