Pipe bending simulation


The remote force is not important. It was simply used to demonstrate the use of the equation load profile. It can be done with a regular force also. I have updated my project with another example.

The remote displacement is required at the support so that no stiffness as added (equivalent to pin joint).

However, using a load profile like this, in a linear static simulation, has no real value because you cannot learn anything more from 60 load steps than you can from one. The resulting stress is always linearly proportional to the load. So I am sharing this simulation to help convey the concept, you will need to adapt this to your own (presumably non-linear) application to get the results you need.


Dear @BenLewis

many thanks for your kind help

I was able to use the plastic material with the function, but when I apply the same principle for the main model I am getting this error:

The solution matrix is singular. This may be caused by an unconstrained rigid body motion, a physical contact definition with open gap in a nonlinear static analysis or incoherent material parameters





Hi Richard (@tenshinshoden),

I’ve updated my project with an example of how I would approach this problem.


In this example (pipe_03 NL) the pipe is deformed by 1 mm.

This is just a starting point, you will need to add non-linear material properties and the sinusoidal load profile equation. There is probably some scope to speed up the runtime, by, for example, using a larger time step.

Some points to note:

  • The slave surface area should be as small as possible. This will minimise the runtime and help with convergence.
  • Set contact nonlinearity resolution to fixed point. This is slower than Newton but more robust.
  • Set convergence criteria type to absolute.

I don’t have time to go into all the details now but if you have any specific questions please feel free to ask.


Dear @BenLewis,

once I add the non linear material and the sin load, the software dies…


Hi @tenshinshoden,
please always add also the project link and try to be a little more specific about the actual error that happened, on which simulation and run.

You should try to give the people who spend their free time trying to help at least the minimal amount of supporting information that would allow them to actually help you.



Hi Richard (@tenshinshoden),

I’ve added material plasticity to my example project. The deformation is still only 1 mm.


Here is an animation of the results.

The next step is to add the sinusoidal load profile. But as it stands now, this simulation will take a very long time to solve with all the time steps you require (up to 600 seconds). I suggest you try to optimise the settings first before attempting the full-length simulation. Here are some things you can try to speed things up:

  • Increase the load increment size. The larger the load step the fewer the number of steps required to achieve the target load but the greater the chance of failure. Auto time stepping can help in this case.
  • Use a coarser mesh on the slave surfaces.
  • Change the contact nonlinearity resolution back to the default type Newton.


Hi Richard (@rszoeke),

Can you please take a look at this project?


Simulation: Pipe_03 NL A36
Run: Run 1

The solver log contains a lot of entries like:

 ** INFO(2)=1150406261
 PANEL: INIT and force STRAT_IO=  

What is the meaning of this error? Not enough memory?


Hi @BenLewis ,
yes this exactly the case. The MUMPS solver is struggling to find enough memory, trying to free unused memory to avoid an OOM error. It should not have an effect on the results, just the job might get really slow.



Hi Richard (@tenshinshoden),

do you need a force profile or can it be a displacement profile? I ask because the displacement option will be easier.


dear Ben (@BenLewis)

I can see that with my tries too.

unfortunately I need the ‘cyclic sin’ or the saw tooth load



Hi Richard (@tenshinshoden),

both options (load and displacement) can be cyclic. Will a cyclic (sine wave) displacement work for you?


Dear Ben,

unfortunately it has to be a load, as the engineers in the lab already made dozens of these tests with the pipes
with the same method (specifying loads and the displacement measured until the pipe breaks).





So you are investigating a fatigue phenomenon? What are you hoping to learn from this simulation?


Dear Ben,

yes, that is the principle.

the engineers have some holes in the pipe too and some generated by corrosion.
that would be the next top to put in.
they making the data showing how it influences the load-displacement curve.




Hi Richard (@tenshinshoden),

It is not clear to me why you need to simulate the full loading history. These simulations do not take into account the fatigue properties of the material so the loading history makes no difference to the final result.

Can you provide some more details on how you plan to use the full load history?


Hi Richard (@tenshinshoden),

I have updated my example project with a force driven load profile (as opposed to a displacement driven load profile).


Here is an animation of the first 5 seconds.

The key to getting this simulation to work was to create a very small indentation in the pipe in the two locations where the round blocks make contact. This eliminates the point contact making it easier to solve.


This is a very interesting topic, I hope we get to see that tube taken to a more significant buckling stage :slight_smile:


Dear Ben (@BenLewis)

much appreciated your help, own you a bottle of scotch for your time :tumbler_glass: :+1:

Unfortunately these tests been done for a while and I was asked to simulate them.
I was not involved in the load profile set up and the ‘whys’.

I do understand these bending tests do not represent the fatigue properties of the pipes, I guess they wanted to have some more fancy method (and more data) rather than just simple bending until it fails ( or the standard low cycle fatigue load method)

Your Pipe 05 model - Run 4-100 sec looks promising to the final solution, but I think it will not lead to the real deformation because the contact surfaces are much bigger than just those small ‘dots’.

It looks to me -after your hard tries-, that Simscale does not like this 90 deg pipe-pipe contact,
it works nicely for non linear material and displacement boundary condition, could this be a bug?

(also noticed, that the sin function I used has to be +4000 for the initial offset as it starts form 4kN not 4N) :slight_smile:


Hi Richard (@tenshinshoden),

The small indentations are needed to stabilize the initial solution, of course, the contact area will spread as the load increases. The simulation is already set up a allow for this.

You’re right about the load profile equation. I missed the units on the plot in your post. Taking the ‘kN’ into account the load profile should be:

-1000 * SIN(2 * 3.14 / 100 * t) - 10 * t - 4000

The 90-degree pipe contact arrangement is a type of Hertzian Contact. This type of problem is more difficult to solve because of the point contact between the two parts. This is not a bug, it is just the nature of the physics involved.

I have updated my project with another example.


This time I took the deformation to 10 mm. For reference, the pipe outside diameter is about 28 mm.

The force-displacement curve looks like this.

This has been done with a linearly increasing displacement load. I expect the same thing is possible with the sinusoidal load profile provided above. You just need to decide whether the extra computation time is worth it, given it will make no difference to the final result.


hi Ben (@BenLewis),

nice, thanks for your effort!
It looks good.

when I copied your project and tried to put the sin load I got this error:

even with Initial time step lengths (s) - 0.0001