CFD Online Discussion Forums

CFD Online Discussion Forums (
-   OpenFOAM Running, Solving & CFD (
-   -   Engine simulation with topological changes (

marico March 3, 2009 04:58

Hi All, my task is to simul
Hi All,

my task is to simulate an reciprocating engine with one piston and one valve. At least the opening of the valve needs topological changes rather layer addition. Probably the best model for this task should be linearValveLayersFvMesh.
The mesh solver would be displacementLaplacian as I have to define the displacements according to an analytical function of time (piston movement...).
Now I have got a few questions:

1. Is this possible as it is described here? Has anyone experience (testcase...) with that?

2. For what is the variable "pistonVelocity" of linearValveLayersFvMesh? Is it just an approach for calculation? cause velocity changes a lot with time.

3. Whats the easiest way to disable CFD-calculation. I first want to test mesh-deformation... Is there a dummy-solver or a command to disable solving of fluid equations?

I have no experience in C++ so my goal is to avoid dealing much with make... ;)
Thanks for your answers


alexandrepereira March 3, 2009 11:58

Hi Marco Have you tried the
Hi Marco

Have you tried the simpleEngineTutorial from Zagreb University OpenFoam page...?

I think that using this tutorial and understanding how valve motion is done is a step... but so far I have only managed to get a core dump using engineFoam with this tutorial...

Tried to run it in OpenFOAM-1.5...

Hve you tried it already...?

Best regards


marico March 5, 2009 04:13

Hi Alexandre, thanks for yo
Hi Alexandre,

thanks for your reply. I looked into it and firstly I'm not able to display the case in paraview. (I'm using 1.5-dev, everything built from sources) Error message when pressing "Apply" to display patches sounds like:

*** glibc detected *** /home.../paraview-real: munmap_chunk(): invalid pointer: 0x0900ab20 ***

(other cases work for me)

After looking into the case files I think that the tutorial is out of date in relation to the use of dynamic meshes...?!

Any hints concerning "pistonVelocity" and disabling CFD-calculation?

Best regards

alexandrepereira March 5, 2009 08:00

Hi Marco Unfortunately I ha
Hi Marco

Unfortunately I have no clue...

A workable tutorial on moving mesh and dynamicmeshDict is the icoDyMFoam tutotial of movingCone...

I also wish i could learn more on cylinder mesh topological changes in engineFoam... :-(



dmoroian March 5, 2009 08:26

Hello Marco, In order to avoi
Hello Marco,
In order to avoid solving the flow, you have to remove the part of the code that performs this task. Just open the engineFoam.C file and remove lines from 95 to 119 (this is at least for version 1.4.1 that I have access for the moment). Save the modifications and close the file. Then in the same directory type wclean; wmake.
This should be all!

I hope this is helpful,

marico March 6, 2009 05:53

Hi, thank you Dragos for ad

thank you Dragos for advice, I just created "dummyFoam" that way out of icoDyMFoam.
I just tried to modify the simpleEngine Tutorial to work with the actual OF (1.5-dev). When solving I get the message:

Selecting dynamicFvMesh linearValveLayersFvMesh
Time = 0
Adding zones and modifiers to the mesh
Adding point and face zones

Not all zones and patches needed in the definition have been found. Please check your mesh definition.
Error code: 001111

Here's my dynamicMeshDict:

version 2.0;
format ascii;
class dictionary;
object dynamicMeshDict;

// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

dynamicFvMeshLib "";

dynamicFvMesh linearValveLayersFvMesh;

solver displacementLaplacian;

diffusivity uniform;

pistonVelocity (0 0 1);

inside valveCurtainPort1 valveCurtainPort2;
outside valveCurtainCyl1 valveCurtainCyl2;

patch piston valve2 valve4 cylinderHead;

minThickness 0.001;
maxThickness 0.003;

Maybe someone is able to find the error... I also attach my case:

Note: BC's and solver settings are probably not well, the problem occured seems to be independent from that.

Thank You

marico March 6, 2009 06:13 engine.tar

marico March 9, 2009 02:56

Hi again, one problem I fou
Hi again,

one problem I found out is probably that the patches defined in the dynamicMeshDict above to the keywords "slider" and "layer" are not all recognized. Only the first one, e.g. "piston", is recognized. Is there a way to define multiple patches to these keywords? Another way would be to combine the patches in mesh setup but that would lead to another problem: I'm not any longer able to define different boundary conditions (which I need to) to them.
Any ideas?

Thank You

marico March 9, 2009 10:48

Hi once more, I created a s
Hi once more,

I created a simple testcase with BlockMesh geometry. The geometry has some interfaces. Two of them are for the slider. Others result out of my "block choice". To use the mesh I have to merge these internal patches?!
After doing this OF creates patchZones and pointZones files.
Then I try to run the dynamic mesh solver and it complains about meshmodifiers. (a meshModifiers file isn't created, XXXZones files aren't updated due to the dynamicMeshDict)
May it be a bug (sorry for that formulation ;) that the dynamic mesh forgets to create the XXXZones files it needs, because of the fact, that in polyMesh-directory exist similar files resulting from the merge-process???
Or am I just to stupid to use the right tools?

Thank You

marico March 10, 2009 06:50

With silent cries and hope for
With silent cries and hope for attention I'm waiting for someone who knows how to deal with the linearValve(Layers)FvMesh...
So far I've created the meshModifiers and zones files manually and they seem to work.
When trying to run mesh deformation it appears:

Time = 0
Sliding interfaces decoupled
Coupling sliding interfaces
segmentation faultī

ARRGH.... 8-/

As described before my mesh consists of 3 regions... 2 of them form the "surrounding mesh" and one cylinder inside has to move...
I furthermore tried two other examples from the message board using the linearValveThings and they run.

And what is the *** pistonVelocity for???

Thank You

svogel March 10, 2009 13:10

Dear Marco, I am following
Dear Marco,

I am following the thread. I just know that
Tommaso is using this kind of technique.

Where are you located in Germany, I also want to be able to generate engine grids. (Tried it already with simple deformation using snappyhexmesh).

You could write me an email to

kind regards


lucchini March 11, 2009 09:33

Dear Marco, If you need mor
Dear Marco,

If you need more information or support about simulations of IC engines in OpenFOAM with valve and piston motion + topological changes, please contact me at my e-mail address.



sasanghomi April 14, 2013 07:18

Dear Dr.Luchinni,

I am simulating an engine with sonicTurbDyMEngineFoam and simpleEngineTopoFvMesh library ..
I imported the mesh from GAMBIT to openfoam But unfortunately when I ran the case I had an error Motion continuity errors ...

Starting time loop Courant Number mean: 0 max: 0 velocity magnitude: 0 deltaT = 2.6455e-06 Crank angle = 0.0238095 CA-deg CG: Solving for motionUx, Initial residual = 0, Final residual = 0, No Iterations 0 CG: Solving for motionUy, Initial residual = 0, Final residual = 0, No Iterations 0 CG: Solving for motionUz, Initial residual = 0.213596, Final residual = 0.000179652, No Iterations 20 CG: Solving for motionUx, Initial residual = 4.89248e-09, Final residual = 4.42683e-10, No Iterations 1 CG: Solving for motionUy, Initial residual = 0, Final residual = 0, No Iterations 0 CG: Solving for motionUz, Initial residual = 0.000100573, Final residual = 7.10585e-08, No Iterations 21 Volume: new = 48492.4 old = 48492.3 change = 0.0719435 Motion continuity errors : sum local = 1.22866e-15, maximum = 2.88108e-14 Floating point exception (core dumped)

How can I overcome this error?
I need your help...I sent you an email but unfortunately you didn't answer me.
I appreciate any help from you..

Thanks and best regards,

All times are GMT -4. The time now is 04:27.