CFD Online Discussion Forums

CFD Online Discussion Forums (https://www.cfd-online.com/Forums/)
-   OpenFOAM CC Toolkits for Fluid-Structure Interaction (https://www.cfd-online.com/Forums/openfoam-cc-toolkits-fluid-structure-interaction/)
-   -   [solidMechanics] Support thread for "Solid Mechanics Solvers added to OpenFOAM Extend" (https://www.cfd-online.com/Forums/openfoam-cc-toolkits-fluid-structure-interaction/126706-support-thread-solid-mechanics-solvers-added-openfoam-extend.html)

markusrehm July 1, 2014 11:06

solidSymmetry BC
 
Hi,

I have trouble using the solidSymmetry BC.

0/U

Code:

syml
    {
        type            solidSymmetry;
    }

I tried the following setting (A,B):

Setting A symmetryPlane:

const/polyMesh/boundary

Code:

syml
    {
        type        symmetryPlane;
        nFaces          100;
        startFace      37871;
    }

Error:

Code:

Reading field U



--> FOAM FATAL IO ERROR:
inconsistent patch and patchField types for field U
    patch type symmetryPlane and patchField type solidSymmetry

file: /home/mrehm/OpenFOAM/mrehm-extend-3.0/run/tutorials/solidMechanics/elasticThermalSolidFoam/flosse1/0/U::boundaryField::syml from line 26 to line 26.

    From function fvPatchField<Type>::New(const fvPatch&, const DimensionedField<Type, volMesh>&, const dictionary&)
    in file /home/mrehm/OpenFOAM/OpenFOAM-extend-3.0/src/finiteVolume/lnInclude/newFvPatchField.C at line 140.

FOAM exiting

--------------
Setting B Patch:

const/polyMesh/boundary

Code:

syml
    {
        type            patch;
        nFaces          100;
        startFace      37871;
    }

Error:

Code:

Reading field U



--> FOAM FATAL IO ERROR:

    patch type 'patch' not constraint type 'symmetryPlane'
    for patch syml of field U in file "/home/mrehm/OpenFOAM/mrehm-extend-3.0/run/tutorials/solidMechanics/elasticThermalSolidFoam/flosse1/0/U"

file: /home/mrehm/OpenFOAM/mrehm-extend-3.0/run/tutorials/solidMechanics/elasticThermalSolidFoam/flosse1/0/U::boundaryField::syml from line 26 to line 26.

    From function symmetryFvPatchField<Type>::symmetryFvPatchField
(
    const fvPatch& p,
    const Field<Type>& field,
    const dictionary& dict
)

    in file fields/fvPatchFields/constraint/symmetry/symmetryFvPatchField.C at line 99.

FOAM exiting

Any hints? Unfortunately I did not find an example in the tutorials. I use foam-extend-3.0.

Regards, Markus.

bigphil July 1, 2014 12:54

Hi Markus,

0/U should look like this:
Code:

syml
{
    type            solidSymmetry;
    patchType    symmetryPlane;
}

constant/polyMesh/boundary should look like this:
Code:

syml
{
    type        symmetryPlane;
    nFaces          100;
    startFace      37871;
}

Best regards,
Philip

markusrehm July 2, 2014 04:11

Thanks Philip!

hamsteri15 July 4, 2014 08:54

Thank you Phil, I found some very nice articles on UL approach and I think I now understand the basic principle of the code. However, now I have trouble understanding the interpolation procedure between the solid and fluid. I understand that the traction and pressure is set somehow using the zoneInterpolators created in zoneTozoneInterpolator.H. I assume that these "zones" are created for the possibility of using different resolution meshes at the interface. But on what basis are the zones created? Where can I find the definition whichFace() function?

Regards, Petteri :)

codder July 8, 2014 00:26

@ Petteri

Quote:

Originally Posted by hamsteri15 (Post 500100)
Thank you Phil, I found some very nice articles on UL approach and I think I now understand the basic principle of the code.

Could you recommenced the authors/titles of any of those "nice articles"? I would also like to understand the basic principles of the code!!

Plus, I dunno but you may find these posts on whichFace useful.

Thanks Eric

hamsteri15 July 8, 2014 03:07

Quote:

Could you recommenced the authors/titles of any of those "nice articles"? I would also like to understand the basic principles of the code!!

Plus, I dunno but you may find these posts on whichFace useful.

Thanks Eric
Sure!

Application of the finite volume method and unstructured
meshes to linear elasticity.
H. Jasak, H.G Weller. International journal for numerical methods in engineering (2000) || Summarizes the basics of finite volume method for solids very well.

Updated Lagrangian finite volume solver for large deformation dynamic response of elastic body. Z. Tukovic, H. Jasak. ISSN 1333–1124 (2007) || Very detailed description of the UL solid solver used in icoFsiElasticNonLinULSolidFoam. I found this article very useful.

On the mesh motion handling:
Automatic Mesh Motion for the Unstructured Finite Volume Method. H. Jasak, Z. Tukovic (2004)
Dynamic Mesh Handling in OpenFOAM. H. Jasak. AIAA (2009)

These slides may also be helpful:
http://www.tfd.chalmers.se/~hani/kur.../FSIslides.pdf

And as Philip mentioned, the UL approach is described in numerous solid mechanics books as well :)

bigphil July 8, 2014 03:24

Quote:

Originally Posted by hamsteri15 (Post 500529)
Sure!

Application of the finite volume method and unstructured
meshes to linear elasticity.
H. Jasak, H.G Weller. International journal for numerical methods in engineering (2000) || Summarizes the basics of finite volume method for solids very well.

Updated Lagrangian finite volume solver for large deformation dynamic response of elastic body. Z. Tukovic, H. Jasak. ISSN 1333–1124 (2007) || Very detailed description of the UL solid solver used in icoFsiElasticNonLinULSolidFoam. I found this article very useful.

On the mesh motion handling:
Automatic Mesh Motion for the Unstructured Finite Volume Method. H. Jasak, Z. Tukovic (2004)
Dynamic Mesh Handling in OpenFOAM. H. Jasak. AIAA (2009)

These slides may also be helpful:
http://www.tfd.chalmers.se/~hani/kurser/OS_CFD_2009/FSIslides.pdf

And as Philip mentioned, the UL approach is described in numerous solid mechanics books as well :)

Yep, good references. I have also described UL approach for orthotropic elastic solids (elasticOrthoNonLinULSolidFoam) in this article:
P Cardiff, A Karac, A Ivankovic, A large strain finite volume method for orthotropic bodies with general material orientations, Computer Methods in Applied Mechanics and Engineering, 2014.

And also for isotropic linear elasticity in my thesis: P Cardiff, Development of the finite volume method for hip joint stress analysis, 2012.

Philip

kanuk July 10, 2014 20:09

some problems running in parallel
 
Hello Dr. Cardiff,

I am having a few issues trying to get an unstructed 3D mesh from gmsh to run in parallel as the fluid portion of the FSI solver. Instead of posting the large files here however I think many of the errors can be duplicated with the Hron & Turek benchmark in 2D. So, here we go:

Obviously, running the tutorial case with 2 procs runs smoothly. But increasing this to 4 (simple (4 0 0)) causes a previously mentioned face ordering problem.
- If I change the "moveSolidMeshLeastSquares.H" to the one posted earlier in this thread, the problem persists, albeit sooner...
- If I change to the old inverseSquares "moveSolidMesh.H_old" from 1.6-ext one of the processes simply disappears and the solver simply hangs with no error messages until I forcedly kill it.

There has been mention of using "preservePatches" to keep the entire FSI boundary on one processor. This can work for 2 processors but with 4 the decomposition routine (or so I think) has trouble keeping all the neightbouring cells in one patch so it can't preserve the plate patch onto a single processor. And, especially for larger, 3D domains, this may not be possible.

Lastly, I have had some success by eliminating the decomposition in the solid entirely and linking all fluid processors to the solid. This seems to work much better - until mesh.update() is called, where, similar to the above, a few processors drop out and leave the FSI routine hanging.

I am still looking for a way to figure out how to do FSI with an arbitrary number of processors - any helps or hints, please do let me know. I suspect manual decomposition may be required, but I hope not.

Sorry for the verbosity, and thanks for your continued support to this thread.

Dave

kanuk July 12, 2014 01:18

parallel FSI in discontinuous solid regions
 
1 Attachment(s)
I can also confirm that the FSI solver hangs up on mesh.update() when there is a discontinuity in the FSI boundary between processors. I whipped up a small (non)-working example, attached, that seems to work alright in serial, while in parallel it hangs when the fluid mesh update is called...

I have no idea where the problem could be, but I'll be trying to look into the issue...

Thanks,
D

arashfluid July 21, 2014 08:27

problem with solid motion in FSI
 
Hello Dr. Cardiff,
I’m using icoFsiElasticNonLinULSolidFoam solver in OF-1.6-ext to solve pitching and plunging motion of 2D airfoil problem.Furthermore, I have performed a few tests using pimpleFsiFoam developed by Charbel Habchi. However, I’ve not seen any differences between them. In order to impose pitching and plunging motion on the wing, I have used dynamicBodyFvMesh solver in dynamicMeshDict dictionary in the fluid region. In those aforementioned solvers, there are no options to set motion on wingsolid, hence I have applied the motion on the fluid side. In this situation, solid and fluid patches do not follow each other.In other words,wingsolid and wingfluid,each of them moves separately and do not affect each other.The question is how can I set the motion on the solid side?

Thanks

Jibran July 22, 2014 06:38

Constant piecewise reconstruction
 
Dear Philip,

I am interested in obtaining OpenFOAM results using constant piecewise reconstruction rather than a linear interpolation as in the tutorials. Take for example the plate hole tutorial of the elasticSolidFoam solver. I know that I need to modify the fvSchemes dictionary but was unsuccessful in specifying a constant piecewise reconstruction. I tried the upwind scheme but failed since a surfaceScalarField is required for that. The fvSchemes dictionary in the tutorial looks like this:

Code:

d2dt2Schemes
{
    default    steadyState;
}

gradSchemes
{
    default        none;
    grad(U)        leastSquares 0;
    //grad(U)        extendedLeastSquares 0;
    snGradCorr(U)  leastSquares 0;
}

divSchemes
{
    default        none;
    div(sigma)      Gauss skewCorrected linear;
}

laplacianSchemes
{
    default        none;
    laplacian(DU,U) Gauss harmonic corrected;
}

snGradSchemes
{
    snGrad(U)      corrected;
}

interpolationSchemes
{
    default                  linear;
    interpolate(sigma)      linear;
    interpolate(muLambda)    harmonic;
}

I would appreciate any help in this regard.

Thanks
Jibran

bigphil July 22, 2014 07:28

Quote:

Originally Posted by arashfluid (Post 502469)
Hello Dr. Cardiff,
I’m using icoFsiElasticNonLinULSolidFoam solver in OF-1.6-ext to solve pitching and plunging motion of 2D airfoil problem.Furthermore, I have performed a few tests using pimpleFsiFoam developed by Charbel Habchi. However, I’ve not seen any differences between them. In order to impose pitching and plunging motion on the wing, I have used dynamicBodyFvMesh solver in dynamicMeshDict dictionary in the fluid region. In those aforementioned solvers, there are no options to set motion on wingsolid, hence I have applied the motion on the fluid side. In this situation, solid and fluid patches do not follow each other.In other words,wingsolid and wingfluid,each of them moves separately and do not affect each other.The question is how can I set the motion on the solid side?

Thanks

Hi,

The motion of the FSI interface patch (i.e. the patch where the fluid is in contact with the deformable solid) is governed by the fluid flow and the other boundary conditions on the solid patches which are not in contact with the fluid.
So you should not specify another boundary condition on the FSI patch, otherwise the solid and fluid will not be coupled.

I am not sure exactly what you are trying to achieve, but you could impose time varying displacements on the solid patch of the wing where it would be attached to the aircraft fuselage.

Philip

arashfluid July 22, 2014 08:15

1 Attachment(s)
Quote:

Originally Posted by bigphil (Post 502604)
Hi,

The motion of the FSI interface patch (i.e. the patch where the fluid is in contact with the deformable solid) is governed by the fluid flow and the other boundary conditions on the solid patches which are not in contact with the fluid.
So you should not specify another boundary condition on the FSI patch, otherwise the solid and fluid will not be coupled.

I am not sure exactly what you are trying to achieve, but you could impose time varying displacements on the solid patch of the wing where it would be attached to the aircraft fuselage.

Philip

Hi
I'm sorry for the many questions.
I want to validate FSI simulations of a flexible flapping plate ( airfoil) with M.Olivier paper (A Fluid Structure Interaction Solver for Nano-Air-Vehicle Flapping Wings- http://enu.kz/repository/2009/AIAA-2009-3676.pdf). I'm using icoFsiElasticNonLin.... solver for this simulation.I impose plunging motion with dynamicBodyFvMesh or other finite volume classes of dynamic mesh.As shown in the figure below, solid and fluid patches do not follow each other. How do I make this motion in FSI solver?

thanks,

Brayanashel July 23, 2014 06:49

Boundary Effect
 
1 Attachment(s)
Hi,

When a cantilever beam is modeled the stress distribution along the clamped section is not like the analytical one near the top and bottom walls, as shown in attachment. However this jump of stress is removed in 0.0003 mm far from the clamped boundary.

Why is there such stress jump along the clamped section, please?
How can this jump be removed?

Thanks.

Brayanashel July 23, 2014 07:17

freeRotation
 
How can a freeRotation BC be created from the fixedRotation one, please?

Thanks.

Maya July 31, 2014 10:31

local to global face zone point map is not correct
 
Hello,

I am trying to simulate with elasticNonLinULSolidFoam. Starting the simulation everything works until findGlobalFaceZones.h. Here I get the error : "local to global face zone point map is not correct". What does this mean and how can I solve this problem? Do I have to remesh my model?

Thx!
Maya

bigphil July 31, 2014 10:48

Quote:

Originally Posted by Maya (Post 503932)
Hello,

I am trying to simulate with elasticNonLinULSolidFoam. Starting the simulation everything works until findGlobalFaceZones.h. Here I get the error : "local to global face zone point map is not correct". What does this mean and how can I solve this problem? Do I have to remesh my model?

Thx!
Maya

Hi Maya,

findGlobalFaceZones.H tries to find the map between the mesh faceZones and local processor faces, in particular for globalFaceZones used in contact simulations.

What are you simulating, are you using contact boundaries? Maybe you have old invalid faceZones in your mesh? You could delete you mesh faceZones if there are not needed:
Code:

rm constant/polyMesh/faceZones
Philip

hamsteri15 August 1, 2014 03:39

Quote:

Originally Posted by kanuk (Post 501036)
Hello Dr. Cardiff,

I am having a few issues trying to get an unstructed 3D mesh from gmsh to run in parallel as the fluid portion of the FSI solver. Instead of posting the large files here however I think many of the errors can be duplicated with the Hron & Turek benchmark in 2D. So, here we go:...

Dave

I had the same problem and after a week of trying different meshes, I ended up running my case on a very coarse fluid mesh with a single processor. If you manage to solve the problem, will you please post the solution to this thread?

Regards,
Petteri :)

kanuk August 1, 2014 13:35

Quote:

I had the same problem and after a week of trying different meshes, I ended up running my case on a very coarse fluid mesh with a single processor. If you manage to solve the problem, will you please post the solution to this thread?

Regards,
Petteri :)

Hi Petteri,

I must admit after spending a some time on this issues I have gone the way of a serial computation as well... My level of knowledge of OF isn't quite there yet to fix the problem at this point I'm afraid. If I do figure out a workaround I'll be sure to post it.

good luck!
Dave

iczajka August 1, 2014 15:16

Quote:

Originally Posted by hamsteri15 (Post 504003)
I had the same problem and after a week of trying different meshes, I ended up running my case on a very coarse fluid mesh with a single processor. If you manage to solve the problem, will you please post the solution to this thread?

Regards,
Petteri :)

I had similar problem when there were displacements. In my opinion it was because of very fast tet mesh degeneration. So, after big work I was using blockMesh with success. And now it works like a charm. :)


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