├── FMI-tutorial-logo.png ├── README.md ├── part1 ├── Introduction-to-FMI.pdf └── Introduction-to-FMI.pptx ├── part2 ├── .gitignore ├── Controller.fmu ├── Controller.slx ├── Controller.slxc ├── Drive.fmu ├── Drive.ipynb ├── Drive_in.csv ├── ElectricDrive.mo └── MODELICA_Demo.mo ├── part3 ├── example_intocps_app │ ├── .project.json │ ├── FMUs │ │ ├── Controller.fmu │ │ ├── Drive.fmu │ │ └── Stimuli.fmu │ └── Multi-models │ │ └── mm-new │ │ ├── co-sim-unstable │ │ ├── R_2023_09_12-09_03_50_051 │ │ │ ├── coe.json │ │ │ ├── config-simulation.json │ │ │ ├── config.json │ │ │ ├── mm.json │ │ │ ├── outputs.csv │ │ │ ├── result.json │ │ │ └── simulation_results.zip │ │ ├── R_2023_09_12-09_04_10_963 │ │ │ ├── coe.json │ │ │ ├── config-simulation.json │ │ │ ├── config.json │ │ │ ├── mm.json │ │ │ ├── outputs.csv │ │ │ ├── result.json │ │ │ └── simulation_results.zip │ │ └── coe.json │ │ ├── co-sim │ │ ├── R_2023_09_12-09_02_41_466 │ │ │ ├── coe.json │ │ │ ├── config-simulation.json │ │ │ ├── config.json │ │ │ ├── mm.json │ │ │ ├── outputs.csv │ │ │ ├── result.json │ │ │ └── simulation_results.zip │ │ └── coe.json │ │ └── mm.json ├── into-cps_demo.pdf ├── into-cps_demo.pptx └── tutorial_multiple_FMUs │ ├── baseline_scenario.json │ ├── baseline_scenario_template.json │ ├── coe-1.0.10-jar-with-dependencies.jar │ ├── decoupled_scenario.json │ ├── fmus │ ├── Control.fmu │ ├── Drive.fmu │ ├── MODELICA_Demo.ControlledElectricDrive.fmu │ ├── Stimuli.fmu │ └── linux │ │ ├── MODELICA_Demo.Control.fmu │ │ ├── MODELICA_Demo.ControlledElectricDrive.fmu │ │ ├── MODELICA_Demo.Drive.fmu │ │ └── MODELICA_Demo.Stimuli.fmu │ ├── interaction_with_multiple_fmus.ipynb │ ├── requirements.txt │ └── single_fmu_scenario.json ├── part4 ├── FMI-overall.pdf └── FMI-overall.pptx └── photos ├── 231009-modelica23-0180-1920px.jpg ├── 231009-modelica23-0181-1920px.jpg ├── 231009-modelica23-0182-1920px.jpg ├── 231009-modelica23-0183-1920px.jpg ├── 231009-modelica23-0184-1920px.jpg ├── 231009-modelica23-0185-1920px.jpg ├── 231009-modelica23-0187-1920px.jpg ├── 231009-modelica23-0190-1920px.jpg ├── 231009-modelica23-0191-1920px.jpg ├── 231009-modelica23-0192-1920px.jpg └── README.md /FMI-tutorial-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/modelica/fmi-beginners-tutorial-2023/a7d1f8edccd09e457257b8d4b3b792ae8611ae4c/FMI-tutorial-logo.png -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ![FMI-tutorial-logo](FMI-tutorial-logo.png) 2 | 3 | # FMI Beginner's tutorial 4 | 5 | This repository contains the agenda and materials for the [FMI Beginner's tutorial](https://www.conftool.com/modelica2023/index.php?page=browseSessions&form_session=5) presented at the [15th International Modelica Conference 2023](https://2023.international.conference.modelica.org/). A recording is available [on YouTube](https://www.youtube.com/watch?v=RlAafdCKCHU). 6 | 7 | ## Part 1: Introduction to the FMI (40 min) 8 | 9 | by [Christian Bertsch](https://github.com/chrbertsch) 10 | 11 | [Presentation](part1/Introduction-to-FMI.pdf) covering 12 | 13 | - the motivation and history of FMI 14 | - general technical concepts 15 | - tool support 16 | - an outlook on FMI 3.0 17 | 18 | ## Part 2: Working with FMUs (45 min) 19 | 20 | by [Torsten Sommer](https://github.com/t-sommer) 21 | 22 | ### Prerequisites 23 | 24 | - [Python with fmpy[complete]](https://github.com/CATIA-Systems/FMPy#installation) 25 | - [Dymola](https://www.3ds.com/products-services/catia/products/dymola/) (optional) 26 | - [Simulink with Coder](https://mathworks.com/products/simulink-coder.html) and [FMI Kit](https://github.com/CATIA-Systems/FMIKit-Simulink) (optional) 27 | 28 | ### Schedule 29 | 30 | Live demo + Jupyter notebook 31 | 32 | - FMU export (from Dymola) 33 | - open `MODELICA_Demo.Drive` in Dymola and export it as a source code FMU 34 | 35 | - FMU export (from Simulink with FMIKit) 36 | - download and install FMI Kit for Simulink 37 | - open `Controller.slx` with grtfmi.tlc as a source code FMU 38 | 39 | - Validation on Website 40 | 41 | - work with FMUs in FMPy 42 | - set up FMPy (with [mambaforge](https://github.com/conda-forge/miniforge/releases)) 43 | - open GUI, create file association, create desktop shortcut 44 | - view the model info 45 | - view the documentation 46 | - simulate the Drive FMU and plot the result 47 | - create an input CSV file 48 | - set the stop time, parameters, output interval (loadInertia1.J = 10) 49 | - validate the Drive FMU 50 | - compile platform binary for the Drive FMU 51 | - log debug info and FMI calls + short discussion of FMI calling sequence 52 | - generate a Python notebook from the FMU and run it 53 | 54 | - simulate an FMU with fmusim 55 | - download the Reference FMUs 56 | - simulate the Drive model with fmusim using the input file and set a parameter 57 | - plot the result CSV with Excel 58 | 59 | ## Break (30 min) 60 | 61 | ## Part 3: Connecting Multiple FMUs (45 min) 62 | 63 | by [Maurizio Palmieri](https://github.com/mapalmieri) and [Cláudio Gomes](https://github.com/clagms) 64 | 65 | ### Prerequisites 66 | 67 | 1. Optional requisites for following along in the live demo: 68 | 1. Java (recommended version 11) 69 | 2. Install the into-cps application. A full guide can be found in this video: https://youtu.be/HkWh-PubYQo 70 | 3. Have a Google account that you can use for Google Colab. 71 | 72 | ### Schedule 73 | 74 | 1. Live demo using the into-cps application (use the [slides](./part3/into-cps_demo.pptx) to follow along): 75 | 1. Setup 76 | 1. Pre-requisites: show that java is installed. 77 | 2. Download intocps application 78 | 3. Download coe from download manager. 79 | 4. Launch COE from UI to show that it works. 80 | 2. Configure a multimodel 81 | 1. Create new project (created project can be found in [part3/example_intocps_app](part3/example_intocps_app)) 82 | 2. Locate FMUs to be used. 83 | 3. Move them to new project folder. 84 | 4. Create multi model 85 | 3. Configure a co-simulation 86 | 1. Create cosim configuration. 87 | 2. Explain the different options. 88 | 3. Run it. 89 | 4. Open the results folder 90 | 4. Exploring alternative co-simulation configurations. 91 | 1. Create new cosim config, with an increasing step size, and show instability creeping in. 92 | 5. Summary 93 | 94 | 2. Using Google Colab, run the Jupyter notebook found in [part3/tutorial_multiple_FMUs](./part3/tutorial_multiple_FMUs/interaction_with_multiple_fmus.ipynb) 95 | 1. Run a co-simulation from the command line 96 | 1. Run a co-simulation with a single FMU 97 | 2. Run a co-simulation with multiple FMUs 98 | 2. Measure Accuracy of the Co-simulation Wrt to Baseline 99 | 1. Co-simulation Scenario with Baseline 100 | 2. Impact of Step Size on the Accuracy 101 | 102 | ## Part 4: Closing Session (10 min) 103 | 104 | by [Cinzia Bernardeschi](https://github.com/cbernardeschi) and [Cláudio Gomes](https://github.com/clagms) 105 | 106 | Slides can be downloaded [here](./part4/FMI-overall.pdf). 107 | 108 | ### Schedule 109 | 1. Overview of some FMI Applications 110 | 2. Role of FMI in Digital twins. 111 | 112 | ## Q&A (10 min) 113 | 114 | # Photos of the Event 115 | 116 | ![Photo](photos/231009-modelica23-0180-1920px.jpg) 117 | ![Photo](photos/231009-modelica23-0181-1920px.jpg) 118 | ![Photo](photos/231009-modelica23-0182-1920px.jpg) 119 | ![Photo](photos/231009-modelica23-0183-1920px.jpg) 120 | ![Photo](photos/231009-modelica23-0184-1920px.jpg) 121 | ![Photo](photos/231009-modelica23-0185-1920px.jpg) 122 | ![Photo](photos/231009-modelica23-0187-1920px.jpg) 123 | ![Photo](photos/231009-modelica23-0190-1920px.jpg) 124 | ![Photo](photos/231009-modelica23-0191-1920px.jpg) 125 | ![Photo](photos/231009-modelica23-0192-1920px.jpg) 126 | 127 | # Copyright and License 128 | 129 | Code and documentation copyright (C) 2023 the Modelica Association Project FMI. 130 | Code released under the [2-Clause BSD License](https://opensource.org/licenses/BSD-2-Clause). 131 | Docs released under [Attribution-ShareAlike 4.0 International](https://creativecommons.org/licenses/by-sa/4.0/). 132 | -------------------------------------------------------------------------------- /part1/Introduction-to-FMI.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/modelica/fmi-beginners-tutorial-2023/a7d1f8edccd09e457257b8d4b3b792ae8611ae4c/part1/Introduction-to-FMI.pdf -------------------------------------------------------------------------------- /part1/Introduction-to-FMI.pptx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/modelica/fmi-beginners-tutorial-2023/a7d1f8edccd09e457257b8d4b3b792ae8611ae4c/part1/Introduction-to-FMI.pptx -------------------------------------------------------------------------------- /part2/.gitignore: -------------------------------------------------------------------------------- 1 | .ipynb_checkpoints/ 2 | slprj/ 3 | *_rtw/ -------------------------------------------------------------------------------- /part2/Controller.fmu: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/modelica/fmi-beginners-tutorial-2023/a7d1f8edccd09e457257b8d4b3b792ae8611ae4c/part2/Controller.fmu -------------------------------------------------------------------------------- /part2/Controller.slx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/modelica/fmi-beginners-tutorial-2023/a7d1f8edccd09e457257b8d4b3b792ae8611ae4c/part2/Controller.slx -------------------------------------------------------------------------------- /part2/Controller.slxc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/modelica/fmi-beginners-tutorial-2023/a7d1f8edccd09e457257b8d4b3b792ae8611ae4c/part2/Controller.slxc -------------------------------------------------------------------------------- /part2/Drive.fmu: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/modelica/fmi-beginners-tutorial-2023/a7d1f8edccd09e457257b8d4b3b792ae8611ae4c/part2/Drive.fmu -------------------------------------------------------------------------------- /part2/Drive_in.csv: -------------------------------------------------------------------------------- 1 | "time","V","LoadTorque_Nm" 2 | 0.0,50,0 3 | 0.5,50,0 4 | 0.5,50,-100 5 | 1.0,50,-100 -------------------------------------------------------------------------------- /part2/ElectricDrive.mo: -------------------------------------------------------------------------------- 1 | within ; 2 | model ElectricDrive 3 | Modelica.Blocks.Interfaces.RealInput v(unit="V") "Armature voltage" 4 | annotation ( 5 | Placement(transformation(extent = {{-120, -10}, {-100, 10}}), iconTransformation(extent={{-140, 6 | -20},{-100,20}}))); 7 | Modelica.Electrical.Analog.Sources.SignalVoltage signalVoltage annotation ( 8 | Placement(transformation(extent = {{-20, 20}, {-40, 40}}, rotation = 0))); 9 | Modelica.Electrical.Analog.Basic.Ground ground annotation ( 10 | Placement(transformation(origin = {-50, 30}, extent = {{-10, -10}, {10, 10}}, rotation = 270))); 11 | Modelica.Mechanics.Rotational.Components.Inertia loadInertia( 12 | J=1, 13 | phi(fixed=true, start=0), 14 | w(fixed=true, start=0)) annotation (Placement(transformation(extent={{30,-10}, 15 | {50,10}}, rotation=0))); 16 | Modelica.Mechanics.Rotational.Components.IdealGear idealGear(ratio = 10) annotation ( 17 | Placement(transformation(extent = {{0, -10}, {20, 10}}))); 18 | Modelica.Mechanics.Rotational.Sensors.SpeedSensor speedSensor annotation ( 19 | Placement(transformation(extent = {{-10, -10}, {10, 10}}, rotation = 270, origin = {0, -30}))); 20 | Modelica.Blocks.Interfaces.RealOutput w "Motor speed" 21 | annotation ( 22 | Placement(transformation(extent = {{-10, -10}, {10, 10}}, rotation = 270, origin={0,-110}), iconTransformation(extent = {{-10, -10}, {10, 10}}, rotation = 270, origin={0,-110}))); 23 | Modelica.Mechanics.Rotational.Sources.Torque torque annotation ( 24 | Placement(transformation(extent = {{10, -10}, {-10, 10}}, rotation = 0, origin = {70, 0}))); 25 | Modelica.Blocks.Interfaces.RealInput tau(unit="N.m") "Load torque" 26 | annotation (Placement(transformation( 27 | extent={{-10,-10},{10,10}}, 28 | rotation=180, 29 | origin={110,0}), iconTransformation( 30 | extent={{-20,-20},{20,20}}, 31 | rotation=180, 32 | origin={120,0}))); 33 | Modelica.Electrical.Machines.BasicMachines.DCMachines.DC_PermanentMagnet dcpm(VaNominal = dcpmData.VaNominal, IaNominal = dcpmData.IaNominal, wNominal = dcpmData.wNominal, TaNominal = dcpmData.TaNominal, Ra = dcpmData.Ra, TaRef = dcpmData.TaRef, La = dcpmData.La, Jr = dcpmData.Jr, useSupport = false, Js = dcpmData.Js, frictionParameters = dcpmData.frictionParameters, coreParameters = dcpmData.coreParameters, strayLoadParameters = dcpmData.strayLoadParameters, brushParameters = dcpmData.brushParameters, TaOperational = 293.15, alpha20a = dcpmData.alpha20a, phiMechanical(fixed = false), wMechanical(fixed = false), ia(fixed = true)) annotation ( 34 | Placement(transformation(extent = {{-40, -10}, {-20, 10}}))); 35 | parameter Modelica.Electrical.Machines.Utilities.ParameterRecords.DcPermanentMagnetData dcpmData(Jr = 0.001, wNominal = 149.22565104552, brushParameters(V = 0.7)) annotation ( 36 | Placement(transformation(extent = {{-40, -40}, {-20, -20}}))); 37 | equation 38 | connect(ground.p, signalVoltage.n) annotation ( 39 | Line(points={{-40,30},{-40,30}}, color = {0, 0, 255}, smooth = Smooth.None)); 40 | connect(v, signalVoltage.v) annotation ( 41 | Line(points={{-110,0},{-70,0},{-70,50},{-30,50},{-30,42}}, color = {0, 0, 127}, smooth = Smooth.None)); 42 | connect(idealGear.flange_b, loadInertia.flange_a) annotation (Line( 43 | points={{20,0},{30,0}}, 44 | color={0,0,0}, 45 | smooth=Smooth.None)); 46 | connect(idealGear.flange_a, speedSensor.flange) annotation ( 47 | Line(points = {{0, 0}, {1.77636e-15, 0}, {1.77636e-15, -20}}, color = {0, 0, 0}, smooth = Smooth.None)); 48 | connect(speedSensor.w, w) annotation ( 49 | Line(points={{-1.9984e-15,-41},{-1.9984e-15,-75.5},{0,-75.5},{0,-110}}, 50 | color = {0, 0, 127}, smooth = Smooth.None)); 51 | connect(torque.flange, loadInertia.flange_b) annotation (Line( 52 | points={{60,0},{50,0}}, 53 | color={0,0,0}, 54 | smooth=Smooth.None)); 55 | connect(tau, torque.tau) annotation (Line( 56 | points={{110,-4.44089e-16},{94,-4.44089e-16},{94,0},{82,0}}, 57 | color={0,0,127}, 58 | smooth=Smooth.None)); 59 | connect(dcpm.flange, idealGear.flange_a) annotation ( 60 | Line(points = {{-20, 0}, {0, 0}}, color = {0, 0, 0})); 61 | connect(dcpm.pin_an, ground.p) annotation ( 62 | Line(points = {{-36, 10}, {-40, 10}, {-40, 30}}, color = {0, 0, 255})); 63 | connect(dcpm.pin_ap, signalVoltage.p) annotation ( 64 | Line(points = {{-24, 10}, {-20, 10}, {-20, 30}}, color = {0, 0, 255})); 65 | annotation ( 66 | Diagram(coordinateSystem(preserveAspectRatio = false, extent = {{-100, -100}, {100, 100}})), 67 | Icon(coordinateSystem(preserveAspectRatio = false, extent = {{-100, -100}, {100, 100}}), graphics={ 68 | Rectangle( 69 | extent={{-100,-100},{100,100}}, 70 | lineColor={0,0,127}, 71 | fillColor={255,255,255}, 72 | fillPattern=FillPattern.Solid), Text( 73 | extent={{0,150},{0,110}}, 74 | textColor={0,0,255}, 75 | textString="%name"), 76 | Text( 77 | extent={{-90,10},{-90,-10}}, 78 | textColor={0,0,0}, 79 | horizontalAlignment=TextAlignment.Left, 80 | textString="V"), 81 | Text( 82 | extent={{90,10},{90,-10}}, 83 | textColor={0,0,0}, 84 | horizontalAlignment=TextAlignment.Right, 85 | textString="tau"), 86 | Text( 87 | extent={{0,-70},{0,-90}}, 88 | textColor={0,0,0}, 89 | textString="w")}), 90 | uses(Modelica(version="4.0.0"))); 91 | end ElectricDrive; 92 | -------------------------------------------------------------------------------- /part2/MODELICA_Demo.mo: -------------------------------------------------------------------------------- 1 | package MODELICA_Demo 2 | extends Modelica.Icons.Package; 3 | model Stimuli 4 | Modelica.Blocks.Sources.Step stepTau(startTime = 0.5, height = 3) annotation ( 5 | Placement(transformation(extent = {{-10, -10}, {10, 10}}, rotation = 0, origin = {-30, -50}))); 6 | Modelica.Blocks.Sources.Step stepW(startTime = 0.1, height = 10) annotation ( 7 | Placement(transformation(extent = {{-40, 40}, {-20, 60}}, rotation = 0))); 8 | Modelica.Blocks.Interfaces.RealOutput w_desired annotation ( 9 | Placement(transformation(extent = {{100, 40}, {120, 60}}), iconTransformation(extent = {{100, 40}, {120, 60}}))); 10 | Modelica.Blocks.Interfaces.RealOutput LoadTorque_Nm annotation ( 11 | Placement(transformation(extent = {{100, -60}, {120, -40}}), iconTransformation(extent = {{100, -60}, {120, -40}}))); 12 | equation 13 | connect(stepW.y, w_desired) annotation ( 14 | Line(points = {{-19, 50}, {110, 50}}, color = {0, 0, 127}, smooth = Smooth.None)); 15 | connect(stepTau.y, LoadTorque_Nm) annotation ( 16 | Line(points = {{-19, -50}, {110, -50}}, color = {0, 0, 127}, smooth = Smooth.None)); 17 | annotation ( 18 | Diagram(coordinateSystem(preserveAspectRatio = false, extent = {{-100, -100}, {100, 100}})), 19 | Icon(graphics={ Rectangle(extent = {{-100, 100}, {100, -100}}, lineColor = {28, 108, 200}, fillColor = {170, 255, 255}, 20 | fillPattern = FillPattern.Solid), Text(extent = {{-60, 60}, {100, 40}}, lineColor = {28, 108, 200}, textString = "w_desired"), Text(extent = {{-36, -40}, {100, -60}}, lineColor = {28, 108, 200}, textString = "tau_load")})); 21 | end Stimuli; 22 | 23 | model Control 24 | Modelica.Blocks.Interfaces.RealInput w_desired annotation ( 25 | Placement(visible = true,transformation(extent = {{-140, -20}, {-100, 20}}, rotation = 0), iconTransformation(extent = {{-140, 20}, {-100, 60}}, rotation = 0))); 26 | Modelica.Blocks.Interfaces.RealOutput V annotation ( 27 | Placement(transformation(extent = {{90, -10}, {110, 10}}), iconTransformation(extent = {{100, -10}, {120, 10}}))); 28 | Modelica.Blocks.Interfaces.RealInput w annotation ( 29 | Placement(visible = true,transformation(extent = {{-140, -100}, {-100, -60}}, rotation = 0), iconTransformation( origin = {-120, -40},extent = {{-20, -20}, {20, 20}}, rotation = 0))); 30 | Modelica.Blocks.Math.Feedback speederror annotation ( 31 | Placement(transformation(extent = {{-30, -10}, {-10, 10}}, rotation = 0))); 32 | Modelica.Blocks.Continuous.PI PI(k = 0.1, T = 0.005, initType = Modelica.Blocks.Types.Init.InitialOutput) annotation ( 33 | Placement(transformation(extent = {{20, -10}, {40, 10}}))); 34 | equation 35 | connect(w, speederror.u2) annotation ( 36 | Line(points = {{-120, -80}, {-20, -80}, {-20, -8}}, color = {0, 0, 127})); 37 | connect(w_desired, speederror.u1) annotation ( 38 | Line(points = {{-120, 0}, {-28, 0}}, color = {0, 0, 127}, smooth = Smooth.None)); 39 | connect(speederror.y, PI.u) annotation ( 40 | Line(points = {{-11, 0}, {18, 0}}, color = {0, 0, 127}, smooth = Smooth.None)); 41 | connect(PI.y, V) annotation ( 42 | Line(points = {{41, 0}, {100, 0}}, color = {0, 0, 127}, smooth = Smooth.None)); 43 | annotation ( 44 | Diagram(coordinateSystem(preserveAspectRatio = false, extent = {{-100, -100}, {100, 100}})), 45 | Icon(coordinateSystem(preserveAspectRatio = false, initialScale = 0.1), graphics={ Text(origin = {0, 40}, lineColor = {0, 0, 255}, extent = {{-180, 40}, {-100, 20}}, textString = "w_desired"), Text(origin = {-160, 60},lineColor = {0, 0, 255}, extent = {{20, -60}, {40, -80}}, textString = "w"), Text(lineColor = {0, 0, 255}, extent = {{100, 40}, {120, 20}}, textString = "V"), Rectangle(lineColor = {0, 0, 255}, fillColor = {213, 255, 170}, 46 | fillPattern = FillPattern.Solid, extent = {{-100, 60}, {100, -60}}), Text(origin = {0, -56},lineColor = {0, 0, 255}, extent = {{60, 50}, {-60, 70}}, textString = "%name")})); 47 | end Control; 48 | 49 | model Drive 50 | Modelica.Blocks.Interfaces.RealInput V annotation ( 51 | Placement(transformation(extent = {{-120, -10}, {-100, 10}}), iconTransformation(extent={{-140,20}, 52 | {-100,60}}))); 53 | Modelica.Electrical.Analog.Sources.SignalVoltage signalVoltage annotation ( 54 | Placement(transformation(extent = {{-20, 20}, {-40, 40}}, rotation = 0))); 55 | Modelica.Electrical.Analog.Basic.Ground ground annotation ( 56 | Placement(transformation(origin = {-50, 30}, extent = {{-10, -10}, {10, 10}}, rotation = 270))); 57 | Modelica.Mechanics.Rotational.Components.Inertia loadInertia1(J = 1, phi(fixed = true, start = 0), w(fixed = true, start = 0)) annotation ( 58 | Placement(transformation(extent = {{30, -10}, {50, 10}}, rotation = 0))); 59 | Modelica.Mechanics.Rotational.Components.IdealGear idealGear(ratio = 10) annotation ( 60 | Placement(transformation(extent = {{0, -10}, {20, 10}}))); 61 | Modelica.Mechanics.Rotational.Sensors.SpeedSensor speedSensor annotation ( 62 | Placement(transformation(extent = {{-10, -10}, {10, 10}}, rotation = 270, origin = {0, -30}))); 63 | Modelica.Blocks.Interfaces.RealOutput w annotation ( 64 | Placement(transformation(extent = {{-10, -10}, {10, 10}}, rotation = 270, origin = {0, -100}), iconTransformation(extent = {{-10, -10}, {10, 10}}, rotation = 270, origin={0,-70}))); 65 | Modelica.Mechanics.Rotational.Sources.Torque torque annotation ( 66 | Placement(transformation(extent = {{10, -10}, {-10, 10}}, rotation = 0, origin = {70, 0}))); 67 | Modelica.Blocks.Interfaces.RealInput LoadTorque_Nm annotation ( 68 | Placement(transformation(extent = {{-10, -10}, {10, 10}}, rotation = 180, origin = {110, 0}), iconTransformation(extent={{20,-20}, 69 | {-20,20}}, rotation = 180, origin={-120,-40}))); 70 | Modelica.Electrical.Machines.BasicMachines.DCMachines.DC_PermanentMagnet dcpm(VaNominal = dcpmData.VaNominal, IaNominal = dcpmData.IaNominal, wNominal = dcpmData.wNominal, TaNominal = dcpmData.TaNominal, Ra = dcpmData.Ra, TaRef = dcpmData.TaRef, La = dcpmData.La, Jr = dcpmData.Jr, useSupport = false, Js = dcpmData.Js, frictionParameters = dcpmData.frictionParameters, coreParameters = dcpmData.coreParameters, strayLoadParameters = dcpmData.strayLoadParameters, brushParameters = dcpmData.brushParameters, TaOperational = 293.15, alpha20a = dcpmData.alpha20a, phiMechanical(fixed = false), wMechanical(fixed = false), ia(fixed = true)) annotation ( 71 | Placement(transformation(extent = {{-40, -10}, {-20, 10}}))); 72 | parameter Modelica.Electrical.Machines.Utilities.ParameterRecords.DcPermanentMagnetData dcpmData(Jr = 0.001, wNominal = 149.22565104552, brushParameters(V = 0.7)) annotation ( 73 | Placement(transformation(extent = {{-40, -40}, {-20, -20}}))); 74 | equation 75 | connect(ground.p, signalVoltage.n) annotation ( 76 | Line(points = {{-40, 30}, {-40, 30}}, color = {0, 0, 255}, smooth = Smooth.None)); 77 | connect(V, signalVoltage.v) annotation ( 78 | Line(points={{-110,0},{-70,0},{-70,50},{-30,50},{-30,42}}, color = {0, 0, 127}, smooth = Smooth.None)); 79 | connect(idealGear.flange_b, loadInertia1.flange_a) annotation ( 80 | Line(points = {{20, 0}, {30, 0}}, color = {0, 0, 0}, smooth = Smooth.None)); 81 | connect(idealGear.flange_a, speedSensor.flange) annotation ( 82 | Line(points = {{0, 0}, {1.77636e-15, 0}, {1.77636e-15, -20}}, color = {0, 0, 0}, smooth = Smooth.None)); 83 | connect(speedSensor.w, w) annotation ( 84 | Line(points = {{-1.9984e-15, -41}, {0, -41}, {0, -100}}, color = {0, 0, 127}, smooth = Smooth.None)); 85 | connect(torque.flange, loadInertia1.flange_b) annotation ( 86 | Line(points = {{60, 0}, {50, 0}}, color = {0, 0, 0}, smooth = Smooth.None)); 87 | connect(LoadTorque_Nm, torque.tau) annotation ( 88 | Line(points = {{110, -4.44089e-16}, {94, -4.44089e-16}, {94, 0}, {82, 0}}, color = {0, 0, 127}, smooth = Smooth.None)); 89 | connect(dcpm.flange, idealGear.flange_a) annotation ( 90 | Line(points = {{-20, 0}, {0, 0}}, color = {0, 0, 0})); 91 | connect(dcpm.pin_an, ground.p) annotation ( 92 | Line(points = {{-36, 10}, {-40, 10}, {-40, 30}}, color = {0, 0, 255})); 93 | connect(dcpm.pin_ap, signalVoltage.p) annotation ( 94 | Line(points = {{-24, 10}, {-20, 10}, {-20, 30}}, color = {0, 0, 255})); 95 | annotation ( 96 | Diagram(coordinateSystem(preserveAspectRatio = false, extent = {{-100, -100}, {100, 100}})), 97 | Icon(coordinateSystem(preserveAspectRatio = false, extent = {{-100, -100}, {100, 100}}), graphics={ Text(extent={{ 98 | -140,80},{-120,60}}, lineColor = {0, 0, 255}, textString = "V"), Rectangle(extent={{ 99 | -100,60},{100,-60}}, lineColor = {0, 0, 255}, fillColor = {170, 213, 255}, 100 | fillPattern = FillPattern.Solid), Text(extent={{ 101 | 10,-60},{30,-80}}, lineColor = {0, 0, 255}, textString = "w"), Text(extent={{ 102 | 58,-10},{-62,10}}, lineColor = {0, 0, 255}, textString = "%name"), Text(extent={{ 103 | -140,0},{-100,-20}}, lineColor = {0, 0, 255}, textString = "tau")})); 104 | end Drive; 105 | 106 | model ControlledElectricDrive 107 | extends Modelica.Icons.Example; 108 | Modelica.Electrical.Analog.Sources.SignalVoltage signalVoltage annotation ( 109 | Placement(visible = true, transformation(extent = {{0, 20}, {-20, 40}}, rotation = 0))); 110 | Modelica.Electrical.Analog.Basic.Ground ground annotation ( 111 | Placement(visible = true, transformation(origin = {-30, 30}, extent = {{-10, -10}, {10, 10}}, rotation = 270))); 112 | Modelica.Blocks.Math.Feedback speederror annotation ( 113 | Placement(visible = true, transformation(extent = {{-80, -10}, {-60, 10}}, rotation = 0))); 114 | Modelica.Blocks.Sources.Step stepV(startTime = 0.1, height = 10) annotation ( 115 | Placement(transformation(extent = {{-100, -10}, {-80, 10}}, rotation = 0))); 116 | Modelica.Mechanics.Rotational.Sensors.SpeedSensor speedSensor annotation ( 117 | Placement(transformation(extent = {{-10, -10}, {10, 10}}, rotation = 270, origin = {10, -30}))); 118 | Modelica.Mechanics.Rotational.Components.IdealGear idealGear(ratio = 10) annotation ( 119 | Placement(transformation(extent = {{10, -10}, {30, 10}}))); 120 | Modelica.Mechanics.Rotational.Sources.Torque torque annotation ( 121 | Placement(transformation(extent = {{10, -10}, {-10, 10}}, rotation = 0, origin = {60, 0}))); 122 | Modelica.Blocks.Sources.Step stepTau(startTime = 0.5, height = 3) annotation ( 123 | Placement(transformation(extent = {{10, -10}, {-10, 10}}, rotation = 0, origin = {90, 0}))); 124 | Modelica.Blocks.Continuous.PI PI(k = 0.1, T = 0.005, initType = Modelica.Blocks.Types.Init.InitialOutput) annotation ( 125 | Placement(transformation(extent = {{-60, -10}, {-40, 10}}))); 126 | Modelica.Mechanics.Rotational.Components.Inertia loadInertia1(J = 1, phi(start = 0, fixed = true), w(start = 0, fixed = true)) annotation ( 127 | Placement(transformation(extent = {{30, -10}, {50, 10}}, rotation = 0))); 128 | Modelica.Blocks.Interfaces.RealOutput w annotation ( 129 | Placement(transformation(extent = {{90, -70}, {110, -50}}))); 130 | Modelica.Electrical.Machines.BasicMachines.DCMachines.DC_PermanentMagnet dcpm(VaNominal = dcpmData.VaNominal, IaNominal = dcpmData.IaNominal, wNominal = dcpmData.wNominal, TaNominal = dcpmData.TaNominal, Ra = dcpmData.Ra, TaRef = dcpmData.TaRef, La = dcpmData.La, Jr = dcpmData.Jr, useSupport = false, Js = dcpmData.Js, frictionParameters = dcpmData.frictionParameters, coreParameters = dcpmData.coreParameters, strayLoadParameters = dcpmData.strayLoadParameters, brushParameters = dcpmData.brushParameters, TaOperational = 293.15, alpha20a = dcpmData.alpha20a, phiMechanical(fixed = false), wMechanical(fixed = false), ia(fixed = true)) annotation ( 131 | Placement(transformation(extent = {{-20, -10}, {0, 10}}))); 132 | parameter Modelica.Electrical.Machines.Utilities.ParameterRecords.DcPermanentMagnetData dcpmData(Jr = 0.001, wNominal = 149.22565104552, brushParameters(V = 0.7)) annotation ( 133 | Placement(transformation(extent = {{-20, -40}, {0, -20}}))); 134 | equation 135 | connect(speederror.y, PI.u) annotation ( 136 | Line(points = {{-61, 0}, {-62, 0}}, color = {0, 0, 127})); 137 | connect(speedSensor.w, speederror.u2) annotation ( 138 | Line(points = {{10, -41}, {10, -60}, {-70, -60}, {-70, -8}}, color = {0, 0, 127})); 139 | connect(stepV.y, speederror.u1) annotation ( 140 | Line(points = {{-79, 0}, {-78, 0}}, color = {0, 0, 127})); 141 | connect(PI.y, signalVoltage.v) annotation ( 142 | Line(points={{-39,0},{-36.5,0},{-36.5,50},{-10,50},{-10,42}}, color = {0, 0, 127})); 143 | connect(ground.p, signalVoltage.n) annotation ( 144 | Line(points = {{-20, 30}, {-20, 30}}, color = {0, 0, 255})); 145 | connect(stepTau.y, torque.tau) annotation ( 146 | Line(points = {{79, 0}, {72, 0}}, color = {0, 0, 127}, smooth = Smooth.None)); 147 | connect(idealGear.flange_b, loadInertia1.flange_a) annotation ( 148 | Line(points = {{30, 0}, {30, 0}}, color = {0, 0, 0}, smooth = Smooth.None)); 149 | connect(loadInertia1.flange_b, torque.flange) annotation ( 150 | Line(points = {{50, 0}, {50, 0}}, color = {0, 0, 0}, smooth = Smooth.None)); 151 | connect(speedSensor.w, w) annotation ( 152 | Line(points = {{10, -41}, {10, -60}, {100, -60}}, color = {0, 0, 127})); 153 | connect(signalVoltage.p, dcpm.pin_ap) annotation ( 154 | Line(points = {{0, 30}, {0, 10}, {-4, 10}}, color = {0, 0, 255})); 155 | connect(dcpm.pin_an, signalVoltage.n) annotation ( 156 | Line(points = {{-16, 10}, {-20, 10}, {-20, 30}}, color = {0, 0, 255})); 157 | connect(dcpm.flange, idealGear.flange_a) annotation ( 158 | Line(points = {{0, 0}, {10, 0}}, color = {0, 0, 0})); 159 | connect(speedSensor.flange, idealGear.flange_a) annotation ( 160 | Line(points = {{10, -20}, {10, 0}}, color = {0, 0, 0})); 161 | annotation ( 162 | Diagram(coordinateSystem(preserveAspectRatio = false, extent = {{-100, -100}, {100, 100}}))); 163 | end ControlledElectricDrive; 164 | 165 | model ControlledElectricDrive_subsystems 166 | extends Modelica.Icons.Example; 167 | Drive drive annotation ( 168 | Placement(transformation(extent={{40,0},{80,40}}))); 169 | Control control "control" annotation ( 170 | Placement(transformation(extent = {{-30, 0}, {10, 40}}))); 171 | Stimuli stimuli1 annotation ( 172 | Placement(transformation(extent={{-92,-20},{-60,12}}))); 173 | Modelica.Blocks.Interfaces.RealOutput w annotation ( 174 | Placement(transformation(extent = {{90, -70}, {110, -50}}))); 175 | equation 176 | connect(drive.w, w) annotation ( 177 | Line(points={{60,6},{60,-60},{100,-60}}, color = {0, 0, 127})); 178 | connect(control.V, drive.V) annotation ( 179 | Line(points={{12,20},{24,20},{24,28},{36,28}}, 180 | color = {0, 0, 127}, smooth = Smooth.None)); 181 | connect(stimuli1.w_desired, control.w_desired) annotation ( 182 | Line(points={{-58.4,4},{-49.17,4},{-49.17,28},{-34,28}}, color = {0, 0, 127})); 183 | connect(stimuli1.LoadTorque_Nm, drive.LoadTorque_Nm) annotation ( 184 | Line(points={{-58.4,-12},{26,-12},{26,12},{36,12}}, color = {0, 0, 127})); 185 | connect(drive.w, control.w) annotation ( 186 | Line(points={{60,6},{60,0},{-44,0},{-44,12},{-34,12}}, color = {0, 0, 127})); 187 | annotation ( 188 | Diagram(coordinateSystem(preserveAspectRatio = false, extent = {{-100, -100}, {100, 100}}))); 189 | end ControlledElectricDrive_subsystems; 190 | 191 | model ControlledElectricDrive_subsystems_replaceable 192 | extends Modelica.Icons.Example; 193 | replaceable 194 | Drive drive annotation ( 195 | Placement(transformation(extent={{40,0},{80,40}}))); 196 | replaceable 197 | Control control "control" annotation ( 198 | Placement(transformation(extent = {{-30, 0}, {10, 40}}))); 199 | replaceable 200 | Stimuli stimuli1 annotation ( 201 | Placement(transformation(extent={{-92,-20},{-60,12}}))); 202 | Modelica.Blocks.Interfaces.RealOutput w annotation ( 203 | Placement(transformation(extent = {{90, -70}, {110, -50}}))); 204 | equation 205 | connect(drive.w, w) annotation ( 206 | Line(points={{60,6},{60,-60},{100,-60}}, color = {0, 0, 127})); 207 | connect(control.V, drive.V) annotation ( 208 | Line(points={{12,20},{24,20},{24,28},{36,28}}, 209 | color = {0, 0, 127}, smooth = Smooth.None)); 210 | connect(drive.w, control.w) annotation ( 211 | Line(points={{60,6},{60,-20},{-44,-20},{-44,12},{-34,12}}, color = {0, 0, 127})); 212 | connect(stimuli1.w_desired, control.w_desired) annotation ( 213 | Line(points={{-58.4,4},{-49.17,4},{-49.17,28},{-34,28}}, color = {0, 0, 127})); 214 | connect(stimuli1.LoadTorque_Nm, drive.LoadTorque_Nm) annotation ( 215 | Line(points={{-58.4,-12},{26,-12},{26,12},{36,12}}, color = {0, 0, 127})); 216 | annotation ( 217 | Diagram(coordinateSystem(preserveAspectRatio = false, extent = {{-100, -100}, {100, 100}}))); 218 | end ControlledElectricDrive_subsystems_replaceable; 219 | 220 | model ControlledElectricDrive_fmu 221 | extends Modelica.Icons.Example; 222 | Modelica.Blocks.Interfaces.RealOutput w annotation ( 223 | Placement(transformation(extent = {{90, -70}, {110, -50}}))); 224 | MODELICA_Demo_ControlledElectricDrive_me_FMU mODELICA_Demo_ControlledElectricDrive_me_FMU1 annotation ( 225 | Placement(visible = true, transformation(origin = {0, 0}, extent = {{-10, -10}, {10, 10}}, rotation = 0))); 226 | equation 227 | connect(mODELICA_Demo_ControlledElectricDrive_me_FMU1.w, w) annotation ( 228 | Line(points = {{12, 8}, {62, 8}, {62, -60}, {100, -60}, {100, -60}}, color = {0, 0, 127})); 229 | annotation ( 230 | Icon(coordinateSystem(preserveAspectRatio = false)), 231 | Diagram(coordinateSystem(preserveAspectRatio = false))); 232 | end ControlledElectricDrive_fmu; 233 | 234 | model ControlledElectricDrive_ctrl_fmu_sl 235 | extends Modelica.Icons.Example; 236 | Drive drive annotation ( 237 | Placement(transformation(extent={{40,0},{80,40}}))); 238 | Stimuli stimuli1 annotation ( 239 | Placement(transformation(extent={{-92,-20},{-60,12}}))); 240 | Modelica.Blocks.Interfaces.RealOutput w annotation ( 241 | Placement(transformation(extent = {{90, -70}, {110, -50}}))); 242 | equation 243 | connect(drive.w, w) annotation ( 244 | Line(points={{60,6},{60,-60},{100,-60}}, color = {0, 0, 127})); 245 | connect(stimuli1.LoadTorque_Nm, drive.LoadTorque_Nm) annotation ( 246 | Line(points={{-58.4,-12},{20,-12},{20,12},{36,12}}, color = {0, 0, 127})); 247 | connect(controller_sf_fmu.V, drive.V) 248 | annotation (Line(points={{-18,28},{36,28}}, color={0,0,127})); 249 | connect(stimuli1.w_desired, controller_sf_fmu.w_desired) annotation (Line( 250 | points={{-58.4,4},{-50,4},{-50,31.4},{-40.4,31.4}}, color={0,0,127})); 251 | connect(controller_sf_fmu.w, drive.w) annotation (Line(points={{-40.4,24.7}, 252 | {-46,24.7},{-46,0},{60,0},{60,6}}, color={0,0,127})); 253 | annotation ( 254 | Diagram(coordinateSystem(preserveAspectRatio = false, extent = {{-100, -100}, {100, 100}}))); 255 | end ControlledElectricDrive_ctrl_fmu_sl; 256 | 257 | model ControlledElectricDrive_ctrl_fmu_omc 258 | extends Modelica.Icons.Example; 259 | Drive drive annotation ( 260 | Placement(transformation(extent = {{38, 0}, {78, 40}}))); 261 | Stimuli stimuli1 annotation ( 262 | Placement(transformation(extent = {{-80, -16}, {-50, 14}}))); 263 | Modelica.Blocks.Interfaces.RealOutput w annotation ( 264 | Placement(transformation(extent = {{90, -70}, {110, -50}}))); 265 | MODELICA_Demo_Control_me_FMU mODELICA_Demo_Control_me_FMU1 annotation ( 266 | Placement(visible = true, transformation(origin = {-8, 30}, extent = {{-20, -20}, {20, 20}}, rotation = 0))); 267 | equation 268 | connect(mODELICA_Demo_Control_me_FMU1.w, drive.w) annotation ( 269 | Line(points = {{-30, 44}, {-44, 44}, {-44, 0}, {58, 0}, {58, 8}, {58, 8}}, color = {0, 0, 127})); 270 | connect(stimuli1.w_desired, mODELICA_Demo_Control_me_FMU1.w_desired) annotation ( 271 | Line(points = {{-48, 6}, {-40, 6}, {-40, 40}, {-30, 40}, {-30, 40}}, color = {0, 0, 127})); 272 | connect(mODELICA_Demo_Control_me_FMU1.V, drive.V) annotation ( 273 | Line(points = {{14, 44}, {20, 44}, {20, 20}, {34, 20}, {34, 20}}, color = {0, 0, 127})); 274 | connect(drive.w, w) annotation ( 275 | Line(points={{58,6},{58,6},{58,-60},{100,-60},{100,-60}}, color = {0, 0, 127})); 276 | connect(stimuli1.LoadTorque_Nm, drive.LoadTorque_Nm) annotation ( 277 | Line(points={{-48.5,-8.5},{-32,-8.5},{-32,-20},{90,-20},{90,12},{34,12}}, color = {0, 0, 127})); 278 | annotation ( 279 | Diagram(coordinateSystem(preserveAspectRatio = false, extent = {{-100, -100}, {100, 100}}))); 280 | end ControlledElectricDrive_ctrl_fmu_omc; 281 | 282 | annotation ( 283 | uses(Modelica(version="4.0.0"), ModelicaServices(version="4.0.0"))); 284 | end MODELICA_Demo; 285 | -------------------------------------------------------------------------------- /part3/example_intocps_app/.project.json: -------------------------------------------------------------------------------- 1 | {"MAX_NEW_FILENAME":100,"PATH_FMUS":"FMUs","PATH_MODELS":"Models","name":"example_intocps_app","rootPath":"","configPath":""} -------------------------------------------------------------------------------- /part3/example_intocps_app/FMUs/Controller.fmu: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/modelica/fmi-beginners-tutorial-2023/a7d1f8edccd09e457257b8d4b3b792ae8611ae4c/part3/example_intocps_app/FMUs/Controller.fmu -------------------------------------------------------------------------------- /part3/example_intocps_app/FMUs/Drive.fmu: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/modelica/fmi-beginners-tutorial-2023/a7d1f8edccd09e457257b8d4b3b792ae8611ae4c/part3/example_intocps_app/FMUs/Drive.fmu -------------------------------------------------------------------------------- /part3/example_intocps_app/FMUs/Stimuli.fmu: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/modelica/fmi-beginners-tutorial-2023/a7d1f8edccd09e457257b8d4b3b792ae8611ae4c/part3/example_intocps_app/FMUs/Stimuli.fmu -------------------------------------------------------------------------------- /part3/example_intocps_app/Multi-models/mm-new/co-sim-unstable/R_2023_09_12-09_03_50_051/coe.json: -------------------------------------------------------------------------------- 1 | {"startTime":0,"endTime":1,"multimodel_path":"Multi-models\\mm-new\\mm.json","liveGraphColumns":1,"liveGraphVisibleRowCount":1,"graphs":[{"title":"Live Graph","livestream":{"{Drive}.drive":["w"],"{Stimuli}.stimuli":["w_desired"]}}],"livestreamInterval":0,"logVariables":{},"visible":false,"loggingOn":false,"overrideLogLevel":null,"enableAllLogCategoriesPerInstance":false,"algorithm":{"type":"fixed-step","size":0.01},"postProcessingScript":"","multimodel_crc":"27027b7fce751c1c63934dfeed9c2068","parallelSimulation":false,"stabalizationEnabled":false,"global_absolute_tolerance":0,"global_relative_tolerance":0.01,"simulationProgramDelay":false,"convergenceAttempts":5} -------------------------------------------------------------------------------- /part3/example_intocps_app/Multi-models/mm-new/co-sim-unstable/R_2023_09_12-09_03_50_051/config-simulation.json: -------------------------------------------------------------------------------- 1 | {"startTime":0,"endTime":1,"reportProgress":true,"liveLogInterval":0,"logLevels":{}} -------------------------------------------------------------------------------- /part3/example_intocps_app/Multi-models/mm-new/co-sim-unstable/R_2023_09_12-09_03_50_051/config.json: -------------------------------------------------------------------------------- 1 | {"fmus":{"{Controller}":"file:///C:/work/github/fmi-tutorial/example/example_intocps_app/FMUs/Controller.fmu","{Drive}":"file:///C:/work/github/fmi-tutorial/example/example_intocps_app/FMUs/Drive.fmu","{Stimuli}":"file:///C:/work/github/fmi-tutorial/example/example_intocps_app/FMUs/Stimuli.fmu"},"connections":{"{Controller}.ctrl.V":["{Drive}.drive.V"],"{Drive}.drive.w":["{Controller}.ctrl.w"],"{Stimuli}.stimuli.LoadTorque_Nm":["{Drive}.drive.LoadTorque_Nm"],"{Stimuli}.stimuli.w_desired":["{Controller}.ctrl.w_desired"]},"parameters":{},"liveGraphColumns":1,"liveGraphVisibleRowCount":1,"logVariables":{},"algorithm":{"type":"fixed-step","size":0.01},"parallelSimulation":false,"stabalizationEnabled":false,"global_absolute_tolerance":0,"global_relative_tolerance":0.01,"simulationProgramDelay":false,"convergenceAttempts":5,"livestream":{"{Drive}.drive":["w"],"{Stimuli}.stimuli":["w_desired"]}} -------------------------------------------------------------------------------- /part3/example_intocps_app/Multi-models/mm-new/co-sim-unstable/R_2023_09_12-09_03_50_051/mm.json: -------------------------------------------------------------------------------- 1 | {"fmus":{"{Controller}":"Controller.fmu","{Drive}":"Drive.fmu","{Stimuli}":"Stimuli.fmu"},"connections":{"{Controller}.ctrl.V":["{Drive}.drive.V"],"{Drive}.drive.w":["{Controller}.ctrl.w"],"{Stimuli}.stimuli.LoadTorque_Nm":["{Drive}.drive.LoadTorque_Nm"],"{Stimuli}.stimuli.w_desired":["{Controller}.ctrl.w_desired"]},"parameters":{}} -------------------------------------------------------------------------------- /part3/example_intocps_app/Multi-models/mm-new/co-sim-unstable/R_2023_09_12-09_03_50_051/outputs.csv: -------------------------------------------------------------------------------- 1 | time,{Stimuli}.stimuli.w_desired,{Stimuli}.stimuli.LoadTorque_Nm,{Controller}.ctrl.V,{Drive}.drive.w 2 | 0.0,0.0,0.0,0.0,0.0 3 | 0.01,0.0,0.0,0.0,0.0 4 | 0.02,0.0,0.0,0.0,0.0 5 | 0.03,0.0,0.0,0.0,0.0 6 | 0.04,0.0,0.0,0.0,0.0 7 | 0.05,0.0,0.0,0.0,0.0 8 | 0.060000000000000005,0.0,0.0,0.0,0.0 9 | 0.07,0.0,0.0,0.0,0.0 10 | 0.08,0.0,0.0,0.0,0.0 11 | 0.09,0.0,0.0,0.0,0.0 12 | 0.09999999999999999,0.0,0.0,0.0,0.0 13 | 0.10999999999999999,10.0,0.0,0.0,0.0 14 | 0.11999999999999998,10.0,0.0,3.0,0.0 15 | 0.12999999999999998,10.0,0.0,5.000000000000001,3.067516420016863 16 | 0.13999999999999999,10.0,0.0,6.079745073994944,8.48361940058752 17 | 0.15,10.0,0.0,5.8414108958203705,10.8368571861266 18 | 0.16,10.0,0.0,5.438715680041146,10.320604329497161 19 | 0.17,10.0,0.0,5.426220099804657,9.527839789261694 20 | 0.18000000000000002,10.0,0.0,5.5999285959758645,9.10899334831502 21 | 0.19000000000000003,10.0,0.0,5.820014570407532,8.979954348291535 22 | 0.20000000000000004,10.0,0.0,6.036927600751576,9.044182142093554 23 | 0.21000000000000005,10.0,0.0,6.221668392952666,9.229907446801846 24 | 0.22000000000000006,10.0,0.0,6.357114373121468,9.463513223790885 25 | 0.23000000000000007,10.0,0.0,6.441051150664388,9.694756872307993 26 | 0.24000000000000007,10.0,0.0,6.478975411351082,9.890863057280228 27 | 0.25000000000000006,10.0,0.0,6.481192181397817,10.021781061445116 28 | 0.26000000000000006,10.0,0.0,6.463744168692303,10.093654681473431 29 | 0.2700000000000001,10.0,0.0,6.4378258703947875,10.146206668503599 30 | 0.2800000000000001,10.0,0.0,6.403329337991055,10.167355739439854 31 | 0.2900000000000001,10.0,0.0,6.36774328300946,10.158006713277581 32 | 0.3000000000000001,10.0,0.0,6.337076842970169,10.129474379405252 33 | 0.3100000000000001,10.0,0.0,6.314035200476348,10.093781154755014 34 | 0.3200000000000001,10.0,0.0,6.298848291990372,10.058333255875667 35 | 0.3300000000000001,10.0,0.0,6.290726430703171,10.026565796953175 36 | 0.34000000000000014,10.0,0.0,6.288590017204782,10.001423632954635 37 | 0.35000000000000014,10.0,0.0,6.290819507013709,9.984918174738556 38 | 0.36000000000000015,10.0,0.0,6.29548641788761,9.974499265965074 39 | 0.37000000000000016,10.0,0.0,6.301628455571945,9.96975984519769 40 | 0.38000000000000017,10.0,0.0,6.308150428609149,9.969845770231705 41 | 0.3900000000000002,10.0,0.0,6.314172682059409,9.973554096827481 42 | 0.4000000000000002,10.0,0.0,6.319091030034334,9.979360909611032 43 | 0.4100000000000002,10.0,0.0,6.322638166833772,9.985875696869298 44 | 0.4200000000000002,10.0,0.0,6.324811548734081,9.992086988721747 45 | 0.4300000000000002,10.0,0.0,6.3257730218044905,9.997438782365602 46 | 0.4400000000000002,10.0,0.0,6.32575008596698,10.001660777047041 47 | 0.45000000000000023,10.0,0.0,6.3249957310894285,10.004479646077444 48 | 0.46000000000000024,10.0,0.0,6.323817914970896,10.006102257470246 49 | 0.47000000000000025,10.0,0.0,6.322435202337563,10.006601828627925 50 | 0.48000000000000026,10.0,0.0,6.321064879496214,10.006209175665308 51 | 0.49000000000000027,10.0,0.0,6.319862309659412,10.005208063333917 52 | 0.5000000000000002,10.0,3.0,6.318920808225766,10.003880337001887 53 | 0.5100000000000002,10.0,3.0,6.3182775134585905,10.21066955394842 54 | 0.5200000000000002,10.0,3.0,6.255464680974254,10.334110350049297 55 | 0.5300000000000002,10.0,3.0,6.176298531354308,10.396132555619404 56 | 0.5400000000000003,10.0,3.0,6.09086979967342,10.382473044668728 57 | 0.5500000000000003,10.0,3.0,6.015741141834739,10.319086319591555 58 | 0.5600000000000003,10.0,3.0,5.958262550424143,10.231612093704952 59 | 0.5700000000000003,10.0,3.0,5.92068755427181,10.141096642684149 60 | 0.5800000000000003,10.0,3.0,5.901519770837059,10.067224052856874 61 | 0.5900000000000003,10.0,3.0,5.895462219248409,10.007718911661367 62 | 0.6000000000000003,10.0,3.0,5.899868951035688,9.969310895023147 63 | 0.6100000000000003,10.0,3.0,5.909847573694877,9.944904924558703 64 | 0.6200000000000003,10.0,3.0,5.923307185829581,9.933258586474693 65 | 0.6300000000000003,10.0,3.0,5.937820102343046,9.932907824485783 66 | 0.6400000000000003,10.0,3.0,5.951273613644785,9.941167472602402 67 | 0.6500000000000004,10.0,3.0,5.962214154312639,9.954343737348047 68 | 0.6600000000000004,10.0,3.0,5.970027780368462,9.969039089779091 69 | 0.6700000000000004,10.0,3.0,5.974750427169542,9.982800462206704 70 | 0.6800000000000004,10.0,3.0,5.976814197485439,9.994289518477261 71 | 0.6900000000000004,10.0,3.0,5.976807388162935,10.003300568161853 72 | 0.7000000000000004,10.0,3.0,5.975246169562106,10.009609395603206 73 | 0.7100000000000004,10.0,3.0,5.972693407697332,10.01306043734272 74 | 0.7200000000000004,10.0,3.0,5.9697362160548355,10.014009631254936 75 | 0.7300000000000004,10.0,3.0,5.9668393704126235,10.01308625416495 76 | 0.7400000000000004,10.0,3.0,5.964314457288629,10.010918106165613 77 | 0.7500000000000004,10.0,3.0,5.962347650855443,10.008070051092858 78 | 0.7600000000000005,10.0,3.0,5.961018446144149,10.005002382672911 79 | 0.7700000000000005,10.0,3.0,5.9603247364515655,10.00220495444665 80 | 0.7800000000000005,10.0,3.0,5.960163488384857,9.999928487860352 81 | 0.7900000000000005,10.0,3.0,5.9604054374714135,9.998292562341302 82 | 0.8000000000000005,10.0,3.0,5.960910517555055,9.997309271563712 83 | 0.8100000000000005,10.0,3.0,5.961546992320071,9.996911485240455 84 | 0.8200000000000005,10.0,3.0,5.962204473904304,9.99698275599069 85 | 0.8300000000000005,10.0,3.0,5.962800795631142,9.997384632807403 86 | 0.8400000000000005,10.0,3.0,5.963283681387989,9.997978871219145 87 | 0.8500000000000005,10.0,3.0,5.96362848330299,9.998643390360218 88 | 0.8600000000000005,10.0,3.0,5.963833353316838,9.999281886966383 89 | 0.8700000000000006,10.0,3.0,5.963913126262945,9.999827781441901 90 | 0.8800000000000006,10.0,3.0,5.963892980527009,10.000243629188896 91 | 0.8900000000000006,10.0,3.0,5.963802669914528,10.000517337698295 92 | 0.9000000000000006,10.0,3.0,5.963671831523931,10.00065652010754 93 | 0.9100000000000006,10.0,3.0,5.9635266092615025,10.000682155454967 94 | 0.9200000000000006,10.0,3.0,5.963387614635766,10.000622477386152 95 | 0.9300000000000006,10.0,3.0,5.963269086965414,10.000507728483704 96 | 0.9400000000000006,10.0,3.0,5.963179016158919,10.000366140131906 97 | 0.9500000000000006,10.0,3.0,5.963119946967718,10.00022125668182 98 | 0.9600000000000006,10.0,3.0,5.963090183976362,10.000090536018376 99 | 0.9700000000000006,10.0,3.0,5.963085148839032,9.999985032165847 100 | 0.9800000000000006,10.0,3.0,5.96309869279112,9.999909895794746 101 | 0.9900000000000007,10.0,3.0,5.96312422726928,9.999865409304384 102 | -------------------------------------------------------------------------------- /part3/example_intocps_app/Multi-models/mm-new/co-sim-unstable/R_2023_09_12-09_03_50_051/result.json: -------------------------------------------------------------------------------- 1 | {"mm_config_crc":"27027b7fce751c1c63934dfeed9c2068","coe_config_crc":"13e49bab10d6d5bb15057956e56de4a1","output_crc":"d35591fb68fe22a59978990769f58cd0"} -------------------------------------------------------------------------------- /part3/example_intocps_app/Multi-models/mm-new/co-sim-unstable/R_2023_09_12-09_03_50_051/simulation_results.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/modelica/fmi-beginners-tutorial-2023/a7d1f8edccd09e457257b8d4b3b792ae8611ae4c/part3/example_intocps_app/Multi-models/mm-new/co-sim-unstable/R_2023_09_12-09_03_50_051/simulation_results.zip -------------------------------------------------------------------------------- /part3/example_intocps_app/Multi-models/mm-new/co-sim-unstable/R_2023_09_12-09_04_10_963/coe.json: -------------------------------------------------------------------------------- 1 | {"startTime":0,"endTime":1,"multimodel_path":"Multi-models\\mm-new\\mm.json","liveGraphColumns":1,"liveGraphVisibleRowCount":1,"graphs":[{"title":"Live Graph","livestream":{"{Drive}.drive":["w"],"{Stimuli}.stimuli":["w_desired"]}}],"livestreamInterval":0,"logVariables":{},"visible":false,"loggingOn":false,"overrideLogLevel":null,"enableAllLogCategoriesPerInstance":false,"algorithm":{"type":"fixed-step","size":0.1},"postProcessingScript":"","multimodel_crc":"27027b7fce751c1c63934dfeed9c2068","parallelSimulation":false,"stabalizationEnabled":false,"global_absolute_tolerance":0,"global_relative_tolerance":0.01,"simulationProgramDelay":false,"convergenceAttempts":5} -------------------------------------------------------------------------------- /part3/example_intocps_app/Multi-models/mm-new/co-sim-unstable/R_2023_09_12-09_04_10_963/config-simulation.json: -------------------------------------------------------------------------------- 1 | {"startTime":0,"endTime":1,"reportProgress":true,"liveLogInterval":0,"logLevels":{}} -------------------------------------------------------------------------------- /part3/example_intocps_app/Multi-models/mm-new/co-sim-unstable/R_2023_09_12-09_04_10_963/config.json: -------------------------------------------------------------------------------- 1 | {"fmus":{"{Controller}":"file:///C:/work/github/fmi-tutorial/example/example_intocps_app/FMUs/Controller.fmu","{Drive}":"file:///C:/work/github/fmi-tutorial/example/example_intocps_app/FMUs/Drive.fmu","{Stimuli}":"file:///C:/work/github/fmi-tutorial/example/example_intocps_app/FMUs/Stimuli.fmu"},"connections":{"{Controller}.ctrl.V":["{Drive}.drive.V"],"{Drive}.drive.w":["{Controller}.ctrl.w"],"{Stimuli}.stimuli.LoadTorque_Nm":["{Drive}.drive.LoadTorque_Nm"],"{Stimuli}.stimuli.w_desired":["{Controller}.ctrl.w_desired"]},"parameters":{},"liveGraphColumns":1,"liveGraphVisibleRowCount":1,"logVariables":{},"algorithm":{"type":"fixed-step","size":0.1},"parallelSimulation":false,"stabalizationEnabled":false,"global_absolute_tolerance":0,"global_relative_tolerance":0.01,"simulationProgramDelay":false,"convergenceAttempts":5,"livestream":{"{Drive}.drive":["w"],"{Stimuli}.stimuli":["w_desired"]}} -------------------------------------------------------------------------------- /part3/example_intocps_app/Multi-models/mm-new/co-sim-unstable/R_2023_09_12-09_04_10_963/mm.json: -------------------------------------------------------------------------------- 1 | {"fmus":{"{Controller}":"Controller.fmu","{Drive}":"Drive.fmu","{Stimuli}":"Stimuli.fmu"},"connections":{"{Controller}.ctrl.V":["{Drive}.drive.V"],"{Drive}.drive.w":["{Controller}.ctrl.w"],"{Stimuli}.stimuli.LoadTorque_Nm":["{Drive}.drive.LoadTorque_Nm"],"{Stimuli}.stimuli.w_desired":["{Controller}.ctrl.w_desired"]},"parameters":{}} -------------------------------------------------------------------------------- /part3/example_intocps_app/Multi-models/mm-new/co-sim-unstable/R_2023_09_12-09_04_10_963/outputs.csv: -------------------------------------------------------------------------------- 1 | time,{Stimuli}.stimuli.w_desired,{Stimuli}.stimuli.LoadTorque_Nm,{Controller}.ctrl.V,{Drive}.drive.w 2 | 0.0,0.0,0.0,0.0,0.0 3 | 0.1,10.0,0.0,0.0,0.0 4 | 0.2,10.0,0.0,20.99999999999996,0.0 5 | 0.30000000000000004,10.0,0.0,41.00000000000003,32.61323485337857 6 | 0.4,10.0,0.0,-7.487793192094987,63.64578142163798 7 | 0.5,10.0,3.0,-117.88261069219661,-18.1423020943789 8 | 0.6,10.0,3.0,-53.419198151836845,-204.77219172465564 9 | 0.7,10.0,3.0,394.78817426050136,-77.13323348110639 10 | 0.7999999999999999,10.0,3.0,556.2907453983591,725.1755986158661 11 | 0.8999999999999999,10.0,3.0,-954.2913350430704,912.1133620355583 12 | 0.9999999999999999,10.0,3.0,-2777.211835456161,-1957.2219404408124 13 | -------------------------------------------------------------------------------- /part3/example_intocps_app/Multi-models/mm-new/co-sim-unstable/R_2023_09_12-09_04_10_963/result.json: -------------------------------------------------------------------------------- 1 | {"mm_config_crc":"27027b7fce751c1c63934dfeed9c2068","coe_config_crc":"665816a36d6eaa9ef7230fa5afd14e54","output_crc":"bb168cf221562640d8f1819406e98e3f"} -------------------------------------------------------------------------------- /part3/example_intocps_app/Multi-models/mm-new/co-sim-unstable/R_2023_09_12-09_04_10_963/simulation_results.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/modelica/fmi-beginners-tutorial-2023/a7d1f8edccd09e457257b8d4b3b792ae8611ae4c/part3/example_intocps_app/Multi-models/mm-new/co-sim-unstable/R_2023_09_12-09_04_10_963/simulation_results.zip -------------------------------------------------------------------------------- /part3/example_intocps_app/Multi-models/mm-new/co-sim-unstable/coe.json: -------------------------------------------------------------------------------- 1 | {"startTime":0,"endTime":1,"multimodel_path":"Multi-models\\mm-new\\mm.json","liveGraphColumns":1,"liveGraphVisibleRowCount":1,"graphs":[{"title":"Live Graph","livestream":{"{Drive}.drive":["w"],"{Stimuli}.stimuli":["w_desired"]}}],"livestreamInterval":0,"logVariables":{},"visible":false,"loggingOn":false,"overrideLogLevel":null,"enableAllLogCategoriesPerInstance":false,"algorithm":{"type":"fixed-step","size":0.1},"postProcessingScript":"","multimodel_crc":"27027b7fce751c1c63934dfeed9c2068","parallelSimulation":false,"stabalizationEnabled":false,"global_absolute_tolerance":0,"global_relative_tolerance":0.01,"simulationProgramDelay":false,"convergenceAttempts":5} -------------------------------------------------------------------------------- /part3/example_intocps_app/Multi-models/mm-new/co-sim/R_2023_09_12-09_02_41_466/coe.json: -------------------------------------------------------------------------------- 1 | {"startTime":0,"endTime":1,"multimodel_path":"Multi-models\\mm-new\\mm.json","liveGraphColumns":1,"liveGraphVisibleRowCount":1,"graphs":[{"title":"Live Graph","livestream":{"{Drive}.drive":["w"],"{Stimuli}.stimuli":["w_desired"]}}],"livestreamInterval":0,"logVariables":{},"visible":false,"loggingOn":false,"overrideLogLevel":null,"enableAllLogCategoriesPerInstance":false,"algorithm":{"type":"fixed-step","size":0.001},"postProcessingScript":"","multimodel_crc":"27027b7fce751c1c63934dfeed9c2068","parallelSimulation":false,"stabalizationEnabled":false,"global_absolute_tolerance":0,"global_relative_tolerance":0.01,"simulationProgramDelay":false,"convergenceAttempts":5} -------------------------------------------------------------------------------- /part3/example_intocps_app/Multi-models/mm-new/co-sim/R_2023_09_12-09_02_41_466/config-simulation.json: -------------------------------------------------------------------------------- 1 | {"startTime":0,"endTime":1,"reportProgress":true,"liveLogInterval":0,"logLevels":{}} -------------------------------------------------------------------------------- /part3/example_intocps_app/Multi-models/mm-new/co-sim/R_2023_09_12-09_02_41_466/config.json: -------------------------------------------------------------------------------- 1 | {"fmus":{"{Controller}":"file:///C:/work/github/fmi-tutorial/example/example_intocps_app/FMUs/Controller.fmu","{Drive}":"file:///C:/work/github/fmi-tutorial/example/example_intocps_app/FMUs/Drive.fmu","{Stimuli}":"file:///C:/work/github/fmi-tutorial/example/example_intocps_app/FMUs/Stimuli.fmu"},"connections":{"{Controller}.ctrl.V":["{Drive}.drive.V"],"{Drive}.drive.w":["{Controller}.ctrl.w"],"{Stimuli}.stimuli.LoadTorque_Nm":["{Drive}.drive.LoadTorque_Nm"],"{Stimuli}.stimuli.w_desired":["{Controller}.ctrl.w_desired"]},"parameters":{},"liveGraphColumns":1,"liveGraphVisibleRowCount":1,"logVariables":{},"algorithm":{"type":"fixed-step","size":0.001},"parallelSimulation":false,"stabalizationEnabled":false,"global_absolute_tolerance":0,"global_relative_tolerance":0.01,"simulationProgramDelay":false,"convergenceAttempts":5,"livestream":{"{Drive}.drive":["w"],"{Stimuli}.stimuli":["w_desired"]}} -------------------------------------------------------------------------------- /part3/example_intocps_app/Multi-models/mm-new/co-sim/R_2023_09_12-09_02_41_466/mm.json: -------------------------------------------------------------------------------- 1 | {"fmus":{"{Controller}":"Controller.fmu","{Drive}":"Drive.fmu","{Stimuli}":"Stimuli.fmu"},"connections":{"{Controller}.ctrl.V":["{Drive}.drive.V"],"{Drive}.drive.w":["{Controller}.ctrl.w"],"{Stimuli}.stimuli.LoadTorque_Nm":["{Drive}.drive.LoadTorque_Nm"],"{Stimuli}.stimuli.w_desired":["{Controller}.ctrl.w_desired"]},"parameters":{}} -------------------------------------------------------------------------------- /part3/example_intocps_app/Multi-models/mm-new/co-sim/R_2023_09_12-09_02_41_466/outputs.csv: -------------------------------------------------------------------------------- 1 | time,{Stimuli}.stimuli.w_desired,{Stimuli}.stimuli.LoadTorque_Nm,{Controller}.ctrl.V,{Drive}.drive.w 2 | 0.0,0.0,0.0,0.0,0.0 3 | 0.001,0.0,0.0,0.0,0.0 4 | 0.002,0.0,0.0,0.0,0.0 5 | 0.003,0.0,0.0,0.0,0.0 6 | 0.004,0.0,0.0,0.0,0.0 7 | 0.005,0.0,0.0,0.0,0.0 8 | 0.006,0.0,0.0,0.0,0.0 9 | 0.007,0.0,0.0,0.0,0.0 10 | 0.008,0.0,0.0,0.0,0.0 11 | 0.009000000000000001,0.0,0.0,0.0,0.0 12 | 0.010000000000000002,0.0,0.0,0.0,0.0 13 | 0.011000000000000003,0.0,0.0,0.0,0.0 14 | 0.012000000000000004,0.0,0.0,0.0,0.0 15 | 0.013000000000000005,0.0,0.0,0.0,0.0 16 | 0.014000000000000005,0.0,0.0,0.0,0.0 17 | 0.015000000000000006,0.0,0.0,0.0,0.0 18 | 0.016000000000000007,0.0,0.0,0.0,0.0 19 | 0.017000000000000008,0.0,0.0,0.0,0.0 20 | 0.01800000000000001,0.0,0.0,0.0,0.0 21 | 0.01900000000000001,0.0,0.0,0.0,0.0 22 | 0.02000000000000001,0.0,0.0,0.0,0.0 23 | 0.02100000000000001,0.0,0.0,0.0,0.0 24 | 0.022000000000000013,0.0,0.0,0.0,0.0 25 | 0.023000000000000013,0.0,0.0,0.0,0.0 26 | 0.024000000000000014,0.0,0.0,0.0,0.0 27 | 0.025000000000000015,0.0,0.0,0.0,0.0 28 | 0.026000000000000016,0.0,0.0,0.0,0.0 29 | 0.027000000000000017,0.0,0.0,0.0,0.0 30 | 0.028000000000000018,0.0,0.0,0.0,0.0 31 | 0.02900000000000002,0.0,0.0,0.0,0.0 32 | 0.03000000000000002,0.0,0.0,0.0,0.0 33 | 0.03100000000000002,0.0,0.0,0.0,0.0 34 | 0.03200000000000002,0.0,0.0,0.0,0.0 35 | 0.03300000000000002,0.0,0.0,0.0,0.0 36 | 0.03400000000000002,0.0,0.0,0.0,0.0 37 | 0.035000000000000024,0.0,0.0,0.0,0.0 38 | 0.036000000000000025,0.0,0.0,0.0,0.0 39 | 0.037000000000000026,0.0,0.0,0.0,0.0 40 | 0.03800000000000003,0.0,0.0,0.0,0.0 41 | 0.03900000000000003,0.0,0.0,0.0,0.0 42 | 0.04000000000000003,0.0,0.0,0.0,0.0 43 | 0.04100000000000003,0.0,0.0,0.0,0.0 44 | 0.04200000000000003,0.0,0.0,0.0,0.0 45 | 0.04300000000000003,0.0,0.0,0.0,0.0 46 | 0.04400000000000003,0.0,0.0,0.0,0.0 47 | 0.04500000000000003,0.0,0.0,0.0,0.0 48 | 0.046000000000000034,0.0,0.0,0.0,0.0 49 | 0.047000000000000035,0.0,0.0,0.0,0.0 50 | 0.048000000000000036,0.0,0.0,0.0,0.0 51 | 0.04900000000000004,0.0,0.0,0.0,0.0 52 | 0.05000000000000004,0.0,0.0,0.0,0.0 53 | 0.05100000000000004,0.0,0.0,0.0,0.0 54 | 0.05200000000000004,0.0,0.0,0.0,0.0 55 | 0.05300000000000004,0.0,0.0,0.0,0.0 56 | 0.05400000000000004,0.0,0.0,0.0,0.0 57 | 0.05500000000000004,0.0,0.0,0.0,0.0 58 | 0.05600000000000004,0.0,0.0,0.0,0.0 59 | 0.057000000000000044,0.0,0.0,0.0,0.0 60 | 0.058000000000000045,0.0,0.0,0.0,0.0 61 | 0.059000000000000045,0.0,0.0,0.0,0.0 62 | 0.060000000000000046,0.0,0.0,0.0,0.0 63 | 0.06100000000000005,0.0,0.0,0.0,0.0 64 | 0.06200000000000005,0.0,0.0,0.0,0.0 65 | 0.06300000000000004,0.0,0.0,0.0,0.0 66 | 0.06400000000000004,0.0,0.0,0.0,0.0 67 | 0.06500000000000004,0.0,0.0,0.0,0.0 68 | 0.06600000000000004,0.0,0.0,0.0,0.0 69 | 0.06700000000000005,0.0,0.0,0.0,0.0 70 | 0.06800000000000005,0.0,0.0,0.0,0.0 71 | 0.06900000000000005,0.0,0.0,0.0,0.0 72 | 0.07000000000000005,0.0,0.0,0.0,0.0 73 | 0.07100000000000005,0.0,0.0,0.0,0.0 74 | 0.07200000000000005,0.0,0.0,0.0,0.0 75 | 0.07300000000000005,0.0,0.0,0.0,0.0 76 | 0.07400000000000005,0.0,0.0,0.0,0.0 77 | 0.07500000000000005,0.0,0.0,0.0,0.0 78 | 0.07600000000000005,0.0,0.0,0.0,0.0 79 | 0.07700000000000005,0.0,0.0,0.0,0.0 80 | 0.07800000000000006,0.0,0.0,0.0,0.0 81 | 0.07900000000000006,0.0,0.0,0.0,0.0 82 | 0.08000000000000006,0.0,0.0,0.0,0.0 83 | 0.08100000000000006,0.0,0.0,0.0,0.0 84 | 0.08200000000000006,0.0,0.0,0.0,0.0 85 | 0.08300000000000006,0.0,0.0,0.0,0.0 86 | 0.08400000000000006,0.0,0.0,0.0,0.0 87 | 0.08500000000000006,0.0,0.0,0.0,0.0 88 | 0.08600000000000006,0.0,0.0,0.0,0.0 89 | 0.08700000000000006,0.0,0.0,0.0,0.0 90 | 0.08800000000000006,0.0,0.0,0.0,0.0 91 | 0.08900000000000007,0.0,0.0,0.0,0.0 92 | 0.09000000000000007,0.0,0.0,0.0,0.0 93 | 0.09100000000000007,0.0,0.0,0.0,0.0 94 | 0.09200000000000007,0.0,0.0,0.0,0.0 95 | 0.09300000000000007,0.0,0.0,0.0,0.0 96 | 0.09400000000000007,0.0,0.0,0.0,0.0 97 | 0.09500000000000007,0.0,0.0,0.0,0.0 98 | 0.09600000000000007,0.0,0.0,0.0,0.0 99 | 0.09700000000000007,0.0,0.0,0.0,0.0 100 | 0.09800000000000007,0.0,0.0,0.0,0.0 101 | 0.09900000000000007,0.0,0.0,0.0,0.0 102 | 0.10000000000000007,10.0,0.0,0.0,0.0 103 | 0.10100000000000008,10.0,0.0,1.2,0.0 104 | 0.10200000000000008,10.0,0.0,1.4,0.023730010393074232 105 | 0.10300000000000008,10.0,0.0,1.597152398752831,0.07715643801093965 106 | 0.10400000000000008,10.0,0.0,1.7902666272308259,0.1661311998810329 107 | 0.10500000000000008,10.0,0.0,1.9780465270461958,0.2860595581970946 108 | 0.10600000000000008,10.0,0.0,2.1603325000506475,0.4391411917883572 109 | 0.10700000000000008,10.0,0.0,2.3362415128557545,0.6264843140720999 110 | 0.10800000000000008,10.0,0.0,2.504977514345938,0.8481102480531343 111 | 0.10900000000000008,10.0,0.0,2.665852715986772,1.1029889200982157 112 | 0.11000000000000008,10.0,0.0,2.8183050703802994,1.38910064461532 113 | 0.11100000000000008,10.0,0.0,2.961911885036282,1.703521806830632 114 | 0.11200000000000009,10.0,0.0,3.0963993326781383,2.042531490239767 115 | 0.11300000000000009,10.0,0.0,3.2216477345324295,2.4017356338442113 116 | 0.11400000000000009,10.0,0.0,3.337692607495101,2.776204949492538 117 | 0.11500000000000009,10.0,0.0,3.444721576940417,3.160622574751331 118 | 0.11600000000000009,10.0,0.0,3.543067362919511,3.549437312635575 119 | 0.11700000000000009,10.0,0.0,3.633197142878375,3.9370182796494535 120 | 0.11800000000000009,10.0,0.0,3.7156986805839978,4.31780688163575 121 | 0.11900000000000009,10.0,0.0,3.7912636827526534,4.686462228267909 122 | 0.12000000000000009,10.0,0.0,3.860668903524079,5.037996388789782 123 | 0.1210000000000001,10.0,0.0,3.9247555596960964,5.36789627141621 124 | 0.1220000000000001,10.0,0.0,3.984407646005129,5.672229356912394 125 | 0.1230000000000001,10.0,0.0,4.040529750317263,5.947731025358481 126 | 0.1240000000000001,10.0,0.0,4.094024962965484,6.191871770999819 127 | 0.12500000000000008,10.0,0.0,4.145773452981355,6.402903174810128 128 | 0.12600000000000008,10.0,0.0,4.1966122491041205,6.579882100764088 129 | 0.12700000000000009,10.0,0.0,4.247316714493443,6.722673164238544 130 | 0.12800000000000009,10.0,0.0,4.298584144861227,6.8319300909028025 131 | 0.1290000000000001,10.0,0.0,4.351019850376744,6.909057113451488 132 | 0.1300000000000001,10.0,0.0,4.405126005852846,6.95648417634398 133 | 0.1310000000000001,10.0,0.0,4.461253616036718,6.992905801203238 134 | 0.1320000000000001,10.0,0.0,4.5177533375267265,7.016726275734259 135 | 0.1330000000000001,10.0,0.0,4.57503676455894,7.033541431257379 136 | 0.1340000000000001,10.0,0.0,4.632684420381479,7.047972490182119 137 | 0.1350000000000001,10.0,0.0,4.690281864685363,7.062116901267068 138 | 0.1360000000000001,10.0,0.0,4.747625085551527,7.077224526628312 139 | 0.1370000000000001,10.0,0.0,4.804569832482836,7.09411044649098 140 | 0.1380000000000001,10.0,0.0,4.86099903156675,7.113283438400026 141 | 0.1390000000000001,10.0,0.0,4.916816063607844,7.135037007139966 142 | 0.1400000000000001,10.0,0.0,4.9719399665910515,7.159513959748514 143 | 0.1410000000000001,10.0,0.0,5.026301992135226,7.186752223022567 144 | 0.1420000000000001,10.0,0.0,5.079843121347369,7.216717352748919 145 | 0.1430000000000001,10.0,0.0,5.132512261319755,7.2493256000131465 146 | 0.1440000000000001,10.0,0.0,5.18426492459307,7.28446027372205 147 | 0.1450000000000001,10.0,0.0,5.235062251747739,7.321983343021994 148 | 0.1460000000000001,10.0,0.0,5.284870277957305,7.361743657520263 149 | 0.1470000000000001,10.0,0.0,5.333659373357073,7.403582763448639 150 | 0.1480000000000001,10.0,0.0,5.381403807495262,7.447339010912925 151 | 0.1490000000000001,10.0,0.0,5.428081402530576,7.492850444162993 152 | 0.1500000000000001,10.0,0.0,5.4736732503223084,7.539956826008169 153 | 0.1510000000000001,10.0,0.0,5.518163475617628,7.5885010450252235 154 | 0.1520000000000001,10.0,0.0,5.561539032815419,7.638330082989027 155 | 0.1530000000000001,10.0,0.0,5.6037895273592575,7.689295668142668 156 | 0.1540000000000001,10.0,0.0,5.64490705548104,7.741254703216297 157 | 0.1550000000000001,10.0,0.0,5.684886057909352,7.79406953338915 158 | 0.1560000000000001,10.0,0.0,5.723723184224283,7.847608098762735 159 | 0.1570000000000001,10.0,0.0,5.76141716571167,7.9017440042579254 160 | 0.1580000000000001,10.0,0.0,5.797968695076992,7.95635652967025 161 | 0.1590000000000001,10.0,0.0,5.833380311942355,8.011330597428351 162 | 0.16000000000000011,10.0,0.0,5.867656293217978,8.066556708512179 163 | 0.16100000000000012,10.0,0.0,5.900802547939351,8.121950544372085 164 | 0.16200000000000012,10.0,0.0,5.932824153465919,8.177399399064287 165 | 0.16300000000000012,10.0,0.0,5.963731280015414,8.232792483930805 166 | 0.16400000000000012,10.0,0.0,5.993536121850146,8.288048094890573 167 | 0.16500000000000012,10.0,0.0,6.022249598856358,8.343084649703034 168 | 0.16600000000000012,10.0,0.0,6.049884250381051,8.397825008850068 169 | 0.16700000000000012,10.0,0.0,6.076453714289346,8.452196470859958 170 | 0.16800000000000012,10.0,0.0,6.101972638671158,8.506130726260912 171 | 0.16900000000000012,10.0,0.0,6.126456598605844,8.559563784331443 172 | 0.17000000000000012,10.0,0.0,6.149922017112162,8.612435880766492 173 | 0.17100000000000012,10.0,0.0,6.172386089853326,8.664691371896302 174 | 0.17200000000000013,10.0,0.0,6.19386671330242,8.716278620089273 175 | 0.17300000000000013,10.0,0.0,6.214382416081336,8.76714987287902 176 | 0.17400000000000013,10.0,0.0,6.233952293344782,8.81726113814618 177 | 0.17500000000000013,10.0,0.0,6.252595944055142,8.866572057189753 178 | 0.17600000000000013,10.0,0.0,6.270333411006989,8.915045776728762 179 | 0.17700000000000013,10.0,0.0,6.287185123518514,8.962648820466976 180 | 0.17800000000000013,10.0,0.0,6.3031718427353525,9.009350961386552 181 | 0.17900000000000013,10.0,0.0,6.318314609415664,9.0551250947344 182 | 0.18000000000000013,10.0,0.0,6.33263469418619,9.099947112573776 183 | 0.18100000000000013,10.0,0.0,6.346153550150777,9.143795779672471 184 | 0.18200000000000013,10.0,0.0,6.3588927678474585,9.186652611542396 185 | 0.18300000000000013,10.0,0.0,6.370874032429618,9.228501754143316 186 | 0.18400000000000014,10.0,0.0,6.38211908308666,9.269329866143977 187 | 0.18500000000000014,10.0,0.0,6.392649674563714,9.309126003118314 188 | 0.18600000000000014,10.0,0.0,6.402487540803914,9.347881504158368 189 | 0.18700000000000014,10.0,0.0,6.411654360616742,9.385589881206771 190 | 0.18800000000000014,10.0,0.0,6.420171725287766,9.422246710582446 191 | 0.18900000000000014,10.0,0.0,6.428061108138549,9.457849527195396 192 | 0.19000000000000014,10.0,0.0,6.435343835933347,9.492397721304775 193 | 0.19100000000000014,10.0,0.0,6.4420410620963136,9.525892438032006 194 | 0.19200000000000014,10.0,0.0,6.44817374166295,9.558336479329794 195 | 0.19300000000000014,10.0,0.0,6.453762607946575,9.589734208757722 196 | 0.19400000000000014,10.0,0.0,6.458828150828628,9.620091458816374 197 | 0.19500000000000015,10.0,0.0,6.463390596646435,9.649415441133288 198 | 0.19600000000000015,10.0,0.0,6.467469889592078,9.677714659136377 199 | 0.19700000000000015,10.0,0.0,6.471085674609042,9.704998823546918 200 | 0.19800000000000015,10.0,0.0,6.474257281697049,9.731278770461849 201 | 0.19900000000000015,10.0,0.0,6.4770037115963195,9.756566382158983 202 | 0.20000000000000015,10.0,0.0,6.479343622783426,9.780874510463454 203 | 0.20100000000000015,10.0,0.0,6.48129531974371,9.80421690276159 204 | 0.20200000000000015,10.0,0.0,6.482876742458665,9.82660813060374 205 | 0.20300000000000015,10.0,0.0,6.484105457062375,9.848063520903894 206 | 0.20400000000000015,10.0,0.0,6.484998647614281,9.868599089676367 207 | 0.20500000000000015,10.0,0.0,6.485573108943506,9.888231478232473 208 | 0.20600000000000016,10.0,0.0,6.485845240523247,9.906977891892591 209 | 0.20700000000000016,10.0,0.0,6.485831041319384,9.924856041130722 210 | 0.20800000000000016,10.0,0.0,6.485546105572956,9.941884085111344 211 | 0.20900000000000016,10.0,0.0,6.485005619472666,9.958080577590431 212 | 0.21000000000000016,10.0,0.0,6.484224358672949,9.97346441513449 213 | 0.21100000000000016,10.0,0.0,6.483216686615854,9.988054787617648 214 | 0.21200000000000016,10.0,0.0,6.481996553615185,10.001871130945126 215 | 0.21300000000000016,10.0,0.0,6.4805774966635346,10.014933081976093 216 | 0.21400000000000016,10.0,0.0,6.478972639920916,10.027260435521102 217 | 0.21500000000000016,10.0,0.0,6.477194695855993,10.038873103582919 218 | 0.21600000000000016,10.0,0.0,6.475255966978153,10.049791076516213 219 | 0.21700000000000016,10.0,0.0,6.473168348154499,10.060034386103624 220 | 0.21800000000000017,10.0,0.0,6.470943329473687,10.069623070845834 221 | 0.21900000000000017,10.0,0.0,6.468591999582549,10.078577142856576 222 | 0.22000000000000017,10.0,0.0,6.466125049524343,10.086916556812263 223 | 0.22100000000000017,10.0,0.0,6.463552776992529,10.09466118063375 224 | 0.22200000000000017,10.0,0.0,6.460885090997706,10.10183076780403 225 | 0.22300000000000017,10.0,0.0,6.458131516924597,10.108444931509098 226 | 0.22400000000000017,10.0,0.0,6.455301201923908,10.114523120445204 227 | 0.22500000000000017,10.0,0.0,6.4524029206213935,10.120084596072694 228 | 0.22600000000000017,10.0,0.0,6.44944508113719,10.125148411511475 229 | 0.22700000000000017,10.0,0.0,6.446435731363083,10.129733392015854 230 | 0.22800000000000017,10.0,0.0,6.443382565472327,10.133858116636215 231 | 0.22900000000000018,10.0,0.0,6.440292930677567,10.137540901542037 232 | 0.23000000000000018,10.0,0.0,6.437173834156144,10.14079978455496 233 | 0.23100000000000018,10.0,0.0,6.434031950163752,10.143652510924419 234 | 0.23200000000000018,10.0,0.0,6.430873627308318,10.146116520511914 235 | 0.23300000000000018,10.0,0.0,6.42770489593933,10.148208935935656 236 | 0.23400000000000018,10.0,0.0,6.424531475678243,10.14994655242198 237 | 0.23500000000000018,10.0,0.0,6.42135878298117,10.151345828156975 238 | 0.23600000000000018,10.0,0.0,6.418191938844531,10.152422875230304 239 | 0.23700000000000018,10.0,0.0,6.4150357766325925,10.153193453422809 240 | 0.23800000000000018,10.0,0.0,6.411894849744885,10.153672963174461 241 | 0.23900000000000018,10.0,0.0,6.408773439506231,10.153876439640753 242 | 0.24000000000000019,10.0,0.0,6.4056755630667865,10.153818549584637 243 | 0.2410000000000002,10.0,0.0,6.402604981080706,10.153513575109601 244 | 0.2420000000000002,10.0,0.0,6.399565207026017,10.15297545136118 245 | 0.2430000000000002,10.0,0.0,6.396559510373636,10.15221771469717 246 | 0.2440000000000002,10.0,0.0,6.393590929746093,10.151253523778855 247 | 0.2450000000000002,10.0,0.0,6.390662278362347,10.15009565756566 248 | 0.2460000000000002,10.0,0.0,6.3877761518323535,10.148756515752106 249 | 0.2470000000000002,10.0,0.0,6.384934935698666,10.147248118451719 250 | 0.2480000000000002,10.0,0.0,6.382140813059671,10.145582107016418 251 | 0.2490000000000002,10.0,0.0,6.379395772062872,10.143769746397378 252 | 0.25000000000000017,10.0,0.0,6.376701613196828,10.141821927102965 253 | 0.25100000000000017,10.0,0.0,6.374059956584211,10.139749167547743 254 | 0.25200000000000017,10.0,0.0,6.371472249188778,10.137561617082536 255 | 0.25300000000000017,10.0,0.0,6.368939771893648,10.13526906048876 256 | 0.25400000000000017,10.0,0.0,6.3664636463432505,10.132880921009232 257 | 0.25500000000000017,10.0,0.0,6.364044841871018,10.130406265348347 258 | 0.25600000000000017,10.0,0.0,6.36168418213014,10.127853808176768 259 | 0.2570000000000002,10.0,0.0,6.359382351683762,10.125231917122878 260 | 0.2580000000000002,10.0,0.0,6.357139902446694,10.122548617529718 261 | 0.2590000000000002,10.0,0.0,6.354957260055416,10.119811598987486 262 | 0.2600000000000002,10.0,0.0,6.352834729929889,10.117028220518897 263 | 0.2610000000000002,10.0,0.0,6.35077250336637,10.114205516671992 264 | 0.2620000000000002,10.0,0.0,6.34877066341762,10.11135020393583 265 | 0.2630000000000002,10.0,0.0,6.34682919061252,10.108468686941679 266 | 0.2640000000000002,10.0,0.0,6.344947968573101,10.10556706514613 267 | 0.2650000000000002,10.0,0.0,6.343126789449733,10.102651139696647 268 | 0.2660000000000002,10.0,0.0,6.341365359200749,10.099726419707196 269 | 0.2670000000000002,10.0,0.0,6.339663302805549,10.096798129617557 270 | 0.2680000000000002,10.0,0.0,6.338020169222162,10.09387121616011 271 | 0.2690000000000002,10.0,0.0,6.336435436244705,10.09095035532133 272 | 0.2700000000000002,10.0,0.0,6.334908515222156,10.088039959556955 273 | 0.2710000000000002,10.0,0.0,6.333438755607455,10.085144184925605 274 | 0.2720000000000002,10.0,0.0,6.332025449372077,10.082266938163027 275 | 0.2730000000000002,10.0,0.0,6.330667835285074,10.079411883955448 276 | 0.2740000000000002,10.0,0.0,6.329365103026722,10.07658245239466 277 | 0.2750000000000002,10.0,0.0,6.328116397134908,10.07378184567485 278 | 0.2760000000000002,10.0,0.0,6.326920820893392,10.071013045873281 279 | 0.2770000000000002,10.0,0.0,6.325777439956083,10.068278821380218 280 | 0.2780000000000002,10.0,0.0,6.324685285977785,10.0655817345924 281 | 0.2790000000000002,10.0,0.0,6.323643359964719,10.062924148752298 282 | 0.2800000000000002,10.0,0.0,6.322650635573684,10.060308234824904 283 | 0.2810000000000002,10.0,0.0,6.321706062269925,10.05773597855464 284 | 0.2820000000000002,10.0,0.0,6.320808568325858,10.055209187215187 285 | 0.2830000000000002,10.0,0.0,6.319957063715499,10.052729496419541 286 | 0.2840000000000002,10.0,0.0,6.319150442866674,10.050298376721212 287 | 0.2850000000000002,10.0,0.0,6.318387587302082,10.047917140304566 288 | 0.2860000000000002,10.0,0.0,6.317667368137655,10.045586947362075 289 | 0.2870000000000002,10.0,0.0,6.316988648484663,10.043308812470638 290 | 0.2880000000000002,10.0,0.0,6.316350285724393,10.041083610827833 291 | 0.2890000000000002,10.0,0.0,6.3157511336721175,10.038912084504544 292 | 0.2900000000000002,10.0,0.0,6.315190044614356,10.036794848353896 293 | 0.2910000000000002,10.0,0.0,6.314665871262343,10.034732395962621 294 | 0.2920000000000002,10.0,0.0,6.314177468582217,10.03272510545543 295 | 0.2930000000000002,10.0,0.0,6.313723695523828,10.030773245078437 296 | 0.2940000000000002,10.0,0.0,6.313303416659958,10.02887697876217 297 | 0.2950000000000002,10.0,0.0,6.312915503716343,10.027036371483751 298 | 0.2960000000000002,10.0,0.0,6.312558837014509,10.025251394543302 299 | 0.2970000000000002,10.0,0.0,6.312232306817688,10.02352193075031 300 | 0.2980000000000002,10.0,0.0,6.311934814581981,10.021847779253221 301 | 0.2990000000000002,10.0,0.0,6.311665274146626,10.020228660628216 302 | 0.3000000000000002,10.0,0.0,6.311422612796562,10.01866422138637 303 | 0.3010000000000002,10.0,0.0,6.31120577229302,10.01715403865943 304 | 0.3020000000000002,10.0,0.0,6.311013709792524,10.015697624659435 305 | 0.3030000000000002,10.0,0.0,6.310845398699335,10.014294430855443 306 | 0.3040000000000002,10.0,0.0,6.310699829462626,10.012943852343836 307 | 0.3050000000000002,10.0,0.0,6.31057601026691,10.011645231751283 308 | 0.3060000000000002,10.0,0.0,6.3104729676911395,10.01039786316828 309 | 0.3070000000000002,10.0,0.0,6.310389747286074,10.009200995937901 310 | 0.3080000000000002,10.0,0.0,6.310325414090354,10.008053838258384 311 | 0.3090000000000002,10.0,0.0,6.310279053093137,10.00695556075943 312 | 0.3100000000000002,10.0,0.0,6.310249769627844,10.005905299813755 313 | 0.3110000000000002,10.0,0.0,6.310236689726136,10.004902160823772 314 | 0.3120000000000002,10.0,0.0,6.310238960408659,10.003945221330435 315 | 0.3130000000000002,10.0,0.0,6.310255749931384,10.003033534023063 316 | 0.3140000000000002,10.0,0.0,6.310286247981661,10.002166129610575 317 | 0.3150000000000002,10.0,0.0,6.3103296658306975,10.001342019585127 318 | 0.3160000000000002,10.0,0.0,6.310385236441539,10.000560198857498 319 | 0.3170000000000002,10.0,0.0,6.310452214537153,9.999819648282504 320 | 0.3180000000000002,10.0,0.0,6.310529876629003,9.999119337044643 321 | 0.31900000000000023,10.0,0.0,6.310617521011896,9.998458225044569 322 | 0.32000000000000023,10.0,0.0,6.310714467711012,9.997835264944944 323 | 0.32100000000000023,10.0,0.0,6.310820058422077,9.99724940434249 324 | 0.32200000000000023,10.0,0.0,6.310933656395472,9.99669958771593 325 | 0.32300000000000023,10.0,0.0,6.31105464630381,9.996184758417126 326 | 0.32400000000000023,10.0,0.0,6.311182434065348,9.995703860190629 327 | 0.32500000000000023,10.0,0.0,6.3113164466841845,9.995255839053646 328 | 0.32600000000000023,10.0,0.0,6.3114561320168105,9.994839644852142 329 | 0.32700000000000023,10.0,0.0,6.311600958539918,9.994454232728309 330 | 0.32800000000000024,10.0,0.0,6.311750415097735,9.994098564465451 331 | 0.32900000000000024,10.0,0.0,6.311904010634712,9.993771609988599 332 | 0.33000000000000024,10.0,0.0,6.312061273882625,9.993472348354345 333 | 0.33100000000000024,10.0,0.0,6.312221753078963,9.99319976904106 334 | 0.33200000000000024,10.0,0.0,6.312385015629471,9.992952872908926 335 | 0.33300000000000024,10.0,0.0,6.312550647784506,9.99273067337242 336 | 0.33400000000000024,10.0,0.0,6.312718254270708,9.99253219709794 337 | 0.33500000000000024,10.0,0.0,6.312887457956197,9.992356485298734 338 | 0.33600000000000024,10.0,0.0,6.313057899430143,9.992202593772337 339 | 0.33700000000000024,10.0,0.0,6.313229236707336,9.992069594367068 340 | 0.33800000000000024,10.0,0.0,6.313401144760522,9.991956575343677 341 | 0.33900000000000025,10.0,0.0,6.313573315155987,9.991862641410163 342 | 0.34000000000000025,10.0,0.0,6.313745455721135,9.991786915400747 343 | 0.34100000000000025,10.0,0.0,6.3139172900140625,9.991728538138258 344 | 0.34200000000000025,10.0,0.0,6.314088556977547,9.991686667658225 345 | 0.34300000000000025,10.0,0.0,6.3142590106723855,9.991660482255801 346 | 0.34400000000000025,10.0,0.0,6.314428419567512,9.991649177700571 347 | 0.34500000000000025,10.0,0.0,6.314596566469024,9.991651970772624 348 | 0.34600000000000025,10.0,0.0,6.314763247746365,9.991668097896188 349 | 0.34700000000000025,10.0,0.0,6.3149282730760845,9.991696814657875 350 | 0.34800000000000025,10.0,0.0,6.315091465106759,9.991737393607051 351 | 0.34900000000000025,10.0,0.0,6.3152526593397,9.991789130148547 352 | 0.35000000000000026,10.0,0.0,6.31541170308258,9.991851340933447 353 | 0.35100000000000026,10.0,0.0,6.31556845518542,9.991923359983476 354 | 0.35200000000000026,10.0,0.0,6.315722786080748,9.992004543046187 355 | 0.35300000000000026,10.0,0.0,6.3158745769135525,9.99209426534647 356 | 0.35400000000000026,10.0,0.0,6.316023719376595,9.992191921560211 357 | 0.35500000000000026,10.0,0.0,6.3161701153240175,9.992296926631496 358 | 0.35600000000000026,10.0,0.0,6.316313676284259,9.992408715157401 359 | 0.35700000000000026,10.0,0.0,6.316454323128521,9.99252674145199 360 | 0.35800000000000026,10.0,0.0,6.316591985670022,9.992650478937644 361 | 0.35900000000000026,10.0,0.0,6.316726602342703,9.992779420328748 362 | 0.36000000000000026,10.0,0.0,6.3168581197970175,9.99291307745805 363 | 0.36100000000000027,10.0,0.0,6.316986492534927,9.99305098051529 364 | 0.36200000000000027,10.0,0.0,6.317111682618897,9.993192678417733 365 | 0.36300000000000027,10.0,0.0,6.317233659260298,9.993337738306607 366 | 0.36400000000000027,10.0,0.0,6.317352398505278,9.993485744941625 367 | 0.36500000000000027,10.0,0.0,6.317467882942943,9.993636300942805 368 | 0.36600000000000027,10.0,0.0,6.317580101323969,9.993789026153653 369 | 0.36700000000000027,10.0,0.0,6.317689048279811,9.993943557422755 370 | 0.36800000000000027,10.0,0.0,6.317794724004446,9.99409954829064 371 | 0.36900000000000027,10.0,0.0,6.317897133951845,9.994256668540793 372 | 0.3700000000000003,10.0,0.0,6.317996288556014,9.994414603958809 373 | 0.3710000000000003,10.0,0.0,6.318092202935036,9.994573056004027 374 | 0.3720000000000003,10.0,0.0,6.3181848966104335,9.994731741245264 375 | 0.3730000000000003,10.0,0.0,6.3182743932614045,9.994890391389362 376 | 0.3740000000000003,10.0,0.0,6.318360720419207,9.995048752477823 377 | 0.3750000000000003,10.0,0.0,6.318443909260804,9.99520658464349 378 | 0.3760000000000003,10.0,0.0,6.318523994351367,9.995363661944845 379 | 0.3770000000000003,10.0,0.0,6.318601013382335,9.995519771767102 380 | 0.3780000000000003,10.0,0.0,6.318675006964767,9.995674714501986 381 | 0.3790000000000003,10.0,0.0,6.31874601840124,9.995828303091773 382 | 0.3800000000000003,10.0,0.0,6.318814093480426,9.995980362810423 383 | 0.3810000000000003,10.0,0.0,6.318879280252353,9.996130730924438 384 | 0.3820000000000003,10.0,0.0,6.318941628822461,9.996279256021412 385 | 0.3830000000000003,10.0,0.0,6.319001191192337,9.996425797882587 386 | 0.3840000000000003,10.0,0.0,6.319058021048567,9.996570226934317 387 | 0.3850000000000003,10.0,0.0,6.319112173604708,9.996712424071045 388 | 0.3860000000000003,10.0,0.0,6.319163705409615,9.996852280122974 389 | 0.3870000000000003,10.0,0.0,6.319212674201962,9.996989695672095 390 | 0.3880000000000003,10.0,0.0,6.319259138733608,9.997124580470395 391 | 0.3890000000000003,10.0,0.0,6.31930315864437,9.997256853362735 392 | 0.3900000000000003,10.0,0.0,6.319344794287881,9.99738644168746 393 | 0.3910000000000003,10.0,0.0,6.319384106621659,9.997513281009205 394 | 0.3920000000000003,10.0,0.0,6.319421157069301,9.997637314677224 395 | 0.3930000000000003,10.0,0.0,6.319456007408954,9.997758493749924 396 | 0.3940000000000003,10.0,0.0,6.319488719626686,9.997876776511701 397 | 0.3950000000000003,10.0,0.0,6.319519355820274,9.997992128082506 398 | 0.3960000000000003,10.0,0.0,6.319547978101544,9.99810452027902 399 | 0.3970000000000003,10.0,0.0,6.319574648476311,9.998213931060992 400 | 0.3980000000000003,10.0,0.0,6.319599428776894,9.99832034450172 401 | 0.3990000000000003,10.0,0.0,6.319622380542787,9.998423750283866 402 | 0.4000000000000003,10.0,0.0,6.319643564958896,9.99852414350468 403 | 0.4010000000000003,10.0,0.0,6.31966304276672,9.99862152440631 404 | 0.4020000000000003,10.0,0.0,6.319680874188431,9.998715898069849 405 | 0.4030000000000003,10.0,0.0,6.31969711886068,9.998807274075443 406 | 0.4040000000000003,10.0,0.0,6.319711835778612,9.99889566636046 407 | 0.4050000000000003,10.0,0.0,6.3197250832229015,9.99898109292318 408 | 0.4060000000000003,10.0,0.0,6.319736918708165,9.99906357554567 409 | 0.4070000000000003,10.0,0.0,6.319747398935004,9.999143139602246 410 | 0.4080000000000003,10.0,0.0,6.319756579737301,9.999219813761709 411 | 0.4090000000000003,10.0,0.0,6.31976451604612,9.999293629823141 412 | 0.4100000000000003,10.0,0.0,6.319771261843513,9.999364622502084 413 | 0.4110000000000003,10.0,0.0,6.319776870125577,9.999432829166256 414 | 0.4120000000000003,10.0,0.0,6.319781392875836,9.999498289632104 415 | 0.4130000000000003,10.0,0.0,6.319784881036609,9.999561046022919 416 | 0.4140000000000003,10.0,0.0,6.319787384477069,9.99962114255494 417 | 0.4150000000000003,10.0,0.0,6.319788951972768,9.999678625335424 418 | 0.4160000000000003,10.0,0.0,6.319789631188011,9.999733542197804 419 | 0.4170000000000003,10.0,0.0,6.319789468657817,9.99978594253841 420 | 0.4180000000000003,10.0,0.0,6.319788509772987,9.999835877140354 421 | 0.4190000000000003,10.0,0.0,6.319786798769987,9.99988339803636 422 | 0.4200000000000003,10.0,0.0,6.319784378719659,9.999928558332616 423 | 0.4210000000000003,10.0,0.0,6.31978129152338,9.999971412086822 424 | 0.4220000000000003,10.0,0.0,6.3197775779062235,10.000012014172544 425 | 0.4230000000000003,10.0,0.0,6.319773277414201,10.00005042009194 426 | 0.4240000000000003,10.0,0.0,6.3197684284204225,10.000086685958763 427 | 0.4250000000000003,10.0,0.0,6.319763068114565,10.0001208683039 428 | 0.4260000000000003,10.0,0.0,6.3197572325139735,10.000153023914915 429 | 0.4270000000000003,10.0,0.0,6.319750956474573,10.000183209822367 430 | 0.4280000000000003,10.0,0.0,6.31974427368738,10.000211483174299 431 | 0.4290000000000003,10.0,0.0,6.319737216688702,10.000237901140432 432 | 0.4300000000000003,10.0,0.0,6.3197298168692795,10.000262520766558 433 | 0.4310000000000003,10.0,0.0,6.319722104491336,10.000285398905365 434 | 0.43200000000000033,10.0,0.0,6.3197141086993485,10.000306592199768 435 | 0.43300000000000033,10.0,0.0,6.319705857525912,10.000326156902005 436 | 0.43400000000000033,10.0,0.0,6.319697377917649,10.00034414899294 437 | 0.43500000000000033,10.0,0.0,6.319688695728696,10.000360623955306 438 | 0.43600000000000033,10.0,0.0,6.3196798357533535,10.000375636424764 439 | 0.43700000000000033,10.0,0.0,6.319670821777912,10.000389240811378 440 | 0.43800000000000033,10.0,0.0,6.319661676523023,10.000401490894715 441 | 0.43900000000000033,10.0,0.0,6.319652421696795,10.000412439521853 442 | 0.44000000000000034,10.0,0.0,6.319643078043645,10.000422138806034 443 | 0.44100000000000034,10.0,0.0,6.319633665339105,10.000430639996132 444 | 0.44200000000000034,10.0,0.0,6.319624202420172,10.00043799403751 445 | 0.44300000000000034,10.0,0.0,6.319614707135284,10.000444250609641 446 | 0.44400000000000034,10.0,0.0,6.319605196465878,10.000449458283837 447 | 0.44500000000000034,10.0,0.0,6.319595686532782,10.000453665066793 448 | 0.44600000000000034,10.0,0.0,6.3195861925531505,10.000456917752201 449 | 0.44700000000000034,10.0,0.0,6.319576728929565,10.0004592623978 450 | 0.44800000000000034,10.0,0.0,6.3195673092170495,10.000460744157486 451 | 0.44900000000000034,10.0,0.0,6.319557946157931,10.00046140530916 452 | 0.45000000000000034,10.0,0.0,6.31954865193658,10.000461288818517 453 | 0.45100000000000035,10.0,0.0,6.319539437809274,10.000460435497963 454 | 0.45200000000000035,10.0,0.0,6.319530314431371,10.000458891035148 455 | 0.45300000000000035,10.0,0.0,6.31952129105695,10.000456692360212 456 | 0.45400000000000035,10.0,0.0,6.319512377077239,10.0004538784654 457 | 0.45500000000000035,10.0,0.0,6.319503580897413,10.000450486282569 458 | 0.45600000000000035,10.0,0.0,6.319494910390044,10.000446552023037 459 | 0.45700000000000035,10.0,0.0,6.319486372775536,10.00044211149059 460 | 0.45800000000000035,10.0,0.0,6.3194779745989695,10.000437199013852 461 | 0.45900000000000035,10.0,0.0,6.3194697218663665,10.000431847908436 462 | 0.46000000000000035,10.0,0.0,6.319461620018739,10.000426089791068 463 | 0.46100000000000035,10.0,0.0,6.319453674034655,10.00041995619692 464 | 0.46200000000000035,10.0,0.0,6.319445888270131,10.000413476302372 465 | 0.46300000000000036,10.0,0.0,6.319438266733539,10.000406679260408 466 | 0.46400000000000036,10.0,0.0,6.319430812852527,10.000399593339111 467 | 0.46500000000000036,10.0,0.0,6.3194235295778745,10.000392245181814 468 | 0.46600000000000036,10.0,0.0,6.3194164194899685,10.00038466060267 469 | 0.46700000000000036,10.0,0.0,6.3194094847358295,10.000376864463767 470 | 0.46800000000000036,10.0,0.0,6.319402727060444,10.000368880306006 471 | 0.46900000000000036,10.0,0.0,6.3193961478701,10.000360731236098 472 | 0.47000000000000036,10.0,0.0,6.3193897481523695,10.000352439345875 473 | 0.47100000000000036,10.0,0.0,6.319383528554474,10.000344025330035 474 | 0.47200000000000036,10.0,0.0,6.319377489449457,10.000335509225167 475 | 0.47300000000000036,10.0,0.0,6.319371630875441,10.000326910370523 476 | 0.47400000000000037,10.0,0.0,6.319365952553495,10.000318246999411 477 | 0.47500000000000037,10.0,0.0,6.319360453950618,10.000309536327974 478 | 0.47600000000000037,10.0,0.0,6.319355134291202,10.000300794840957 479 | 0.47700000000000037,10.0,0.0,6.319349992543085,10.000292038098337 480 | 0.47800000000000037,10.0,0.0,6.31934502745538,10.000283281108548 481 | 0.47900000000000037,10.0,0.0,6.319340237532189,10.000274538038061 482 | 0.48000000000000037,10.0,0.0,6.3193356210784755,10.000265822068247 483 | 0.48100000000000037,10.0,0.0,6.319331176234091,10.000257145599816 484 | 0.4820000000000004,10.0,0.0,6.319326900968938,10.00024852051846 485 | 0.4830000000000004,10.0,0.0,6.319322793066704,10.000239957950905 486 | 0.4840000000000004,10.0,0.0,6.319318850164442,10.000231468145307 487 | 0.4850000000000004,10.0,0.0,6.319315069782095,10.000223060950507 488 | 0.4860000000000004,10.0,0.0,6.319311449282565,10.000214745433524 489 | 0.4870000000000004,10.0,0.0,6.319307985925593,10.000206529935516 490 | 0.4880000000000004,10.0,0.0,6.319304676876683,10.000198422442867 491 | 0.4890000000000004,10.0,0.0,6.319301519177091,10.00019043014909 492 | 0.4900000000000004,10.0,0.0,6.319298509803487,10.000182559572066 493 | 0.4910000000000004,10.0,0.0,6.319295645669748,10.000174816901135 494 | 0.4920000000000004,10.0,0.0,6.319292923598819,10.000167207764788 495 | 0.4930000000000004,10.0,0.0,6.319290340357157,10.000159737141288 496 | 0.4940000000000004,10.0,0.0,6.319287892676681,10.00015240956946 497 | 0.4950000000000004,10.0,0.0,6.319285577242475,10.000145229267812 498 | 0.4960000000000004,10.0,0.0,6.319283390687284,10.000138199766543 499 | 0.4970000000000004,10.0,0.0,6.319281329642079,10.000131324258682 500 | 0.4980000000000004,10.0,0.0,6.319279390707692,10.000124605598703 501 | 0.4990000000000004,10.0,0.0,6.319277570461717,10.000118046143594 502 | 0.5000000000000003,10.0,3.0,6.319275865484355,10.00011164791692 503 | 0.5010000000000003,10.0,3.0,6.319274272348684,10.026450534813417 504 | 0.5020000000000003,10.0,3.0,6.316111372962767,10.05193211469903 505 | 0.5030000000000003,10.0,3.0,6.312524572680224,10.07637584142991 506 | 0.5040000000000003,10.0,3.0,6.308552683178538,10.099694149569531 507 | 0.5050000000000003,10.0,3.0,6.304226969373185,10.121832583723439 508 | 0.5060000000000003,10.0,3.0,6.299576474283326,10.142761239760636 509 | 0.5070000000000003,10.0,3.0,6.294628383884393,10.162468446362304 510 | 0.5080000000000003,10.0,3.0,6.2894082942969805,10.180956049174643 511 | 0.5090000000000003,10.0,3.0,6.283940413032253,10.198235888225998 512 | 0.5100000000000003,10.0,3.0,6.278247711362598,10.214327163132893 513 | 0.5110000000000003,10.0,3.0,6.272352040609251,10.22925445948309 514 | 0.5120000000000003,10.0,3.0,6.2662742217845695,10.243046269650677 515 | 0.5130000000000003,10.0,3.0,6.260034115374798,10.25573387960967 516 | 0.5140000000000003,10.0,3.0,6.253650676786704,10.267350531618426 517 | 0.5150000000000003,10.0,3.0,6.247142000953461,10.277930790862817 518 | 0.5160000000000003,10.0,3.0,6.240525359211765,10.287510065483865 519 | 0.5170000000000003,10.0,3.0,6.233817230439983,10.296124241697902 520 | 0.5180000000000003,10.0,3.0,6.227033327984621,10.30380940478113 521 | 0.5190000000000003,10.0,3.0,6.220188623580675,10.3106016242048 522 | 0.5200000000000004,10.0,3.0,6.213297369154213,10.31653678858753 523 | 0.5210000000000004,10.0,3.0,6.20637311694419,10.321650476652106 524 | 0.5220000000000004,10.0,3.0,6.19942873860469,10.325977856608892 525 | 0.5230000000000004,10.0,3.0,6.192476443476833,10.329553606997933 526 | 0.5240000000000004,10.0,3.0,6.185527796297971,10.332411853869672 527 | 0.5250000000000004,10.0,3.0,6.178593734533403,10.334586120872205 528 | 0.5260000000000004,10.0,3.0,6.171684585415706,10.33610928941057 529 | 0.5270000000000004,10.0,3.0,6.164810082773658,10.337013566082948 530 | 0.5280000000000004,10.0,3.0,6.157979383784761,10.33733045747008 531 | 0.5290000000000004,10.0,3.0,6.151201085496647,10.337090749058692 532 | 0.5300000000000004,10.0,3.0,6.144483241356611,10.336324489143012 533 | 0.5310000000000004,10.0,3.0,6.137833377565319,10.335060975684362 534 | 0.5320000000000004,10.0,3.0,6.131258509397497,10.333328746476232 535 | 0.5330000000000004,10.0,3.0,6.124765157388786,10.33115557162618 536 | 0.5340000000000004,10.0,3.0,6.118359363441267,10.328568448577647 537 | 0.5350000000000004,10.0,3.0,6.112046706774567,10.325593598965268 538 | 0.5360000000000004,10.0,3.0,6.1058323197565,10.322256466832622 539 | 0.5370000000000004,10.0,3.0,6.099720903633112,10.318581719112236 540 | 0.5380000000000004,10.0,3.0,6.093716744022905,10.314593246919674 541 | 0.5390000000000004,10.0,3.0,6.087823726303768,10.310314168591852 542 | 0.5400000000000004,10.0,3.0,6.082045350764713,10.305766833602174 543 | 0.5410000000000004,10.0,3.0,6.0763847475916375,10.300972827704049 544 | 0.5420000000000004,10.0,3.0,6.070844691627369,10.295952979048275 545 | 0.5430000000000004,10.0,3.0,6.065427616911981,10.290727365156599 546 | 0.5440000000000004,10.0,3.0,6.060135630998016,10.285315321000159 547 | 0.5450000000000004,10.0,3.0,6.054970528993658,10.279735447603588 548 | 0.5460000000000004,10.0,3.0,6.049933807381243,10.274005621386323 549 | 0.5470000000000004,10.0,3.0,6.045026677575243,10.26814300433946 550 | 0.5480000000000004,10.0,3.0,6.04025007919314,10.262164054725657 551 | 0.5490000000000004,10.0,3.0,6.035604693060008,10.256084538349157 552 | 0.5500000000000004,10.0,3.0,6.031090953930675,10.249919540294922 553 | 0.5510000000000004,10.0,3.0,6.0267090629302,10.243683477102667 554 | 0.5520000000000004,10.0,3.0,6.022458999707371,10.237390109517044 555 | 0.5530000000000004,10.0,3.0,6.018340534275593,10.231052555536284 556 | 0.5540000000000004,10.0,3.0,6.0143532385629435,10.224683303710627 557 | 0.5550000000000004,10.0,3.0,6.010496497671296,10.218294226703259 558 | 0.5560000000000004,10.0,3.0,6.006769520837968,10.211896595367545 559 | 0.5570000000000004,10.0,3.0,6.003171352064188,10.205501092783338 560 | 0.5580000000000004,10.0,3.0,5.999700880466942,10.199117828573529 561 | 0.5590000000000004,10.0,3.0,5.996356850316452,10.19275635340702 562 | 0.5600000000000004,10.0,3.0,5.993137870764962,10.186425673533124 563 | 0.5610000000000004,10.0,3.0,5.99004242528169,10.180134265490503 564 | 0.5620000000000004,10.0,3.0,5.9870688807761425,10.173890090833266 565 | 0.5630000000000004,10.0,3.0,5.9842154964252,10.16770061084875 566 | 0.5640000000000004,10.0,3.0,5.981480432206677,10.16157280145519 567 | 0.5650000000000004,10.0,3.0,5.978861757116929,10.155513167859072 568 | 0.5660000000000004,10.0,3.0,5.976357457119359,10.149527759386102 569 | 0.5670000000000004,10.0,3.0,5.973965442778934,10.143622184050638 570 | 0.5680000000000004,10.0,3.0,5.971683556631468,10.137801623190228 571 | 0.5690000000000004,10.0,3.0,5.969509580253704,10.13207084605006 572 | 0.5700000000000004,10.0,3.0,5.9674412410467195,10.126434224011351 573 | 0.5710000000000004,10.0,3.0,5.965476218770363,10.120895744946274 574 | 0.5720000000000004,10.0,3.0,5.963612151777945,10.115459027274412 575 | 0.5730000000000004,10.0,3.0,5.961846642999643,10.110127333884268 576 | 0.5740000000000004,10.0,3.0,5.960177265660973,10.104903585948225 577 | 0.5750000000000004,10.0,3.0,5.958601568735613,10.09979037646209 578 | 0.5760000000000004,10.0,3.0,5.957117082154984,10.094789983590626 579 | 0.5770000000000004,10.0,3.0,5.955721321770318,10.089904383859583 580 | 0.5780000000000004,10.0,3.0,5.954411794066231,10.08513526506132 581 | 0.5790000000000004,10.0,3.0,5.953186000644831,10.080484039003322 582 | 0.5800000000000004,10.0,3.0,5.9520414424705645,10.07595185395421 583 | 0.5810000000000004,10.0,3.0,5.950975623896392,10.071539606872937 584 | 0.5820000000000004,10.0,3.0,5.94998605646706,10.067247955382925 585 | 0.5830000000000004,10.0,3.0,5.949070262508403,10.0630773294926 586 | 0.5840000000000004,10.0,3.0,5.948225778507584,10.059027943032516 587 | 0.5850000000000004,10.0,3.0,5.947450158292942,10.055099804869352 588 | 0.5860000000000004,10.0,3.0,5.9467409760118715,10.051292729811427 589 | 0.5870000000000004,10.0,3.0,5.946095828921435,10.047606349254936 590 | 0.5880000000000004,10.0,3.0,5.945512339991986,10.044040121551927 591 | 0.5890000000000004,10.0,3.0,5.944988160331248,10.040593342105723 592 | 0.5900000000000004,10.0,3.0,5.944520971433755,10.037265153175586 593 | 0.5910000000000004,10.0,3.0,5.944108487263256,10.034054553430563 594 | 0.5920000000000004,10.0,3.0,5.943748456169147,10.030960407188807 595 | 0.5930000000000004,10.0,3.0,5.943438662649546,10.027981453399686 596 | 0.5940000000000004,10.0,3.0,5.943176928960464,10.025116314338437 597 | 0.5950000000000004,10.0,3.0,5.94296111657982,10.022363504029183 598 | 0.5960000000000004,10.0,3.0,5.942789127530162,10.019721436380953 599 | 0.5970000000000004,10.0,3.0,5.942658905567366,10.017188433060449 600 | 0.5980000000000004,10.0,3.0,5.942568437238207,10.014762731088766 601 | 0.5990000000000004,10.0,3.0,5.9425157528136,10.01244249016285 602 | 0.6000000000000004,10.0,3.0,5.9424989271029345,10.010225799714922 603 | 0.6010000000000004,10.0,3.0,5.942516080153429,10.00811068570599 604 | 0.6020000000000004,10.0,3.0,5.942565377840203,10.00609511715911 605 | 0.6030000000000004,10.0,3.0,5.942645032351708,10.004177012432505 606 | 0.6040000000000004,10.0,3.0,5.942753302575718,10.002354245242609 607 | 0.6050000000000004,10.0,3.0,5.942888494389855,10.000624650433119 608 | 0.6060000000000004,10.0,3.0,5.943048960862142,9.998986029503802 609 | 0.6070000000000004,10.0,3.0,5.943233102364998,9.997436155889153 610 | 0.6080000000000004,10.0,3.0,5.943439366608679,9.995972780008856 611 | 0.6090000000000004,10.0,3.0,5.943666248596531,9.994593634085893 612 | 0.6100000000000004,10.0,3.0,5.94391229050711,9.993296436722018 613 | 0.6110000000000004,10.0,3.0,5.944176081509057,9.992078897274832 614 | 0.6120000000000004,10.0,3.0,5.944456257508279,9.990938719995999 615 | 0.6130000000000004,10.0,3.0,5.944751500836243,9.98987360796457 616 | 0.6140000000000004,10.0,3.0,5.945060539880094,9.988881266815591 617 | 0.6150000000000004,10.0,3.0,5.94538214865868,9.98795940826475 618 | 0.6160000000000004,10.0,3.0,5.94571514634847,9.987105753424405 619 | 0.6170000000000004,10.0,3.0,5.946058396764016,9.9863180359473 620 | 0.6180000000000004,10.0,3.0,5.94641080779278,9.98559400496343 621 | 0.6190000000000004,10.0,3.0,5.946771330791899,9.984931427846112 622 | 0.6200000000000004,10.0,3.0,5.947138959946708,9.984328092813087 623 | 0.6210000000000004,10.0,3.0,5.947512731593749,9.98378181132516 624 | 0.6220000000000004,10.0,3.0,5.9478917235160385,9.983290420341968 625 | 0.6230000000000004,10.0,3.0,5.948275054207518,9.982851784424998 626 | 0.6240000000000004,10.0,3.0,5.948661882110715,9.982463797650668 627 | 0.6250000000000004,10.0,3.0,5.949051404835135,9.982124385417567 628 | 0.6260000000000004,10.0,3.0,5.949442858350094,9.981831506066603 629 | 0.6270000000000004,10.0,3.0,5.949835516163858,9.981583152395144 630 | 0.6280000000000004,10.0,3.0,5.950228688483101,9.981377353013874 631 | 0.6290000000000004,10.0,3.0,5.9506217213609505,9.981212173585892 632 | 0.6300000000000004,10.0,3.0,5.951013995832031,9.981085717934626 633 | 0.6310000000000004,10.0,3.0,5.951404927038465,9.980996129042033 634 | 0.6320000000000005,10.0,3.0,5.951793963346883,9.980941589904528 635 | 0.6330000000000005,10.0,3.0,5.952180585462543,9.98092032432411 636 | 0.6340000000000005,10.0,3.0,5.952564305534102,9.980930597549978 637 | 0.6350000000000005,10.0,3.0,5.952944666260515,9.980970716838417 638 | 0.6360000000000005,10.0,3.0,5.953321239994903,9.981039031919545 639 | 0.6370000000000005,10.0,3.0,5.953693627848399,9.981133935363346 640 | 0.6380000000000005,10.0,3.0,5.954061458796753,9.981253862863923 641 | 0.6390000000000005,10.0,3.0,5.954424388789416,9.981397293428788 642 | 0.6400000000000005,10.0,3.0,5.954782099864354,9.981562749501748 643 | 0.6410000000000005,10.0,3.0,5.955134299267023,9.98174879701181 644 | 0.6420000000000005,10.0,3.0,5.95548071857578,9.981954045336632 645 | 0.6430000000000005,10.0,3.0,5.955821112836564,9.98217714720638 646 | 0.6440000000000005,10.0,3.0,5.956155259705462,9.982416798539802 647 | 0.6450000000000005,10.0,3.0,5.956482958601324,9.982671738232824 648 | 0.6460000000000005,10.0,3.0,5.9568040298673655,9.982940747877691 649 | 0.6470000000000005,10.0,3.0,5.957118313945324,9.98322265142922 650 | 0.6480000000000005,10.0,3.0,5.957425670561587,9.983516314819719 651 | 0.6490000000000005,10.0,3.0,5.957725977926143,9.983820645545858 652 | 0.6500000000000005,10.0,3.0,5.958019131942612,9.984134592187687 653 | 0.6510000000000005,10.0,3.0,5.958305045434675,9.984457143897417 654 | 0.6520000000000005,10.0,3.0,5.958583647385754,9.984787329853837 655 | 0.6530000000000005,10.0,3.0,5.958854882193035,9.985124218683442 656 | 0.6540000000000005,10.0,3.0,5.959118708936405,9.985466917837941 657 | 0.6550000000000005,10.0,3.0,5.959375100664197,9.985814572955567 658 | 0.6560000000000005,10.0,3.0,5.9596240436933225,9.9861663671859 659 | 0.6570000000000005,10.0,3.0,5.959865536926571,9.986521520496904 660 | 0.6580000000000005,10.0,3.0,5.960099591185533,9.98687928896959 661 | 0.6590000000000005,10.0,3.0,5.9603262285588725,9.987238964043764 662 | 0.6600000000000005,10.0,3.0,5.96054548177058,9.987599871778798 663 | 0.6610000000000005,10.0,3.0,5.960757393561501,9.98796137208233 664 | 0.6620000000000005,10.0,3.0,5.960962016089501,9.988322857929347 665 | 0.6630000000000005,10.0,3.0,5.961159410346212,9.988683754570356 666 | 0.6640000000000005,10.0,3.0,5.961349645590704,9.989043518728412 667 | 0.6650000000000005,10.0,3.0,5.96153279880033,9.989401637797503 668 | 0.6660000000000005,10.0,3.0,5.961708954137472,9.989757629020694 669 | 0.6670000000000005,10.0,3.0,5.961878202434739,9.990111038671069 670 | 0.6680000000000005,10.0,3.0,5.962040640696279,9.990461441236368 671 | 0.6690000000000005,10.0,3.0,5.962196371615023,9.9908084385954 672 | 0.6700000000000005,10.0,3.0,5.962345503107212,9.991151659192434 673 | 0.6710000000000005,10.0,3.0,5.9624881478636595,9.991490757218845 674 | 0.6720000000000005,10.0,3.0,5.962624422916641,9.991825411793373 675 | 0.6730000000000005,10.0,3.0,5.962754449223321,9.99215532615289 676 | 0.6740000000000005,10.0,3.0,5.962878351264311,9.99248022683323 677 | 0.6750000000000005,10.0,3.0,5.962996256659612,9.99279986287717 678 | 0.6760000000000005,10.0,3.0,5.963108295797675,9.99311400502695 679 | 0.6770000000000005,10.0,3.0,5.963214601482159,9.993422444946448 680 | 0.6780000000000005,10.0,3.0,5.96331530859128,9.993724994433865 681 | 0.6790000000000005,10.0,3.0,5.963410553753861,9.994021484653851 682 | 0.6800000000000005,10.0,3.0,5.963500475038786,9.994311765374132 683 | 0.6810000000000005,10.0,3.0,5.963585211659274,9.994595704221936 684 | 0.6820000000000005,10.0,3.0,5.963664903690055,9.994873185939909 685 | 0.6830000000000005,10.0,3.0,5.96373969179946,9.995144111662693 686 | 0.6840000000000005,10.0,3.0,5.963809716993927,9.995408398204882 687 | 0.6850000000000005,10.0,3.0,5.963875120375611,9.995665977357467 688 | 0.6860000000000005,10.0,3.0,5.963936042913203,9.995916795202959 689 | 0.6870000000000005,10.0,3.0,5.963992625224595,9.996160811441005 690 | 0.6880000000000005,10.0,3.0,5.964045007371969,9.996397998728812 691 | 0.6890000000000005,10.0,3.0,5.964093328668613,9.996628342035947 692 | 0.6900000000000005,10.0,3.0,5.964137727497181,9.996851838017008 693 | 0.6910000000000005,10.0,3.0,5.9641783411387355,9.997068494392918 694 | 0.6920000000000005,10.0,3.0,5.964215305613285,9.99727832935346 695 | 0.6930000000000005,10.0,3.0,5.964248755530162,9.99748137097113 696 | 0.6940000000000005,10.0,3.0,5.964278823948973,9.997677656632105 697 | 0.6950000000000005,10.0,3.0,5.964305642250233,9.997867232481752 698 | 0.6960000000000005,10.0,3.0,5.964329340015633,9.998050152886362 699 | 0.6970000000000005,10.0,3.0,5.9643500449174445,9.998226479910237 700 | 0.6980000000000005,10.0,3.0,5.964367882616853,9.998396282808898 701 | 0.6990000000000005,10.0,3.0,5.964382976670808,9.99855963753588 702 | 0.7000000000000005,10.0,3.0,5.964395448447392,9.998716626266898 703 | 0.7010000000000005,10.0,3.0,5.964405417048952,9.998867336939322 704 | 0.7020000000000005,10.0,3.0,5.964412999242923,9.999011862806071 705 | 0.7030000000000005,10.0,3.0,5.964418309400127,9.999150302005177 706 | 0.7040000000000005,10.0,3.0,5.964421459440113,9.999282757144625 707 | 0.7050000000000005,10.0,3.0,5.9644225587832755,9.999409334901753 708 | 0.7060000000000005,10.0,3.0,5.964421714309528,9.999530145637735 709 | 0.7070000000000005,10.0,3.0,5.9644190303231746,9.999645303026707 710 | 0.7080000000000005,10.0,3.0,5.964414608523744,9.999754923699209 711 | 0.7090000000000005,10.0,3.0,5.96440854798251,9.999859126899848 712 | 0.7100000000000005,10.0,3.0,5.964400945124449,9.999958034159205 713 | 0.7110000000000005,10.0,3.0,5.964391893715329,10.000051768979208 714 | 0.7120000000000005,10.0,3.0,5.964381484853745,10.000140456532325 715 | 0.7130000000000005,10.0,3.0,5.964369806967787,10.000224223373861 716 | 0.7140000000000005,10.0,3.0,5.9643569458161565,10.00030319716749 717 | 0.7150000000000005,10.0,3.0,5.9643429844934435,10.000377506423943 718 | 0.7160000000000005,10.0,3.0,5.964328003439319,10.000447280251155 719 | 0.7170000000000005,10.0,3.0,5.964312080451575,10.000512648118285 720 | 0.7180000000000005,10.0,3.0,5.964295290702497,10.000573739630168 721 | 0.7190000000000005,10.0,3.0,5.964277706758705,10.000630684314656 722 | 0.7200000000000005,10.0,3.0,5.964259398603963,10.00068361142029 723 | 0.7210000000000005,10.0,3.0,5.964240433664995,10.000732649726423 724 | 0.7220000000000005,10.0,3.0,5.964220876839852,10.000777927363018 725 | 0.7230000000000005,10.0,3.0,5.964200790528933,10.000819571642076 726 | 0.7240000000000005,10.0,3.0,5.964180234668186,10.000857708898161 727 | 0.7250000000000005,10.0,3.0,5.9641592667646135,10.000892464340403 728 | 0.7260000000000005,10.0,3.0,5.964137941933582,10.000923961912466 729 | 0.7270000000000005,10.0,3.0,5.964116312938127,10.000952324163555 730 | 0.7280000000000005,10.0,3.0,5.964094430229746,10.000977672126671 731 | 0.7290000000000005,10.0,3.0,5.964072341990901,10.001000125207536 732 | 0.7300000000000005,10.0,3.0,5.964050094178663,10.001019801081501 733 | 0.7310000000000005,10.0,3.0,5.964027730569637,10.001036815598303 734 | 0.7320000000000005,10.0,3.0,5.964005292805991,10.001051282693984 735 | 0.7330000000000005,10.0,3.0,5.963982820442544,10.001063314312493 736 | 0.7340000000000005,10.0,3.0,5.9639603509944425,10.001073020332631 737 | 0.7350000000000005,10.0,3.0,5.963937919985776,10.001080508504572 738 | 0.7360000000000005,10.0,3.0,5.96391556099849,10.001085884389767 739 | 0.7370000000000005,10.0,3.0,5.963893305722175,10.001089251310944 740 | 0.7380000000000005,10.0,3.0,5.963871184003839,10.001090710305562 741 | 0.7390000000000005,10.0,3.0,5.963849223898267,10.001090360087122 742 | 0.7400000000000005,10.0,3.0,5.963827451718368,10.001088297011702 743 | 0.7410000000000005,10.0,3.0,5.963805892085676,10.001084615050255 744 | 0.7420000000000005,10.0,3.0,5.963784567980816,10.001079405765083 745 | 0.7430000000000005,10.0,3.0,5.963763500794031,10.001072758292269 746 | 0.7440000000000005,10.0,3.0,5.963742710375467,10.001064759329415 747 | 0.7450000000000006,10.0,3.0,5.963722215085164,10.001055493126552 748 | 0.7460000000000006,10.0,3.0,5.963702031842919,10.00104504148284 749 | 0.7470000000000006,10.0,3.0,5.963682176177633,10.001033483746038 750 | 0.7480000000000006,10.0,3.0,5.963662662276392,10.001020896816888 751 | 0.7490000000000006,10.0,3.0,5.963643503032969,10.001007355156437 752 | 0.7500000000000006,10.0,3.0,5.9636247100958855,10.00099293079711 753 | 0.7510000000000006,10.0,3.0,5.963606293915876,10.00097769335765 754 | 0.7520000000000006,10.0,3.0,5.963588263792669,10.000961710060237 755 | 0.7530000000000006,10.0,3.0,5.9635706279212055,10.000945045749924 756 | 0.7540000000000006,10.0,3.0,5.9635533934372384,10.000927762919193 757 | 0.7550000000000006,10.0,3.0,5.9635365664619275,10.000909921732799 758 | 0.7560000000000006,10.0,3.0,5.963520152145911,10.000891580055086 759 | 0.7570000000000006,10.0,3.0,5.963504154712581,10.000872793481133 760 | 0.7580000000000006,10.0,3.0,5.963488577500353,10.000853615367813 761 | 0.7590000000000006,10.0,3.0,5.963473423004329,10.000834096867992 762 | 0.7600000000000006,10.0,3.0,5.9634586929169515,10.000814286966552 763 | 0.7610000000000006,10.0,3.0,5.963444388167765,10.000794232516832 764 | 0.7620000000000006,10.0,3.0,5.9634305089624,10.00077397827984 765 | 0.7630000000000006,10.0,3.0,5.9634170548205025,10.000753566963695 766 | 0.7640000000000006,10.0,3.0,5.963404024612844,10.000733039264802 767 | 0.7650000000000006,10.0,3.0,5.963391416597437,10.000712433909705 768 | 0.7660000000000006,10.0,3.0,5.963379228454753,10.000691787698033 769 | 0.7670000000000006,10.0,3.0,5.96336745732196,10.000671135546463 770 | 0.7680000000000006,10.0,3.0,5.963356099826187,10.000650510532731 771 | 0.7690000000000006,10.0,3.0,5.963345152116906,10.00062994394044 772 | 0.7700000000000006,10.0,3.0,5.963334609897326,10.000609465304912 773 | 0.7710000000000006,10.0,3.0,5.963324468454782,10.000589102458648 774 | 0.7720000000000006,10.0,3.0,5.963314722690235,10.000568881577355 775 | 0.7730000000000006,10.0,3.0,5.963305367146817,10.000548827226323 776 | 0.7740000000000006,10.0,3.0,5.963296396037394,10.000528962406435 777 | 0.7750000000000006,10.0,3.0,5.963287803271253,10.000509308600922 778 | 0.7760000000000006,10.0,3.0,5.963279582479786,10.000489885821422 779 | 0.7770000000000006,10.0,3.0,5.963271727041308,10.000470712654128 780 | 0.7780000000000006,10.0,3.0,5.963264230104954,10.000451806306183 781 | 0.7790000000000006,10.0,3.0,5.963257084613625,10.00043318265064 782 | 0.7800000000000006,10.0,3.0,5.9632502833261665,10.000414856272684 783 | 0.7810000000000006,10.0,3.0,5.963243818838508,10.00039684051442 784 | 0.7820000000000006,10.0,3.0,5.963237683604047,10.000379147519233 785 | 0.7830000000000006,10.0,3.0,5.963231869953181,10.000361788276331 786 | 0.7840000000000006,10.0,3.0,5.963226370111944,10.000344772664562 787 | 0.7850000000000006,10.0,3.0,5.963221176219831,10.000328109494996 788 | 0.7860000000000006,10.0,3.0,5.963216280346887,10.00031180655396 789 | 0.7870000000000006,10.0,3.0,5.963211674509911,10.000295870644731 790 | 0.7880000000000006,10.0,3.0,5.96320735068794,10.00028030762888 791 | 0.7890000000000006,10.0,3.0,5.963203300836947,10.000265122466654 792 | 0.7900000000000006,10.0,3.0,5.9631995169038365,10.000250319256976 793 | 0.7910000000000006,10.0,3.0,5.963195990839665,10.000235901276472 794 | 0.7920000000000006,10.0,3.0,5.963192714612187,10.000221871017771 795 | 0.7930000000000006,10.0,3.0,5.963189680217701,10.000208230227145 796 | 0.7940000000000006,10.0,3.0,5.963186879692221,10.000194979941055 797 | 0.7950000000000006,10.0,3.0,5.963184305122009,10.0001821205223 798 | 0.7960000000000006,10.0,3.0,5.963181948653438,10.000169651694893 799 | 0.7970000000000006,10.0,3.0,5.96317980250228,10.000157572578384 800 | 0.7980000000000006,10.0,3.0,5.963177858962364,10.000145881721256 801 | 0.7990000000000006,10.0,3.0,5.963176110413652,10.000134577133412 802 | 0.8000000000000006,10.0,3.0,5.963174549329769,10.00012365631785 803 | 0.8010000000000006,10.0,3.0,5.963173168284968,10.000113116301371 804 | 0.8020000000000006,10.0,3.0,5.9631719599605875,10.000102953664538 805 | 0.8030000000000006,10.0,3.0,5.963170917150981,10.000093164570732 806 | 0.8040000000000006,10.0,3.0,5.9631700327689465,10.000083744794225 807 | 0.8050000000000006,10.0,3.0,5.963169299850713,10.00007468974751 808 | 0.8060000000000006,10.0,3.0,5.963168711560435,10.000065994507708 809 | 0.8070000000000006,10.0,3.0,5.9631682611942605,10.000057653842063 810 | 0.8080000000000006,10.0,3.0,5.963167942183984,10.00004966223269 811 | 0.8090000000000006,10.0,3.0,5.963167748100267,10.000042013900343 812 | 0.8100000000000006,10.0,3.0,5.963167672655495,10.000034702827406 813 | 0.8110000000000006,10.0,3.0,5.963167709706241,10.000027722780057 814 | 0.8120000000000006,10.0,3.0,5.963167853255374,10.000021067329556 815 | 0.8130000000000006,10.0,3.0,5.963168097453833,10.000014729872742 816 | 0.8140000000000006,10.0,3.0,5.963168436602059,10.00000870365172 817 | 0.8150000000000006,10.0,3.0,5.963168865151127,10.000002981772745 818 | 0.8160000000000006,10.0,3.0,5.9631693777035695,9.999997557224333 819 | 0.8170000000000006,10.0,3.0,5.963169969013925,9.999992422894577 820 | 0.8180000000000006,10.0,3.0,5.963170633989009,9.999987571587734 821 | 0.8190000000000006,10.0,3.0,5.963171367687938,9.99998299604005 822 | 0.8200000000000006,10.0,3.0,5.963172165321905,9.999978688934865 823 | 0.8210000000000006,10.0,3.0,5.963173022253726,9.999974642916978 824 | 0.8220000000000006,10.0,3.0,5.963173933997175,9.99997085060636 825 | 0.8230000000000006,10.0,3.0,5.96317489621611,9.999967304611152 826 | 0.8240000000000006,10.0,3.0,5.963175904723408,9.999963997539963 827 | 0.8250000000000006,10.0,3.0,5.963176955479727,9.999960922013592 828 | 0.8260000000000006,10.0,3.0,5.963178044592093,9.999958070676042 829 | 0.8270000000000006,10.0,3.0,5.963179168312327,9.999955436204935 830 | 0.8280000000000006,10.0,3.0,5.963180323035338,9.999953011321352 831 | 0.8290000000000006,10.0,3.0,5.963181505297269,9.999950788799058 832 | 0.8300000000000006,10.0,3.0,5.963182711773518,9.999948761473137 833 | 0.8310000000000006,10.0,3.0,5.963183939276647,9.999946922248128 834 | 0.8320000000000006,10.0,3.0,5.9631851847541855,9.999945264105536 835 | 0.8330000000000006,10.0,3.0,5.963186445286334,9.999943780110916 836 | 0.8340000000000006,10.0,3.0,5.963187718083578,9.999942463420432 837 | 0.8350000000000006,10.0,3.0,5.963189000484219,9.999941307286832 838 | 0.8360000000000006,10.0,3.0,5.963190289951842,9.999940305065083 839 | 0.8370000000000006,10.0,3.0,5.963191584072715,9.999939450217454 840 | 0.8380000000000006,10.0,3.0,5.963192880553129,9.999938736318189 841 | 0.8390000000000006,10.0,3.0,5.963194177216692,9.999938157057834 842 | 0.8400000000000006,10.0,3.0,5.96319547200157,9.999937706246998 843 | 0.8410000000000006,10.0,3.0,5.963196762957714,9.999937377819807 844 | 0.8420000000000006,10.0,3.0,5.963198048244037,9.999937165837027 845 | 0.8430000000000006,10.0,3.0,5.963199326125575,9.999937064488746 846 | 0.8440000000000006,10.0,3.0,5.963200594970628,9.999937068096735 847 | 0.8450000000000006,10.0,3.0,5.963201853247893,9.99993717111648 848 | 0.8460000000000006,10.0,3.0,5.963203099523589,9.999937368138914 849 | 0.8470000000000006,10.0,3.0,5.9632043324585675,9.999937653891761 850 | 0.8480000000000006,10.0,3.0,5.963205550805448,9.999938023240707 851 | 0.8490000000000006,10.0,3.0,5.963206753405738,9.999938471190235 852 | 0.8500000000000006,10.0,3.0,5.963207939186981,9.999938992884172 853 | 0.8510000000000006,10.0,3.0,5.963209107159905,9.999939583606036 854 | 0.8520000000000006,10.0,3.0,5.963210256415598,9.999940238779093 855 | 0.8530000000000006,10.0,3.0,5.96321138612271,9.999940953966219 856 | 0.8540000000000006,10.0,3.0,5.963212495524673,9.999941724869588 857 | 0.8550000000000006,10.0,3.0,5.963213583936945,9.999942547330065 858 | 0.8560000000000006,10.0,3.0,5.9632146507442965,9.999943417326515 859 | 0.8570000000000007,10.0,3.0,5.963215695398121,9.999944330974808 860 | 0.8580000000000007,10.0,3.0,5.963216717413796,9.99994528452677 861 | 0.8590000000000007,10.0,3.0,5.963217716368064,9.999946274368959 862 | 0.8600000000000007,10.0,3.0,5.963218691896466,9.999947297021203 863 | 0.8610000000000007,10.0,3.0,5.963219643690818,9.999948349135101 864 | 0.8620000000000007,10.0,3.0,5.963220571496726,9.999949427492362 865 | 0.8630000000000007,10.0,3.0,5.963221475111153,9.999950529003028 866 | 0.8640000000000007,10.0,3.0,5.963222354380026,9.999951650703572 867 | 0.8650000000000007,10.0,3.0,5.9632232091959,9.99995278975493 868 | 0.8660000000000007,10.0,3.0,5.963224039495667,9.9999539434404 869 | 0.8670000000000007,10.0,3.0,5.963224845258311,9.999955109163459 870 | 0.8680000000000007,10.0,3.0,5.963225626502736,9.9999562844456 871 | 0.8690000000000007,10.0,3.0,5.963226383285611,9.999957466923938 872 | 0.8700000000000007,10.0,3.0,5.963227115699299,9.999958654348886 873 | 0.8710000000000007,10.0,3.0,5.963227823869826,9.999959844581719 874 | 0.8720000000000007,10.0,3.0,5.963228507954908,9.99996103559213 875 | 0.8730000000000007,10.0,3.0,5.963229168142025,9.99996222545567 876 | 0.8740000000000007,10.0,3.0,5.9632298046465575,9.99996341235123 877 | 0.8750000000000007,10.0,3.0,5.963230417709977,9.999964594558472 878 | 0.8760000000000007,10.0,3.0,5.963231007598083,9.999965770455226 879 | 0.8770000000000007,10.0,3.0,5.963231574599303,9.999966938514866 880 | 0.8780000000000007,10.0,3.0,5.963232119023042,9.999968097303682 881 | 0.8790000000000007,10.0,3.0,5.963232641198086,9.999969245478258 882 | 0.8800000000000007,10.0,3.0,5.963233141471063,9.999970381782811 883 | 0.8810000000000007,10.0,3.0,5.963233620204951,9.999971505046556 884 | 0.8820000000000007,10.0,3.0,5.9632340777776465,9.999972614181075 885 | 0.8830000000000007,10.0,3.0,5.963234514580574,9.999973708177702 886 | 0.8840000000000007,10.0,3.0,5.963234931017357,9.999974786104886 887 | 0.8850000000000007,10.0,3.0,5.963235327502541,9.999975847105617 888 | 0.8860000000000007,10.0,3.0,5.963235704460356,9.999976890394827 889 | 0.8870000000000007,10.0,3.0,5.963236062323538,9.999977915256846 890 | 0.8880000000000007,10.0,3.0,5.963236401532199,9.999978921042882 891 | 0.8890000000000007,10.0,3.0,5.963236722532738,9.999979907168504 892 | 0.8900000000000007,10.0,3.0,5.963237025776805,9.999980873111163 893 | 0.8910000000000007,10.0,3.0,5.963237311720316,9.999981818407766 894 | 0.8920000000000007,10.0,3.0,5.9632375808225,9.999982742652273 895 | 0.8930000000000007,10.0,3.0,5.963237833545004,9.999983645493325 896 | 0.8940000000000007,10.0,3.0,5.963238070351032,9.9999845266319 897 | 0.8950000000000007,10.0,3.0,5.963238291704537,9.99998538581906 898 | 0.8960000000000007,10.0,3.0,5.9632384980694395,9.999986222853666 899 | 0.8970000000000007,10.0,3.0,5.963238689908905,9.999987037580189 900 | 0.8980000000000007,10.0,3.0,5.963238867684649,9.999987829886557 901 | 0.8990000000000007,10.0,3.0,5.963239031856281,9.999988599702034 902 | 0.9000000000000007,10.0,3.0,5.9632391828806925,9.999989346995145 903 | 0.9010000000000007,10.0,3.0,5.963239321211478,9.999990071771666 904 | 0.9020000000000007,10.0,3.0,5.963239447298393,9.999990774072646 905 | 0.9030000000000007,10.0,3.0,5.963239561586842,9.999991453972477 906 | 0.9040000000000007,10.0,3.0,5.963239664517409,9.999992111577026 907 | 0.9050000000000007,10.0,3.0,5.963239756525414,9.999992747021803 908 | 0.9060000000000007,10.0,3.0,5.963239838040501,9.999993360470183 909 | 0.9070000000000007,10.0,3.0,5.9632399094862585,9.999993952111689 910 | 0.9080000000000007,10.0,3.0,5.963239971279875,9.999994522160293 911 | 0.9090000000000007,10.0,3.0,5.963240023831808,9.999995070852812 912 | 0.9100000000000007,10.0,3.0,5.9632400675455,9.999995598447313 913 | 0.9110000000000007,10.0,3.0,5.963240102817103,9.999996105221593 914 | 0.9120000000000007,10.0,3.0,5.963240130035244,9.999996591471694 915 | 0.9130000000000007,10.0,3.0,5.963240149580799,9.999997057510486 916 | 0.9140000000000007,10.0,3.0,5.96324016182671,9.999997503666265 917 | 0.9150000000000007,10.0,3.0,5.963240167137807,9.99999793028144 918 | 0.9160000000000007,10.0,3.0,5.96324016587066,9.999998337711238 919 | 0.9170000000000007,10.0,3.0,5.963240158373456,9.999998726322476 920 | 0.9180000000000007,10.0,3.0,5.963240144985883,9.999999096492356 921 | 0.9190000000000007,10.0,3.0,5.963240126039047,9.99999944860734 922 | 0.9200000000000007,10.0,3.0,5.963240101855401,9.999999783062037 923 | 0.9210000000000007,10.0,3.0,5.963240072748691,10.000000100258163 924 | 0.9220000000000007,10.0,3.0,5.9632400390239155,10.000000400603513 925 | 0.9230000000000007,10.0,3.0,5.9632400009773106,10.000000684511019 926 | 0.9240000000000007,10.0,3.0,5.96323995889634,10.000000952397816 927 | 0.9250000000000007,10.0,3.0,5.963239913059704,10.000001204684356 928 | 0.9260000000000007,10.0,3.0,5.963239863737363,10.000001441793586 929 | 0.9270000000000007,10.0,3.0,5.963239811190569,10.000001664150137 930 | 0.9280000000000007,10.0,3.0,5.963239755671911,10.000001872179558 931 | 0.9290000000000007,10.0,3.0,5.963239697425377,10.000002066307609 932 | 0.9300000000000007,10.0,3.0,5.96323963668642,10.00000224695958 933 | 0.9310000000000007,10.0,3.0,5.9632395736820305,10.00000241455963 934 | 0.9320000000000007,10.0,3.0,5.963239508630833,10.000002569530189 935 | 0.9330000000000007,10.0,3.0,5.963239441743173,10.000002712291376 936 | 0.9340000000000007,10.0,3.0,5.963239373221227,10.000002843260454 937 | 0.9350000000000007,10.0,3.0,5.96323930325911,10.00000296285134 938 | 0.9360000000000007,10.0,3.0,5.963239232042994,10.0000030714741 939 | 0.9370000000000007,10.0,3.0,5.963239159751237,10.000003169534537 940 | 0.9380000000000007,10.0,3.0,5.963239086554502,10.000003257433745 941 | 0.9390000000000007,10.0,3.0,5.963239012615906,10.000003335567742 942 | 0.9400000000000007,10.0,3.0,5.963238938091152,10.000003404327106 943 | 0.9410000000000007,10.0,3.0,5.963238863128674,10.000003464096643 944 | 0.9420000000000007,10.0,3.0,5.963238787869787,10.000003515255095 945 | 0.9430000000000007,10.0,3.0,5.96323871244884,10.00000355817485 946 | 0.9440000000000007,10.0,3.0,5.963238636993367,10.000003593221692 947 | 0.9450000000000007,10.0,3.0,5.963238561624249,10.000003620754569 948 | 0.9460000000000007,10.0,3.0,5.96323848645587,10.0000036411254 949 | 0.9470000000000007,10.0,3.0,5.963238411596278,10.00000365467887 950 | 0.9480000000000007,10.0,3.0,5.963238337147354,10.000003661752286 951 | 0.9490000000000007,10.0,3.0,5.963238263204967,10.000003662675418 952 | 0.9500000000000007,10.0,3.0,5.963238189859146,10.000003657770387 953 | 0.9510000000000007,10.0,3.0,5.963238117194241,10.000003647351548 954 | 0.9520000000000007,10.0,3.0,5.963238045289094,10.000003631725418 955 | 0.9530000000000007,10.0,3.0,5.963237974217199,10.000003611190591 956 | 0.9540000000000007,10.0,3.0,5.96323790404687,10.00000358603769 957 | 0.9550000000000007,10.0,3.0,5.963237834841406,10.000003556549329 958 | 0.9560000000000007,10.0,3.0,5.9632377666592555,10.000003523000093 959 | 0.9570000000000007,10.0,3.0,5.963237699554177,10.00000348565651 960 | 0.9580000000000007,10.0,3.0,5.963237633575405,10.000003444777086 961 | 0.9590000000000007,10.0,3.0,5.963237568767806,10.000003400612286 962 | 0.9600000000000007,10.0,3.0,5.96323750517204,10.00000335340458 963 | 0.9610000000000007,10.0,3.0,5.9632374428247195,10.000003303388487 964 | 0.9620000000000007,10.0,3.0,5.963237381758558,10.00000325079061 965 | 0.9630000000000007,10.0,3.0,5.963237322002534,10.000003195829695 966 | 0.9640000000000007,10.0,3.0,5.963237263582031,10.000003138716709 967 | 0.9650000000000007,10.0,3.0,5.963237206518996,10.000003079654917 968 | 0.9660000000000007,10.0,3.0,5.963237150832077,10.000003018839966 969 | 0.9670000000000007,10.0,3.0,5.963237096536772,10.000002956459957 970 | 0.9680000000000007,10.0,3.0,5.963237043645574,10.000002892695585 971 | 0.9690000000000007,10.0,3.0,5.963236992168099,10.000002827720209 972 | 0.9700000000000008,10.0,3.0,5.963236942111233,10.000002761699978 973 | 0.9710000000000008,10.0,3.0,5.963236893479256,10.000002694793952 974 | 0.9720000000000008,10.0,3.0,5.96323684627398,10.00000262715422 975 | 0.9730000000000008,10.0,3.0,5.963236800494869,10.000002558926028 976 | 0.9740000000000008,10.0,3.0,5.963236756139167,10.000002490247903 977 | 0.9750000000000008,10.0,3.0,5.963236713202021,10.000002421251802 978 | 0.9760000000000008,10.0,3.0,5.9632366716765945,10.000002352063238 979 | 0.9770000000000008,10.0,3.0,5.963236631554186,10.000002282801429 980 | 0.9780000000000008,10.0,3.0,5.963236592824338,10.000002213579434 981 | 0.9790000000000008,10.0,3.0,5.963236555474949,10.000002144504307 982 | 0.9800000000000008,10.0,3.0,5.9632365194923755,10.00000207567724 983 | 0.9810000000000008,10.0,3.0,5.963236484861538,10.000002007193707 984 | 0.9820000000000008,10.0,3.0,5.963236451566017,10.000001939143623 985 | 0.9830000000000008,10.0,3.0,5.963236419588154,10.000001871611492 986 | 0.9840000000000008,10.0,3.0,5.963236388909137,10.000001804676558 987 | 0.9850000000000008,10.0,3.0,5.963236359509099,10.000001738412944 988 | 0.9860000000000008,10.0,3.0,5.963236331367202,10.000001672889836 989 | 0.9870000000000008,10.0,3.0,5.9632363044617165,10.000001608171601 990 | 0.9880000000000008,10.0,3.0,5.963236278770108,10.000001544317957 991 | 0.9890000000000008,10.0,3.0,5.9632362542691135,10.000001481384125 992 | 0.9900000000000008,10.0,3.0,5.963236230934814,10.000001419420958 993 | 0.9910000000000008,10.0,3.0,5.963236208742712,10.000001358475117 994 | 0.9920000000000008,10.0,3.0,5.9632361876677935,10.000001298589208 995 | 0.9930000000000008,10.0,3.0,5.963236167684601,10.000001239801914 996 | 0.9940000000000008,10.0,3.0,5.963236148767292,10.000001182148166 997 | 0.9950000000000008,10.0,3.0,5.963236130889704,10.000001125659264 998 | 0.9960000000000008,10.0,3.0,5.963236114025409,10.000001070363027 999 | 0.9970000000000008,10.0,3.0,5.963236098147772,10.000001016283939 1000 | 0.9980000000000008,10.0,3.0,5.963236083230002,10.000000963443272 1001 | 0.9990000000000008,10.0,3.0,5.963236069245203,10.00000091185923 1002 | -------------------------------------------------------------------------------- /part3/example_intocps_app/Multi-models/mm-new/co-sim/R_2023_09_12-09_02_41_466/result.json: -------------------------------------------------------------------------------- 1 | {"mm_config_crc":"27027b7fce751c1c63934dfeed9c2068","coe_config_crc":"5cc445dd2846dfe0371ffbf0d5a9861e","output_crc":"9bde0b617c3b33d1f1b0a23d729f521d"} -------------------------------------------------------------------------------- /part3/example_intocps_app/Multi-models/mm-new/co-sim/R_2023_09_12-09_02_41_466/simulation_results.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/modelica/fmi-beginners-tutorial-2023/a7d1f8edccd09e457257b8d4b3b792ae8611ae4c/part3/example_intocps_app/Multi-models/mm-new/co-sim/R_2023_09_12-09_02_41_466/simulation_results.zip -------------------------------------------------------------------------------- /part3/example_intocps_app/Multi-models/mm-new/co-sim/coe.json: -------------------------------------------------------------------------------- 1 | {"startTime":0,"endTime":1,"multimodel_path":"Multi-models\\mm-new\\mm.json","liveGraphColumns":1,"liveGraphVisibleRowCount":1,"graphs":[{"title":"Live Graph","livestream":{"{Drive}.drive":["w"],"{Stimuli}.stimuli":["w_desired"]},"externalWindow":false}],"livestreamInterval":0,"logVariables":{},"visible":false,"loggingOn":false,"overrideLogLevel":null,"enableAllLogCategoriesPerInstance":false,"algorithm":{"type":"fixed-step","size":0.001},"postProcessingScript":"","multimodel_crc":"27027b7fce751c1c63934dfeed9c2068","parallelSimulation":false,"stabalizationEnabled":false,"global_absolute_tolerance":0,"global_relative_tolerance":0.01,"simulationProgramDelay":false,"convergenceAttempts":5} -------------------------------------------------------------------------------- /part3/example_intocps_app/Multi-models/mm-new/mm.json: -------------------------------------------------------------------------------- 1 | {"fmus":{"{Controller}":"Controller.fmu","{Drive}":"Drive.fmu","{Stimuli}":"Stimuli.fmu"},"connections":{"{Controller}.ctrl.V":["{Drive}.drive.V"],"{Drive}.drive.w":["{Controller}.ctrl.w"],"{Stimuli}.stimuli.LoadTorque_Nm":["{Drive}.drive.LoadTorque_Nm"],"{Stimuli}.stimuli.w_desired":["{Controller}.ctrl.w_desired"]},"parameters":{}} -------------------------------------------------------------------------------- /part3/into-cps_demo.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/modelica/fmi-beginners-tutorial-2023/a7d1f8edccd09e457257b8d4b3b792ae8611ae4c/part3/into-cps_demo.pdf -------------------------------------------------------------------------------- /part3/into-cps_demo.pptx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/modelica/fmi-beginners-tutorial-2023/a7d1f8edccd09e457257b8d4b3b792ae8611ae4c/part3/into-cps_demo.pptx -------------------------------------------------------------------------------- /part3/tutorial_multiple_FMUs/baseline_scenario.json: -------------------------------------------------------------------------------- 1 | { 2 | "fmus": { 3 | "{stimuli}": "./fmus/Stimuli.fmu", 4 | "{control}": "./fmus/Control.fmu", 5 | "{drive}": "./fmus/Drive.fmu", 6 | "{baseline}": "./fmus/MODELICA_Demo.ControlledElectricDrive.fmu" 7 | }, 8 | "connections": { 9 | "{stimuli}.stimuliInstance.w_desired": [ 10 | "{control}.controlInstance.w_desired" 11 | ], 12 | "{stimuli}.stimuliInstance.LoadTorque_Nm": [ 13 | "{drive}.driveInstance.LoadTorque_Nm" 14 | ], 15 | "{control}.controlInstance.V": [ 16 | "{drive}.driveInstance.V" 17 | ], 18 | "{drive}.driveInstance.w": [ 19 | "{control}.controlInstance.w" 20 | ] 21 | }, 22 | "parameters": {}, 23 | "logVariables": { 24 | "{baseline}.baselineInstance": ["w"] 25 | }, 26 | "algorithm":{ 27 | "type":"fixed-step", 28 | "size":0.001 29 | }, 30 | "loggingOn": false, 31 | "overrideLogLevel": "INFO" 32 | } 33 | -------------------------------------------------------------------------------- /part3/tutorial_multiple_FMUs/baseline_scenario_template.json: -------------------------------------------------------------------------------- 1 | { 2 | "fmus": { 3 | "{stimuli}": "./fmus/Stimuli.fmu", 4 | "{control}": "./fmus/Control.fmu", 5 | "{drive}": "./fmus/Drive.fmu", 6 | "{baseline}": "./fmus/MODELICA_Demo.ControlledElectricDrive.fmu" 7 | }, 8 | "connections": { 9 | "{stimuli}.stimuliInstance.w_desired": [ 10 | "{control}.controlInstance.w_desired" 11 | ], 12 | "{stimuli}.stimuliInstance.LoadTorque_Nm": [ 13 | "{drive}.driveInstance.LoadTorque_Nm" 14 | ], 15 | "{control}.controlInstance.V": [ 16 | "{drive}.driveInstance.V" 17 | ], 18 | "{drive}.driveInstance.w": [ 19 | "{control}.controlInstance.w" 20 | ] 21 | }, 22 | "parameters": {}, 23 | "logVariables": { 24 | "{baseline}.baselineInstance": ["w"] 25 | }, 26 | "algorithm":{ 27 | "type":"fixed-step", 28 | "size":0.001 29 | }, 30 | "loggingOn": false, 31 | "overrideLogLevel": "INFO" 32 | } 33 | -------------------------------------------------------------------------------- /part3/tutorial_multiple_FMUs/coe-1.0.10-jar-with-dependencies.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/modelica/fmi-beginners-tutorial-2023/a7d1f8edccd09e457257b8d4b3b792ae8611ae4c/part3/tutorial_multiple_FMUs/coe-1.0.10-jar-with-dependencies.jar -------------------------------------------------------------------------------- /part3/tutorial_multiple_FMUs/decoupled_scenario.json: -------------------------------------------------------------------------------- 1 | { 2 | "fmus": { 3 | "{stimuli}": "./fmus/Stimuli.fmu", 4 | "{control}": "./fmus/Control.fmu", 5 | "{drive}": "./fmus/Drive.fmu" 6 | }, 7 | "connections": { 8 | "{stimuli}.stimuliInstance.w_desired": [ 9 | "{control}.controlInstance.w_desired" 10 | ], 11 | "{stimuli}.stimuliInstance.LoadTorque_Nm": [ 12 | "{drive}.driveInstance.LoadTorque_Nm" 13 | ], 14 | "{control}.controlInstance.V": [ 15 | "{drive}.driveInstance.V" 16 | ], 17 | "{drive}.driveInstance.w": [ 18 | "{control}.controlInstance.w" 19 | ] 20 | }, 21 | "parameters": {}, 22 | "algorithm":{ 23 | "type":"fixed-step", 24 | "size":0.001 25 | }, 26 | "loggingOn": false, 27 | "overrideLogLevel": "INFO" 28 | } 29 | -------------------------------------------------------------------------------- /part3/tutorial_multiple_FMUs/fmus/Control.fmu: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/modelica/fmi-beginners-tutorial-2023/a7d1f8edccd09e457257b8d4b3b792ae8611ae4c/part3/tutorial_multiple_FMUs/fmus/Control.fmu -------------------------------------------------------------------------------- /part3/tutorial_multiple_FMUs/fmus/Drive.fmu: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/modelica/fmi-beginners-tutorial-2023/a7d1f8edccd09e457257b8d4b3b792ae8611ae4c/part3/tutorial_multiple_FMUs/fmus/Drive.fmu -------------------------------------------------------------------------------- /part3/tutorial_multiple_FMUs/fmus/MODELICA_Demo.ControlledElectricDrive.fmu: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/modelica/fmi-beginners-tutorial-2023/a7d1f8edccd09e457257b8d4b3b792ae8611ae4c/part3/tutorial_multiple_FMUs/fmus/MODELICA_Demo.ControlledElectricDrive.fmu -------------------------------------------------------------------------------- /part3/tutorial_multiple_FMUs/fmus/Stimuli.fmu: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/modelica/fmi-beginners-tutorial-2023/a7d1f8edccd09e457257b8d4b3b792ae8611ae4c/part3/tutorial_multiple_FMUs/fmus/Stimuli.fmu -------------------------------------------------------------------------------- /part3/tutorial_multiple_FMUs/fmus/linux/MODELICA_Demo.Control.fmu: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/modelica/fmi-beginners-tutorial-2023/a7d1f8edccd09e457257b8d4b3b792ae8611ae4c/part3/tutorial_multiple_FMUs/fmus/linux/MODELICA_Demo.Control.fmu -------------------------------------------------------------------------------- /part3/tutorial_multiple_FMUs/fmus/linux/MODELICA_Demo.ControlledElectricDrive.fmu: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/modelica/fmi-beginners-tutorial-2023/a7d1f8edccd09e457257b8d4b3b792ae8611ae4c/part3/tutorial_multiple_FMUs/fmus/linux/MODELICA_Demo.ControlledElectricDrive.fmu -------------------------------------------------------------------------------- /part3/tutorial_multiple_FMUs/fmus/linux/MODELICA_Demo.Drive.fmu: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/modelica/fmi-beginners-tutorial-2023/a7d1f8edccd09e457257b8d4b3b792ae8611ae4c/part3/tutorial_multiple_FMUs/fmus/linux/MODELICA_Demo.Drive.fmu -------------------------------------------------------------------------------- /part3/tutorial_multiple_FMUs/fmus/linux/MODELICA_Demo.Stimuli.fmu: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/modelica/fmi-beginners-tutorial-2023/a7d1f8edccd09e457257b8d4b3b792ae8611ae4c/part3/tutorial_multiple_FMUs/fmus/linux/MODELICA_Demo.Stimuli.fmu -------------------------------------------------------------------------------- /part3/tutorial_multiple_FMUs/interaction_with_multiple_fmus.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "attachments": {}, 5 | "cell_type": "markdown", 6 | "metadata": { 7 | "id": "x8f6IbQ1sksS" 8 | }, 9 | "source": [ 10 | "\n", 11 | " \"Open\n", 12 | "" 13 | ] 14 | }, 15 | { 16 | "attachments": {}, 17 | "cell_type": "markdown", 18 | "metadata": { 19 | "id": "PS_N06lhMK3p" 20 | }, 21 | "source": [ 22 | "# Running Co-simulations with the INTO-CPS Maestro Co-simulation Engine\n", 23 | "\n", 24 | "The goal of this notebook is to highlight how to run a co-simulation using an open source tool.\n", 25 | "\n", 26 | "It is meant to represent one of the simplest ways to get started running co-simulations with a command line tool.\n", 27 | "\n", 28 | "The notebook is organized into two parts:\n", 29 | "1. The first part is focused on running a co-simulation from the command line without concern for the accuracy of the results.\n", 30 | "2. The second part shows how the accuracy of the co-simulation can be measured provided that there exists a baseline reference.\n", 31 | "\n", 32 | "Running a co-simulation using the INTO-CPS co-simulation orchestration requires the user to specify the co-simulation scenario in a JSON file, which is then fed into the tool which will load the FMUS and produce the results as a CSV file." 33 | ] 34 | }, 35 | { 36 | "cell_type": "code", 37 | "execution_count": null, 38 | "metadata": { 39 | "id": "pf2CBzPAMK3r" 40 | }, 41 | "outputs": [], 42 | "source": [ 43 | "# Import all dependencies\n", 44 | "import json\n", 45 | "import subprocess\n", 46 | "import pandas\n", 47 | "import matplotlib.pyplot as plt\n", 48 | "import numpy as np\n", 49 | "import time\n" 50 | ] 51 | }, 52 | { 53 | "cell_type": "code", 54 | "execution_count": null, 55 | "metadata": { 56 | "colab": { 57 | "base_uri": "https://localhost:8080/" 58 | }, 59 | "id": "5kbt8J4RRRPu", 60 | "outputId": "0c7728e9-2b1a-4fec-e8fd-17204a910264" 61 | }, 62 | "outputs": [], 63 | "source": [ 64 | "%%bash\n", 65 | "git clone https://github.com/modelica/fmi-beginners-tutorial-2023.git" 66 | ] 67 | }, 68 | { 69 | "cell_type": "code", 70 | "execution_count": null, 71 | "metadata": { 72 | "colab": { 73 | "base_uri": "https://localhost:8080/" 74 | }, 75 | "id": "xQ82-gbPMK3t", 76 | "outputId": "4346d9a7-9924-452e-aaf1-ce23a5a07568" 77 | }, 78 | "outputs": [], 79 | "source": [ 80 | "# Small details: make the jar executable in your platform.\n", 81 | "%cd fmi-beginners-tutorial-2023/part3/tutorial_multiple_FMUs\n", 82 | "coe_jar = \"coe-1.0.10-jar-with-dependencies.jar\"\n", 83 | "\n", 84 | "\n", 85 | "# Make jar executable.\n", 86 | "command = f\"chmod +x {coe_jar}\"\n", 87 | "result = subprocess.run(command, shell=True, capture_output=True, text=True)\n", 88 | "if result.returncode != 0:\n", 89 | " raise RuntimeError(f\"Error running command {command}: {result.stderr}\")\n" 90 | ] 91 | }, 92 | { 93 | "attachments": {}, 94 | "cell_type": "markdown", 95 | "metadata": { 96 | "id": "BHj-Y1w2MK3u" 97 | }, 98 | "source": [ 99 | "## Part 1: Running Co-simulations from the Command Line\n", 100 | "\n", 101 | "This part is divided into 2 sections:\n", 102 | "1. Running a co-simulation of a single FMU.\n", 103 | "2. Running a co-simulation with multiple interconnected FMUs." 104 | ] 105 | }, 106 | { 107 | "attachments": {}, 108 | "cell_type": "markdown", 109 | "metadata": { 110 | "id": "BBMGAy1uMK3u" 111 | }, 112 | "source": [ 113 | "### Running Co-simulations with Single FMU" 114 | ] 115 | }, 116 | { 117 | "cell_type": "code", 118 | "execution_count": null, 119 | "metadata": { 120 | "colab": { 121 | "base_uri": "https://localhost:8080/" 122 | }, 123 | "id": "N0BZDZNuMK3u", 124 | "outputId": "9f6ec743-215c-426f-a2c9-ae50c37ce3a5" 125 | }, 126 | "outputs": [], 127 | "source": [ 128 | "# Prepare the co-simulation scenario description, which points to where the FMU.\n", 129 | "singlefmu_scenario_json_file = \"single_fmu_scenario.json\"\n", 130 | "\n", 131 | "# The following is a small detail whereby we need to find the absolute path of the FMU that is compatible with the platform of the user.\n", 132 | "platform_folder = 'Linux'\n", 133 | "# We can now see the co-simulation scenario as a json file:\n", 134 | "with open(singlefmu_scenario_json_file, 'r') as file :\n", 135 | " scenario_raw = file.read()\n", 136 | "\n", 137 | "print(json.dumps(json.loads(scenario_raw), indent=2))" 138 | ] 139 | }, 140 | { 141 | "cell_type": "code", 142 | "execution_count": null, 143 | "metadata": { 144 | "colab": { 145 | "base_uri": "https://localhost:8080/" 146 | }, 147 | "id": "c0OnTxBtMK3w", 148 | "outputId": "2a464803-42f7-4c95-ccf3-6e53b5283b7b" 149 | }, 150 | "outputs": [], 151 | "source": [ 152 | "# Now we can run the co-simulation\n", 153 | "coe_command = f\"java -jar {coe_jar} -o -c {singlefmu_scenario_json_file} --starttime 0 --endtime 1\"\n", 154 | "result = subprocess.run(coe_command, shell=True, capture_output=True, text=True)\n", 155 | "\n", 156 | "# Check the command's output\n", 157 | "if result.returncode == 0:\n", 158 | " print(result.stdout)\n", 159 | "else:\n", 160 | " raise RuntimeError(f\"Error running command {coe_command}: {result.stderr}\")" 161 | ] 162 | }, 163 | { 164 | "cell_type": "code", 165 | "execution_count": null, 166 | "metadata": { 167 | "colab": { 168 | "base_uri": "https://localhost:8080/", 169 | "height": 424 170 | }, 171 | "id": "6pSImTaWMK3w", 172 | "outputId": "d32ec6a9-ea85-402d-b1e5-2b19878107f4" 173 | }, 174 | "outputs": [], 175 | "source": [ 176 | "# We can see the results stored in \"output.csv\"\n", 177 | "data = pandas.read_csv(\"output.csv\")\n", 178 | "data" 179 | ] 180 | }, 181 | { 182 | "cell_type": "code", 183 | "execution_count": null, 184 | "metadata": { 185 | "colab": { 186 | "base_uri": "https://localhost:8080/", 187 | "height": 430 188 | }, 189 | "id": "6Af906HqMK3x", 190 | "outputId": "7d009c8d-9cac-4f54-de76-77b879425be3" 191 | }, 192 | "outputs": [], 193 | "source": [ 194 | "# As can can plot those results as follows\n", 195 | "plt.figure()\n", 196 | "plt.plot(data[\"time\"], data[\"{baseline}.baselineInstance.w\"], label=\"{baseline}.w\")\n", 197 | "plt.legend()\n", 198 | "plt.show()" 199 | ] 200 | }, 201 | { 202 | "attachments": {}, 203 | "cell_type": "markdown", 204 | "metadata": { 205 | "id": "OyS0cv7KMK3x" 206 | }, 207 | "source": [ 208 | "### Running a Co-simulation with Multiple FMUs" 209 | ] 210 | }, 211 | { 212 | "cell_type": "code", 213 | "execution_count": null, 214 | "metadata": { 215 | "colab": { 216 | "base_uri": "https://localhost:8080/" 217 | }, 218 | "id": "LwUUIfI3MK3x", 219 | "outputId": "b1fea62b-7ed5-4b73-8756-4670d47f980c" 220 | }, 221 | "outputs": [], 222 | "source": [ 223 | "# Prepare the co-simulation scenario description, which points to where the FMUs are.\n", 224 | "\n", 225 | "decoupled_scenario_json_file = \"decoupled_scenario.json\"\n", 226 | "\n", 227 | "# We can now see the co-simulation scenario as a json file:\n", 228 | "with open(decoupled_scenario_json_file, 'r') as file :\n", 229 | " scenario_raw = file.read()\n", 230 | "\n", 231 | "print(json.dumps(json.loads(scenario_raw), indent=2))" 232 | ] 233 | }, 234 | { 235 | "cell_type": "code", 236 | "execution_count": null, 237 | "metadata": { 238 | "id": "YrMpPI36MK3y", 239 | "outputId": "9d673234-e6f8-409a-9c34-0706a39d266b" 240 | }, 241 | "outputs": [], 242 | "source": [ 243 | "# Now we can run the co-simulation\n", 244 | "coe_command = f\"java -jar {coe_jar} -o -c {decoupled_scenario_json_file} --starttime 0 --endtime 1\"\n", 245 | "result = subprocess.run(coe_command, shell=True, capture_output=True, text=True)\n", 246 | "\n", 247 | "# Check the command's output\n", 248 | "if result.returncode == 0:\n", 249 | " print(result.stdout)\n", 250 | "else:\n", 251 | " raise RuntimeError(f\"Error running command {coe_command}: {result.stderr}\")" 252 | ] 253 | }, 254 | { 255 | "cell_type": "code", 256 | "execution_count": null, 257 | "metadata": { 258 | "id": "MuEO_ft4MK3y", 259 | "outputId": "87d50029-0e59-40ae-d0a1-e4a8f2e140c8" 260 | }, 261 | "outputs": [], 262 | "source": [ 263 | "# If all went well, we can see the results stored in \"output.csv\"\n", 264 | "data = pandas.read_csv(\"output.csv\")\n", 265 | "data" 266 | ] 267 | }, 268 | { 269 | "cell_type": "code", 270 | "execution_count": null, 271 | "metadata": { 272 | "id": "xIgicllVMK3z", 273 | "outputId": "6c3bf7f3-706e-4d63-bfe8-6e227baeb187" 274 | }, 275 | "outputs": [], 276 | "source": [ 277 | "# As can can plot those results as follows\n", 278 | "plt.figure()\n", 279 | "plt.plot(data[\"time\"], data[\"{drive}.driveInstance.w\"], label=\"{drive}.w\")\n", 280 | "plt.plot(data[\"time\"], data[\"{stimuli}.stimuliInstance.w_desired\"], label=\"{stimuli}.w_desired\")\n", 281 | "plt.legend()\n", 282 | "plt.show()" 283 | ] 284 | }, 285 | { 286 | "attachments": {}, 287 | "cell_type": "markdown", 288 | "metadata": { 289 | "id": "_xsgRcUVMK3z" 290 | }, 291 | "source": [ 292 | "## Part 2: Measuring Accuracy of the Co-simulation Wrt to Baseline\n", 293 | "\n", 294 | "In this part we show how to measure the accuracy of a co-simulation and the impact of the co-simulation step size in the accuracy.\n", 295 | "We have two sections:\n", 296 | "1. We run a co-simulation scenario where we include the baseline as an FMU that is run in parallel with the other fmus, that are representing the same system, but in a decoupled manner.\n", 297 | "2. In the second section we run multiple experiments with different communication step si in in order to highlight the impact of this parameter in the accuracy." 298 | ] 299 | }, 300 | { 301 | "attachments": {}, 302 | "cell_type": "markdown", 303 | "metadata": { 304 | "id": "3Sh9fbruMK3z" 305 | }, 306 | "source": [ 307 | "### Co-simulation Scenario with Baseline" 308 | ] 309 | }, 310 | { 311 | "cell_type": "code", 312 | "execution_count": null, 313 | "metadata": { 314 | "colab": { 315 | "base_uri": "https://localhost:8080/" 316 | }, 317 | "id": "3PKjmFjDMK30", 318 | "outputId": "2d2f3b44-1897-414d-d856-e51a4277203c" 319 | }, 320 | "outputs": [], 321 | "source": [ 322 | "# Prepare the co-simulation scenario description, which points to where the FMUs are.\n", 323 | "baseline_scenario_json_template = \"baseline_scenario_template.json\"\n", 324 | "baseline_scenario_json_file = \"baseline_scenario.json\"\n", 325 | "\n", 326 | "# We can now see the co-simulation scenario as a json file:\n", 327 | "with open(baseline_scenario_json_file, 'r') as file:\n", 328 | " scenario_raw = file.read()\n", 329 | "\n", 330 | "print(json.dumps(json.loads(scenario_raw), indent=2))" 331 | ] 332 | }, 333 | { 334 | "cell_type": "code", 335 | "execution_count": null, 336 | "metadata": { 337 | "colab": { 338 | "base_uri": "https://localhost:8080/" 339 | }, 340 | "id": "mGcC12aGMK30", 341 | "outputId": "95f724f1-c483-4b95-c2d0-5d6f7ceffda4" 342 | }, 343 | "outputs": [], 344 | "source": [ 345 | "# Now we can run the co-simulation\n", 346 | "coe_command = f\"java -jar {coe_jar} -o -c {baseline_scenario_json_file} --starttime 0 --endtime 1\"\n", 347 | "result = subprocess.run(coe_command, shell=True, capture_output=True, text=True)\n", 348 | "\n", 349 | "# Check the command's output\n", 350 | "if result.returncode == 0:\n", 351 | " print(result.stdout)\n", 352 | "else:\n", 353 | " raise RuntimeError(f\"Error running command {coe_command}: {result.stderr}\")" 354 | ] 355 | }, 356 | { 357 | "cell_type": "code", 358 | "execution_count": null, 359 | "metadata": { 360 | "colab": { 361 | "base_uri": "https://localhost:8080/", 362 | "height": 424 363 | }, 364 | "id": "p7vFw_aXMK31", 365 | "outputId": "6b4c01ea-7224-4c1f-b8ac-237d3eeb8405" 366 | }, 367 | "outputs": [], 368 | "source": [ 369 | "# If all went well, we can see the results stored in \"output.csv\"\n", 370 | "data = pandas.read_csv(\"output.csv\")\n", 371 | "data" 372 | ] 373 | }, 374 | { 375 | "cell_type": "code", 376 | "execution_count": null, 377 | "metadata": { 378 | "colab": { 379 | "base_uri": "https://localhost:8080/", 380 | "height": 430 381 | }, 382 | "id": "OIk_Om6rMK31", 383 | "outputId": "d829e919-0979-4ab9-9e24-4552472af94a" 384 | }, 385 | "outputs": [], 386 | "source": [ 387 | "# And we can plot those results as follows\n", 388 | "\n", 389 | "plt.figure()\n", 390 | "plt.plot(data[\"time\"], data[\"{baseline}.baselineInstance.w\"], label=\"{baseline}.w\")\n", 391 | "plt.plot(data[\"time\"], data[\"{drive}.driveInstance.w\"], label=\"{drive}.w\")\n", 392 | "plt.plot(data[\"time\"], data[\"{stimuli}.stimuliInstance.w_desired\"], label=\"{stimuli}.w_desired\")\n", 393 | "plt.legend()\n", 394 | "plt.show()" 395 | ] 396 | }, 397 | { 398 | "cell_type": "code", 399 | "execution_count": null, 400 | "metadata": { 401 | "colab": { 402 | "base_uri": "https://localhost:8080/" 403 | }, 404 | "id": "JysNioO6MK32", 405 | "outputId": "477dd900-dda1-4da0-941d-a27c32dfbf09" 406 | }, 407 | "outputs": [], 408 | "source": [ 409 | "# Now we measure the error and print it:\n", 410 | "\n", 411 | "def error(ref_series, approx_series):\n", 412 | " error_signal = ref_series.to_numpy() - approx_series.to_numpy()\n", 413 | " sum_squared_differences = np.sum(error_signal ** 2)\n", 414 | " return sum_squared_differences\n", 415 | "\n", 416 | "error(data[\"{baseline}.baselineInstance.w\"], data[\"{drive}.driveInstance.w\"])" 417 | ] 418 | }, 419 | { 420 | "attachments": {}, 421 | "cell_type": "markdown", 422 | "metadata": { 423 | "id": "apf2DgTTMK32" 424 | }, 425 | "source": [ 426 | "### Impact of Step Size in the Accuracy\n", 427 | "\n", 428 | "This section is a bit more advanced.\n", 429 | "What we want is to run many simulations with different step sizes, and for each of these runs, we want to collect the results, calculate their error and store it.\n", 430 | "Then We can create a plot that compares the different step sizes with the achieved error." 431 | ] 432 | }, 433 | { 434 | "cell_type": "code", 435 | "execution_count": null, 436 | "metadata": { 437 | "colab": { 438 | "base_uri": "https://localhost:8080/" 439 | }, 440 | "id": "PWu6trjiMK32", 441 | "outputId": "a767c817-708a-4f6a-bcbb-ab3bf03d6f18" 442 | }, 443 | "outputs": [], 444 | "source": [ 445 | "# So we need a function to run a full experiment given a step size.\n", 446 | "def searchAndReplace(key, value, fileSrc, fileTrg):\n", 447 | " '''\n", 448 | " Opens a file fileSrc and searches for all occurrences of key string and replaces it by value.\n", 449 | " Stores the result in fileTrg.\n", 450 | " '''\n", 451 | " with open(fileSrc, 'r') as file :\n", 452 | " filedata = file.read()\n", 453 | "\n", 454 | " filedata = filedata.replace(key, value)\n", 455 | "\n", 456 | " with open(fileTrg, 'w') as file:\n", 457 | " file.write(filedata)\n", 458 | "\n", 459 | "def run_experiment_with_step_size(step_size):\n", 460 | " # Set the step size in the config file:\n", 461 | " searchAndReplace(\"0.001\", str(step_size), baseline_scenario_json_template, baseline_scenario_json_file)\n", 462 | "\n", 463 | " start_time_seconds = time.time()\n", 464 | " result = subprocess.run(coe_command, shell=True, capture_output=True, text=True)\n", 465 | " elapsed_time_seconds = time.time() - start_time_seconds\n", 466 | "\n", 467 | " # Check for failure and print debug information\n", 468 | " if result.returncode != 0:\n", 469 | " with open(baseline_scenario_json_file, 'r') as file:\n", 470 | " scenario_raw = file.read()\n", 471 | " raise RuntimeError(f\"Error running command {coe_command} for step size {step_size}: {result.stderr}. \\nThe input scenario is:\\n{json.dumps(json.loads(scenario_raw), indent=2)}\")\n", 472 | "\n", 473 | " # Read results and compute error\n", 474 | " data = pandas.read_csv(\"output.csv\")\n", 475 | "\n", 476 | " return error(data[\"{baseline}.baselineInstance.w\"], data[\"{drive}.driveInstance.w\"]), elapsed_time_seconds\n", 477 | "\n", 478 | "# Define possible step sizes we wish to try.\n", 479 | "step_sizes = np.linspace(0.0001, 0.001, 4)\n", 480 | "print(f\"step_sizes = {step_sizes}\")\n", 481 | "\n", 482 | "# Run an experiment for each step size. CAUTION: this takes time.\n", 483 | "results = [run_experiment_with_step_size(step_size) for step_size in step_sizes]\n", 484 | "errors = [r[0] for r in results]\n", 485 | "execution_times = [r[1] for r in results]\n", 486 | "\n", 487 | "print(f\"errors = {errors}\")\n", 488 | "print(f\"execution_times = {execution_times}\")" 489 | ] 490 | }, 491 | { 492 | "cell_type": "code", 493 | "execution_count": null, 494 | "metadata": { 495 | "colab": { 496 | "base_uri": "https://localhost:8080/", 497 | "height": 487 498 | }, 499 | "id": "rJHo9NRMMK33", 500 | "outputId": "f504e97a-f599-450b-b26d-9d8851c1fdf8" 501 | }, 502 | "outputs": [], 503 | "source": [ 504 | "# Plot the results\n", 505 | "\n", 506 | "fig, axs = plt.subplots(2, 1)\n", 507 | "\n", 508 | "axs[0].plot(step_sizes, errors, label=\"Error\")\n", 509 | "axs[0].legend()\n", 510 | "\n", 511 | "axs[1].plot(step_sizes, execution_times, label=\"Execution time\")\n", 512 | "axs[1].legend()\n", 513 | "\n", 514 | "# Adjust spacing between subplots\n", 515 | "plt.tight_layout()" 516 | ] 517 | } 518 | ], 519 | "metadata": { 520 | "colab": { 521 | "provenance": [] 522 | }, 523 | "kernelspec": { 524 | "display_name": "Python 3", 525 | "language": "python", 526 | "name": "python3" 527 | }, 528 | "language_info": { 529 | "codemirror_mode": { 530 | "name": "ipython", 531 | "version": 3 532 | }, 533 | "file_extension": ".py", 534 | "mimetype": "text/x-python", 535 | "name": "python", 536 | "nbconvert_exporter": "python", 537 | "pygments_lexer": "ipython3", 538 | "version": "3.11.2" 539 | }, 540 | "orig_nbformat": 4 541 | }, 542 | "nbformat": 4, 543 | "nbformat_minor": 0 544 | } 545 | -------------------------------------------------------------------------------- /part3/tutorial_multiple_FMUs/requirements.txt: -------------------------------------------------------------------------------- 1 | notebook 2 | pandas 3 | matplotlib 4 | -------------------------------------------------------------------------------- /part3/tutorial_multiple_FMUs/single_fmu_scenario.json: -------------------------------------------------------------------------------- 1 | { 2 | "fmus": { 3 | "{baseline}": "./fmus/MODELICA_Demo.ControlledElectricDrive.fmu" 4 | }, 5 | "connections": { 6 | }, 7 | "parameters": {}, 8 | "logVariables": { 9 | "{baseline}.baselineInstance": ["w"] 10 | }, 11 | "algorithm":{ 12 | "type":"fixed-step", 13 | "size":0.001 14 | }, 15 | "loggingOn": false, 16 | "overrideLogLevel": "INFO" 17 | } 18 | -------------------------------------------------------------------------------- /part4/FMI-overall.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/modelica/fmi-beginners-tutorial-2023/a7d1f8edccd09e457257b8d4b3b792ae8611ae4c/part4/FMI-overall.pdf -------------------------------------------------------------------------------- /part4/FMI-overall.pptx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/modelica/fmi-beginners-tutorial-2023/a7d1f8edccd09e457257b8d4b3b792ae8611ae4c/part4/FMI-overall.pptx -------------------------------------------------------------------------------- /photos/231009-modelica23-0180-1920px.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/modelica/fmi-beginners-tutorial-2023/a7d1f8edccd09e457257b8d4b3b792ae8611ae4c/photos/231009-modelica23-0180-1920px.jpg -------------------------------------------------------------------------------- /photos/231009-modelica23-0181-1920px.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/modelica/fmi-beginners-tutorial-2023/a7d1f8edccd09e457257b8d4b3b792ae8611ae4c/photos/231009-modelica23-0181-1920px.jpg -------------------------------------------------------------------------------- /photos/231009-modelica23-0182-1920px.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/modelica/fmi-beginners-tutorial-2023/a7d1f8edccd09e457257b8d4b3b792ae8611ae4c/photos/231009-modelica23-0182-1920px.jpg -------------------------------------------------------------------------------- /photos/231009-modelica23-0183-1920px.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/modelica/fmi-beginners-tutorial-2023/a7d1f8edccd09e457257b8d4b3b792ae8611ae4c/photos/231009-modelica23-0183-1920px.jpg -------------------------------------------------------------------------------- /photos/231009-modelica23-0184-1920px.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/modelica/fmi-beginners-tutorial-2023/a7d1f8edccd09e457257b8d4b3b792ae8611ae4c/photos/231009-modelica23-0184-1920px.jpg -------------------------------------------------------------------------------- /photos/231009-modelica23-0185-1920px.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/modelica/fmi-beginners-tutorial-2023/a7d1f8edccd09e457257b8d4b3b792ae8611ae4c/photos/231009-modelica23-0185-1920px.jpg -------------------------------------------------------------------------------- /photos/231009-modelica23-0187-1920px.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/modelica/fmi-beginners-tutorial-2023/a7d1f8edccd09e457257b8d4b3b792ae8611ae4c/photos/231009-modelica23-0187-1920px.jpg -------------------------------------------------------------------------------- /photos/231009-modelica23-0190-1920px.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/modelica/fmi-beginners-tutorial-2023/a7d1f8edccd09e457257b8d4b3b792ae8611ae4c/photos/231009-modelica23-0190-1920px.jpg -------------------------------------------------------------------------------- /photos/231009-modelica23-0191-1920px.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/modelica/fmi-beginners-tutorial-2023/a7d1f8edccd09e457257b8d4b3b792ae8611ae4c/photos/231009-modelica23-0191-1920px.jpg -------------------------------------------------------------------------------- /photos/231009-modelica23-0192-1920px.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/modelica/fmi-beginners-tutorial-2023/a7d1f8edccd09e457257b8d4b3b792ae8611ae4c/photos/231009-modelica23-0192-1920px.jpg -------------------------------------------------------------------------------- /photos/README.md: -------------------------------------------------------------------------------- 1 | Photos by http://www.braun-foto.com 2 | --------------------------------------------------------------------------------