4.2.1. Glue Code Overview
The OpenFAST glue code is the software layer that connects individual physics modules
(ElastoDyn, AeroDyn, HydroDyn, ServoDyn, etc.) into a coupled simulation. It lives
primarily in modules/openfast-library/src/ and relies on the ModVar module in
modules/nwtc-library/src/ModVar.f90 for an abstract description of every
variable exchanged between modules.
High-level responsibilities include:
Initialising each module and registering its variables with the glue code
Managing multi-rate sub-stepping (modules whose time step is a divisor of the global time step)
Mapping outputs of one module to inputs of another (motion meshes, load meshes, and scalar variables)
Running the time-stepping loop under either loose coupling or tight generalized-alpha coupling
Linearising the assembled system to produce state-space matrices
4.2.1.1. Source files
File |
Purpose |
|---|---|
|
Top-level initialisation: reads input file, calls each module’s |
|
Combines per-module variable descriptions into a monolithic |
|
Implements the generalized-alpha tight-coupling solver
( |
|
Mesh-to-mesh and variable-to-variable transfer mappings. |
|
Wrappers around module-level |
|
The |
4.2.1.2. Module coupling categories
Each module is assigned to exactly one coupling category during initialisation in
FAST_SolverInit:
Category |
Flag |
Description |
|---|---|---|
Tight Coupling (TC) |
|
States and accelerations are solved simultaneously via the generalized-alpha
Newton iteration. ElastoDyn, BeamDyn, and SubDyn are tight-coupling modules
when |
Option 1 |
|
Modules whose inputs depend on TC outputs and are converged in the same Newton loop (e.g. HydroDyn, MoorDyn, ServoDyn with structural controllers). |
Option 2 |
|
Loosely coupled modules that are called once per step before the convergence loop (InflowWind, SeaState, AeroDyn, etc.). |
Post |
|
Modules whose input solve is deferred until after the convergence loop (ServoDyn, ExternalInflow). |
4.2.1.3. Time-stepping loop (overview)
Each call to FAST_SolverStep follows this sequence:
Correction iterations (outer loop) – at most
p%MaxConvIteriterations.Option 2 – input solve + state update +
CalcOutputfor loosely coupled modules.Option 1 – input solve + state update for semi-implicit modules.
TC input solve – gather inputs for the tight-coupling modules.
Convergence iterations (inner loop) – Newton-Raphson updates of TC states and inputs until the update norm falls below
ConvTolor the iteration limit is reached.Post-solve input solves – ServoDyn, ExternalInflow.
Module registration and variable ordering are described in detail in Module Variables (ModVar). How the per-module variables are assembled into global arrays and Jacobian matrices is covered in ModGlue – Combining Modules into Global Arrays. The solver algorithm and Jacobian construction are covered in Solver.