diff --git a/Compiler/BackEnd/SymbolicJacobian.mo b/Compiler/BackEnd/SymbolicJacobian.mo index bc27e0ab73..8b147b2dfa 100644 --- a/Compiler/BackEnd/SymbolicJacobian.mo +++ b/Compiler/BackEnd/SymbolicJacobian.mo @@ -1900,6 +1900,7 @@ protected function optimizeJacobianMatrix "author: wbraun" protected array ea = listArray({}); BackendDAE.Matching eMatching = BackendDAE.MATCHING(ea, ea, {}); + list postOptModules, preOptModules; algorithm outJacobian := matchcontinue (inBackendDAE,inComRef1,inComRef2) @@ -1931,21 +1932,21 @@ algorithm b = Flags.disableDebug(Flags.EXEC_STAT); end if; - backendDAE2 = BackendDAEUtil.getSolvedSystemforJacobians(backendDAE, - {"removeEqualFunctionCalls", - "removeSimpleEquations", - "evalFunc"}, - NONE(), - NONE(), - { - "wrapFunctionCalls", - "inlineArrayEqn", - "constantLinearSystem", - "solveSimpleEquations", - "tearingSystem", - "calculateStrongComponentJacobians", - "removeConstants", - "simplifyTimeIndepFuncCalls"}); + preOptModules = {"removeEqualFunctionCalls", + "removeSimpleEquations", + "evalFunc"}; + postOptModules = {"wrapFunctionCalls", + "inlineArrayEqn", + "constantLinearSystem", + "solveSimpleEquations", + "tearingSystem", + "calculateStrongComponentJacobians", + "removeConstants", + "simplifyTimeIndepFuncCalls"}; + (_,preOptModules,_) = List.intersection1OnTrue(preOptModules,Flags.getConfigStringList(Flags.POST_OPT_MODULES_SUB),stringEq); + (_,postOptModules,_) = List.intersection1OnTrue(postOptModules,Flags.getConfigStringList(Flags.POST_OPT_MODULES_SUB),stringEq); + backendDAE2 = BackendDAEUtil.getSolvedSystemforJacobians(backendDAE,preOptModules,NONE(),NONE(),postOptModules); + if Flags.isSet(Flags.JAC_DUMP) then BackendDump.bltdump("Symbolic Jacobian",backendDAE2); else