Skip to content

Commit

Permalink
- fix parameter dependent attributes (nominal, min, max)
Browse files Browse the repository at this point in the history
git-svn-id: https://openmodelica.org/svn/OpenModelica/trunk@19076 f25d12d1-65f4-0310-ae8a-bbce733d8d8e
  • Loading branch information
lochel committed Feb 12, 2014
1 parent dfd56c5 commit ef4bdf6
Show file tree
Hide file tree
Showing 10 changed files with 326 additions and 22 deletions.
6 changes: 3 additions & 3 deletions Compiler/BackEnd/BackendQSS.mo
Expand Up @@ -995,7 +995,7 @@ algorithm
list<SimCode.RecordDeclaration> recordDecls;
list<String> externalFunctionIncludes;
list<list<SimCode.SimEqSystem>> algebraicEquations,odeEquations;
list<SimCode.SimEqSystem> allEquations,residualEquations,startValueEquations,parameterEquations,inlineEquations,removedEquations,algorithmAndEquationAsserts,jacobianEquations;
list<SimCode.SimEqSystem> allEquations,residualEquations,startValueEquations,nominalValueEquations,minValueEquations,maxValueEquations,parameterEquations,inlineEquations,removedEquations,algorithmAndEquationAsserts,jacobianEquations;
list<SimCode.StateSet> stateSets;
Boolean useSymbolicInitialization, useHomotopy;
list<SimCode.SimEqSystem> initialEquations;
Expand All @@ -1016,7 +1016,7 @@ algorithm
Option<HpcOmScheduler.ScheduleSimCode> hpcOmSchedule;

case (SimCode.SIMCODE(modelInfo,literals,recordDecls,externalFunctionIncludes,allEquations,odeEquations,
algebraicEquations,residualEquations,useSymbolicInitialization,useHomotopy,initialEquations,startValueEquations,
algebraicEquations,residualEquations,useSymbolicInitialization,useHomotopy,initialEquations,startValueEquations,nominalValueEquations,minValueEquations,maxValueEquations,
parameterEquations,inlineEquations,removedEquations,algorithmAndEquationAsserts,jacobianEquations,stateSets,constraints,classAttributes,zeroCrossings,relations,
sampleLookup,whenClauses,discreteModelVars,extObjInfo,makefileParams,
delayedExps,jacobianMatrixes,simulationSettingsOpt,fileNamePrefix,crefToSimVarHT,hpcOmSchedule),_)
Expand All @@ -1025,7 +1025,7 @@ algorithm
eqs = List.map1(eqs,replaceZC,zc_exps);
then SimCode.SIMCODE(modelInfo, literals, recordDecls, externalFunctionIncludes,
allEquations, {eqs}, algebraicEquations, residualEquations, useSymbolicInitialization, useHomotopy,
initialEquations, startValueEquations, parameterEquations, inlineEquations,
initialEquations, startValueEquations, nominalValueEquations, minValueEquations, maxValueEquations, parameterEquations, inlineEquations,
removedEquations, algorithmAndEquationAsserts, jacobianEquations, stateSets, constraints, classAttributes,
zeroCrossings, relations, sampleLookup,
whenClauses, discreteModelVars, extObjInfo,
Expand Down
36 changes: 36 additions & 0 deletions Compiler/BackEnd/BackendVariable.mo
Expand Up @@ -416,6 +416,42 @@ algorithm
sv := DAEUtil.getStartAttrFail(attr);
end varStartValueFail;

public function varNominalValueFail "author: lochel
Returns the DAE.NominalValue of a variable if there is one.
Otherwise fails."
input BackendDAE.Var v;
output DAE.Exp sv;
protected
Option<DAE.VariableAttributes> attr;
algorithm
BackendDAE.VAR(values = attr) := v;
sv := DAEUtil.getNominalAttrFail(attr);
end varNominalValueFail;

public function varMinValueFail "author: lochel
Returns the DAE.MinValue of a variable if there is one.
Otherwise fails."
input BackendDAE.Var v;
output DAE.Exp sv;
protected
Option<DAE.VariableAttributes> attr;
algorithm
BackendDAE.VAR(values = attr) := v;
sv := DAEUtil.getMinAttrFail(attr);
end varMinValueFail;

public function varMaxValueFail "author: lochel
Returns the DAE.MaxValue of a variable if there is one.
Otherwise fails."
input BackendDAE.Var v;
output DAE.Exp sv;
protected
Option<DAE.VariableAttributes> attr;
algorithm
BackendDAE.VAR(values = attr) := v;
sv := DAEUtil.getMaxAttrFail(attr);
end varMaxValueFail;

public function varStartValueType
"author: Frenkel TUD 2012-11
Returns the DAE.StartValue of a variable. If nothing is set the type specific one is used"
Expand Down
7 changes: 5 additions & 2 deletions Compiler/BackEnd/HpcOmSimCode.mo
Expand Up @@ -108,6 +108,9 @@ algorithm
Boolean useHomotopy; // true if homotopy(...) is used during initialization
list<SimCode.SimEqSystem> initialEquations; // --> initial_equations
list<SimCode.SimEqSystem> startValueEquations; // --> updateBoundStartValues
list<SimCode.SimEqSystem> nominalValueEquations; // --> updateBoundNominalValues
list<SimCode.SimEqSystem> minValueEquations; // --> updateBoundMinValues
list<SimCode.SimEqSystem> maxValueEquations; // --> updateBoundMaxValues
list<SimCode.SimEqSystem> parameterEquations; // --> updateBoundParameters
list<SimCode.SimEqSystem> inlineEquations; // --> inline solver
list<SimCode.SimEqSystem> removedEquations;
Expand Down Expand Up @@ -271,14 +274,14 @@ algorithm
//HpcOmScheduler.printSchedule(schedule);

Debug.execStat("hpcom dump schedule TaskGraph", GlobalScript.RT_CLOCK_EXECSTAT_HPCOM_MODULES);
SimCode.SIMCODE(modelInfo, simCodeLiterals, simCodeRecordDecls, simCodeExternalFunctionIncludes, allEquations, odeEquations, algebraicEquations, residualEquations, useSymbolicInitialization, useHomotopy, initialEquations, startValueEquations,
SimCode.SIMCODE(modelInfo, simCodeLiterals, simCodeRecordDecls, simCodeExternalFunctionIncludes, allEquations, odeEquations, algebraicEquations, residualEquations, useSymbolicInitialization, useHomotopy, initialEquations, startValueEquations, nominalValueEquations, minValueEquations, maxValueEquations,
parameterEquations, inlineEquations, removedEquations, algorithmAndEquationAsserts, jacobianEquations, stateSets, constraints, classAttributes, zeroCrossings, relations, sampleLookup, whenClauses,
discreteModelVars, extObjInfo, makefileParams, delayedExps, jacobianMatrixes, simulationSettingsOpt, fileNamePrefix, crefToSimVarHT, _) = simCode;

checkOdeSystemSize(taskGraphOde,odeEquations);
Debug.execStat("hpcom check ODE system size", GlobalScript.RT_CLOCK_EXECSTAT_HPCOM_MODULES);

simCode = SimCode.SIMCODE(modelInfo, simCodeLiterals, simCodeRecordDecls, simCodeExternalFunctionIncludes, allEquations, odeEquations, algebraicEquations, residualEquations, useSymbolicInitialization, useHomotopy, initialEquations, startValueEquations,
simCode = SimCode.SIMCODE(modelInfo, simCodeLiterals, simCodeRecordDecls, simCodeExternalFunctionIncludes, allEquations, odeEquations, algebraicEquations, residualEquations, useSymbolicInitialization, useHomotopy, initialEquations, startValueEquations, nominalValueEquations, minValueEquations, maxValueEquations,
parameterEquations, inlineEquations, removedEquations, algorithmAndEquationAsserts, jacobianEquations, stateSets, constraints, classAttributes, zeroCrossings, relations, sampleLookup, whenClauses,
discreteModelVars, extObjInfo, makefileParams, delayedExps, jacobianMatrixes, simulationSettingsOpt, fileNamePrefix, crefToSimVarHT, SOME(taskScheduleSimCode));

Expand Down
2 changes: 1 addition & 1 deletion Compiler/BackEnd/ResidualCmp.mo
Expand Up @@ -189,7 +189,7 @@ algorithm
makefileParams = SimCode.MAKEFILE_PARAMS("","","","","","","","","",includeDirs,libs,"","");
delayexp = SimCode.DELAYED_EXPRESSIONS({},0);
hashTable = SimCodeUtil.emptyHashTable();
rescmp = SimCode.SIMCODE(modelInfo,{},recordDecls,externalFunctionIncludes,{},{},{},allEquations,false,false,allInitEquations,{},{},{},{},{},{},{},{},{},{},{},BackendDAE.SAMPLE_LOOKUP(0,{}),{},{},extObjInfo,makefileParams,delayexp,{},NONE(),filenamePrefix,hashTable,NONE());
rescmp = SimCode.SIMCODE(modelInfo,{},recordDecls,externalFunctionIncludes,{},{},{},allEquations,false,false,allInitEquations,{},{},{},{},{},{},{},{},{},{},{},{},{},{},BackendDAE.SAMPLE_LOOKUP(0,{}),{},{},extObjInfo,makefileParams,delayexp,{},NONE(),filenamePrefix,hashTable,NONE());
then
rescmp;
else
Expand Down
3 changes: 3 additions & 0 deletions Compiler/BackEnd/SimCode.mo
Expand Up @@ -88,6 +88,9 @@ uniontype SimCode
Boolean useHomotopy "true if homotopy(...) is used during initialization";
list<SimEqSystem> initialEquations;
list<SimEqSystem> startValueEquations;
list<SimEqSystem> nominalValueEquations;
list<SimEqSystem> minValueEquations;
list<SimEqSystem> maxValueEquations;
list<SimEqSystem> parameterEquations;
list<SimEqSystem> inlineEquations;
list<SimEqSystem> removedEquations;
Expand Down

0 comments on commit ef4bdf6

Please sign in to comment.