From b395993f26c18bb39d0bb0ffbc86c90875b23071 Mon Sep 17 00:00:00 2001 From: Benjamin Uekermann Date: Fri, 22 Mar 2024 10:26:33 +0100 Subject: [PATCH] Fix inconsistencies in structure of some tutorials (#490) Co-authored-by: Gerasimos Chourdakis --- oscillator/README.md | 14 +++++++------- oscillator/{python => mass-left-fmi}/clean.sh | 0 .../fmi-settings.json | 2 +- .../precice-settings.json | 0 oscillator/mass-left-fmi/run.sh | 18 ++++++++++++++++++ oscillator/{fmi => mass-left-python}/clean.sh | 0 oscillator/mass-left-python/run.sh | 4 ++++ oscillator/mass-right-fmi/clean.sh | 8 ++++++++ .../fmi-settings.json | 2 +- .../precice-settings.json | 0 oscillator/mass-right-fmi/run.sh | 18 ++++++++++++++++++ oscillator/mass-right-python/clean.sh | 8 ++++++++ oscillator/mass-right-python/run.sh | 4 ++++ oscillator/plot-trajectory.py | 6 ++++-- .../{fmi => solver-fmi}/calculate-error.py | 0 .../{fmi => solver-fmi}/fmu/CMakeLists.txt | 0 .../fmu/Oscillator/FMI2.xml | 0 .../fmu/Oscillator/FMI3.xml | 0 .../fmu/Oscillator/buildDescription.xml | 0 .../fmu/Oscillator/config.h | 0 .../{fmi => solver-fmi}/fmu/Oscillator/model.c | 0 .../fmu/Oscillator/readme.html | 0 oscillator/{fmi => solver-fmi}/fmu/README.md | 0 .../{fmi => solver-fmi}/fmu/include/FMI.h | 0 .../{fmi => solver-fmi}/fmu/include/FMI2.h | 0 .../{fmi => solver-fmi}/fmu/include/FMI3.h | 0 .../fmu/include/cosimulation.h | 0 .../fmu/include/fmi2FunctionTypes.h | 0 .../fmu/include/fmi2Functions.h | 0 .../fmu/include/fmi2TypesPlatform.h | 0 .../fmu/include/fmi3FunctionTypes.h | 0 .../fmu/include/fmi3Functions.h | 0 .../fmu/include/fmi3PlatformTypes.h | 0 .../fmu/include/fmiFunctions.h | 0 .../fmu/include/fmiModelFunctions.h | 0 .../fmu/include/fmiModelTypes.h | 0 .../fmu/include/fmiPlatformTypes.h | 0 .../{fmi => solver-fmi}/fmu/include/model.h | 0 .../fmu/set_tool_version.py | 0 oscillator/{fmi => solver-fmi}/fmu/src/FMI.c | 0 oscillator/{fmi => solver-fmi}/fmu/src/FMI2.c | 0 oscillator/{fmi => solver-fmi}/fmu/src/FMI3.c | 0 .../{fmi => solver-fmi}/fmu/src/cosimulation.c | 0 .../fmu/src/fmi2Functions.c | 0 .../fmu/src/fmi3Functions.c | 0 .../fmu/thirdparty/LICENSE.txt | 0 .../{python => solver-python}/oscillator.py | 0 .../problemDefinition.py | 0 .../{python => solver-python}/timeSteppers.py | 0 49 files changed, 73 insertions(+), 11 deletions(-) rename oscillator/{python => mass-left-fmi}/clean.sh (100%) rename oscillator/{fmi/MassLeft => mass-left-fmi}/fmi-settings.json (90%) rename oscillator/{fmi/MassLeft => mass-left-fmi}/precice-settings.json (100%) create mode 100755 oscillator/mass-left-fmi/run.sh rename oscillator/{fmi => mass-left-python}/clean.sh (100%) create mode 100755 oscillator/mass-left-python/run.sh create mode 100755 oscillator/mass-right-fmi/clean.sh rename oscillator/{fmi/MassRight => mass-right-fmi}/fmi-settings.json (90%) rename oscillator/{fmi/MassRight => mass-right-fmi}/precice-settings.json (100%) create mode 100755 oscillator/mass-right-fmi/run.sh create mode 100755 oscillator/mass-right-python/clean.sh create mode 100755 oscillator/mass-right-python/run.sh rename oscillator/{fmi => solver-fmi}/calculate-error.py (100%) rename oscillator/{fmi => solver-fmi}/fmu/CMakeLists.txt (100%) rename oscillator/{fmi => solver-fmi}/fmu/Oscillator/FMI2.xml (100%) rename oscillator/{fmi => solver-fmi}/fmu/Oscillator/FMI3.xml (100%) rename oscillator/{fmi => solver-fmi}/fmu/Oscillator/buildDescription.xml (100%) rename oscillator/{fmi => solver-fmi}/fmu/Oscillator/config.h (100%) rename oscillator/{fmi => solver-fmi}/fmu/Oscillator/model.c (100%) rename oscillator/{fmi => solver-fmi}/fmu/Oscillator/readme.html (100%) rename oscillator/{fmi => solver-fmi}/fmu/README.md (100%) rename oscillator/{fmi => solver-fmi}/fmu/include/FMI.h (100%) rename oscillator/{fmi => solver-fmi}/fmu/include/FMI2.h (100%) rename oscillator/{fmi => solver-fmi}/fmu/include/FMI3.h (100%) rename oscillator/{fmi => solver-fmi}/fmu/include/cosimulation.h (100%) rename oscillator/{fmi => solver-fmi}/fmu/include/fmi2FunctionTypes.h (100%) rename oscillator/{fmi => solver-fmi}/fmu/include/fmi2Functions.h (100%) rename oscillator/{fmi => solver-fmi}/fmu/include/fmi2TypesPlatform.h (100%) rename oscillator/{fmi => solver-fmi}/fmu/include/fmi3FunctionTypes.h (100%) rename oscillator/{fmi => solver-fmi}/fmu/include/fmi3Functions.h (100%) rename oscillator/{fmi => solver-fmi}/fmu/include/fmi3PlatformTypes.h (100%) rename oscillator/{fmi => solver-fmi}/fmu/include/fmiFunctions.h (100%) rename oscillator/{fmi => solver-fmi}/fmu/include/fmiModelFunctions.h (100%) rename oscillator/{fmi => solver-fmi}/fmu/include/fmiModelTypes.h (100%) rename oscillator/{fmi => solver-fmi}/fmu/include/fmiPlatformTypes.h (100%) rename oscillator/{fmi => solver-fmi}/fmu/include/model.h (100%) rename oscillator/{fmi => solver-fmi}/fmu/set_tool_version.py (100%) rename oscillator/{fmi => solver-fmi}/fmu/src/FMI.c (100%) rename oscillator/{fmi => solver-fmi}/fmu/src/FMI2.c (100%) rename oscillator/{fmi => solver-fmi}/fmu/src/FMI3.c (100%) rename oscillator/{fmi => solver-fmi}/fmu/src/cosimulation.c (100%) rename oscillator/{fmi => solver-fmi}/fmu/src/fmi2Functions.c (100%) rename oscillator/{fmi => solver-fmi}/fmu/src/fmi3Functions.c (100%) rename oscillator/{fmi => solver-fmi}/fmu/thirdparty/LICENSE.txt (100%) rename oscillator/{python => solver-python}/oscillator.py (100%) rename oscillator/{python => solver-python}/problemDefinition.py (100%) rename oscillator/{python => solver-python}/timeSteppers.py (100%) diff --git a/oscillator/README.md b/oscillator/README.md index 42322024f..aba9ee992 100644 --- a/oscillator/README.md +++ b/oscillator/README.md @@ -22,32 +22,32 @@ Note that this case applies a Schwarz-type coupling method and not (like most ot There are two different implementations: - *Python*: A solver using the preCICE [Python bindings](https://www.precice.org/installation-bindings-python.html). This solver also depends on the Python libraries `numpy`, which you can get from your system package manager or with `pip3 install --user `. Using the option `-ts` allows you to pick the time stepping scheme being used. Available choices are Newmark beta, generalized alpha, explicit Runge Kutta 4, and implicit RadauIIA. The solver uses subcycling: Each participant performs 4 time steps in each time window. The data of these 4 substeps is then used by preCICE to create a third order B-spline interpolation (`waveform-degree="3"` in `precice-config.xml`). -- *FMI*: A solver using the [preCICE-FMI runner](https://github.com/precice/fmi-runner) (requires at least v0.2). The Runner executes the FMU model `Oscillator.fmu` for computation. The provided run script (see below) builds this model if not already there. If you want to change the model parameters or the initial conditions of the simulation, have a look inside the setting files for [MassLeft](https://github.com/precice/tutorials/tree/master/oscillator/fmi/MassLeft) and [MassRight](https://github.com/precice/tutorials/tree/master/oscillator/fmi/MassRight). For more information, please refer to [2]. +- *FMI*: A solver using the [preCICE-FMI runner](https://github.com/precice/fmi-runner) (requires at least v0.2). The Runner executes the FMU model `Oscillator.fmu` for computation. The provided run scripts (see below) build this model if not already there. For more information, please refer to [2]. ## Running the simulation Open two separate terminals and start both participants. For example, you can run a simulation where the left participant is computed in Python and the right participant is computed with FMI with these commands: ```bash -cd python -./run.sh -l +cd mass-left-python +./run.sh ``` and ```bash -cd fmi -./run.sh -r +cd mass-right-fmi +./run.sh ``` Of course, you can also use the same solver for both sides. ## Post-processing -Each simulation run creates two files containing position and velocity of the two masses over time. These files are called `trajectory-Mass-Left.csv` and `trajectory-Mass-Right.csv`. You can use the script `plot-trajectory.py` for post-processing. Type `python3 plot-trajectory --help` to see available options. You can, for example, plot the trajectory of the Python solver by running +Each simulation run creates two files containing position and velocity of the two masses over time. These files are called `trajectory-Mass-Left.csv` and `trajectory-Mass-Right.csv`. You can use the script `plot-trajectory.py` for post-processing. Type `python3 plot-trajectory --help` to see available options. You can, for example, plot the trajectory of the left mass of the Python solver by running ```bash -python3 plot-trajectory.py python/output/trajectory-Mass-Left.csv TRAJECTORY +python3 plot-trajectory.py mass-left-python/output/trajectory-Mass-Left.csv TRAJECTORY ``` The solvers allow you to study the effect of different time stepping schemes on energy conservation. Newmark beta conserves energy: diff --git a/oscillator/python/clean.sh b/oscillator/mass-left-fmi/clean.sh similarity index 100% rename from oscillator/python/clean.sh rename to oscillator/mass-left-fmi/clean.sh diff --git a/oscillator/fmi/MassLeft/fmi-settings.json b/oscillator/mass-left-fmi/fmi-settings.json similarity index 90% rename from oscillator/fmi/MassLeft/fmi-settings.json rename to oscillator/mass-left-fmi/fmi-settings.json index 1b7006286..dc4d752c2 100644 --- a/oscillator/fmi/MassLeft/fmi-settings.json +++ b/oscillator/mass-left-fmi/fmi-settings.json @@ -10,7 +10,7 @@ "mass.a": -197.392088022 }, "simulation_params": { - "fmu_file_name": "./Oscillator.fmu", + "fmu_file_name": "../solver-fmi/Oscillator.fmu", "output_file_name": "./output/trajectory-Mass-Left.csv", "output": ["mass.u", "mass.v"], "fmu_read_data_names": ["force_in"], diff --git a/oscillator/fmi/MassLeft/precice-settings.json b/oscillator/mass-left-fmi/precice-settings.json similarity index 100% rename from oscillator/fmi/MassLeft/precice-settings.json rename to oscillator/mass-left-fmi/precice-settings.json diff --git a/oscillator/mass-left-fmi/run.sh b/oscillator/mass-left-fmi/run.sh new file mode 100755 index 000000000..23c150102 --- /dev/null +++ b/oscillator/mass-left-fmi/run.sh @@ -0,0 +1,18 @@ +#!/bin/sh +set -e -u + + +if [ ! -f ../solver-fmi/Oscillator.fmu ]; then + cd ../solver-fmi/fmu + rm -rf build + mkdir build + cd build + # Both FMI_VERSION=3 and FMI_VERSION=2 are supported + cmake -DFMI_TYPE=CS -DFMI_VERSION=3 .. + make + cp ./Oscillator.fmu ../.. + cd ../../../mass-left-fmi +fi + +fmiprecice fmi-settings.json precice-settings.json +python3 ../solver-fmi/calculate-error.py ../mass-left-fmi/fmi-settings.json ../mass-left-fmi/precice-settings.json ../mass-right-fmi/fmi-settings.json ../mass-right-fmi/precice-settings.json Mass-Left diff --git a/oscillator/fmi/clean.sh b/oscillator/mass-left-python/clean.sh similarity index 100% rename from oscillator/fmi/clean.sh rename to oscillator/mass-left-python/clean.sh diff --git a/oscillator/mass-left-python/run.sh b/oscillator/mass-left-python/run.sh new file mode 100755 index 000000000..2784cfeba --- /dev/null +++ b/oscillator/mass-left-python/run.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -e -u + +python3 ../solver-python/oscillator.py Mass-Left \ No newline at end of file diff --git a/oscillator/mass-right-fmi/clean.sh b/oscillator/mass-right-fmi/clean.sh new file mode 100755 index 000000000..c7e3552ac --- /dev/null +++ b/oscillator/mass-right-fmi/clean.sh @@ -0,0 +1,8 @@ +#!/bin/sh +set -e -u + +. ../../tools/cleaning-tools.sh + +rm -rfv ./output/ + +clean_precice_logs . diff --git a/oscillator/fmi/MassRight/fmi-settings.json b/oscillator/mass-right-fmi/fmi-settings.json similarity index 90% rename from oscillator/fmi/MassRight/fmi-settings.json rename to oscillator/mass-right-fmi/fmi-settings.json index 3fdb5875b..fc59edc20 100644 --- a/oscillator/fmi/MassRight/fmi-settings.json +++ b/oscillator/mass-right-fmi/fmi-settings.json @@ -10,7 +10,7 @@ "mass.a": 157.913670417 }, "simulation_params": { - "fmu_file_name": "./Oscillator.fmu", + "fmu_file_name": "../solver-fmi/Oscillator.fmu", "output_file_name": "./output/trajectory-Mass-Right.csv", "output": ["mass.u", "mass.v"], "fmu_read_data_names": ["force_in"], diff --git a/oscillator/fmi/MassRight/precice-settings.json b/oscillator/mass-right-fmi/precice-settings.json similarity index 100% rename from oscillator/fmi/MassRight/precice-settings.json rename to oscillator/mass-right-fmi/precice-settings.json diff --git a/oscillator/mass-right-fmi/run.sh b/oscillator/mass-right-fmi/run.sh new file mode 100755 index 000000000..fd69b3d84 --- /dev/null +++ b/oscillator/mass-right-fmi/run.sh @@ -0,0 +1,18 @@ +#!/bin/sh +set -e -u + + +if [ ! -f ../solver-fmi/Oscillator.fmu ]; then + cd ../solver-fmi/fmu + rm -rf build + mkdir build + cd build + # Both FMI_VERSION=3 and FMI_VERSION=2 are supported + cmake -DFMI_TYPE=CS -DFMI_VERSION=3 .. + make + cp ./Oscillator.fmu ../.. + cd ../../../mass-right-fmi +fi + +fmiprecice fmi-settings.json precice-settings.json +python3 ../solver-fmi/calculate-error.py ../mass-left-fmi/fmi-settings.json ../mass-left-fmi/precice-settings.json ../mass-right-fmi/fmi-settings.json ../mass-right-fmi/precice-settings.json Mass-Right diff --git a/oscillator/mass-right-python/clean.sh b/oscillator/mass-right-python/clean.sh new file mode 100755 index 000000000..c7e3552ac --- /dev/null +++ b/oscillator/mass-right-python/clean.sh @@ -0,0 +1,8 @@ +#!/bin/sh +set -e -u + +. ../../tools/cleaning-tools.sh + +rm -rfv ./output/ + +clean_precice_logs . diff --git a/oscillator/mass-right-python/run.sh b/oscillator/mass-right-python/run.sh new file mode 100755 index 000000000..775d6a83e --- /dev/null +++ b/oscillator/mass-right-python/run.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -e -u + +python3 ../solver-python/oscillator.py Mass-Right \ No newline at end of file diff --git a/oscillator/plot-trajectory.py b/oscillator/plot-trajectory.py index 53d3a11db..dd26e43c5 100644 --- a/oscillator/plot-trajectory.py +++ b/oscillator/plot-trajectory.py @@ -16,8 +16,10 @@ class PlotType(Enum): args = parser.parse_args() filename = args.csvFile -split_filename = filename.split('/') -solver = split_filename[0] +split_foldername = filename.split('/') +casename = split_foldername[0] +split_casename = casename.split('-') +solver = split_casename[-1] if solver == 'python': df = pd.read_csv(filename, delimiter=';') diff --git a/oscillator/fmi/calculate-error.py b/oscillator/solver-fmi/calculate-error.py similarity index 100% rename from oscillator/fmi/calculate-error.py rename to oscillator/solver-fmi/calculate-error.py diff --git a/oscillator/fmi/fmu/CMakeLists.txt b/oscillator/solver-fmi/fmu/CMakeLists.txt similarity index 100% rename from oscillator/fmi/fmu/CMakeLists.txt rename to oscillator/solver-fmi/fmu/CMakeLists.txt diff --git a/oscillator/fmi/fmu/Oscillator/FMI2.xml b/oscillator/solver-fmi/fmu/Oscillator/FMI2.xml similarity index 100% rename from oscillator/fmi/fmu/Oscillator/FMI2.xml rename to oscillator/solver-fmi/fmu/Oscillator/FMI2.xml diff --git a/oscillator/fmi/fmu/Oscillator/FMI3.xml b/oscillator/solver-fmi/fmu/Oscillator/FMI3.xml similarity index 100% rename from oscillator/fmi/fmu/Oscillator/FMI3.xml rename to oscillator/solver-fmi/fmu/Oscillator/FMI3.xml diff --git a/oscillator/fmi/fmu/Oscillator/buildDescription.xml b/oscillator/solver-fmi/fmu/Oscillator/buildDescription.xml similarity index 100% rename from oscillator/fmi/fmu/Oscillator/buildDescription.xml rename to oscillator/solver-fmi/fmu/Oscillator/buildDescription.xml diff --git a/oscillator/fmi/fmu/Oscillator/config.h b/oscillator/solver-fmi/fmu/Oscillator/config.h similarity index 100% rename from oscillator/fmi/fmu/Oscillator/config.h rename to oscillator/solver-fmi/fmu/Oscillator/config.h diff --git a/oscillator/fmi/fmu/Oscillator/model.c b/oscillator/solver-fmi/fmu/Oscillator/model.c similarity index 100% rename from oscillator/fmi/fmu/Oscillator/model.c rename to oscillator/solver-fmi/fmu/Oscillator/model.c diff --git a/oscillator/fmi/fmu/Oscillator/readme.html b/oscillator/solver-fmi/fmu/Oscillator/readme.html similarity index 100% rename from oscillator/fmi/fmu/Oscillator/readme.html rename to oscillator/solver-fmi/fmu/Oscillator/readme.html diff --git a/oscillator/fmi/fmu/README.md b/oscillator/solver-fmi/fmu/README.md similarity index 100% rename from oscillator/fmi/fmu/README.md rename to oscillator/solver-fmi/fmu/README.md diff --git a/oscillator/fmi/fmu/include/FMI.h b/oscillator/solver-fmi/fmu/include/FMI.h similarity index 100% rename from oscillator/fmi/fmu/include/FMI.h rename to oscillator/solver-fmi/fmu/include/FMI.h diff --git a/oscillator/fmi/fmu/include/FMI2.h b/oscillator/solver-fmi/fmu/include/FMI2.h similarity index 100% rename from oscillator/fmi/fmu/include/FMI2.h rename to oscillator/solver-fmi/fmu/include/FMI2.h diff --git a/oscillator/fmi/fmu/include/FMI3.h b/oscillator/solver-fmi/fmu/include/FMI3.h similarity index 100% rename from oscillator/fmi/fmu/include/FMI3.h rename to oscillator/solver-fmi/fmu/include/FMI3.h diff --git a/oscillator/fmi/fmu/include/cosimulation.h b/oscillator/solver-fmi/fmu/include/cosimulation.h similarity index 100% rename from oscillator/fmi/fmu/include/cosimulation.h rename to oscillator/solver-fmi/fmu/include/cosimulation.h diff --git a/oscillator/fmi/fmu/include/fmi2FunctionTypes.h b/oscillator/solver-fmi/fmu/include/fmi2FunctionTypes.h similarity index 100% rename from oscillator/fmi/fmu/include/fmi2FunctionTypes.h rename to oscillator/solver-fmi/fmu/include/fmi2FunctionTypes.h diff --git a/oscillator/fmi/fmu/include/fmi2Functions.h b/oscillator/solver-fmi/fmu/include/fmi2Functions.h similarity index 100% rename from oscillator/fmi/fmu/include/fmi2Functions.h rename to oscillator/solver-fmi/fmu/include/fmi2Functions.h diff --git a/oscillator/fmi/fmu/include/fmi2TypesPlatform.h b/oscillator/solver-fmi/fmu/include/fmi2TypesPlatform.h similarity index 100% rename from oscillator/fmi/fmu/include/fmi2TypesPlatform.h rename to oscillator/solver-fmi/fmu/include/fmi2TypesPlatform.h diff --git a/oscillator/fmi/fmu/include/fmi3FunctionTypes.h b/oscillator/solver-fmi/fmu/include/fmi3FunctionTypes.h similarity index 100% rename from oscillator/fmi/fmu/include/fmi3FunctionTypes.h rename to oscillator/solver-fmi/fmu/include/fmi3FunctionTypes.h diff --git a/oscillator/fmi/fmu/include/fmi3Functions.h b/oscillator/solver-fmi/fmu/include/fmi3Functions.h similarity index 100% rename from oscillator/fmi/fmu/include/fmi3Functions.h rename to oscillator/solver-fmi/fmu/include/fmi3Functions.h diff --git a/oscillator/fmi/fmu/include/fmi3PlatformTypes.h b/oscillator/solver-fmi/fmu/include/fmi3PlatformTypes.h similarity index 100% rename from oscillator/fmi/fmu/include/fmi3PlatformTypes.h rename to oscillator/solver-fmi/fmu/include/fmi3PlatformTypes.h diff --git a/oscillator/fmi/fmu/include/fmiFunctions.h b/oscillator/solver-fmi/fmu/include/fmiFunctions.h similarity index 100% rename from oscillator/fmi/fmu/include/fmiFunctions.h rename to oscillator/solver-fmi/fmu/include/fmiFunctions.h diff --git a/oscillator/fmi/fmu/include/fmiModelFunctions.h b/oscillator/solver-fmi/fmu/include/fmiModelFunctions.h similarity index 100% rename from oscillator/fmi/fmu/include/fmiModelFunctions.h rename to oscillator/solver-fmi/fmu/include/fmiModelFunctions.h diff --git a/oscillator/fmi/fmu/include/fmiModelTypes.h b/oscillator/solver-fmi/fmu/include/fmiModelTypes.h similarity index 100% rename from oscillator/fmi/fmu/include/fmiModelTypes.h rename to oscillator/solver-fmi/fmu/include/fmiModelTypes.h diff --git a/oscillator/fmi/fmu/include/fmiPlatformTypes.h b/oscillator/solver-fmi/fmu/include/fmiPlatformTypes.h similarity index 100% rename from oscillator/fmi/fmu/include/fmiPlatformTypes.h rename to oscillator/solver-fmi/fmu/include/fmiPlatformTypes.h diff --git a/oscillator/fmi/fmu/include/model.h b/oscillator/solver-fmi/fmu/include/model.h similarity index 100% rename from oscillator/fmi/fmu/include/model.h rename to oscillator/solver-fmi/fmu/include/model.h diff --git a/oscillator/fmi/fmu/set_tool_version.py b/oscillator/solver-fmi/fmu/set_tool_version.py similarity index 100% rename from oscillator/fmi/fmu/set_tool_version.py rename to oscillator/solver-fmi/fmu/set_tool_version.py diff --git a/oscillator/fmi/fmu/src/FMI.c b/oscillator/solver-fmi/fmu/src/FMI.c similarity index 100% rename from oscillator/fmi/fmu/src/FMI.c rename to oscillator/solver-fmi/fmu/src/FMI.c diff --git a/oscillator/fmi/fmu/src/FMI2.c b/oscillator/solver-fmi/fmu/src/FMI2.c similarity index 100% rename from oscillator/fmi/fmu/src/FMI2.c rename to oscillator/solver-fmi/fmu/src/FMI2.c diff --git a/oscillator/fmi/fmu/src/FMI3.c b/oscillator/solver-fmi/fmu/src/FMI3.c similarity index 100% rename from oscillator/fmi/fmu/src/FMI3.c rename to oscillator/solver-fmi/fmu/src/FMI3.c diff --git a/oscillator/fmi/fmu/src/cosimulation.c b/oscillator/solver-fmi/fmu/src/cosimulation.c similarity index 100% rename from oscillator/fmi/fmu/src/cosimulation.c rename to oscillator/solver-fmi/fmu/src/cosimulation.c diff --git a/oscillator/fmi/fmu/src/fmi2Functions.c b/oscillator/solver-fmi/fmu/src/fmi2Functions.c similarity index 100% rename from oscillator/fmi/fmu/src/fmi2Functions.c rename to oscillator/solver-fmi/fmu/src/fmi2Functions.c diff --git a/oscillator/fmi/fmu/src/fmi3Functions.c b/oscillator/solver-fmi/fmu/src/fmi3Functions.c similarity index 100% rename from oscillator/fmi/fmu/src/fmi3Functions.c rename to oscillator/solver-fmi/fmu/src/fmi3Functions.c diff --git a/oscillator/fmi/fmu/thirdparty/LICENSE.txt b/oscillator/solver-fmi/fmu/thirdparty/LICENSE.txt similarity index 100% rename from oscillator/fmi/fmu/thirdparty/LICENSE.txt rename to oscillator/solver-fmi/fmu/thirdparty/LICENSE.txt diff --git a/oscillator/python/oscillator.py b/oscillator/solver-python/oscillator.py similarity index 100% rename from oscillator/python/oscillator.py rename to oscillator/solver-python/oscillator.py diff --git a/oscillator/python/problemDefinition.py b/oscillator/solver-python/problemDefinition.py similarity index 100% rename from oscillator/python/problemDefinition.py rename to oscillator/solver-python/problemDefinition.py diff --git a/oscillator/python/timeSteppers.py b/oscillator/solver-python/timeSteppers.py similarity index 100% rename from oscillator/python/timeSteppers.py rename to oscillator/solver-python/timeSteppers.py