@@ -639,7 +639,7 @@ algorithm
639
639
EqSystems eqns;
640
640
BackendDAE . Shared shared ,shared1;
641
641
BackendDAE . BackendDAE bDAE;
642
- case (bDAE as BackendDAE . DAE (shared = shared ))
642
+ case (bDAE as BackendDAE . DAE (eqs = eqns, shared = shared ))
643
643
equation
644
644
BackendDAE . DAE (eqs= eqns) = mapEqSystem(bDAE, copyBackendDAEEqSystem);
645
645
shared1 = copyBackendDAEShared(shared );
@@ -893,6 +893,7 @@ algorithm
893
893
Variables vars, knvars, extVars;
894
894
AliasVariables av;
895
895
EquationArray eqns,seqns,ieqns;
896
+ BackendDAE . BackendDAE trans_dae;
896
897
ExternalObjectClasses extObjCls;
897
898
Option < BackendDAE . IncidenceMatrix > m,mT;
898
899
BackendDAEType btp;
@@ -2541,6 +2542,7 @@ algorithm
2541
2542
BackendDAE . Value size;
2542
2543
array< BackendDAE . Value > arr,arr_1;
2543
2544
BackendDAE . StrongComponents comps,blt_states,blt_no_states;
2545
+ BackendDAE . BackendDAE dae;
2544
2546
Variables v,kv;
2545
2547
EquationArray e,se,ie;
2546
2548
array< BackendDAE . MultiDimEquation > ae;
@@ -2658,6 +2660,7 @@ algorithm
2658
2660
matchcontinue (syst,inIntegerArray2,inIntegerArray5,inIntegerArray6)
2659
2661
local
2660
2662
list< Var > statevar_lst;
2663
+ BackendDAE . BackendDAE dae;
2661
2664
array< BackendDAE . Value > arr_1,arr;
2662
2665
array< list< BackendDAE . Value >> m,mt;
2663
2666
array< BackendDAE . Value > a1,a2;
@@ -4718,6 +4721,7 @@ public function updateIncidenceMatrix
4718
4721
algorithm
4719
4722
osyst := matchcontinue (syst,shared ,inIntegerLst)
4720
4723
local
4724
+ BackendDAE . BackendDAE dae;
4721
4725
BackendDAE . IncidenceMatrix m,m_1,m_2;
4722
4726
BackendDAE . IncidenceMatrixT mt,mt_1,mt_2,mt_3;
4723
4727
BackendDAE . Value e_1,e,abse;
@@ -4758,6 +4762,7 @@ algorithm
4758
4762
(outIncidenceMatrix,outIncidenceMatrixT):=
4759
4763
matchcontinue (vars,daeeqns,wc,inIncidenceMatrix,inIncidenceMatrixT,inIntegerLst)
4760
4764
local
4765
+ BackendDAE . BackendDAE dae;
4761
4766
BackendDAE . IncidenceMatrix m,m_1,m_2;
4762
4767
BackendDAE . IncidenceMatrixT mt,mt_1,mt_2,mt_3;
4763
4768
BackendDAE . Value e_1,e,abse;
@@ -6054,6 +6059,7 @@ algorithm
6054
6059
outJacobianType:=
6055
6060
matchcontinue (inBackendDAE,inTplIntegerIntegerEquationLstOption)
6056
6061
local
6062
+ BackendDAE . BackendDAE daelow;
6057
6063
Variables vars;
6058
6064
array< BackendDAE . MultiDimEquation > arreqn;
6059
6065
list< tuple< BackendDAE . Value , BackendDAE . Value , BackendDAE . Equation >> jac;
@@ -6084,6 +6090,7 @@ algorithm
6084
6090
matchcontinue (inBackendDAE)
6085
6091
local
6086
6092
Boolean res;
6093
+ BackendDAE . BackendDAE dae;
6087
6094
EquationArray eqns;
6088
6095
BackendDAE . Variables vars;
6089
6096
array< BackendDAE . MultiDimEquation > arreqn;
@@ -6111,6 +6118,7 @@ algorithm
6111
6118
DAE . Exp new_exp,rhs_exp,e1,e2,e;
6112
6119
Boolean b,res;
6113
6120
BackendDAE . Equation eqn;
6121
+ BackendDAE . BackendDAE dae;
6114
6122
Variables vars;
6115
6123
BackendDAE . Value indx;
6116
6124
array< BackendDAE . MultiDimEquation > arreqn;
@@ -6906,58 +6914,58 @@ author: Peter Aronsson (paronsson@wolfram.com)
6906
6914
output Option < DAE . VariableAttributes > outAttr;
6907
6915
output ExtraArgType outExtraArg;
6908
6916
algorithm
6909
- (outAttr,outExtraArg) := matchcontinue(attr,func ,iextraArg )
6917
+ (outAttr,outExtraArg) := matchcontinue(attr,func ,extraArg )
6910
6918
local Option < DAE . Exp > q,u,du,min,max,i,f,n,eqbound;
6911
6919
Option < DAE . StateSelect > ss;
6912
6920
Option < DAE . Uncertainty > unc;
6913
6921
Option < DAE . Distribution > dist;
6914
6922
Option < Boolean > p,fin;
6915
6923
ExtraArgType extraArg;
6916
- case (NONE (),_,_) then (NONE (),iextraArg );
6924
+ case (NONE (),_,_) then (NONE (),extraArg );
6917
6925
case (SOME (DAE . VAR_ATTR_REAL (q,u,du,(min,max),i,f,n,ss,unc,dist,eqbound,p,fin)),func ,extraArg) equation
6918
- ((q,extraArg )) = Expression . traverseExpOpt(q,func ,iextraArg );
6919
- ((u,extraArg )) = Expression . traverseExpOpt(u,func ,extraArg );
6920
- ((du,extraArg )) = Expression . traverseExpOpt(du,func ,extraArg );
6921
- ((min,extraArg )) = Expression . traverseExpOpt(min,func ,extraArg );
6922
- ((max,extraArg )) = Expression . traverseExpOpt(max,func ,extraArg );
6923
- ((i,extraArg )) = Expression . traverseExpOpt(i,func ,extraArg );
6924
- ((f,extraArg )) = Expression . traverseExpOpt(f,func ,extraArg );
6925
- ((n,extraArg )) = Expression . traverseExpOpt(n,func ,extraArg );
6926
- ((eqbound,extraArg )) = Expression . traverseExpOpt(eqbound,func ,extraArg );
6927
- (dist,extraArg ) = traverseBackendDAEAttrDistribution(dist,func ,extraArg );
6928
- then (SOME (DAE . VAR_ATTR_REAL (q,u,du,(min,max),i,f,n,ss,unc,dist,eqbound,p,fin)),extraArg );
6926
+ ((q,outExtraArg )) = Expression . traverseExpOpt(q,func ,extraArg );
6927
+ ((u,outExtraArg )) = Expression . traverseExpOpt(u,func ,outExtraArg );
6928
+ ((du,outExtraArg )) = Expression . traverseExpOpt(du,func ,outExtraArg );
6929
+ ((min,outExtraArg )) = Expression . traverseExpOpt(min,func ,outExtraArg );
6930
+ ((max,outExtraArg )) = Expression . traverseExpOpt(max,func ,outExtraArg );
6931
+ ((i,outExtraArg )) = Expression . traverseExpOpt(i,func ,outExtraArg );
6932
+ ((f,outExtraArg )) = Expression . traverseExpOpt(f,func ,outExtraArg );
6933
+ ((n,outExtraArg )) = Expression . traverseExpOpt(n,func ,outExtraArg );
6934
+ ((eqbound,outExtraArg )) = Expression . traverseExpOpt(eqbound,func ,outExtraArg );
6935
+ (dist,outExtraArg ) = traverseBackendDAEAttrDistribution(dist,func ,outExtraArg );
6936
+ then (SOME (DAE . VAR_ATTR_REAL (q,u,du,(min,max),i,f,n,ss,unc,dist,eqbound,p,fin)),outExtraArg );
6929
6937
6930
- case (SOME (DAE . VAR_ATTR_INT (q,(min,max),i,f,unc,dist,eqbound,p,fin)),_,_ ) equation
6931
- ((q,extraArg )) = Expression . traverseExpOpt(q,func ,iextraArg );
6932
- ((min,extraArg )) = Expression . traverseExpOpt(min,func ,extraArg );
6933
- ((max,extraArg )) = Expression . traverseExpOpt(max,func ,extraArg );
6934
- ((i,extraArg )) = Expression . traverseExpOpt(i,func ,extraArg );
6935
- ((f,extraArg )) = Expression . traverseExpOpt(f,func ,extraArg );
6936
- ((eqbound,extraArg )) = Expression . traverseExpOpt(eqbound,func ,extraArg );
6937
- (dist,extraArg ) = traverseBackendDAEAttrDistribution(dist,func ,extraArg );
6938
- then (SOME (DAE . VAR_ATTR_INT (q,(min,max),i,f,unc,dist,eqbound,p,fin)),extraArg );
6938
+ case (SOME (DAE . VAR_ATTR_INT (q,(min,max),i,f,unc,dist,eqbound,p,fin)),func ,extraArg ) equation
6939
+ ((q,outExtraArg )) = Expression . traverseExpOpt(q,func ,extraArg );
6940
+ ((min,outExtraArg )) = Expression . traverseExpOpt(min,func ,outExtraArg );
6941
+ ((max,outExtraArg )) = Expression . traverseExpOpt(max,func ,outExtraArg );
6942
+ ((i,outExtraArg )) = Expression . traverseExpOpt(i,func ,outExtraArg );
6943
+ ((f,outExtraArg )) = Expression . traverseExpOpt(f,func ,outExtraArg );
6944
+ ((eqbound,outExtraArg )) = Expression . traverseExpOpt(eqbound,func ,outExtraArg );
6945
+ (dist,outExtraArg ) = traverseBackendDAEAttrDistribution(dist,func ,outExtraArg );
6946
+ then (SOME (DAE . VAR_ATTR_INT (q,(min,max),i,f,unc,dist,eqbound,p,fin)),outExtraArg );
6939
6947
6940
- case (SOME (DAE . VAR_ATTR_BOOL (q,i,f,eqbound,p,fin)),_,_ ) equation
6941
- ((q,extraArg )) = Expression . traverseExpOpt(q,func ,iextraArg );
6942
- ((i,extraArg )) = Expression . traverseExpOpt(i,func ,extraArg );
6943
- ((f,extraArg )) = Expression . traverseExpOpt(f,func ,extraArg );
6944
- ((eqbound,extraArg )) = Expression . traverseExpOpt(eqbound,func ,extraArg );
6945
- then (SOME (DAE . VAR_ATTR_BOOL (q,i,f,eqbound,p,fin)),extraArg );
6948
+ case (SOME (DAE . VAR_ATTR_BOOL (q,i,f,eqbound,p,fin)),func ,extraArg ) equation
6949
+ ((q,outExtraArg )) = Expression . traverseExpOpt(q,func ,extraArg );
6950
+ ((i,outExtraArg )) = Expression . traverseExpOpt(i,func ,outExtraArg );
6951
+ ((f,outExtraArg )) = Expression . traverseExpOpt(f,func ,outExtraArg );
6952
+ ((eqbound,outExtraArg )) = Expression . traverseExpOpt(eqbound,func ,outExtraArg );
6953
+ then (SOME (DAE . VAR_ATTR_BOOL (q,i,f,eqbound,p,fin)),outExtraArg );
6946
6954
6947
- case (SOME (DAE . VAR_ATTR_STRING (q,i,eqbound,p,fin)),_,_ ) equation
6948
- ((q,extraArg )) = Expression . traverseExpOpt(q,func ,iextraArg );
6949
- ((i,extraArg )) = Expression . traverseExpOpt(i,func ,extraArg );
6950
- ((eqbound,extraArg )) = Expression . traverseExpOpt(eqbound,func ,extraArg );
6951
- then (SOME (DAE . VAR_ATTR_STRING (q,i,eqbound,p,fin)),extraArg );
6955
+ case (SOME (DAE . VAR_ATTR_STRING (q,i,eqbound,p,fin)),func ,extraArg ) equation
6956
+ ((q,outExtraArg )) = Expression . traverseExpOpt(q,func ,extraArg );
6957
+ ((i,outExtraArg )) = Expression . traverseExpOpt(i,func ,outExtraArg );
6958
+ ((eqbound,outExtraArg )) = Expression . traverseExpOpt(eqbound,func ,outExtraArg );
6959
+ then (SOME (DAE . VAR_ATTR_STRING (q,i,eqbound,p,fin)),outExtraArg );
6952
6960
6953
- case (SOME (DAE . VAR_ATTR_ENUMERATION (q,(min,max),i,f,eqbound,p,fin)),_,_ ) equation
6954
- ((q,extraArg )) = Expression . traverseExpOpt(q,func ,iextraArg );
6955
- ((min,extraArg )) = Expression . traverseExpOpt(min,func ,iextraArg );
6956
- ((max,extraArg )) = Expression . traverseExpOpt(max,func ,extraArg );
6957
- ((i,extraArg )) = Expression . traverseExpOpt(i,func ,extraArg );
6958
- ((f,extraArg )) = Expression . traverseExpOpt(f,func ,extraArg );
6959
- ((eqbound,extraArg )) = Expression . traverseExpOpt(eqbound,func ,extraArg );
6960
- then (SOME (DAE . VAR_ATTR_ENUMERATION (q,(min,max),i,f,eqbound,p,fin)),extraArg );
6961
+ case (SOME (DAE . VAR_ATTR_ENUMERATION (q,(min,max),i,f,eqbound,p,fin)),func ,extraArg ) equation
6962
+ ((q,outExtraArg )) = Expression . traverseExpOpt(q,func ,extraArg );
6963
+ ((min,outExtraArg )) = Expression . traverseExpOpt(min,func ,outExtraArg );
6964
+ ((max,outExtraArg )) = Expression . traverseExpOpt(max,func ,outExtraArg );
6965
+ ((i,outExtraArg )) = Expression . traverseExpOpt(i,func ,outExtraArg );
6966
+ ((f,outExtraArg )) = Expression . traverseExpOpt(f,func ,outExtraArg );
6967
+ ((eqbound,outExtraArg )) = Expression . traverseExpOpt(eqbound,func ,outExtraArg );
6968
+ then (SOME (DAE . VAR_ATTR_ENUMERATION (q,(min,max),i,f,eqbound,p,fin)),outExtraArg );
6961
6969
6962
6970
end matchcontinue;
6963
6971
end traverseBackendDAEVarAttr;
@@ -6968,7 +6976,7 @@ author: Peter Aronsson (paronsson@wolfram.com)
6968
6976
"
6969
6977
input Option < DAE . Distribution > distOpt;
6970
6978
input funcType func ;
6971
- input ExtraArgType iextraArg ;
6979
+ input ExtraArgType extraArg ;
6972
6980
replaceable type ExtraArgType subtypeof Any ;
6973
6981
partial function funcType
6974
6982
input tuple< DAE . Exp ,ExtraArgType > inTpl;
@@ -6977,20 +6985,19 @@ author: Peter Aronsson (paronsson@wolfram.com)
6977
6985
output Option < DAE . Distribution > outDistOpt;
6978
6986
output ExtraArgType outExtraArg;
6979
6987
algorithm
6980
- (outDistOpt,outExtraArg) := matchcontinue(distOpt,func ,iextraArg )
6988
+ (outDistOpt,outExtraArg) := matchcontinue(distOpt,func ,extraArg )
6981
6989
local
6982
6990
DAE . Exp name,arr,sarr;
6983
- ExtraArgType extraArg;
6984
6991
6985
- case (NONE (),_,_ ) then (NONE (),iextraArg );
6992
+ case (NONE (),func ,outExtraArg ) then (NONE (),outExtraArg );
6986
6993
6987
6994
case (SOME (DAE . DISTRIBUTION (name,arr,sarr)),_,_) equation
6988
6995
((arr,_)) = extendArrExp((arr,(NONE (),false )));
6989
6996
((sarr,_)) = extendArrExp((sarr,(NONE (),false )));
6990
- ((name,extraArg )) = Expression . traverseExp(name,func ,iextraArg );
6991
- ((arr,extraArg )) = Expression . traverseExp(arr,func ,extraArg );
6992
- ((sarr,extraArg )) = Expression . traverseExp(sarr,func ,extraArg );
6993
- then (SOME (DAE . DISTRIBUTION (name,arr,sarr)),extraArg );
6997
+ ((name,outExtraArg )) = Expression . traverseExp(name,func ,extraArg );
6998
+ ((arr,outExtraArg )) = Expression . traverseExp(arr,func ,outExtraArg );
6999
+ ((sarr,outExtraArg )) = Expression . traverseExp(sarr,func ,outExtraArg );
7000
+ then (SOME (DAE . DISTRIBUTION (name,arr,sarr)),outExtraArg );
6994
7001
end matchcontinue;
6995
7002
end traverseBackendDAEAttrDistribution;
6996
7003
@@ -8545,4 +8552,38 @@ algorithm
8545
8552
varLst := List . flatten(List . map(listAppend({knvars},List . map(eqs,BackendVariable . daeVars)),varList));
8546
8553
end getAllVarLst;
8547
8554
8555
+ public function getAlgorithms "return all algorithms from BackendDAE"
8556
+ input BackendDAE . BackendDAE dae;
8557
+ output array< DAE . Algorithm > algs;
8558
+ algorithm
8559
+ BackendDAE . DAE (shared = BackendDAE . SHARED (algorithms= algs)) := dae;
8560
+ end getAlgorithms;
8561
+
8562
+ public function setAlgorithms "set algorithms in BackendDAE"
8563
+ input BackendDAE . BackendDAE dae;
8564
+ input array< DAE . Algorithm > algs;
8565
+ output BackendDAE . BackendDAE outDae;
8566
+ algorithm
8567
+ outDAE := matchcontinue(dae,algs)
8568
+ local
8569
+ Variables kv,eo;
8570
+ AliasVariables av;
8571
+ EquationArray ieqns;
8572
+ EquationArray reqns;
8573
+ array< . BackendDAE . MultiDimEquation > aeqns ;
8574
+ array< . DAE . Algorithm > algs;
8575
+ array< . DAE . Constraint > constraints;
8576
+ array< . BackendDAE . ComplexEquation > complEqs;
8577
+ . DAE . FunctionTree functionTree;
8578
+ . BackendDAE . EventInfo eventInfo;
8579
+ . BackendDAE . ExternalObjectClasses extObjClasses;
8580
+ . BackendDAE . BackendDAEType tp;
8581
+ . BackendDAE . SymbolicJacobians jac;
8582
+ . BackendDAE . EqSystems eqs;
8583
+
8584
+ case (BackendDAE . DAE (eqs,BackendDAE . SHARED (kv,eo,av,ieqns,reqns,aeqns,_,constraints,complEqs,functionTree,eventInfo,extObjClasses,tp,jac)),algs)
8585
+ then (BackendDAE . DAE (eqs,BackendDAE . SHARED (kv,eo,av,ieqns,reqns,aeqns,algs,constraints,complEqs,functionTree,eventInfo,extObjClasses,tp,jac)));
8586
+ end matchcontinue;
8587
+ end setAlgorithms;
8588
+
8548
8589
end BackendDAEUtil ;
0 commit comments