CFD Online Discussion Forums

CFD Online Discussion Forums (http://www.cfd-online.com/Forums/)
-   OpenFOAM Native Meshers: snappyHexMesh and Others (http://www.cfd-online.com/Forums/openfoam-meshing-snappyhexmesh/)
-   -   Parts of Geometry not meshed by snappyHexMesh (http://www.cfd-online.com/Forums/openfoam-meshing-snappyhexmesh/104215-parts-geometry-not-meshed-snappyhexmesh.html)

Turbulence July 5, 2012 06:23

Parts of Geometry not meshed by snappyHexMesh
 
1 Attachment(s)
Hi Everyone,
I am currently trying to simulate free round jet flow. If the jet inlet diameter is d, my computational domain is a cylinder which is 250d in axial direction and has a diameter of 400d. PFA the image of background mesh with the geometry. Earlier I had problem of inlet pipe completely disappearing. So I chose a background mesh of this shape.
Now my inlet looks good, but my computational domain(the big cylinder) is not meshed.
Can anyone help me in this regard.
Thanks
Turbulence.
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 2.1.0 |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
object blockMeshDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

convertToMeters 1;

vertices
(

(39.8 39.8 0)
(39.8 39.8 1.1)
(40.2 39.8 1.1)
(40.2 39.8 0)
(39.8 40.2 0)
(39.8 40.2 1.1)
(40.2 40.2 1.1)
(40.2 40.2 0)
(-5 -5 1.1)
(-5 -5 52)
(85 -5 52)
(85 -5 1.1)
(-5 85 1.1)
(-5 85 52)
(85 85 52)
(85 85 1.1)




);

blocks
(
hex (0 1 2 3 4 5 6 7) (100 100 100) simpleGrading (1 1 1)

hex (8 9 10 11 12 13 14 15) (200 200 200) simpleGrading (1 1 1)

);

boundary
(
bPlane
{
type patch;
faces
(
(0 1 2 3)
);
}
tPlane
{
type patch;
faces
(
(4 7 6 5)
);
}
fPlane
{
type patch;
faces
(
(0 4 5 1)
);
}

backPlane
{
type patch;
faces
(
(3 2 6 7)
);
}

lPlane
{
type patch;
faces
(
(0 3 7 4)
);
}

rPlane
{
type patch;
faces
(
(1 2 6 5)
);
}

BPlane
{
type patch;
faces
(
(8 9 10 11)
);
}
TPlane
{
type patch;
faces
(
(12 15 14 13)
);
}
FPlane
{
type patch;
faces
(
(8 12 13 9)
);
}

BackPlane
{
type patch;
faces
(
(11 15 14 10)
);
}

LPlane
{
type patch;
faces
(
(8 11 15 12)
);
}

RPlane
{
type patch;
faces
(
(9 10 14 13)
);
}


);


// ************************************************** *********************** //

/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 2.0.1 |
| \\ / A nd | Web: www.OpenFOAM.com |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/

FoamFile

{

version 2.0;

format ascii;

class dictionary;

object snappyHexMeshDict;

}


castellatedMesh true;

snap true;

doLayers true;

addLayers true;

mergeTolerance 1e-06;

geometry

{
roundjet.stl

{
type triSurfaceMesh;
name round;
mergeSubRegions true;
}

};
meshQualityControls
{
maxNonOrtho 60;
maxBoundarySkewness 1.1;
maxInternalSkewness 0.7;
minVol 1e-13;
maxConcave 180;
minTwist 0.05;
minArea -1;
minTriangleTwist -1;
minDeterminant 0.001;
minFaceWeight 0.05;
minVolRatio 0.01;
minTetQuality 1e-30;
errorReduction 0.75;
nSmoothScale 4;

};

castellatedMeshControls

{
refinementSurfaces
{

round
{
level (8 10); // default (min max) refinement for surface

}

}

resolveFeatureAngle 45; //Applies maximum level of refinement to cells
//that can see intersections whose angle exceeds


refinementRegions

{

round

{

mode distance;

levels ((0.1 10) (0.5 4) (1 2));
}

}

locationInMesh (40 40 0.2);


maxLocalCells 1000000;

maxGlobalCells 2000000;

minRefinementCells 0;

nCellsBetweenLevels 5;

allowFreeStandingZoneFaces false;

features
(
);

};

snapControls

{

nSmoothPatch 20;

tolerance 2.0;

nSolveIter 30;

nRelaxIter 10;

};

addLayersControls

{

layers
{
round_a
{
nSurfaceLayers 3;
}
round_b
{
nSurfaceLayers 3;
}
round_c
{
nSurfaceLayers 3;
}
round_d
{
nSurfaceLayers 3;
}
round_e
{
nSurfaceLayers 3;
}
round_f
{
nSurfaceLayers 3;
}
round_g
{
nSurfaceLayers 3;
}
round_h
{
nSurfaceLayers 3;
}
round_i
{
nSurfaceLayers 3;
}
round_j
{
nSurfaceLayers 3;
}
}

expansionRatio 1.0;
finalLayerThickness 0.4;
minThickness 0.25;
nGrow 0;
relativeSizes true;
featureAngle 60;
nRelaxIter 7;
nSmoothSurfaceNormals 1;
nSmoothNormals 3;
nSmoothThickness 10;
maxFaceThicknessRatio 0.5;
nLayerIter 10;
maxThicknessToMedialRatio 0.2;
minMedianAxisAngle 80;
nBufferCellsNoExtrude 0;


};

StSchiff July 5, 2012 08:02

Hi Turbulence,
could you upload a picture without the stl file and with the 'wire' or 'surface with edges' option on? And also at other time steps than 0.
Regards
Stefanie

Turbulence July 5, 2012 10:59

Hi StSchiff,
I have considerably modified the case folder, but with no success. :(
Now I have reached a stage where if my locationInMesh points to a point inside the inlet pipe, then only inlet pipe is meshed, and the cylinder is lost, vise versa.

Sorry I could not provide you with what you asked.
My paraview stopped working. Will post the pic as soon as possible.

Thank you very much for replying :)
Modified code:

/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 2.0.1 |
| \\ / A nd | Web: www.OpenFOAM.com |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/

FoamFile

{

version 2.0;

format ascii;

class dictionary;

object snappyHexMeshDict;

}


castellatedMesh true;

snap true;

doLayers true;

addLayers true;

mergeTolerance 1e-06;

geometry

{
roundjet.stl

{
type triSurfaceMesh;
name round;
mergeSubRegions true;
}
refinementBox1
{
type searchableBox;
min (39.9 39.9 -0.1);
max (40.1 40.1 0.3);
}
refinementBox2
{
type searchableBox;
min (-0.1 -0.1 0.9);
max (80.1 80.1 1.2);
}
refinementBox3
{
type searchableBox;
min (-0.1 -0.1 50);
max (80.1 80.1 51.2);
}
};
meshQualityControls
{
maxNonOrtho 60;
maxBoundarySkewness 1.1;
maxInternalSkewness 0.7;
minVol 1e-13;
maxConcave 180;
minTwist 0.05;
minArea -1;
minTriangleTwist -1;
minDeterminant 0.001;
minFaceWeight 0.05;
minVolRatio 0.01;
minTetQuality 1e-30;
errorReduction 0.75;
nSmoothScale 4;

};

castellatedMeshControls

{
refinementSurfaces
{

round
{
level (8 10); // default (min max) refinement for surface

}

}

resolveFeatureAngle 45; //Applies maximum level of refinement to cells
//that can see intersections whose angle exceeds


refinementRegions

{

round

{

mode distance;

levels ((0.1 10) (0.5 4) (1 2));
}
refinementBox1
{
mode inside;
levels ((1.0 80));
}
refinementBox2
{
mode inside;
levels ((1.0 100));
}
refinementBox3
{
mode inside;
levels ((1.0 100));
}
}

locationInMesh (40 40.1 0.3);


maxLocalCells 1000000;

maxGlobalCells 2000000;

minRefinementCells 0;

nCellsBetweenLevels 5;

allowFreeStandingZoneFaces false;

features
(
);

};

snapControls

{

nSmoothPatch 10;

tolerance 2.0;

nSolveIter 10;

nRelaxIter 10;

};

addLayersControls

{

layers
{
round_a
{
nSurfaceLayers 3;
}
round_b
{
nSurfaceLayers 3;
}
round_c
{
nSurfaceLayers 3;
}
round_d
{
nSurfaceLayers 3;
}
round_e
{
nSurfaceLayers 3;
}
round_f
{
nSurfaceLayers 3;
}
round_g
{
nSurfaceLayers 3;
}
round_h
{
nSurfaceLayers 3;
}
round_i
{
nSurfaceLayers 3;
}
round_j
{
nSurfaceLayers 3;
}
}

expansionRatio 1.0;
finalLayerThickness 0.4;
minThickness 0.25;
nGrow 0;
relativeSizes true;
featureAngle 60;
nRelaxIter 7;
nSmoothSurfaceNormals 1;
nSmoothNormals 3;
nSmoothThickness 10;
maxFaceThicknessRatio 0.5;
nLayerIter 10;
maxThicknessToMedialRatio 0.2;
minMedianAxisAngle 80;
nBufferCellsNoExtrude 0;


};


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

convertToMeters 1;

vertices
(

(39.8 39.8 0)
(39.8 39.8 1.1)
(40.2 39.8 1.1)
(40.2 39.8 0)
(39.8 40.2 0)
(39.8 40.2 1.1)
(40.2 40.2 1.1)
(40.2 40.2 0)
(-5 -5 1.1)
(-5 -5 52)
(85 -5 52)
(85 -5 1.1)
(-5 85 1.1)
(-5 85 52)
(85 85 52)
(85 85 1.1)




);

blocks
(
hex (0 1 2 3 4 5 6 7) (100 100 100) simpleGrading (1 1 1)

hex (8 9 10 11 12 13 14 15) (200 200 200) simpleGrading (1 1 1)

);

boundary
(
bPlane
{
type patch;
faces
(
(0 1 2 3)
);
}
tPlane
{
type patch;
faces
(
(4 7 6 5)
);
}
fPlane
{
type patch;
faces
(
(0 4 5 1)
);
}

backPlane
{
type patch;
faces
(
(3 2 6 7)
);
}

lPlane
{
type patch;
faces
(
(0 3 7 4)
);
}

rPlane
{
type patch;
faces
(
(1 2 6 5)
);
}

BPlane
{
type patch;
faces
(
(8 9 10 11)
);
}
TPlane
{
type patch;
faces
(
(12 15 14 13)
);
}
FPlane
{
type patch;
faces
(
(8 12 13 9)
);
}

BackPlane
{
type patch;
faces
(
(11 15 14 10)
);
}

LPlane
{
type patch;
faces
(
(8 11 15 12)
);
}

RPlane
{
type patch;
faces
(
(9 10 14 13)
);
}


);


// ************************************************** *********************** //

kalyangoparaju August 7, 2012 08:58

Deepak,

If I understand your problem right, you have a cylinder ( pipe) within a bigger pipe(domain) right? And do you want to mesh the inside of the smaller pipe or outside of the smaller pipe?

Let us know so that we can be of more help :-)

Kalyan

Irish09 August 8, 2012 14:03

SHM Problem
 
1 Attachment(s)
Deepak,

From what I understand of your problem, you may be attempting to do something in a more complicated fashion than necessary.

Look at my 2-dimensional figure here:

Attachment 15091

Figure A shows a cylinder representing where the jet will be protruding into the domain with which you want to study. It's hard to tell from your first image, but if your set up is like this, then OpenFOAM will not like having a mesh on two sides of a wall and to my knowledge there is no way around that.

Figure C shows the cylinder for the jet being directly next to the domain in which the jet will flow into. If you setup is like this, then when you tell SHM that the interior is inside your cylinder, then that is all that will mesh and if you tell it the interior is inside the larger domain, then that is all that will mesh. Once SHM reaches the boundary of what it perceives to be the interior of the flow it won't look any farther for more objects to mesh. Therefore one will inevitably not be meshed in this process.

Figure B shows the cylinder and the outlet domain as one STL file. This makes it slightly more complicated to apply boundary conditions as you have to use Salome, ProEngineer, Paraview, or some other program to split the surfaces into different parts, but it will mesh correctly in SHM.

In my opinion, it is probably easier to make the mesh that you are desiring using a blockMeshDict file directly. I know you can make circles by utilizing two arcs and hardcode all the necessary information into it, but it is probably still easier and will produce a better and more controllable mesh than SHM.

Hope this helps.

mturcios777 August 8, 2012 16:27

Looking at situation A, it is possible to have internal faces (baffles), but not by default in blockMesh. If you can get the faces to exist (not too bad in blockMesh), then you have to do a little magic with topoSet and the baffles utilities (createBaffles and mergeOrSplitBaffles).


All times are GMT -4. The time now is 04:36.