Pointwise   The Connector newsletter Pointwise Facebook Pointwise GitHub Pointwise LinkedIn Another Fine Mesh blog Pointwise Twitter Pointwise YouTube Y+ Calculator
Get a Free Trial

Facebook   Twitter   Another Fine Mesh   YouTube
LinkedIn   Y+   Script Exchange   Pinterest

The Connector, the newsletter for CFD Mesh Generation from Pointwise

November / December 2014

OpenVSP and Pointwise Work Together to Simplify CFD on New Vehicle Designs

By Travis Carrigan
Senior Engineer, Pointwise

You are in the conceptual design phase of a project and looking at an unconventional design. What is the best way to rapidly iterate the design and perform a wide array of high-fidelity trade studies? The answer: parameterization.

Parameterizing the entire geometry allows you to quickly generate a self-constrained set of designs, and OpenVSP (www.openvsp.org) is making this easier for conceptual aircraft design.

OpenVSP is a parametric vehicle design tool that has been under development for NASA for more than 20 years. Over the past 10 years, development of OpenVSP has accelerated, with primary focus on providing efficient connections to increasingly sophisticated physics-based analysis tools. Today, OpenVSP has thousands of users throughout government, industry, and academia who recognize its ease of use, flexibility, and speed from idea to analysis result.

One of OpenVSP's main objectives is to reduce the burden of producing geometry-based input for higher-order, physics-based analysis such as computational fluid dynamics (CFD). By streamlining the process from concept to analysis, OpenVSP can help reduce the design cycle time dramatically and give engineers the ability to analyze unconventional designs and validate lower order empirical models. To do this efficiently, there is a need to quickly and automatically generate high quality viscous grids ready for simulation from an OpenVSP design. This prompted us to investigate two approaches to integrate OpenVSP and Pointwise.

OpenVSP Mesh to T-Rex

The first approach involves generating an isotropic unstructured surface mesh in OpenVSP using its CFD Mesh function and importing the resulting STL-formatted surface mesh into Pointwise. A Glyph script was written to import the STL, generate the farfield topology, assemble and initialize the viscous unstructured grid using T-Rex (anisotropic tetrahedral extrusion), and export the result to any CFD solver supported by Pointwise. This process is automatic and invisible to the designer. Only a handful of parameters have been exposed so that the designer can spend more time in OpenVSP with their model and effortlessly generate a viscous grid when necessary.

OpenVSP geometry and surface mesh

Figure 1: High quality, manifold STL geometries generated using OpenVSP's CFD Mesh utility. The orange aircraft is the Future Transport designed by Philip Barnes, while the multi-colored aircraft is a generic transport provided by Rob McDonald. +

OpenVSP to Pointwise via STEP

It is best to work with the analytic surface definitions rather than discrete information when the user requires more control over the meshing process and needs anisotropy on the surface. Therefore, the second approach involves importing OpenVSP models using the STEP file format. Although OpenVSP's STEP export functionality is still in development, this article illustrates the validity of this approach and shows how Solid Meshing in Pointwise can be used to generate watertight models that enable automated surface and volume meshing.

STEP geometry from OpenVSP

Figure 2: This is a watertight solid model of a generic transport aircraft imported as a STEP file from OpenVSP . +

Both approaches require the user to generate a surface mesh suitable for unstructured viscous meshing. Because the quality of the volume mesh generated by T-Rex is highly dependent on the quality of the surface mesh, I will start by introducing a collection of strategies and best practices for handling gaps, areas of high curvature, and sharp feature edges. These best practices are software agnostic and apply whether a user elects to generate a surface mesh using CFD Mesh or Pointwise.

Unstructured Viscous Meshing Best Practices

1. Meshing Small Gaps

Small gaps in features or between features pose a significant challenge for meshing. Capturing high gradients in these regions requires that the grid be sufficiently fine. The problem is further exacerbated by the fact that viscous resolution is often necessary and collisions in the extruding fronts become a concern. T-Rex, our unstructured viscous meshing tool, prevents collisions from occurring as fronts are marching away from the surface by use of a parameter called the Collision Buffer. The Collision Buffer can be thought of as a walking stick for the marching front. When the front detects an imminent collision, it will stop locally, and most likely prematurely if the resolution on the surface is not fine enough. If the fronts must stop before reaching isotropy, not much room is left for high quality isotropic tetrahedra to be developed once T-Rex has finished. Therefore, it is advised that a higher Collision Buffer be used in these situations to allow for additional room between advancing fronts for higher quality tetrahedra to be generated.

collision buffer

Figure 3: This image illustrates the use of the Collision Buffer value to control the distance between approaching fronts being generated from two features in close proximity. +

There is a point at which the Collision Buffer will not help improve the quality. This occurs when the surface spacing does not allow the extruding front to reach a nearly isotropic state before an imminent collision is detected. It does not matter how high the Collision Buffer is, the space left between the approaching fronts will not be large enough for high quality elements to be generated, as shown in Figure 4.

surfaces are too close

Figure 4: If two features are extremely close, a high Collision Buffer value provides little to no benefit. +

The recommended solution is to decrease the lateral grid spacing along the surface. This can be done using a separate domain, a baffle, or using curvature based refinement if underlying curvature exists. In any case, a reduced surface spacing means that the front will travel fewer steps before reaching isotropy. The goal is to set the surface spacing such that the front will reach a nearly isotropic state as the Collision Buffer kicks in so the resulting tetrahedra generated after T-Rex has finished will also be nearly isotropic.

refined surface mesh

Figure 5: Notice that as the surface mesh spacing has been refined the fronts stop earlier and the elements in the gap are nearly isotropic. +

2. Resolving High Curvature (Leading Edges)

Areas of high curvature, such as the leading edge of a wing, can be resolved using two different surface meshing techniques: anisotropic refinement (2-D T-Rex) and isotropic refinement.

Anisotropic refinement using 2-D T-Rex in Pointwise results in a lower cell/point count. This is because cells are packed normal to the leading edge and stretched in the spanwise direction. For a wing, the flow tends to impinge on the leading edge (or close to the leading edge) and split. While there is a component of the flow in the spanwise direction, this component is significantly smaller than the component traveling in the chordwise direction. With cells packed normal to the leading edge, gradients can be approximated more accurately. The secondary effect of using anisotropic refinement in areas of high curvature is a more regular discretization of the surface. This is, of course, compared to the irregular discretization encountered during isotropic surface refinement.

Isotropic refinement involves using isotropic elements (quads or triangles) to capture areas of high curvature. Though a valid technique, this often results in high surface cell/point counts due to the number of elements required to accurately resolve the geometry and resulting flow field. Rather than packing cells normal to the leading edge, cells must be packed in the spanwise direction. Either anisotropic refinement or isotropic refinement can be used in these situations, but if cell/point count is a major concern, we suggest using anisotropic refinement.

isotropic and anisotropic refinement

Figure 6: Resolving areas of high curvature, like the leading edge of a wing, can be accomplished using either anisotropic refinement or isotropic refinement. +

3. Handling Convex Corners (Trailing Edges)

The trailing edge of a wing can be geometrically represented in a number of ways. Most common trailing edges encountered are either sharp or blunt. A sharp trailing edge consists of a convex corner often more than 270 degrees and therefore requires special treatment when using T-Rex to generate the volume mesh. On the other hand, a blunt trailing edge will have two convex corners, each with an angle of less than 270 degrees and does not require any additional treatment.

If the trailing edge is sharp, ensure that the T-Rex parameter labeled Full Layers is set to zero to allow multiple normals during the extrusion. As T-Rex advances the faces off the surface, it will compute the cell face normals of adjacent elements. In doing so, T-Rex can detect concave and convex regions and react appropriately. With Full Layers turned off, T-Rex will elect to splay multiple marching normals off a convex corner. The number of normals used depends on the angle and is automatically chosen to allow the extruding front to wrap smoothly around the corner. The result can be seen in Figure 7.

sharp trailing edge

Figure 7: Multiple marching normals allow T-Rex to generate boundary layer elements that wrap smoothly around the trailing edge of the wing. +

One side effect of multiple normals is large volume ratios in the volume mesh. Without significantly increasing the cell count, this is unavoidable. While most modern solvers can account for this deficiency, large volume ratios can cause inconsistent interpolation errors that can affect the integrity of the solution. However, if only a single normal is used by setting Full Layers equal to unity or higher, poor skewness is often the result and is often less desirable than large volume ratios.

multiple normals on a trailing edge

Figure 8: For a wing with a sharp trailing edge, the use of multiple normals results in large volume ratios, whereas a single normal will result in poor skewness. +

A blunt trailing edge is desired and realistic. With Full Layers set to unity or higher, a single normal is used in the marching direction at each convex corner. Because several elements are used to resolve the flat trailing edge, elements can still wrap smoothly around both corners and result in a high quality viscous volume mesh. It is true that at each corner there is a localized area of relatively high skewness, but this can be reduced significantly by decreasing the chordwise spacing at each corner.

multiple normals on a blunt trailing edge

Figure 9: For a wing with a blunt trailing edge, a single normal is used at each of the two convex corners. +

Using OpenVSP and Pointwise Together

As mentioned in the introduction, there are two methods for going from conceptual design in OpenVSP to CFD meshing in Pointwise. The first involves generating the surface mesh in OpenVSP. The second involves transferring the geometry to Pointwise via STEP.

Surface Meshes from OpenVSP

Putting all the previous best practices to work, a surface mesh can be generated to yield a high quality viscous volume mesh. For OpenVSP users who wish to stay in OpenVSP, CFD Mesh can generate isotropic triangular surface grids. The result can be exported as an STL and imported into Pointwise as a surface mesh. This is an attractive solution for Glyph scripting and automating the volume meshing process with T-Rex.

isotropic surface mesh from OpenVSP

Figure 10: The CFD Mesh utility in OpenVSP gives users the opportunity to prepare an isotropic triangular surface mesh. +

When generating a surface mesh in OpenVSP, a number of facilities exist to control the surface mesh according to best practices. The global mesh controls are typically used to provide curvature based refinement and are analogous to Pointwise's unstructured surface meshing parameters. Therefore, a good rule of thumb is to set up the controls to provide sufficient resolution to the bulk geometry – features like the fuselage, wing, pod, and tail components. Do not worry about capturing the leading or trailing edges just yet.

OpenVSP's surface mesh controls

Figure 11: The global mesh controls available in OpenVSP are analogous to the unstructured surface meshing defaults in Pointwise. This is great for users who may not be familiar with both tools. +

Once an initial surface mesh has been generated, it is time to refine gaps, areas of high curvature, and convex features. Sources provide an efficient means of doing local refinement. In fact, because OpenVSP is parametric, a number of default sources exist for each component. For example, the default sources for a wing encompass the leading edge, trailing edge, root and tip. The location, size, and target triangle edge length for each source can be adjusted.

sources for surface mesh refinement

Figure 12: Sources can be used to provide additional surface mesh refinement. Because the geometry is parametric, default sources are often all that is necessary. +

CFD Mesh will be illustrated by meshing the pylon and nacelle of the Future Transport aircraft. During the initial setup, the meshing values chosen were based solely on the bulk geometry and the minimum acceptable cell size values. A maximum edge length of 0.25 units and a minimum edge length of 0.01 units were used to accurately resolve the fuselage and main wing, but the smaller features lacked the surface mesh resolution ultimately desired. Adding default sources and locally refining them helped to further resolve the nacelle body while also helping to capture the leading and trailing edge of the pylon.

a mesh clustered using sources

Figure 13: This image illustrates the use of sources in OpenVSP to provide appropriate surface mesh refinement. +

Once the surface mesh is complete, it can be exported to Pointwise as an STL. Pointwise can import the STL as either geometry or a surface mesh. When imported as a surface mesh, only the farfield domains need to be constructed to close the fluid volume around the aircraft. T-Rex can then be used to generate the final volume mesh.

example surface mesh

Figure 14: The final surface mesh consisted of approximately 350,000 triangles. +

Because the process of generating the volume mesh is easily reproducible, it has been scripted using our Glyph scripting language. Once the STL has been exported from OpenVSP, the user simply executes the script and it will import the STL as a surface mesh into Pointwise, generate the farfield domains, create the block, run T-Rex, and export the result to the solver of choice. Only a handful of parameters have been exposed to the user to further reduce complexity. In the end, the volume meshing process is nearly invisible to the user. Figures 15 and 16 show several cuts through the final volume mesh.

volume mesh near pylon

Figure 15: T-Rex generates prism elements (white) in the boundary layer region followed by tetrahedra (blue) in the farfield. The prism elements are able to march smoothly out of the concave corners constrained by the pylon-nacelle and pylon-body. +

volume mesh near wing-body junction

Figure 16: This cut through the prism elements shows how well T-Rex is able to march nicely out of the wing-body corner. +

If multiple CAE boundary conditions must be specified on the surface, or if variable wall spacing is required, then it is advantageous to use the multi-solid STL option. In OpenVSP, surfaces can be assigned names prior to export. Upon import, Pointwise will recognize the various solids and import each as a separate domain. The result is a manifold collection of domains that have the same names specified in OpenVSP and can be used to provide additional control when generating the volume mesh and exporting to a CFD solver.

named surface meshes

Figure 17: A multi-solid STL geometry imported into Pointwise with names applied to each domain. +

Geometry from OpenVSP

Analytic geometry is recommended if additional meshing control is necessary. The latest version of OpenVSP will support STEP export. Using this export option, each component is exported as a collection of B-spline surfaces. Upon import, Pointwise creates a quilt and model for each B-spline, topology that relates the final surface mesh to the underlying parameterization of the surfaces. Because the geometry is clean, models that represent the original components in OpenVSP can quickly be created. At this point, a collection of intersecting manifold models exists in Pointwise.

one model per component

Figure 18: Each component is represented as a single watertight model in Pointwise. +

The models can be trimmed with each other using the Edit, Trim by Surfaces command in Pointwise. The trimming operation results in clean intersections whereby all internal geometry has been removed. The result can quickly be stitched into a single watertight model using the Assemble, Models command. And once the model has been created, quilts can be assembled to define regions that represent the original engineering intent of the aircraft. For example, quilts can be assembled to form the fuselage, the upper surface of the wing, and the lower surface of the wing. In Pointwise, each quilt when meshed receives a single unstructured domain. Therefore, quilting can be used to define the topology of the resulting surface mesh and enable automated surface meshing. This article describes how quilting can make surface meshing easier.

trimmed to a single model

Figure 19: Once the models have been trimmed, a single watertight model can be assembled and quilts can be defined for surface meshing. +

With the model created and the quilts defined, an initial isotropic surface mesh can be generated in a single click. However, one advantage of generating the surface mesh within Pointwise is the ability to create anisotropic surface elements to reduce the cell/point count. Therefore, 2-D T-Rex is used to resolve the leading and trailing edges of the wings, vertical, and horizontal stabilizers. Further refinement can be accomplished on a per domain level if necessary.

final surface mesh

Figure 20: This is a surface mesh created using Pointwise for the generic transport model. +

The last step is the creation of the farfield domains and initialization of the unstructured block using T-Rex. The process from import to volume mesh generation was done by hand for this example, but this webinar for the NASA CRM geometry demonstrates how easily it can be scripted.


A few months ago I had the pleasure of presenting this work at the OpenVSP Workshop in San Luis Obispo, California. More recently, at the Pointwise User Group Meeting in Anaheim, California, Rob McDonald, one of the primary developers of OpenVSP, and I further expanded upon this work and introduced additional ways (multi-solid STL & STEP export) that OpenVSP can interface with Pointwise. My hope is that this article serves as a reference for anyone interested in parametric design and users of both OpenVSP and Pointwise interested in performing viscous CFD calculations.

If you'd like to try the script that imports the OpenVSP generated surface mesh and automatically generates a volume mesh in Pointwise, please feel free to download the script VSP2CFD from the Glyph Script Exchange on GitHub. Just press the button below.

◀ Previous Article     ▲ Contents     Next Article ▶