Skip to content

Commit ba491aa

Browse files
author
Jens Frenkel
committed
- c_runtime/CMakeLists.txt, c_runtime/ModelicaExternalC/CMakeLists.txt
- add ModelicaExternalC to CMake - add macro for fmu - c_runtime/fmu_model_interface.c, c_runtime/fmu_model_interface.h - bugfixes for visual studio - SimCode - add model name to message for translated to FMU - testsuite/libraries/msl31/simulate - add testcases for simulation of examples with start and end values git-svn-id: https://openmodelica.org/svn/OpenModelica/trunk@7411 f25d12d1-65f4-0310-ae8a-bbce733d8d8e
1 parent a202e1c commit ba491aa

File tree

5 files changed

+463
-390
lines changed

5 files changed

+463
-390
lines changed

Compiler/BackEnd/SimCode.mo

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -819,7 +819,7 @@ algorithm
819819
(outCache,outValue,outInteractiveSymbolTable,outBackendDAE,outStringLst,outFileDir,resultValues):=
820820
matchcontinue (inCache,inEnv,className,inInteractiveSymbolTable,inFileNamePrefix,addDummy, inSimSettingsOpt)
821821
local
822-
String filenameprefix,file_dir;
822+
String filenameprefix,file_dir,resstr;
823823
list<SCode.Class> p_1;
824824
DAE.DAElist dae;
825825
list<Env.Frame> env;
@@ -879,8 +879,17 @@ algorithm
879879
("timeBackend", Values.REAL(timeBackend)),
880880
("timeFrontend", Values.REAL(timeFrontend))
881881
};
882+
resstr = Absyn.pathString(className);
883+
resstr = stringAppendList({"SimCode: The model ",resstr," has been translated to FMU"});
882884
then
883-
(cache,Values.STRING("SimCode: The model has been translated to FMU"),st,indexed_dlow,libs,file_dir, resultValues);
885+
(cache,Values.STRING(resstr),st,indexed_dlow_1,libs,file_dir, resultValues);
886+
case (_,_,className,_,_,_, _)
887+
equation
888+
resstr = Absyn.pathString(className);
889+
resstr = stringAppendList({"SimCode: The model ",resstr," could not been translated to FMU"});
890+
Error.addMessage(Error.INTERNAL_ERROR, {resstr});
891+
then
892+
fail();
884893
end matchcontinue;
885894
end translateModelFMU;
886895

c_runtime/CMakeLists.txt

Lines changed: 51 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ MESSAGE(" omc is " ${OMC_DEBUG})
77

88
ADD_SUBDIRECTORY(libf2c)
99
ADD_SUBDIRECTORY(sendData)
10+
ADD_SUBDIRECTORY(ModelicaExternalC)
1011

1112
# -------------------------------------------------------------
1213
# MACRO definitions
@@ -42,7 +43,10 @@ MACRO(BUILDMODEL model dir Flags CSRC)
4243
SET(OMC_CODE ${CMAKE_CURRENT_BINARY_DIR}/${model}.cpp
4344
${CMAKE_CURRENT_BINARY_DIR}/${model}_functions.cpp
4445
${CMAKE_CURRENT_BINARY_DIR}/${model}_init.txt)
45-
SET(OMC_OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${model}.cpp ${CMAKE_CURRENT_BINARY_DIR}/${model}_functions.cpp ${CMAKE_CURRENT_BINARY_DIR}/${model}_functions.h)
46+
SET(OMC_OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${model}.cpp
47+
${CMAKE_CURRENT_BINARY_DIR}/${model}_functions.cpp
48+
${CMAKE_CURRENT_BINARY_DIR}/${model}_functions.h
49+
${CMAKE_CURRENT_BINARY_DIR}/${model}_records.c)
4650

4751
# custom command fuer openmodelicacompiler
4852
ADD_CUSTOM_COMMAND(OUTPUT ${OMC_OUTPUT}
@@ -54,7 +58,7 @@ MACRO(BUILDMODEL model dir Flags CSRC)
5458
ADD_CUSTOM_TARGET(${model}codegen ALL DEPENDS ${OMC_OUTPUT})
5559

5660
ADD_EXECUTABLE(${model} ${OMC_OUTPUT} ${CSRC})
57-
TARGET_LINK_LIBRARIES(${model} sim c_runtime f2c sendData)
61+
TARGET_LINK_LIBRARIES(${model} sim c_runtime f2c sendData ModelicaExternalC)
5862

5963
# Dependencies
6064
ADD_DEPENDENCIES(${model} ${model}codegen)
@@ -66,6 +70,50 @@ MACRO(BUILDMODEL model dir Flags CSRC)
6670
#ENDFOREACH(model ${model_sources})
6771
ENDMACRO(BUILDMODEL)
6872

73+
# MACRO BUILDMODEL
74+
MACRO(BUILDMODELFMU model dir Flags CSRC)
75+
76+
INCLUDE_DIRECTORIES(${OMCTRUNCHOME}/c_runtime)
77+
78+
SET(OMC_MODELNAME ${model})
79+
SET(OMC_MODELDIR ${dir})
80+
# generate model.mos
81+
FIND_FILE(MOSFILE_IN model_fmu.in PATHS ${OMCTRUNCHOME}/c_runtime)
82+
CONFIGURE_FILE(${MOSFILE_IN} ${dir}/${model}.mos)
83+
84+
# Variablen fuer openmodelica2sarturis
85+
SET(OMC_CODE ${CMAKE_CURRENT_BINARY_DIR}/${model}.cpp
86+
${CMAKE_CURRENT_BINARY_DIR}/${model}_functions.cpp
87+
${CMAKE_CURRENT_BINARY_DIR}/${model}_init.txt)
88+
SET(OMC_OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${model}.cpp
89+
${CMAKE_CURRENT_BINARY_DIR}/${model}_FMU.cpp
90+
${CMAKE_CURRENT_BINARY_DIR}/${model}_functions.cpp
91+
${CMAKE_CURRENT_BINARY_DIR}/${model}_functions.h
92+
${CMAKE_CURRENT_BINARY_DIR}/${model}_records.c)
93+
# custom command fuer openmodelicacompiler
94+
ADD_CUSTOM_COMMAND(OUTPUT ${OMC_OUTPUT}
95+
COMMAND ${OMC_DEBUG} ${Flags} ${dir}/${model}.mos
96+
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
97+
COMMENT "Erzeuge Code fuer ${model} with ${OMC_DEBUG}")
98+
# target fuer OM_OUTPUT
99+
ADD_CUSTOM_TARGET(${model}codegen ALL DEPENDS ${OMC_OUTPUT})
100+
101+
SET(OMC_FMU_CODE ${OMCTRUNCHOME}/c_runtime/fmu_model_interface.h
102+
${OMCTRUNCHOME}/c_runtime/fmiModelFunctions.h
103+
${OMCTRUNCHOME}/c_runtime/fmiModelTypes.h)
104+
105+
ADD_LIBRARY(${model} ${OMC_OUTPUT} ${CSRC} ${OMC_FMU_CODE})
106+
TARGET_LINK_LIBRARIES(${model} sim c_runtime f2c sendData ModelicaExternalC)
107+
108+
# Dependencies
109+
ADD_DEPENDENCIES(${model} ${model}codegen)
110+
111+
IF(MODELS_INSTALL)
112+
INSTALL(TARGETS ${model} ARCHIVE DESTINATION ${MODELS_INSTALL_PATH})
113+
INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/${model}_init.txt DESTINATION ${MODELS_INSTALL_PATH})
114+
ENDIF(MODELS_INSTALL)
115+
#ENDFOREACH(model ${model_sources})
116+
ENDMACRO(BUILDMODELFMU)
69117

70118

71119
# Check if example files are to be exported
@@ -137,7 +185,7 @@ if(WIN32)
137185
#add_definitions(/MT)
138186
endif(WIN32)
139187
ADD_LIBRARY(sim ${sim_sources} ${sim_headers})
140-
TARGET_LINK_LIBRARIES(sim c_runtime f2c)
188+
TARGET_LINK_LIBRARIES(sim c_runtime f2c ModelicaExternalC)
141189

142190
# Install
143191
INSTALL(TARGETS c_runtime sim
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
# Sources and Headers
2+
set(ModelicaExternalC_sources ModelicaInternal.c ModelicaStrings.c ModelicaTablesImpl.c)
3+
4+
SET(ModelicaExternalC_headers ModelicaTables.h)
5+
6+
# Library ModelicaExternalC
7+
add_library(ModelicaExternalC ${ModelicaExternalC_sources} ${ModelicaExternalC_headers})
8+
9+
# Install
10+
INSTALL(TARGETS ModelicaExternalC
11+
ARCHIVE DESTINATION lib)
12+
INSTALL(FILES f2c.h DESTINATION include)
13+

0 commit comments

Comments
 (0)