RBF Morph – A Journey of Morphing an Existing Ansys Mechanical Mesh Into a Target Geometry

Title Image for blog post on RBF Morph. Shows two rotor blad meshes in Ansys Mechanical
Categories:
image 1

RBF Morph is a technology that has been around for more than a decade now, and it remains a fairly niche but powerful tool in supplementing general CAE workflows. It is written and supported by Ansys Select Technology Partner RBF Morph and distributed through Ansys and its channel partners like PADT. Two products exist — Ansys RBF Morph Structures and Ansys RBF Morph Fluids, which are fully integrated into Ansys Mechanical and Ansys CFD.

There are a couple of primary reasons why we might want to morph an existing mesh, amongst (I’m sure) many more that I remain unaware of:

  1. We want to iterate CAE solutions by changing our geometry in a set way, but the process of actually making those changes in CAD and then needing to regenerate a full mesh is deemed undesirable.
  2. We want to generate an effective map of individual nodal changes from one geometry to another.

The second case is what I have recently walked through and occasionally comes up in multi-group CAE collaboration. A typical example would be when one group is producing and simulating on CAD that is assumed to be in a ‘hot state’ where it has already been deformed due to thermal or other loads into its final operating shape, and another group is needing to do some form of analysis on the pre-stressed state.

The group working on the ‘hot’ geometry may then pass some boundary conditions back to the group working on the cold geometry… but they’re in the wrong position! So, what do you do? One option is to create the above-mentioned map from one shape to another, so that you know where those boundary conditions should actually be applied.

An Example of RBF Morph’s Usage on a Rotor Blade in Ansys Mechanical

As an example, let’s say that one team has some twisted surface in Ansys Mechanical that might represent the blade in a rotor. They may go through some iterations on meshing, boundary conditions, or their own geometric changes, and end up with a temperature solution like so:

RBF Morph Journey Figure 01: A thermal model in Ansys Mechanical
RBF Morph Journey Figure 02: Temperature Results of a rotor blade thermal model in Ansys Mechanical

Now, another group is responsible for making structural changes to this shape so that it satisfies some unrelated criteria, but they know that the first group’s thermal solution does contribute, and thus they want to account for it. Their shape might look like this light green one overlaid on the first shape as follows:

RBF Morph Journey Figure 03: Structural and thermal meshes of Ansys mechanical models, overlaid

Now, it would be relatively straightforward to simply export a file that contains the x/y/z/temp values from the first solution and bring that in as an external data temperature profile to the second. If we go ahead and do that, we will likely notice that our results are similar in some places and much different in others. Below, the black dots indicate the source data points which are being used to generate our new temperature field.

So, basically any black dots that lie outside of our geometry represent wasted data that is not being considered, and any solid regions that don’t contain black dots represent complete guesses based on extrapolation of the nearest available black dots. We may consider ourselves lucky in this case that the hotspot has not changed overmuch, but there are significant differences present on the front left and back right edges, especially.

RBF Morph Journey Figure 04: Temperature source superimposed over structural mesh.

So, now it’s morphing time. The goal is basically this:

  1. Obtain the original temperature field by unique node ID, on the original mesh.
  2. Morph the original mesh such that the relative position of nodes remains basically the same, but our new overall shape resembles the shape we want to map data to.
  3. Extract nodal coordinates of the new shape, and then match up nodal coordinates to temperature for each of these cases based on the nodal ID.

Once we have the RBF Morph extension installed in Workbench, we will want to create a Mechanical Model that receives both the original mesh and a mesh of the geometry we are targeting. I recommend something like the following diagram, though the exact layout is of course user preference. ‘Morphed Shape’ is where I will be working.  Pro tip: in the properties of our mechanical model item that contains the morph operation, we should ensure that the option for “Renumber Mesh Nodes and Elements Automatically” is disabled for the original mesh that we will be morphing. It is critical that the node numbering remains consistent.

RBF Morph Journey Figure 04: Ansys Mechanical model project structure

Inside of this Mechanical project, we load in the two meshes and then assign our operations to modify the ‘original’ mesh.

The first thing to point out is that morphing is generally set up in layers. The top-level operation immediately beneath our ‘RBF Morph Set Up’ defines the geometry on which our morph is allowed to act. Beyond that, we can either attempt to apply all the rest of our morphs simultaneously, or we can force an iterative approach where individual operations are performed sequentially. More on the specifics later, but since we ultimately want to morph our mesh throughout the entire volume, we of course start with our entire original body selected as the RBF Region.

rbf morph ansys mechanical journey f06
rbf morph ansys mechanical journey f07

Beneath this region, we need to decide what operations need to be performed when. The first thing I want to ensure is that the bottom face remains completely fixed in space, as I already have a perfect fit due to a constraint in my design. We want this to be a zero translation morph in all three coordinate directions, it should act on the ‘undeformed’ geometry, and it should override any other competing operations.

rbf morph ansys mechanical journey f08

For my second operation, I know that the main difference between these two objects is the twist/shift of the two largest faces. These are the faces that I want to set up to ‘target’ the surfaces on the new geometry. If I was sure that my two source faces would not get confused about their targets, I might choose to include all 4 of my surface/target faces in a single operation. Since I want to avoid ambiguity in my instruction for this case, I will instead set up two separate surface target operations.

Note that the ‘node selection’ option at the top is the source face that will be moving, and the geometry selected on ‘geometry selection’ is in fact the target. For these two operations, I will also change them to ‘skip’ if selected nodes overlap. I know that I will not be applying any other operations to these faces, but I would like to leave the edge nodes available to adjust if needed.

rbf morph ansys mechanical journey f09

So, at this point, we can go ahead and perform an update on the RBF Morph Update and see what happens.

rbf morph ansys mechanical journey f10
rbf morph ansys mechanical journey f11 1

I’d say we’re looking pretty good! The gray mesh is what we have morphed, as opposed to the green which is our target. The left and right faces are overlapping nicely and have taken care of most of the difference between our geometries, but we see that the green is definitely covering the front and back edges, while the top surface is no longer flat. This bending is due to the surface normal based targeting used – it’s not extreme, but if we have plan to have an external boundary condition or load applied to that top face, then we might want to fix it.

There are a few more options at this point. One would be saying ‘good enough’, exporting the current mesh, and creating our new temperature map. Another would be clearing the generated data from RBF Morph and attempting to add more morph operations that will clear up some of the curvature in a single morph shot. The third, possibly most dangerous and yet likely most powerful, is to accept the current changes and continue morphing in a sequential manner.  

Since I’m a bit of a daredevil and have little to lose with this model (… and I have been through a couple dozen iterations on this morph while writing this blog), I choose option three.

This being the case, we use the adequately foreshadowing last option on the menu to accept this morph. Just to completely emphasize this point, once you have accepted a morph with this option, you cannot undo the morph operations without completely reimporting your mesh. There is an option to supposedly save an undo file, but this can be expensive for large meshes and my experience with it has not been reliable.

rbf morph ansys mechanical journey f12

For the second sequential morph, there is really only one thing that I want to change. Now that our surfaces are mostly aligned, I want to project the top curved surface of my new shape onto the nice and flat top surface of my target shape. If I really wanted to, I could suppress my two other surface targeting operations since we’re already mostly on target, but doing another projection won’t really hurt. And since I have those set to ignore in case of selection overlap, the edges along the top surface will be controlled by my new surface targeting operation. This new operation will of course be set to override in case of selection overlap.

rbf morph ansys mechanical journey f13

Now, generate the next morph:

rbf morph ansys mechanical journey f14

Perfect! (Within tolerance). We could continue to iterate on this to pull out the front/back surfaces towards the target a bit more, but I’m not nearly as concerned about the mapping at those locations as on the big flat surfaces in this case. For more complex morphs, you may also find that you want to specify point or edge targets to more fully constrain things.

From here, it is just a matter of exporting the new nodal locations. If you are particularly script savvy, you may choose to try inserting a python script directly in the morphed mechanical model and go from there. Since my example model is small and I can get away with it, I create a steady-state thermal solution type on the new mesh and then export whatever field result I like, as long as I have the option to export nodal numbers enabled.

With your tool of choice, copy over the original temperature solution into the new nodal coordinate list and save. For very large datasets, you most likely want to do this with Python or Matlab. For smaller sets, notepad or Excel may suffice.

Bringing it over via external data to an analysis using the originally modified geometry, we can see that it looks pretty good! Of course, we don’t exactly match the maximum value or exactly reproduce the originally smooth contours. Our mapping isn’t perfect (but is within my tolerances), and our front/back edges are still a little off. Still, there is little argument that this is far and away better than the naïve approach of directly bringing over the original data and attempting to interpolate from it.

rbf morph ansys mechanical journey f15

All that said, I can’t in good conscience wrap up immediately following my triumphant morph. The particularly fluorescent elephant in the room is that in general, when we morph a geometry and use that to carry along a solution field, that solution field is no longer “correct”. In a case like this where I understand the scenario which generated my original temperature field, I know that as part of my morph operation I am almost inconsequentially changing the effective cross-section area and length of my conduction path between boundaries. Many other cases will not be this straightforward, and it is important to use your engineering judgement in determining whether this process will actually provide you with meaningful results.

If you would like to learn more about using RBF Morph in general, I recommend the material available on the Ansys Learning Hub. The installation archive itself also contains some basic tutorials which can be helpful in wrapping your head around the options available to you. For questions about this, or anything else Ansys related, please reach out to info@padtinc.com!

Get Your Ansys Products & Support from the Engineers who Contribute to this Blog.

Technical Expertise to Enable your Additive Manufacturing Success.

Share this post:

Upcoming Events

Jan 22
- Jan 25
, 2025
Arizona Photonics Days 2025
Feb 04
- Feb 06
, 2025
MD&M West 2025
Feb 04
- Feb 06
, 2025
2025 Transformative Vertical Flight
Mar 20
, 2025
Arizona Space Summit 2025
Apr 07
- Apr 10
, 2025
40th Space Symposium
Jun 09
- Jun 11
, 2025
TechConnect World 2025
Jun 16
- Jun 20
, 2025
Turbo Expo
Jul 11
, 2025
2025 Aerospace, Aviation, Defense and Manufacturing Conference

Search the PADT Site

Contact Us

Most of our customers receive their support over the phone or via email. Customers who are close by can also set up a face-to-face appointment with one of our engineers.

For most locations, simply contact us: