CFD Online Discussion Forums

CFD Online Discussion Forums (
-   OpenFOAM Running, Solving & CFD (
-   -   SolidDisplacementFoam (

philippose April 19, 2007 06:06

Hello, I am trying to run a

I am trying to run a stress analysis case using openFOAM 1.4, and the solidDisplacementFoam solver.

Firstly... is the solver capable of being used for relatively complicated 3D cases, with multiple constraints? Or is it only a demo solver, primarily for 2D applications?

I was looking at the different boundary conditions in the tutorials, but was not able to find all the boundary conditions I need.

1. How can I constrain motion of a patch to only one degree of freedom? For example... fixed in the x and y directions, but movable in the z direction?

2. In the tractionDisplacement condition, what do the "traction", "pressure" and "value" terms imply? And what units do they take?

3. What does the "slip" boundary condition do? Can that be used to selectively constrain different directions?

Awaiting a reply.

Have a nice day!


karen July 30, 2008 09:53

Hello, I have the same ques

I have the same question: Do the SolidDisplacementFoam and the
SolidEquilibriumDisplacementFoam-Solvers work only for 2D cases or also for 3D cases?

The reason why I'm asking is the following: I took the beamEndLoad-tutorial (for the
SolidEquilibriumDisplacementFoam-Solver) and changed only the mesh description to a 3D-mesh-
description. This means:
1.I changed the patch-type for the defaultFaces-patch from "empty" to "patch" in the
boundary file of mesh description.
2.In the initial-field-file of D I changed the "empty"-type of the defaultFaces-patch to
"tractionDisplacement" (with the same conditions as for the bottomSurface and the
3.In the initial field of p I changed the type "empty" to "calculated" with the value "uniform 0".

The result of this modification is, that the solution diverged. Also, if I switch the planeStress-condition in the mechanicalProperties-file. Has anyone an idea why?

For the solidDisplacementFoam-Solver I modificated a working 2D case in the analogous way I described above for getting a 3D case. Here the solution also diverged.

I have no idea, what else I have to change in a 2D-case, to get a working 3D-case for the
SolidEquilibriumDisplacementFoam-Solver or the SolidDisplacementFoam-Solver.

For all of that I used OpenFOAM1.4.1.

Thanks in advance!

mathieu July 30, 2008 11:23

Hi ! Those solvers are supp
Hi !

Those solvers are supposed to work in 3D. Did you change your mesh ? Because a 2D mesh is a 3D mesh with only one cell in the third direction, which is not appropriate for a 3D simulation. Regards,


karen July 31, 2008 06:18

Hello, okay, thank you, tha

okay, thank you, that could be one point in my modification of beamEndLoad-tutorial, which lead to divergence.
But for the SolidDisplacementFoam-Solver I generated a mesh with some more cells in all directions about the tetgenToFoam-utility. There the solution also diverged.
Are you sure, that the solver should work in 3D? Because there is one more thing that perplex me: When I switch the planeStress-condition in the mechanicalProperties-file, I get a "Plane Strain"- remark instead a "Plane Stress"-remark in the output-file. So plane stress and plane strain both seems to be 2D-conditions for me.
By contrast I can't see a restriction on 2D for the equations in the source-code of the solver. So I ask me, why should there be a plane strain or plane stress output, if there is not a restriction on 2D? Have someone any ideas?

Thanks in advance

mathieu July 31, 2008 08:49

Hi Karen, This solver reall
Hi Karen,

This solver really work in 3D. Take a look at this link :

The equation 5 will help you to understand the "plane strain" remark (in fact, plane strain and 3D use the same Lamé Coefficients...). Here are some other points you may consider :

- those solvers take only small deformations into account;

- if you do a transient simulation, then your nCorrector parameter (in fvSolution) should be set to a high value to ensure convergence within each time step;

- there is a detailed tutorial in the user guide (in case you didn't notice).

Good luck !


7islands July 31, 2008 09:28

Hi Karen, I tried what you
Hi Karen,

I tried what you tried on 1.4.1 and 1.5, and the former diverged but the latter somehow converged. Don't know why though.

By the way if you try the leastSquares scheme on 1.4.1 like in the plateHole case, you may want to have a look at another thread (leastSquares is virtually not working on the stock 1.4.1). 29

As written in the thread, I tried several quasi-3D cases (junctions of I-beams) and it agreed reasonably with indeterminate system analyses.


karen August 1, 2008 08:19

Hello, thanks for your refe

thanks for your references! I tried solidDisplacementFoam-solver with a 3D mesh of an other tutorial and some modifications in the controlDict-file and the initial conditions. This test now seems to work. I don't know what's wrong with the other 3D mesh, I generated with tetgen and converted with tetgenToFoam. I hope I will figure it out soon.


karen August 10, 2008 13:43

Hello everybody, I take the
Hello everybody,

I take the beamEndLoad tutorial of the solidEquilibriumDisplacementFoam-solver, modificate it to a 3D case with the block-mesh-utility (mesh as 3D, also planeStress-option is set to no) and get now a working 3D case in OpenFOAM1.5.
If I take the bar of this case, but discretise it with tetraeders about tetgen or fluent (in contrast to discretising it in blocks with blockMesh), my solution always diverge.
I tried with some finer mesh, with different solvers in the fvSolution-file and some other things. The solution never converge.
Has anyone an idea what I can do, that the solution converge? Perhaps some hints? Has someone the same problem?
Or has someone a working 3D-testcase for the solidEquilibriumDisplacement-Solver (or solidDisplacementFoam-Solver) with a mesh, discretised with tetraeders, which he can send me?
(karen dot kuhn at web dot de)

Thanks in advance

rituraj1729 October 8, 2009 17:56

BC in SolidDisplacementFoam
Hello Philippose,

I am facing the same problem as you. Did you resolve the problem ? I would greatly appreciate your or anybody else's help in this regards. Thanks,


rituraj1729 October 8, 2009 19:13

I guess this should work:

For example, if you want to make the normal components on left wall to be zero and the tangential components are between zeroGradient/slip depending on valueFraction (1 for slip)

type partialSlip;
valueFraction 0.5;

MrJeff May 13, 2014 06:26

How to parameter the boundary condition on this exemple?
Hi OpenFOAM users!

I use OpenFOAM for a single week. My first goal is to compare this software with a FEA software like Abaqus or MSc Software for instance.

In order to do this comparison, I want to run an exemple of a stress analysis a beam where I apply a load and I fixed the left part.

The exemple from the tutorials of OpenFOAM named beamEndLoad shows the same particularities. That is why I run it.

Unfortunately, I have some problems ...

1) Firstly, as the author said... is the solver capable of being used for relatively complicated 3D cases, with multiple constraints? Or is it only a demo solver, primarily for 2D applications?

2) The FoamFile named D
in the 0 directory deals with the displacement in meters of the beam. Into this file, there is tractionDisplacement condition. What do the "traction", "pressure" and "value" terms imply? And what units do they take? Does these units depend on the dimension of D?

3) The FoamFile named p (located near the file D) means the strength in Newton I think. Am I wrong? What other boundary conditions exist for this FoamFIle (as the tractionDisplacement condition in p)?

4) Finally, when I run the exemple on paraFoam, what does the terms sigmaEq and sigma means? Why the term p disappear then we want calculate it? What the difference between p, sigmaEq and sigma?

I know that I got numerous questions but I need only few answers maybe to help me to understand this exemple.



MrJeff May 27, 2014 05:27

Reply on my question 2)
In order to reply to my question 2), the boundary type tractionDisplacement is set by:

-traction: it denotes the load applied to the model in Pascal by default.

-pressure: it denotes the pressure applied to the model in Pascal.

-value: It denotes the the displacement initial conditions are set to (x; y; z). The unity is the meter by default.

The explanations there were not so clear in my mind.

All times are GMT -4. The time now is 06:30.