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/)
-   -   MRF foam problem (https://www.cfd-online.com/Forums/openfoam-solving/126931-mrf-foam-problem.html)

Hennet_m November 29, 2013 05:12

MRF foam problem
 
1 Attachment(s)
Hi everybody,

I am a pretty new user of OpenFoam and I will use this software to optimize the rotor of helicopters.

Well, I try to simulate a 3D rotating flow around a NACA0012 extruded on 16 meters.

In a first step, I have used Openscad for the 3D blade rotor and I have saved it in STL format. This file is in
constant/triSurface.

In blockMeshDict, I have created a big boxe and my 3D blade is in the center of the box.
The command blockMesh gives me the first mesh.

The commande surfaceFeatureExtract -includedAngle 150 constant/triSurface/rotor.Stl features extracted correctly
all points of the rotor.

In the snappyHexmeshDict, I have created severals zones in the geometry:

geometry
{
rotor.stl
{
type triSurfaceMesh;
name rotor;
}

refinementBox
{
type searchableBox;
min (-3.0 -1.0 -2.0);
max (3.0 1.0 20);
}

cylinder_search
{
type searchableCylinder;
point1 (0.5 -1 0);
point2 (0.5 1 0);
radius 20;
name cylinder_search;
}


};

In the refinementSurfaces, I have set:

refinementSurfaces
{
rotor
{
// Surface-wise min and max refinement level
level (4 5);

}

cylinder_search
{
level (2 2);
cellZone MRF;
faceZone MRF;
// cellZoneInside inside;
zoneInside true;
}

}

In refinementregion:

refinementRegions
{
refinementBox
{
mode inside;
levels ((1E15 2));
}
// cylinder_search
// {
// mode inside;
// levels((1E15 2));
// }

}

After I have done the command: snappyHexmesh -overwrite, the results seems to be ok.

I have big problems for the boundary conditions. When I execute the command simpleFoam to simulate the flow,
simpleFoam says me that the keybord "outlet" is undefined in the dictionnary. This is strange because this
boundarycondition is already defined...

Could somebody can help me to solve this problem? It will be very useful for me. You can find the entire case in
the attached file.

Thanks you very much,

Best regards,

Martin.

Ps: my english is not very fluent, I am French.

Antimony December 1, 2013 23:10

Hi,

I took a look at your case.

The issue is that in the 'p' file, you have missed out a semicolon after "value $internalField" for 'inlet'.

Put in the ; and you should be good to go I guess. :)

Regards,

Antimony

Hennet_m December 2, 2013 09:34

Hello Antimony :)

Thanks you for your answer, it helps me a lot. Now, the case seems to work and I have changed the boundary conditions.
It appears that I have correctly the rotation of the flow but I have some difficulties concerning the initials conditions.
Moreover, to make my simulation, I use SimpleFoam + fvOption. The fvOptions files included these lines:
MRF1
{
type MRFSource;
active true;
selectionMode cellZone;
cellZone rotor_OpenSCAD_Model;

MRFSourceCoeffs
{
origin (0.5 0 0);
axis (0 1 0);
omega 0; //rad per sec = 0 rpm
}

Do you agree whis this file ? (CellZone= name of the patch which is in rotation? )
It appears that when I change the value of omega, I don't notice any differences.

I have also declared a MRFZone file but when I execute MRFSimpleFoam, I have this error message:
-->FOAM FATAL IO ERROR
Expected a '(' while reading VectorSpace<Form, Cmpt, nCmpt>, found on lines 25 the word 'origin'

I noticed that I have this error when I try to run the mixerVessel2D tutorial.
Do you know if it is a bug?

Thanks a lot,
Best regards,

Martin

Hennet_m December 2, 2013 09:38

1 Attachment(s)
Sorry, Please find attached the case =)

Thanks

Martin

Antimony December 2, 2013 21:28

Hi,

Unfortunately, I am still on OF v2.1. So I really don't really have much idea about why you might be having this issue.

Sorry.

Regards,

Antimony

Hennet_m December 3, 2013 09:54

1 Attachment(s)
Hi!

Thanks you for your answer! I am also on OF 2.1. Concerning the rotating case, I have improved the work and I think that the results are better.

For the rotating initialisation, I have put, in the 0/U file the rotating boundary:

rotor_OpenSCAD_Model
{
type rotatingWallVelocity;
origin (0.5 0 0);
axis (0 1 0);
omega constant 8.25;
}

This condition, coupled at simpleFoam, correctly induced a rotating movement. However, I am not fully ok concerning the boundaries conditions. If someone has some time, could him have a look at this case and validate it?

Thanks by advance,

Best regards,

Martin

Antimony December 3, 2013 21:48

Hi,

OK. If you are using OF v2.1, then we are on the same platform then.

Well from what I understand, there are two ways to go about this.

1. If you are interested in only a rotational motion, like that of a wheel, then you can use the rotatingWallVelocity. For this you can just use the simpleFoam solver.

2. If you are interested in something like a stand fan where you need the suction and throw to be in particular directions, then it would seem that MRFSimpleFoam is the way to go. For the object that is going to be rotating (like the blades of the fan), you can just set fixedValue and uniform (0 0 0). The rotational aspect is taken care of by the definitions in the MRFZones file. The origin is preferably the center of the region that is going to be rotating and the axis is with respect to the overall origin (0 0 0)

Whether this is what is intended, I do not know. This is what I observed when I tried both.

Again a word of caution. This will work in OF v2.1 and NOT in OF v2.2. As far as I understand, v2.2 has stopped having separate solvers like MRFSimpleFoam and is instead made into a version with simpleFoam itself (and is activated with the fvOptions file)

Hope this helps.

Regards,

Antimony

Hennet_m December 4, 2013 12:15

Hi, thanks you for your answer.

In fact, I want to model a flow generated by an helicopter rotor. According to you, simpleFoam seems to be the correct choice.
Concerning my calculations, I have a little problem for the initials conditions and particulary, the pressure initial condition.

Because I model an incompressible flow, I have set up this file for the initialization of the pressure:


internalField uniform 0;

boundaryField
{
inlet
{
type zeroGradient;
}

outlet
{
type fixedValue;
value uniform 0;

}


lowerWall
{
type slip;

}

rotor_OpenSCAD_Model
{
type zeroGradient;


}

cylinder_search_region0
{
type cyclicAMI;
value nonuniform 0;

}

upperWall
{
type slip;


}

frontAndBack
{
type slip;
}

and for the U file :

inlet
{
type fixedValue;
value uniform (0.0 0 0); // Hoover flight
}


outlet
{
type zeroGradient;
}

lowerWall
{
type slip;
}

rotor_OpenSCAD_Model
{
type rotatingWallVelocity;
origin (0.0 0 0);
axis (0 1 0);
omega constant 330; //rad per sec = 10 RPM
}

cylinder_search_region0
{
type cyclicAMI;
value nonuniform 0;
}

upperWall
{
type slip;


}

frontAndBack
{
type slip;
}




}

Whit these results, I have the correct velocity on the blades but the pressure is very very low. I think I have done a mistake but I don't know where. Do you have any idea?

Thanks you very much,

Best regards,

Martin


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