Skip to content
Snippets Groups Projects
Commit 283d7b43 authored by David Verelst's avatar David Verelst
Browse files

prepost.hawcstab2: fix HS2 io testing

parent fb16463e
No related branches found
No related tags found
No related merge requests found
......@@ -291,73 +291,6 @@ class hs2_control_tuning(object):
setattr(self.aero_damp, 'Ko2', 0.0)
class tests(unittest.TestCase):
"""
"""
def setUp(self):
self.fpath_linear = 'data/controller_input_linear.txt'
self.fpath_quadratic = 'data/controller_input_quadratic.txt'
def test_cmb_df(self):
fname1 = 'data/campbell_wind.cmb'
speed, freq, damp = results().load_cmb(fname1)
df = results().load_cmb_df(fname1)
#mods = freq.shape[1]
ops = freq.shape[0]
self.assertEqual(len(speed), ops)
for k in range(ops):
df_oper = df[df['wind_ms']==speed[k]]
np.testing.assert_allclose(freq[k,:], df_oper['Fd_hz'].values)
np.testing.assert_allclose(damp[k,:], df_oper['damp_ratio'].values)
np.testing.assert_allclose(np.arange(1,len(df_oper)+1), df_oper['mode'])
self.assertEqual(len(df_oper['wind_ms'].unique()), 1)
self.assertEqual(df_oper['wind_ms'].unique()[0], speed[k])
def test_linear_file(self):
hs2 = hs2_control_tuning()
hs2.read_parameters(self.fpath_linear)
self.assertEqual(hs2.pi_gen_reg1.K, 0.108313E+07)
self.assertEqual(hs2.pi_gen_reg2.I, 0.307683E+08)
self.assertEqual(hs2.pi_gen_reg2.Kp, 0.135326E+08)
self.assertEqual(hs2.pi_gen_reg2.Ki, 0.303671E+07)
self.assertEqual(hs2.pi_pitch_reg3.Kp, 0.276246E+01)
self.assertEqual(hs2.pi_pitch_reg3.Ki, 0.132935E+01)
self.assertEqual(hs2.pi_pitch_reg3.K1, 5.79377)
self.assertEqual(hs2.pi_pitch_reg3.K2, 0.0)
self.assertEqual(hs2.aero_damp.Kp2, 0.269403E+00)
self.assertEqual(hs2.aero_damp.Ko1, -4.21472)
self.assertEqual(hs2.aero_damp.Ko2, 0.0)
def test_quadratic_file(self):
hs2 = hs2_control_tuning()
hs2.read_parameters(self.fpath_quadratic)
self.assertEqual(hs2.pi_gen_reg1.K, 0.108313E+07)
self.assertEqual(hs2.pi_gen_reg2.I, 0.307683E+08)
self.assertEqual(hs2.pi_gen_reg2.Kp, 0.135326E+08)
self.assertEqual(hs2.pi_gen_reg2.Ki, 0.303671E+07)
self.assertEqual(hs2.pi_pitch_reg3.Kp, 0.249619E+01)
self.assertEqual(hs2.pi_pitch_reg3.Ki, 0.120122E+01)
self.assertEqual(hs2.pi_pitch_reg3.K1, 7.30949)
self.assertEqual(hs2.pi_pitch_reg3.K2, 1422.81187)
self.assertEqual(hs2.aero_damp.Kp2, 0.240394E-01)
self.assertEqual(hs2.aero_damp.Ko1, -1.69769)
self.assertEqual(hs2.aero_damp.Ko2, -15.02688)
if __name__ == '__main__':
unittest.main()
# Wind [m/s] 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10
0.400000E+01 0.228933E+00 0.233973E+00 0.762776E+00 0.965817E+00 0.136002E+01 0.149639E+01 0.159423E+01 0.202127E+01 0.204610E+01 0.208646E+01 0.388822E+00 0.966751E+01 0.102903E+01 0.118873E+01 0.224277E+02 0.237007E+01 0.156716E+02 0.304645E+01 0.155964E+02 0.431867E+01
0.500000E+01 0.228944E+00 0.234004E+00 0.763301E+00 0.966955E+00 0.136149E+01 0.149576E+01 0.159339E+01 0.202086E+01 0.204910E+01 0.208435E+01 0.400712E+00 0.973227E+01 0.106285E+01 0.133466E+01 0.224476E+02 0.237088E+01 0.156581E+02 0.304886E+01 0.155855E+02 0.426180E+01
0.600000E+01 0.228950E+00 0.233713E+00 0.764151E+00 0.968410E+00 0.136286E+01 0.149520E+01 0.159243E+01 0.202039E+01 0.205218E+01 0.208226E+01 0.406516E+00 0.960985E+01 0.113674E+01 0.151399E+01 0.224486E+02 0.236761E+01 0.156309E+02 0.304953E+01 0.155767E+02 0.419995E+01
0.700000E+01 0.228969E+00 0.233943E+00 0.765058E+00 0.970449E+00 0.136386E+01 0.149485E+01 0.159148E+01 0.201989E+01 0.205516E+01 0.208023E+01 0.410362E+00 0.956280E+01 0.125579E+01 0.172544E+01 0.225723E+02 0.236204E+01 0.156830E+02 0.304991E+01 0.156414E+02 0.414330E+01
0.800000E+01 0.228981E+00 0.235547E+00 0.751657E+00 0.984742E+00 0.133566E+01 0.150181E+01 0.159480E+01 0.201923E+01 0.205065E+01 0.207803E+01 0.425543E+00 0.105481E+02 0.134744E+01 0.175350E+01 0.276486E+02 0.245076E+01 0.183743E+02 0.308534E+01 0.187826E+02 0.426964E+01
0.900000E+01 0.228996E+00 0.236970E+00 0.738114E+00 0.999088E+00 0.128575E+01 0.150896E+01 0.159184E+01 0.201868E+01 0.203967E+01 0.207649E+01 0.441459E+00 0.114513E+02 0.139929E+01 0.171638E+01 0.337118E+02 0.249114E+01 0.211607E+02 0.312301E+01 0.222187E+02 0.437718E+01
0.100000E+02 0.229012E+00 0.238179E+00 0.724468E+00 0.101353E+01 0.118278E+01 0.151608E+01 0.157955E+01 0.201827E+01 0.201894E+01 0.207574E+01 0.457749E+00 0.123038E+02 0.140490E+01 0.162917E+01 0.404780E+02 0.248329E+01 0.238259E+02 0.316032E+01 0.259943E+02 0.445668E+01
0.110000E+02 0.229026E+00 0.239178E+00 0.710773E+00 0.102810E+01 0.108411E+01 0.152309E+01 0.156056E+01 0.201801E+01 0.198169E+01 0.207582E+01 0.473968E+00 0.131326E+02 0.136375E+01 0.150699E+01 0.411061E+02 0.243142E+01 0.257758E+02 0.319485E+01 0.301264E+02 0.449558E+01
0.120000E+02 0.229021E+00 0.239633E+00 0.708997E+00 0.103066E+01 0.107780E+01 0.153402E+01 0.154335E+01 0.202064E+01 0.193052E+01 0.209214E+01 0.486960E+00 0.135941E+02 0.114255E+01 0.126920E+01 0.382470E+02 0.216812E+01 0.252810E+02 0.312680E+01 0.310102E+02 0.472517E+01
0.130000E+02 0.229026E+00 0.239785E+00 0.708960E+00 0.103053E+01 0.107743E+01 0.154125E+01 0.153408E+01 0.202211E+01 0.189783E+01 0.210716E+01 0.503753E+00 0.138570E+02 0.104718E+01 0.114424E+01 0.366660E+02 0.198152E+01 0.247994E+02 0.309199E+01 0.311264E+02 0.489292E+01
0.140000E+02 0.229030E+00 0.239833E+00 0.708652E+00 0.103012E+01 0.107707E+01 0.154680E+01 0.152747E+01 0.202305E+01 0.187153E+01 0.212208E+01 0.514565E+00 0.140661E+02 0.100617E+01 0.106417E+01 0.355180E+02 0.183957E+01 0.244292E+02 0.307265E+01 0.311685E+02 0.500880E+01
0.150000E+02 0.229055E+00 0.240017E+00 0.708136E+00 0.102951E+01 0.107701E+01 0.155133E+01 0.152248E+01 0.202372E+01 0.184933E+01 0.213830E+01 0.544804E+00 0.143364E+02 0.996830E+00 0.101040E+01 0.345994E+02 0.173088E+01 0.241219E+02 0.306084E+01 0.311506E+02 0.500600E+01
0.160000E+02 0.229071E+00 0.239853E+00 0.707432E+00 0.102872E+01 0.107759E+01 0.155510E+01 0.151899E+01 0.202423E+01 0.183087E+01 0.215318E+01 0.578800E+00 0.145899E+02 0.100993E+01 0.975174E+00 0.338448E+02 0.165052E+01 0.238541E+02 0.305342E+01 0.310630E+02 0.477124E+01
0.170000E+02 0.229085E+00 0.239595E+00 0.706561E+00 0.102777E+01 0.107867E+01 0.155827E+01 0.151662E+01 0.202463E+01 0.181533E+01 0.216331E+01 0.609440E+00 0.148314E+02 0.103970E+01 0.954033E+00 0.331993E+02 0.159293E+01 0.236152E+02 0.304854E+01 0.309315E+02 0.446567E+01
0.180000E+02 0.229100E+00 0.239299E+00 0.705540E+00 0.102667E+01 0.108022E+01 0.156096E+01 0.151516E+01 0.202495E+01 0.180218E+01 0.217047E+01 0.642610E+00 0.150961E+02 0.108264E+01 0.943946E+00 0.326383E+02 0.155714E+01 0.234027E+02 0.304542E+01 0.307706E+02 0.420507E+01
0.190000E+02 0.229100E+00 0.238941E+00 0.704393E+00 0.102545E+01 0.108151E+01 0.156324E+01 0.151377E+01 0.202521E+01 0.178960E+01 0.217609E+01 0.645467E+00 0.152863E+02 0.113498E+01 0.942057E+00 0.321266E+02 0.153398E+01 0.232221E+02 0.304319E+01 0.306240E+02 0.398727E+01
0.200000E+02 0.229117E+00 0.238524E+00 0.703123E+00 0.102411E+01 0.108297E+01 0.156518E+01 0.151271E+01 0.202543E+01 0.177816E+01 0.218066E+01 0.680310E+00 0.155290E+02 0.119543E+01 0.947265E+00 0.316630E+02 0.153812E+01 0.230628E+02 0.304242E+01 0.304641E+02 0.381123E+01
0.210000E+02 0.229136E+00 0.238084E+00 0.701736E+00 0.102265E+01 0.108452E+01 0.156681E+01 0.151186E+01 0.202562E+01 0.176741E+01 0.218452E+01 0.719375E+00 0.158119E+02 0.126269E+01 0.958046E+00 0.312303E+02 0.156212E+01 0.229212E+02 0.304250E+01 0.302974E+02 0.366667E+01
0.220000E+02 0.229147E+00 0.237523E+00 0.700230E+00 0.102107E+01 0.108627E+01 0.156814E+01 0.151132E+01 0.202577E+01 0.175757E+01 0.218779E+01 0.754378E+00 0.161008E+02 0.133578E+01 0.973260E+00 0.308276E+02 0.160451E+01 0.227919E+02 0.304323E+01 0.301112E+02 0.354965E+01
0.230000E+02 0.229161E+00 0.236848E+00 0.698611E+00 0.101939E+01 0.108881E+01 0.156918E+01 0.151172E+01 0.202590E+01 0.174988E+01 0.219054E+01 0.796036E+00 0.163966E+02 0.141457E+01 0.992719E+00 0.304529E+02 0.166798E+01 0.226548E+02 0.304454E+01 0.298809E+02 0.345932E+01
0.240000E+02 0.229178E+00 0.236114E+00 0.696892E+00 0.101760E+01 0.109145E+01 0.156999E+01 0.151235E+01 0.202601E+01 0.174276E+01 0.219296E+01 0.838889E+00 0.167029E+02 0.149901E+01 0.101590E+01 0.301033E+02 0.175021E+01 0.225316E+02 0.304628E+01 0.296496E+02 0.338727E+01
0.250000E+02 0.229186E+00 0.235316E+00 0.695102E+00 0.101572E+01 0.109457E+01 0.157057E+01 0.151364E+01 0.202611E+01 0.173710E+01 0.219518E+01 0.859064E+00 0.169785E+02 0.159098E+01 0.104301E+01 0.297783E+02 0.184710E+01 0.224109E+02 0.304806E+01 0.293981E+02 0.333190E+01
PI generator torque controller in region 1 (variable speed, variable power), starting at istate = 3
K = 0.108313E+07 [Nm/(rad/s)^2]
PI generator torque controller in region 2 (constant speed, variable power)
I = 0.307683E+08 [kg*m^2]
Kp = 0.135326E+08 [Nm/(rad/s)]
Ki = 0.303671E+07 [Nm/rad]
PI pitch angle controller in region 3 (constant speed, constant power)
Kp = 0.276246E+01 [rad/(rad/s)]
Ki = 0.132935E+01 [rad/rad]
K1 = 5.79377 [deg] (dq/dtheta = -159.47784 kNm/deg)
Additional terms due to the Aerodynamic damping
Kp2 = 0.269403E+00 [rad/(rad/s)]
Ko1 = -4.21472 [deg] (dq/domega = 2461.64665 kNm/(rad/s))
PI generator torque controller in region 1 (variable speed, variable power), starting at istate = 3
K = 0.108313E+07 [Nm/(rad/s)^2]
PI generator torque controller in region 2 (constant speed, variable power)
I = 0.307683E+08 [kg*m^2]
Kp = 0.135326E+08 [Nm/(rad/s)]
Ki = 0.303671E+07 [Nm/rad]
PI pitch angle controller in region 3 (constant speed, constant power)
Kp = 0.249619E+01 [rad/(rad/s)]
Ki = 0.120122E+01 [rad/rad]
K1 = 7.30949 [deg], K2 = 1422.81187 [deg^2] (dq/dtheta = -176.48944 kNm/deg)
Additional terms due to the Aerodynamic damping
Kp2 = 0.240394E-01 [rad/(rad/s)]
Ko1 = -1.69769 [deg], Ko2 = -15.02688 [deg^2] (dq/domega = 243.08924 kNm/(rad/s))
'''
Created on 05/11/2015
@author: MMPE
'''
from __future__ import unicode_literals
from __future__ import print_function
from __future__ import division
from __future__ import absolute_import
from future import standard_library
standard_library.install_aliases()
import unittest
import numpy as np
from wetb.prepost.hawcstab2 import results, hs2_control_tuning
# path for test data files
#fpath = os.path.join(os.path.dirname(__file__), 'data/')
class Tests(unittest.TestCase):
"""
"""
def setUp(self):
self.fpath_linear = 'data/controller_input_linear.txt'
self.fpath_quadratic = 'data/controller_input_quadratic.txt'
def test_cmb_df(self):
fname1 = 'data/campbell_diagram.cmb'
speed, freq, damp = results().load_cmb(fname1)
df = results().load_cmb_df(fname1)
#mods = freq.shape[1]
ops = freq.shape[0]
self.assertEqual(len(speed), ops)
for k in range(ops):
df_oper = df[df['wind_ms']==speed[k]]
np.testing.assert_allclose(freq[k,:], df_oper['Fd_hz'].values)
np.testing.assert_allclose(damp[k,:], df_oper['damp_ratio'].values)
np.testing.assert_allclose(np.arange(1,len(df_oper)+1), df_oper['mode'])
self.assertEqual(len(df_oper['wind_ms'].unique()), 1)
self.assertEqual(df_oper['wind_ms'].unique()[0], speed[k])
def test_linear_file(self):
hs2 = hs2_control_tuning()
hs2.read_parameters(self.fpath_linear)
self.assertEqual(hs2.pi_gen_reg1.K, 0.108313E+07)
self.assertEqual(hs2.pi_gen_reg2.I, 0.307683E+08)
self.assertEqual(hs2.pi_gen_reg2.Kp, 0.135326E+08)
self.assertEqual(hs2.pi_gen_reg2.Ki, 0.303671E+07)
self.assertEqual(hs2.pi_pitch_reg3.Kp, 0.276246E+01)
self.assertEqual(hs2.pi_pitch_reg3.Ki, 0.132935E+01)
self.assertEqual(hs2.pi_pitch_reg3.K1, 5.79377)
self.assertEqual(hs2.pi_pitch_reg3.K2, 0.0)
self.assertEqual(hs2.aero_damp.Kp2, 0.269403E+00)
self.assertEqual(hs2.aero_damp.Ko1, -4.21472)
self.assertEqual(hs2.aero_damp.Ko2, 0.0)
def test_quadratic_file(self):
hs2 = hs2_control_tuning()
hs2.read_parameters(self.fpath_quadratic)
self.assertEqual(hs2.pi_gen_reg1.K, 0.108313E+07)
self.assertEqual(hs2.pi_gen_reg2.I, 0.307683E+08)
self.assertEqual(hs2.pi_gen_reg2.Kp, 0.135326E+08)
self.assertEqual(hs2.pi_gen_reg2.Ki, 0.303671E+07)
self.assertEqual(hs2.pi_pitch_reg3.Kp, 0.249619E+01)
self.assertEqual(hs2.pi_pitch_reg3.Ki, 0.120122E+01)
self.assertEqual(hs2.pi_pitch_reg3.K1, 7.30949)
self.assertEqual(hs2.pi_pitch_reg3.K2, 1422.81187)
self.assertEqual(hs2.aero_damp.Kp2, 0.240394E-01)
self.assertEqual(hs2.aero_damp.Ko1, -1.69769)
self.assertEqual(hs2.aero_damp.Ko2, -15.02688)
if __name__ == "__main__":
unittest.main()
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment