Skip to content

Commit 30fb32e

Browse files
committed
Reduce the number of dependencies in FMUs
- Skipped including perform_simulation (normal and QSS) for ME FMUs
1 parent bf00971 commit 30fb32e

File tree

2 files changed

+12
-8
lines changed

2 files changed

+12
-8
lines changed

Compiler/Template/CodegenC.tpl

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ import CodegenCFunctions.*;
7474
// adpro: write the main .c file last! Make on windows doesn't seem to realize that
7575
// the .c file is newer than the .o file if we have succesive simulate commands
7676
// for the same model (i.e. see testsuite/linearize/simextfunction.mos).
77-
let _ = generateSimulationFiles(simCode,guid,fileNamePrefix)
77+
let _ = generateSimulationFiles(simCode,guid,fileNamePrefix,false)
7878

7979
// If ParModelica generate the kernels file too.
8080
if acceptParModelicaGrammar() then
@@ -153,7 +153,7 @@ end translateInitFile;
153153
end match
154154
end simulationHeaderFile;
155155

156-
/* public */ template generateSimulationFiles(SimCode simCode, String guid, String modelNamePrefix)
156+
/* public */ template generateSimulationFiles(SimCode simCode, String guid, String modelNamePrefix, Boolean isModelExchangeFMU)
157157
"Generates code in different C files for the simulation target.
158158
To make the compilation faster we split the simulation files into several
159159
used in Compiler/Template/CodegenFMU.tpl"
@@ -195,7 +195,7 @@ end simulationHeaderFile;
195195
// synchronous
196196
let()= textFileConvertLines(simulationFile_syn(simCode,guid), '<%fileNamePrefix%>_15syn.c')
197197
// main file
198-
let()= textFileConvertLines(simulationFile(simCode,guid), '<%fileNamePrefix%>.c')
198+
let()= textFileConvertLines(simulationFile(simCode,guid,isModelExchangeFMU), '<%fileNamePrefix%>.c')
199199
""
200200
end match
201201
end generateSimulationFiles;
@@ -810,7 +810,7 @@ template simulationFile_lnz(SimCode simCode, String guid)
810810
end match
811811
end simulationFile_lnz;
812812

813-
template simulationFile(SimCode simCode, String guid)
813+
template simulationFile(SimCode simCode, String guid, Boolean isModelExchangeFMU)
814814
"Generates code for main C file for simulation target."
815815
::=
816816
match simCode
@@ -842,12 +842,16 @@ template simulationFile(SimCode simCode, String guid)
842842
/* Main Simulation File */
843843
<%simulationFileHeader(simCode)%>
844844

845+
<% if boolNot(isModelExchangeFMU) then
846+
<<
845847
#define prefixedName_performSimulation <%symbolName(modelNamePrefixStr,"performSimulation")%>
846848
#define prefixedName_updateContinuousSystem <%symbolName(modelNamePrefixStr,"updateContinuousSystem")%>
847849
#include <simulation/solver/perform_simulation.c>
848850

849851
#define prefixedName_performQSSSimulation <%symbolName(modelNamePrefixStr,"performQSSSimulation")%>
850852
#include <simulation/solver/perform_qss_simulation.c>
853+
>>
854+
%>
851855

852856
/* dummy VARINFO and FILEINFO */
853857
const FILE_INFO dummyFILE_INFO = omc_dummyFileInfo;
@@ -874,9 +878,9 @@ template simulationFile(SimCode simCode, String guid)
874878
#include "<%simCode.fileNamePrefix%>_13opt.h"
875879
876880
struct OpenModelicaGeneratedFunctionCallbacks <%symbolName(modelNamePrefixStr,"callback")%> = {
877-
(int (*)(DATA *, threadData_t *, void *)) <%symbolName(modelNamePrefixStr,"performSimulation")%>,
878-
(int (*)(DATA *, threadData_t *, void *)) <%symbolName(modelNamePrefixStr,"performQSSSimulation")%>,
879-
<%symbolName(modelNamePrefixStr,"updateContinuousSystem")%>,
881+
<% if isModelExchangeFMU then "NULL" else '(int (*)(DATA *, threadData_t *, void *)) <%symbolName(modelNamePrefixStr,"performSimulation")%>'%>,
882+
<% if isModelExchangeFMU then "NULL" else '(int (*)(DATA *, threadData_t *, void *)) <%symbolName(modelNamePrefixStr,"performQSSSimulation")%>'%>,
883+
<% if isModelExchangeFMU then "NULL" else '<%symbolName(modelNamePrefixStr,"updateContinuousSystem")%>'%>,
880884
<%symbolName(modelNamePrefixStr,"callExternalObjectConstructors")%>,
881885
<%symbolName(modelNamePrefixStr,"callExternalObjectDestructors")%>,
882886
<%symbolName(modelNamePrefixStr,"initialNonLinearSystem")%>,

Compiler/Template/CodegenFMU.tpl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ case sc as SIMCODE(modelInfo=modelInfo as MODELINFO(__)) then
7171
let()= textFile(recordsFile(fileNamePrefix, recordDecls), '<%fileNamePrefix%>_records.c')
7272
let()= textFile(simulationHeaderFile(simCode,guid), '<%fileNamePrefix%>_model.h')
7373

74-
let _ = generateSimulationFiles(simCode,guid,fileNamePrefix)
74+
let _ = generateSimulationFiles(simCode,guid,fileNamePrefix,true)
7575

7676
let()= textFile(simulationInitFile(simCode,guid), '<%fileNamePrefix%>_init.xml')
7777
let x = covertTextFileToCLiteral('<%fileNamePrefix%>_init.xml','<%fileNamePrefix%>_init.c')

0 commit comments

Comments
 (0)