Convergence of adaptive mesh refinement tool

  • Topic Is Locked
  • Last Post 6 days ago
  • Topic Is Solved
timescavenger posted this 3 weeks ago

Even though I would prefer it could maintain the same element type defined for the original base mesh instead of using always tets for the refinements, I find the adaptive mesh refinement tool a very convenient and useful way to validate the mesh independence of results ... when it works!:

In short, I learned that when properly used (one example here) on the area of interest you should get a graph like the one on the left which means you are fine:

When the refinements are applied in a zone with some kind of singularity the results diverge meaning that this tool/procedure is not applicable and you have to get rid of the singularity before trying any kind of mesh refinement (either with this tool or any other option).

That´s all fine, but my doubt appears when I get a graph, different from those two unequivocal ones, like this:

In this case, does this mean I can consider results converge somewhere between 900 and 1300 MPa? I reckon the answer is NO because the icon next to the convergence branch indicates failure and this is not exactly an accurate outcome anyway!.

How should then such an "oscillating convergence" be interpreted? (the outcome is the same when the refinement is manually defined with mesh sizing options so...)


Order By: Standard | Newest | Votes
peteroznewman posted this 3 weeks ago

You can find the information for the current Release by using ANSYS Help. There are a couple of limitations:

  • Results cannot be converged when you have a Mesh Connection object.

  • You cannot use Convergence if you have an upstream or a downstream analysis link.

Is that a condition in the model with the oscillating result?

timescavenger posted this 3 weeks ago

Nope, I think the model complies with all the required conditions: previously I had indeed to delete two downstream and upstream linked modal analysis for the Convergence object to appear as an option but once done I could insert it and set it normally. The problem is how it behaves and the failed outcome. No mesh connections or other disabling features are present either...

peteroznewman posted this 3 weeks ago

How many faces are in the convergence evaluation? If a single face is chosen, does it converge smoothly?

timescavenger posted this 3 weeks ago

In this case I chose one edge instead of a face

peteroznewman posted this 3 weeks ago

It might work better on a face than an edge.

timescavenger posted this 3 weeks ago

I´ll try it that way and will tell you. It´ll take some time though...

timescavenger posted this 2 weeks ago

Peter, scoping the convergence to a single face did not change the outcome (I don´t know why but I can´t upload the graph image: I get an error message. Anyway, it´s the same oscillating pattern) ...

Any idea?



peteroznewman posted this 2 weeks ago

I also can't insert images into Posts. I have reported that to management.

I don't use a convergence tool, but there are some "knobs" to turn on the process. Does it save each point along the plot so you can see where the maximum stress is located?  Is it bouncing from one side to the other of the face (one end to the other of the edge you had)?

timescavenger posted this 2 weeks ago

Sorry, I don´t know the answers to your questions: I can see the last refined step outcome while the run is in progress but once is finished I don´t know how to see results from each refinement step but the last one. I like the convergence tool when it works but in this case, a manual mesh refinement produces the same problematic result...

I repeated the process after blending one edge into a round just in case this was the thing causing the problem but it is still the same...:


After the rounding:

(What about the Max. label outside the red cores?!)


Looks familiar? Just trying to finish this off with some confidence in the outcome... ;-)

Attached Files

peteroznewman posted this 2 weeks ago

I changed the Max Equivalent Stress to 10 faces instead of 1 face and am running the Convergence plot now. I will share that in the morning.


vganore posted this 2 weeks ago


Vishal Ganore,

peteroznewman posted this 2 weeks ago

I got the same graph you did with 10 faces instead of 1 face. How did you get it do more than 4 solutions in your previous graphs?

I don't know why the Max flag is outside the hot spot, but if you create a new result, the flag is in the correct place. Maybe someone from ANSYS can say.


timescavenger posted this 2 weeks ago

I don´t understand what you mean by "How did you get it do more than 4 ...". I just set the Adaptive Refinement tool to do 3 loops of Depth 3:

I guess this means 3 iterations plus the 1 from the original mesh... In the first graph I showed "Max. Refinement Loops" was set to the maximum (10).

I´ll try now doing this through a detailed shell-to-solid submodel of the zone... let´s hope this works better and produces a more meaningful and reliable outcome.

timescavenger posted this 2 weeks ago

I tried also a manual mesh refinement using a Sphere-of-Influence around a vertex in the critical zone (a bit too much as I saw later from the outcome but...):

But I got this weird outcome:

The refinement did not reach all the sphere volume but just one beam side and the Max.stress (almost twice as high as the one without refinement) flag keeps appearing outside the red hot spots...

Any idea why is all this like that? 

timescavenger posted this 2 weeks ago

Hi again Peter,

I cut a solid submodel off my shell-model and set the analysis in the Project Schematic following the procedure but when I imported the Cut-boundary displacements from the source mesh, the submodel appeared displaced from the original one:

I know I can move the submodel using the "Rigid Transformation" option but I had to do it "by eye":


I would prefer to know why the submodel "moved away" and fix it to leave it in its original position. Besides, when I ran the analysis, after defining the rest of the settings, the results suggest me that the source and target meshes are not correctly/exactly aligned because I get maximum high stress in some of the cut-boundary areas:

while the area of interest shows a reasonable stress increase respect to that in the original model (about 380MPa. Without the local mesh refinement of the previous post!...):

the other (welded) joint with the diagonal tube-beam was not rounded and I assumed this is the reason for the higher (singularity) stress (617MPa):

How do you see it all together? Do you know what could I have done wrong in the submodelling procedure? Any way to improve it? Do you trust this outcome? Thank you!

Attached Files

timescavenger posted this 2 weeks ago

Peter, did you see my last two posts?

peteroznewman posted this 2 weeks ago

Busy day at work today, so I'm just catching up...

On the topic of inserting Convergence on a Stress result, the software creates a graph with 4 solutions. It does this without anything added to any other category.

You say to get 9 points on this graph, insert an Adaptive Mesh Refinement in the Solution. Your model didn't have that, which is why I was asking. As I said, I do my Mesh Refinement Study manually and haven't spent any time with these automation tools.

If I add a Nonlinear Adaptive Region to the Static Structural branch in 2019 R1, it will not let me pick the body that has the peak stress on it. I don't know why.

When I spend more time trying to get the automation tools to work, or if they give me weird results, that is when I go back to performing the Mesh Refinement Study manually.

I will look at your other posts later today.

Regards, Peter


timescavenger posted this 2 weeks ago

Sure Peter! I don´t know what this "Nonlinear Adaptive Region" feature is for or how it works (maybe it´s not available in my R18...)

Anyway, looking forward to hear your opinion on the rest of the stuff. 

peteroznewman posted this 2 weeks ago

I'm glad you tried the submodeling approach, it's interesting to see it being used.

Your goal is to establish the safety of the frame.

The shell model has linear materials and the stress is greater than the yield strength, either because it is, or because of stress singularities due to modeling simplification.

What I would do to show that the frame is safe, is to add Plasticity to the material model. The simplest one is Bilinear Isotropic Hardening. For a conservative result, enter the Yield Strength and use 0 for the Tangent Modulus, then rerun the simulation. Now those high stresses are gone. In their place is Total Strain. The material has a property called Elongation at Break.  When Total Strain > Elongation at Break, there is a problem.

But when Total Strain is <  Elongation at Break there is a margin between the loads on this design and failure.  You can calculate a Safety Factor using those numbers.

Try this approach and see if you have any questions.


peteroznewman posted this 2 weeks ago

In response to the question of why the Max flag seems to be off in the weeds.

The maximum value is on the inside of the sheet thickness. If you slice the body through the Max value, you can see the maximum is on the inside when you have the View set to Thick Shells and Beams.

When you rotate the view and look at the outside, it appears that the Max flag is off in the weeds, but if you slice through the thickness to the inside, that is where the Max is to be found.



timescavenger posted this 2 weeks ago

I followed your suggestion: after defining the plasticity model for the used steel:

and assign it to all affected parts, I ran all analysis again and got these results: for the shell whole model (including frictional contact for touching surfaces):

Max. stress moved to another point but Max. total strain remained in the same beam-junction corner... Then I set everything accordingly in the submodel too and got:

I found the Elongation at fracture for the used material in this table:

So I concluded the frame is clearly in the safe side for the established performance conditions since 0.8% << 23% (too much safe!!, right?). However, the max. stress still appears in the cut-boundary and that makes me doubt about the whole validity of the these results because one of the conditions for the submodelling analysis to be reliable is that stress in the cut-boundaries must be similar in both the original model and the submodel...:

The literature recommends to move the cut-boundaries away from the conflicting area until this condition is met, but I reckon this is not the problem here but the one I mentioned before with the submodel-model alignment...

Besides, shouldn´t the max. stress be limited to 394MPa (yield strenght) with the tangent-module = 0 in the plasticity model?

What would you do in this case?


Attached Files

timescavenger posted this 2 weeks ago

By the way, I could confirmed what you said about the max. value inside the shell thickness but I had a hard time trying to set the section plane in the suitable position to "catch the spot" because the slider to move it only appears in the "zoomed to fit" screen but there you don´t have enough resolution to set it with precision and when you zoom in the area the slider disappears!

Do you know any trick around this or a better way to do it?

peteroznewman posted this 2 weeks ago

Read this post which answers why stress can be higher than yield when using an Elastic Perfectly-Plastic material model (zero Tangent Modulus) and the ERESX command you can insert to prevent that from happening.  Note that without the ERESX command, the amount the maximum stress exceeds Yield is reduced as the element size is reduced.

In the screen snapshot below, you can see the Max flag is back were it belongs, on the inside of the tube, not over on the cut boundary.

To slice the view, you can do it with precision if you place a Coordinate System, but I just do it by eye. I find it easier to draw another line than move the exiting plane.

Safety Factor on Total Strain vs. Elongation

Yes, you have a huge Safety Factor for the load you are modeling. This proves that when you apply that load once, the frame will not collapse.

Fatigue Analysis

This frame is welded, which means the weld material is full of cracks.  Those cracks grow longer with each cycle of stress. At some point, enough cycles of stress have occurred that the crack will reach a critical length and the frame will collapse suddenly on the next cycle as the crack fractures across the remaining material. You should perform a Fatigue Analysis to predict how many cycles till fracture.

timescavenger posted this 2 weeks ago

Fair enough Peter: I introduced the ERESX command snippet as you suggested and I also got the same results you show. I´ll have to study more thoroughly why is this when I have some time but meanwhile I also wanted to make sure my concern about stress being the same (or close to) in cut-boundaries both in the model and the submodel (as far as I understood this is a must for the whole thing to be valid and reliable) was also solved with this last move.

Unfortunately this is not the case neither for averaged nor for unaveraged results as it can easily be seen comparing these values in various points:

So my doubt about the reliability of this results has not vanished... Any thoughts about? 

peteroznewman posted this 2 weeks ago

1) Don't look at stress at the cut boundary. The cut boundary exists to transfer deformations from the full model to the detailed model. The cut should be made far enough from the hot spot center of the detailed model that the results at the center are not affected by exactly how far away the cut was made. I think your cut achieves this, but you can confirm it by making the cut at double the distance, but don't look at stress at the cut boundary.

2) The stress is expected to rise as the elements get smaller so the 244 MPa on the coarse shell model rises to 390 or 394 MPa on the detailed solid model. You could get a higher stress result on the shell model by making smaller elements on that model.

3) Once you introduced Plasticity, stop looking at stress results. Your Total Equivalent Strain is the measure of interest and it has shown the frame has a large Safety Factor.

If you want to ask about Fatigue, start a New Discussion.

peteroznewman posted this 2 weeks ago

On the topic of why did the Detailed Model show up "out of place". Which file did you use to cut out that detailed model?  I expect is was a component file that had a different origin than the full model in SpaceClaim.

When I work in a CAD system and transfer geometry into a Model, I try to always pull the geometry from the same file so I get the same origin.

It was interesting to see that you could recover this by using the Rigid Transform.

timescavenger posted this 2 weeks ago

Peter, sorry to insist but to my understanding:

1. I would completely agree with you on forgetting about stresses once plasticity has been introduced since then, the yield limit is just reached and maintained (tangent modulus=0) or overcome (other plasticity models) in the plasticized areas but from that point onwards the "strength limit" is defined by total strain being under the elongation-at-break material limit. But my point is that I am not sure I can trust these results for plastic strains if the submodeling procedure is wrong.

In that respect, I believe the criteria for making sure the procedure is valid still is "stresses in the cut-boundaries should, roughly, match" (which else?). And, since I did the submodel-model alignment "by eye" (this refers to your 2nd post and my next point in this post) I reckon small misalignments could produce strong stresses in the cut-boundaries leading to falsified/incorrect results in the whole submodel. I can´t think of any other possible reason because moving the cut-boundary further away does not change the situation... 

2. I did indeed sliced the submodel from the original model and that's why it surprised me they appeared misaligned when I went to the Import-displacements object. In fact, today I repeated it again and I got it again "out-of -place"... don´t understand why...

Please, let me know if anything of the above is somehow wrong. Thank you.

peteroznewman posted this 2 weeks ago

Since your full model is small enough, I recommend you skip the submodeling step entirely and just use the full model, but use a mixture of shells and solids. Take the shell model, cut it around the center hot spot, remove those shell parts and insert a solid body to replace them. Now you have to add Bonded contact between the shell edges and the solid body face at each cut boundary. You are going to get some "disturbance" in the stress field at this cut boundary.  Ignore it, you chose that place to cut the model because it showed no cause for concern. The bonded contact transfers the load from one part of the model to another where you want more detailed information in the hot spot.

You can even take your solid body and make a second set of cuts to make a solid margin. Plot stress on the center solid body and don't plot stress on the solid bodies at the margin that have the bonded contact to the shells on one side. You can use Shared Topology to connect the margin solids to the center solid.

I agree that when you use submodeling, if you get the alignment between the submodel and the full model wrong, you will get the wrong stress in the submodel. I verified that with your model.

I don't know why the submodel shows up out-of-place. I hope someone who uses this feature a lot can answer why that is. I don't know.

timescavenger posted this 2 weeks ago

Fair enough. I’ll try that as soon as I can

timescavenger posted this 1 weeks ago

Hi Peter,

Back to the nitty-gritty after a home DIY weekend and, hopefully, already closing this post:

The full model might not be so large but when I tried your last suggestion with this mesh:

and Program-controlled Analysis Settings it ran several hours yesterday afternoon until the Force-convergence and the Force-Criterion lines appeared almost parallel and the first substep still unconverged... Then I decided to stop it and reset the Time Stepping manually doubling the number of substep (program-controlled initial substeps were 5): 

The calculation has been running all night, not even the 1st substep has converged yet and it looks like it won´t do it at all (both lines follow the same pattern towards being parallel and if it starts bisecting it can take ages to finish...):

What would you say/do?

Show More Posts

Topic Is Locked