Linearization restrictions
OpenFAST rejects many module configurations when Linearize = True. Most of these
failures happen at initialization, after the deck has been copied and OpenFAST has been
launched; a few (the CalcSteady azimuth step) happen only after a long trim. VANE
guards against them in two places:
validate_deck()reports every restriction a deck violates, all at once and before any OpenFAST process starts, as oneDeckValidationError. It judges the effective configuration, that is, the deck after theLinearizationSettingsedits. The sweep checks the template once before any case is copied and the driver checks each configured case again before it runs.configure_linearization()fixes a restriction automatically where a safe fix exists and a settings flag asks for it (for examplewave_mod=0ortrim_controller=True).
The tables below list the linearization restrictions in the OpenFAST source: the glue
code’s input validation and module-coupling setup, and each module’s own linearization
checks. They cover OpenFAST 4.0.5, 4.2.1 and 5.0.0. The VANE check column says
whether validate_deck() reports the restriction; the
Auto-fix column names the setting or the automatic edit that resolves it.
Module switches are respected throughout. When the primary deck switches a module off
(CompAero, CompServo, CompSeaSt, CompHydro, CompInflow = 0, or
CompElast/CompMooring selecting another module), that module’s input file is
inert. It is neither validated nor edited, and it may stay shared outside the case
directory. Switch dependencies are respected too: for example, HydroDyn ignores
RdtnMod/ExctnMod and switches the second-order forces off unless PotMod = 1.
Glue code and module selection
Restriction |
OpenFAST message (abridged) |
VANE check |
Auto-fix |
|---|---|---|---|
|
“SED cannot perform linearization analysis.” |
Yes |
None (choose ElastoDyn or BeamDyn) |
|
“Linearization is not implemented for the AeroDisk module.” |
Yes |
None |
|
v5: “Module ExtLd not supported in linearization”; v4 has no ExtLoads linearization |
Yes |
None |
|
“Linearization is not implemented for the ExternalInflow coupling.” |
Not needed |
Always: |
|
“Linearization is not implemented for the FEAMooring mooring module.” / v5: “Module Orca not supported in linearization” |
Yes |
None |
|
“Linearization is not implemented for any of the ice loading modules.” |
Yes |
None |
|
“SoilDyn cannot perform linearization analysis.” |
Yes |
None |
|
“Linearization is not implemented for the ExtPtfm_MCKF substructure module.” |
Not checked: v5 linearizes ExtPtfm, and the deck does not name its OpenFAST version |
None |
|
“NLinTimes must be at least 1 for linearization analysis.” and similar |
Yes ( |
Always: written from the settings |
|
“LinOutJac can be used only when LinInputs=LinOutputs=2.” (then ignored) |
Yes ( |
Always: written from the settings |
|
“WrVTK cannot be 3 (mode shapes) when Linearize is false.” |
Not needed |
Always: |
The last |
“Tmax is less than the last linearization time.” (then silently skipped) |
Yes (explicit |
CalcSteady runs get a |
CalcSteady: the rotor may turn at most |
“The rotor is spinning too fast. The time step or NLinTimes is too large when CalcSteady=true.” |
Yes (on a configured deck: |
None (reduce |
CalcSteady with |
None (no error) |
Not an error |
|
MHK turbine linearization is incomplete — v4 warning |
“Linearization is not fully implemented for an MHK turbine …” |
Not checked (warning only; removed in v5) |
None |
InflowWind
Restriction |
OpenFAST message (abridged) |
VANE check |
Auto-fix |
|---|---|---|---|
|
“InflowWind can perform linearization on only steady or uniform wind types.” |
Not needed |
Always: |
Uniform-wind files without upflow |
“Upflow in uniform wind files must be 0 for linearization analysis in InflowWind.” |
Not needed |
Always: steady wind ( |
|
“InflowWind can not perform linearization with the lidar module enabled.” |
Yes |
None |
|
“VFlowAngle (upflow) must be 0 for linearization analysis in InflowWind.” |
Yes |
None |
Cubic velocity interpolation |
Disabled by OpenFAST with a notice, not an error |
Not needed |
None |
ServoDyn
Restriction |
OpenFAST message (abridged) |
VANE check |
Auto-fix |
|---|---|---|---|
|
“PCMode must be 0 for linearization.” |
Yes (the controller-library value 5 and every other value) |
|
|
“VSContrl must be 0 or 1 for linearization.” |
Yes (the controller-library value 5 and every other value) |
|
|
“GenModel must be 1 or 2 for linearization.” |
Yes |
|
|
“GenTiStr must be TRUE for linearization.” / “GenTiStp must be TRUE …” |
Yes |
|
|
“HSSBrMode must be 0 for linearization.” |
Yes (the controller-library value 5 and every other value) |
|
|
“YCMode must be 0 for linearization.” |
Yes (the controller-library value 5 and every other value) |
|
|
None (OpenFAST checks only the four switches above) |
Yes: the controller-library routing (5) is reported like the others, since the library would run in the trim but is not part of the linear model |
|
Structural control (StC); airfoil and cable control other than 5 |
No linearization restriction (StC states are linearized) |
Not needed |
None |
ElastoDyn and BeamDyn
Restriction |
OpenFAST message (abridged) |
VANE check |
Auto-fix |
|---|---|---|---|
ElastoDyn |
No linearization-specific restriction |
Not needed |
|
BeamDyn dynamic solve |
“Static analysis cannot be used for BeamDyn linearization.” |
Not needed |
Always: the glue code forces the dynamic solve |
BeamDyn |
“Pitch actuator model cannot currently be used for linearization in BeamDyn.” |
Yes |
None |
AeroDyn
Restriction |
OpenFAST message (abridged) |
VANE check |
Auto-fix |
|---|---|---|---|
|
“Wake_Mod must be 0 or 1 for linearization.”; for OLAF also “dXdu linearization is not supported for FVW model” |
Yes |
None (OLAF has its own inputs; switching to BEMT changes the model) |
|
“UA_Mod must be 0, 4, 5, or 6 for linearization.” |
Yes |
|
|
“DBEMT_Mod must be -1 (frozen), 0 (none), or 3 … for linearization.” |
Yes |
|
|
“Nacelle drag cannot currently be used for linearization.” |
Yes |
None |
Legacy-format decks: |
Same checks as above, under the pre-v4 keywords |
Yes |
|
Unsteady aerodynamics ( |
None. The run converges and writes every |
Yes (pre-flight); the driver also rejects any |
|
Valid BEMT operating point at each linearization time (defined inflow angle, non-zero relative velocity) |
“Current operating point does not contain a valid value of phi.” and similar |
Not checkable before the run |
None |
Tower influence, aeroacoustics, tail fin, buoyancy |
No linearization restriction |
Not needed |
None |
SeaState
Restriction |
OpenFAST message (abridged) |
VANE check |
Auto-fix |
|---|---|---|---|
|
“Still water conditions must be used for linearization. Set WaveMod=0.” |
Yes |
|
|
“No directional spreading must be used for linearization.” |
Yes |
|
|
“Constrained wave conditions cannot be used for linearization.” |
Yes |
|
|
“Cannot use full difference-frequency 2nd-order wave kinematics for linearization.” |
Yes |
|
Still water needs |
“WaveStMod must be 0 or 1 when WaveMod = 0.” |
Yes |
|
Still water needs |
“The MacCamy-Fuchs diffraction model is not compatible with WaveMod = 0 or 6.” |
Yes |
|
Still water with |
“CurrSSDir must not be set to ‘DEFAULT’ when WaveMod is set to 0.” |
Yes |
|
The still-water rows are not linearization rules in themselves. They are rejected at
initialization once still water is forced, so VANE treats them together with
WaveMod.
HydroDyn
Restriction |
OpenFAST message (abridged) |
VANE check |
Auto-fix |
|---|---|---|---|
|
“Potential-flow model cannot be set to FIT for linearization.” |
Yes |
None |
|
“Cannot set wave radiation model to convolution for linearization.” |
Yes |
|
|
“Cannot set wave excitation model to DFT for linearization.” |
Yes |
|
State-space |
Fails while reading the coefficient files |
Yes |
|
|
“Mean-drift 2nd-order forces cannot be used for linearization.” and similar |
Yes (only with |
|
Additional body DOFs ( |
“Nonzero NAddDOF currently cannot be used with state-space wave radiation model (RdtnMod=2).” |
Yes |
None |
|
“RdtnDT must be equal to the glue-code DT if PotMod = 1 and using RdtnMod > 0 or ExctnMod > 1.” |
Yes |
|
State-space excitation needs no waves from file, no spreading, and no second-order kinematics in SeaState |
“Given SeaState conditions cannot be used with state-space wave excitations.” |
Covered by the SeaState rows |
Covered by the SeaState rows |
Mooring and substructure
Restriction |
OpenFAST message (abridged) |
VANE check |
Auto-fix |
|---|---|---|---|
MoorDyn lines must not use VIV (line-type |
“Linearization cannot be used with the VIV or Viscoelastic model in MoorDyn” |
Yes (only line types that a line uses) |
None |
MAP++, SubDyn, ExtPtfm (v5) |
No linearization restriction |
Not needed |
None |
Remaining limits
Restrictions that depend on the solution, such as the BEMT operating-point checks and CalcSteady convergence, can only be seen during the run. The sweep’s retry ladder handles non-convergence (see The OpenFAST linearization sweep).
The ExtPtfm restriction depends on the OpenFAST version, which the deck does not record, so it is documented here but not enforced.
No auto-fix exists where every fix would change the physical model: OLAF, nacelle drag, lidar, upflow, FIT,
NAddDOF, the MoorDyn line models, and the unsupported modules. These are reported with the keyword to change.