User Tools

Site Tools


Structural Modeling

OpenVSP allows a user to model aerospace structures for a geometry and generate a finite element mesh model. This model can then be exported to an external FEA software package for post-processing and further analysis. To begin, a geometry must first be created or loaded. A structure can then be defined for the geometry using the FEA Mesh GUI. The GUI is accessed by clicking “FEA Mesh…” in the Analysis pull down menu. Access to structural modeling and mesh generation is also available through the API.

VSP Terminology


A structure is defined as a collection or assembly of FEA parts. Structures are associated with a single parent geometry from which the outer mold line (OML) serves as the primary FEA part. A geometry is able to have multiple structures associated with it.

FEA Part

An FEA part is any structural entity that can be added to a structure. This includes full-depth, zero-depth, and key-point types of entities.


A structural entity that passes entirely through a geometry is considered full-depth. Triangular shell elements are used to define the surface of the full-depth entity. Examples of full-depth aerospace structures include ribs, spars, and floors.


A zero-depth structural entity is composed of a series of beam elements. It can be defined along either a sub-surface edge or the intersection curve of two surfaces. Stringers, longerons, and other stiffeners are represented as zero-depth entities.


A specific FEA node that is fixed in space is referred to as a key-point (used interchangeably with fixed point). Key-points can be used to provide connectivity to other FEA meshes. The can also be used to apply a point load or mass at a specific location.

FEA Element

A group of interconnected FEA nodes create an FEA element. All elements are assigned a single element property.

FEA Node

An FEA node is a 3D coordinate point used to build FEA elements. FEA nodes may be assigned to multiple elements. Key-points are FEA nodes that have been defined at a specific location.


Shells are full-depth FEA parts comprised of triangular FEA elements. In Nastran these elements are CTRIA6. In Abaqus and Calculix they are S6 elements.


A cap is a zero-depth FEA part made up of beam FEA elements. The beam elements are represented in Nastran as CBAR. In Abaqus and Calculix they are B32 elements.

FEA Mesh Screen

Visible on all tabs of the FEA Mesh GUI are the status window, current structure identification, “Mesh and Export” button, and “Reset Display” button. The status window is mainly used to display the progress of FEA mesh generation, which is run as a separate process. Error messages and warnings will also be displayed in the status window. The current structure is listed at the bottom left of the GUI, and shows which structure is highlighted in the structure browser on the Structure tab. This is the structure that will be used to create the FEA mesh when “Mesh and Export” is selected. If a mesh has been generated, “Reset Display” will hide the mesh and show the parent geometry for the selected structure, along with its FEA parts.

Structure Tab

The main function of the Structures tab is the addition and removal of structures for the vehicle. At the top of the tab under “General”, there is a link to this wiki page. Below, the unit system for the vehicle can be specified. If the unit system is changed, all FEA related parameters are automatically converted. Since all of the FEA export file formats are unitless, the following options are available to ensure consist units:

The structure browser lists all of the structures for the vehicle, along with their name, parent geometry, and surface index. Below the browser, all available geometries a structure may be added to are listed. All geometry types, with the exception of Blank and Hinge, are allowed as a structure's parent. The available surface indexes for each geometry are also listed. More than one structure may be added to a geometry. The “Add Structure” button will create a new structure on the geometry and surface indicated in the above choices. “Delete Structure” will, as expected, delete the structure that is currently selected in the browser. The name of the currently selected structure may be edited below the add and delete buttons. When a structure is selected, the degenerate geometry preview can be displayed under “Orientation”. This feature is particularly useful for wing structural layups, where a top-down 2D view is shown. The display options can also be changed in the Geom Browser under “Surface”.

Part Tab

The Part tab provides organization and control of FEA parts for the selected structure. The browser at the top of the tab lists all FEA parts for the structure, and includes their name, type, structural entity type, and property assignment. To the left of the browser, controls are available for reordering FEA parts. The ordering of parts in the browser is important in the case of tagging conflict, where priority is given to the part higher up in the browser. For example, if two FEA sub-surfaces overlap, the overlapping region is tagged according to the FEA part earlier in the list. Another feature of the browser is that multiple FEA parts can be selected at once. The options under “General” can then be set for the group of selected parts (or individual part). To add an FEA part to a structure, the FEA part type must first be indicated. The available FEA part types are slice, rib, spar, fixed point, dome, rib array, slice array, line, rectangle, ellipse, control surf, and line array. For more details on these part types, see the “FEA Part Types” section of this wiki page. One or more FEA part can be deleted by selecting “Delete Part”. A part can be renamed with the input in the middle of the tab. If a single FEA part is selected, the “Edit Part” button will open the FEA Part Edit GUI. This GUI, which can also be accessed by double clicking an FEA part in the browser, offers controls and options unique to each FEA part type.

Material Tab

The Material tab contains a library of linear, temperature-independent, isotropic materials. In Nastran, these are defined by the MAT1 keyword. Materials in the library are available to all structures and are saved with the vehicle, so there is no need to recreate materials for different structures. The browser at the top of the Materials tab lists all materials in the library. The default materials available are Aluminum 7075-T6, Aluminum 2024-T3, Titanium Ti-6AI-4V, and AISI 4130 Steel. These materials can not be edited or deleted. To add a material, simply select “Add Material” and adjust the parameters for mass density, elastic modulus, Poissons ratio, and thermal expansion coefficient.

Property Tab

Similar to the Material tab, the Properties tab contains a library of FEA element properties available to all structures. Properties are specified as either shell or beam, and there must be at least one of each type at all times. The browser at the top of the tab lists the name, type, cross section, and material of the properties in the library. A default shell and beam property are provided, and can be edited as desired. To add a new property, simply specify the type and click the “Add Property” button. The selected property can be renamed or deleted (unless it is the last of its type). All properties are assigned a material from the library on the previous tab. For shell properties, the only additional parameter is thickness. Shell properties are written in Calculix and Abaqus with the SHELL SECTION keyword. In Nastran, PSHELL is used. For beam properties, the cross section of the element defines the additional parameters needed. The available cross sections are General, Circle, Pipe, I, Rectangle, and Box. In Calculix and Abaqus, the “Beam General Section” keyword is used if the cross section is general, and “Beam Section” is used for all other cross section types. Similarly, Nastran uses PBAR for general cross sections and PBARL otherwise. The “Show XSec” button next to the cross section type opens a new window with a diagram of the cross section. Once the FEA properties library has been built up, properties can be assigned to individual FEA parts. As would be expected, shell properties can only be assigned to triangular shell FEA elements and beam properties can only be assigned to beam FEA elements.

Mesh Tab

The Mesh tab is available for controlling aspects of the FEA mesh solver. The settings are saved with the individual structure, so a structure must be selected when making use of this tab. The options available are similar to those seen on the Global tab of the CFD Mesh GUI. Further insight into these settings can be found here: CFD Mesh Wiki.

Output Tab

The Output tab identifies all of the possible file formats that can be exported upon completion of an FEA mesh generation process. The first two, *.stl and *.msh, are general mesh formats that do not include any material or property data. The mass output file is a *.txt file that lists the mass of each FEA part, divided between shell and beam FEA elements. The remaining two export files under the “File Export” section, Nastran and Calculix, contain all available FEA mesh information, such as material and property data. The NASTRAN *.dat file is written following the specifications set forth by Siemens in the NASTRAN Documentation. The Calculix *.dat output follows the file format defined in the Abaqus Documentation. These files may be imported into an external FEA mesh program for further processing and analysis.

OpenVSP v3.15.0 introduced additional surface and intersection curve features. Under “Surfaces and Intersection Curves” on the Output tab, the *.curv and *.p3d file formats are available for export of intersection and border curve data. The *.srf file contains the information used to define all of the individual patches for the structure's FEA parts. An option is available to include the intersection curves in this file.

Display Tab

The Display tab is used to control visualization of the generated FEA mesh. Therefore, it has no functionality until the “Mesh and Export” button has been selected. At the top of the tab under “Display”, toggle buttons are available for controlling the display of all sets checked under “Display Element Sets”. “Draw Mesh” shows the borders of each triangular shell element. “Color Elements” applies a different color to each element set. “Draw Nodes” displays each individual FEA node. “Draw Element Orientation Vector” draws the normal vector for beam elements. For shell elements, this button draws a vector pointing in the direction of increasing U. Since the FEA mesh is unstructured, this orientation vector is useful when laying out composite laminate layers. The “Intersection Curve Display” section contains options to display the intersection curves and border curves identified during mesh generation. Under “Display Element Sets”, FEA parts are grouped by their shell and beam elements. Their visibility is controlled by the check boxes next to each set or by using the “Show All” and “Hide All” buttons.

FEA Part Types


Skin is defined as the OML of the structure's parent geometry. It is automatically added to a structure upon its creation, and can only be removed by deleting the structure. The skin is composed of shell FEA elements, which the property for can be specified. The only additional option available for skin in the FEA Part Edit GUI is to delete the skin triangles after the FEA mesh has been generated.


Slice is a 2D cutting plane that is used to intersect a skin. A slice can be full-depth, zero-depth, or both, specified by selection of “Shell”, “Cap”, or “Shell and Cap”, respectively. The cutting plane for a slice is defined by an orientation, center location, and rotation. Orientation is the plane the slice runs parallel to. This can be defined from either the absolute axes or the body axes of the parent geometry. An option is available to specify distance as either relative or absolute. Relative distance is identified as a fraction of the bounding box of the parent geometry. Absolute is defined as a fixed location within the bounding box.


Ribs are a derivation of slice parameterized specifically for wing geometries. Ribs are defined from the leading edge to the trailing edge of the wing, parallel to the local XZ plane. In the FEA Part Edit GUI, “Edge Normal” can be used to specify the rib as perpendicular to the wing's leading edge, trailing edge, or any spars that have been added to the structure. Ribs can be constrained to a particular start and end wing section, from which they will automatically be trimmed to. Therefore, it is possible to place one rib at a wing cross-section and have another rotated rib trimmed to the cross section. Ribs are automatically sized without calculating surface intersections by assuming a linear trapezoidal wing. If modeling a rib on a complex wing geometry, the “Trim to Bounding Box” toggle can be used.


Spars are another extension of slice made for wing geometries. They are defined from the root to tip of the wing, oriented vertically along the local YZ plane. Similar to ribs, a trapezoidal wing section is used for sizing the cutting plane unless the “Trim to Bounding Box” option is selected. Start and end wing sectional constraint can be applied to spars as well.


Dome is a semi-elliptical cutting surface that can model pressure bulkheads and similar aircraft structures. The parameters used to define a dome are radius (A, B, C), location (X, Y, Z), and rotation. The center of the dome can be initially constrained to the spine of the parent geometry. The location along the spine can be specified, and the dome can then be translated from there. This allows the dome to react more parametrically to changes made to the parent geometry. It is important to note that domes must be oversized manually to correctly intersect the skin, due to the fact that the skin-dome intersections are not calculated until FEA mesh generation begins. Dome is not available for wing geometries.

Fixed Point

A fixed point, or key-point, is a forced FEA node at a specified surface location (UW coordinates). Fixed points can be placed on the parent skin surface or any available FEA part surface. A fixed point can also be turned into a mass element and assigned a mass value. This element is defined as CONM2 in Nastran and MASS in Calculix and Abaqus.

FEA Sub-Surface

Sub-surface modeling capabilities have been extended to structures in the form of line, rectangle, ellipse, and control surf sub-surface types. All of the same options and parameters for “normal” sub-surfaces are available to FEA sub-surfaces. However, sub-surfaces defined on a geometry are not automatically transferred when a structure is created. FEA sub-surfaces can be used to assign properties to specific areas, define separate element sets, cut holes in a surface, and create beam elements. “Tag” is used to specify which triangular shell elements are identified as belonging to the FEA sub-surface. If “Cap (No Tris)” is indicated, all shell elements tagged for the sub-surface will be deleted and a hole will be left.


Arrays are groups of FEA parts defined by their start and end location, spacing, and direction. The three types of arrays are rib array, slice array, and line array. Many of the same options and features available to the individual FEA part type are available for the array as well. If a specific number of parts is desired for the array, distance should be indicated as “Relative”. “Absolute” ensures a fixed distance between parts in the array. All arrays have the option to be individualized, which turns the array into individual FEA parts. Note, this action cannot be reversed.

Best Practices

Although a focus of the development for structural modeling in OpenVSP has been making it as robust as possible, certain cases can cause structural layout issues or mesh generation errors. Some of these may be worked around while others do not have a solution at this time. If you believe that you have found a bug or unsupported use case that is not identified here, please send us an email or post on the Google Group here:!forum/openvsp

  1. Save your model frequently, especially before mesh generation. Use the FEA mesh generator with coarse mesh settings to check for potential errors while building up your structural model.
  2. Avoid coplanar overlapping surfaces. Since the FEA mesh solver cannot identify a single intersection curve for two coplanar surface, mesh errors are likely to result. A common example of this is attempting to place a rib directly on a flat wing root or tip cap (see the images below). One workaround for this is to use a line subsurface to assign the root or tip with rib properties.
  3. FEA parts directly at the edge of a surface may not meshed correctly, so it is best to offset the FEA part just slightly from the surface edge. An example of this is adding a rib to a wing root or tip when the cap is set to “None”. This will likely cause the rib to mesh incorrectly or be lost.
  4. Avoid placing planar FEA parts at the exact same location. Doing this will cause the FEA parts to be merged. In the merge, only data for the FEA part higher in the FEA part browser will be kept.
  5. If placing a fixed point on an FEA part surface other than the skin, make sure the fixed point is located within the intersection curve of the parent part. Otherwise, the fixed point can cause the parent surface to be trimmed incorrectly.
  6. Ribs and spars on complex wing geometries may not intersect the skin correctly. If this is the case, try using sectional constrains or using the “Trim to Bounding Box” option. Slice can also be used to model a rib or spar.
  7. Mesh errors often result when intersection curves overlap. This could occur if a spar is placed on a control surface edge, a slice is aligned directly with a line sub-surface, or a similar intersection conflict is created.
  8. Currently, a planar slice that completely intersects the first and last constant U/W curve (feature line) of a closed U/W geometry is not supported in the FEA mesh generator. Similarly, a slice that completely intersects a wing leading or trailing edge feature line is not supported.

API and Scripting


int AddFeaStruct( const string & in geom_id, bool init_skin = true, int surfindex = 0 )
void DeleteFeaStruct( const string & in geom_id, int fea_struct_ind )
string GetFeaStructName( const string & in geom_id, int fea_struct_ind )
void SetFeaStructName( const string & in geom_id, int fea_struct_ind, const string & in name )
void SetFeaMeshVal( const string & in geom_id, int fea_struct_ind, int type, double val )
void SetFeaMeshFileName( const string & in geom_id, int fea_struct_id, int file_type, const string & in file_name )
void ComputeFeaMesh( const string & in geom_id, int fea_struct_ind, int file_type )
string AddFeaPart( const string & in geom_id, int fea_struct_id, int type )
string DeleteFeaPart( const string & in geom_id, int fea_struct_id, const string & in part_id )
string AddFeaSubSurf( const string & in geom_id, int fea_struct_id, int type )
string DeleteFeaSubSurf( const string & in geom_id, int fea_struct_id, const string & in ss_id )
string AddFeaMaterial()
string AddFeaProperty( int property_type = 0 )


FEA Part Type


FEA Part Element Type


FEA Slice Type


FEA Unit Type


FEA Cross Section Type


FEA Export Type


References and Further Reading

  1. Bruhn, E. F. (1973). Analysis and Design of Flight Vehicle Structures. Indianapolis, Jacobs Publishing, Inc.
  2. Cutler, John, and Jeremy Liber. (2005). Understanding Aircraft Structures , 4th Edition. 4th ed., Blackwell Publishing Ltd.
  3. Dhondt, Guido. (2017, April 2).CalculiX CrunchiX USER’S MANUAL version 2.12.
  4. MatWeb Material Property Data.
  5. Niu, Michael C. Y. (1988) Airframe Structural Design: Practical Design Information and Data on Aircraft Structures. Hong Kong, Conmilit Press Ltd.
  6. Siemens. Element Library Reference.
  7. Siemens. NX Nastran User Guide.
  8. Simulia. Abaqus 6.14 Documentation.
  9. U.S. Department of Transportation, Federal Aviation Administration. (2012). Aviation Maintenance Technician Handbook- Volume 1.

Back to Landing Page

This page was created and edited by: — Justin Gravett 2017/09/21 12:00

feamesh.txt · Last modified: 2018/04/01 14:41 by