CFD Online Logo CFD Online URL
www.cfd-online.com
[Sponsors]
Home > Forums > OpenFOAM

Regarding periodic BC in ICEM generated grid

Register Blogs Members List Search Today's Posts Mark Forums Read

Like Tree2Likes

Reply
 
LinkBack Thread Tools Display Modes
Old   December 20, 2012, 14:57
Default Similar problem with createPatch
  #21
New Member
 
Warren Lamont
Join Date: Nov 2012
Posts: 5
Rep Power: 4
wlamont is on a distinguished road
Hello,

I get the following error:
Code:
--> FOAM FATAL IO ERROR: 
"ill defined primitiveEntry starting at keyword 'patches' on line 49 and ending at line 159"

file: /home/wlamont/OpenFOAM/wlamont-2.1.1/run/dp73/system/createPatchDict at line 159.

    From function primitiveEntry::readEntry(const dictionary&, Istream&)
    in file lnInclude/IOerror.C at line 132.

FOAM exiting

Attached is my createPatchDict which is stored in my system folder:

Code:
/*--------------------------------*- C++ -*----------------------------------*\
| =========                 |                                                 |
| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
|  \\    /   O peration     | Version:  2.1.x                                 |
|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
|    \\/     M anipulation  |                                                 |
\*---------------------------------------------------------------------------*/
FoamFile
{
    version     2.0;
    format      ascii;
    class       dictionary;
    object      createPatchDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

// This application/dictionary controls:
// - optional: create new patches from boundary faces (either given as
//   a set of patches or as a faceSet)
// - always: order faces on coupled patches such that they are opposite. This
//   is done for all coupled faces, not just for any patches created.
// - optional: synchronise points on coupled patches.
// - always: remove zero-sized (non-coupled) patches (that were not added)

// 1. Create cyclic:
// - specify where the faces should come from
// - specify the type of cyclic. If a rotational specify the rotationAxis
//   and centre to make matching easier
// - always create both halves in one invocation with correct 'neighbourPatch'
//   setting.
// - optionally pointSync true to guarantee points to line up.

// 2. Correct incorrect cyclic:
// This will usually fail upon loading:
//  "face 0 area does not match neighbour 2 by 0.0100005%"
//  " -- possible face ordering problem."
// - in polyMesh/boundary file:
//      - loosen matchTolerance of all cyclics to get case to load
//      - or change patch type from 'cyclic' to 'patch'
//        and regenerate cyclic as above

// Do a synchronisation of coupled points after creation of any patches.
// Note: this does not work with points that are on multiple coupled patches
//       with transformations (i.e. cyclics).
pointSync false;

// Patches to create.
patches
(
    {
        // Name of new patch
        name per1a;

        // Dictionary to construct new patch from
        patchInfo
        {
            type cyclic;
            neighbourPatch per1b;
	    matchTolerance  0.1;

            // Optional: explicitly set transformation tensor.
            // Used when matching and synchronising points.
            transform rotational;
            rotationAxis (0 0 1);
            rotationCentre (0 0 0);
        }

        // How to construct: either from 'patches' or 'set'
        constructFrom patches;

        // If constructFrom = patches : names of patches. Wildcards allowed.
        patches (per1a-part_3-5450200-101_aero1v);

        // If constructFrom = set : name of faceSet
        set f0;
    }
    {
        // Name of new patch
        name per1b;

        // Dictionary to construct new patch from
        patchInfo
        {
            type cyclic;
            neighbourPatch per1a;
 	    matchTolerance  0.1;

            transform rotational;
            rotationAxis (0 0 1);
            rotationCentre (0 0 0);
        }

        // How to construct: either from 'patches' or 'set'
        constructFrom patches;

        // If constructFrom = patches : names of patches. Wildcards allowed.
        patches (per1b-part_3-5450200-101_aero1v);

        // If constructFrom = set : name of faceSet
        set f0;
    }


    {
        // Name of new patch
        name per1asolid;

        // Dictionary to construct new patch from
        patchInfo
        {
            type cyclic;
            neighbourPatch per1bsolid;
 	    matchTolerance  0.1;
            // Optional: explicitly set transformation tensor.
            // Used when matching and synchronising points.
            transform rotational;
            rotationAxis (0 0 1);
            rotationCentre (0 0 0);
        }

        // How to construct: either from 'patches' or 'set'
        constructFrom patches;

        // If constructFrom = patches : names of patches. Wildcards allowed.
        patches (per1a-part_3-solid);

        // If constructFrom = set : name of faceSet
        set f0;
    }
    {
        // Name of new patch
        name per1bsolid;

        // Dictionary to construct new patch from
        patchInfo
        {
            type cyclic;
            neighbourPatch per1asolid;
 	    matchTolerance  0.1;
            transform rotational;
            rotationAxis (0 0 1);
            rotationCentre (0 0 0);
        }

        // How to construct: either from 'patches' or 'set'
        constructFrom patches;

        // If constructFrom = patches : names of patches. Wildcards allowed.
        patches (per1b-part_3-solid;

        // If constructFrom = set : name of faceSet
        set f0;
    }

);
Any help would be greatly appreciated.
wlamont is offline   Reply With Quote

Old   December 21, 2012, 02:42
Default
  #22
Senior Member
 
maddalena's Avatar
 
maddalena
Join Date: Mar 2009
Posts: 436
Rep Power: 12
maddalena is on a distinguished road
Hi,
Code:
"ill defined primitiveEntry starting at keyword 'patches' on line 49 and ending at line 159"
says that something is wrong at line 49. Look at your line 49 and compare with this file: $FOAM_UTILITIES/mesh/manipulation/createPatch/createPatchDict.
See here as well.

mad
maddalena is offline   Reply With Quote

Old   April 21, 2013, 02:55
Default
  #23
New Member
 
Esmaeil Ahmadiyan
Join Date: Sep 2011
Posts: 26
Rep Power: 5
e.ahmadiyan is on a distinguished road
Hi dear Gabriel
I am same problem as you.
If you were successful in resolve this problem please give your experiences to me.
Thanks
__________________
Best regards

e.ahmadiyan
e.ahmadiyan is offline   Reply With Quote

Old   April 21, 2013, 04:34
Default
  #24
New Member
 
Qiang
Join Date: Mar 2012
Posts: 12
Rep Power: 5
wangqiangele is on a distinguished road
Hi,

I generated the periodic patches using createPatchDict with the following specifications. (where 25 is the distance between inlet and outlet)

Hope it helps~
Qiang

patches
(
name inletOutlet_half0;
patchInfo
{
type cyclic;
neighbourPatch inletOutlet_half1;
transform translational;
separationVector (25 0 0);
}
constructFrom patches;
patches (inlet);
set f0;
}
{
name inletOutlet_half1;
patchInfo
{
type cyclic;
neighbourPatch inletOutlet_half0;
transform translational;
separationVector (-25 0 0);
}
constructFrom patches;
patches (outlet);
set f0;
}
);

Quote:
Originally Posted by e.ahmadiyan View Post
Hi dear Gabriel
I am same problem as you.
If you were successful in resolve this problem please give your experiences to me.
Thanks
wangqiangele is offline   Reply With Quote

Old   April 21, 2013, 07:22
Default
  #25
New Member
 
Esmaeil Ahmadiyan
Join Date: Sep 2011
Posts: 26
Rep Power: 5
e.ahmadiyan is on a distinguished road
Hi dear Qiang
Thanks for your reply very much.
My geometry and createPatchDict file are as below:
Screenshot.jpg
createPatchDict.zip

When running the case this error reported:

This probably means your geometry is not consistent with the specified separation and might lead to problems.
Continuing with specified separation vector (0.0002 0 0.0002)
patchutlet1 neighbour:inlet1
--> FOAM Warning :
From function cyclicPolyPatch::calcTransforms()
in file meshes/polyMesh/polyPatches/constraint/cyclic/cyclicPolyPatch.C at line 368



In your mind are there any incorrect setting in createPatchDict file proportional to geometry?
What are separationVector and rotationAxis and rotationCentre ? please demonstrate for me. In fact I do not know how I should adjust this parameters in createPatchDict file proportional to my geometry.

All my case is as below
cyclic.zip

Thanks
__________________
Best regards

e.ahmadiyan

Last edited by e.ahmadiyan; April 21, 2013 at 08:18.
e.ahmadiyan is offline   Reply With Quote

Old   April 21, 2013, 08:50
Default
  #26
New Member
 
Qiang
Join Date: Mar 2012
Posts: 12
Rep Power: 5
wangqiangele is on a distinguished road
Hi,

I am not sure about your case.
Maybe you can specify
transform rotational;
rotationAxis ( 0 0 1 );//maybe(0 0 -1)
rotationCentre ( x y 0 );//specify [x,y] to your case to ensure that the outlet boundary meet the inlet boundary after 270 degrees rotation around the center (anticlockwise)

Best,
Qiang


Quote:
Originally Posted by e.ahmadiyan View Post
Hi dear Qiang
Thanks for your reply very much.
My geometry and createPatchDict file are as below:
Attachment 20981
Attachment 20982

When running the case this error reported:

This probably means your geometry is not consistent with the specified separation and might lead to problems.
Continuing with specified separation vector (0.0002 0 0.0002)
patchutlet1 neighbour:inlet1
--> FOAM Warning :
From function cyclicPolyPatch::calcTransforms()
in file meshes/polyMesh/polyPatches/constraint/cyclic/cyclicPolyPatch.C at line 368



In your mind are there any incorrect setting in createPatchDict file proportional to geometry?
What are separationVector and rotationAxis and rotationCentre ? please demonstrate for me. In fact I do not know how I should adjust this parameters in createPatchDict file proportional to my geometry.

All my case is as below
Attachment 20983

Thanks
wangqiangele is offline   Reply With Quote

Old   April 21, 2013, 09:22
Default
  #27
New Member
 
Esmaeil Ahmadiyan
Join Date: Sep 2011
Posts: 26
Rep Power: 5
e.ahmadiyan is on a distinguished road
Dear mad
Have you any more suggestion ?
__________________
Best regards

e.ahmadiyan
e.ahmadiyan is offline   Reply With Quote

Old   April 22, 2013, 08:00
Default
  #28
Senior Member
 
maddalena's Avatar
 
maddalena
Join Date: Mar 2009
Posts: 436
Rep Power: 12
maddalena is on a distinguished road
Quote:
Originally Posted by e.ahmadiyan View Post
Dear mad
Have you any more suggestion ?
(25 0 0) is NOT the separation vector between the two. inlet and outlet are rotated as well.

mad
maddalena is offline   Reply With Quote

Old   April 22, 2013, 09:01
Default
  #29
New Member
 
Esmaeil Ahmadiyan
Join Date: Sep 2011
Posts: 26
Rep Power: 5
e.ahmadiyan is on a distinguished road
Dear mad
What is your suggestion about my geometry and createPatchDict that I was mentioned in above post numbering 25? please
__________________
Best regards

e.ahmadiyan
e.ahmadiyan is offline   Reply With Quote

Old   April 22, 2013, 09:32
Default
  #30
Senior Member
 
maddalena's Avatar
 
maddalena
Join Date: Mar 2009
Posts: 436
Rep Power: 12
maddalena is on a distinguished road
Quote:
Originally Posted by e.ahmadiyan View Post
Dear mad
What is your suggestion about my geometry and createPatchDict that I was mentioned in above post numbering 25? please
My suggestion is to think once again to your case and to play a bit with createPatchDict. This is the way openFoam works.

mad
maddalena is offline   Reply With Quote

Old   April 30, 2013, 07:10
Default
  #31
Senior Member
 
Mojtaba.a's Avatar
 
Mojtaba Amiraslanpour
Join Date: Jun 2011
Location: Zanjan, Iran
Posts: 233
Rep Power: 7
Mojtaba.a is on a distinguished road
Send a message via Yahoo to Mojtaba.a
Hi guys,
I have a similar problem for defining cyclic boundary conditions but here for unstructured grids.

Well as you know cyclic boundary conditions defining is a bit different since OF 2.0.0, So as I understood, there is no need to use createPatch utility anymore. (Please correct me if I am wrong)

Here is the page for new features of OF 2.0.0:
http://www.openfoam.org/version2.0.0/meshing.php

as you can see, cyclic boundary conditions are defined like this (in boundary file):

patch0_half0
{
type cyclic;
nFaces 256;
startFace 11520;
matchTolerance 0.0001;
neighbourPatch patch0_half1;
}
patch0_half1
{
type cyclic;
nFaces 256;
startFace 11776;
matchTolerance 0.0001;
neighbourPatch patch0_half0;
}


So I did the same work and defined my cyclic patches like this:

inlet
{
type cyclic;
nFaces 543;
startFace 281225;
matchTolerance 0.0001;
neighbourPatch outlet;
}

outlet
{
type cyclic;
nFaces 530;
startFace 281768;
matchTolerance 0.0001;
neighbourPatch inlet;
}

but there is a problem here. As you can see, the number of faces is different between inlet and outlet patches. one is 543 and the other is 530.
by running checkMesh I get the following error:

--> FOAM FATAL ERROR:
For patch inlet there are 543 face centers, for the neighbour patch outlet there are 530

So its needed to make these numbers equal. But how is that possible for unstructured grids? any suggestions is greatly appreciated.

FYI: I am using ICEM to generate the mesh.

Thanks,
Mojtaba
__________________
Complex Heat & Flow Simulation Research Group
If you can't explain it simply, you don't understand it well enough. "Richard Feynman"
Mojtaba.a is offline   Reply With Quote

Old   April 30, 2013, 10:09
Default
  #32
Senior Member
 
maddalena's Avatar
 
maddalena
Join Date: Mar 2009
Posts: 436
Rep Power: 12
maddalena is on a distinguished road
Quote:
Originally Posted by Mojtaba.a View Post
So its needed to make these numbers equal. But how is that possible for unstructured grids? any suggestions is greatly appreciated.
Simple. create them equal in your meshing software...
Copy-paste worked as a charm in the past for me.

mad
Mojtaba.a likes this.
maddalena is offline   Reply With Quote

Old   April 30, 2013, 14:46
Default
  #33
Senior Member
 
Mojtaba.a's Avatar
 
Mojtaba Amiraslanpour
Join Date: Jun 2011
Location: Zanjan, Iran
Posts: 233
Rep Power: 7
Mojtaba.a is on a distinguished road
Send a message via Yahoo to Mojtaba.a
Quote:
Originally Posted by maddalena View Post
Simple. create them equal in your meshing software...
Copy-paste worked as a charm in the past for me.

mad
Thank you maddalena, I will try. beginner in ICEM
But am I correct? Is there any need of createPatch utility for cyclic patches anymore?
__________________
Complex Heat & Flow Simulation Research Group
If you can't explain it simply, you don't understand it well enough. "Richard Feynman"
Mojtaba.a is offline   Reply With Quote

Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
[ICEM] Exporting Grid Volumes/Areas from ICEM to Calculate Discretization Error Josh ANSYS Meshing & Geometry 4 May 20, 2010 13:40
2D periodic from ICEM to FLUENT Markus FLUENT 1 August 11, 2008 07:13
How make a .gtm grid for pre-CFX using ICEM ????? IGNA CFX 2 January 24, 2007 09:36
Problems in grid generation in ICEM Tim CFX 1 September 30, 2006 06:43
How to import grid generated using ICEM/CFD Harry CD-adapco 2 April 17, 2006 00:01


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