We're sorry but this page doesn't work properly without JavaScript enabled. Please enable it to continue.
Feedback

MuPhyN - MultiPhysical Nexus

00:00

Formal Metadata

Title
MuPhyN - MultiPhysical Nexus
Title of Series
Number of Parts
542
Author
License
CC Attribution 2.0 Belgium:
You are free to use, adapt and copy, distribute and transmit the work or content in adapted or unchanged form for any legal purpose as long as the work is attributed to the author in the manner specified by the author or licensor.
Identifiers
Publisher
Release Date
Language

Content Metadata

Subject Area
Genre
Abstract
Matlab + Simulink is a very powerful tool. This tool allows engineers to simulate real devices. In open sources, some tools exist, such as Scilab + Xcos. With the growing community of Python, some tools appeared: NumPy, SciPy... Those tools intend to propose a Matlab alternative environment equivalent for Python. MuPhyN is an interface that is intended to reproduce the Simulink capabilities. The goal is to produce a community-based simulation software. It is based on a Qt interface and uses a simulator core. It is fully written in Python and uses YAML as the descriptive language. The library feature proposed allows users to add as many boxes and schedulers as they want. The already created boxes take advantage on the SciPy and NumPy libraries to produce their behaviors.
14
15
43
87
Thumbnail
26:29
146
Thumbnail
18:05
199
207
Thumbnail
22:17
264
278
Thumbnail
30:52
293
Thumbnail
15:53
341
Thumbnail
31:01
354
359
410
MultiplicationSystem programmingComputer simulationPhysicsSimulationChainMechatronicsCollaborationismForschungszentrum RossendorfGraphical user interfaceComputer simulationSoftwareProjective planePhysical systemChainSoftware developerDiagramLecture/Conference
SimulationMultiplicationSoftwarePhysicsDifferent (Kate Ryan album)Open setComputer simulationPhysical systemVariable (mathematics)Projective planeDifferent (Kate Ryan album)Local ringType theoryComputer animation
SimulationPoint (geometry)Computer simulationPhysical systemAnalogyData conversionNumerical analysisScale (map)Moment of inertiaMereologyMultiplicationComputer simulationMoment of inertiaPhysical systemPoint (geometry)Reduction of orderMultiplication signMereologyDifferent (Kate Ryan album)Square numberAdaptive behaviorLecture/Conference
Physical systemMoment of inertiaMereologyPoint (geometry)Scale (map)PhysicsSoftwareSimulationMultiplicationComputer simulationAdaptive behaviorData structureOpen sourceClosed setCurve fittingSystem programmingMathematicsWell-formed formulaBinary multiplierPower (physics)Logical constantView (database)Computer fileDirected graphGraph (mathematics)NoiseSawtooth waveSineSquare numberGreen's functionGraphical user interfaceSoftwareUsabilityComputer simulationRegulator geneFunctional (mathematics)ResultantProjective planeCartesian coordinate systemOpen sourceCuboidDrop (liquid)Physical systemDrag (physics)Power (physics)Graph (mathematics)Multiplication signClosed setNumbering schemeCondition numberComputer animation
SimulationGraph (mathematics)Default (computer science)Library (computing)SoftwareProcess (computing)CuboidProcess (computing)Cartesian coordinate systemComputer simulationDefault (computer science)Graph (mathematics)Lecture/Conference
Graph (mathematics)SimulationLibrary (computing)Default (computer science)Process (computing)SoftwareMathematicsOpen sourceMultiplicationAdditionHeat transferFunction (mathematics)Square numberNoiseGoogle Street ViewDerivation (linguistics)Digital filterComputer simulationCartesian coordinate systemDefault (computer science)CuboidMoving averageGraph (mathematics)Heat transferSignal processingOpen setOrder (biology)Computer animationLecture/Conference
Default (computer science)MathematicsOpen sourceFunction (mathematics)Heat transferDigital filterDerivation (linguistics)AdditionMultiplicationSquare numberNoiseGraph (mathematics)Library (computing)SoftwareComputer fileCuboidCartesian coordinate systemLibrary (computing)Lecture/Conference
Computer fileSoftwareCodePlot (narrative)Electronic visual displayGraph (mathematics)Multiplication signCuboidCondition numberComputer filePlotterCodeDescriptive statisticsGraph (mathematics)Computer animation
SoftwareElectronic visual displaySimulationPlot (narrative)Open sourceGraph (mathematics)InformationRevision controlLibrary (computing)Directed graphComputer fileCharacteristic polynomialLibrary (computing)CuboidMetadataDefault (computer science)Cartesian coordinate systemParameter (computer programming)Function (mathematics)Characteristic polynomialType theoryLecture/ConferenceComputer animation
Graph (mathematics)Characteristic polynomialParameter (computer programming)SoftwareString (computer science)outputNumberChi-squared distributionDefault (computer science)CountingDefault (computer science)outputNumberRange (statistics)Parameter (computer programming)Lecture/ConferenceComputer animation
Characteristic polynomialParameter (computer programming)NumberoutputDefault (computer science)String (computer science)Graph (mathematics)SoftwareComputer fileComputer fileLecture/Conference
Graph (mathematics)SoftwareSimulationClefPlot (narrative)Functional (mathematics)PlotterCuboidProcess (computing)Lecture/ConferenceComputer animation
SimulationPlot (narrative)Computer fileGraph (mathematics)SoftwareData structureComputer fileDescriptive statisticsPlotterCodeCuboidLibrary (computing)Functional (mathematics)Lecture/ConferenceComputer animation
Library (computing)Data structureSoftwareLibrary (computing)CuboidLecture/Conference
Library (computing)Computer fileData structureSoftwareIntegrated development environmentVariable (mathematics)Parameter (computer programming)Variable (mathematics)Computer simulationIntegrated development environmentInteractive televisionParameter (computer programming)Computer animation
Integrated development environmentVariable (mathematics)Parameter (computer programming)SoftwareSystem dynamicsComputer simulationCartesian coordinate systemVariable (mathematics)Lecture/Conference
Variable (mathematics)Parameter (computer programming)System dynamicsIntegrated development environmentSoftwareExtension (kinesiology)Computer animation
Variable (mathematics)CodeView (database)Clique-widthAngleParameter (computer programming)Pulse (signal processing)Computer fileInformationThread (computing)SynchronizationOpen sourceGeometryMaxima and minimaoutputGraph (mathematics)Asynchronous Transfer ModeDirected graphComputer simulationBeta functionParameter (computer programming)Cartesian coordinate systemInformationComputer simulationComputer animation
Maxima and minimaVariable (mathematics)Computer fontSummierbarkeitView (database)CodeInformationThread (computing)SynchronizationPulse (signal processing)SineGeometryAngleParameter (computer programming)Phase transitionBeta functionComputer simulationMoore's lawOpen sourceComputer fileClique-width2 (number)Game controllerComputer animation
Structural loadControl flowSoftwareCuboidFilm editingProjective planeComputer animation
SoftwareProcess (computing)SimulationPhysicsMultiplicationScheduling (computing)Integrated development environmentFormal languageProcess (computing)Integrated development environmentComputer simulationServer (computing)Power (physics)CuboidCartesian coordinate systemMultiplication signFormal languageExterior algebraLecture/Conference
Revision controlSoftwareSoftware developerJava appletInformationInstallation artCartesian coordinate systemLink (knot theory)UsabilityProjective planeOpen sourceInteractive televisionElectronic mailing listGroup actionComputer animation
SoftwareVariable (mathematics)Moment of inertiaMultiplication signWellenwiderstand <Strömungsmechanik>Scheduling (computing)BitAnalogyFunctional (mathematics)Projective planeMereologyInterface (computing)Function (mathematics)MathematicsSoftwareComputer simulationPhysical systemCartesian coordinate systemCuboidPhysicalismLocal ringRight angleStress (mechanics)Set (mathematics)Process (computing)Point (geometry)Computer animationLecture/Conference
Program flowchart
Transcript: English(auto-generated)
Hello, everyone. I'm Dylan Fieve, and I'm a research engineer at the Seraf Technik Research Center in Mons in Belgium. Today I will present to you the software Muffin, which is a graphical tool for modeling and simulating multiphysics systems. So
the project started with a research project. It is a collaboration with Thales Alenia Space. It's a research project funded by the Wallonia, so a public fund of Belgium.
And the goal of the project is the development of a simulation method to assist in the design of mechatronic chains with a complete multiphysics model. So in other terms, what are the goals of the project? It exists different kinds of multiphysics simulation
software. The global variable simulation type, like Open Modelica, which simulates a system by item like a motor, etc. And we have a local variable simulation, like Finite Element
Simulation System, Finite Element Simulation for Multiphysics System. And both types of simulation are not compatible with each other, so the research project tried to find another
way to simulate a multiphysics model with using electrical analogous modeling. So the method we want to develop is a simulation in three points. So the first step is to
convert physical system to electrical analogous system. The second step is to convert those electrical analogous model to numerical model. And the last step is reducing numerical model with evaluating the influence of each part of the system to the other, to the rest of the
system. And a second point, a more important point for our research is a time-squared adaptive model reduction. So how to explain that? In a system, we have a low inertia part in the
system and high inertia, so low inertia part of the system are a part of the system that evolve quickly in the time and high inertia evolve slowly with the time. So
when we make a simulation, a physical simulation, we have to find an optimal step size. If we have
a too large step size, the accuracy will decrease. And if we have a smaller step size, we will have a sufficient accuracy. But if the step size is too much small, the time
to execute the simulation will be increased for a little gain of accuracy. So we have a multiple inertia part in a multiphysics system and we want to find a way to optimize
the simulation by using different time squares in the system. So for the project, we have some requirements when we will choose the simulation software. We need a multiphysics
simulation software. This one must be adaptable. It must be able to adapt the model as a function of the condition of simulation, like the time, et cetera. And last but not least,
the application must be user friendly. So we have Simulink with Matlab or X-Cost with Scilab. That would be a very, very good application for the project. But Simulink
is expensive. It's a closed source software and not exactly adapted to our requirement. And it's a closed source software, so we couldn't modify Matlab like we wanted. And for X-Cost,
it's not user friendly. And like Matlab, it doesn't exactly fit with the project requirement. So we decided to develop our own software that leverages existing powerful Python libraries.
Here is an overview of our application. It has been used in a regulation system, and here we have an example of results for this regulation system. So the software,
it's a graphical tool for modeling and simulating multiphysics systems. Here is a quick demonstration of how to use the application. So to build the simulation graph, it's just a drag
and drop from box libraries to a scheme drawing. And then once the simulation graph is done, you can easily launch the simulation. We can use multiple projects at the same time.
Save and load a project, et cetera. So what is the application? The application is a simulation graph builder. We have provided some default libraries to use the application if you install
it on your computer. But you can easily add your own process boxes and can solve all the simulation you've been building in the application. We have implemented some default
simulation solver, but you can also add your custom simulation solver. So here is a list of default boxes in the application. We have a mat application like addition, multiplication,
derivative, et cetera, signal processing with transfer function, et cetera, sources, an order like a graph displayer, and also open modeling, simulation embedder, et cetera.
So if you want to install the application on your PC and want to create your own library of boxes, if we want to create our own box, we have to know that a box is defined by two files.
The first one is a description file written in YAML. The second one is a code file written in Python. And there is one condition to make it as a box. It's that both files must share the same
base file name. So how to create a box? I will take an example. I will create a box that is able to display graphic data in a graph. So the goal of the box is to display data
in a two-axis plot. In the X-axis, the time and the Y-axis, the value. The box must be able to display data from one or more sources.
And the graph must be displayed at the end of the simulation. There is how the box must behave during the simulation and at the end of the simulation. So how to create the box? The first step is to define the metadata of the box with the box name, the library name,
version, author, and creation date. It's just a metadata of the box. Then we will define the characteristic of the box. What I mean by characteristic is all the inputs, all the outputs of the box, and the parameters.
So for the box, for the graphical box, we need three parameters. The title, the label for Y-axis, and the label for X-axis. We must define the type of the parameter,
and we can define a default value. For the outputs, the box doesn't require any outputs. And for the inputs, we have three conditions. The first one, we have defined a default count
of inputs to one. So the box, by default, will have one input. The number of inputs must be unlimited. So we must write the parameter is infinite to true.
And the number of inputs must be not limited. And that means we can define a range of number of inputs. So we can limit, for example, the number of inputs from one to five, for example. But in this case,
we won't define any limit. The next step is to define a behavior. So how to define the behavior of the box? We write a Python file we write a Python file. When we write a Python file, we can use all of the available Python
libraries. We have to define three functions. The first one, an init function.
Sorry, an init function. In our case, this function will init the plot. The second one is during the simulation. What will the box do? What is the process inside the box during the simulation? In our case, it's saving data.
And what will the box will do after the simulation? And in our case, it's plot the data. Then the next step is to connect the description file and the code file, the
Python file. To connect both, you only have to write the name of the associated function. Then we have created a box. Now we want to add it in a library. So a library is just
a collection of boxes. In practical, a library is just a folder containing a YAML file and Python file. For now, a library is a folder that doesn't accept subdirectories. At the time,
we can't put our file in subdirectories. It won't be recognized. So we have our folder. We add our first box with our two files, the second one, etc. And it's how we make a library.
Another feature we added to muffin is an IPython interaction. So muffin can be run in an IPython session. It means that muffin can access all the
IPython variables, all variables declared in the IPython environment. We can use all these variables as simulation parameters. And the access variable is dynamic. It means that
we can launch the application at the beginning of the session, declare variables in the IPython and use it dynamically. So if I launch a first simulation with some parameters,
I update it after one simulation. If I launch a second simulation, the second simulation will take the new value into account for the new simulation. How to use it in an IPython session?
The first step is to load the muffin extension with the command loadext. And then just run the muffin command. There is a demonstration of how it works. So we have firstly declared our
parameter in a notebook. We will create a simulation with two signed signals. And then we will configure all the parameters.
We have implemented some information for the user. When he writes a wrong
variable name, the application will give the information to the user. So here we have all of both signals. The first one at 10 hertz with an amplitude of 10.
And the second one at 5 hertz with an amplitude of 7. I will launch the demonstration. Then we will update the value of the second signal, the amplitude of the second signal
only. And we have a signal with the new values. We have implemented other control features like saving and loading projects, working with multiple projects at the same time,
copying past boxes and cut also, deleting blocks, then cancel action, etc. So in conclusion, we have developed our own multi-physics simulation software.
The advantages of this application is that the application is entirely coded in Python. So we have access to many powerful libraries like NumPy, SciPy, etc.
for the application and for the custom processing boxes and simulation servers. The application is very adaptive. What I mean by that is that you can easily implement your own custom boxes and custom simulation server.
And the application can be associated to an IPython environment. So Muffin offers a Python alternative to MATLAB plus Simulink.
These advantages of the application, it's written in a scripting language. So we have higher solving times. It's a young application at the time, so we need more time to offer a lot of features. And we need more users to improve the experience.
So what's next? We will have to work on compatibility. We want to make the transition from PyQT 5 to PyQT 6. And we want to add more interactivity with the user to improve the user-friendliness
of the application. Here is a list of the contributors of the project. And here are the links of the project. If you want to read all the source code,
you have the link to the GitLab. And if you want to try the application, we have a package available on pipe. If you want to try to install it directly in your Python, you can use pip install Muffin.
So thank you for your attention. If you have some questions.
Electrical analogy to make the calculation, you use the electrical equation, right? Can you repeat? I will repeat after.
At the beginning of the presentation, you said you come from physical... Yes, we want to make mechatronics simulation. And we want to convert all the part of the system to electrical analogues.
Why did you choose electrical simulation? We don't choose any... At the time, we don't choose any software like... Sorry, I'm a bit stressed. Electrical simulation, I don't remember the name. But
the point with those software is that the model is not dynamic. We can't try a lot of sets easily. But the aim of our application is to, with the time, make a box to
create an interface to other multi-physics applications. We don't want to replace those applications. We just want to create an interface to those applications to use it in our research
project. If I can rebound on that, because it's an important project. The idea is a lot of process can be simulated with impedance like thinking, like thermal stuff, mechanical stuff. You had already between the physical aspect and the electrical impedance step.
So my question was, how do you use electrical equations, because they are simpler to solve, according to the physical equation? Sorry guys, there is a stream, people watching on the web, you have to go through the mic. Maybe you can go
instead and use the mic if you want to answer that question. Oh, you can repeat, maybe. Yeah, that would be great, if you could at least summarize. The goal is for the user to understand better the problem. Okay, the goal of the project, of the application, is to improve the comprehension of the system.
Is it time to make it real-time to accelerate the wide process? Sorry, I don't have heard. Can we in the future make a value in the entrance, like the boxes,
and change directly the value and see the output directly with the hit play button? Sorry, I don't have heard the question. I'm a bit deaf.
The question was, can you do a real-time simulation? No, the simulation, can we do a real-time simulation? For now, it's not possible. We want to implement that in the future.
For now, the application, we just run the initialization function, then run the simulation function and the ending function, and all the functions are run in one time.
At the time, we don't have implemented a real-time overview of the simulation, but we plan in the future to add this feature.
So, in the beginning, you talked about the slow paths, and the high inertia and lower inertia paths of your simulations. Yes. And you said that your software was designed to deal with local variable solutions and global variable simulations.
How does that translate into what you've shown us? Where is the global variable part? So, I'll repeat the question. I've said that we have in a system a low inertia part and high inertia part,
and also local variable simulation software and global variable software. How does this translate into what you've shown us? Or does it implement it in the application?
Yeah, where is it in the application? How did this concept translate into the application you've shown us? At the time, it's not implemented. It's the background of the project.
All right. But it leads to a scheduler problem. So, the idea is we want to have two schedulers, and then, at this time, we wait to keep for the three. Discussion can go on in the whole course.
That's a great part of the first time. So, go on with the discussion. We should switch speakers now. Thank you.