Static

class sharpy.linear.src.linuvlm.Static(tsdata, custom_settings=None, for_vel=numpy.zeros)[source]

Static linear solver

assemble()[source]

Assemble global matrices

assemble_profiling()[source]

Generate profiling report for assembly and save it in self.prof_out.

To read the report:

import pstats p=pstats.Stats(self.prof_out)

get_rigid_motion_gains(zeta_rotation=numpy.zeros)[source]

Gains to reproduce rigid-body motion such that grid displacements and velocities are given by:

  • dzeta     = Ktra*u_tra         + Krot*u_rot

  • dzeta_dot = Ktra_vel*u_tra_dot + Krot*u_rot_dot

Rotations are assumed to happen independently with respect to the zeta_rotation point and about the x,y and z axes of the inertial frame.

get_sect_forces_gain()[source]

Gains to computes sectional forces. Moments are computed w.r.t. mid-vertex (chord-wise index M/2) of each section.

get_total_forces_gain(zeta_pole=numpy.zeros)[source]

Calculates gain matrices to calculate the total force (Kftot) and moment (Kmtot, Kmtot_disp) about the pole zeta_pole.

Being \(f\) and \(\zeta\) the force and position at the vertex (m,n) of the lattice these are produced as:

  • ftot=sum(f) -> dftot += df

  • mtot-sum((zeta-zeta_pole) x f) ->       dmtot +=  cross(zeta0-zeta_pole) df - cross(f0) dzeta

reshape()[source]

Reshapes state/output according to SHARPy format

solve()[source]

Solve for bound \(\\Gamma\) using the equation;

\[\begin{split}\\mathcal{A}(\\Gamma^n) = u^n\end{split}\]

# … at constant rotation speed self.Dfqsdzeta+=scalg.block_diag(*ass.dfqsdzeta_omega(MS.Surfs,MS.Surfs_star))

total_forces(zeta_pole=numpy.zeros)[source]

Calculates total force (Ftot) and moment (Mtot) (about pole zeta_pole).