ENH: streamLineBase - set tracking velocity field name to U by default

This commit is contained in:
Andrew Heather
2016-10-27 16:15:26 +01:00
parent 50b80aa1b8
commit 99c62425a9
100 changed files with 0 additions and 164 deletions

View File

@ -0,0 +1,231 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: dev |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
`format' ascii;
class dictionary;
object blockMeshDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
// General macros to create 2D/extruded-2D meshes
changecom(//)changequote([,])
define(calc, [esyscmd(perl -e 'printf ($1)')])
define(VCOUNT, 0)
define(vlabel, [[// ]Vertex $1 = VCOUNT define($1, VCOUNT)define([VCOUNT], incr(VCOUNT))])
define(pi, 3.14159265)
define(angle, 45)
convertToMeters 1;
/* User parameter for geometry */
define(L_square, 0.06)
define(R_burner, 0.0475)
define(H_box, 0.4)
define(L_airBox, 0.4)
define(H_airBox, 0.6)
/* User parameter for mesh resolution */
define(dx, 6)
define(dz, 6)
define(dy, 40)
define(d_inlet, 2)//nb of pts between L_square and R_burner
define(d_wall, 17)//nb of pts between R_burner and H_box
define(dx_airBox, 25)
define(dy_airBox, 15)
/********************/
define(X_s, calc(L_square/2))
define(Z_s, calc(L_square/2))
define(angleRad, calc(angle*pi/180))
define(X_b, calc(cos(angleRad)*R_burner))
define(Z_b, calc(sin(angleRad)*R_burner))
define(X_h, calc(H_box/2))
define(Z_h, calc(H_box/2))
vertices
(
// (X Y Z)
( -X_s 0 -Z_s) //vertex 0
( X_s 0 -Z_s) //vertex 1
( X_s 0 Z_s) //vertex 2
( -X_s 0 Z_s) //vertex 3
( -X_b 0 -Z_b) //vertex 4
( X_b 0 -Z_b) //vertex 5
( X_b 0 Z_b) //vertex 6
( -X_b 0 Z_b) //vertex 7
( -X_h 0 -Z_h) //vertex 8
( -X_b 0 -Z_h) //vertex 9
( X_b 0 -Z_h) //vertex 10
( X_h 0 -Z_h) //vertex 11
( X_h 0 -Z_b) //vertex 12
( X_h 0 Z_b) //vertex 13
( X_h 0 Z_h) //vertex 14
( X_b 0 Z_h) //vertex 15
( -X_b 0 Z_h) //vertex 16
( -X_h 0 Z_h) //vertex 17
( -X_h 0 Z_b) //vertex 18
( -X_h 0 -Z_b) //vertex 19
( -X_s H_box -Z_s) //vertex 20
( X_s H_box -Z_s) //vertex 21
( X_s H_box Z_s) //vertex 22
( -X_s H_box Z_s) //vertex 23
( -X_b H_box -Z_b) //vertex 24
( X_b H_box -Z_b) //vertex 25
( X_b H_box Z_b) //vertex 26
( -X_b H_box Z_b) //vertex 27
( -X_h H_box -Z_h) //vertex 28
( -X_b H_box -Z_h) //vertex 29
( X_b H_box -Z_h) //vertex 30
( X_h H_box -Z_h) //vertex 31
( X_h H_box -Z_b) //vertex 32
( X_h H_box Z_b) //vertex 33
( X_h H_box Z_h) //vertex 34
( X_b H_box Z_h) //vertex 35
( -X_b H_box Z_h) //vertex 36
( -X_h H_box Z_h) //vertex 37
( -X_h H_box Z_b) //vertex 38
( -X_h H_box -Z_b) //vertex 39
( calc(-X_h-L_airBox) 0 -Z_h) //vertex 40
( calc(-X_h-L_airBox) 0 -Z_b) //vertex 41
( calc(-X_h-L_airBox) 0 Z_b) //vertex 42
( calc(-X_h-L_airBox) 0 Z_h) //vertex 43
( calc(-X_h-L_airBox) H_box -Z_h) //vertex 44
( calc(-X_h-L_airBox) H_box -Z_b) //vertex 45
( calc(-X_h-L_airBox) H_box Z_b) //vertex 46
( calc(-X_h-L_airBox) H_box Z_h) //vertex 47
( -X_h H_airBox -Z_h) //vertex 48
( -X_h H_airBox -Z_b) //vertex 49
( -X_h H_airBox Z_b) //vertex 50
( -X_h H_airBox Z_h) //vertex 51
( calc(-X_h-L_airBox) H_airBox -Z_h) //vertex 52
( calc(-X_h-L_airBox) H_airBox -Z_b) //vertex 53
( calc(-X_h-L_airBox) H_airBox Z_b) //vertex 54
( calc(-X_h-L_airBox) H_airBox Z_h) //vertex 55
);
blocks
(
hex (0 1 21 20 3 2 22 23) (dx dy dz) simpleGrading (1 1 1) //Block 0
hex (4 5 25 24 0 1 21 20) (dx dy d_inlet) simpleGrading (1 1 1) //Block 1
hex (1 5 25 21 2 6 26 22) (d_inlet dy dz) simpleGrading (1 1 1) //Block 2
hex (3 2 22 23 7 6 26 27) (dx dy d_inlet) simpleGrading (1 1 1) //Block 3
hex (4 0 20 24 7 3 23 27) (d_inlet dy dz) simpleGrading (1 1 1) //Block 4
hex (8 9 29 28 19 4 24 39) (d_wall dy d_wall) simpleGrading (1 1 1) //Block 5
hex (9 10 30 29 4 5 25 24) (dx dy d_wall) simpleGrading (1 1 1) //Block 6
hex (10 11 31 30 5 12 32 25) (d_wall dy d_wall) simpleGrading (1 1 1) //Block 7
hex (5 12 32 25 6 13 33 26) (d_wall dy dz) simpleGrading (1 1 1) //Block 8
hex (6 13 33 26 15 14 34 35) (d_wall dy d_wall) simpleGrading (1 1 1) //Block 9
hex (7 6 26 27 16 15 35 36) (dx dy d_wall) simpleGrading (1 1 1) //Block 10
hex (18 7 27 38 17 16 36 37) (d_wall dy d_wall) simpleGrading (1 1 1) //Block 11
hex (19 4 24 39 18 7 27 38) (d_wall dy dz) simpleGrading (1 1 1) //Block 12
hex (40 8 28 44 41 19 39 45) (dx_airBox dy d_wall) simpleGrading (0.416667 1 1) //Block 13
hex (41 19 39 45 42 18 38 46) (dx_airBox dy dz) simpleGrading (0.416667 1 1) //Block 14
hex (42 18 38 46 43 17 37 47) (dx_airBox dy d_wall) simpleGrading (0.416667 1 1) //Block 15
hex (44 28 48 52 45 39 49 53) (dx_airBox dy_airBox d_wall) simpleGrading (0.416667 1.72 1) //Block 16
hex (45 39 49 53 46 38 50 54) (dx_airBox dy_airBox dz) simpleGrading (0.416667 1.72 1) //Block 17
hex (46 38 50 54 47 37 51 55) (dx_airBox dy_airBox d_wall) simpleGrading (0.416667 1.72 1) //Block 18
);
edges
(
arc 4 5 (0 0 -R_burner)
arc 5 6 (R_burner 0 0)
arc 6 7 (0 0 R_burner)
arc 7 4 (-R_burner 0 0)
arc 24 25 (0 H_box -R_burner)
arc 25 26 (R_burner H_box 0)
arc 26 27 (0 H_box R_burner)
arc 27 24 (-R_burner H_box 0)
);
boundary
(
inlet
{
type patch;
faces
(
(0 1 2 3)
(1 5 6 2)
(3 2 6 7)
(4 0 3 7)
(4 5 1 0)
);
}
entrainment
{
type patch;
faces
(
(40 8 19 41)
(41 19 18 42)
(42 18 17 43)
(40 8 28 44)
(44 28 48 52)
(41 40 44 45)
(42 41 45 46)
(43 42 46 47)
(45 44 52 53)
(46 45 53 54)
(47 46 54 55)
(17 43 47 37)
(37 47 55 51)
);
}
outlet
{
type patch;
faces
(
(52 48 49 53)
(53 49 50 54)
(54 50 51 55)
(28 39 49 48)
(39 38 50 49)
(38 37 51 50)
);
}
);
mergePatchPairs
(
);
// ************************************************************************* //

View File

@ -0,0 +1,173 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: plus |
| \\ / A nd | Web: www.OpenFOAM.com |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
object controlDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
application fireFoam;
startFrom latestTime;
startTime 0;
stopAt endTime;
endTime 350;
deltaT 0.001;
writeControl adjustableRunTime;
writeInterval 10;
purgeWrite 0;
writeFormat ascii;
writePrecision 6;
writeCompression uncompressed;
timeFormat general;
timePrecision 6;
graphFormat raw;
runTimeModifiable yes;
adjustTimeStep yes;
maxCo 1.2;
maxDi 0.25;
maxDeltaT 0.01;
functions
{
patchInlet_phi
{
type surfaceFieldValue;
functionObjectLibs ("libfieldFunctionObjects.so");
enabled true;
writeControl timeStep;
writeInterval 20;
log true;
writeFields no;
regionType patch;
name inlet;
operation sum;
fields (phi);
}
wallPanel_Qin
{
type patchProbes;
functionObjectLibs ("libsampling.so");
enabled true;
writeControl outputTime;
writeInterval 20;
log true;
patchName region0_to_panelRegion_wallPanel;
probeLocations
(
( 0.15 0.0 0.01 ) //HF2
( 0.2 0.2 0.01 ) //HF3
( 0.0 0.4 0.01 ) //HF4
);
fields (Qin);
}
inletQr_Qin
{
type patchProbes;
functionObjectLibs ("libsampling.so");
enabled true;
writeControl outputTime;
writeInterval 20;
log true;
patchName inlet;
probeLocations
(
( 0.0 0.0 0.0 ) //HF1
( 0.02 0.0 0.02 ) //HF2
( 0.02 0.0 -0.02 ) //HF3
( -0.02 0.0 0.02 ) //HF4
( -0.02 0.0 -0.02 ) //HF5
);
fields (Qr Qin);
}
thermoCouple
{
type thermoCoupleProbes;
functionObjectLibs ("libutilityFunctionObjects.so");
writeControl timeStep;
writeInterval 100;
solver Euler;
absTol 1e-4;
relTol 1e-1;
interpolationScheme cell;
// thermocouple properties
rho 8908;
Cp 440;
d 1e-3;
epsilon 0.9;
radName G;
probeLocations
(
(-0.18 0.02 0.0) // 0.02m [TC11]
(-0.18 0.1 0.0) // 0.1m [TC9]
(-0.18 0.3 0.0) // 0.3m [TC?]
(-0.18 0.38 0.0) // 0.39m [TC2]
(0 0.38 0.0) // 0.38m [TC17]
(0 0.26 0.0) // 0.26m [TC18]
(0.01 0.14 0.0) // 0.14m [TC19]
(-0.2 0.015 0.0) // 0.015m [TC12]
(-0.2 0.0385 0.0) // 0.0385m [TC1]
(0.18 0.02 0.0) // 0.02m [TC16]
(0.18 0.14 0.0) // 0.14m [TC15]
(0.18 0.26 0.0) // 0.26m [TC14]
(0.18 0.38 0.0) // 0.38m [TC13]
);
fields (T);
}
probes_O2
{
type probes;
functionObjectLibs ("libsampling.so");
writeControl outputTime;
writeInterval 30;
probeLocations
(
(-0.1 0.02 0.0) //lower Gas
(-0.1 0.38 0.0) //Upper Gas
);
fields (O2);
}
}
// ************************************************************************* //

View File

@ -0,0 +1,79 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: plus |
| \\ / 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.
// 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
// - 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."
// - change patch type from 'cyclic' to 'patch' in the polyMesh/boundary file.
// - loosen match tolerance to get case to load
// - regenerate cyclic as above
// Tolerance used in matching faces. Absolute tolerance is span of
// face times this factor. To load incorrectly matches meshes set this
// to a higher value.
matchTolerance 1E-3;
// Do a synchronisation of coupled points after creation of any patches.
pointSync true;
// Patches to create.
patches
(
{
// Name of new patch
name inlet;
// Type of new patch
patchInfo
{
type patch;
// Optional: explicitly set transformation tensor.
// Used when matching and synchronising points.
//transform translational;
//separationVector (-2289 0 0);
transform rotational;
rotationAxis (1 0 0);
rotationCentre (0 0 0);
}
// How to construct: either from 'patches' or 'set'
constructFrom set;
// If constructFrom = patches : names of patches. Wildcards allowed.
patches ("periodic.*");
// If constructFrom = set : name of faceSet
set inletFace;
}
);
// ************************************************************************* //

View File

@ -0,0 +1,45 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: plus |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "system";
object decomposeParDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
numberOfSubdomains 8;
method scotch;
simpleCoeffs
{
n ( 4 1 4 );
delta 0.001;
}
hierarchicalCoeffs
{
n ( 1 2 2 );
delta 0.001;
order xyz;
}
manualCoeffs
{
dataFile "cellDecomposition";
}
metisCoeffs
{
}
// ************************************************************************* //

View File

@ -0,0 +1,39 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: plus |
| \\ / A nd | Web: www.OpenFOAM.com |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
object extrudeToRegionMeshDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
region panelRegion;
faceZones (wallPanel internalWallPanel);
oneD true;
sampleMode nearestPatchFace;
extrudeModel linearNormal;
oneDPolyPatchType empty;
nLayers 15;
expansionRatio 1.2;
adaptMesh true; // directMapped for both
linearNormalCoeffs
{
thickness 0.0254;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

View File

@ -0,0 +1,71 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: plus |
| \\ / A nd | Web: http://www.openfoam.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "system";
object fvSchemes;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
ddtSchemes
{
default Euler;
}
gradSchemes
{
default Gauss linear;
}
divSchemes
{
default none;
div(phi,U) Gauss upwind;
div(phi,K) Gauss linear;
div(phi,k) Gauss limitedLinear 1;
div(phi,Yi_h) Gauss multivariateSelection
{
O2 limitedLinear01 1;
C7H16 limitedLinear01 1;
C3H8 limitedLinear01 1;
N2 limitedLinear01 1;
H2O limitedLinear01 1;
CO2 limitedLinear01 1;
h limitedLinear 1;
};
div(((rho*nuEff)*dev2(T(grad(U))))) Gauss linear;
div(Ji,Ii_h) Gauss upwind;
}
laplacianSchemes
{
default Gauss linear uncorrected;
}
interpolationSchemes
{
default linear;
}
snGradSchemes
{
default uncorrected;
}
fluxRequired
{
default no;
p_rgh;
}
// ************************************************************************* //

View File

@ -0,0 +1,94 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: plus |
| \\ / A nd | Web: http://www.openfoam.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "system";
object fvSolution;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
solvers
{
"(rho|rhoFinal)"
{
solver PCG;
preconditioner DIC;
tolerance 1e-06;
relTol 0;
};
p_rgh
{
solver GAMG;
tolerance 1e-7;
relTol 0.01;
smoother GaussSeidel;
cacheAgglomeration true;
nCellsInCoarsestLevel 10;
agglomerator faceAreaPair;
mergeLevels 1;
};
p_rghFinal
{
$p_rgh;
tolerance 1e-7;
relTol 0;
};
"(U|Yi|h|k)"
{
solver smoothSolver;
smoother GaussSeidel;
tolerance 1e-07;
relTol 0.1;
}
"(U|Yi|h|k)Final"
{
$U;
tolerance 1e-7;
relTol 0;
};
Ii
{
solver GAMG;
tolerance 1e-4;
relTol 0;
smoother symGaussSeidel;
cacheAgglomeration true;
nCellsInCoarsestLevel 10;
agglomerator faceAreaPair;
mergeLevels 1;
maxIter 1;
}
}
PIMPLE
{
momentumPredictor yes;
nOuterCorrectors 3;
nCorrectors 2;
nNonOrthogonalCorrectors 0;
}
relaxationFactors
{
equations
{
"(U|k).*" 1;
"(C7H16|O2|H2O|CO2|h).*" 1;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,52 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.7 |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "system";
object decomposeParDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
numberOfSubdomains 20;
method structured;
structuredCoeffs
{
method simple;
patches (region0_to_panelRegion_wallPanel region0_to_panelRegion_internalWallPanel_top region0_to_panelRegion_internalWallPanel_bottom);
simpleCoeffs
{
n ( 5 1 4 );
delta 0.001;
}
}
hierarchicalCoeffs
{
n ( 1 2 2 );
delta 0.001;
order xyz;
}
manualCoeffs
{
dataFile "cellDecomposition";
}
metisCoeffs
{
}
// ************************************************************************* //

View File

@ -0,0 +1,56 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.6 |
| \\ / A nd | Web: http://www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
object fvSchemes;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
ddtSchemes
{
default Euler;
}
gradSchemes
{
default Gauss linear;
}
divSchemes
{
default none;
}
laplacianSchemes
{
default none;
//laplacian(K,T) Gauss linear uncorrected;
laplacian(kappa,T) Gauss harmonic uncorrected;
laplacian(thermo:alpha,h) Gauss harmonic uncorrected;
}
interpolationSchemes
{
default linear;
//default none;
}
snGradSchemes
{
default uncorrected;
}
fluxRequired
{
default no;
}
// ************************************************************************* //

View File

@ -0,0 +1,38 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.6 |
| \\ / A nd | Web: http://www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
object fvSolution;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
solvers
{
h
{
solver PCG;
preconditioner DIC;
tolerance 1e-6;
relTol 0;
}
}
SIMPLE
{
nNonOrthCorr 1;
}
relaxationFactors
{
h 1;
}
// ************************************************************************* //

View File

@ -0,0 +1,332 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: plus |
| \\ / A nd | Web: www.OpenFOAM.com |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
object snappyHexMeshDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
// Which of the steps to run
castellatedMesh true;
snap false;
addLayers false;
// Geometry. Definition of all surfaces. All surfaces are of class
// searchableSurface.
// Surfaces are used
// - to specify refinement for any mesh cell intersecting it
// - to specify refinement for any mesh cell inside/outside/near
// - to 'snap' the mesh boundary to the surface
geometry
{
box1 //0.6x1x0.02 [cm]
{
type searchableBox;
min (-0.1 -0.01 -0.1);
max (0.1 0.30 0.1);
}
};
// Settings for the castellatedMesh generation.
castellatedMeshControls
{
// Refinement parameters
// ~~~~~~~~~~~~~~~~~~~~~
// If local number of cells is >= maxLocalCells on any processor
// switches from from refinement followed by balancing
// (current method) to (weighted) balancing before refinement.
maxLocalCells 1000000;
// Overall cell limit (approximately). Refinement will stop immediately
// upon reaching this number so a refinement level might not complete.
// Note that this is the number of cells before removing the part which
// is not 'visible' from the keepPoint. The final number of cells might
// actually be a lot less.
maxGlobalCells 2000000;
// The surface refinement loop might spend lots of iterations refining just a
// few cells. This setting will cause refinement to stop if <= minimumRefine
// are selected for refinement. Note: it will at least do one iteration
// (unless the number of cells to refine is 0)
minRefinementCells 100;
// Number of buffer layers between different levels.
// 1 means normal 2:1 refinement restriction, larger means slower
// refinement.
nCellsBetweenLevels 1;
// Region-wise refinement
// ~~~~~~~~~~~~~~~~~~~~~~
// Specifies refinement level for cells in relation to a surface. One of
// three modes
// - distance. 'levels' specifies per distance to the surface the
// wanted refinement level. The distances need to be specified in
// descending order.
// - inside. 'levels' is only one entry and only the level is used. All
// cells inside the surface get refined up to the level. The surface
// needs to be closed for this to be possible.
// - outside. Same but cells outside.
features
(
);
resolveFeatureAngle 0;
refinementSurfaces
{
}
refinementRegions
{
box1
{
mode inside;
levels ((1.0 1));
}
}
// Mesh selection
// ~~~~~~~~~~~~~~
// After refinement patches get added for all refinementSurfaces and
// all cells intersecting the surfaces get put into these patches. The
// section reachable from the locationInMesh is kept.
// NOTE: This point should never be on a face, always inside a cell, even
// after refinement.
locationInMesh (0.01 0 0.001);
// Whether any faceZones (as specified in the refinementSurfaces)
// are only on the boundary of corresponding cellZones or also allow
// free-standing zone faces. Not used if there are no faceZones.
allowFreeStandingZoneFaces true;
}
// Settings for the snapping.
snapControls
{
//- Number of patch smoothing iterations before finding correspondence
// to surface
nSmoothPatch 3;
//- Relative distance for points to be attracted by surface feature point
// or edge. True distance is this factor times local
// maximum edge length.
tolerance 4.0;
//- Number of mesh displacement relaxation iterations.
nSolveIter 30;
//- Maximum number of snapping relaxation iterations. Should stop
// before upon reaching a correct mesh.
nRelaxIter 5;
}
// Settings for the layer addition.
addLayersControls
{
// Are the thickness parameters below relative to the undistorted
// size of the refined cell outside layer (true) or absolute sizes (false).
relativeSizes false;
// Layer thickness specification. This can be specified in one of following
// ways:
// - expansionRatio and finalLayerThickness (cell nearest internal mesh)
// - expansionRatio and firstLayerThickness (cell on surface)
// - overall thickness and firstLayerThickness
// - overall thickness and finalLayerThickness
// - overall thickness and expansionRatio
//
// Note: the mode thus selected is global, i.e. one cannot override the
// mode on a per-patch basis (only the values can be overridden)
// Expansion factor for layer mesh
expansionRatio 1.0;
// Wanted thickness of the layer furthest away from the wall.
// If relativeSizes this is relative to undistorted size of cell
// outside layer.
finalLayerThickness 0.3;
// Wanted thickness of the layer next to the wall.
// If relativeSizes this is relative to undistorted size of cell
// outside layer.
//firstLayerThickness 0.3;
// Wanted overall thickness of layers.
// If relativeSizes this is relative to undistorted size of cell
// outside layer.
//thickness 0.5
// Minimum overall thickness of total layers. If for any reason layer
// cannot be above minThickness do not add layer.
// If relativeSizes this is relative to undistorted size of cell
// outside layer..
minThickness 0.25;
// Per final patch (so not geometry!) the layer information
// Note: This behaviour changed after 21x. Any non-mentioned patches
// now slide unless:
// - nSurfaceLayers is explicitly mentioned to be 0.
// - angle to nearest surface < slipFeatureAngle (see below)
layers
{
}
// If points get not extruded do nGrow layers of connected faces that are
// also not grown. This helps convergence of the layer addition process
// close to features.
// Note: changed(corrected) w.r.t 17x! (didn't do anything in 17x)
nGrow 0;
// Advanced settings
// Static analysis of starting mesh
// When not to extrude surface. 0 is flat surface, 90 is when two faces
// are perpendicular
featureAngle 130;
// Stop layer growth on highly warped cells
maxFaceThicknessRatio 0.5;
// Patch displacement
// Number of smoothing iterations of surface normals
nSmoothSurfaceNormals 1;
// Smooth layer thickness over surface patches
nSmoothThickness 10;
// Mesh shrinking
// Optional: at non-patched sides allow mesh to slip if extrusion
// direction makes angle larger than slipFeatureAngle. Default is
// 0.5*featureAngle.
slipFeatureAngle 30;
// Maximum number of snapping relaxation iterations. Should stop
// before upon reaching a correct mesh.
nRelaxIter 5;
// Create buffer region for new layer terminations
nBufferCellsNoExtrude 0;
// Overall max number of layer addition iterations. The mesher will
// exit if it reaches this number of iterations; possibly with an
// illegal mesh.
nLayerIter 50;
// Max number of iterations after which relaxed meshQuality controls
// get used. Up to nRelaxedIter it uses the settings in
// meshQualityControls,
// after nRelaxedIter it uses the values in
// meshQualityControls::relaxed.
nRelaxedIter 20;
// Additional reporting: if there are just a few faces where there
// are mesh errors (after adding the layers) print their face centres.
// This helps in tracking down problematic mesh areas.
//additionalReporting true;
}
// Generic mesh quality settings. At any undoable phase these determine
// where to undo.
meshQualityControls
{
//- Maximum non-orthogonality allowed. Set to 180 to disable.
maxNonOrtho 65;
//- Max skewness allowed. Set to <0 to disable.
maxBoundarySkewness 20;
maxInternalSkewness 4;
//- Max concaveness allowed. Is angle (in degrees) below which concavity
// is allowed. 0 is straight face, <0 would be convex face.
// Set to 180 to disable.
maxConcave 80;
//- Minimum pyramid volume. Is absolute volume of cell pyramid.
// Set to a sensible fraction of the smallest cell volume expected.
// Set to very negative number (e.g. -1E30) to disable.
minVol 1e-13;
//- Minimum tet volume. Is absolute volume of the tet formed by the
// face-centre decomposition triangle and the cell centre.
// Set to a sensible fraction of the smallest cell volume expected.
// Set to very negative number (e.g. -1E30) to disable.
minTetVol 1e-20;
minTetQuality -1;
//- Minimum face area. Set to <0 to disable.
minArea -1;
//- Minimum face twist. Set to <-1 to disable. dot product of face normal
//- and face centre triangles normal
minTwist 0.05;
//- minimum normalised cell determinant
//- 1 = hex, <= 0 = folded or flattened illegal cell
// minDeterminant 0.001;
minDeterminant 1;
//- minFaceWeight (0 -> 0.5)
minFaceWeight 0.05;
//- minVolRatio (0 -> 1)
minVolRatio 0.01;
//must be >0 for Fluent compatibility
minTriangleTwist -1;
// Advanced
//- Number of error distribution iterations
nSmoothScale 4;
//- amount to scale back displacement at error points
errorReduction 0.75;
}
// Advanced
// Flags for optional output
// 0 : only write final meshes
// 1 : write intermediate meshes
// 2 : write volScalarField with cellLevel for postprocessing
// 4 : write current intersections as .obj files
debug 0;
// Merge tolerance. Is fraction of overall bounding box of initial mesh.
// Note: the write tolerance needs to be higher than this.
mergeTolerance 1E-6;
// ************************************************************************* //

View File

@ -0,0 +1,246 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: plus |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
object topoSetDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
actions
(
{
name slot_bottom;
type faceSet;
action new;
source boxToFace;
sourceInfo
{
box (-0.201 -0.001 -0.201)(-0.199 0.031 0.201);
}
}
{
name slot_bottom;
type faceZoneSet;
action new;
source setToFaceZone;
sourceInfo
{
faceSet slot_bottom;
}
}
{
name slot_top;
type faceSet;
action new;
source boxToFace;
sourceInfo
{
box (-0.201 0.369 -0.201)(-0.199 0.401 0.201);
}
}
{
name slot_top;
type faceZoneSet;
action new;
source setToFaceZone;
sourceInfo
{
faceSet slot_top;
}
}
{
name inletFace;
type faceSet;
action new;
source patchToFace;
sourceInfo
{
name inlet;
}
}
{
name compartment_fire;
type cellSet;
action new;
source boxToCell;
sourceInfo
{
box (-0.201 -0.001 -0.201)(0.201 0.401 0.201);
}
}
{
name compartment_fire;
type cellZoneSet;
action new;
source setToCellZone;
sourceInfo
{
set compartment_fire;
}
}
{
name internalWallPanel;
type faceSet;
action new;
source boxToFace;
sourceInfo
{
box (-0.2001 0.0301 -0.2001)(-0.1999 0.3701 0.2001);
}
}
{
name internalWallPanel;
type faceZoneSet;
action new;
source setToFaceZone;
sourceInfo
{
faceSet internalWallPanel;
}
}
{
name wallFaces_back;
type faceSet;
action new;
source boxToFace;
sourceInfo
{
box (-0.2001 -0.0001 -0.2001)(0.2001 0.4001 -0.1999);
}
}
{
name wallFaces_front;
type faceSet;
action new;
source boxToFace;
sourceInfo
{
box (-0.2001 -0.0001 0.1999)(0.2001 0.4001 0.2001);
}
}
{
name wallFaces_top;
type faceSet;
action new;
source boxToFace;
sourceInfo
{
box (-0.2001 0.3999 -0.2001)(0.2001 0.4001 0.2001);
}
}
{
name wallFaces_side;
type faceSet;
action new;
source boxToFace;
sourceInfo
{
box (0.1999 -0.0001 -0.2001)(0.2001 0.4001 0.2001);
}
}
{
name wallPanel;
type faceZoneSet;
action new;
source setToFaceZone;
sourceInfo
{
faceSet wallFaces_back;
}
}
{
name wallPanel;
type faceZoneSet;
action add;
source setToFaceZone;
sourceInfo
{
faceSet wallFaces_front;
}
}
{
name wallPanel;
type faceZoneSet;
action add;
source setToFaceZone;
sourceInfo
{
faceSet wallFaces_top;
}
}
{
name wallPanel;
type faceZoneSet;
action add;
source setToFaceZone;
sourceInfo
{
faceSet wallFaces_side;
}
}
{
name baseFace;
type faceSet;
action new;
source boxToFace;
sourceInfo
{
box (-0.2001 -0.001 -0.2001)(0.2001 0.001 0.2001);
}
}
{
name wallPanel;
type faceZoneSet;
action add;
source setToFaceZone;
sourceInfo
{
faceSet baseFace;
}
}
{
name wallPanel;
type faceZoneSet;
action delete;
source setToFaceZone;
sourceInfo
{
faceSet inletFace;
}
}
);
// ************************************************************************* //