Page 1 of 2

Thermal stress in 2D

Posted: 07 Jul 2015, 14:25
by aether
Hi,

I'm trying to simulate thermal stress/strain in a simple 2D system: A top block (called "rib") affixed to a bottom block (called "substrate"). The reference (stress-free) temperature of the rib is 400K and of the substrate 300K. The system is at T=300K.

I use statements like "Reference Temperature = 300" in the material sections to set the ref temps. I use an initial condition T=300 applied to both bodies to enforce the operating temperature. There are no heat sources or other boundary conditions. I include a statement "Exported Variable 1 = Temperature" in the solver section per Peter's instruction in one of the threads.

I run Elmer and get:

Program received signal SIGSEGV: Segmentation fault - invalid memory reference.
Backtrace for this error:

Full solver log attached along with SIF file and a screenshot of the geometry. Running Elmer on Windows and the geometry/mesh were made in Salome.

Can someone offer some wisdom to get me unstuck?

Thanks,

John

Re: Thermal stress in 2D

Posted: 07 Jul 2015, 15:32
by mzenker
Hi,

I don't know the Linear Elasticity Solver all that well, but the Models Manual says:
For each boundary either a Dirichlet boundary condition or a force boundary condition must be given.
But there isn't any in your sif file, so that might well be the cause of the crash.

Remark: IMO the solver should spit a more specific message before aborting... ;)

HTH,

Matthias

Re: Thermal stress in 2D

Posted: 07 Jul 2015, 18:31
by aether
Hi Matthias,

Thanks for the comments. I indeed did not specify boundary condition because the Models Manual states (right after the sentence you quoted)
The default boundary condition is the natural boundary condition which implies that ~g = 0.
So, I made this explicit by adding to my sif:

Code: Select all

Boundary Condition 1
  Target Boundaries(9) = 1 2 3 4 5 6 7 8 9 
  Name = "BoundaryCondition 2: Zero force"
  Force 1 = 0
  Force 3 = 0
  Force 2 = 0
End
But this gave the same result, i.e.,
Program received signal SIGSEGV: Segmentation fault - invalid memory reference.
I'm interested in any comments on--
1. Ideas why it's choking.
2. Is the Linear Elastic model the right one for this thermal stress problem? Or is something else (Finite Elasticity?) better/easier?
3. Anyone know of an example thermal stress problem posted?
4. Is the approach of setting reference temperatures and using an initial condition to set the simulation temperature correct?

TIA for any help.

John

Re: Thermal stress in 2D

Posted: 08 Jul 2015, 08:07
by annier
Hi John,
I made a test geometry/mesh in Salome 7.4.0 and ran your initial solver input file with Elmer NonGui( OS: Ubuntu 14.04). It ran perfectly ( without any error) with the following results:
1. displacement
displacement
displacement
displacement.jpg (86.32 KiB) Viewed 10584 times
2. von mises stress results.
von_mises
von_mises
von_mises.jpg (54.06 KiB) Viewed 10584 times

Inferences:
1. Your solver input file is numerically consistent and there are no issues with it.
2. You need to see how you prepared Geometry/Mesh and imported in ElmerGUI.

yours sincerely
Anil Kunwar

Re: Thermal stress in 2D

Posted: 08 Jul 2015, 11:29
by raback
Hi

If you just have thermal stresses without any BCs your problem has a nonzero null-space as it has two rigid body translations and one rotation that may be added to the solution. Thus linear solvers may have hard time in finding the solution for the system. You should set some BCs that constrain the rigid body motion.

-Peter

Re: Thermal stress in 2D

Posted: 08 Jul 2015, 13:59
by annier
Hi,
After Peter's suggestion, i tried to put some physical reasoning into the thermal stress boundary conditions (BCs syntax given below) by constraining the motions at
1) constraint to the motion of the substrate [(a),(e) in figure]

Code: Select all

Boundary Condition 1
  Target Boundaries(1) = 3
  Name = "Substrate Bottom"
  Displacement 1 = 0.0
  Displacement 2 = 0.0
End
2) constraints to the perpendicular motion (displacement 2 = 0) of the substrate and ribs at extreme ends [(b),(f) in figure]

Code: Select all

Boundary Condition 1
  Target Boundaries(1) = 3
  Name = "Substrate Bottom"
  !Displacement 1 = 0.0
  Displacement 2 = 0.0
End

Boundary Condition 2
  Target Boundaries(1) = 6
  Name = "Ribs Top"
 ! Displacement 1 = 0.0
  Displacement 2 = 0.0
End
3) constraints to x,y at the extreme ends(displacement 1 = 0, displacement 2 =0) of both ribs and substrate [(c),(g) in figure]

Code: Select all

Boundary Condition 1
  Target Boundaries(1) = 3
  Name = "Substrate Bottom"
  Displacement 1 = 0.0
  Displacement 2 = 0.0
End

Boundary Condition 2
  Target Boundaries(1) = 6
  Name = "Ribs Top"
  Displacement 1 = 0.0
  Displacement 2 = 0.0
End
4) constraints to motion of top of ribs [(d),(h) in figure]

Code: Select all

Boundary Condition 1
  Target Boundaries(1) = 6
  Name = "Ribs Top"
  Displacement 1 = 0.0
  Displacement 2 = 0.0
End
Figure (Please find the compressed file for image in high resolution)
displacement_and_vonmises_stress_results
displacement_and_vonmises_stress_results
the_displacement_and_vonmises.png (139.76 KiB) Viewed 10565 times




Yours Sincerely
Anil Kunwar

Re: Thermal stress in 2D

Posted: 08 Jul 2015, 14:31
by raback
Hi Anil

Nice comparison!

In principle it is ok to study the displacement of freely floating object as well. The minimum number of dofs we need to fix are three: two for the translations and one for the rotation.

For example one could use "Target Coordinates" to fix (x,y) displacements at center. We still need a third point fixed to eliminate the rotation oround z-axis. One could set another point at the center axis with different y and there only fix the x-component. So this would look something like

Set center of origin to zero (for the next free BC)

Code: Select all

Boundary Condition 5
  Target Coordinates(1,2) = 0.0 0.0
  Displacement 1 = 0.0
  Displacement 2 = 0.0 
End
Another point at the y-axis

Code: Select all

Boundary Condition 6 
  Target Coordinates(1,2) = 0.0 1.0 
  Displacement 1 = 0.0
End 
Note that the points should be within the object.

En even simpler way to fix the problem would be to define a really small spring coefficient that would not affect the results but would draw the object to the center.

Commercial software usually have some automatic ways constrain the null-space but in Elmer the user should no in more detail what to do.

-Peter

Re: Thermal stress in 2D

Posted: 08 Jul 2015, 14:56
by aether
Great stuff! Thanks, Anil. Thanks, Peter.

Per Anil, I went back to Salome (7.5.1) and was able to make a geometry/mesh that worked fine with that same SIF in Elmer. So the workflow is fixed. THANKS.

Have begun to reproduce the nice panel Anil made. Peter, re: need to fix at least 3 DOFs, understood. I guess in 3D that will be 6 DOFs? 3 translation, 3 rotation? Please confirm.

John

Re: Thermal stress in 2D

Posted: 08 Jul 2015, 15:21
by raback
Yep, 3D needs 6. Of course not any six (or any 3 in 2D) will do...

If you have symmetry it is a good idea to use that since it halves the computational effort and naturally fixes some rigid body motions.

-Peter

Re: Thermal stress in 2D

Posted: 09 Jul 2015, 14:45
by aether
Hi,

To sum up and for the benefit of some future novice, I've attached mesh, sif, and results for a square with three edges fixed under 100C (figure a) or 200C (figure b) of thermal stress. The behavior is physical. This should help get someone get started with thermal stresses.

Thanks again.

John