Output#

This command output can either be a main command block or a sub command block within the hawc_dll and type2_dll command blocks. In the following paragraphs, two options are introduced: the only option and the label option.

Only option#

For all outputs which return multiple channels, the user has the option to specify only a single channel which will be written to the output. This is done using the keyword “only” at the end of the output specification. This option is only available for outputs that add multiple channels to the output file. An example is given below:


constraint bearing1 shaft_rot 2 only 2;

The bare output command constraint bearing1 shaft_rot 2 adds two output channels to the output: the bearing angle and the angular velocity. The only option in this case allows us to only save the output of the second channel to the output file. This option is useful when you want to limit the scope of the output file to only contain a very specific set of channels.

Label option#

When the check mark is ’yes’ in only label it is possible to specify a label that is appended to the sensor description in the sensor list file. Normal text after the # symbol is used as a label. An example of this could be


dll inpvec 1 1 # This is a dummy label;

In this example the sensor description will be:


DLL : 1 inpvec : 1 This is a dummy label

Custom sensor name, unit and description#

It is also possible to overwrite the name, unit and description of a sensor. This option applies to all sensors. Names, units and descriptions are specified using the $name(), $unit() and $desc() options, which must be placed after the output line, either before or after the # symbol, e.g.:


dll inpvec 1 1 # $name(MySensorName) $unit(MySensorUnit) $desc(MySensorDescription);

Derived sensors#

With the $calc() option, the output value of output sensors can be manipulated by various math operations. This feature can be used e.g. to offset time sensor, or to scale forces from kN to N, or to do more complex operations. The $calc() must be placed after the output line, either before or after the # symbol, e.g.


dll inpvec 1 1 $calc(*1000) # This is a dummy label;

The operation string inside $calc() is composed of sets of:

1

Operation key describing the math operation (e.g. ’-’,’+’,’*’,’/’),

2

then a (optional, dependent on operation ) number <val>,

3

and then ’=’ character (to separate operations)(this can be omitted for last operation)

E.g. $calc(-100=*5) added to sensor line x will return (x-100)*5 in the x sensor output.

Other math operations available (other than -+*/) are:

power,

$calc(pow<val>)

:

returns x\<val>

signed power,

$calc(sgnpow<val>)

:

returns sign(x) * abs(x\<val>)

absolute,

$calc(abs)

:

returns abs(x)

sine,

$calc(sin)

:

returns sin(x)

cosine,

$calc(cos)

:

returns cos(x)

tangens,

$calc(tan)

:

returns tan(x)

Commands used with results file writing#

When the output command is used for output files (the most normal purpose) some information regarding file name and format needs to be given.

Obl

Command

Explanation

*

filename

1. Filename incl. relative path to outputfile without extension (example ./res/output)

data_format

ASCII or compressed binary output can be chosen. Default is the

ASCII format if nothing is specified.

1. format ( ’hawc_ascii’=ASCII format,

’hawc_binary’=compressed binary format,

’flex_int’=compressed binary format,

’gtsdf’=General time series data format (hdf5 based compressed binary),

’gtsdf64’=General time series data format (hdf5 based binary))

2. optional for ’flex_int’, time [s] to subtract from the time channel.

buffer

Buffer size in terms of time steps. When the buffer is full the data are

written to data file. Only used together with the ’hawc_ascii’,’ gtsdf’ and ’gtsdf64’ formats. Default is 3000 time steps

1. 1. buffer size

deltat

Time interval between outputs [s]. If ‘deltat’ is smaller than simulation time step, output is made each time step.

output_initial_condition

‘1’ Write the output starting from time 0.0. The optional “output / time” start will be ignored. This option is particularly useful together with the static solver, since, for example, “orientation / base / mbdy_ini_rotvec_d1” is only applied at the first time step. This command must be written before “time”.

time

Time start \(t_{0}\) and stop \(t_{1}\) for output is defined. Default is the entire simulation length if nothing is specified. By default, the output is written starting from the second time step. That is, the initial condition is not outputted.

2. \(t_{0}\)

3. \(t_{1}\)

File format of HAWC_ASCII files#

Results are written to an ascii formatted data file with the name assigned to the filename variable (eg. filename ./res/resfil ). The data file will have the extension .dat as a standard. The description of the sensors in the data file is given in another textfile with same filename as the data file but the extension .sel. An example could be: ./res/resfil.dat and ./res/resfil.sel.

In the .sel-file, line number 9 specifies the following parameters: Number of scans, Number of sensors, Duration of output file, Data format (ASCII/BINARY). Example:


10 96 20.000 ASCII

From line number 13 and onwards, the sensors are specified with the following information: Sensor number, Variable description, unit, Long description. Example:


5   bea1 angle_speed        rad/s   pitch1 angle speed

Full example of the .sel file:


____________________________________________________________________________
  Version ID : HAWC2MB 4.3w
                              Time : 14:23:28
                              Date : 22:11.2006
____________________________________________________________________________
  Result file : ./res2_rev0/case41c_nohydro.dat
____________________________________________________________________________
  Scans  Channels  Time [sec]   Format
   4500   199     90.000    ASCII

 Channel  Variable Description

   1   Time              s     Time
   2   bea1 angle           deg    shaft_rot angle
   3   bea1 angle_speed        rpm    shaft_rot angle speed
   4   bea1 angle           deg    pitch1 angle
   5   bea1 angle_speed        rad/s   pitch1 angle speed
   6   bea1 angle           deg    pitch2 angle
   7   bea1 angle_speed        rad/s   pitch2 angle speed
   8   bea1 angle           deg    pitch3 angle
   9   bea1 angle_speed        rad/s   pitch3 angle speed
____________________________________________________________________________

File format of HAWC_BINARY files#

In this file format results are written to a binary unformatted data file with the name assigned to the filename variable (eg. filename ./res/resfil ). The data file will have the extension .dat as a standard. The description of the sensors in the data file is given in another textfile with same filename as the data file but the extension .sel. An example could be: ./res/resfil.dat and ./res/resfil.sel.

The data are scaled to standard 2-byte integers, with a range of 32000 using a scalefactor. The scalefactor is determined for each output sensor

\[s = \frac{\max(abs{\mathit{max}}, abs{\mathit{min}})} {32000}\]

where \(\mathit{max}\) and \(\mathit{min}\) are the largest and lowest number in the original data for the sensor. These scale factors are written in the end of the accompanying .sel file. When converting a binary number to the actual number, it’s just a matter of multiplying the binary numbers of a sensor with the corresponding scalefactor.

In the accompanying text file, which has the extension .sel-file, information of the content in the datafile is stored. In line number 9 the following parameters are specified: Number of scans, Number of sensors, Duration of output file, Data format (ASCII/BINARY). Example:


10 96 20.000 ASCII

From line number 13 and onwards, the sensors are specified with the following information: Sensor number, Variable description, unit, Long description. Example:


5   bea1 angle_speed        rad/s   pitch1 angle speed

From line number 9+nsensors+5 and upwards the scalefactors are written.

Full example of the .sel file:


____________________________________________________________________________
  Version ID : HAWC2MB 4.3
                              Time : 14:23:28
                              Date : 22:11.2006
____________________________________________________________________________
  Result file : ./res2_rev0/case41c_nohydro.dat
____________________________________________________________________________
  Scans  Channels  Time [sec]   Format
   4500    9     90.000    ASCII

 Channel  Variable Description

   1   Time              s     Time
   2   bea1 angle           deg    shaft_rot angle
   3   bea1 angle_speed        rpm    shaft_rot angle speed
   4   bea1 angle           deg    pitch1 angle
   5   bea1 angle_speed        rad/s   pitch1 angle speed
   6   bea1 angle           deg    pitch2 angle
   7   bea1 angle_speed        rad/s   pitch2 angle speed
   8   bea1 angle           deg    pitch3 angle
   9   bea1 angle_speed        rad/s   pitch3 angle speed
____________________________________________________________________________
Scale factors:
  1.56250E-04
  5.61731E-03
  4.41991E-04
  1.00000E+00
  1.00000E+00
  1.00000E+00
  1.00000E+00
  1.00000E+00
  1.00000E+00

An important thing to notice is that in the binary data file all sensors are stored sequentially, i.e. all data for sensor 1, all data for sensor 2, etc. This way of storing the data makes later reading of a sensor extra fast since all data for a sensor can be read without reading any data for the other sensor.

A small matlab code for reading the binary HAWC2 format can be seen below.


function sig = ReadHawc2Bin(FileName,path);







ThisPath = pwd; cd(path(1,:))


fid = fopen([FileName,'.sel'], 'r'); fgets(fid); fgets(fid);
fgets(fid); fgets(fid); fgets(fid); fgets(fid); fgets(fid);
fgets(fid);
tline = fscanf(fid,'%d');
N = tline(1); Nch = tline(2); Time = tline(3); fclose(fid);
ScaleFactor = dlmread([FileName,'.sel'],'',[9+Nch+5 0 9+2*Nch+4
0]);


fid = fopen([FileName,'.dat'], 'r'); sig =
fread(fid,[N,Nch],'int16')*diag(ScaleFactor); fclose(fid);

cd(ThisPath)

File format for gtsdf and gtsdf64 files#

The file formats and reading and writing examples of the gtsdf and gtsdf64 file types and are described here: {https://gitlab.windenergy.dtu.dk/toolbox/WindEnergyToolbox/blob/master/wetb/gtsdf/General

A reference Python implementation to read and write gtsdf files is available in the open source Wind Energy Toolbox: https://​gitlab​.windenergy​.dtu​.dk​/toolbox​/WindEnergyToolbox​/blob​/master​/wetb​/gtsdf​/gtsdf​.py

Hub- and nacelle-lidar sensors#

The hub- and nacelle-lidar sensors are single-beam lidars that were implemented and updated, respectively, in HAWC2 version 13.1 (see Soto Sagredo et al. [SotoSagredoRL23]). Both sensors take into account tower motion when calculating the line-of-sight velocities.

The nacelle-lidar sensor is a continuous-wave (CW) lidar, which can be offset from the rotor to a desired initial position. The hub-lidar sensor is a pulsed lidar and is positioned at the rotor center, but rotates with the rotor. Both sensors translate and rotate with the nacelle. In addition to the weighted line-of-sight velocity, the outputs of the hub lidar sensor include the line-of-sight velocity without weighting as well as the three turbulence components at the measurement point. For more details on the two lidar sensors, please read Soto Sagredo et al. [SotoSagredoRL23].

mbdy (main body output commands)#

Command 1

Command 2

Explanation

Label option

mbdy

forcevec

\(F_x\), \(F_y\), \(F_z\) shear force vector, see definition in figure 2.

yes

1. Main_body name

2. Element number

3. Node number on element (1 or 2)

4. Main_body name of which coordinate system is used for output. “global” and “local” can also be used. Local is around local beam main bending directions.

mbdy

momentvec

\(M_x\), \(M_y\), \(M_z\) moment vector, see definition in figure 2.

yes

1. Main_body name

2. Element number

3. Node number on element (1 or 2)

4. Main_body name of which coordinate system is used for output. “global” and “local” can also be used. Local is around local beam main bending directions.

mbdy

forcemomentvec_interp

\(F_x\), \(F_y\), \(F_z\), \(M_x\), \(M_y\), \(M_z\) interpolated shear force and moment vector defined to output. This sensor can write out an interpolated set of cross sectional forces and moments independent of the node discretization. It can also write out in local deformed c2_def coordinates and therefore breaks the limit of using element coordinates.

yes

yes

1. Main_body name

2. Position of location outputted: ’c2def’ or ’default’ (default = elastic center).

3. Name of mbdy used for output coordinate system: mbdy_name, ’global’, ’local_aero’ or ’local_element’

4. Distance along c2_def to output location

5. Sign multiplied to output: 1.0 or -1.0

mbdy

state

Vector with 3 components of either position, velocity or acceleration of a point on an element defined to output. If ’acg’ is used, the acceleration including the gravity contribution is written.

yes

1. State: ’pos’, ’vel’, ’acc’, ’acg’

(“pos”=position, “vel”=velocity, “acc”=acceleration)

2. Main_body name

3. Element number

4. Relative distance from node 1 to node 2 on element

5. Main_body name of which coordinate system is used for output. “global” can also be used.

mbdy

state_at

Vector with 3 components of either position, velocity or acceleration of a point on an element defined to output. The point is offset from the element z axis by an x and y distance in element coordinates.

yes

1. State: ’pos’, ’vel’, ’acc’, ’acg’

2. Main_body name

3. Element number

4. Relative distance from node 1 to node 2 on element

5. Main_body name of which coordinate system is used for output. “global” can also be used.

6. x-coordinate offset [m]

7. y-coordinate offset [m]

mbdy

state_at2

Vector with 3 components of either position, velocity or acceleration of a point on an element defined to output. The point is offset from the c2_def centerline z axis by an x and y distance in local c2def centerline coordinates.

yes

1. State: ’pos’, ’vel’, ’acc’, ’acg’

2. Main_body name

3. Element number

4. Relative distance from node 1 to node 2 on element

5. Main_body name of which coordinate system is used for output. “global” can also be used.

6. x-coordinate offset [m]

7. y-coordinate offset [m]

mbdy

state_rot

Vector with components of either axis and angle (angle [rad], \(r_{1}\),\(r_{2}\),\(r_{3}\)), euler parameters (quaternions \(r_{0}\),\(r_{1}\),\(r_{2}\),\(r_{3}\)), euler angles, rotation velocity (

yes

-vector) or rotation acceleration (

-vector) of a point on an element defined to output.

For the sensor eulerang_xyz a set of euler angles are created based on the orientation matrix. Be aware that the method used is only valid for rotations in the intervals

(\(\theta_{x}\) ±180°, \(\theta_{y}\) ±90°, \(\theta_{z}\) ±180°). The method proj_ang can be used to see how much a blade tip rotates around the pitch axis, but be aware that the angles are how the element is oriented and not necesarily how the local chord is rotated. With the command proj_ang the angles are obtained from the local element orientation \(3 \times 3\) matrix \(T_e\), seen from the chosen coordinate system using the \(\arctanTwo\) function (\(\mathrm{rot}_x = \arctanTwo(T_e(2,3), T_e(3,3))\), \(\mathrm{rot}_y = \arctanTwo(T_e(3,1), T_e(1,1))\), \(\mathrm{rot}_z = \arctanTwo(T_e(1,2), T_e(2,2))\)).

1. State : ’axisangle’, ’eulerp’, ’eulerang_xyz’, ’omega’, ’omegadot’ or proj_ang

2. Main_body name

3. Element number

4. Relative distance from node 1 to node 2 on element

5. Main_body name of which coordinate system is used for output. “global” can also be used.

mbdy

statevec_new

This sensor writes out the position vector and orientation vector for a point on the structure. The orientation vector is a direction vector to which the structure is rotated and the vector length is the size of this rotation. There is a direct relation between this vector and the 3x3-orientation matrix, but it is easier to overview as each single element corresponds to a 2D projected rotation (rot_x, rot_y, rot_z).

yes

Furthermore it can write out the orientation of the local deformed c2_def coordinates system and therefore breaks the limit of only looking at element orientations.

1. Main_body name

2. Position of location outputted: ’c2def’ or ’default’ (default = elastic center).

3. Name of mbdy used for output coordinate system: mbdy_name or ’global’

4. State: ’elastic’ or ’absolute’. Elastic means that initial location is subtracted from the results

5. Distance along c2_def to output location

6. Sign multiplied to output: 1.0 or -1.0

7. x-coordinate offset from center to a point where location is outputted (local c2def coo) [m]

8. y-coordinate offset from center to a point where location is outputted (local c2def coo) [m]

mbdy

wind

This sensor writes out the global or relative wind velocity components for a point on a main body. The measurement point follows the structure rigid body motions and elastic deflections.

yes

This output channel can be important if the wind measurement point moves long distances during the analysis. For example floating wind turbines can move dozens meters during a simulation.

1. Main_body name

2. Element number on the main body

3. Relative distance from node 1 to node 2 on the element

4. Wind velocity measurement method: ’global’ or ’relative’. Relative means the point velocity is substracted from the global wind speed

5. x-coordinate offset of the point [m]

6. y-coordinate offset of the point [m]

This illustration shows how the sensors are placed on an element in terms of local nodes and relative distance.

_images/main_body_blade_output.png
_images/forcevec_and_momentvec.svg

The “mbdy forcevec” and “mbdy momentvec” sensor definitions depend on argument 3, “node number on element”, which must be 1 or 2.
For node number 1 (element start node), the sensors output the forces and moments (blue in figure) that the element and the succeeding structure (excluding concentrated masses and external forces attached to the node) applies to the preceding structure.
For node number 2 (element end node), the sensors output the forces and moments (red in figure) that the succeeding structure (including concentrated masses and external forces attached to the node) applies to the element and the preceding structure.
#

Constraint (constraint output commands)#

bearing1#

Command 1

Command 2

Explanation

Label option

constraint

bearing1

Bearing angle and angle velocity defined to output

No

1. bearing1 name

2. unit of output

(1:angle [unit=rad, range -\(\pi\):\(\pi\)], vel [rad/s];

2:angle [unit=deg, range 0:360], vel [rpm];

3:angle [unit=deg, range 0:360], vel [rad/s]);

4:angle [unit=deg, range -180:180], vel [rad/s];

5:angle [unit=deg, range -180:180], vel [deg/s])

bearing2#

Command 1

Command 2

Explanation

Label option

constraint

bearing2

Bearing angle and angle velocity defined to output

No

1. bearing2 name

2. unit of output

(1:angle [unit=rad, range -\(\pi\):\(\pi\)], vel [rad/s];

2:angle [unit=deg, range 0:360], vel [rpm];

3:angle [unit=deg, range 0:360], vel [rad/s]);

4:angle [unit=deg, range -180:180], vel [rad/s];

5:angle [unit=deg, range -180:180], vel [deg/s])

bearing3#

Command 1

Command 2

Explanation

Label option

constraint

bearing3

Bearing angle and angle velocity defined to output

No

1. bearing3 name

2. unit of output

(1:angle [unit=rad, range -\(\pi\):\(\pi\)], vel [rad/s];

2:angle [unit=deg, range 0:360], vel [rpm];

3:angle [unit=deg, range 0:360], vel [rad/s]);

4:angle [unit=deg, range -180:180], vel [rad/s];

5:angle [unit=deg, range -180:180], vel [deg/s])

bearing4#

Rotation angle and velocity of the two axis perpendicular to the cardan shaft torsion axis are outputted.

Command 1

Command 2

Explanation

Label option

constraint

bearing4

Bearing angle and angle velocity defined to output

No

1. bearing4 name

2. unit of output

(1:angle [unit=rad, range -\(\pi\):\(\pi\)], vel [rad/s];

2:angle [unit=deg, range 0:360], vel [rpm];

3:angle [unit=deg, range 0:360], vel [rad/s]);

4:angle [unit=deg, range -180:180], vel [rad/s];

5:angle [unit=deg, range -180:180], vel [deg/s])

wind (wind output commands)#

Command 1

Command 2

Explanation

Label option

wind

free_wind

Wind vector \(V_x, V_y, V_z\), (wind as if the turbine didn’t exist).

yes

1. Coordinate system (1=global, 2=non rotating rotor coordinates (x always horizontal, y always out-of-plane))

2. x-pos (global coo)

3. y-pos (global coo)

4. z-pos (global coo)

wind

free_wind_center_pos0

Wind vector \(V_x, V_y, V_z\), (wind as if the turbine didn’t exist).

yes

1. Coordinate system (1=global, 2=non rotating rotor coordinates (x always horizontal, y always out-of-plane)) _center_pos0

wind

free_wind_hor

Horizontal wind component velocity [m/s] and direction [deg] defined to output. Dir=0 when wind equals y-dir.

yes

1. Coordinate system (1=global, 2=non rotating rotor coordinates (x always horizontal, y always out-of-plane))

2. x-pos (global coo)

3. y-pos (global coo)

4. z-pos (global coo)

wind

free_wind_- hor_center_pos0

Horizontal wind component velocity [m/s] and direction [deg] defined to output. Dir=0 when wind equals y-dir.

yes

1. Coordinate system (1=global, 2=non rotating rotor coordinates (x always horizontal, y always out-of-plane))

wind

free_wind_shadow

As sensor “free_wind”, but with tower shadow included.

Yes

Yes

1. Coordinate system (1=global, 2=non rotating rotor coordinates (x always horizontal, y always out-of-plane))

2. x-pos (global coo)

3. y-pos (global coo)

z-pos (global coo)

wind_wake (wind wake output commands)#

Note that the wind_wake output command can only be used in simulation where wakes have been defined.

Command 1

Command 2

Explanation

Label option

wind_wake

wake_pos

Position of the wake deficit center after the meandering proces to the downstream end position. x,y and z position is written in meteorological coordinates \((x,y,z)_M=(u,v,w)\) with origo in the position defined with center_pos0 in the general wind commands.

Yes

1. wake source number

dll (DLL output commands)#

Command 1

Command 2

Explanation

Label option

dll

inpvec

Value from DLL input vector is defined to output

yes

1. DLL number

2. array index number

dll

outvec

Value from DLL output vector is defined to output

yes

1. DLL number

2. array index number

dll

hawc_dll

Special output commands for the “hawc_dll” format. With this command the dll name can be used in the output definitions

yes

1. string. Reference name of the dll given in the begin – end hawc_dll input definitions.

2. string. “outvec” or “inpvec” can be used. Same definition as previously written above.

3. Channel number in the in or out going array.

dll

type2_dll

Special output commands for the “type2_dll” format. With this command the dll name can be used in the output definitions

yes

1. string. Reference name of the dll given in the begin – end hawc_dll input definitions.

2. string. “outvec” or “inpvec” can be used. Same definition as previously written above.

3. Channel number in the in or out going array.

dll

sensor_id

Name of sensor_id defined for other output sensor

1. Sensor number if sensor id refers to a vector

hydro (hydrodynamic output commands)#

Command 1

Command 2

Explanation

Label option

hydro

water_surface

Water surface level at a given horizontal location is defined to output (global coordinates). Unit [m]

No

1. x-pos

2. y-pos

hydro

water_vel_acc

Water velocity \(V_{x}\), \(V_{y}\), \(V_{z}\), and acceleration \(A_{x}\), \(A_{y}\), \(A_{z}\) vectors defined to output. Unit [m/s] and [m/s2].

No

1. x-pos

2. y-pos

3. z-pos

hydro

water_pressure

Dynamic water pressure from Bernoulli’s equation, in a given hydro element calculation point. Unit [MPa].

No

1. hydro element number

2. radius (in [m], axial distance from 1st node)

hydro

fm

Radial inertia force (FK + hydro mass) \(F_{x}\), \(F_{y}\), \(F_{z}\) contribution from Morisons formula in a given calculation point. Unit [kN/m]. Note: added mass is by default computed in the right hand side of the EOM, so the hydro mass term is only accounting for the fluid acceleration term.

No

1. hydro element number

2. radius (in [m], axial distance from 1st node)

3. coordinate system (1=global, 2=local hydro sec coo)

hydro

fd

Radial drag force \(F_{x}\), \(F_{y}\), \(F_{z}\) contribution from Morisons formula in a given calculation point. Unit [kN/m]

No

1. hydro element number

2. radius (in [m], axial distance from 1st node)

3. coordinate system (1=global, 2=local hydro sec coo)

hydro

fb

Buoyancy force (distributed along element) \(F_{x}\), \(F_{y}\), \(F_{z}\) contribution in a given calculation point. Unit [kN/m]

No

1. hydro element number

2. radius (in [m], axial distance from 1st node)

3. coordinate system (1=global, 2=local hydro sec coo)

hydro

mb

Buoyancy moment (distributed along element) \(M_{x}\), \(M_{y}\), \(M_{z}\) contribution in a given calculation point. Unit [kNm/m]

No

1. hydro element number

2. radius (in [m], axial distance from 1st node)

3. coordinate system (1=global, 2=local hydro sec coo)

hydro

cfb

Concentrated axial buoyancy force \(F_{x}\), \(F_{y}\), \(F_{z}\) contribution in a given calculation point. Unit [kN]. Note: in case of auto hydro sections =0, if the specified radius is not a hydro or structural node, the sensor will output the nearest node information.

No

1. hydro element number

2. radius (in [m], axial distance from 1st node)

3. coordinate system (1=global, 2=local hydro sec coo)

hydro

cmb

Concentrated buoyancy moment \(M_{x}\), \(M_{y}\), \(M_{z}\) contribution in a given calculation point. Unit [kNm]. Note: in case of auto hydro sections =0, if the specified radius is not a hydro or structural node, the sensor will output the nearest node information.

No

1. hydro element number

2. radius (in [m], axial distance from 1st node)

3. coordinate system (1=global, 2=local hydro sec coo)

hydro

cfm

Concentrated force from axial hydro mass \(F_{x}\), \(F_{y}\), \(F_{z}\) contribution in a given calculation point. Unit [kN]. Added mass is by default computed in the right hand side of the EOM, so the hydro mass term is only accounting for the fluid acceleration term, and computed as \(\rho V_{ref} C_{a,axial} water\_acc\), with \(V_{ref}\) taken as half volume of sphere defined by the local width (of the specified element radius) as diameter. Note: in case of auto hydro sections =0, if the specified radius is not a hydro or structural node, the sensor will output the nearest node information.

No

1. hydro element number

2. radius (in [m], axial distance from 1st node)

3. coordinate system (1=global, 2=local hydro sec coo)

hydro

cfdrag

Concentrated force from axial damping \(F_{x}\), \(F_{y}\), \(F_{z}\) contribution in a given calculation point. Unit [kN]. Note: in case of auto hydro sections =0, if the specified radius is not a hydro or structural node, the sensor will output the nearest node information.

No

1. hydro element number

2. radius (in [m], axial distance from 1st node)

3. coordinate system (1=global, 2=local hydro sec coo)

hydro

fdyn

Dynamic wave pressure force (distributed) \(F_{x}\), \(F_{y}\), \(F_{z}\) contribution in a given calculation point. Unit [kN/m]

No

1. hydro element number

2. radius (in [m], axial distance from 1st node)

3. coordinate system (1=global, 2=local hydro sec coo)

hydro

cfdyn

Concentrated axial dynamic wave pressure force \(F_{x}\), \(F_{y}\), \(F_{z}\) contribution in a given calculation point. Unit [kN]. Note: in case of auto hydro sections =0, if the specified radius is not a hydro or structural node, the sensor will output the nearest node information.

No

1. hydro element number

2. radius (in [m], axial distance from 1st node)

3. coordinate system (1=global, 2=local hydro sec coo)

hydro

secfrc

Total hydro distributed force \(F_{x}\), \(F_{y}\), \(F_{z}\) contribution in a given calculation point. Unit [kN/m]

No

1. hydro element number

2. radius (in [m], axial distance from 1st node)

3. coordinate system (1=global, 2=local hydro sec coo)

hydro

secmom

Total hydro distributed moment \(M_{x}\), \(M_{y}\), \(M_{z}\) contribution in a given calculation point. Unit [kNm/m]

No

1. hydro element number

2. radius (in [m], axial distance from 1st node)

3. coordinate system (1=global, 2=local hydro sec coo)

hydro

cfrc

Total hydro axial concentrated force \(F_{x}\), \(F_{y}\), \(F_{z}\) contribution in a given calculation point. Unit [kN]. Note: in case of auto hydro sections =0, if the specified radius is not a hydro or structural node, the sensor will output the nearest node information.

No

1. hydro element number

2. radius (in [m], axial distance from 1st node)

3. coordinate system (1=global, 2=local hydro sec coo)

hydro

totfrc/totmom

Total hydro force/moment from integration of distributed forces and moment over the hydro element. Total \(F_x/M_{x}\), \(F_y/M_{y}\), \(F_z/M_{z}\). Unit [kN/kNm]. The sensor can be used for individual hydro elements by specifying the required hydro element number below; the reference point for the moment is then the location of first hydro section. Or the sensor can be the sum over all hydro elements by specifying ’all’ below; the reference point for the moment is then the global origin. All forces and moments are output in global coordinates

No

1. hydro element number OR ’all’

2. coordinate system in which to output the forces or moments (mbdy_name or ’global’). Beware that the coordinate system for the moments is also specifying the origin.

External forces#

Command 1

Command 2

Explanation

Label option

force

1. Name of the force DLL.

No

general (general output commands)#

Command 1

Command 2

Explanation

Label option

general

constant

A constant value is send to output

Yes

1. constant value

general

step

A step function is created. This function changes from \(f_{0}\) to \(f_{1}\) at time \(t_{0}\).

Yes

1. \(t_{0}\) [sec]

2. \(f_{0}\)

3. \(f_{1}\)

general

step2

A step function is created. This function changes from \(f_{0}\) to \(f_{1}\) between time \(t_{0}\) and \(t_{1}\) using linear interpolation.

Yes

1. \(t_{0}\) [sec]

2. \(t_{1}\) [sec]

3. \(f_{0}\)

4. \(f_{1}\)

general

step3

A step function is created. This function changes from \(f_{0}\) to \(f_{1}\) between time \(t_{0}\) and \(t_{1}\) using a continuous sinus2 interpolation function.

Yes

1. \(t_{0}\) [sec]

2. \(t_{1}\) [sec]

3. \(f_{0}\)

4. \(f_{1}\)

general

time

The time is send to output. No parameters

Yes

general

deltat

The time increment is send to output. No parameters

Yes

general

harmonic

A harmonic function is send to output

Yes

\(F(t)=An (2\pi {{f}_{0}}t)+k\)

1. A

2. \(f_{0}\)

3. k

general

harmonic2

A harmonic function is send to output

Yes

\( F(t) = \begin{cases} 0 & t < t_0 \\ A n(2 \pi f_0 (t-t_0)) + k & t_0 \le t \le t_1 \\ 0 & t > t_1 \end{cases}\)

1. A

2. \(f_{0}\)

3. k

4. \(t_{0}\)

5. \(t_{1}\)

general

stairs

A series of steps resulting in a staircase signal is created.

Yes

1. \(t_{0}\) time for first step change [s]

2. \(f_{0}\) start value of function

3. Step size

4. Step duration [s]

5. Number of steps

general

status

A status flag (mainly for controller purpose) is written. A first time step and first iteration the output value is 0. During the rest of the simulation the value is 1 until last time step where the value is -1.

Yes

general

random

A random (uniform distribution) is written

Yes

1. lower limit

2. upper limit

3. seed number

general

impulse

A step function which return to zero after a certain duration

Yes

1. \(t_{0}\) time for impulse start [s]

2. Impulse duration [s]

3. \(f_{0}\) impulse level

general

sensor_id

Sensor name.

No

1. Sensor name

2. Sensor number if sensor name refers to a vector

general

variable

Sensor, which can be modified via API in library version of HAWC2.

No

1. Sensor index (custom index, 1-100, use to refer to the sensor)

2. Initial sensor value

Name, unit and description can be specified as described in Sec. Custom sensor name, unit and description

Output_at_time (output at a given time)#

This command is especially useful if a snapshot of loads or other properties are required at a specific time. This is mostly used for writing calculated aerodynamic properties as function of blade location. The command block can be repeated as many times as needed (e.g. if outputs at more than one time is needed)

The command must be written with the following syntax


output_at_time keyword time

where keyword is the name of an output subcommand. Currently only the subcommand aero is supported. The last command word time is the time in seconds from simulation start to which the output are written.

aero (aerodynamic output commands)#

The first line in the output_at block must be the information regarding which file the outputs are written (the filename command listed in the table below)

Command 1

Explanation

Label option

filename

Filename incl. relative path to output file

No

(example ./output/output_at.dat).

1. filename

alfa

Angle of attack [deg].

No

1. Blade number

2. Dimensionless position on the chord where the angle of attack is calculated (0= leading edge, 1= trailing edge). The calculation uses Equation (39) from Li et al. [LGP+22].

Note that the 2nd input argument (default=0.75) is optional

alfadot

Pitch rate term (z-axis rotation) in local aerodynamic plane, as used for non-circulatory contributions. Unit [rad/s].

No

1. Blade number

vrel

Relative velocity [m/s]

No

1. Blade number

2. Dimensionless position on the chord where the relative velocity is calculated (0= leading edge, 1= trailing edge). The calculation uses the pitch rate, similar to the angle of attack calculation in Equation (39) from Li et al. [LGP+22].

Note that the 2nd input argument (default=0.75) is optional

cl

Lift coefficient [-]

No

1. Blade number

cd

Drag coefficient [-]

No

1. Blade number

cm

Moment coefficient [-]

No

1. Blade number

lift

Lift force L [N/m]

No

1. Blade number

drag

Drag force D [N/m]

No

1. Blade number

moment

Moment force M [Nm/m]

No

1. Blade number

secforce

Aerodynamic forces [kN/m]

No

1. Blade number

2. DOF number (1=x,2=y,3=z)

3. Coordinate system (1=aero, 2=blade, 3=global, 4=rotor polar)

secmoment

Aerodynamic moments [kNm/m]

No

1. Blade number

2. DOF number (1=x,2=y,3=z)

3. Coordinate system (1=aero, 2=blade, 3=global, 4=rotor polar)

4. Dimensionless position on the chord where the moment is calculated (0= leading edge, 1= trailing edge)

Note that the 4th input argument (default=0.75) is optional

int_force

Aerodynamic forces integrated from tip to given radius [kN]

No

1. Blade number

2. DOF number (1=x,2=y,3=z)

3. Coordinate system (1=aero, 2=blade, 3=global, 4=rotor polar)

int_moment

Aerodynamic moment integrated from tip to given radius [kNm]

No

1. Blade number

2. DOF number (1=x,2=y,3=z)

3. Coordinate system (1=aero, 2=blade, 3=global, 4=rotor polar)

inipos

Initial position of sections in blade coo [m]

No

1. Blade number

2. DOF number (1=x,2=y,3=z)

position

Actual position of section [m]

No

1. Blade number

2. DOF number (1=x,2=y,3=z)

3. Coordinate system (1=aero, 2=blade, 3=global, 4=rotor polar)

velocity

Actual velocity of section [m/s]

No

1. Blade number

2. DOF number (1=x,2=y,3=z)

3. Coordinate system (1=aero, 2=blade, 3=global, 4=rotor polar)

acceleration

Actual acceleration of section [m/s]

No

1. Blade number

2. DOF number (1=x,2=y,3=z)

3. Coordinate system (1=aero, 2=blade, 3=global, 4=rotor polar)

ct_local

Local thrust coefficient [-]. Calculated based on the expression

No

\({{C}_{t}}=\frac{{{F}_{axial}}\,B}{{\scriptstyle{}^{1}/{}_{2}}\rho 2\pi \,r\,V_{\inf }^{2}}\)

1. Blade number

cq_local

Local tangential force coefficient [-]. Calculated based on the expression

No

\({{C}_{q}}=\frac{{{F}_{\tan }}\,B}{{\scriptstyle{}^{1}/{}_{2}}\rho 2\pi \,r\,V_{\inf }^{2}}\)

1. Blade number

chord

Chord length [m]

No

1. Blade number

induc

Induced velocity [m/s]

No

1. Blade number

2. DOF number (1=x,2=y,3=z)

3. Coordinate system (1=aero, 2=blade, 3=global, 4=rotor polar)

windspeed

Free windspeed (without induction) [m/s]

No

1. Blade number

2. DOF number (1=x,2=y,3=z)

3. Coordinate system (1=aero, 2=blade, 3=global, 4=rotor polar)

4. Include tower shadow (1: with tower shadow, 0: without tower shadow)

Note that the 4th input argument is optional (default =1)

inflow_angle

Angle of attack + rotation angle of profile related to polar coordinates (not pitching). Unit [deg]

No

1. Blade number

dcldalfa

Gradient \({dCl}/{d\alpha }\;\). Unit [\(\mathrm{deg}^{-1}\)]

No

1. Blade number

dcddalfa

Gradient \({dCd}/{d\alpha }\;\). Unit [\(\mathrm{deg}^{-1}\)]

No

1. Blade number

tiploss_f

The local tiploss factor (product of Prandtl and custom tiploss factor)

No

1. Blade number

An example of an output_at_time command block could be:


begin output_at_time aero 100;
  filename ./output_at_time ;
  alfa 1;
end output_at_time;