AeroGridSurface

class sharpy.linear.src.surface.AeroGridSurface(Map, zeta, gamma, vortex_radius, u_ext=None, zeta_dot=None, gamma_dot=None, rho=1.0, aM=0.5, aN=0.5, for_vel=numpy.zeros)[source]

Contains geometric and aerodynamic information about bound/wake surface.

Compulsory input are those that apply to both bound and wake surfaces:
  • zeta: defines geometry

  • gamma: circulation

With respect to AeroGridGeo, the class contains methods to:
  • project prescribed input velocity at nodes (u_ext, zeta_dot) over collocation points.

  • compute induced velocity over ANOTHER surface.

  • compute AIC induced over ANOTHER surface

Parameters
  • Map (gridmapping.AeroGridMap) – Map of grid.

  • zeta (list(np.ndarray)) – Grid vertices coordinates in inertial (G) frame.

  • zeta_dot (list(np.ndarray)) – Grid vertices velocities in inertial (G) frame. Default is None.

  • vortex_radius (np.float) – Distance below which induction is not computed

  • u_ext (list(np.ndarray)) – Grid external velocities in inertial (G) frame. Default is None.

  • gamma_dot (list(np.ndarray)) – Panel circulation derivative. Default is None.

  • rho (float) – Air density. Default is 1.

  • aM (float) – Chordwise position in panel of collocation point. Default is 0.5

  • aN (float) – Spanwise position in panel of collocation point. Default is 0.5

  • for_vel (np.ndarray) – Frame of reference velocity (including rotational velocity) in the inertial frame.

To add:
  • project prescribed input velocity at nodes (u_ext, zeta_dot) over

mid-point segments

get_aic3(zeta_target)[source]

Produces influence coefficinet matrix to calculate the induced velocity at a target point. The aic3 matrix has shape (3,K)

get_aic_over_surface(Surf_target, target='collocation', Project=True)[source]

Produces influence coefficient matrices such that the velocity induced over the Surface_target is given by the product:

if target=='collocation':
    if Project:
        u_ind_coll_norm.rehape(-1)=AIC*self.gamma.reshape(-1,order='C')
    else:
        u_ind_coll_norm[ii,:,:].rehape(-1)=
                            AIC[ii,:,:]*self.gamma.reshape(-1,order='C')

where ii=0,1,2.

For the case where if target=='segments':

  • AIC has shape (3,self.maps.K,4,Mout,Nout), such that

    AIC[:,:,ss,mm,nn]

is the influence coefficient matrix associated to the induced velocity at segment ss of panel (mm,nn).

get_induced_velocity(zeta_target)[source]

Computes induced velocity at a point zeta_target.

get_induced_velocity_over_surface(Surf_target, target='collocation', Project=False)[source]

Computes induced velocity over an instance of AeroGridSurface, where target specifies the target grid (collocation or segments). If Project is True, velocities are projected onver panel normal (only available at collocation points).

Note: for state-equation, both projected and non-projected velocities at the collocation points are required. Hence, it is suggested to use this method with Projection=False, and project afterwards.

Warning: induced velocities at grid segments are stored in a redundant format:

(3,4,M,N)

where the element

(:,ss,mm,nn)

is the induced velocity over the ss-th segment of panel (mm,nn). A fast looping is implemented to re-use previously computed velocities

get_input_velocities_at_collocation_points()[source]

Returns velocities at collocation points from nodal values u_ext and zeta_dot of shape (3, M+1, N+1) at the collocation points.

Notes

\[\boldsymbol{u}_{c} = \mathcal{W}_{cv}(\boldsymbol(\nu)_0 - \boldsymbol{\zeta}_0)\]

is the input velocity at the collocation point, where \(\mathcal{W}_{cv}\) projects the velocity from the grid points onto the collocation point. This variable is referred to as u_input_coll=Wcv*(u_ext-zeta_dot) and depends on the coordinates zeta when the body is rotating.

get_input_velocities_at_segments()[source]

Returns velocities at mid-segment points from nodal values u_ext and zeta_dot of shape (3,M+1,N+1).

Warning: input velocities at grid segments are stored in a redundant format:

(3,4,M,N)

where the element

(:,ss,mm,nn)

is the induced velocity over the ss-th segment of panel (mm,nn). A fast looping is implemented to re-use previously computed velocities

2018/08/24: Include effects due to rotation (omega x zeta). Now it depends on the coordinates zeta

get_joukovski_qs(gammaw_TE=None, recompute_velocities=True)[source]

Returns quasi-steady forces evaluated at mid-segment points over the surface.

Important: the circulation at the first row of wake panel is required! Hence all

Warning: forces are stored in a NON-redundant format:

(3,4,M,N)

where the element

(:,ss,mm,nn)

is the contribution to the force over the ss-th segment due to the circulation of panel (mm,nn).

get_joukovski_unsteady()[source]

Returns added mass effects over lattive grid

get_normal_input_velocities_at_collocation_points()[source]

From nodal input velocity to normal velocities at collocation points.