OpenVSP 3.26.0 Released

245 views
Skip to first unread message

Rob McDonald

unread,
Jan 1, 2022, 12:56:55 AM1/1/22
to ope...@googlegroups.com
Happy New OpenVSP!  A new version for the New Year.

This version is long overdue.  First expected to contain a small number of minor features -- the fixes are what really stand out in this release.  2022 looks like a good year for OpenVSP, expect more frequent releases on a variety of fronts.

There will be an OpenVSP overview paper presented (virtually) at SciTech, unfortunately I will not be there in person.  Have a safe conference and look for the new paper.

There are no significant VSPAERO updates here -- but I know Dave has some in the pipeline that we will try to get out soon.

There are a few significant geometry changes.

First, XSec Curves (think super-ellipse, rounded rectangle, etc) can now be parameterized by any combination of Width, Height, Area, and Height/Width ratio (pick two).  It takes some magic under the hood, but it should 'just work' for the user.  Next time you're designing an internal flow passage, set your area and adjust other parameters as needed.

Second, Propeller section curves can now be lofted onto the cylindrical surface they are on instead of a flat plane.  This will be useful for anyone designing ducted propulsors with finite tip-gaps, or if you think a curved foil will better match your blade-element theory design.

Third, Rounded Rectangle corner rounding has been fixed for non-orthogonal corners.  It astounds me that nobody has noticed and complained about this before -- it has been broken for years.  Sometimes I wonder if anybody uses this stuff.  Tap tap tap...  Is this mic on?  The radii are correct now and the corners should be much more circular in extreme cases.

There are a few analysis improvements - open meshes are allowed for planar slice, and single slicing is now allowed (useful for FitModel workflows).

Two changes should greatly improve the performance of the GUI.

First, the Faster Update changes from a few versions back were extended to prevent a full Update when changing the active XSec or Airfoil (clicking arrows at the top of the XSec, Skin, Modify, Airfoil, or Blend tabs).  This should be nearly instant now.

Second, the GUI update was doing something foolish that really slowed things down in some cases (mostly complex propellers).  General interaction should be much faster now.

One particular bug fought dirty and made it personal.  I feel like it is one of the most challenging bugs I've ever fixed.  I'm fairly sure that it only affected me on my development machine -- but it may have been the source of random seeming problems for other users too.  The symptoms looked like memory corruption (it wasn't).  You may know that OpenVSP uses unique identifier strings extensively.  The bug caused us to sometimes generate non-unique identifiers -- this is bad.  One of the libraries we use was resetting the random number generator seed without our knowledge.  Sometimes it would get reset to the start of the identical sequence of random numbers we were using.  Other times it would start on a fresh sequence.  When reset to the same sequence, collisions would occur.  Changing to a new RNG with a private seed cleared this right up.

Chasing this bug provided motivation to perform lots of cleanups across the code base.  While none were critical or likely substantial, they represent good progress to prevent future problems and improve the signal to noise ratio when using various diagnostic tools.

Justin Gravett helped out with this release in a number of ways.  Announcement of his departure in the last release was slightly premature.  Jason Welstead make a handful of improvements to the CHARM automation framework.  Luz Paz corrected typos throughout the source code.  Julius Quitter and anwarmou both contributed tweaks to how VSPAERO presents results or how OpenVSP reads them in.  Thanks also to everyone who reported bugs and made other suggestions.

There are lots more updates and fixes in here, but the performance improvements and bug fixes should provide enough motivation for everyone to update.

Features:
 - Area parameterization of 2D body-type curves
 - Cylindrical projection of propeller sections
 - Allow slicing of open meshes
 - Allow planar slicing to do just one slice
 - Increase sig-figs in Prop Edit Curve GUI
 - Add Approximate All button for Prop Curves
 - Add Reset thickness button for Prop Curves
 - Improve behavior for deleted variables with Advanced Links
 - Optimize ScreenBase update -- much faster now
 - Improvements to CHARM Automation from Jason Welstead
 - Add missing Body of Revolution API Calls
 - Add GetVehicleID() to API
 - Draw arrow icons for symmetrical props and disk-mode props
 - Allow Wedge airfoils to be inverted (GUI addition)
 - Scroll wheel to zoom
 - Calculate T/C for CST and VKT airfoils
 - Remove remnants of v2 drag TSV file output from CompGeom

Bug Fixes:
 - Fix RNG problem that could result in ID collisions
 - Don't trigger full update when changing active XSec or Airfoil
 - Fix rounded rectangle for non-orthogonal corners
 - Improve accuracy of circle approximations
 - Fix crash in FEA GUI when attempting to delete OML skin
 - Make 2D View screen work with Body of Revolution
 - Call ToBinaryCubic before interpolating airfoils, prevents crashes
 - Limit ToBinaryCubic recursion level
 - Improved support for reversed props and disks

Cleanups:
 - Make curve editing GUI code common across users
 - Various typos in source thanks to Luz Paz
 - Move Util.cpp/h to VspUtil.cpp/h to avoid name collisions
 - Myriad general source cleanups suggested by static analysis and Valgrind
 - Make sure all Parms have a non-null ParmContainer
 - Move non-Vehicle Parms registered to Vehicle to be Vehicle Parms
 - Make LightMgr proper singleton, eliminate VehicleGuiDraw

Ismeret Tenger

unread,
Jan 2, 2022, 1:33:07 PM1/2/22
to OpenVSP
Hi Rob,

I just upgraded my Mac to 12.1, hoping it will have Python 3.9, but it has not.

janos@MacPro-2 ~ % python3 --version

Python 3.8.9



Then I guess I need the 3.26.0 with Python 3.6?  As we know the Apple supplied python is still 2.x
Thanks ahead,
János

Rob McDonald

unread,
Jan 3, 2022, 12:53:20 AM1/3/22
to OpenVSP
I am not surprised.  You will likely need to install Python 3.9 through Anaconda or Homebrew or similar means.  Or you can do it manually.

Similarly, I would be surprised if everyone's Mac previously had 3.6 installed.

Rob

lzzha...@gmail.com

unread,
Jan 4, 2022, 3:03:10 AM1/4/22
to OpenVSP
Hi, Bob
When I creating a new PropGeom in OpenVSP 3.26.0,I cannot change and edit the "Curve" type under the Blade tag, except the chord.
It looks like a bug in this version.  

Thanks ahead.
Longzhi

timoth...@gmail.com

unread,
Jan 4, 2022, 4:33:57 AM1/4/22
to OpenVSP
Hi Rob and team, 

Happy New Year and thanks for another release! I was wondering if this site https://nari.arc.nasa.gov/vsp is still the place to go for the videos and slides? I went back there to check up on some information, but the video links seem to be down for me - I'm hoping this might be a temporary thing.

That mic is definitely on, and the number of features and speed with which the team fixes them (once they're noticed!) is part of what makes OpenVSP such a great program/community. As is the contributions and support and advice that a lot of the regular members here have given!

Also, not sure if there is any interest but over the course of the PhD research, I ended interfacing with OpenVSP a lot through Python and ended up with a bit more of a 'pythonic' approach to vehicles, wings, getting AnalysisManager results back as nicely useable Numpy/Pandas tables etc. Happy to upload this to Github if it helps anyone out.

Take care,
Tim

Luka Ranđelović

unread,
Jan 4, 2022, 5:49:12 AM1/4/22
to ope...@googlegroups.com
I have experienced the same issue.

--
You received this message because you are subscribed to the Google Groups "OpenVSP" group.
To unsubscribe from this group and stop receiving emails from it, send an email to openvsp+u...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/openvsp/5e6c0104-c3cd-4687-ac5b-ed4aea428535n%40googlegroups.com.

Rob McDonald

unread,
Jan 4, 2022, 12:50:48 PM1/4/22
to ope...@googlegroups.com
The NARI site was based on Flash and is probably gone forever.  We're trying to get the videos transferred over to YouTube, but I am not optimistic.  Those videos were from the 2016 Workshop.

By now, the 2020 and 2021 workshop videos have probably replaced most of that content.  All the Workshop content (except the NARI stuff) is available on the Wiki).  For basic tutorial videos, the OpenVSP Ground School is the way to go.  All those videos are ultimately hosted on YouTube, but the website gives a good way to navigate them.

I think people would certainly be interested in making the API and related tools more Pythonic.  My Python skills are immeasurably above zero, so I'm really not even the one to have an organized plan or do any code review in this area.  Perhaps some other members will speak up to join in.

Rob



--
You received this message because you are subscribed to the Google Groups "OpenVSP" group.
To unsubscribe from this group and stop receiving emails from it, send an email to openvsp+u...@googlegroups.com.

deenri...@gmail.com

unread,
Jan 4, 2022, 12:55:13 PM1/4/22
to OpenVSP
Tim, 

I would be interested in using/contributing to a more pythonic version of OpenVSP as well. 
- Daniel

Brandon Litherland

unread,
Jan 5, 2022, 5:56:27 AM1/5/22
to OpenVSP
Longzhi,

I just added a Prop and can replicate the behavior that you describe.  A different Curve can be chosen in the dropdown but the rest of the parameters and the curve display do not update to reflect this new change.  Very odd because this behavior was not present in the preliminary test build of the software that I received.  The parameters are all still available under the hood in the Design Variable explorer but that's not a great work-around.  While stuck on Chord parameters, the GUI buttons will continue to manipulate the r_N and crd_N values as well as the Convert to: type.

Justin and Rob,  I'm not sure if this behavior is present on the Mac version but the Python 3.6 and 3.9 versions of 64-bit Windows has it.  I took at look around the PropGeom source code but didn't see right away where the problem would be.  I'm not familiar enough with the GUI update section to identify it.

timoth...@gmail.com

unread,
Jan 5, 2022, 12:32:21 PM1/5/22
to OpenVSP
Hi Rob,

Thanks for the newer workshop videos - somehow I forgot to check the newer workshop pages.

And hi Daniel, that would be amazing. Right now, I'm packed with work until the final parts of the PhD calm down, but I'll try to upload pyvsp (original, I know) to Github in two weeks or so? I must admit it's probably a fairly rudimentary wrapper and likely not optimised, but I hope it can give a good starting point.

Random code clippings and a silly example, but it lets you do something like:

import pyvsp

## Create new vehicle instance, load a fuselage, and attach a 3-section wing
aircraft = pyvsp.Vehicle()
fuselage = aircraft.insert_vsp_file('fuselage.vsp3')
wing = aircraft.add_wing('WingNameHere')
wing.insert(1)
wing.insert(1)
aircraft.update()
wing.XSec_0.shape = 'WEDGE'
wing.XSec_1.shape = 'FOUR_SERIES'

wing.XSec_0.set_driver_group('ROOTC', 'TIPC', 'SPAN')
...
wing.XSec_3.set_driver_group('ROOTC', 'TIPC', 'AREA')
aircraft.update()

## Wing Variables
wing.rel_location = (14.0, 0, 0.0)

# Wing root and section 1
wing.XSec_1.root_chord = 26.3
wing.XSec_0.t_c = 0.03
wing.XSec_0.twist_location = 0.5
wing.XSec_0.twist = 0.0
wing.XSec_1.sweep = 73.0
wing.XSec_1.dihedral = 0.0
wing.XSec_1.tip_chord = 13.7
wing.XSec_1.t_c = 0.025
wing.XSec_1.twist_location = 0.5
wing.XSec_1.twist = 0.0
proj_span_1 = 4.0
wing.XSec_1.span = proj_span_1 / np.cos(np.radians(wing.XSec_1.dihedral))
aircraft.update()

...

## Set IGES export parameters and export
export_params = {'LenUnit': 'M'}
aircraft.export_iges(f'AircraftName.igs', export_params)
aircraft.save('A000.vsp3')

...
## Run an analysis
pd_settings = {'v_inf': 1.7,
                   'alt': 55000,
                   'd_temp': 0,
                   'len_unit': 'M',
                   'cf_lam': 'BLASIUS',
                   'cf_turb': 'SCHLICHTING_COMPRESSIBLE',
                   's_ref': 0.00331058,  # Full s_ref
                   'ref_wing': None,
                   'v_unit': 'MACH',
                   'temp_unit': 'K',
                   }
pd_results = aircraft.parasite_drag(**pd_settings)  # where results come out as a nice ready-to-use Pandas table
---------------------
 - that kind of thing. Anyhow, my goal was to make an easy and clear Python interface that I could use to run analyses and grab results quickly interactively during testing etc. All the parm names, IDs and stuff are handled in the background, and you can just print() your component of interest to get a quick summary. The parameters more or less try to replicate the GUI.

If there's interest I'll definitely upload it and we can work on brushing it up!

Best,
Tim

Rob McDonald

unread,
Jan 5, 2022, 12:46:07 PM1/5/22
to ope...@googlegroups.com
I strongly support adding pyvsp to the existing OpenVSP repo -- it can certainly live as a separate branch for a while, but I'd rather not split the project.

If you have really strong feelings in favor of a new project, then I'd like you to consider adopting the existing Python stuff included with OpenVSP.  I think having two sets of stuff will just lead to confusion.

A long time ago, Santiago Balestrini did some work on a more Pythonic wrapper for the API.  I don't actually know if it got rolled in or abandoned.  Likewise, Alex Gary did most of the stuff bundled with OpenVSP now while he was at Uber.

Long term, I'd love to see a path to installing the OpenVSP API via pip or Anaconda or whatever.  I have no idea what that will take, but it is a great goal.

Rob


Rob McDonald

unread,
Jan 5, 2022, 1:15:23 PM1/5/22
to ope...@googlegroups.com
Thanks All,

I've chased this one down and have a fix ready to go.

There is one more bug that I'm working on -- once I get it fixed, I'll try to roll 3.26.1 ASAP.

Rob


mi...@worthey.net

unread,
Jan 5, 2022, 7:38:15 PM1/5/22
to ope...@googlegroups.com

Good Evening Rob,

 

If you recall, I came to you just before Christmas.  The issue dealt with the dynamic derivatives.  P-dot specifically.  Prediction of these parameters was way off.  You sent the issue on to someone else and I don’t remember who that was.  I just tried running a generic airplane through that dynamic analysis again and saw that it’s still blowing up.  I guess the latest version of the code did not have a VSPAERO update.  Any idea when this problem might be fixed?  If you want a generic model to work I’ve included that in this email.

Generic Airplane.vsp3

Rob McDonald

unread,
Jan 5, 2022, 7:49:45 PM1/5/22
to ope...@googlegroups.com
Thanks for bringing it to the surface again.

You are correct - 3.26.0 included no changes to VSPAERO (the coming-soon 3.26.1 won't either).  So, no change to behavior on this is expected yet.

I know Dave Kinney has a lot of VSPAERO changes queued up.  I will make sure he is aware of this test case.

Rob


timoth...@gmail.com

unread,
Jan 6, 2022, 3:52:40 PM1/6/22
to OpenVSP
Hi Rob,

Sure, I'd be more than happy to upload what I have to a branch for tidying and testing - it would likely need a lot of it, as I only have functionality coverage for the things that I mainly needed to get done!

By the way, I'm not sure if this is a new bug but on the Windows Python 3.9 version of OpenVSP 3.26.1, the Screenshot... --> Capture PNG seems to have stopped functioning. It brings up the dialogue box but when I type a name and hit Accept, nothing happens. OpenVSP 3.23.0 still works - sorry I don't have anything in between to test with!

Best,
Tim

Rob McDonald

unread,
Jan 6, 2022, 6:40:19 PM1/6/22
to ope...@googlegroups.com
On Thu, Jan 6, 2022 at 12:52 PM timoth...@gmail.com <timoth...@gmail.com> wrote:
Sure, I'd be more than happy to upload what I have to a branch for tidying and testing - it would likely need a lot of it, as I only have functionality coverage for the things that I mainly needed to get done!

Everything has to start somewhere. 

 
By the way, I'm not sure if this is a new bug but on the Windows Python 3.9 version of OpenVSP 3.26.1, the Screenshot... --> Capture PNG seems to have stopped functioning. It brings up the dialogue box but when I type a name and hit Accept, nothing happens. OpenVSP 3.23.0 still works - sorry I don't have anything in between to test with!

Could you do a bit more testing?  It seems to still be working fine for me on MacOS.

Are you sure you have write permissions to the place you selected the file to go?  If you don't add an extension, OpenVSP should add ".png" -- and that is the only file type that it will write through the built-in screenshot capability.

Rob


 
Reply all
Reply to author
Forward
0 new messages