CDFAM Amsterdam 2025 · Amsterdam · 9–10 July 2025

Flexible Geometric Modeling and Atypical Simulation Solvers to Streamline Design Optimization

Abstract

Simulation-driven design serves two important purposes: wider exploration of the design space and goal-seeking optimization. Regardless of the regime, the workflow spanning geometry creation, simulation setup, results interrogation and geometry redesign needs to be as seamless as possible to make this approach viable. However, there is often a significant overhead associated with manual, non-value-adding tasks. Examples include converting all geometry into a common representation prior to simulation, meshing for simulation, (re)applying simulation boundary conditions and, finally, making meaningful geometry updates based on simulation results. In this talk, we will showcase some of the approaches and methods we use in Altair Inspire to:

Concurrently model with up to four different geometry representations

Prepare simulation boundary conditions that remain fixed, irrespective of geometry changes

Run simulations on components and assemblies without having to harmonise all geometry into a single representation

Prepare a design exploration or optimization to close the loop between design and simulation

Automatically update geometry based on the simulation findings

These workflows take place entirely within Altair Inspire, which also reduces the need for lossy conversions or file transfers between different software products.

Transcript

From YouTube’s automatic captions, lightly cleaned; expect some errors. Each timestamp opens the video at that moment.

Read the full transcript · 3,348 words

0:03 All right. Hello everyone. Today I’d like to present how to streamline design optimization using flexible geometric modeling and atypical simulation solvers. And to begin with just a little bit about me in case you couldn’t tell from the title I started my life in academia. So we always like very difficult long explanations for things. But I started looking at academic research in manufacturing optimization, tool path optimization which then went into design for additive manufacturing and generative design which then led to co-founding a spinout called Gen 3D where I was the CTO and we developed a a design for additive manufacturing software which would create fluid flow components as well as an implicit modeling engine which was then acquired by Altter about three years ago now and since then I’ve been the director of implicit modeling and the polyurbs teams at Altter which informally we call the the free form modeling or basically any type of modeling that is in traditional CAD and what we’ll look at is a quick introduction into what Inspire is then talk about what we mean by flexible modeling and then we’ll show a couple of powerful examples examples which I think will illustrate why we think this sort of flexible modeling and simulationdriven design workflows are such a gamecher.

1:34 So what is Altter Inspire? You know a lot of people might have heard or not heard of Inspire. If you saw Inspire about five plus years ago, you might think, oh, it’s a topology optimization tool, but since then it’s it’s come a very long way and it’s now a simulationdriven design software platform that covers an enormous range of of capabilities covering the end-to-end geometry to manufacturing workflow all within a single application.

So there’s sketching and geometry modeling across four different geometry representations all seamlessly working together along with GPU rendering for both the modeling and the results processing. There’s designer friendly computational physics where there’s a structural solver either using the meshless simolid solver or the optrux solvers. There’s a full motion solver inside as well as a GPU native voxalbased fluid solver. And all of this can be wrapped into Inspire’s design explorer where we can extract design variables and run a variety of studies on those geometry variables or we can also do shape optimization using topology, topography or gauge optimization.

2:57 And of course, it’s definitely a very good idea to as early as possible in your design workflows consider the manufacturing of your products. So, Inspire also has a number of different manufacturing solvers inside of it, including 3D printing where we can then take those simulation results and include them in the design workflows. But all of this is wrapped inside a Python API where everything you can do in the software either through the user interface can be scripted.

3:31 So you can either script all the the design product functions as well as the user interface. So you can create your own custom workflows custom plugins and and we use this internally both inside Altter but also our partners as well as customers of Inspire to customize and connect Inspire. So what makes Inspire’s geometry modeling so flexible? Well, I think I can break it down into about five key goals for Inspire’s modeling capabilities.

4:02 The first area is that all models in inspire can be fully parametric with endtoend editable history. So either if you’re starting with a dimension sketch or importing some external geometry, every single modeling operation that you do inside of inspire is captured in a single continuous history with key design variables that can be extracted for either editing or for optimization. And as I previously mentioned, there’s these four different geometry representations in Inspire.

4:32 And the goal is to make working between these different representations feel seamless so that they can all speak to each other. We can convert and so that each different geometry type can focus on what it can do best. So just a quick little look of of what that looks like is here’s a a a brep bracket which can be used directly inside of an implicit latising operation and we can create a gradient based on one of the features of the brep model.

5:04 We can create this gradient as a as a field effect and we can then define those and what we can do now is roll back the history to before we made the lattice and actually change the shape of that brep geometry. So we can change the size of the hole. We can accept that operation. We can roll the history forwards again. And then if we look at the lattice geometry, we’ve updated that body that’s been captured there.

5:29 But we can then take that latice body and wrap it with a poly nerbs surface which we can then convert back to a brep format so that we can then take that brep maybe make a a sketch of a circular profile and then we can extrude that circular profile through the latis geometry as a brep operation and we can then cut a brep hole out of that brep latis and we can suppress that operation of the extrusion or unsuppress it again.

5:58 So again, it’s been captured as part of that history and we can turn on and off different operations as needed. Then this one’s more for implicit modeling, but the implicit modeling engine has been completely built on the GPU. So everything runs incredibly quickly where we can create geometry in real time in in terms of implicit geometry, but it also allows us to render the geometry with full materials and lighting and shading and environments.

6:26 So we can have INCAD live rendering. But of course, one of the most important goals is for the solvers to be flexible too. And this is what we mean by these atypical solvers. So as we’ve seen, models inside Inspire can have a variety of different modeling representations. And the solvers are able to work with these different representations as well. So what does that mean? Well, in this case, you can see that we have a part that has three different types of geometry in it.

6:55 So the red is a as a brep or parasolid geometry. The green is a a subdivision surface geometry and then we have the blue latice geometry. And inspire can use its connection finder to essentially link these different bodies together either into a single entity or into a sort of assembly of parts depending on how you set it up. And so you can set up your model, put on your boundary conditions, and what’s great is that once you have it all set up, it’s very easy to assess design variations or optimize for certain responses such as displacement or stress or mass or with fluids.

7:34 You can do pressures or velocities or anything that you can simulate inside of Inspire. And then as mentioned, everything you can do in Inspire is all wrapped in the Python API. And this al is also included in terms of the the modeling approach. So you can either just script your entire modeling workflow or you can start with a script and carry on inside the product or you can mix and match where you can do some modeling in the product, you can do some scripting and sort of work in tandem with the Python API.

8:06 And then in terms of implicit modeling, there’s a a lot of ways that we can link to external data outside of implicit modeling. So sketches, construction geometry, you know, bre features, simulation data or the Python scripts and they feed directly into the geometry that we can create in implicit and we keep a dynamic link to those entities as well. So if you go and edit any of those entities, your implicit geometry will automatically update and they can feed into all these different ways of creating sort of field-driven design where we can then manipulate parameters of our geometry at every point in space.

8:43 And you can see there’s a whole different host of ways of making these really nice fields for your geometry based on other types of data. And one of the ones that I think is probably the most interesting is being able to create these simulationdriven fields where we can take a a result from directly inside of Inspire. You can choose which type of result you’re interested in and you can with one click create a field directly and apply that to one of your latis types if you want and you can then change the the limits of those to make sure that it adheres to the results as you want to.

9:18 And this can be done for structural results, it can be done for fluid results or we can even import results into inspire from other altter products and again easily map to those different types of results. So we’ve just last week we released 25.1. It’s a pretty big upgrade especially for implicit modeling. There’s quite a lot of upgrades so I won’t go into all the details but on this page we did a massive overhaul in terms of our strut latising tools and we also included now full support for 3MF beam latis extension.

9:53 So both import and export. So you can import a 3MF beam extension and then have the full native implicit ability to filter those and and use those beams inside but also export those. And then we also had a a whole host of new features improvements to features and then another upgrade to the 3MF where we can export volutric data as part of the 3MF file. So that we don’t have to do any more meshing.

10:25 We can just go straight to a volutric data and then we are working on being able to import that data as well. So stay tuned for that one. But if you’re interested in any of the other updates then just come speak to me after. But I think it’s time to look at some examples. So what does this look like in practice and you know how how does it work?

10:51 So we’ll start by looking at the design of a jaw implant that contains a stochastic lattice and we can basically begin by starting with a a model. So someone actually created a brep model of a of a skull but we can start by defing an existing model to get the design space where we want to put a lattice into. And now what we can do is directly create curves onto the model which we want to use potentially to act as the anchoring points for the implant.

11:22 So we can directly put these curves onto the bre model and create splines which we can then also create some guide curves based on the model. So we can create these surfaces and we can then thicken these surfaces to act as the anchoring point for the the latis implant. And then we can also quite easily put in some cylindrical cutouts which are going to basically act as the the guide holes for the surgery for the drilling.

And it’s very easy to just copy and paste these, place them exactly where you want to and essentially get your geometry. And we can then do a polyobs fit of the surface where we’re essentially creating a sort of sculpted surface to map onto the original bone structure and then hollow that out and create a sort of shell which is going to then contain the lattice. So now we got our poly nerves part.

12:23 We’ve got the internal volume for the lattice. So we can take that brep def featured model convert that to implicit and basically fill that with a stochcastic latice. So we’ll generate a number of random points inside there where we can define the minimum spacing between the points to make sure that no points get closer than a certain amount. We can then fill the entire bounding box and connect them up using a voronoi structure.

12:49 And then we can use some filters to ensure that the beams only live inside the volume that we want. And we can also apply a veilance filter to stop any sort of single edges sort of floating edges as sitting on the side. So we can then create that and choose our latis thickness which can either be a single thickness but in most cases we need to figure out how thick we want that to be.

13:13 So what we do is we can take the original unlattised model we can run that through sim solid. So we can then apply the boundary conditions figure out the results that we want either displacement or stress. So in this case we took displacement and we are going to then create a field just as I showed earlier to map onto the minimum and maximum thickness of the lattice.

13:34 So we can then create variables for those those parameters for the minimum and maximum thickness and we can run that through our design explorer system where we can then set up the study and say I want to do an optimization. I have these variables I want to change. I have these limits for those variables that I want. I can then choose a response which is displacement. I can make some constraints on that.

13:57 So I don’t want a maximum. I don’t want it to displace too much. And then I can run it through the design explorer and run it as a a minimization of that response. You can also do that as a complete sort of design of experiments if you want. But in this case we we ran it as an optimization. You can then see for the certain number of responses you can see the how it works.

14:19 You can then look at every single result in detail and then you can pick out which which version of the latis you are most interested in. In that case you can even look at some plots to see how the variables change. If you have multiple variables, you have multiple responses, you can then figure out maybe you need to see which variables are the most interesting. And as I mentioned earlier, we also have the full rendering.

14:42 So once you get the final model, you can then basically apply your materials, you can apply your environments, apply your lighting, basically anything that you want to to see on your model to make it look nice for potentially marketing or anything else just to visualize what your model’s going to look like. So just a very quick cap on this one. We took a bre model, poly model, created analysis, used it to drive the latis with a field, and then we use design explorer to optimize that latis.

15:12 So that’s a structural application, but what about a fluid application? So we’re going to look at the design of a heat exchanger where we can start with a dimension sketch where we have some key variables which drive the sketch dimensions. We can then use the CAD modeling tools which uses parasolid inside of inspire to create the the geometry that we want to fill either for the fluid domain but also for the core.

15:37 So you can see on the left the full history of all the operations that were were done to model this this parameter. We can measure and have all the key variables that we’re interested in. And then we can just take the core. We can then immediately just apply latice to it. We can choose which cell that we want. Let’s hide the actual other body so we can focus on the latice for a second.

15:59 But we can make it a double latis. We can choose the thickness either by density or by a very specific thickness if you want. And we can then choose the the cell size either again by a length unit or by a number of cells which can be you know uniform or non-uniform in different axes. And then we can make the plugs. So make sure that the fluid only enters in the correct domains.

16:21 So we take those plug volumes that we designed and then we just apply the same parameters that you had with your core except in this case you’re going to not use the double lattice. You’re going to use the single side. And then you can choose whether or not you want to keep block one PL side or the other side. Do the same exact thing for the other plugs except choosing the inverse side.

16:42 And then all you have to do is boolean those bodies together into a single body and then applying the boundary conditions is incredibly simple. So we just have our fluid domain which in this case there will be two fluid domains but we have the the single domain that covers everything. We can then apply materials to individual inputs. So the inlet has a material in it. So you might have two different materials.

17:09 So it could be, you know, air and water or or anything like that. And then basically you can put the outlets in. So specify where the fluids are going to escape. And then the lattice core just ends up being an embedded solid. So it’s going to block the fluid inside that fluid domain. So you can choose which material that’s going to be. And once you’re ready, you’re basically ready to solve.

17:35 So that’s quite nice. Basically a very simple setup. Run the study and you can then get your results. And the solver is going to do the hard work of splitting those fluid domains. You don’t need to do any meshing. It’s basically just going to figure out from the inlets to the outlets with the different materials how it actually creates the fluid domain of each material. And it’s done on the GPU.

17:59 It basically runs in seconds if not minutes depending on the resolution that you’re running. And you know, one result is great, but more results is better. So, what can we do? Well, now that we have the model set up, we can change those design parameters and we can very quickly change the either the core of the lattice or even those measured variables that you can see on the screen.

18:20 We can change the length. We can change the the radius of the inlets, the amount of distance for the the plugs. And essentially we can then go through and analyze all of them just like before. So you can either individually make one design change and run that analysis or you can run it through the design explorer system to then optimize for any of those fluid responses that you have.

18:43 So it could be fluid velocity, temperature change between the inlet and outlet as you want. So I think those are two obvious examples in terms of structural and fluid results. But really, I think hopefully you’ve seen how you can use this in practice to basically put it onto any single application that you want. And using the Python scripting, you can basically come up with your own workflows and own custom scripts and extend the product to your heart’s desire.

19:17 I’m sure a lot of you in here are coders and would probably do all sorts of exciting designs that I couldn’t even think of. So that’s what I’ve got. If you got at anything you want to chat to me about, I’m here for the next few days. But other than that, thank you very much. To learn more about the CDFM computational design symposium series, to see the archives of previous presentations, and to learn about future events, visit CDFAM.com.

More from CDFAM Amsterdam 2025

Computational Design, Evolutions

Computational Design, Evolutions

Mathew Vola · ARUP

Injecting AM into shoes

Injecting AM into shoes

René Medel · Framas

Computational design and optimization of vascular stents

Computational design and optimization of vascular stents

Dario Carbonaro · Politecnico di Torino

Open Source CDFAM

Open Source CDFAM

Aaron Porterfield · F=F

Design for Viscosity, Not Gravity

Design for Viscosity, Not Gravity

Hamilton Forsythe · RLP

Manufacturing Driven Design

Manufacturing Driven Design

Rhushik Matroja · Cognitive Design Systems

Strategic Urban Foresight

Strategic Urban Foresight

Ben Dru; Julia Barashkov · Urban Futures Lab

Register for Updates and Discounts on CDFAM events.