Skip to content

Commit

Permalink
Global homotopy approach
Browse files Browse the repository at this point in the history
- requires compilation flag --homotopyApproach=global
- special treatment of lambda=0
- homotopy path is exported if -lv=LOG_INIT is set
  • Loading branch information
lochel authored and OpenModelica-Hudson committed Jul 24, 2017
1 parent 4221d29 commit 220e25f
Show file tree
Hide file tree
Showing 17 changed files with 280 additions and 34 deletions.
3 changes: 2 additions & 1 deletion Compiler/BackEnd/BackendDAEUtil.mo
Expand Up @@ -6822,6 +6822,7 @@ public function getSolvedSystem "Run the equation system pipeline."
input Option<list<String>> strPostOptModules = NONE();
output BackendDAE.BackendDAE outSimDAE;
output BackendDAE.BackendDAE outInitDAE;
output Option<BackendDAE.BackendDAE> outInitDAE_lambda0;
output Option<BackendDAE.InlineData > outInlineData;
output list<BackendDAE.Equation> outRemovedInitialEquationLst;
protected
Expand Down Expand Up @@ -6878,7 +6879,7 @@ algorithm
end if;

// generate system for initialization
(outInitDAE, outRemovedInitialEquationLst, globalKnownVars) := Initialization.solveInitialSystem(dae);
(outInitDAE, outInitDAE_lambda0, outRemovedInitialEquationLst, globalKnownVars) := Initialization.solveInitialSystem(dae);

// use function tree from initDAE further for simDAE
simDAE := BackendDAEUtil.setFunctionTree(dae, BackendDAEUtil.getFunctions(outInitDAE.shared));
Expand Down
16 changes: 16 additions & 0 deletions Compiler/BackEnd/Initialization.mo
Expand Up @@ -80,11 +80,13 @@ public function solveInitialSystem "author: lochel
This function generates a algebraic system of equations for the initialization and solves it."
input BackendDAE.BackendDAE inDAE "simulation system";
output BackendDAE.BackendDAE outInitDAE "initialization system";
output Option<BackendDAE.BackendDAE> outInitDAE_lambda0 "initialization system for lambda=0";
output list<BackendDAE.Equation> outRemovedInitialEquations;
output BackendDAE.Variables outGlobalKnownVars;
protected
BackendDAE.BackendDAE dae;
BackendDAE.BackendDAE initdae;
BackendDAE.BackendDAE initdae0;
BackendDAE.EqSystem initsyst;
BackendDAE.EqSystems systs;
BackendDAE.EquationArray eqns, reeqns;
Expand Down Expand Up @@ -210,6 +212,10 @@ algorithm
initdae := BackendDAEUtil.transformBackendDAE(initdae, SOME((BackendDAE.NO_INDEX_REDUCTION(), BackendDAE.EXACT())), NONE(), NONE());
execStat("matching and sorting (n="+String(BackendDAEUtil.daeSize(initdae))+") (initialization)");

if useHomotopy then
initdae0 := BackendDAEUtil.copyBackendDAE(initdae);
end if;

// simplify system
if not stringEq(Config.simCodeTarget(), "Cpp") then
initdae := BackendDAEUtil.setDAEGlobalKnownVars(initdae, outGlobalKnownVars);
Expand All @@ -226,6 +232,16 @@ algorithm
end if;
end if;

// compute system for lambda=0
if useHomotopy and stringEq(Flags.getConfigString(Flags.HOMOTOPY_APPROACH), "global") then
initdae0 := BackendDAEUtil.setFunctionTree(initdae0, BackendDAEUtil.getFunctions(initdae.shared));
initdae0 := BackendDAEUtil.postOptimizeDAE(initdae0, (replaceHomotopyWithSimplified, "replaceHomotopyWithSimplified")::initOptModules, matchingAlgorithm, daeHandler);
outInitDAE_lambda0 := SOME(initdae0);
initdae := BackendDAEUtil.setFunctionTree(initdae, BackendDAEUtil.getFunctions(initdae0.shared));
else
outInitDAE_lambda0 := NONE();
end if;

// Remove the globalKnownVars for the initialization set again
if not stringEq(Config.simCodeTarget(), "Cpp") then
initdae.shared := BackendDAEUtil.setSharedGlobalKnownVars(initdae.shared, BackendVariable.emptyVars());
Expand Down
5 changes: 3 additions & 2 deletions Compiler/BackEnd/OpenTURNS.mo
Expand Up @@ -86,6 +86,7 @@ protected
BackendDAE.BackendDAE dae,strippedDae;
SimCode.SimulationSettings simSettings;
BackendDAE.BackendDAE initDAE;
Option<BackendDAE.BackendDAE> initDAE_lambda0;
list<BackendDAE.Equation> removedInitialEquationLst;
algorithm
cname_str := Absyn.pathString(inPath);
Expand All @@ -107,13 +108,13 @@ algorithm
// Strip correlation vector from dae to be able to compile (bug in OpenModelica with vectors of records )
strippedDae := stripCorrelationFromDae(inDaelow);

(strippedDae, initDAE, _, removedInitialEquationLst) := BackendDAEUtil.getSolvedSystem(strippedDae,"");
(strippedDae, initDAE, initDAE_lambda0, _, removedInitialEquationLst) := BackendDAEUtil.getSolvedSystem(strippedDae,"");

//print("strippedDae :");
//BackendDump.dump(strippedDae);
_ := System.realtimeTock(ClockIndexes.RT_CLOCK_BACKEND); // Is this necessary?

(libs, fileDir, _, _) := SimCodeMain.generateModelCode(strippedDae, initDAE, NONE(), removedInitialEquationLst,inProgram, inPath, cname_str, SOME(simSettings), Absyn.FUNCTIONARGS({}, {}));
(libs, fileDir, _, _) := SimCodeMain.generateModelCode(strippedDae, initDAE, initDAE_lambda0, NONE(), removedInitialEquationLst,inProgram, inPath, cname_str, SOME(simSettings), Absyn.FUNCTIONARGS({}, {}));

//print("..compiling, fileNamePrefix = "+fileNamePrefix+"\n");
CevalScript.compileModel(fileNamePrefix , libs);
Expand Down
8 changes: 5 additions & 3 deletions Compiler/Main/Main.mo
Expand Up @@ -616,21 +616,23 @@ protected
BackendDAE.ExtraInfo info;
BackendDAE.BackendDAE dlow;
BackendDAE.BackendDAE initDAE;
Option<BackendDAE.BackendDAE> initDAE_lambda0;
Option<BackendDAE.InlineData> inlineData;
list<BackendDAE.Equation> removedInitialEquationLst;
algorithm
if Config.simulationCg() then
info := BackendDAE.EXTRA_INFO(DAEUtil.daeDescription(dae), Absyn.pathString(inClassName));
dlow := BackendDAECreate.lower(dae, inCache, inEnv, info);
(dlow, initDAE, inlineData, removedInitialEquationLst) := BackendDAEUtil.getSolvedSystem(dlow, "");
simcodegen(dlow, initDAE, inlineData, removedInitialEquationLst, inClassName, ap);
(dlow, initDAE, initDAE_lambda0, inlineData, removedInitialEquationLst) := BackendDAEUtil.getSolvedSystem(dlow, "");
simcodegen(dlow, initDAE, initDAE_lambda0, inlineData, removedInitialEquationLst, inClassName, ap);
end if;
end optimizeDae;

protected function simcodegen "
Genereates simulation code using the SimCode module"
input BackendDAE.BackendDAE inBackendDAE;
input BackendDAE.BackendDAE inInitDAE;
input Option<BackendDAE.BackendDAE> inInitDAE_lambda0;
input Option<BackendDAE.InlineData> inInlineData;
input list<BackendDAE.Equation> inRemovedInitialEquationLst;
input Absyn.Path inClassName;
Expand All @@ -652,7 +654,7 @@ algorithm
SimCodeMain.createSimulationSettings(0.0, 1.0, 500, 1e-6, "dassl", "", "mat", ".*", "");

System.realtimeTock(ClockIndexes.RT_CLOCK_BACKEND); // Is this necessary?
SimCodeMain.generateModelCode(inBackendDAE, inInitDAE, inInlineData, inRemovedInitialEquationLst, inProgram, inClassName, cname, SOME(sim_settings), Absyn.FUNCTIONARGS({}, {}));
SimCodeMain.generateModelCode(inBackendDAE, inInitDAE, inInitDAE_lambda0, inInlineData, inRemovedInitialEquationLst, inProgram, inClassName, cname, SOME(sim_settings), Absyn.FUNCTIONARGS({}, {}));

execStat("Codegen Done");
end if;
Expand Down
5 changes: 3 additions & 2 deletions Compiler/SimCode/HpcOmSimCodeMain.mo
Expand Up @@ -67,6 +67,7 @@ public function createSimCode "
Entry point to create SimCode from BackendDAE."
input BackendDAE.BackendDAE inBackendDAE;
input BackendDAE.BackendDAE inInitDAE;
input Option<BackendDAE.BackendDAE> inInitDAE_lambda0;
input list<BackendDAE.Equation> inRemovedInitialEquationLst;
input Absyn.Path inClassName;
input String filenamePrefix;
Expand Down Expand Up @@ -130,7 +131,7 @@ algorithm
//Setup
//-----
(simCode,(lastEqMappingIdx,equationSccMapping)) =
SimCodeUtil.createSimCode( inBackendDAE, inInitDAE, NONE(), inRemovedInitialEquationLst, inClassName, filenamePrefix, inString11, functions,
SimCodeUtil.createSimCode( inBackendDAE, inInitDAE, inInitDAE_lambda0, NONE(), inRemovedInitialEquationLst, inClassName, filenamePrefix, inString11, functions,
externalFunctionIncludes, includeDirs, libs,libPaths,program, simSettingsOpt, recordDecls, literals, args );

//get simCode-backendDAE mappings
Expand Down Expand Up @@ -185,7 +186,7 @@ algorithm
//-----
System.realtimeTick(ClockIndexes.RT_CLOCK_EXECSTAT_HPCOM_MODULES);
(simCode,(lastEqMappingIdx,equationSccMapping)) =
SimCodeUtil.createSimCode( inBackendDAE, inInitDAE, NONE(), inRemovedInitialEquationLst, inClassName, filenamePrefix, inString11, functions,
SimCodeUtil.createSimCode( inBackendDAE, inInitDAE, inInitDAE_lambda0, NONE(), inRemovedInitialEquationLst, inClassName, filenamePrefix, inString11, functions,
externalFunctionIncludes, includeDirs, libs,libPaths,program, simSettingsOpt, recordDecls, literals, args );

//get simCode-backendDAE mappings
Expand Down
1 change: 1 addition & 0 deletions Compiler/SimCode/SerializeModelInfo.mo
Expand Up @@ -87,6 +87,7 @@ algorithm
// Handle no comma for the first equation
File.write(file,"{\"eqIndex\":0,\"tag\":\"dummy\"}");
min(serializeEquation(file,eq,"initial",withOperations) for eq in SimCodeUtil.sortEqSystems(code.initialEquations));
min(serializeEquation(file,eq,"initial-lambda0",withOperations) for eq in SimCodeUtil.sortEqSystems(code.initialEquations_lambda0));
min(serializeEquation(file,eq,"removed-initial",withOperations) for eq in SimCodeUtil.sortEqSystems(code.removedInitialEquations));
min(serializeEquation(file,eq,"regular",withOperations) for eq in SimCodeUtil.sortEqSystems(code.allEquations));
min(serializeEquation(file,eq,"synchronous",withOperations) for eq in SimCodeUtil.sortEqSystems(SimCodeUtil.getClockedEquations(SimCodeUtil.getSubPartitions(code.clockedPartitions))));
Expand Down
1 change: 1 addition & 0 deletions Compiler/SimCode/SimCode.mo
Expand Up @@ -109,6 +109,7 @@ uniontype SimCode
list<list<SimEqSystem>> algebraicEquations;
list<ClockedPartition> clockedPartitions;
list<SimEqSystem> initialEquations;
list<SimEqSystem> initialEquations_lambda0;
list<SimEqSystem> removedInitialEquations;
list<SimEqSystem> startValueEquations;
list<SimEqSystem> nominalValueEquations;
Expand Down
33 changes: 20 additions & 13 deletions Compiler/SimCode/SimCodeMain.mo
Expand Up @@ -122,6 +122,7 @@ protected function generateModelCodeFMU "
template-based code generator on it."
input BackendDAE.BackendDAE inBackendDAE;
input BackendDAE.BackendDAE inInitDAE;
input Option<BackendDAE.BackendDAE> inInitDAE_lambda0;
input list<BackendDAE.Equation> inRemovedInitialEquationLst;
input Absyn.Program p;
input Absyn.Path className;
Expand Down Expand Up @@ -149,7 +150,7 @@ algorithm
fileDir := CevalScriptBackend.getFileDir(a_cref, p);
(libs,libPaths,includes, includeDirs, recordDecls, functions, literals) :=
SimCodeUtil.createFunctions(p, inBackendDAE);
simCode := createSimCode(inBackendDAE, inInitDAE, NONE(), inRemovedInitialEquationLst,
simCode := createSimCode(inBackendDAE, inInitDAE, inInitDAE_lambda0, NONE(), inRemovedInitialEquationLst,
className, filenamePrefix, fileDir, functions, includes, includeDirs, libs, libPaths, p, SOME(simSettings), recordDecls, literals, Absyn.FUNCTIONARGS({},{}), isFMU=true, FMUVersion=FMUVersion);
timeSimCode := System.realtimeTock(ClockIndexes.RT_CLOCK_SIMCODE);
ExecStat.execStat("SimCode");
Expand All @@ -165,6 +166,7 @@ protected function generateModelCodeXML "
template-based code generator on it."
input BackendDAE.BackendDAE inBackendDAE;
input BackendDAE.BackendDAE inInitDAE;
input Option<BackendDAE.BackendDAE> inInitDAE_lambda0;
input list<BackendDAE.Equation> inRemovedInitialEquationLst;
input Absyn.Program p;
input Absyn.Path className;
Expand All @@ -191,7 +193,7 @@ algorithm
fileDir := CevalScriptBackend.getFileDir(a_cref, p);
(libs, libPaths, includes, includeDirs, recordDecls, functions, literals) :=
SimCodeUtil.createFunctions(p, inBackendDAE);
(simCode,_) := SimCodeUtil.createSimCode(inBackendDAE, inInitDAE, NONE(), inRemovedInitialEquationLst,
(simCode,_) := SimCodeUtil.createSimCode(inBackendDAE, inInitDAE, inInitDAE_lambda0, NONE(), inRemovedInitialEquationLst,
className, filenamePrefix, fileDir, functions, includes, includeDirs, libs,libPaths, p, simSettingsOpt, recordDecls, literals,Absyn.FUNCTIONARGS({},{}));
timeSimCode := System.realtimeTock(ClockIndexes.RT_CLOCK_SIMCODE);
ExecStat.execStat("SimCode");
Expand Down Expand Up @@ -242,6 +244,7 @@ algorithm
Boolean fmi20;
Boolean notExperimental, flagValue;
BackendDAE.BackendDAE initDAE;
Option<BackendDAE.BackendDAE> initDAE_lambda0;
list<BackendDAE.Equation> removedInitialEquationLst;

case (cache,graph,_,st as GlobalScript.SYMBOLTABLE(ast=p),FMUVersion,FMUType,filenameprefix)
Expand All @@ -267,11 +270,11 @@ algorithm
dae = DAEUtil.transformationsBeforeBackend(cache,graph,dae);
description = DAEUtil.daeDescription(dae);
dlow = BackendDAECreate.lower(dae, cache, graph, BackendDAE.EXTRA_INFO(description,filenameprefix));
(dlow_1, initDAE, _, removedInitialEquationLst) = BackendDAEUtil.getSolvedSystem(dlow, inFileNamePrefix);
(dlow_1, initDAE, initDAE_lambda0, _, removedInitialEquationLst) = BackendDAEUtil.getSolvedSystem(dlow, inFileNamePrefix);
timeBackend = System.realtimeTock(ClockIndexes.RT_CLOCK_BACKEND);

(libs,file_dir,timeSimCode,timeTemplates) =
generateModelCodeFMU(dlow_1, initDAE, removedInitialEquationLst, p, className, FMUVersion, FMUType, filenameprefix, inSimSettings);
generateModelCodeFMU(dlow_1, initDAE, initDAE_lambda0, removedInitialEquationLst, p, className, FMUVersion, FMUType, filenameprefix, inSimSettings);

//reset config flag
Flags.setConfigBool(Flags.GENERATE_SYMBOLIC_LINEARIZATION, symbolicJacActivated);
Expand Down Expand Up @@ -336,6 +339,7 @@ algorithm
FCore.Cache cache;
Real timeSimCode, timeTemplates, timeBackend, timeFrontend;
BackendDAE.BackendDAE initDAE;
Option<BackendDAE.BackendDAE> initDAE_lambda0;
list<BackendDAE.Equation> removedInitialEquationLst;

case (cache, graph, st as GlobalScript.SYMBOLTABLE(ast=p), filenameprefix) equation
Expand All @@ -349,11 +353,11 @@ algorithm
dae = DAEUtil.transformationsBeforeBackend(cache,graph,dae);
description = DAEUtil.daeDescription(dae);
dlow = BackendDAECreate.lower(dae, cache, graph, BackendDAE.EXTRA_INFO(description,filenameprefix));
(dlow_1, initDAE, _, removedInitialEquationLst) = BackendDAEUtil.getSolvedSystem(dlow,inFileNamePrefix);
(dlow_1, initDAE, initDAE_lambda0, _, removedInitialEquationLst) = BackendDAEUtil.getSolvedSystem(dlow,inFileNamePrefix);
timeBackend = System.realtimeTock(ClockIndexes.RT_CLOCK_BACKEND);

(libs,file_dir,timeSimCode,timeTemplates) =
generateModelCodeXML(dlow_1, initDAE, removedInitialEquationLst, p, className, filenameprefix, inSimSettingsOpt);
generateModelCodeXML(dlow_1, initDAE, initDAE_lambda0, removedInitialEquationLst, p, className, filenameprefix, inSimSettingsOpt);
resultValues =
{("timeTemplates",Values.REAL(timeTemplates)),
("timeSimCode", Values.REAL(timeSimCode)),
Expand Down Expand Up @@ -382,6 +386,7 @@ public function generateModelCode "
template-based code generator on it."
input BackendDAE.BackendDAE inBackendDAE;
input BackendDAE.BackendDAE inInitDAE;
input Option<BackendDAE.BackendDAE> inInitDAE_lambda0;
input Option<BackendDAE.InlineData> inInlineData;
input list<BackendDAE.Equation> inRemovedInitialEquationLst;
input Absyn.Program p;
Expand Down Expand Up @@ -415,7 +420,7 @@ algorithm
fileDir := CevalScriptBackend.getFileDir(a_cref, p);

(libs, libPaths, includes, includeDirs, recordDecls, functions, literals) := SimCodeUtil.createFunctions(p, inBackendDAE);
simCode := createSimCode(inBackendDAE, inInitDAE, inInlineData, inRemovedInitialEquationLst, className, filenamePrefix, fileDir, functions, includes, includeDirs, libs,libPaths, p, simSettingsOpt, recordDecls, literals, args);
simCode := createSimCode(inBackendDAE, inInitDAE, inInitDAE_lambda0, inInlineData, inRemovedInitialEquationLst, className, filenamePrefix, fileDir, functions, includes, includeDirs, libs,libPaths, p, simSettingsOpt, recordDecls, literals, args);
timeSimCode := System.realtimeTock(ClockIndexes.RT_CLOCK_SIMCODE);
ExecStat.execStat("SimCode");

Expand Down Expand Up @@ -443,6 +448,7 @@ protected function createSimCode "
SimCode generator switch - if the NUMPROC-Flag is set, the simcode will be extended with parallel informations."
input BackendDAE.BackendDAE inBackendDAE;
input BackendDAE.BackendDAE inInitDAE;
input Option<BackendDAE.BackendDAE> inInitDAE_lambda0;
input Option<BackendDAE.InlineData> inInlineData;
input list<BackendDAE.Equation> inRemovedInitialEquationLst;
input Absyn.Path inClassName;
Expand Down Expand Up @@ -470,7 +476,7 @@ algorithm
case(_, _, _, _, _, _, _, _, _, _,_, _, _, _) equation
// MULTI_RATE PARTITIONINIG
true = Flags.isSet(Flags.MULTIRATE_PARTITION);
then HpcOmSimCodeMain.createSimCode(inBackendDAE, inInitDAE, inRemovedInitialEquationLst, inClassName, filenamePrefix, inString11, functions, externalFunctionIncludes, includeDirs, libs,libPaths, program, simSettingsOpt, recordDecls, literals, args);
then HpcOmSimCodeMain.createSimCode(inBackendDAE, inInitDAE, inInitDAE_lambda0, inRemovedInitialEquationLst, inClassName, filenamePrefix, inString11, functions, externalFunctionIncludes, includeDirs, libs,libPaths, program, simSettingsOpt, recordDecls, literals, args);

case(_, _, _, _, _, _, _, _, _, _,_, _, _, _) equation
true = Flags.isSet(Flags.HPCOM);
Expand All @@ -483,7 +489,7 @@ algorithm
numProc = Flags.getConfigInt(Flags.NUM_PROC);
true = numProc == 0;
print("hpcom computes the ideal number of processors. If you want to set the number manually, use the flag +n=_ \n");
then HpcOmSimCodeMain.createSimCode(inBackendDAE, inInitDAE, inRemovedInitialEquationLst, inClassName, filenamePrefix, inString11, functions, externalFunctionIncludes, includeDirs, libs,libPaths,program, simSettingsOpt, recordDecls, literals, args);
then HpcOmSimCodeMain.createSimCode(inBackendDAE, inInitDAE, inInitDAE_lambda0, inRemovedInitialEquationLst, inClassName, filenamePrefix, inString11, functions, externalFunctionIncludes, includeDirs, libs,libPaths,program, simSettingsOpt, recordDecls, literals, args);

case(_, _, _, _, _, _, _, _, _,_, _, _, _, _) equation
true = Flags.isSet(Flags.HPCOM);
Expand All @@ -495,10 +501,10 @@ algorithm

numProc = Flags.getConfigInt(Flags.NUM_PROC);
true = (numProc > 0);
then HpcOmSimCodeMain.createSimCode(inBackendDAE, inInitDAE, inRemovedInitialEquationLst, inClassName, filenamePrefix, inString11, functions, externalFunctionIncludes, includeDirs, libs, libPaths,program,simSettingsOpt, recordDecls, literals, args);
then HpcOmSimCodeMain.createSimCode(inBackendDAE, inInitDAE, inInitDAE_lambda0, inRemovedInitialEquationLst, inClassName, filenamePrefix, inString11, functions, externalFunctionIncludes, includeDirs, libs, libPaths,program,simSettingsOpt, recordDecls, literals, args);

else equation
(tmpSimCode, _) = SimCodeUtil.createSimCode(inBackendDAE, inInitDAE, inInlineData, inRemovedInitialEquationLst, inClassName, filenamePrefix, inString11, functions, externalFunctionIncludes, includeDirs, libs,libPaths,program, simSettingsOpt, recordDecls, literals, args, isFMU=isFMU, FMUVersion=FMUVersion);
(tmpSimCode, _) = SimCodeUtil.createSimCode(inBackendDAE, inInitDAE, inInitDAE_lambda0, inInlineData, inRemovedInitialEquationLst, inClassName, filenamePrefix, inString11, functions, externalFunctionIncludes, includeDirs, libs,libPaths,program, simSettingsOpt, recordDecls, literals, args, isFMU=isFMU, FMUVersion=FMUVersion);
then tmpSimCode;
end matchcontinue;
end createSimCode;
Expand Down Expand Up @@ -883,6 +889,7 @@ algorithm
FCore.Cache cache;
Real timeSimCode, timeTemplates, timeBackend, timeFrontend;
BackendDAE.BackendDAE initDAE;
Option<BackendDAE.BackendDAE> initDAE_lambda0;
Option<BackendDAE.InlineData> inlineData;
list<BackendDAE.Equation> removedInitialEquationLst;
Real fsize;
Expand Down Expand Up @@ -931,7 +938,7 @@ algorithm
end if;

//BackendDump.printBackendDAE(dlow);
(dlow, initDAE, inlineData, removedInitialEquationLst) := BackendDAEUtil.getSolvedSystem(dlow,inFileNamePrefix);
(dlow, initDAE, initDAE_lambda0, inlineData, removedInitialEquationLst) := BackendDAEUtil.getSolvedSystem(dlow,inFileNamePrefix);
timeBackend := System.realtimeTock(ClockIndexes.RT_CLOCK_BACKEND);

if Flags.isSet(Flags.SERIALIZED_SIZE) then
Expand All @@ -941,7 +948,7 @@ algorithm
ExecStat.execStat("Serialize solved system");
end if;

(libs, file_dir, timeSimCode, timeTemplates) := generateModelCode(dlow, initDAE, inlineData, removedInitialEquationLst, p, className, filenameprefix, inSimSettingsOpt, args);
(libs, file_dir, timeSimCode, timeTemplates) := generateModelCode(dlow, initDAE, initDAE_lambda0, inlineData, removedInitialEquationLst, p, className, filenameprefix, inSimSettingsOpt, args);

resultValues := {("timeTemplates", Values.REAL(timeTemplates)),
("timeSimCode", Values.REAL(timeSimCode)),
Expand Down

0 comments on commit 220e25f

Please sign in to comment.