Skip to content

Commit

Permalink
Remove mixedArrayVars from Cpp code and SimVars
Browse files Browse the repository at this point in the history
They are a subset of states and derivatives added in 08b243e.
See e.g.: Modelica.Blocks.Examples.FilterWithDifferentiation
  • Loading branch information
rfranke committed Apr 15, 2016
1 parent 44087ac commit bd7263e
Show file tree
Hide file tree
Showing 3 changed files with 9 additions and 69 deletions.
59 changes: 8 additions & 51 deletions Compiler/SimCode/SimCodeUtil.mo
Expand Up @@ -222,7 +222,6 @@ protected
list<SimCode.SimEqSystem> removedInitialEquations; // -->
list<SimCode.SimEqSystem> startValueEquations; // --> updateBoundStartValues
list<SimCode.StateSet> stateSets;
list<SimCodeVar.SimVar> mixedArrayVars;
list<SimCodeVar.SimVar> tempvars, jacobianSimvars, seedVars;
list<list<SimCode.SimEqSystem>> algebraicEquations; // --> functionAlgebraics
list<list<SimCode.SimEqSystem>> odeEquations; // --> functionODE
Expand Down Expand Up @@ -414,8 +413,7 @@ algorithm
if Flags.isSet(Flags.EXEC_HASH) then
print("*** SimCode -> generate cref2simVar hashtable: " + realString(clock()) + "\n");
end if;
(crefToSimVarHT, mixedArrayVars) := createCrefToSimVarHT(modelInfo);
modelInfo := setMixedArrayVars(mixedArrayVars, modelInfo);
crefToSimVarHT := createCrefToSimVarHT(modelInfo);
if Flags.isSet(Flags.EXEC_HASH) then
print("*** SimCode -> generate cref2simVar hashtable done!: " + realString(clock()) + "\n");
end if;
Expand Down Expand Up @@ -868,19 +866,6 @@ algorithm
modelInfo.vars := vars;
end setSeedVars;

protected function setMixedArrayVars "author: marcusw
Set the given mixed array vars in the given model info. The old mixed variables will be replaced."
input list<SimCodeVar.SimVar> iMixedArrayVars;
input SimCode.ModelInfo iModelInfo;
output SimCode.ModelInfo oModelInfo = iModelInfo;
protected
SimCodeVar.SimVars vars;
algorithm
vars := oModelInfo.vars;
vars.mixedArrayVars := iMixedArrayVars;
oModelInfo.vars := vars;
end setMixedArrayVars;

protected function addNumEqnsandNumofSystems
input SimCode.ModelInfo modelInfo;
input Integer numEqns;
Expand Down Expand Up @@ -6320,7 +6305,6 @@ protected type SimVarsIndex = enumeration(
boolConst,
stringConst,

mixedArray,
jacobian,
seed
);
Expand Down Expand Up @@ -6413,8 +6397,7 @@ algorithm
Dangerous.arrayGetNoBoundsChecking(simVars, Integer(SimVarsIndex.jacobian)),
Dangerous.arrayGetNoBoundsChecking(simVars, Integer(SimVarsIndex.seed)),
Dangerous.arrayGetNoBoundsChecking(simVars, Integer(SimVarsIndex.realOptimizeConstraints)),
Dangerous.arrayGetNoBoundsChecking(simVars, Integer(SimVarsIndex.realOptimizeFinalConstraints)),
Dangerous.arrayGetNoBoundsChecking(simVars, Integer(SimVarsIndex.mixedArray))
Dangerous.arrayGetNoBoundsChecking(simVars, Integer(SimVarsIndex.realOptimizeFinalConstraints))
);
end createVars;

Expand Down Expand Up @@ -7228,7 +7211,7 @@ end collectArrayFirstVars;
protected function fixIndex
input array<list<SimCodeVar.SimVar>> simVars;
algorithm
for i in SimVarsIndex.state : SimVarsIndex.stringConst loop // Skip jacobian, seed, mixedArray
for i in SimVarsIndex.state : SimVarsIndex.stringConst loop // Skip jacobian, seed
Dangerous.arrayUpdateNoBoundsChecking(simVars, Integer(i), rewriteIndex(Dangerous.arrayGetNoBoundsChecking(simVars,Integer(i)), 0));
end for;
end fixIndex;
Expand Down Expand Up @@ -7280,11 +7263,9 @@ algorithm
end setVariableIndexHelper2;

public function createCrefToSimVarHT "author: unknown and marcusw
create a hash table that maps all variable names (crefs) to the simVar-objects. Additionally, all array names are returned, that
contain state or state derivative variables, together with other variables."
Create a hash table that maps all variable names (crefs) to the simVar objects."
input SimCode.ModelInfo modelInfo;
output SimCode.HashTableCrefToSimVar outHT;
output list<SimCodeVar.SimVar> oMixedArrayVars; //all arrays that contain state or state derivative variables, together with other variables
protected
Integer size;
SimCode.VarInfo varInfo;
Expand Down Expand Up @@ -7329,8 +7310,6 @@ algorithm
outHT := List.fold(vars.seedVars, addSimVarToHashTable, outHT);
outHT := List.fold(vars.realOptimizeConstraintsVars, addSimVarToHashTable, outHT);
outHT := List.fold(vars.realOptimizeFinalConstraintsVars, addSimVarToHashTable, outHT);

oMixedArrayVars := List.fold(listAppend(vars.stateVars, vars.derivativeVars), function getMixedArrayVars(iArraySimVars=arraySimVars), {});
else
Error.addInternalError("function createCrefToSimVarHT failed", sourceInfo());
end try;
Expand Down Expand Up @@ -7397,28 +7376,6 @@ algorithm
end match;
end getArraySimVars;

protected function getMixedArrayVars "author: marcusw
get the names of all arrays, that contain state or state derivative variables, together with other variables."
input SimCodeVar.SimVar iSimVar;
input HashTableCrILst.HashTable iArraySimVars; //all array variables of non state and non state derivative variables
input list<SimCodeVar.SimVar> iMixedArrayVars;
output list<SimCodeVar.SimVar> oMixedArrayVars;
protected
DAE.ComponentRef cr;
list<SimCodeVar.SimVar> tmpMixedArrayVars;
algorithm
oMixedArrayVars := match(iSimVar, iArraySimVars, iMixedArrayVars)
case(SimCodeVar.SIMVAR(arrayCref=SOME(cr)),_,tmpMixedArrayVars)
equation
if(BaseHashTable.hasKey(cr, iArraySimVars)) then
tmpMixedArrayVars = iSimVar::tmpMixedArrayVars;
end if;
then tmpMixedArrayVars;
else
then iMixedArrayVars;
end match;
end getMixedArrayVars;

protected function getAliasVar
input BackendDAE.Var inVar;
input Option<BackendDAE.Variables> inAliasVars;
Expand Down Expand Up @@ -9508,11 +9465,11 @@ algorithm
local
list<SimCodeVar.SimVar> stateVars, derivativeVars, algVars, discreteAlgVars, intAlgVars, boolAlgVars, inputVars, outputVars, aliasVars, intAliasVars,
boolAliasVars, paramVars, intParamVars, boolParamVars, stringAlgVars, stringParamVars, stringAliasVars,
extObjVars, constVars, intConstVars, boolConstVars, stringConstVars, jacobianVars, seedVars, realOptimizeConstraintsVars, realOptimizeFinalConstraintsVars, mixedArrayCrefs;
extObjVars, constVars, intConstVars, boolConstVars, stringConstVars, jacobianVars, seedVars, realOptimizeConstraintsVars, realOptimizeFinalConstraintsVars;
tpl intpl;

case (SimCodeVar.SIMVARS(stateVars, derivativeVars, algVars, discreteAlgVars, intAlgVars, boolAlgVars, inputVars, outputVars, aliasVars, intAliasVars, boolAliasVars,
paramVars, intParamVars, boolParamVars, stringAlgVars, stringParamVars, stringAliasVars, extObjVars, constVars, intConstVars, boolConstVars, stringConstVars, jacobianVars, seedVars, realOptimizeConstraintsVars, realOptimizeFinalConstraintsVars, mixedArrayCrefs), _, intpl)
paramVars, intParamVars, boolParamVars, stringAlgVars, stringParamVars, stringAliasVars, extObjVars, constVars, intConstVars, boolConstVars, stringConstVars, jacobianVars, seedVars, realOptimizeConstraintsVars, realOptimizeFinalConstraintsVars), _, intpl)
equation
(stateVars, intpl) = List.mapFoldTuple(stateVars, func, intpl);
(derivativeVars, intpl) = List.mapFoldTuple(derivativeVars, func, intpl);
Expand Down Expand Up @@ -9542,7 +9499,7 @@ algorithm


then (SimCodeVar.SIMVARS(stateVars, derivativeVars, algVars, discreteAlgVars, intAlgVars, boolAlgVars, inputVars, outputVars, aliasVars, intAliasVars, boolAliasVars,
paramVars, intParamVars, boolParamVars, stringAlgVars, stringParamVars, stringAliasVars, extObjVars, constVars, intConstVars, boolConstVars, stringConstVars, jacobianVars, seedVars, realOptimizeConstraintsVars, realOptimizeFinalConstraintsVars, mixedArrayCrefs), intpl);
paramVars, intParamVars, boolParamVars, stringAlgVars, stringParamVars, stringAliasVars, extObjVars, constVars, intConstVars, boolConstVars, stringConstVars, jacobianVars, seedVars, realOptimizeConstraintsVars, realOptimizeFinalConstraintsVars), intpl);
case (_, _, _) then fail();
end match;
end traveseSimVars;
Expand Down Expand Up @@ -11563,7 +11520,7 @@ protected
algorithm
try
//print("Start creating createFMIModelStructure\n");
(crefSimVarHT,_) := createCrefToSimVarHT(inModelInfo);
crefSimVarHT := createCrefToSimVarHT(inModelInfo);
// combine the transposed sparse pattern of matrix A and B
// to obtain dependencies for the derivatives
SOME((_, (_, spTA, (diffCrefsA, diffedCrefsA),_), _)) := SymbolicJacobian.getJacobianMatrixbyName(inSymjacs, "A");
Expand Down
3 changes: 1 addition & 2 deletions Compiler/SimCode/SimCodeVar.mo
Expand Up @@ -68,12 +68,11 @@ uniontype SimVars "Container for metadata about variables in a Modelica model."
list<SimVar> seedVars;
list<SimVar> realOptimizeConstraintsVars;
list<SimVar> realOptimizeFinalConstraintsVars;
list<SimVar> mixedArrayVars; //all arrays that contain state or state derivative variables, together with other variables
end SIMVARS;
end SimVars;

public constant SimVars emptySimVars = SIMVARS({}, {}, {}, {}, {}, {}, {}, {},
{}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {});
{}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {});

public uniontype SimVar "Information about a variable in a Modelica model."
record SIMVAR
Expand Down
16 changes: 0 additions & 16 deletions Compiler/Template/CodegenCpp.tpl
Expand Up @@ -3692,7 +3692,6 @@ match simCode
defineParameterIntVars();
defineParameterBoolVars();
defineParameterStringVars();
defineMixedArrayVars();
defineAliasRealVars();
defineAliasIntVars();
defineAliasBoolVars();
Expand Down Expand Up @@ -7191,7 +7190,6 @@ match modelInfo
void defineAliasIntVars();
void defineAliasBoolVars();
void defineAliasStringVars();
void defineMixedArrayVars();

void deleteObjects();

Expand Down Expand Up @@ -7966,10 +7964,6 @@ case MODELINFO(vars=SIMVARS(__)) then
<%vars.boolAlgVars |> var =>
memberVariableDefine2(var, varToArrayIndexMapping, indexForUndefinedReferencesBool, useFlatArrayNotation, createDebugCode, "Bool", true)
;separator="\n"%>
/*mixed array variables*/
<%vars.mixedArrayVars |> var =>
memberVariableDefine2(var, varToArrayIndexMapping, indexForUndefinedReferencesReal, useFlatArrayNotation, createDebugCode, "Real", true)
;separator="\n"%>
>>
end memberVariableDefinePreVariables;

Expand All @@ -7994,7 +7988,6 @@ template memberVariableInitialize(ModelInfo modelInfo, HashTableCrIListArray.Has
let &additionalAliasIntVarFunctionCalls = buffer ""
let &additionalAliasBoolVarFunctionCalls = buffer ""
let &additionalAliasStringVarFunctionCalls = buffer ""
let &additionalMixedArrayVarFunctionCalls = buffer ""
let &returnValue = buffer ""

<<
Expand Down Expand Up @@ -8134,15 +8127,6 @@ template memberVariableInitialize(ModelInfo modelInfo, HashTableCrIListArray.Has
{
<%additionalAliasStringVarFunctionCalls%>
}

//MixedArrayVars
<%List.partition(vars.mixedArrayVars, 100) |> varPartition hasindex i0 =>
memberVariableInitializeWithSplit(varPartition, i0, "defineMixedArrayVars", classname, varToArrayIndexMapping, indexForUndefinedReferencesReal, useFlatArrayNotation, createDebugCode, "Real",
additionalMixedArrayVarFunctionCalls,additionalConstructorVariables,additionalFunctionDefinitions) ;separator="\n"%>
void <%classname%>::defineMixedArrayVars()
{
<%additionalMixedArrayVarFunctionCalls%>
}
>>
end memberVariableInitialize;

Expand Down

0 comments on commit bd7263e

Please sign in to comment.