 Thanks for being there. So what is finite elements? It's the thing when you have your CAD file and you want to see the mechanical deflection of whatever CAD thing you designed or a motor you just designed. You want to see the torque that is created by this motor or a pipe where you want to see the water throughput in it. You want to simulate this with finite elements and this is basically if you have access to a library you could just connect it to whatever CAD software and it would compute the physics and output data that you could again show in the CAD environment and so it would solve physics problem and predict what's going to happen like motor torque for example. And this is exactly what sparse lizard does. So some history. It's quite a young finite element library in terms of a usual finite elements library or like 20, 30 years old commercial software. Ansys is probably 40 or more years old and so they have a lot of history and it's good or bad, it depends. But sparse lizard is quite young which doesn't make it not robust or not mature. So it all started at the University of Liège not so far from here. During my PhD I wrote a MATLAB finite element code which had already a lot of other features that sparse lizard now has and this was like you can see it as a draft and from this on 2017 I rewrote everything from scratch in C++ and so everything is really nicely integrated together. It's not something that was doing just a few things and then it was patched and patched and hacked around to add things more and more over time. It's really a lot of features that are there from the very beginning and which make it actually quite nice and monolithic and where there is no need to hack code around. And then from 2018 to 2019 I worked at IMEC in the Anno Electronics Research Center. Some colleagues are here and I used it basically. I used the software to design micro-electro-mechanical systems quite a wide range of them and they were fabricated so there's actually some industrial background in the way it was written because it was written on the side of this work. And then for the coming four years there is a grant thanks to the Academy of Finland and thanks for Academy of Finland bringing me here. It will be developed for four years at Thampere University with a slight different focus on particle accelerator magnet design in collaboration with CERN. So four years of basically full-time development already paid and guaranteed. So there are lots of finite element softwares and you could think of why there would be another one to add. Well, from my point of view there are lots of things that just are specific to every software and everything but I didn't find what I expected in finite element softwares because they're always missing something and they tend to be usually not easy to use. Now here we provide a very large set of proven capabilities of a lot of different physics which you can very easily combine because this is the purpose of it from the very beginning to work with highly multi-physics simulations. You can also have a lot of extra finite elements things like mortar or finite elements which works very nicely for electric motors and all that is very concise and user friendly. We'll see that even though that it's a C++ library we'll see that again later and it's carefully validated and debug has spent a lot of time on validating and so far as far as I know there is no bug that I'm aware of that is still there. If you want to find some it doesn't mean there are no bugs but if I know of a bug I will remove it. It's also clearly documented and quite efficient. You can run it on 32 cores and get a nice speedup and it's very rapidly expanding. All the examples that I will show half of them have been added last year. So let's first start about what it's able to do. So this is half of the examples. So you have fluids, magnetics, electricity, mechanics, rotating machines, acoustics, thermal simulation. They all have a demonstrated example online and I'm not hiding anything. You can just click on this button and you'll see the example and it will always fit in 10, 20, or at most 50 lines of code which are actually extremely readable. You can simulate well you see highly multi-phasing things like the thermal acoustic simulation in a deformable cavity. This includes pressure, thermal, pressure, thermal, mechanics and acoustics. All that combined in one simulation is called piezoactuated MEMS. This was actually fabricated at IMIC and this includes pressure, piezo and mechanics. All this combined very nicely. So all these examples are validated and there are some more. You have additional features like on the top left where you can work with non-matching meshes just very easily. And what you can simulate is of course transient simulations, harmonic simulations, eigenmodes but also something specific to a sparse lizard. You can simulate a harmonic in a harmonic domain things that are non-linear which commercial softwares cannot do at all as far as I know. So if you have a non-linear problem you want to know how all the harmonics will appear. This is very, very straightforward in sparse lizard because it was really at the core of the initial MATLAB FIM code that I started with. There are lots of predefined physics as well for example on the bottom right advection diffusion is very well known that if you have advection dominated advection diffusion problems you start having instabilities and for that there are five different schemes of stabilization that are predefined and checked that you can readily use in just one line. Now advanced things that are available so as I said there is native support the so-called harmonic balance finite element which allows to do non-linear harmonic analysis. There is also a fast 3D very general mesh-to-mesh interpolation algorithm it scales very nicely linearly to up to 100 million of elements. You have general 3D mortar finite elements so on the previous slides here you have an example of an electric motor in the rotor in state and you really want to link them with mortar this is how it's done commercially because otherwise you don't have the freedom to choose the mesh at the interface you have some constraints. Here you are totally free to do it it works in 3D, no limitation. You have since well basically I started writing this a month ago and it will be available next week through p-adaptivity so you can change the interpolation order with every element in the mesh which means only on the elements that actually require to have more computation done will you perform more computation. So as an example I have a short video that's not going to show there so you have the electric motor simulation and so you have the induction field, magnetic induction field on the left and then on the right you have the interpolation order which is the best to actually solve this as accurately as possible with as few degrees of freedom as possible and you see red is the place where you have the highest interpolation order which is 4 here and this corresponds to the flux concentrations which actually need to be accurately solved for and so as you rotate the rotor it will automatically adapt this is just two lines of code to change there is really nothing difficult to that well probably in other softwares you might get in trouble if you actually want to use it now you also have extra things that you expect to have in finite element codes maybe a file format which in this case happens to be compared to VTK Paraview format if you run a fluid flow simulation in time you need to store 500 time steps you might need 300 gigabytes of data here you will just need 30 gigabytes of data it's like 10 times more compact than VTK for example and I don't believe it's possible to make it more compact because it just stores raw data and you can just easily reload it and that's the nice thing about it it's not just dumping data and loading again you can easily reload it later even if you have no idea of how the simulation was done you have one liner probe so if you want to know the value and one specific position you have the interpolate function you have maxes, averages, integrals whatever this is very straightforward to use you have Paraview output format because Paraview to me is the best way to visualize simulation data and then you have Gmesh and Nastron mesh input format and lots of more input formats via Petsy that allows to load other other mesh format and Gmesh as well which you probably know a lot you can also have curved meshes so quite a lot of extra features and it's very growing so probably you will see some mesh refinement coming in the next month because this is currently what I need for the superconducting magnet simulations now it's consize and user friendly you don't need advanced knowledge of C++ it is C++ so you can easily link it but all the pointers and stuff are hidden you don't have to work with a memory there is no hack it's highly readable so as an example you don't need to know the dimensions but if you want to run a 3D electrostatic simulation this is what you would need this is a working example 9 lines of code 2 third of it which is just commands hard to beat I think it's object oriented programming just have a look at the examples online basically there might be just three times longer but with 20 lines of code you can run a full 3D fluid flow simulation now it's documented and not just automatically documented it's really I spent a lot of time to document it so every function you're supposed to use comes with as detailed description as possible and also a working example like this one where you can just copy paste it and then play around with the function to see what it actually does and what the specific things are about it this is valid for every function I add it immediately to the documentation and it's available on GitHub for free it's JPL open source of course and if there's anyone who develops a CAD engine I would be definitely happy to have some interaction to include it thanks so questions please can you also 2D or 1D differential equations can you repeat the question did I do finite elements on 2D or 1D equations so 3D, 2D axisymmetric, 2D and 1D integral integral you want to have an average value for a thermal problem you want to know the average temperature or something I agree so if you want to integrate the heat flow through a surface so you have access to the normal you multiply by the heat flow you dot integrate you see on which region what integration order and you're done you have a double value out so topology I don't myself but I do have support topology optimization I don't myself but a former colleague managed to do mechanical topology optimization there is an example online but no example button to click on because it's his software because he did 2D bridge topology optimization in mechanics he did it so I can confirm it's possible I can so for what I heard am I limited to conduction and can I do other things of thermal analysis like other problems like convection, radiation and heat there's an example online for conduction you can also have there's also an example for natural convection so that works as well quite easily especially now with the stabilization methods added and radiation I haven't tried so of course you can probably find out the equations that but you cannot take into account the fact that you radiate on another phase for the moment although maybe but particle tracing is being added maybe it can somehow do that but radiation would be the only thing that is missing so you're interested in including turbulence in the simulation for the thermal convection general fluid so actually that's funny because one month ago I thought what am I going to do next and I thought I'm going to add a turbulence model for a fluid flow model called Spallard-Almaras and everything is ready to add it it's just that I thought it's too specific I don't want to write something that is just for incompressible fluid in this specific case I think for the moment the user will have to write it himself but Spallard-Almaras at least is easy to add and the only thing you need in this case is to know the distance to the wall and this if you need help for that if you want to add this different set of shape functions yourself I think it's quite easy so you have like a folder with all the H girl shape functions all the H1 shape functions you could just create another one and it also this all is quite readable because it's called a polynomial function where you can just make products of polynomials which you first define and based on what is already there it's really doable for a user it's generated what I didn't fully understand is my stiffness matrix explicitly or build up with the way it's built I call a function that that creates a mat object which includes all the terms of the stiffness matrix and this is created in basically the core of Spar's lizard a function that calls everything that needs to be called and just assembles very efficiently all the terms in the stiffness equation what yeah I tried with up to 50 million degrees of freedom in 2D and 5 million degrees of freedom for fluid flow in 3D of course on bigger machines but not like supercomputers but more 32 core machine with 700 gigabytes of RAM and yeah definitely this is doable the only limit for now is that I call PETC to call mumps because mumps is efficient in solving algebraic problems and for now PETC doesn't call the new version of mumps and so it's limited to a number of non-zeros in the matrix that is less than about 1 or 2 billion which limits 2D problems to 50 million unknowns so what we find this is not in the documentation that it will be released on Wednesday but it will be up to the user to choose so for example you can because that gives you the most flexible thing for example you will be able to in the motor example you have a vector potential and then you can just say that you check on the norm of the gradient of the Z component of the vector potential basically to see where things are sharper you have like corners and stuff and that's where you want to refine more so but it's up to you to choose with whatever expression because you can build any expression easily in sparse lizard to choose it alright thank you