Modelling plastic deformation of a column

  • Last Post 23 June 2018
  • Topic Is Solved
TimH posted this 28 March 2018


Since a few days I am trying to simulate the plastic behaviour of a pinned-pinned column under axial compression. To implement an initial imperfection, I ran a linear buckling analysis first and exported the solution to a static structural analysis via APDL code (see picture), which worked out quite good.

To save some calculation time, I modeled only one half of the column in this static structural analysis and added a symmetry Region to the right faces. I added constraints and a ramped force to the system shown in the following picture (same as in the linear buckling analysis). As I want to simulate pinned-pinned support, I added a fixed support and a displacement with Uz as only degree of freedom to the load application plates (self-defined very stiff material) at the top and bottom of the column respectively. All of the contacts are being modeled as bonded. As a material for the column I defined a multilinear material (taking effects of thermal degradation into account as I want to simulate this effect in an next step), which can be seen in the next picture. After a while of solving this problem, ANSYS WB 18.2 stops the solution by sending several warnings and errors (see picture). Although sending all of those errors, I can view the results, which do not look too bad. After checking stresses and strains of the viewable results I found out, that ANSYS only solved up until the point at which plastic deformation occurs (same problem while using the default material "Structural Steel NL" from the WB material database, so that I assume, that this problem is not due to a wrong definition of my own material).

I would be so thankful, if anyone has an idea on what my fault is.

Thank's very much.


  • Liked by
  • Abdul Malik
Order By: Standard | Newest | Votes
peteroznewman posted this 28 March 2018

Hey Tim,

A force loaded column in a Static Structural model can only simulate up to the point when the force-deflection curve goes horizontal and approaches the buckling load.

If you replace the force boundary condition (BC) with a displacement BC, you can plot the force-displacement curve by using the reaction for the displacement BC, but the solver will continue to advance the displacement even after the force has reached its peak value and is onto the negative slope of the curve, which is past the critical buckling load where the structure has buckled and would fail to support a static force.

If you have a Fixed Support on one of the end plates, then that is not a pinned end condition. To create a pinned end condition on the stationary end you can add a joint to ground and specify a Revolute if you want an actual pin axis, or specify a Universal joint and make sure the joint Y axis points along your global Z to fix rotation about the column axis while leaving the other two rotation axes free.

A pinned moving end uses another joint to ground but specify a Slot joint. You have to make sure that the joint X axis points along your global Z. Use a Joint Load and drive the joint X axis with a displacement.

TimH posted this 29 March 2018

Hey Peter,

thanks a lot for your quick answer. I thought, that because of the initial imperfection, it is not a buckling issue any more but a bending issue (comparable with a simply supported beam exposed to bending). Therefore, in my opinion, it must be possible to simulate plastic deformation as well. Later on I would like to apply a constant force onto that column while rising temperature till collapse to get the fire resistance in minutes. Thats why I need the boundary condition to be a force. Are you sure that this doesn’t work?

I modeled the pinned support on the stationary end by applying a fixed support on a line around which the system can rotate (see Method 1 in picture). I did the same on the other side of the column but with a displacement support with additional freedom of movement in the direction of the global z-axis. It worked but might not be the most elegant way. I tried your method (see Method 2 in picture). It worked as well although I got the messages:

1)      One or more MPC contact regions or remote boundary conditions may have conflicts with other applied boundary conditions or other contact or symmetry regions. […]

2)      Not enough constraints appear to be applied to prevent rigid body motion. […]

Moreover, with your method (Method 2) I got a slightly different Load Multiplier (9,13e+6) as a solution of the Eugenvalue Buckling Analysis compared with Method 1 (9,25e+6) and a hand calculation (9,31e+6). Do you have any idea why this is and how to avoid those errors?

Thanks for your help

TimH posted this 29 March 2018

I have a theory on why ANSYS WB fails to solve this problem (axial force-compression of geometric imperfect column). I would be very thankful, if someone could confirm this theory and/or show a solution on this issue.

The Problem might be found in a ramped force combined with large deflections, which I switched on in this analysis. While increasing the force, the deflections normal to the axis of the column (here x-axis) increase and because of that, the stiffness of the system decreases. Hence, no matter if a plastic or elastic material is implemented, there is a point at which the column collapses (brittle collapse) due to a low resistance against further bending. Exceeding this specific point, ANSYS deforms the elements so much, that convergence problems occur.

If this is the case, implementing a ramped deflection [mm/sec] instead of a ramped force [N/sec] would indeed help. But as I mentioned, I definately need to have an axial force to be applied on the column. What might help is a command to tell ANSYS WB 17.2 or 18.2 to stop calculating when a specific deflection (e.g. Uz=100mm) has been reached. Does anyone know about such command?

peteroznewman posted this 29 March 2018

Hi TIm,

Please read this slide deck. On slides 14-18, it explains how to find the critical buckling load by tracking the load-deflection curve. Slide 18 explains that using a force to approach the buckling load will result in the solver stopping with an error, and to be careful that the error did not happen too soon!

The error that stops the solver is not that an element has deformed too much (although that error is possible in a nonlinear analysis), but that there is no equilibrium solution at any higher load. The solver is ramping up the load and converging on a static equilibrium at increasing increments of force until it can go no further, which is the definition of buckling.  By changing from a force input to a displacement input, there is a static equilibrium at the next increment of displacement, it just has a lower reaction force than the last converged displacement.

You said " I definitely need to have an axial force to be applied on the column." A single DOF displacement load does provide an axial force. If you have a pinned end supported in X and Y displacements and apply an axial Z force of 1 kN and get 1 mm of Z displacement, the structure will be deformed identically to one where 1 mm of Z displacement was applied and the reaction force was 1 kN.

You said, "What might help is a command to tell ANSYS WB 17.2 or 18.2 to stop calculating when a specific deflection (e.g. Uz=100mm) has been reached."  That command is called a Displacement boundary condition. ANSYS ramps the displacement from 0 to 100 mm in increments.  You can add a Reaction Force to the results to track the force required at each increment of displacement.  You can even tell ANSYS to take small steps when incrementing the displacement so you get good resolution on the Reaction Force plot. You might even see the force increase to a maximum, go horizontal, then start to decrease in magnitude. You are now in the post-buckled regime of the structure.

Slide 19 suggests using a STABILIZE option that allows the plotting of post-buckling behavior. That is required in cases such as a pressure load on a shell model of a dome where you can't use a displacement load as I suggested above to follow post-buckling behavior.



TimH posted this 29 March 2018

Somehow half of my message got lost. Here again:

 So if I understand right: What I am doing by coupling the result of an Eigenvalue Buckling Analysis to a Static Structural Analysis is nothing else but a Nonlinear Buckling Analysis. In this case, a solution failure caused by convergence problems, sending those errors like "Although the solution failed to solve completely at all points. [...]", still can produce usable results. Usable results will be given till that time at which the ramped force reaches a value which, without further increase of the force, leads to further displacement of the system. That is the reason for convergence problems. By reading out the force at which ANSYS stops calculating, I get the capacity of the column. Nonlinear Buckling can be seen in the Force vs. Deflection curve (see picture), which tends to get horizontal. In my case (see picture) the capacity of the column is -9.1e6 [N] (read out of the tabular data) at a deflection of -74.279 [mm] in the direction of the x-axis. So the point where ANSYS stops calculating is not, how I assumed first, the point at which plastic deformations occur but the point at which nonlinear buckling occurs.

Please correct me, if I summarized wrong.


peteroznewman posted this 29 March 2018

You have it nearly correct.  ANSYS can stop solving for reasons of numerical instability (bad element shapes) before it has reached the point of physical instability, so you have to plot the force-deformation curve to see if it has gone horizontal to determine the reason for the solver stopping.

TimH posted this 03 April 2018

Thank's a lot, Peter. You've been a great help on this. I have one last question on this issue: As I mentioned before, I am attempting to set a constant axial force onto the column while increasing temperature and watch the column collapse due to thermal degradation of the material. Therefore I cannot plot a force-deflection curve (constant force) but a temperature-deflection curve, which goes horizontal as well (see picture). Can I use this curve to prove physical instability (buckling) as cause of the solver stopping?

peteroznewman posted this 03 April 2018

Hi Tim, yes, this curve looks like it has approached horizontal.  If you want more points between 750 and 1150, go to Analysis Settings and change Auto Time Stepping to On and set a high number for Initial Substeps and Minimum Substeps, even higher than 10 if you want. 

You can show your appreciation by clicking Like below the posts that are helpful.

  • Liked by
  • TimH
  • Abdul Malik
TimH posted this 03 April 2018

Awesome, thank's very much!

TimH posted this 16 April 2018

Sorry for reopening this discussion but some more questions concerning this issue appeared:

I modeled the column with a self-defined temperature dependent, multilinear material and found out by viewing the time vs deflection curve, that in some cases (stub column), ANSYS WB 18.2 stops calculating before buckling occurs. I therefore assume that convergence problems are due to reaching the materials capacity (stress = ultimate strength). Now I would like to know, in which elements this is the case. I tried to display the Safety Factor but it seems like this is not possible because the ultimate strength is temperature dependent and varies from element to element (due to different element temperatures).

Is there a way to display Safety Factors despite those described circumstances (temperature, time and location dependence of the ultimate strength)?

Moreover I guess, ANSYS stops calculating until the materials capacity reaches its limit in a single element although the whole structure would bear the load for another while, as the materials ultimate strength in colder regions inside the column still have a higher value of ultimate strength.

How can I tell ANSYS WB to kill elements as soon as they reach ultimate strength without stopping the calculation?

peteroznewman posted this 16 April 2018

In a linear statics model, with isotropic elasticity and no plasticity, the only use made of the ultimate strength entry in the material database is to plot the Safety Factor result.

Once you add a multilinear plasticity model, the ultimate strength is not so relevant.  Ductile materials have an Elongation (at break) material property value that can be compared with the Total Strain result to determine failure in a tensile portion of the model.

[Update!] ANSYS stops calculating when it reaches the end of the table in a Mulitlinear plasticity model, and it stops calculating when the element shape becomes too distorted to provide valid results. This is where a higher quality mesh can help the solver get further along.

There is an APDL command to kill an element when it reaches a failure limit, such as when the Total Strain > Elongation. It is called ekill and you can look it up in the online help. Ekill works in Static Structural and I have an example of an APDL script that will remove elements and keep going, but I have to go now so I will come back later and post that.

The Explicit Dynamics solver will automatically kill elements that reach a particular value of strain and keep going, but that is a very different environment to work in and less suited to obtaining precise results, it is well suited to giving guidance on how structures will evolve the failure over time, especially for high speed events.

  • Liked by
  • TimH
  • sujitbhandari
TimH posted this 17 April 2018

Hi Peter,

thanks again for your advice, you're a really great help. Determining the location of failure by comparing Total Strain results with the maximum strains defined in the Engineering Data is not so easy, because maximum strains (strains at which Multilinear Plasticity Model ends) are temperature dependent (see picture) and therefore time and location dependent. Hence, if I view the Total Strain result, outputted by ANSYS WB, I need to plot the temperature as well and derive maximum strains at certain temperatures. I tried to plot an excel sheet, in which I compare Total Strains and Body Temperatures at certain locations of a Path lying in mid height diameter of the column followed by manually calculating maximum strains at those certain locations via interpolation of the material data. By doing so, I can get a safety factor by dividing Total Strains by maximum Strains. This is a very time consuming-method, which I hoped can be done by WB automatically (and not only along ome single Path).

[Update!] ANSYS does stop calculating when it reaches a strength limit in a plasticity model. By strength limit I meant the last point defined in the Multilinear Plasticity Model at which deformations increase till infinity. As I said, I think that this causes convergence problems and makes ANSYS stop calculating although the system would bear the load much longer. That’s why I would like to kill those highly deformed Elements to avoid early convergence issues. By online help you mean this: I will try if I can figure out how that works. It would be awesome if you could post that APDL script of yours, which you mentioned, anyways.

peteroznewman posted this 18 April 2018

Hi Tim,

I have a different understanding about when failure occurs that contrasts with your statement.

"Determining the location of failure by comparing Total Strain results with the maximum strains defined in the Engineering Data is not so easy,"

For a ductile metal, if we define material failure as the Total Strain when fracture occurs in a tensile test, that has nothing to do with the last value of strain in a multilinear plasticity material model table. The material property that describes the Total Strain when fracture occurs is Elongation. The table of strains in a material model won't have any values of Total Strain larger than the value of Elongation, but the last value in the table might be much less than Elongation. That is okay, ANSYS will continue to solve the model well past the point when Total Strain exceeded the last point in the table. It just won't have any higher value of stress. ANSYS will not stop solving when the Total Strain exceeds the Elongation either. ANSYS will stop solving when the element becomes highly deformed.

That’s why I would like to kill those highly deformed Elements to avoid early convergence issues.

You don't kill elements because they are getting highly deformed, you kill elements because Total Strain is greater than Elongation.  If the solution stops due to highly deformed elements and you need it to go further, then you need to improve the mesh, potentially shaping elements that get squashed to a wide-thin aspect ratio at the end of the simulation to be narrow and tall at the start so they have more capacity to deform.

By online help, I mean when you click on the Help menu item and select Mechanical Help.

I created an Engineering Demo (ED) model of a coat hook with a remote displacement that pulls the tip down to demonstrate plasticity and solving past the last point in the material table. I used a Bilinear Kinematic Plasticity model and entered 0 as the Tangent Modulus, to demonstrate what is called an Elastic-Perfectly Plastic (EPP) material. The plastic part of this behavior is just like what happens after the strain exceeds the last point on a multilinear kinematic plasticity material. The video shows what is known as a "plastic hinge".


This model converged to the end. There are some metals with Elongation at break of 100%. The plastic strain at the end in this model is over 200%. This example illustrates the limitation of a nonlinear plasticity model; it is not going to show the tearing of the material when Total Strain exceeds Elongation. To illustrate tearing, the ekill script would be used to remove elements. That is not implemented in this model, but the model is useful as it allows a plot of Total Strain and Pull Force vs. Tip -Y Displacement (up to load step 3).

The hook starts yielding at 308 N. As the tip continues to be pulled down, the force to pull it decreases and the Total Strain increases. Most metal exhibit strain hardening, so the force would increase for some displacement, which is not the case for this EPP material model.

If the material property Elongation at Break is known, then the Tip Displacement where tearing begins could be read from this graph. For example, if Elongation was 0.5, then the Tip Displacement where tearing begins would be 13 mm. If Elongation was 1.0, then the Tip Displacement where tearing begins would be 28 mm. I plan to apply the ekill script to this model and in a later reply, show the result.

Note that this model applies a displacement. If the model had applied a force to the tip of the hook, the solution would have failed to converge after the first couple of increments. The non convergence occurs when the force changes from a positive to a negative slope as the solver would not be able to find an equilibrium after that load.

This EPP material doesn't exist, but if it did, and had an Elongation value < 2.0, then there is an equilibrium for the next load increment, but it is at a 50+ mm deformation and ANSYS can't find something so far away in a Static Structural model. In a physical test, the tip would suddenly drop 50+ mm, but then continue to support higher loads. ANSYS could model this drop in a Transient (or Explicit) Dynamics model.

Attached is an ANSYS 18.2 archive.

Attached Files

  • Liked by
  • TimH
  • Abdul Malik
peteroznewman posted this 19 April 2018

In Explicit Dynamics, element death is called Erosion and is automatically included in the model. The video below, while it looks similar to the shape above is a very different model. Explicit Dynamics cannot do Kinematic Hardening Plasticity, only Isotropic Hardening. I should make a version of the model above using Isotropic Hardening to look for the difference. The bigger difference is that this is Dynamics instead of Statics. There are significant inertia forces when the tip of the hook moves down in 300 ms and the elements are eroded when they reach a strain of 1.0 (100%).  The even bigger difference is this geometry is 1000 times larger than the model above. The tip is moving down 60 meters in 300 ms which is a velocity of 200 m/s or nearly 450 miles per hour! I made this model because it solves in about 1 minute. If I had kept the geometry the same size, with the same fine mesh and move 60 mm in 300 ms, then the solution would have taken 100 hours to compute and I would still be waiting to illustrate element death.

  • Liked by
  • TimH
  • khaledelmonajjed
TimH posted this 27 April 2018

Sorry, I am a bit confused. You said:

The material property that describes the Total Strain when fracture occurs is Elongation. The table of strains in a material model won't have any values of Total Strain larger than the value of Elongation, but the last value in the table might be much less than Elongation.

What is the difference between Strain and Elongation? Isn't both the same, namely the ratio of axial deformation in [mm/mm]?

ANSYS will continue to solve the model well past the point when Total Strain exceeded the last point in the table. It just won't have any higher value of stress. ANSYS will not stop solving when the Total Strain exceeds the Elongation either.

Does this mean ANSYS assumes the stress vs. strain curve to be horizontal beyond the last defined point in the curve? In a real compressive test of a concrete at 20°C for example, a measured stress vs. strain curve would look like shown in figure A. As I cannot implement the decrease in the end of the curve in ANSYS WB, the implemented curve of plastic region looks like shown in figure B. As I understood, what ANSYS assumes is shown in figure C. The Elements in my model then still can reach greater strains without further increase of stress.

For better understanding, I modeled a simple geometrically imperfect (see attached) concrete column at 20°C, loaded with a ramped compressional force of max. 1MN at Step End Time = 1sec (I loaded by force instead of displacement, because that’s what I need to do in my real model considering thermomechanical effects under a constant force while heating). The calculation stops at around 0.5sec i.e. 5000kN due to convergence issues, which are a result of global buckling of the column as you, Peter, told me before. To further investigate the reason of those convergence problems, I added a Safety Factor to the solution branch by setting the Stress Limit to a Custom Value of 32,3MPa, which is ultimate strength (last point in the defined multilinear material model). As figure D shows, at 0.5sec ultimate strength has been reached in only a very small area. This made me overthink my model again. Are you sure, ANSYS stops calculating when global buckling occurs? By observing Strains, it can be seen, that none of the Elements exceeded the ultimate strain (last defined point in Isotropic Multilinear Hardening). It somehow looks like the calculation stopped because of one single Element reaching ultimate strength/ultimate strain. That’s the reason why I thought, EKILL-command might help. The problem might be, that I applied a Force instead of a Displacement. By doing so, Elements cannot show strains higher than the last defined point in the Material Model.


To prove plausibility, I plotted stress vs. strain curves (see figure E) at one specific node within the red region shown in figure D (i.e. it is a node where high plastic deformations occur). One thing stands out when observing those curves: Equivalent Elastic Strain increases linearly till the end of the calculation. As an Element cannot deform elastically and plastically at the same time, shouldn’t Elastic Strain reach a maximum and go horizontal at the point at which plastic deformation occurs?!


Please excuse the length of my questions but it is hard for me to describe such a topic precisely in a foreign language.

Attached Files

  • Liked by
  • peteroznewman
peteroznewman posted this 27 April 2018

A very well explained set of questions Tim! I wish more members would explain things at this level of detail when necessary. And you are bilingual as well, what is your other language? I like how you are creating test cases in ANSYS to see what it does. I will post my answer in several parts to address each question.

What is the difference between Strain and Elongation? Isn't both the same, namely the ratio of axial deformation in [mm/mm]?

Strain is to Stress as Elongation is to Ultimate Tensile Strength. You understand when stress exceeds strength that fracture has occurred. The value of strain at that point of fracture is called elongation. When strain exceeds elongation, fracture has occurred. 

Stress and strain change with load and describe the state of the material in the part. Those values usually vary over the volume of the part.

Strength and elongation are material properties that are the same over the volume of the part (but might change with temperature).

  • Liked by
  • TimH
TimH posted this 01 May 2018

 Thanks a lot for your nice words, Peter. My other language is german. As we get personal now, may I ask you where you're from ;-)?

Ok, I got that so far: Elongation is the Strain at which fracture occurs (see epsilon_r in the figure A below) and can be past the Strain at which the material reaches Ultimate Strength. As I cannot define Elongation as a material property, where does ANSYS assume it to be? Does ANSYS assume the stress vs. strain curve to go horizontal after the last pair of stress-strain-values as I've shown in figure C of my previous question? This is just for better understanding but my actual problem is, that ANSYS seems to stop calculating when this last defined point of the isotropic multilinear stress vs. strain curve has been reached in a single Element (see previous question), although I am pretty sure the column would bear the load for another while. I tried to set another pair of stress and strain far beyond uniform elongation (strain at which ultimate strength has been reached), which did not help at all. Do you have any idea on how to solve that problem?


To help you understand my intension, I need to go a bit more into detail: I have some experimental data of a slender column, consisting out of a concrete filled steel tube. The column has been loaded by a constant compressional force, transmitted into both parts of the column via a rigid head plate. The given data of this experiment shows the time dependent vertical translation of the head plate during transient fire exposure of the column. The orange graph in figure B shows the results of this, which can be explained as follows: While being heated, the steel tube thermally expands faster than the concrete core, which leads to positive translation of the head plate and the loss of contact between head plate and concrete core in the beginning. As the thermal degradation of the steel increases, it comes to a point (18min) where the constant force makes the steel tube collapse until contact to the concrete core occurs again (25min). The vertical translation of the head plate then happens to be much slower as the concrete shows a slower degradation due to heat sink effects. After a while, the degradation of the concrete increased to a point at which the whole column collapses (100min).


This is what I want my model (see attached .wbpz-file) to simulate as well. It’s a sequentially thermal-mechanical coupled model of the column which shows an initial geometrical imperfection (imported via AutoCAD geometry). The result of the simulation (blue graph), compared with the experimental data (orange graph), can be seen in figure B. As you can see, the time vs. deflection curve of my simulation is not too bad but it somehow needs to go further to represent reality well. As the simulated curve doesn’t really go vertical just at the point at which the calculation stops, I assume that buckling has not yet been reached but one single element got highly deformed, which causes convergence problems. What also speaks for this assumption is following error ANSYS delivers:

“Element 315 located in Body “Tube” has become highly distorted.”

It would be awesome if you had an idea on how to overcome that issue.

Attached Files

peteroznewman posted this 03 May 2018

Hello Tim, 

I have been fortunate to travel to Europe and spent some time in Frankfurt, Stuttgart, and a few other smaller German cities on business trips. I grew up and went to University in Australia, and now live in the USA.

One of the jobs I do at work is FEA to show that a structural design is safe. As your figure A shows, some materials have a large elongation. In a linear elastic analysis, if you extrapolate the linear part of the curve up to the ultimate tensile strength, the strain will be very small compared to the strain at fracture or elongation. For a model under load, it will only take a small incremental load to follow the elastic linear line from the yield point to the ultimate tensile strength. If that small incremental load is less than the test load I have to pass, that is when I add plasticity to the material model in the most conservative way, which is to draw a horizontal line from the yield strength to the strain value of elongation. ANSYS will follow the nonlinear material curve as the load is applied. Once the full test load has been applied, if total strain < elongation, the test has passed but if total strain > elongation, we cannot be confident that the test will pass, it may fail. We can’t be sure it will fail because this is a conservative analysis and real materials don’t have a flat curve after the yield point, but support higher values of stress up to the point of ultimate tensile strength, exhibiting a behavior called strain hardening.

I have made the long awaited tutorial, contrasting linear elastic models, perfectly plastic models and the ekill script that takes out elements that have failed and finally the Explicit Dynamics model. Please review the tutorial and “Like” it if you find it useful.

It is common for element distortion errors to begin to show up at the point when the perfectly plastic region of the material behavior starts. The reason for this is that this is the point when the material flows at a constant stress rather than carrying higher loads and stretching just a little more. You can imagine that if the material is flowing, the the element shapes are going to quickly become highly distorted.

If the total strain has not yet reached the value of elongation at break, the best thing you can do is create initial element shapes that anticipate the deformation that is to come and are pre-shaped to tolerate the deformation without becoming highly distorted. 

The goal is to have a simulation where results are computed past the value of total strain that equals elongation. Then you can plot to load at which failure is predicted to occur.



TimH posted this 08 May 2018

Hi Peter,

ah okay, now the "oz" in your username makes sense to me. I've been travelling Australia for a couple of months some years ago. Can't believe you left this beautiful country!

Thanks a lot for uploading the tutorial concerning EKILL-command. Unfortunately I cannot open the attached .wpbz-file as I use ANSYS WB 18.2. But still, I am not sure if killing the elements is the right answer to my problem but I will try later. Not having solved the previous problem, the next one (more urgent) appeared on which I would love to have your expertise:

Until now, I discretized the thin steel tube by using one layer of SOLID186-Elements. During my research I found out that this might get problematic as this might cause effects like Shear Locking, Volumetric Locking or Hourglassing. On the other hand I read some papers of different researchers who also discretized a similar system (concrete filled steel tube) with SOLID-Elements for the tube (sometimes even SOLID185, with only 8 nodes and reduced integration --> prevents Volumetric Locking but favors Hourglassing?!). Is there a way to explain away those negative effects in that specific system? For explanation: The elements of tube and concrete core have Frictional, Frictionless or No Separation contact and therefore can slide on each other. As I am about to decrease the steel tube thickness to at least 2mm, I would like to use SHELL- or SOLSH-Elements. These are the four different models I tried, each delivering different problems:

1)   SOLID186-model with only one element in tube thickness

      “Problem”: Delivers plausible results although there is only one element in tube thickness and moreover the aspect ratio of this element is bad.

2)   SOLID186-model with two elements in tube thickness

      “Problem”: Delivers plausible results although the aspect ratios of the tube elements are very bad (twice as bad as in the model with one element in tube thickness).

3)   SHELL281-model with one element in tube thickness

      Problem: Shows heavy convergence problems and stops calculating in an early stage, so that the result doesn’t represent reality at all and/or shows a different solution than the other models (see figure A).

4)      SOLSH90-model with one element in tube thickness

      Problems: There are no 8-Node-SOLISH elements. As I discretized the core elements with 20-Node-SOLID186-elements I have to connect those different element types which causes an unsightly overlap between those elements (see figure B). Meshing delivers errors (although the mesh looks OK): “The source and target face areas are dissimilar and therefore unsuitable for thin model sweeping […]” and “Some mesh controls on target faces have been ignored by the thin sweeper […]”.

Would you please be so kind, if you find some time, having a quick look at my models I attached below? I couldn’t find someone to help me so far and I am getting a bit depressed. The most important thing for me would be to know the reason for convergence problems and wrong(?) solutions in the SHELL281-model. I tried different things, such as trying different Offset Types and Normal Stiffnesses... nothing helped so far.

A)                                                                                                                 B)



Attached Files

peteroznewman posted this 08 May 2018

Hi Tim,

Since SOLSHEL190 has no midside node, you could mesh the tube at twice the density of the core to have better alignment of the meshes. Contact elements  connect the core to the tube and this would just make each side have a closer node density.

If you are interested in finding the buckling load of a column, it is much simpler to apply a displacement than a force load. That is because a displacement load can solve past the maximum reaction force and continue to solve on the negative slope of the load deflection curve. A force load cannot do that because there is no equilibrium for the next load increment past the point when the load deflection curve goes flat.

On the shell model, I made 4 steps of -2 mm each for a total of -8 mm. The reaction force passes a peak, which indicates the buckling load. There are no problems solving to this point.

I attached the 18.2 archive with the mesh control edits to the SOLSHELL system G and the Displacement control for the Shell model system E.


Attached Files

  • Liked by
  • TimH
TimH posted this 09 May 2018

Thanks for having a look at my model! Refining the tube mesh indeed helps in the SOLSH-model. Nevertheless in my opinion, applying a dispacement instead of a force is not a possibility although this makes the SHELL-model to solve till the end. The problem is following:

1) What I am diong is a transient (time dependent) analysis. By implementing a ramped displacement, the reaction force increases as time goes on. So does temperature increase by time. Therefore two "loads", reaction force and temperature (leading to degradation of material stiffness and strength) interact at different stages of time. That leads to the fact that ramping the displacement to a total of a different value than -8mm would deliver different buckling loads.

2) The result I would like to get is the fire resistance rating [min], as this is the main criteria to evaluate a systems fire resistance (at least in european standards). In a displacement loaded system, the result is a force not a time.

3) A displacement load does not represent reality well. In a real fire event, there are columns loaded by a constant force (e.g. weight of a ceiling). Now the fire leads to a time dependent loss of stiffness and strength of the material, which after a while leads to collapse.

Do you have an idea on how to solve those convergence and wrong-result-problems in the shell model while using a constant force as load? Somehow I would rather use SHELL-elements than SOLSH-elements as I don't really understand the theory behind SOLISH-elements.

peteroznewman posted this 09 May 2018

I get it now, you have tied the time from the transient thermal to the analysis time in the static structural, second-for-second.

There is another way to help models get to (or past) a buckling load, and that is to use Stabilization.  I have not had to use that before, but the idea is the solver will uses some damping on the nodes while it is solving.  Search ANSYS Help for nonlinear controls and you will see the paragraph on Stabilization.

Here is a video that talks about it at 17:50 mark.


  • Liked by
  • TimH
peteroznewman posted this 09 May 2018

Tim, you need to plot some Newton-Raphson Residual Force plots to reveal where the solver is failing to establish equilibrium. It shows you exactly where you need to refine the mesh to get the solver to advance past that point.   I requested 6 NR Residual Force plots under analysis settings. When the solver failed to converge at 4612 seconds, here is what it showed me:

The mitigation is obvious. Reduce the element size in the top plate.  I had to go through two refinements, now the equilibrium has moved down to mostly the tube and some on the core when the solver fails at 4593 seconds.

The next step I took was to cut the element size in half on the core and tube.

Look at the NR Force Residuals with the finer mesh, they are all around the top of the tube/core.

But look at the deformation, the core is pulling away from the plate and deforming the tube, but there are not enough elements to adequately resolve the contact at the top.

The mitigation is to refine the mesh at the top of the tube and core. I will do that by adding a bias to the edge sizing, making the element size 10 times smaller at the top than the middle.

In the plot below, the result of biasing the mesh to the top are shown.  The solver is still failing at the top.

Here is the deformation plot:

Note that with each mesh refinement, the solver is failing at an earlier and earlier point in the time history. That is because with a coarse mesh, the solver was bridging these problems.  I think the next step is to question the contact definitions, why is rough the right selection between the tube and plate?  Why is no separation the right selection between the tube and core?  My next attempt is to change contact with the head plate frictional contact with the tube and core and use bonded contact between the tube and core.

peteroznewman posted this 10 May 2018


I hope you are getting a sense of how to use the NR Force Residual plot to show where to improve the mesh. I changed plate contact to Frictional, leaving bonded contact between tube and core. I went through another iteration where it made sense that the mesh density on the core was more useful on the boundary. To to that, I had to split the core into two pieces and form a multibody part. Then I could use inflation to crowd more elements nearer the outside edge of the core. I also reduced the element size to be 5 mm on the plate and the edge of the tube and the circumference of the core. 


Beware of the evil default setting that ANSYS provides, which is that Auto Detect Contact on Attach is checked. I hate this setting and recommend it be turned off. In this case, since I went out to split the core in two, I ended up with bonded contact everywhere when I wanted frictional and wasted 12.77 hours of computation before discovering my mistake of not checking everything after editing geometry. I changed the contact with the plate back to frictional and hit solve again.

This resulted in a bigger model that took longer to solve. This model ran for 227 iterations in 20.5 hours on 8 cores using 64 GB of RAM. If you have less RAM and fewer cores, it could take significantly longer.  Below is the directional deformation plot.

You see it did not solve to the final time. The error was  "Element 30295 has become highly distorted." Here is that element, which is on the core circumference, pressing on the plate.

Looking at the elements along the top of the core at this last converged time, you can see that an hourglass mode has set in on these elements, ruining their shape for valid results and stopping the solver.

Attached is the ANSYS 18.2 archive with this Shell model. 

There are methods to prevent hourglass modes from developing, such as reduced integration, shown below. However, to get this menu to show up, you first have click on Geometry and set Element Control to Manual.


That archive is also attached and is running now, check back in 21 hours : )   
Smaller elements will also help, but then you will be looking at longer solve times.
Once bonded contact between the tube and core solves, a no separation version can be attempted.

Kind regards,


Attached Files

  • Liked by
  • TimH
peteroznewman posted this 13 May 2018

This model ran for 311 iterations in 27.8 hours on 8 cores using 64 GB of RAM. If you have less RAM and fewer cores, it could take significantly longer. 

The model got closer to the end time of 5400 seconds. It stopped with a distorted element error after converging at 5217 seconds.  I reviewed the element order and found that the mesher had used linear elements on the Tube but quadratic elements on the core. I thought it might be better if they were both linear, so I made that change along with trying the No Separation contact. That model is running now.

  • Liked by
  • TimH
TimH posted this 13 May 2018

Wow, I cannot believe, what effort you invensted into this. Please tell your boss: No matter what you earn, it's not enough for what you're doing ;-).

I will check your recommendations, which might need some time. I might also have to try decrease the computationally costs as I later on need to recalculate the model several times with different materials and geometries. Moreover I guess my computer probalbly insn't as good as yours, which would lead to unpracticable waiting times.

Maybe by the end of the week, I will reply on this to tell you, wheter my model works perfectly or if new problems occured.

Thanks a lot, Peter!

TimH posted this 21 May 2018

Hi Peter,

your recommendations of refining the mesh in the head plate together with turning on Stabilization helped a lot. The time vs. deflection curve now goes vertical at the time ANSYS cannot converge any more and even my model using Shell Elements delivers plausible solutions.

There is one last (at least I hope it's the last one) problem which I couldn’t solve until now:

The previous simulations of my column model revealed that the concrete core shows tensile stresses at some regions, resulting from thermal strains and bending. Until now I modeled mechanical concrete behavior by implementing several curves of isotropic multilinear hardening at different temperatures. As ANSYS does not respect different material behavior in compression and tension, the results of my simulations are non-conservative. How do I implement a material model which takes into account that concrete doesn’t bear any tensile stresses? I read about the possibility of using SOLID65 elements which are made to represent concrete behavior. But then, how do I implement values for different stress vs. strain curves at different temperatures? Do I need to insert APDL-commands? Is there an easier way to tell ANSYS not to let concrete parts take tensile stresses?

TimH posted this 28 May 2018

In the meantime I tried to implement tensile material behaviour by adding "Orthotropic Stress Limits", "Damage Initiation Criteria" and "Damage Evolution Law" from the Toolbox of Engineering Data to the Material Properties of the Concrete Model. I am well aware that this approach is made to model fiber reinforced materials but I hoped this would work for non reinforced concrete as well. As shown in the figure, I set Tensile Stress Limits to zero and Compressive and Shear Stress Limits to very high value. As a damage Initiation Criteria I defined Meximum Stresses and Tensile fiber Sress Reduction to a value of one whereas I set Compressive Stress Reduction ti zero. By doing so, I was hoping to get results where ANSYS WB reduces Tensile Stresses by 100% whenever Tenisle Stresses would normally occur (Tensile Stress > Tensile Stress Limit = 0 MPa). I tried that on a simply supported beam, loaded by a force normal to the beam axis. Unfortunately this approach didn't lead to expected results. Delivered results by using the Damage Model happened to be exactly the same as in the previous model without that approach. What am I doing wrong? Is there a more elegant way to omit tensile stresses in concrete structures?

peteroznewman posted this 28 May 2018

Hi Tim,

Sorry for the delay in responding to your question last week. 

ANSYS has a material model, Cast Iron, that can have totally different strengths in compression and tension. It is however a plasticity model, and does not model cracking or failure. A zip file of a presentation is attached.

Cast Iron can have up to 10 temperature sets for the stress-strain curves in tension and compression. 

There are some discussions on this site about using the SOLID65 to simulate the onset of cracking in a Concrete material model. I will look for those and paste them into another reply. 

Attached Files

  • Liked by
  • TimH
TimH posted this 28 May 2018

Hi Peter,

no problem! Thank's for your response anyway.

I tried to use the Cast Iron Model already for the last few days. I get plausible results for simulations under a constant temperature. Unfortunately two problems occurred:

1) With that model I cannot define a temperature dependent Young's Modulus, which in my case is absolutely necessary. Young’s Modulus is defined at the very beginning of the APDL command, above the temperature dependent definition of stress-strain-relationships. Defining other Young’s Moduli in a separate Table for different temperatures (as shown in figure) doesn’t work.

2) ANSYS WB stops calculating even in the displacement-loaded system at a constant temperature of 20°C. It seems like it stops, when the last defined stress-strain dataset has been reached.

 Do you have any idea on how to solve these issues?

Is there another way to tell ANSYS not to produce tensile stresses in a concrete material(e.g. Drucker-Prager; Damage Plasticity)? Is there really no default Material Model which I could use? Maybe in ANSYS WB 19? Maybe killing those Elements exceeding a specified tensional stress via EKILL-command would help?! What do you think about that idea?


peteroznewman posted this 30 May 2018

Hi Tim,

I see why Cast Iron is not useful.  I don't know why it stops calculating after the last entry in the table, your question 2, but I might look into that.

Some students have been using Drucker-Prager or Mohr-Coulomb material models for Geomechanics problems. Those materials have very different strengths in tension and compression.

Here is a post on SOLID65 and concrete material model.  Here is another one.

  • Liked by
  • TimH
TimH posted this 30 May 2018

Thank's for sending sharing those links!

Don't you think there is a way to use the CAST-Command? I mean, why should there be a possibility to define multilinear stress-strain-relationships at different temperatures when there is no possibility to define Young's Moduli at different temperatures? Isn't it possible to define another table for those temperature dependent Young's Moduli just as I did in the above figure? I am pretty sure ther must be a way to do so. Maybe it's just a mistake in the Command formulation?! To find out, what the problem might be, I modeled a simply supported beam in 4 different ways (see .wbpz-file attached):

A) No Command --> tensional stiffness = compressional stiffness

B) CAST IRON Command --> tensional stiffness being 10 times smaller than compressional stiffness

C) Command to respect temperature dependence of the stiffness

D) CAST Iron Command + Command to respect temperature dependence of the stiffness

Models A), B) and C) work without any problems. Only Model D) delivers an "unknown Error".

Could you please have a look at the attached model? It would be awesome if you could find the reason for the "unknown Error".

Attached Files

TimH posted this 01 June 2018

Meanwhile I tried to use the Drucker-Prager Model in a simplified Model of a simply supported concrete beam with a steel plate bonded to the tensional side of the beam. As concrete I used a self defined material taking multilinear isotropic hardening into account. I set two Analyses up:

(A) Model without Drucker-Prager

(B) Model with Drucker-Prager: settings as shown in the figure below

The comparison between normal stressen in the concrete in Model (A) and (B) show, that the line of zero stress moves towards the compressional side of the beam as Uniaxial Tensile Strength is set to 1Pa (nearly zero) as done in Model (B). This is exactly what I expected and represents reality well. Unfortunately, reviewing the deflection of the beam shows that in Model (B) Multilinear Kinematic Hardening is not being considered as the Time-Deflection-Curve goes linear whereas it goes nonlinear in Model (A). ANSYS Help says: Classic Drucker-Prager Model:

"The yield surface does not change with progressive yielding, hence there is no hardening rule and the material is elastic- perfectly plastic"

That's why I need to use the CAST-Command. Do you have any idea on how to set up the command properly to respect temperature dependent Young's Moduli AND temperature dependent Stress-Strain-Curves in tension and compression?


peteroznewman posted this 01 June 2018

Hi Tim,

I haven't gotten to the questions above, but I have a totally different approach for you to try that seems like a good fit and should respect the temperature data.


You should investigate a creep model for your material.

Many creep equations include a temperature dependency (T) as well as time (t), stress and strain.

If you have experimental data at different temperatures for a tensile test specimen, ANSYS provides curve fitting programs to fit the coefficients of specific creep laws to the experimental data.

I recently learned how to use Norton creep equation in this example and provide an archive with a very simple model.

You can modify that model to add Temperature dependency by using a nonzero C3 coefficient or using a different creep model.

Hope this helps.



  • Liked by
  • TimH
TimH posted this 01 June 2018

Hi Peter,

unfortunately I have no idea, how CREEP ist going to help. Creep might be temperature dependent but is always time dependent. In my case there is no time dependency at all. I just don't want the concrete to take tensile stresses. I mean, what should I input for Alternating Stress Mean Stress and Creep Constants?

After trying Drucker-Prager, I went back to CREEP:

The ANSYS Manual says:

The plastic Poisson's ratio and stress-strain points can be defined as a function of temperature (NTEMP value on the TB command), with individual temperatures specified for the table entries (TBTEMP).

This makes me think that respecting temperature dependency must be possible in the CAST-Command.

The Manual also delivers an example (see figure A) which unfortunately doesn’t include temperature dependency. The example works perfectly on my simplified model as well. Trying to add another Table by duplicating the example’s Table and changing the temperature of this second Table from 10 to 100°C (see figure B) resulted in an “unknown Error” during solution. Therefore I thought I might have to tell ANSYS beforehand that I have two Tables at the Temperatures of 10 and 100°C respectively. I did so by inserting an MPTEMP-Command and adding Young’s Modulus and Poisson Ratios for the second discrete temperature of 100°C (see figure C). Unfortunately this approach failed as well by delivering an “unknown Error”.

As I am new to ANSYS APDL, I am pretty sure that it’s just a bad Command formulation which leads to those errors. It would be awesome if you could have a look and maybe find the mistake.

Thanks a lot!



TimH posted this 01 June 2018

 Edit: I just had another idea... As shown in the Powerpoint Presentation about the CAST-Command which you kindly sent me, it is possible to create a temperature dependent CAST-Command within the MAPDL Graphical User Interface. Now I would like to do so, read out the created APDL Script and copy and paste it into my Workbench Project. The Command I read out in MAPDL is shown in the figure below.

Inserting this Command into my Workbench Project via copy and paste also delivered an unknown Error. This drives me crazy! Any Idea why this is?

peteroznewman posted this 03 June 2018

Hi Tim,

Unfortunately, I don't write APDL code. I only know how to use code given to me in Command Objects in Workbench. There are members on this site who are good at APDL who might comment on your problem. It might be worth reposting this question as a new discussion and put APDL in the title to get some visibility to those experts.

Good luck,





TimH posted this 09 June 2018

Ok, Peter. Thanks a lot for your enduring help anyway.

peteroznewman posted this 23 June 2018


Tim, I learned something today about mulitilinear plasticity. The solver will not go past the last entry in the table, it stops solving as you had observed in this thread. I wrongly said it keeps going. It does not. I have updated the posts in this thread with that corrected information.