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 Members List Search Today's Posts Mark Forums Read

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

Reply
 
LinkBack Thread Tools Search this Thread Display Modes
Old   February 1, 2021, 06: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: 5
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, 06:46
Default
  #2
Super Moderator
 
bigphil's Avatar
 
Philip Cardiff
Join Date: Mar 2009
Location: Dublin, Ireland
Posts: 1,012
Rep Power: 32
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, 07:00
Default
  #3
New Member
 
Sasan Tavakoli
Join Date: Sep 2018
Posts: 12
Rep Power: 5
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, 07:15
Default
  #4
Super Moderator
 
bigphil's Avatar
 
Philip Cardiff
Join Date: Mar 2009
Location: Dublin, Ireland
Posts: 1,012
Rep Power: 32
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, 07:53
Default
  #5
New Member
 
Sasan Tavakoli
Join Date: Sep 2018
Posts: 12
Rep Power: 5
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, 10:11
Default
  #6
Super Moderator
 
bigphil's Avatar
 
Philip Cardiff
Join Date: Mar 2009
Location: Dublin, Ireland
Posts: 1,012
Rep Power: 32
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, 19:56
Default
  #7
New Member
 
Sasan Tavakoli
Join Date: Sep 2018
Posts: 12
Rep Power: 5
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, 09:29
Exclamation Uni-axial compression BC setup
  #8
New Member
 
Craig Thomas
Join Date: Dec 2019
Location: Leeds, UK
Posts: 12
Rep Power: 4
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, 5 views)
mn14cat is offline   Reply With Quote

Old   March 28, 2022, 06:17
Default
  #9
Super Moderator
 
bigphil's Avatar
 
Philip Cardiff
Join Date: Mar 2009
Location: Dublin, Ireland
Posts: 1,012
Rep Power: 32
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

Reply

Tags
free motions, solids4foam, zero displacment

Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

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 11:20.