Main Content

Aero.FixedWing.Surface Class

Namespace: Aero

Define aerodynamic and control surfaces on Aero.FixedWing aircraft

Since R2021a

Description

Aero.FixedWing.Coefficient defines the dynamic and control surfaces on an Aero.FixedWing aircraft.

Class Attributes

Sealed
true

For information on class attributes, see Class Attributes.

Creation

Description

example

fixedWingSurface = Aero.FixedWing.Surface creates a single Aero.FixedWing.Surface object with default property values.

fixedWingSurface = Aero.FixedWing.Surface(N) creates an N-by-N matrix of Aero.FixedWing.Surface objects with default property values.

fixedWingSurface = Aero.FixedWing.Surface(M,N,P,...) or Aero.FixedWing.Surface([M N P ...]) creates an M-by-N-by-P-by-... array of Aero.FixedWing.Surface objects with default property values.

fixedWingSurface = Aero.FixedWing.Surface(size(A)) creates an Aero.FixedWing.Surface object of the same size as A and all Aero.FixedWing.Surface objects.

fixedWingSurface = Aero.FixedWing.Surface(__,property,propertyValue) creates an array of Aero.FixedWing.Surface objects with property, propertyValue pairs applied to each of the Aero.FixedWing.Surface array objects. For a list of properties, see Properties.

Properties

expand all

Public Properties

Aero.FixedWing.Surface objects providing nested control surfaces, specified as a vector.

Attributes:

GetAccess
public
SetAccess
public

Aero.FixedWing.Coefficients objects that define the control surface, specified as a scalar.

Attributes:

GetAccess
public
SetAccess
public

Maximum value of control surfaces, specified as a scalar numeric.

Dependencies

If Symmetry is set to Asymmetric, then this value applies to both control variables.

Attributes:

GetAccess
public
SetAccess
public

Data Types: double

Minimum value of control surface, specified as a scalar numeric.

Dependencies

If Symmetry is set to Asymmetric, then this value applies to both control variables.

Attributes:

GetAccess
public
SetAccess
public

Data Types: double

Controllable control surface specified as on or off. To control the control surface, set this property to on. Otherwise, set this property to off.

Attributes:

GetAccess
public
SetAccess
public

Data Types: logical

Symmetry of the control surface, specified as Symmetric or Asymmetric.

The Asymmetric option creates two control variables, denoted by the name on the properties and appended by _1 and _2. These control variables can be independently controlled but also produce an effective control variable specified by the name on the properties. You cannot set this effective control variable. This equation defines the control variable:

name = (name_1-name_2)/2.

You cannot set this effective control variable.

Attributes:

GetAccess
public
SetAccess
public

Data Types: char | string

Aero.Aircraft.Properties object, specified as a scalar.

Attributes:

GetAccess
public
SetAccess
public

Data Types: double

Protected Properties

Control variable names, specified as a vector. This property depends on Properties.Name, Controllable, and Symmetry.

Attributes:

GetAccess
Restricts access
SetAccess
protected

Data Types: char | string

Methods

expand all

Examples

collapse all

This example shows how to define aircraft aerodynamic surfaces using the FixedWing.Surface object. It then shows how to compute the static stability of the aircraft.

Create two FixedWing surfaces, elevator and horizontalStabilizer. elevator is defined as an inner nested surface of horizontalStabilizer.

elevator = Aero.FixedWing.Surface(...
    Controllable="on",...
    MinimumValue=deg2rad(-20),...
    MaximumValue=deg2rad(20), ...
    Properties=Aero.Aircraft.Properties("Name","Elevator"), ...
    Coefficients=Aero.FixedWing.Coefficient("StateVariables",...
    "Elevator","ReferenceFrame","Stability"));
horizontalStabilizer = Aero.FixedWing.Surface(...
    Surfaces=elevator, ...
    Properties=Aero.Aircraft.Properties("Name","HorizontalStabilizer"))
horizontalStabilizer = 
  Surface with properties:

            Surfaces: [1x1 Aero.FixedWing.Surface]
        Coefficients: [1x1 Aero.FixedWing.Coefficient]
        MaximumValue: Inf
        MinimumValue: -Inf
        Controllable: off
            Symmetry: "Symmetric"
    ControlVariables: [0x0 string]
          Properties: [1x1 Aero.Aircraft.Properties]

Assign the horizontalStabilizer surface to the FixedWing aircraft object, aircraft.

aircraft = Aero.FixedWing(...
    ReferenceArea=30, ...
    ReferenceSpan=12, ...
    Surfaces=horizontalStabilizer)
aircraft = 
  FixedWing with properties:

        ReferenceArea: 30
        ReferenceSpan: 12
      ReferenceLength: 0
         Coefficients: [1x1 Aero.FixedWing.Coefficient]
     DegreesOfFreedom: "6DOF"
             Surfaces: [1x1 Aero.FixedWing.Surface]
              Thrusts: [1x0 Aero.FixedWing.Thrust]
          AspectRatio: 4.8000
           Properties: [1x1 Aero.Aircraft.Properties]
           UnitSystem: "Metric"
    TemperatureSystem: "Kelvin"
          AngleSystem: "Radians"

aircraft.Coefficients.ReferenceFrame = "Stability";

Set the coefficients for aircraft.

BodyCoefficients = {
    'CD', 'Zero', 0.02;
    'CD', 'Alpha', 0.1;
    'CL', 'Alpha', 4.5;
};
ElevatorCoefficients = {
    'CL', 'Elevator', 0.4;
    'Cm', 'Elevator', -1.3;
};
aircraft = setCoefficient(...
    aircraft, ...
    BodyCoefficients(:, 1), ...
    BodyCoefficients(:, 2), ...
    BodyCoefficients(:, 3));
aircraft = setCoefficient(...
    aircraft, ...
    ElevatorCoefficients(:, 1), ...
    ElevatorCoefficients(:, 2), ...
    ElevatorCoefficients(:, 3), ...
    "Component", "Elevator");

Get the cruise state for aircraft.

state = Aero.FixedWing.State(...
    Mass=200, ...
    U=50, ...
    Alpha=0.006, ...
    CenterOfGravity=[1, 0, 0]);
state = setupControlStates(state, aircraft);
state = setState(state, "Elevator", deg2rad(-2))
state = 
  State with properties:

                    Alpha: 0.0060
                     Beta: 0
                 AlphaDot: 0
                  BetaDot: 0
                     Mass: 200
                  Inertia: [3x3 table]
          CenterOfGravity: [1 0 0]
         CenterOfPressure: [0 0 0]
              AltitudeMSL: 0
             GroundHeight: 0
                       XN: 0
                       XE: 0
                       XD: 0
                        U: 50
                        V: 0
                        W: 0
                      Phi: 0
                    Theta: 0
                      Psi: 0
                        P: 0
                        Q: 0
                        R: 0
                   Weight: 1962
              AltitudeAGL: 0
                 Airspeed: 50.0009
              GroundSpeed: 50
               MachNumber: 0.1469
             BodyVelocity: [50 0 0.3000]
           GroundVelocity: [50 0 0]
                       Ur: 50
                       Vr: 0
                       Wr: 0.3000
          FlightPathAngle: 0
              CourseAngle: 0
     InertialToBodyMatrix: [3x3 double]
     BodyToInertialMatrix: [3x3 double]
         BodyToWindMatrix: [3x3 double]
         WindToBodyMatrix: [3x3 double]
    BodyToStabilityMatrix: [3x3 double]
    StabilityToBodyMatrix: [3x3 double]
          DynamicPressure: 1.5313e+03
              Environment: [1x1 Aero.Aircraft.Environment]
            ControlStates: [1x1 Aero.Aircraft.ControlState]
         OutOfRangeAction: "Limit"
         DiagnosticAction: "Warning"
               Properties: [1x1 Aero.Aircraft.Properties]
               UnitSystem: "Metric"
        TemperatureSystem: "Kelvin"
              AngleSystem: "Radians"

Compute the static stability for the FixedWing object aircraft and surfaces, horizontalStabilizer and elevator.

[stability, deriv] = staticStability(aircraft, state)
stability=6×8 table
             U            V           W         Alpha        Beta           P            Q            R    
          ________    _________    ________    ________    _________    _________    _________    _________

    FX    "Stable"    ""           ""          ""          ""           ""           ""           ""       
    FY    ""          "Neutral"    ""          ""          ""           ""           ""           ""       
    FZ    ""          ""           "Stable"    ""          ""           ""           ""           ""       
    L     ""          ""           ""          ""          "Neutral"    "Neutral"    ""           ""       
    M     "Stable"    ""           ""          "Stable"    ""           ""           "Neutral"    ""       
    N     ""          ""           ""          ""          "Neutral"    ""           ""           "Neutral"

deriv=6×8 table
             U            V            W         Alpha          Beta       P    Q    R
          _______    ___________    _______    __________    __________    _    _    _

    FX    -37.378    -3.7744e-06    -55.201       -2758.1    -0.0094274    0    0    0
    FY          0              0          0             0             0    0    0    0
    FZ    0.73969    -2.4329e-06    -4153.9    -2.077e+05    -0.0060459    0    0    0
    L           0              0          0             0             0    0    0    0
    M     0.73969    -2.4329e-06    -4153.9    -2.077e+05    -0.0060459    0    0    0
    N           0              0          0             0             0    0    0    0

Limitations

You cannot subclass Aero.FixedWing.Surface.

Version History

Introduced in R2021a