Files
OpenFOAM-12/tutorials/resources/blockMesh/sloshingTank2D
Henry Weller 01494463d0 FoamFile: 'version' entry is now optional, defaulting to 2.0
The FOAM file format has not changed from version 2.0 in many years and so there
is no longer a need for the 'version' entry in the FoamFile header to be
required and to reduce unnecessary clutter it is now optional, defaulting to the
current file format 2.0.
2021-06-23 20:50:10 +01:00

125 lines
3.3 KiB
C++

/*--------------------------------*- C++ -*----------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Version: dev
\\/ M anipulation |
\*---------------------------------------------------------------------------*/
FoamFile
{
format ascii;
class dictionary;
object blockMeshDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
convertToMeters 1;
depth 1; // Depth of tank (x-direction)
width 40; // Width of tank (y-direction)
height 30; // Depth of tank (z-direction)
lowerHeight 5; // Height to the top of lower chamfer
upperHeight 10; // Height of upper chamfer
angleLower 45; // Angle of lower chamfer to the horizontal
angleUpper 45; // Angle of upper chamfer to the horizontal
moveZ -10; // Moving tank in z direction
xCells 1; // Number of cells in the depth
yCells 40; // Number of cells in the width
zLowCells 6; // Number of cells in the height of the lower champfer
zMidCells 16; // Number of cells in the height between the chamfers
zUpCells 12; // Number of cells in the height of the upper champfer
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
vertices #codeStream
{
codeInclude
#{
#include "pointField.H"
#};
code
#{
const scalar halfDepth = ($depth)/2.0;
const scalar halfWidth = ($width)/2.0;
const scalar yBottom =
halfWidth - ($lowerHeight)/tan(degToRad($angleLower));
const scalar yTop =
halfWidth - ($upperHeight)/tan(degToRad($angleUpper));
const scalar zMid = $height - $upperHeight;
pointField points
({
point(-halfDepth, -yBottom, 0), // pt 0
point(-halfDepth, -halfWidth, $lowerHeight), // pt 1
point(-halfDepth, -halfWidth, zMid), // pt 2
point(-halfDepth, -yTop, $height), // pt 3
});
// Move points in z direction
points += vector(0, 0, $moveZ);
// Duplicate y points
points.append(cmptMultiply(points, vector(1, -1, 1)));
// Duplicate x points
points.append(cmptMultiply(points, vector(-1, 1, 1)));
os << points;
#};
};
blocks
(
hex (0 8 12 4 1 9 13 5) ($xCells $yCells $zLowCells) simpleGrading (1 1 1)
hex (1 9 13 5 2 10 14 6) ($xCells $yCells $zMidCells) simpleGrading (1 1 1)
hex (2 10 14 6 3 11 15 7) ($xCells $yCells $zUpCells) simpleGrading (1 1 1)
);
boundary
(
walls
{
type wall;
faces
(
(0 4 12 8)
(4 5 13 12)
(5 6 14 13)
(6 7 15 14)
(7 3 11 15)
(3 2 10 11)
(2 1 9 10)
(1 0 8 9)
);
}
front
{
type empty;
faces
(
(8 12 13 9)
(9 13 14 10)
(10 14 15 11)
);
}
back
{
type empty;
faces
(
(0 1 5 4)
(1 2 6 5)
(2 3 7 6)
);
}
);
// ************************************************************************* //