Skip to content

Repository files navigation

ofblockmeshdicthelper

Helper utilities for OpenFOAM blockMeshDict generation.

For what?

The aim of ofblocmeshdicthekper is to provide name-based access to the elements of blockDictMesh file, such as vertex, block, face, etc.

Installation

From PyPI simply,

pip install ofblockmeshdicthelper

Or, it is allowed to install directory from github repository (this or your own forked one).

Example

Here is an example which generate wedged model shown at https://openfoamwiki.net/index.php/Main_ContribExamples/AxiSymmetric

""" example of ofblockmeshdicthelpertry to generate wedged pype object shown athttps://openfoamwiki.net/index.php/Main_ContribExamples/AxiSymmetric"""from __future__ importunicode_literals, print_functionimportmathfromofblockmeshdicthelperimportBlockMeshDict, Vertex, SimpleGradingwedgedegree=5.0# geometriesradius_x=0.19length_z=1.1# prepare ofblockmeshdicthelper.BlockMeshDict instance to# gather vertices, blocks, faces and boundaries.bmd=BlockMeshDict()
# set metricsbmd.set_metric('m')
# base vertices which are rotated +- 2.5 degreesbasevs= [
Vertex(0, 0, 0, 'v0'),
Vertex(radius_x, 0, 0, 'v1'),
Vertex(radius_x, 0, length_z, 'v2'),
Vertex(0, 0, length_z, 'v3')]
# rotate wedgedegree/2 around z axis# rotated vertices are named with '-y' or '+y' suffix.# these verteces are added to BlockMeshDict instence to be referred# by following blocks and faces...cosd=math.cos(math.radians(wedgedegree/2.0))
sind=math.sin(math.radians(wedgedegree/2.0))
forvinbasevs:
bmd.add_vertex(v.x*cosd, -v.x*sind, v.z, v.name+'-y')
bmd.add_vertex(v.x*cosd, v.x*sind, v.z, v.name+'+y')
# v0+y and v3+y have same coordinate as v0-y and v3-y, respectively.bmd.reduce_vertex('v0-y', 'v0+y')
bmd.reduce_vertex('v3-y', 'v3+y')
# utility to to generate vertex namesdefvnamegen(x0z0, x1z0, x1z1, x0z1):
return (x0z0+'-y', x1z0+'-y', x1z0+'+y', x0z0+'+y',
x0z1+'-y', x1z1+'-y', x1z1+'+y', x0z1+'+y')
# Noted that 'v0+y' and 'v3+y' are still valid.# you may define simplegrading and multigrading (for OF>=2.4) optionally.b0=bmd.add_hexblock(vnamegen('v0', 'v1', 'v2', 'v3'),
(19, 1, 300),
'b0',
grading=SimpleGrading(0.1,
((0.2, 0.3, 4),
(0.6, 0.4, 1),
(0.2, 0.3, 1.0/4.0)),
1))
# face element of block can be generated by Block.face methodbmd.add_boundary('wedge', 'front', [b0.face('s')])
bmd.add_boundary('wedge', 'back', [b0.face('n')])
bmd.add_boundary('wall', 'tankWall', [b0.face('e')])
bmd.add_boundary('patch', 'inlet', [b0.face('b')])
bmd.add_boundary('patch', 'outlet', [b0.face('t')])
bmd.add_boundary('empty', 'axis', [b0.face('w')])
# prepare for outputbmd.assign_vertexid()
# outputprint(bmd.format())

About

Helper utilities for OpenFOAM blockMeshDict generation.

Resources

Stars

0 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages