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/)
-   -   Cyclic boundary condition (https://www.cfd-online.com/Forums/openfoam-solving/58345-cyclic-boundary-condition.html)

qtian November 11, 2008 17:26

Dear all I tried following tw
 
Dear all
I tried following two different ways to create cyclic boundary condition, but failed

I did search on the forum and could not find much information related to this. Can anyone please give me a hint? Thanks.

SidewallR and SidewallL are planar hybrid meshes.


Way 1:
I created two patches named SidewallR and SidewallL and after that I used createPatch to define the "logical patch". Here is the error and warning message I got.

Create polyMesh for time = 0

Reading createPatchDict

Copying patch wall-4 at position 0
Copying patch Inlet-5 at position 1
Copying patch TopWall-6 at position 2
Copying patch Outlet-7 at position 3
Copying patch SidewallR-8 at position 4
Copying patch SidewallL-9 at position 5
Adding new patch SidesCyclic of type cyclic as patch 6
Moving faces from patch SidewallL-9 to patch 6
Moving faces from patch SidewallR-8 to patch 6

Removing empty patch SidewallR-8
Removing empty patch SidewallL-9
Compacted patches:
wall-4 size:58164 start:7196504
Inlet-5 size:6328 start:7254668
TopWall-6 size:37164 start:7260996
Outlet-7 size:6328 start:7298160
SidesCyclic size:0 start:7304488
--> FOAM Warning :
From function min(const UList<type>&)
in file lnInclude/FieldFunctions.C at line 342
empty field, returning zero
--> FOAM Warning :
From function max(const UList<type>&)
in file lnInclude/FieldFunctions.C at line 322
empty field, returning zero
--> FOAM Warning :
From function min(const UList<type>&)
in file lnInclude/FieldFunctions.C at line 342
empty field, returning zero
--> FOAM Warning :
From function max(const UList<type>&)
in file lnInclude/FieldFunctions.C at line 322
empty field, returning zero


#0 Foam::error::printStack(Foam:http://www.cfd-online.com/OpenFOAM_D...part/proud.gifstream&)
#1 Foam::sigFpe::sigFpeHandler(int)
#2 Uninterpreted: [0xffffe420]
#3 Foam::globalPoints::coupledPoints(Foam::cyclicPoly Patch const&)
#4 Foam::globalPoints::receivePatchPoints(Foam::HashS et<int,> >&)
#5 Foam::globalPoints::globalPoints(Foam::polyMesh const&)
#6 Foam::globalMeshData::updateMesh()
#7 Foam::globalMeshData::globalMeshData(Foam::polyMes h const&)
#8 Foam::polyMesh::globalData() const
#9 Foam::polyMesh::resetPrimitives(int, Foam::Field<foam::vector<double> > const&, Foam::List<foam::face> const&, Foam::List<int> const&, Foam::List<int> const&, Foam::List<int> const&, Foam::List<int> const&, bool)
#10 Foam::polyTopoChanger::changeMesh(Foam::polyMesh&, Foam::polyTopoChange const&)
#11 Foam::repatchPolyTopoChanger::repatch()
#12 main
#13 __libc_start_main
#14 __gxx_personality_v0 at /usr/src/packages/BUILD/glibc-2.3/csu/../sysdeps/i386/elf/start.S:122
Floating point exception (core dumped)


Way 2:

I created one "logical patch" first with the meshing software. After I run couplePatch to reorder the face first time. It works and create another polymesh folder. After I replace the /constant/polymsh with the new one, I rerun couplePatch and got following error message.



--> FOAM FATAL ERROR : face 1350 and 10158 areas do not match by 197.906% -- possible face ordering problem#0 Foam::error::printStack(Foam:http://www.cfd-online.com/OpenFOAM_D...part/proud.gifstream&)
#1 Foam::error::abort()
#2 Foam::cyclicFvPatch::makeWeights(Foam::Field<doubl e>&) const
#3 Foam::surfaceInterpolation::makeWeights() const
#4 Foam::surfaceInterpolation::weights() const
#5 Foam::fvPatch::weights() const
#6 Foam::coupledFvPatchField<double>::evaluate()
#7 Foam::cyclicFvPatchField<double>::cyclicFvPatchFie ld(Foam::fvPatch const&, Foam::Field<double> const&, Foam::dictionary const&)
#8 Foam::fvPatchField<double>::adddictionaryConstruct orToTable<foam::cyclicfvpatchf ield<double> >::New(Foam::fvPatch const&, Foam::Field<double> const&, Foam::dictionary const&)
#9 Foam::fvPatchField<double>::New(Foam::fvPatch const&, Foam::Field<double> const&, Foam::dictionary const&)
#10 Foam::GeometricField<double,>::GeometricBoundaryFi eld::GeometricBoundaryField(Fo am::fvBoundaryMesh const&, Foam::Field<double> const&, Foam::dictionary const&)
#11 Foam::GeometricField<double,>::readField(Foam::Ist ream&)
#12 Foam::GeometricField<double,>::GeometricField(Foam ::IOobject const&, Foam::fvMesh const&)
#13 main
#14 __libc_start_main
#15 Foam::regIOobject::readIfModified()


From function cyclicFvPatch::makeWeights(scalarField& w) const
in file fvMesh/fvPatches/derivedFvPatches/cyclicFvPatch/cyclicFvPatch.C at line 58.

make November 12, 2008 01:46

If you like to create a cyclic
 
If you like to create a cyclic boundary keep care of two thinks first:

both sides have to be in one patch. So your first approach will not work.

Both sides have to fit absolutely to one transformation matrix. In icem for example you can define a mesh periodicity. In your second run the couplePatch seems to be complaining about that.

After you have a mesh which fits to both criterias convert it to a polyMesh and change the patch type in constante/polyMesh/boundary to cyclic, if you haven't yet. Then run couplePatches on it. After this the new mesh is in the time directory of your first time step. Copy that one to const/polyMesh. Finsished. Why did you run couplepatch a second time?

Hope I helped you,
Matthias

qtian November 12, 2008 20:23

Matthias, For the first way,
 
Matthias,
For the first way, I used createPatch to combine those two sides into one patch and define cyclic boundary condition. The error message is from createPatch. I have successfully defined a cyclic boundary condition for a simple geometry through this way. I don't know why it didn't work for this case.

For the second way, I did exactly what you mentioned. However it didn't work for me also. Maybe I didn't understand "Both sides have to fit absolutely to one transformation matrix." well. could you please explain more?

The reason I run couplePatch second time is because even though there is no error message for the first time I run couplePatch, the same error message will appear after I start my simulation.

The other thing I am worried about is the hybrid mesh (triangle and rectangular ) on both sides. Will this be the problem? The meshes on both sides are symmetry about Z=0 plane.

If anyone can answer me question, please do. I really appreciate your help.

mbeaudoin November 12, 2008 21:23

Hello Quinn, Are the two cy
 
Hello Quinn,

Are the two cyclic sides conformal (one-to-one matching) once you apply a proper transformation matrix (either rotation or translation)?

If so, the ordering of the faces for a cyclic patch is also important.

For a cyclic patch composed of "n" facets:

Master facet #0 has to match with shadow facet #n/2
Master facet #1 has to match with shadow facet #n/2+1

And so on.

Martin


All times are GMT -4. The time now is 05:52.