Actuator-Based Kynema-FMB Coupling
Kynema-SGF supports actuator-based coupling to Kynema-FMB through two actuator types:
TurbineKynemaFMBLinefor the actuator-line representationTurbineKynemaFMBDiskfor the actuator-disk representation
Both types share the same Kynema-FMB turbine parser and therefore accept the same input arguments. Unless noted otherwise, every input documented below with the prefix Actuator.TurbineKynemaFMBLine is also accepted with the prefix Actuator.TurbineKynemaFMBDisk when Actuator.type = TurbineKynemaFMBDisk.
These coupled turbine types require a Kynema-SGF build with Kynema-FMB support enabled. They also require Actuator in incflo.physics and typically require ActuatorForcing in ICNS.source_terms.
Unlike the OpenFAST-coupled turbine models, the rotor diameter and hub height are read from the WindIO file referenced by kynema_fmb_input_file. They are not separate Kynema-SGF user inputs for these actuator types.
Example for TurbineKynemaFMBLine:
incflo.physics = FreeStream Actuator
ICNS.source_terms = ActuatorForcing
Actuator.labels = T0 T1
Actuator.type = TurbineKynemaFMBLine
Actuator.TurbineKynemaFMBLine.kynema_fmb_input_file = NREL-5MW-aero.yaml
Actuator.TurbineKynemaFMBLine.num_struct_nodes_blade = 11
Actuator.TurbineKynemaFMBLine.num_struct_nodes_tower = 11
Actuator.TurbineKynemaFMBLine.num_points_blade = 64
Actuator.TurbineKynemaFMBLine.num_points_tower = 7
Actuator.TurbineKynemaFMBLine.num_blades = 3
Actuator.TurbineKynemaFMBLine.epsilon = 5.0 5.0 5.0
Actuator.TurbineKynemaFMBLine.epsilon_tower = 5.0 5.0 5.0
Actuator.TurbineKynemaFMBLine.fllc = false
Actuator.TurbineKynemaFMBLine.rot_speed_rpm = 12.1
Actuator.TurbineKynemaFMBLine.dt = 0.005
Actuator.TurbineKynemaFMBLine.density = 1.225
Actuator.TurbineKynemaFMBLine.nacelle_drag_coeff = 1.0
Actuator.TurbineKynemaFMBLine.nacelle_area = 8.0
Actuator.TurbineKynemaFMBLine.output_frequency = 1
Actuator.T0.base_position = 0.0 -250.0 -90.0
Actuator.T1.base_position = 0.0 250.0 -90.0
KynemaFMB.abs_err_tol = 1e-6
KynemaFMB.rel_err_tol = 1e-4
For a disk-based run, set Actuator.type = TurbineKynemaFMBDisk and replace the parameter prefix accordingly.
If the individual turbines (e.g. T0 and T1) differ in any other details, the input arguments can
be specified using the turbine labels (e.g. Actuator.T0.nacelle_area, Actuator.T1.nacelle_area)
instead of the turbine type prefix, which assigns the value to all turbines of that type.
Per-turbine placement
- Actuator.T0.base_position
type: List of 3 real numbers, required
Base position of the turbine in the global coordinate system. Replace
T0with each entry listed inActuator.labels.
Kynema-FMB turbine setup and coupling
- Actuator.TurbineKynemaFMBLine.kynema_fmb_input_file
type: String, required
Path to the Kynema-FMB input file in WindIO format. Kynema-SGF reads the rotor diameter and hub height from this file and forwards the structural, aerodynamic, and mass-property data to Kynema-FMB.
- Actuator.TurbineKynemaFMBLine.num_struct_nodes_blade
type: Int, required
Number of structural nodes used by Kynema-FMB for each blade.
- Actuator.TurbineKynemaFMBLine.num_struct_nodes_tower
type: Int, required
Number of structural nodes used by Kynema-FMB for the tower.
- Actuator.TurbineKynemaFMBLine.num_points_blade
type: Int, required
Number of aerodynamic sections per blade used by the actuator representation. This must match the number of aerodynamic sections available in the Kynema-FMB input.
- Actuator.TurbineKynemaFMBLine.num_points_tower
type: Int, required
Number of aerodynamic tower sections used by the actuator representation. Set this to
0to disable tower aerodynamics. If nonzero, it must match the tower discretization available in the Kynema-FMB input.
- Actuator.TurbineKynemaFMBLine.num_blades
type: Int, optional, default = 3
Number of blades in the actuator representation.
- Actuator.TurbineKynemaFMBLine.density
type: Real, required
Fluid density used to non-dimensionalize the forces exchanged with Kynema-FMB. This should match the density in the Kynema-SGF simulation.
- Actuator.TurbineKynemaFMBLine.rot_speed_rpm
type: Real, optional, default = 0
Initial rotor speed in RPM. This parameter is ignored when
Actuator.TurbineKynemaFMBLine.rot_speed_radpsis present.
- Actuator.TurbineKynemaFMBLine.rot_speed_radps
type: Real, optional, default = 0
Initial rotor speed in radians per second. If present, it overrides
Actuator.TurbineKynemaFMBLine.rot_speed_rpm.
- Actuator.TurbineKynemaFMBLine.generator_power_init
type: Real, optional, default = 0
Initial generator power (in W) passed to Kynema-FMB.
- Actuator.TurbineKynemaFMBLine.hub_wind_vector_init
type: List of 3 real numbers, optional, default = 0 0 0
Initial wind vector seen by the turbine hub. Kynema-SGF converts this vector to a speed magnitude and passes it to Kynema-FMB for the sake of the controller.
- Actuator.TurbineKynemaFMBLine.yaw_deg
type: Real, optional, default = 0
Initial nacelle yaw angle in degrees. This parameter is ignored when
Actuator.TurbineKynemaFMBLine.yaw_radis present.
- Actuator.TurbineKynemaFMBLine.yaw_rad
type: Real, optional, default = 0
Initial nacelle yaw angle in radians. If present, it overrides
Actuator.TurbineKynemaFMBLine.yaw_deg.
- Actuator.TurbineKynemaFMBLine.generator_efficiency
type: Real, optional, default = 1
Generator efficiency passed to Kynema-FMB.
type: String, optional, default = empty
Path to the controller shared library passed to Kynema-FMB. This is typically a ROSCO dynamic library.
- Actuator.TurbineKynemaFMBLine.controller_input_file
type: String, optional, default = empty
Path to the controller input file. When this value is provided, Kynema-SGF creates the Kynema-FMB controller interface and expects the shared library path to be set as well.
- Actuator.TurbineKynemaFMBLine.dt
type: Real, optional, default = same as Kynema-SGF time step
Kynema-FMB time step size. It must divide the Kynema-SGF time step so that the coupled solver can take an integer number of Kynema-FMB sub-steps per CFD time step.
Actuator forcing and output controls
- Actuator.TurbineKynemaFMBLine.epsilon
type: List of 3 real numbers, conditionally required
Gaussian smearing width for the blade force projection. Kynema-SGF requires at least one of
epsilonorepsilon_chordfor turbine actuator simulations. When FLLC is enabled, bothepsilonandepsilon_chordare required.
- Actuator.TurbineKynemaFMBLine.epsilon_chord
type: List of 3 real numbers, optional
Non-dimensional
epsilon / chordvalues used to compute a blade-force smearing width from the local chord. Kynema-SGF uses the maximum of the directepsilonvalue and the chord-based value when both are provided.
- Actuator.TurbineKynemaFMBLine.epsilon_min
type: List of 3 real numbers, optional
Minimum value allowed when chord-based epsilon values are used.
- Actuator.TurbineKynemaFMBLine.epsilon_tower
type: List of 3 real numbers, optional
Gaussian smearing width for tower forces.
- Actuator.TurbineKynemaFMBLine.fllc
type: Bool, optional, default = false
Enables the filtered lifting line correction for the blade loading.
- Actuator.TurbineKynemaFMBLine.fllc_type
type: String, optional, default =
variable_chordSelects the FLLC formulation. Supported values are
constant_chordandvariable_chord.
- Actuator.TurbineKynemaFMBLine.fllc_relaxation_factor
type: Real, optional, default = 0.1
Relaxation factor applied to the FLLC velocity update.
- Actuator.TurbineKynemaFMBLine.fllc_start_time
type: Real, optional, default = 0
Simulation time at which the FLLC correction becomes active.
- Actuator.TurbineKynemaFMBLine.fllc_nonuniform
type: Bool, optional, default = true
Enables the non-uniform radial point distribution used by the FLLC implementation.
- Actuator.TurbineKynemaFMBLine.fllc_epsilon_dr_ratio
type: Real, optional, default = 1
Target ratio of epsilon to actuator-point spacing used when building the non-uniform FLLC point distribution.
- Actuator.TurbineKynemaFMBLine.nacelle_drag_coeff
type: Real, optional, default = 0
Nacelle drag coefficient used to model nacelle drag.
- Actuator.TurbineKynemaFMBLine.nacelle_area
type: Real, optional, default = 0
Frontal area of the nacelle used together with
nacelle_drag_coeff.
- Actuator.TurbineKynemaFMBLine.output_frequency
type: Int, optional, default = 10
Frequency, in Kynema-SGF time steps, for writing the actuator NetCDF output produced by Kynema-SGF. Kynema-FMB’s own turbine output is written separately every Kynema-SGF time step.
Restart and controller options
For a full coupled restart, these turbine-specific settings are used together with the standard Kynema-SGF flow restart input io.restart_file.
- Actuator.TurbineKynemaFMBLine.kynema_fmb_restart_step
type: Int, optional
External restart step for Kynema-FMB. When this value is present, Kynema-SGF switches the turbine to restart mode and constructs a per-turbine checkpoint filename of the form
kynema_fmb_00003_<label>.chk.
- Actuator.TurbineKynemaFMBLine.kynema_fmb_restart_directory
type: String, optional, default =
.Directory containing the Kynema-FMB checkpoint files referenced by
kynema_fmb_restart_step.
Kynema-FMB solver options
- KynemaFMB.abs_err_tol
type: Real, optional, default = 1e-5
Absolute error tolerance used by the Kynema-FMB nonlinear solver.
- KynemaFMB.rel_err_tol
type: Real, optional, default = 1e-4
Relative error tolerance used by the Kynema-FMB nonlinear solver.
- KynemaFMB.max_nonlinear_iterations
type: Int, optional, default = 12
Maximum number of nonlinear iterations used by the Kynema-FMB solver per sub-step.
- KynemaFMB.damping_factor
type: Real, optional, default = 0
Numerical damping factor forwarded to the Kynema-FMB solver, which is applied in its temporal scheme. Counterintuitively, 0 corresponds to full damping and 1 corresponds to no damping.