Skip to content

Commit

Permalink
- revert r16720 because it still causes errors
Browse files Browse the repository at this point in the history
git-svn-id: https://openmodelica.org/svn/OpenModelica/trunk@16728 f25d12d1-65f4-0310-ae8a-bbce733d8d8e
  • Loading branch information
lochel committed Aug 2, 2013
1 parent 0d59bae commit 6b2d5ea
Show file tree
Hide file tree
Showing 12 changed files with 40 additions and 211 deletions.
5 changes: 1 addition & 4 deletions Compiler/BackEnd/BackendDAEOptimize.mo
Expand Up @@ -7908,7 +7908,7 @@ algorithm
eqns_ := BackendEquation.listEquation(eqns);
systs := listAppend(systs, {BackendDAE.EQSYSTEM(vars_, eqns_, NONE(), NONE(), BackendDAE.NO_MATCHING(), {})});

//initialEqs := BackendEquation.addEquations(additionalInitialEquations, initialEqs);
initialEqs := BackendEquation.addEquations(additionalInitialEquations, initialEqs);
eventInfo := BackendDAE.EVENT_INFO(sampleLookup,
whenClauseLst,
zeroCrossingLst,
Expand Down Expand Up @@ -8177,7 +8177,6 @@ algorithm
crStr = "$whenCondition" +& intString(index);

var = BackendDAE.VAR(DAE.CREF_IDENT(crStr, DAE.T_BOOL_DEFAULT, {}), BackendDAE.DISCRETE(), DAE.BIDIR(), DAE.NON_PARALLEL(), DAE.T_BOOL_DEFAULT, NONE(), NONE(), {}, inSource, NONE(), NONE(), DAE.NON_CONNECTOR());
var = BackendVariable.setVarFixed(var, true);
eqn = BackendDAE.EQUATION(DAE.CREF(DAE.CREF_IDENT(crStr, DAE.T_BOOL_DEFAULT, {}), DAE.T_BOOL_DEFAULT), condition, inSource, false);

condition = DAE.CREF(DAE.CREF_IDENT(crStr, DAE.T_BOOL_DEFAULT, {}), DAE.T_BOOL_DEFAULT);
Expand Down Expand Up @@ -8377,7 +8376,6 @@ algorithm
crStr = "$whenCondition" +& intString(index);

var = BackendDAE.VAR(DAE.CREF_IDENT(crStr, DAE.T_BOOL_DEFAULT, {}), BackendDAE.DISCRETE(), DAE.BIDIR(), DAE.NON_PARALLEL(), DAE.T_BOOL_DEFAULT, NONE(), NONE(), {}, inSource, NONE(), NONE(), DAE.NON_CONNECTOR());
var = BackendVariable.setVarFixed(var, true);
stmt = DAE.STMT_ASSIGN(DAE.T_BOOL_DEFAULT, DAE.CREF(DAE.CREF_IDENT(crStr, DAE.T_BOOL_DEFAULT, {}), DAE.T_BOOL_DEFAULT), condition, inSource);

condition = DAE.CREF(DAE.CREF_IDENT(crStr, DAE.T_BOOL_DEFAULT, {}), DAE.T_BOOL_DEFAULT);
Expand All @@ -8395,7 +8393,6 @@ algorithm
crStr = "$whenCondition" +& intString(index);

var = BackendDAE.VAR(DAE.CREF_IDENT(crStr, DAE.T_BOOL_DEFAULT, {}), BackendDAE.DISCRETE(), DAE.BIDIR(), DAE.NON_PARALLEL(), DAE.T_BOOL_DEFAULT, NONE(), NONE(), {}, inSource, NONE(), NONE(), DAE.NON_CONNECTOR());
var = BackendVariable.setVarFixed(var, true);
stmt = DAE.STMT_ASSIGN(DAE.T_BOOL_DEFAULT, DAE.CREF(DAE.CREF_IDENT(crStr, DAE.T_BOOL_DEFAULT, {}), DAE.T_BOOL_DEFAULT), condition, inSource);

condition = DAE.CREF(DAE.CREF_IDENT(crStr, DAE.T_BOOL_DEFAULT, {}), DAE.T_BOOL_DEFAULT);
Expand Down
63 changes: 0 additions & 63 deletions Compiler/BackEnd/BackendDAEUtil.mo
Expand Up @@ -1075,69 +1075,6 @@ algorithm
outNumZeroCrossings := listLength(zeroCrossingLst);
end numberOfZeroCrossings;

public function numberOfDiscreteVars "function numberOfDiscreteVars
author: lochel"
input BackendDAE.BackendDAE inBackendDAE;
output Integer outNumDiscreteReal;
algorithm
outNumDiscreteReal := countDiscreteVars(inBackendDAE);
end numberOfDiscreteVars;

protected function countDiscreteVars "function countDiscreteVars
author: lochel"
input BackendDAE.BackendDAE inDAE;
output Integer outNumDiscreteVars;
protected
BackendDAE.EqSystems systs;
BackendDAE.Variables knownVars, alias;
algorithm
BackendDAE.DAE(systs, BackendDAE.SHARED(knownVars=knownVars, aliasVars=alias)) := inDAE;
outNumDiscreteVars := countDiscreteVars1(systs);
outNumDiscreteVars := BackendVariable.traverseBackendDAEVars(knownVars, countDiscreteVars3, outNumDiscreteVars);
outNumDiscreteVars := BackendVariable.traverseBackendDAEVars(alias, countDiscreteVars3, outNumDiscreteVars);
end countDiscreteVars;

protected function countDiscreteVars1 "function countDiscreteVars1
author: lochel"
input BackendDAE.EqSystems inEqSystems;
output Integer outNumDiscreteVars;
algorithm
outNumDiscreteVars := 0;
outNumDiscreteVars := List.fold(inEqSystems, countDiscreteVars2, outNumDiscreteVars);
end countDiscreteVars1;

protected function countDiscreteVars2 "function countDiscreteVars2
author: lochel"
input BackendDAE.EqSystem inEqSystem;
input Integer inNumDiscreteVars;
output Integer outNumDiscreteVars;
protected
BackendDAE.Variables vars;
algorithm
BackendDAE.EQSYSTEM(orderedVars=vars) := inEqSystem;
outNumDiscreteVars := BackendVariable.traverseBackendDAEVars(vars, countDiscreteVars3, inNumDiscreteVars);
end countDiscreteVars2;

protected function countDiscreteVars3 "function countDiscreteVars3
author: lochel"
input tuple<BackendDAE.Var, Integer> inTpl;
output tuple<BackendDAE.Var, Integer> outTpl;
algorithm
outTpl := matchcontinue(inTpl)
local
BackendDAE.Var var;
Integer nDiscreteVars;
DAE.InstDims arryDim;

// discrete
case((var as BackendDAE.VAR(varKind=BackendDAE.DISCRETE(), varType=DAE.T_REAL(source = _), arryDim=arryDim), nDiscreteVars)) equation
then ((var, nDiscreteVars+1));

else
then inTpl;
end matchcontinue;
end countDiscreteVars3;

protected function calculateValues "function: calculateValues
author: PA
This function calculates the values from the parameter binding expressions.
Expand Down
2 changes: 1 addition & 1 deletion Compiler/BackEnd/ResidualCmp.mo
Expand Up @@ -181,7 +181,7 @@ algorithm
(daevars,_,allEquations,allInitEquations) = generateEquationscollectVars(elementLst,{},1,{},{});
// generate variable definitions
simvars = SimCode.SIMVARS({},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{});
varinfo = SimCode.VARINFO(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,NONE(),NONE());
varinfo = SimCode.VARINFO(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,NONE(),NONE());

modelInfo = SimCode.MODELINFO(inClassName,fileDir,varinfo,simvars,functions,{});
extObjInfo = SimCode.EXTOBJINFO({},{});
Expand Down
1 change: 0 additions & 1 deletion Compiler/BackEnd/SimCode.mo
Expand Up @@ -172,7 +172,6 @@ uniontype VarInfo
Integer numStateVars;
Integer numInlineVars;
Integer numAlgVars;
Integer numDiscreteReal;
Integer numIntAlgVars;
Integer numBoolAlgVars;
Integer numAlgAliasVars;
Expand Down
17 changes: 8 additions & 9 deletions Compiler/BackEnd/SimCodeUtil.mo
Expand Up @@ -1697,7 +1697,7 @@ algorithm
list<SimCode.Function> functions;
list<String> labels;
Integer numZeroCrossings, numTimeEvents, numRelations, numMathEvents;
Integer numStateVars, numInlineVars, numAlgVars, numDiscreteReal, numIntAlgVars, numBoolAlgVars, numAlgAliasVars, numIntAliasVars, numBoolAliasVars;
Integer numStateVars, numInlineVars, numAlgVars, numIntAlgVars, numBoolAlgVars, numAlgAliasVars, numIntAliasVars, numBoolAliasVars;
Integer numParams, numIntParams, numBoolParams, numOutVars, numInVars;
Integer numInitialEquations, numInitialAlgorithms, numInitialResiduals, numExternalObjects, numStringAlgVars;
Integer numStringParamVars, numStringAliasVars, numStateSets;
Expand All @@ -1707,7 +1707,7 @@ algorithm
case({}, _) then modelInfo;
case(_, SimCode.MODELINFO(name, directory, varInfo, vars, functions, labels))
equation
SimCode.VARINFO(numZeroCrossings, numTimeEvents, numRelations, numMathEvents, numStateVars, numInlineVars, numAlgVars, numDiscreteReal, numIntAlgVars, numBoolAlgVars, numAlgAliasVars, numIntAliasVars, numBoolAliasVars, numParams,
SimCode.VARINFO(numZeroCrossings, numTimeEvents, numRelations, numMathEvents, numStateVars, numInlineVars, numAlgVars, numIntAlgVars, numBoolAlgVars, numAlgAliasVars, numIntAliasVars, numBoolAliasVars, numParams,
numIntParams, numBoolParams, numOutVars, numInVars, numInitialEquations, numInitialAlgorithms, numInitialResiduals, numExternalObjects, numStringAlgVars,
numStringParamVars, numStringAliasVars, numEqns, numLinearSys, numNonLinearSys, numMixedLinearSys, numStateSets, dimODE1stOrder, dimODE2ndOrder) = varInfo;
SimCode.SIMVARS(stateVars, derivativeVars, inlineVars, algVars, intAlgVars, boolAlgVars, inputVars, outputVars, aliasVars, intAliasVars, boolAliasVars, paramVars, intParamVars, boolParamVars,
Expand All @@ -1721,7 +1721,7 @@ algorithm
boolAlgVars = listReverse(boolAlgVars);
stringAlgVars = listReverse(stringAlgVars);

varInfo = SimCode.VARINFO(numZeroCrossings, numTimeEvents, numRelations, numMathEvents, numStateVars, numInlineVars, numAlgVars, numDiscreteReal, numIntAlgVars, numBoolAlgVars, numAlgAliasVars, numIntAliasVars, numBoolAliasVars, numParams,
varInfo = SimCode.VARINFO(numZeroCrossings, numTimeEvents, numRelations, numMathEvents, numStateVars, numInlineVars, numAlgVars, numIntAlgVars, numBoolAlgVars, numAlgAliasVars, numIntAliasVars, numBoolAliasVars, numParams,
numIntParams, numBoolParams, numOutVars, numInVars, numInitialEquations, numInitialAlgorithms, numInitialResiduals, numExternalObjects, numStringAlgVars,
numStringParamVars, numStringAliasVars, numEqns, numLinearSys, numNonLinearSys, numMixedLinearSys, numStateSets, dimODE1stOrder, dimODE2ndOrder);
vars = SimCode.SIMVARS(stateVars, derivativeVars, inlineVars, algVars, intAlgVars, boolAlgVars, inputVars, outputVars, aliasVars, intAliasVars, boolAliasVars, paramVars, intParamVars, boolParamVars,
Expand Down Expand Up @@ -1836,17 +1836,17 @@ algorithm
list<SimCode.Function> functions;
list<String> labels;
Integer numZeroCrossings, numTimeEvents, numRelations, numMathEvents;
Integer numStateVars, numInlineVars, numAlgVars, numDiscreteReal, numIntAlgVars, numBoolAlgVars, numAlgAliasVars, numIntAliasVars, numBoolAliasVars;
Integer numStateVars, numInlineVars, numAlgVars, numIntAlgVars, numBoolAlgVars, numAlgAliasVars, numIntAliasVars, numBoolAliasVars;
Integer numParams, numIntParams, numBoolParams, numOutVars, numInVars;
Integer numInitialEquations, numInitialAlgorithms, numInitialResiduals, numExternalObjects, numStringAlgVars;
Integer numStringParamVars, numStringAliasVars, numStateSets;
Option<Integer> dimODE1stOrder, dimODE2ndOrder;
case(SimCode.MODELINFO(name, directory, varInfo, vars, functions, labels), _, _, _, _)
equation
SimCode.VARINFO(numZeroCrossings, numTimeEvents, numRelations, numMathEvents, numStateVars, numInlineVars, numAlgVars, numDiscreteReal, numIntAlgVars, numBoolAlgVars, numAlgAliasVars, numIntAliasVars, numBoolAliasVars, numParams,
SimCode.VARINFO(numZeroCrossings, numTimeEvents, numRelations, numMathEvents, numStateVars, numInlineVars, numAlgVars, numIntAlgVars, numBoolAlgVars, numAlgAliasVars, numIntAliasVars, numBoolAliasVars, numParams,
numIntParams, numBoolParams, numOutVars, numInVars, numInitialEquations, numInitialAlgorithms, numInitialResiduals, numExternalObjects, numStringAlgVars,
numStringParamVars, numStringAliasVars, _, _, _, _, numStateSets, dimODE1stOrder, dimODE2ndOrder) = varInfo;
varInfo = SimCode.VARINFO(numZeroCrossings, numTimeEvents, numRelations, numMathEvents, numStateVars, numInlineVars, numAlgVars, numDiscreteReal, numIntAlgVars, numBoolAlgVars, numAlgAliasVars, numIntAliasVars, numBoolAliasVars, numParams,
varInfo = SimCode.VARINFO(numZeroCrossings, numTimeEvents, numRelations, numMathEvents, numStateVars, numInlineVars, numAlgVars, numIntAlgVars, numBoolAlgVars, numAlgAliasVars, numIntAliasVars, numBoolAliasVars, numParams,
numIntParams, numBoolParams, numOutVars, numInVars, numInitialEquations, numInitialAlgorithms, numInitialResiduals, numExternalObjects, numStringAlgVars,
numStringParamVars, numStringAliasVars, numEqns, numLinearSys, numNonLinearSys, numMixedLinearSys, numStateSets, dimODE1stOrder, dimODE2ndOrder);
then SimCode.MODELINFO(name, directory, varInfo, vars, functions, labels);
Expand Down Expand Up @@ -7187,15 +7187,14 @@ protected function createVarInfo
input Integer numStateSets;
output SimCode.VarInfo varInfo;
protected
Integer numZeroCrossings, numTimeEvents, numRelations, numMathEventFunctions, numInitialResiduals, nDiscreteReal;
Integer numZeroCrossings, numTimeEvents, numRelations, numMathEventFunctions, numInitialResiduals;
algorithm
(numZeroCrossings, numTimeEvents, numRelations, numMathEventFunctions) := BackendDAEUtil.numberOfZeroCrossings(dlow);
numZeroCrossings := filterNg(numZeroCrossings);
numTimeEvents := filterNg(numTimeEvents);
numRelations := filterNg(numRelations);
numInitialResiduals := numInitialEquations+numInitialAlgorithms;
nDiscreteReal := BackendDAEUtil.numberOfDiscreteVars(dlow);
varInfo := SimCode.VARINFO(numZeroCrossings, numTimeEvents, numRelations, numMathEventFunctions, nx, numInlineVars, ny, nDiscreteReal, ny_int, ny_bool, na, na_int, na_bool, np, np_int, np_bool, numOutVars, numInVars,
varInfo := SimCode.VARINFO(numZeroCrossings, numTimeEvents, numRelations, numMathEventFunctions, nx, numInlineVars, ny, ny_int, ny_bool, na, na_int, na_bool, np, np_int, np_bool, numOutVars, numInVars,
numInitialEquations, numInitialAlgorithms, numInitialResiduals, next, ny_string, np_string, na_string, 0, 0, 0, 0, numStateSets, SOME(dim_1), SOME(dim_2));
end createVarInfo;

Expand Down
1 change: 0 additions & 1 deletion Compiler/Template/CodegenC.tpl
Expand Up @@ -298,7 +298,6 @@ template populateModelInfo(ModelInfo modelInfo, String fileNamePrefix, String gu

data->modelData.nStates = <%varInfo.numStateVars%>;
data->modelData.nVariablesReal = 2*<%varInfo.numStateVars%>+<%varInfo.numAlgVars%>;
data->modelData.nDiscreteReal = <%varInfo.numDiscreteReal%>;
data->modelData.nVariablesInteger = <%varInfo.numIntAlgVars%>;
data->modelData.nVariablesBoolean = <%varInfo.numBoolAlgVars%>;
data->modelData.nVariablesString = <%varInfo.numStringAlgVars%>;
Expand Down
1 change: 0 additions & 1 deletion Compiler/Template/SimCodeTV.mo
Expand Up @@ -372,7 +372,6 @@ package SimCode
Integer numStateVars;
Integer numInlineVars;
Integer numAlgVars;
Integer numDiscreteReal;
Integer numIntAlgVars;
Integer numBoolAlgVars;
Integer numAlgAliasVars;
Expand Down
Expand Up @@ -100,8 +100,7 @@ double leastSquareWithLambda(INIT_DATA *initData, double lambda)
updateSimData(initData);

updateBoundParameters(data);
/*functionODE(data);*/
functionDAE(data);
functionODE(data);
functionAlgebraics(data);
initial_residual(data, initData->initialResiduals);

Expand Down Expand Up @@ -143,18 +142,6 @@ double leastSquareWithLambda(INIT_DATA *initData, double lambda)

funcValue += (1.0-lambda)*((data->modelData.realParameterData[i].attribute.start-data->simulationInfo.realParameter[i])/scalingCoefficient)*((data->modelData.realParameterData[i].attribute.start-data->simulationInfo.realParameter[i])/scalingCoefficient);
}

/* for real discrete */
for(i=data->modelData.nVariablesReal-data->modelData.nDiscreteReal; i<data->modelData.nDiscreteReal; ++i)
if(data->modelData.realVarsData[i].attribute.useStart && !data->modelData.realVarsData[i].attribute.fixed)
{
if(initData->startValueResidualScalingCoefficients)
scalingCoefficient = initData->startValueResidualScalingCoefficients[ix++]; /* use scaling coefficients */
else
scalingCoefficient = 1.0; /* no scaling coefficients given */

funcValue += (1.0-lambda)*((data->modelData.realVarsData[i].attribute.start-data->simulationInfo.realParameter[i])/scalingCoefficient)*((data->modelData.realVarsData[i].attribute.start-data->simulationInfo.realParameter[i])/scalingCoefficient);
}
}

return funcValue;
Expand Down Expand Up @@ -190,17 +177,11 @@ void dumpInitialization(INIT_DATA *initData)
else
INFO3(LOG_INIT, "[%ld] [%15g] := %s", i+1, initData->vars[i], initData->name[i]);

for(; i<initData->nStates+initData->nParameters; ++i)
for(; i<initData->nVars; ++i)
if(initData->nominal)
INFO4(LOG_INIT, "[%ld] [%15g] := %s (parameter) [scaling coefficient: %g]", i+1, initData->vars[i], initData->name[i], initData->nominal[i]);
else
INFO3(LOG_INIT, "[%ld] [%15g] := %s (parameter)", i+1, initData->vars[i], initData->name[i]);

for(; i<initData->nVars; ++i)
if(initData->nominal)
INFO4(LOG_INIT, "[%ld] [%15g] := %s (discrete) [scaling coefficient: %g]", i+1, initData->vars[i], initData->name[i], initData->nominal[i]);
else
INFO3(LOG_INIT, "[%ld] [%15g] := %s (discrete)", i+1, initData->vars[i], initData->name[i]);
RELEASE(LOG_INIT);

INFO(LOG_INIT, "initial residuals");
Expand Down Expand Up @@ -359,13 +340,13 @@ static int initialize2(INIT_DATA *initData, int optiMethod, int useScaling, int
else
THROW("unsupported option -iom");

/*storePreValues(data); /* save pre-values */
storePreValues(data); /* save pre-values */
overwriteOldSimulationData(data); /* if there are non-linear equations */
updateDiscreteSystem(data); /* evaluate discrete variables */

/* valid system for the first time! */
saveZeroCrossings(data);
/*storePreValues(data); /* save pre-values */
storePreValues(data);
overwriteOldSimulationData(data);

funcValue = leastSquareWithLambda(initData, 1.0);
Expand Down Expand Up @@ -493,19 +474,6 @@ static int initialize(DATA *data, int optiMethod, int lambda_steps)
}
k++;
}
for(i=data->modelData.nVariablesReal-data->modelData.nDiscreteReal; i<data->modelData.nDiscreteReal; ++i)
{
if(data->modelData.realParameterData[i].attribute.fixed == 0)
{
if(z_f[k] >= 0.0)
{
data->modelData.realParameterData[i].attribute.fixed = 1;
INFO2(LOG_INIT, "%s(fixed=true) = %g", initData->name[k], initData->vars[k]);
}
k++;
}
}

}
RELEASE(LOG_INIT); RELEASE(LOG_INIT);

Expand Down Expand Up @@ -622,13 +590,13 @@ static int numeric_initialization(DATA *data, int optiMethod, int lambda_steps)

retVal = initialize(data, optiMethod, lambda_steps);

/*storePreValues(data); /* save pre-values */
storePreValues(data); /* save pre-values */
overwriteOldSimulationData(data); /* if there are non-linear equations */
updateDiscreteSystem(data); /* evaluate discrete variables */

/* valid system for the first time! */
saveZeroCrossings(data);
/*storePreValues(data); /* save pre-values */
storePreValues(data); /* save pre-values */
overwriteOldSimulationData(data); /* if there are non-linear equations */

return retVal;
Expand Down Expand Up @@ -898,28 +866,6 @@ static int importStartValues(DATA *data, const char *pInitFile, double initTime)
else
WARNING1(LOG_INIT, "unable to import real parameter %s from given file", mData->realParameterData[i].info.name);
}

INFO(LOG_INIT, "import real discrete");
for(i=mData->nVariablesReal-mData->nDiscreteReal; i<mData->nDiscreteReal; ++i)
{
pVar = omc_matlab4_find_var(&reader, mData->realParameterData[i].info.name);

if(!pVar)
{
newVarname = mapToDymolaVars(mData->realParameterData[i].info.name);
pVar = omc_matlab4_find_var(&reader, newVarname);
free(newVarname);
}

if(pVar)
{
omc_matlab4_val(&(mData->realParameterData[i].attribute.start), &reader, pVar, initTime);
INFO2(LOG_INIT, "| %s(start=%g)", mData->realParameterData[i].info.name, mData->realParameterData[i].attribute.start);
}
else
WARNING1(LOG_INIT, "unable to import real parameter %s from given file", mData->realParameterData[i].info.name);
}


INFO(LOG_INIT, "import integer parameters");
for(i=0; i<mData->nParametersInteger; ++i)
Expand Down

0 comments on commit 6b2d5ea

Please sign in to comment.