Coupled / uncoupled thermal transient analysis with NLGEOM

Hello,
i tried a coupled or uncoupled temperatur-displacement analysis.
It works without NLGEOM perfectly, with NLGEOM the solution is not converging.

Any ideas?
test input:

**
** Heading +++++++++++++++++++++++++++++++++++++++++++++++++
**
*Heading
Hash: dgJUDAxE, Date: 01/18/2024, Unit system: MM_TON_S_C
**
** Nodes +++++++++++++++++++++++++++++++++++++++++++++++++++
**
*Node
1, 0.00000000E+000, 0.00000000E+000, 0.00000000E+000
2, 0.00000000E+000, 0.00000000E+000, 2.00000000E+001
3, 0.00000000E+000, 1.00000000E+001, 0.00000000E+000
4, 0.00000000E+000, 1.00000000E+001, 2.00000000E+001
5, 1.00000000E+001, 0.00000000E+000, 0.00000000E+000
6, 1.00000000E+001, 0.00000000E+000, 2.00000000E+001
7, 1.00000000E+001, 1.00000000E+001, 0.00000000E+000
8, 1.00000000E+001, 1.00000000E+001, 2.00000000E+001
9, 0.00000000E+000, 0.00000000E+000, 1.00000000E+001
10, 0.00000000E+000, 1.00000000E+001, 1.00000000E+001
11, 1.00000000E+001, 0.00000000E+000, 1.00000000E+001
12, 1.00000000E+001, 1.00000000E+001, 1.00000000E+001
**
** Elements ++++++++++++++++++++++++++++++++++++++++++++++++
**
*Element, Type=C3D8, Elset=Solid_part-1
1, 10, 9, 1, 3, 12, 11, 5, 7
2, 4, 2, 9, 10, 8, 6, 11, 12
**
** Node sets +++++++++++++++++++++++++++++++++++++++++++++++
**
*Nset, Nset=Internal_Selection-1_Fixed-1
1, 3, 5, 7
*Nset, Nset=Internal-1_Internal_Selection-1_Convective_Film-1
1, 3, 5, 7
*Nset, Nset=Node_Set-2
2, 4, 6, 8, 9, 10, 11, 12
*Nset, Nset=Node_Set-1
1, 3, 5, 7, 9, 10, 11, 12
**
** Element sets ++++++++++++++++++++++++++++++++++++++++++++
**
*Elset, Elset=Internal_Selection-1_Gravity-1
Solid_part-1
*Elset, Elset=Element_Set-1
1
*Elset, Elset=Element_Set-2
2
*Elset, Elset=Internal-1_Internal_Selection-1_Convective_Film-1_S5
1
*Elset, Elset=Internal_Selection-1_Solid_Section-1
Solid_part-1
**
** Surfaces ++++++++++++++++++++++++++++++++++++++++++++++++
**
*Surface, Name=Internal_Selection-1_Convective_Film-1, Type=Element
Internal-1_Internal_Selection-1_Convective_Film-1_S5, S5
**
** Physical constants ++++++++++++++++++++++++++++++++++++++
**
**
** Materials +++++++++++++++++++++++++++++++++++++++++++++++
**
*Material, Name=S235
*Density
7.8E-09
*Elastic
210000, 0.28
*Expansion, Zero=20
1.1E-05
*Conductivity
14
*Specific heat
440000000
**
** Sections ++++++++++++++++++++++++++++++++++++++++++++++++
**
*Solid section, Elset=Internal_Selection-1_Solid_Section-1, Material=S235
**
** Pre-tension sections ++++++++++++++++++++++++++++++++++++
**
**
** Constraints +++++++++++++++++++++++++++++++++++++++++++++
**
**
** Surface interactions ++++++++++++++++++++++++++++++++++++
**
**
** Contact pairs +++++++++++++++++++++++++++++++++++++++++++
**
**
** Amplitudes ++++++++++++++++++++++++++++++++++++++++++++++
**
**
** Initial conditions ++++++++++++++++++++++++++++++++++++++
**
** Name: Temperature-1
*Initial conditions, Type=Temperature
Node_Set-1, 1370
** Name: Temperature-2
*Initial conditions, Type=Temperature
Node_Set-2, 1370
**
** Steps +++++++++++++++++++++++++++++++++++++++++++++++++++
**
**
** Step-1 ++++++++++++++++++++++++++++++++++++++++++++++++++
**
*Step, Nlgeom
*Static
**
** Output frequency ++++++++++++++++++++++++++++++++++++++++
**
*Output, Frequency=1
**
** Boundary conditions +++++++++++++++++++++++++++++++++++++
**
*Boundary, op=New
** Name: Fixed-1
*Boundary
Internal_Selection-1_Fixed-1, 1, 6, 0
**
** Loads +++++++++++++++++++++++++++++++++++++++++++++++++++
**
*Cload, op=New
*Dload, op=New
**
** Defined fields ++++++++++++++++++++++++++++++++++++++++++
**
*Temperature, op=New
** Name: Temperature-1
*Temperature
Node_Set-2, 1370
** Name: Temperature-2
*Temperature
Node_Set-2, 1370
**
** History outputs +++++++++++++++++++++++++++++++++++++++++
**
**
** Field outputs +++++++++++++++++++++++++++++++++++++++++++
**
*Node file
RF, U
*El file
S, E, ENER
**
** End step ++++++++++++++++++++++++++++++++++++++++++++++++
**
*End step
**
** Step-2 ++++++++++++++++++++++++++++++++++++++++++++++++++
**
*Step, Inc=100
*Uncoupled temperature-displacement
20, 20, 1E-05, 1E+30
**
** Output frequency ++++++++++++++++++++++++++++++++++++++++
**
*Output, Frequency=1
**
** Boundary conditions +++++++++++++++++++++++++++++++++++++
**
*Boundary, op=New
** Name: Fixed-1
*Boundary
Internal_Selection-1_Fixed-1, 1, 6, 0
**
** Loads +++++++++++++++++++++++++++++++++++++++++++++++++++
**
*Cload, op=New
*Dload, op=New
*Cflux, op=New
*Film, op=New
** Name: Convective_Film-1
*Film
Internal-1_Internal_Selection-1_Convective_Film-1_S5, F5, 20, 1
**
** Defined fields ++++++++++++++++++++++++++++++++++++++++++
**
**
** History outputs +++++++++++++++++++++++++++++++++++++++++
**
**
** Field outputs +++++++++++++++++++++++++++++++++++++++++++
**
*Node file
RF, U, NT, RFL
*El file
S, E, ENER
**
** End step ++++++++++++++++++++++++++++++++++++++++++++++++
**
*End step
**
** Step-3 ++++++++++++++++++++++++++++++++++++++++++++++++++
**
*Step, Inc=1000
*Uncoupled temperature-displacement
1E-05, 0.0001, 1E-05, 1E+30
**
** Output frequency ++++++++++++++++++++++++++++++++++++++++
**
*Output, Frequency=1
**
** Boundary conditions +++++++++++++++++++++++++++++++++++++
**
*Boundary, op=New
** Name: Fixed-1
*Boundary
Internal_Selection-1_Fixed-1, 1, 6, 0
** Name: Temperature-1
*Boundary
Node_Set-2, 11, 11, 1370
**
** Loads +++++++++++++++++++++++++++++++++++++++++++++++++++
**
*Cload, op=New
*Dload, op=New
*Cflux, op=New
*Film, op=New
** Name: Convective_Film-1
*Film
Internal-1_Internal_Selection-1_Convective_Film-1_S5, F5, 20, 1
**
** Defined fields ++++++++++++++++++++++++++++++++++++++++++
**
**
** History outputs +++++++++++++++++++++++++++++++++++++++++
**
**
** Field outputs +++++++++++++++++++++++++++++++++++++++++++
**
*Node file
RF, U, NT, RFL
*El file
S, E, ENER
**
** End step ++++++++++++++++++++++++++++++++++++++++++++++++
**
*End step
**
** Step-4 ++++++++++++++++++++++++++++++++++++++++++++++++++
**
*Step, Inc=1000
*Uncoupled temperature-displacement
1, 100, 1E-05, 1E+30
**
** Output frequency ++++++++++++++++++++++++++++++++++++++++
**
*Output, Frequency=1
**
** Boundary conditions +++++++++++++++++++++++++++++++++++++
**
*Boundary, op=New
** Name: Fixed-1
*Boundary
Internal_Selection-1_Fixed-1, 1, 6, 0
**
** Loads +++++++++++++++++++++++++++++++++++++++++++++++++++
**
*Cload, op=New
*Dload, op=New
*Cflux, op=New
*Film, op=New
** Name: Convective_Film-1
*Film
Internal-1_Internal_Selection-1_Convective_Film-1_S5, F5, 20, 1
**
** Defined fields ++++++++++++++++++++++++++++++++++++++++++
**
**
** History outputs +++++++++++++++++++++++++++++++++++++++++
**
**
** Field outputs +++++++++++++++++++++++++++++++++++++++++++
**
*Node file
RF, U, NT, RFL
*El file
S, E, ENER
**
** End step ++++++++++++++++++++++++++++++++++++++++++++++++
**
*End step
**

Br,
Frank

What’s the goal of this analysis ? Your model with a zero thermal strain temperature of 20 degrees starts with an initial temperature of 1370 degrees. Then the following thermal events occur:

  • step 1 (mechanical): the same temperature is held for element 2 (why is it repeated - shouldn’t one *Temperature refer to element 1 ?)
  • step 2 (thermo-mechanical): film condition with sink temperature of 20 degrees is applied to element 1, nothing applied to element 2
  • step 3 (thermo-mechanical): temperature boundary condition with 1370 degrees is applied to element 2, the film condition is still applied to element 1
  • step 4 (thermo-mechanical, the one that doesn’t converge): only the film condition is still applied, the temperature BC from the previous step is removed

Is that right ? Maybe a single step with amplitudes would be better as it would give you more control over time variation of thermal loads.

1 Like

Hello Calc_em,

the geometry should represent the heated material and then cool down, so initial condition is 1370°C.
Step 1, 2 and 3 are only dummy steps. Of interest is step 4 a long duration temp-disp step. The point is, that calculix does not converge in step 4 with NLGEOM set. This has the consequence that no plastic material model is possible, because calculix sets NLGEOM with the *plastic keyword.

Br,
Frank

So this should be sufficient ? It converges.

**
** Heading +++++++++++++++++++++++++++++++++++++++++++++++++
**
*Heading
Hash: dgJUDAxE, Date: 01/18/2024, Unit system: MM_TON_S_C
**
** Nodes +++++++++++++++++++++++++++++++++++++++++++++++++++
**
*Node
1, 0.00000000E+000, 0.00000000E+000, 0.00000000E+000
2, 0.00000000E+000, 0.00000000E+000, 2.00000000E+001
3, 0.00000000E+000, 1.00000000E+001, 0.00000000E+000
4, 0.00000000E+000, 1.00000000E+001, 2.00000000E+001
5, 1.00000000E+001, 0.00000000E+000, 0.00000000E+000
6, 1.00000000E+001, 0.00000000E+000, 2.00000000E+001
7, 1.00000000E+001, 1.00000000E+001, 0.00000000E+000
8, 1.00000000E+001, 1.00000000E+001, 2.00000000E+001
9, 0.00000000E+000, 0.00000000E+000, 1.00000000E+001
10, 0.00000000E+000, 1.00000000E+001, 1.00000000E+001
11, 1.00000000E+001, 0.00000000E+000, 1.00000000E+001
12, 1.00000000E+001, 1.00000000E+001, 1.00000000E+001
**
** Elements ++++++++++++++++++++++++++++++++++++++++++++++++
**
*Element, Type=C3D8, Elset=Solid_part-1
1, 10, 9, 1, 3, 12, 11, 5, 7
2, 4, 2, 9, 10, 8, 6, 11, 12
**
** Node sets +++++++++++++++++++++++++++++++++++++++++++++++
**
*Nset, Nset=Internal_Selection-1_Fixed-1
1, 3, 5, 7
*Nset, Nset=Internal-1_Internal_Selection-1_Convective_Film-1
1, 3, 5, 7
*Nset, Nset=Node_Set-2
2, 4, 6, 8, 9, 10, 11, 12
*Nset, Nset=Node_Set-1
1, 3, 5, 7, 9, 10, 11, 12
**
** Element sets ++++++++++++++++++++++++++++++++++++++++++++
**
*Elset, Elset=Internal_Selection-1_Gravity-1
Solid_part-1
*Elset, Elset=Element_Set-1
1
*Elset, Elset=Element_Set-2
2
*Elset, Elset=Internal-1_Internal_Selection-1_Convective_Film-1_S5
1
*Elset, Elset=Internal_Selection-1_Solid_Section-1
Solid_part-1
**
** Surfaces ++++++++++++++++++++++++++++++++++++++++++++++++
**
*Surface, Name=Internal_Selection-1_Convective_Film-1, Type=Element
Internal-1_Internal_Selection-1_Convective_Film-1_S5, S5
**
** Physical constants ++++++++++++++++++++++++++++++++++++++
**
**
** Materials +++++++++++++++++++++++++++++++++++++++++++++++
**
*Material, Name=S235
*Density
7.8E-09
*Elastic
210000, 0.28
*Expansion, Zero=20
1.1E-05
*Conductivity
14
*Specific heat
440000000
**
** Sections ++++++++++++++++++++++++++++++++++++++++++++++++
**
*Solid section, Elset=Internal_Selection-1_Solid_Section-1, Material=S235
**
** Pre-tension sections ++++++++++++++++++++++++++++++++++++
**
**
** Constraints +++++++++++++++++++++++++++++++++++++++++++++
**
**
** Surface interactions ++++++++++++++++++++++++++++++++++++
**
**
** Contact pairs +++++++++++++++++++++++++++++++++++++++++++
**
**
** Amplitudes ++++++++++++++++++++++++++++++++++++++++++++++
**
**
** Initial conditions ++++++++++++++++++++++++++++++++++++++
**
** Name: Temperature-1
*Initial conditions, Type=Temperature
Node_Set-1, 1370
** Name: Temperature-2
*Initial conditions, Type=Temperature
Node_Set-2, 1370
**
** Steps +++++++++++++++++++++++++++++++++++++++++++++++++++
** Step-4 ++++++++++++++++++++++++++++++++++++++++++++++++++
**
*Step, Inc=1000, Nlgeom
*Uncoupled temperature-displacement
1, 100, 1E-05, 1E+30
**
** Output frequency ++++++++++++++++++++++++++++++++++++++++
**
*Output, Frequency=1
**
** Boundary conditions +++++++++++++++++++++++++++++++++++++
**
*Boundary, op=New
** Name: Fixed-1
*Boundary
Internal_Selection-1_Fixed-1, 1, 6, 0
**
** Loads +++++++++++++++++++++++++++++++++++++++++++++++++++
**
*Cload, op=New
*Dload, op=New
*Cflux, op=New
*Film, op=New
** Name: Convective_Film-1
*Film
Internal-1_Internal_Selection-1_Convective_Film-1_S5, F5, 20, 1
**
** Defined fields ++++++++++++++++++++++++++++++++++++++++++
**
**
** History outputs +++++++++++++++++++++++++++++++++++++++++
**
**
** Field outputs +++++++++++++++++++++++++++++++++++++++++++
**
*Node file
RF, U, NT, RFL
*El file
S, E, ENER
**
** End step ++++++++++++++++++++++++++++++++++++++++++++++++
**
*End step
**

This is a bit more complex. Without Nlgeom, CalculiX uses plasticity with additive decomposition. With Nlgeom, it uses multiplicative decomposition.

OMG,
when i remove step 2 of my input it works. But i cant understand why.
???

I found out, that the temperatur boundary in step 3 following a temp-disp step 2 without temperatur boundary
lead to the convergence problems!

You should try using a pure heat transfer procedure since thermal and mechanical analyses can have convergence issues due to different reasons. It can be caused by a sudden jump in temperature, for instance. The analysis should make sense physically, otherwise it might be difficult to make it converge without some special tweaks.

Hello Calc_em,
thanks for the answer. I am working on a welding simulation, that should calculate stress, strain and deformation. So temp-disp analyse is mandatory. The cause for the convergence problems is obvioulsy (as you mentioned) a high temperture gradient between neighboring nodes. But in a welding simulation this is inherent. You mentioned that there are tweaks to improve the convergence. What tweaks can you recommend?

Have you seen this ?

What I meant is that you could temporarily switch to *HEAT TRANSFER to resolve convergence issues and then go back to thermomechanical step if the thermal part converges.

You should ensure a proper initial time increment, it’s important in thermal simulations. Contrary to appearances, it shouldn’t be too low. The mesh is also important. And you should make sure that all the inputs (geometry, material properties and thermal loads) are physically correct - those simulations are particularly sensitive to that.

Many thanks for the link and your hints!

Hello Calc_em,

is come back to the topic. As i try a welding simulation, i have very high tempertur change rates.
I discovered, that calculix with plastic material has problems to converge in a transient calkculation
with high change rates. I tried instead of *uncoupled temperature-displacement a sequence of
*heat transfer - * static. This works better. I wonder what is the difference betweeen *uncoupled temperature-displacement and *heat transfer - * static ?

The former solves the thermal and mechanical parts sequentially (one by one) in each increment while the latter solves the whole thermal part (until it converges) first and then solves the whole mechanical part. So it might be easier to ensure the convergence of the solution when incrementation is independent.