CFD Online Discussion Forums (https://www.cfd-online.com/Forums/)
-   OpenFOAM Running, Solving & CFD (https://www.cfd-online.com/Forums/openfoam-solving/)
-   -   Cyclic Boundary Condition (https://www.cfd-online.com/Forums/openfoam-solving/58041-cyclic-boundary-condition.html)

 Luiz Eduardo Bittencourt Sampaio (Sampaio) January 28, 2005 01:28

Hi all, If I define two plan

Hi all,
If I define two planes (paralel planes) as cycle boundaries, I know the velocity will be the same in the "periodic" points. But what about the pressure? Will it be periodic also? Or is its gradient that is periodic?

(I tried to dig into the code to try to figure out this myself, but I think I am still not able to do that... Where should I look for this thing? Should be in the routines that construct the matrix right? Where exactly?)

Thanks,
Luiz

 Eugene de Villiers (Eugene) January 28, 2005 09:35

A cyclic boundary is periodic

A cyclic boundary is periodic for all properties.

The matrix is constructed by fvMatrix. Check the Doxygen documentation.

 Luiz Eduardo Bittencourt Sampaio (Sampaio) January 28, 2005 14:53

Then the pressure force (-gra

Then the pressure force (-grad p) is not necessarely continuos, is it?
Shouldn't we impose continuity (periodicity) on grad p also? So that we can simulate a developed channel, for instance?

Sorry if this is a stupid question... http://www.cfd-online.com/OpenFOAM_D...lipart/sad.gif

 Henry Weller (Henry) January 28, 2005 15:20

Take a look at channelOodles

Take a look at channelOodles in which the mean pressure gradient is abstracted from p and handled explicitly so that the remaining "p" field is cyclic between the "inlet" and "outlet" of the channel. The mean pressure gradient is obtained directly from the momentum equation such that the mass-flux remains constant.

 Brandon Field (Field) February 10, 2005 17:55

Hi, I hope you don't mind

Hi,

I hope you don't mind if I pick this thread back up, since it is clearly the area where my question falls.

If I were to try to incorporate this into a multi-phase simulation, could I just copy the createGradP.H and writeGradP.H files and make the appropriate changes to the interFoam.C file (including the modifications to the governing equations) and then re-compile interFoam into something like channelInterFoam? Or is this implementation specific to anything in single-phase or turbulence and thus cause problems with the two-phases?

thanks,
brandon.

 Hrvoje Jasak (Hjasak) February 10, 2005 19:18

Close enough - something like

Close enough - something like that should work.

 Brandon Field (Field) February 15, 2005 11:36

I'm a little confused about t

I'm a little confused about the Ubar vector in the channelOodles solver... the comment in readTransportProperties says that it's the centerline velocity. However, the overbar on a velocity for channel flow usually means cross-sectional average. I'm trying to make two-phase channel flow, and I've got two different velocities for the two different phases. The centerline of the channel is all one phase, so if it were really centerline velocity I could use that, but if it's an average, I need to figure out the average velocity to keep the mass flow rate what it should be...

So, my question is: is Ubar a centerline velocity or a cross-sectional average?

thanks,
brandon.

p.s. Anyone interested in including channel flow into a solver should note that the channelOodles momentum equation is cast for constant density, so the gradP dimensions are [m/s^2]. If you need to leave rho in the momentum equation, you'll need to change the dimensions on gradP.

 Henry Weller (Henry) February 15, 2005 11:38

Ubar is the cross-sectional a

Ubar is the cross-sectional average.

 ma404 January 14, 2009 07:59

Hi, I am going to simmulate

Hi,

I am going to simmulate two phase in channel flow.So, can you help me which tutorial of OpenFOAM 1.5 is suitable to start with because I am new in OpenFOAM

thanks,

mansuor

 mahendra January 22, 2009 04:41

Dear Foamers Hi, Can I get

Dear Foamers Hi,

Can I get a tutorial case having cyclic boundary conditions made on a mesh imported from Gambit/Fluent?

I am finding it quite tough to create a case having cyclic boundaries and running it in OpenFOAM-1.5.

Looking forward to hear from you http://www.cfd-online.com/OpenFOAM_D...part/happy.gif

Regards,
Mahendra

 hellorishi January 28, 2009 05:51

Hello Mahendra, Can you exp

Hello Mahendra,

Can you explain what it the current difficulty in your mesh import from Fluent?

I am also working on Fluent mesh to OF-1.5, with cyclic BC. Maybe I can provide some input, based on the problem description.

 jens_klostermann January 28, 2009 06:31

Hi Mahendra Check if your

Hi Mahendra

Check if your mesh is conformal, OF-1.5 currently is not supporting cyclics on nonconformal meshes as Fluent does. If you use a nonconformal mesh you need OF-1.5-dev.

Jens

 naish January 28, 2009 07:11

Hi ! I had the same Problem w

Hi !
I had the same Problem with importing from Fluent.
Yesteday I solved it.
Be sure that the BC are cyclic in fluent, renumber the Mesh before saving .
I don`t know if it is necessary but name the cyclic patche so tht they are in alphabetic order that the face numbering is correct.
Go to the end of the .msh file change the cyclics to normal walls.

Now import it by fluent3DMeshToFoam (fluentMeshTo Foam did not work)

And Change in polyMesh/boundaries the types back to cyclic and in every file 0 p ...

 mcjicpm2 May 28, 2009 10:05

Problem in cyclic boundary condition

Hi, I am having difficulty in creating cyclic boundary condition, I have done it this way:
1- I created a mesh in Gambit (Quarter of a cylinder) and I called the two planes symmetrya and symmetryb. and I set them to be symmetry for periodic bc.
2-set the writePrecision in system/controlDict to 12.
3-In the end of *.msh file I saw
(0 "Cells:")
(12 (0 1 5eb78 0))
(12 (2 1 5eb78 1 4))

(0 "Zones:")
(45 (2 fluid fluid)())
(45 (3 mass-flow-inlet ariinlet2)())
(45 (4 symmetry symmetryb)())
(45 (5 symmetry symmetrya)())
(45 (6 pressure-outlet outlet)())
(45 (7 wall wall)())
(45 (8 mass-flow-inlet airinlet1)())
(45 (9 mass-flow-inlet fuelinlet)())
(45 (11 interior default-interior)())

I did not change anything here, and leave it as it is.
3-then I ran fluentMeshTofoam *.msh :

Building boundary and internal patches.
Creating patch 0 for zone: 3 start: 1 end: 25 type: mass-flow-inlet name: ariinlet2
Creating patch 1 for zone: 4 start: 26 end: 10345 type: symmetry name: symmetryb
Creating patch 2 for zone: 5 start: 10346 end: 20665 type: symmetry name: symmetrya
Creating patch 3 for zone: 6 start: 20666 end: 23898 type: pressure-outlet name: outlet
Creating patch 4 for zone: 7 start: 23899 end: 34233 type: wall name: wall
Creating patch 5 for zone: 8 start: 34234 end: 34263 type: mass-flow-inlet name: airinlet1
Creating patch 6 for zone: 9 start: 34264 end: 34306 type: mass-flow-inlet name: fuelinlet
Creating patch 7 for zone: 11 start: 34307 end: 1181033 type: interior name: default-interior
Adding new patch ariinlet2 of type patch as patch 0
Adding new patch symmetryb of type symmetryPlane as patch 1
Adding new patch symmetrya of type symmetryPlane as patch 2
Adding new patch outlet of type patch as patch 3
Adding new patch wall of type wall as patch 4
Adding new patch airinlet1 of type patch as patch 5
Adding new patch fuelinlet of type patch as patch 6
Patch default-interior is internal to the mesh and is not being added to the boundary.

Default patch type set to empty

Writing mesh... to "constant/polyMesh" done.

End

4-It creates in the constant/polymesh ---> boundary :

7
(
ariinlet2
{
type patch;
nFaces 25;
startFace 1146727;
}
symmetryb
{
type symmetryPlane;
nFaces 10320;
startFace 1146752;
}
symmetrya
{
type symmetryPlane;
nFaces 10320;
startFace 1157072;
}
outlet
{
type patch;
nFaces 3233;
startFace 1167392;
}
wall
{
type wall;
nFaces 10335;
startFace 1170625;
}
airinlet1
{
type patch;
nFaces 30;
startFace 1180960;
}
fuelinlet
{
type patch;
nFaces 43;
startFace 1180990;
}
)

5-then I define the createPatchDict in /system and within that I have:
matchTolerance 1E-3;
pointSync true;
patches
(
{
name symmetrya;

type cyclic;

constructFrom patches;

patches (symmetrya symmetryb);
}
);

6-then I ran createPatch, this was the outcome:
Create time

Using relative tolerance 0.001 to match up faces and points

Create polyMesh for time = 0

Moving faces from patch symmetrya to patch 2
Moving faces from patch symmetryb to patch 2

Doing topology modification to order faces.

Synchronising points.
Points changed by average:0 max:0

Removing patches with no faces in them.

Removing empty patch symmetryb at position 1
Removing patches.
Writing repatched mesh to 1

End
7-It creates a folder /1/polyMesh and within that:
[]\$ ls
boundary cellZones faces faceZones neighbour owner points pointZones

8-vi boundary :
6
(
ariinlet2
{
type patch;
nFaces 25;
startFace 1146727;
}
symmetrya
{
type symmetryPlane;
nFaces 20640;
startFace 1146752;
}
outlet
{
type patch;
nFaces 3233;
startFace 1167392;
}
wall
{
type wall;
nFaces 10335;
startFace 1170625;
}
airinlet1
{
type patch;
nFaces 30;
startFace 1180960;
}
fuelinlet
{
type patch;
nFaces 43;
startFace 1180990;
}
)

8-I copy all the contents of this folder to constant/polymesh/

9- I did changed the symmetryplane type now to cyclic for symmetrya

10-I did the simpleFoam and I received this error:

Create time
Create mesh for time = 0
face 0 area does not match neighbour 10320 by 21.8435% -- possible face ordering problem.
patch:symmetrya my area:0.000277 neighbour area:0.000344925 matching tolerance:0.001
Mesh face:1146752 vertices:4((0 0 0.1123) (0.05 0 0.1123) (0.05 0 0.11784) (0 0 0.11784))
Neighbour face:1157072 vertices:4((0 0.043315 0) (0 0.0502135 0) (0.05 0.0502135 0) (0.05 0.043315 0))

From function cyclicPolyPatch::calcTransforms()
in file meshes/polyMesh/polyPatches/constraint/cyclic/cyclicPolyPatch.C at line 150.

FOAM exiting

Can anyone help me with this problem?

 AirS November 6, 2009 07:05

did you manage to solve it ?
I tried everything but it still doesn't work.
Thank you.

 Marta November 21, 2009 13:02

Modified cyclic boundary

Hi, dear Foamers!
I'm trying to modify the cyclic boundary condition for velocity. I want only the velocity component normal to the cyclic patch to be transferred to the other coupled patch, therefore I thought of using the inner product between the velocity components at the cyclic boundaries and the normals to the boundary faces.

I wrote the new modified boundary code, but I got the following problem:

error: no match for ‘operator=’ in ‘((Foam::Field<Foam::SphericalTensor<double> >*)n)->Foam::Field<Foam::SphericalTensor<double> >::<anonymous>.

I think that the problem is related to my parameters types and I saw that the template member function uses tensor fields.

Maybe someone can explain to me how OpenFOAM is able to distinguish among scalarFields, tensorFields and vectorFields, since the template only accounts for tensors (which is the most general case), and I'm not able to correct my mistake!

Marta

 Marta November 28, 2009 15:22

Hi, Foamers,
I finally managed to solve the problem I had in modifying the original cyclic boundary condition by using explicit casts, even if I'm not quite sure this is the only way to get through my compiler error...
Now everything seems to work!

Bye bye!

Marta

 AirS December 7, 2009 05:55

Hi all,

I used createPatch to create a cyclic boundary condition and then when I use changeDictionary (for directMapped), I can see that "value uniform 0;" has been added below "type cyclic" in the boundary file .....
What does that mean ? Do I need to leave it like that or do I need to remove "value uniform 0" which doesn't make sense for a cyclic BC?

Thanks!

 Marta December 7, 2009 06:30

Hi AirS,
I don't think that is a problem for your simulation, because uniform 0 is just the initial value used, but during the simulation the boundary condition will be a traditional cyclic.
To be sure that there is no difference in the final solution, you can perform a simple test:
use the traditional cyclic boundary condition with and without the 'value uniform 0' specification, then see if the result changes.

Anyway I used these specifications for my new cyclic boundary condition for velocity and everything worked correctly:

type spongeCyclic;
patchType cyclic;
value uniform (0 0 0);

Hope this helps!

Marta

 AirS December 8, 2009 06:28

Thanks Marta.

All times are GMT -4. The time now is 18:07.