wingpanel_class Derived Type

type, public :: wingpanel_class

Wing panel class


Components

Type Visibility Attributes Name Initial
type(vr_class), public :: vr
real(kind=dp), public :: gamPrev

Circulation at previous timestep

real(kind=dp), public :: gamTrapz

Circulation after trapezoidal integration

real(kind=dp), public, dimension(3, 4) :: PC

Panel coords (xyz, 1:4)

real(kind=dp), public, dimension(3) :: CP

Collocation point coords

real(kind=dp), public, dimension(3) :: nCap

Unit normal vector

real(kind=dp), public, dimension(3) :: tauCapChord

Unit tangential vector along chord

real(kind=dp), public, dimension(3) :: tauCapSpan

Unit tangential vector along span

real(kind=dp), public, dimension(3) :: velCP

Local vel at CP excluding wing vortices

real(kind=dp), public, dimension(3) :: velCPTotal

Local vel at CP including wing vortices

real(kind=dp), public, dimension(3) :: velCPm

Local vel at CP due to wing motion

real(kind=dp), public, dimension(3) :: normalForce

Normal force vector (inertial frame)

real(kind=dp), public, dimension(3) :: normalForceUnsteady

Unsteady part of normal force vector (inertial frame)

real(kind=dp), public, dimension(3) :: chordwiseResVel

Chordwise resultant velocity vector

real(kind=dp), public :: velPitch

Airfoil pitch velocity about rHinge

real(kind=dp), public :: delP

Pressure difference between upper and lower surfaces at panel

real(kind=dp), public :: delPUnsteady

Unsteady pressure at panel

real(kind=dp), public :: delDiConstant

Induced drag (constant part) at panel

real(kind=dp), public :: delDiUnsteady

Induced drag (unsteady part) at panel

real(kind=dp), public :: meanChord

Panel mean chord

real(kind=dp), public :: meanSpan

Panel mean span

real(kind=dp), public :: panelArea

Panel area for computing lift

real(kind=dp), public :: rHinge

Dist to point about which airfoil pitching occurs (LE of wing)

real(kind=dp), public :: alpha

Local angle of attack (in radians)


Type-Bound Procedures

procedure, public :: assignP => wingpanel_assignP

  • public subroutine wingpanel_assignP(this, n, P)

    Assign coordinates to nth corner

    Arguments

    Type IntentOptional Attributes Name
    class(wingpanel_class) :: this
    integer, intent(in) :: n
    real(kind=dp), dimension(3) :: P

procedure, public :: calcCP => wingpanel_calcCP

  • public subroutine wingpanel_calcCP(this, isTriangle)

    Compute collocation point location

    Arguments

    Type IntentOptional Attributes Name
    class(wingpanel_class) :: this
    logical, optional :: isTriangle

procedure, public :: calcN => wingpanel_calcN

  • public subroutine wingpanel_calcN(this, isTriangle)

    Compute normal vector

    Arguments

    Type IntentOptional Attributes Name
    class(wingpanel_class) :: this
    logical, optional :: isTriangle

procedure, public :: invertNcap => wingpanel_invertNcap

procedure, public :: calcTau => wingpanel_calcTau

  • public subroutine wingpanel_calcTau(this, isTriangle)

    Compute chordwise and spanwise tangential vectors

    Arguments

    Type IntentOptional Attributes Name
    class(wingpanel_class) :: this
    logical, optional :: isTriangle

procedure, public :: rot => wingpanel_rot

  • public subroutine wingpanel_rot(this, Tmat, originVec)

    Rotate panel using transformation matrix

    Arguments

    Type IntentOptional Attributes Name
    class(wingpanel_class) :: this
    real(kind=dp), dimension(3, 3) :: Tmat
    real(kind=dp), optional, dimension(3) :: originVec

procedure, public :: shiftdP => wingpanel_shiftdP

  • public subroutine wingpanel_shiftdP(this, dshift)

    Shift corners of vortex ring by dshift

    Arguments

    Type IntentOptional Attributes Name
    class(wingpanel_class) :: this
    real(kind=dp), intent(in), dimension(3) :: dshift

procedure, public :: calc_chordwiseResVel => wingpanel_calc_chordwiseResVel

procedure, public :: calc_area => wingpanel_calc_area

procedure, public :: calc_mean_dimensions => wingpanel_calc_mean_dimensions

procedure, public :: isCPinsidecore => wingpanel_isCPinsidecore

  • public function wingpanel_isCPinsidecore(this)

    Check whether collocation point lies inside viscous core region of vortex ring

    Arguments

    Type IntentOptional Attributes Name
    class(wingpanel_class), intent(in) :: this

    Return Value logical