File: blockMeshDict.m4

package info (click to toggle)
openfoam 4.1%2Bdfsg1-1
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 163,028 kB
  • ctags: 58,990
  • sloc: cpp: 830,760; sh: 10,227; ansic: 8,215; xml: 745; lex: 437; awk: 194; sed: 91; makefile: 77; python: 18
file content (145 lines) | stat: -rw-r--r-- 4,245 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
/*--------------------------------*- C++ -*----------------------------------*\
| =========                 |                                                 |
| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
|  \\    /   O peration     | Version:  4.x                                   |
|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
|    \\/     M anipulation  |                                                 |
\*---------------------------------------------------------------------------*/
FoamFile
{
    version     2.0;
    `format'      ascii;
    class       dictionary;
    object      blockMeshDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
// General m4 macros

changecom(//)changequote([,]) dnl>
define(calc, [esyscmd(perl -e 'use Math::Trig; print ($1)')]) dnl>
define(VCOUNT, 0)
define(vlabel, [[// ]Vertex $1 = VCOUNT define($1, VCOUNT)define([VCOUNT], incr(VCOUNT))])

define(hex2D, hex (b$1 b$2 b$3 b$4 f$1 f$2 f$3 f$4))
define(quad2D, (b$1 b$2 f$2 f$1))
define(frontQuad, (f$1 f$2 f$3 f$4))
define(backQuad, (b$1 b$4 b$3 b$2))

// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
// User-defined parameters

convertToMeters 1;

define(l, 1.0)      // Length of tank (x-direction)
define(b, 40)       // Breadth of tank (y-direction)
define(h, 30)       // Depth of tank (z-direction)

define(hlc, 5)      // Depth to the top (height) of lower chamfer
define(huc, 10)     // Height of upper chamfer

define(thetalc, 45) // Angle of lower chamfer to the horizontal
define(thetauc, 45) // Angle of upper chamfer to the horizontal

define(CofGy, calc(b/2.0))  // Centre of gravity in y-direction
define(CofGz, 10.0)         // Centre of gravity in z-direction

define(Nl, 1)       // Number of cells in the length (1 for 2D)
define(Nb, 40)      // Number of cells in the breadth
define(Nhlc, 6)     // Number of cells in the height of the lower champfer
define(Nh, 16)      // Number of cells in the height between the chamfers
define(Nhuc, 12)    // Number of cells in the height of the upper champfer

// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
// Derived parameters

define(blc, calc(hlc/tan(deg2rad(thetalc)))) // Breadth to the top (height) of lower chamfer
define(buc, calc(huc/tan(deg2rad(thetauc)))) // Breadth of upper chamfer

define(Yl, -CofGy)
define(Yllc, calc(Yl + blc))
define(Yluc, calc(Yl + buc))

define(Yr, calc(Yl + b))
define(Yrlc, calc(Yr - blc))
define(Yruc, calc(Yr - buc))

define(Zb, -CofGz)
define(Zlc, calc(Zb + hlc))
define(Zt, calc(Zb + h))
define(Zuc, calc(Zt - huc))

define(Xf, calc(l/2.0))
define(Xb, calc(Xf - l))

// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
// Parametric description

vertices
(
    (Xb Yllc Zb) vlabel(bllcb)
    (Xb Yl Zlc)  vlabel(bllc)
    (Xb Yl Zuc)  vlabel(bluc)
    (Xb Yluc Zt) vlabel(bluct)
    (Xb Yrlc Zb) vlabel(brlcb)
    (Xb Yr Zlc)  vlabel(brlc)
    (Xb Yr Zuc)  vlabel(bruc)
    (Xb Yruc Zt) vlabel(bruct)

    (Xf Yllc Zb) vlabel(fllcb)
    (Xf Yl Zlc)  vlabel(fllc)
    (Xf Yl Zuc)  vlabel(fluc)
    (Xf Yluc Zt) vlabel(fluct)
    (Xf Yrlc Zb) vlabel(frlcb)
    (Xf Yr Zlc)  vlabel(frlc)
    (Xf Yr Zuc)  vlabel(fruc)
    (Xf Yruc Zt) vlabel(fruct)
);

blocks
(
    // block0
    hex2D(llcb, rlcb, rlc, llc)
    (Nb Nhlc Nl)
    simpleGrading (1 1 1)

    // block1
    hex2D(llc, rlc, ruc, luc)
    (Nb Nh Nl)
    simpleGrading (1 1 1)

    // block2
    hex2D(luc, ruc, ruct, luct)
    (Nb Nhuc Nl)
    simpleGrading (1 1 1)
);

patches
(
    patch walls
    (
        quad2D(llcb, rlcb)
        quad2D(rlcb, rlc)
        quad2D(rlc, ruc)
        quad2D(ruc, ruct)
        quad2D(ruct, luct)
        quad2D(luct, luc)
        quad2D(luc, llc)
        quad2D(llc, llcb)
    )

    empty front
    (
        frontQuad(llcb, rlcb, rlc, llc)
        frontQuad(llc, rlc, ruc, luc)
        frontQuad(luc, ruc, ruct, luct)
    )

    empty back
    (
        backQuad(llcb, rlcb, rlc, llc)
        backQuad(llc, rlc, ruc, luc)
        backQuad(luc, ruc, ruct, luct)
    )
);

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