CFD Online Logo CFD Online URL
www.cfd-online.com
[Sponsors]
Home > Forums > Software User Forums > OpenFOAM > OpenFOAM Meshing & Mesh Conversion

[mesh manipulation] Issue with meshing an infinite swept wing using CyclicAMI

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

Reply
 
LinkBack Thread Tools Search this Thread Display Modes
Old   June 26, 2022, 06:02
Default Issue with meshing an infinite swept wing using CyclicAMI
  #1
New Member
 
pisharoti05
Join Date: Feb 2020
Posts: 10
Rep Power: 6
nainavinod is on a distinguished road
Hello Foamers!

I am trying ot mesh an infinite swept wing geometry such that the sides have a periodic boundary condition. I tried using the "cyclic" condition initially, however, due to the unstructured meshes being different on either side, it didn't work out. I found out that "cyclicAMI" would be a better fit for my case. My current workflow for the final mesh is:
1) blockMesh
2) surfaceFeatureExtract
3) snappyHexMesh
4) topoSet
5) createPatch

When I do a general mesh quality check with the "-allGeometry" flag, I get the following error in the end:

Code:
Calculating AMI weights between owner patch: Side1 and neighbour patch: Side2
AMI: Creating addressing and weights between 111996 source faces and 111341 target faces


--> FOAM FATAL ERROR:
Unable to set target face for source face 111995

    From virtual bool Foam::faceAreaWeightAMI::setNextFaces(Foam::label&, Foam::label&, Foam::label&, const Foam::bitSet&, Foam::labelList&, const Foam::DynamicList<int>&, bool) const
    in file AMIInterpolation/AMIInterpolation/faceAreaWeightAMI/faceAreaWeightAMI.C at line 347.

FOAM aborting

#0  Foam::error::printStack(Foam::Ostream&) at ??:?
#1  Foam::error::exitOrAbort(int, bool) at ??:?
#2  Foam::faceAreaWeightAMI::setNextFaces(int&, int&, int&, Foam::bitSet const&, Foam::List<int>&, Foam::DynamicList<int, 16> const&, bool) const at ??:?
#3  Foam::faceAreaWeightAMI::calcAddressing(Foam::List<Foam::DynamicList<int, 16> >&, Foam::List<Foam::DynamicList<double, 16> >&, Foam::List<Foam::DynamicList<Foam::Vector<double>, 16> >&, Foam::List<Foam::DynamicList<int, 16> >&, Foam::List<Foam::DynamicList<double, 16> >&, int, int) at ??:?
#4  Foam::faceAreaWeightAMI::calculate(Foam::PrimitivePatch<Foam::SubList<Foam::face>, Foam::Field<Foam::Vector<double> > const&> const&, Foam::PrimitivePatch<Foam::SubList<Foam::face>, Foam::Field<Foam::Vector<double> > const&> const&, Foam::autoPtr<Foam::searchableSurface> const&) at ??:?
#5  Foam::cyclicAMIPolyPatch::resetAMI(Foam::UList<Foam::Vector<double> > const&) const at ??:?
#6  Foam::cyclicAMIPolyPatch::AMI() const at ??:?
#7  ? at ??:?
#8  ? at ??:?
#9  __libc_start_main in /lib64/libc.so.6
#10  ? at ??:?
I tried looking this error up in the forum, but most of the suggestions are for moving/dynamic meshes. While, mine is a stationary case. I couldn't figure out where exactly I am going wrong. My boundary file is written as:
Code:
7
(
    Inlet
    {
        type            patch;
        nFaces          2016;
        startFace       35454828;
    }
    Outlet
    {
        type            patch;
        nFaces          2016;
        startFace       35456844;
    }
    Bottom
    {
        type            slip;
        inGroups        1(slip);
        nFaces          3780;
        startFace       35458860;
        faces           ( ( 0 1 5 4 ) );
    }
    Top
    {
        type            slip;
        inGroups        1(slip);
        nFaces          3780;
        startFace       35462640;
        faces           ( ( 3 7 6 2 ) );
    }
    Wing
    {
        type            wall;
        inGroups        1(wall);
        nFaces          145149;
        startFace       35466420;
    }
    Side1
    {
        type            cyclicAMI;
        inGroups        1(cyclicAMI);
        nFaces          111996;
        startFace       35611569;
        matchTolerance  0.0001;
        transform       unknown;
        neighbourPatch  Side2;
        AMIMethod       faceAreaWeightAMI;
        restartUncoveredSourceFace 1;
    }
    Side2
    {
        type            cyclicAMI;
        inGroups        1(cyclicAMI);
        nFaces          111341;
        startFace       35723565;
        matchTolerance  0.0001;
        transform       unknown;
        neighbourPatch  Side1;
        AMIMethod       faceAreaWeightAMI;
        restartUncoveredSourceFace 1;
    }
)
blockMeshDict file:
Code:
convertToMeters 1;

vertices
(
    ( -9.00   -7.20  -0.70 )  //0
    (  18.00  -7.20  -0.70 )  //1
    (  18.00   7.20  -0.70 )  //2
    ( -9.00    7.20  -0.70 )  //3

    ( -9.00   -7.20  0.70 )  //4
    (  18.00  -7.20  0.70 )  //5
    (  18.00   7.20  0.70 )  //6
    ( -9.00    7.20  0.70 )  //7
);

blocks
(
    hex (0 1 2 3 4 5 6 7) (270 144 14) simpleGrading (1 1 1)
);

edges
(

);

boundary
(
  
    Inlet
    {
	type    patch;
	faces   ((0 4 7 3));
    }
    Outlet
    {
	type	patch;
	faces	((1 2 6 5));
    }
    Bottom
    {
        type    slip;
        faces   ((0 1 5 4));
    }
    Top
    {
	type	slip;
        faces   ((3 7 6 2));
    }
    Sides
    {
        type    patch;
        //neighbourPatch  Side2;
        faces   ((0 3 2 1)
		 (4 5 6 7));
    }
   
)
topoSetDict file:
Code:
actions
(
    {
        name    Side2;
        type    faceSet;
        action  new;
        source  boxToFace;
        sourceInfo
        {
            box (-9 -7.2 0.69991)(18 7.2 0.70001);
        }
    }

    {
        name    Side1;
        type    faceSet;
        action  new;
        source  boxToFace;
        sourceInfo
        {
            box (-9 -7.2 -0.70001)(18 7.2 -0.69991);
        }
    }

);
And finally, the createPatchDict file:
Code:
pointSync false;

patches
(
    {
        // Name of new patch
        name Side1;

        // Dictionary to construct new patch from
        patchInfo
        {
            type cyclicAMI;
            neighbourPatch Side2;
     	    //matchTolerance 1e-04;
        }

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

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

    {
        // Name of new patch
        name Side2;

        // Dictionary to construct new patch from
        patchInfo
        {
            type cyclicAMI;
            neighbourPatch Side1;
   	    //matchTolerance 1e-04;
        }

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

        // If constructFrom = set : name of faceSet
        set  Side2;
    }
);
Let me know if more details on my case is required. Any help or suggestions would be greatly appreciated.
nainavinod is offline   Reply With Quote

Old   June 29, 2022, 06:09
Default
  #2
New Member
 
pisharoti05
Join Date: Feb 2020
Posts: 10
Rep Power: 6
nainavinod is on a distinguished road
I am still stuck on this issue and it would be great if someone can help me out.

Thanks,
Naina.
nainavinod is offline   Reply With Quote

Reply

Tags
cyclicami, periodic, snappyhexmesh

Thread Tools Search this Thread
Search this Thread:

Advanced Search
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 Off
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
[Gmsh] gmshToFoam generates patches with 0 faces and 0 points Simurgh OpenFOAM Meshing & Mesh Conversion 4 August 25, 2023 07:58
Dynamic Meshing for in plane morphing wing Aidan100 FLUENT 3 September 5, 2015 01:00
[GAMBIT] Meshing of flipper wing dv.darshan ANSYS Meshing & Geometry 9 May 21, 2012 01:38
Meshing related issue in Flow EFD appu FloEFD, FloWorks & FloTHERM 1 May 22, 2011 08:27
Swept Wing Meshing in Gambit nick FLUENT 0 August 12, 2007 00:39


All times are GMT -4. The time now is 17:15.