Skip to content

Commit

Permalink
./configure
Browse files Browse the repository at this point in the history
  - add ipopt configuration (usage: --with-ipopt=DIR)
./Compiler/BackEnd
  - add symbolic generation of jacobian for initialization (usage: +d=symbolicInitialization)
  - reorganize initialization code (move from SimCode to BackendDAEOptimize)
./Compiler/Template
  - generate unique jacobian indices
./Compiler/Util
  - add debug-flag symbolicInitialization
./SimulationRuntime/c
  - add initialization-method ipopt using ipopt (usage: -iom ipopt)


git-svn-id: https://openmodelica.org/svn/OpenModelica/trunk@12333 f25d12d1-65f4-0310-ae8a-bbce733d8d8e
  • Loading branch information
lochel committed Jul 18, 2012
1 parent 87f08c2 commit cf71646
Show file tree
Hide file tree
Showing 17 changed files with 1,641 additions and 675 deletions.
801 changes: 507 additions & 294 deletions Compiler/BackEnd/BackendDAEOptimize.mo

Large diffs are not rendered by default.

23 changes: 23 additions & 0 deletions Compiler/BackEnd/BackendDAEUtil.mo
Expand Up @@ -792,6 +792,29 @@ algorithm
end match;
end addBackendDAEKnVars;

public function addBackendDAEEqSystem "function addBackendDAEEqSystem
autor: lochel
This function adds a EqSystem to BackendDAE."
input BackendDAE.BackendDAE inDAE;
input BackendDAE.EqSystem inAddEqSystem;
output BackendDAE.BackendDAE outDAE;
algorithm
outDAE := match(inDAE, inAddEqSystem)
local
list<BackendDAE.EqSystem> eqs;
BackendDAE.Shared shared;
BackendDAE.EqSystem addEqSystem;

case(BackendDAE.DAE(eqs=eqs, shared=shared), addEqSystem) equation
eqs = listAppend(eqs, {addEqSystem});
then(BackendDAE.DAE(eqs, shared));

else equation
Error.addMessage(Error.INTERNAL_ERROR, {"./Compiler/BackEnd/BackendDAEUtil.mo: function addBackendDAEEqSystem failed"});
then fail();
end match;
end addBackendDAEEqSystem;

public function addBackendDAEFunctionTree
" function: addBackendDAEFunctionTree
That function replace the FunctionTree in BackendDAE.
Expand Down
194 changes: 103 additions & 91 deletions Compiler/BackEnd/BackendDump.mo
Expand Up @@ -377,7 +377,7 @@ public function dumpBackendDAEEqnList
input String header;
input Boolean printExpTree;
algorithm
print(header);
print(header +& "\n");
dumpBackendDAEEqnList2(inBackendDAEEqnList,printExpTree);
print("===================\n");
end dumpBackendDAEEqnList;
Expand All @@ -397,99 +397,111 @@ algorithm
DAE.ElementSource source;
DAE.Algorithm alg;

case ({},_) then ();
case (BackendDAE.EQUATION(e1,e2,source)::res,printExpTree) /* header */
equation
dumpBackendDAEEqnList2(res,printExpTree);
print("EQUATION: ");
str = ExpressionDump.printExpStr(e1);
print(str);
print("\n");
str = ExpressionDump.dumpExpStr(e1,0);
str = Util.if_(printExpTree,str,"");
print(str);
print("\n");
then
();
case (BackendDAE.COMPLEX_EQUATION(left=e1,right=e2,source=source)::res,printExpTree) /* header */
equation
dumpBackendDAEEqnList2(res,printExpTree);
print("COMPLEX_EQUATION: ");
str = ExpressionDump.printExpStr(e1);
print(str);
print("\n");
str = ExpressionDump.dumpExpStr(e1,0);
str = Util.if_(printExpTree,str,"");
print(str);
print("\n");
then
();
case (BackendDAE.SOLVED_EQUATION(_,e,source)::res,printExpTree)
equation
dumpBackendDAEEqnList2(res,printExpTree);
print("SOLVED_EQUATION: ");
str = ExpressionDump.printExpStr(e);
print(str);
print("\n");
str = ExpressionDump.dumpExpStr(e,0);
str = Util.if_(printExpTree,str,"");
print(str);
print("\n");
then
();
case (BackendDAE.RESIDUAL_EQUATION(e,source)::res,printExpTree)
equation
dumpBackendDAEEqnList2(res,printExpTree);
print("RESIDUAL_EQUATION: ");
str = ExpressionDump.printExpStr(e);
print(str);
print("\n");
str = ExpressionDump.dumpExpStr(e,0);
str = Util.if_(printExpTree,str,"");
print(str);
print("\n");
then
();
case (BackendDAE.ARRAY_EQUATION(left=e1,right=e2,source=source)::res,printExpTree)
equation
dumpBackendDAEEqnList2(res,printExpTree);
print("ARRAY_EQUATION: ");
str = ExpressionDump.printExpStr(e1);
print(str);
print("\n");
str = ExpressionDump.dumpExpStr(e1,0);
str = Util.if_(printExpTree,str,"");
print(str);
print("\n");
then
();
case (BackendDAE.ALGORITHM(alg=alg,source=source)::res,printExpTree)
equation
dumpBackendDAEEqnList2(res,printExpTree);
print("ALGORITHM: ");
dumpAlgorithms({alg},0);
print("\n");
then
();
case (BackendDAE.WHEN_EQUATION(whenEquation=BackendDAE.WHEN_EQ(right=e/*TODO handle elsewhe also*/),source=source)::res,printExpTree)
equation
dumpBackendDAEEqnList2(res,printExpTree);
print("WHEN_EQUATION: ");
str = ExpressionDump.printExpStr(e);
print(str);
print("\n");
str = ExpressionDump.dumpExpStr(e,0);
str = Util.if_(printExpTree,str,"");
print(str);
print("\n");
then
();
case (_::res,printExpTree)
equation
then ();
case ({}, _) then ();
case (BackendDAE.EQUATION(e1, e2, source)::res, printExpTree) equation /*done*/
str = "EQUATION: ";
str = str +& ExpressionDump.printExpStr(e1);
str = str +& " = ";
str = str +& ExpressionDump.printExpStr(e2);
str = str +& "\n";
print(str);

str = "LHS:\n";
str = str +& ExpressionDump.dumpExpStr(e1, 0);
str = str +& "RHS:\n";
str = str +& ExpressionDump.dumpExpStr(e2, 0);
str = str +& "\n";
str = Util.if_(printExpTree, str, "");
print(str);

dumpBackendDAEEqnList2(res, printExpTree);
then ();
case (BackendDAE.COMPLEX_EQUATION(left=e1, right=e2, source=source)::res, printExpTree) equation /*done*/
str = "COMPLEX_EQUATION: ";
str = str +& ExpressionDump.printExpStr(e1);
str = str +& " = ";
str = str +& ExpressionDump.printExpStr(e2);
str = str +& "\n";
print(str);

str = "LHS:\n";
str = str +& ExpressionDump.dumpExpStr(e1, 0);
str = str +& "RHS:\n";
str = str +& ExpressionDump.dumpExpStr(e2, 0);
str = str +& "\n";
str = Util.if_(printExpTree, str, "");
print(str);

dumpBackendDAEEqnList2(res,printExpTree);
then ();
case (BackendDAE.SOLVED_EQUATION(_, e, source)::res,printExpTree) equation
print("SOLVED_EQUATION: ");
str = ExpressionDump.printExpStr(e);
print(str);
print("\n");
str = ExpressionDump.dumpExpStr(e,0);
str = Util.if_(printExpTree,str,"");
print(str);
print("\n");
dumpBackendDAEEqnList2(res,printExpTree);
then ();
case (BackendDAE.RESIDUAL_EQUATION(e, source)::res, printExpTree) equation /*done*/
str = "RESIDUAL_EQUATION: ";
str = str +& ExpressionDump.printExpStr(e);
str = str +& "\n";
print(str);

str = ExpressionDump.dumpExpStr(e, 0);
str = str +& "\n";
str = Util.if_(printExpTree, str, "");
print(str);

dumpBackendDAEEqnList2(res, printExpTree);
then ();
case (BackendDAE.ARRAY_EQUATION(left=e1,right=e2,source=source)::res,printExpTree) equation
print("ARRAY_EQUATION: ");
str = ExpressionDump.printExpStr(e1);
print(str);
print("\n");
str = ExpressionDump.dumpExpStr(e1,0);
str = Util.if_(printExpTree,str,"");
print(str);
print("\n");
dumpBackendDAEEqnList2(res,printExpTree);
then ();
case (BackendDAE.ALGORITHM(alg=alg,source=source)::res,printExpTree) equation
print("ALGORITHM: ");
dumpAlgorithms({alg},0);
print("\n");
dumpBackendDAEEqnList2(res,printExpTree);
then ();
case (BackendDAE.WHEN_EQUATION(whenEquation=BackendDAE.WHEN_EQ(right=e/*TODO handle elsewhe also*/),source=source)::res, printExpTree) equation
print("WHEN_EQUATION: ");
str = ExpressionDump.printExpStr(e);
print(str);
print("\n");
str = ExpressionDump.dumpExpStr(e,0);
str = Util.if_(printExpTree,str,"");
print(str);
print("\n");
dumpBackendDAEEqnList2(res,printExpTree);
then ();
case (_::res, printExpTree) equation
print("SKIPED EQUATION\n");
dumpBackendDAEEqnList2(res, printExpTree);
then ();
end matchcontinue;
end dumpBackendDAEEqnList2;

public function dumpBackendDAEVarList
input list<BackendDAE.Var> inBackendDAEVarList;
input String header;
algorithm
print(header +& "\n");
dumpVars(inBackendDAEVarList);
print("===================\n");
end dumpBackendDAEVarList;

public function dumpZcStr1 ""
input list<BackendDAE.ZeroCrossing> zero_crossings;
output String outString;
Expand Down

0 comments on commit cf71646

Please sign in to comment.