CFD Online Discussion Forums

CFD Online Discussion Forums (https://www.cfd-online.com/Forums/)
-   OpenFOAM Meshing & Mesh Conversion (https://www.cfd-online.com/Forums/openfoam-meshing/)
-   -   [mesh manipulation] Cyclic Mesh Error (https://www.cfd-online.com/Forums/openfoam-meshing/109253-cyclic-mesh-error.html)

vbchris November 13, 2012 11:16

Cyclic Mesh Error
 
Hi all,

I am wondering if anyone has run into this error in OpenFoam 2.1.1
I am attempting to set two faces as cyclic boundaries.
The cyclic boundaries are not defined in either the 0/p or 0/U files.

Error received when running decomposePar or icoFoam:

--> FOAM FATAL IO ERROR:
Cannot find patchField entry for cyclic left
Is your field uptodate with split cyclics?
Run foamUpgradeCyclics to convert mesh and fields to split cyclics.

file: OpenFOAM/chris-2.1.1/run/rcup/0/p::boundaryField from line 25 to line 44.

From function GeometricField<Type, PatchField, GeoMesh>::
GeometricBoundaryField::GeometricBoundaryField
(
const BoundaryMesh&,
const DimensionedField<Type, GeoMesh>&,
const dictionary&
)

Cyclic entries in Boundry File:

left
{
type cyclic;
nFaces 8200;
startFace 962844;
matchTolerance 0.0001;
neighbourPatch right;
}
right
{
type cyclic;
nFaces 8200;
startFace 971044;
matchTolerance 0.0001;
neighbourPatch left;
}

Block Mesh Dict File:

left
{

type cyclic;
neighbourPatch right;
faces
(
(138 140 2 0 )
...

);
}

right
{

type cyclic;
neighbourPatch left;
faces
(
(138 139 1 0 )
...
);
}


Running foamUpgradeCyclics makes no changes:

Reading boundary from "OpenFOAM/chris-2.1.1/run/rcup/constant/polyMesh/boundary"
Detected 0 old cyclics.

No changes made to boundary file.

Time: 0
Loading field p
No changes made to field p

Loading field U
No changes made to field U



Thanks,

Chris

Lieven November 13, 2012 18:09

Dear Chris,

I'm not familiar with the error but nevertheless saying that "The cyclic boundaries are not defined in either the 0/p or 0/U files." surprises me a bit.
If you want to use the cyclic boundary condition, you need to set the type of corresponding boundary in 0/p and 0/U (and possible other files) also to cyclic.

Cheers,

L

james80 November 14, 2012 04:00

Chris,

I also got this error message, one thing is in your 0 folder what boundary conditions have you set for 'left' and 'right' in all the p U K epsilon files etc, i believe the should all be

right
[
type cyclic;
]

My simulation ran after making this change! But when it tried to seed particles during running I got this error message which i have no idea about! Is anyone familiar with:

Seeded 0 particles.
[1]
[1]
[1] --> FOAM FATAL ERROR:
[1] More than one patch accessing the same transform but not of the same sign.
patch:cyc_half0 transform:0 sign:1 current transforms:(1 0 0)
[1]
[1] From function Foam::label Foam::globalIndexAndTransform::addToTransformIndex
(
const label,
const label,
const bool
) const
[1]
[1] in file lnInclude/globalIndexAndTransformI.H at line 240.
[1]
FOAM parallel run exiting
[1]
--------------------------------------------------------------------------
MPI_ABORT was invoked on rank 1 in communicator MPI_COMM_WORLD
with errorcode 1.

NOTE: invoking MPI_ABORT causes Open MPI to kill all MPI processes.
You may or may not see output from other processes, depending on


Thanks

James

vbchris November 14, 2012 11:45

Thanks,

After a nights sleep I also realized adding

left
{
type cyclic;
}
right
{
type cyclic;
}

to 0/p and 0/u would fix it.

As for the transform issue. I get the same error when trying to view results in paraview. Turning off interpolate before importing volume fields seems to resolve this. I think I read somewhere that its an error from the way the cyclics are defined in blockMesh.

The thread advised using createPatch to define cyclic BC's to resolve the issue, I'll be looking into it later and will let you know what turns up.

vbchris November 15, 2012 13:04

Step by Step to blockMesh cyclic patches
 
I just sorted the last issue with running cyclics in parallel and after reading many threads on cyclic patch problems I wanted to update with my solution. Also, this is aimed at newcomers like myself so I will attempt to be detailed.
EDIT: Please correct or expand on anything I've stated here, I am just trying to consolidate some of the issued I had with cyclic patches.


1)

My cyclic patches are 'left' and 'right' in my case.

in case/constant/blockMeshDict

instead of wall or patch use the cyclic type. Include the following parameters.
I found adding rotationAxis, rotationCentre, matchTolerance prevented the checkMesh error on my tolerance being to high on these patches.

right
{
type cyclic;
neighbourPatch left; //the patch to pair to create the cyclic BC
rotationAxis (0 0 1); // axis about which the geometry is symmetric
rotationCentre (0 0 0); // point along the axis of rotation
matchTolerance 0.0001; // tolerance - not sure about upper/lower limits for this used default

faces
(
(138 139 1 0 ) list of faces. must be in same order on left and right. blockMesh will throw an error is this is not done right I believe.
)
}

left
{
type cyclic;
neighbourPatch right; //the patch to pair to create the cyclic BC
rotationAxis (0 0 1); // axis about which the geometry is symmetric
rotationCentre (0 0 0); // point along the axis of rotation
matchTolerance 0.0001; // tolerance - not sure about upper/lower limits for this used default

faces
(
(1340 141 2 0 ) list of faces. must be in same order on left and right. blockMesh will throw an error is this is not done right I believe.
)
}

2)

Add BC to any files in case/0

left
{
type cyclic;
}

right
{
type cyclic;
}


3)

IF running solver in -parallel add the following lines to decomposeParDict

preservePatches (left);
preservePatches (right);


This will prevent decomposePar from messing (sorry for lack of clarity) with the cyclic patches after being defined in blockMeshDict.

4)

RUN!


All times are GMT -4. The time now is 22:01.