From bb4662dd5564c5897f8a4036636a4f46712f1323 Mon Sep 17 00:00:00 2001 From: Niklas Worschech Date: Wed, 21 Nov 2012 08:49:43 +0000 Subject: [PATCH] fix in cpp template for correct jacobian tmp vars vector allocation. git-svn-id: https://openmodelica.org/svn/OpenModelica/trunk@14001 f25d12d1-65f4-0310-ae8a-bbce733d8d8e --- Compiler/Template/CodegenCpp.tpl | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/Compiler/Template/CodegenCpp.tpl b/Compiler/Template/CodegenCpp.tpl index 9dde32b8b30..430a4cd7215 100644 --- a/Compiler/Template/CodegenCpp.tpl +++ b/Compiler/Template/CodegenCpp.tpl @@ -6866,7 +6866,7 @@ case "A" then { _jacobian = SparseMatrix(<%index_%>,<%indexColumn%>,<%sp_size_index%>); _jac_y = ublas::zero_vector(<%index_%>); - _jac_tmp = ublas::zero_vector(<%index_%>); + _jac_tmp = ublas::zero_vector(<%tmpvarsSize%>); _jac_x = ublas::zero_vector(<%index_%>); } @@ -7007,6 +7007,8 @@ end variableDefinitionsJacobians; template variableDefinitionsJacobians2(Integer indexJacobian, list jacobianColumn, list seedVars, String name) "Generates Matrixes for Linear Model." ::= + match name + case "A" then let seedVarsResult = (seedVars |> var hasindex index0 => jacobianVarDefine(var, "jacobianVarsSeed", indexJacobian, index0,name) ;separator="\n";empty) @@ -7014,6 +7016,7 @@ template variableDefinitionsJacobians2(Integer indexJacobian, list var hasindex index0 => jacobianVarDefine(var, "jacobianVars", indexJacobian, index0,name) ;separator="\n";empty) ;separator="\n\n") + << <%seedVarsResult%> <%columnVarsResult%> @@ -7063,6 +7066,8 @@ end jacobianVarsSeedDefine; template defineSparseIndexes(list diffVars, list diffedVars, String matrixName) "template variableDefinitionsJacobians2 Generates Matrixes for Linear Model." ::= +match matrixName +case "A" then let diffVarsResult = (diffVars |> var as SIMVAR(name=name) hasindex index0 => '#define <%cref(name)%><%matrixName%>$indexdiff <%index0%>' ;separator="\n") @@ -7071,6 +7076,7 @@ template defineSparseIndexes(list diffVars, list diffedVars, Str /* <%matrixName%> sparse indexes */ <%diffVarsResult%> >> + else " " end defineSparseIndexes;