CFD Online Logo CFD Online URL
www.cfd-online.com
[Sponsors]
Home > Forums > Software User Forums > OpenFOAM > OpenFOAM Running, Solving & CFD

solids4Foam: Zero Displacment in one diection, and motions in two other directions

Register Blogs Community New Posts Updated Threads Search

Like Tree2Likes
  • 1 Post By bigphil
  • 1 Post By ttsasan

Reply
 
LinkBack Thread Tools Search this Thread Display Modes
Old   February 1, 2021, 07:03
Default solids4Foam: Zero Displacment in one diection, and motions in two other directions
  #1
New Member
 
Sasan Tavakoli
Join Date: Sep 2018
Posts: 12
Rep Power: 8
ttsasan is on a distinguished road
I am dealing with a solid mechanic problem that I need to physically prevent the solid displacement in one direction at one boundary. I want to do it in x-direction, and let two other directions be free. I've tried to do so, and had a look at fvPatchFields. I reckon that the fixedNormalDisplacement can be helpful in this field. But, I don't have any idea about how to use it. I tried to go through tutorials, but I was not fortunate to find any example for it. Would anyone please kindly let me know how to implement this boundary.
ttsasan is offline   Reply With Quote

Old   February 1, 2021, 07:46
Default
  #2
Super Moderator
 
bigphil's Avatar
 
Philip Cardiff
Join Date: Mar 2009
Location: Dublin, Ireland
Posts: 1,093
Rep Power: 34
bigphil will become famous soon enoughbigphil will become famous soon enough
Hi Sasan,

The fixedDisplacementZeroShear boundary condition will set the patch-normal component of displacement and allow the two tangential directions to be free (aka zero shear/force/traction).

This will set the displacement in the patch normal direction and set the two tangential directions to “free” i.e. zero force.

Concretely, if your patch has unit normals (1 0 0) then the displacement vector will be (fixed free free). The value of the "fixed" displacement is taken from the "value" in the boundary condition; in this case, the fixed x component will be the x component of the "value" vector.

Philip
ttsasan likes this.
bigphil is offline   Reply With Quote

Old   February 1, 2021, 08:00
Default
  #3
New Member
 
Sasan Tavakoli
Join Date: Sep 2018
Posts: 12
Rep Power: 8
ttsasan is on a distinguished road
Quote:
Originally Posted by bigphil View Post
Hi Sasan,

The fixedDisplacementZeroShear boundary condition will set the patch-normal component of displacement and allow the two tangential directions to be free (aka zero shear/force/traction).

This will set the displacement in the patch normal direction and set the two tangential directions to “free” i.e. zero force.

Concretely, if your patch has unit normals (1 0 0) then the displacement vector will be (fixed free free). The value of the "fixed" displacement is taken from the "value" in the boundary condition; in this case, the fixed x component will be the x component of the "value" vector.

Philip
Hi Philip. Thank you very much. That's so helpful. So, I need to define the BC as
patch name
{
type fixedDisplacementZeroShear;
value uniform (0 0 0);
}

But, what if the patch's normal vector is not the direction in which i want the fixed displacement. Assume that the patch normal vector is (cos(theta), sin(theta), 0). What about this case. Can I again prescribe zero displacement in x-direction?
ttsasan is offline   Reply With Quote

Old   February 1, 2021, 08:15
Default
  #4
Super Moderator
 
bigphil's Avatar
 
Philip Cardiff
Join Date: Mar 2009
Location: Dublin, Ireland
Posts: 1,093
Rep Power: 34
bigphil will become famous soon enoughbigphil will become famous soon enough
Quote:
Originally Posted by ttsasan View Post
Hi Philip. Thank you very much. That's so helpful. So, I need to define the BC as
patch name
{
type fixedDisplacementZeroShear;
value uniform (0 0 0);
}
Yes, that's correct.

Quote:
Originally Posted by ttsasan View Post
But, what if the patch's normal vector is not the direction in which i want fixed displacement. Assume, that the patch normal vector is (cos(theta), sin(theta), 0). What about this case. Can I again prescribe zero displacement in x-direction?
In that case you need another boundary condition: solidDirectionMixed.

The fixedDisplacementZeroShear behaviour is a specific sub-set of solidDirectionMixed behaviour (fixedDisplacementZeroShear derives from solidDirectionMixed).

solidDirectionMixed is just the built-in OpenFOAM directionMixed condition, and solidDirectionMixed/directionMixed is the mother of all boundary conditions: depending on the inputs you can use it for fixed value, fixed gradient or anything in between.
Unfortunately with this great flexibility comes somewhat confusing inputs. In my experience many people struggle with understanding how to correctly use it.

I suggest searching the forum for solidDirectionMixed and directionMixed to get more details, but in short, solidDirectionMixed is specified using three fields:
Code:
    refGradient    uniform ( 0 0 0 );
    refValue       uniform ( 0 0 0 );
    valueFraction  uniform ( 0 0 0 0 0 0 );
    // Actually, value must also be given as the initial condition
The value fraction is a symmTensor and allows you to specify the fixed direction(s). To fix one component, set it to symm(n*n) where n is the normal direction you want to fix i.e. for n = (1 0 0), it is (1 0 0 0 0 0).
refValue gives the value (displacement) you want to use for these fixed faces (or components of faces), and refGradient gives the gradient to use on the non-fixed faces or components of faces. If you do want to use this for solid mechanics then you need to iteratively set the refGradient to satisfy the zero-force/traction condition (this probably means writing a derived boundary condition).

See, I told you it wasn't straight-forward

If you like, you can add a request/issue on the solids4foam bitbucket page to request this new boundary condition.

Philip
bigphil is offline   Reply With Quote

Old   February 1, 2021, 08:53
Default
  #5
New Member
 
Sasan Tavakoli
Join Date: Sep 2018
Posts: 12
Rep Power: 8
ttsasan is on a distinguished road
Quote:
Originally Posted by bigphil View Post
Yes, that's correct.


Code:
    refGradient    uniform ( 0 0 0 );
    refValue       uniform ( 0 0 0 );
    valueFraction  uniform ( 0 0 0 0 0 0 );
    // Actually, value must also be given as the initial condition
Philip
Philip. Thank you very much. I got the point now. The mixed-direction bc gives a combination of Neumann and Dirichlet conditions in different directions. It helps us to prescribe any constant value for any of them, which is really helpful in solid mechanics. If I'm right the first three components of valueFraction are related to the refValue and the next three ones are related to gradient. Since I want the refValue, relative displacmenet, to be zero in the direction (1 0 0), I set the valueFraction to be (1 0 0 0 0 0 ). I can also set the gradient to be zero in any direction I want.

That's very good.



Thank you very much.
ttsasan is offline   Reply With Quote

Old   February 1, 2021, 11:11
Default
  #6
Super Moderator
 
bigphil's Avatar
 
Philip Cardiff
Join Date: Mar 2009
Location: Dublin, Ireland
Posts: 1,093
Rep Power: 34
bigphil will become famous soon enoughbigphil will become famous soon enough
Quote:
Originally Posted by ttsasan View Post
If I'm right the first three components of valueFraction are related to the refValue and the next three ones are related to gradient.
Nope, this is not the case (see I told you people often find it confusing!).
See my comments about regarding the value fraction and also search the forum for other posts on solidDirectionMixed/directionMixed.
bigphil is offline   Reply With Quote

Old   February 2, 2021, 20:56
Default
  #7
New Member
 
Sasan Tavakoli
Join Date: Sep 2018
Posts: 12
Rep Power: 8
ttsasan is on a distinguished road
Quote:
Originally Posted by bigphil View Post
Yes, that's correct.



In that case you need another boundary condition: solidDirectionMixed.

The fixedDisplacementZeroShear behaviour is a specific sub-set of solidDirectionMixed behaviour (fixedDisplacementZeroShear derives from solidDirectionMixed).

solidDirectionMixed is just the built-in OpenFOAM directionMixed condition, and solidDirectionMixed/directionMixed is the mother of all boundary conditions: depending on the inputs you can use it for fixed value, fixed gradient or anything in between.
Unfortunately with this great flexibility comes somewhat confusing inputs. In my experience many people struggle with understanding how to correctly use it.


Philip
Philip, I tried the solidDirectionMixed. It provides the zero motion in the prescribed direction but the point gets really high gradient in that direction as well. But, I solved the problem. I created a baffle and defined an internal patch just next to the boundary. What I did was to force the patch to have the fixedDisplacementZeroShear, which works very well for my case.
bigphil likes this.
ttsasan is offline   Reply With Quote

Old   March 25, 2022, 10:29
Exclamation Uni-axial compression BC setup
  #8
New Member
 
Craig Thomas
Join Date: Dec 2019
Location: Leeds, UK
Posts: 12
Rep Power: 6
mn14cat is on a distinguished road
Hi Philip,

Similarly to Sasan I am dealing with a solid mechanic problem that I want to physically prevent the solid displacement in the x and z direction at one boundary. To give more context, I'm trying to replicate a confined compression test of a cylindrical sample of cartilage.

I'm only modelling a quarter of the sample due to symmetry which is made of o block topology formed of three blocks.

I want to displace the top surface over a certain amount of time (timeVaryingFixedDisplacement) and I want the side wall of my model to deform as a function of the top surface without any 'lateral' displacement on the outer arc side walls.

Currently I had set up something to do this using groovyBC but this is causing stability issues due to high gradients.

Is it possible to use fixedDisplacementzeroshear to stop the displacement in the x and z directions for my side walls. If so how would I Implement this for the Arcs surface? Im also using Foam-Extend 4 is there any way to implement that6 boundary condition there as I know this BC is only in solids 4foam

Thanks in advance

Craig
Attached Images
File Type: jpg Mesh.jpg (44.3 KB, 12 views)
mn14cat is offline   Reply With Quote

Old   March 28, 2022, 07:17
Default
  #9
Super Moderator
 
bigphil's Avatar
 
Philip Cardiff
Join Date: Mar 2009
Location: Dublin, Ireland
Posts: 1,093
Rep Power: 34
bigphil will become famous soon enoughbigphil will become famous soon enough
Quote:
Originally Posted by mn14cat View Post
Hi Philip,

Similarly to Sasan I am dealing with a solid mechanic problem that I want to physically prevent the solid displacement in the x and z direction at one boundary. To give more context, I'm trying to replicate a confined compression test of a cylindrical sample of cartilage.

I'm only modelling a quarter of the sample due to symmetry which is made of o block topology formed of three blocks.

I want to displace the top surface over a certain amount of time (timeVaryingFixedDisplacement) and I want the side wall of my model to deform as a function of the top surface without any 'lateral' displacement on the outer arc side walls.

Currently I had set up something to do this using groovyBC but this is causing stability issues due to high gradients.

Is it possible to use fixedDisplacementzeroshear to stop the displacement in the x and z directions for my side walls. If so how would I Implement this for the Arcs surface? Im also using Foam-Extend 4 is there any way to implement that6 boundary condition there as I know this BC is only in solids 4foam

Thanks in advance

Craig
Hi Craig,

It looks like your case axisymmetric (2-D); if so, you could use wedge (or solidWedge) conditions and then use the fixedDisplacementZeroShear condition for the side.

If you do need to simulate the quarter cylinder then fixedDisplacementeroShear should also work as it "fixes" the normal direction on the patch, i.e. the radial displacement would be zero in this case (assuming that's what you want).
bigphil is offline   Reply With Quote

Old   January 13, 2024, 13:31
Default
  #10
New Member
 
Manchester
Join Date: Aug 2022
Posts: 27
Rep Power: 4
Tianyz is on a distinguished road
Quote:
Originally Posted by bigphil View Post
Hi Sasan,

The fixedDisplacementZeroShear boundary condition will set the patch-normal component of displacement and allow the two tangential directions to be free (aka zero shear/force/traction).

This will set the displacement in the patch normal direction and set the two tangential directions to “free” i.e. zero force.

Concretely, if your patch has unit normals (1 0 0) then the displacement vector will be (fixed free free). The value of the "fixed" displacement is taken from the "value" in the boundary condition; in this case, the fixed x component will be the x component of the "value" vector.

Philip
Hi Philip,

I plan to set up a FSI case, for the solid domian, which is a top tensioned beam, that is , both ends are fixed, and there is an extra tension load be applied along the beam. I ried solid traction, but this boundary condition can not fix the beam end. I tried fixedDisplacementZeroShear as well, but it doesn't work. Could you please give some ideas how to set it?

Best Regards,
Tian
Tianyz is offline   Reply With Quote

Old   January 15, 2024, 05:56
Default
  #11
Super Moderator
 
bigphil's Avatar
 
Philip Cardiff
Join Date: Mar 2009
Location: Dublin, Ireland
Posts: 1,093
Rep Power: 34
bigphil will become famous soon enoughbigphil will become famous soon enough
Hi Tian,

If both ends are fixed, then you could apply traction to the sides of the beam, or you could apply a body force (like gravity).

Philip
bigphil is offline   Reply With Quote

Old   January 15, 2024, 11:30
Default
  #12
New Member
 
Manchester
Join Date: Aug 2022
Posts: 27
Rep Power: 4
Tianyz is on a distinguished road
Quote:
Originally Posted by bigphil View Post
Hi Tian,

If both ends are fixed, then you could apply traction to the sides of the beam, or you could apply a body force (like gravity).

Philip
Hi Philip,

Many thanks for your reply. My current set up for the solid part is shown below,

FoamFile
{
version 2.0;
format ascii;
class volVectorField;
location "0";
object D;
}

dimensions [0 1 0 0 0 0 0];

internalField uniform (0 0 0);

boundaryField
{
interface
{
type solidForce;
forceField solidForce;
value uniform (0 0 0);
}
top
{
type fixedDisplacement;
value uniform (0 0 0);
}
bottom
{
type fixedDisplacement;
value uniform (0 0 0);
}
frontAndBack
{
type empty;
}
}

When you said applt traction to the sides of the beam, how to do it? Since I want to apply this traction and keep both ends being fixed at the same time.

Best,
Tian
Tianyz is offline   Reply With Quote

Old   January 15, 2024, 12:42
Default
  #13
Super Moderator
 
bigphil's Avatar
 
Philip Cardiff
Join Date: Mar 2009
Location: Dublin, Ireland
Posts: 1,093
Rep Power: 34
bigphil will become famous soon enoughbigphil will become famous soon enough
I am not sure what you are trying to simulate. Is it a simple beam? Is there FSI or not? What is the physical problem you are approximating? On a boundary, you can enforce a known displacement or known force, but not both. Maybe a body force (like gravity) will achieve what you want?
bigphil is offline   Reply With Quote

Old   January 15, 2024, 12:51
Default
  #14
New Member
 
Manchester
Join Date: Aug 2022
Posts: 27
Rep Power: 4
Tianyz is on a distinguished road
Quote:
Originally Posted by bigphil View Post
I am not sure what you are trying to simulate. Is it a simple beam? Is there FSI or not? What is the physical problem you are approximating? On a boundary, you can enforce a known displacement or known force, but not both. Maybe a body force (like gravity) will achieve what you want?
Hi Philip,

I'm trying to simulate FIV of the flexible cylinder, like offshore structures (pipeline, cable). The fluid domain is solved by using OpenFOAM with overset mesh, and for the solid domain, I plan to use solids4Foam,, then couplet them via preCICE. From some references, they mentioned both ends of the flexible structures are pinned and are tensioned. Here is one of the reference, https://pdf.sciencedirectassets.com/...498435c5&cc=gb.

To study the effect of the tension of the FIV, and compare against the experimental data, I hope I can add this boundary condition on the cylinder by using solids4Foam.

Best,
Tian
Tianyz is offline   Reply With Quote

Old   January 15, 2024, 12:57
Default
  #15
New Member
 
Manchester
Join Date: Aug 2022
Posts: 27
Rep Power: 4
Tianyz is on a distinguished road
Quote:
Originally Posted by Tianyz View Post
Hi Philip,

I'm trying to simulate FIV of the flexible cylinder, like offshore structures (pipeline, cable). The fluid domain is solved by using OpenFOAM with overset mesh, and for the solid domain, I plan to use solids4Foam,, then couplet them via preCICE. From some references, they mentioned both ends of the flexible structures are pinned and are tensioned. Here is one of the reference, https://pdf.sciencedirectassets.com/...498435c5&cc=gb.

To study the effect of the tension of the FIV, and compare against the experimental data, I hope I can add this boundary condition on the cylinder by using solids4Foam.

Best,
Tian
Try to make it clear, the top and bottom are the ends of the beam, while the interface is where the fluid force is exerted.
Tianyz is offline   Reply With Quote

Old   January 19, 2024, 05:50
Default
  #16
Super Moderator
 
bigphil's Avatar
 
Philip Cardiff
Join Date: Mar 2009
Location: Dublin, Ireland
Posts: 1,093
Rep Power: 34
bigphil will become famous soon enoughbigphil will become famous soon enough
One option could be to apply a non-zero displacement to the ends of the beam to elongate the beam, thereby inducing tension.

Alternatively, you could use zero displacement conditions but apply an initial stress to the beam. This can be done by supplying a sigma0 field in the 0 directory with the desired initial stress field.
bigphil is offline   Reply With Quote

Reply

Tags
free motions, solids4foam, zero displacment


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are Off
Pingbacks are On
Refbacks are On



All times are GMT -4. The time now is 07:24.