Skip to content

WINDS.f90

Shujian2015 edited this page May 10, 2016 · 6 revisions

Main subroutines of WInDS. Some of the explanations come from the original Matlab WInDS source code.

Few things to mention:

  1. Data type: 5D array (Dimension index(13), Time index(1nt), Timestep stored(1nt_p), Radial index(1ns/nst), Blade index(1~nb))
  2. Angles are in radian, not degree.
  3. Aerodynamic center of blade element is set to be the one quarter because of the assumption of lifting-line theory.
  4. Since Matlab WInDS uses interpolated twist angle and trail chord to calculate trailing nodes positions, while the present work interpolates element nodes positions to obtain trailing nodes positions, there is slight difference of the lifting coefficient between them. However, the differences are usually less than 1% in some simple comparisons. The largest differences often occurs at the tip elements, however, these elements have relatively small area and contribute small force to the total. Hence it is reasonable to deal in this way.
  5. Currently, WInDS doesn't support multiple columns of airfoil table.

Subroutines:

WINDS_SetParameters

This subroutine is called by subroutine AD_Init. It sets the constants of Ramasamy-Leishman vortex model and some other parameters such as air density and gravity.

WINDS_Allocate

This subroutine is called by subroutine AD_Init. It allocates the variable arrays for WInDS.

WINDS_check_cutoff

This subroutine handles the variable to freeze and cutoff the far wake.

This feature was originally added to Matlab code by researchers in University of Stuttgart.

WINDS_Ground_Model

This subroutine allocates variable arrays for ground effects and calculates variables for ground model.

Theory is in Chapter 3 of Nathaniel deVelder's thesis.

WINDS_Kinematics

This subroutine computes the station locations of blades in the inertial coordinate system.

WINDS_Velocity

This subroutine computes the velocity contributions due to turbine and platform motions and freestream flow in the inertial and blade coordinate systems.

Theory is in Section 5.2 of Thomas Sebastian's dissertation.

WINDS_FVMInitial

This subroutine computes initial results for the first timestep via blade element and momentum method.

WINDS_FVM

This subroutine uses free vortex wake method to calculate the aerodynamic loads after first time-step.

WINDS_Shear_Model

This subroutine defines parameters used in shear model.

Theory is in Section 3.1 of Nathaniel deVelder's thesis

Aero_Loads

This subroutine is called in WINDS_FVM and it calculates the aerodynamic loads.

BEM

This subroutine is called in WINDS_FVMInitial and it calculates coefficient of lifting and aerodynamic loads in first time-step via blade element and momentum method. It is modified from the original AeroDyn code.

Theory is in Section 4.2 of Thomas Sebastian's dissertation.

BiotSavart

This subroutine is called in InducedVelocity, Induced Velocity Ground Mirror and Induced Velocity Ground Panels. It computes the induced velocity at a point in space because of the influence of defined vortex filaments.

Theory is in Section 4.6.1 and 5.3.2 of Thomas Sebastian's dissertation.

CLCD_FVM

This subroutine looks up the coefficient of lifting and drag from airfoil data. It is modified from the original AeroDyn code.

CUR_2_PREV

This subroutine copies wake and velocity from "current" timestep to "previous" .

InducedVelocity

This subroutine calculates the induced velocity via Biot-Savart Law.

Induced_Velocity_Ground_Mirror

This subroutine calculates the induced velocity of ground effects (method of images) via Biot-Savart Law.

Induced_Velocity_Ground_Panels

This subroutine calculates the induced velocity of ground effects (panels method) via Biot-Savart Law.

KuttaJoukowski

This subroutine computes the bound vortex filament strength via Kutta-Joukowski theorem, solving via fixed-point iteration.

Theory is in Section 4.6.2.1 and 5.4.3 of Thomas Sebastian's dissertation.

NUM_ADVECT

This subroutine numerically convects wake nodes to next timestep.

These are several methods can be used: 2nd-order Runge-Kutta and 4th-order Runge-Kutta.

Theory is in Section 5.4.2 of Thomas Sebastian's dissertation.

The stability of those methods are discussed in Section 5.2 of Nathaniel deVelder's thesis.

Shear

This subroutine calculates the inflow velocity of all points based on selected shear model

Shear_calc

This subroutine calculates the inflow velocity of one point based on selected shear model

TOWER_SHADOW

Not implemented in Fortran version yet..

Theory is described in: Lackner, Matthew A., Nathaniel deVelder, and Thomas Sebastian. "On 2D and 3D potential flow models of upwind wind turbine tower interference." Computers & Fluids 71 (2013): 375-379.

UPDATE_WAKE

This subroutine updates bound vortices and latest trailed and shed vortices.

VCORE

This subroutine computes the effective vortex filament core size using the Ramasamy-Leishman model and filament stretching.

Theory is in Section 5.3.2 of Thomas Sebastian's dissertation.

Clone this wiki locally