|
[Sponsors] |
solids4Foam: Zero Displacment in one diection, and motions in two other directions |
![]() |
|
LinkBack | Thread Tools | Search this Thread | Display Modes |
![]() |
![]() |
#1 |
New Member
Sasan Tavakoli
Join Date: Sep 2018
Posts: 12
Rep Power: 5 ![]() |
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.
|
|
![]() |
![]() |
![]() |
![]() |
#2 |
Super Moderator
Philip Cardiff
Join Date: Mar 2009
Location: Dublin, Ireland
Posts: 1,012
Rep Power: 32 ![]() ![]() |
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 |
|
![]() |
![]() |
![]() |
![]() |
#3 | |
New Member
Sasan Tavakoli
Join Date: Sep 2018
Posts: 12
Rep Power: 5 ![]() |
Quote:
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? |
||
![]() |
![]() |
![]() |
![]() |
#4 | ||
Super Moderator
Philip Cardiff
Join Date: Mar 2009
Location: Dublin, Ireland
Posts: 1,012
Rep Power: 32 ![]() ![]() |
Quote:
Quote:
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 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 |
|||
![]() |
![]() |
![]() |
![]() |
#5 | |
New Member
Sasan Tavakoli
Join Date: Sep 2018
Posts: 12
Rep Power: 5 ![]() |
Quote:
That's very good. Thank you very much. |
||
![]() |
![]() |
![]() |
![]() |
#6 | |
Super Moderator
Philip Cardiff
Join Date: Mar 2009
Location: Dublin, Ireland
Posts: 1,012
Rep Power: 32 ![]() ![]() |
Quote:
See my comments about regarding the value fraction and also search the forum for other posts on solidDirectionMixed/directionMixed. |
||
![]() |
![]() |
![]() |
![]() |
#7 | |
New Member
Sasan Tavakoli
Join Date: Sep 2018
Posts: 12
Rep Power: 5 ![]() |
Quote:
|
||
![]() |
![]() |
![]() |
![]() |
#8 |
New Member
Craig Thomas
Join Date: Dec 2019
Location: Leeds, UK
Posts: 12
Rep Power: 4 ![]() |
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 |
|
![]() |
![]() |
![]() |
![]() |
#9 | |
Super Moderator
Philip Cardiff
Join Date: Mar 2009
Location: Dublin, Ireland
Posts: 1,012
Rep Power: 32 ![]() ![]() |
Quote:
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). |
||
![]() |
![]() |
![]() |
Tags |
free motions, solids4foam, zero displacment |
Thread Tools | Search this Thread |
Display Modes | |
|
|