Skip to content

Commit

Permalink
re-add Jacobian variable refs if +d=gendebugsymbols
Browse files Browse the repository at this point in the history
  • Loading branch information
rfranke authored and OpenModelica-Hudson committed Nov 14, 2015
1 parent d2ceb48 commit e0d2d02
Show file tree
Hide file tree
Showing 3 changed files with 33 additions and 25 deletions.
50 changes: 29 additions & 21 deletions Compiler/Template/CodegenCpp.tpl
Expand Up @@ -67,8 +67,9 @@ template translateModel(SimCode simCode)
let()= textFile(simulationInitExtVarsCppFile(simCode, &extraFuncsInit, &extraFuncsDeclInit, '<%className%>Initialize', stateDerVectorName, false),'OMCpp<%fileNamePrefix%>InitializeExtVars.cpp')
let()= textFile(simulationInitHeaderFile(simCode , &extraFuncsInit , &extraFuncsDeclInit, '<%className%>Initialize'), 'OMCpp<%fileNamePrefix%>Initialize.h')

let()= textFile(simulationJacobianHeaderFile(simCode , &extraFuncs , &extraFuncsDecl, ""), 'OMCpp<%fileNamePrefix%>Jacobian.h')
let()= textFile(simulationJacobianCppFile(simCode , &extraFuncs , &extraFuncsDecl, "", stateDerVectorName, false),'OMCpp<%fileNamePrefix%>Jacobian.cpp')
let &jacobianVarsInit = buffer "" /*BUFD*/
let()= textFile(simulationJacobianHeaderFile(simCode, &extraFuncs, &extraFuncsDecl, "", &jacobianVarsInit, Flags.isSet(Flags.GEN_DEBUG_SYMBOLS)), 'OMCpp<%fileNamePrefix%>Jacobian.h')
let()= textFile(simulationJacobianCppFile(simCode , &extraFuncs , &extraFuncsDecl, "", &jacobianVarsInit, stateDerVectorName, false),'OMCpp<%fileNamePrefix%>Jacobian.cpp')
let()= textFile(simulationStateSelectionCppFile(simCode , &extraFuncs , &extraFuncsDecl, "", stateDerVectorName, false), 'OMCpp<%fileNamePrefix%>StateSelection.cpp')
let()= textFile(simulationStateSelectionHeaderFile(simCode , &extraFuncs , &extraFuncsDecl, ""),'OMCpp<%fileNamePrefix%>StateSelection.h')
let()= textFile(simulationMixedSystemHeaderFile(simCode , &extraFuncs , &extraFuncsDecl, ""),'OMCpp<%fileNamePrefix%>Mixed.h')
Expand Down Expand Up @@ -209,7 +210,7 @@ let initparameqs = generateEquationMemberFuncDecls(parameterEquations,"initParam
end match
end simulationInitHeaderFile;

template simulationJacobianHeaderFile(SimCode simCode ,Text& extraFuncs,Text& extraFuncsDecl,Text extraFuncsNamespace)
template simulationJacobianHeaderFile(SimCode simCode, Text& extraFuncs, Text& extraFuncsDecl, Text extraFuncsNamespace, Text& jacobianVarsInit, Boolean createDebugCode)
"Generates code for header file for simulation target."
::=
match simCode
Expand Down Expand Up @@ -274,7 +275,7 @@ case SIMCODE(modelInfo=MODELINFO(__)) then
>>
%>

<%variableDefinitionsJacobians(jacobianMatrixes,simCode , &extraFuncs , &extraFuncsDecl, extraFuncsNamespace)%>
<%variableDefinitionsJacobians(jacobianMatrixes, simCode, &extraFuncs, &extraFuncsDecl, extraFuncsNamespace, &jacobianVarsInit, createDebugCode)%>

/*testmaessig aus der Cruntime*/
void initializeColoredJacobianA();
Expand Down Expand Up @@ -657,7 +658,7 @@ template simulationInitExtVarsCppFile(SimCode simCode, Text& extraFuncs, Text& e
end simulationInitExtVarsCppFile;


template simulationJacobianCppFile(SimCode simCode ,Text& extraFuncs,Text& extraFuncsDecl,Text extraFuncsNamespace, Text stateDerVectorName /*=__zDot*/, Boolean useFlatArrayNotation)
template simulationJacobianCppFile(SimCode simCode, Text& extraFuncs, Text& extraFuncsDecl, Text extraFuncsNamespace, Text &jacobianVarsInit, Text stateDerVectorName /*=__zDot*/, Boolean useFlatArrayNotation)
"Generates code for main cpp file for simulation target."
::=
match simCode
Expand All @@ -676,6 +677,7 @@ case SIMCODE(modelInfo = MODELINFO(__)) then
, _AColorOfColumn(NULL)
, _AMaxColors(0)
<%initialjacMats%>
<%jacobianVarsInit%>
{
}

Expand All @@ -684,6 +686,7 @@ case SIMCODE(modelInfo = MODELINFO(__)) then
, _AColorOfColumn(NULL)
, _AMaxColors(0)
<%initialjacMats%>
<%jacobianVarsInit%>
{
}

Expand Down Expand Up @@ -13141,12 +13144,12 @@ end generateJacobianMatrix;



template variableDefinitionsJacobians(list<JacobianMatrix> JacobianMatrixes,SimCode simCode ,Text& extraFuncs,Text& extraFuncsDecl,Text extraFuncsNamespace)
template variableDefinitionsJacobians(list<JacobianMatrix> JacobianMatrixes, SimCode simCode, Text& extraFuncs, Text& extraFuncsDecl, Text extraFuncsNamespace, Text &jacobianVarsInit, Boolean createDebugCode)
"Generates defines for jacobian vars."
::=

let analyticVars = (JacobianMatrixes |> (jacColumn, seedVars, name, (_,_), _, _, jacIndex) =>
let varsDef = variableDefinitionsJacobians2(jacIndex, jacColumn, seedVars, name,simCode , &extraFuncs , &extraFuncsDecl, extraFuncsNamespace)
let varsDef = variableDefinitionsJacobians2(jacIndex, jacColumn, seedVars, name, simCode, &extraFuncs, &extraFuncsDecl, extraFuncsNamespace, &jacobianVarsInit, createDebugCode)
<<
<%varsDef%>
>>
Expand All @@ -13158,14 +13161,14 @@ template variableDefinitionsJacobians(list<JacobianMatrix> JacobianMatrixes,SimC
>>
end variableDefinitionsJacobians;

template variableDefinitionsJacobians2(Integer indexJacobian, list<JacobianColumn> jacobianColumn, list<SimVar> seedVars, String name,SimCode simCode ,Text& extraFuncs,Text& extraFuncsDecl,Text extraFuncsNamespace)
template variableDefinitionsJacobians2(Integer indexJacobian, list<JacobianColumn> jacobianColumn, list<SimVar> seedVars, String name, SimCode simCode, Text& extraFuncs, Text& extraFuncsDecl, Text extraFuncsNamespace, Text& jacobianVarsInit, Boolean createDebugCode)
"Generates Matrixes for Linear Model."
::=
let seedVarsResult = (seedVars |> var hasindex index0 =>
jacobianVarDefine(var, "jacobianVarsSeed", indexJacobian, index0, name,simCode , &extraFuncs , &extraFuncsDecl, extraFuncsNamespace)
jacobianVarDefine(var, "jacobianVarsSeed", indexJacobian, index0, name, simCode, &extraFuncs, &extraFuncsDecl, extraFuncsNamespace, &jacobianVarsInit, createDebugCode)
;separator="\n";empty)
let columnVarsResult = (jacobianColumn |> (_,vars,_) =>
(vars |> var hasindex index0 => jacobianVarDefine(var, "jacobianVars", indexJacobian, index0,name,simCode , &extraFuncs , &extraFuncsDecl, extraFuncsNamespace)
(vars |> var hasindex index0 => jacobianVarDefine(var, "jacobianVars", indexJacobian, index0, name, simCode, &extraFuncs, &extraFuncsDecl, extraFuncsNamespace, &jacobianVarsInit, createDebugCode)
;separator="\n";empty)
;separator="\n\n")

Expand All @@ -13176,7 +13179,7 @@ template variableDefinitionsJacobians2(Integer indexJacobian, list<JacobianColum
end variableDefinitionsJacobians2;


template jacobianVarDefine(SimVar simVar, String array, Integer indexJac, Integer index0,String matrixName,SimCode simCode ,Text& extraFuncs,Text& extraFuncsDecl,Text extraFuncsNamespace)
template jacobianVarDefine(SimVar simVar, String array, Integer indexJac, Integer index0, String matrixName, SimCode simCode, Text& extraFuncs, Text& extraFuncsDecl, Text extraFuncsNamespace, Text& jacobianVarsInit, Boolean createDebugCode)
""
::=
match array
Expand All @@ -13185,22 +13188,27 @@ case "jacobianVars" then
case SIMVAR(aliasvar=NOALIAS(),name=name) then
match index
case -1 then
<<
#define _<%crefToCStr(name,false)%> _<%matrixName%>jac_tmp(<%index0%>)
>>
let jacobianVar = '_<%crefToCStr(name, false)%>'
let &jacobianVarsInit += if createDebugCode then ', <%jacobianVar%>(_<%matrixName%>jac_tmp(<%index0%>))<%\n%>'
if createDebugCode then
'double& <%jacobianVar%>;' else
'#define <%jacobianVar%> _<%matrixName%>jac_tmp(<%index0%>)'
case _ then
<<
#define _<%crefToCStr(name,false)%> _<%matrixName%>jac_y(<%index%>)
>>
let jacobianVar = '_<%crefToCStr(name, false)%>'
let &jacobianVarsInit += if createDebugCode then ', <%jacobianVar%>(_<%matrixName%>jac_y(<%index%>))<%\n%>'
if createDebugCode then
'double& <%jacobianVar%>;' else
'#define <%jacobianVar%> _<%matrixName%>jac_y(<%index%>)'
end match
end match
case "jacobianVarsSeed" then
match simVar
case SIMVAR(aliasvar=NOALIAS()) then
let tmp = System.tmpTick()
<<
#define _<%crefToCStr(name,false)%> _<%matrixName%>jac_x(<%index0%>)
>>
let jacobianVar = '_<%crefToCStr(name, false)%>'
let &jacobianVarsInit += if createDebugCode then ', <%jacobianVar%>(_<%matrixName%>jac_x(<%index0%>))<%\n%>'
if createDebugCode then
'double& <%jacobianVar%>;' else
'#define <%jacobianVar%> _<%matrixName%>jac_x(<%index0%>)'
end match
end jacobianVarDefine;

Expand Down
6 changes: 3 additions & 3 deletions Compiler/Template/CodegenCppHpcom.tpl
Expand Up @@ -73,9 +73,9 @@ template translateModel(SimCode simCode)
let()= textFile(simulationInitExtVarsCppFile(simCode, &extraFuncsInit, &extraFuncsDeclInit, '<%className%>Initialize', stateDerVectorName, false),'OMCpp<%fileNamePrefix%>InitializeExtVars.cpp')
let() = textFile(simulationInitHeaderFile(simCode, &extraFuncsInit, &extraFuncsDeclInit, ""), 'OMCpp<%fileNamePrefix%>Initialize.h')


let() = textFile(simulationJacobianHeaderFile(simCode, &extraFuncs, &extraFuncsDecl, ""), 'OMCpp<%fileNamePrefix%>Jacobian.h')
let() = textFile(simulationJacobianCppFile(simCode, &extraFuncs, &extraFuncsDecl, "", stateDerVectorName, false), 'OMCpp<%fileNamePrefix%>Jacobian.cpp')
let &jacobianVarsInit = buffer "" /*BUFD*/
let() = textFile(simulationJacobianHeaderFile(simCode, &extraFuncs, &extraFuncsDecl, "", &jacobianVarsInit, Flags.isSet(Flags.GEN_DEBUG_SYMBOLS)), 'OMCpp<%fileNamePrefix%>Jacobian.h')
let() = textFile(simulationJacobianCppFile(simCode, &extraFuncs, &extraFuncsDecl, "", &jacobianVarsInit, stateDerVectorName, false), 'OMCpp<%fileNamePrefix%>Jacobian.cpp')
let() = textFile(simulationStateSelectionCppFile(simCode, &extraFuncs, &extraFuncsDecl, "", stateDerVectorName, false), 'OMCpp<%fileNamePrefix%>StateSelection.cpp')
let() = textFile(simulationStateSelectionHeaderFile(simCode, &extraFuncs, &extraFuncsDecl, ""), 'OMCpp<%fileNamePrefix%>StateSelection.h')
let() = textFile(simulationMixedSystemHeaderFile(simCode, &extraFuncs, &extraFuncsDecl, ""), 'OMCpp<%fileNamePrefix%>Mixed.h')
Expand Down
2 changes: 1 addition & 1 deletion Compiler/Template/CodegenFMUCpp.tpl
Expand Up @@ -662,7 +662,7 @@ case SIMCODE(modelInfo=MODELINFO(__), makefileParams=MAKEFILE_PARAMS(__), simula
# /I - Include Directories
# /DNOMINMAX - Define NOMINMAX (does what it says)
# /TP - Use C++ Compiler
CFLAGS=$(SYSTEM_CFLAGS) /I"$(OMHOME)/include/omc/cpp/" /I"$(BOOST_INCLUDE)" /I"$(SUITESPARSE_INCLUDE)" /I. /TP /DNOMINMAX /DNO_INTERACTIVE_DEPENDENCY /DFMU_BUILD /DRUNTIME_STATIC_LINKING
CFLAGS=$(SYSTEM_CFLAGS) /w /I"$(OMHOME)/include/omc/cpp/" /I"$(BOOST_INCLUDE)" /I"$(SUITESPARSE_INCLUDE)" /I. /TP /DNOMINMAX /DNO_INTERACTIVE_DEPENDENCY /DFMU_BUILD /DRUNTIME_STATIC_LINKING

# /MD - link with MSVCRT.LIB
# /link - [linker options and libraries]
Expand Down

0 comments on commit e0d2d02

Please sign in to comment.