Skip to content

Commit 0b7d5fb

Browse files
committed
Simplified record DIFFINPUTDATA
Removed option type to avoid redundant values (NONE() and SOME({}))
1 parent 7e6ad02 commit 0b7d5fb

File tree

3 files changed

+14
-16
lines changed

3 files changed

+14
-16
lines changed

Compiler/BackEnd/BackendDAE.mo

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -728,13 +728,13 @@ uniontype DifferentiateInputData
728728
Option<Variables> dependenentVars; // Dependent variables
729729
Option<Variables> knownVars; // known variables (e.g. parameter, constants, ...)
730730
Option<Variables> allVars; // all variables
731-
Option<list< Var>> controlVars; // variables to save control vars of for algorithm
732-
Option<list< .DAE.ComponentRef>> diffCrefs; // all crefs to differentiate, needed for generic gradient
731+
list< Var> controlVars; // variables to save control vars of for algorithm
732+
list< .DAE.ComponentRef> diffCrefs; // all crefs to differentiate, needed for generic gradient
733733
Option<String> matrixName; // name to create temporary vars, needed for generic gradient
734734
end DIFFINPUTDATA;
735735
end DifferentiateInputData;
736736

737-
public constant DifferentiateInputData noInputData = DIFFINPUTDATA(NONE(),NONE(),NONE(),NONE(),NONE(),NONE(),NONE());
737+
public constant DifferentiateInputData emptyInputData = DIFFINPUTDATA(NONE(),NONE(),NONE(),NONE(),{},{},NONE());
738738

739739
public
740740
type DifferentiateInputArguments = tuple< .DAE.ComponentRef, DifferentiateInputData, DifferentiationType, .DAE.FunctionTree>;

Compiler/BackEnd/Differentiate.mo

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ algorithm
101101
try
102102
funcs := BackendDAEUtil.getFunctions(inShared);
103103
knvars := BackendDAEUtil.getknvars(inShared);
104-
diffData := BackendDAE.DIFFINPUTDATA(NONE(), SOME(inVariables), SOME(knvars), SOME(inVariables), SOME({}), NONE(), NONE());
104+
diffData := BackendDAE.DIFFINPUTDATA(NONE(), SOME(inVariables), SOME(knvars), SOME(inVariables), {}, {}, NONE());
105105
(outEquation, funcs) := differentiateEquation(inEquation, DAE.crefTime, diffData, BackendDAE.DIFFERENTIATION_TIME(), funcs);
106106
outShared := BackendDAEUtil.setSharedFunctionTree(inShared, funcs);
107107
else
@@ -128,7 +128,7 @@ algorithm
128128
try
129129
funcs := BackendDAEUtil.getFunctions(inShared);
130130
knvars := BackendDAEUtil.getknvars(inShared);
131-
diffData := BackendDAE.DIFFINPUTDATA(NONE(), SOME(inVariables), SOME(knvars), SOME(inVariables), SOME({}), NONE(), NONE());
131+
diffData := BackendDAE.DIFFINPUTDATA(NONE(), SOME(inVariables), SOME(knvars), SOME(inVariables), {}, {}, NONE());
132132
(dexp, funcs) := differentiateExp(inExp, DAE.crefTime, diffData, BackendDAE.DIFFERENTIATION_TIME(), funcs, defaultMaxIter, {});
133133
(outExp, _) := ExpressionSimplify.simplify(dexp);
134134
outShared := BackendDAEUtil.setSharedFunctionTree(inShared, funcs);
@@ -154,7 +154,6 @@ public function differentiateExpSolve
154154
protected
155155
list<DAE.Exp> fac = Expression.factors(inExp);
156156
DAE.Exp dexp;
157-
BackendDAE.DifferentiateInputData diffData;
158157
DAE.FunctionTree fun;
159158
algorithm
160159
({}, _) := List.split1OnTrue(fac, Expression.expHasCrefInIf, inCref); // check if differentiateExpSolve is allowed
@@ -167,8 +166,7 @@ algorithm
167166
else DAE.emptyFuncTree;
168167
end match;
169168

170-
diffData := BackendDAE.DIFFINPUTDATA(NONE(), NONE(), NONE(), NONE(), SOME({}), NONE(), NONE());
171-
(dexp, _) := differentiateExp(inExp, inCref, diffData, BackendDAE.SIMPLE_DIFFERENTIATION(), fun, defaultMaxIter, {});
169+
(dexp, _) := differentiateExp(inExp, inCref, BackendDAE.emptyInputData, BackendDAE.SIMPLE_DIFFERENTIATION(), fun, defaultMaxIter, {});
172170
(outExp, _) := ExpressionSimplify.simplify(dexp);
173171
else
174172
if Flags.isSet(Flags.FAILTRACE) then
@@ -196,7 +194,7 @@ algorithm
196194
try
197195
funcs := BackendDAEUtil.getFunctions(inShared);
198196
knvars := BackendDAEUtil.getknvars(inShared);
199-
diffData := BackendDAE.DIFFINPUTDATA(NONE(), SOME(inVariables), SOME(knvars), NONE(), SOME({}), NONE(), NONE());
197+
diffData := BackendDAE.DIFFINPUTDATA(NONE(), SOME(inVariables), SOME(knvars), NONE(), {}, {}, NONE());
200198
(dexp, funcs) := differentiateExp(inExp, inCref, diffData, BackendDAE.DIFF_FULL_JACOBIAN(), funcs, defaultMaxIter, {});
201199
(outExp,_) := ExpressionSimplify.simplify(dexp);
202200
outShared := BackendDAEUtil.setSharedFunctionTree(inShared, funcs);
@@ -2107,7 +2105,7 @@ algorithm
21072105
(expl1,_) = List.splitOnBoolList(expl, blst);
21082106
(dexpl, functions) = List.map3Fold(expl1, function differentiateExp(maxIter=maxIter, inExpStack=expStack), inDiffwrtCref, inInputData, inDiffType, inFunctionTree);
21092107
funcname = Util.modelicaStringToCStr(Absyn.pathString(path), false);
2110-
diffFuncData = BackendDAE.DIFFINPUTDATA(NONE(),NONE(),NONE(),NONE(),NONE(),NONE(),SOME(funcname));
2108+
diffFuncData = BackendDAE.DIFFINPUTDATA(NONE(),NONE(),NONE(),NONE(),{},{},SOME(funcname));
21112109
(dexplZero, functions) = List.map3Fold(expl1, function differentiateExp(maxIter=maxIter, inExpStack=expStack), DAE.CREF_IDENT("$",DAE.T_REAL_DEFAULT,{}), diffFuncData, BackendDAE.GENERIC_GRADIENT(), functions);
21122110
//dexpl = listAppend(expl, dexpl);
21132111
//print("Start creation of partial Der\n");
@@ -2422,7 +2420,7 @@ algorithm
24222420

24232421
path = DAEUtil.functionName(func);
24242422
funcname = Util.modelicaStringToCStr(Absyn.pathString(path), false);
2425-
diffFuncData = BackendDAE.DIFFINPUTDATA(NONE(),NONE(),NONE(),NONE(),NONE(),NONE(),SOME(funcname));
2423+
diffFuncData = BackendDAE.DIFFINPUTDATA(NONE(),NONE(),NONE(),NONE(),{},{},SOME(funcname));
24262424

24272425
(inputVarsDer, functions, inputVarsNoDer, blst) = differentiateElementVars(inputVars, inDiffwrtCref, diffFuncData, BackendDAE.DIFFERENTIATION_FUNCTION(), inFunctionTree, {}, {}, {}, maxIter, expStack);
24282426
(outputVarsDer, functions, outputVarsNoDer, _) = differentiateElementVars(outputVars, inDiffwrtCref, diffFuncData, BackendDAE.DIFFERENTIATION_FUNCTION(), functions, {}, {}, {}, maxIter, expStack);
@@ -2797,8 +2795,8 @@ algorithm
27972795
local
27982796
Option<BackendDAE.Variables> indepVars, knownVars, allVars;
27992797
BackendDAE.Variables depVars;
2800-
Option<list< BackendDAE.Var>> algVars;
2801-
Option<list< .DAE.ComponentRef>> diffCrefs;
2798+
list<BackendDAE.Var> algVars;
2799+
list< .DAE.ComponentRef> diffCrefs;
28022800
Option<String> diffname;
28032801

28042802
case ({}, _)
@@ -2825,8 +2823,8 @@ algorithm
28252823
local
28262824
Option<BackendDAE.Variables> depVars, knownVars, indepVars;
28272825
BackendDAE.Variables allVars;
2828-
Option<list< BackendDAE.Var>> algVars;
2829-
Option<list< .DAE.ComponentRef>> diffCrefs;
2826+
list<BackendDAE.Var> algVars;
2827+
list< .DAE.ComponentRef> diffCrefs;
28302828
Option<String> diffname;
28312829

28322830
case ({}, _)

Compiler/BackEnd/SymbolicJacobian.mo

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1921,7 +1921,7 @@ algorithm
19211921
end if;
19221922
diffVarsArr = BackendVariable.listVar1(diffVars);
19231923
comref_diffvars = List.map(diffVars, BackendVariable.varCref);
1924-
diffData = BackendDAE.DIFFINPUTDATA(SOME(diffVarsArr), SOME(diffedVars), SOME(knownVars), SOME(orderedVars), SOME({}), SOME(comref_diffvars), SOME(matrixName));
1924+
diffData = BackendDAE.DIFFINPUTDATA(SOME(diffVarsArr), SOME(diffedVars), SOME(knownVars), SOME(orderedVars), {}, comref_diffvars, SOME(matrixName));
19251925
eqns = BackendEquation.equationList(orderedEqs);
19261926
if Flags.isSet(Flags.JAC_DUMP2) then
19271927
print("*** analytical Jacobians -> before derive all equation." + realString(clock()) + "\n");

0 commit comments

Comments
 (0)