Skip to content

Commit

Permalink
- make BackendVariable.vararrayNth protected use BackendVariable.getV…
Browse files Browse the repository at this point in the history
…arAt

- add LOG_DEBUG Info to callExternalObjectConstructors
- continue new Remove Simple Equations 

git-svn-id: https://openmodelica.org/svn/OpenModelica/trunk@14282 f25d12d1-65f4-0310-ae8a-bbce733d8d8e
  • Loading branch information
Jens Frenkel committed Dec 7, 2012
1 parent 5a5d4c6 commit a81cba1
Show file tree
Hide file tree
Showing 4 changed files with 769 additions and 124 deletions.
22 changes: 10 additions & 12 deletions Compiler/BackEnd/BackendDAEOptimize.mo
Original file line number Diff line number Diff line change
Expand Up @@ -6073,12 +6073,11 @@ algorithm
DAE.ComponentRef cr;
list<DAE.ComponentRef> crlst;
BackendDAE.Variables ordvars;
BackendDAE.VariableArray varr;
case (m,v1,v2,{},dlow) then ({},{});
case (m,v1,v2,c::comp,dlow as BackendDAE.DAE(eqs=BackendDAE.EQSYSTEM(orderedVars = ordvars as BackendDAE.VARIABLES(varArr=varr))::{}))
case (m,v1,v2,c::comp,dlow as BackendDAE.DAE(eqs=BackendDAE.EQSYSTEM(orderedVars = ordvars)::{}))
equation
v = v2[c];
BackendDAE.VAR(varName = cr) = BackendVariable.vararrayNth(varr, v-1);
BackendDAE.VAR(varName = cr) = BackendVariable.getVarAt(ordvars, v);
(varlst,crlst) = getTearingVars(m,v1,v2,comp,dlow);
then
(v::varlst,cr::crlst);
Expand Down Expand Up @@ -6218,7 +6217,6 @@ algorithm
list<Integer> residualeqns,residualeqns_1,tearingvars,tearingvars_1,tearingeqns,tearingeqns_1;
DAE.ComponentRef cr,crt;
list<DAE.ComponentRef> crlst;
BackendDAE.VariableArray varr;

BackendDAE.Variables ordvars,vars_1,ordvars1;
BackendDAE.EquationArray eqns, eqns_1, eqns_2,eqns1,eqns1_1;
Expand All @@ -6245,13 +6243,13 @@ algorithm
true = residualeqn > 0;
// copy dlow
dlowc = BackendDAEUtil.copyBackendDAE(dlow);
BackendDAE.DAE(BackendDAE.EQSYSTEM(ordvars as BackendDAE.VARIABLES(varArr=varr),eqns,_,_,_)::{},shared) = dlowc;
BackendDAE.DAE(BackendDAE.EQSYSTEM(ordvars,eqns,_,_,_)::{},shared) = dlowc;
BackendDAE.EQUATION_ARRAY(_,_,_,equOptArr) = eqns;
dlowc1 = BackendDAEUtil.copyBackendDAE(dlow1);
BackendDAE.DAE(eqs = BackendDAE.EQSYSTEM(ordvars1,eqns1,_,_,_)::{}) = dlowc1;
BackendDAE.EQUATION_ARRAY(_,_,_,equOptArr1) = eqns1;
// add Tearing Var
var = BackendVariable.vararrayNth(varr, tearingvar-1);
var = BackendVariable.getVarAt(ordvars, tearingvar);
cr = BackendVariable.varCref(var);
crt = ComponentReference.prependStringCref("tearingresidual_",cr);
vars_1 = BackendVariable.addVar(BackendDAE.VAR(crt, BackendDAE.VARIABLE(),DAE.BIDIR(),DAE.NON_PARALLEL(),DAE.T_REAL_DEFAULT,NONE(),NONE(),{},DAE.emptyElementSource,
Expand Down Expand Up @@ -6310,11 +6308,11 @@ algorithm
true = residualeqn > 0;
// copy dlow
dlowc = BackendDAEUtil.copyBackendDAE(dlow);
BackendDAE.DAE(BackendDAE.EQSYSTEM(ordvars as BackendDAE.VARIABLES(varArr=varr),eqns,_,_,_)::{},shared) = dlowc;
BackendDAE.DAE(BackendDAE.EQSYSTEM(ordvars,eqns,_,_,_)::{},shared) = dlowc;
dlowc1 = BackendDAEUtil.copyBackendDAE(dlow1);
BackendDAE.DAE(eqs = BackendDAE.EQSYSTEM(ordvars1,eqns1,_,_,_)::{}) = dlowc1;
// add Tearing Var
var = BackendVariable.vararrayNth(varr, tearingvar-1);
var = BackendVariable.getVarAt(ordvars, tearingvar);
cr = BackendVariable.varCref(var);
crt = ComponentReference.prependStringCref("tearingresidual_",cr);
vars_1 = BackendVariable.addVar(BackendDAE.VAR(crt, BackendDAE.VARIABLE(),DAE.BIDIR(),DAE.NON_PARALLEL(),DAE.T_REAL_DEFAULT,NONE(),NONE(),{},DAE.emptyElementSource,
Expand Down Expand Up @@ -6365,7 +6363,7 @@ algorithm
comp_2 = List.select1(cmops_flat,listMember,comp);
then
(residualeqns_1,tearingvars_1,tearingeqns_1,dlow_3,dlow1_2,m_3,mT_3,v1_2,v2_2,comp_2);
case (dlow as BackendDAE.DAE(eqs=BackendDAE.EQSYSTEM(orderedVars = BackendDAE.VARIABLES(varArr=varr))::{}),dlow1,m,mT,v1,v2,comp,eqs,exclude,tearingvar,residualeqns,tearingvars,tearingeqns,crlst)
case (dlow,dlow1,m,mT,v1,v2,comp,eqs,exclude,tearingvar,residualeqns,tearingvars,tearingeqns,crlst)
equation
true = (listLength(residualeqns)<>0); //there exist alreay chosen residual equations
tupl = residualEquation(m,mT,eqs,comp,0.0,0,exclude,tearingvar);
Expand All @@ -6376,7 +6374,7 @@ algorithm
(residualeqns_1,tearingvars_1,tearingeqns_1,dlow_1,dlow1_1,m_1,mT_1,v1_1,v2_1,comp_1) = tearingSystem3(dlow,dlow1,m,mT,v1,v2,comp,eqs,residualeqn::exclude,tearingvar,residualeqns,tearingvars,tearingeqns,crlst);
then
(residualeqns_1,tearingvars_1,tearingeqns_1,dlow_1,dlow1_1,m_1,mT_1,v1_1,v2_1,comp_1);
case (dlow as BackendDAE.DAE(eqs=BackendDAE.EQSYSTEM(orderedVars = BackendDAE.VARIABLES(varArr=varr))::{}),dlow1,m,mT,v1,v2,comp,eqs,exclude,tearingvar,residualeqns,tearingvars,tearingeqns,crlst)
case (dlow,dlow1,m,mT,v1,v2,comp,eqs,exclude,tearingvar,residualeqns,tearingvars,tearingeqns,crlst)
equation
true = (listLength(residualeqns)==0); //until now no residual equations have been used
tupl = residualEquation(m,mT,eqs,comp,0.0,0,exclude,tearingvar);
Expand All @@ -6387,7 +6385,7 @@ algorithm
(residualeqns_1,tearingvars_1,tearingeqns_1,dlow_1,dlow1_1,m_1,mT_1,v1_1,v2_1,comp_1) = tearingSystem3(dlow,dlow1,m,mT,v1,v2,comp,eqs,residualeqn::exclude,residualeqn,residualeqns,tearingvars,tearingeqns,crlst);
then
(residualeqns_1,tearingvars_1,tearingeqns_1,dlow_1,dlow1_1,m_1,mT_1,v1_1,v2_1,comp_1);
case (dlow as BackendDAE.DAE(eqs=BackendDAE.EQSYSTEM(orderedVars = BackendDAE.VARIABLES(varArr=varr))::{}),dlow1,m,mT,v1,v2,comp,eqs,exclude,tearingvar,residualeqns,tearingvars,tearingeqns,_)
case (dlow,dlow1,m,mT,v1,v2,comp,eqs,exclude,tearingvar,residualeqns,tearingvars,tearingeqns,_)
equation
true = (listLength(residualeqns)<>0); //there exist alreay chosen residual equations
tupl = residualEquation(m,mT,eqs,comp,0.0,0,exclude,tearingvar);
Expand All @@ -6398,7 +6396,7 @@ algorithm
Debug.fcall(Flags.TEARING_DUMP, print, "Select Tearing BackendDAE.Var failed\n");
then
fail();
case (dlow as BackendDAE.DAE(eqs=BackendDAE.EQSYSTEM(orderedVars = BackendDAE.VARIABLES(varArr=varr))::{}),dlow1,m,mT,v1,v2,comp,eqs,exclude,tearingvar,residualeqns,tearingvars,tearingeqns,_)
case (dlow,dlow1,m,mT,v1,v2,comp,eqs,exclude,tearingvar,residualeqns,tearingvars,tearingeqns,_)
equation
true = (listLength(residualeqns)==0); //until now no residual equations have been used
tupl = residualEquation(m,mT,eqs,comp,0.0,0,exclude,tearingvar);
Expand Down
30 changes: 22 additions & 8 deletions Compiler/BackEnd/BackendVariable.mo
Original file line number Diff line number Diff line change
Expand Up @@ -2308,7 +2308,7 @@ algorithm
end matchcontinue;
end vararraySetnth;

public function vararrayNth
protected function vararrayNth
"function: vararrayNth
author: PA
Retrieve the n:th BackendDAE.Var from BackendDAE.VariableArray, index from 0..n-1.
Expand All @@ -2333,7 +2333,7 @@ algorithm
equation
(pos < n) = true;
NONE() = arr[pos + 1];
print("- vararrayNth has NONE!!!\n");
print("- vararrayNth " +& intString(pos +1 ) +& " has NONE!!!\n");
then
fail();
end matchcontinue;
Expand Down Expand Up @@ -3169,24 +3169,38 @@ public function getVarAt
algorithm
outVar := matchcontinue (inVariables,inInteger)
local
Integer pos,n;
Integer pos;
BackendDAE.Var v;
BackendDAE.VariableArray vararr;
case (BackendDAE.VARIABLES(varArr = vararr),n)
case (BackendDAE.VARIABLES(varArr = vararr),_)
equation
pos = n - 1;
pos = inInteger - 1;
v = vararrayNth(vararr, pos);
then
v;
case (BackendDAE.VARIABLES(varArr = vararr),n)
case (BackendDAE.VARIABLES(varArr = vararr),_)
equation
true = Flags.isSet(Flags.FAILTRACE);
Debug.fprintln(Flags.FAILTRACE, "getVarAt failed to get the variable at index:" +& intString(n));
Debug.fprintln(Flags.FAILTRACE, "getVarAt failed to get the variable at index:" +& intString(inInteger));
then
fail();
end matchcontinue;
end getVarAt;

public function getVarSharedAt
"function: getVarSharedAt
author: Frenkel TUD 2012-12
return a Variable."
input Integer inInteger;
input BackendDAE.Shared shared;
output BackendDAE.Var outVar;
protected
BackendDAE.Variables vars;
algorithm
BackendDAE.SHARED(knownVars=vars) := shared;
outVar := getVarAt(vars,inInteger);
end getVarSharedAt;

public function getVarDAE
"function: getVarDAE
author: Frenkel TUD 2012-05
Expand Down Expand Up @@ -4112,7 +4126,7 @@ algorithm
end matchcontinue;
end getNonZeroStart;

protected function startOriginToValue
public function startOriginToValue
input Option<DAE.Exp> startOrigin;
output Integer i;
algorithm
Expand Down

0 comments on commit a81cba1

Please sign in to comment.