Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
  • Loading branch information
niklwors committed Sep 21, 2015
2 parents dc45f54 + b7dbd4a commit a59dc08
Show file tree
Hide file tree
Showing 3 changed files with 71 additions and 85 deletions.
130 changes: 65 additions & 65 deletions Compiler/BackEnd/BackendDAEUtil.mo
Expand Up @@ -7172,38 +7172,38 @@ protected
list<tuple<BackendDAEFunc.preOptimizationDAEModule,String,Boolean>> allPreOptModules;
list<String> strPreOptModules;
algorithm
allPreOptModules := {(RemoveSimpleEquations.removeSimpleEquations, "removeSimpleEquations", false),
(InlineArrayEquations.inlineArrayEqn, "inlineArrayEqn", false),
(EvaluateParameter.evaluateFinalParameters, "evaluateFinalParameters", false),
(EvaluateParameter.evaluateEvaluateParameters, "evaluateEvaluateParameters", false),
(EvaluateParameter.evaluateFinalEvaluateParameters, "evaluateFinalEvaluateParameters", false),
(EvaluateParameter.evaluateReplaceFinalParameters, "evaluateReplaceFinalParameters", false),
(EvaluateParameter.evaluateReplaceEvaluateParameters, "evaluateReplaceEvaluateParameters", false),
(EvaluateParameter.evaluateReplaceFinalEvaluateParameters, "evaluateReplaceFinalEvaluateParameters", false),
(EvaluateParameter.evaluateReplaceProtectedFinalEvaluateParameters, "evaluateReplaceProtectedFinalEvaluateParameters", false),
(EvaluateParameter.evaluateAllParameters, "evaluateAllParameters", false),
allPreOptModules := {(BackendDAEOptimize.expandDerOperator, "expandDerOperator", false),
(BackendDAEOptimize.introduceDerAlias, "introduceDerAlias", false),
(BackendDAEOptimize.removeEqualFunctionCalls, "removeEqualFunctionCalls", false),
(BackendDAEOptimize.removeProtectedParameters, "removeProtectedParameters", false),
(BackendDAEOptimize.removeUnusedParameter, "removeUnusedParameter", false),
(BackendDAEOptimize.removeUnusedVariables, "removeUnusedVariables", false),
(BackendDAEOptimize.sortEqnsVars, "sortEqnsVars", false),
(SynchronousFeatures.clockPartitioning, "clockPartitioning", true),
(StateMachineFeatures.stateMachineElab, "stateMachineElab", true),
(BackendDAEOptimize.expandDerOperator, "expandDerOperator", false),
(BackendDAEOptimize.introduceDerAlias, "introduceDerAlias", false),
(IndexReduction.findStateOrder, "findStateOrder", false),
(BackendDAEOptimize.simplifyIfEquations, "simplifyIfEquations", false),
(BackendDAEOptimize.replaceEdgeChange, "replaceEdgeChange", false),
(BackendDAEOptimize.residualForm, "residualForm", false),
(ResolveLoops.resolveLoops, "resolveLoops", false),
(BackendDAEOptimize.simplifyIfEquations, "simplifyIfEquations", false),
(BackendDAEOptimize.sortEqnsVars, "sortEqnsVars", false),
(BackendDump.dumpDAE, "dumpDAE", false),
(CommonSubExpression.CSE_EachCall, "CSE_EachCall", false),
(CommonSubExpression.commonSubExpressionReplacement, "comSubExp", false),
(DynamicOptimization.inputDerivativesForDynOpt, "inputDerivativesForDynOpt", false),
(EvaluateFunctions.evalFunctions, "evalFunc", false),
(EvaluateParameter.evaluateAllParameters, "evaluateAllParameters", false),
(EvaluateParameter.evaluateEvaluateParameters, "evaluateEvaluateParameters", false),
(EvaluateParameter.evaluateFinalEvaluateParameters, "evaluateFinalEvaluateParameters", false),
(EvaluateParameter.evaluateFinalParameters, "evaluateFinalParameters", false),
(EvaluateParameter.evaluateReplaceEvaluateParameters, "evaluateReplaceEvaluateParameters", false),
(EvaluateParameter.evaluateReplaceFinalEvaluateParameters, "evaluateReplaceFinalEvaluateParameters", false),
(EvaluateParameter.evaluateReplaceFinalParameters, "evaluateReplaceFinalParameters", false),
(EvaluateParameter.evaluateReplaceProtectedFinalEvaluateParameters, "evaluateReplaceProtectedFinalEvaluateParameters", false),
(FindZeroCrossings.encapsulateWhenConditions, "encapsulateWhenConditions", true),
(IndexReduction.findStateOrder, "findStateOrder", false),
(InlineArrayEquations.inlineArrayEqn, "inlineArrayEqn", false),
(RemoveSimpleEquations.removeSimpleEquations, "removeSimpleEquations", false),
(ResolveLoops.resolveLoops, "resolveLoops", false),
(StateMachineFeatures.stateMachineElab, "stateMachineElab", true),
(SynchronousFeatures.clockPartitioning, "clockPartitioning", true),
(UnitCheck.unitChecking, "unitChecking", true),
(CommonSubExpression.commonSubExpressionReplacement, "comSubExp", false),
(CommonSubExpression.CSE_EachCall, "CSE_EachCall", false),
(BackendDump.dumpDAE, "dumpDAE", false),
(XMLDump.dumpDAEXML, "dumpDAEXML", false),
(FindZeroCrossings.encapsulateWhenConditions, "encapsulateWhenConditions", true)
(XMLDump.dumpDAEXML, "dumpDAEXML", false)
};
strPreOptModules := getPreOptModulesString();
strPreOptModules := Util.getOptionOrDefault(ostrPreOptModules,strPreOptModules);
Expand All @@ -7224,51 +7224,51 @@ protected
list<tuple<BackendDAEFunc.postOptimizationDAEModule,String,Boolean/*stopOnFailure*/>> allpostOptModules;
list<String> strpostOptModules;
algorithm
allpostOptModules := {(Initialization.removeInitializationStuff, "removeInitializationStuff", true),
(BackendInline.lateInlineFunction, "lateInlineFunction", false),
(RemoveSimpleEquations.removeSimpleEquations, "removeSimpleEquations", false),
allpostOptModules := {(BackendDAEOptimize.addInitialStmtsToAlgorithms, "addInitialStmtsToAlgorithms", false),
(BackendDAEOptimize.addTimeAsState, "addTimeAsState", false),
(BackendDAEOptimize.addedScaledVars, "addScaledVars", false),
(BackendDAEOptimize.countOperations, "countOperations", false),
(BackendDAEOptimize.removeConstants, "removeConstants", false),
(BackendDAEOptimize.removeEqualFunctionCalls, "removeEqualFunctionCalls", false),
(EvaluateParameter.evaluateFinalParameters, "evaluateFinalParameters", false),
(BackendDAEOptimize.removeUnusedParameter, "removeUnusedParameter", false),
(BackendDAEOptimize.removeUnusedVariables, "removeUnusedVariables", false),
(BackendDAEOptimize.simplifyComplexFunction, "simplifyComplexFunction", false),
(BackendDAEOptimize.simplifyLoops, "simplifyLoops", false),
(BackendDAEOptimize.simplifyTimeIndepFuncCalls, "simplifyTimeIndepFuncCalls", false),
(BackendDAEOptimize.simplifysemiLinear, "simplifysemiLinear", false),
(BackendDAEOptimize.symEuler, "symEuler", false),
(BackendDump.dumpComponentsGraphStr, "dumpComponentsGraphStr", false),
(BackendDump.dumpDAE, "dumpDAE", false),
(BackendInline.lateInlineFunction, "lateInlineFunction", false),
(CommonSubExpression.CSE, "CSE", false),
(DynamicOptimization.reduceDynamicOptimization, "reduceDynamicOptimization", false),
(DynamicOptimization.removeLoops, "extendDynamicOptimization", false),
(DynamicOptimization.simplifyConstraints, "simplifyConstraints", false),
(EvaluateParameter.evaluateEvaluateParameters, "evaluateEvaluateParameters", false),
(EvaluateParameter.evaluateFinalEvaluateParameters, "evaluateFinalEvaluateParameters", false),
(EvaluateParameter.evaluateReplaceFinalParameters, "evaluateReplaceFinalParameters", false),
(EvaluateParameter.evaluateFinalParameters, "evaluateFinalParameters", false),
(EvaluateParameter.evaluateReplaceEvaluateParameters, "evaluateReplaceEvaluateParameters", false),
(EvaluateParameter.evaluateReplaceFinalEvaluateParameters, "evaluateReplaceFinalEvaluateParameters", false),
(EvaluateParameter.evaluateReplaceFinalParameters, "evaluateReplaceFinalParameters", false),
(EvaluateParameter.evaluateReplaceProtectedFinalEvaluateParameters, "evaluateReplaceProtectedFinalEvaluateParameters", false),
(ExpressionSolve.solveSimpleEquations, "solveSimpleEquations", false),
(HpcOmEqSystems.partitionLinearTornSystem, "partlintornsystem", false),
(Initialization.removeInitializationStuff, "removeInitializationStuff", true),
(InlineArrayEquations.inlineArrayEqn, "inlineArrayEqn", false),
(BackendDAEOptimize.removeUnusedParameter, "removeUnusedParameter", false),
(BackendDAEOptimize.removeUnusedVariables, "removeUnusedVariables", false),
(BackendDAEOptimize.symEuler, "symEuler", false),
(SymbolicJacobian.constantLinearSystem, "constantLinearSystem", false),
(OnRelaxation.relaxSystem, "relaxSystem", false),
(BackendDAEOptimize.countOperations, "countOperations", false),
(BackendDAEOptimize.simplifyComplexFunction, "simplifyComplexFunction", false),
(BackendDump.dumpComponentsGraphStr, "dumpComponentsGraphStr", false),
(RemoveSimpleEquations.removeSimpleEquations, "removeSimpleEquations", false),
(ResolveLoops.reshuffling_post, "reshufflePost", false),
(ResolveLoops.solveLinearSystem, "solveLinearSystem", false),
(SymbolicJacobian.calculateStateSetsJacobians, "calculateStateSetsJacobians", false),
(SymbolicJacobian.calculateStrongComponentJacobians, "calculateStrongComponentJacobians", false),
(SymbolicJacobian.constantLinearSystem, "constantLinearSystem", false),
(SymbolicJacobian.detectSparsePatternODE, "detectJacobianSparsePattern", false),
(SymbolicJacobian.generateSymbolicJacobianPast, "generateSymbolicJacobian", false),
(SymbolicJacobian.generateSymbolicLinearizationPast, "generateSymbolicLinearization", false),
(BackendDAEOptimize.simplifyTimeIndepFuncCalls, "simplifyTimeIndepFuncCalls", false),
(SymbolicJacobian.inputDerivativesUsed, "inputDerivativesUsed", false),
(BackendDAEOptimize.simplifysemiLinear, "simplifysemiLinear", false),
(BackendDAEOptimize.removeConstants, "removeConstants", false),
(BackendDAEOptimize.addedScaledVars, "addScaledVars", false),
(ExpressionSolve.solveSimpleEquations, "solveSimpleEquations", false),
(SymbolicJacobian.detectSparsePatternODE, "detectJacobianSparsePattern", false),
(Tearing.tearingSystem, "tearingSystem", false),
(Tearing.recursiveTearing, "recursiveTearing", false),
(DynamicOptimization.removeLoops, "extendDynamicOptimization", false),
(DynamicOptimization.reduceDynamicOptimization, "reduceDynamicOptimization", false),
(DynamicOptimization.simplifyConstraints, "simplifyConstraints", false),
(BackendDAEOptimize.simplifyLoops, "simplifyLoops", false),
(HpcOmEqSystems.partitionLinearTornSystem, "partlintornsystem", false),
(BackendDAEOptimize.addInitialStmtsToAlgorithms, "addInitialStmtsToAlgorithms", false),
(SymbolicJacobian.calculateStrongComponentJacobians, "calculateStrongComponentJacobians", false),
(SymbolicJacobian.calculateStateSetsJacobians, "calculateStateSetsJacobians", false),
(ResolveLoops.reshuffling_post, "reshufflePost", false),
(ResolveLoops.solveLinearSystem, "solveLinearSystem", false),
(CommonSubExpression.CSE, "CSE", false),
(BackendDump.dumpDAE, "dumpDAE", false),
(XMLDump.dumpDAEXML, "dumpDAEXML", false),
(BackendDAEOptimize.addTimeAsState, "addTimeAsState", false)
(Tearing.tearingSystem, "tearingSystem", false),
(XMLDump.dumpDAEXML, "dumpDAEXML", false)
};

strpostOptModules := getPostOptModulesString();
Expand All @@ -7284,17 +7284,17 @@ protected
list<tuple<BackendDAEFunc.postOptimizationDAEModule, String, Boolean/*stopOnFailure*/>> allInitOptModules;
list<String> initOptModules;
algorithm
allInitOptModules := {(SymbolicJacobian.constantLinearSystem, "constantLinearSystem", false),
(BackendDAEOptimize.simplifyComplexFunction, "simplifyComplexFunction", false),
(SymbolicJacobian.inputDerivativesUsed, "inputDerivativesUsed", false),
(ExpressionSolve.solveSimpleEquations, "solveSimpleEquations", false),
(Tearing.tearingSystem, "tearingSystem", false),
(Tearing.recursiveTearing, "recursiveTearing", false),
(DynamicOptimization.removeLoops, "extendDynamicOptimization", false),
allInitOptModules := {(BackendDAEOptimize.simplifyComplexFunction, "simplifyComplexFunction", false),
(BackendDAEOptimize.simplifyLoops, "simplifyLoops", false),
(DynamicOptimization.reduceDynamicOptimization, "reduceDynamicOptimization", false),
(DynamicOptimization.removeLoops, "extendDynamicOptimization", false),
(DynamicOptimization.simplifyConstraints, "simplifyConstraints", false),
(BackendDAEOptimize.simplifyLoops, "simplifyLoops", false),
(SymbolicJacobian.calculateStrongComponentJacobians, "calculateStrongComponentJacobians", false)
(ExpressionSolve.solveSimpleEquations, "solveSimpleEquations", false),
(SymbolicJacobian.calculateStrongComponentJacobians, "calculateStrongComponentJacobians", false),
(SymbolicJacobian.constantLinearSystem, "constantLinearSystem", false),
(SymbolicJacobian.inputDerivativesUsed, "inputDerivativesUsed", false),
(Tearing.recursiveTearing, "recursiveTearing", false),
(Tearing.tearingSystem, "tearingSystem", false)
};

initOptModules := Config.getInitOptModules();
Expand Down
17 changes: 3 additions & 14 deletions Compiler/SimCode/SimCodeUtil.mo
Expand Up @@ -169,7 +169,6 @@ public function createSimCode "entry point to create SimCode from BackendDAE."
output tuple<Integer, list<tuple<Integer, Integer>>> outMapping "the highest simEqIndex in the mapping and the mapping simEq-Index -> scc-Index itself";
protected
BackendDAE.BackendDAE dlow;
BackendDAE.BackendDAE initDAE;
BackendDAE.EquationArray removedEqs;
BackendDAE.EventInfo eventInfo;
BackendDAE.Shared shared;
Expand Down Expand Up @@ -223,7 +222,6 @@ protected
algorithm
try
dlow := inBackendDAE;
initDAE := inInitDAE;

System.tmpTickReset(0);
uniqueEqIndex := 1;
Expand All @@ -243,33 +241,24 @@ algorithm
BackendDAEOptimize.listAllIterationVariables(dlow);
end if;

// replace pre(alias) in time-equations
dlow := BackendDAEOptimize.simplifyTimeIndepFuncCalls(dlow);

// initialization stuff
(initialEquations, removedInitialEquations, uniqueEqIndex, tempvars) := createInitialEquations(initDAE, inRemovedInitialEquationLst, uniqueEqIndex, {});

// addInitialStmtsToAlgorithms
dlow := BackendDAEOptimize.addInitialStmtsToAlgorithms(dlow);
(initialEquations, removedInitialEquations, uniqueEqIndex, tempvars) := createInitialEquations(inInitDAE, inRemovedInitialEquationLst, uniqueEqIndex, {});

shared as BackendDAE.SHARED(knownVars=knownVars,
constraints=constraints,
classAttrs=classAttributes,
symjacs=symJacs,
eventInfo=eventInfo) := dlow.shared;


removedEqs := BackendDAEUtil.collapseRemovedEqs(dlow);

// created event suff e.g. zeroCrossings, samples, ...
// created event suff e.g. zeroCrossings, samples, ...
timeEvents := eventInfo.timeEvents;
zeroCrossings := if ifcpp then eventInfo.relationsLst else eventInfo.zeroCrossingLst;
relations := eventInfo.relationsLst;
sampleZC := eventInfo.sampleLst;
zeroCrossings := if ifcpp then listAppend(zeroCrossings, sampleZC) else zeroCrossings;

// equation generation for euler, dassl2, rungekutta

(clockedSysts, contSysts) := List.splitOnTrue(dlow.eqs, BackendDAEUtil.isClockedSyst);

(uniqueEqIndex, odeEquations, algebraicEquations, allEquations, equationsForZeroCrossings, tempvars,
Expand Down Expand Up @@ -315,7 +304,7 @@ algorithm
dlow := BackendDAEUtil.mapEqSystem(dlow, Vectorization.enlargeIteratedArrayVars);
end if;

modelInfo := createModelInfo(inClassName, dlow, initDAE, functions, {}, numStateSets, inFileDir, listLength(clockedSysts));
modelInfo := createModelInfo(inClassName, dlow, inInitDAE, functions, {}, numStateSets, inFileDir, listLength(clockedSysts));
modelInfo := addTempVars(tempvars, modelInfo);

// external objects
Expand Down
9 changes: 3 additions & 6 deletions Compiler/Util/Flags.mo
Expand Up @@ -680,14 +680,12 @@ constant ConfigFlag PRE_OPT_MODULES = CONFIG_FLAG(12, "preOptModules",
"inlineArrayEqn",
"removeSimpleEquations",
"comSubExp",
// "addInitialStmtsToAlgorithms",
"resolveLoops",
"evalFunc",
"sortEqnsVars",
"encapsulateWhenConditions"
}),
SOME(STRING_DESC_OPTION({
("addInitialStmtsToAlgorithms", Util.gettext("Expands all algorithms with initial statements for outputs.")),
("clockPartitioning", Util.gettext("Does the clock partitioning.")),
("comSubExp", Util.gettext("replaces common sub expressions")),
("CSE_EachCall", Util.gettext("Common Function Call Elimination")),
Expand Down Expand Up @@ -794,10 +792,9 @@ constant ConfigFlag POST_OPT_MODULES = CONFIG_FLAG(16, "postOptModules",
"detectJacobianSparsePattern",
"generateSymbolicJacobian",
"generateSymbolicLinearization",
"removeConstants"
//"solveSimpleEquations",
//"partitionIndependentBlocks",
//"addInitialStmtsToAlgorithms",
"removeConstants",
"simplifyTimeIndepFuncCalls",
"addInitialStmtsToAlgorithms"
}),
SOME(STRING_DESC_OPTION({
("addInitialStmtsToAlgorithms", Util.gettext("Expands all algorithms with initial statements for outputs.")),
Expand Down

0 comments on commit a59dc08

Please sign in to comment.