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 geometrygamma
: 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_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
andzeta_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 coordinateszeta
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).