Trim model where the operating characteristics of rotor (e.g. blade pitch angle) can vary to reach a specified target thrust and torque.
More...
|
| TypeName ("targetCoeffTrim") |
|
| targetCoeffTrim (const fv::rotorDiskSource &rotor, const dictionary &dict) |
|
| targetCoeffTrim (const targetCoeffTrim &)=delete |
|
void | operator= (const targetCoeffTrim &)=delete |
|
virtual | ~targetCoeffTrim ()=default |
|
void | read (const dictionary &dict) |
|
virtual tmp< scalarField > | thetag () const |
|
virtual void | correct (const vectorField &U, vectorField &force) |
|
virtual void | correct (const volScalarField rho, const vectorField &U, vectorField &force) |
|
template<class RhoFieldType > |
Foam::vector | calcCoeffs (const RhoFieldType &rho, const vectorField &U, const scalarField &thetag, vectorField &force) const |
|
| TypeName ("trimModel") |
|
| declareRunTimeSelectionTable (autoPtr, trimModel, dictionary,(const fv::rotorDiskSource &rotor, const dictionary &dict),(rotor, dict)) |
|
| trimModel (const fv::rotorDiskSource &rotor, const dictionary &dict, const word &name) |
|
virtual | ~trimModel ()=default |
|
Trim model where the operating characteristics of rotor (e.g. blade pitch angle) can vary to reach a specified target thrust and torque.
Solves:
where
| = | Time level |
| = | Coefficient vector (thrust force, roll moment, pitch moment) |
| = | Pitch angle vector (collective, roll, pitch) |
| = | Jacobian [3x3] matrix |
The trimmed pitch angles are found via solving the above with a Newton-Raphson iterative method. The solver tolerance can be user-input, using the 'tol' entry.
If coefficients are requested (useCoeffs = true), the force and moments are normalised using:
and
where
| = | Force |
| = | Moment |
| = | User-input conversion coefficient (default = 1) |
| = | Fluid desity |
| = | Rotor angular velocity |
| = | Mathematical pi |
| = | Rotor radius |
- Usage
- Minimal example by using
constant/fvOptions
: rotorDiskSource1 { Mandatory/Optional (inherited) entries ...
Mandatory entries (runtime modifiable) trimModel targetForce;
targetForceCoeffs { Conditional mandatory entries (runtime modifiable)
when trimModel=targetForce target { Mandatory entries (runtime modifiable) thrust 0.5; pitch 0.5; roll 0.5;
Optional entries (runtime modifiable) useCoeffs true; }
pitchAngles { theta0Ini 0.1; theta1cIni 0.1; theta1sIni 0.1; }
calcFrequency 1;
Optional entries (runtime modifiable) nIter 50; tol 1e-8; relax 1; dTheta 0.1; alpha 1.0; } }
where the entries mean:
Property | Description | Type | Reqd | Dflt |
calcFrequency | Number of iterations between calls to 'correct' | label | yes | - |
useCoeffs | Flag to indicate whether to solve coeffs (true) or forces (false) | bool | no | true |
thrust | Target thrust (coefficient) | scalar | yes | - |
pitch | Target pitch (coefficient) | scalar | yes | - |
roll | Target roll moment (coefficient) | scalar | yes | - |
theta0Ini | Initial pitch angle [deg] | scalar | yes | - |
theta1cIni | Initial lateral pitch angle (cos coeff) [deg] | scalar | yes | - |
theta1sIni | Initial longitudinal pitch angle (sin coeff) [deg] | scalar | yes | - |
nIter | Maximum number of iterations in trim routine | label | no | 50 |
tol | Convergence tolerance in trim routine | scalar | no | 1e-8 |
relax | Relaxation factor in trim routine | scalar | no | 1 |
dTheta | Perturbation angle used to determine Jacobian [deg] | scalar | no | 0.1 |
alpha | Coefficient to allow for conversion between US and EU definitions | scalar | no | 1 |
- See also
-
- Source files
-
Definition at line 309 of file targetCoeffTrim.H.