Due to the lapse in federal government funding, NASA is not updating this website.

Suggested Searches

OpenVSP Design Variables

The guides below will introduce you to OpenVSP Design Variables and how these features can be leveraged to quickly change select model parameters from a single location or automatically load parameter values from a file.

Encyclopedia
Updated Sep 29, 2025

Introduction

Design Variables are a great way of collecting all of the important parameters in your model in a single location so you can quickly alter these settings without having to switch between components and tabs within the windows. You may also save and load Design files to quickly change multiple parameters at once. This is very useful for short, relatively simple trade space explorations that can be scripted.

Once you have a model roughly completed and you want to quickly change only a few design parameters, Design Variables is your best friend. Being able to change your most important parameters from a single location saves you hours of manual back-and-forth.

Brandon Litherland
Aerospace Engineer

Working with Design Variables

Adding or removing design variables is very simple. To add a variable, you can choose the Container, Group, and Parm corresponding to the parameter you want and click “Add Variable” or, much easier, you can click on the parameter name in the component window and drag to the Design Variable List. Click on a parameter in the Variable List window to highlight and then click “Delete Variable” to remove it from the list. All stored design variables may be adjusted by slider or text entry under the Adjust tab.

Click-and-drag is the best way to add variables to your list. In the event that a variable isn't visible in the GUI (it happens), drag a variable that is close to the one you want to change and then you will likely find that variable in the dropdown menus.

Brandon Litherland
Aerospace Engineer

Design Variable Files

Once you have the relevant design variables grouped together, you can save the current state of those variables into a design variable file (*.des) that writes the variable information and current values to a text file. Simply click “Save” under the Pick tab in the Design Variables window to open a dialog to save or overwrite a *.des file. To load a design variable file, click “Load” under the Pick tab and choose a *.des file. Once accepted, the model will update the design variable parameters to the values stored in the design file.

Be aware that changing component composition can and likely will change the parameter IDs that connect the DES file to your variables. Adding and removing cross-sections or changing section type are two examples of actions that can break DES file connections. Best practice is to resave the DES file after making these changes to refresh the connections.

Brandon Litherland
Aerospace Engineer

Modifying and Executing Variable Files

You can load a design file directly from the command line with OpenVSP by executing “vsp.exe -des <desfile> <filename.vsp3>” where <desfile> is the name of the design file and <filename.vsp3> is the model with the corresponding parameter IDs. Design files are NOT model agnostic. The parameter IDs for a particular model are saved in the file and will not work with similar parameters on a different model if the IDs are different.

Changing and executing DES file changes may be automated in your scripting language of choice. However, if you are automating these decisions or changes, it's likely better to start directly changing the variables in the API (application programming interface).

Brandon Litherland
Aerospace Engineer

Finding Parameters in the Explorer

The Design Variable explorer is a handy way of finding the Container, Group, and Parm values for parameters that aren’t readily available by click-and-drag in the GUI. For example, the Translate options under the XForm tab don’t have a Parm popup that tells you this information. However, if you search for a component in the Container and the Attach Group, you’ll find a parm called “Trans_Attach_Flag” which controls this setting. You can change the value of this parameter under the Adjust tab and watch the checked box change in the GUI as the model updates to the new value. Not only is this useful for finding “hidden” parameters that you want to add to a Design file but the process may also be used to identify the Container, Group, and Parm values needed to interact with a model via scripts and the OpenVSP API in an automated way.

OpenVSP's grouping of variables makes it very easy to locate "hidden" parameters or those that don't directly allow users to click on the parameter name.

Brandon Litherland
Aerospace Engineer

Avoiding Design Variable Conflicts

You can inadvertently cause a conflict between design variables by choosing inactive or “dead” parameters that don’t have any control over your model or by adding multiple interconnected parameters to the same design variable list. For example, under the Wing Sect tab, if Span, Taper, and Root C are active, all other section planform parameters are deactivated. So just like trying to adjust the Area slider in this scenario, nothing will happen from the design variable window or files. However, if you were to add the Planform Total Area, Total Chord, and Total Span to the list, you’ll find that the values will be based on whichever parameter was changed last. Furthermore, if you try and alter the *.des text file and load values that are in conflict, your model will only update the values of some of the parameters.

One handy way of identifying potential conflicts among parameters is to see which values are updating automatically when you change a given parameter. In the above example with Span, Chord, and Area, you’ll find that adjusting the Area slider will update both Span and Chord automatically to new values. If you see this behavior, avoid adding one of these.

It’s also worth noting that OpenVSP will not iterate until looped variables converge! Conflicting variables will loop through once and stop.

Because OpenVSP is so highly parameterized, it's very easy to accidentally connect variables in a loop. Understand how your model behaves and think clearly about how changes propagate through the components and model. If at any point the chain of events connects back to itself or breaks, you've got a problem.

Brandon Litherland
Aerospace Engineer