unsteady analysis of complex motion

383 views
Skip to first unread message

lady Aero

unread,
Sep 30, 2021, 9:48:47 AM9/30/21
to OpenVSP
hey guys, 

how does the .group input file work for simulating complex motion using velocity vector, acceleration, mass and inertia matrix. 
what would be the format and how does it feed back into vsp?  

Brandon Litherland

unread,
Sep 30, 2021, 9:59:02 AM9/30/21
to OpenVSP
If you run an unsteady rotating blades propeller analysis, the GUI will automatically set up an unsteady case for you that you can use to get most of this.
However, you can modify that file and run vspaero unsteady from the command line.  Note that you will also have to set the time stepping accordingly in the *.vspaero input file.
You can use the Mass Properties tool to get reasonable estimates of the mass and inertia values.  OVec is the component origin. RVec is the rotating axis direction.  Velocity and Acceleration are also both pointing vectors (initial conditions, I think).  So if you want to drop a payload, set the acceleration in the direction of gravity.
I haven't really had a chance to get deep into this though I'm excited to see it play out.  If you want to set a body in motion that isn't a propeller, use Dynamic geometry and set the values.

Format is something like this:

2 (total number of groups)
#
GroupName = Fixed_Group
NumberOfComponents = 1
4 (list the components each in new line)
GeometryIsFixed = 1 (zero is false, 1 is true)
GeometryIsDynamic = 0
GeometryIsARotor = 0
RotorDiameter = 0.000000
OVec = 0.000000 0.000000 0.000000
RVec = 0.000000 0.000000 0.000000
Velocity = 0.000000 0.000000 0.000000
Acceleration = 0.000000 0.000000 0.000000
Omega = 0.000000
Mass = 0.000000
Ixx = 0.000000
Iyy = 0.000000
Izz = 0.000000
Ixy = 0.000000
Ixz = 0.000000
Iyz = 0.000000
#
GroupName = PropGeom
NumberOfComponents = 3
1
2
3
GeometryIsFixed = 0
GeometryIsDynamic = 0
GeometryIsARotor = 1
RotorDiameter = 2.0
OVec = 0.000000 0.000000 0.000000
RVec = -1.000000 0.000000 0.000000
Velocity = 0.000000 0.000000 0.000000
Acceleration = 0.000000 0.000000 0.000000
Omega = 400.00
Mass = 0.000000
Ixx = 0.000000
Iyy = 0.000000
Izz = 0.000000
Ixy = 0.000000
Ixz = 0.000000
Iyz = 0.000000

lady Aero

unread,
Oct 4, 2021, 7:04:30 AM10/4/21
to OpenVSP
thanks for the response Bran! 

I have recently started getting familiar with the python/API and I'm still not sure where to start. do I need a compiler to execute a task like such? or can it be done through the command line?  

Brandon Litherland

unread,
Oct 4, 2021, 10:00:19 AM10/4/21
to OpenVSP
Command line is just fine.  I've been playing with this a bit recently.
The VSPAERO console window in the GUI will write the command on the first line of the echo.  You can copy/paste/modify that as needed to run VSPAERO from whatever directory you want.  This is also good practice if you are using os.system() to call execute vspaero from Python without the API (clunky but it works).  The command would look something like 
> "C:\path_to_openvsp\vspaero.exe" -omp 4 -unsteady "C:\path_to_model\filename_DegenGeom" 
Note -omp N sets the number of processors to use.  There are diminishing returns with GMRES iteration however and you'll likely start seeing longer solution times with Nprocs > 8 or 16.  If you have access to a server, watch what happens if you use physical vs virtual hyperthreading with Nprocs around 20 or 40 vs 8 (or whatever number of physical processors your CPUs have).
If you want unsteady Panel mode, just use filename instead of filename_DegenGeom.  Again, the VSPAERO GUI does a lot of the heavy lifting for you and will set up the files.  All you have to do then is tweak them and run from CMD.

LadyAero

unread,
Dec 8, 2021, 9:52:21 AM12/8/21
to OpenVSP
Thanks Brandon it worked! how can I follow the motion changes with respect to the time steps? 
I have not found any data in the output files that tells me that 

also, is it possible to get stability dervs out of an unsteady case run? 

Brandon Litherland

unread,
Dec 10, 2021, 10:34:50 AM12/10/21
to OpenVSP
Well, two of the unsteady modes are prescribed (three if you count fixed), so you already know where the components are in time.  You told VSPAERO what you wanted them to do.  For the 6-DOF dynamic mode (3), as far as I can tell, the group.N files provide the force and moment data for each group but not the position or rotation.  Presumably, that information is there somewhere in memory while the solver is running but it isn't written out.

Depending on what derivatives you want, you should be able to calculate them yourself.  VSPAERO already has unsteady PQR analyses under the Advanced tab > Stability Type setting which will run an unsteady sinusoidal motion about the prescribed axis and report the derivatives.

Hope this helps.

LadyAero

unread,
Jan 5, 2022, 10:32:48 AM1/5/22
to OpenVSP
Hi Brandon

what are the reference values in the *.vspaero input file? are they the reference values of the fixed group? or the dynamic group? or both?
like what would be the reference length of the dynamic group if it doesn't have wings? because openvsp only understand bodies with wings only right?

also, what about the *.history output file, what does the coefficient in this file represent? since each group has its own coefficient in a separate output file

I also tried saving the videos using ffmpeg but like you said it needs to be an unnamed vsp file, and I usually save my work before running the unsteady case. is there anyway to get around that issue? I wasn't successful saving those videos.

Brandon Litherland

unread,
Jan 5, 2022, 11:09:30 AM1/5/22
to OpenVSP
The Sref, Bref, and Cref values are used to normalize any of the aircraft-referenced coefficients like CFxyz and CL, CD, CS.  This is true for Fixed and Dynamic groups, I believe.  The Rotor group will use the propeller or helicopter rotor coefficient definitions (CT vs CT_H, for example).  The trick with ffmpeg (and maybe this was fixed in 3.26?) is to import the model into a new unnamed, empty model and then run vspaero without saving.  Then you can use the viewer to make the ffmpeg video.

LadyAero

unread,
Jan 27, 2022, 12:51:48 PM1/27/22
to OpenVSP
does the motion in the viewer represent the results in the output files? I tried to play around with the geometry of the pod to see if its going to act as I expected it to act but it doesn't look logical. for example I shifted the cg to the back it didn't pitch up. I also tried adding and removing wings but that also does not change the trajectory. 

also I would like to know if I can use a force and a moment for a certain period of time in the group input file because there are  few inputs that are unique for the rotor and I wonder how they play a role in a dropped pod. 

RotorDiameter = 0.000000
OVec = 0.000000 0.000000 0.000000
RVec = 0.000000 0.000000 0.000000
Velocity = 0.000000 0.000000 0.000000
Acceleration = 0.000000 0.000000 0.000000 
Omega = 0.000000

Brandon Litherland

unread,
Jan 27, 2022, 1:10:19 PM1/27/22
to OpenVSP
I'll say that the fully dynamic mode should be used with some caution and a fair amount of skepticism.  Six-DOF dynamics are tricky enough at the best of times with high-fidelity CFD so a solution in VSPAERO that starts or progresses outside of reasonable potential solver conditions is going to cause problems.  The dropped pod example that I showed at the workshop was a bit rough and was only showing reasonable behavior for the first few seconds before the pod throws itself into oblivion.  I'd use it more for things like aircraft stability and response simulations.

I'm not certain if VSPAERO can be restarted after a certain run with new inputs.  There is a  Restart command in the command line options but I'm not certain of the implementation.
If a component is not flagged as a rotor, then the rotor diameter isn't used.  The rest of the values set up the initial conditions for the dynamic group.

Reply all
Reply to author
Forward
0 new messages