CFD Online Discussion Forums

CFD Online Discussion Forums (https://www.cfd-online.com/Forums/)
-   OpenFOAM Running, Solving & CFD (https://www.cfd-online.com/Forums/openfoam-solving/)
-   -   Moving mesh problem OpenFoam 141 (https://www.cfd-online.com/Forums/openfoam-solving/57916-moving-mesh-problem-openfoam-141-a.html)

kassiotis March 21, 2008 09:14

Hello everybody Context: I'
 
Hello everybody

Context: I'm coupling a FEM code (Feap) and OpenFOAM to solve FSI problems by a partitionned strategy. I try to validate this coupling.
To be more precise, i'm using the solver icoDyMFoam of OpenFOAM 1.4.1. The mesh is solved with the following options :

// ---------- dynamicMeshDict ---------
dynamicFvMesh dynamicMotionSolverFvMesh;
motionSolverLibs ("libfvMotionSolvers.so");
solver velocityLaplacian;
diffusivity quadratic inverseDistance 1(movingWall);
// --------------------------------------------------

As from other post and sources [1] it seems that the quadratic inverse give the best results.

Unfortunately, when the motions become to big (for problem with a small stiffness), it seems the computation crash due to bad motion (see pictures [2]) of the mesh that become non-convex.

Is this for you due to bad mesh construction, bad options to solve the mesh motions or any other idea ?

Thank you.

[1] Automatic Mesh Motion for the Unstructured Finite Volume Method by Hrvoje Jasak and Zeljko Tukovic

[2] Pictures
velocity field: <https://perso.crans.org/kassiotis/op...velocity74.jpg>
initial mesh: <https://perso.crans.org/kassiotis/openfoam/mesh0.jpg>
deformed mesh with problem: <https://perso.crans.org/kassiotis/openfoam/mesh74.jpg>

hjasak March 21, 2008 12:01

Hello, For this sort of mot
 
Hello,

For this sort of motion you really need to use a vertex-based mesh motion techniques rather than the FV motion you have chose. Vertex-based motion described in my/our paper is available in the SVN version of OpenFOAM - the Forum will show you how to get it.

In terms of motion, we have done MUCH more severe cases than yours with reasonable success. Examples are in some of my presentations, available on:

http://powerlab.fsb.hr/ped/kturbo/OpenFOAM/slides/

You can also find a series of moving mesh movies in:

http://powerlab.fsb.hr/ped/kturbo/OpenFOAM/movies/

Example most similar to yours is an oscillating NACA airfoil with a sharp trailing edge:

Oscillating NACA airfoil - FEM mesh motion

Specification of mesh motion I use is typically something like this:


twoDMotion yes;

solver laplaceFaceDecomposition;

diffusivity quadratic;

frozenDiffusion off;

distancePatches
(
oldInternalFaces
);


In your case, 2-D motion should be set to yes.

Please have a go and tell me more about problems you encounter.

Enjoy,

Hrv

lr103476 March 21, 2008 14:32

When large rotations come into
 
When large rotations come into play, I have very good experience with the displacement Solid Body Rotation fvMotionSolver.......

Hrv, why do you suggest a vertex-based technique for this kind of motion???

Frank

hjasak March 21, 2008 17:41

Hrv, why do you suggest a ve
 
Quote:

Hrv, why do you suggest a vertex-based technique for this kind of motion???
Because it is better - much much better.

Hrv

lr103476 March 22, 2008 04:54

Referring to your tetDecomp st
 
Referring to your tetDecomp stuff, it is a very nice method and very robust. Unfortunately, I need some rotational motion solvers (like the SBR Stress model) which is not implemented for your tetDecomp solvers.

So, Christophe, I would say, just play with all motion solvers (tetDecomp, displacement FV and velocity FV) to find which one is best suited for your problem.

Frank

philippose March 25, 2008 13:03

Hello Hrv, A Good day to yo
 
Hello Hrv,

A Good day to you! Been a while since my last post :-)! Though... have been keeping my eyes open on everything that has been going on here!

I had a short question, and it would be great if you could shed some light (as usual)....

Could you tell me something about the Deformation Energy and Distortion Energy motion diffusivity options you have implemented in the vertex based motion solvers ?

Under what situations would you use these diffusivity methods, and what are the advantages and disadvantages compared to the other methods?

Also, what would a good value be for the exponent in each case? (Or even better... how could one decide on a good value?)

Have a nice evening!

Philippose

hjasak March 25, 2008 16:39

A lovely paper for you: @
 
A lovely paper for you:


@Article{Jasak:MeshMotion,
author = {Jasak, H. and Tukovic, Z.
,
title = {Automatic Mesh Motion for the Unstructured Finite
Volume Method},
journal = {Transactions of FAMENA},
year = 2007,
volume = 30,
number = 2,
pages = {1-18}
}}

http://powerlab.fsb.hr/ped/kturbo/Op...tionFAMENA.pdf

It's all explained there (by Zeljko) with examples, definitions etc. and all in English http://www.cfd-online.com/OpenFOAM_D...part/happy.gif

Enjoy,

Hrv

P.S. Please refer to paper where appropriate - Zeljko needs all the exposure he can get for the wonderful work he did for his PhD and since.

philippose March 25, 2008 17:08

Hi again, Thanks a lot Hrv.
 
Hi again,

Thanks a lot Hrv.... :-)!

I just finished re-converting the force based mesh motion solver I had written a while ago to use tet decomposition (I had used it in OF-1.3 with tet decomposition long time ago...), and am currently running a test case...

Everything seems to be working perfectly fine, and I am looking forward to trying it on one of the more difficult cases tomorrow (hopefully!)

So now its time to look through the paper from Zeljko... !!

Shall indeed refer to the appropriate papers at every possible opportunity :-)!

Philippose

kassiotis April 2, 2008 04:51

Hi everybody, Sorry to answ
 
Hi everybody,

Sorry to answer you after this kind support only now, but last week was really busy for me - but not only for work ;)

I manage to download and use OpenFoam-1.4.1-dev (after some adventures were I try to compile it, but never succeed...I think I'm not really gifted for this kind of stuff)...and the binaries. So it's working now on my computer.

I play a little with the solvers:
  • velocityLaplacian (the same as in OpenFoam-1.4.1) give more or less the same results.
  • laplaceFaceDecomposition seems to be more robust - for my case - but really slower. Maybe this is normal? ("there is no free lunch")
  • To impose non-uniform condition, I'm really lost : I consider a face with 90 nodes and 44 faces. With velocityLaplacian, in the file pointMotionU, I impose the 90 velocity at the 90 nodes...no problem ; with laplaceFaceDecomposition the solver asks for 134 values of velocities in the file motionU (I can imagine that is the nodal values + the face values...but in wich order? ). Is it possible to impose value only at nodes with laplaceFaceDecomposition?
  • I notice that I'm not able to use something like deformationEnergy of distorsionEnergy with the solver velocityLaplacian. Is this normal? If or if not, do you have an example for the dynamicMeshDict file for this case?
  • displacement* solvers and especially displacementSBRStress ask for pointDisplacement files...this is logical. Do you think it is a good idea to use one of them - but for the testing problem i'm not really able to impose a displacement linearly depending of time for the moment - I will look maybe in this direction...

Thank you for answers, even If my questions are maybe not so clear ;)


--
Christophe KASSIOTIS

hjasak April 2, 2008 10:56

Heya: - laplaceFaceDecompos
 
Heya:

- laplaceFaceDecomposition is slow. Yes - cellDecomposition is faster. In order to get robustness I need more points and that is why. The best I can offer is cellDecomposition and then relax mesh motion convergence tolerances

- in all cases, points go first, then face centres (face decomposition only) and then cell centres.

- you've got mapping functions which will take point or cell data and interpolate to points or points/faces, depending on decomposition. Beware of compilation switches, it is very difficult to cleanly spearate this...

- fancy diffusivities came from Zeljko's PhD and we did vertex-based motion. You should be able to move them to cell-based motion as well - the algorithm is the same, but field type and run-time selection tables are different.

Enjoy,

Hrv

kassiotis April 2, 2008 11:28

Thank you for the quick answer
 
Thank you for the quick answer Hrv,

When I want to use something like cellDecomposition, I get the following message:

7
(
displacementSBRStress
pseudoSolidFaceDecomposition
displacementComponentLaplacian
velocityLaplacian
displacementLaplacian
laplaceFaceDecomposition
velocityComponentLaplacian
)


A small grep -r laplaceCellDecomposition give me as an answer the file tetDecompositionMotionSolver.H with the following lines seems to be of interest:

#ifdef CELL_DECOMP
TypeName("laplaceCellDecomposition");
#else
TypeName("laplaceFaceDecomposition");
#endif


If I understand what I read in the code and what you say:
Quote:

Beware of compilation switches, it is very difficult to cleanly spearate this...
I need probably to recompile the part in src/tetDecompositionMotionSolver. Did I understand well ? If yes, how can I do this ? (I'm not the kind of guy who is able to compile thinks with flag in 1s http://www.cfd-online.com/OpenFOAM_D...part/happy.gif ). For instance, did I need to do a wmake . tetDecompositionMotionSolver with an option?

I will also try to impose the good value for a laplaceFaceDecomposition solver with mapping fonction and say if I have some problems...

Thank you

CK

hjasak April 2, 2008 15:17

You need to link cellDecomposi
 
You need to link cellDecompositionMotionSolver or recompile the application with CELL_DECOMP option.

Enjoy,

Hrv

kassiotis April 3, 2008 07:30

Hello everybody, Thank you
 
Hello everybody,

Thank you again for answering Hrv;
I have agains two questions:
  • laplaceFaceDecomposition: seem to work really well when I impose at each face center a mean between the point velocity and allow really big deformations (see Picture [2]). However, for the moment, I'm doing this by "hand" in the input file. Do you think It can be possible to impose only value at point, and that OpenFOAM is doing the interpolation (i'm sure it is possible, but I don't know really were I have to modify things)
  • laplaceCellDecomposition: I think I manage to make it work by "linking" (see code [1]). But I'm not sure it's really calling the good solver: the solver ask also for value at node center -- they are useless if I understood properly what is doing cellDecomposition as a decomposition...and more distrubing the results are exactly the same has faceDecomposition. Do you think I'm in fact calling an faceDecomposition solver ? Or the example I'm using don't give significant differences ( e.g. : motion too small, 2d ) ?
Thank you.

[1] : dynamicMeshDict file

// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dynamicFvMesh dynamicMotionSolverFvMesh;
twoDMotion yes;
motionSolverLibs ("libcellDecompositionMotionSolver.so");
solver laplaceCellDecomposition;
diffusivity quadratic;
frozenDiffusion off;
distancePatches ( movingWall );
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //


[2] : moving Mesh pictures with a laplaceFaceDecomposition solver. Problem treated : imposed velocity for the "moving Wall" only in y direction, linearly depending of x (imposed at each node by "hand").
at time 0.46: <https://perso.crans.org/kassiotis/openfoam/mesh_laplacefacedecomposition_046_fac evelocitiymean.png>
at time 0.46 with a zoom: <https://perso.crans.org/kassiotis/openfoam/mesh_laplacefacedecomposition_046_fac evelocitiymean_zoom.png>
at time 1.00:
<https://perso.crans.org/kassiotis/openfoam/mesh_laplacefacedecomposition_100_fac evelocitiymean.png>
at time 1.00 with a zoom:
<https://perso.crans.org/kassiotis/openfoam/mesh_laplacefacedecomposition_100_fac evelocitiymean_zoom.png>

CK

hjasak April 3, 2008 08:16

Sorry, cannot see the pictures
 
Sorry, cannot see the pictures.

Hrv

kassiotis April 3, 2008 08:35

Now it's working (due to a mis
 
Now it's working (due to a misspelling with majuscules).

CK

hjasak April 3, 2008 09:10

Have a look at icoFsiFoam:
 
Have a look at icoFsiFoam:

pointVectorField solidPointsDispl =
cpi.interpolate(Usolid - Usolid.oldTime());

vectorField fluidPatchPointsDispl =
interpolatorSolidFluid.pointInterpolate
(
solidPointsDispl.boundaryField()[solidPatchID].
patchInternalField()
);

motionUFluidPatch ==
tppi.pointToPointInterpolate
(
fluidPatchPointsDispl/runTime.deltaT().value()
);


The first one takes the data on the solid patch (cell centres) and interpolates it into points.

The second one takes the point data and interpolates from solid to fluid.

The third one takes the point data (that is mesh points) and interpolates into whatever the motion solver wants: for cell decomposition it just uses cell data, for face decomposition it will do a face centre as well in a consistent manner.

Have a look at

tetPolyPatchInterpolation/tetPolyPatchInterpolationCellDecomp/tetPolyPatchInterp olationCellDecomp.H

for other available functions, depending on whatther you know the motion on points or cell centres.

//- Interpolate from faces to points
template<class>
tmp<field<type> > faceToPointInterpolate
(
const Field<type>& ff
) const;

template<class>
tmp<field<type> > faceToPointInterpolate
(
const tmp<field<type> >& tff
) const;


//- Interpolate from mesh points to tet FEM points
template<class>
tmp<field<type> > pointToPointInterpolate
(
const Field<type>& ff
) const;

template<class>
tmp<field<type> > pointToPointInterpolate
(
const tmp<field<type> >& tff
) const;


Enjoy,

Hrv

kassiotis April 7, 2008 08:42

For the one interested, I have
 
For the one interested, I have made a short rapport on the moving mesh subject. Hope that will help someone.

Please, be kind with my (poor) English ! And remind this is only a draft for the moment http://www.cfd-online.com/OpenFOAM_D...part/happy.gif

<https://perso.crans.org/kassiotis/op...movingmesh.pdf>

CK

richard April 14, 2008 21:13

Hello, Hrv, I noticed your
 
Hello,

Hrv, I noticed your first post in this thread mentioned simulations of airfoils with sharp trailing edges..
I have been working on some NACA0012 simulations and seem to be having trouble with the potential solution at the trailing edge. (Note laminar and turbulent simulations are working fine)

The problem is that at an angle of attack, the velocity field tries to "bend" around the sharp trailing edge
i.e. the first mesh points surrounding the TE point go from very high velocity on the pressure side through to low velocity on the suction side of the wing. The cell point on the tip of the sharp TE is approximately the average of the values surrounding it.

Case set-up is:
2D
rectangular domain, rotated about the airfoil for an angle of attack
tetrahedral mesh (thanks gmsh)
airfoil: slip boundary (have also tried symmetryPlane)
inlet, top, bottom: U = 10m/s, p = zeroGradient
outlet: U = zeroGradient, p = 0
Schemes are all from the tutorial, except I'm using 6 orthogonal correctors because of the tetrahedral mesh.

I have tried chopping off the sharp edge, and increasing the mesh density around the blunt edge but the same problem persists near the square edges. Also it is not really a suitable solution for me because unfortunately the shape of the TE matters for what I am trying to do.

Do you (or anyone else!) know how to solve this?

Thank you,
Richard.

richard April 15, 2008 02:14

Essentially, how do I apply th
 
Essentially, how do I apply the Kutta-Joukowski condition on the TE?

R

pbo April 15, 2008 14:58

well, if what you are after is
 
well, if what you are after is only the potential-flow solution around a lifting body, you are better off using a panel method (simpler and cheaper).

If you really want to stick to the FVM for that (a bit of an overkill), try and enforce a zero velocity on the 2 airfoil cell faces sharing the trailing edge (define them as a separate patch). That could do the trick for 2D airfoils with non-cusped TE.

Patrick

richard April 15, 2008 21:20

Hi Patrick, Yes, it is a bi
 
Hi Patrick,

Yes, it is a bit of an overkill, but I will be modifying the trailing edge to have wiggles in it's profile (both chord and span wise) - I'm new to panel methods, but according to Martin Hepperle they aren't appropriate for very wavy surfaces, so for now I'm soldiering on with fvm.

I'll give the zero velocity patch a try and see how I go.

Thanks Pat http://www.cfd-online.com/OpenFOAM_D...part/happy.gif
Richard

richard April 16, 2008 23:55

I modified the two TE cells an
 
I modified the two TE cells and it just makes a zero velocity point at the tip of the TE around which is a colorful wagon-wheel of velocity!

I had more of a look at panel methods, and I think I was wrong (or my interpretation of Martin Hepperle's words was wrong). I'll try it and if I run into snags with my wavy profile I will increase the number of panels and go from there.

If anyone else has suggestions for making the FVM potential solution on an airfoil work, let me know, I'm willing to experiment.

Cheers,
Richard.

mattijs April 17, 2008 03:20

You could try to split the mes
 
You could try to split the mesh along faces which more or less follow the expected streamlines (using createBaffles). You'll have to program a bit to construct a faceSet with all those faces in it.

Or just allow some more physics and run simpleFoam ...

pbo April 17, 2008 04:23

oops, forgot that the governi
 
oops,
forgot that the governing equation in potentialFoam is the pressure equation. So the zero-velocity boundary condition at the TE, should be indirectly enforced through a pressure boundary condition. Try to enforce at the TE panels (on top of the zero-velocity bc) a pressure equal to the total pressure in the freestream (roughly 0.5*U_inlet^2 + p_outlet -- rho is missing cause p is normalized by rho in incompressible solvers).

Otherwise, as Mattijs said, try simpleFoam. Use a zero viscosity, and slip bc at the airfoil surface to simulate an inviscid flow, along with a bounded convection scheme (the amount of artificial viscosity produced by these schemes should enable the Kutta condition 'automagically' like in a real viscous flow, and provide a stabilizing effect on the computation -- hopefully)

As regards the panel method, any higher order one (quadratic doublet or linear vortex strengths) should do the trick (with an appropriate panel distribution around the bends, and provided the bends on your profile are more of the rounded types than of the saw-toothed type).

At some point, you should however give in to viscous flow simulations, because the waviness of your airfoil surface may have a significant effect on the boundary layer behavior.

richard April 17, 2008 05:08

Thanks guys, Yes they'll de
 
Thanks guys,

Yes they'll definitely be the rounded type bends - and yes I'm doing viscous solutions too (actually I'm comparing them).

What I'm aiming for is cheap (potential + integral BL) and expensive (rans) methods of finding the boundary layer properties at the TE - and hopefully have both in OpenFOAM.

I just tried the pressure condition and I get rather high velocities (1290m/s!) around the TE.
I'll try simpleFoam to see if it works, but I would assume the run time would be in the same order of magnitude as the ones with viscosity, which makes the whole exercise useless for me.

Perhaps OpenFOAM would be good at inverting a matrix from a panel method formulation..

cwang5 October 17, 2008 03:27

Hi, I am new to the movin
 
Hi,

I am new to the moving mesh option in OpenFoam, and I'm wondering how to setup the boundary condition for the "tail" motion? I have managed to use splitmesh to generate the tail as internal surface, but I am lost in setting up the boundary condition so that the root of the tail could not move. Can someone help me on this topic? Thanks

mehulkumar February 23, 2009 04:56

Hey..Guys. I am a new user of
 
Hey..Guys.
I am a new user of OF.
I want to simulate subsonic flow over NACA0012.I am using O topology.I want to learn, to make mesh such that according to angle of attack, boundary should be change.I have not much idea about it.

Pls. guide me.
Give me some reference.

cwang5 April 23, 2009 04:05

Quote:

Originally Posted by kassiotis (Post 198990)
For the one interested, I have made a short rapport on the moving mesh subject. Hope that will help someone.

Please, be kind with my (poor) English ! And remind this is only a draft for the moment http://www.cfd-online.com/OpenFOAM_D...part/happy.gif

<https://perso.crans.org/kassiotis/op...movingmesh.pdf>

CK

Hi, I am wondering how exactly did you enforce the null displacement at the origin of the appendage? Do you specify it in pointMotionU file or else where?

marico July 21, 2009 02:38

Solver fails
 
Hi mesh movers!

First of all thanks for providing the tools to the responsible humans!
The tetFem solver (cellDecomp.) is quite slow but that doesn't matter. My problem now is the following:

The solver works fine and solves with 300 - 700 iterations; tolerance = 1e-9. Mesh stays fine. UNTIL the INITIAL residual falls to ~ 1e-8, only 10-20 iterations are done and the mesh gets destroyed beautifully...

1. Can this be caused by skew faces (I've got 50 out of 500.000; Max skewness 77) ???

2. Or due to a too high timestep ???

3. Is there a possibility to define a minimum number of iteration like for other solvers ??? Sorry: How to do it?

BTW: I'm using 1.4.1-dev. Thanks a lot!

Marco

Harbeer November 18, 2013 07:06

Moving mesh with boundary layer
 
2 Attachment(s)
Hi guys, i am simulating FSI on a zero-thickness membrane. But the mesh motion solver will destroy the boudary layer, please see my pictures. What i have figured out is that, the problem happens due to the laplacian equation is solved on the cell displacement instead of point displacement, and when doing volumn-point interpolation it gives inverted cells on the boundary layer.

From google i read the vortex-based mesh motion is only in the OF-dev, but in standard OF there is only fv based mesh motion. Therefore, i can not use Mr. Jasak's motion solver, although it looks able to solve my problem.

Any ideas?

before inverted:
Attachment 26862
after inverted:
Attachment 26863

hua1015 April 14, 2015 23:10

Dear Foamer,
Now,I want to do FSI with openFOAM to solve fluid and other third FEM open source codes to solve solid.But I am not sure how to invoke FEM solver in openFOAM? Since it seems that you have coupled a FEM code (Feap) and OpenFOAM to solve FSI.
Any suggestions will be appreciated.


All times are GMT -4. The time now is 02:39.