Skip to content

Commit

Permalink
Fix Dynamic Tearing for initialization
Browse files Browse the repository at this point in the history
  • Loading branch information
ptaeuber committed Aug 8, 2016
1 parent bcf29cc commit 779a206
Showing 1 changed file with 13 additions and 4 deletions.
17 changes: 13 additions & 4 deletions Compiler/Template/CodegenC.tpl
Expand Up @@ -1877,16 +1877,22 @@ end functionSetupMixedSystemsTemp;
template functionInitialLinearSystems(list<SimEqSystem> initialEquations, list<SimEqSystem> initialEquations_lambda0, list<SimEqSystem> parameterEquations, list<SimEqSystem> allEquations, list<JacobianMatrix> jacobianMatrixes, String modelNamePrefix)
"Generates functions in simulation file."
::=
let &tempeqns = buffer ""
let &tempeqns += (allEquations |> eq => match eq case eq as SES_LINEAR(alternativeTearing = SOME(__)) then 'int <%symbolName(modelNamePrefix,"eqFunction")%>_<%equationIndex(eq)%>(DATA*);' ; separator = "\n")
let &tempeqns1 = buffer ""
let &tempeqns1 += (initialEquations |> eq => match eq case eq as SES_LINEAR(alternativeTearing = SOME(__)) then 'int <%symbolName(modelNamePrefix,"eqFunction")%>_<%equationIndex(eq)%>(DATA*);' ; separator = "\n")
let &tempeqns2 = buffer ""
let &tempeqns2 += (initialEquations_lambda0 |> eq => match eq case eq as SES_LINEAR(alternativeTearing = SOME(__)) then 'int <%symbolName(modelNamePrefix,"eqFunction")%>_<%equationIndex(eq)%>(DATA*);' ; separator = "\n")
let &tempeqns3 = buffer ""
let &tempeqns3 += (allEquations |> eq => match eq case eq as SES_LINEAR(alternativeTearing = SOME(__)) then 'int <%symbolName(modelNamePrefix,"eqFunction")%>_<%equationIndex(eq)%>(DATA*);' ; separator = "\n")
let initbody = functionInitialLinearSystemsTemp(initialEquations, modelNamePrefix)
let initbody_lambda0 = functionInitialLinearSystemsTemp(initialEquations_lambda0, modelNamePrefix)
let parambody = functionInitialLinearSystemsTemp(parameterEquations, modelNamePrefix)
let body = functionInitialLinearSystemsTemp(allEquations, modelNamePrefix)
let jacobianbody = (jacobianMatrixes |> ({(jacobianEquations,_,_)}, _, _, _, _, _, _) => functionInitialLinearSystemsTemp(jacobianEquations, modelNamePrefix);separator="\n\n")
<<
/* function initialize linear systems */
<%tempeqns%>
<%tempeqns1%>
<%tempeqns2%>
<%tempeqns3%>

void <%symbolName(modelNamePrefix,"initialLinearSystem")%>(int nLinearSystems, LINEAR_SYSTEM_DATA* linearSystemData)
{
Expand Down Expand Up @@ -2374,7 +2380,9 @@ template functionInitialNonLinearSystems(list<SimEqSystem> initialEquations, lis
let &tempeqns1 = buffer ""
let &tempeqns1 += (initialEquations |> eq => match eq case eq as SES_NONLINEAR(alternativeTearing = SOME(__)) then 'int <%symbolName(modelNamePrefix,"eqFunction")%>_<%equationIndex(eq)%>(DATA*, threadData_t*);' ; separator = "\n")
let &tempeqns2 = buffer ""
let &tempeqns2 += (allEquations |> eq => match eq case eq as SES_NONLINEAR(alternativeTearing = SOME(__)) then 'int <%symbolName(modelNamePrefix,"eqFunction")%>_<%equationIndex(eq)%>(DATA*, threadData_t*);' ; separator = "\n")
let &tempeqns2 += (initialEquations_lambda0 |> eq => match eq case eq as SES_NONLINEAR(alternativeTearing = SOME(__)) then 'int <%symbolName(modelNamePrefix,"eqFunction")%>_<%equationIndex(eq)%>(DATA*, threadData_t*);' ; separator = "\n")
let &tempeqns3 = buffer ""
let &tempeqns3 += (allEquations |> eq => match eq case eq as SES_NONLINEAR(alternativeTearing = SOME(__)) then 'int <%symbolName(modelNamePrefix,"eqFunction")%>_<%equationIndex(eq)%>(DATA*, threadData_t*);' ; separator = "\n")
let initbody = functionInitialNonLinearSystemsTemp(initialEquations, modelNamePrefix)
let initbody_lambda0 = functionInitialNonLinearSystemsTemp(initialEquations_lambda0, modelNamePrefix)
let parambody = functionInitialNonLinearSystemsTemp(parameterEquations,modelNamePrefix)
Expand All @@ -2384,6 +2392,7 @@ template functionInitialNonLinearSystems(list<SimEqSystem> initialEquations, lis
/* function initialize non-linear systems */
<%tempeqns1%>
<%tempeqns2%>
<%tempeqns3%>

void <%symbolName(modelNamePrefix,"initialNonLinearSystem")%>(int nNonLinearSystems, NONLINEAR_SYSTEM_DATA* nonLinearSystemData)
{
Expand Down

0 comments on commit 779a206

Please sign in to comment.