Validating High-G Aerobatic Maneuvers

Can jet formations maintain safety and performance during extreme maneuvers? This example demonstrates how to validate critical flight behaviors using a model validation workflow—checking whether jet maneuvers stay within safety, performance and structural design limits.

Check the Model

We simulate some jets performing different aerobatic routines.
(Press Shift + Enter to evaluate.)
In[]:=
CloudImport["https://www.wolframcloud.com/obj/6a8e3fc4-e4a1-4c25-a84c-e56857bf472c","SMA"];​​ImportString
model string
,"MO";
Check the model diagram:
In[]:=
aeroModel=SystemModel["Aerobatics.AerobaticShow"];​​aeroModel[{"Diagram",ImageSizeLarge,FrameFalse}]
Out[]=

Create the Validation Rule

Velocity vs. load factor envelope: the shaded region represents safe combinations of velocity (x-axis) and G-force (y-axis) during flight.
In[]:=
ℛ=ParametricRegion​​​​{v,g},​​0≤v≤stallSpeed&&
nMin
2
v
2
stallSpeed
≤g≤
nMax
2
v
2
stallSpeed
||​​(stallSpeed<v≤maxVelocity&&nMin≤g≤nMax),​​{v,g}​​/.{nMin-4,nMax8,stallSpeed76.395,maxVelocity476.375};​​RegionPlot[ℛ,FrameLabel{"velocity","load factor"}]
Out[]=
Define a requirement: "During the Split S maneuver, the aircraft’s velocity and load factor must remain within the allowable envelope defined in the velocity vs. load factor diagram."
In[]:=
reqVG=SystemModelAlways[​​t,​​RegionMember[ℛ,​​{"splitSPlane.flightData.vTot"[t],"splitSPlane.flightData.loadFactor"[t]}​​]​​];

Check Run Validation and Compare Configurations

In[]:=
aeroSim=SystemModelSimulate[aeroModel]
Out[]=
SystemModelSimulationData
Model: AerobaticShow
Time: 0. to 30.

Extract the velocity and load factor curves for the configuration and plot them over the validity region:
In[]:=
simPlot1=Show[​​{​​RegionPlot[ℛ,FrameLabel{"velocity","load factor"}],​​ParametricPlot[​​Evaluate@aeroSim[{"splitSPlane.flightData.vTot","splitSPlane.flightData.loadFactor"},t],​​{t,0,30},​​PlotStyle{Red}]​​}​​]
Out[]=
Check the validation results:
In[]:=
SystemModelValidate[aeroSim,reqVG]
Out[]=
SystemModelValidationData
Model: AerobaticShow
Success rate:
0.%
, 1 failure

The simulation fails the requirement. Let's adjust the throttle command and validate again:
In[]:=
aeroSimG=SystemModelSimulate[aeroModel,<|"ParameterValues"{"splitS.vCmd.k"0.6}|>];
Plot the results over the validity region:
In[]:=
simPlot2=Show[​​{​​RegionPlot[ℛ,FrameLabel{"velocity","load factor"}],​​ParametricPlot[​​Evaluate@aeroSimG[{"splitSPlane.flightData.vTot","splitSPlane.flightData.loadFactor"},t],​​{t,0,30},​​PlotStyle{Darker@Green}​​]​​}​​]
Check the validation results:
The new configuration validates successfully.
Compare the response of the two configurations:
​
​​
​​
​​
​