Commit 4d20dd7e authored by David Verelst's avatar David Verelst
Browse files

fit_damping example using IEA_15MW_RWT

parents
# -*- coding: utf-8 -*-
"""
Example showing how one could use and tune damping with the damping_fit
procedure in HAWC2. The following procedure was followed for this example:
* determine target damping values: simply use the damping resulting
from using the damping_aniso inputs as defined in htc/IEA_15MW_RWT_blade_rd.htc
and htc/IEA_15MW_RWT_full_rd.htc
* convert the log decr % damping from the structural eigenvalue analysis
and enter them as damping targets in htc/IEA_15MW_RWT_blade_make_damping_fit.htc
and htc/IEA_15MW_RWT_full_make_damping_fit.htc. Note that for the full
turbine analysis only the modes are selected that relate to the blade. This
requires visual inspection of the animation files of the modes, or match
the blade modes from the blade only analysis with the onces from the full
turbine analysis based on the best match on both frequency and damping.
* execute damping fitting procedure by runing
htc/IEA_15MW_RWT_blade_make_damping_fit.htc and
htc/IEA_15MW_RWT_full_make_damping_fit.htc
* compute frequencies and damping of the fitted damping model by running
htc/IEA_15MW_RWT_blade.htc and htc/IEA_15MW_RWT_full.htc
* plot the results using the method compare_target_vs_fitted_values().
"""
import numpy as np
import pandas as pd
from matplotlib import pyplot as plt
# from wetb.prepost.windIO import ReadEigenStructure
def ReadEigenStructure(fname):
return pd.read_fwf(fname, colspecs=[(8,11), (13,27), (27,42), (42,57)],
skiprows=8, names=['mode_nr', 'Fd_hz', 'Fn_hz', 'log_decr_pct'])
def logdec2ratio(logdecr):
"""Convert from damping ratio to logarithmic decrement
Returns
-------
None.
"""
return 1 / (np.sqrt(1 + (2*np.pi / logdecr)**2))
def prepare_fitting():
# make damping fit based on the current rd (damping_aniso) results
structeigen_b_rd = ReadEigenStructure('bodyeig/iea_15mw_rwt_blade_rd/struc_eigen.dat')
rd_dr = logdec2ratio(structeigen_b_rd['log_decr_pct'].values[:50]/100)
print('blade only RD (damping_aniso) results')
for i, k in enumerate(rd_dr):
print(f'mode {i+1} {k};')
structeigen_f_rd = ReadEigenStructure('bodyeig/iea_15mw_rwt_full_rd/struc_eigen.dat')
rd_dr = logdec2ratio(structeigen_f_rd['log_decr_pct'].values[:50]/100)
print('full turbine RD (damping_aniso) results')
for i, k in enumerate(rd_dr):
print(f'mode {i+1} {k};')
def compare_target_vs_fitted_values():
# freq/damping based on the damping_aniso damping model
structeigen_b_rd = ReadEigenStructure('bodyeig/iea_15mw_rwt_blade_rd/struc_eigen.dat')
structeigen_f_rd = ReadEigenStructure('bodyeig/iea_15mw_rwt_full_rd/struc_eigen.dat')
# freq/damping based on the fitted damping element matrix
structeigen_b = ReadEigenStructure('bodyeig/iea_15mw_rwt_blade/struc_eigen.dat')
structeigen_f = ReadEigenStructure('bodyeig/iea_15mw_rwt_full/struc_eigen.dat')
# only consider the first 50 modes in this example
# fnbrd = structeigen_b_rd['Fn_hz'].values[:50]
dlbrd = structeigen_b_rd['log_decr_pct'].values[:50]
# fnfrd = structeigen_f_rd['Fn_hz'].values[:50]
dlfrd = structeigen_f_rd['log_decr_pct'].values[:50]
# fnb = structeigen_b['Fn_hz'].values[:50]
dlb = structeigen_b['log_decr_pct'].values[:50]
# fnf = structeigen_f['Fn_hz'].values[:50]
dlf = structeigen_f['log_decr_pct'].values[:50]
# plt.figure('damping fit vs rd (damping_aniso) for blade (frequencies)')
# plt.title ('damping fit vs rd (damping_aniso) for blade (frequencies)')
# plt.plot(fnbrd, dlbrd, 'rs', label='rd blade')
# plt.plot(fnb, dlb, 'kx', label='fit blade')
# plt.xlabel('Fn [Hz]')
# plt.legend(loc='best')
# plt.grid()
targets = np.array([1,2,3,4,5,6,7,8,9,10])#,20,21,22,23,25,28])
plt.figure('damping fit vs rd (damping_aniso) for blade (mode numbers)')
plt.title ('damping fit vs rd (damping_aniso) for blade (mode numbers)')
plt.plot(dlbrd, 'rs', label='rd blade', ms=7, alpha=0.7)
plt.plot(targets-1, dlbrd[targets-1], 'wo', label='targets', mec='k')
plt.plot(dlb, 'kx', label='fit blade')
plt.xlabel('mode number')
plt.ylabel('damping log.decr %')
plt.legend(loc='best')
plt.grid()
plt.savefig('damping_rd_vs_fit_blade_modenumbers.png')
# plt.figure('damping fit vs rd (damping_aniso) for full (frequencies)')
# plt.title ('damping fit vs rd (damping_aniso) for full (frequencies)')
# plt.plot(fnfrd, dlfrd, 'rs', label='rd full')
# plt.plot(fnf, dlf, 'kx', label='fit full')
# plt.xlabel('Fn [Hz]')
# plt.legend(loc='best')
# plt.grid()
targets = np.array([6,7,8,12,15,20,23,24,25,26,29,30,34,35,36,37])
plt.figure('damping fit vs rd (damping_aniso) for full (mode numbers)')
plt.title ('damping fit vs rd (damping_aniso) for full (mode numbers)')
plt.plot(dlfrd, 'rs', label='rd full', ms=7, alpha=0.7)
plt.plot(targets-1, dlfrd[targets-1], 'wo', label='targets', mec='k')
plt.plot(dlf, 'kx', label='fit full')
plt.xlabel('mode number')
plt.ylabel('damping log.decr %')
plt.legend(loc='best')
plt.grid()
plt.savefig('damping_rd_vs_fit_fullturbine_modenumbers.png')
if __name__ == '__main__':
prepare_fitting()
compare_target_vs_fitted_values()
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
Damping fit for HAWC2
This script finds the parameters for structural HAWC2 damping type
"damp_file", based on the mode damping matrix, A, calculated by HAWC2
and written to file "dfit_a.bin".
Each row of the A matrix corresponds to a mode shape in the HAWC2 model,
ordered in increasing order of eigenfrequency, i.e. first row corresponds to
the mode with the lowest eigenfrequency. By multiplication with the damping
parameter vector, x, gives the damping rati0 vector, d = (A*x).
The purpose of this script is then to find the best fit of x which gives the
specified damping ratio for the individual modes using the constraint that
x>0 for all x.
The A matrix contains all modes, and not all modes can be fitted for any
damping level. Normally the first (say 10) modes are of interest. This is
handled by the weighting vector, w, below. See code below for further details.
"""
import numpy as np
import struct
from scipy.optimize import nnls
wmin = 1.e-6
def read_struct():
f=open('dfit_a.bin','rb')
(nr,nc) = struct.unpack('ii',f.read(8))
ntot = nr*nc
data = np.zeros(ntot, dtype=np.dtype('f8'))
for i in range(ntot):
(data[i],) = struct.unpack('d',f.read(8))
A = np.reshape(data,[nr,nc], order='F')
# Read target damping for optimization
d = np.zeros(nr,dtype=np.dtype('f8'))
for i in range(nr):
(d[i],) = struct.unpack('d',f.read(8))
w = np.zeros(nr,dtype=np.dtype('f8'))
for i in range(nr):
(w[i],) = struct.unpack('d',f.read(8))
if w[i] == 0.0:
w[i] = wmin
f.close()
return A, d, w, nr, nc
def read_numpy():
with open('dfit_a.bin', 'rb') as fid:
nr, nc = np.fromfile(fid, dtype='i', count=2)
A = np.fromfile(fid, dtype='f8', count=nr*nc).reshape((nr, nc), order='F')
d = np.fromfile(fid, dtype='f8', count=nr)
w = np.fromfile(fid, dtype='f8', count=nr)
w = np.where(w==0.0, wmin, w)
return A, d, w, nr, nc
def damping_fit():
wmin = 1.e-6
# Read A matrix from file
A, d, w, nr, nc = read_numpy()
# A, d, w, nr, nc = read_struct()
# Solve
res = nnls(np.matmul(np.diag(w),A), np.matmul(np.diag(w),d))
# Write results to file
f = open('dfit_x.bin','wb')
f.write(np.array([nc,1],dtype='i4'))
f.write(res[0])
f.close()
# Check solution
dfit = np.matmul(A,res[0])
print(('*'+'{0:1s}'*36+'*').format('*'))
print('*{:^36s}*'.format('Damping fit result'))
print(('*'+'{0:1s}'*36+'*').format('*'))
print('*{:^8s}{:^14s}{:^14s}*'.format('Mode','Target','Fit'))
for i in range(nr):
if w[i] > wmin:
print('*{:^8d}{:^14.3e}{:^14.3e}*'.format(i+1,d[i],dfit[i]))
print(('*'+'{0:1s}'*36+'*').format('*'))
return res
if __name__ == '__main__':
res = damping_fit()
# A1, d1, w1 = read_struct()
# A2, d2, w2 = read_numpy()
# print(np.allclose(A1, A2))
# print(np.allclose(d1, d2))
# print(np.allclose(w1, w2))
#1 IEA 15 MW connector (towertop to shaft). Because massless and stiff, most values are dummy values.
r m x_cg y_cg ri_x ri_y x_sh y_sh E G I_x I_y I_p k_x k_y A pitch x_e y_e
$1 2 Massless/stiff connector piece.
0.0 1.00E+00 0 0 1.36E+00 1.36E+00 0 0 2.10E+17 8.08E+17 5.52E-01 5.52E-01 1.10E+00 0.5 0.5 2.98E-01 0 0 0
6.264 1.00E+00 0 0 1.36E+00 1.36E+00 0 0 2.10E+17 8.08E+17 5.52E-01 5.52E-01 1.10E+00 0.5 0.5 2.98E-01 0 0 0
\ No newline at end of file
#1 Massless/stuff hub for IEA 15 MW made by rink.
r m x_cg y_cg ri_x ri_y x_sh y_sh E G I_x I_y I_p k_x k_y A pitch x_e y_e
$1 2 Stiff hub.
0 1.0 0 0 1.50E+00 1.50E+00 0 0 2.10E+18 8.08E+17 5.52E-00 5.52E-00 1.10E+00 0.5 0.5 2.98E-01 0 0 0
3.0 1.0 0 0 1.50E+00 1.50E+00 0 0 2.10E+18 8.08E+17 5.52E-00 5.52E-00 1.10E+00 0.5 0.5 2.98E-01 0 0 0
#1 IEA 15 MW shaft created by rink. I_p = DTTorSpr*ShftLen/G.
r m x_cg y_cg ri_x ri_y x_sh y_sh E G I_x I_y I_p k_x k_y A pitch x_e y_e
$1 2 Massless, torsion-only flexion.
0.0 1.00E+00 0 0 0.2 0.2 0 0 2.10E+17 7.93E+10 1.00E+00 1.00E+00 5.367094e+01 0.5 0.5 10 0 0 0
5.118 1.00E+00 0 0 0.2 0.2 0 0 2.10E+17 7.93E+10 1.00E+00 1.00E+00 5.367094e+01 0.5 0.5 10 0 0 0
$2 2 Massless, rigid.
0.0 1.00E+00 0 0 0.2 0.2 0 0 2.10E+17 8.08E+17 1.00E+00 1.00E+00 0.2036 0.5 0.5 10 0 0 0
5.118 1.00E+00 0 0 0.2 0.2 0 0 2.10E+17 8.08E+17 1.00E+00 1.00E+00 0.2036 0.5 0.5 10 0 0 0
#1 Tower made by rink on 06-Feb-2020 from branch update_hawc2 and commit "9a1069e"
r m x_cg y_cg ri_x ri_y x_sh y_sh E G I_x I_y I_p k_x k_y A pitch x_e y_e
$1 27
0.000 1.1174E+04 0.0000E+00 0.0000E+00 3.5195E+00 3.5195E+00 0.0000E+00 0.0000E+00 2.0000E+11 7.9300E+10 1.7632E+01 1.7632E+01 3.5264E+01 5.0683E-01 5.0683E-01 1.4234E+00 0.0000E+00 0.0000E+00 0.0000E+00
0.001 1.0688E+04 0.0000E+00 0.0000E+00 3.5202E+00 3.5202E+00 0.0000E+00 0.0000E+00 2.0000E+11 7.9300E+10 1.6871E+01 1.6871E+01 3.3742E+01 5.0653E-01 5.0653E-01 1.3615E+00 0.0000E+00 0.0000E+00 0.0000E+00
5.000 1.0688E+04 0.0000E+00 0.0000E+00 3.5202E+00 3.5202E+00 0.0000E+00 0.0000E+00 2.0000E+11 7.9300E+10 1.6871E+01 1.6871E+01 3.3742E+01 5.0653E-01 5.0653E-01 1.3615E+00 0.0000E+00 0.0000E+00 0.0000E+00
5.001 1.0374E+04 0.0000E+00 0.0000E+00 3.5206E+00 3.5206E+00 0.0000E+00 0.0000E+00 2.0000E+11 7.9300E+10 1.6379E+01 1.6379E+01 3.2759E+01 5.0634E-01 5.0634E-01 1.3215E+00 0.0000E+00 0.0000E+00 0.0000E+00
10.000 1.0374E+04 0.0000E+00 0.0000E+00 3.5206E+00 3.5206E+00 0.0000E+00 0.0000E+00 2.0000E+11 7.9300E+10 1.6379E+01 1.6379E+01 3.2759E+01 5.0634E-01 5.0634E-01 1.3215E+00 0.0000E+00 0.0000E+00 0.0000E+00
10.001 1.0084E+04 0.0000E+00 0.0000E+00 3.5210E+00 3.5210E+00 0.0000E+00 0.0000E+00 2.0000E+11 7.9300E+10 1.5926E+01 1.5926E+01 3.1852E+01 5.0616E-01 5.0616E-01 1.2846E+00 0.0000E+00 0.0000E+00 0.0000E+00
15.000 1.0084E+04 0.0000E+00 0.0000E+00 3.5210E+00 3.5210E+00 0.0000E+00 0.0000E+00 2.0000E+11 7.9300E+10 1.5926E+01 1.5926E+01 3.1852E+01 5.0616E-01 5.0616E-01 1.2846E+00 0.0000E+00 0.0000E+00 0.0000E+00
15.001 9.7018E+03 0.0000E+00 0.0000E+00 3.5216E+00 3.5216E+00 0.0000E+00 0.0000E+00 2.0000E+11 7.9300E+10 1.5327E+01 1.5327E+01 3.0654E+01 5.0592E-01 5.0592E-01 1.2359E+00 0.0000E+00 0.0000E+00 0.0000E+00
28.000 9.7018E+03 0.0000E+00 0.0000E+00 3.5216E+00 3.5216E+00 0.0000E+00 0.0000E+00 2.0000E+11 7.9300E+10 1.5327E+01 1.5327E+01 3.0654E+01 5.0592E-01 5.0592E-01 1.2359E+00 0.0000E+00 0.0000E+00 0.0000E+00
28.001 8.9578E+03 0.0000E+00 0.0000E+00 3.5227E+00 3.5227E+00 0.0000E+00 0.0000E+00 2.0000E+11 7.9300E+10 1.4160E+01 1.4160E+01 2.8321E+01 5.0547E-01 5.0547E-01 1.1411E+00 0.0000E+00 0.0000E+00 0.0000E+00
41.000 8.8913E+03 0.0000E+00 0.0000E+00 3.4965E+00 3.4965E+00 0.0000E+00 0.0000E+00 2.0000E+11 7.9300E+10 1.3847E+01 1.3847E+01 2.7695E+01 5.0551E-01 5.0551E-01 1.1326E+00 0.0000E+00 0.0000E+00 0.0000E+00
41.001 8.2406E+03 0.0000E+00 0.0000E+00 3.4974E+00 3.4974E+00 0.0000E+00 0.0000E+00 2.0000E+11 7.9300E+10 1.2841E+01 1.2841E+01 2.5682E+01 5.0510E-01 5.0510E-01 1.0498E+00 0.0000E+00 0.0000E+00 0.0000E+00
54.000 7.8383E+03 0.0000E+00 0.0000E+00 3.3267E+00 3.3267E+00 0.0000E+00 0.0000E+00 2.0000E+11 7.9300E+10 1.1050E+01 1.1050E+01 2.2101E+01 5.0537E-01 5.0537E-01 9.9851E-01 0.0000E+00 0.0000E+00 0.0000E+00
54.001 7.4713E+03 0.0000E+00 0.0000E+00 3.3272E+00 3.3272E+00 0.0000E+00 0.0000E+00 2.0000E+11 7.9300E+10 1.0536E+01 1.0536E+01 2.1073E+01 5.0511E-01 5.0511E-01 9.5175E-01 0.0000E+00 0.0000E+00 0.0000E+00
67.000 6.9870E+03 0.0000E+00 0.0000E+00 3.1116E+00 3.1116E+00 0.0000E+00 0.0000E+00 2.0000E+11 7.9300E+10 8.6175E+00 8.6175E+00 1.7235E+01 5.0547E-01 5.0547E-01 8.9006E-01 0.0000E+00 0.0000E+00 0.0000E+00
67.001 6.6660E+03 0.0000E+00 0.0000E+00 3.1121E+00 3.1121E+00 0.0000E+00 0.0000E+00 2.0000E+11 7.9300E+10 8.2244E+00 8.2244E+00 1.6449E+01 5.0521E-01 5.0521E-01 8.4917E-01 0.0000E+00 0.0000E+00 0.0000E+00
80.000 6.1495E+03 0.0000E+00 0.0000E+00 2.8710E+00 2.8710E+00 0.0000E+00 0.0000E+00 2.0000E+11 7.9300E+10 6.4570E+00 6.4570E+00 1.2914E+01 5.0565E-01 5.0565E-01 7.8338E-01 0.0000E+00 0.0000E+00 0.0000E+00
80.001 5.8289E+03 0.0000E+00 0.0000E+00 2.8715E+00 2.8715E+00 0.0000E+00 0.0000E+00 2.0000E+11 7.9300E+10 6.1227E+00 6.1227E+00 1.2245E+01 5.0536E-01 5.0536E-01 7.4253E-01 0.0000E+00 0.0000E+00 0.0000E+00
93.000 5.2827E+03 0.0000E+00 0.0000E+00 2.6025E+00 2.6025E+00 0.0000E+00 0.0000E+00 2.0000E+11 7.9300E+10 4.5579E+00 4.5579E+00 9.1158E+00 5.0591E-01 5.0591E-01 6.7296E-01 0.0000E+00 0.0000E+00 0.0000E+00
93.001 4.9413E+03 0.0000E+00 0.0000E+00 2.6032E+00 2.6032E+00 0.0000E+00 0.0000E+00 2.0000E+11 7.9300E+10 4.2655E+00 4.2655E+00 8.5310E+00 5.0552E-01 5.0552E-01 6.2946E-01 0.0000E+00 0.0000E+00 0.0000E+00
106.000 4.6185E+03 0.0000E+00 0.0000E+00 2.4331E+00 2.4331E+00 0.0000E+00 0.0000E+00 2.0000E+11 7.9300E+10 3.4829E+00 3.4829E+00 6.9659E+00 5.0591E-01 5.0591E-01 5.8834E-01 0.0000E+00 0.0000E+00 0.0000E+00
106.001 4.0766E+03 0.0000E+00 0.0000E+00 2.4342E+00 2.4342E+00 0.0000E+00 0.0000E+00 2.0000E+11 7.9300E+10 3.0772E+00 3.0772E+00 6.1543E+00 5.0521E-01 5.0521E-01 5.1931E-01 0.0000E+00 0.0000E+00 0.0000E+00
119.000 3.9813E+03 0.0000E+00 0.0000E+00 2.3773E+00 2.3773E+00 0.0000E+00 0.0000E+00 2.0000E+11 7.9300E+10 2.8663E+00 2.8663E+00 5.7326E+00 5.0534E-01 5.0534E-01 5.0717E-01 0.0000E+00 0.0000E+00 0.0000E+00
119.001 3.4551E+03 0.0000E+00 0.0000E+00 2.3784E+00 2.3784E+00 0.0000E+00 0.0000E+00 2.0000E+11 7.9300E+10 2.4898E+00 2.4898E+00 4.9796E+00 5.0463E-01 5.0463E-01 4.4014E-01 0.0000E+00 0.0000E+00 0.0000E+00
132.000 3.3647E+03 0.0000E+00 0.0000E+00 2.3162E+00 2.3162E+00 0.0000E+00 0.0000E+00 2.0000E+11 7.9300E+10 2.2995E+00 2.2995E+00 4.5989E+00 5.0475E-01 5.0475E-01 4.2862E-01 0.0000E+00 0.0000E+00 0.0000E+00
132.001 3.8753E+03 0.0000E+00 0.0000E+00 2.3151E+00 2.3151E+00 0.0000E+00 0.0000E+00 2.0000E+11 7.9300E+10 2.6459E+00 2.6459E+00 5.2917E+00 5.0548E-01 5.0548E-01 4.9367E-01 0.0000E+00 0.0000E+00 0.0000E+00
144.582 3.8327E+03 0.0000E+00 0.0000E+00 2.2896E+00 2.2896E+00 0.0000E+00 0.0000E+00 2.0000E+11 7.9300E+10 2.5595E+00 2.5595E+00 5.1191E+00 5.0554E-01 5.0554E-01 4.8824E-01 0.0000E+00 0.0000E+00 0.0000E+00
#1 IEA 15 MW tower top. Because massless and stiff, most values are dummy values.
r m x_cg y_cg ri_x ri_y x_sh y_sh E G I_x I_y I_p k_x k_y A pitch x_e y_e
$1 2 Stiff/massless towertop. Nacelle mass/inertia in htc file.
0.0 1.00e+00 0 0 1.36E+00 1.36E+00 0 0 2.10E+17 8.08E+17 5.52E-01 5.52E-01 1.10E+00 0.5 0.5 2.98E-01 0 0 0
3.819 1.00e+00 0 0 1.36E+00 1.36E+00 0 0 2.10E+17 8.08E+17 5.52E-01 5.52E-01 1.10E+00 0.5 0.5 2.98E-01 0 0 0
This diff is collapsed.
; IEA 15 MW Reference Wind Turbine. Model update from commit "7d179ee".
;
begin simulation ;
time_stop 100.0 ;
solvertype 1 ; (newmark)
on_no_convergence continue ;
convergence_limits 1E3 1.0 1E-7 ;
logfile ./log/IEA_15MW_RWT_blade.log ;
begin newmark;
deltat 0.01;
end newmark;
end simulation;
;
;-------------------------------------------------------------------------------------------------------------------------------
begin new_htc_structure;
; body_output_file_name ./bodyeig/IEA_15MW_RWT_blade/body.dat; body locations correct?
body_eigenanalysis_file_name ./bodyeig/IEA_15MW_RWT_blade/body_eigen.dat; damping correct?
; struct_inertia_output_file_name ./bodyeig/IEA_15MW_RWT_blade/struc_inertia.dat; CM locations correct?
structure_eigenanalysis_file_name ./bodyeig/IEA_15MW_RWT_blade/struc_eigen.dat; full-system frequencies?
;
begin main_body; blade
name blade1 ;
type timoschenko ;
nbodies 10 ;
node_distribution c2_def;
; damping_aniso 0.0 0.0 0.0 2.955e-3 2.424e-3 1.0e-8 ; blade damping tuned to 3% log dec flap/edge, torsion arbitrarily small
damping_file blade_fit10modes.dmp ;
begin timoschenko_input ;
filename ./data/IEA_15MW_RWT_Blade_st_fpm.dat; blade files: [IEA_15MW_RWT_Blade_st_fpm.dat] or [IEA_15MW_RWT_Blade_st_nofpm.dat]
FPM 1; is blade file original beam model [0] or fully populated matrix from BECAS [1]
set 1 1 ; [1 1]=flexible, [1 2]=no torsion, [1 3]=stiff
end timoschenko_input;
begin c2_def;
nsec 20;
sec 1 0.0 0.0 0.0 -1.559455301971172e+01;
sec 2 -1.947632306428538e-01 1.118894130288145e-01 6.201182297139584e+00 -1.517563341692140e+01;
sec 3 -4.980721139630508e-01 2.670165808116275e-01 1.307124721605084e+01 -1.295380896003360e+01;
sec 4 -8.093831584098645e-01 3.739824412925188e-01 2.055236308990396e+01 -9.768502125620273e+00;
sec 5 -9.937536784943122e-01 3.756138793475129e-01 2.854529515461813e+01 -7.218598749599913e+00;
sec 6 -9.933625716774784e-01 3.279577406655898e-01 3.690610036286960e+01 -5.088885094904810e+00;
sec 7 -9.420208165255064e-01 2.681933097079662e-01 4.546140184592034e+01 -3.424371460144447e+00;
sec 8 -9.035358795700276e-01 9.920060012536037e-02 5.402214442561254e+01 -2.220313133432046e+00;
sec 9 -8.447578575993667e-01 -1.506239443252051e-01 6.239937510471066e+01 -1.268966518616668e+00;
sec 10 -7.733898129195858e-01 -4.966218792643505e-01 7.041842166402073e+01 -5.370306489608649e-01;
sec 11 -6.939710236584598e-01 -9.203225799218611e-01 7.793519479032008e+01 9.353172039816750e-02;
sec 12 -6.146949665482084e-01 -1.345973550362133e+00 8.484691997117963e+01 8.493766337535498e-01;
sec 13 -5.437000694616229e-01 -1.784306455815415e+00 9.108729127572076e+01 1.672206858318514e+00;
sec 14 -4.808082504753410e-01 -2.204478814353722e+00 9.663141565650780e+01 2.143433636129829e+00;
sec 15 -4.212886122526527e-01 -2.589840487843239e+00 1.014866648892364e+02 2.171780282338360e+00;
sec 16 -3.683459920519034e-01 -2.945714468488638e+00 1.056843042126973e+02 2.088794131302387e+00;
sec 17 -3.232741746814742e-01 -3.266603285702173e+00 1.092738898405172e+02 1.934836373952981e+00;
sec 18 -2.879473566064166e-01 -3.550229846431562e+00 1.123151327495461e+02 1.723367849618178e+00;
sec 19 -2.033818943504264e-01 -3.794043032744452e+00 1.148691506459029e+02 1.487742695689245e+00;
sec 20 -6.589359677411839e-02 -4.001429044657352e+00 1.170000000000000e+02 1.242387706272969e+00;
end c2_def ;
end main_body;
;
;-------------------------------------------------------------------------------------------------------------------------------
;
begin orientation;
begin base;
body blade1;
inipos 0.0 0.0 0.0 ;
body_eulerang 0.0 0.0 0.0; same as global: zT down, yT downwind
end base;
end orientation;
;-------------------------------------------------------------------------------------------------------------------------------
begin constraint;
begin fix0; tower fixed to ground
body blade1;
end fix0;
end constraint;
;
end new_htc_structure;
;
;begin damping_fit ;
; damp_file blade_fit10modes.dmp ;
; cmd_solver python damping_fit.py ;
; mode 1 0.005 ; Damping ratio of mode 1
; mode 2 0.005 ; etc.
; mode 3 0.01 ;
; mode 4 0.01 ;
; mode 5 0.02 ;
; mode 6 0.02 ;
;end damping_fit ;
;
exit;
; IEA 15 MW Reference Wind Turbine. Model update from commit "7d179ee".
;
begin simulation ;
time_stop 0.0 ;
solvertype 1 ; (newmark)
on_no_convergence continue ;
convergence_limits 1E3 1.0 1E-7 ;
logfile ./log/IEA_15MW_RWT_blade_1body.log ;
begin newmark;
deltat 0.01;
end newmark;
end simulation;
;
;-------------------------------------------------------------------------------------------------------------------------------
begin new_htc_structure;
; body_output_file_name ./bodyeig/IEA_15MW_RWT_blade_1body/body.dat; body locations correct?
body_eigenanalysis_file_name ./bodyeig/IEA_15MW_RWT_blade_1body/body_eigen.dat; damping correct?
; struct_inertia_output_file_name ./bodyeig/IEA_15MW_RWT_blade_1body/struc_inertia.dat; CM locations correct?
structure_eigenanalysis_file_name ./bodyeig/IEA_15MW_RWT_blade_1body/struc_eigen.dat; full-system frequencies?
;
begin main_body; blade
name blade1 ;
type timoschenko ;
nbodies 1 ;
node_distribution c2_def;
; damping_aniso 0.0 0.0 0.0 2.955e-3 2.424e-3 1.0e-8 ; blade damping tuned to 3% log dec flap/edge, torsion arbitrarily small
damping_file blade_fit10modes.dmp ;
begin timoschenko_input ;
filename ./data/IEA_15MW_RWT_Blade_st_fpm.dat; blade files: [IEA_15MW_RWT_Blade_st_fpm.dat] or [IEA_15MW_RWT_Blade_st_nofpm.dat]
FPM 1; is blade file original beam model [0] or fully populated matrix from BECAS [1]
set 1 1 ; [1 1]=flexible, [1 2]=no torsion, [1 3]=stiff
end timoschenko_input;
begin c2_def;
nsec 20;
sec 1 0.0 0.0 0.0 -1.559455301971172e+01;
sec 2 -1.947632306428538e-01 1.118894130288145e-01 6.201182297139584e+00 -1.517563341692140e+01;
sec 3 -4.980721139630508e-01 2.670165808116275e-01 1.307124721605084e+01 -1.295380896003360e+01;
sec 4 -8.093831584098645e-01 3.739824412925188e-01 2.055236308990396e+01 -9.768502125620273e+00;
sec 5 -9.937536784943122e-01 3.756138793475129e-01 2.854529515461813e+01 -7.218598749599913e+00;
sec 6 -9.933625716774784e-01 3.279577406655898e-01 3.690610036286960e+01 -5.088885094904810e+00;
sec 7 -9.420208165255064e-01 2.681933097079662e-01 4.546140184592034e+01 -3.424371460144447e+00;
sec 8 -9.035358795700276e-01 9.920060012536037e-02 5.402214442561254e+01 -2.220313133432046e+00;
sec 9 -8.447578575993667e-01 -1.506239443252051e-01 6.239937510471066e+01 -1.268966518616668e+00;
sec 10 -7.733898129195858e-01 -4.966218792643505e-01 7.041842166402073e+01 -5.370306489608649e-01;
sec 11 -6.939710236584598e-01 -9.203225799218611e-01 7.793519479032008e+01 9.353172039816750e-02;
sec 12 -6.146949665482084e-01 -1.345973550362133e+00 8.484691997117963e+01 8.493766337535498e-01;
sec 13 -5.437000694616229e-01 -1.784306455815415e+00 9.108729127572076e+01 1.672206858318514e+00;
sec 14 -4.808082504753410e-01 -2.204478814353722e+00 9.663141565650780e+01 2.143433636129829e+00;
sec 15 -4.212886122526527e-01 -2.589840487843239e+00 1.014866648892364e+02 2.171780282338360e+00;
sec 16 -3.683459920519034e-01 -2.945714468488638e+00 1.056843042126973e+02 2.088794131302387e+00;
sec 17 -3.232741746814742e-01 -3.266603285702173e+00 1.092738898405172e+02 1.934836373952981e+00;
sec 18 -2.879473566064166e-01 -3.550229846431562e+00 1.123151327495461e+02 1.723367849618178e+00;
sec 19 -2.033818943504264e-01 -3.794043032744452e+00 1.148691506459029e+02 1.487742695689245e+00;
sec 20 -6.589359677411839e-02 -4.001429044657352e+00 1.170000000000000e+02 1.242387706272969e+00;
end c2_def ;
end main_body;
;
;-------------------------------------------------------------------------------------------------------------------------------
;
begin orientation;
begin base;
body blade1;
inipos 0.0 0.0 0.0 ;
body_eulerang 0.0 0.0 0.0; same as global: zT down, yT downwind
end base;
end orientation;
;-------------------------------------------------------------------------------------------------------------------------------
begin constraint;
begin fix0; tower fixed to ground
body blade1;
end fix0;
end constraint;
;
end new_htc_structure;
;
;begin damping_fit ;
; damp_file blade_fit10modes.dmp ;
; cmd_solver python damping_fit.py ;
; mode 1 0.005 ; Damping ratio of mode 1
; mode 2 0.005 ; etc.
; mode 3 0.01 ;
; mode 4 0.01 ;
; mode 5 0.02 ;
; mode 6 0.02 ;
;end damping_fit ;
;
exit;
; IEA 15 MW Reference Wind Turbine. Model update from commit "7d179ee".
;
begin simulation ;
time_stop 0.0 ;
solvertype 1 ; (newmark)
on_no_convergence continue ;
convergence_limits 1E3 1.0 1E-7 ;
logfile ./log/IEA_15MW_RWT_blade_make_damping_fit.log ;
begin newmark;
deltat 0.01;
end newmark;
end simulation;
;
;-------------------------------------------------------------------------------------------------------------------------------
begin new_htc_structure;
; body_output_file_name ./bodyeig/IEA_15MW_RWT_blade_make_damping_fit/body.dat; body locations correct?
; body_eigenanalysis_file_name ./bodyeig/IEA_15MW_RWT_blade_make_damping_fit/body_eigen.dat; damping correct?
; struct_inertia_output_file_name ./bodyeig/IEA_15MW_RWT_blade_make_damping_fit/struc_inertia.dat; CM locations correct?
; structure_eigenanalysis_file_name ./bodyeig/IEA_15MW_RWT_blade_make_damping_fit/struc_eigen.dat; full-system frequencies?
;
begin main_body; blade
name blade1 ;
type timoschenko ;
nbodies 10 ;
node_distribution c2_def;
; damping_aniso 0.0 0.0 0.0 2.955e-3 2.424e-3 1.0e-8 ; blade damping tuned to 3% log dec flap/edge, torsion arbitrarily small
damping_file blade_fit10modes.dmp ;
begin timoschenko_input ;
filename ./data/IEA_15MW_RWT_Blade_st_fpm.dat; blade files: [IEA_15MW_RWT_Blade_st_fpm.dat] or [IEA_15MW_RWT_Blade_st_nofpm.dat]
FPM 1; is blade file original beam model [0] or fully populated matrix from BECAS [1]
set 1 1 ; [1 1]=flexible, [1 2]=no torsion, [1 3]=stiff
end timoschenko_input;
begin c2_def;
nsec 20;
sec 1 0.0 0.0 0.0 -1.559455301971172e+01;
sec 2 -1.947632306428538e-01 1.118894130288145e-01 6.201182297139584e+00 -1.517563341692140e+01;
sec 3 -4.980721139630508e-01 2.670165808116275e-01 1.307124721605084e+01 -1.295380896003360e+01;
sec 4 -8.093831584098645e-01 3.739824412925188e-01 2.055236308990396e+01 -9.768502125620273e+00;
sec 5 -9.937536784943122e-01 3.756138793475129e-01 2.854529515461813e+01 -7.218598749599913e+00;
sec 6 -9.933625716774784e-01 3.279577406655898e-01 3.690610036286960e+01 -5.088885094904810e+00;
sec 7 -9.420208165255064e-01 2.681933097079662e-01 4.546140184592034e+01 -3.424371460144447e+00;
sec 8 -9.035358795700276e-01 9.920060012536037e-02 5.402214442561254e+01 -2.220313133432046e+00;
sec 9 -8.447578575993667e-01 -1.506239443252051e-01 6.239937510471066e+01 -1.268966518616668e+00;
sec 10 -7.733898129195858e-01 -4.966218792643505e-01 7.041842166402073e+01 -5.370306489608649e-01;
sec 11 -6.939710236584598e-01 -9.203225799218611e-01 7.793519479032008e+01 9.353172039816750e-02;
sec 12 -6.146949665482084e-01 -1.345973550362133e+00 8.484691997117963e+01 8.493766337535498e-01;
sec 13 -5.437000694616229e-01 -1.784306455815415e+00 9.108729127572076e+01 1.672206858318514e+00;
sec 14 -4.808082504753410e-01 -2.204478814353722e+00 9.663141565650780e+01 2.143433636129829e+00;
sec 15 -4.212886122526527e-01 -2.589840487843239e+00 1.014866648892364e+02 2.171780282338360e+00;
sec 16 -3.683459920519034e-01 -2.945714468488638e+00 1.056843042126973e+02 2.088794131302387e+00;
sec 17 -3.232741746814742e-01 -3.266603285702173e+00 1.092738898405172e+02 1.934836373952981e+00;
sec 18 -2.879473566064166e-01 -3.550229846431562e+00 1.123151327495461e+02 1.723367849618178e+00;
sec 19 -2.033818943504264e-01 -3.794043032744452e+00 1.148691506459029e+02 1.487742695689245e+00;
sec 20 -6.589359677411839e-02 -4.001429044657352e+00 1.170000000000000e+02 1.242387706272969e+00;
end c2_def ;
end main_body;
;
;-------------------------------------------------------------------------------------------------------------------------------
;
begin orientation;
begin base;
body blade1;
inipos 0.0 0.0 0.0 ;
body_eulerang 0.0 0.0 0.0; same as global: zT down, yT downwind
end base;
end orientation;
;-------------------------------------------------------------------------------------------------------------------------------
begin constraint;
begin fix0; tower fixed to ground
body blade1;
end fix0;
end constraint;
;
end new_htc_structure;
;
;begin damping_fit ;
; damp_file blade.dmp ;
; cmd_solver python damping_fit.py ;
; mode 1 0.005 ; Damping ratio of mode 1
; mode 2 0.005 ; etc.
; mode 3 0.01 ;
; mode 4 0.01 ;
; mode 5 0.02 ;
; mode 6 0.02 ;
; mode 7 0.02 ;
; mode 8 0.02 ;
;end damping_fit ;
;
begin damping_fit ;
damp_file blade_fit10modes.dmp ;
cmd_solver python damping_fit.py ;
; for the example, target damping obtained using HAWC2's standard damping settings
; damping from structure_eigenanalysis_file_name in "IEA_15MW_RWT_blade_rd.htc"
; with blade1 damping: "damping_aniso 0.0 0.0 0.0 2.955e-3 2.424e-3 1.0e-8";
mode 1 0.004774657529023324;
mode 2 0.004775214552273396;
mode 3 0.014107729325216097;
mode 4 0.014627416140534534;
mode 5 0.027710008437911045;
mode 6 0.032303522219670026;
mode 7 0.007641553728367517;
mode 8 0.04496651193729634;
mode 9 0.055063679846642094;
mode 10 0.06036873252536341;
; mode 11 0.01793546818988046;
; mode 12 0.07999699208112507;
; mode 13 0.08149561913232319;
; mode 14 0.06396837251967061;
; mode 15 0.06371812721911659;
; mode 16 0.1110048079115892;
; mode 17 0.11266435980787133;
; mode 18 0.04614154613637669;
; mode 19 0.14093911677608956;
; mode 20 0.14276522261479896;