A python script to create mesh geometry for the ROBIN (ROtor Body INteraction) generic helicopter fuselage.
The program takes 4 integers as input. These represent the number of sections in the lengthwise and circumferential directions for the fuselage and pylon surface geometry.
The required output mesh filetype can also be specified with the -f
flag.
./genRobin.py -f vtk 48 32 24 24
The command writes out two triangle mesh files robinFuselage
and robinPylon
which contain the fuselage and the pylon geometry.
If the -f
flag is skipped, the .obj
file format is used by default. Other mesh formats are handled using the meshio module.
genROBIN.py [-h] [-f {csv,dat,obj,ply,stl,vtu,vtk}]
nxFuselage ntFuselage nxPylon ntPylon
positional arguments:
nxFuselage No. of lengthwise elements for fuselage
ntFuselage No. of circumferential elements for fuselage
nxPylon No. of lengthwise elements for pylons
ntPylon No. of circumferential elements for pylons
optional arguments:
-h, --help show this help message and exit
-f {csv,dat,obj,ply,stl,vtu,vtk}
Geometry file type
genROBIN
may also be used by importing as a module as shown below.
import genROBIN as gr
# Create and write out fuselage geometry
x, y, z = gr.getVertices(nx=48, nt=32)
gr.writeOBJ(x, y, z, "robinFuselage.obj")
# Create and write out pylon geometry
x, y, z = gr.getVertices(nx=24, nt=24, isPylon=True)
gr.writeOBJ(x, y, z, "robinPylon.obj")
x, y, z
are 2D arrays with the first index along the axis of the geometry, representing each lateral cross-section. The second index represents the coordinates on the geometry at that cross-sectional slice.
genROBIN
can output mesh geometry in the following file types.
This script generates triangular surface elements. The mesh can be converted to quad elements easily using the Recombine 2D
operation in GMSH. GMSH can also be used to generate higher-order elements from the mesh output from this script. STL mesh files reported the least amount of failures when importing into GMSH. The following example python script converts tri elements to quad using the gmsh python API.
import gmsh
gmsh.initialize()
gmsh.open("robinFuselage.stl")
gmsh.model.mesh.recombine() # Convert tri to quad elements
gmsh.model.mesh.setOrder(2) # Convert to 2nd order elements
gmsh.write("robinFuselage.msh")
gmsh.finalize()
This script was created by referencing robin-surface-mesh. The authors are duly acknowledged. They report that several corrections were necessary to coefficient data from the originally published reports (Refs. 1, 2) to generate the right shape and avoid obtaining NaNs.