/*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | foam-extend: Open Source CFD | | \\ / O peration | Version: 4.1 | | \\ / A nd | Web: http://www.foam-extend.org | | \\/ M anipulation | For copyright notice see file Copyright | \*---------------------------------------------------------------------------*/ FoamFile { version 2.0; format ascii; class dictionary; object blockMeshDict; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // ------!!!!!! run "m4 blockMeshDict.m4 > 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(R, 0.12) define(H, 0.18) define(r, 0.06) define(k, 0.03) define(h, calc(H-k)) define(l, calc(R-r)) define(a, 4.5) // a straddling angle in ° define(refine, 3) define(nh, calc(refine*60)) define(nr, calc(refine*20)) define(nl, calc(refine*24)) define(nk, calc(refine*11)) define(pi, 3.14159265358979323844) define(rad, [calc($1*pi/180.0)]) define(arad, rad(a)) // arad angle in rad with the degToRad-function define(xr, calc(r*cos(arad/2.0))) define(zr, calc(r*sin(arad/2.0))) define(xR, calc(R*cos(arad/2.0))) define(zR, calc(R*sin(arad/2.0))) define(nzr, calc(-zr)) define(nzR, calc(-zR)) vertices ( (0 0 0) // Vertex Nr. 0 (xr 0 nzr) // Vertex Nr. 1 (xr h nzr) // Vertex Nr. 2 (0 h 0) // Vertex Nr. 3 (xR 0 nzR) // Vertex Nr. 4 (xR h nzR) // Vertex Nr. 5 (xr H nzr) // Vertex Nr. 6 (xR H nzR) // Vertex Nr. 7 (xr 0 zr) // Vertex Nr. 8 (xr h zr) // Vertex Nr. 9 (xR 0 zR) // Vertex Nr. 10 (xR h zR) // Vertex Nr. 11 (xr H zr) // Vertex Nr. 12 (xR H zR) // Vertex Nr. 13 ); edges ( ); blocks ( hex (0 1 2 3 0 8 9 3) (nr nh 1) simpleGrading (0.2 0.5 1) hex (1 4 5 2 8 10 11 9) (nl nh 1) simpleGrading (4 0.5 1) hex (2 5 7 6 9 11 13 12) (nl nk 1) simpleGrading (4 2.5 1) ); boundary ( Transducer { type wall; faces ( (2 3 3 9) ); } TransducerLateralWall { type wall; faces ( (6 2 9 12) ); } FreeSurface { type patch; faces ( (7 6 12 13) ); } Walls { type wall; faces ( (1 0 0 8) (4 1 8 10) (4 5 11 10) (5 7 13 11) ); } Axis { type empty; faces ( (0 3 3 0) ); } Front { type wedge; faces ( (8 9 3 0) (8 10 11 9) (11 13 12 9) ); } Back { type wedge; faces ( (0 3 2 1) (1 2 5 4) (2 6 7 5) ); } ); mergePatchPairs ( ); // ************************************************************************* //