Skip to content

Commit

Permalink
Added cpp simulation runtime SimulationRuntime/cpp
Browse files Browse the repository at this point in the history
Binaries copied to trunk/build/bin/cpp and trunk/bin/lib/omc/cpp

git-svn-id: https://openmodelica.org/svn/OpenModelica/trunk@7883 f25d12d1-65f4-0310-ae8a-bbce733d8d8e
  • Loading branch information
niklwors committed Feb 8, 2011
1 parent 39f9ad1 commit ed30b83
Show file tree
Hide file tree
Showing 94 changed files with 7,175 additions and 0 deletions.
19 changes: 19 additions & 0 deletions SimulationRuntime/cpp/Build/Compile.bat
@@ -0,0 +1,19 @@
@echo off
REM Clear all environment variables that may interfere during compile and link phases.
set GCC_EXEC_PREFIX=
set CPLUS_INCLUDE_PATH=
set C_INCLUDE_PATH=
set LIBRARY_PATH=
set OLD_PATH=%PATH%
set MINGW=%OPENMODELICAHOME%\MinGW
REM If OMDEV is set, use MinGW from there instead of OPENMODELICAHOME
REM It is not certain that release OMC is installed
if not %OMDEV%a==a set MINGW=%OMDEV%\tools\MinGW
pushd "%MINGW%\bin" >%1.log 2<&1
set PATH=%CD%;%MinGW%\libexec\gcc\mingw32\3.4.5\;%PATH%
popd
%MinGW%\bin\mingw32-make -f .\Makefile %1 MODELNAME=%2 LIBPREFIX=%3 PRJDIR=..\ >%1.log 2<&1
set RESULT=%ERRORLEVEL%
set PATH=%OLD_PATH%
set OLD_PATH=
exit /B %RESULT%
48 changes: 48 additions & 0 deletions SimulationRuntime/cpp/Build/MakeConf.inc
@@ -0,0 +1,48 @@
# Build Environment Einstellungen


CC = g++
AR = ar
PLT=win32
MODELNAME = BouncingBall
MAKEINC = $(PRJDIR)/Build/MakeConf.inc
MAINFILE = $(TMPBINPATH)/SimModel.exe
REDDAEFILE = $(BINPATH)/ReduceDAE.exe
MODELFILE = $(MODELNAME).cpp
LIBPREFIX=""
CFLAGS = -c
BUILDDIR = $(PRJDIR)/Build
SRCDIR = $(PRJDIR)/Source
TMPBINPATH = $(PRJDIR)/Build/bin
LIBPATH = $(PRJDIR)/../../build/lib/omc/cpp
BINPATH = $(PRJDIR)/../../build/bin/cpp
CONFPATH = $(BINPATH)/config
MINGW=$(OPENMODELICAHOME)/MinGW/bin
LAPACKPATH = $(SRCDIR)/3rdParty/Lapack/Lib
BOOSTPATH = $(SRCDIR)/3rdParty/boost_1_45_0/lib
MICOPATH = $(SRCDIR)/3rdParty/mico-msys-mingw/libs
FORTRANPATH = $(SRCDIR)/3rdParty/Fortran/Lib
INCLUDES = -I"$(SRCDIR)/3rdParty/boost_1_45_0/boost" -I"$(SRCDIR)/3rdParty/boost_1_45_0" -I"$(SRCDIR)/3rdParty/mico-msys-mingw/include/" -I"$(SRCDIR)/3rdParty/mico-msys-mingw/include/windows"

LIBMATH = $(TMPBINPATH)/libMath.a
LIBDAESOLVER =$(TMPBINPATH)/DAESolver.dll
LIBEULER = $(TMPBINPATH)/Euler.dll
LIBNEWTON = $(TMPBINPATH)/Newton.dll
LIBDAESYSTEM = $(TMPBINPATH)/DAESystem.dll
LIBMODELICASYSTEM = $(BINPATH)/$(LIBPREFIX)ModelicaSystem.dll
LIBSETTINGSFACTORY =$(TMPBINPATH)/SettingsFactory.dll

LIBBLAS = $(LAPACKPATH)/blasSource.lib
LIBLAPACK = $(LAPACKPATH)/lapackSource.lib
LIBBOOST =-L$(BOOSTPATH)/
LIBMICO = -L$(MICOPATH)/

MINGW32=$(OPENMODELICAHOME)\MinGW\bin
SRCDIRWIN32=$(PRJDIR)\Source
FORTRANWIN32 = $(SRCDIRWIN32)\3rdParty\Fortran\Lib
BOOSTPATHWIN32 = $(SRCDIRWIN32)\3rdParty\boost_1_45_0\lib
MICOPATHWIN32 = $(SRCDIRWIN32)\3rdParty\mico-msys-mingw\libs
BINPATHWIN32 = $(PRJDIR)\..\..\build\bin\cpp
CONFPATHWIN32 = $(BINPATHWIN32)\config
LIBPATHWIN32 = $(PRJDIR)\..\..\build\lib\omc\cpp
TMPBINPATHWIN32=$(PRJDIR)\Build\bin
108 changes: 108 additions & 0 deletions SimulationRuntime/cpp/Build/Makefile
@@ -0,0 +1,108 @@
export PRJDIR=$(PWD)/..
include $(PRJDIR)/Build/MakeConf.inc
.PHONY: all
all: \
Math \
Solver \
Euler \
SettingsFactory \
System \
Newton \
Modelica \
Main \

.PHONY: Main
Main: System Math Newton Solver Euler SettingsFactory
$(MAKE) -f $(SRCDIR)/SimManager/Main.mak
$(MAKE) copy

.PHONY: ReduceDAE
ReduceDAE: System Math Newton Solver Euler SettingsFactory
$(MAKE) -f $(SRCDIR)/ReduceDAE/Implementation/ReduceDAE.mak
$(MAKE) copy
ifeq ($(PLT),mingw)
cp -u -v $(SRCDIR)/ReduceDAE/Interfaces/ReduceDAESettings.xml $(BINPATH)/config
cp -u -v $(MICOPATH)/mico2313.dll $(BINPATH)


else ifeq ($(PLT),win32)
xcopy $(SRCDIRWIN32)\ReduceDAE\Interfaces\ReduceDAESettings.xml $(BINPATHWIN32)\config\ /D /F /Y
xcopy $(MICOPATHWIN32)\mico2313.dll $(BINPATHWIN32) /D /F /Y
endif

.PHONY: Math
Math:
$(MAKE) -f $(SRCDIR)/Math/Math.mak

.PHONY: System
System:
$(MAKE) -f $(SRCDIR)/System/Implementation/System.mak

.PHONY: Newton
Newton:
$(MAKE) -f $(SRCDIR)/System/Newton/Implementation/Newton.mak

.PHONY: Modelica
Modelica:
$(MAKE) -f $(SRCDIR)/System/Modelica/Modelica.mak

.PHONY: SettingsFactory
SettingsFactory:
$(MAKE) -f $(SRCDIR)/SettingsFactory/Implementation/SettingsFactory.mak

.PHONY: Euler
Euler:
$(MAKE) -f $(SRCDIR)/Solver/Euler/Implementation/Euler.mak

.PHONY: Solver
Solver:
$(MAKE) -f $(SRCDIR)/Solver/Implementation/Solver.mak

.PHONY: clean
clean:
cd $(SRCDIR)/SimulationRuntime/ && $(MAKE) -f Main.mak clean
cd $(SRCDIR)/Math/ && $(MAKE) -f Math.mak clean
cd $(SRCDIR)/System/Implementation/ && $(MAKE) -f System.mak clean
cd $(SRCDIR)/System/Newton/Implementation/ && $(MAKE) -f Newton.mak clean
cd $(SRCDIR)/System/Modelica/ && $(MAKE) -f Modelica.mak clean
cd $(SRCDIR)/Solver/Implementation/ && $(MAKE) -f Solver.mak clean
cd $(SRCDIR)/Solver/Euler/Implementation/ && $(MAKE) -f Euler.mak clean
cd $(SRCDIR)/SettingsFactory/Implementation/ && $(MAKE) -f SettingsFactory.mak clean

.PHONY: clear
cd $(BINPATH) && rm -f *.*
clear: clean
copy:
ifeq ($(PLT),mingw)
mkdir -p $(BINPATH)
mkdir -p $(CONFPATH)
cp -u -r -v $(FORTRANPATH)/libifcoremd.dll $(BINPATH)/
cp -u -r -v $(FORTRANPATH)/libmmd.dll $(BINPATH)/
cp -u -r -v $(BOOSTPATH)/libboost_serialization-mgw34-mt-1_45.* $(BINPATH)
cp -u -v $(SRCDIR)/SettingsFactory/Interfaces/GlobalSettings.xml $(CONFPATH)
cp -u -v $(SRCDIR)/Solver/Euler/Interfaces/EulerSettings.xml $(CONFPATH)
cp -u -v $(TMPBINPATH)/SimModel.exe $(BINPATH)
cp -u -v $(TMPBINPATH)/DAESolver.dll $(BINPATH)
cp -u -v $(TMPBINPATH)/DAESystem.dll $(BINPATH)
cp -u -v $(TMPBINPATH)/Euler.dll $(BINPATH)
cp -u -v $(TMPBINPATH)/Newton.dll $(BINPATH)
cp -u -v $(TMPBINPATH)/SettingsFactory.dll $(BINPATH)
cp -u -v $(TMPBINPATH)/libMath.a $(LIBPATH)
cp -u -v $(MINGW)/mingwm10.dll $(BINPATH)\

else ifeq ($(PLT),win32)
xcopy $(BOOSTPATHWIN32)\libboost_serialization-mgw34-mt-1_45.* $(BINPATHWIN32)\ /F /Y /I
xcopy $(FORTRANWIN32)\libifcoremd.dll $(BINPATHWIN32)\ /F /Y /I
xcopy $(FORTRANWIN32)\libmmd.dll $(BINPATHWIN32)\ /F /Y /I
xcopy $(TMPBINPATHWIN32)\SimModel.exe $(BINPATHWIN32)\ /F /Y /I
xcopy $(TMPBINPATHWIN32)\DAESolver.dll $(BINPATHWIN32)\ /F /Y /I
xcopy $(TMPBINPATHWIN32)\DAESystem.dll $(BINPATHWIN32)\ /F /Y /I
xcopy $(TMPBINPATHWIN32)\Euler.dll $(BINPATHWIN32)\ /F /Y /I
xcopy $(TMPBINPATHWIN32)\Newton.dll $(BINPATHWIN32)\ /F /Y /I
xcopy $(TMPBINPATHWIN32)\SettingsFactory.dll $(BINPATHWIN32)\ /F /Y /I
xcopy $(TMPBINPATHWIN32)\libMath.a $(LIBPATHWIN32)\ /F /Y /I
xcopy $(MINGW32)\mingwm10.dll $(BINPATHWIN32)\ /F /Y /I
xcopy $(SRCDIRWIN32)\SettingsFactory\\Interfaces\GlobalSettings.* $(CONFPATHWIN32)\ /F /Y /I
xcopy $(SRCDIRWIN32)\Solver\\Euler\Interfaces\EulerSettings.xml $(CONFPATHWIN32)\ /F /Y /I
endif

116 changes: 116 additions & 0 deletions SimulationRuntime/cpp/Build/Simulation.sln
@@ -0,0 +1,116 @@

Microsoft Visual Studio Solution File, Format Version 11.00
# Visual Studio 2010
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "System", "System", "{88CE991C-B050-4110-BDAB-51E31E80B98F}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "SimManager", "SimManager", "{3A49AB7E-834D-4727-821D-12CF868DE79C}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Newton", "Newton", "{A3A2B16C-95EF-4131-95E3-2A8C554375F9}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Math", "Math", "{CF33A73E-B002-4521-8351-CF97313A6F90}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solver", "Solver", "{E83149FC-0273-4927-AA58-1F82176021F9}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Euler", "Euler", "{B87CF129-0FFC-40D7-BA65-8DE5E414DBAE}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "DefaulImplementation", "DefaulImplementation", "{C3DB5C9F-C518-4EF5-A166-CCDB1D92B99A}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "DataExchange", "DataExchange", "{140F589B-9D78-4C0A-A7E1-5189D069C56E}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Interfaces", "Interfaces", "{B249EC63-BB69-41D2-8CAE-6BCF28705145}"
ProjectSection(SolutionItems) = preProject
..\Source\DataExchange\Interfaces\IHistory.h = ..\Source\DataExchange\Interfaces\IHistory.h
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Implementation", "Implementation", "{3D904ED7-5D90-42C9-9556-60E8D82FC3D6}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Interfaces", "Interfaces", "{FE9BEBB5-D6F0-44C9-A06B-98B4F870F022}"
ProjectSection(SolutionItems) = preProject
..\Source\Solver\Euler\Interfaces\IEulerSettings.h = ..\Source\Solver\Euler\Interfaces\IEulerSettings.h
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "SettingsFactory", "SettingsFactory", "{DA852E81-3AAC-47DD-AD19-3575201A5FB7}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Interfaces", "Interfaces", "{872A42C2-9BC7-40B6-8631-C3AD28675479}"
ProjectSection(SolutionItems) = preProject
..\Source\SettingsFactory\Interfaces\IGlobalSettings.h = ..\Source\SettingsFactory\Interfaces\IGlobalSettings.h
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Implementation", "Implementation", "{8793DAE6-3B08-4B61-A458-AAE926594D73}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Interfaces", "Interfaces", "{2D3206A6-FAC3-4E70-B9C8-00E261BDCC1B}"
ProjectSection(SolutionItems) = preProject
..\Source\System\Newton\Interfaces\INewtonSettings.h = ..\Source\System\Newton\Interfaces\INewtonSettings.h
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "MathD", "..\Source\Math\Math.vcxproj", "{C55DA062-BEB7-404E-BE88-6BAAFA6297C4}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DAESystem", "..\Source\System\Implementation\System.vcxproj", "{D8AFA152-1CD9-42AF-9468-197B931FE455}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DAESolver", "..\Source\Solver\Implementation\Solver.vcxproj", "{7DB1BB41-52AF-4092-8273-97EBAEBC5DFF}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Euler", "..\Source\Solver\Euler\Implementation\Euler.vcxproj", "{485163BE-45D9-4592-9B46-990E3BBD469F}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Implementation", "..\Source\SettingsFactory\Implementation\Implementation.vcxproj", "{FFED7C5F-511E-4E41-A322-BCF2619E4CE0}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Newton", "..\Source\System\Newton\Implementation\Newton.vcxproj", "{31F26B95-9CDF-45F5-993B-E78469DD15E4}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SimManager", "..\Source\SimManager\Main.vcxproj", "{AFB2C54B-6917-40CD-B47A-22675CA36C23}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Win32 = Debug|Win32
Release|Win32 = Release|Win32
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{C55DA062-BEB7-404E-BE88-6BAAFA6297C4}.Debug|Win32.ActiveCfg = Debug|Win32
{C55DA062-BEB7-404E-BE88-6BAAFA6297C4}.Debug|Win32.Build.0 = Debug|Win32
{C55DA062-BEB7-404E-BE88-6BAAFA6297C4}.Release|Win32.ActiveCfg = Release|Win32
{C55DA062-BEB7-404E-BE88-6BAAFA6297C4}.Release|Win32.Build.0 = Release|Win32
{D8AFA152-1CD9-42AF-9468-197B931FE455}.Debug|Win32.ActiveCfg = Debug|Win32
{D8AFA152-1CD9-42AF-9468-197B931FE455}.Debug|Win32.Build.0 = Debug|Win32
{D8AFA152-1CD9-42AF-9468-197B931FE455}.Release|Win32.ActiveCfg = Release|Win32
{D8AFA152-1CD9-42AF-9468-197B931FE455}.Release|Win32.Build.0 = Release|Win32
{7DB1BB41-52AF-4092-8273-97EBAEBC5DFF}.Debug|Win32.ActiveCfg = Debug|Win32
{7DB1BB41-52AF-4092-8273-97EBAEBC5DFF}.Debug|Win32.Build.0 = Debug|Win32
{7DB1BB41-52AF-4092-8273-97EBAEBC5DFF}.Release|Win32.ActiveCfg = Release|Win32
{7DB1BB41-52AF-4092-8273-97EBAEBC5DFF}.Release|Win32.Build.0 = Release|Win32
{485163BE-45D9-4592-9B46-990E3BBD469F}.Debug|Win32.ActiveCfg = Debug|Win32
{485163BE-45D9-4592-9B46-990E3BBD469F}.Debug|Win32.Build.0 = Debug|Win32
{485163BE-45D9-4592-9B46-990E3BBD469F}.Release|Win32.ActiveCfg = Release|Win32
{485163BE-45D9-4592-9B46-990E3BBD469F}.Release|Win32.Build.0 = Release|Win32
{FFED7C5F-511E-4E41-A322-BCF2619E4CE0}.Debug|Win32.ActiveCfg = Debug|Win32
{FFED7C5F-511E-4E41-A322-BCF2619E4CE0}.Debug|Win32.Build.0 = Debug|Win32
{FFED7C5F-511E-4E41-A322-BCF2619E4CE0}.Release|Win32.ActiveCfg = Release|Win32
{FFED7C5F-511E-4E41-A322-BCF2619E4CE0}.Release|Win32.Build.0 = Release|Win32
{31F26B95-9CDF-45F5-993B-E78469DD15E4}.Debug|Win32.ActiveCfg = Debug|Win32
{31F26B95-9CDF-45F5-993B-E78469DD15E4}.Debug|Win32.Build.0 = Debug|Win32
{31F26B95-9CDF-45F5-993B-E78469DD15E4}.Release|Win32.ActiveCfg = Release|Win32
{31F26B95-9CDF-45F5-993B-E78469DD15E4}.Release|Win32.Build.0 = Release|Win32
{AFB2C54B-6917-40CD-B47A-22675CA36C23}.Debug|Win32.ActiveCfg = Debug|Win32
{AFB2C54B-6917-40CD-B47A-22675CA36C23}.Debug|Win32.Build.0 = Debug|Win32
{AFB2C54B-6917-40CD-B47A-22675CA36C23}.Release|Win32.ActiveCfg = Release|Win32
{AFB2C54B-6917-40CD-B47A-22675CA36C23}.Release|Win32.Build.0 = Release|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
{A3A2B16C-95EF-4131-95E3-2A8C554375F9} = {88CE991C-B050-4110-BDAB-51E31E80B98F}
{D8AFA152-1CD9-42AF-9468-197B931FE455} = {88CE991C-B050-4110-BDAB-51E31E80B98F}
{AFB2C54B-6917-40CD-B47A-22675CA36C23} = {3A49AB7E-834D-4727-821D-12CF868DE79C}
{8793DAE6-3B08-4B61-A458-AAE926594D73} = {A3A2B16C-95EF-4131-95E3-2A8C554375F9}
{2D3206A6-FAC3-4E70-B9C8-00E261BDCC1B} = {A3A2B16C-95EF-4131-95E3-2A8C554375F9}
{C55DA062-BEB7-404E-BE88-6BAAFA6297C4} = {CF33A73E-B002-4521-8351-CF97313A6F90}
{B87CF129-0FFC-40D7-BA65-8DE5E414DBAE} = {E83149FC-0273-4927-AA58-1F82176021F9}
{C3DB5C9F-C518-4EF5-A166-CCDB1D92B99A} = {E83149FC-0273-4927-AA58-1F82176021F9}
{3D904ED7-5D90-42C9-9556-60E8D82FC3D6} = {B87CF129-0FFC-40D7-BA65-8DE5E414DBAE}
{FE9BEBB5-D6F0-44C9-A06B-98B4F870F022} = {B87CF129-0FFC-40D7-BA65-8DE5E414DBAE}
{7DB1BB41-52AF-4092-8273-97EBAEBC5DFF} = {C3DB5C9F-C518-4EF5-A166-CCDB1D92B99A}
{B249EC63-BB69-41D2-8CAE-6BCF28705145} = {140F589B-9D78-4C0A-A7E1-5189D069C56E}
{485163BE-45D9-4592-9B46-990E3BBD469F} = {3D904ED7-5D90-42C9-9556-60E8D82FC3D6}
{872A42C2-9BC7-40B6-8631-C3AD28675479} = {DA852E81-3AAC-47DD-AD19-3575201A5FB7}
{FFED7C5F-511E-4E41-A322-BCF2619E4CE0} = {DA852E81-3AAC-47DD-AD19-3575201A5FB7}
{31F26B95-9CDF-45F5-993B-E78469DD15E4} = {8793DAE6-3B08-4B61-A458-AAE926594D73}
EndGlobalSection
EndGlobal
Binary file added SimulationRuntime/cpp/ReadMe.doc
Binary file not shown.
53 changes: 53 additions & 0 deletions SimulationRuntime/cpp/Source/DataExchange/Interfaces/IHistory.h
@@ -0,0 +1,53 @@
#pragma once



/*****************************************************************************/
/**
Abstract dataexchange interface for dae system
\date June, 1st, 2011
\author
*/
/*****************************************************************************
Copyright (c) 2008, OSMC
*****************************************************************************/
class IHistory
{
public:
/**
Returns simvalues for a time entry
*/
virtual void getSimResults(const double time,ublas::vector<double>& v,ublas::vector<double>& dv) =0;
/**
Returns all simulation results for all Varibables (R matrix) and rhs(dR)
*/
virtual void getSimResults(ublas::matrix<double>& R,ublas::matrix<double>& dR) =0;
/**
Returns all output variables results
*/
virtual void getOutputResults(ublas::matrix<double>& OR)=0;
/**
Retunrs all time entries
*/
virtual vector<double> getTimeEntries() =0;
/**
Returns numer of all time entries
*/
virtual unsigned long getSize()=0;
/**
Returns number of variabels (state-,algebraic variables)
*/
virtual unsigned long getDimR()=0;
/**
Retunrs number of state variables
*/
virtual unsigned long getDimdR()=0;
/**
Clears simulation buffer
*/
virtual void clear()=0;
virtual ~IHistory() {};
};
@@ -0,0 +1,10 @@
#include "stdafx.h"
#include "arrayoperations.h"
#include <sstream>

using namespace std;
void boost::assertion_failed(char const * expr, char const * function,
char const * file, long line)
{
fprintf(stdout, "Range check failed for Array please check indices \n" );
}

0 comments on commit ed30b83

Please sign in to comment.