Skip to content

Commit

Permalink
+ Propagate class attributes for Optimica optimization classes to tem…
Browse files Browse the repository at this point in the history
…plates.

git-svn-id: https://openmodelica.org/svn/OpenModelica/trunk@13829 f25d12d1-65f4-0310-ae8a-bbce733d8d8e
  • Loading branch information
mahge committed Nov 8, 2012
1 parent a3c5326 commit 9019f87
Show file tree
Hide file tree
Showing 7 changed files with 49 additions and 10 deletions.
5 changes: 5 additions & 0 deletions Compiler/BackEnd/BackendDAECreate.mo
Original file line number Diff line number Diff line change
Expand Up @@ -223,6 +223,7 @@ algorithm
list<DAE.Element> daeElts,aliaseqns;
DAE.Constraint cons_1;
list<DAE.Constraint> constrs;
DAE.ClassAttributes clsattrs_1;
list<DAE.ClassAttributes> clsAttrs;
Absyn.Path path;
BackendDAE.Variables vars,knvars,extVars;
Expand Down Expand Up @@ -418,6 +419,10 @@ algorithm
then
(inVars,inKnVars,inExVars,inEqnsLst,inREqnsLst,inIEqnsLst,cons_1::inConstraintLst,inClassAttributeLst,inWhenClauseLst,inExtObjClasses,iAliaseqns);

case (DAE.CLASS_ATTRIBUTES(classAttrs = clsattrs_1),_,_,_,_,_,_,_,_,_,_,_,_)
then
(inVars,inKnVars,inExVars,inEqnsLst,inREqnsLst,inIEqnsLst,inConstraintLst,clsattrs_1::inClassAttributeLst,inWhenClauseLst,inExtObjClasses,iAliaseqns);

case (_,_,_,_,_,_,_,_,_,_,_,_,_)
equation
// show only on failtrace!
Expand Down
5 changes: 3 additions & 2 deletions Compiler/BackEnd/BackendQSS.mo
Original file line number Diff line number Diff line change
Expand Up @@ -1017,6 +1017,7 @@ algorithm
Boolean useSymbolicInitialization;
list<SimCode.SimEqSystem> initialEquations;
list<DAE.Constraint> constraints;
list<DAE.ClassAttributes> classAttributes;
list<BackendDAE.ZeroCrossing> zeroCrossings,relations;
list<SimCode.SampleCondition> sampleConditions;
list<SimCode.HelpVarInfo> helpVarInfo;
Expand All @@ -1032,7 +1033,7 @@ algorithm
list<SimCode.SimEqSystem> eqs;
case (SimCode.SIMCODE(modelInfo,literals,recordDecls,externalFunctionIncludes,allEquations,odeEquations,
algebraicEquations,residualEquations,useSymbolicInitialization,initialEquations,startValueEquations,
parameterEquations,removedEquations,algorithmAndEquationAsserts,constraints,zeroCrossings,relations,
parameterEquations,removedEquations,algorithmAndEquationAsserts,constraints,classAttributes,zeroCrossings,relations,
sampleConditions,sampleEquations,helpVarInfo,whenClauses,discreteModelVars,extObjInfo,makefileParams,
delayedExps,jacobianMatrixes,simulationSettingsOpt,fileNamePrefix,crefToSimVarHT),_)
equation
Expand All @@ -1041,7 +1042,7 @@ algorithm
then SimCode.SIMCODE(modelInfo, literals, recordDecls, externalFunctionIncludes,
allEquations, {eqs}, algebraicEquations, residualEquations, useSymbolicInitialization,
initialEquations, startValueEquations, parameterEquations,
removedEquations, algorithmAndEquationAsserts, constraints,
removedEquations, algorithmAndEquationAsserts, constraints, classAttributes,
zeroCrossings, relations, sampleConditions, sampleEquations,
helpVarInfo, whenClauses, discreteModelVars, extObjInfo,
makefileParams, delayedExps, jacobianMatrixes,
Expand Down
2 changes: 1 addition & 1 deletion Compiler/BackEnd/ResidualCmp.mo
Original file line number Diff line number Diff line change
Expand Up @@ -187,7 +187,7 @@ algorithm
makefileParams = SimCode.MAKEFILE_PARAMS("","","","","","","","","",includeDirs,libs,"");
delayexp = SimCode.DELAYED_EXPRESSIONS({},0);
hashTable = SimCodeUtil.emptyHashTable();
rescmp = SimCode.SIMCODE(modelInfo,{},recordDecls,externalFunctionIncludes,{},{},{},allEquations,false,allInitEquations,{},{},{},{},{},{},{},{},{},{},{},{},extObjInfo,makefileParams,delayexp,{},NONE(),filenamePrefix,hashTable);
rescmp = SimCode.SIMCODE(modelInfo,{},recordDecls,externalFunctionIncludes,{},{},{},allEquations,false,allInitEquations,{},{},{},{},{},{},{},{},{},{},{},{},{},extObjInfo,makefileParams,delayexp,{},NONE(),filenamePrefix,hashTable);
then
rescmp;
else
Expand Down
1 change: 1 addition & 0 deletions Compiler/BackEnd/SimCode.mo
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,7 @@ uniontype SimCode
list<SimEqSystem> algorithmAndEquationAsserts;
//list<DAE.Statement> algorithmAndEquationAsserts;
list<DAE.Constraint> constraints;
list<DAE.ClassAttributes> classAttributes;
list<BackendDAE.ZeroCrossing> zeroCrossings;
list<BackendDAE.ZeroCrossing> relations;
list<SampleCondition> sampleConditions;
Expand Down
20 changes: 14 additions & 6 deletions Compiler/BackEnd/SimCodeUtil.mo
Original file line number Diff line number Diff line change
Expand Up @@ -1830,6 +1830,7 @@ algorithm
list<SimCode.SimEqSystem> algorithmAndEquationAsserts;
//list<DAE.Statement> algorithmAndEquationAsserts;
list<DAE.Constraint> constraints;
list<DAE.ClassAttributes> classAttributes;
list<BackendDAE.ZeroCrossing> zeroCrossings, sampleZC, relations;
list<SimCode.SimWhenClause> whenClauses;
list<SimCode.SampleCondition> sampleConditions;
Expand All @@ -1849,6 +1850,7 @@ algorithm
BackendDAE.Shared shared;
BackendDAE.EquationArray removedEqs;
array<DAE.Constraint> constrsarr;
array<DAE.ClassAttributes> clsattrsarra;

list<DAE.Exp> lits;
list<SimCode.SimVar> tempvars;
Expand All @@ -1867,6 +1869,7 @@ algorithm
(helpVarInfo, dlow2, sampleEqns) = generateHelpVarInfo(dlow);
BackendDAE.DAE(systs, shared as BackendDAE.SHARED(removedEqs=removedEqs,
constraints = constrsarr,
classAttrs = clsattrsarra,
functionTree = functionTree,
symjacs = symJacs)) = dlow2;

Expand Down Expand Up @@ -1938,6 +1941,7 @@ algorithm
Debug.fcall(Flags.EXEC_HASH,print, "*** SimCode -> generate cref2simVar hastable done!: " +& realString(clock()) +& "\n" );

constraints = arrayList(constrsarr);
classAttributes = arrayList(clsattrsarra);

simCode = SimCode.SIMCODE(modelInfo,
{}, // Set by the traversal below...
Expand All @@ -1954,6 +1958,7 @@ algorithm
removedEquations,
algorithmAndEquationAsserts,
constraints,
classAttributes,
zeroCrossings,
relations,
sampleConditions,
Expand Down Expand Up @@ -12673,6 +12678,7 @@ algorithm
Boolean useSymbolicInitialization;
list<SimCode.SimEqSystem> initialEquations;
list<DAE.Constraint> constraints;
list<DAE.ClassAttributes> classAttributes;
list<BackendDAE.ZeroCrossing> zeroCrossings, relations;
list<SimCode.SampleCondition> sampleConditions;
list<SimCode.HelpVarInfo> helpVarInfo;
Expand Down Expand Up @@ -12700,7 +12706,7 @@ algorithm
inSimCode;

case SimCode.SIMCODE(modelInfo,literals,recordDecls,externalFunctionIncludes,allEquations,odeEquations,algebraicEquations,residualEquations,useSymbolicInitialization,initialEquations,startValueEquations,
parameterEquations,removedEquations,algorithmAndEquationAsserts,constraints,zeroCrossings,relations,sampleConditions,sampleEquations,helpVarInfo,whenClauses,
parameterEquations,removedEquations,algorithmAndEquationAsserts,constraints,classAttributes,zeroCrossings,relations,sampleConditions,sampleEquations,helpVarInfo,whenClauses,
discreteModelVars,extObjInfo,makefileParams,delayedExps,jacobianMatrixes,simulationSettingsOpt,fileNamePrefix,crefToSimVarHT)
equation
SimCode.MODELINFO(name, directory, varInfo, vars, functions, labels) = modelInfo;
Expand All @@ -12716,7 +12722,7 @@ algorithm
modelInfo = SimCode.MODELINFO(name, directory, varInfo, vars, functions, labels);
then
SimCode.SIMCODE(modelInfo,literals,recordDecls,externalFunctionIncludes,allEquations,odeEquations,algebraicEquations,residualEquations,useSymbolicInitialization,initialEquations,startValueEquations,
parameterEquations,removedEquations,algorithmAndEquationAsserts,constraints,zeroCrossings,relations,sampleConditions,sampleEquations,helpVarInfo,whenClauses,
parameterEquations,removedEquations,algorithmAndEquationAsserts,constraints,classAttributes,zeroCrossings,relations,sampleConditions,sampleEquations,helpVarInfo,whenClauses,
discreteModelVars,extObjInfo,makefileParams,delayedExps,jacobianMatrixes,simulationSettingsOpt,fileNamePrefix,crefToSimVarHT);

case inSimCode
Expand Down Expand Up @@ -12988,6 +12994,7 @@ algorithm
list<SimCode.SimEqSystem> removedEquations;
list<SimCode.SimEqSystem> algorithmAndEquationAsserts;
list<DAE.Constraint> constraints;
list<DAE.ClassAttributes> classAttributes;
list<BackendDAE.ZeroCrossing> zeroCrossings, relations;
list<SimCode.SampleCondition> sampleConditions;
list<SimCode.SimEqSystem> sampleEquations;
Expand All @@ -13008,7 +13015,7 @@ algorithm
allEquations, odeEquations, algebraicEquations, residualEquations,
useSymbolicInitialization, initialEquations, startValueEquations,
parameterEquations, removedEquations, algorithmAndEquationAsserts,
constraints, zeroCrossings, relations, sampleConditions, sampleEquations,
constraints, classAttributes, zeroCrossings, relations, sampleConditions, sampleEquations,
helpVarInfo, whenClauses, discreteModelVars, extObjInfo, makefileParams,
delayedExps, jacobianMatrixes, simulationSettingsOpt, fileNamePrefix,
crefToSimVarHT),_,a)
Expand All @@ -13035,7 +13042,7 @@ algorithm
allEquations, odeEquations, algebraicEquations, residualEquations,
useSymbolicInitialization, initialEquations, startValueEquations,
parameterEquations, removedEquations, algorithmAndEquationAsserts,
constraints, zeroCrossings, relations, sampleConditions, sampleEquations,
constraints, classAttributes, zeroCrossings, relations, sampleConditions, sampleEquations,
helpVarInfo, whenClauses, discreteModelVars, extObjInfo, makefileParams,
delayedExps, jacobianMatrixes, simulationSettingsOpt, fileNamePrefix,
crefToSimVarHT),a);
Expand Down Expand Up @@ -13183,6 +13190,7 @@ algorithm
list<SimCode.SimEqSystem> removedEquations;
list<SimCode.SimEqSystem> algorithmAndEquationAsserts;
list<DAE.Constraint> constraints;
list<DAE.ClassAttributes> classAttributes;
list<BackendDAE.ZeroCrossing> zeroCrossings, relations;
list<SimCode.SampleCondition> sampleConditions;
list<SimCode.SimEqSystem> sampleEquations;
Expand All @@ -13202,14 +13210,14 @@ algorithm
allEquations, odeEquations, algebraicEquations, residualEquations,
useSymbolicInitialization, initialEquations, startValueEquations,
parameterEquations, removedEquations, algorithmAndEquationAsserts,
constraints, zeroCrossings, relations, sampleConditions, sampleEquations,
constraints, classAttributes, zeroCrossings, relations, sampleConditions, sampleEquations,
helpVarInfo, whenClauses, discreteModelVars, extObjInfo, makefileParams,
delayedExps, jacobianMatrixes, simulationSettingsOpt, fileNamePrefix, crefToSimVarHT),_)
then SimCode.SIMCODE(modelInfo, literals, recordDecls, externalFunctionIncludes,
allEquations, odeEquations, algebraicEquations, residualEquations,
useSymbolicInitialization, initialEquations, startValueEquations,
parameterEquations, removedEquations, algorithmAndEquationAsserts,
constraints, zeroCrossings, relations, sampleConditions, sampleEquations,
constraints, classAttributes, zeroCrossings, relations, sampleConditions, sampleEquations,
helpVarInfo, whenClauses, discreteModelVars, extObjInfo, makefileParams,
delayedExps, jacobianMatrixes, simulationSettingsOpt, fileNamePrefix, crefToSimVarHT);
end match;
Expand Down
17 changes: 16 additions & 1 deletion Compiler/FrontEnd/Inst.mo
Original file line number Diff line number Diff line change
Expand Up @@ -13583,6 +13583,11 @@ algorithm
dae = DAEUtil.joinDaes(constraints_1, constraints_2);
then
(cache,env2,dae,ci_state);
case (_,_,_,_,_,_)
equation
Debug.fprintln(Flags.FAILTRACE, "- Inst.instConstraints failed");
then
fail();

end match;
end instConstraints;
Expand Down Expand Up @@ -13615,6 +13620,11 @@ algorithm
clsAttrs = DAE.DAE({DAE.CLASS_ATTRIBUTES(DAE.OPTIMIZATION_ATTRS(NONE(),NONE(),NONE()))});
(cache,env,dae) = instClassAttributes2(inCache,inEnv,inPrefix,inAttrs,inBoolean,inInfo,clsAttrs);
then (cache,env,dae);
case (_,_,_,_,_,_)
equation
Debug.fprintln(Flags.FAILTRACE, "- Inst.instClassAttributes failed");
then
fail();
end match;
end instClassAttributes;

Expand Down Expand Up @@ -13695,7 +13705,12 @@ algorithm
DAE.DAE({DAE.CLASS_ATTRIBUTES(DAE.OPTIMIZATION_ATTRS(objectiveE,startTimeE,_))}) = attrs;
attrs = DAE.DAE({DAE.CLASS_ATTRIBUTES(DAE.OPTIMIZATION_ATTRS(objectiveE,startTimeE,SOME(inAttrExp)))});
then attrs;

case (_,_,_)
equation
Debug.fprintln(Flags.FAILTRACE, "- Inst.insertClassAttribute failed");
then
fail();

end match;
end insertClassAttribute;

Expand Down
9 changes: 9 additions & 0 deletions Compiler/Template/SimCodeTV.mo
Original file line number Diff line number Diff line change
Expand Up @@ -135,6 +135,7 @@ package SimCode
list<SimEqSystem> algorithmAndEquationAsserts;
//list<DAE.Statement> algorithmAndEquationAsserts;
list<DAE.Constraint> constraints;
list<DAE.ClassAttributes> classAttributes;
list<BackendDAE.ZeroCrossing> zeroCrossings;
list<BackendDAE.ZeroCrossing> relations;
list<list<SimVar>> zeroCrossingsNeedSave;
Expand Down Expand Up @@ -1615,6 +1616,14 @@ package DAE
end CONSTRAINT_EXPS;
end Constraint;

uniontype ClassAttributes "currently for Optimica extension: these are the objectives of optimization class"
record OPTIMIZATION_ATTRS
Option<Exp> objetiveE;
Option<Exp> startTimeE;
Option<Exp> finalTimeE;
end OPTIMIZATION_ATTRS;
end ClassAttributes;

end DAE;


Expand Down

0 comments on commit 9019f87

Please sign in to comment.