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 with same geometric size but different number of faces? (https://www.cfd-online.com/Forums/openfoam-solving/99988-cyclic-boundary-same-geometric-size-but-different-number-faces.html)

strikeraj April 17, 2012 21:53

cyclic boundary with same geometric size but different number of faces?
 
Hi

I am just wondering if this is possible.
I have a 3D rectangular domain. It is meshed in ICEM with unstructured grid, save to fluent .msh and converted in openfoam using fluent3DMeshToFoam.
But when I try to run it, it says the number of faces does not match on the two patches that I set as cyclic. Is there a way to work this out without remeshing the faces with a structured grid? If not, does my way of generating and exporting mesh works when I put a structured surface mesh on both sides?

Thanks in advance

Cheers,
Tom

strikeraj May 6, 2012 16:16

sorry to bump this up but can anyone give me an idea on how to put on cyclic BC on an unstructured mesh?

Many thanks

danishdude May 7, 2012 10:50

The original cyclic condition requires point matched faces. However, the cyclicAMI condition allows you to use a cyclic condition without point matching. It's available in OF 2.1.

brunotojo May 8, 2012 12:44

Yes, it is possible. In ICEM you need to define the mesh as periodic in Mesh>Global Mesh Setup>Set up periodicity.

And then, after converting to OpenFoam format, you will need to use createPatch (there are a lot of post about this here) to define your periodic boundary.

I am also new to OpenFoam so, I am not sure if this will work for every case, but for me it did.

Best regards,
Bruno

strikeraj May 8, 2012 12:46

Thanks Michael and Bruno for your reply.
I will take a look into both methods after I finish my work on hand and I will let you know how it works out

strikeraj May 15, 2012 18:58

1 Attachment(s)
Quote:

Originally Posted by danishdude (Post 359760)
The original cyclic condition requires point matched faces. However, the cyclicAMI condition allows you to use a cyclic condition without point matching. It's available in OF 2.1.

Hi Michael

I have just tried my case with the cyclicAMI BC and it works if i run it serial.
But when I try to use decomposePar and run in parallel with mpirun, error occurs. Do you have clue on what might be wrong?

Thanks very much for your time

Cheers,
Tom

attached is the error log file

danishdude May 16, 2012 11:10

Any chance you can upload the case somewhere so I can take a closer look? If it's not too big, you can e-mail it to me at mahlmann@ucdavis.edu

alquimista May 21, 2012 07:02

Hello,

I had the same questions months ago and in my opinion the best option was to use the extend version of OpenFOAM. It has General Interface Grid implemented. There's more information available on internet.

https://cmg.soton.ac.uk/community/at...LloydAug11.pdf
http://www.tfd.chalmers.se/~hani/kur...dy_2010_OP.pdf

Good luck.

strikeraj May 21, 2012 10:43

Update:

I have posted this on the bug tracker and got a reply with working solution:

Quote:

The AMI assumes the patches are collocated - if not you have to specify the 'transform' type. (This does not affect serial running since it uses a different code path).

Add transform=translational and a separationVector to your constant/polyMesh/boundary file and it should work:

CYCLIC1
{
type cyclicAMI;
neighbourPatch CYCLIC2;
transform translational;
separationVector (0 0 -0.0914);
nFaces 9824;
startFace 593664;
}

CYCLIC2
{
type cyclicAMI;
neighbourPatch CYCLIC1;
transform translational;
separationVector (0 0 0.0914);
nFaces 11028;
startFace 615000;
}

swapnilsalokhe December 13, 2013 12:35

decompose par for cyclicAMI bc
 
Hi Tom Li,

When you are using any cyclic boundary in decomposePar you have to set both cyclic planes on one processor then only it will work on parallel processors.


Quote:

Originally Posted by strikeraj (Post 361306)
Hi Michael

I have just tried my case with the cyclicAMI BC and it works if i run it serial.
But when I try to use decomposePar and run in parallel with mpirun, error occurs. Do you have clue on what might be wrong?

Thanks very much for your time

Cheers,
Tom

attached is the error log file


neilk August 16, 2018 15:38

Quote:

Originally Posted by strikeraj (Post 362232)
Update:

I have posted this on the bug tracker and got a reply with working solution:

Hello.
I am trying to simulate for over a bifurcating channel with surface film on it. The solver I'm trying to use is reactingParcelFilmFoam. But i face the following error:

AMI: Creating addressing and weights between 56 source faces and 101 target faces
--> FOAM Warning :
From function void Foam::AMIMethod<SourcePatch, TargetPatch>::checkPatches() const [with SourcePatch = Foam::PrimitivePatch<Foam::face, Foam::SubList, const Foam::Field<Foam::Vector<double> >&>; TargetPatch = Foam::PrimitivePatch<Foam::face, Foam::SubList, const Foam::Field<Foam::Vector<double> >&>]
in file lnInclude/AMIMethod.C at line 57
Source and target patch bounding boxes are not similar
source box span : (0.05119999904 0.05118754041 1.52368e-006)
target box span : (0.1997277537 0.04618446137 0.0378344416)
source box : (-0.02559999952 -0.02559712399 -0.1000011034) (0.02559999952 0.02559041642 -0.09999957972)
target box : (-0.09986398835 -0.02308501394 0.1047726057) (0.0998637653 0.02309944743 0.1426070473)
inflated target box : (-0.1102869948 -0.03350802035 0.09434959929) (0.1102867717 0.03352245384 0.1530300537)


--> FOAM FATAL ERROR:
Unable to find initial target face

From function bool Foam::AMIMethod<SourcePatch, TargetPatch>::initialise(Foam::labelListList&, Foam::scalarListList&, Foam::labelListList&, Foam::scalarListList&, Foam::label&, Foam::label&) [with SourcePatch = Foam::PrimitivePatch<Foam::face, Foam::SubList, const Foam::Field<Foam::Vector<double> >&>; TargetPatch = Foam::PrimitivePatch<Foam::face, Foam::SubList, const Foam::Field<Foam::Vector<double> >&>; Foam::labelListList = Foam::List<Foam::List<int> >; Foam::scalarListList = Foam::List<Foam::List<double> >; Foam::label = int]
in file lnInclude/AMIMethod.C at line 127.

FOAM aborting

For creating the surface film I use extrudeToRegionMesh. Is there any way to run this case without having the new surface films boundaries as cyclic? The polymesh generated by default after extrudeToRegionMesh is as follows:

(
INLET
{
type patch;
nFaces 56;
startFace 23224;
}
OUTLETS
{
type patch;
nFaces 101;
startFace 23280;
}
wallFilmFaces_top
{
type patch;
nFaces 15535;
startFace 23381;
}
region0_to_wallFilmRegion_wallFilmFaces
{
type mappedWall;
inGroups 1(wall);
nFaces 15535;
startFace 38916;
sampleMode nearestPatchFace;
sampleRegion region0;
samplePatch region0_to_wallFilmRegion_wallFilmFaces;
offsetMode nonuniform;
offsets nonuniform List<vector>

Thank you

RobertHB August 17, 2018 04:12

You could try using cyclicACMI instead of plain AMI or work with the BC's transform/rotate/translate entry to align your patches.

neilk August 17, 2018 11:10

Quote:

Originally Posted by RobertHB (Post 702952)
You could try using cyclicACMI instead of plain AMI or work with the BC's transform/rotate/translate entry to align your patches.

Hey,

I did try using cyclicACMI but it gave me the following error:

--> FOAM FATAL ERROR:
Inconsistent ACMI patches INLET and region0_to_wallFilmRegion_wallFilmFaces. Patches should have identical topology

From function virtual Foam::label Foam::cyclicACMIPolyPatch::nonOverlapPatchID() const
in file AMIInterpolation/patches/cyclicACMI/cyclicACMIPolyPatch/cyclicACMIPolyPatch.C at line 481.


And if I do want to transform the boundary, I'm not sure how to go about it as the outlets are diverging in the opposite directions. My geometry is something along these lines.

https://www.google.com/search?rlz=1C...K_ZQadEpl-Q8UM

Will transforming the boundary here, physically alter my actual mesh and geometry?

Thank you


All times are GMT -4. The time now is 13:59.