Metadata-Version: 1.1
Name: ofblockmeshdicthelper
Version: 0.1.9
Summary: Helper utilities for OpenFOAM blockMeshDict generation.
Home-page: https://github.com/takaakiaoki/ofblockmeshdicthelper
Author: Takaaki AOKI
Author-email: aoki.takaaki@gmail.com
License: UNKNOWN
Description: =============================
        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, 
        
        .. code-block:: shell
        
            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
        
        .. code-block:: python
        
            """ example of ofblockmeshdicthelper
            try to generate wedged pype object shown at
            https://openfoamwiki.net/index.php/Main_ContribExamples/AxiSymmetric
            """
            
            from __future__ import unicode_literals, print_function
            
            import math
            
            from ofblockmeshdicthelper import BlockMeshDict, Vertex, SimpleGrading
            
            wedgedegree = 5.0
            
            # geometries
            radius_x = 0.19
            length_z = 1.1
            
            # prepare ofblockmeshdicthelper.BlockMeshDict instance to
            # gather vertices, blocks, faces and boundaries.
            bmd = BlockMeshDict()
            
            # set metrics
            bmd.set_metric('m')
            
            # base vertices which are rotated +- 2.5 degrees
            basevs = [
                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))
            for v in basevs:
                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 names
            def vnamegen(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 method
            bmd.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 output
            bmd.assign_vertexid()
            # output
            print(bmd.format())
        
Platform: UNKNOWN
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3.4
Classifier: Programming Language :: Python :: 2.7
Classifier: License :: OSI Approved :: MIT License
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: Other Environment
Classifier: Intended Audience :: Science/Research
Classifier: Operating System :: OS Independent
Classifier: Topic :: Scientific/Engineering :: Physics
