CFD Simulation approaches for Turbomachines
CFD simulation approach for turbomachines such as centrifugal pump and blowers, appropriateness of various modelling approaches namely Single Reference Frame (SRF), Multiple Reference Frame (MRF) or Frozen Rotor Method, Sliding Mesh Motion (SMM) along with applications to industrial problems are described in this page. Before moving to the CFD simulation aspects, following two graphics summarize the types of turbomachines available in industries. The simulation can be just one phase (liquid or gas) or multi-phase applications such as investigation into mixing effects in Gas-Liquid-Solid Stirred Reactor. The explanation on multi-phase flow simulations can be found here.
Forward-curved Blade vs. Backward-curved Blades: Two articles titled "The Difference Between Forward Curved and Backward Curved Fans" (longwellfans.com/difference-between-forward-curved-and-backward-curved-fans) and "Comparison between Forward Curved and Backward Curved Fans" (sofasco.com/blogs/article/comparison-between-forward-curved-and-backward-curved-fans) give good comparison.


Pumps need to transfer energy to the liquids and their suction (inlet) lines are at lower pressures than the discharge lines. In general, it is assumed that the inlet line is always filled with water without any traces of air or gas. However, this is not always the case. If the centreline of the pump is above the water supply reservoir and there is no check valve or the pump is started first time, there will be air present in the suction line. Centrifugal pumps with basic design features cannot remove the air from the suction line and can only start to pump the fluid after it has initially been primed with the fluid.
The term 'priming' refers to the phenomena of removing the air from the system. Types of self-priming pumps are centrifugal pumps with "separation chamber", "side channel" or "water ring pumps" and "two casing chambers and an open impeller pumps". Some self-priming pumps come with an integrated vacuum pump that ensure the pump primes at unfavourable suction pipe layouts. The self-priming feature can be imparted to a centrifugal pump by ensuring impeller is submerged in water or retains enough water when it stops. It can be achieve simply by designing a suction and discharge cavity above the centerline of the impeller or installing a check valve near the suction eye. Note that even self-priming pumps will need initial priming after commissioning.
CFD simulations of a pump is carried with known mass flow rate and known pressure at one of the boundaries. However, any simulation of a self-priming process needs to be carried out with atmospheric boundary conditions at both inlet and outlet as well as keeping the gravity on - to separate gas from liquid. Alternatively, pressure inlet and the opening at the outlet can be used as inlet and outlet boundaries in order to approximate the actual self-priming operation This makes the simulation process special and a transient simulation is necessary.

Pumps are characterized by a single value known as specific speed. There are some dimensional variants of specific speeds and some non-dimensional. Hence, utmost care should be taken to check and use appropriate units used to derive the specific speeds. ISO 5801:2017 specifies procedures for the determination of the performance of fans of all types except those designed solely for air circulation, e.g. ceiling fans and table fans. Testing of jet fans is described in ISO 13350. The aeroacoustic measurements are performed using a test rig (the so-called In-Duct method) according to the industry norm ISO 5136 where far-field noise levels are recorded inside a circular duct using three slit-tube microphones.
SRF: This method is used when the computational domain is axi-symmetric. This is called 'single' reference frame because only one reference frame (which is rotating) needs to be defined. This method can be used when whole geometry (the computational domain) can be assumed rotating.
Lumped Fan (FP) or Body Force Model: This method does not model the blades and hub, instead uses an interface at the location where the fan blades would be located. An experimentally obtained fan curve (pressure drop vs. flow rate) is applies as pressure rise (pressure jump or porous jump) over the interface according to the mass flow rate. The drawbacks of this model are that the velocity vectors exiting the interface of the standard LF model only have an axial component, no swirl (tangential component) and no reduced velocity where the hub would be located. These drawbacks can be reduced by adding a swirl to the outlet flow or geometrically leaving out the hub region from the interface.
MRF:This method uses more that one reference frames - at least one stationary (outer) and 1 rotating (inner). This is also known as Frozen Rotor Method (FRM) as the rotating parts are kept frozen in position and rotation is accounted for by the additional source terms through inclusion of centrifugal and Coriolis forces. Instead of the blades moving physically through the air, the air moves around the rotor blades with a corresponding angular velocity. Even for the cases where transient simulation is required, MRF method is useful for attaining initial values for time-dependent simulations because the pseudo-steady state can be reached within a few revolutions starting from zero initial velocity. MFR approach is appropriate if the flow seen from the rotating/moving frame of reference is steady along the interface. In other words, when flow is relatively uniform at the interface between the moving and stationary zones. E.g. in mixing tanks the impeller-baffle interactions are relatively weak, large-scale transient effects are not present and the MRF model can be used.
MRF Approach - Limitations:
Excerpts from "Evaluation of the Multiple Reference Frame Approach for the Modelling of an Axial Cooling Fan" by Randi Franzke, Simone Sebben, Tore Bark, EmilWilleson and Alexander Broniewicz.The fan performance curve, describing the pressure rise over volume flow rate through the fan, is commonly under-predicted when using the MRF model. This under-prediction mainly occurs at low to medium volume flow rates (radial and transitional regime), therefore it is concluded that the MRF method works best when the fan is operating in axial conditions. Liu et al. (2016) found that the thrust of a tidal current turbine was equally under-predicted with the MRF approach as the pressure rise. Furthermore, they found that the frozen rotor position has a significant influence on the flow field in the near wake. Kobayashi and Kohri (2011) showed that uniform inflow conditions are necessary in order to facilitate the transition to the moving reference frame. Apart from the operating conditions, it is also important that flow structures originating from the blades (e.g. tip vortices) are completely encompassed by the MRF domain, in order not to be split or in other ways being hindered from developing. As was pointed out by Gullberg and Löfdahl (2011) and Kobayashi et al. (2014) the performance of the MRF approach is highly dependent on the users choice of the size of the MRF. A large MRF domain has therefore been shown to give better agreement with experimentally obtained fan curves. For open fans (i.e. no ring connecting the blade tips), the radial extent is more important, due to the occurring tip vortices, while for both the open and closed fan type a sufficiently large axial extent can lead to more uniform inflow conditions and hence a better performance prediction. Therefore it can be concluded that the users choice of the MRF domain has a substantial impact on the accuracy of the results.
DMM:
In all the cases described above, the rotating and stationary parts do not change the shape or geometry. When the parts change shape and/or size, a Dynamic Mesh Model (DMM) method is required which allow changes to be made to the mesh (as solution progresses) such as remeshing, adding and removing grid cells where necessary.
Example profile for motion of the solid-body
((movement_linear 3 point) (time 0 1 2 ) (x 2 3 4 ) (v_y 0 -5 0 ) ) ((movement_angular 3 point) (time 0 1 2 ) (omega_x 2 3 4 ) )Typically, a DMM simulation can consist of up to 4 different zones. This is demonstrated by application of DMM for simulation of flow in an internal combustion engines. Excerpts from Theory Guide: "ANSYS Fluent expects the description of the motion to be specified on either face or cell zones. If the model contains moving and non-moving regions, you need to identify these regions by grouping them into their respective face or cell zones in the starting volume mesh that you generate. Furthermore, regions that are deforming due to motion on their adjacent regions must also be grouped into separate zones in the starting volume mesh. The boundary between the various regions need not be conformal. You can use the non-conformal or sliding interface capability in ANSYS Fluent to connect the various zones in the final model."
Standard Transient Profiles
((profile-name transient N periodic?) (field_name-1 a1 a2 a3 .... aN) (field_name-2 b1 b2 b3 .... bN) . . (field_name-r r1 r2 r3 .... rN) )Profile names must have all lowercase letters, time field section must be in ascending order. N is the number of entries per field. The 'periodic?' entry indicates whether profile is time-periodic or not: 1 for a time-periodic profile, or 0 if the profile is not time-periodic. An example is shown below:
((time_vel_curve transient 3 0) (time 1 2 3) (u 10 20 30) )
The 6DOF solver in ANSYS Fluent uses the forces and moments acting on the object in order to compute the translational and angular motion of the center of gravity of an object. The governing equation for the translational motion of the center of gravity is solved in the inertial coordinate system. Once the angular and the translational accelerations are computed from angular momentum balance and linear momentum balance respectively, the rates (angular velocity / angular displacement and translation velocity / displacement) are derived by numerical integration. The angular and translational velocities are used in the dynamic mesh calculations to update the rigid body position." For the rigid body motion of a body such as valves and diaphragms, the 6DOF solver is which computes external forces and moments on the valve by computing a numerical integration of the pressure and shear stress over the valve’s surface. It can also add additional forces or moments such as e.g. spring and mass inertia forces. When the forces and moments acting on a rigid body is estimated, it calculates the translational and rotational motion of the center of gravity of the body using equation a = 1/m . ΣF, dω/dt = 1/Inertia . Στ
Dynamic Mesh TUI
define/dynamic-mesh dynamic-mesh? Enable Dynamic Mesh? [yes] yes Enable In-Cylinder Option [no] no Enable Six DOF Solver? [no] no Enable Implicit Update? [no] yes Enable Contact Detection? [no] yes /define/dynamic-mesh/zones create zone_x motion type: (stationary rigid-body deforming user-defined system-coupling) enter motion type: [stationary] deforming allow smoothing? [yes] yes allow local remeshing? [yes] yes use remeshing global values? [yes] yes /define/dynamic-mesh/controls smoothing? [yes] yes /define/dynamic-mesh/controls layering? [no] yes /define/dynamic-mesh/controls remeshing? [no] yesWhen using Local Remeshing method, FLUENT marks cells based on criteria set for skewness and minimum / maximum length scales. It evaluates each cell and marks the cell if it does not meet one of the following criteria:
Sample UDF for 6DOF case. DEFINE_SDOF_PROPERTIES (name, properties, dt, time, dtime) specifies custom properties of moving objects for the six degrees of freedom (SDOF) solver which includes mass, moment and products of inertia, external forces and external moments. real *properties - pointer to the array that stores the SDOF properties. The properties of an object which can consist of multiple zones can change in time, if desired. External load forces and moments can either be specified as global coordinates or body coordinates. In addition, you can specify custom transformation matrices using DEFINE_SDOF_PROPERTIES. The boolean properties[SDOF_LOAD_LOCAL] can be used to determine whether the forces and moments are expressed in terms of global coordinates (FALSE) or body coordinates (TRUE). The default value for properties[SDOF_LOAD_LOCAL] is FALSE.
| #include "udf.h" | |||
| #include "math.h" | |||
| DEFINE_SDOF_PROPERTIES(valve_6dof, prop, dt, time, dtime) { | |||
| prop[SDOF_MASS] = 0.10; | /*Mass of the rigid body in [kg] */ | ||
| prop[SDOF_IZZ] = 1.5e-3; | /*Mass moment of inertia about Z axis [kg/m^2]*/ | ||
| /* Translational motion setting, use TRUE and FALSE as applicable */ | |||
| prop[SDOF_ZERO_TRANS_X] = TRUE; | /*Translation allowed in global X-Direction? */ | ||
| prop[SDOF_ZERO_TRANS_Y] = TRUE; | /*Translation allowed in global Y-Direction? */ | ||
| prop[SDOF_ZERO_TRANS_Z] = TRUE; | /*Translation allowed in global Z-Direction? */ | ||
| /* Rotational motion setting, use TRUE and FALSE as applicable*/ | |||
| prop[SDOF_ZERO_ROT_X] = TRUE; | /*Rotation allowed about global X-Axis? */ | ||
| prop[SDOF_ZERO_ROT_Y] = TRUE; | /*Rotation allowed about global Y-Axis? */ | ||
| prop[SDOF_ZERO_ROT_Z] = FALSE; | /*Rotation allowed about global Z-Axis? */ | ||
| /* Gravitational, External Forces/Moments: SDOF_LOAD_F_X, SDOF_LOAD_F_Y ... SDOF_LOAD_M_Z*/ | |||
| M = prop[SDOF_MASS]; Larm = 0.10 */ | |||
| /* DT_THETA(dt): orientation of body-fixed axis vector, DT_CG(dt): center of gravity vector, DT_VEL_CG(dt): cg velocity vector, DT_OMEGA_CG(t): angular velocity vector */ | |||
| prop[SDOF_LOAD_M_Z] = -9.81 * M * Larm * sin(DT_THETA(dt)[2] ; | |||
| Message("\n 2D: updated 6DOF properties DT_THETA_Z: %e, Mz: %e, Mass: %e \n", | |||
| DT_THETA(dt)[2], prop[SDOF_LOAD_M_Z], prop[SDOF_MASS]); | |||
| } | |||
#include "udf.h"
#define PI 3.141592654
DEFINE_TRANSIENT_PROFILE(speed, time) {
real A = PI/12; /*Amplitude in [rad] */
real f = 10.0; /*Frequency in [rad/s] */
real w; /*Angular displacement */
w = 2.0*PI*A*cos(f * time);
return w;
}
Sign convention of rotor power in FLUENT: 'positive' value implies fluid is supplying energy to the rotor (e.g. turbine), 'negative' value implies rotor is supplying energy to the fluid (e.g. compressor or pump).
DFBI - DMM is known as DFBI in STAR-CCM+ where the DFBI (Dynamic Fluid Body Interaction) module is used to simulate the motion of a rigid body in response to pressure and shear forces the fluid exerts, and to additional user-defined forces such as weight and inertia. STAR-CCM+ calculates the resultant force and moment acting on the body due to all influences, and solves the governing equations of rigid body motion to find the new position of the rigid body. There are multiple type of DFBI features. One such feature is DFBI Superposed Rotation which superimposes an additional fixed body rotation in addition to the DFBI motion. For example, this option can be used to model rotating propellers attached to rotating and/or translating marine boats.
The 6-DOF Solver in STAR-CCM+ computes fluid forces, moments, and gravitational forces on a 6-DOF object where pressure and shear forces are integrated over the surfaces of the 6-DOF bodies. These forces and moments are used to compute the translational motion of the center of mass of the body and the angular motion of the orientation of the body. The 6-DOF body object defines the surface of the floating body for the calculations of the 6-DOF solver.
Mesh Motion in OpenFOAM: The solid body motion is defined by classes derived from common base solidBodyMotionFunction. The motion function returns a septernian which describes the motion of the body. Septernion class used to perform translations and rotations in 3D space. It is composed of a translation vector and rotation quaternion and as such has seven components hence the name 'septernion' from the Latin to be consistent with quaternion rather than 'hepternion' derived from the Greek. Quaternion are the extension of complex number system in 2D geometry to that in 3D geometry (4-dimensional division algebra discovered by Irish mathematician and physicist William Rowan Hamilton).
Immersed Solid Approach: ANSYS CFX uses an immersed solid approach to model to model steady-state or transient simulations involving rigid solid objects that can move through fluid domains such as lobe pump, gear pumps and axial flow fans. The immersed solid is represented as a moving walls (or two counter-rotating moving walls in case of gear pumps) and a source term in the fluid equations that drives the fluid velocity to match the solid velocity. Some of the limitations of this approach are: the immersed solid domain cannot undergo mesh deformation and the surfaces of the immersed solid body are not explicitly resolved by the mesh. In addition, a wall function cannot be applied to the boundary of an immersed solid and hence the accuracy of simulation results may be lower than can be obtained using mesh deformation methods or other techniques that support the use of wall boundaries to directly resolve solid surfaces.
Mixing Plane Method: MPM is available in ANSYS FLUENT. When a axial flow compressor or turbine stage needs to simulated with different values of periodic angles of rotor and stator, this approach becomes necessary. A "mixing plane" is defined at the interface of rotor and stator.The lubrication system used in an automotive gearboxes are of dip-lubricated type or splash-lubricated gearboxes where the gears are partly immersed in oil and oil is transported to the tooth-meshing region while the teeth come out of the oil well. The rotation of gear teeth in highly viscous oil lead to drag known as churning power loss (category of load-independent power losses). Note that in real life, the two faces of gear teeth are in solid-to-solid contact which changes with time.
Thus, in order to apply the CFD method, some arbitrary gaps need to be assumed so that the two interacting teeth never touch each other (sometimes achieved by scaling down the driver and driven gears to 99.5% of their original sizes). It is recommended to start with 2D geometry where VOF multiphase model with dynamic meshing (smoothing, local- or global-remeshing and/or layering) to simulate the fluid flow for a pair of mating gears. Continuous variation of the geometry of the fluid volume during the operation, determined by the mating cycles of the gears, leads to high complexity in the simulation of fluid dynamics inside gearboxes, because it necessarily requires an update of the (distorted) mesh after a few time steps or fraction of degree rotation.
Another source of load-independent losses in gears is squeezing or pocketing generated due to variation of the volume between mating teeth thereby producing axial flows (squeeze effect) of the trapped lubricant. This loss is a lower order of magnitude when compared to churning losses.
Reference: "Automotive Transmissions: Fundamentals, Selection, Design and Application" by Giesbert Lechner, Harald Naunheimer



From STAR-CCM+ V2302 Release Notes: "In applications like gear box splashing droplets may break-up in smaller and smaller size until you can no longer model the very small droplets as Lagrangian particles. At the same time you still need to model the free surface of the bulk liquid. For such applications Mixture Multiphase with Large Scale Interface modelling (MMP-LSI) has become the method of choice. In general, MMP-LSI is relevant anywhere you have Volume Of Fluid (VOF) but that would be too expensive, and a mixture is present. But just like VOF, MMP-LSI comes at a comparably high cost if you can’t decouple the choice of flow time step from that needed to fulfil the small time step required for the volume fraction due to Courant (CFL) number constraints. To overcome this challenge we previously rolled out Implicit Multi-Step for VOF where simulations were typically sped up by 3-4x and in some cases by up to an order of magnitude."






Design Ratio: Cyclone Separator: The table below summarizes important dimensions of a cyclone separator. The range given are based on information found in reasearch and thesis documents. However, these dimensions are indicative only and are not intended to provide any engineering solutions.
| S. No. | Description | Design ratio | Typical range | |
| 1 | Cyclone diameter | 1.000 | - | |
| 2 | Diameter of vortex finder | 0.600 | 0.450 - 0.700 | |
| 3 | Dust outlet diameter | 0.300 | 0.250 - 0.350 | |
| 4 | Barrel height | 0.500 | 0.400 - 0.600 | |
| 5 | Height of the cone | 1.500 | 1.250 - 1.750 | |
| 6 | Vortex breaker cross height | 0.400 | 0.300 - 0.500 | |
| 7 | Height of the nozzle | 0.250 | 0.200 - 0.300 | |
| 8 | Nozzle width | 0.002 | 0.001 - 0.003 | |
| 9 | Vortex breaker cone height | 0.125 | 0.100 - 0.150 | |
| 10 | Diameter of vortex breaker cone | 0.250 | 0.200 - 0.300 |



Fan Laws: applicable when the efficiency of scaled model and actual model are assumed nearly equal.
Measurement uncertainty for the individual operating parameters: reference - www.ksb.com/centrifugal-pump-lexicon/total-tolerance/191302
| Variable | Symbol | Class 1 [%] | Class 2 [%] |
| Volume flow rate | tQ | ± 4.5 | ± 8.0 |
| Pump discharge head | tH | ± 3.0 | ± 5.0 |
| Pump efficiency | tη | -3.0 | -5.0 |
Sample design data of a centrifugal pump [Reference: 1Numerical 3D RANS simulation of gas-liquid flow in a centrifugal pump with an Euler-Euler two-phase model and a dispersed phase distribution: T. Mueller, P. Limbach, R. Skoda, 2Investigation of the handling ability of centrifugal pumps under air-water two-phase inflow: model and experimental validation: Qiaorui Si et al.]
| Performane / Design Parameters | Symbol | Unit | Value1 | Value2 |
| Impeller inlet diameter | d1 | [mm] | 260 | 79 |
| Impeller inlet duct diameter | di | [mm] | - | 65 |
| Blade inlet width | b1 | [mm] | 46 | - |
| Impeller blade inlet angle | β1 | [°] | 19 | - |
| Impeller outlet diameter | d2 | [mm] | 556 | 140 |
| Blade outlet width | b2 | [mm] | 46 | 15.5 |
| Impeller blade outlet angle | β2 | [°] | 23 | - |
| Blade thickness | s | [mm] | 12 | - |
| Shape of blades | - | [-] | 2 circular arcs | Archimedes' spiral |
| Number of blades | z | [no.] | 5 | 6 |
| Nominal flow rate | Q | [m3/s] | 0.114 | 0.014 |
| Nominal pump head | H | [m] | 10.16 | 20.2 |
| Nominal rotational speed | ω | [rad/s-1] | - | 305 |
| N | [RPM] | 540 | 2910 | |
| Specific speed | Ns | [s-1] | 32 | - |
Slip Losses: The losses due to "imperfect guidance of the flow by the blades" or slip due to fluid not following the solid rotating wall and fluid. As the fluid traverses through the impeller blades the pressure between each adjacent blade (pressure side of one blade and suction side of other blade) will be different due to the adverse tangential or peripheral pressure gradient. This results in a secondary circulation which forces the fluid exiting the blade to flow backward (from tip towards the hub) with respect to the rotational direction of the impeller. To reduce slip losses, it is suggested to increase the inlet blade angle and reduce the outlet angle (Sixsmith). The slip at shut-off head is a measure of the drag (or 'hold') which the blades have on the fluid (Crewdson). The increase in number of blades reduces slip loss but increases frictional loss At the same time, number and spacing of the blades are strongly related to the diameter of the impeller and and the size of the side channel (height of the blades along axial direction).
Shock Losses: Also known as incidence losses, these losses occur at the entry to the blades and predominantly at off-design operating conditions. It is believed that the difference in angle between the blade and the velocity of fluid entering the blade results in difference of angular momenta between the slower moving fluid in the channel and the faster moving fluid in the impeller. The shock effect is quantified as the ratio of the mean peripheral (tangential) fluid velocity at the blade inlets to the velocity of the blade (at the inner diameter of the blades). As the losses from shock and slip are mainly due to misalignment of the blade and fluid angles, these could be minimised by increasing the impeller diameter and decreasing the hub diameter (Raheel and Engeda).
Another term associated with cavitation phenomena is NPSH (Net Positive Suction Head). NPSH is the difference "total pressure at pump inlet" - "vapour pressure of liquid at operating temperature" expressed as head of that fluid. That is:
ρ × g × NPSH = P0 - Pv. Note that total (or stagnation) pressure and not the static pressure is used in calculation.
NPSH is further differentiated in two types: NPSHREQUIRED or NPSHr and NPSHAVAILABLE or NPSHa. The former is supplied by pump manufacturers and this refers to the NPSH that must be available at impeller eye. Hence this value must be independent of the the system in which pump is installed and should solely depend on the design (shape and size) of the pump.
In manufacturer's catalogues, characteristic curves (Δp-Q curve) of a pump also contain a curve for NPSHr vs. Q. The NPSHr values indicated are based on measurements carried out with cold water as pumping liquid. NPSHr is also referred to as NPSH3 per API 610 and determines the operating point at which a pump will operate at 3% loss of head due to cavitation. In test set-up, the pump is installed with a starving device (flow and pressure regulator) on its suction line so that the test loop can deliver variable NPSHa. Cavitation begins as small bubbles before any indication of loss of head or capacity can be observed. This is called the point of incipient cavitation and corresponding head is denoted by NPSHi. NPSHr ≈ [2 ~ 20] × NPSHi, is sole responsibility of the pump manufacturer.
Excerpts from "Understanding Centrifugal Pump Curves" by MGNewell: Generally speaking NPSHr does not vary dramatically between variations in impeller trim which is why we do not see separate curves for the minimum and maximum impeller trims. Those curves are actually present, but they are overlaid by the design trim NPSHr curve.Reference - www.iso.org/standard/41202.html: ISO 9906:2012 specifies hydraulic performance tests for customers' acceptance of rotodynamic pumps (centrifugal, mixed flow and axial pumps). It is intended to be used for pump acceptance testing at pump test facilities, such as manufacturers' pump test facilities or laboratories. It can be applied to pumps of any size and to any pumped liquids which behave as clean, cold water. It specifies three levels of acceptance:
CFD simulations can be used to determine NPSHr by running a series of simulations for a given system and determining when the performance exhibits 3% head loss. For accurate predictions, the effect of vapor formation and collapse (cavitation) and Non-Condensable Gases (NCG) such as dissolved oxygen should also be considered.
The dimensionless parameter that governs the cavitation characteristics of a centrifugal pump is cavitation number described below.

Refer to the two operating conditions of a pump at same flow rates, pipe diameters, elevation of discharge tanks and water levels in supply tanks. Should the NPSHREQUIRED be different in the two situations? Would the NPSHAVAILABLE be same in both of the scenarios?




The time of homogenization (mixing time) is defined as the time from the introduction of the tracer to the time when the tracer concentration at the probe position reaches and remains within a certain range of the final value. If the range is set to ± 5% it is designated as t95.
Flash Mixer: An agitator used to mix a small amount of additive into a continuous stream where the Residence Time is extremely short. Residence Time it average time a process component remains in the mixing environment in a continuous process.
Mixing process needs to handle both the immiscible (e.g. water - silicone oil, water - benzene) and miscible liquids (e.g. water - alcohol, water - caustic solution), liquid with large difference in viscosities (e.g. water-0.001 Pa.s and molasses-2 Pa.s) and fluids with large difference in densities. In case of miscible liquids, only transient simulation can be performed and mass or volume fraction of one the phases needs to be monitored at different locations of the tank. If left for a long enough period of time, miscible liquids will any way dissolve in one another and form a homogeneous solution. A sliding mesh model is recommended to transport the velocity of the impeller to the bulk liquid in the stationary domain.
Reference: Hayward Gordon - MASTERING MIXING FUNDAMENTALS: A technical guide from the experts in the industry - Blending:blending of miscible fluids. If left for a long enough period of time, miscible liquids will dissolve in one another and form a homogeneous solution. The majority of liquid/liquid blending applications fall into this category. Applications involving immiscible (insoluble) fluids are classified as dispersion applications which involves very different mixer sizing methods.
There are other types of mixtures known as static mixtures where the mixing elements are inserted in the pipelines and the liquids mix as they flow through them. Kenics static mixer from Chemineer is one such device.
Reference: Mechanical Design of Mixing Equipment, D. S. DICKEY, MixTech, Inc. J. B. FASANO Chemineer, Inc - Dry-solids mixers are normally applied to flowable powdered materials. The action of the mixers can be categorized as summarized below.
The Reynolds number for agitators or mixers are calculated based on blade tip speed. However, the adopted formula has been simplified a bit by dropping π and the formula is Re = ρ[kg/m3]×N[rev/s] ×D[m2]/μ [Pa.s]. Flow is assumed turbulent when Re > 10,000 ((McCabe, Unit Operations of Chemical Engineering, 1993). Torque per Equivalent Volume [Torque on impeller / Working Volume of Tank] is an extremely useful ratio which is used as the basis for mixer sizing and describes the level of mixing for any application.
| T [°C] | PSAT [Pa] | ![]() |
| 5 | 872.60 | |
| 10 | 1228.1 | |
| 15 | 1705.6 | |
| 20 | 2338.8 | |
| 25 | 3169.0 | |
| 30 | 4245.5 | |
| 35 | 5626.7 | |
| 40 | 7381.4 | |
| 45 | 9589.8 | |
| 50 | 12344 | |
| 55 | 15752 | |
| 60 | 19932 | |
| 65 | 25022 | |
| 70 | 31176 | |
| 75 | 38563 | |
| 80 | 47373 | |
| 85 | 57815 | |
| 90 | 70117 | |
| 95 | 84529 | |
| 100 | 101320 |
Surface Water: water on the earth’s surface, including rivers, ponds, water reservoirs (dams), springs, creeks and wetlands/swamps. Most surface water comes from rainfall (precipitation) run-off from the surrounding land area (catchment). Surface water also includes the solid forms of water - snow and ice.
Non-Surface Water: water under the earth’s surface, underground water, aquifer system. It also includes soil water.

In other words: The 'face' of a blade is the high-pressure side or pressure face of the blade. This is the side that faces aft (downstream) and pushes the water when the vessel is in forward motion. The 'back' of the blade is the low pressure side or the suction face of the blade. This is the side that faces upstream (incoming water) or towards the front of the vessel.

Propellers are axial flow type. In most of the rotating devices and especially in axial flow machines, blades have two edges: leading edge and trailing (lagging) edge. The blades rotates in the direction formed by rotating trailing edge towards the leading edge. The shape of the blades have speacial twist and the parameters defining the twists are known as rake, skew and pitch.
Propellers operate in non-uniform flow field (wake regions) created by the boat or ship body. However, the theoretical studies of the performance of an impeller is carried out in calm water known as open-water characteristics. Advance ratio, thrust coefficient, torque coefficient and power coefficient are the key parameters required to define a propeller.



Input





Swash-plate axial piston pump
Reference: Axial Piston Pump - Leakage Modelling and Measurement, PhD Thesis by Jonathan Mark Haynes

Reference: Use of CFD Technology in Hydraulics System Design for off-Highway Equipment and Applications by Shivayogi S. Salutagi, Milind S. Kulkarni and Aniruddha Kulkarni - International Journal of Materials, Mechanics and Manufacturing, Vol. 4, No. 1, February 2016

Leakage Paths:


Wake Modeling
Excerpts from "Wind turbine wakes modeling and applications: Past, present, and future" by Li Wang et al, Ocean Engineering Volume 309, Part 1:WAsP: some excerpts from official website - Wind Atlas Analysis and Application Program - used to simulate wind flow over terrain and estimate the long-term power production of wind turbines and wind farms. Can be used for sites located in all kinds of terrain. WAsP contains the PARK2 and PARK1 wake models for calculation of wind farm wake effects. WAsP includes two high-resolution micro-scale wind flow models for vertical and horizontal extrapolation of the wind climate. PyWAsP is a python-based API for running WAsP and WAsP Engineering models. Turbulence intensity data from wind measurements at a nearby meteorological mast can be used for correction of modelled turbulence intensity.
As per "Wind Farm Site Selection Using WAsP Tool for Application in the Tropical Region" by Kamdar et al. -- WAsP uses a linear model composed of a comprehensive collection of individual modules according to the physical characteristics of flows in the planetary boundary layer to predict the vertical and horizontal extrapolation of wind. The WAsP flow model requires the following inputs: (1) Terrain height, (2) surface roughness, and (3) obstacle effects also known as the wind atlas methodology.The user guide or tutorial examples for latest releases are not available to public. As per WAsP version 11 on-line documentations published in 2014, the WAsP methodology consists of five main calculation blocks:
Known limitations: as per version 11
Data from nearby meteorological station ----┐
or |---┐
Recorded wind data at actual site-----------┘ |
|
▼
Load Terrain and Roughness Data
|
▼
Create topography map
|
▼
Site effects at the mast location
|
▼
Wind atlas data set or Generalised wind climate*
|
▼
Estimate the wind power
|
▼
Estimate wind farm production
* Termed site-independent characterization of the local wind climate
This site-independent characterization of the local wind climate is called a wind atlas data set or generalised wind climate.
.------------------------------------------------------------.
| Wind Climate |
------------------(------------------------------------------------------------)
Aspect | Observed | Generalized | Predicted |
------------------|------------------------------------------------------------|
Location specific?| Yes | No / regional | Yes |
------------------|------------------------------------------------------------|
Based directly on | | | |
measurements? | Usually yes | No - derived | No - modelled |
------------------|------------------------------------------------------------|
Contains local | | | Modelled for |
terrain effects? | Yes | Removed | target site |
------------------|------------------------------------------------------------|
Requires flow | | | |
modelling? | No | Yes | Yes |
------------------|------------------------------------------------------------|
Typical WAsP | Histogram or | Sector-wise | Weibull or |
representation | Weibull | Weibull | histogram |
------------------|------------------------------------------------------------|
Primary purpose | Describe measured | Create regional | Estimate wind climate|
| wind climate | wind climate | at another location |
------------------^-------------------^-----------------^----------------------'
Openwind and WAsP have a large overlap in the fundamental wind-resource inputs, although they organize and process those inputs differently. WAsP is strongly based on the Wind Atlas methodology, while Openwind provides a GIS oriented wind-farm modelling environment with wind-flow, wake and energy-yield calculations. Key difference between WAsP and Openwind is in how they use the common data. The important distinction is not primarily the input variables — it is how the tools transform them.
--------------------------------------------------------------------------
WAsP Openwind
--------------------------------------------------------------------------
Measured / mesoscale wind Wind measurements / WRG / WRB
│ │
▼ ▼
Terrain + Roughness + Obstacles Wind-flow field
│ │
▼ │───── Terrain
Generalised Wind Climate │───── Roughness
│ │───── Obstacles
▼ ▼
Turbine Site Turbine Locations
│ │
▼ ▼
Predicted Wind Climate ▼
│ │
▼ ▼
Power Curve Power Curve
│ │
▼ ▼
Energy Production ▼
│ │
▼ ▼
Wake Model Wake Model
│ │
▼ ▼
Wind Farm AEP Gross / Net AEP
--------------------------------------------------------------------------
For a wind-farm analysis system, a tool-independent master dataset can be structured like described below. This structure is useful because most of the physical input data can be shared, while the final WindPRO, WindFarmer, Openwind and WAsP specific files can be generated as adapters.
PROJECT----------------------------,
│ |
├── Project metadata ├── WIND RESOURCE
│ ├── Project name | ├── Wind speed
│ ├── Country | ├── Wind direction
│ └── Units | ├── Measurement height
│ | ├── Frequency distribution
├── SITE | ├── Weibull A, k
│ ├── Latitude | ├── Wind rose
│ ├── Longitude | ├── Air density
│ ├── Boundary | ├── Temperature
│ └── Elevation | └── Turbulence intensity
│ |
├── TERRAIN |── LONG-TERM CLIMATE
│ ├── DEM | |── Reference dataset
│ ├── Elevation | |── Reference period
│ ├── Roughness length | |── MCP parameters
│ ├── Land cover | └── Long-term correction
│ ├── Displacement height |
│ └── Obstacles |
│ |
├── TURBINE └── WIND FARM
│ ├── Turbine model ├── Turbine coordinates
│ ├── Rated power ├── Turbine types
│ ├── Rotor diameter ├── Wake model
│ ├── Hub height ├── Wake parameters
│ ├── Power curve └── Availability
│ └── Thrust curve
│
└── LOSS / UNCERTAINTY
├── Wake loss
├── Electrical loss
├── Availability
├── Curtailment
├── Environmental loss
└── Uncertainty
OpenFAST: FAST (Fatigue, Aerodynamics, Structures, and Turbulence)



The primary input file *.fst is the central driver for the simulation - it references and calls all module input files. All modules are tightly coupled in time and exchanges load + motions at every communication step. Controls simulation math (total runtime TMax, time step DT, solver orders) and contains logical true/false toggle switches determining which physical modules to loop into the solution matrix.
Settings: TMax (Total Run Time): Set based on test goals - typically 60 [s] for startup transients or 600 [s] for turbulent wind analysis. InflowWind Module: WindType is set to 3 for full 3D turbulent field (*.bts binary file). Use starting value of turbulence to be 0% for deterministic testing. WindType = 1 specifies a steady, uniform wind condition (does not need external time-series file), while WindType = 2 specifies a uniform wind time series that allows for changes in speed or direction over time (requires a separate formatted uniform wind file containing time-dependent data column) - but at any given instant, the wind speed is uniform across the entire rotor plane. This case is useful for evaluating bulk controller responses, yaw maneuvers, or specific deterministic gusts where spatial turbulence across the rotor disc is not required.
AeroDyn Module: Handles aerodynamic forces via blade element momentum (BEM) theory or free-wake vortex methods. DTAero is set to DEFAULT or a value ensuring at least 200 azimuth steps per rotor revolution for stability. WakeMod is set to 1 for standard Induction (BEM) or 2 for Generalized Dynamic Wake (GDW).
ElastoDyn Module: Defines structural degrees of freedom (DOF) and initial conditions for the turbine. ElastoDyn is based on Euler–Bernoulli beam theory in bending, meaning that no axial or torsional degrees of freedom (DOF) and no shear deformation are considered better suited to straight beams with isotropic material.
ServoDyn Module: Links external controllers (torque and pitch regulation). GenModel is Set to 1 for a simple internal cubic torque law or 2 for a dynamic link library (DLL/SO controller). HydroDyn (Hydrodynamics) Module: applies to offshore fixed-bottom turbine (e.g. monopile or jacket foundation). This module calculates wave and current loading on the fixed substructure. SubDyn (Fixed-Bottom Structural Dynamics) Module: SubDyn handles the structural modeling of the jacket or monopile using finite element frame elements.

Ref: "Design Load Case (DLC) 1.2, describing fatigue loading for a power producing offshore wind turbine under regular environmental conditions. As the time span of this load case is the full lifetime of the turbine, a large number of model runs is necessary to assess the statistics of the fatigue loading. "
From previous reference: DLC 6.4 describes similar environmental conditions as in DLC 1.2, with the sole exception that the turbine is idling due to too small or too large wind speeds. DLC 6.4 covers the cases where the wind speed at hub height averaged over 10 minutes is smaller than the cut-in speed or larger than the cut-out speed. DLC 6.4 simulates the turbine standing still or idling with the blades pitched out of the wind during normal non-extreme weather over long durations. DLC 1.2 covers all other cases.

For statistical convergence, the IEC standard recommends at least 6 different random turbulence seeds per wind speed bin for critical stochastic load conditions. For a range of speeds (from cut-in to cut-out speed) between 3 ~ 25 [m/s] and bin step of 2 [m/s], total wind speeds are 15. These many wind speeds multiplied by 6 seeds per wind speed, DLC 1.2 alone accounts for 15 x 6 = 90 simulations.
For offshore turbines, Wind/Wave Directions are considered often aligned. If there are more alignment scenarios say 3 conditions, total number of load cases shall increase to 3 x 90 = 270. Based on "Design Load Basis Guidance for Distributed Wind Turbines" from NREL, calculating all load cases would require approximately 2,000 simulations.Other DLC are: start up (DLC 3.1) - simulates routine transition phases from a standstill or idling state up to normal power production speed, shutdown (DLC 4.1) - Simulates standard, non-emergency stops where the turbine pitches out of the wind and brakes to a standstill, and fault occurrence (DLC 2.4) - significantly less computationally costly as compared to DLC 1.2 and 6.4.
The IEC 61400-13 standard describes how to measure mechanical loads on wind turbine components, including measurement systems, data processing, and statistical convergence. The new IEC PAS 61400-60 standard describes the computational model validation process.
Input file format -- The first two columns are read in key + value input files. One of these two columns must contain the exact keyword, and the other must contain the value that corresponds to it. For example, an input line
20 TMax - Total run time (s)is equivalent to
TMax 20 - Total run time (s)
AeroDyn (a time-domain wind turbine aerodynamics module) input files:
Input files of OpenFAST also contain filepaths that reference other input files. These file paths are either relative to the current file, or, can be absolute paths. The reference information provided by IEA Wind Systems is available at github.com/IEAWindSystems. OpenFAST Turbine Models are available at github.com/natlabrockies/openfast-turbine-models. More information can be found in the regression test folder at github.com/OpenFAST/openfast.
Breakdown of the Model NameInflowWind Input Files: exceprts from openfast.readthedocs.io/.../inflowwind/appendix.html
TurbSim is a stochastic, full-field, turbulence simulator primarily for use with InflowWind-based simulation tools. TurbSim is a stochastic, full-field, turbulent-wind simulator. It uses a statistical model (as opposed to a physics-based model) to numerically simulate time series of three-component wind-speed vectors at points in a two-dimensional vertical rectangular grid that is fixed in space. To run TurbSim: turbsim turbsim.inp which starts TurbSim and opens the input file.
The numbering convention between TurbSim v1.50 and TurbSim v1.06.00 was by adding an extra period and increasing the digits to two. Thus, TurbSim v1.06.00 is newer than TurbSim v1.50. The source code for TurbSim is stored inside modules/ folder in the root folder of OpenFAST.TurbSim can generate several different sets of output files. They have the root name of the TurbSim input file, and their extensions indicate what type of files they are. Parameter TurbModel should be set to IECKAI which is compatible with OpenFAST. To change wind speed in TurbSim, under the "Meteorological Boundary Conditions", set the value of Uref to required value. Change this value to the desired input,
Sample input file for TurbSim can be found here. Set WrACT to False to not compute coherent turbulence (generating this requires Events.les or Events.dns or Events.xtm files available inside test folder of OpenFAST). Keeping RandSeed1 and RandSeed2 unchanged allows recreating the exact same turbulent wind speed field across multiple simulation runs. For user time series input file, refer this file. The profile input file is attached here. RandSeed2 = "RanLux" invokes Lüscher's level 3 high-quality "Luxury pseudo-random number" generator that performs better than other built-in random number generator options.
Setting AnalysisTime = 600 (for a 10-minute simulation) and UsableTime = "ALL" is recommended - AnalysisTime cannot be less than UsableTime. This lets OpenFAST/InflowWind treat the data as periodic, allowing you to run simulations longer than 600 seconds by looping the wind file seamlessly to account for startup transients. For every 10-minute simulation (600 seconds) evaluated, generate 700 [s] of wind in TurbSim, discarding the first 100 seconds of transient data during OpenFAST or aeroelastic simulation run to remove initial start-up solver artefacts.Standard Configuration Matrix (Per Wind Speed Bin)
| Analysis Type | IEC Minimum Required | Recommended for Accuracy | Simulation Length |
| Fatigue Loads (DEL) | 6 seeds | 10 – 12 seeds | 10 minutes (600 s) |
| Ultimate Loads (Extreme) | 6 seeds | 20 – 50 seeds | 10 minutes (600 s) |
| Site Specific / Complex Terrain | 6 seeds | 50+ seeds | 10 minutes (600 s) |
The random seeds only affect the turbulence fluctuations, not the means. Changing the seed number changes the sequence of random numbers, giving a completely different pattern of wind gusts, eddies, and turbulence while keeping the same overall statistical properties (like mean wind speed and turbulence intensity).

A loop count cannot be specified for TurbSim to automatically generate multiple random seeds within a single file. An external script is required to change seed integer per run inside the TurbSim Input File (.inp) and execute TurbSim multiple times.
Do not simply use 101, 234, 333, 468... for RandSeed1 to construct statistically independent realizations (such as pseudo-random number generator - PRNG). Use well-separated reproducible seeds, and a record mapping is required. rng = random.Random(13579) and seeds = [rng.randint(1, 2_147_483_646) for _ in range(6)] always generates same list of 6 random numbers. The built-in random module in Python is not designed for scientific or statistical applications requiring massive arrays of independent numbers though it is good enough of few tens of random numbers.The primary AeroDyn input file defines modeling options, environmental conditions (except freestream flow), airfoils, tower nodal discretization and properties, tower, hub, and nacelle properties, as well as output file specifications. AeroDyn consists of seven submodels: (1) rotor wake/induction, (2) blade airfoil aerodynamics, (3) tower influence on the fluid local to the blade nodes, (4) tower and nacelle drag, (5) aeroacoustics, (6) buoyancy on the blades, hub, nacelle, and tower (for MHK - Marine HydroKinetic turbines), and (7) added mass and fluid inertia on the blades and tower (for MHK turbines).
AeroDyn uses the SI system (kg, m, s, N). Angles are assumed to be in radians unless otherwise specified. No lines should be added or removed from the input files, except in tables where the number of rows is specified and comment lines in the AeroDyn airfoil data files. A tar file of sample input files available in User Documentation is attached here.AeroDyn does not simulate incoming wind by itself. At every time step, it requests the wind velocity vector at specific geometric coordinates (such as blade nodes and tower points) from InflowWind, which evaluates the ambient and disturbed flow field. During a simulation, OpenFAST passes the spatial coordinates of AeroDyn's computational nodes (blade elements, tower segments) to InflowWind. AeroDyn can output aerodynamic and kinematic quantities at up to nine nodes specified along the tower and up to nine nodes along each blade.
Wind Speed Binning: Divide operating wind speeds between cut-in and cut-out into 2 [m/s] bins e.g. 3, 5, 7 ... 25 [m/s]. Wind Seeds: Assign at least 6 random turbulence seeds per wind speed bin to account for stochastic variation. For offshore conditions, pair each wind speed bin with joint probability distributions for Significant Wave Height, Peak Period, and Directional Offset (DLC 1.2 / 2.4).
An air ramp load (or ramp wind profile) is not typically used directly for standard life-cycle fatigue calculations in OpenFAST. An air ramp load is strategically utilized within fatigue and design workflows to check how the controller handles transitions between operational regions. Improperly tuned control loops may create structural resonances or excessive blade pitching that could accelerate fatigue.
Ref: Sometimes ramp profile is used for Model Verification and Quick Benchmarking. This is to test new structural or aerodynamic sub-models without the computational expense of large turbulent wind grids. Application includes setting up initial structural parameters or debugging a new turbine variant, running a fast, deterministic ramp test ensures that the global sensitivities behave expectedly across a wide spectrum of wind speeds in a single simulation run.
Module called ElastoDyn is used for modeling the rotor, drivetrain, nacelle and tower in OpenFAST. It applies a modal representation of the blades and tower together with multibody representation of the nacelle and hub. The drivetrain is represented by means of a torsional linear spring-and-damper model in the low-speed shaft.

Module SubDyn is for modeling slender substructures such as jackets. It uses a linear finite-element beam framework, together with a Craig-Bampton dynamic system reduction and a static improvement method. This allows for a large reduction in the number of modes while retaining an accurate solution. The flexibility of the finite-element framework facilitates unconventional geometries. The structural model in SubDyn is purely linear (necessitating small deformations).
Reference OpenSource COntroller (ROSCO) - is a reference controller framework that facilitates design and implementation of wind turbine and wind farm controllers for fixed and floating offshore wind turbines.The version of the ROSCO controller can be found in the header of the DISCON.IN. The repository github.com/NatLabRockies/ROSCO contains many examples including the sample input files. One of the sample input files can be referenced here.
From user doc: "The ROSCO framework also includes a python based toolbox that primarily enables tuning the controllers. It is not necessary to run aeroelastic simulations or provide linearized state-space models to tune the controller to tune the controllers. The ROSCO controller is implemented in FORTRAN, while the remainder of the toolset is a mostly-python code base with a number of functionalities including parsing of OpenFAST input and output files."
Ref: The primary control objective of a wind turbine is to extract the maximum amount of power in regime 2 (when the wind speed is below the rated value) by operating the turbine at an optimum tip-speed ratio and to maintain the rated rotor speed in regime 3 (when wind speed is above the rated value). To achieve these primary control objectives, a controller consisting of a torque controller for regime 2 and a blade pitch controller for regime 3 is required to minimize abrupt thrust changes, maximum rotor thrust, and power fluctuations by incorporating tip-speed ratio tracking generator torque control, minimum pitch saturation, and a smoothing algorithm for near-rated operation. This is the ROSCO controller recognized as the industry-standard controller for wind turbines.
For installing only the ROSCO controller binary, download most recent tagged version release of the controller and point to them in their simulation tools (e.g. through DLL_FileName in the ServoDyn input file of OpenFAST). Other methods include Anaconda Download and Compile using CMake.
A standard file structure is used as an input to the ROSCO controller. This is, generically named as DISCON.IN file, though it can be renamed (in OpenFAST, this file is pointed to by DLL_InFile in the ServoDyn file). ROSCO requires the power and thrust coefficients for tuning control inputs and running the extended Kalman filter wind speed estimator. The Cp_Cq_Ct.txt (or similar) file contains the rotor performance tables that are necessary to run the ROSCO controller. This file can be located anywhere, the file needs to be pointed properly with the PerfFileName parameter in DISCON.IN file.
Running OpenFAST Simulations: To run an aeroelastic simulation with ROSCO, the input file DISCON.IN must point to a properly formatted Cp_Cq_Ct.txt file using the PerfFileName parameter. If called from OpenFAST, the main OpenFAST input points to the ServoDyn input, which points to the DISCON.IN file and the libdiscon.* dynamic library.
A wind turbine ontology is a structured semantic framework that defines the physical components, operational states, data streams, and relationships within a wind energy system.
Solution:
Use Python wrappers such as openfast-toolbox to auto-generate .fst files for every combination of [Wind Speed Bin x Turbulence Seed x Wave Condition / Direction]. Run batch simulations across parallel CPU threads. Discard the first 100 [s] of output to eliminate startup numerical transients, leaving a clean 600 [s] dataset per run. In test case, default inputs are 12 [m/s] for wind speed, 63 [m] blade length with tower height of 90 [m].Ref openfast.readthedocs.io/en/dev/source/working.html -- As a minimal working example, place these 4 files in working directory (where the OpenFAST executable is located and where terminal is at), the simulation can be run as: ./openfast Main.fst
DLC Index, Operational State, Hub Height, Rotor Diameter, Dynamic Wake, Wind Speed, Turbulent Intensity, Air Density, Temperature, Shear Exponent, Yaw Alignment, Water Density, Water Wave Condition, Wind-Wave Alignment, Sea Wave Current, Water Depth, Substructure Type, Thickness, Young Modulus, Shear Modulus, TurbSim WindType, Seed Number, Duration - Total Run Time, Integration Time Step,
Operational state can be: Normal production, Start-up, Shut-down, Parked, Idling, Fault, Grid loss, Emergency stop, Yaw misalignment, Extreme gust, Extreme wind shear, Extreme turbulence, Extreme operating gust
┌────────────────────────┐ ┌────────────────────────┐ ┌────────────────────────┐
│ TurbSim -> OpenFAST │ --> │ Design Load Cases │ --> │Set Channels in OutList │
└────────────────────────┘ └────────────────────────┘ └────────────────────────┘
│
.-----------------------------------------------------------------------------'
│
│ ┌────────────────────────┐ ┌────────────────────────┐ ┌────────────────────────┐
'--> │ Run for 600 seconds │ --> │ Python post-processing │ --> │ Select load channels │
└────────────────────────┘ └────────────────────────┘ └────────────────────────┘
│
.------------------------------------------------------------------------------'
│
│ ┌────────────────────────┐ ┌────────────────────────┐ ┌────────────────────────┐
'--> │ Remove 100[s]transients│ --> │ Count Rainflow cycle │ --> │ Get load ranges │
└────────────────────────┘ └────────────────────────┘ └────────────────────────┘
│
.------------------------------------------------------------------------------'
│
│ ┌────────────────────────┐ ┌────────────────────────┐ ┌────────────────────────┐
'--> │ Apply Wöhler curve │ --> │ Calculate Miner damage │ --> │ Calculate DEL │
└────────────────────────┘ └────────────────────────┘ └────────────────────────┘



Output from OpenFAST:
Output file names are determined dynamically based on the name of the primary input file. Summary output files are given a .sum extension. OpenFAST writes a .out (or binary .outb) file with time-series results for all requested output channels (total 43 columns as csv file). MATLAB, Python (e.g. the pyFAST or openfast_toolbox package) can be used to load, plot, and analyze loads, deflections, and power. The output produced in minimum example run is shown below.
Overall Flowchart: the following method to carry out simulations for any number of DLC saves only the output files. The inputs are updated in-place and overwritten. The default names of output generated after each run is moved and renamed based on DLC index and seed number. Note that the seed numbers are reused across speed bins but not within the bins. The statistical independence remains valid as (the random) numbers scale according to a completely different wind speed and turbulence energy spectrum resulting in altered wind velocity fluctuations and spatial phase structures.
Get OpenFAST Input Files and Variables
|
▼
Generate 6 Random Seeds (reused across speed bins)
|
▼
.------> iDLC = 1 to NDLC ----------------------------------------------------------.
| │ |
| ▼ |
| .---> iSeed = 1 to 6 |
| | │ |
| | ▼ |
| | Open TurbSim Input File ⇒ Update RandSeed1 Values --------. |
| | | |
| | .---------------------------Overwrite Input File-------------' |
| | | |
| | '----> Run TurbSim ⇒ Generate .bts |
| | │ |
| | Turbine Data--. ▼ |
| | Tower Data----|--⇒ Run OpenFAST ⇒ Output Files with Default Names |
| | Soil Data-----| │ |
| | Foundation----' ▼ |
| | Move and Rename Files |
| | | |
| | .---------------o----------------. |
| | | | |
| | ./Results/Out_{iDLC}_{iSeed}.out ./Logs/Log_{iDLC}_{iSeed}.sum |
| | | | |
| | '----------------o---------------' |
| | | |
| '--------iSeed = iSeed + 1 -------------------' |
'------ iDLC = iDLC + 1 ----- Update OpenFAST Input Files <-----------------------'
Python code to update the seed value in TurbSim input file and overwrite the file is given below.
def update_turbsim_seed(file_path, seed_number):
with open(file_path, 'r') as file:
lines = file.readlines()
# Loop through and find the line containing RandSeed1
for i, line in enumerate(lines):
if "RandSeed1" in line:
# Split the line by comments or spaces to preserve the descriptor
parts = line.split(maxsplit=1)
if parts and "RandSeed1" in parts[1]:
# Reconstruct the line: new seed value + rest of the original line
lines[i] = f"{seed_number:<14}{parts[1]}"
break
# Overwrite the existing file with modified lines
with open(file_path, 'w') as file:
file.writelines(lines)
Post-Processing
The post-processing activity on OpenFAST results include plotting such as time vs. output power or changing the format to suit a particular tool such as pyDatView.weio: Library to read and write files, in particular files used by the Wind Energy community. This library is for instance used by the GUI tool pyDatView to plot, export and compare these different files. It reads the input files as dictionary or Pandasdataframes. For example:
import weio
ED = weio.read('ElastoDyn.dat')
ED['HubMass'] = 10000 # changing hub mass value
ED.write('ElastoDyn_2.dat')
Jensen Empirical Model for Wake in Wind Farms: also known as 'Park' model. The main factor in Jensen model is Wake decay coefficient (determines how quickly ambient air mixes into the wake) which is decided by turbulence intensity. Jensen models is derived based on linear expanding wake assumption. A simple Python code to implement Jensen formula for estimation of power output from a wind farm can be accessed here. This is based on power-curve described below.
Reference: "Best Practices for Wake Model and Optimization Algorithm Selection in Wind Farm Layout Optimization"



A multi-objective cost-power formulation is required for optimal placement of wind turbines (determination of number of turbines and their positions - also known as Micro-Siting of Wind Turbines) towards achieving the target of maximization of power (AEP: Annual Energy Production) and minimization of cost which requires consideration of wake effects. Wind farm analysis software is required for real-time monitoring of power exchange between wind turbines and the power grid.

Not only the wake effect, the distance to the nearest residential building is important to not disturb the inhabitants by noise emission and shadow flickering of the turbine.
"Wake modeling and simulation" by Gunner C. Larsen et al.: The downstream advection of a wake from the emitting turbine describes a stochastic pattern known as wake meandering. It appears as an intermittent phenomenon, where winds at downwind positions may be undisturbed for part of the time, but interrupted by episodes of intense turbulence and reduced mean velocity as the wake hits the observation point. Summary of wake models can be found in this document.
"The revised FLORIDyn model: implementation of heterogeneous flow and the Gaussian wake" by Marcus Becker et al. "FLORIS and FLORIDyn are parametric models which can be used to simulate wind farms, evaluate controller performance and can serve as a control-oriented model." FLORIS model (FLOw Redirection and Induction in Steady state), Gebraad et al. FLORIDyn model: FLOw Redirection and Induction Dynamics - "The Flow redirection and induction dynamics model allows for the dynamic simulation of FLORIS wakes under heterogeneous conditions. Such conditions are changing wind speeds, directions, and ambient turbulence intensity over time and space. The model also includes wake interaction effects and an added turbulence model."Simulator for Offshore Wind Farm Applications (SOWFA) is an NREL-developed high-fidelity, CFD-based wind farm simulation tool built on OpenFOAM. It models wake dynamics using Actuator Line (ALM) or Actuator Disk (ADM) models to simulate turbine-flow interaction, wake propagation, and deflection within turbulent Atmospheric Boundary Layers (ABL).
NREL 5 MW Reference Wind Turbine: Definition of a 5 [MW] Reference Wind Turbine for Offshore System Development by J. Jonkman, S. Butterfield, W. Musial, and G. Scott
| Rating | 5 MW |
| Rotor Diameter | 126 m |
| Hub Height | 90 m |
| Drivetrain | High-speed, multiple-stage gearbox |
| Minimum, Rated Rotor Speed | 6.9 rpm, 12.1 rpm |
| Cut-In, Rated, Cut-Out Wind Speed | 3.0 m/s, 11.4 m/s, 25 m/s |
| Overhang, Shaft Tilt, Pre-cone | 5.0 m, 5.0°, 2.5° |
| Rotor Mass | 110,000 kg |
| Nacelle Mass | 240,000 kg |
| Tower Mass | 347,460 kg |
| Coordinate Location of Overall CM | (-0.2 m, 0.0 m, 64.0 m) |
Enercon E–18 wind turbine specifications
| Rotor Diameter | Hub Height | Cut–In Speed | Cut–Out Speed | Survival Wind Speed | Rated Power | Rated Wind Speed |
| 18 m | 28.5 m | 2.5 m/s | 25.0 m/s | 67.0 m/s | 80 kW | 12.0 m/s |
Betz Limit: Albert Betz determined in 1919 that a wind turbine can extract at most 59% of the energy that would flow through the cross section of the turbines. The Betz limit applies regardless of the design of the turbine. More recent work by Gorlov shows a theoretical limit of about 30% for propeller-type turbines. Actual efficiencies range from 10% to 20% for propeller-type turbines, and higher up to 35% for three-dimensional vertical-axis turbines like Darrieus or Gorlov turbines.
Lifecycle of a Wind Farm:
Site Identification and Screening > Wind Resource Assessment > Environmental and Regulatory Approvals > Micro-siting and Layout Optimization > Turbine Selection > Engineering and Design > Financial Modeling and Investment > Procurement and Construction > Grid Connection > Commissioning > Operations and Maintenance > Power Generation and Supply > Performance Optimization.Main risks to wind farms are: (1) Poor wind resource estimation (2) Grid constraints and/or curtailment and (3)Wake losses due to non-optimal layout
Wind resource assessment (WRA) is the process of estimating the wind power potential around an area. The output usually is wind resource map showing the variation of the mean wind speed or power density over that area , for a given height above ground level.The wind speed distributions combined with the power curve of chosen wind turbines is used to obtain power production map. Another output from WRA is the wind direction probability distribution (wind rose) which shows the frequency distribution of wind directions.To decide siting of individual wind turbines, an assessment is carried out as per IEC 61400-1. This provides estimates for each wind turbine site of the 50-year extreme wind, shear of the vertical wind profile, flow and terrain inclination angles, free-stream turbulence, wind speed probability distribution and added wake turbulence.
Wind Power Density [W/m2]: A measurement used to assess wind energy potential in an area, often categorized from Class 1 (poor) to Class 7 (superb). IEC categorizes wind environment based on average annual wind speed: the categories named Class I, II, III and IV are assigned to average annual wind speeds 10 [m/s], 8.5 [m/s], 7.5 [m/s] and 6.0 [m/s] respectively. International Electrotechnical Commission (IEC) also sets standards for the wind speeds each wind class must withstand.
Wind power density (strictly speaking power flux) is the maximum available wind power per unit area expressed as P = ½·ρ·v3 and is divided into seven categories on the basis of wind speed and annual wind power density.| Class of Wind Power | Range of Mean Wind Speed [m/s] | Wind Power Density [W/m2] | Resource Potential |
| 1 | 3.5 - 5.6 | 50 - 200 | Poor |
| 2 | 5.6 - 6.4 | 200 - 300 | Marginal |
| 3 | 6.4 - 7.0 | 300 - 400 | Fair |
| 4 | 7.0 - 7.5 | 400 - 500 | Good |
| 5 | 7.5 - 8.0 | 500 - 600 | Excellent |
| 6 | 8.0 - 8.8 | 600 - 800 | Outstanding |
| 7 | > 8.8 | > 800 | Superb |
The Levelized Cost of Energy (LCOE) is elaborated as a measure of the average net present value of the generated electricity for a particular system over its lifespan. LCOE = "Average total cost to build and operate a power plant over its lifetime" / "Total power generated by the power plant over that lifetime". The capacity factor of the wind turbine is defined as the dimensionless ratio of the "average power output" and the "rated power output" over a certain period of time (usually over one year).
Meteodyn Forecast is a wind power production forecasting service coupled with a web application for monitoring and visualizing the generated data. Output is very short-term such as minutes, hours or short-term such as days, weeks or mid-term: months, seasons. Additional output includes "wind speed and direction" and "production probability distribution" such as P10, P25.
Wind Modeling Approaches: (1) Time-Series Method - Uses measured hourly wind data, Computes power at each time step, Aggregate energy. Assumes steady-state wind at each time step. (2) Statistical Method (Weibull Distribution) - requires Shape parameter (k) - a dimensionless value between 1 and 3, Scale parameter (A) in [m/s], Integrates turbine power curve (turbine manufacturer power curves) over distribution.
The two–parameter Weibull probability distribution is frequently used in calculations to describe the wind speed histogram. The probability distribution function (PDF) of Weibull distribution is defined as: f(u) = [k/A] * (U/A)k-1 * e-(u/A)k. Weibull shape parameter k describes the variations of wind speed where small values of k shows higher variations in wind variables and large values of k indicate a rather constant wind speed. Corresponding cumulative probability function (integral of the PDF with respect to speed) for the Weibull distribution can be expressed as F(u) = 1 - e-(u/A)k.P50 represents the median estimated energy yield. It is the level of energy production that has a 50% probability of being exceeded (projected to surpass 50% of the time throughout the lifespan of the project) and a 50% probability of not being reached over a given period, typically a year. P90 is a more conservative estimate (90% probability of being exceeded) often used by banks and investors for financing to manage risk. The MWhr value for P90 will be lower than MWhr value for P50: P90 = P50 - 1.282 × σ where the total uncertainty = σ. Similarly, P75 = P50 - 0.6745 × σ where 1.282 and 0.6745 are standard normal distribution Z-scores, the value is 1.645 for P95.
Common Variables Used in AEP Calculations are (1) Wind Resource Variables: Mean wind speed, Wind direction, Air density, Turbulence intensity, Shear exponent, Veer - change in wind direction with height, (2) Turbine Variables: Power curve, Hub height, Rotor diameter, Cut-in speed, Rated speed, Cut-out speed and (3) Site Variables: Elevation, Roughness length, Terrain slope, Obstacle effects.
Major Sources of Uncertainty - (i) Wind Resource Assessment: Wind speed measurements, Anemometer calibration, Sensor mounting/orientation, Data recovery and quality, Long-term correction, Inter-annual variability (ii) Flow Modeling: Terrain complexity, Surface roughness, Wake modeling, Linear model assumptions (iii) Turbine Performance: Power curve accuracy, Turbine availability, Electrical losses, Blade degradation and (iv) Operational Losses: Wake losses, Curtailment, Grid losses, Environmental shutdowns.
Uncertainty Combination Methods: Root Sum Square - assumes uncertainties are independent, Monte Carlo Simulation - used when uncertainties are non-linear or correlated, Bayesian Methods - used when limited site measurements exist, historical operating data is available and prior information from nearby wind farms exists, Bootstrap Resampling - used to estimate statistical confidence intervals when limited data exists.
Comparison of Tools Related to Wind Energy
| S. No. | Feature | Name of the Tool | ||||||
| WAsP | Openwind | windPRO | FLORIS | OpenFAST | Meteodyn | WindFarmer | ||
| 00 | Licensing | Subscription | Subscription | Subscription | Open-source | Open-source | Subscription | Subscription |
| 01 | Fixed-bottom offshore | - | - | - | - | - | - | - |
| 02 | Floating offshore | - | - | - | - | - | - | - |
| 03 | Onshore: land-based | - | - | - | - | - | - | - |
| 04 | Wake modeling | Linear | - | - | - | - | - | - |
| 05 | Wake algorithm | Jensen | - | - | - | - | - | - |
| 06 | Coupling with CFD | EllipSysD | - | - | - | - | - | - |
| 07 | Curtailment analysis | - | - | - | - | - | - | - |
| 08 | GIS Mapping | - | - | - | - | - | - | - |
| 09 | AEP Calculation | - | - | - | - | - | - | - |
| 10 | API Available? | - | - | - | - | - | - | - |
| 11 | Scripting options | - | - | - | - | - | - | - |
| 12 | Input import formats | - | - | - | - | - | - | - |
| 13 | Output export formats | - | - | - | - | - | - | - |
| 14 | Time domain analysis | - | - | - | - | - | - | - |
| 15 | Fatigue load on Turbine | - | - | - | - | - | - | - |
| 16 | Operating System | Windows | - | - | - | - | - | - |
| 17 | Licensing type | Internet-based | - | - | - | - | - | - |
| 18 | Terrain analyses | Empirical, CFD | - | - | - | - | - | - |
Working example / workflow from WAsP help document:
A complete wind turbine siting operation requires activities starting with some measured wind data and ending up with a prediction of the power yield from erecting turbine(s) at a specific site. The problem statement could be like: "The company ABC plans to erect a multiple 2.5 [MW] wind turbines at location XYZ to meet peak demand of P [MW]. No wind measurements have been taken at the turbine site itself, but data have been collected from a nearby weather (meteorological) stations. The scope is to provide a prediction of the power yield from locating the wind turbines including the losses caused by the rotor wakes."As can be inferred, the proposed turbine site is completely different from the nearby meteorological station: the properties of the meteorological station itself will affect the wind data recorded there. In addition, the properties of the turbine site will have an effect on the way that the wind behaves near the turbine. It is also unlikely that the hub height of the turbine would be the same as the height of the anemometer installed at the meteorological station. What you need is a way to take the wind climate recorded at the meteorological station, and use it to predict the wind climate at the turbine site. That is what WAsP does.
Using WAsP, the recorded wind data the site-independent characterization of the local wind climate can be achieved by correcting for the site effects. This site-independent characterization of the local wind climate is called a wind atlas data set or generalised wind climate. WAsP can also be used to apply site effects to wind atlas data to produce a site-specific interpretation of the local wind climate. Providing a prediction of annual energy production rate will therefore be a two-stage process. First, the data from the meteorological station need to be analysed to produce a wind atlas, and then the resulting wind atlas needs to be applied to the proposed turbine site to estimate the wind power.
Inputs required are: vector map of the site, anemometer location on the map, anemometer height above ground level (a.g.l.), obstacles around the anemometer, the power production characteristics of the turbine, thrust curve characteristics of each turbine...GIS: Geographic Information System in Wind Energy
Excerpts from IBM.com: "GIS perform spatial analysis of geospatial datasets—consisting of vector data (points, lines and polygons) and raster data (cells with spatial information)—to produce connected visualizations. These maps, graphs, statistics and cartograms display geographical features like location, natural resources, streets and buildings as well as demographics. In its most recognizable form, a GIS visualization is what you see when you route a trip on Google Maps. Geographic information systems help organizations make sense of seemingly disconnected datasets."
GIS Workflow for Wind Farm Planning

GIS data: Vector format vs Raster format


Wind Rose Diagram

Architecture of a wind-farm optimizer: turbine-position optimization + wake calculation using PyWake
10-year wind time series
│
▼
Data quality control
│
├── Missing data
├── Invalid direction
├── Calm periods
├── Outliers
├── Measurement height
│
┌────────────┴────────────┐
│ │
▼ ▼
Wind direction Wind speed
│ │
└────────────┬────────────┘
▼
Wind climate model
│
┌────────────┴──────────┐
│ │
▼ ▼
Directional frequency Speed distribution
│ │
│ ┌───────┴───────┐
│ │ │
│ ▼ ▼
│ Weibull k,A Discrete speeds
│ │ │
└───────────────┴───────────────┘
│
▼
PyWake WindClimate
│
▼
Turbine Layout, Wake calculation
│
▼
Annual energy yield
│
▼
Genetic Algorithm
│
┌─────────┴─────────┐
│ │
Turbine positions Substation
│ │
└─────────┬─────────┘
▼
Objective
│
▼
Next GA generation
A sample Python code to generate Wind Rose diagram plot and Weibull Distribution curve is attached here. PyWake defines aep() in GWh and allows option "with_wake_loss=False" to calculate the corresponding no-wake result. This makes the wake-loss calculation straightforward. A sample data for year 2015 can be downloaded from here. A Python code to convert wind time-series CSV data into a PyWake-style directional Weibull wind resource and calculate wind-farm AEP is attached here.

Interview questions related to wind-yield engineer
Mesoscale Meteorology
As per atmos.uw.edu/academic/mesoscale.html: "Mesoscale meteorology is the study of atmospheric phenomena with typical spatial scales between 10 and 1000 km. Examples of mesoscale phenomena include thunderstorms, gap winds, downslope windstorms, land-sea breezes, and squall lines. Many of the weather phenomena that most directly impact human activity occur on the mesoscale."
SCADA: Supervisory Control and Data Acquisition
This is a method or system to monitor, gather, and process data real-time by directly interacting with devices such as sensors, valves, pumps, motors... through human-machine interface (HMI) software. It record events into a log file. For example, the power producers or original equipment manufacturers (OEM) can monitor the performance of their turbines real time. The Programmable Logic Controllers (PLC) are hardware devices used for real-time control of individual machines or assets, operating at a smaller scale. SCADA systems include both software and hardware providing the visualization and analysis of data real-time.For a container rotating cylindrical about its axis: the shape of the free surface is a parabola and fluid inside the rotating cylinder forms a paraboloid of revolution, whose volume is one-half of the volume of the "circumscribing cylinder". To calculate angular velocity at which the liquid at the center reaches the bottom of the cylinder just as the liquid at the curved wall reaches the top of the cylinder: ωspill = (2gH)0.5/R.
Ball in rotating tube

The centroid of a hemi-sphere is at 3R/8 from the base. Using this value, pressure on the left half of the ball = 1/2.ρF ω2(r-3R/8)2. The pressure on the right half of the ball = 1/2.ρF ω2(r+3R/8)2. Net force acting on the ball towards the axis of rotation = 1/2.ρF ω2(4.r.3R/8)2 × π*R2 where projected area = π*R2.
Net force due to fluid pressure towards axis of rotation, FF = 1/2.πR2.ρF ω2(r.3R/2) = 3/4πR3.ρF ω2r
Centrifugal force due to own mass of the ball, FB = 4/3.πR3.ρB ω2r
The position of the ball can be estimated using inequality FB ≤ FF. Will the ball get pushed towards inner radius for all densities of the ball? This method yielded incorrect conclusion as the pressure on the surface of spherical ball was assumed to be varying linearly with radius instead of parabolic variation as per formula p(r) = p(r = r0) + 1/2.ρFω2r2. The correct derivation of net fluid forces acting on the ball are given below:
Root or Lobe Pump and Blowers

The content on CFDyna.com is being constantly refined and improvised with on-the-job experience, testing, and training. Examples might be simplified to improve insight into the physics and basic understanding. Linked pages, articles, references, and examples are constantly reviewed to reduce errors, but we cannot warrant full correctness of all content.
All Rights Reserved - CFDyna.com
Template by OS Templates