@@ -1079,7 +1079,7 @@ template simulationFile_dae(SimCode simCode)
10791079 extern "C" {
10801080 #endif
10811081
1082- <% evaluateDAEResiduals(daeEquations, modelNamePrefixStr)%>
1082+ <% evaluateDAEResiduals(daeEquations, fileNamePrefix, fullPathPrefix, modelNamePrefixStr)%>
10831083
10841084 <% initDAEmode%>
10851085
@@ -4469,14 +4469,52 @@ template functionXXX_systems(list<list<SimEqSystem>> eqs, String name, Text &loo
44694469 >>
44704470end functionXXX_systems;
44714471
4472- template createEquationsAndCalls(list<list<SimEqSystem>> systems, String name, Context context, String modelNamePrefixStr, Text eqCalls, Text eqFuncs)
4472+
4473+ template functionDAEModeEquationsMultiFiles(list<SimEqSystem> inEqs, Integer numEqs, Integer equationsPerFile, Context context, String fileNamePrefix, String fullPathPrefix, String modelNamePrefix, String funcName, String partName, Text &eqFuncs, Boolean static, Boolean noOpt, Boolean init)
4474+ ::=
4475+ let &file = buffer ""
4476+ let multiFile = if intGt(numEqs, equationsPerFile) then "x"
4477+ let fncalls = (List.balancedPartition(inEqs, equationsPerFile) |> eqs hasindex i0 =>
4478+ // To file
4479+ let &file += ((if multiFile then
4480+ (let fileName = addFunctionIndex(' <% fileNamePrefix%> _<% partName%> _part' , ".c")
4481+ redirectToFile(fullPathPrefix + fileName) +
4482+ <<
4483+ <%simulationFileHeader(fileNamePrefix)%>
4484+ #if defined(__cplusplus)
4485+ extern "C" {
4486+ #endif<%\n %>
4487+ >>)) +
4488+ (eqs |> eq => equation_impl_options(-1, -1, eq, context, modelNamePrefix, static, noOpt, init); separator="\n ") +
4489+ <<
4490+ >>
4491+ +
4492+ (if multiFile then
4493+ (<<
4494+
4495+ #if defined(__cplusplus)
4496+ }
4497+ #endif
4498+ >> +
4499+ closeFile())))
4500+
4501+ // fncalls
4502+ ' <% (eqs |> eq => equationNames_(eq , context, modelNamePrefix); separator= " \n " )%> '
4503+
4504+ )
4505+
4506+ let &eqFuncs += file
4507+ fncalls
4508+ end functionDAEModeEquationsMultiFiles;
4509+
4510+ template createEquationsAndCalls(list<list<SimEqSystem>> systems, String name, Context context, String fileNamePrefix, String fullPathPrefix, String modelNamePrefix, Text eqCalls, Text eqFuncs)
44734511::=
44744512 let _ = (systems |> equations => (
4475- equations |> eq => (
4476- let &eqFuncs += equation_impl(-1, -1, eq, context, modelNamePrefixStr, false)
4477- let &eqCalls += equationNames_(eq, context, modelNamePrefixStr )
4478- <<>>
4479- )
4513+ let fncalls = functionDAEModeEquationsMultiFiles(equations, listLength(equations),
4514+ Flags.getConfigInt(Flags.EQUATIONS_PER_FILE), context, fileNamePrefix, fullPathPrefix, modelNamePrefix,
4515+ "evaluateDAEResiduals", "16dae", &eqFuncs, /* Static? */ false, true /* No optimization */, /* initial? */ false )
4516+ let &eqCalls += fncalls
4517+ <<>>
44804518 )
44814519 )
44824520 <<>>
@@ -4627,13 +4665,14 @@ template functionAlgebraic(list<list<SimEqSystem>> algebraicEquations, String mo
46274665 >>
46284666end functionAlgebraic;
46294667
4630- template evaluateDAEResiduals(list<list<SimEqSystem>> resEquations, String modelNamePrefix)
4668+ template evaluateDAEResiduals(list<list<SimEqSystem>> resEquations, String fileNamePrefix, String fullPathPrefix, String modelNamePrefix)
46314669 "Generates function in simulation file."
46324670::=
4671+ let () = System.tmpTickReset(0)
46334672 let &eqFuncs = buffer ""
46344673 let &eqCalls = buffer ""
46354674
4636- let systems = createEquationsAndCalls(resEquations, "DAERes", contextDAEmode, modelNamePrefix, &eqCalls, &eqFuncs)
4675+ let systems = createEquationsAndCalls(resEquations, "DAERes", contextDAEmode, fileNamePrefix, fullPathPrefix, modelNamePrefix, &eqCalls, &eqFuncs)
46374676 <<
46384677 /*residual equations*/
46394678 <%eqFuncs%>
0 commit comments