diff --git a/.gitignore b/.gitignore index 4524932..0ba7eff 100644 --- a/.gitignore +++ b/.gitignore @@ -8,6 +8,7 @@ Source/Obj_lin64 *.mod Source/x64/ Source/Release/ +Build/ # Archive Scripts/CompileDISCONHereCopyRun\.cmd @@ -16,4 +17,6 @@ Scripts/CompileDISCONHereCopyRun\.cmd # Temp Files *~ +*.u2d +.DS_Store *.u2d \ No newline at end of file diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..6d7f44f --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,30 @@ + +cmake_minimum_required(VERSION 3.6) +project(DRC_Fortran VERSION 0.1 LANGUAGES Fortran) + +set(CMAKE_Fortran_MODULE_DIRECTORY "${CMAKE_BINARY_DIR}/ftnmods") + +# Sets the optimization level to -O2 and includes -g +set(CMAKE_BUILD_TYPE "RelWithDebInfo") + +# Enable .dll export +if(APPLE OR UNIX) + if (CMAKE_Fortran_COMPILER_ID STREQUAL "Intel") + set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -DIMPLICIT_DLLEXPORT ") + else() + set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -DIMPLICIT_DLLEXPORT -ffree-line-length-0") + endif() +endif() + +set(SOURCES + src/Constants.f90 + src/ControllerBlocks.f90 + src/Controllers.f90 + src/DISCON.F90 + src/ROSCO_Types.f90 + src/Filters.f90 + src/Functions.f90 + src/ReadSetParameters.f90 +) + +add_library(discon SHARED ${SOURCES}) diff --git a/Source/DISCON.sln b/DISCON.sln similarity index 66% rename from Source/DISCON.sln rename to DISCON.sln index d92b7b5..8ea829e 100644 --- a/Source/DISCON.sln +++ b/DISCON.sln @@ -3,7 +3,7 @@ Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio 14 VisualStudioVersion = 14.0.25420.1 MinimumVisualStudioVersion = 10.0.40219.1 -Project("{6989167D-11E4-40FE-8C1A-2192A86A7E90}") = "DISCON", "DISCON.vfproj", "{1EDB6BC1-C5C9-4E4F-8785-31B8143FCBC6}" +Project("{6989167D-11E4-40FE-8C1A-2192A86A7E90}") = "DISCON", "DISCON.vfproj", "{CC29A9F7-BDAD-4A60-B1FC-5D016BD853E4}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -11,10 +11,10 @@ Global Release|x86 = Release|x86 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution - {1EDB6BC1-C5C9-4E4F-8785-31B8143FCBC6}.Release|x64.ActiveCfg = Release|x64 - {1EDB6BC1-C5C9-4E4F-8785-31B8143FCBC6}.Release|x64.Build.0 = Release|x64 - {1EDB6BC1-C5C9-4E4F-8785-31B8143FCBC6}.Release|x86.ActiveCfg = Release|Win32 - {1EDB6BC1-C5C9-4E4F-8785-31B8143FCBC6}.Release|x86.Build.0 = Release|Win32 + {CC29A9F7-BDAD-4A60-B1FC-5D016BD853E4}.Release|x64.ActiveCfg = Release|x64 + {CC29A9F7-BDAD-4A60-B1FC-5D016BD853E4}.Release|x64.Build.0 = Release|x64 + {CC29A9F7-BDAD-4A60-B1FC-5D016BD853E4}.Release|x86.ActiveCfg = Release|Win32 + {CC29A9F7-BDAD-4A60-B1FC-5D016BD853E4}.Release|x86.Build.0 = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/DISCON.vfproj b/DISCON.vfproj new file mode 100644 index 0000000..e18e3cc --- /dev/null +++ b/DISCON.vfproj @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/DISCON/DISCON_glin64.so b/DISCON/DISCON_glin64.so deleted file mode 100755 index 01ffd34..0000000 Binary files a/DISCON/DISCON_glin64.so and /dev/null differ diff --git a/Parameter_files/DTU10MW/DISCON.IN b/Parameter_files/DTU10MW/DISCON.IN deleted file mode 100644 index fba4918..0000000 --- a/Parameter_files/DTU10MW/DISCON.IN +++ /dev/null @@ -1,84 +0,0 @@ -! Turbine: DTU fixed bottom wind turbine -! NJA - Might want to make a more formal header for this - -!------- DEBUG ------------------------------------------------------------ -0 ! LoggingLevel - 0 = write no debug files, 1 = write standard output .dbg-file, 2 = write standard output .dbg-file and complete avrSWAP-array .dbg2-file - -!------- CONTROLLER FLAGS ------------------------------------------------- -2 ! F_LPFType - 1 = first-order low-pass filter, 2 = second-order low-pass filter -0 ! F_NotchType - 0 = disable, 1 = enable: notch on the measured generator speed, -0 ! IPC_ControlMode - Turn Individual Pitch Control (IPC) for fatigue load reductions (pitch contribution) 0 = off / 1 = (1P reductions) / 2 = (1P+2P reductions) -1 ! VS_ControlMode - Generator torque control mode in above rated conditions, 0 = constant torque / 1 = constant power -0 ! Y_ControlMode - Yaw control mode: (0 = no yaw control, 1 = yaw rate control, 2 = yaw-by-IPC) - -!------- FILTERS ---------------------------------------------------------- -2.5132741 ! F_LPFCornerFreq - Corner frequency (-3dB point) in the low-pass filters, filtering generator speed and pitch control signals, [rad/s] -0.7 ! F_LPFDamping - Damping coefficient if F_FilterType = 2, unused otherwise -0 ! F_NotchCornerFreq - Natural frequency of the notch filter, [rad/s] -0 0 ! F_NotchBetaNumDen - These two notch damping values (numerator and denominator, resp) determines the width and depth of the notch [-] - -!------- BLADE PITCH CONTROL ---------------------------------------------- -13 ! PC_GS_n - Amount of gain-scheduling table entries -0 0.0349 0.0698 0.1047 0.1396 0.1745 0.2094 0.2443 0.2793 0.3142 0.3491 0.384 0.4189 ! PC_GS_angles - Gain-schedule table: pitch angles --0.0105 -0.0104 -0.0102 -0.0099 -0.0095 -0.0091 -0.0086 -0.0081 -0.0076 -0.0071 -0.0066 -0.0061 -0.0056 ! PC_GS_KP - Gain-schedule table: pitch controller kp gains --0.0028 -0.0028 -0.0027 -0.0027 -0.0026 -0.0024 -0.0023 -0.0022 -0.002 -0.0019 -0.0018 -0.0016 -0.0015 ! PC_GS_KI - Gain-schedule table: pitch controller ki gains -0 0 0 0 0 0 0 0 0 0 0 0 0 ! PC_GS_KD - Gain-schedule table: pitch controller kd gains -0 0 0 0 0 0 0 0 0 0 0 0 0 ! PC_GS_TF - Gain-schedule table: pitch controller tf gains (derivative filter) -1.5707 ! PC_MaxPit - Maximum physical pitch limit, [rad]. --0.087266 ! PC_MinPit - Minimum physical pitch limit, [rad]. -0.17453 ! PC_MaxRat - Maximum pitch rate (in absolute value) in pitch controller, [rad/s]. --0.17453 ! PC_MinRat - Minimum pitch rate (in absolute value) in pitch controller, [rad/s]. -50.26548 ! PC_RefSpd - Desired (reference) HSS speed for pitch controller, [rad/s]. -0.0 ! PC_FinePit - Record 5: Below-rated pitch angle set-point, [rad] -0.034906 ! PC_Switch - Angle above lowest minimum pitch angle for switch [rad] -0 ! Z_EnableSine - Enable/disable sine pitch excitation, used to validate for dynamic induction control, will be removed later [-] -0.0349066 ! Z_PitchAmplitude - Amplitude of sine pitch excitation [rad] -0 ! Z_PitchFrequency - Frequency of sine pitch excitation [rad/s] - -!------- INDIVIDUAL PITCH CONTROL ----------------------------------------- -0.087266 ! IPC_IntSat - Integrator saturation (maximum signal amplitude contribution to pitch from IPC), [rad] -8E-10 0 ! IPC_KI - Integral gain for the individual pitch controller: first parameter for 1P reductions, second for 2P reductions [-] -0.436332313 0 ! IPC_aziOffset - Phase offset added to the azimuth angle for the individual pitch controller, [rad]. -2.5 ! IPC_CornerFreqAct - Corner frequency of the first-order actuators model, to induce a phase lag in the IPC signal. Set 0 to disable. [rad/s] - -!------- VS TORQUE CONTROL ------------------------------------------------ -0.944 ! VS_GenEff - Generator efficiency mechanical power -> electrical power, this should match the efficiency defined in the generator properties! [-] -212900 ! VS_ArSatTq - Above rated generator torque PI control saturation, [Nm] -150000.0 ! VS_MaxRat - Maximum torque rate (in absolute value) in torque controller, [Nm/s]. -250000.0 ! VS_MaxTq - Maximum generator torque in Region 3 (HSS side), [Nm]. -0.0 ! VS_MinTq - Minimum generator (HSS side), [Nm]. -20.94395 ! VS_MinOMSpd - Optimal mode minimum speed, cut-in speed towards optimal mode gain path [rad/s] -104.1 ! VS_Rgn2K - Generator torque constant in Region 2 (HSS side), N-m/(rad/s)^2 -1.0E+07 ! VS_RtPwr - Wind turbine rated power [W] -211642 ! VS_RtTq - Rated torque, [Nm]. XXX 198943.6 XXX -42.411 ! VS_RefSpd - Rated generator speed [rad/s] -1 ! VS_n - Number of controller gains --27338.24 ! VS_KP - Proportional gain for generator PI torque controller, used in the transitional 2.5 region, [1/(rad/s) Nm] --6134.68 ! VS_KI - Integral gain for generator PI torque controller, used in the transitional 2.5 region, [1/rad Nm] - -!------- WIND SPEED ESTIMATOR --------------------------------------------- -89.166 ! WE_BladeRadius - Blade length [m] -4 ! WE_CP_n - Amount of parameters in the Cp array -14.571319658214513 42.809556250371465 2.456512501523107 0.003127994078720 ! WE_CP - Parameters that define the parameterized CP(lambda) function XXX Needs to be updated, these are values of the NREL5MW XXX -20 ! WE_Gamma - Adaption gain of the wind speed estimator algorithm [m/rad] -50 ! WE_GearboxRatio - Gearbox ratio, >=1 [-] -2.0E+08 ! WE_Jtot - Total drivetrain inertia, including blades, hub and casted generator inertia to LSS [kg m^2] -1.225 ! WE_RhoAir - Air density [kg m^-3] - -!------- YAW CONTROL ------------------------------------------------------ -1.745329252 ! Y_ErrThresh - Yaw error threshold. Turbine begins to yaw when it passes this. [rad^2 s] -0.17453 ! Y_IPC_IntSat - Integrator saturation (maximum signal amplitude contribution to pitch from yaw-by-IPC), [rad] -1 ! Y_IPC_n - Number of controller gains (yaw-by-IPC) --0.064 ! Y_IPC_KP - Yaw-by-IPC proportional controller gain Kp --0.0008 ! Y_IPC_KI - Yaw-by-IPC integral controller gain Ki -0.6283185 ! Y_IPC_omegaLP - Low-pass filter corner frequency for the Yaw-by-IPC controller to filtering the yaw alignment error, [rad/s]. -1.0 ! Y_IPC_zetaLP - Low-pass filter damping factor for the Yaw-by-IPC controller to filtering the yaw alignment error, [-]. -0.00000 ! Y_MErrSet - Yaw alignment error, set point [rad] -1.0 ! Y_omegaLPFast - Corner frequency fast low pass filter, 1.0 [Hz] -0.016667 ! Y_omegaLPSlow - Corner frequency slow low pass filter, 1/60 [Hz] -0.0034906 ! Y_Rate - Yaw rate [rad/s] - -!------- TOWER FORE-AFT DAMPING ------------------------------------------- --1 ! FA_KI - Integral gain for the fore-aft tower damper controller, -1 = off / >0 = on [rad s/m] -0.1 ! FA_HPF_CornerFreq - Corner frequency (-3dB point) in the high-pass filter on the fore-aft acceleration signal [rad/s] -0.087266 ! FA_IntSat - Integrator saturation (maximum signal amplitude contribution to pitch from FA damper), [rad] diff --git a/Parameter_files/NREL5MW/DISCON.IN b/Parameter_files/NREL5MW/DISCON.IN deleted file mode 100644 index 0b0be97..0000000 --- a/Parameter_files/NREL5MW/DISCON.IN +++ /dev/null @@ -1,86 +0,0 @@ -! Turbine: NREL 5MW fixed bottom wind turbine -! NJA - Might want to make a more formal header for this - -!------- DEBUG ------------------------------------------------------------ -0 ! LoggingLevel - 0 = write no debug files, 1 = write standard output .dbg-file, 2 = write standard output .dbg-file and complete avrSWAP-array .dbg2-file - -!------- CONTROLLER FLAGS ------------------------------------------------- -1 ! F_LPFType - 1 = first-order low-pass filter, 2 = second-order low-pass filter, filtering generator speed and pitch control signals, [rad/s] -0 ! F_NotchType - 0 = disable, 1 = enable: notch on the measured generator speed -0 ! IPC_ControlMode - Turn Individual Pitch Control (IPC) for fatigue load reductions (pitch contribution) 0 = off / 1 = (1P reductions) / 2 = (1P+2P reductions) -1 ! VS_ControlMode - Generator torque control mode in above rated conditions, 0 = constant torque / 1 = constant power -0 ! Y_ControlMode - Yaw control mode: (0 = no yaw control, 1 = yaw rate control, 2 = yaw-by-IPC) - -!------- FILTERS ---------------------------------------------------------- -1.570796326 ! F_LPFCornerFreq - Corner frequency (-3dB point) in the low-pass filters -0 ! F_LPFDamping - Damping coefficient if F_FilterType = 2, unused otherwise -0 ! F_NotchCornerFreq - Natural frequency of the notch filter, [rad/s] -0 0 ! F_NotchBetaNumDen - These two notch damping values (numerator and denominator, resp) determines the width and depth of the notch [-] - -!------- BLADE PITCH CONTROL ---------------------------------------------- -14 ! PC_GS_n - Amount of gain-scheduling table entries -0.00000 0.03491 0.06981 0.10472 0.13963 0.17453 0.20944 0.24435 0.27925 0.31416 0.34907 0.38397 0.41888 0.45379 ! PC_GS_angles - Gain-schedule table: pitch angles --0.018827 -0.014292 -0.011517 -0.009645 -0.008296 -0.007278 -0.006483 -0.005844 -0.005320 -0.004882 -0.004511 -0.004192 -0.003916 -0.003673 ! PC_GS_KP - Gain-schedule table: pitch controller kp gains --0.008069 -0.006125 -0.004936 -0.004133 -0.003555 -0.003119 -0.002778 -0.002505 -0.002280 -0.002092 -0.001933 -0.001797 -0.001678 -0.001574 ! PC_GS_KI - Gain-schedule table: pitch controller ki gains -0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ! PC_GS_KD - Gain-schedule table: pitch controller kd gains -0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ! PC_GS_TF - Gain-schedule table: pitch controller tf gains (derivative filter) -1.5707 ! PC_MaxPit - Maximum physical pitch limit, [rad]. --0.087266 ! PC_MinPit - Minimum physical pitch limit, [rad]. -0.13962 ! PC_MaxRat - Maximum pitch rate (in absolute value) in pitch controller, [rad/s]. --0.13962 ! PC_MinRat - Minimum pitch rate (in absolute value) in pitch controller, [rad/s]. -122.90957 ! PC_RefSpd - Desired (reference) HSS speed for pitch controller, [rad/s]. -0.0 ! PC_FinePit - Record 5: Below-rated pitch angle set-point, [rad] -0.003490658 ! PC_Switch - Angle above lowest minimum pitch angle for switch [rad] -0 ! Z_EnableSine - Enable/disable sine pitch excitation, used to validate for dynamic induction control, will be removed later [-] -0.0349066 ! Z_PitchAmplitude - Amplitude of sine pitch excitation [rad] -0 ! Z_PitchFrequency - Frequency of sine pitch excitation [rad/s] - -!------- INDIVIDUAL PITCH CONTROL ----------------------------------------- -0.087266 ! IPC_IntSat - Integrator saturation (maximum signal amplitude contribution to pitch from IPC), [rad] -1E-8 0 ! IPC_KI - Integral gain for the individual pitch controller: first parameter for 1P reductions, second for 2P reductions [-] -0.436332313 0 ! IPC_aziOffset - Phase offset added to the azimuth angle for the individual pitch controller, [rad]. -2.5 ! IPC_CornerFreqAct - Corner frequency of the first-order actuators model, to induce a phase lag in the IPC signal. Set 0 to disable. [rad/s] - -!------- VS TORQUE CONTROL ------------------------------------------------ -0.944 ! VS_GenEff - Generator efficiency mechanical power -> electrical power, this should match the efficiency defined in the generator properties! [-] -43093.55 ! VS_ArSatTq - Above rated generator torque PI control saturation, [Nm] -150000.0 ! VS_MaxRat - Maximum torque rate (in absolute value) in torque controller, [Nm/s]. -48000.00 ! VS_MaxTq - Maximum generator torque in Region 3 (HSS side), [Nm]. -0.0 ! VS_MinTq - Minimum generator (HSS side), [Nm]. -91.2109 ! VS_MinOMSpd - Optimal mode minimum speed, cut-in speed towards optimal mode gain path [rad/s] -2.33228 ! VS_Rgn2K - Generator torque constant in Region 2 (HSS side), [N-m/(rad/s)^2] -5.0E+06 ! VS_RtPwr - Wind turbine rated power [W] -43093.55 ! VS_RtTq - Rated torque, [Nm]. -120.113 ! VS_RefSpd - Rated generator speed [rad/s] -1 ! VS_n - Number of generator PI torque controller gains --4200 ! VS_KP - Proportional gain for generator PI torque controller, used in the transitional 2.5 region, [1/(rad/s) Nm] --2100 ! VS_KI - Integral gain for generator PI torque controller, used in the transitional 2.5 region, [1/rad Nm] - -!------- WIND SPEED ESTIMATOR --------------------------------------------- -63.0 ! WE_BladeRadius - Blade length [m] -4 ! WE_CP_n - Amount of parameters in the Cp array -14.571319658214513 42.809556250371465 2.456512501523107 0.003127994078720 ! WE_CP - Parameters that define the parameterized CP(lambda) function -20 ! WE_Gamma - Adaption gain of the wind speed estimator algorithm [m/rad] -97 ! WE_GearboxRatio - Gearbox ratio, >=1 [-] -4.0469564E+07 ! WE_Jtot - Total drivetrain inertia, including blades, hub and casted generator inertia to LSS [kg m^2] -1.225 ! WE_RhoAir - Air density [kg m^-3] - -!------- YAW CONTROL ------------------------------------------------------ -1.745329252 ! Y_ErrThresh - Yaw error threshold. Turbine begins to yaw when it passes this. [rad^2 s] -0.17453 ! Y_IPC_IntSat - Integrator saturation (maximum signal amplitude contribution to pitch from yaw-by-IPC), [rad] -1 ! Y_IPC_n - Number of controller gains (yaw-by-IPC) --0.064 ! Y_IPC_KP - Yaw-by-IPC proportional controller gain Kp --0.0008 ! Y_IPC_KI - Yaw-by-IPC integral controller gain Ki -0.6283185 ! Y_IPC_omegaLP - Low-pass filter corner frequency for the Yaw-by-IPC controller to filtering the yaw alignment error, [rad/s]. -1.0 ! Y_IPC_zetaLP - Low-pass filter damping factor for the Yaw-by-IPC controller to filtering the yaw alignment error, [-]. -0.00000 ! Y_MErrSet - Yaw alignment error, set point [rad] -1.0 ! Y_omegaLPFast - Corner frequency fast low pass filter, 1.0 [Hz] -0.016667 ! Y_omegaLPSlow - Corner frequency slow low pass filter, 1/60 [Hz] -0.0034906 ! Y_Rate - Yaw rate [rad/s] - -!------- TOWER FORE-AFT DAMPING ------------------------------------------- --1 ! FA_KI - Integral gain for the fore-aft tower damper controller, -1 = off / >0 = on [rad s/m] - !NJA - Make this a flag -0.1 ! FA_HPF_CornerFreq - Corner frequency (-3dB point) in the high-pass filter on the fore-aft acceleration signal [rad/s] -0.087266 ! FA_IntSat - Integrator saturation (maximum signal amplitude contribution to pitch from FA damper), [rad] - - diff --git a/README.md b/README.md index 65bb06e..41dd85d 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,42 @@ -# DRC_Fortran wind turbine baseline controller -Delft Research Controller (DRC) baseline wind turbine controller, using the Bladed-style DISCON interface used by, e.g., OpenFAST, Bladed (versions 4.5 or earlier) and HAWC2. +# NREL's Reference OpenSource Controller (ROSCO) for wind turbine applications +** This is still in early development and is not ready for official release yet. Please do not share without permission from Nikhar Abbas. ** + +NREL's Reference OpenSource Controller (ROSCO) for wind turbine applications uses the Bladed-style DISCON interface used by, e.g., OpenFAST, Bladed (versions 4.5 or earlier) and HAWC2. ## Introduction -The Delft Research Controller (DRC) provides an open, modular and fully adaptable baseline wind turbine controller to the scientific community. New control implementations can be added to the existing baseline controller, and in this way, convenient assessments of the proposed algorithms is possible. Because of the open character and modular set-up, scientists are able to collaborate and contribute in making continuous improvements to the code. The DRC is being developed in Fortran and uses the Bladed-style DISCON controller interface. The compiled controller is configured by a single control settings parameter file, and can work with any wind turbine model and simulation software using the DISCON interface. Baseline parameter files are supplied for the NREL 5-MW and DTU 10-MW reference wind turbines. +The NREL Reference OpenSource Controller (ROSCO) provides an open, modular and fully adaptable baseline wind turbine controller to the scientific community. New control implementations can be added to the existing baseline controller, and in this way, convenient assessments of the proposed algorithms is possible. Because of the open character and modular set-up, scientists are able to collaborate and contribute in making continuous improvements to the code. ROSCO is being developed in Fortran and uses the Bladed-style DISCON controller interface. The compiled controller is configured by a single control settings parameter file, and can work with any wind turbine model and simulation software using the DISCON interface. Baseline parameter files are supplied for the NREL 5-MW and DTU 10-MW reference wind turbines. + +## Compiling ROSCO +** This is still in early development and is not ready for official release yet. Please do not share without permission from Nikhar Abbas. ** + +Compiling ROSCO to be used on your machine is made simple using [cmake](https://cmake.org/) on Unix based machines. Currently (November 2019), we recommend that you compile the code using a unix machine (or subsystem on Windows). Compiled binaries are also provided via github. + +### Required Software to build ROSCO +* Fortran compiler (GNU compiler version above 4.6.0 or Intel compiler version above 11) +* C/C++ compiler +* GNU Make (version 3.81 or later) +* CMake (version 2.8.12 or later) - for unix + +### Steps to compile +First, clone the git repository: +``` +git clone https://github.com/nikhar-abbas/DRC_Fortran.git +``` +Second, you will need to compile the controller. From the ROSCO home directory: +``` +mkdir build +cd build +cmake .. +make install +``` +A dynamic link library will be compiled into the directory with the title `libdiscon.*`, where the file extension is `.so`, `.dll`, or `.dylib`, depending on the user's operating system. + +## Running ROSCO +A few files are needed to run ROSCO. Of course, the compiled binary, named `libdiscon.*` by default, is needed. In addition to the binary, a controller input file title DISCON.IN is necessary. Two example input files are provided for the NREL 5MW and DTU 10MW wind turbine controllers in the [parameter_files](parameter_files) folder. Note that DISCON.IN must be in the folder that the compiled binary is being called from. For generic controller tuning methods, and an automated writing of this DISCON.IN file, we point you to the complete [ROSCO_toolbox](https://github.com/nrel/rosco_toolbox). + +In addition to DISCON.IN, if you wish to use either of the wind speed estimators offered by ROSCO (`WE_mode > 0`), you will need a rotor performance input file. This is, again, provided for the NREL 5MW and DTU 10MW wind turbines, and can be easily made for other turbines using the [ROSCO_toolbox](https://github.com/nrel/rosco_toolbox). The input `PerfFileName` in DISCON.IN points to this file. -## Using the DRC for Bladed +## Using ROSCO for Bladed If you want to use the controller with DNV GL Bladed v4.5 or earlier (which still has support for the DISCON external controller interface), do the following: 1. Be sure to use and place the 32-bit DLL in the same folder as where you put your project .$PJ-file 2. Copy in that same folder the DISCON.IN controller configuration file @@ -13,5 +45,32 @@ If you want to use the controller with DNV GL Bladed v4.5 or earlier (which stil 4. Run a "Power Production" simulation ## Referencing -When you use the DRC in any publication, please cite the following paper: -* Mulders, S.P. and van Wingerden, J.W. "Delft Research Controller: an open-source and community-driven wind turbine baseline controller." Journal of Physics: Conference Series. Vol. 1037. No. 3. IOP Publishing, 2018. [Link to the paper](https://iopscience.iop.org/article/10.1088/1742-6596/1037/3/032009/meta) \ No newline at end of file +If ROSCO played a role in your research, please cite it. This software can be +cited as: + + ROSCO. Version 0.1.0 (2019). Available at https://github.com/nrel/rosco. + +For LaTeX users: + +``` + @misc{ROSCO_2019, + author = {NREL}, + title = {{ROSCO. Version 0.1.0}}, + year = {2019}, + publisher = {GitHub}, + journal = {GitHub repository}, + url = {https://github.com/NREL/rosco} + } +``` +If you have been using the entirety of the [ROSCO toolbox](https://github.com/nrel/rosco_toolbox), please see the ROSCO toolbox README for information on how to cite it. + + +## Acknowledgments +The initial release of this controller was the Delft Research Controller. This work should be cited as +* Mulders, S.P. and van Wingerden, J.W. "Delft Research Controller: an open-source and community-driven wind turbine baseline controller." Journal of Physics: Conference Series. Vol. 1037. No. 3. IOP Publishing, 2018. [Link to the paper](https://iopscience.iop.org/article/10.1088/1742-6596/1037/3/032009/meta) +The Delft Research Controller was the initial version of this work. It has sense been grown significantly and become NREL's ROSCO. + +Primary contributions to ROSCO has been provided by researchers the National Renewable Energy Laboratory (Nikhar J. Abbas, Alan Wright, and Paul Fleming), Delft University of Technology (Sebastiaan Mulders and Jan-Willem van Wingerden), and the University of Colorado Boulder (Lucy Pao). Much of the intellect behind these contributions has been inspired or derived from an extensive amount of work in the literature. The bulk of this has been cited through the primary publications about this work. + +There are also some specific acknowledgements we would like to communicate: +* The setpoint smoothing regime implemented through the ROSCO controller was contributed by sowento GmbH. \ No newline at end of file diff --git a/Scripts/CompileDISCON.cmd b/Scripts/CompileDISCON.cmd deleted file mode 100644 index b3c9ed5..0000000 --- a/Scripts/CompileDISCON.cmd +++ /dev/null @@ -1,18 +0,0 @@ -:: Compiling DISCON - -:: Main FAST directory: -:: Change this to the absolute path if this script is not located in the FAST main folder. -:: In that case also make sure the correct drive is selected -set "FASTdir=." - -:: Go to the correct drive -:: C: - -:: Remove old .dll file -DEL %FASTdir%\CertTest\5MW_Baseline\ServoData\DISCON_gwin32.dll - -:: Compile new .dll file -cd %FASTdir%\Compiling -mingw32-make.exe - -pause diff --git a/Scripts/compileDISCON_linux.bash b/Scripts/compileDISCON_linux.bash deleted file mode 100644 index d056a1b..0000000 --- a/Scripts/compileDISCON_linux.bash +++ /dev/null @@ -1,18 +0,0 @@ -# Make a DISCON folder in root, cd to correct directory -mkdir ../DISCON -cd ../Source - -# Set options to 64 bits -sed -i '' '13s/.*/#BITS = 32/' makefile -sed -i '' '14s/.*/BITS = 64/' makefile - -# Build code -rm -f ../DISCON/DISCON_glin64.so -rm -f ../DISCON_x64_DRC.so -make clean -make all -# cp ../DISCON/DISCON_glin64.so ../DISCON_x64_DRC.so -# echo 'The output file is: "../DISCON_x64_DRC.so".' - -# Return to initial directory -cd ../Scripts diff --git a/Source/DISCON.u2d b/Source/DISCON.u2d deleted file mode 100644 index e69de29..0000000 diff --git a/Source/DISCON.vfproj b/Source/DISCON.vfproj deleted file mode 100644 index 1592408..0000000 --- a/Source/DISCON.vfproj +++ /dev/null @@ -1,39 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Source/makefile b/Source/makefile deleted file mode 100644 index 91bd486..0000000 --- a/Source/makefile +++ /dev/null @@ -1,118 +0,0 @@ -#================================================================================# -# This makefile created by B. Jonkman on 2-Apr-2013, # -# adapted from Crunch (M. Buhl on 25-Jan-2013). # -# (c) 2013 National Renewable Energy Laboratory # -# # -# This makefile has been tested on Windows 7 with gfortran. # -# This makefile works with mingw32-make.exe. # -# # -# It was designed to be used with discon.f90 for the Bladed DLL Interface # -#================================================================================# - - # 32-bit or 64-bit? -# BITS = 32 -BITS = 64 - # Location of source files for the DLL. - # You may need to change these for your DLL. - -DLL_DIR = . - -SOURCE_FILE = Constants.f90 DRC_Types.f90 Functions.f90 Filters.f90 ReadSetParameters.f90 Controllers.f90 DISCON.f90 - - - # Name of compiler to use and flags to use. -FC = gfortran -FFLAGS = -O2 -m$(BITS) -fbacktrace -ffree-line-length-none -x f95-cpp-input -C -LDFLAGS = -shared -O2 -m$(BITS) -fbacktrace - -# other useful gfortran options: -# -fdefault-real-8 -fcheck=bounds -std=f2003 -O0 -v -# -Wl,--out-implib,DISCON.lib - - - # Destination and RootName for executable - -OUTPUT_NAME = DISCON -DEST_DIR = ../DISCON - - #==========================================================# - # You should not need to change anything beyond this point # - #==========================================================# - - # System-specific settings. - -ifeq ($(OS),Windows_NT) - # Windows - DEL_CMD = del - EXE_EXT = _gwin$(BITS).dll - INTER_DIR = Obj_win$(BITS) - MD_CMD = @mkdir - OBJ_EXT = .obj - PATH_SEP = \\ - SYS_FILE = SysGnuWin -else - - FFLAGS := $(FFLAGS) -DIMPLICIT_DLLEXPORT - - # Linux - DEL_CMD = rm -f - EXE_EXT = _glin$(BITS).so - INTER_DIR = Obj_lin$(BITS) - MD_CMD = @mkdir -p - OBJ_EXT = .o - PATH_SEP = / - SYS_FILE = SysGnuLinux - - UNAME := $(shell uname -s) - - ifneq ($(UNAME), Darwin) - FFLAGS := $(FFLAGS) -fPIC - LDFLAGS := $(LDFLAGS) -fPIC - endif -endif - - - # Source files (by module) - -DLL_SOURCES = \ - $(SOURCE_FILE) - -vpath %.f90 $(DLL_DIR) -vpath %.mod $(INTER_DIR) -vpath %.obj $(INTER_DIR) - -ALL_OBJS = $(DLL_SOURCES:.f90=.obj) - - # Rule to do everything. - -all: default -default: $(INTER_DIR) $(DEST_DIR)/$(OUTPUT_NAME)$(EXE_EXT) - - # General rules for compliling the files. - -%.obj: %.f90 - $(FC) $(FFLAGS) -c $< -o $(INTER_DIR)/$@ -J $(INTER_DIR) -B $(INTER_DIR) - - - # Dependency rules. -#$(SYS_FILE).obj: $(PREC).obj - - - # Make sure the destination directory for the intermediate files exist. - -$(INTER_DIR): - $(MD_CMD) $(INTER_DIR) - - - # For linking DLL. - -$(DEST_DIR)/$(OUTPUT_NAME)$(EXE_EXT): $(ALL_OBJS) | $(INTER_DIR) - $(FC) $(LDFLAGS) -I $(INTER_DIR) -o $(DEST_DIR)/$(OUTPUT_NAME)$(EXE_EXT) \ - $(foreach src, $(ALL_OBJS), $(addprefix $(INTER_DIR)/,$(src))) - - # Cleanup afterwards. - -clean: - $(DEL_CMD) $(INTER_DIR)$(PATH_SEP)*.mod $(INTER_DIR)$(PATH_SEP)*.obj - -#gfortran -shared -O2 -m32 -fbacktrace -ffree-line-length-none -x f95-cpp-input -C ../CertTest/5MW_Baseline/ServoData/Source/DISCON.f90 \ No newline at end of file diff --git a/bin/DISCON_x64.dll b/bin/DISCON_x64.dll index 2b27931..7a09e78 100644 Binary files a/bin/DISCON_x64.dll and b/bin/DISCON_x64.dll differ diff --git a/bin/Readme.txt b/bin/Readme.txt deleted file mode 100644 index 4e95c9e..0000000 --- a/bin/Readme.txt +++ /dev/null @@ -1,2 +0,0 @@ -In order to use the compiled version of the DRC, install the "Redistributable Libraries for 32- and 64-bit msi files for the Intel® Parallel Studio XE Composer Edition for Fortran" first: -https://software.intel.com/sites/default/files/managed/01/70/ww_ifort_redist_msi_2017.1.143.zip \ No newline at end of file diff --git a/parameter_files/DTU10MW/Cp_Ct_Cq.DTU10MW.txt b/parameter_files/DTU10MW/Cp_Ct_Cq.DTU10MW.txt new file mode 100644 index 0000000..8389e32 --- /dev/null +++ b/parameter_files/DTU10MW/Cp_Ct_Cq.DTU10MW.txt @@ -0,0 +1,165 @@ +# ----- Rotor performance tables for the DTU_10MW_RWT wind turbine ----- +# ------------ Written on Oct-31-19 using the ROSCO toolbox ------------ + +# Pitch angle vector - x axis (matrix columns) (deg) +-1.0 -0.75 -0.5 -0.25 0.0 0.25 0.5 0.75 1.0 1.25 1.5 1.75 2.0 2.25 2.5 2.75 3.0 3.25 3.5 3.75 4.0 4.25 4.5 4.75 5.0 5.25 5.5 5.75 6.0 6.25 6.5 6.75 7.0 7.25 7.5 7.75 8.0 8.25 8.5 8.75 9.0 9.25 9.5 9.75 10.0 10.25 10.5 10.75 11.0 11.25 11.5 11.75 12.0 12.25 12.5 12.75 13.0 13.25 13.5 13.75 14.0 14.25 14.5 14.75 15.0 15.25 15.5 15.75 16.0 16.25 16.5 16.75 17.0 17.25 17.5 17.75 18.0 18.25 18.5 18.75 19.0 19.25 19.5 19.75 20.0 20.25 20.5 20.75 21.0 21.25 21.5 21.75 22.0 22.25 22.5 22.75 23.0 23.25 23.5 23.75 24.0 24.25 24.5 24.75 +# TSR vector - y axis (matrix rows) (-) +3.0 3.25 3.5 3.75 4.0 4.25 4.5 4.75 5.0 5.25 5.5 5.75 6.0 6.25 6.5 6.75 7.0 7.25 7.5 7.75 8.0 8.25 8.5 8.75 9.0 9.25 9.5 9.75 10.0 10.25 10.5 10.75 11.0 11.25 11.5 11.75 12.0 12.25 12.5 12.75 13.0 13.25 13.5 13.75 14.0 14.25 14.5 14.75 +# Wind speed vector - z axis (m/s) +11.4 + +# Power coefficient + +0.090725 0.092940 0.095153 0.097362 0.099567 0.101766 0.103957 0.106140 0.108311 0.110469 0.112613 0.114739 0.116846 0.118932 0.120993 0.123028 0.125035 0.127009 0.128949 0.130852 0.132714 0.134532 0.136303 0.138024 0.139691 0.141301 0.142850 0.144335 0.145752 0.147099 0.148372 0.149569 0.150688 0.151725 0.152680 0.153550 0.154335 0.155033 0.155643 0.156166 0.156600 0.156945 0.157203 0.157372 0.157454 0.157450 0.157359 0.157185 0.156927 0.156588 0.156169 0.155672 0.155099 0.154451 0.153732 0.152942 0.152085 0.151162 0.150175 0.149128 0.148021 0.146857 0.145638 0.144367 0.143044 0.141673 0.140254 0.138789 0.137281 0.135731 0.134139 0.132508 0.130839 0.129132 0.127389 0.125611 0.123799 0.121953 0.120073 0.118161 0.116217 0.114242 0.112235 0.110197 0.108129 0.106030 0.103902 0.101744 0.099557 0.097341 0.095096 0.092823 0.090522 0.088192 0.085836 0.083452 0.081042 0.078605 0.076143 0.073655 0.071142 0.068605 0.066044 0.063460 +0.117473 0.120093 0.122698 0.125287 0.127855 0.130402 0.132923 0.135416 0.137878 0.140305 0.142695 0.145044 0.147349 0.149605 0.151809 0.153957 0.156045 0.158067 0.160021 0.161900 0.163702 0.165421 0.167053 0.168595 0.170044 0.171395 0.172648 0.173799 0.174848 0.175792 0.176631 0.177364 0.177990 0.178511 0.178925 0.179233 0.179437 0.179536 0.179532 0.179427 0.179222 0.178919 0.178520 0.178028 0.177444 0.176771 0.176013 0.175171 0.174248 0.173248 0.172172 0.171023 0.169805 0.168520 0.167169 0.165757 0.164284 0.162754 0.161168 0.159529 0.157839 0.156099 0.154312 0.152478 0.150600 0.148679 0.146716 0.144712 0.142668 0.140586 0.138465 0.136306 0.134110 0.131878 0.129609 0.127305 0.124965 0.122590 0.120181 0.117737 0.115258 0.112746 0.110200 0.107620 0.105007 0.102362 0.099683 0.096973 0.094230 0.091456 0.088650 0.085814 0.082948 0.080051 0.077126 0.074172 0.071191 0.068182 0.065148 0.062088 0.059004 0.055897 0.052768 0.049619 +0.147699 0.150669 0.153602 0.156493 0.159340 0.162138 0.164882 0.167568 0.170191 0.172746 0.175229 0.177633 0.179953 0.182183 0.184318 0.186352 0.188279 0.190096 0.191798 0.193382 0.194845 0.196186 0.197403 0.198494 0.199460 0.200300 0.201013 0.201600 0.202063 0.202401 0.202616 0.202709 0.202682 0.202538 0.202278 0.201905 0.201421 0.200830 0.200136 0.199340 0.198447 0.197460 0.196382 0.195216 0.193966 0.192635 0.191226 0.189741 0.188185 0.186558 0.184866 0.183108 0.181289 0.179411 0.177476 0.175485 0.173442 0.171347 0.169203 0.167010 0.164771 0.162486 0.160156 0.157782 0.155365 0.152905 0.150403 0.147860 0.145276 0.142651 0.139986 0.137280 0.134535 0.131750 0.128925 0.126062 0.123159 0.120218 0.117238 0.114219 0.111163 0.108069 0.104938 0.101769 0.098564 0.095323 0.092047 0.088735 0.085389 0.082010 0.078597 0.075153 0.071677 0.068172 0.064638 0.061076 0.057488 0.053876 0.050241 0.046585 0.042909 0.039216 0.035507 0.031785 +0.180779 0.183984 0.187118 0.190175 0.193149 0.196033 0.198820 0.201503 0.204075 0.206528 0.208857 0.211054 0.213116 0.215038 0.216817 0.218451 0.219938 0.221278 0.222469 0.223512 0.224408 0.225157 0.225760 0.226219 0.226535 0.226710 0.226746 0.226645 0.226412 0.226048 0.225558 0.224944 0.224211 0.223363 0.222404 0.221338 0.220168 0.218898 0.217532 0.216075 0.214528 0.212896 0.211182 0.209389 0.207520 0.205578 0.203566 0.201487 0.199343 0.197136 0.194868 0.192542 0.190160 0.187723 0.185233 0.182691 0.180098 0.177455 0.174764 0.172023 0.169235 0.166400 0.163518 0.160589 0.157613 0.154592 0.151525 0.148413 0.145255 0.142052 0.138804 0.135511 0.132174 0.128792 0.125366 0.121896 0.118383 0.114826 0.111227 0.107585 0.103902 0.100177 0.096411 0.092606 0.088761 0.084879 0.080959 0.077003 0.073012 0.068988 0.064933 0.060847 0.056733 0.052592 0.048428 0.044241 0.040034 0.035810 0.031570 0.027318 0.023055 0.018784 0.014508 0.010229 +0.215776 0.219028 0.222158 0.225156 0.228014 0.230723 0.233276 0.235668 0.237895 0.239952 0.241839 0.243553 0.245096 0.246466 0.247666 0.248696 0.249557 0.250251 0.250781 0.251148 0.251356 0.251407 0.251305 0.251053 0.250655 0.250116 0.249439 0.248630 0.247693 0.246632 0.245452 0.244158 0.242753 0.241241 0.239628 0.237916 0.236110 0.234212 0.232227 0.230158 0.228007 0.225778 0.223474 0.221098 0.218651 0.216138 0.213558 0.210916 0.208212 0.205449 0.202627 0.199749 0.196814 0.193824 0.190780 0.187681 0.184529 0.181323 0.178065 0.174753 0.171389 0.167973 0.164505 0.160985 0.157413 0.153790 0.150115 0.146389 0.142613 0.138785 0.134907 0.130979 0.127001 0.122973 0.118896 0.114771 0.110599 0.106378 0.102112 0.097800 0.093443 0.089044 0.084602 0.080120 0.075599 0.071040 0.066446 0.061819 0.057160 0.052473 0.047759 0.043021 0.038262 0.033484 0.028690 0.023882 0.019064 0.014239 0.009408 0.004575 -0.000256 -0.005084 -0.009906 -0.014718 +0.251326 0.254341 0.257170 0.259807 0.262249 0.264492 0.266537 0.268384 0.270034 0.271489 0.272750 0.273820 0.274701 0.275396 0.275908 0.276241 0.276398 0.276384 0.276203 0.275858 0.275355 0.274699 0.273895 0.272948 0.271863 0.270645 0.269298 0.267828 0.266240 0.264536 0.262722 0.260802 0.258780 0.256659 0.254443 0.252135 0.249739 0.247258 0.244694 0.242052 0.239333 0.236539 0.233675 0.230740 0.227739 0.224671 0.221539 0.218343 0.215085 0.211764 0.208383 0.204940 0.201436 0.197872 0.194248 0.190564 0.186820 0.183017 0.179155 0.175234 0.171254 0.167215 0.163118 0.158963 0.154749 0.150478 0.146148 0.141762 0.137319 0.132819 0.128263 0.123652 0.118986 0.114266 0.109494 0.104671 0.099797 0.094874 0.089903 0.084886 0.079826 0.074723 0.069579 0.064398 0.059182 0.053933 0.048653 0.043347 0.038016 0.032663 0.027292 0.021906 0.016508 0.011101 0.005688 0.000272 -0.005142 -0.010553 -0.015957 -0.021350 -0.026729 -0.032092 -0.037436 -0.042756 +0.285729 0.288227 0.290500 0.292549 0.294376 0.295984 0.297377 0.298558 0.299531 0.300299 0.300868 0.301240 0.301422 0.301417 0.301231 0.300868 0.300334 0.299633 0.298773 0.297758 0.296593 0.295285 0.293837 0.292255 0.290543 0.288707 0.286750 0.284677 0.282492 0.280199 0.277802 0.275303 0.272707 0.270017 0.267236 0.264368 0.261414 0.258378 0.255263 0.252070 0.248802 0.245461 0.242047 0.238561 0.235005 0.231379 0.227684 0.223919 0.220085 0.216183 0.212213 0.208175 0.204069 0.199896 0.195656 0.191349 0.186974 0.182534 0.178026 0.173453 0.168813 0.164108 0.159337 0.154501 0.149600 0.144635 0.139607 0.134516 0.129363 0.124149 0.118876 0.113544 0.108155 0.102710 0.097211 0.091659 0.086057 0.080406 0.074709 0.068968 0.063186 0.057365 0.051509 0.045620 0.039703 0.033759 0.027793 0.021807 0.015807 0.009793 0.003772 -0.002254 -0.008282 -0.014308 -0.020327 -0.026338 -0.032335 -0.038316 -0.044277 -0.050215 -0.056127 -0.062009 -0.067859 -0.073674 +0.317616 0.319464 0.321074 0.322453 0.323605 0.324534 0.325248 0.325749 0.326044 0.326137 0.326034 0.325741 0.325262 0.324604 0.323772 0.322773 0.321611 0.320292 0.318822 0.317204 0.315445 0.313548 0.311519 0.309361 0.307080 0.304679 0.302162 0.299532 0.296795 0.293952 0.291007 0.287965 0.284827 0.281597 0.278278 0.274871 0.271379 0.267804 0.264147 0.260410 0.256592 0.252696 0.248720 0.244667 0.240535 0.236326 0.232040 0.227676 0.223236 0.218720 0.214127 0.209458 0.204714 0.199894 0.194999 0.190028 0.184983 0.179863 0.174669 0.169402 0.164062 0.158650 0.153166 0.147612 0.141987 0.136294 0.130533 0.124705 0.118812 0.112856 0.106837 0.100758 0.094620 0.088425 0.082177 0.075877 0.069528 0.063133 0.056696 0.050219 0.043706 0.037160 0.030586 0.023986 0.017365 0.010726 0.004074 -0.002588 -0.009256 -0.015926 -0.022594 -0.029255 -0.035906 -0.042544 -0.049164 -0.055763 -0.062338 -0.068884 -0.075399 -0.081879 -0.088321 -0.094722 -0.101079 -0.107391 +0.346312 0.347507 0.348468 0.349201 0.349711 0.350005 0.350087 0.349965 0.349643 0.349128 0.348425 0.347540 0.346478 0.345245 0.343847 0.342287 0.340571 0.338703 0.336688 0.334531 0.332236 0.329807 0.327249 0.324565 0.321760 0.318836 0.315798 0.312649 0.309393 0.306031 0.302567 0.299004 0.295344 0.291589 0.287742 0.283803 0.279774 0.275655 0.271447 0.267150 0.262764 0.258291 0.253730 0.249083 0.244348 0.239526 0.234618 0.229624 0.224545 0.219379 0.214129 0.208794 0.203375 0.197872 0.192287 0.186618 0.180868 0.175037 0.169124 0.163132 0.157061 0.150913 0.144687 0.138386 0.132010 0.125561 0.119041 0.112451 0.105793 0.099069 0.092281 0.085432 0.078525 0.071562 0.064547 0.057484 0.050375 0.043225 0.036037 0.028816 0.021564 0.014287 0.006988 -0.000328 -0.007658 -0.014996 -0.022338 -0.029680 -0.037018 -0.044348 -0.051665 -0.058966 -0.066246 -0.073501 -0.080728 -0.087924 -0.095083 -0.102203 -0.109281 -0.116313 -0.123297 -0.130229 -0.137107 -0.143928 +0.371648 0.372265 0.372655 0.372825 0.372781 0.372527 0.372070 0.371416 0.370570 0.369537 0.368323 0.366933 0.365370 0.363640 0.361747 0.359695 0.357490 0.355135 0.352635 0.349993 0.347214 0.344301 0.341258 0.338088 0.334795 0.331382 0.327852 0.324208 0.320454 0.316591 0.312621 0.308548 0.304372 0.300094 0.295715 0.291235 0.286655 0.281975 0.277196 0.272318 0.267342 0.262267 0.257094 0.251824 0.246458 0.240995 0.235436 0.229783 0.224034 0.218192 0.212257 0.206229 0.200109 0.193897 0.187595 0.181204 0.174723 0.168153 0.161497 0.154755 0.147927 0.141016 0.134023 0.126950 0.119797 0.112568 0.105263 0.097887 0.090440 0.082927 0.075349 0.067712 0.060017 0.052270 0.044473 0.036632 0.028749 0.020830 0.012878 0.004899 -0.003104 -0.011125 -0.019161 -0.027206 -0.035255 -0.043305 -0.051350 -0.059387 -0.067410 -0.075415 -0.083398 -0.091354 -0.099279 -0.107169 -0.115020 -0.122828 -0.130590 -0.138301 -0.145960 -0.153563 -0.161107 -0.168589 -0.176006 -0.183356 +0.393700 0.393853 0.393787 0.393507 0.393019 0.392328 0.391438 0.390353 0.389079 0.387619 0.385978 0.384161 0.382173 0.380017 0.377698 0.375218 0.372583 0.369795 0.366860 0.363779 0.360556 0.357196 0.353701 0.350076 0.346322 0.342443 0.338442 0.334321 0.330082 0.325727 0.321257 0.316672 0.311974 0.307162 0.302238 0.297201 0.292052 0.286792 0.281422 0.275942 0.270353 0.264655 0.258850 0.252938 0.246919 0.240795 0.234565 0.228232 0.221795 0.215256 0.208615 0.201872 0.195030 0.188087 0.181046 0.173906 0.166670 0.159339 0.151913 0.144395 0.136786 0.129087 0.121300 0.113429 0.105474 0.097439 0.089326 0.081138 0.072880 0.064555 0.056167 0.047720 0.039218 0.030666 0.022067 0.013427 0.004751 -0.003958 -0.012693 -0.021451 -0.030227 -0.039014 -0.047809 -0.056605 -0.065399 -0.074185 -0.082957 -0.091712 -0.100444 -0.109148 -0.117819 -0.126454 -0.135046 -0.143593 -0.152090 -0.160534 -0.168921 -0.177248 -0.185511 -0.193707 -0.201833 -0.209886 -0.217862 -0.225759 +0.412622 0.412449 0.412057 0.411452 0.410637 0.409617 0.408396 0.406979 0.405369 0.403569 0.401583 0.399416 0.397071 0.394552 0.391864 0.389011 0.385996 0.382821 0.379492 0.376010 0.372380 0.368605 0.364689 0.360633 0.356441 0.352115 0.347656 0.343067 0.338348 0.333500 0.328523 0.323419 0.318188 0.312831 0.307349 0.301744 0.296014 0.290163 0.284189 0.278095 0.271881 0.265548 0.259096 0.252528 0.245843 0.239042 0.232126 0.225096 0.217952 0.210696 0.203329 0.195850 0.188262 0.180565 0.172760 0.164848 0.156832 0.148713 0.140491 0.132170 0.123751 0.115236 0.106628 0.097930 0.089145 0.080276 0.071328 0.062303 0.053208 0.044045 0.034820 0.025537 0.016201 0.006816 -0.002613 -0.012080 -0.021580 -0.031108 -0.040659 -0.050227 -0.059807 -0.069392 -0.078976 -0.088556 -0.098124 -0.107675 -0.117204 -0.126705 -0.136174 -0.145604 -0.154991 -0.164330 -0.173616 -0.182847 -0.192017 -0.201122 -0.210160 -0.219126 -0.228016 -0.236827 -0.245554 -0.254195 -0.262745 -0.271201 +0.428567 0.428210 0.427626 0.426819 0.425794 0.424553 0.423102 0.421443 0.419581 0.417521 0.415264 0.412816 0.410179 0.407359 0.404358 0.401181 0.397833 0.394316 0.390633 0.386788 0.382785 0.378625 0.374311 0.369846 0.365231 0.360469 0.355559 0.350505 0.345306 0.339964 0.334480 0.328854 0.323089 0.317185 0.311143 0.304964 0.298649 0.292199 0.285616 0.278900 0.272051 0.265072 0.257963 0.250724 0.243358 0.235864 0.228244 0.220498 0.212628 0.204634 0.196517 0.188279 0.179920 0.171443 0.162847 0.154136 0.145311 0.136373 0.127326 0.118170 0.108909 0.099546 0.090085 0.080528 0.070881 0.061148 0.051332 0.041439 0.031474 0.021440 0.011343 0.001187 -0.009021 -0.019276 -0.029573 -0.039906 -0.050268 -0.060655 -0.071058 -0.081473 -0.091892 -0.102309 -0.112719 -0.123115 -0.133491 -0.143840 -0.154157 -0.164436 -0.174671 -0.184856 -0.194987 -0.205058 -0.215066 -0.225006 -0.234874 -0.244665 -0.254375 -0.264000 -0.273535 -0.282977 -0.292322 -0.301564 -0.310700 -0.319726 +0.441618 0.441224 0.440583 0.439700 0.438578 0.437224 0.435641 0.433835 0.431808 0.429567 0.427114 0.424455 0.421593 0.418531 0.415275 0.411827 0.408192 0.404375 0.400378 0.396204 0.391856 0.387337 0.382648 0.377793 0.372771 0.367585 0.362236 0.356726 0.351055 0.345226 0.339240 0.333098 0.326801 0.320350 0.313747 0.306992 0.300088 0.293034 0.285833 0.278486 0.270992 0.263354 0.255573 0.247650 0.239585 0.231379 0.223034 0.214551 0.205930 0.197173 0.188280 0.179254 0.170096 0.160807 0.151390 0.141846 0.132177 0.122386 0.112476 0.102450 0.092311 0.082064 0.071713 0.061262 0.050715 0.040078 0.029355 0.018551 0.007672 -0.003277 -0.014290 -0.025362 -0.036486 -0.047655 -0.058864 -0.070104 -0.081371 -0.092656 -0.103952 -0.115253 -0.126550 -0.137839 -0.149110 -0.160357 -0.171574 -0.182753 -0.193888 -0.204973 -0.216002 -0.226969 -0.237870 -0.248700 -0.259454 -0.270127 -0.280714 -0.291211 -0.301613 -0.311914 -0.322111 -0.332198 -0.342171 -0.352025 -0.361756 -0.371359 +0.451764 0.451501 0.450955 0.450134 0.449043 0.447692 0.446086 0.444231 0.442132 0.439795 0.437225 0.434426 0.431404 0.428163 0.424707 0.421042 0.417170 0.413096 0.408825 0.404358 0.399699 0.394850 0.389812 0.384588 0.379179 0.373587 0.367814 0.361860 0.355729 0.349422 0.342939 0.336284 0.329456 0.322459 0.315292 0.307958 0.300458 0.292793 0.284964 0.276973 0.268821 0.260509 0.252038 0.243409 0.234624 0.225683 0.216588 0.207339 0.197939 0.188388 0.178687 0.168840 0.158848 0.148711 0.138434 0.128019 0.117467 0.106783 0.095971 0.085033 0.073974 0.062800 0.051514 0.040122 0.028628 0.017039 0.005360 -0.006403 -0.018244 -0.030156 -0.042134 -0.054170 -0.066256 -0.078386 -0.090552 -0.102746 -0.114959 -0.127185 -0.139414 -0.151640 -0.163853 -0.176047 -0.188212 -0.200342 -0.212429 -0.224466 -0.236446 -0.248364 -0.260214 -0.271990 -0.283687 -0.295299 -0.306822 -0.318249 -0.329575 -0.340795 -0.351904 -0.362896 -0.373767 -0.384512 -0.395124 -0.405600 -0.415935 -0.426122 +0.459010 0.459033 0.458752 0.458152 0.457237 0.456019 0.454506 0.452709 0.450636 0.448293 0.445689 0.442829 0.439720 0.436367 0.432775 0.428949 0.424893 0.420612 0.416109 0.411388 0.406452 0.401302 0.395941 0.390372 0.384595 0.378613 0.372428 0.366043 0.359460 0.352680 0.345706 0.338539 0.331181 0.323633 0.315897 0.307976 0.299870 0.291581 0.283110 0.274459 0.265629 0.256621 0.247438 0.238079 0.228546 0.218841 0.208964 0.198918 0.188703 0.178323 0.167778 0.157070 0.146203 0.135178 0.123998 0.112666 0.101186 0.089562 0.077798 0.065899 0.053871 0.041718 0.029446 0.017061 0.004569 -0.008023 -0.020710 -0.033485 -0.046339 -0.059267 -0.072259 -0.085308 -0.098405 -0.111542 -0.124710 -0.137899 -0.151100 -0.164304 -0.177503 -0.190688 -0.203849 -0.216978 -0.230068 -0.243109 -0.256094 -0.269016 -0.281870 -0.294648 -0.307344 -0.319954 -0.332469 -0.344886 -0.357197 -0.369397 -0.381480 -0.393441 -0.405274 -0.416972 -0.428531 -0.439944 -0.451206 -0.462311 -0.473250 -0.484013 +0.463552 0.463969 0.464047 0.463790 0.463201 0.462264 0.460982 0.459367 0.457431 0.455185 0.452640 0.449804 0.446686 0.443292 0.439627 0.435699 0.431512 0.427069 0.422375 0.417435 0.412252 0.406829 0.401168 0.395273 0.389146 0.382790 0.376206 0.369398 0.362368 0.355119 0.347652 0.339971 0.332076 0.323971 0.315656 0.307134 0.298407 0.289477 0.280344 0.271011 0.261480 0.251751 0.241826 0.231706 0.221394 0.210890 0.200196 0.189314 0.178247 0.166995 0.155562 0.143949 0.132159 0.120195 0.108061 0.095761 0.083300 0.070683 0.057915 0.045002 0.031949 0.018764 0.005451 -0.007981 -0.021527 -0.035178 -0.048927 -0.062766 -0.076686 -0.090679 -0.104734 -0.118843 -0.132995 -0.147180 -0.161389 -0.175610 -0.189835 -0.204053 -0.218255 -0.232431 -0.246571 -0.260666 -0.274707 -0.288687 -0.302598 -0.316433 -0.330186 -0.343850 -0.357419 -0.370885 -0.384243 -0.397486 -0.410607 -0.423601 -0.436460 -0.449178 -0.461749 -0.474165 -0.486418 -0.498498 -0.510386 -0.522062 -0.533561 -0.544895 +0.465591 0.466499 0.467069 0.467270 0.467093 0.466543 0.465626 0.464330 0.462655 0.460617 0.458228 0.455503 0.452451 0.449083 0.445408 0.441431 0.437159 0.432598 0.427752 0.422625 0.417224 0.411552 0.405613 0.399410 0.392947 0.386225 0.379249 0.372022 0.364546 0.356826 0.348862 0.340659 0.332218 0.323542 0.314634 0.305495 0.296127 0.286534 0.276715 0.266674 0.256412 0.245930 0.235231 0.224316 0.213186 0.201844 0.190291 0.178530 0.166562 0.154389 0.142015 0.129443 0.116676 0.103720 0.090577 0.077255 0.063758 0.050092 0.036264 0.022280 0.008147 -0.006129 -0.020539 -0.035075 -0.049729 -0.064492 -0.079355 -0.094308 -0.109341 -0.124444 -0.139606 -0.154816 -0.170063 -0.185336 -0.200623 -0.215913 -0.231196 -0.246461 -0.261697 -0.276893 -0.292040 -0.307129 -0.322151 -0.337099 -0.351965 -0.366742 -0.381423 -0.396000 -0.410467 -0.424816 -0.439039 -0.453130 -0.467082 -0.480886 -0.494533 -0.508014 -0.521310 -0.534396 -0.547286 -0.560019 -0.572566 -0.584902 -0.597013 -0.608947 +0.465570 0.466982 0.468057 0.468790 0.469147 0.469090 0.468611 0.467722 0.466423 0.464705 0.462574 0.460046 0.457140 0.453866 0.450237 0.446263 0.441952 0.437311 0.432347 0.427064 0.421469 0.415568 0.409367 0.402869 0.396078 0.388998 0.381633 0.373986 0.366062 0.357864 0.349395 0.340659 0.331658 0.322396 0.312875 0.303097 0.293065 0.282782 0.272249 0.261468 0.250442 0.239171 0.227659 0.215906 0.203914 0.191686 0.179224 0.166531 0.153609 0.140461 0.127092 0.113505 0.099706 0.085700 0.071493 0.057091 0.042500 0.027728 0.012781 -0.002332 -0.017603 -0.033023 -0.048584 -0.064276 -0.080089 -0.096013 -0.112037 -0.128150 -0.144341 -0.160597 -0.176907 -0.193258 -0.209638 -0.226034 -0.242435 -0.258828 -0.275201 -0.291543 -0.307843 -0.324091 -0.340276 -0.356391 -0.372426 -0.388374 -0.404226 -0.419975 -0.435613 -0.451130 -0.466520 -0.481774 -0.496882 -0.511835 -0.526617 -0.541202 -0.555568 -0.569782 -0.583824 -0.597664 -0.611272 -0.624692 -0.637930 -0.650957 -0.663736 -0.676282 +0.463771 0.465774 0.467410 0.468667 0.469548 0.470044 0.470115 0.469717 0.468854 0.467538 0.465764 0.463527 0.460842 0.457729 0.454204 0.450281 0.445972 0.441287 0.436234 0.430822 0.425056 0.418944 0.412493 0.405710 0.398598 0.391163 0.383408 0.375339 0.366961 0.358276 0.349291 0.340007 0.330429 0.320560 0.310403 0.299962 0.289237 0.278233 0.266951 0.255394 0.243562 0.231459 0.219086 0.206446 0.193542 0.180376 0.166951 0.153271 0.139339 0.125160 0.110738 0.096080 0.081191 0.066078 0.050748 0.035208 0.019466 0.003531 -0.012589 -0.028884 -0.045345 -0.061961 -0.078723 -0.095620 -0.112640 -0.129771 -0.147002 -0.164319 -0.181710 -0.199160 -0.216657 -0.234186 -0.251735 -0.269291 -0.286839 -0.304369 -0.321866 -0.339320 -0.356718 -0.374052 -0.391310 -0.408484 -0.425566 -0.442546 -0.459415 -0.476163 -0.492783 -0.509262 -0.525588 -0.541740 -0.557679 -0.573430 -0.589040 -0.604467 -0.619672 -0.634665 -0.649490 -0.664119 -0.678514 -0.692640 -0.706549 -0.720216 -0.733679 -0.746901 +0.460366 0.463025 0.465304 0.467173 0.468620 0.469641 0.470241 0.470403 0.470072 0.469217 0.467853 0.465983 0.463603 0.460720 0.457358 0.453536 0.449270 0.444576 0.439465 0.433947 0.428030 0.421724 0.415036 0.407975 0.400547 0.392757 0.384611 0.376114 0.367272 0.358090 0.348572 0.338723 0.328547 0.318047 0.307227 0.296089 0.284637 0.272873 0.260801 0.248421 0.235738 0.222754 0.209471 0.195893 0.182022 0.167864 0.153420 0.138697 0.123698 0.108430 0.092899 0.077111 0.061076 0.044800 0.028291 0.011560 -0.005386 -0.022536 -0.039880 -0.057408 -0.075109 -0.092971 -0.110983 -0.129132 -0.147405 -0.165788 -0.184269 -0.202832 -0.221463 -0.240147 -0.258869 -0.277616 -0.296372 -0.315125 -0.333859 -0.352561 -0.371219 -0.389820 -0.408353 -0.426807 -0.445173 -0.463441 -0.481601 -0.499641 -0.517549 -0.535310 -0.552897 -0.570260 -0.587477 -0.604550 -0.621431 -0.638084 -0.654562 -0.670871 -0.686973 -0.702817 -0.718402 -0.733758 -0.748902 -0.763823 -0.778476 -0.792895 -0.807071 -0.821049 +0.455551 0.458865 0.461814 0.464353 0.466449 0.468075 0.469222 0.469897 0.470101 0.469791 0.468908 0.467452 0.465434 0.462856 0.459721 0.456054 0.451877 0.447210 0.442071 0.436472 0.430424 0.423939 0.417024 0.409692 0.401950 0.393805 0.385263 0.376330 0.367012 0.357316 0.347247 0.336809 0.326007 0.314844 0.303326 0.291454 0.279234 0.266668 0.253760 0.240512 0.226928 0.213012 0.198766 0.184196 0.169304 0.154097 0.138579 0.122756 0.106635 0.090223 0.073528 0.056559 0.039325 0.021833 0.004095 -0.013879 -0.032080 -0.050497 -0.069116 -0.087927 -0.106917 -0.126073 -0.145381 -0.164828 -0.184398 -0.204078 -0.223852 -0.243703 -0.263617 -0.283576 -0.303566 -0.323571 -0.343575 -0.363563 -0.383520 -0.403433 -0.423288 -0.443073 -0.462777 -0.482387 -0.501893 -0.521280 -0.540529 -0.559607 -0.578463 -0.597205 -0.615804 -0.634203 -0.652392 -0.670429 -0.688296 -0.705951 -0.723322 -0.740456 -0.757370 -0.774091 -0.790556 -0.806750 -0.822704 -0.838450 -0.853985 -0.869260 -0.884249 -0.898996 +0.449570 0.453467 0.457055 0.460264 0.463036 0.465336 0.467120 0.468368 0.469088 0.469286 0.468938 0.467974 0.466369 0.464142 0.461301 0.457847 0.453808 0.449209 0.444072 0.438417 0.432257 0.425607 0.418477 0.410878 0.402823 0.394318 0.385371 0.375989 0.366179 0.355947 0.345300 0.334243 0.322782 0.310922 0.298667 0.286022 0.272991 0.259577 0.245786 0.231620 0.217085 0.202184 0.186923 0.171306 0.155340 0.139031 0.122386 0.105412 0.088118 0.070511 0.052602 0.034400 0.015915 -0.002843 -0.021862 -0.041131 -0.060637 -0.080369 -0.100312 -0.120454 -0.140781 -0.161278 -0.181930 -0.202722 -0.223637 -0.244659 -0.265772 -0.286957 -0.308197 -0.329475 -0.350774 -0.372078 -0.393370 -0.414633 -0.435852 -0.457013 -0.478102 -0.499106 -0.520008 -0.540789 -0.561408 -0.581810 -0.602124 -0.622306 -0.642285 -0.662079 -0.681739 -0.701233 -0.720514 -0.739493 -0.758255 -0.776826 -0.795201 -0.813294 -0.831131 -0.848742 -0.866167 -0.883362 -0.900270 -0.916881 -0.933248 -0.949407 -0.965313 -0.980948 +0.442677 0.447054 0.451199 0.455033 0.458463 0.461436 0.463900 0.465809 0.467126 0.467849 0.467994 0.467543 0.466428 0.464605 0.462096 0.458916 0.455068 0.450579 0.445479 0.439792 0.433540 0.426737 0.419399 0.411536 0.403163 0.394289 0.384924 0.375074 0.364748 0.353955 0.342702 0.330995 0.318840 0.306244 0.293213 0.279751 0.265863 0.251556 0.236833 0.221700 0.206164 0.190229 0.173902 0.157190 0.140101 0.122642 0.104820 0.086646 0.068128 0.049277 0.030103 0.010617 -0.009169 -0.029243 -0.049592 -0.070204 -0.091066 -0.112163 -0.133480 -0.155003 -0.176717 -0.198605 -0.220650 -0.242836 -0.265145 -0.287557 -0.310055 -0.332619 -0.355230 -0.377871 -0.400522 -0.423166 -0.445784 -0.468361 -0.490878 -0.513318 -0.535659 -0.557859 -0.579844 -0.601765 -0.623574 -0.645190 -0.666641 -0.687976 -0.709158 -0.730132 -0.750790 -0.771258 -0.791558 -0.811664 -0.831465 -0.851028 -0.870409 -0.889602 -0.908558 -0.927207 -0.945544 -0.963669 -0.981575 -0.999199 -1.016533 -1.033553 -1.050369 -1.066964 +0.435068 0.439840 0.444449 0.448817 0.452860 0.456483 0.459611 0.462196 0.464183 0.465519 0.466196 0.466229 0.465603 0.464252 0.462129 0.459256 0.455651 0.451318 0.446291 0.440598 0.434269 0.427323 0.419778 0.411648 0.402949 0.393694 0.383892 0.373555 0.362690 0.351308 0.339417 0.327025 0.314141 0.300770 0.286921 0.272599 0.257812 0.242565 0.226866 0.210722 0.194138 0.177124 0.159686 0.141832 0.123572 0.104913 0.085867 0.066444 0.046654 0.026509 0.006021 -0.014797 -0.035934 -0.057374 -0.079105 -0.101112 -0.123381 -0.145895 -0.168638 -0.191595 -0.214747 -0.238078 -0.261568 -0.285198 -0.308948 -0.332798 -0.356728 -0.380716 -0.404743 -0.428788 -0.452832 -0.476855 -0.500834 -0.524746 -0.548551 -0.572149 -0.595689 -0.619156 -0.642447 -0.665594 -0.688643 -0.711561 -0.734289 -0.756686 -0.778924 -0.801015 -0.822920 -0.844506 -0.865875 -0.887103 -0.908145 -0.928953 -0.949442 -0.969607 -0.989601 -1.009364 -1.028825 -1.047972 -1.066815 -1.085464 -1.103865 -1.122001 -1.139845 -1.157353 +0.426947 0.432032 0.437007 0.441813 0.446367 0.450587 0.454364 0.457602 0.460252 0.462258 0.463552 0.464117 0.463964 0.463076 0.461396 0.458878 0.455543 0.451410 0.446488 0.440814 0.434420 0.427338 0.419587 0.411187 0.402152 0.392501 0.382246 0.371398 0.359968 0.347968 0.335408 0.322298 0.308647 0.294465 0.279759 0.264539 0.248811 0.232586 0.215869 0.198669 0.180996 0.162857 0.144262 0.125220 0.105742 0.085839 0.065521 0.044801 0.023690 0.002202 -0.019650 -0.041853 -0.064391 -0.087251 -0.110417 -0.133873 -0.157602 -0.181587 -0.205811 -0.230254 -0.254898 -0.279723 -0.304708 -0.329832 -0.355073 -0.380409 -0.405816 -0.431274 -0.456758 -0.482246 -0.507711 -0.533116 -0.558352 -0.583498 -0.608636 -0.633622 -0.658497 -0.683275 -0.707964 -0.732489 -0.756685 -0.780734 -0.804662 -0.828426 -0.851863 -0.875105 -0.898241 -0.921203 -0.943940 -0.966360 -0.988443 -1.010394 -1.032113 -1.053523 -1.074585 -1.095393 -1.115996 -1.136337 -1.156397 -1.176145 -1.195520 -1.214632 -1.233515 -1.252135 +0.418406 0.423784 0.429068 0.434222 0.439183 0.443885 0.448240 0.452126 0.455422 0.458072 0.460025 0.461201 0.461569 0.461130 0.459879 0.457761 0.454732 0.450818 0.446038 0.440406 0.433966 0.426753 0.418797 0.410119 0.400739 0.390677 0.379949 0.368569 0.356549 0.343903 0.330644 0.316785 0.302336 0.287309 0.271712 0.255557 0.238852 0.221607 0.203832 0.185536 0.166730 0.147423 0.127627 0.107353 0.086611 0.065415 0.043777 0.021710 -0.000772 -0.023655 -0.046924 -0.070564 -0.094559 -0.118893 -0.143549 -0.168508 -0.193753 -0.219264 -0.245022 -0.271006 -0.297195 -0.323567 -0.350099 -0.376767 -0.403546 -0.430412 -0.457340 -0.484301 -0.511262 -0.538133 -0.564858 -0.591648 -0.618335 -0.644950 -0.671452 -0.697924 -0.724272 -0.750338 -0.776202 -0.801993 -0.827662 -0.853013 -0.878167 -0.903260 -0.928200 -0.952934 -0.977377 -1.001438 -1.025417 -1.049177 -1.072637 -1.095712 -1.118589 -1.141256 -1.163658 -1.185772 -1.207568 -1.228962 -1.250066 -1.270943 -1.291532 -1.311779 -1.331718 -1.351357 +0.409451 0.415140 0.420730 0.426197 0.431495 0.436575 0.441384 0.445824 0.449760 0.453047 0.455620 0.457430 0.458386 0.458440 0.457600 0.455869 0.453188 0.449522 0.444900 0.439339 0.432868 0.425532 0.417371 0.408411 0.398677 0.388190 0.376972 0.365041 0.352409 0.339095 0.325113 0.310477 0.295200 0.279295 0.262774 0.245647 0.227928 0.209626 0.190753 0.171321 0.151340 0.130822 0.109780 0.088226 0.066174 0.043636 0.020627 -0.002839 -0.026745 -0.051077 -0.075818 -0.100951 -0.126458 -0.152322 -0.178524 -0.205043 -0.231859 -0.258952 -0.286299 -0.313878 -0.341665 -0.369635 -0.397762 -0.426020 -0.454380 -0.482808 -0.511255 -0.539562 -0.567903 -0.596287 -0.624583 -0.652813 -0.681052 -0.709223 -0.737210 -0.764881 -0.792545 -0.820143 -0.847474 -0.874547 -0.901628 -0.928589 -0.955371 -0.981907 -1.008004 -1.034067 -1.059937 -1.085535 -1.110709 -1.135729 -1.160553 -1.185119 -1.209402 -1.233368 -1.256916 -1.280154 -1.303170 -1.325881 -1.348221 -1.370216 -1.391910 -1.413365 -1.434544 -1.455440 +0.400062 0.406092 0.412005 0.417793 0.423408 0.428813 0.433976 0.438837 0.443298 0.447207 0.450398 0.452800 0.454362 0.454968 0.454578 0.453212 0.450871 0.447487 0.443043 0.437572 0.431091 0.423644 0.415279 0.406036 0.395941 0.385022 0.373303 0.360804 0.347544 0.333539 0.318809 0.303369 0.287235 0.270422 0.252943 0.234812 0.216042 0.196646 0.176635 0.156024 0.134824 0.113050 0.090715 0.067833 0.044419 0.020488 -0.003945 -0.028862 -0.054247 -0.080084 -0.106352 -0.133034 -0.160111 -0.187562 -0.215366 -0.243501 -0.271946 -0.300676 -0.329667 -0.358893 -0.388328 -0.417944 -0.447708 -0.477581 -0.507430 -0.537231 -0.567213 -0.597137 -0.627112 -0.657029 -0.686993 -0.716862 -0.746386 -0.775912 -0.805429 -0.834775 -0.863783 -0.892851 -0.921857 -0.950720 -0.979380 -1.007592 -1.035771 -1.063804 -1.091598 -1.118966 -1.146172 -1.173226 -1.200039 -1.226583 -1.252824 -1.278643 -1.304134 -1.329416 -1.354391 -1.378981 -1.403190 -1.427097 -1.450742 -1.474087 -1.497122 -1.519845 -1.542221 -1.564322 +0.390216 0.396614 0.402872 0.408993 0.414931 0.420648 0.426122 0.431317 0.436168 0.440575 0.444369 0.447364 0.449485 0.450658 0.450769 0.449799 0.447773 0.444677 0.440441 0.435073 0.428605 0.421064 0.412507 0.402983 0.392526 0.381168 0.368936 0.355857 0.341949 0.327234 0.311733 0.295464 0.278446 0.260694 0.242226 0.223055 0.203196 0.182665 0.161475 0.139641 0.117177 0.094099 0.070422 0.046161 0.021334 -0.004044 -0.029954 -0.056378 -0.083298 -0.110695 -0.138548 -0.166837 -0.195540 -0.224636 -0.254099 -0.283908 -0.314036 -0.344457 -0.375144 -0.406066 -0.437189 -0.468465 -0.499698 -0.531027 -0.562540 -0.594088 -0.625644 -0.657319 -0.689000 -0.720497 -0.751786 -0.783151 -0.814503 -0.845502 -0.876497 -0.907544 -0.938498 -0.969299 -0.999788 -1.029992 -1.060220 -1.090253 -1.119891 -1.149317 -1.178655 -1.207778 -1.236653 -1.265248 -1.293475 -1.321276 -1.348928 -1.376284 -1.403290 -1.429826 -1.456094 -1.482086 -1.507761 -1.533104 -1.558111 -1.582740 -1.607063 -1.631037 -1.654724 -1.678113 +0.379876 0.386661 0.393285 0.399756 0.406031 0.412067 0.417846 0.423342 0.428507 0.433275 0.437542 0.441116 0.443798 0.445496 0.446131 0.445603 0.443908 0.441076 0.437072 0.431835 0.425398 0.417785 0.409049 0.399249 0.388430 0.376628 0.363875 0.350202 0.335631 0.320186 0.303892 0.286768 0.268836 0.250115 0.230621 0.210373 0.189387 0.167679 0.145266 0.122163 0.098388 0.073957 0.048887 0.023195 -0.003098 -0.029976 -0.057419 -0.085407 -0.113919 -0.142934 -0.172429 -0.202383 -0.232770 -0.263567 -0.294747 -0.326283 -0.358148 -0.390308 -0.422729 -0.455344 -0.487861 -0.520748 -0.553711 -0.586904 -0.620075 -0.653448 -0.686807 -0.719874 -0.753031 -0.786294 -0.819350 -0.852208 -0.885257 -0.918284 -0.951215 -0.983934 -1.016253 -1.048679 -1.080969 -1.112988 -1.144603 -1.176257 -1.207735 -1.238993 -1.270000 -1.300681 -1.330943 -1.360993 -1.390821 -1.420325 -1.449336 -1.478108 -1.506561 -1.534717 -1.562530 -1.589988 -1.617057 -1.643768 -1.670111 -1.696140 -1.721841 -1.747204 -1.772191 -1.796863 +0.369012 0.376204 0.383212 0.390048 0.396675 0.403037 0.409123 0.414915 0.420369 0.425430 0.430033 0.434065 0.437302 0.439519 0.440642 0.440592 0.439276 0.436716 0.432930 0.427855 0.421465 0.413803 0.404905 0.394836 0.383657 0.371408 0.358126 0.343846 0.328596 0.312401 0.295288 0.277282 0.258406 0.238680 0.218126 0.196762 0.174607 0.151679 0.127997 0.103579 0.078444 0.052609 0.026095 -0.001080 -0.028895 -0.057329 -0.086360 -0.115968 -0.146129 -0.176820 -0.208016 -0.239691 -0.271820 -0.304374 -0.337324 -0.370637 -0.404274 -0.438032 -0.471941 -0.506275 -0.540696 -0.575402 -0.610194 -0.645222 -0.680175 -0.714977 -0.749955 -0.785053 -0.819838 -0.854689 -0.889736 -0.924757 -0.959681 -0.994310 -1.028736 -1.063274 -1.097643 -1.131543 -1.165500 -1.199354 -1.233026 -1.266483 -1.299682 -1.332472 -1.364958 -1.397320 -1.429391 -1.460992 -1.492342 -1.523368 -1.554126 -1.584544 -1.614605 -1.644291 -1.673549 -1.702441 -1.730989 -1.759187 -1.787018 -1.814437 -1.841503 -1.868278 -1.894732 -1.920869 +0.357591 0.365209 0.372616 0.379828 0.386820 0.393522 0.399922 0.406011 0.411748 0.417084 0.421965 0.426317 0.430004 0.432754 0.434356 0.434760 0.433865 0.431611 0.428036 0.423131 0.416817 0.409121 0.400079 0.389753 0.378215 0.365515 0.351695 0.336795 0.320846 0.303878 0.285922 0.267004 0.247151 0.226386 0.204733 0.182213 0.158846 0.134655 0.109658 0.083876 0.057331 0.030041 0.002030 -0.026683 -0.056073 -0.086119 -0.116797 -0.148083 -0.179951 -0.212375 -0.245328 -0.278781 -0.312705 -0.347065 -0.381820 -0.416708 -0.451871 -0.487421 -0.523359 -0.559432 -0.595861 -0.632481 -0.668945 -0.705469 -0.742306 -0.779041 -0.815657 -0.852611 -0.889646 -0.926671 -0.963525 -1.000041 -1.036773 -1.073436 -1.109794 -1.145915 -1.182138 -1.218232 -1.254153 -1.289865 -1.325239 -1.360286 -1.395154 -1.429840 -1.464183 -1.498079 -1.531771 -1.565216 -1.598343 -1.631124 -1.663539 -1.695515 -1.727146 -1.758356 -1.789229 -1.819715 -1.849760 -1.879407 -1.908739 -1.937718 -1.966345 -1.994626 -2.022570 -2.050185 +0.345561 0.353636 0.361465 0.369071 0.376435 0.383489 0.390216 0.396610 0.402636 0.408248 0.413393 0.418008 0.422008 0.425206 0.427307 0.428143 0.427670 0.425763 0.422421 0.417671 0.411459 0.403744 0.394576 0.384003 0.372107 0.358950 0.344582 0.329046 0.312379 0.294615 0.275788 0.255928 0.235064 0.213225 0.190434 0.166716 0.142096 0.116594 0.090235 0.063041 0.035034 0.006237 -0.023325 -0.053630 -0.084653 -0.116368 -0.148749 -0.181769 -0.215400 -0.249614 -0.284379 -0.319660 -0.355413 -0.391339 -0.427635 -0.464368 -0.501657 -0.539084 -0.576994 -0.615017 -0.653142 -0.691286 -0.729898 -0.768316 -0.806808 -0.845721 -0.884733 -0.923754 -0.962600 -1.001169 -1.040045 -1.078824 -1.117141 -1.155667 -1.194159 -1.232532 -1.270748 -1.308759 -1.346375 -1.383754 -1.421076 -1.458140 -1.494704 -1.531161 -1.567291 -1.603192 -1.638774 -1.674012 -1.708871 -1.743298 -1.777335 -1.811041 -1.844353 -1.877235 -1.909627 -1.941705 -1.973405 -2.004721 -2.035657 -2.066218 -2.096414 -2.126252 -2.155744 -2.184900 +0.332893 0.341441 0.349721 0.357746 0.365505 0.372927 0.379993 0.386707 0.393031 0.398921 0.404329 0.409193 0.413446 0.416956 0.419500 0.420791 0.420707 0.419176 0.416097 0.411505 0.405392 0.397679 0.388395 0.377585 0.365331 0.351713 0.336785 0.320596 0.303191 0.284607 0.264880 0.244047 0.222139 0.199187 0.175219 0.150262 0.124343 0.097485 0.069715 0.041058 0.011538 -0.018819 -0.049987 -0.081940 -0.114650 -0.148090 -0.182231 -0.217042 -0.252491 -0.288544 -0.325156 -0.361991 -0.399289 -0.437103 -0.475607 -0.514284 -0.553562 -0.592972 -0.632454 -0.672314 -0.712599 -0.752614 -0.793000 -0.833820 -0.874776 -0.915672 -0.956425 -0.997255 -1.038265 -1.079032 -1.119623 -1.160446 -1.201227 -1.241912 -1.282459 -1.322660 -1.362701 -1.402570 -1.442330 -1.481702 -1.520821 -1.559724 -1.598438 -1.636869 -1.674988 -1.712768 -1.750112 -1.787088 -1.823742 -1.860014 -1.895875 -1.931207 -1.966204 -2.000814 -2.035014 -2.068805 -2.102189 -2.135173 -2.167762 -2.199965 -2.231792 -2.263253 -2.294359 -2.325123 +0.319578 0.328620 0.337369 0.345843 0.354023 0.361834 0.369251 0.376293 0.382929 0.389107 0.394780 0.399895 0.404383 0.408127 0.410992 0.412719 0.413027 0.411847 0.409062 0.404646 0.398619 0.390925 0.381532 0.370495 0.357886 0.343799 0.328298 0.311441 0.293277 0.273847 0.253192 0.231353 0.208366 0.184263 0.159078 0.132839 0.105574 0.077314 0.048084 0.017912 -0.013173 -0.045144 -0.077972 -0.111628 -0.146082 -0.181302 -0.217256 -0.253908 -0.291214 -0.328801 -0.366949 -0.405703 -0.445279 -0.485075 -0.525596 -0.566294 -0.607142 -0.648489 -0.690172 -0.731919 -0.774094 -0.816752 -0.859601 -0.902410 -0.944995 -0.988049 -1.031172 -1.074020 -1.116844 -1.159946 -1.203029 -1.246046 -1.288949 -1.331486 -1.373877 -1.416296 -1.458529 -1.500353 -1.542031 -1.583492 -1.624795 -1.665826 -1.706556 -1.746953 -1.786922 -1.826540 -1.865863 -1.904800 -1.943257 -1.981281 -2.018963 -2.056227 -2.093064 -2.129470 -2.165446 -2.200994 -2.236122 -2.270836 -2.305145 -2.339057 -2.372583 -2.405735 -2.438525 -2.470968 +0.305625 0.315176 0.324411 0.333347 0.341969 0.350196 0.357989 0.365373 0.372329 0.378809 0.384756 0.390120 0.394838 0.398794 0.401882 0.403940 0.404652 0.403800 0.401314 0.397095 0.391155 0.383477 0.373986 0.362728 0.349766 0.335203 0.319118 0.301575 0.282629 0.262328 0.240716 0.217838 0.193735 0.168444 0.141999 0.114433 0.085778 0.056066 0.025326 -0.006411 -0.039114 -0.072753 -0.107295 -0.142708 -0.178958 -0.216009 -0.253818 -0.291975 -0.330798 -0.370323 -0.410809 -0.451568 -0.493183 -0.535035 -0.577120 -0.619820 -0.662769 -0.706189 -0.750018 -0.794421 -0.839085 -0.883758 -0.928246 -0.973351 -1.018437 -1.063381 -1.108523 -1.153891 -1.199276 -1.244632 -1.289897 -1.334828 -1.379658 -1.424576 -1.469152 -1.513580 -1.557847 -1.602011 -1.645956 -1.689649 -1.733059 -1.776068 -1.818748 -1.861169 -1.903241 -1.944930 -1.986068 -2.026935 -2.067400 -2.107441 -2.147044 -2.186201 -2.224910 -2.263170 -2.300984 -2.338357 -2.375296 -2.411810 -2.447907 -2.483598 -2.518895 -2.553809 -2.588356 -2.622550 +0.291029 0.301103 0.310845 0.320264 0.329345 0.338008 0.346203 0.353950 0.361239 0.368026 0.374256 0.379874 0.384817 0.388975 0.392252 0.394526 0.395578 0.395062 0.392851 0.388847 0.383005 0.375329 0.365754 0.354277 0.340964 0.325919 0.309238 0.290991 0.271242 0.250042 0.227442 0.203493 0.178237 0.151717 0.123970 0.095033 0.064941 0.033729 0.001429 -0.031925 -0.066298 -0.101657 -0.137965 -0.175186 -0.213277 -0.251795 -0.291090 -0.331192 -0.372398 -0.413942 -0.456478 -0.499319 -0.542488 -0.586384 -0.630589 -0.675210 -0.720768 -0.766795 -0.813166 -0.859616 -0.905935 -0.953012 -1.000082 -1.046971 -1.094434 -1.142041 -1.189712 -1.237399 -1.284798 -1.332262 -1.379649 -1.427077 -1.474142 -1.521175 -1.568066 -1.614895 -1.661531 -1.707938 -1.754084 -1.799839 -1.845298 -1.890532 -1.935430 -1.979874 -2.023923 -2.067673 -2.111023 -2.153950 -2.196439 -2.238477 -2.280055 -2.321168 -2.361816 -2.401998 -2.441720 -2.480989 -2.519811 -2.558196 -2.596155 -2.633698 -2.670838 -2.707589 -2.743966 -2.779985 +0.275821 0.286415 0.296677 0.306599 0.316157 0.325269 0.333882 0.342015 0.349653 0.356755 0.363273 0.369153 0.374321 0.378671 0.382122 0.384558 0.385831 0.385641 0.383690 0.379897 0.374168 0.366489 0.356829 0.345136 0.331475 0.315941 0.298650 0.279681 0.259105 0.236981 0.213363 0.188306 0.161861 0.134071 0.104980 0.074627 0.043051 0.010290 -0.023620 -0.058641 -0.094735 -0.131864 -0.169984 -0.208623 -0.248159 -0.288616 -0.330327 -0.372446 -0.415705 -0.459089 -0.503415 -0.548330 -0.593629 -0.639465 -0.686407 -0.733912 -0.781660 -0.829960 -0.877997 -0.926946 -0.975772 -1.024806 -1.074402 -1.124196 -1.174116 -1.224108 -1.273822 -1.323593 -1.373556 -1.423493 -1.473087 -1.522630 -1.572261 -1.621783 -1.671143 -1.720307 -1.769145 -1.817705 -1.866093 -1.914202 -1.961990 -2.009249 -2.056316 -2.103027 -2.149350 -2.195262 -2.240743 -2.285778 -2.330351 -2.374452 -2.418075 -2.461215 -2.503872 -2.546050 -2.587754 -2.628991 -2.669770 -2.710101 -2.749995 -2.789465 -2.828524 -2.867187 -2.905471 -2.943392 +0.260062 0.271138 0.281912 0.292349 0.302401 0.311978 0.321022 0.329552 0.337560 0.344993 0.351805 0.357950 0.363343 0.367881 0.371495 0.374073 0.375481 0.375535 0.373848 0.370241 0.364636 0.356961 0.347205 0.335300 0.321289 0.305262 0.287348 0.267639 0.246213 0.223135 0.198467 0.172269 0.144596 0.115497 0.085018 0.053204 0.020097 -0.014261 -0.049830 -0.086567 -0.124429 -0.163362 -0.202888 -0.242990 -0.284958 -0.327416 -0.371169 -0.415099 -0.460147 -0.505876 -0.552078 -0.598937 -0.647074 -0.695881 -0.745008 -0.794840 -0.844451 -0.895135 -0.945735 -0.996682 -1.048311 -1.100213 -1.152317 -1.204562 -1.256564 -1.308697 -1.361121 -1.413305 -1.465679 -1.517804 -1.570108 -1.622336 -1.674441 -1.726389 -1.778027 -1.829439 -1.880728 -1.931762 -1.982414 -2.032710 -2.082795 -2.132539 -2.181914 -2.230896 -2.279463 -2.327595 -2.375275 -2.422486 -2.469214 -2.515452 -2.561192 -2.606432 -2.651175 -2.695423 -2.739184 -2.782466 -2.825278 -2.867631 -2.909537 -2.951010 -2.992065 -3.032718 -3.072986 -3.112887 +0.243800 0.255322 0.266571 0.277514 0.288072 0.298130 0.307619 0.316557 0.324945 0.332728 0.339846 0.346256 0.351878 0.356606 0.360370 0.363077 0.364592 0.364776 0.363326 0.359893 0.354405 0.346739 0.336876 0.324764 0.310400 0.293875 0.275324 0.254855 0.232555 0.208496 0.182747 0.155372 0.126432 0.095982 0.064073 0.030753 -0.003931 -0.039933 -0.077206 -0.115699 -0.155332 -0.195254 -0.236750 -0.279741 -0.323261 -0.367488 -0.413015 -0.459323 -0.506204 -0.553866 -0.602986 -0.652890 -0.703204 -0.753937 -0.805388 -0.857642 -0.909705 -0.962584 -1.016117 -1.070015 -1.124206 -1.178466 -1.232848 -1.287294 -1.342129 -1.396727 -1.451658 -1.506354 -1.561313 -1.616243 -1.671099 -1.725844 -1.780216 -1.834599 -1.888818 -1.942815 -1.996348 -2.049772 -2.102927 -2.155766 -2.208262 -2.260387 -2.312120 -2.363438 -2.414319 -2.464744 -2.514695 -2.564157 -2.613116 -2.661565 -2.709499 -2.756917 -2.803821 -2.850218 -2.896113 -2.941517 -2.986440 -3.030893 -3.074890 -3.118445 -3.161575 -3.204296 -3.246628 -3.288590 +0.227042 0.239008 0.250698 0.262111 0.273166 0.283715 0.293665 0.303025 0.311802 0.319943 0.327384 0.334069 0.339917 0.344836 0.348748 0.351565 0.353173 0.353419 0.352119 0.348863 0.343469 0.335820 0.325845 0.313520 0.298801 0.281771 0.262569 0.241322 0.218123 0.193055 0.166192 0.137605 0.107360 0.075519 0.042136 0.007266 -0.029039 -0.066726 -0.105730 -0.145596 -0.186266 -0.229046 -0.272464 -0.317042 -0.362432 -0.409055 -0.456359 -0.504577 -0.554437 -0.605206 -0.656484 -0.708294 -0.760985 -0.814612 -0.868086 -0.922586 -0.977856 -1.033602 -1.089747 -1.146040 -1.202568 -1.259242 -1.316412 -1.373380 -1.430808 -1.488038 -1.545620 -1.603230 -1.660824 -1.718361 -1.775539 -1.832837 -1.890003 -1.946988 -2.003515 -2.060027 -2.116295 -2.172281 -2.227953 -2.283285 -2.338253 -2.392830 -2.446994 -2.500723 -2.553995 -2.606790 -2.659089 -2.710879 -2.762146 -2.812885 -2.863091 -2.912765 -2.961911 -3.010534 -3.058644 -3.106249 -3.153362 -3.199995 -3.246162 -3.291880 -3.337165 -3.382036 -3.426513 -3.470616 +0.209807 0.222203 0.234329 0.246177 0.257696 0.268731 0.279151 0.288949 0.298127 0.306633 0.314403 0.321376 0.327456 0.332562 0.336622 0.339539 0.341221 0.341507 0.340258 0.337151 0.331832 0.324198 0.314111 0.301560 0.286482 0.268943 0.249076 0.227031 0.202910 0.176804 0.148794 0.118959 0.087372 0.054099 0.019202 -0.017259 -0.055219 -0.094576 -0.134577 -0.176365 -0.219858 -0.264116 -0.308903 -0.356034 -0.402977 -0.451471 -0.501800 -0.553169 -0.605158 -0.657804 -0.711493 -0.766006 -0.820942 -0.876844 -0.933652 -0.991059 -1.048987 -1.107162 -1.165695 -1.224474 -1.283871 -1.343121 -1.402964 -1.462666 -1.522817 -1.583064 -1.643362 -1.703667 -1.763648 -1.823842 -1.883953 -1.943934 -2.003482 -2.063096 -2.122506 -2.181674 -2.240567 -2.299156 -2.357414 -2.415314 -2.472830 -2.529937 -2.586612 -2.642831 -2.698573 -2.753816 -2.808543 -2.862740 -2.916396 -2.969505 -3.022064 -3.074075 -3.125542 -3.176474 -3.226878 -3.276766 -3.326150 -3.375044 -3.423464 -3.471426 -3.518948 -3.566051 -3.612756 -3.659085 +0.192161 0.204924 0.217473 0.229749 0.241693 0.253183 0.264072 0.274318 0.283911 0.292792 0.300897 0.308166 0.314487 0.319779 0.323981 0.326996 0.328732 0.329046 0.327786 0.324750 0.319501 0.311865 0.301669 0.288878 0.273439 0.255381 0.234838 0.211974 0.186906 0.159734 0.130545 0.099427 0.066460 0.031718 -0.004729 -0.042803 -0.082058 -0.122442 -0.165142 -0.208770 -0.253442 -0.299894 -0.347099 -0.395927 -0.445553 -0.497223 -0.549635 -0.602840 -0.657254 -0.712617 -0.768539 -0.825597 -0.883708 -0.942554 -1.002058 -1.061923 -1.122281 -1.183006 -1.244484 -1.305889 -1.368032 -1.430108 -1.492745 -1.555561 -1.618506 -1.681395 -1.744281 -1.807338 -1.870375 -1.933216 -1.995910 -2.058630 -2.121194 -2.183564 -2.245706 -2.307588 -2.369179 -2.430450 -2.491374 -2.551922 -2.612068 -2.671786 -2.731053 -2.789844 -2.848136 -2.905909 -2.963146 -3.019833 -3.075959 -3.131519 -3.186513 -3.240944 -3.294816 -3.348138 -3.400920 -3.453173 -3.504912 -3.556150 -3.606905 -3.657194 -3.707038 -3.756457 -3.805475 -3.854114 +0.174213 0.187230 0.200143 0.212835 0.225191 0.237096 0.248430 0.259125 0.269145 0.278413 0.286859 0.294427 0.300995 0.306479 0.310819 0.313930 0.315710 0.316031 0.314733 0.311676 0.306480 0.298815 0.288511 0.275470 0.259663 0.241079 0.219846 0.196144 0.170104 0.141837 0.111438 0.079004 0.044624 0.008382 -0.029611 -0.068581 -0.109649 -0.152698 -0.196831 -0.242164 -0.289332 -0.337378 -0.386277 -0.437910 -0.490418 -0.544205 -0.598702 -0.654621 -0.711245 -0.769180 -0.828326 -0.888353 -0.949184 -1.010508 -1.072470 -1.134938 -1.198117 -1.261704 -1.325993 -1.390310 -1.455313 -1.520595 -1.586100 -1.651773 -1.717231 -1.783099 -1.849018 -1.914664 -1.980506 -2.046314 -2.112026 -2.177601 -2.243002 -2.308194 -2.373145 -2.437821 -2.502193 -2.566230 -2.629902 -2.693182 -2.756042 -2.818456 -2.880398 -2.941844 -3.002771 -3.063158 -3.122987 -3.182246 -3.240926 -3.299023 -3.356536 -3.413470 -3.469831 -3.525627 -3.580871 -3.635575 -3.689752 -3.743419 -3.796595 -3.849297 -3.901547 -3.953368 -4.004784 -4.055821 +0.156055 0.169215 0.182388 0.195445 0.208204 0.220502 0.232240 0.243368 0.253819 0.263485 0.272284 0.280154 0.286969 0.292652 0.297133 0.300330 0.302149 0.302458 0.301105 0.297961 0.292761 0.285054 0.274631 0.261337 0.245148 0.226029 0.204094 0.179534 0.152499 0.123110 0.091471 0.057691 0.021876 -0.015514 -0.054403 -0.095919 -0.138716 -0.183248 -0.229134 -0.276421 -0.325621 -0.375887 -0.428124 -0.481817 -0.536373 -0.592516 -0.649522 -0.708022 -0.767900 -0.828814 -0.890689 -0.953200 -1.016508 -1.080473 -1.145291 -1.210679 -1.276917 -1.343299 -1.410509 -1.478116 -1.546057 -1.614272 -1.682350 -1.750948 -1.819682 -1.888191 -1.957019 -2.025877 -2.094709 -2.163469 -2.232120 -2.300623 -2.368940 -2.437039 -2.504883 -2.572440 -2.639678 -2.706565 -2.773073 -2.839171 -2.904831 -2.970026 -3.034730 -3.098916 -3.162563 -3.225648 -3.288156 -3.350073 -3.411392 -3.472111 -3.532229 -3.591752 -3.650687 -3.709045 -3.766837 -3.824076 -3.880778 -3.936961 -3.992643 -4.047844 -4.102588 -4.156898 -4.210800 -4.264322 +0.137700 0.150974 0.164291 0.177617 0.190736 0.203419 0.215531 0.227056 0.237929 0.247999 0.257163 0.265340 0.272403 0.278285 0.282911 0.286189 0.288041 0.288325 0.286899 0.283635 0.278343 0.270586 0.260023 0.246470 0.229887 0.210223 0.187574 0.162138 0.134085 0.103549 0.070647 0.035514 -0.001401 -0.040040 -0.081416 -0.124246 -0.168977 -0.215195 -0.262963 -0.311922 -0.363861 -0.416949 -0.470902 -0.527267 -0.583925 -0.642642 -0.702913 -0.764385 -0.826986 -0.890378 -0.954735 -1.019913 -1.086103 -1.153033 -1.220979 -1.289203 -1.358415 -1.428161 -1.498372 -1.568981 -1.639550 -1.710768 -1.782222 -1.853518 -1.925252 -1.997097 -2.068996 -2.140901 -2.212769 -2.284559 -2.356231 -2.427747 -2.499069 -2.570160 -2.640986 -2.711511 -2.781704 -2.851532 -2.920962 -2.989967 -3.058515 -3.126579 -3.194131 -3.261146 -3.327599 -3.393470 -3.458743 -3.523405 -3.587451 -3.650879 -3.713689 -3.775889 -3.837486 -3.898492 -3.958919 -4.018782 -4.078097 -4.136882 -4.195158 -4.252948 -4.310273 -4.367162 -4.423639 -4.479735 +0.119117 0.132528 0.145944 0.159419 0.172816 0.185850 0.198325 0.210210 0.221476 0.231949 0.241483 0.249976 0.257291 0.263371 0.268145 0.271503 0.273374 0.273627 0.272111 0.268702 0.263248 0.255406 0.244681 0.230864 0.213873 0.193656 0.170283 0.143953 0.114863 0.083162 0.049343 0.013189 -0.025326 -0.066333 -0.108622 -0.153736 -0.199654 -0.247802 -0.297710 -0.349857 -0.403784 -0.458878 -0.515555 -0.573682 -0.633967 -0.695629 -0.758598 -0.822524 -0.887594 -0.953663 -1.020914 -1.089084 -1.158265 -1.228252 -1.299215 -1.370868 -1.443136 -1.515946 -1.588834 -1.662517 -1.736555 -1.810525 -1.885064 -1.959808 -2.034695 -2.109676 -2.184705 -2.259736 -2.334726 -2.409634 -2.484416 -2.559035 -2.633450 -2.707625 -2.781523 -2.855108 -2.928345 -3.001203 -3.073647 -3.145647 -3.217173 -3.288196 -3.358686 -3.428617 -3.497966 -3.566711 -3.634838 -3.702335 -3.769196 -3.835422 -3.901014 -3.965979 -4.030328 -4.094071 -4.157222 -4.219797 -4.281813 -4.343291 -4.404251 -4.464718 -4.524716 -4.584272 -4.643416 -4.702178 + + +# Thrust coefficient + +0.193667 0.194522 0.195388 0.196264 0.197147 0.198036 0.198930 0.199826 0.200723 0.201617 0.202508 0.203392 0.204268 0.205131 0.205981 0.206814 0.207627 0.208417 0.209181 0.209916 0.210620 0.211288 0.211918 0.212507 0.213051 0.213547 0.213992 0.214382 0.214716 0.214989 0.215200 0.215345 0.215423 0.215430 0.215365 0.215225 0.215010 0.214717 0.214345 0.213893 0.213360 0.212746 0.212051 0.211274 0.210415 0.209476 0.208456 0.207358 0.206182 0.204930 0.203605 0.202207 0.200739 0.199203 0.197602 0.195938 0.194214 0.192432 0.190594 0.188703 0.186761 0.184771 0.182735 0.180656 0.178534 0.176374 0.174176 0.171943 0.169677 0.167379 0.165051 0.162695 0.160312 0.157903 0.155469 0.153013 0.150533 0.148033 0.145511 0.142970 0.140409 0.137829 0.135231 0.132614 0.129979 0.127327 0.124658 0.121972 0.119270 0.116551 0.113816 0.111066 0.108299 0.105518 0.102721 0.099909 0.097083 0.094242 0.091389 0.088522 0.085642 0.082750 0.079846 0.076932 +0.225979 0.227069 0.228158 0.229243 0.230322 0.231390 0.232447 0.233487 0.234508 0.235507 0.236480 0.237422 0.238331 0.239203 0.240033 0.240818 0.241555 0.242238 0.242864 0.243429 0.243929 0.244360 0.244720 0.245003 0.245208 0.245332 0.245371 0.245323 0.245185 0.244956 0.244634 0.244217 0.243704 0.243094 0.242387 0.241582 0.240680 0.239681 0.238585 0.237394 0.236109 0.234733 0.233268 0.231716 0.230079 0.228361 0.226565 0.224693 0.222749 0.220736 0.218658 0.216516 0.214314 0.212056 0.209743 0.207380 0.204968 0.202511 0.200011 0.197470 0.194891 0.192276 0.189627 0.186945 0.184233 0.181492 0.178724 0.175930 0.173110 0.170267 0.167400 0.164511 0.161600 0.158668 0.155714 0.152739 0.149744 0.146729 0.143694 0.140639 0.137565 0.134471 0.131358 0.128226 0.125075 0.121905 0.118717 0.115510 0.112286 0.109044 0.105785 0.102509 0.099216 0.095908 0.092584 0.089246 0.085895 0.082530 0.079154 0.075767 0.072370 0.068965 0.065553 0.062135 +0.262147 0.263391 0.264612 0.265806 0.266969 0.268097 0.269186 0.270230 0.271225 0.272166 0.273049 0.273868 0.274619 0.275297 0.275897 0.276414 0.276846 0.277186 0.277432 0.277580 0.277628 0.277570 0.277407 0.277134 0.276750 0.276253 0.275643 0.274918 0.274077 0.273122 0.272052 0.270867 0.269570 0.268162 0.266645 0.265021 0.263295 0.261469 0.259546 0.257531 0.255427 0.253239 0.250970 0.248624 0.246204 0.243716 0.241162 0.238545 0.235871 0.233141 0.230358 0.227527 0.224650 0.221730 0.218769 0.215769 0.212734 0.209665 0.206564 0.203433 0.200273 0.197086 0.193872 0.190632 0.187367 0.184078 0.180764 0.177427 0.174067 0.170684 0.167278 0.163849 0.160398 0.156924 0.153427 0.149908 0.146366 0.142802 0.139217 0.135609 0.131979 0.128328 0.124656 0.120963 0.117248 0.113514 0.109760 0.105988 0.102197 0.098389 0.094564 0.090724 0.086869 0.083001 0.079121 0.075231 0.071332 0.067426 0.063514 0.059599 0.055682 0.051765 0.047851 0.043941 +0.301502 0.302763 0.303970 0.305116 0.306197 0.307207 0.308139 0.308988 0.309749 0.310416 0.310983 0.311446 0.311799 0.312039 0.312161 0.312163 0.312040 0.311791 0.311412 0.310902 0.310260 0.309484 0.308574 0.307529 0.306351 0.305040 0.303598 0.302026 0.300328 0.298506 0.296564 0.294507 0.292338 0.290062 0.287685 0.285210 0.282644 0.279990 0.277253 0.274439 0.271550 0.268592 0.265568 0.262482 0.259339 0.256141 0.252893 0.249597 0.246256 0.242873 0.239452 0.235993 0.232499 0.228973 0.225415 0.221827 0.218210 0.214565 0.210893 0.207194 0.203468 0.199717 0.195939 0.192135 0.188306 0.184451 0.180570 0.176664 0.172732 0.168774 0.164791 0.160782 0.156748 0.152688 0.148603 0.144492 0.140356 0.136195 0.132010 0.127801 0.123569 0.119315 0.115038 0.110740 0.106422 0.102085 0.097730 0.093359 0.088972 0.084572 0.080160 0.075738 0.071308 0.066872 0.062432 0.057991 0.053550 0.049113 0.044681 0.040257 0.035844 0.031444 0.027059 0.022692 +0.343165 0.344254 0.345246 0.346135 0.346915 0.347579 0.348121 0.348536 0.348818 0.348963 0.348968 0.348828 0.348541 0.348104 0.347516 0.346775 0.345879 0.344829 0.343625 0.342268 0.340759 0.339099 0.337292 0.335341 0.333250 0.331023 0.328666 0.326184 0.323583 0.320869 0.318048 0.315125 0.312106 0.308996 0.305802 0.302527 0.299176 0.295755 0.292268 0.288718 0.285111 0.281449 0.277736 0.273975 0.270170 0.266323 0.262436 0.258513 0.254554 0.250562 0.246537 0.242482 0.238396 0.234280 0.230135 0.225960 0.221757 0.217525 0.213264 0.208974 0.204655 0.200308 0.195932 0.191527 0.187093 0.182630 0.178137 0.173616 0.169065 0.164485 0.159876 0.155238 0.150572 0.145877 0.141156 0.136407 0.131632 0.126831 0.122007 0.117159 0.112288 0.107397 0.102486 0.097557 0.092613 0.087654 0.082682 0.077701 0.072712 0.067718 0.062722 0.057725 0.052731 0.047743 0.042764 0.037796 0.032842 0.027905 0.022988 0.018094 0.013226 0.008386 0.003577 -0.001197 +0.386090 0.386772 0.387309 0.387697 0.387928 0.387999 0.387906 0.387646 0.387215 0.386612 0.385835 0.384883 0.383756 0.382453 0.380976 0.379327 0.377507 0.375520 0.373369 0.371059 0.368595 0.365983 0.363231 0.360344 0.357330 0.354196 0.350947 0.347591 0.344134 0.340583 0.336942 0.333217 0.329415 0.325539 0.321595 0.317586 0.313517 0.309392 0.305215 0.300988 0.296716 0.292399 0.288042 0.283647 0.279214 0.274747 0.270245 0.265709 0.261141 0.256540 0.251907 0.247242 0.242545 0.237816 0.233055 0.228262 0.223437 0.218579 0.213689 0.208766 0.203811 0.198823 0.193802 0.188748 0.183661 0.178541 0.173389 0.168204 0.162987 0.157739 0.152460 0.147151 0.141812 0.136446 0.131052 0.125632 0.120187 0.114719 0.109229 0.103720 0.098193 0.092651 0.087095 0.081529 0.075955 0.070376 0.064794 0.059214 0.053638 0.048069 0.042511 0.036967 0.031439 0.025932 0.020449 0.014992 0.009566 0.004173 -0.001184 -0.006501 -0.011776 -0.017005 -0.022186 -0.027317 +0.429132 0.429162 0.429004 0.428656 0.428115 0.427379 0.426447 0.425318 0.423993 0.422472 0.420757 0.418850 0.416754 0.414472 0.412010 0.409374 0.406569 0.403603 0.400483 0.397219 0.393817 0.390286 0.386632 0.382864 0.378988 0.375011 0.370939 0.366779 0.362535 0.358214 0.353820 0.349358 0.344833 0.340247 0.335606 0.330912 0.326169 0.321379 0.316546 0.311671 0.306756 0.301803 0.296814 0.291787 0.286725 0.281628 0.276495 0.271326 0.266122 0.260883 0.255607 0.250296 0.244949 0.239566 0.234147 0.228691 0.223199 0.217671 0.212105 0.206503 0.200865 0.195190 0.189478 0.183731 0.177948 0.172130 0.166278 0.160392 0.154474 0.148524 0.142543 0.136534 0.130497 0.124433 0.118346 0.112236 0.106107 0.099959 0.093797 0.087623 0.081439 0.075250 0.069057 0.062866 0.056679 0.050500 0.044332 0.038179 0.032045 0.025934 0.019848 0.013792 0.007770 0.001784 -0.004162 -0.010065 -0.015920 -0.021725 -0.027477 -0.033172 -0.038808 -0.044382 -0.049892 -0.055335 +0.471241 0.470417 0.469374 0.468114 0.466636 0.464942 0.463034 0.460915 0.458587 0.456056 0.453327 0.450406 0.447300 0.444019 0.440570 0.436964 0.433208 0.429312 0.425283 0.421129 0.416858 0.412478 0.407995 0.403416 0.398747 0.393993 0.389161 0.384255 0.379279 0.374237 0.369135 0.363975 0.358761 0.353496 0.348182 0.342823 0.337421 0.331976 0.326491 0.320967 0.315403 0.309799 0.304156 0.298474 0.292753 0.286992 0.281192 0.275352 0.269472 0.263552 0.257592 0.251592 0.245551 0.239471 0.233349 0.227188 0.220986 0.214745 0.208463 0.202142 0.195782 0.189383 0.182946 0.176471 0.169961 0.163415 0.156835 0.150222 0.143579 0.136906 0.130205 0.123479 0.116730 0.109961 0.103173 0.096371 0.089557 0.082735 0.075908 0.069081 0.062256 0.055439 0.048632 0.041840 0.035067 0.028316 0.021592 0.014899 0.008241 0.001621 -0.004956 -0.011487 -0.017968 -0.024395 -0.030766 -0.037077 -0.043325 -0.049506 -0.055618 -0.061658 -0.067624 -0.073513 -0.079322 -0.085050 +0.511654 0.509843 0.507798 0.505521 0.503016 0.500289 0.497346 0.494192 0.490837 0.487289 0.483558 0.479653 0.475586 0.471364 0.466997 0.462493 0.457860 0.453106 0.448239 0.443266 0.438193 0.433026 0.427772 0.422435 0.417021 0.411534 0.405978 0.400358 0.394677 0.388939 0.383148 0.377305 0.371413 0.365474 0.359491 0.353463 0.347392 0.341277 0.335120 0.328918 0.322674 0.316385 0.310053 0.303677 0.297258 0.290794 0.284286 0.277733 0.271137 0.264497 0.257813 0.251084 0.244312 0.237497 0.230638 0.223736 0.216791 0.209803 0.202774 0.195704 0.188593 0.181443 0.174255 0.167031 0.159772 0.152479 0.145155 0.137801 0.130421 0.123016 0.115589 0.108143 0.100682 0.093209 0.085728 0.078243 0.070758 0.063278 0.055806 0.048346 0.040903 0.033482 0.026086 0.018720 0.011388 0.004095 -0.003156 -0.010359 -0.017512 -0.024610 -0.031650 -0.038627 -0.045539 -0.052382 -0.059153 -0.065849 -0.072466 -0.079001 -0.085452 -0.091817 -0.098092 -0.104276 -0.110366 -0.116360 +0.549939 0.547082 0.543989 0.540667 0.537125 0.533370 0.529414 0.525267 0.520940 0.516442 0.511784 0.506974 0.502021 0.496934 0.491719 0.486385 0.480939 0.475388 0.469737 0.463993 0.458161 0.452247 0.446254 0.440189 0.434053 0.427853 0.421591 0.415270 0.408894 0.402465 0.395984 0.389455 0.382877 0.376251 0.369578 0.362856 0.356087 0.349269 0.342404 0.335490 0.328528 0.321518 0.314459 0.307353 0.300198 0.292995 0.285745 0.278446 0.271101 0.263708 0.256268 0.248782 0.241249 0.233670 0.226045 0.218376 0.210662 0.202905 0.195106 0.187265 0.179386 0.171468 0.163515 0.155528 0.147509 0.139460 0.131385 0.123285 0.115166 0.107029 0.098879 0.090720 0.082557 0.074393 0.066233 0.058082 0.049943 0.041823 0.033724 0.025653 0.017613 0.009609 0.001646 -0.006271 -0.014140 -0.021955 -0.029711 -0.037406 -0.045035 -0.052594 -0.060079 -0.067488 -0.074815 -0.082058 -0.089214 -0.096278 -0.103249 -0.110124 -0.116899 -0.123574 -0.130144 -0.136609 -0.142965 -0.149211 +0.585966 0.582081 0.577974 0.573656 0.569138 0.564431 0.559544 0.554488 0.549270 0.543900 0.538387 0.532738 0.526962 0.521066 0.515057 0.508940 0.502723 0.496411 0.490010 0.483523 0.476957 0.470314 0.463599 0.456817 0.449970 0.443062 0.436096 0.429073 0.421995 0.414864 0.407681 0.400444 0.393155 0.385812 0.378417 0.370969 0.363468 0.355915 0.348309 0.340651 0.332940 0.325177 0.317362 0.309495 0.301578 0.293609 0.285589 0.277519 0.269399 0.261229 0.253010 0.244743 0.236427 0.228064 0.219654 0.211199 0.202700 0.194157 0.185574 0.176951 0.168292 0.159597 0.150870 0.142113 0.133329 0.124522 0.115694 0.106851 0.097997 0.089136 0.080272 0.071411 0.062557 0.053715 0.044890 0.036086 0.027309 0.018563 0.009854 0.001184 -0.007439 -0.016012 -0.024531 -0.032989 -0.041384 -0.049710 -0.057964 -0.066140 -0.074236 -0.082246 -0.090167 -0.097995 -0.105727 -0.113359 -0.120887 -0.128310 -0.135624 -0.142827 -0.149916 -0.156888 -0.163740 -0.170471 -0.177076 -0.183555 +0.619872 0.615041 0.610008 0.604784 0.599379 0.593800 0.588059 0.582162 0.576119 0.569937 0.563623 0.557186 0.550631 0.543966 0.537196 0.530328 0.523366 0.516315 0.509180 0.501965 0.494674 0.487312 0.479881 0.472384 0.464825 0.457204 0.449524 0.441785 0.433988 0.426133 0.418219 0.410248 0.402219 0.394132 0.385988 0.377786 0.369528 0.361213 0.352841 0.344414 0.335931 0.327392 0.318799 0.310151 0.301450 0.292694 0.283886 0.275026 0.266113 0.257149 0.248134 0.239069 0.229955 0.220792 0.211583 0.202329 0.193033 0.183695 0.174318 0.164904 0.155457 0.145979 0.136473 0.126944 0.117394 0.107829 0.098253 0.088671 0.079089 0.069510 0.059941 0.050385 0.040849 0.031336 0.021853 0.012403 0.002992 -0.006374 -0.015692 -0.024955 -0.034159 -0.043299 -0.052369 -0.061364 -0.070281 -0.079113 -0.087858 -0.096510 -0.105065 -0.113519 -0.121868 -0.130107 -0.138235 -0.146246 -0.154139 -0.161910 -0.169556 -0.177074 -0.184461 -0.191714 -0.198830 -0.205807 -0.212640 -0.219327 +0.651895 0.646213 0.640343 0.634293 0.628074 0.621693 0.615158 0.608477 0.601659 0.594710 0.587638 0.580448 0.573146 0.565739 0.558232 0.550630 0.542939 0.535162 0.527304 0.519369 0.511359 0.503279 0.495129 0.486913 0.478631 0.470285 0.461874 0.453399 0.444861 0.436259 0.427594 0.418866 0.410076 0.401225 0.392311 0.383337 0.374302 0.365207 0.356053 0.346839 0.337567 0.328237 0.318850 0.309406 0.299906 0.290350 0.280739 0.271073 0.261353 0.251581 0.241756 0.231880 0.221955 0.211982 0.201963 0.191900 0.181797 0.171654 0.161475 0.151263 0.141022 0.130756 0.120468 0.110164 0.099849 0.089527 0.079205 0.068887 0.058578 0.048283 0.038007 0.027756 0.017535 0.007349 -0.002796 -0.012895 -0.022942 -0.032932 -0.042859 -0.052718 -0.062502 -0.072207 -0.081827 -0.091358 -0.100794 -0.110130 -0.119361 -0.128483 -0.137491 -0.146380 -0.155148 -0.163789 -0.172302 -0.180681 -0.188925 -0.197029 -0.204991 -0.212806 -0.220472 -0.227985 -0.235342 -0.242540 -0.249575 -0.256443 +0.682182 0.675739 0.669112 0.662309 0.655342 0.648216 0.640942 0.633525 0.625975 0.618296 0.610497 0.602583 0.594560 0.586433 0.578208 0.569888 0.561480 0.552988 0.544415 0.535763 0.527036 0.518235 0.509361 0.500416 0.491399 0.482312 0.473155 0.463929 0.454634 0.445271 0.435840 0.426342 0.416777 0.407147 0.397452 0.387692 0.377869 0.367982 0.358032 0.348021 0.337948 0.327815 0.317622 0.307369 0.297058 0.286688 0.276261 0.265778 0.255238 0.244644 0.233997 0.223299 0.212551 0.201756 0.190916 0.180034 0.169113 0.158155 0.147166 0.136148 0.125106 0.114045 0.102972 0.091890 0.080805 0.069722 0.058646 0.047584 0.036540 0.025520 0.014529 0.003574 -0.007340 -0.018207 -0.029021 -0.039775 -0.050464 -0.061081 -0.071621 -0.082076 -0.092442 -0.102713 -0.112883 -0.122946 -0.132896 -0.142729 -0.152438 -0.162021 -0.171470 -0.180784 -0.189958 -0.198989 -0.207872 -0.216604 -0.225181 -0.233600 -0.241857 -0.249948 -0.257870 -0.265618 -0.273190 -0.280581 -0.287788 -0.294807 +0.710758 0.703649 0.696349 0.688868 0.681218 0.673407 0.665444 0.657338 0.649096 0.640725 0.632232 0.623622 0.614903 0.606079 0.597156 0.588137 0.579026 0.569828 0.560545 0.551180 0.541734 0.532208 0.522604 0.512922 0.503163 0.493327 0.483416 0.473430 0.463370 0.453237 0.443032 0.432756 0.422409 0.411992 0.401506 0.390952 0.380330 0.369642 0.358888 0.348068 0.337184 0.326237 0.315226 0.304153 0.293018 0.281822 0.270566 0.259251 0.247879 0.236450 0.224967 0.213433 0.201849 0.190218 0.178544 0.166829 0.155078 0.143294 0.131482 0.119647 0.107794 0.095929 0.084057 0.072184 0.060316 0.048458 0.036616 0.024796 0.013004 0.001246 -0.010471 -0.022141 -0.033758 -0.045315 -0.056805 -0.068221 -0.079556 -0.090803 -0.101957 -0.113010 -0.123955 -0.134787 -0.145500 -0.156086 -0.166541 -0.176859 -0.187035 -0.197065 -0.206944 -0.216669 -0.226235 -0.235638 -0.244875 -0.253940 -0.262831 -0.271543 -0.280072 -0.288415 -0.296566 -0.304523 -0.312281 -0.319837 -0.327186 -0.334325 +0.737597 0.729903 0.722023 0.713950 0.705694 0.697266 0.688675 0.679932 0.671046 0.662024 0.652875 0.643604 0.634219 0.624723 0.615123 0.605421 0.595621 0.585727 0.575741 0.565666 0.555504 0.545254 0.534919 0.524499 0.513994 0.503407 0.492739 0.481989 0.471161 0.460254 0.449269 0.438209 0.427073 0.415862 0.404579 0.393222 0.381794 0.370296 0.358727 0.347089 0.335383 0.323609 0.311768 0.299861 0.287888 0.275851 0.263750 0.251588 0.239366 0.227087 0.214752 0.202365 0.189929 0.177446 0.164920 0.152355 0.139756 0.127128 0.114476 0.101806 0.089125 0.076438 0.063750 0.051069 0.038401 0.025751 0.013127 0.000535 -0.012019 -0.024528 -0.036984 -0.049380 -0.061708 -0.073961 -0.086132 -0.098211 -0.110192 -0.122068 -0.133831 -0.145475 -0.156992 -0.168375 -0.179619 -0.190717 -0.201664 -0.212455 -0.223084 -0.233548 -0.243842 -0.253961 -0.263902 -0.273660 -0.283230 -0.292608 -0.301791 -0.310773 -0.319551 -0.328121 -0.336476 -0.344614 -0.352530 -0.360218 -0.367671 -0.374881 +0.762779 0.754554 0.746139 0.737539 0.728761 0.719798 0.710653 0.701339 0.691866 0.682244 0.672482 0.662588 0.652568 0.642427 0.632172 0.621806 0.611334 0.600757 0.590079 0.579302 0.568427 0.557458 0.546394 0.535237 0.523989 0.512651 0.501224 0.489710 0.478110 0.466425 0.454657 0.442807 0.430875 0.418864 0.406775 0.394607 0.382363 0.370043 0.357648 0.345178 0.332636 0.320020 0.307333 0.294574 0.281746 0.268849 0.255886 0.242858 0.229768 0.216618 0.203411 0.190149 0.176837 0.163477 0.150076 0.136638 0.123169 0.109675 0.096163 0.082639 0.069109 0.055580 0.042058 0.028551 0.015064 0.001606 -0.011817 -0.025196 -0.038525 -0.051794 -0.064997 -0.078123 -0.091166 -0.104115 -0.116963 -0.129703 -0.142325 -0.154822 -0.167186 -0.179411 -0.191488 -0.203412 -0.215175 -0.226771 -0.238196 -0.249445 -0.260514 -0.271396 -0.282088 -0.292586 -0.302884 -0.312977 -0.322862 -0.332533 -0.341986 -0.351216 -0.360217 -0.368985 -0.377511 -0.385786 -0.393794 -0.401509 -0.408972 -0.416201 +0.786415 0.777702 0.768820 0.759751 0.750491 0.741046 0.731422 0.721612 0.711619 0.701453 0.691127 0.680649 0.670030 0.659275 0.648391 0.637383 0.626255 0.615010 0.603651 0.592181 0.580602 0.568918 0.557130 0.545240 0.533250 0.521160 0.508974 0.496693 0.484317 0.471850 0.459293 0.446646 0.433911 0.421090 0.408184 0.395194 0.382121 0.368965 0.355728 0.342411 0.329014 0.315538 0.301985 0.288355 0.274650 0.260871 0.247022 0.233103 0.219118 0.205069 0.190961 0.176796 0.162580 0.148318 0.134017 0.119682 0.105321 0.090940 0.076546 0.062145 0.047745 0.033354 0.018979 0.004627 -0.009693 -0.023973 -0.038205 -0.052379 -0.066488 -0.080522 -0.094471 -0.108328 -0.122081 -0.135723 -0.149245 -0.162637 -0.175892 -0.189001 -0.201955 -0.214749 -0.227374 -0.239823 -0.252092 -0.264174 -0.276065 -0.287760 -0.299253 -0.310540 -0.321616 -0.332475 -0.343112 -0.353523 -0.363701 -0.373641 -0.383336 -0.392777 -0.401946 -0.410816 -0.419403 -0.427754 -0.435841 -0.443638 -0.451131 -0.458371 +0.808783 0.799574 0.790216 0.780708 0.771029 0.761156 0.751085 0.740823 0.730374 0.719729 0.708893 0.697879 0.686699 0.675362 0.663876 0.652247 0.640481 0.628583 0.616555 0.604402 0.592126 0.579733 0.567224 0.554603 0.541871 0.529029 0.516081 0.503028 0.489872 0.476616 0.463260 0.449807 0.436258 0.422615 0.408879 0.395050 0.381131 0.367122 0.353025 0.338839 0.324566 0.310207 0.295762 0.281234 0.266624 0.251934 0.237167 0.222326 0.207415 0.192437 0.177397 0.162301 0.147156 0.131966 0.116740 0.101485 0.086208 0.070916 0.055618 0.040321 0.025034 0.009765 -0.005477 -0.020684 -0.035846 -0.050954 -0.066000 -0.080972 -0.095862 -0.110660 -0.125355 -0.139938 -0.154397 -0.168725 -0.182911 -0.196947 -0.210823 -0.224532 -0.238066 -0.251416 -0.264577 -0.277542 -0.290307 -0.302864 -0.315210 -0.327338 -0.339243 -0.350920 -0.362362 -0.373563 -0.384518 -0.395216 -0.405645 -0.415780 -0.425592 -0.435161 -0.444471 -0.453490 -0.462187 -0.470610 -0.478769 -0.486637 -0.494173 -0.501396 +0.830086 0.820421 0.810608 0.800641 0.790521 0.780244 0.769784 0.759113 0.748232 0.737150 0.725862 0.714363 0.702664 0.690779 0.678718 0.666490 0.654104 0.641566 0.628880 0.616053 0.603088 0.589990 0.576762 0.563410 0.549933 0.536337 0.522621 0.508790 0.494846 0.480790 0.466625 0.452353 0.437975 0.423493 0.408909 0.394224 0.379439 0.364554 0.349571 0.334489 0.319310 0.304036 0.288668 0.273209 0.257661 0.242027 0.226310 0.210515 0.194646 0.178709 0.162711 0.146657 0.130555 0.114413 0.098239 0.082041 0.065828 0.049608 0.033391 0.017184 0.000999 -0.015158 -0.031275 -0.047343 -0.063352 -0.079292 -0.095153 -0.110924 -0.126594 -0.142152 -0.157587 -0.172888 -0.188046 -0.203051 -0.217894 -0.232564 -0.247053 -0.261353 -0.275456 -0.289355 -0.303044 -0.316516 -0.329766 -0.342788 -0.355575 -0.368122 -0.380422 -0.392466 -0.404244 -0.415737 -0.426904 -0.437768 -0.448393 -0.458736 -0.468756 -0.478463 -0.487911 -0.497071 -0.505906 -0.514378 -0.522547 -0.530391 -0.537946 -0.545178 +0.850496 0.840394 0.830160 0.819773 0.809223 0.798509 0.787633 0.776584 0.765324 0.753830 0.742113 0.730171 0.717998 0.705600 0.692993 0.680190 0.667201 0.654036 0.640704 0.627210 0.613561 0.599760 0.585814 0.571727 0.557503 0.543145 0.528655 0.514036 0.499291 0.484423 0.469434 0.454326 0.439102 0.423761 0.408307 0.392739 0.377058 0.361266 0.345364 0.329353 0.313236 0.297013 0.280688 0.264263 0.247743 0.231132 0.214433 0.197653 0.180798 0.163874 0.146890 0.129855 0.112775 0.095661 0.078522 0.061366 0.044204 0.027044 0.009897 -0.007228 -0.024321 -0.041371 -0.058369 -0.075302 -0.092160 -0.108932 -0.125607 -0.142173 -0.158618 -0.174931 -0.191101 -0.207116 -0.222967 -0.238644 -0.254135 -0.269433 -0.284528 -0.299411 -0.314076 -0.328515 -0.342723 -0.356692 -0.370416 -0.383886 -0.397095 -0.410028 -0.422661 -0.434938 -0.446947 -0.458701 -0.470149 -0.481256 -0.492076 -0.502626 -0.512867 -0.522747 -0.532263 -0.541457 -0.550344 -0.558918 -0.567129 -0.575020 -0.582583 -0.589861 +0.870207 0.859650 0.848992 0.838203 0.827260 0.816143 0.804845 0.793370 0.781717 0.769854 0.757740 0.745371 0.732752 0.719881 0.706759 0.693404 0.679832 0.666056 0.652086 0.637932 0.623600 0.609099 0.594432 0.579607 0.564629 0.549501 0.534226 0.518806 0.503247 0.487549 0.471716 0.455750 0.439652 0.423424 0.407067 0.390584 0.373975 0.357242 0.340387 0.323413 0.306321 0.289115 0.271799 0.254376 0.236852 0.219231 0.201522 0.183730 0.165864 0.147932 0.129944 0.111909 0.093837 0.075738 0.057620 0.039495 0.021373 0.003264 -0.014822 -0.032872 -0.050877 -0.068825 -0.086705 -0.104504 -0.122211 -0.139814 -0.157302 -0.174660 -0.191879 -0.208944 -0.225845 -0.242571 -0.259110 -0.275453 -0.291588 -0.307506 -0.323199 -0.338659 -0.353877 -0.368847 -0.383560 -0.398006 -0.412170 -0.426019 -0.439494 -0.452721 -0.465678 -0.478307 -0.490595 -0.502611 -0.514342 -0.525746 -0.536748 -0.547399 -0.557726 -0.567755 -0.577427 -0.586723 -0.595685 -0.604343 -0.612695 -0.620693 -0.628310 -0.635596 +0.889441 0.878365 0.867247 0.856037 0.844696 0.833200 0.821520 0.809638 0.797559 0.785284 0.772793 0.760033 0.746986 0.733658 0.720055 0.706177 0.692043 0.677669 0.663071 0.648262 0.633251 0.618047 0.602657 0.587087 0.571345 0.555434 0.539359 0.523121 0.506725 0.490172 0.473467 0.456612 0.439610 0.422462 0.405170 0.387738 0.370166 0.352457 0.334615 0.316643 0.298543 0.280321 0.261981 0.243530 0.224975 0.206322 0.187579 0.168756 0.149863 0.130908 0.111901 0.092854 0.073777 0.054680 0.035574 0.016470 -0.002620 -0.021685 -0.040714 -0.059694 -0.078615 -0.097463 -0.116227 -0.134895 -0.153453 -0.171888 -0.190188 -0.208340 -0.226330 -0.244146 -0.261776 -0.279208 -0.296431 -0.313434 -0.330206 -0.346737 -0.363020 -0.379044 -0.394799 -0.410267 -0.425410 -0.440162 -0.454677 -0.468915 -0.482803 -0.496360 -0.509648 -0.522640 -0.535289 -0.547501 -0.559371 -0.570931 -0.582182 -0.593033 -0.603516 -0.613665 -0.623522 -0.633046 -0.642179 -0.650909 -0.659300 -0.667388 -0.675130 -0.682505 +0.908421 0.896735 0.885084 0.873406 0.861638 0.849741 0.837683 0.825431 0.812957 0.800258 0.787341 0.774189 0.760748 0.746984 0.732910 0.718536 0.703862 0.688907 0.673691 0.658232 0.642542 0.626632 0.610511 0.594185 0.577664 0.560951 0.544052 0.526970 0.509709 0.492273 0.474666 0.456891 0.438952 0.420850 0.402590 0.384174 0.365605 0.346888 0.328025 0.309023 0.289886 0.270621 0.251234 0.231734 0.212127 0.192424 0.172632 0.152763 0.132828 0.112836 0.092799 0.072729 0.052636 0.032533 0.012431 -0.007659 -0.027723 -0.047750 -0.067728 -0.087644 -0.107485 -0.127239 -0.146893 -0.166432 -0.185843 -0.205113 -0.224227 -0.243171 -0.261932 -0.280496 -0.298851 -0.316985 -0.334886 -0.352541 -0.369940 -0.387070 -0.403913 -0.420429 -0.436534 -0.452403 -0.467994 -0.483225 -0.498128 -0.512760 -0.527093 -0.541073 -0.554579 -0.567757 -0.580634 -0.593188 -0.605305 -0.617059 -0.628509 -0.639655 -0.650450 -0.660820 -0.670762 -0.680387 -0.689691 -0.698610 -0.707138 -0.715250 -0.723058 -0.730546 +0.927318 0.914947 0.902677 0.890450 0.878202 0.865870 0.853403 0.840767 0.827924 0.814837 0.801497 0.787911 0.774059 0.759888 0.745363 0.730500 0.715308 0.699789 0.683965 0.667857 0.651484 0.634858 0.617991 0.600891 0.583568 0.566030 0.548283 0.530329 0.512175 0.493826 0.475285 0.456558 0.437649 0.418561 0.399300 0.379869 0.360274 0.340519 0.320610 0.300555 0.280360 0.260032 0.239580 0.219012 0.198339 0.177569 0.156715 0.135788 0.114799 0.093760 0.072683 0.051580 0.030463 0.009345 -0.011762 -0.032845 -0.053892 -0.074889 -0.095824 -0.116683 -0.137452 -0.158117 -0.178665 -0.199080 -0.219347 -0.239452 -0.259380 -0.279116 -0.298645 -0.317954 -0.337029 -0.355856 -0.374421 -0.392704 -0.410670 -0.428207 -0.445483 -0.462501 -0.479152 -0.495474 -0.511521 -0.527272 -0.542666 -0.557553 -0.572120 -0.586392 -0.600333 -0.613805 -0.626918 -0.639755 -0.652275 -0.664434 -0.676144 -0.687398 -0.698367 -0.708991 -0.719201 -0.728985 -0.738352 -0.747417 -0.756131 -0.764474 -0.772420 -0.779917 +0.946280 0.933154 0.920185 0.907325 0.894510 0.881684 0.868778 0.855723 0.842485 0.829025 0.815296 0.801284 0.786989 0.772386 0.757432 0.742092 0.726382 0.710312 0.693884 0.677125 0.660058 0.642702 0.625072 0.607179 0.589033 0.570645 0.552022 0.533170 0.514094 0.494801 0.475297 0.455588 0.435680 0.415578 0.395290 0.374820 0.354175 0.333362 0.312388 0.291261 0.269989 0.248582 0.227049 0.205400 0.183646 0.161799 0.139871 0.117875 0.095822 0.073725 0.051598 0.029452 0.007301 -0.014842 -0.036964 -0.059052 -0.081091 -0.103068 -0.124968 -0.146778 -0.168481 -0.190064 -0.211510 -0.232804 -0.253930 -0.274871 -0.295611 -0.316136 -0.336428 -0.356472 -0.376248 -0.395723 -0.414782 -0.433510 -0.452021 -0.470162 -0.487982 -0.505502 -0.522743 -0.539634 -0.555995 -0.572024 -0.587763 -0.603174 -0.618088 -0.632645 -0.646944 -0.660922 -0.674534 -0.687682 -0.700343 -0.712745 -0.724790 -0.736401 -0.747539 -0.758296 -0.768733 -0.778795 -0.788462 -0.797706 -0.806453 -0.814824 -0.822858 -0.830520 +0.965387 0.951471 0.937746 0.924178 0.910711 0.897297 0.883881 0.870382 0.856717 0.842847 0.828734 0.814325 0.799593 0.784525 0.769107 0.753301 0.737073 0.720441 0.703414 0.686003 0.668235 0.650136 0.631726 0.613019 0.594028 0.574765 0.555242 0.535464 0.515440 0.495178 0.474685 0.453971 0.433043 0.411907 0.390572 0.369044 0.347331 0.325442 0.303386 0.281171 0.258808 0.236308 0.213681 0.190938 0.168093 0.145157 0.122143 0.099066 0.075937 0.052771 0.029580 0.006379 -0.016819 -0.039999 -0.063148 -0.086250 -0.109292 -0.132258 -0.155132 -0.177900 -0.200544 -0.223049 -0.245398 -0.267573 -0.289557 -0.311331 -0.332879 -0.354179 -0.375204 -0.395865 -0.416093 -0.436144 -0.455848 -0.475238 -0.494282 -0.513080 -0.531540 -0.549500 -0.567032 -0.584302 -0.601264 -0.617716 -0.633784 -0.649618 -0.665134 -0.680284 -0.694981 -0.709120 -0.723037 -0.736596 -0.749715 -0.762306 -0.774560 -0.786476 -0.798002 -0.809117 -0.819792 -0.829931 -0.839657 -0.849043 -0.858024 -0.866544 -0.874639 -0.882308 +0.984672 0.969949 0.955440 0.941120 0.926938 0.912852 0.898827 0.884799 0.870679 0.856369 0.841823 0.827005 0.811850 0.796315 0.780395 0.764089 0.747349 0.730153 0.712519 0.694454 0.675979 0.657124 0.637918 0.618379 0.598523 0.578366 0.557921 0.537198 0.516207 0.494957 0.473460 0.451723 0.429757 0.407570 0.385170 0.362568 0.339772 0.316792 0.293639 0.270324 0.246858 0.223251 0.199517 0.175668 0.151717 0.127679 0.103566 0.079394 0.055176 0.030926 0.006658 -0.017611 -0.041868 -0.066098 -0.090285 -0.114414 -0.138468 -0.162432 -0.186289 -0.210021 -0.233612 -0.257043 -0.280295 -0.303348 -0.326183 -0.348773 -0.371075 -0.392912 -0.414484 -0.435832 -0.456808 -0.477455 -0.497859 -0.517954 -0.537624 -0.556709 -0.575572 -0.594156 -0.612260 -0.629884 -0.647320 -0.664450 -0.681218 -0.697562 -0.713262 -0.728769 -0.743926 -0.758655 -0.772796 -0.786627 -0.800122 -0.813219 -0.825895 -0.838121 -0.849783 -0.860995 -0.871866 -0.882308 -0.892250 -0.901724 -0.910763 -0.919440 -0.927716 -0.935583 +1.004155 0.988613 0.973300 0.958202 0.943266 0.928450 0.913732 0.899066 0.884387 0.869596 0.854585 0.839303 0.823713 0.807723 0.791299 0.774449 0.757170 0.739413 0.721162 0.702441 0.683255 0.663638 0.643624 0.623241 0.602508 0.581443 0.560064 0.538383 0.516411 0.494159 0.471641 0.448867 0.425848 0.402594 0.379117 0.355426 0.331534 0.307451 0.283189 0.258759 0.234174 0.209447 0.184591 0.159621 0.134550 0.109394 0.084168 0.058886 0.033563 0.008215 -0.017143 -0.042494 -0.067824 -0.093116 -0.118353 -0.143519 -0.168595 -0.193565 -0.218411 -0.243113 -0.267651 -0.292006 -0.316153 -0.340060 -0.363590 -0.386708 -0.409698 -0.432309 -0.454674 -0.476678 -0.498458 -0.519871 -0.540638 -0.561148 -0.581407 -0.601256 -0.620511 -0.639599 -0.658411 -0.676873 -0.694930 -0.712311 -0.729468 -0.746303 -0.762724 -0.778534 -0.794002 -0.809160 -0.823921 -0.838260 -0.852147 -0.865451 -0.878270 -0.890749 -0.902785 -0.914298 -0.925294 -0.935847 -0.946008 -0.955737 -0.965026 -0.973870 -0.982230 -0.990178 +1.023846 1.007470 0.991330 0.975424 0.959699 0.944108 0.928635 0.913249 0.897903 0.882528 0.867015 0.851242 0.835158 0.818697 0.801776 0.784379 0.766520 0.748183 0.729320 0.709933 0.690042 0.669664 0.648842 0.627610 0.605993 0.584012 0.561689 0.539038 0.516073 0.492809 0.469257 0.445433 0.421349 0.397017 0.372449 0.347657 0.322654 0.297453 0.272065 0.246505 0.220786 0.194923 0.168930 0.142822 0.116616 0.090327 0.063970 0.037563 0.011121 -0.015340 -0.041802 -0.068250 -0.094665 -0.121031 -0.147328 -0.173540 -0.199647 -0.225629 -0.251466 -0.277137 -0.302613 -0.327855 -0.352644 -0.377139 -0.401478 -0.425490 -0.449175 -0.472657 -0.495837 -0.518520 -0.540653 -0.562592 -0.584251 -0.605271 -0.626014 -0.646567 -0.666789 -0.686628 -0.705921 -0.724666 -0.743251 -0.761441 -0.779032 -0.796199 -0.813099 -0.829609 -0.845697 -0.861338 -0.876441 -0.890928 -0.905121 -0.918870 -0.932122 -0.944745 -0.956951 -0.968740 -0.980073 -0.990936 -1.001323 -1.011190 -1.020609 -1.029535 -1.038029 -1.046079 +1.043720 1.026480 1.009484 0.992741 0.976198 0.959803 0.943539 0.927383 0.911294 0.895223 0.879099 0.862800 0.846197 0.829214 0.811788 0.793852 0.775401 0.756453 0.736981 0.716937 0.696343 0.675214 0.653586 0.631503 0.608998 0.586096 0.562821 0.539193 0.515227 0.490939 0.466344 0.441459 0.416296 0.390871 0.365198 0.339289 0.313160 0.286824 0.260294 0.233587 0.206718 0.179701 0.152554 0.125293 0.097934 0.070496 0.042994 0.015446 -0.012131 -0.039719 -0.067300 -0.094857 -0.122369 -0.149819 -0.177187 -0.204452 -0.231593 -0.258586 -0.285403 -0.311986 -0.337992 -0.363969 -0.389619 -0.415124 -0.440216 -0.465162 -0.489748 -0.513652 -0.537317 -0.560781 -0.583728 -0.606150 -0.628482 -0.650520 -0.672200 -0.693406 -0.713914 -0.734303 -0.754330 -0.773865 -0.792741 -0.811454 -0.829789 -0.847709 -0.865187 -0.882152 -0.898491 -0.914435 -0.929999 -0.945075 -0.959483 -0.973490 -0.987014 -1.000094 -1.012682 -1.024766 -1.036312 -1.047347 -1.057866 -1.067921 -1.077498 -1.086587 -1.095144 -1.103226 +1.063730 1.045605 1.027734 1.010127 0.992738 0.975504 0.958411 0.941446 0.924568 0.907734 0.890893 0.873969 0.856820 0.839290 0.821319 0.802852 0.783828 0.764259 0.744155 0.723467 0.702173 0.680302 0.657876 0.634944 0.611551 0.587725 0.563493 0.538881 0.513905 0.488582 0.462931 0.436970 0.410715 0.384182 0.357387 0.330346 0.303073 0.275584 0.247896 0.220025 0.191987 0.163801 0.135483 0.107051 0.078524 0.049920 0.021256 -0.007448 -0.036175 -0.064904 -0.093617 -0.122294 -0.150914 -0.179457 -0.207899 -0.236217 -0.264378 -0.292163 -0.319592 -0.347015 -0.374061 -0.400986 -0.427558 -0.453984 -0.479934 -0.505295 -0.530484 -0.555455 -0.579742 -0.603743 -0.627638 -0.651207 -0.674384 -0.696962 -0.719006 -0.740928 -0.762430 -0.783184 -0.803745 -0.823977 -0.843804 -0.863197 -0.882121 -0.900418 -0.918176 -0.935638 -0.952626 -0.968954 -0.984842 -1.000226 -1.015177 -1.029624 -1.043552 -1.056944 -1.069743 -1.082020 -1.093793 -1.105060 -1.115806 -1.125980 -1.135636 -1.144838 -1.153555 -1.161787 +1.083856 1.064815 1.046036 1.027532 1.009270 0.991170 0.973220 0.955413 0.937712 0.920076 0.902461 0.884812 0.867039 0.848955 0.830418 0.811392 0.791810 0.771629 0.750876 0.729541 0.707561 0.684954 0.661741 0.637966 0.613684 0.588930 0.563735 0.538129 0.512132 0.485762 0.459042 0.431990 0.404627 0.376970 0.349037 0.320845 0.292411 0.263753 0.234889 0.205836 0.176613 0.147239 0.117733 0.088114 0.058401 0.028614 -0.001227 -0.031102 -0.060992 -0.090876 -0.120732 -0.150538 -0.180272 -0.209908 -0.239410 -0.268482 -0.297283 -0.325985 -0.354587 -0.382848 -0.411007 -0.438921 -0.466200 -0.493087 -0.519898 -0.546211 -0.571988 -0.597742 -0.623234 -0.648379 -0.673015 -0.696938 -0.720787 -0.744278 -0.767177 -0.789511 -0.811697 -0.833499 -0.854879 -0.875808 -0.896158 -0.915921 -0.935279 -0.954258 -0.972690 -0.990448 -1.007805 -1.024729 -1.041150 -1.057046 -1.072399 -1.087132 -1.101350 -1.114973 -1.128095 -1.140665 -1.152628 -1.164024 -1.174935 -1.185326 -1.195195 -1.204545 -1.213381 -1.221710 +1.104033 1.084060 1.064352 1.044928 1.025762 1.006773 0.987942 0.969271 0.950726 0.932268 0.913851 0.895427 0.876932 0.858229 0.839124 0.819513 0.799362 0.778588 0.757191 0.735190 0.712537 0.689198 0.665206 0.640594 0.615420 0.589734 0.563569 0.536958 0.509928 0.482498 0.454694 0.426537 0.398049 0.369252 0.340163 0.310803 0.281191 0.251346 0.221287 0.191034 0.160608 0.130030 0.099318 0.068495 0.037581 0.006596 -0.024437 -0.055498 -0.086563 -0.117611 -0.148617 -0.179555 -0.210388 -0.240763 -0.270914 -0.300958 -0.331045 -0.360728 -0.390398 -0.419683 -0.448542 -0.476914 -0.505338 -0.533103 -0.560484 -0.587900 -0.615028 -0.641789 -0.667990 -0.693487 -0.718992 -0.744076 -0.768338 -0.792494 -0.816327 -0.839757 -0.862751 -0.885269 -0.907110 -0.928425 -0.949464 -0.970013 -0.989817 -1.009285 -1.028200 -1.046687 -1.064652 -1.082074 -1.098924 -1.115142 -1.130784 -1.145913 -1.160470 -1.174423 -1.187703 -1.200493 -1.212731 -1.224409 -1.235531 -1.246100 -1.256122 -1.265603 -1.274548 -1.282966 +1.124229 1.103298 1.082645 1.062287 1.042204 1.022313 1.002588 0.983039 0.963633 0.944331 0.925091 0.905864 0.886597 0.867181 0.847464 0.827271 0.806521 0.785165 0.763134 0.740458 0.717122 0.693061 0.668293 0.642845 0.616779 0.590154 0.563011 0.535386 0.507309 0.478806 0.449903 0.420625 0.390997 0.361042 0.330780 0.300235 0.269426 0.238375 0.207104 0.175635 0.143988 0.112187 0.080254 0.048210 0.016079 -0.016118 -0.048356 -0.080613 -0.112863 -0.145078 -0.177221 -0.208887 -0.240370 -0.271769 -0.303308 -0.334415 -0.365584 -0.396320 -0.426519 -0.456593 -0.486611 -0.515818 -0.544899 -0.573992 -0.602790 -0.631096 -0.658815 -0.686173 -0.713369 -0.739950 -0.765941 -0.791840 -0.817371 -0.842487 -0.867155 -0.891162 -0.914691 -0.937753 -0.960456 -0.982507 -1.004024 -1.025074 -1.045704 -1.065822 -1.085403 -1.104427 -1.122795 -1.140583 -1.157846 -1.174530 -1.190611 -1.205969 -1.220799 -1.235056 -1.248721 -1.261792 -1.274273 -1.286167 -1.297480 -1.308218 -1.318386 -1.327992 -1.337042 -1.345545 +1.144421 1.122530 1.100925 1.079628 1.058619 1.037813 1.017177 0.996731 0.976450 0.956292 0.936212 0.916166 0.896101 0.875911 0.855498 0.834700 0.813341 0.791376 0.768723 0.745373 0.721335 0.696558 0.671013 0.644735 0.617776 0.590206 0.562075 0.533424 0.504290 0.474700 0.444683 0.414269 0.383483 0.352353 0.320901 0.289152 0.257129 0.224855 0.192354 0.159650 0.126766 0.093726 0.060554 0.027275 -0.006087 -0.039508 -0.072962 -0.106419 -0.139844 -0.172774 -0.205562 -0.238299 -0.271270 -0.303787 -0.336443 -0.368644 -0.400317 -0.431945 -0.463356 -0.494253 -0.525024 -0.555811 -0.586307 -0.616270 -0.645480 -0.674746 -0.703670 -0.731885 -0.759623 -0.787289 -0.814571 -0.841430 -0.867828 -0.893496 -0.918657 -0.943556 -0.967976 -0.991679 -1.014930 -1.037688 -1.060035 -1.081854 -1.103125 -1.123820 -1.143839 -1.163276 -1.182200 -1.200522 -1.218152 -1.235135 -1.251573 -1.267396 -1.282594 -1.297168 -1.311117 -1.324446 -1.337159 -1.349262 -1.360762 -1.371664 -1.381975 -1.391703 -1.400856 -1.409442 +1.164636 1.141777 1.119208 1.096958 1.075012 1.053283 1.031729 1.010376 0.989209 0.968182 0.947249 0.926366 0.905480 0.884486 0.863304 0.841826 0.819855 0.797253 0.773973 0.749952 0.725203 0.699700 0.673381 0.646273 0.618421 0.589900 0.560774 0.531087 0.500883 0.470192 0.439046 0.407479 0.375519 0.343197 0.310537 0.277567 0.244311 0.210796 0.177048 0.143092 0.108954 0.074660 0.040236 0.005708 -0.028897 -0.063548 -0.098212 -0.132368 -0.166427 -0.200469 -0.234844 -0.268748 -0.302871 -0.336526 -0.369667 -0.402832 -0.435613 -0.468256 -0.500683 -0.533171 -0.565382 -0.597043 -0.627920 -0.658976 -0.689543 -0.719462 -0.749112 -0.778588 -0.807673 -0.836329 -0.864506 -0.891933 -0.918860 -0.945564 -0.971588 -0.997108 -1.022145 -1.046783 -1.070913 -1.094504 -1.117536 -1.139890 -1.161648 -1.182896 -1.203554 -1.223589 -1.242835 -1.261581 -1.279707 -1.297193 -1.314031 -1.330215 -1.345744 -1.360621 -1.374848 -1.388430 -1.401373 -1.413684 -1.425368 -1.436432 -1.446886 -1.456735 -1.465989 -1.474655 +1.184847 1.161035 1.137506 1.114301 1.091413 1.068754 1.046277 1.024007 1.001938 0.980026 0.958225 0.936488 0.914760 0.892938 0.870949 0.848709 0.826073 0.802828 0.778894 0.754207 0.728744 0.702498 0.675409 0.647470 0.618724 0.589248 0.559118 0.528385 0.497098 0.465291 0.433002 0.400266 0.367116 0.333584 0.299698 0.265489 0.230984 0.196211 0.161199 0.125976 0.090569 0.055007 0.019318 -0.016467 -0.052313 -0.087642 -0.122924 -0.158229 -0.193971 -0.229228 -0.264790 -0.299874 -0.334464 -0.369143 -0.403417 -0.437413 -0.471729 -0.505914 -0.539842 -0.573221 -0.605791 -0.638651 -0.670967 -0.702511 -0.734163 -0.765492 -0.796428 -0.826933 -0.856689 -0.886071 -0.914948 -0.943508 -0.971312 -0.998698 -1.025582 -1.052081 -1.078060 -1.103492 -1.128355 -1.152514 -1.176082 -1.199153 -1.221617 -1.243363 -1.264448 -1.284988 -1.304888 -1.324132 -1.342707 -1.360607 -1.377827 -1.394365 -1.410221 -1.425399 -1.439902 -1.453736 -1.466908 -1.479425 -1.491293 -1.502520 -1.513114 -1.523084 -1.532437 -1.541184 +1.205036 1.180314 1.155841 1.131685 1.107848 1.084248 1.060836 1.037640 1.014657 0.991843 0.969155 0.946549 0.923957 0.901281 0.878459 0.855408 0.832024 0.808119 0.783511 0.758145 0.731970 0.704968 0.677106 0.648334 0.618695 0.588259 0.557117 0.525327 0.492945 0.460010 0.426561 0.392640 0.358283 0.323524 0.288396 0.252931 0.217159 0.181113 0.144821 0.108316 0.071627 0.034786 -0.002171 -0.038602 -0.075046 -0.111559 -0.148619 -0.185184 -0.222146 -0.258305 -0.294629 -0.330791 -0.366542 -0.402071 -0.438039 -0.473906 -0.509323 -0.544641 -0.578911 -0.613584 -0.647515 -0.681007 -0.714549 -0.747767 -0.780596 -0.812997 -0.844595 -0.875746 -0.906659 -0.937126 -0.966800 -0.995986 -1.024886 -1.053306 -1.081198 -1.108538 -1.135202 -1.161242 -1.186794 -1.211757 -1.236101 -1.259611 -1.282647 -1.305055 -1.326811 -1.347898 -1.368304 -1.388019 -1.407033 -1.425342 -1.442942 -1.459832 -1.476014 -1.491492 -1.506272 -1.520359 -1.533761 -1.546484 -1.558536 -1.569926 -1.580661 -1.590750 -1.600202 -1.609028 +1.225147 1.199591 1.174213 1.149117 1.124330 1.099780 1.075420 1.051283 1.027373 1.003645 0.980053 0.956557 0.933082 0.909531 0.885850 0.861958 0.837761 0.813137 0.787845 0.761776 0.734888 0.707128 0.678478 0.648873 0.618340 0.586942 0.554779 0.521923 0.488433 0.454355 0.419732 0.384610 0.349029 0.313027 0.276640 0.239903 0.202850 0.165514 0.127930 0.090130 0.052153 0.014041 -0.023477 -0.060474 -0.098789 -0.136603 -0.174913 -0.212365 -0.250111 -0.287715 -0.324909 -0.361935 -0.399522 -0.437044 -0.474112 -0.511175 -0.547133 -0.583612 -0.619302 -0.654623 -0.690067 -0.725195 -0.759949 -0.794285 -0.827780 -0.860847 -0.893740 -0.925901 -0.957771 -0.988892 -1.019786 -1.050185 -1.080053 -1.109366 -1.137973 -1.165971 -1.193496 -1.220422 -1.246629 -1.272143 -1.297136 -1.321487 -1.345176 -1.368188 -1.390509 -1.412128 -1.433034 -1.453216 -1.472668 -1.491385 -1.509365 -1.526609 -1.543118 -1.558899 -1.573956 -1.588297 -1.601929 -1.614860 -1.627097 -1.638648 -1.649524 -1.659733 -1.669284 -1.678188 +1.245121 1.218799 1.192588 1.166587 1.140858 1.115354 1.090036 1.064944 1.040092 1.015437 0.990926 0.966522 0.942144 0.917699 0.893134 0.868377 0.843335 0.817910 0.791909 0.765120 0.737506 0.708985 0.679533 0.649098 0.617668 0.585304 0.552114 0.518180 0.483570 0.448335 0.412524 0.376186 0.339365 0.302104 0.264443 0.226418 0.188069 0.149432 0.110545 0.071452 0.032222 -0.005692 -0.044523 -0.084120 -0.123101 -0.161782 -0.200891 -0.239885 -0.278474 -0.316952 -0.356111 -0.395252 -0.433941 -0.472199 -0.510339 -0.548608 -0.585860 -0.623192 -0.660535 -0.697586 -0.734284 -0.770405 -0.806010 -0.841039 -0.875946 -0.910052 -0.943969 -0.977084 -1.010017 -1.042451 -1.074354 -1.105701 -1.136222 -1.166342 -1.195905 -1.224861 -1.252968 -1.280600 -1.307619 -1.333987 -1.359686 -1.384701 -1.409018 -1.432624 -1.455508 -1.477658 -1.499062 -1.519713 -1.539604 -1.558730 -1.577092 -1.594691 -1.611530 -1.627615 -1.642952 -1.657549 -1.671412 -1.684551 -1.696974 -1.708688 -1.719705 -1.730033 -1.739683 -1.748665 +1.264946 1.237881 1.210901 1.184062 1.157421 1.130968 1.104687 1.078628 1.052821 1.027223 1.001780 0.976451 0.951150 0.925792 0.900324 0.874674 0.848763 0.822483 0.795710 0.768193 0.739831 0.710548 0.680287 0.649013 0.616683 0.583353 0.549127 0.514106 0.478364 0.441960 0.404946 0.367376 0.329301 0.290767 0.251816 0.212492 0.172835 0.132891 0.092713 0.053125 0.014088 -0.026649 -0.066761 -0.107047 -0.146986 -0.187302 -0.227223 -0.267094 -0.307773 -0.348483 -0.388750 -0.428612 -0.468447 -0.508474 -0.547410 -0.586583 -0.625809 -0.664775 -0.703420 -0.741483 -0.779075 -0.816095 -0.853046 -0.889152 -0.925146 -0.960304 -0.995323 -1.029843 -1.063836 -1.097275 -1.129839 -1.162076 -1.193739 -1.224791 -1.254946 -1.284690 -1.313804 -1.342262 -1.370045 -1.397139 -1.423529 -1.449202 -1.474145 -1.498347 -1.521794 -1.544476 -1.566381 -1.587503 -1.607835 -1.627374 -1.646121 -1.664077 -1.681248 -1.697640 -1.713259 -1.728113 -1.742210 -1.755559 -1.768168 -1.780046 -1.791204 -1.801652 -1.811400 -1.820460 +1.284600 1.256826 1.229100 1.201486 1.173991 1.146612 1.119370 1.092339 1.065564 1.039007 1.012618 0.986350 0.960108 0.933816 0.907426 0.880860 0.854054 0.826891 0.799276 0.771007 0.741877 0.711826 0.680749 0.648626 0.615394 0.581093 0.545826 0.509709 0.472823 0.435237 0.397007 0.358192 0.318849 0.279027 0.238776 0.198142 0.157179 0.115981 0.076113 0.035140 -0.006783 -0.048049 -0.088452 -0.130647 -0.171175 -0.212366 -0.254498 -0.296718 -0.338505 -0.379924 -0.421398 -0.462853 -0.503731 -0.544698 -0.585776 -0.626635 -0.667212 -0.707217 -0.746794 -0.785817 -0.824830 -0.862968 -0.901068 -0.938309 -0.975455 -1.012109 -1.048241 -1.083826 -1.118502 -1.152902 -1.186723 -1.219933 -1.252213 -1.284125 -1.315402 -1.346019 -1.375958 -1.405204 -1.433742 -1.461558 -1.488640 -1.514974 -1.540547 -1.565346 -1.589360 -1.612577 -1.634987 -1.656583 -1.677359 -1.697314 -1.716449 -1.734767 -1.752273 -1.768974 -1.784877 -1.799991 -1.814323 -1.827883 -1.840680 -1.852723 -1.864023 -1.874591 -1.884437 -1.893574 +1.304002 1.275610 1.247170 1.218805 1.190520 1.162265 1.134078 1.106075 1.078324 1.050796 1.023443 0.996221 0.969023 0.941779 0.914445 0.886945 0.859217 0.831151 0.802644 0.773567 0.743658 0.712821 0.680928 0.647942 0.613806 0.578533 0.542219 0.504996 0.466957 0.428176 0.388717 0.348645 0.308021 0.266902 0.225344 0.183412 0.141996 0.101079 0.058202 0.015967 -0.025968 -0.068787 -0.111023 -0.153910 -0.196323 -0.239974 -0.283211 -0.326124 -0.369169 -0.412238 -0.454764 -0.497470 -0.540356 -0.583069 -0.625547 -0.667472 -0.709018 -0.750039 -0.791117 -0.831299 -0.871521 -0.910874 -0.950180 -0.989006 -1.027322 -1.064947 -1.101942 -1.138552 -1.174587 -1.209879 -1.244481 -1.278622 -1.312125 -1.344967 -1.377131 -1.408600 -1.439359 -1.469393 -1.498689 -1.527232 -1.555010 -1.582008 -1.608215 -1.633617 -1.658202 -1.681958 -1.704877 -1.726950 -1.748175 -1.768549 -1.788076 -1.806758 -1.824603 -1.841616 -1.857807 -1.873182 -1.887752 -1.901524 -1.914510 -1.926719 -1.938162 -1.948849 -1.958794 -1.968008 +1.323031 1.294165 1.265093 1.236006 1.206957 1.177887 1.148795 1.119830 1.091101 1.062591 1.034261 1.006068 0.977897 0.949685 0.921387 0.892937 0.864264 0.835270 0.805842 0.775891 0.745187 0.713542 0.680829 0.646971 0.611928 0.575678 0.538313 0.499976 0.460773 0.420787 0.380088 0.338747 0.296835 0.254418 0.211590 0.170088 0.127265 0.083308 0.039973 -0.003080 -0.047079 -0.090461 -0.133324 -0.178315 -0.222910 -0.267628 -0.311772 -0.356384 -0.400488 -0.444870 -0.489504 -0.534017 -0.578348 -0.622153 -0.665634 -0.708628 -0.751542 -0.793975 -0.836321 -0.877797 -0.919282 -0.960308 -1.000841 -1.040849 -1.079905 -1.118772 -1.157070 -1.194468 -1.231479 -1.267904 -1.303693 -1.338823 -1.373277 -1.407035 -1.440084 -1.472407 -1.503990 -1.534817 -1.564876 -1.594152 -1.622631 -1.650301 -1.677147 -1.703156 -1.728317 -1.752617 -1.776049 -1.798604 -1.820281 -1.841080 -1.861002 -1.880053 -1.898239 -1.915568 -1.932048 -1.947688 -1.962497 -1.976484 -1.989660 -2.002036 -2.013622 -2.024430 -2.034472 -2.043762 +1.341588 1.312381 1.282810 1.253070 1.223281 1.193430 1.163491 1.133593 1.103889 1.074394 1.045075 1.015894 0.986732 0.957537 0.928261 0.898837 0.869203 0.839255 0.808885 0.778010 0.746468 0.714001 0.680459 0.645725 0.609765 0.572535 0.534116 0.494658 0.454282 0.413082 0.371134 0.328520 0.285325 0.242516 0.200101 0.155451 0.111367 0.066856 0.022553 -0.021806 -0.067053 -0.111850 -0.157694 -0.203744 -0.249259 -0.295324 -0.340924 -0.386903 -0.433212 -0.479457 -0.525577 -0.571204 -0.616568 -0.661490 -0.706384 -0.750862 -0.795315 -0.838906 -0.882572 -0.925810 -0.968581 -1.010850 -1.052155 -1.093317 -1.133921 -1.173593 -1.212942 -1.251703 -1.289832 -1.327309 -1.364111 -1.400223 -1.435626 -1.470306 -1.504245 -1.537428 -1.569841 -1.601470 -1.632298 -1.662314 -1.691501 -1.719847 -1.747339 -1.773961 -1.799703 -1.824552 -1.848501 -1.871544 -1.893678 -1.914905 -1.935227 -1.954650 -1.973182 -1.990830 -2.007603 -2.023510 -2.038560 -2.052764 -2.066131 -2.078674 -2.090404 -2.101333 -2.111473 -2.120839 +1.359670 1.330162 1.300229 1.269955 1.239481 1.208867 1.178123 1.147344 1.116684 1.086201 1.055887 1.025703 0.995534 0.965339 0.935069 0.904654 0.874038 0.843115 0.811781 0.779952 0.747512 0.714211 0.679824 0.644210 0.607325 0.569113 0.529636 0.489052 0.447496 0.405076 0.361876 0.318007 0.274450 0.231195 0.185622 0.140573 0.095022 0.049655 0.004200 -0.040751 -0.088271 -0.135381 -0.181726 -0.229588 -0.276127 -0.323608 -0.371504 -0.419398 -0.467229 -0.514605 -0.561783 -0.608573 -0.655397 -0.701870 -0.748389 -0.794068 -0.839897 -0.885338 -0.930349 -0.974892 -1.018468 -1.061955 -1.104900 -1.146893 -1.188618 -1.229759 -1.270279 -1.310153 -1.349360 -1.387882 -1.425701 -1.462799 -1.499160 -1.534767 -1.569604 -1.603656 -1.636908 -1.669345 -1.700951 -1.731713 -1.761616 -1.790646 -1.818789 -1.846030 -1.872358 -1.897763 -1.922234 -1.945769 -1.968365 -1.990025 -2.010751 -2.030551 -2.049432 -2.067403 -2.084472 -2.100648 -2.115942 -2.130363 -2.143924 -2.156635 -2.168509 -2.179559 -2.189797 -2.199238 +1.377322 1.347492 1.317253 1.286583 1.255524 1.224189 1.192660 1.161047 1.129471 1.098010 1.066696 1.035497 1.004306 0.973094 0.941815 0.910391 0.878772 0.846857 0.814539 0.781729 0.748340 0.714180 0.678930 0.642432 0.604614 0.565418 0.524884 0.483169 0.440431 0.396792 0.353305 0.309125 0.264159 0.217748 0.172648 0.125261 0.079786 0.033155 -0.013756 -0.061902 -0.110417 -0.158441 -0.206737 -0.255072 -0.304450 -0.353892 -0.403339 -0.452374 -0.501282 -0.549860 -0.598543 -0.646944 -0.695227 -0.743191 -0.791143 -0.838758 -0.885991 -0.932799 -0.978649 -1.024472 -1.069782 -1.114129 -1.158263 -1.201826 -1.244778 -1.287096 -1.328757 -1.369741 -1.410030 -1.449605 -1.488448 -1.526541 -1.563868 -1.600412 -1.636157 -1.671087 -1.705187 -1.738440 -1.770832 -1.802349 -1.832975 -1.862695 -1.891496 -1.919363 -1.946284 -1.972248 -1.997248 -2.021280 -2.044343 -2.066441 -2.087576 -2.107757 -2.126991 -2.145288 -2.162655 -2.179103 -2.194643 -2.209284 -2.223039 -2.235920 -2.247939 -2.259109 -2.269445 -2.278960 + + +# Torque coefficient + +0.030271 0.031010 0.031748 0.032485 0.033221 0.033954 0.034685 0.035414 0.036138 0.036858 0.037573 0.038283 0.038986 0.039682 0.040369 0.041049 0.041718 0.042377 0.043024 0.043659 0.044280 0.044887 0.045478 0.046052 0.046608 0.047145 0.047662 0.048157 0.048630 0.049080 0.049505 0.049904 0.050277 0.050623 0.050942 0.051232 0.051494 0.051727 0.051930 0.052105 0.052250 0.052365 0.052451 0.052507 0.052535 0.052533 0.052503 0.052445 0.052359 0.052246 0.052106 0.051940 0.051749 0.051533 0.051293 0.051029 0.050743 0.050435 0.050106 0.049757 0.049387 0.048999 0.048592 0.048168 0.047727 0.047269 0.046796 0.046307 0.045804 0.045287 0.044756 0.044211 0.043654 0.043085 0.042504 0.041910 0.041306 0.040690 0.040063 0.039425 0.038776 0.038117 0.037447 0.036767 0.036077 0.035377 0.034667 0.033947 0.033217 0.032478 0.031729 0.030970 0.030203 0.029425 0.028639 0.027844 0.027040 0.026227 0.025405 0.024575 0.023737 0.022890 0.022036 0.021174 +0.036180 0.036987 0.037789 0.038587 0.039378 0.040162 0.040938 0.041706 0.042464 0.043212 0.043948 0.044672 0.045381 0.046076 0.046755 0.047417 0.048059 0.048682 0.049284 0.049863 0.050418 0.050947 0.051450 0.051925 0.052371 0.052787 0.053173 0.053528 0.053851 0.054141 0.054400 0.054625 0.054818 0.054979 0.055106 0.055201 0.055264 0.055294 0.055293 0.055261 0.055198 0.055105 0.054982 0.054830 0.054650 0.054443 0.054209 0.053950 0.053666 0.053358 0.053026 0.052673 0.052298 0.051902 0.051486 0.051051 0.050597 0.050126 0.049638 0.049133 0.048612 0.048076 0.047526 0.046961 0.046383 0.045791 0.045186 0.044569 0.043940 0.043298 0.042645 0.041980 0.041304 0.040616 0.039918 0.039208 0.038487 0.037756 0.037014 0.036261 0.035498 0.034724 0.033940 0.033145 0.032341 0.031526 0.030701 0.029866 0.029021 0.028167 0.027303 0.026429 0.025547 0.024655 0.023754 0.022844 0.021926 0.020999 0.020065 0.019122 0.018172 0.017216 0.016252 0.015282 +0.042240 0.043089 0.043928 0.044755 0.045569 0.046369 0.047154 0.047922 0.048672 0.049403 0.050113 0.050801 0.051464 0.052102 0.052712 0.053294 0.053845 0.054365 0.054851 0.055305 0.055723 0.056107 0.056455 0.056767 0.057043 0.057283 0.057487 0.057655 0.057787 0.057884 0.057945 0.057972 0.057964 0.057923 0.057849 0.057742 0.057604 0.057435 0.057236 0.057009 0.056753 0.056471 0.056163 0.055829 0.055472 0.055091 0.054688 0.054263 0.053818 0.053353 0.052869 0.052367 0.051846 0.051309 0.050756 0.050186 0.049602 0.049003 0.048390 0.047763 0.047122 0.046469 0.045802 0.045123 0.044432 0.043729 0.043013 0.042286 0.041547 0.040796 0.040034 0.039260 0.038475 0.037679 0.036871 0.036052 0.035222 0.034381 0.033528 0.032665 0.031791 0.030906 0.030011 0.029105 0.028188 0.027261 0.026324 0.025377 0.024420 0.023454 0.022478 0.021493 0.020499 0.019496 0.018485 0.017467 0.016441 0.015408 0.014368 0.013323 0.012271 0.011215 0.010154 0.009090 +0.048254 0.049109 0.049946 0.050762 0.051556 0.052325 0.053069 0.053785 0.054472 0.055127 0.055748 0.056335 0.056885 0.057398 0.057873 0.058309 0.058706 0.059064 0.059382 0.059660 0.059899 0.060099 0.060260 0.060383 0.060467 0.060514 0.060523 0.060496 0.060434 0.060337 0.060206 0.060042 0.059847 0.059620 0.059364 0.059080 0.058767 0.058428 0.058064 0.057675 0.057262 0.056826 0.056369 0.055890 0.055391 0.054873 0.054336 0.053781 0.053209 0.052620 0.052014 0.051394 0.050758 0.050107 0.049443 0.048764 0.048072 0.047367 0.046648 0.045917 0.045172 0.044416 0.043646 0.042864 0.042070 0.041264 0.040445 0.039615 0.038772 0.037917 0.037050 0.036171 0.035280 0.034377 0.033463 0.032537 0.031599 0.030650 0.029689 0.028717 0.027733 0.026739 0.025734 0.024718 0.023692 0.022656 0.021610 0.020554 0.019488 0.018414 0.017332 0.016241 0.015143 0.014038 0.012926 0.011809 0.010686 0.009558 0.008427 0.007292 0.006154 0.005014 0.003872 0.002730 +0.053995 0.054809 0.055592 0.056343 0.057058 0.057736 0.058375 0.058973 0.059530 0.060045 0.060517 0.060946 0.061332 0.061675 0.061975 0.062233 0.062449 0.062622 0.062755 0.062847 0.062899 0.062912 0.062886 0.062823 0.062723 0.062589 0.062419 0.062217 0.061982 0.061717 0.061422 0.061098 0.060746 0.060368 0.059964 0.059536 0.059084 0.058609 0.058112 0.057594 0.057056 0.056498 0.055922 0.055327 0.054715 0.054086 0.053440 0.052779 0.052103 0.051411 0.050705 0.049985 0.049250 0.048502 0.047740 0.046965 0.046176 0.045374 0.044559 0.043730 0.042888 0.042033 0.041165 0.040285 0.039391 0.038484 0.037565 0.036632 0.035687 0.034729 0.033759 0.032776 0.031780 0.030773 0.029752 0.028720 0.027676 0.026620 0.025552 0.024473 0.023383 0.022282 0.021171 0.020049 0.018918 0.017777 0.016627 0.015469 0.014304 0.013131 0.011951 0.010766 0.009575 0.008379 0.007179 0.005976 0.004771 0.003563 0.002354 0.001145 -0.000064 -0.001272 -0.002479 -0.003683 +0.059192 0.059902 0.060568 0.061189 0.061764 0.062293 0.062774 0.063209 0.063598 0.063941 0.064238 0.064490 0.064697 0.064861 0.064981 0.065060 0.065097 0.065094 0.065051 0.064970 0.064851 0.064697 0.064507 0.064284 0.064029 0.063742 0.063425 0.063079 0.062704 0.062303 0.061876 0.061424 0.060947 0.060448 0.059926 0.059382 0.058818 0.058234 0.057630 0.057008 0.056367 0.055709 0.055035 0.054344 0.053637 0.052914 0.052176 0.051424 0.050656 0.049874 0.049078 0.048267 0.047442 0.046602 0.045749 0.044881 0.044000 0.043104 0.042194 0.041271 0.040333 0.039382 0.038417 0.037439 0.036446 0.035440 0.034421 0.033388 0.032341 0.031281 0.030208 0.029122 0.028023 0.026912 0.025788 0.024652 0.023504 0.022344 0.021174 0.019992 0.018800 0.017599 0.016387 0.015167 0.013938 0.012702 0.011459 0.010209 0.008953 0.007693 0.006428 0.005159 0.003888 0.002614 0.001340 0.000064 -0.001211 -0.002485 -0.003758 -0.005028 -0.006295 -0.007558 -0.008817 -0.010070 +0.063556 0.064111 0.064617 0.065073 0.065479 0.065837 0.066147 0.066409 0.066626 0.066797 0.066923 0.067006 0.067047 0.067045 0.067004 0.066923 0.066804 0.066649 0.066457 0.066231 0.065972 0.065681 0.065359 0.065007 0.064627 0.064218 0.063783 0.063322 0.062836 0.062326 0.061793 0.061237 0.060659 0.060061 0.059442 0.058804 0.058147 0.057472 0.056779 0.056069 0.055342 0.054599 0.053839 0.053064 0.052273 0.051467 0.050645 0.049807 0.048954 0.048086 0.047203 0.046305 0.045392 0.044464 0.043521 0.042562 0.041589 0.040602 0.039599 0.038582 0.037550 0.036503 0.035442 0.034366 0.033276 0.032172 0.031053 0.029921 0.028775 0.027615 0.026442 0.025256 0.024057 0.022846 0.021623 0.020388 0.019142 0.017885 0.016618 0.015341 0.014055 0.012760 0.011457 0.010148 0.008831 0.007509 0.006182 0.004851 0.003516 0.002178 0.000839 -0.000501 -0.001842 -0.003183 -0.004522 -0.005858 -0.007192 -0.008523 -0.009849 -0.011170 -0.012485 -0.013793 -0.015094 -0.016388 +0.066930 0.067320 0.067659 0.067950 0.068192 0.068388 0.068538 0.068644 0.068706 0.068726 0.068704 0.068642 0.068541 0.068403 0.068228 0.068017 0.067772 0.067494 0.067184 0.066843 0.066473 0.066073 0.065645 0.065191 0.064710 0.064204 0.063674 0.063120 0.062543 0.061944 0.061323 0.060682 0.060021 0.059340 0.058641 0.057923 0.057187 0.056434 0.055663 0.054875 0.054071 0.053250 0.052412 0.051558 0.050687 0.049800 0.048897 0.047978 0.047042 0.046090 0.045122 0.044139 0.043139 0.042123 0.041091 0.040044 0.038981 0.037902 0.036808 0.035698 0.034572 0.033432 0.032276 0.031106 0.029921 0.028721 0.027507 0.026279 0.025037 0.023782 0.022513 0.021232 0.019939 0.018634 0.017317 0.015989 0.014651 0.013304 0.011947 0.010582 0.009210 0.007831 0.006445 0.005055 0.003659 0.002260 0.000858 -0.000545 -0.001951 -0.003356 -0.004761 -0.006165 -0.007566 -0.008965 -0.010360 -0.011751 -0.013136 -0.014516 -0.015889 -0.017254 -0.018612 -0.019960 -0.021300 -0.022630 +0.069328 0.069568 0.069760 0.069907 0.070009 0.070068 0.070084 0.070060 0.069995 0.069892 0.069751 0.069574 0.069362 0.069115 0.068835 0.068523 0.068179 0.067805 0.067402 0.066970 0.066511 0.066024 0.065512 0.064975 0.064413 0.063828 0.063220 0.062589 0.061937 0.061264 0.060571 0.059858 0.059125 0.058373 0.057603 0.056815 0.056008 0.055183 0.054341 0.053481 0.052603 0.051707 0.050794 0.049864 0.048916 0.047951 0.046968 0.045969 0.044952 0.043918 0.042867 0.041799 0.040714 0.039612 0.038494 0.037359 0.036208 0.035041 0.033857 0.032658 0.031442 0.030211 0.028965 0.027703 0.026427 0.025136 0.023831 0.022512 0.021179 0.019833 0.018474 0.017103 0.015720 0.014326 0.012922 0.011508 0.010085 0.008653 0.007214 0.005769 0.004317 0.002860 0.001399 -0.000066 -0.001533 -0.003002 -0.004472 -0.005942 -0.007411 -0.008878 -0.010343 -0.011804 -0.013262 -0.014714 -0.016161 -0.017601 -0.019035 -0.020460 -0.021877 -0.023285 -0.024683 -0.026071 -0.027447 -0.028813 +0.070858 0.070975 0.071050 0.071082 0.071074 0.071025 0.070938 0.070813 0.070652 0.070455 0.070224 0.069959 0.069661 0.069331 0.068970 0.068579 0.068158 0.067709 0.067232 0.066729 0.066199 0.065644 0.065063 0.064459 0.063831 0.063180 0.062507 0.061813 0.061097 0.060360 0.059604 0.058827 0.058031 0.057215 0.056380 0.055526 0.054653 0.053761 0.052850 0.051920 0.050971 0.050003 0.049017 0.048012 0.046989 0.045947 0.044888 0.043810 0.042714 0.041600 0.040468 0.039319 0.038152 0.036968 0.035766 0.034548 0.033312 0.032060 0.030791 0.029505 0.028203 0.026886 0.025553 0.024204 0.022840 0.021462 0.020069 0.018663 0.017243 0.015811 0.014366 0.012910 0.011443 0.009966 0.008479 0.006984 0.005481 0.003971 0.002455 0.000934 -0.000592 -0.002121 -0.003653 -0.005187 -0.006722 -0.008256 -0.009790 -0.011323 -0.012852 -0.014378 -0.015900 -0.017417 -0.018928 -0.020433 -0.021930 -0.023418 -0.024898 -0.026368 -0.027828 -0.029278 -0.030716 -0.032143 -0.033557 -0.034958 +0.071650 0.071678 0.071666 0.071615 0.071526 0.071400 0.071238 0.071041 0.070809 0.070543 0.070245 0.069914 0.069552 0.069160 0.068738 0.068286 0.067807 0.067300 0.066765 0.066205 0.065618 0.065007 0.064371 0.063711 0.063028 0.062322 0.061593 0.060843 0.060072 0.059279 0.058466 0.057632 0.056777 0.055901 0.055005 0.054088 0.053151 0.052194 0.051216 0.050219 0.049202 0.048165 0.047108 0.046032 0.044937 0.043823 0.042689 0.041536 0.040365 0.039175 0.037966 0.036739 0.035494 0.034230 0.032949 0.031649 0.030333 0.028998 0.027647 0.026279 0.024894 0.023493 0.022076 0.020643 0.019195 0.017733 0.016257 0.014766 0.013264 0.011748 0.010222 0.008685 0.007137 0.005581 0.004016 0.002444 0.000865 -0.000720 -0.002310 -0.003904 -0.005501 -0.007100 -0.008701 -0.010302 -0.011902 -0.013501 -0.015098 -0.016691 -0.018280 -0.019864 -0.021442 -0.023013 -0.024577 -0.026133 -0.027679 -0.029216 -0.030742 -0.032258 -0.033761 -0.035253 -0.036732 -0.038197 -0.039649 -0.041086 +0.071829 0.071799 0.071730 0.071625 0.071483 0.071306 0.071093 0.070846 0.070566 0.070253 0.069907 0.069530 0.069122 0.068683 0.068215 0.067719 0.067194 0.066641 0.066061 0.065455 0.064823 0.064166 0.063485 0.062778 0.062049 0.061296 0.060520 0.059721 0.058899 0.058055 0.057189 0.056300 0.055390 0.054457 0.053503 0.052527 0.051530 0.050511 0.049471 0.048410 0.047329 0.046226 0.045103 0.043960 0.042796 0.041612 0.040408 0.039184 0.037941 0.036678 0.035395 0.034093 0.032772 0.031432 0.030074 0.028697 0.027301 0.025888 0.024457 0.023008 0.021542 0.020060 0.018562 0.017048 0.015518 0.013974 0.012417 0.010846 0.009262 0.007667 0.006061 0.004445 0.002820 0.001187 -0.000455 -0.002103 -0.003757 -0.005415 -0.007078 -0.008744 -0.010411 -0.012080 -0.013748 -0.015416 -0.017081 -0.018744 -0.020403 -0.022057 -0.023705 -0.025347 -0.026981 -0.028606 -0.030223 -0.031830 -0.033426 -0.035011 -0.036584 -0.038145 -0.039693 -0.041226 -0.042746 -0.044250 -0.045738 -0.047210 +0.071496 0.071436 0.071339 0.071204 0.071033 0.070826 0.070584 0.070307 0.069997 0.069653 0.069277 0.068868 0.068428 0.067958 0.067457 0.066927 0.066369 0.065782 0.065168 0.064526 0.063858 0.063164 0.062445 0.061700 0.060930 0.060135 0.059316 0.058473 0.057606 0.056715 0.055800 0.054861 0.053899 0.052914 0.051907 0.050876 0.049822 0.048746 0.047648 0.046528 0.045385 0.044221 0.043035 0.041827 0.040598 0.039348 0.038077 0.036785 0.035472 0.034138 0.032784 0.031410 0.030015 0.028601 0.027167 0.025714 0.024242 0.022751 0.021241 0.019714 0.018169 0.016607 0.015028 0.013434 0.011825 0.010201 0.008564 0.006913 0.005251 0.003577 0.001892 0.000198 -0.001505 -0.003216 -0.004934 -0.006657 -0.008386 -0.010119 -0.011854 -0.013592 -0.015330 -0.017068 -0.018804 -0.020539 -0.022270 -0.023996 -0.025717 -0.027432 -0.029140 -0.030839 -0.032529 -0.034209 -0.035879 -0.037537 -0.039183 -0.040816 -0.042436 -0.044042 -0.045633 -0.047208 -0.048767 -0.050309 -0.051833 -0.053338 +0.070726 0.070663 0.070560 0.070419 0.070239 0.070023 0.069769 0.069480 0.069155 0.068796 0.068403 0.067977 0.067519 0.067029 0.066507 0.065955 0.065373 0.064762 0.064121 0.063453 0.062757 0.062033 0.061282 0.060504 0.059700 0.058870 0.058013 0.057130 0.056222 0.055289 0.054330 0.053346 0.052338 0.051305 0.050247 0.049166 0.048060 0.046930 0.045777 0.044600 0.043400 0.042177 0.040931 0.039662 0.038370 0.037056 0.035719 0.034361 0.032980 0.031578 0.030154 0.028708 0.027241 0.025754 0.024245 0.022717 0.021168 0.019600 0.018013 0.016408 0.014784 0.013143 0.011485 0.009811 0.008122 0.006419 0.004701 0.002971 0.001229 -0.000525 -0.002289 -0.004062 -0.005843 -0.007632 -0.009427 -0.011227 -0.013032 -0.014839 -0.016648 -0.018458 -0.020267 -0.022075 -0.023880 -0.025682 -0.027478 -0.029268 -0.031052 -0.032827 -0.034593 -0.036350 -0.038095 -0.039830 -0.041552 -0.043262 -0.044957 -0.046638 -0.048304 -0.049954 -0.051587 -0.053202 -0.054799 -0.056378 -0.057936 -0.059474 +0.069568 0.069528 0.069444 0.069317 0.069149 0.068941 0.068694 0.068408 0.068085 0.067725 0.067329 0.066898 0.066433 0.065934 0.065402 0.064837 0.064241 0.063614 0.062956 0.062268 0.061551 0.060804 0.060028 0.059224 0.058391 0.057530 0.056641 0.055724 0.054780 0.053808 0.052810 0.051785 0.050734 0.049656 0.048553 0.047423 0.046268 0.045088 0.043882 0.042652 0.041396 0.040116 0.038812 0.037483 0.036130 0.034754 0.033353 0.031929 0.030481 0.029010 0.027517 0.026000 0.024461 0.022900 0.021318 0.019714 0.018089 0.016444 0.014779 0.013094 0.011391 0.009671 0.007933 0.006178 0.004409 0.002624 0.000825 -0.000986 -0.002809 -0.004644 -0.006488 -0.008342 -0.010203 -0.012071 -0.013944 -0.015822 -0.017703 -0.019586 -0.021469 -0.023351 -0.025232 -0.027110 -0.028983 -0.030851 -0.032712 -0.034566 -0.036411 -0.038246 -0.040071 -0.041884 -0.043686 -0.045474 -0.047248 -0.049008 -0.050752 -0.052480 -0.054191 -0.055883 -0.057557 -0.059212 -0.060846 -0.062459 -0.064051 -0.065620 +0.068066 0.068070 0.068028 0.067939 0.067803 0.067623 0.067398 0.067132 0.066824 0.066477 0.066091 0.065667 0.065206 0.064709 0.064176 0.063609 0.063007 0.062372 0.061704 0.061004 0.060272 0.059509 0.058714 0.057888 0.057031 0.056144 0.055227 0.054280 0.053304 0.052299 0.051265 0.050202 0.049111 0.047991 0.046844 0.045670 0.044467 0.043238 0.041982 0.040699 0.039390 0.038054 0.036692 0.035305 0.033891 0.032452 0.030987 0.029497 0.027983 0.026443 0.024880 0.023292 0.021680 0.020045 0.018388 0.016707 0.015005 0.013281 0.011537 0.009772 0.007988 0.006186 0.004367 0.002530 0.000678 -0.001190 -0.003071 -0.004965 -0.006872 -0.008789 -0.010715 -0.012650 -0.014592 -0.016541 -0.018493 -0.020449 -0.022406 -0.024365 -0.026322 -0.028277 -0.030229 -0.032176 -0.034117 -0.036050 -0.037976 -0.039892 -0.041798 -0.043693 -0.045576 -0.047446 -0.049302 -0.051143 -0.052968 -0.054778 -0.056569 -0.058343 -0.060098 -0.061832 -0.063547 -0.065239 -0.066909 -0.068556 -0.070178 -0.071774 +0.066285 0.066344 0.066356 0.066319 0.066235 0.066101 0.065917 0.065686 0.065409 0.065088 0.064724 0.064319 0.063873 0.063388 0.062864 0.062302 0.061703 0.061068 0.060397 0.059690 0.058949 0.058174 0.057364 0.056521 0.055645 0.054736 0.053795 0.052821 0.051816 0.050780 0.049712 0.048614 0.047485 0.046326 0.045137 0.043918 0.042670 0.041393 0.040087 0.038753 0.037390 0.035999 0.034579 0.033132 0.031658 0.030156 0.028627 0.027071 0.025488 0.023879 0.022244 0.020584 0.018898 0.017187 0.015452 0.013693 0.011911 0.010107 0.008281 0.006435 0.004569 0.002683 0.000780 -0.001141 -0.003078 -0.005030 -0.006996 -0.008975 -0.010966 -0.012966 -0.014976 -0.016994 -0.019017 -0.021046 -0.023077 -0.025111 -0.027145 -0.029178 -0.031209 -0.033236 -0.035258 -0.037273 -0.039281 -0.041280 -0.043269 -0.045248 -0.047214 -0.049168 -0.051108 -0.053034 -0.054944 -0.056838 -0.058714 -0.060572 -0.062411 -0.064229 -0.066027 -0.067802 -0.069555 -0.071282 -0.072982 -0.074651 -0.076296 -0.077916 +0.064281 0.064406 0.064485 0.064512 0.064488 0.064412 0.064285 0.064107 0.063875 0.063594 0.063264 0.062888 0.062467 0.062002 0.061494 0.060945 0.060355 0.059725 0.059056 0.058349 0.057603 0.056820 0.056000 0.055144 0.054251 0.053323 0.052360 0.051362 0.050330 0.049264 0.048165 0.047032 0.045867 0.044669 0.043439 0.042177 0.040884 0.039560 0.038204 0.036818 0.035401 0.033954 0.032477 0.030970 0.029433 0.027867 0.026272 0.024648 0.022996 0.021315 0.019607 0.017871 0.016109 0.014320 0.012505 0.010666 0.008803 0.006916 0.005007 0.003076 0.001125 -0.000846 -0.002836 -0.004843 -0.006866 -0.008904 -0.010956 -0.013020 -0.015096 -0.017181 -0.019274 -0.021374 -0.023479 -0.025588 -0.027698 -0.029810 -0.031920 -0.034027 -0.036130 -0.038229 -0.040320 -0.042403 -0.044477 -0.046541 -0.048593 -0.050633 -0.052660 -0.054673 -0.056670 -0.058651 -0.060615 -0.062560 -0.064486 -0.066392 -0.068276 -0.070138 -0.071973 -0.073780 -0.075560 -0.077318 -0.079050 -0.080753 -0.082425 -0.084073 +0.062135 0.062324 0.062467 0.062565 0.062612 0.062605 0.062541 0.062422 0.062249 0.062020 0.061735 0.061398 0.061010 0.060573 0.060089 0.059558 0.058983 0.058364 0.057701 0.056996 0.056249 0.055462 0.054634 0.053767 0.052861 0.051916 0.050933 0.049912 0.048855 0.047761 0.046630 0.045464 0.044263 0.043027 0.041756 0.040451 0.039113 0.037740 0.036334 0.034896 0.033424 0.031920 0.030383 0.028815 0.027214 0.025583 0.023919 0.022225 0.020501 0.018746 0.016962 0.015148 0.013307 0.011438 0.009541 0.007619 0.005672 0.003701 0.001706 -0.000311 -0.002349 -0.004407 -0.006484 -0.008578 -0.010689 -0.012814 -0.014952 -0.017103 -0.019264 -0.021433 -0.023610 -0.025792 -0.027978 -0.030167 -0.032355 -0.034543 -0.036728 -0.038909 -0.041085 -0.043253 -0.045413 -0.047564 -0.049704 -0.051833 -0.053948 -0.056050 -0.058137 -0.060208 -0.062262 -0.064298 -0.066314 -0.068310 -0.070282 -0.072229 -0.074146 -0.076043 -0.077917 -0.079764 -0.081581 -0.083372 -0.085138 -0.086877 -0.088582 -0.090257 +0.059898 0.060157 0.060368 0.060531 0.060645 0.060709 0.060718 0.060666 0.060555 0.060385 0.060156 0.059867 0.059520 0.059118 0.058663 0.058156 0.057600 0.056995 0.056342 0.055643 0.054898 0.054109 0.053276 0.052400 0.051481 0.050521 0.049519 0.048477 0.047395 0.046273 0.045113 0.043914 0.042677 0.041402 0.040090 0.038742 0.037357 0.035935 0.034478 0.032985 0.031457 0.029894 0.028296 0.026664 0.024997 0.023296 0.021563 0.019796 0.017996 0.016165 0.014302 0.012409 0.010486 0.008534 0.006554 0.004547 0.002514 0.000456 -0.001626 -0.003731 -0.005857 -0.008003 -0.010168 -0.012350 -0.014548 -0.016761 -0.018986 -0.021223 -0.023469 -0.025723 -0.027982 -0.030246 -0.032513 -0.034780 -0.037047 -0.039311 -0.041571 -0.043825 -0.046072 -0.048311 -0.050540 -0.052758 -0.054964 -0.057157 -0.059336 -0.061499 -0.063645 -0.065774 -0.067882 -0.069969 -0.072027 -0.074061 -0.076078 -0.078070 -0.080034 -0.081970 -0.083885 -0.085774 -0.087634 -0.089458 -0.091254 -0.093020 -0.094758 -0.096466 +0.057601 0.057933 0.058218 0.058452 0.058633 0.058761 0.058836 0.058856 0.058815 0.058708 0.058537 0.058303 0.058006 0.057645 0.057224 0.056746 0.056212 0.055625 0.054985 0.054295 0.053555 0.052766 0.051929 0.051045 0.050116 0.049141 0.048122 0.047059 0.045953 0.044804 0.043613 0.042381 0.041107 0.039794 0.038440 0.037046 0.035614 0.034142 0.032631 0.031082 0.029495 0.027871 0.026209 0.024510 0.022774 0.021003 0.019196 0.017354 0.015477 0.013567 0.011623 0.009648 0.007642 0.005605 0.003540 0.001446 -0.000674 -0.002820 -0.004990 -0.007183 -0.009398 -0.011633 -0.013886 -0.016157 -0.018443 -0.020743 -0.023056 -0.025378 -0.027709 -0.030047 -0.032389 -0.034735 -0.037082 -0.039428 -0.041772 -0.044112 -0.046447 -0.048774 -0.051093 -0.053402 -0.055700 -0.057985 -0.060257 -0.062515 -0.064755 -0.066977 -0.069178 -0.071350 -0.073505 -0.075641 -0.077753 -0.079837 -0.081898 -0.083939 -0.085953 -0.087936 -0.089886 -0.091807 -0.093702 -0.095569 -0.097402 -0.099206 -0.100980 -0.102729 +0.055271 0.055673 0.056031 0.056339 0.056593 0.056790 0.056930 0.057012 0.057036 0.056999 0.056891 0.056715 0.056470 0.056157 0.055777 0.055332 0.054825 0.054259 0.053635 0.052956 0.052222 0.051435 0.050597 0.049707 0.048768 0.047779 0.046743 0.045659 0.044529 0.043352 0.042131 0.040864 0.039554 0.038199 0.036802 0.035361 0.033879 0.032354 0.030788 0.029181 0.027533 0.025844 0.024116 0.022348 0.020541 0.018696 0.016813 0.014894 0.012938 0.010947 0.008921 0.006862 0.004771 0.002649 0.000497 -0.001684 -0.003892 -0.006127 -0.008386 -0.010668 -0.012972 -0.015296 -0.017639 -0.019998 -0.022373 -0.024760 -0.027159 -0.029568 -0.031984 -0.034406 -0.036831 -0.039258 -0.041685 -0.044110 -0.046532 -0.048948 -0.051357 -0.053757 -0.056148 -0.058527 -0.060893 -0.063246 -0.065581 -0.067896 -0.070183 -0.072457 -0.074714 -0.076946 -0.079153 -0.081342 -0.083509 -0.085651 -0.087759 -0.089838 -0.091890 -0.093919 -0.095916 -0.097881 -0.099817 -0.101727 -0.103612 -0.105465 -0.107284 -0.109073 +0.052941 0.053400 0.053822 0.054200 0.054527 0.054798 0.055008 0.055155 0.055239 0.055263 0.055222 0.055108 0.054919 0.054657 0.054322 0.053916 0.053440 0.052898 0.052294 0.051628 0.050902 0.050119 0.049279 0.048385 0.047436 0.046435 0.045381 0.044276 0.043121 0.041916 0.040662 0.039360 0.038011 0.036614 0.035171 0.033682 0.032147 0.030568 0.028944 0.027275 0.025564 0.023809 0.022012 0.020173 0.018293 0.016372 0.014412 0.012413 0.010377 0.008303 0.006194 0.004051 0.001874 -0.000335 -0.002574 -0.004844 -0.007141 -0.009464 -0.011813 -0.014185 -0.016578 -0.018992 -0.021424 -0.023872 -0.026335 -0.028811 -0.031297 -0.033792 -0.036293 -0.038799 -0.041307 -0.043816 -0.046323 -0.048827 -0.051326 -0.053817 -0.056301 -0.058774 -0.061236 -0.063683 -0.066111 -0.068513 -0.070906 -0.073282 -0.075635 -0.077966 -0.080281 -0.082577 -0.084847 -0.087082 -0.089291 -0.091478 -0.093642 -0.095773 -0.097873 -0.099947 -0.101999 -0.104024 -0.106015 -0.107971 -0.109898 -0.111801 -0.113674 -0.115516 +0.050640 0.051141 0.051615 0.052053 0.052446 0.052786 0.053068 0.053286 0.053437 0.053519 0.053536 0.053484 0.053357 0.053148 0.052861 0.052498 0.052057 0.051544 0.050960 0.050310 0.049595 0.048816 0.047977 0.047078 0.046120 0.045105 0.044033 0.042906 0.041725 0.040491 0.039203 0.037864 0.036474 0.035033 0.033542 0.032002 0.030413 0.028777 0.027092 0.025361 0.023584 0.021761 0.019893 0.017982 0.016027 0.014030 0.011991 0.009912 0.007793 0.005637 0.003444 0.001215 -0.001049 -0.003345 -0.005673 -0.008031 -0.010417 -0.012831 -0.015269 -0.017732 -0.020215 -0.022719 -0.025241 -0.027779 -0.030331 -0.032895 -0.035469 -0.038050 -0.040636 -0.043226 -0.045818 -0.048408 -0.050995 -0.053578 -0.056154 -0.058721 -0.061277 -0.063816 -0.066331 -0.068839 -0.071333 -0.073806 -0.076260 -0.078701 -0.081124 -0.083523 -0.085886 -0.088228 -0.090550 -0.092850 -0.095115 -0.097353 -0.099570 -0.101766 -0.103934 -0.106067 -0.108165 -0.110239 -0.112287 -0.114303 -0.116286 -0.118233 -0.120156 -0.122055 +0.048387 0.048918 0.049430 0.049916 0.050366 0.050769 0.051117 0.051404 0.051625 0.051774 0.051849 0.051853 0.051783 0.051633 0.051397 0.051077 0.050676 0.050194 0.049635 0.049002 0.048298 0.047526 0.046686 0.045782 0.044815 0.043785 0.042695 0.041546 0.040337 0.039071 0.037749 0.036371 0.034938 0.033451 0.031910 0.030318 0.028673 0.026977 0.025231 0.023436 0.021591 0.019699 0.017760 0.015774 0.013743 0.011668 0.009550 0.007390 0.005189 0.002948 0.000670 -0.001646 -0.003996 -0.006381 -0.008798 -0.011245 -0.013722 -0.016226 -0.018755 -0.021309 -0.023884 -0.026478 -0.029091 -0.031719 -0.034360 -0.037013 -0.039674 -0.042342 -0.045014 -0.047689 -0.050363 -0.053034 -0.055701 -0.058361 -0.061008 -0.063633 -0.066251 -0.068861 -0.071451 -0.074025 -0.076589 -0.079138 -0.081665 -0.084156 -0.086630 -0.089086 -0.091523 -0.093923 -0.096300 -0.098661 -0.101001 -0.103315 -0.105594 -0.107837 -0.110060 -0.112258 -0.114423 -0.116552 -0.118648 -0.120722 -0.122769 -0.124786 -0.126770 -0.128717 +0.046200 0.046751 0.047289 0.047809 0.048302 0.048758 0.049167 0.049518 0.049804 0.050021 0.050161 0.050223 0.050206 0.050110 0.049928 0.049656 0.049295 0.048848 0.048315 0.047701 0.047009 0.046243 0.045404 0.044495 0.043517 0.042473 0.041363 0.040189 0.038953 0.037654 0.036295 0.034876 0.033399 0.031864 0.030273 0.028626 0.026924 0.025168 0.023359 0.021498 0.019586 0.017623 0.015611 0.013550 0.011443 0.009289 0.007090 0.004848 0.002564 0.000238 -0.002126 -0.004529 -0.006968 -0.009442 -0.011948 -0.014487 -0.017054 -0.019650 -0.022271 -0.024916 -0.027583 -0.030269 -0.032973 -0.035692 -0.038423 -0.041164 -0.043914 -0.046669 -0.049426 -0.052184 -0.054940 -0.057689 -0.060420 -0.063141 -0.065861 -0.068565 -0.071257 -0.073938 -0.076610 -0.079263 -0.081882 -0.084484 -0.087073 -0.089645 -0.092181 -0.094696 -0.097200 -0.099684 -0.102145 -0.104571 -0.106961 -0.109336 -0.111686 -0.114003 -0.116282 -0.118534 -0.120763 -0.122964 -0.125135 -0.127272 -0.129369 -0.131437 -0.133480 -0.135495 +0.044085 0.044651 0.045208 0.045751 0.046274 0.046769 0.047228 0.047638 0.047985 0.048264 0.048470 0.048594 0.048633 0.048586 0.048454 0.048231 0.047912 0.047500 0.046996 0.046403 0.045724 0.044964 0.044126 0.043212 0.042223 0.041163 0.040033 0.038834 0.037567 0.036235 0.034838 0.033378 0.031855 0.030272 0.028629 0.026926 0.025166 0.023349 0.021476 0.019549 0.017567 0.015533 0.013447 0.011311 0.009126 0.006892 0.004613 0.002287 -0.000081 -0.002492 -0.004944 -0.007435 -0.009963 -0.012527 -0.015125 -0.017755 -0.020414 -0.023102 -0.025816 -0.028554 -0.031314 -0.034092 -0.036888 -0.039697 -0.042519 -0.045350 -0.048187 -0.051028 -0.053868 -0.056700 -0.059515 -0.062338 -0.065150 -0.067954 -0.070746 -0.073536 -0.076312 -0.079058 -0.081783 -0.084501 -0.087205 -0.089876 -0.092527 -0.095171 -0.097798 -0.100404 -0.102980 -0.105515 -0.108041 -0.110545 -0.113017 -0.115448 -0.117858 -0.120247 -0.122607 -0.124937 -0.127233 -0.129488 -0.131711 -0.133911 -0.136080 -0.138214 -0.140314 -0.142384 +0.042035 0.042619 0.043193 0.043754 0.044298 0.044820 0.045313 0.045769 0.046173 0.046511 0.046775 0.046961 0.047059 0.047064 0.046978 0.046800 0.046525 0.046149 0.045674 0.045103 0.044439 0.043686 0.042848 0.041928 0.040929 0.039852 0.038701 0.037476 0.036179 0.034812 0.033377 0.031874 0.030306 0.028673 0.026977 0.025219 0.023399 0.021521 0.019583 0.017588 0.015537 0.013430 0.011270 0.009057 0.006793 0.004480 0.002118 -0.000291 -0.002746 -0.005244 -0.007784 -0.010364 -0.012982 -0.015638 -0.018328 -0.021050 -0.023803 -0.026585 -0.029392 -0.032223 -0.035076 -0.037947 -0.040835 -0.043736 -0.046647 -0.049566 -0.052486 -0.055392 -0.058302 -0.061216 -0.064121 -0.067019 -0.069918 -0.072810 -0.075683 -0.078524 -0.081364 -0.084197 -0.087003 -0.089783 -0.092563 -0.095331 -0.098080 -0.100804 -0.103484 -0.106159 -0.108815 -0.111443 -0.114027 -0.116596 -0.119144 -0.121666 -0.124159 -0.126620 -0.129037 -0.131423 -0.133786 -0.136117 -0.138411 -0.140669 -0.142896 -0.145099 -0.147273 -0.149418 +0.040044 0.040648 0.041240 0.041819 0.042381 0.042922 0.043439 0.043926 0.044372 0.044763 0.045083 0.045323 0.045480 0.045540 0.045501 0.045364 0.045130 0.044791 0.044347 0.043799 0.043150 0.042405 0.041567 0.040642 0.039632 0.038539 0.037366 0.036115 0.034787 0.033386 0.031911 0.030366 0.028751 0.027068 0.025318 0.023504 0.021625 0.019683 0.017680 0.015617 0.013495 0.011316 0.009080 0.006790 0.004446 0.002051 -0.000395 -0.002889 -0.005430 -0.008016 -0.010645 -0.013316 -0.016026 -0.018774 -0.021557 -0.024373 -0.027220 -0.030096 -0.032998 -0.035924 -0.038870 -0.041834 -0.044813 -0.047804 -0.050791 -0.053774 -0.056775 -0.059771 -0.062771 -0.065765 -0.068765 -0.071754 -0.074710 -0.077665 -0.080620 -0.083557 -0.086461 -0.089370 -0.092274 -0.095163 -0.098031 -0.100855 -0.103676 -0.106482 -0.109264 -0.112003 -0.114726 -0.117434 -0.120118 -0.122775 -0.125402 -0.127986 -0.130538 -0.133068 -0.135568 -0.138029 -0.140453 -0.142846 -0.145212 -0.147549 -0.149855 -0.152129 -0.154369 -0.156581 +0.038106 0.038731 0.039342 0.039940 0.040520 0.041078 0.041612 0.042120 0.042593 0.043024 0.043394 0.043687 0.043894 0.044009 0.044019 0.043925 0.043727 0.043424 0.043011 0.042487 0.041855 0.041119 0.040283 0.039353 0.038332 0.037223 0.036028 0.034751 0.033393 0.031956 0.030442 0.028853 0.027191 0.025458 0.023654 0.021782 0.019843 0.017838 0.015769 0.013636 0.011443 0.009189 0.006877 0.004508 0.002083 -0.000395 -0.002925 -0.005506 -0.008134 -0.010810 -0.013530 -0.016292 -0.019095 -0.021937 -0.024814 -0.027725 -0.030667 -0.033638 -0.036634 -0.039654 -0.042693 -0.045747 -0.048797 -0.051857 -0.054934 -0.058015 -0.061097 -0.064190 -0.067284 -0.070359 -0.073415 -0.076478 -0.079539 -0.082567 -0.085593 -0.088625 -0.091648 -0.094656 -0.097633 -0.100583 -0.103535 -0.106467 -0.109362 -0.112235 -0.115100 -0.117944 -0.120764 -0.123556 -0.126313 -0.129028 -0.131728 -0.134400 -0.137037 -0.139628 -0.142193 -0.144732 -0.147239 -0.149714 -0.152156 -0.154561 -0.156936 -0.159277 -0.161590 -0.163874 +0.036213 0.036860 0.037491 0.038108 0.038706 0.039282 0.039833 0.040357 0.040849 0.041304 0.041710 0.042051 0.042307 0.042469 0.042529 0.042479 0.042317 0.042047 0.041666 0.041166 0.040553 0.039827 0.038994 0.038060 0.037029 0.035904 0.034688 0.033384 0.031995 0.030523 0.028970 0.027337 0.025628 0.023843 0.021985 0.020055 0.018054 0.015985 0.013848 0.011646 0.009379 0.007050 0.004660 0.002211 -0.000295 -0.002858 -0.005474 -0.008142 -0.010860 -0.013626 -0.016437 -0.019293 -0.022190 -0.025125 -0.028098 -0.031104 -0.034142 -0.037208 -0.040298 -0.043407 -0.046507 -0.049642 -0.052785 -0.055949 -0.059111 -0.062292 -0.065473 -0.068625 -0.071786 -0.074956 -0.078108 -0.081240 -0.084391 -0.087539 -0.090678 -0.093797 -0.096878 -0.099969 -0.103047 -0.106100 -0.109114 -0.112131 -0.115132 -0.118112 -0.121068 -0.123992 -0.126877 -0.129742 -0.132585 -0.135398 -0.138163 -0.140906 -0.143619 -0.146303 -0.148954 -0.151572 -0.154152 -0.156698 -0.159210 -0.161691 -0.164141 -0.166559 -0.168941 -0.171293 +0.034359 0.035029 0.035682 0.036318 0.036935 0.037527 0.038094 0.038634 0.039141 0.039613 0.040041 0.040417 0.040718 0.040924 0.041029 0.041024 0.040902 0.040663 0.040311 0.039838 0.039243 0.038530 0.037701 0.036764 0.035723 0.034583 0.033346 0.032016 0.030596 0.029088 0.027495 0.025818 0.024061 0.022224 0.020310 0.018321 0.016258 0.014123 0.011918 0.009644 0.007304 0.004899 0.002430 -0.000101 -0.002690 -0.005338 -0.008041 -0.010798 -0.013606 -0.016464 -0.019369 -0.022318 -0.025310 -0.028341 -0.031409 -0.034511 -0.037643 -0.040786 -0.043943 -0.047140 -0.050345 -0.053577 -0.056816 -0.060078 -0.063332 -0.066573 -0.069830 -0.073098 -0.076337 -0.079582 -0.082845 -0.086106 -0.089358 -0.092582 -0.095788 -0.099003 -0.102204 -0.105360 -0.108522 -0.111674 -0.114809 -0.117925 -0.121016 -0.124069 -0.127094 -0.130107 -0.133093 -0.136036 -0.138955 -0.141844 -0.144708 -0.147540 -0.150339 -0.153103 -0.155827 -0.158518 -0.161176 -0.163801 -0.166393 -0.168946 -0.171466 -0.173959 -0.176422 -0.178856 +0.032539 0.033232 0.033906 0.034563 0.035199 0.035809 0.036391 0.036945 0.037467 0.037953 0.038397 0.038793 0.039129 0.039379 0.039525 0.039561 0.039480 0.039275 0.038949 0.038503 0.037929 0.037228 0.036405 0.035466 0.034416 0.033260 0.032003 0.030647 0.029196 0.027652 0.026018 0.024296 0.022490 0.020600 0.018630 0.016581 0.014454 0.012253 0.009978 0.007632 0.005217 0.002734 0.000185 -0.002428 -0.005102 -0.007836 -0.010628 -0.013475 -0.016375 -0.019325 -0.022324 -0.025368 -0.028455 -0.031581 -0.034744 -0.037919 -0.041118 -0.044353 -0.047623 -0.050906 -0.054221 -0.057553 -0.060871 -0.064195 -0.067547 -0.070889 -0.074221 -0.077584 -0.080954 -0.084323 -0.087677 -0.090999 -0.094342 -0.097678 -0.100987 -0.104273 -0.107569 -0.110854 -0.114123 -0.117372 -0.120591 -0.123780 -0.126953 -0.130109 -0.133234 -0.136319 -0.139385 -0.142428 -0.145442 -0.148425 -0.151375 -0.154285 -0.157163 -0.160003 -0.162812 -0.165586 -0.168320 -0.171018 -0.173687 -0.176324 -0.178929 -0.181502 -0.184045 -0.186558 +0.030746 0.031464 0.032161 0.032838 0.033493 0.034120 0.034719 0.035288 0.035824 0.036323 0.036781 0.037192 0.037548 0.037832 0.038019 0.038093 0.038051 0.037882 0.037584 0.037162 0.036609 0.035923 0.035107 0.034166 0.033108 0.031937 0.030659 0.029276 0.027794 0.026213 0.024538 0.022771 0.020915 0.018971 0.016944 0.014833 0.012643 0.010374 0.008029 0.005609 0.003117 0.000555 -0.002075 -0.004772 -0.007532 -0.010354 -0.013235 -0.016173 -0.019165 -0.022209 -0.025302 -0.028441 -0.031622 -0.034819 -0.038048 -0.041316 -0.044634 -0.047964 -0.051337 -0.054720 -0.058112 -0.061506 -0.064942 -0.068360 -0.071785 -0.075247 -0.078718 -0.082190 -0.085646 -0.089078 -0.092537 -0.095987 -0.099396 -0.102824 -0.106249 -0.109663 -0.113063 -0.116445 -0.119792 -0.123118 -0.126438 -0.129736 -0.132989 -0.136233 -0.139447 -0.142642 -0.145808 -0.148943 -0.152044 -0.155107 -0.158136 -0.161135 -0.164099 -0.167024 -0.169906 -0.172760 -0.175581 -0.178367 -0.181120 -0.183839 -0.186525 -0.189180 -0.191804 -0.194398 +0.028975 0.029719 0.030439 0.031138 0.031813 0.032459 0.033074 0.033659 0.034209 0.034722 0.035193 0.035616 0.035986 0.036292 0.036513 0.036625 0.036618 0.036485 0.036217 0.035817 0.035285 0.034614 0.033806 0.032865 0.031798 0.030613 0.029314 0.027904 0.026390 0.024772 0.023055 0.021242 0.019335 0.017337 0.015251 0.013079 0.010823 0.008485 0.006068 0.003574 0.001004 -0.001638 -0.004351 -0.007132 -0.009979 -0.012890 -0.015861 -0.018891 -0.021977 -0.025115 -0.028301 -0.031507 -0.034754 -0.038045 -0.041397 -0.044763 -0.048182 -0.051612 -0.055048 -0.058518 -0.062024 -0.065507 -0.069022 -0.072575 -0.076140 -0.079699 -0.083247 -0.086800 -0.090370 -0.093918 -0.097451 -0.101004 -0.104554 -0.108095 -0.111624 -0.115123 -0.118609 -0.122079 -0.125539 -0.128966 -0.132371 -0.135757 -0.139127 -0.142472 -0.145790 -0.149078 -0.152329 -0.155547 -0.158737 -0.161894 -0.165016 -0.168091 -0.171137 -0.174150 -0.177126 -0.180067 -0.182973 -0.185844 -0.188681 -0.191484 -0.194254 -0.196992 -0.199700 -0.202377 +0.027224 0.027994 0.028740 0.029462 0.030158 0.030824 0.031456 0.032055 0.032621 0.033147 0.033630 0.034066 0.034448 0.034767 0.035011 0.035159 0.035185 0.035084 0.034847 0.034471 0.033957 0.033302 0.032502 0.031562 0.030487 0.029287 0.027967 0.026531 0.024984 0.023328 0.021569 0.019708 0.017750 0.015697 0.013551 0.011316 0.008994 0.006586 0.004096 0.001526 -0.001122 -0.003846 -0.006642 -0.009509 -0.012444 -0.015445 -0.018507 -0.021630 -0.024808 -0.028010 -0.031259 -0.034561 -0.037932 -0.041322 -0.044774 -0.048241 -0.051721 -0.055243 -0.058794 -0.062350 -0.065943 -0.069577 -0.073227 -0.076874 -0.080502 -0.084169 -0.087843 -0.091493 -0.095141 -0.098813 -0.102483 -0.106147 -0.109802 -0.113426 -0.117037 -0.120651 -0.124248 -0.127811 -0.131362 -0.134894 -0.138412 -0.141907 -0.145377 -0.148818 -0.152223 -0.155598 -0.158948 -0.162265 -0.165541 -0.168780 -0.171990 -0.175165 -0.178303 -0.181404 -0.184469 -0.187497 -0.190490 -0.193447 -0.196369 -0.199258 -0.202114 -0.204938 -0.207732 -0.210495 +0.025493 0.026290 0.027060 0.027805 0.028525 0.029211 0.029861 0.030477 0.031057 0.031598 0.032094 0.032541 0.032935 0.033264 0.033522 0.033694 0.033753 0.033682 0.033475 0.033123 0.032627 0.031987 0.031195 0.030256 0.029175 0.027960 0.026619 0.025155 0.023575 0.021881 0.020079 0.018170 0.016160 0.014050 0.011845 0.009545 0.007155 0.004677 0.002112 -0.000535 -0.003263 -0.006068 -0.008950 -0.011904 -0.014927 -0.018018 -0.021172 -0.024354 -0.027593 -0.030890 -0.034267 -0.037667 -0.041138 -0.044629 -0.048139 -0.051701 -0.055283 -0.058905 -0.062561 -0.066265 -0.069990 -0.073717 -0.077428 -0.081190 -0.084951 -0.088700 -0.092465 -0.096249 -0.100035 -0.103818 -0.107594 -0.111342 -0.115081 -0.118828 -0.122546 -0.126252 -0.129944 -0.133628 -0.137294 -0.140938 -0.144559 -0.148147 -0.151707 -0.155245 -0.158755 -0.162232 -0.165663 -0.169072 -0.172447 -0.175787 -0.179091 -0.182357 -0.185586 -0.188777 -0.191931 -0.195049 -0.198130 -0.201176 -0.204187 -0.207164 -0.210108 -0.213020 -0.215902 -0.218754 +0.023780 0.024603 0.025399 0.026169 0.026911 0.027619 0.028288 0.028921 0.029517 0.030072 0.030581 0.031040 0.031444 0.031783 0.032051 0.032237 0.032323 0.032281 0.032100 0.031773 0.031296 0.030668 0.029886 0.028948 0.027860 0.026631 0.025268 0.023777 0.022163 0.020431 0.018584 0.016627 0.014564 0.012397 0.010130 0.007765 0.005306 0.002756 0.000117 -0.002609 -0.005417 -0.008306 -0.011273 -0.014315 -0.017427 -0.020574 -0.023785 -0.027062 -0.030429 -0.033823 -0.037299 -0.040800 -0.044327 -0.047914 -0.051526 -0.055172 -0.058894 -0.062655 -0.066444 -0.070240 -0.074024 -0.077871 -0.081717 -0.085548 -0.089427 -0.093317 -0.097212 -0.101108 -0.104981 -0.108860 -0.112732 -0.116607 -0.120453 -0.124296 -0.128127 -0.131954 -0.135764 -0.139556 -0.143327 -0.147066 -0.150780 -0.154476 -0.158145 -0.161776 -0.165376 -0.168950 -0.172493 -0.176000 -0.179472 -0.182907 -0.186304 -0.189664 -0.192985 -0.196268 -0.199514 -0.202723 -0.205895 -0.209031 -0.212133 -0.215201 -0.218235 -0.221238 -0.224211 -0.227154 +0.022087 0.022935 0.023757 0.024551 0.025317 0.026046 0.026736 0.027387 0.027999 0.028568 0.029090 0.029560 0.029974 0.030323 0.030599 0.030794 0.030896 0.030881 0.030724 0.030421 0.029962 0.029347 0.028574 0.027637 0.026543 0.025299 0.023915 0.022396 0.020748 0.018977 0.017085 0.015079 0.012961 0.010736 0.008406 0.005976 0.003447 0.000824 -0.001891 -0.004696 -0.007586 -0.010559 -0.013612 -0.016706 -0.019872 -0.023111 -0.026451 -0.029824 -0.033288 -0.036762 -0.040312 -0.043908 -0.047536 -0.051206 -0.054965 -0.058769 -0.062592 -0.066460 -0.070307 -0.074226 -0.078136 -0.082063 -0.086034 -0.090021 -0.094019 -0.098022 -0.102003 -0.105988 -0.109989 -0.113988 -0.117959 -0.121926 -0.125901 -0.129866 -0.133819 -0.137756 -0.141666 -0.145555 -0.149430 -0.153282 -0.157109 -0.160893 -0.164662 -0.168402 -0.172112 -0.175788 -0.179430 -0.183036 -0.186606 -0.190137 -0.193630 -0.197085 -0.200501 -0.203878 -0.207218 -0.210520 -0.213785 -0.217015 -0.220209 -0.223370 -0.226497 -0.229594 -0.232659 -0.235696 +0.020416 0.021286 0.022132 0.022951 0.023740 0.024492 0.025202 0.025872 0.026501 0.027084 0.027619 0.028101 0.028525 0.028881 0.029165 0.029367 0.029478 0.029482 0.029349 0.029066 0.028626 0.028024 0.027258 0.026323 0.025223 0.023965 0.022559 0.021011 0.019329 0.017517 0.015581 0.013524 0.011352 0.009067 0.006674 0.004177 0.001578 -0.001120 -0.003912 -0.006796 -0.009768 -0.012825 -0.015928 -0.019076 -0.022371 -0.025704 -0.029139 -0.032588 -0.036124 -0.039714 -0.043341 -0.047020 -0.050799 -0.054631 -0.058488 -0.062400 -0.066295 -0.070274 -0.074246 -0.078246 -0.082299 -0.086373 -0.090464 -0.094565 -0.098648 -0.102741 -0.106856 -0.110953 -0.115065 -0.119157 -0.123263 -0.127363 -0.131454 -0.135532 -0.139586 -0.143622 -0.147649 -0.151655 -0.155632 -0.159580 -0.163512 -0.167417 -0.171294 -0.175139 -0.178952 -0.182730 -0.186474 -0.190180 -0.193848 -0.197478 -0.201069 -0.204621 -0.208133 -0.211607 -0.215043 -0.218441 -0.221802 -0.225126 -0.228416 -0.231672 -0.234895 -0.238087 -0.241248 -0.244381 +0.018772 0.019659 0.020525 0.021368 0.022180 0.022955 0.023686 0.024374 0.025020 0.025619 0.026167 0.026660 0.027093 0.027457 0.027747 0.027956 0.028072 0.028086 0.027975 0.027710 0.027288 0.026698 0.025938 0.025006 0.023900 0.022627 0.021199 0.019623 0.017906 0.016053 0.014071 0.011963 0.009735 0.007390 0.004933 0.002368 -0.000303 -0.003075 -0.005945 -0.008908 -0.011960 -0.015034 -0.018229 -0.021539 -0.024890 -0.028295 -0.031801 -0.035366 -0.038976 -0.042646 -0.046428 -0.050270 -0.054144 -0.058050 -0.062012 -0.066035 -0.070044 -0.074115 -0.078237 -0.082387 -0.086560 -0.090738 -0.094925 -0.099117 -0.103339 -0.107543 -0.111772 -0.115984 -0.120215 -0.124445 -0.128669 -0.132884 -0.137070 -0.141257 -0.145432 -0.149590 -0.153712 -0.157825 -0.161918 -0.165986 -0.170028 -0.174042 -0.178025 -0.181976 -0.185894 -0.189776 -0.193622 -0.197431 -0.201200 -0.204931 -0.208622 -0.212273 -0.215884 -0.219456 -0.222990 -0.226486 -0.229945 -0.233368 -0.236755 -0.240109 -0.243430 -0.246719 -0.249979 -0.253209 +0.017152 0.018056 0.018939 0.019801 0.020636 0.021433 0.022185 0.022892 0.023555 0.024170 0.024732 0.025237 0.025679 0.026050 0.026346 0.026558 0.026680 0.026699 0.026600 0.026354 0.025947 0.025369 0.024616 0.023684 0.022572 0.021286 0.019835 0.018230 0.016478 0.014584 0.012555 0.010395 0.008110 0.005705 0.003183 0.000549 -0.002194 -0.005041 -0.007987 -0.010999 -0.014071 -0.017303 -0.020583 -0.023950 -0.027379 -0.030901 -0.034475 -0.038118 -0.041884 -0.045719 -0.049593 -0.053507 -0.057488 -0.061539 -0.065578 -0.069695 -0.073871 -0.078082 -0.082323 -0.086576 -0.090846 -0.095128 -0.099447 -0.103750 -0.108088 -0.112412 -0.116762 -0.121114 -0.125465 -0.129811 -0.134131 -0.138459 -0.142778 -0.147082 -0.151353 -0.155622 -0.159873 -0.164102 -0.168308 -0.172488 -0.176640 -0.180763 -0.184855 -0.188914 -0.192938 -0.196926 -0.200877 -0.204790 -0.208662 -0.212495 -0.216288 -0.220041 -0.223753 -0.227427 -0.231061 -0.234657 -0.238216 -0.241739 -0.245227 -0.248680 -0.252101 -0.255491 -0.258851 -0.262183 +0.015556 0.016475 0.017374 0.018253 0.019107 0.019925 0.020698 0.021424 0.022105 0.022735 0.023311 0.023828 0.024279 0.024658 0.024959 0.025175 0.025300 0.025321 0.025228 0.024998 0.024604 0.024038 0.023290 0.022359 0.021241 0.019941 0.018468 0.016833 0.015045 0.013109 0.011032 0.008820 0.006478 0.004011 0.001424 -0.001280 -0.004094 -0.007012 -0.009978 -0.013077 -0.016301 -0.019583 -0.022903 -0.026398 -0.029879 -0.033474 -0.037206 -0.041015 -0.044869 -0.048773 -0.052753 -0.056795 -0.060868 -0.065013 -0.069225 -0.073482 -0.077777 -0.082090 -0.086430 -0.090788 -0.095192 -0.099585 -0.104022 -0.108449 -0.112909 -0.117376 -0.121847 -0.126318 -0.130765 -0.135228 -0.139685 -0.144132 -0.148547 -0.152968 -0.157372 -0.161759 -0.166126 -0.170470 -0.174790 -0.179083 -0.183347 -0.187581 -0.191783 -0.195952 -0.200085 -0.204181 -0.208238 -0.212257 -0.216235 -0.220173 -0.224070 -0.227926 -0.231742 -0.235519 -0.239256 -0.242955 -0.246616 -0.250241 -0.253832 -0.257388 -0.260911 -0.264404 -0.267867 -0.271302 +0.013989 0.014918 0.015831 0.016725 0.017594 0.018431 0.019224 0.019969 0.020668 0.021314 0.021904 0.022433 0.022894 0.023279 0.023585 0.023804 0.023931 0.023953 0.023862 0.023641 0.023259 0.022703 0.021960 0.021029 0.019905 0.018591 0.017095 0.015431 0.013606 0.011628 0.009503 0.007238 0.004838 0.002309 -0.000344 -0.003116 -0.005974 -0.008913 -0.012022 -0.015198 -0.018450 -0.021831 -0.025268 -0.028822 -0.032435 -0.036196 -0.040012 -0.043885 -0.047846 -0.051876 -0.055947 -0.060101 -0.064331 -0.068615 -0.072946 -0.077304 -0.081698 -0.086119 -0.090594 -0.095064 -0.099588 -0.104107 -0.108667 -0.113239 -0.117822 -0.122400 -0.126978 -0.131568 -0.136157 -0.140732 -0.145295 -0.149861 -0.154416 -0.158956 -0.163480 -0.167984 -0.172468 -0.176928 -0.181363 -0.185771 -0.190150 -0.194497 -0.198811 -0.203091 -0.207335 -0.211540 -0.215707 -0.219833 -0.223919 -0.227964 -0.231967 -0.235930 -0.239851 -0.243733 -0.247575 -0.251379 -0.255146 -0.258875 -0.262570 -0.266231 -0.269860 -0.273457 -0.277025 -0.280566 +0.012456 0.013386 0.014310 0.015217 0.016100 0.016952 0.017762 0.018527 0.019243 0.019906 0.020509 0.021051 0.021520 0.021912 0.022223 0.022445 0.022572 0.022595 0.022502 0.022284 0.021912 0.021364 0.020628 0.019695 0.018565 0.017236 0.015718 0.014024 0.012162 0.010141 0.007967 0.005649 0.003190 0.000599 -0.002117 -0.004903 -0.007840 -0.010917 -0.014073 -0.017314 -0.020686 -0.024121 -0.027617 -0.031309 -0.035063 -0.038909 -0.042805 -0.046803 -0.050852 -0.054994 -0.059223 -0.063514 -0.067863 -0.072248 -0.076678 -0.081144 -0.085661 -0.090208 -0.094804 -0.099402 -0.104050 -0.108717 -0.113401 -0.118096 -0.122776 -0.127486 -0.132199 -0.136892 -0.141599 -0.146305 -0.151003 -0.155691 -0.160367 -0.165028 -0.169672 -0.174296 -0.178898 -0.183477 -0.188029 -0.192553 -0.197048 -0.201510 -0.205939 -0.210332 -0.214688 -0.219005 -0.223283 -0.227520 -0.231715 -0.235869 -0.239981 -0.244052 -0.248081 -0.252070 -0.256020 -0.259931 -0.263805 -0.267642 -0.271444 -0.275212 -0.278947 -0.282652 -0.286329 -0.289977 +0.010962 0.011886 0.012811 0.013729 0.014625 0.015489 0.016313 0.017095 0.017829 0.018508 0.019126 0.019679 0.020157 0.020557 0.020871 0.021096 0.021224 0.021245 0.021150 0.020929 0.020564 0.020023 0.019291 0.018357 0.017220 0.015877 0.014336 0.012611 0.010712 0.008648 0.006425 0.004052 0.001537 -0.001090 -0.003821 -0.006738 -0.009744 -0.012872 -0.016095 -0.019416 -0.022872 -0.026403 -0.030072 -0.033844 -0.037676 -0.041620 -0.045624 -0.049733 -0.053939 -0.058218 -0.062564 -0.066955 -0.071402 -0.075895 -0.080448 -0.085041 -0.089694 -0.094356 -0.099077 -0.103826 -0.108599 -0.113390 -0.118172 -0.122991 -0.127819 -0.132631 -0.137465 -0.142302 -0.147137 -0.151967 -0.156789 -0.161601 -0.166400 -0.171183 -0.175949 -0.180694 -0.185417 -0.190115 -0.194787 -0.199430 -0.204042 -0.208621 -0.213166 -0.217675 -0.222146 -0.226577 -0.230968 -0.235317 -0.239624 -0.243889 -0.248112 -0.252293 -0.256433 -0.260532 -0.264591 -0.268612 -0.272595 -0.276541 -0.280452 -0.284330 -0.288175 -0.291990 -0.295776 -0.299536 +0.009506 0.010422 0.011341 0.012261 0.013167 0.014042 0.014878 0.015674 0.016425 0.017120 0.017752 0.018317 0.018804 0.019210 0.019530 0.019756 0.019884 0.019903 0.019805 0.019580 0.019214 0.018679 0.017950 0.017014 0.015869 0.014512 0.012948 0.011193 0.009256 0.007148 0.004877 0.002452 -0.000097 -0.002764 -0.005620 -0.008577 -0.011665 -0.014855 -0.018153 -0.021532 -0.025118 -0.028782 -0.032507 -0.036398 -0.040309 -0.044362 -0.048523 -0.052766 -0.057088 -0.061464 -0.065906 -0.070406 -0.074975 -0.079595 -0.084286 -0.088995 -0.093773 -0.098588 -0.103434 -0.108309 -0.113180 -0.118096 -0.123029 -0.127951 -0.132903 -0.137862 -0.142825 -0.147789 -0.152750 -0.157706 -0.162654 -0.167590 -0.172514 -0.177421 -0.182310 -0.187179 -0.192024 -0.196845 -0.201638 -0.206401 -0.211133 -0.215832 -0.220495 -0.225121 -0.229708 -0.234255 -0.238761 -0.243225 -0.247646 -0.252025 -0.256361 -0.260654 -0.264906 -0.269118 -0.273289 -0.277421 -0.281516 -0.285574 -0.289597 -0.293586 -0.297543 -0.301470 -0.305369 -0.309242 +0.008083 0.008994 0.009904 0.010818 0.011727 0.012612 0.013459 0.014265 0.015030 0.015740 0.016387 0.016964 0.017460 0.017873 0.018197 0.018425 0.018552 0.018569 0.018466 0.018234 0.017864 0.017332 0.016604 0.015667 0.014514 0.013142 0.011556 0.009769 0.007795 0.005643 0.003348 0.000895 -0.001719 -0.004501 -0.007371 -0.010433 -0.013549 -0.016816 -0.020203 -0.023742 -0.027401 -0.031140 -0.034986 -0.038931 -0.043022 -0.047206 -0.051479 -0.055817 -0.060233 -0.064717 -0.069280 -0.073907 -0.078601 -0.083351 -0.088166 -0.093029 -0.097933 -0.102874 -0.107820 -0.112820 -0.117845 -0.122864 -0.127923 -0.132995 -0.138077 -0.143165 -0.148257 -0.153348 -0.158437 -0.163521 -0.168595 -0.173659 -0.178709 -0.183743 -0.188757 -0.193751 -0.198721 -0.203665 -0.208581 -0.213467 -0.218321 -0.223141 -0.227924 -0.232670 -0.237376 -0.242041 -0.246664 -0.251245 -0.255782 -0.260276 -0.264727 -0.269136 -0.273503 -0.277829 -0.282114 -0.286360 -0.290569 -0.294741 -0.298878 -0.302981 -0.307053 -0.311094 -0.315108 -0.319095 + diff --git a/parameter_files/DTU10MW/DISCON.IN b/parameter_files/DTU10MW/DISCON.IN new file mode 100644 index 0000000..b3c2301 --- /dev/null +++ b/parameter_files/DTU10MW/DISCON.IN @@ -0,0 +1,109 @@ +! Controller parameter input file for the DTU_10MW_RWT wind turbine +! - File written using NREL Reference OpenSource Controller tuning logic on 11/11/19 + +!------- DEBUG ------------------------------------------------------------ +1 ! LoggingLevel - {0: write no debug files, 1: write standard output .dbg-file, 2: write standard output .dbg-file and complete avrSWAP-array .dbg2-file} + +!------- CONTROLLER FLAGS ------------------------------------------------- +1 ! F_LPFType - {1: first-order low-pass filter, 2: second-order low-pass filter}, [rad/s] (currently filters generator speed and pitch control signals +0 ! F_NotchType - Notch on the measured generator speed {0: disable, 1: enable} +0 ! IPC_ControlMode - Turn Individual Pitch Control (IPC) for fatigue load reductions (pitch contribution) {0: off, 1: 1P reductions, 2: 1P+2P reductions} +2 ! VS_ControlMode - Generator torque control mode in above rated conditions {0: constant torque, 1: constant power, 2: TSR tracking PI control} +1 ! PC_ControlMode - Blade pitch control mode {0: No pitch, fix to fine pitch, 1: active PI blade pitch control} +0 ! Y_ControlMode - Yaw control mode {0: no yaw control, 1: yaw rate control, 2: yaw-by-IPC} +1 ! SS_Mode - Setpoint Smoother mode {0: no setpoint smoothing, 1: introduce setpoint smoothing} +2 ! WE_Mode - Wind speed estimator mode {0: One-second low pass filtered hub height wind speed, 1: Immersion and Invariance Estimator, 2: Extended Kalman Filter} +1 ! PS_Mode - Peak shaving mode {0: no peak shaving, 1: implement peak shaving} +0 ! SD_Mode - Shutdown mode {0: no shutdown procedure, 1: pitch to max pitch at shutdown} + +!------- FILTERS ---------------------------------------------------------- +1.13 ! F_LPFCornerFreq - Corner frequency (-3dB point) in the low-pass filters, [rad/s] +0.00 ! F_LPFDamping - Damping coefficient [used only when F_FilterType = 2] +0.00 ! F_NotchCornerFreq - Natural frequency of the notch filter, [rad/s] +0.0 0.0 ! F_NotchBetaNumDen - Two notch damping values (numerator and denominator, resp) - determines the width and depth of the notch, [-] +0.628319000000 ! F_SSCornerFreq - Corner frequency (-3dB point) in the first order low pass filter for the setpoint smoother, [rad/s]. + +!------- BLADE PITCH CONTROL ---------------------------------------------- +27 ! PC_GS_n - Amount of gain-scheduling table entries +0.076651 0.104597 0.126580 0.145538 0.162607 0.178351 0.193067 0.206924 0.220170 0.232969 0.245214 0.257052 0.268731 0.279797 0.290953 0.301452 0.312171 0.322210 0.332433 0.342284 0.351964 0.361902 0.371025 0.380350 0.389927 0.398615 0.407506 ! PC_GS_angles - Gain-schedule table: pitch angles +-0.028157 -0.024262 -0.021126 -0.018547 -0.016389 -0.014557 -0.012981 -0.011612 -0.010412 -0.009350 -0.008405 -0.007558 -0.006794 -0.006102 -0.005473 -0.004898 -0.004370 -0.003883 -0.003434 -0.003018 -0.002631 -0.002271 -0.001935 -0.001620 -0.001324 -0.001047 -0.000785 ! PC_GS_KP - Gain-schedule table: pitch controller kp gains +-0.005563 -0.004963 -0.004479 -0.004081 -0.003748 -0.003466 -0.003223 -0.003011 -0.002826 -0.002662 -0.002517 -0.002386 -0.002268 -0.002161 -0.002064 -0.001976 -0.001894 -0.001819 -0.001750 -0.001686 -0.001626 -0.001571 -0.001519 -0.001470 -0.001424 -0.001382 -0.001341 ! PC_GS_KI - Gain-schedule table: pitch controller ki gains +0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ! PC_GS_KD - Gain-schedule table: pitch controller kd gains +0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ! PC_GS_TF - Gain-schedule table: pitch controller tf gains (derivative filter) +1.570800000000 ! PC_MaxPit - Maximum physical pitch limit, [rad]. +0.000000000000 ! PC_MinPit - Minimum physical pitch limit, [rad]. +0.174530000000 ! PC_MaxRat - Maximum pitch rate (in absolute value) in pitch controller, [rad/s]. +-0.17453000000 ! PC_MinRat - Minimum pitch rate (in absolute value) in pitch controller, [rad/s]. +50.26500000000 ! PC_RefSpd - Desired (reference) HSS speed for pitch controller, [rad/s]. +0.000000000000 ! PC_FinePit - Record 5: Below-rated pitch angle set-point, [rad] +0.017450000000 ! PC_Switch - Angle above lowest minimum pitch angle for switch, [rad] +0 ! Z_EnableSine - Enable/disable sine pitch excitation, used to validate for dynamic induction control, will be removed later, [-] +0.000000000000 ! Z_PitchAmplitude - Amplitude of sine pitch excitation, [rad] +0.000000000000 ! Z_PitchFrequency - Frequency of sine pitch excitation, [rad/s] + +!------- INDIVIDUAL PITCH CONTROL ----------------------------------------- +0.0 ! IPC_IntSat - Integrator saturation (maximum signal amplitude contribution to pitch from IPC), [rad] +0.0 0.0 ! IPC_KI - Integral gain for the individual pitch controller: first parameter for 1P reductions, second for 2P reductions, [-] +0.0 0.0 ! IPC_aziOffset - Phase offset added to the azimuth angle for the individual pitch controller, [rad]. +0.0 ! IPC_CornerFreqAct - Corner frequency of the first-order actuators model, to induce a phase lag in the IPC signal {0: Disable}, [rad/s] + +!------- VS TORQUE CONTROL ------------------------------------------------ +100.0000000000 ! VS_GenEff - Generator efficiency mechanical power -> electrical power, [should match the efficiency defined in the generator properties!], [-] +198945.5883800 ! VS_ArSatTq - Above rated generator torque PI control saturation, [Nm] +5000000.000000 ! VS_MaxRat - Maximum torque rate (in absolute value) in torque controller, [Nm/s]. +218840.1472200 ! VS_MaxTq - Maximum generator torque in Region 3 (HSS side), [Nm]. +0.000000000000 ! VS_MinTq - Minimum generator (HSS side), [Nm]. +17.96921000000 ! VS_MinOMSpd - Optimal mode minimum speed, cut-in speed towards optimal mode gain path, [rad/s] +79.44175000000 ! VS_Rgn2K - Generator torque constant in Region 2 (HSS side), [N-m/(rad/s)^2] +10000000.00000 ! VS_RtPwr - Wind turbine rated power [W] +198945.5883800 ! VS_RtTq - Rated torque, [Nm]. +50.26500000000 ! VS_RefSpd - Rated generator speed [rad/s] +1 ! VS_n - Number of generator PI torque controller gains +-14012.8888900 ! VS_KP - Proportional gain for generator PI torque controller [1/(rad/s) Nm]. (Only used in the transitional 2.5 region if VS_ControlMode =/ 2) +-2561.58852000 ! VS_KI - Integral gain for generator PI torque controller [1/rad Nm]. (Only used in the transitional 2.5 region if VS_ControlMode =/ 2) +8.01 ! VS_TSRopt - Power-maximizing region 2 tip-speed-ratio [rad]. + +!------- SETPOINT SMOOTHER --------------------------------------------- +1.00000 ! SS_VSGain - Variable speed torque controller setpoint smoother gain, [-]. +0.00100 ! SS_PCGain - Collective pitch controller setpoint smoother gain, [-]. + +!------- WIND SPEED ESTIMATOR --------------------------------------------- +89.200 ! WE_BladeRadius - Blade length [m] +1 ! WE_CP_n - Amount of parameters in the Cp array +0.0 0.0 0.0 0.0 ! WE_CP - Parameters that define the parameterized CP(lambda) function +0.0 ! WE_Gamma - Adaption gain of the wind speed estimator algorithm [m/rad] +50.0 ! WE_GearboxRatio - Gearbox ratio [>=1], [-] +160099282.20800 ! WE_Jtot - Total drivetrain inertia, including blades, hub and casted generator inertia to LSS, [kg m^2] +1.225 ! WE_RhoAir - Air density, [kg m^-3] +"Cp_Ct_Cq.DTU10MW.txt" ! PerfFileName - File containing rotor performance tables (Cp,Ct,Cq) +104 48 ! PerfTableSize - Size of rotor performance tables, first number refers to number of blade pitch angles, second number referse to number of tip-speed ratios +42 ! WE_FOPoles_N - Number of first-order system poles used in EKF +4.00 4.50 5.00 5.50 6.00 6.50 7.00 7.50 8.00 8.50 9.00 9.50 10.00 10.50 11.00 11.90 12.40 12.90 13.40 13.90 14.40 14.90 15.40 15.90 16.40 16.90 17.40 17.90 18.40 18.90 19.40 19.90 20.40 20.90 21.40 21.90 22.40 22.90 23.40 23.90 24.40 24.90 ! WE_FOPoles_v - Wind speeds corresponding to first-order system poles [m/s] +-0.02224887 -0.02502998 -0.02781109 -0.03059219 -0.03337330 -0.03615441 -0.03893552 -0.04171663 -0.04449774 -0.04727885 -0.05005995 -0.05284106 -0.05562217 -0.05840328 -0.06118439 -0.04912872 -0.05580722 -0.06518784 -0.07596687 -0.08768719 -0.10016561 -0.11321246 -0.12662324 -0.14054702 -0.15510757 -0.16979856 -0.18479723 -0.20065913 -0.21593099 -0.23258348 -0.24824509 -0.26557984 -0.28161699 -0.29910951 -0.31620223 -0.33341968 -0.35239722 -0.36909876 -0.38718142 -0.40701429 -0.42400719 -0.44234888 ! WE_FOPoles - First order system poles + +!------- YAW CONTROL ------------------------------------------------------ +0.0 ! Y_ErrThresh - Yaw error threshold. Turbine begins to yaw when it passes this. [rad^2 s] +0.0 ! Y_IPC_IntSat - Integrator saturation (maximum signal amplitude contribution to pitch from yaw-by-IPC), [rad] +1 ! Y_IPC_n - Number of controller gains (yaw-by-IPC) +0.0 ! Y_IPC_KP - Yaw-by-IPC proportional controller gain Kp +0.0 ! Y_IPC_KI - Yaw-by-IPC integral controller gain Ki +0.0 ! Y_IPC_omegaLP - Low-pass filter corner frequency for the Yaw-by-IPC controller to filtering the yaw alignment error, [rad/s]. +0.0 ! Y_IPC_zetaLP - Low-pass filter damping factor for the Yaw-by-IPC controller to filtering the yaw alignment error, [-]. +0.0 ! Y_MErrSet - Yaw alignment error, set point [rad] +0.0 ! Y_omegaLPFast - Corner frequency fast low pass filter, 1.0 [Hz] +0.0 ! Y_omegaLPSlow - Corner frequency slow low pass filter, 1/60 [Hz] +0.0 ! Y_Rate - Yaw rate [rad/s] + +!------- TOWER FORE-AFT DAMPING ------------------------------------------- +-1 ! FA_KI - Integral gain for the fore-aft tower damper controller, -1 = off / >0 = on [rad s/m] - !NJA - Make this a flag +0.0 ! FA_HPF_CornerFreq - Corner frequency (-3dB point) in the high-pass filter on the fore-aft acceleration signal [rad/s] +0.0 ! FA_IntSat - Integrator saturation (maximum signal amplitude contribution to pitch from FA damper), [rad] + +!------- PEAK SHAVING ------------------------------------------- +42 ! PS_BldPitchMin_N - Number of values in minimum blade pitch lookup table (should equal number of values in PS_WindSpeeds and PS_BldPitchMin) +4.00 4.50 5.00 5.50 6.00 6.50 7.00 7.50 8.00 8.50 9.00 9.50 10.00 10.50 11.00 11.90 12.40 12.90 13.40 13.90 14.40 14.90 15.40 15.90 16.40 16.90 17.40 17.90 18.40 18.90 19.40 19.90 20.40 20.90 21.40 21.90 22.40 22.90 23.40 23.90 24.40 24.90 ! PS_WindSpeeds - Wind speeds corresponding to minimum blade pitch angles [m/s] +-0.01745329 -0.01745329 -0.01745329 -0.01745329 -0.01745329 -0.01745329 -0.01745329 -0.01745329 -0.01745329 -0.01745329 -0.01745329 0.01139256 0.03954465 0.06151733 0.07951239 0.10218597 0.11346152 0.12442215 0.13515521 0.14568190 0.15604391 0.16623229 0.17621767 0.18609242 0.19591524 0.20553978 0.21504302 0.22459719 0.23380511 0.24321524 0.25220762 0.26147499 0.27028214 0.27930685 0.28810785 0.29682237 0.30579567 0.31417250 0.32274307 0.33155921 0.33969923 0.34802211 ! PS_BldPitchMin - Minimum blade pitch angles [rad] + +!------- SHUTDOWN ------------------------------------------- +0.407510000000 ! SD_MaxPit - Maximum blade pitch angle to initiate shutdown, [rad] +0.418880000000 ! SD_CornerFreq - Cutoff Frequency for first order low-pass filter for blade pitch angle, [rad/s] \ No newline at end of file diff --git a/parameter_files/NREL5MW/Cp_Ct_Cq.NREL5MW.txt b/parameter_files/NREL5MW/Cp_Ct_Cq.NREL5MW.txt new file mode 100644 index 0000000..55f6a42 --- /dev/null +++ b/parameter_files/NREL5MW/Cp_Ct_Cq.NREL5MW.txt @@ -0,0 +1,93 @@ +# ------- Rotor performance tables for the NREL_5MW wind turbine ------- +# ------------ Written on Oct-30-19 using the ROSCO toolbox ------------ + +# Pitch angle vector - x axis (matrix columns) (deg) +-1.0 -0.5 0.0 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0 8.5 9.0 9.5 10.0 10.5 11.0 11.5 12.0 12.5 13.0 13.5 14.0 14.5 15.0 15.5 16.0 16.5 17.0 17.5 18.0 18.5 19.0 19.5 20.0 20.5 21.0 21.5 22.0 22.5 23.0 23.5 24.0 24.5 +# TSR vector - y axis (matrix rows) (-) +3.0 3.5 4.0 4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0 8.5 9.0 9.5 10.0 10.5 11.0 11.5 12.0 12.5 13.0 13.5 14.0 14.5 +# Wind speed vector - z axis (m/s) +11.4 + +# Power coefficient + +0.089542 0.094392 0.099145 0.103788 0.108307 0.112687 0.116914 0.120973 0.124849 0.128528 0.131993 0.135232 0.138228 0.140970 0.143444 0.145640 0.147549 0.149163 0.150476 0.151487 0.152194 0.152598 0.152699 0.152501 0.152006 0.151216 0.150134 0.148764 0.147107 0.145164 0.142938 0.140429 0.137641 0.134574 0.131231 0.127615 0.123732 0.119585 0.115183 0.110531 0.105640 0.100516 0.095171 0.089613 0.083855 0.077908 0.071786 0.065501 0.059069 0.052505 0.045826 0.039049 +0.141508 0.147502 0.153253 0.158739 0.163935 0.168819 0.173367 0.177556 0.181366 0.184778 0.187775 0.190347 0.192486 0.194187 0.195448 0.196272 0.196661 0.196620 0.196153 0.195261 0.193945 0.192207 0.190044 0.187459 0.184452 0.181026 0.177184 0.172932 0.168276 0.163230 0.157805 0.152016 0.145879 0.139411 0.132631 0.125555 0.118202 0.110588 0.102731 0.094646 0.086349 0.077855 0.069180 0.060344 0.051364 0.042264 0.033067 0.023797 0.014484 0.005153 -0.004168 -0.013456 +0.201243 0.207940 0.214159 0.219868 0.225035 0.229637 0.233653 0.237070 0.239881 0.242085 0.243684 0.244683 0.245083 0.244887 0.244090 0.242691 0.240688 0.238079 0.234865 0.231051 0.226641 0.221647 0.216085 0.209975 0.203342 0.196213 0.188617 0.180584 0.172143 0.163323 0.154149 0.144645 0.134834 0.124736 0.114368 0.103747 0.092885 0.081799 0.070506 0.059025 0.047380 0.035595 0.023700 0.011729 -0.000282 -0.012293 -0.024265 -0.036166 -0.047970 -0.059659 -0.071224 -0.082665 +0.265760 0.272384 0.278228 0.283273 0.287506 0.290924 0.293526 0.295314 0.296282 0.296428 0.295747 0.294234 0.291890 0.288718 0.284726 0.279927 0.274343 0.268002 0.260940 0.253195 0.244808 0.235823 0.226282 0.216225 0.205692 0.194717 0.183330 0.171561 0.159435 0.146973 0.134195 0.121115 0.107744 0.094093 0.080174 0.066005 0.051607 0.037005 0.022230 0.007321 -0.007678 -0.022714 -0.037731 -0.052673 -0.067495 -0.082166 -0.096665 -0.110984 -0.125132 -0.139140 -0.153057 -0.166950 +0.330815 0.336457 0.341015 0.344487 0.346868 0.348156 0.348348 0.347445 0.345453 0.342386 0.338265 0.333121 0.326993 0.319925 0.311969 0.303180 0.293608 0.283307 0.272327 0.260718 0.248524 0.235787 0.222544 0.208829 0.194673 0.180102 0.165139 0.149800 0.134094 0.118028 0.101606 0.084836 0.067731 0.050312 0.032606 0.014647 -0.003518 -0.021836 -0.040238 -0.058646 -0.076985 -0.095183 -0.113188 -0.130967 -0.148505 -0.165809 -0.182913 -0.199884 -0.216818 -0.233824 -0.251003 -0.268425 +0.390409 0.394045 0.396296 0.397170 0.396680 0.394854 0.391729 0.387349 0.381766 0.375036 0.367218 0.358374 0.348565 0.337847 0.326276 0.313904 0.300782 0.286955 0.272471 0.257371 0.241693 0.225472 0.208734 0.191506 0.173803 0.155638 0.137012 0.117926 0.098379 0.078378 0.057934 0.037075 0.015833 -0.005745 -0.027599 -0.049652 -0.071812 -0.093979 -0.116050 -0.137931 -0.159554 -0.180879 -0.201893 -0.222612 -0.243094 -0.263449 -0.283817 -0.304352 -0.325193 -0.346445 -0.368156 -0.390331 +0.436626 0.437770 0.437374 0.435482 0.432138 0.427390 0.421299 0.413928 0.405342 0.395600 0.384761 0.372880 0.360010 0.346202 0.331504 0.315963 0.299627 0.282543 0.264751 0.246288 0.227184 0.207465 0.187149 0.166241 0.144739 0.122641 0.099943 0.076648 0.052767 0.028325 0.003364 -0.022062 -0.047880 -0.073994 -0.100287 -0.126634 -0.152904 -0.178971 -0.204730 -0.230122 -0.255123 -0.279750 -0.304072 -0.328233 -0.352418 -0.376824 -0.401649 -0.427058 -0.453144 -0.479933 -0.507386 -0.535379 +0.465313 0.465083 0.463208 0.459716 0.454670 0.448116 0.440105 0.430695 0.419947 0.407918 0.394666 0.380243 0.364700 0.348093 0.330475 0.311902 0.292427 0.272093 0.250937 0.228993 0.206282 0.182812 0.158579 0.133579 0.107808 0.081262 0.053947 0.025883 -0.002888 -0.032308 -0.062296 -0.092743 -0.123509 -0.154441 -0.185382 -0.216167 -0.246641 -0.276694 -0.306276 -0.335380 -0.364067 -0.392490 -0.420877 -0.449473 -0.478531 -0.508301 -0.538975 -0.570636 -0.603289 -0.636835 -0.671032 -0.705510 +0.478834 0.478849 0.477083 0.473468 0.467980 0.460684 0.451635 0.440897 0.428546 0.414655 0.399295 0.382537 0.364452 0.345112 0.324588 0.302942 0.280226 0.256488 0.231761 0.206062 0.179391 0.151742 0.123110 0.093491 0.062884 0.031296 -0.001240 -0.034667 -0.068904 -0.103839 -0.139317 -0.175158 -0.211174 -0.247171 -0.282944 -0.318305 -0.353134 -0.387382 -0.421069 -0.454315 -0.487365 -0.520514 -0.554071 -0.588356 -0.623684 -0.660282 -0.698237 -0.737528 -0.777984 -0.819233 -0.860798 -0.902228 +0.481400 0.482811 0.482247 0.479557 0.474610 0.467357 0.457885 0.446283 0.432655 0.417118 0.399785 0.380762 0.360152 0.338048 0.314533 0.289673 0.263527 0.236132 0.207501 0.177633 0.146524 0.114172 0.080574 0.045729 0.009651 -0.027616 -0.066001 -0.105397 -0.145655 -0.186573 -0.227935 -0.269513 -0.311070 -0.352357 -0.393144 -0.433289 -0.472740 -0.511542 -0.549880 -0.588084 -0.626515 -0.665554 -0.705596 -0.747035 -0.790159 -0.835075 -0.881748 -0.929935 -0.979139 -1.028791 -1.078346 -1.127364 +0.476095 0.479491 0.480789 0.479638 0.475850 0.469260 0.459829 0.447704 0.433036 0.416005 0.396781 0.375517 0.352347 0.327384 0.300720 0.272429 0.242560 0.211128 0.178139 0.143596 0.107500 0.069853 0.030657 -0.010073 -0.052283 -0.095885 -0.140748 -0.186682 -0.233446 -0.280781 -0.328416 -0.376069 -0.423444 -0.470257 -0.516321 -0.561574 -0.606074 -0.650065 -0.693952 -0.738171 -0.783182 -0.829461 -0.877497 -0.927672 -0.980144 -1.034884 -1.091595 -1.149679 -1.208463 -1.267289 -1.325606 -1.383003 +0.465306 0.470609 0.473977 0.474778 0.472519 0.467007 0.458054 0.445718 0.430225 0.411821 0.390749 0.367215 0.341383 0.313390 0.283340 0.251301 0.217305 0.181370 0.143509 0.103732 0.062047 0.018462 -0.027008 -0.074302 -0.123319 -0.173905 -0.225837 -0.278831 -0.332583 -0.386779 -0.441087 -0.495159 -0.548648 -0.601298 -0.653014 -0.703849 -0.754088 -0.804205 -0.854717 -0.906168 -0.959122 -1.014165 -1.071817 -1.132333 -1.195727 -1.261688 -1.329537 -1.398490 -1.467754 -1.536630 -1.604597 -1.671311 +0.451492 0.457916 0.462947 0.465744 0.465327 0.461150 0.453005 0.440745 0.424605 0.404907 0.381979 0.356083 0.327427 0.296167 0.262412 0.226221 0.187636 0.146686 0.103395 0.057782 0.009861 -0.040346 -0.092783 -0.147337 -0.203838 -0.262036 -0.321604 -0.382195 -0.443441 -0.504961 -0.566355 -0.627207 -0.687168 -0.746076 -0.803953 -0.861088 -0.918014 -0.975335 -1.033681 -1.093711 -1.156114 -1.221562 -1.290480 -1.362976 -1.438785 -1.517183 -1.597269 -1.678107 -1.758815 -1.838712 -1.917334 -1.994532 +0.435622 0.442948 0.449017 0.453333 0.454788 0.452161 0.445010 0.433068 0.416428 0.395478 0.370637 0.342240 0.310538 0.275707 0.237857 0.197065 0.153389 0.106874 0.057556 0.005462 -0.049381 -0.106920 -0.167040 -0.229563 -0.294218 -0.360643 -0.428439 -0.497190 -0.566461 -0.635793 -0.704711 -0.772755 -0.839650 -0.905349 -0.970098 -1.034465 -1.099139 -1.164844 -1.232338 -1.302412 -1.375887 -1.453425 -1.535298 -1.621368 -1.710933 -1.802982 -1.896438 -1.990221 -2.083429 -2.175426 -2.265919 -2.354971 +0.417782 0.426162 0.433094 0.438469 0.441402 0.440393 0.434358 0.422899 0.405865 0.383667 0.356814 0.325727 0.290701 0.251931 0.209556 0.163678 0.114374 0.061707 0.005724 -0.053534 -0.116018 -0.181622 -0.250164 -0.321366 -0.394840 -0.470138 -0.546790 -0.624304 -0.702164 -0.779830 -0.856745 -0.932472 -1.006846 -1.080016 -1.152532 -1.225161 -1.298722 -1.374076 -1.452124 -1.533813 -1.620057 -1.711404 -1.807922 -1.909046 -2.013698 -2.120659 -2.228663 -2.336539 -2.443409 -2.548762 -2.652548 -2.754938 +0.397984 0.407603 0.415507 0.421744 0.425760 0.426156 0.421305 0.410388 0.393031 0.369547 0.340540 0.306522 0.267838 0.224727 0.177364 0.125881 0.070379 0.010936 -0.052384 -0.119527 -0.190401 -0.264832 -0.342549 -0.423151 -0.506146 -0.591008 -0.677186 -0.764100 -0.851144 -0.937682 -1.023109 -1.107073 -1.189571 -1.271049 -1.352319 -1.434297 -1.517951 -1.604294 -1.694397 -1.789370 -1.890130 -1.997053 -2.109849 -2.227485 -2.348609 -2.471793 -2.595595 -2.718814 -2.840646 -2.960812 -3.079431 -3.196734 +0.376229 0.387272 0.396305 0.403410 0.408340 0.409769 0.406030 0.395649 0.377980 0.353136 0.321788 0.284551 0.241841 0.193957 0.141115 0.083481 0.021177 -0.045698 -0.117071 -0.192857 -0.272905 -0.356960 -0.444629 -0.535387 -0.628649 -0.723803 -0.820203 -0.917173 -1.014006 -1.109970 -1.204471 -1.297286 -1.388669 -1.479387 -1.570447 -1.662922 -1.757945 -1.856709 -1.960473 -2.070489 -2.187577 -2.311848 -2.442518 -2.578169 -2.717210 -2.857988 -2.998928 -3.138849 -3.277116 -3.413688 -3.548775 -3.682658 +0.352513 0.365171 0.375499 0.383579 0.389315 0.391565 0.388657 0.378754 0.360731 0.334409 0.300493 0.259716 0.212590 0.159476 0.100639 0.036274 -0.033472 -0.108485 -0.188673 -0.273909 -0.363962 -0.458465 -0.556885 -0.658585 -0.762886 -0.869077 -0.976410 -1.084103 -1.191332 -1.297294 -1.401467 -1.503828 -1.604964 -1.705913 -1.807858 -1.912048 -2.019805 -2.132523 -2.251667 -2.378555 -2.513833 -2.657202 -2.807365 -2.962598 -3.121063 -3.280876 -3.440391 -3.598507 -3.754836 -3.909501 -4.062781 -4.215006 +0.326826 0.341284 0.353068 0.362236 0.368746 0.371705 0.369303 0.359751 0.341265 0.313314 0.276573 0.231915 0.179958 0.121130 0.055743 -0.015975 -0.093854 -0.177765 -0.267584 -0.363116 -0.464029 -0.569814 -0.679802 -0.793250 -0.909376 -1.027361 -1.146343 -1.265422 -1.383658 -1.500222 -1.614724 -1.727428 -1.839263 -1.951493 -2.065488 -2.182695 -2.304643 -2.432948 -2.569280 -2.714938 -2.870294 -3.034506 -3.205841 -3.382289 -3.561744 -3.742116 -3.921744 -4.099692 -4.275819 -4.450358 -4.623649 -4.796068 +0.299151 0.315583 0.328973 0.339335 0.346637 0.350221 0.348095 0.338651 0.319544 0.289783 0.249938 0.201032 0.143795 0.078729 0.006193 -0.073552 -0.160309 -0.253922 -0.354218 -0.460913 -0.573545 -0.691453 -0.813840 -0.939852 -1.068597 -1.199137 -1.330491 -1.461630 -1.591508 -1.719325 -1.844896 -1.968833 -2.092377 -2.217003 -2.344285 -2.475887 -2.613570 -2.759194 -2.914607 -3.080995 -3.258317 -3.445157 -3.639407 -3.838767 -4.040844 -4.243386 -4.444775 -4.644323 -4.842078 -5.038361 -5.233573 -5.428110 +0.269484 0.288035 0.303168 0.314832 0.322972 0.327107 0.325101 0.315444 0.295519 0.263733 0.220474 0.166915 0.103908 0.032033 -0.048298 -0.136782 -0.233193 -0.337338 -0.448974 -0.567703 -0.692912 -0.823788 -0.959411 -1.098815 -1.240987 -1.384864 -1.529333 -1.673228 -1.815422 -1.955204 -2.092670 -2.228805 -2.365125 -2.503324 -2.645199 -2.792653 -2.947702 -3.112473 -3.288933 -3.478055 -3.679244 -3.890555 -4.109531 -4.333561 -4.559961 -4.786371 -5.011298 -5.234313 -5.455617 -5.675607 -5.894731 -6.113362 +0.237889 0.258618 0.275620 0.288682 0.297707 0.302319 0.300293 0.290104 0.269113 0.235044 0.188023 0.129366 0.060059 -0.019228 -0.108024 -0.205984 -0.312845 -0.428362 -0.552202 -0.683831 -0.822478 -0.967181 -1.116902 -1.270552 -1.426987 -1.585009 -1.743361 -1.900738 -2.055966 -2.208492 -2.358758 -2.508112 -2.658331 -2.811340 -2.969183 -3.134023 -3.308156 -3.493992 -3.693536 -3.907419 -4.134415 -4.372104 -4.617682 -4.868201 -5.120701 -5.372774 -5.623125 -5.871572 -6.118434 -6.364179 -6.609269 -6.854024 +0.204630 0.227339 0.246294 0.260834 0.270773 0.275794 0.273598 0.262572 0.240204 0.203550 0.152386 0.088160 0.012006 -0.075313 -0.173260 -0.281442 -0.399554 -0.527289 -0.664202 -0.809609 -0.962571 -1.121992 -1.286703 -1.455484 -1.627049 -1.800053 -1.973084 -2.144700 -2.313726 -2.479843 -2.643878 -2.807526 -2.972820 -3.141938 -3.317191 -3.501029 -3.696055 -3.904954 -4.129679 -4.370370 -4.625166 -4.891205 -5.165322 -5.444213 -5.724668 -6.004300 -6.282068 -6.558000 -6.832520 -7.106141 -7.379314 -7.652283 +0.170014 0.194261 0.215147 0.231216 0.242075 0.247424 0.244887 0.232742 0.208639 0.169066 0.113364 0.043087 -0.040470 -0.136444 -0.244231 -0.363392 -0.493571 -0.634384 -0.785257 -0.945341 -1.113532 -1.288593 -1.469221 -1.654049 -1.841640 -2.030491 -2.219022 -2.405666 -2.589308 -2.769925 -2.948755 -3.127822 -3.309422 -3.496007 -3.690179 -3.894700 -4.112517 -4.346554 -4.598597 -4.868178 -5.152826 -5.449253 -5.753910 -6.063120 -6.373468 -6.682659 -6.989934 -7.295496 -7.599855 -7.903549 -8.206988 -8.510317 + + +# Thrust coefficient + +0.230643 0.231358 0.231931 0.232351 0.232612 0.232705 0.232628 0.232377 0.231951 0.231351 0.230577 0.229632 0.228519 0.227241 0.225800 0.224201 0.222444 0.220532 0.218464 0.216241 0.213859 0.211318 0.208613 0.205741 0.202697 0.199477 0.196078 0.192496 0.188726 0.184765 0.180610 0.176259 0.171707 0.166954 0.161997 0.156838 0.151476 0.145914 0.140157 0.134208 0.128076 0.121770 0.115297 0.108671 0.101904 0.095011 0.088004 0.080900 0.073712 0.066457 0.059148 0.051800 +0.296203 0.296020 0.295605 0.294960 0.294088 0.292995 0.291684 0.290160 0.288427 0.286486 0.284340 0.281988 0.279428 0.276656 0.273666 0.270453 0.267010 0.263329 0.259404 0.255226 0.250787 0.246079 0.241095 0.235826 0.230268 0.224416 0.218268 0.211822 0.205081 0.198048 0.190729 0.183133 0.175270 0.167155 0.158803 0.150230 0.141455 0.132496 0.123372 0.114104 0.104710 0.095210 0.085625 0.075973 0.066273 0.056545 0.046806 0.037075 0.027369 0.017705 0.008101 -0.001426 +0.365790 0.364336 0.362614 0.360628 0.358382 0.355875 0.353102 0.350059 0.346738 0.343129 0.339221 0.335002 0.330459 0.325576 0.320338 0.314728 0.308734 0.302342 0.295543 0.288332 0.280705 0.272664 0.264214 0.255364 0.246128 0.236523 0.226568 0.216285 0.205698 0.194829 0.183702 0.172342 0.160772 0.149017 0.137101 0.125048 0.112882 0.100625 0.088300 0.075930 0.063535 0.051137 0.038756 0.026414 0.014131 0.001928 -0.010174 -0.022153 -0.033986 -0.045651 -0.057122 -0.068373 +0.439133 0.436226 0.432985 0.429399 0.425455 0.421133 0.416414 0.411271 0.405680 0.399616 0.393053 0.385971 0.378353 0.370186 0.361466 0.352191 0.342369 0.332015 0.321149 0.309796 0.297982 0.285737 0.273090 0.260072 0.246710 0.233036 0.219077 0.204863 0.190422 0.175779 0.160963 0.145997 0.130909 0.115722 0.100463 0.085156 0.069825 0.054496 0.039194 0.023943 0.008770 -0.006301 -0.021244 -0.036035 -0.050647 -0.065052 -0.079223 -0.093129 -0.106738 -0.120013 -0.132916 -0.145406 +0.515949 0.511128 0.505787 0.499888 0.493396 0.486276 0.478500 0.470044 0.460890 0.451032 0.440469 0.429215 0.417290 0.404722 0.391546 0.377796 0.363510 0.348724 0.333475 0.317797 0.301725 0.285291 0.268528 0.251465 0.234132 0.216556 0.198765 0.180787 0.162649 0.144378 0.126005 0.107555 0.089060 0.070548 0.052049 0.033592 0.015208 -0.003074 -0.021225 -0.039216 -0.057016 -0.074596 -0.091924 -0.108964 -0.125683 -0.142040 -0.157993 -0.173496 -0.188499 -0.202945 -0.216777 -0.229933 +0.593260 0.585351 0.576632 0.567079 0.556674 0.545416 0.533315 0.520390 0.506672 0.492198 0.477009 0.461149 0.444661 0.427588 0.409969 0.391842 0.373245 0.354211 0.334772 0.314961 0.294807 0.274340 0.253589 0.232585 0.211355 0.189932 0.168346 0.146628 0.124813 0.102934 0.081024 0.059118 0.037249 0.015452 -0.006239 -0.027789 -0.049165 -0.070332 -0.091255 -0.111896 -0.132217 -0.152177 -0.171732 -0.190834 -0.209431 -0.227464 -0.244872 -0.261584 -0.277528 -0.292629 -0.306810 -0.319994 +0.664357 0.652221 0.639129 0.625100 0.610157 0.594331 0.577662 0.560201 0.541995 0.523087 0.503521 0.483335 0.462569 0.441256 0.419431 0.397128 0.374378 0.351214 0.327666 0.303767 0.279547 0.255041 0.230281 0.205302 0.180140 0.154832 0.129415 0.103927 0.078407 0.052893 0.027426 0.002044 -0.023213 -0.048304 -0.073190 -0.097830 -0.122182 -0.146202 -0.169844 -0.193061 -0.215800 -0.238004 -0.259612 -0.280555 -0.300758 -0.320141 -0.338617 -0.356096 -0.372485 -0.387691 -0.401625 -0.414204 +0.724510 0.708263 0.691047 0.672882 0.653818 0.633889 0.613133 0.591589 0.569300 0.546307 0.522648 0.498359 0.473477 0.448037 0.422074 0.395623 0.368718 0.341397 0.313695 0.285649 0.257298 0.228679 0.199835 0.170806 0.141634 0.112364 0.083039 0.053705 0.024406 -0.004813 -0.033903 -0.062820 -0.091516 -0.119944 -0.148053 -0.175794 -0.203114 -0.229957 -0.256263 -0.281969 -0.307004 -0.331291 -0.354745 -0.377275 -0.398780 -0.419156 -0.438294 -0.456084 -0.472416 -0.487190 -0.500316 -0.511721 +0.774241 0.754635 0.734084 0.712547 0.690012 0.666521 0.642111 0.616821 0.590699 0.563796 0.536159 0.507833 0.478861 0.449286 0.419151 0.388497 0.357367 0.325805 0.293854 0.261559 0.228967 0.196126 0.163082 0.129887 0.096591 0.063244 0.029900 -0.003389 -0.036569 -0.069587 -0.102388 -0.134916 -0.167115 -0.198926 -0.230290 -0.261143 -0.291419 -0.321049 -0.349954 -0.378051 -0.405246 -0.431437 -0.456514 -0.480360 -0.502851 -0.523855 -0.543242 -0.560890 -0.576686 -0.590541 -0.602385 -0.612175 +0.816056 0.793664 0.770348 0.745994 0.720509 0.693856 0.666088 0.637264 0.607448 0.576715 0.545132 0.512762 0.479663 0.445890 0.411499 0.376542 0.341074 0.305147 0.268816 0.232137 0.195165 0.157959 0.120575 0.083073 0.045513 0.007955 -0.029539 -0.066906 -0.104082 -0.141005 -0.177610 -0.213830 -0.249597 -0.284841 -0.319490 -0.353467 -0.386690 -0.419068 -0.450503 -0.480883 -0.510090 -0.537996 -0.564464 -0.589350 -0.612500 -0.633767 -0.653012 -0.670114 -0.684983 -0.697553 -0.707781 -0.715659 +0.852088 0.827135 0.801355 0.774479 0.746361 0.716878 0.685992 0.653794 0.620373 0.585840 0.550296 0.513832 0.476527 0.438457 0.399692 0.360302 0.320353 0.279913 0.239049 0.197828 0.156318 0.114587 0.072702 0.030736 -0.011241 -0.053156 -0.094938 -0.136512 -0.177805 -0.218743 -0.259249 -0.299245 -0.338651 -0.377384 -0.415356 -0.452473 -0.488631 -0.523715 -0.557599 -0.590146 -0.621213 -0.650646 -0.678277 -0.703934 -0.727444 -0.748652 -0.767426 -0.783672 -0.797324 -0.808338 -0.816704 -0.822461 +0.884072 0.856408 0.828173 0.798952 0.768360 0.736245 0.702456 0.667011 0.630048 0.591715 0.552167 0.511530 0.469915 0.427423 0.384145 0.340170 0.295582 0.250464 0.204896 0.158960 0.112736 0.066306 0.019752 -0.026842 -0.073394 -0.119818 -0.166031 -0.211949 -0.257485 -0.302554 -0.347065 -0.390929 -0.434052 -0.476335 -0.517670 -0.557941 -0.597018 -0.634760 -0.671019 -0.705633 -0.738429 -0.769219 -0.797803 -0.823985 -0.847586 -0.868462 -0.886510 -0.901662 -0.913869 -0.923113 -0.929432 -0.932922 +0.913800 0.882803 0.851760 0.820103 0.787150 0.752481 0.715931 0.677355 0.636893 0.594745 0.551127 0.506220 0.460173 0.413117 0.365170 0.316444 0.267042 0.217065 0.166610 0.115774 0.064654 0.013347 -0.038052 -0.089444 -0.140733 -0.191823 -0.242618 -0.293021 -0.342933 -0.392255 -0.440883 -0.488714 -0.535637 -0.581533 -0.626274 -0.669719 -0.711714 -0.752094 -0.790679 -0.827279 -0.861682 -0.893661 -0.922992 -0.949471 -0.972933 -0.993264 -1.010387 -1.024243 -1.034798 -1.042082 -1.046191 -1.047313 +0.942211 0.907520 0.873105 0.838603 0.803211 0.766042 0.726771 0.685159 0.641230 0.595237 0.547472 0.498181 0.447563 0.395787 0.343003 0.289346 0.234945 0.179919 0.124386 0.068461 0.012259 -0.044109 -0.100531 -0.156894 -0.213091 -0.269010 -0.324544 -0.379580 -0.434008 -0.487712 -0.540578 -0.592484 -0.643303 -0.692896 -0.741108 -0.787771 -0.832703 -0.875710 -0.916578 -0.955077 -0.990955 -1.023954 -1.053840 -1.080417 -1.103552 -1.123153 -1.139152 -1.151497 -1.160200 -1.165351 -1.167139 -1.165852 +0.969633 0.931110 0.892990 0.855185 0.816995 0.777281 0.735286 0.690685 0.643308 0.593431 0.541427 0.487627 0.432289 0.375626 0.317824 0.259050 0.199456 0.139187 0.078383 0.017177 -0.044299 -0.105915 -0.167544 -0.229060 -0.290339 -0.351258 -0.411694 -0.471522 -0.530617 -0.588852 -0.646096 -0.702211 -0.757045 -0.810432 -0.862190 -0.912120 -0.960011 -1.005630 -1.048727 -1.089028 -1.126239 -1.160087 -1.190340 -1.216833 -1.239461 -1.258143 -1.272814 -1.283455 -1.290138 -1.293041 -1.292457 -1.288754 +0.996282 0.953806 0.911825 0.870377 0.828987 0.786502 0.741748 0.694137 0.643325 0.589515 0.533172 0.474727 0.414509 0.352783 0.289779 0.225694 0.160713 0.095004 0.028730 -0.037954 -0.104898 -0.171955 -0.238982 -0.305838 -0.372385 -0.438487 -0.504005 -0.568804 -0.632743 -0.695679 -0.757462 -0.817929 -0.876901 -0.934182 -0.989559 -1.042801 -1.093660 -1.141862 -1.187112 -1.229089 -1.267475 -1.301996 -1.332446 -1.358697 -1.380652 -1.398234 -1.411393 -1.420168 -1.424708 -1.425299 -1.422324 -1.416224 +1.022317 0.975755 0.929786 0.884483 0.839603 0.793999 0.746368 0.695695 0.641436 0.583640 0.522849 0.459616 0.394352 0.327385 0.258988 0.189399 0.118831 0.047481 -0.024464 -0.096829 -0.169444 -0.242144 -0.314771 -0.387169 -0.459189 -0.530677 -0.601483 -0.671452 -0.740427 -0.808243 -0.874728 -0.939688 -1.002915 -1.064180 -1.123235 -1.179812 -1.233621 -1.284349 -1.331652 -1.375172 -1.414582 -1.449626 -1.480138 -1.506004 -1.527128 -1.543440 -1.554931 -1.561710 -1.564032 -1.562284 -1.556929 -1.548481 +1.047848 0.997069 0.946993 0.897698 0.849069 0.800083 0.749326 0.695514 0.637775 0.575928 0.510578 0.442409 0.371931 0.299539 0.225557 0.150264 0.073905 -0.003292 -0.081119 -0.159376 -0.237876 -0.316437 -0.394887 -0.473055 -0.550772 -0.627870 -0.704178 -0.779522 -0.853724 -0.926595 -0.997933 -1.067513 -1.135092 -1.200407 -1.263175 -1.323089 -1.379821 -1.433010 -1.482266 -1.527206 -1.567511 -1.602961 -1.633414 -1.658759 -1.678902 -1.693796 -1.703493 -1.708195 -1.708264 -1.704175 -1.696470 -1.685738 +1.072955 1.017836 0.963530 0.910118 0.857540 0.804971 0.750801 0.693739 0.632453 0.566491 0.496464 0.423208 0.347343 0.269338 0.189573 0.108369 0.026009 -0.057253 -0.141183 -0.225563 -0.310185 -0.394849 -0.479364 -0.563539 -0.647188 -0.730119 -0.812140 -0.893056 -0.972664 -1.050745 -1.127066 -1.201370 -1.273381 -1.342802 -1.409312 -1.472568 -1.532194 -1.587781 -1.638894 -1.685145 -1.726242 -1.762000 -1.792282 -1.816981 -1.836014 -1.849372 -1.857185 -1.859760 -1.857558 -1.851139 -1.841125 -1.828172 +1.097693 1.038120 0.979466 0.921814 0.865132 0.808796 0.750983 0.690490 0.625571 0.555422 0.480599 0.402099 0.320668 0.236856 0.151102 0.063773 -0.024815 -0.114380 -0.204660 -0.295413 -0.386408 -0.477426 -0.568252 -0.658674 -0.748480 -0.837456 -0.925387 -1.012054 -1.097225 -1.180655 -1.262077 -1.341204 -1.417727 -1.491311 -1.561598 -1.628200 -1.690692 -1.748610 -1.801494 -1.848968 -1.890779 -1.926758 -1.956775 -1.980720 -1.998533 -2.010259 -2.016123 -2.016536 -2.012053 -2.003323 -1.991049 -1.975932 +1.122089 1.057978 0.994859 0.932850 0.871937 0.811663 0.750032 0.685875 0.617222 0.542808 0.463062 0.379155 0.291970 0.202145 0.110181 0.016488 -0.078577 -0.174699 -0.271587 -0.368971 -0.466596 -0.564216 -0.661590 -0.758481 -0.854653 -0.949870 -1.043891 -1.136473 -1.227359 -1.316274 -1.402919 -1.486973 -1.568089 -1.645897 -1.719994 -1.789946 -1.855272 -1.915461 -1.970047 -2.018684 -2.061150 -2.097281 -2.126945 -2.150039 -2.166534 -2.176550 -2.180412 -2.178636 -2.171876 -2.160866 -2.146380 -2.129121 +1.146094 1.077452 1.009762 0.943282 0.878024 0.813651 0.748047 0.680001 0.607492 0.528718 0.443916 0.354427 0.261283 0.165217 0.066797 -0.033512 -0.135314 -0.238254 -0.342009 -0.446278 -0.550775 -0.655228 -0.759370 -0.862939 -0.965674 -1.067317 -1.167606 -1.266272 -1.363029 -1.457569 -1.549559 -1.638643 -1.724436 -1.806528 -1.884469 -1.957774 -2.025905 -2.088322 -2.144567 -2.194331 -2.237403 -2.273620 -2.302848 -2.324998 -2.340089 -2.348329 -2.350149 -2.346169 -2.337139 -2.323878 -2.307207 -2.287798 +1.169468 1.096556 1.024222 0.953163 0.883446 0.814834 0.745110 0.672968 0.596452 0.513206 0.423194 0.327924 0.228594 0.126045 0.020916 -0.086270 -0.195067 -0.305079 -0.415947 -0.527337 -0.638934 -0.750438 -0.861558 -0.972006 -1.081502 -1.189762 -1.296501 -1.401421 -1.504204 -1.604510 -1.701969 -1.796187 -1.886744 -1.973181 -2.055004 -2.131670 -2.202592 -2.267211 -2.325092 -2.375953 -2.419586 -2.455825 -2.484536 -2.505656 -2.519268 -2.525677 -2.525418 -2.519220 -2.507928 -2.492434 -2.473580 -2.451985 +1.191954 1.115241 1.038276 0.962537 0.888253 0.815267 0.741278 0.664861 0.584147 0.496284 0.400888 0.299623 0.193872 0.084590 -0.027500 -0.141813 -0.257849 -0.375172 -0.493384 -0.612119 -0.731036 -0.849807 -0.968116 -1.085652 -1.202109 -1.317180 -1.430551 -1.541896 -1.650862 -1.757074 -1.860127 -1.959590 -2.054999 -2.145850 -2.231598 -2.311642 -2.385350 -2.452158 -2.511664 -2.563595 -2.607743 -2.643939 -2.672056 -2.692067 -2.704131 -2.708652 -2.706279 -2.697851 -2.684301 -2.666586 -2.645534 -2.621695 + + +# Torque coefficient + +0.029876 0.031494 0.033080 0.034629 0.036137 0.037598 0.039008 0.040363 0.041656 0.042883 0.044040 0.045120 0.046120 0.047035 0.047860 0.048593 0.049230 0.049768 0.050207 0.050544 0.050780 0.050914 0.050948 0.050882 0.050717 0.050453 0.050092 0.049635 0.049082 0.048434 0.047691 0.046854 0.045924 0.044901 0.043785 0.042579 0.041283 0.039900 0.038431 0.036879 0.035247 0.033537 0.031754 0.029899 0.027978 0.025994 0.023951 0.021854 0.019708 0.017518 0.015290 0.013029 +0.040469 0.042184 0.043828 0.045397 0.046883 0.048280 0.049581 0.050779 0.051868 0.052844 0.053701 0.054437 0.055048 0.055535 0.055895 0.056131 0.056242 0.056231 0.056097 0.055842 0.055466 0.054968 0.054350 0.053611 0.052751 0.051771 0.050672 0.049456 0.048125 0.046682 0.045130 0.043474 0.041719 0.039870 0.037931 0.035907 0.033804 0.031627 0.029380 0.027068 0.024695 0.022265 0.019785 0.017257 0.014690 0.012087 0.009457 0.006806 0.004142 0.001474 -0.001192 -0.003848 +0.050359 0.052034 0.053591 0.055019 0.056312 0.057464 0.058469 0.059324 0.060027 0.060579 0.060979 0.061229 0.061329 0.061280 0.061081 0.060731 0.060229 0.059576 0.058772 0.057818 0.056714 0.055465 0.054073 0.052544 0.050884 0.049100 0.047199 0.045189 0.043077 0.040870 0.038574 0.036196 0.033741 0.031214 0.028619 0.025961 0.023243 0.020469 0.017643 0.014770 0.011856 0.008907 0.005931 0.002935 -0.000071 -0.003076 -0.006072 -0.009050 -0.012004 -0.014929 -0.017823 -0.020686 +0.059114 0.060587 0.061887 0.063009 0.063951 0.064711 0.065290 0.065688 0.065903 0.065936 0.065784 0.065448 0.064926 0.064221 0.063333 0.062265 0.061023 0.059613 0.058042 0.056319 0.054454 0.052455 0.050333 0.048096 0.045753 0.043312 0.040779 0.038161 0.035464 0.032692 0.029850 0.026940 0.023966 0.020929 0.017833 0.014682 0.011479 0.008231 0.004945 0.001628 -0.001708 -0.005052 -0.008393 -0.011716 -0.015013 -0.018277 -0.021501 -0.024686 -0.027834 -0.030949 -0.034045 -0.037135 +0.066226 0.067355 0.068268 0.068963 0.069440 0.069698 0.069736 0.069555 0.069156 0.068542 0.067717 0.066688 0.065461 0.064046 0.062453 0.060694 0.058778 0.056715 0.054517 0.052193 0.049752 0.047202 0.044551 0.041806 0.038972 0.036055 0.033059 0.029988 0.026844 0.023628 0.020341 0.016983 0.013559 0.010072 0.006527 0.002932 -0.000704 -0.004371 -0.008055 -0.011740 -0.015412 -0.019055 -0.022659 -0.026218 -0.029729 -0.033193 -0.036617 -0.040015 -0.043405 -0.046809 -0.050248 -0.053736 +0.071051 0.071713 0.072122 0.072282 0.072192 0.071860 0.071291 0.070494 0.069478 0.068253 0.066830 0.065221 0.063436 0.061485 0.059379 0.057128 0.054740 0.052223 0.049587 0.046839 0.043986 0.041034 0.037988 0.034852 0.031631 0.028325 0.024935 0.021461 0.017904 0.014264 0.010544 0.006747 0.002881 -0.001046 -0.005023 -0.009036 -0.013069 -0.017103 -0.021120 -0.025102 -0.029037 -0.032918 -0.036743 -0.040513 -0.044241 -0.047945 -0.051652 -0.055389 -0.059182 -0.063050 -0.067001 -0.071037 +0.072840 0.073031 0.072965 0.072649 0.072092 0.071300 0.070283 0.069054 0.067621 0.065996 0.064188 0.062206 0.060059 0.057755 0.055303 0.052711 0.049985 0.047135 0.044167 0.041087 0.037900 0.034611 0.031221 0.027733 0.024146 0.020460 0.016673 0.012787 0.008803 0.004725 0.000561 -0.003680 -0.007988 -0.012344 -0.016730 -0.021126 -0.025508 -0.029857 -0.034154 -0.038390 -0.042561 -0.046669 -0.050727 -0.054758 -0.058792 -0.062864 -0.067005 -0.071244 -0.075596 -0.080065 -0.084645 -0.089315 +0.071655 0.071619 0.071331 0.070793 0.070016 0.069007 0.067773 0.066324 0.064669 0.062816 0.060776 0.058555 0.056161 0.053604 0.050891 0.048031 0.045032 0.041900 0.038643 0.035263 0.031766 0.028152 0.024420 0.020570 0.016602 0.012514 0.008307 0.003986 -0.000445 -0.004975 -0.009593 -0.014282 -0.019019 -0.023783 -0.028547 -0.033288 -0.037981 -0.042609 -0.047164 -0.051646 -0.056064 -0.060441 -0.064812 -0.069216 -0.073690 -0.078275 -0.082998 -0.087874 -0.092902 -0.098068 -0.103334 -0.108643 +0.068470 0.068472 0.068220 0.067703 0.066918 0.065875 0.064581 0.063045 0.061279 0.059293 0.057096 0.054700 0.052114 0.049349 0.046414 0.043319 0.040070 0.036676 0.033140 0.029465 0.025652 0.021698 0.017604 0.013369 0.008992 0.004475 -0.000177 -0.004957 -0.009853 -0.014848 -0.019921 -0.025046 -0.030196 -0.035344 -0.040459 -0.045516 -0.050496 -0.055393 -0.060210 -0.064964 -0.069690 -0.074430 -0.079228 -0.084131 -0.089183 -0.094416 -0.099843 -0.105461 -0.111246 -0.117145 -0.123088 -0.129012 +0.064248 0.064436 0.064361 0.064002 0.063342 0.062374 0.061110 0.059561 0.057742 0.055669 0.053355 0.050817 0.048066 0.045116 0.041978 0.038660 0.035170 0.031514 0.027693 0.023707 0.019555 0.015237 0.010753 0.006103 0.001288 -0.003686 -0.008809 -0.014066 -0.019439 -0.024900 -0.030420 -0.035969 -0.041515 -0.047026 -0.052469 -0.057827 -0.063092 -0.068271 -0.073387 -0.078486 -0.083615 -0.088825 -0.094169 -0.099700 -0.105455 -0.111449 -0.117678 -0.124109 -0.130676 -0.137303 -0.143916 -0.150458 +0.059569 0.059994 0.060156 0.060012 0.059538 0.058713 0.057533 0.056016 0.054181 0.052050 0.049645 0.046984 0.044085 0.040962 0.037626 0.034086 0.030349 0.026416 0.022289 0.017967 0.013450 0.008740 0.003836 -0.001260 -0.006542 -0.011997 -0.017610 -0.023358 -0.029209 -0.035131 -0.041091 -0.047053 -0.052981 -0.058838 -0.064602 -0.070264 -0.075831 -0.081336 -0.086827 -0.092359 -0.097991 -0.103781 -0.109792 -0.116070 -0.122635 -0.129484 -0.136579 -0.143847 -0.151202 -0.158562 -0.165859 -0.173040 +0.054794 0.055419 0.055815 0.055909 0.055643 0.054994 0.053940 0.052487 0.050663 0.048496 0.046014 0.043243 0.040201 0.036905 0.033366 0.029593 0.025590 0.021358 0.016900 0.012215 0.007307 0.002174 -0.003180 -0.008750 -0.014522 -0.020479 -0.026594 -0.032835 -0.039165 -0.045547 -0.051942 -0.058310 -0.064608 -0.070808 -0.076898 -0.082885 -0.088801 -0.094702 -0.100651 -0.106710 -0.112945 -0.119427 -0.126216 -0.133343 -0.140808 -0.148575 -0.156565 -0.164685 -0.172841 -0.180952 -0.188956 -0.196812 +0.050214 0.050928 0.051488 0.051799 0.051752 0.051288 0.050382 0.049018 0.047223 0.045033 0.042483 0.039603 0.036415 0.032939 0.029185 0.025160 0.020868 0.016314 0.011499 0.006426 0.001097 -0.004487 -0.010319 -0.016386 -0.022670 -0.029143 -0.035768 -0.042507 -0.049318 -0.056160 -0.062988 -0.069756 -0.076425 -0.082976 -0.089413 -0.095768 -0.102099 -0.108474 -0.114963 -0.121639 -0.128579 -0.135858 -0.143523 -0.151586 -0.160017 -0.168737 -0.177643 -0.186634 -0.195610 -0.204496 -0.213240 -0.221826 +0.045899 0.046671 0.047310 0.047765 0.047918 0.047641 0.046888 0.045630 0.043876 0.041669 0.039052 0.036060 0.032719 0.029049 0.025061 0.020763 0.016162 0.011261 0.006064 0.000575 -0.005203 -0.011265 -0.017600 -0.024188 -0.031000 -0.037999 -0.045142 -0.052386 -0.059684 -0.066989 -0.074251 -0.081420 -0.088468 -0.095391 -0.102213 -0.108995 -0.115809 -0.122732 -0.129843 -0.137227 -0.144968 -0.153138 -0.161764 -0.170833 -0.180270 -0.189968 -0.199815 -0.209696 -0.219517 -0.229210 -0.238745 -0.248128 +0.041818 0.042657 0.043351 0.043889 0.044182 0.044081 0.043477 0.042330 0.040625 0.038403 0.035715 0.032604 0.029098 0.025217 0.020976 0.016383 0.011448 0.006177 0.000573 -0.005358 -0.011613 -0.018179 -0.025040 -0.032167 -0.039522 -0.047059 -0.054731 -0.062490 -0.070283 -0.078057 -0.085756 -0.093336 -0.100781 -0.108104 -0.115363 -0.122633 -0.129996 -0.137539 -0.145351 -0.153527 -0.162160 -0.171303 -0.180964 -0.191086 -0.201562 -0.212268 -0.223079 -0.233876 -0.244574 -0.255119 -0.265508 -0.275756 +0.037939 0.038856 0.039610 0.040204 0.040587 0.040625 0.040163 0.039122 0.037467 0.035228 0.032463 0.029220 0.025533 0.021423 0.016908 0.012000 0.006709 0.001043 -0.004994 -0.011394 -0.018151 -0.025246 -0.032655 -0.040338 -0.048250 -0.056340 -0.064555 -0.072841 -0.081139 -0.089388 -0.097532 -0.105536 -0.113400 -0.121168 -0.128915 -0.136730 -0.144704 -0.152936 -0.161525 -0.170579 -0.180184 -0.190377 -0.201129 -0.212344 -0.223890 -0.235633 -0.247435 -0.259181 -0.270795 -0.282251 -0.293559 -0.304741 +0.034235 0.035240 0.036062 0.036709 0.037157 0.037287 0.036947 0.036002 0.034395 0.032134 0.029281 0.025893 0.022007 0.017649 0.012841 0.007596 0.001927 -0.004158 -0.010653 -0.017549 -0.024833 -0.032482 -0.040459 -0.048718 -0.057204 -0.065863 -0.074635 -0.083459 -0.092270 -0.101003 -0.109602 -0.118047 -0.126363 -0.134618 -0.142904 -0.151319 -0.159965 -0.168953 -0.178395 -0.188406 -0.199060 -0.210368 -0.222259 -0.234602 -0.247254 -0.260065 -0.272890 -0.285622 -0.298203 -0.310631 -0.322923 -0.335106 +0.030683 0.031784 0.032683 0.033386 0.033886 0.034082 0.033828 0.032966 0.031398 0.029107 0.026155 0.022606 0.018504 0.013881 0.008760 0.003157 -0.002913 -0.009442 -0.016422 -0.023841 -0.031679 -0.039905 -0.048471 -0.057323 -0.066401 -0.075644 -0.084986 -0.094360 -0.103693 -0.112916 -0.121983 -0.130892 -0.139695 -0.148482 -0.157355 -0.166423 -0.175803 -0.185613 -0.195984 -0.207028 -0.218802 -0.231281 -0.244351 -0.257863 -0.271655 -0.285565 -0.299449 -0.313212 -0.326819 -0.340280 -0.353622 -0.366871 +0.027261 0.028467 0.029450 0.030215 0.030758 0.031005 0.030805 0.030008 0.028466 0.026134 0.023070 0.019345 0.015011 0.010104 0.004650 -0.001332 -0.007829 -0.014828 -0.022320 -0.030288 -0.038706 -0.047530 -0.056704 -0.066167 -0.075854 -0.085695 -0.095620 -0.105552 -0.115415 -0.125138 -0.134689 -0.144089 -0.153418 -0.162779 -0.172288 -0.182064 -0.192237 -0.202939 -0.214311 -0.226460 -0.239419 -0.253116 -0.267408 -0.282126 -0.297095 -0.312140 -0.327123 -0.341966 -0.356658 -0.371216 -0.385671 -0.400053 +0.023955 0.025271 0.026343 0.027173 0.027757 0.028044 0.027874 0.027118 0.025588 0.023205 0.020014 0.016098 0.011515 0.006304 0.000496 -0.005890 -0.012837 -0.020333 -0.028364 -0.036908 -0.045927 -0.055369 -0.065169 -0.075260 -0.085569 -0.096022 -0.106541 -0.117042 -0.127442 -0.137677 -0.147732 -0.157657 -0.167550 -0.177529 -0.187721 -0.198260 -0.209285 -0.220946 -0.233391 -0.246714 -0.260914 -0.275875 -0.291430 -0.307394 -0.323575 -0.339794 -0.355921 -0.371900 -0.387735 -0.403453 -0.419085 -0.434662 +0.020749 0.022178 0.023343 0.024241 0.024868 0.025186 0.025032 0.024288 0.022754 0.020306 0.016976 0.012852 0.008001 0.002466 -0.003719 -0.010532 -0.017955 -0.025974 -0.034569 -0.043711 -0.053352 -0.063429 -0.073871 -0.084605 -0.095551 -0.106630 -0.117753 -0.128832 -0.139781 -0.150544 -0.161128 -0.171610 -0.182106 -0.192747 -0.203671 -0.215024 -0.226962 -0.239649 -0.253236 -0.267798 -0.283288 -0.299559 -0.316419 -0.333668 -0.351100 -0.368533 -0.385852 -0.403023 -0.420063 -0.437001 -0.453873 -0.470707 +0.017638 0.019175 0.020436 0.021404 0.022073 0.022415 0.022265 0.021510 0.019953 0.017427 0.013941 0.009592 0.004453 -0.001426 -0.008009 -0.015273 -0.023196 -0.031761 -0.040943 -0.050702 -0.060982 -0.071711 -0.082812 -0.094205 -0.105803 -0.117520 -0.129261 -0.140930 -0.152439 -0.163748 -0.174889 -0.185963 -0.197101 -0.208446 -0.220149 -0.232371 -0.245282 -0.259061 -0.273856 -0.289714 -0.306545 -0.324168 -0.342376 -0.360951 -0.379673 -0.398362 -0.416925 -0.435346 -0.453649 -0.471870 -0.490042 -0.508189 +0.014630 0.016254 0.017609 0.018649 0.019359 0.019718 0.019561 0.018773 0.017174 0.014553 0.010895 0.006303 0.000858 -0.005385 -0.012387 -0.020122 -0.028567 -0.037699 -0.047488 -0.057884 -0.068821 -0.080219 -0.091995 -0.104062 -0.116328 -0.128698 -0.141069 -0.153339 -0.165424 -0.177300 -0.189028 -0.200729 -0.212547 -0.224638 -0.237168 -0.250312 -0.264255 -0.279191 -0.295258 -0.312467 -0.330684 -0.349705 -0.369303 -0.389243 -0.409294 -0.429287 -0.449147 -0.468875 -0.488502 -0.508065 -0.527596 -0.547112 +0.011736 0.013410 0.014852 0.015961 0.016711 0.017080 0.016905 0.016066 0.014403 0.011671 0.007826 0.002974 -0.002794 -0.009419 -0.016860 -0.025085 -0.034072 -0.043792 -0.054207 -0.065258 -0.076868 -0.088953 -0.101422 -0.114181 -0.127131 -0.140167 -0.153182 -0.166066 -0.178743 -0.191211 -0.203556 -0.215917 -0.228453 -0.241334 -0.254738 -0.268856 -0.283892 -0.300048 -0.317447 -0.336056 -0.355706 -0.376169 -0.397199 -0.418545 -0.439968 -0.461312 -0.482524 -0.503617 -0.524627 -0.545592 -0.566538 -0.587478 + diff --git a/parameter_files/NREL5MW/DISCON.IN b/parameter_files/NREL5MW/DISCON.IN new file mode 100644 index 0000000..d2f2478 --- /dev/null +++ b/parameter_files/NREL5MW/DISCON.IN @@ -0,0 +1,109 @@ +! Controller parameter input file for the OpenFAST_5MW wind turbine +! - File written using NREL Reference OpenSource Controller tuning logic on 11/11/19 + +!------- DEBUG ------------------------------------------------------------ +1 ! LoggingLevel - {0: write no debug files, 1: write standard output .dbg-file, 2: write standard output .dbg-file and complete avrSWAP-array .dbg2-file} + +!------- CONTROLLER FLAGS ------------------------------------------------- +1 ! F_LPFType - {1: first-order low-pass filter, 2: second-order low-pass filter}, [rad/s] (currently filters generator speed and pitch control signals +0 ! F_NotchType - Notch on the measured generator speed {0: disable, 1: enable} +0 ! IPC_ControlMode - Turn Individual Pitch Control (IPC) for fatigue load reductions (pitch contribution) {0: off, 1: 1P reductions, 2: 1P+2P reductions} +2 ! VS_ControlMode - Generator torque control mode in above rated conditions {0: constant torque, 1: constant power, 2: TSR tracking PI control} +1 ! PC_ControlMode - Blade pitch control mode {0: No pitch, fix to fine pitch, 1: active PI blade pitch control} +0 ! Y_ControlMode - Yaw control mode {0: no yaw control, 1: yaw rate control, 2: yaw-by-IPC} +1 ! SS_Mode - Setpoint Smoother mode {0: no setpoint smoothing, 1: introduce setpoint smoothing} +2 ! WE_Mode - Wind speed estimator mode {0: One-second low pass filtered hub height wind speed, 1: Immersion and Invariance Estimator, 2: Extended Kalman Filter} +0 ! PS_Mode - Peak shaving mode {0: no peak shaving, 1: implement peak shaving} +0 ! SD_Mode - Shutdown mode {0: no shutdown procedure, 1: pitch to max pitch at shutdown} + +!------- FILTERS ---------------------------------------------------------- +1.57 ! F_LPFCornerFreq - Corner frequency (-3dB point) in the low-pass filters, [rad/s] +0.00 ! F_LPFDamping - Damping coefficient [used only when F_FilterType = 2] +0.00 ! F_NotchCornerFreq - Natural frequency of the notch filter, [rad/s] +0.0 0.0 ! F_NotchBetaNumDen - Two notch damping values (numerator and denominator, resp) - determines the width and depth of the notch, [-] +0.628319000000 ! F_SSCornerFreq - Corner frequency (-3dB point) in the first order low pass filter for the setpoint smoother, [rad/s]. + +!------- BLADE PITCH CONTROL ---------------------------------------------- +27 ! PC_GS_n - Amount of gain-scheduling table entries +0.059999 0.087088 0.108614 0.127859 0.144840 0.161163 0.175942 0.190159 0.204314 0.216979 0.229469 0.242120 0.254317 0.265260 0.276444 0.287914 0.299653 0.309477 0.319290 0.329399 0.339820 0.350541 0.361041 0.369471 0.378187 0.387196 0.396499 ! PC_GS_angles - Gain-schedule table: pitch angles +-0.017648 -0.015483 -0.013719 -0.012253 -0.011017 -0.009959 -0.009044 -0.008245 -0.007541 -0.006916 -0.006358 -0.005856 -0.005402 -0.004990 -0.004614 -0.004269 -0.003953 -0.003661 -0.003390 -0.003139 -0.002906 -0.002688 -0.002484 -0.002293 -0.002114 -0.001946 -0.001787 ! PC_GS_KP - Gain-schedule table: pitch controller kp gains +-0.007782 -0.006989 -0.006342 -0.005805 -0.005352 -0.004965 -0.004629 -0.004336 -0.004079 -0.003849 -0.003645 -0.003461 -0.003295 -0.003143 -0.003006 -0.002879 -0.002763 -0.002656 -0.002557 -0.002465 -0.002380 -0.002300 -0.002225 -0.002155 -0.002090 -0.002028 -0.001970 ! PC_GS_KI - Gain-schedule table: pitch controller ki gains +0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ! PC_GS_KD - Gain-schedule table: pitch controller kd gains +0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ! PC_GS_TF - Gain-schedule table: pitch controller tf gains (derivative filter) +1.570800000000 ! PC_MaxPit - Maximum physical pitch limit, [rad]. +0.000000000000 ! PC_MinPit - Minimum physical pitch limit, [rad]. +0.087270000000 ! PC_MaxRat - Maximum pitch rate (in absolute value) in pitch controller, [rad/s]. +-0.08727000000 ! PC_MinRat - Minimum pitch rate (in absolute value) in pitch controller, [rad/s]. +122.6055600000 ! PC_RefSpd - Desired (reference) HSS speed for pitch controller, [rad/s]. +0.000000000000 ! PC_FinePit - Record 5: Below-rated pitch angle set-point, [rad] +0.017450000000 ! PC_Switch - Angle above lowest minimum pitch angle for switch, [rad] +0 ! Z_EnableSine - Enable/disable sine pitch excitation, used to validate for dynamic induction control, will be removed later, [-] +0.000000000000 ! Z_PitchAmplitude - Amplitude of sine pitch excitation, [rad] +0.000000000000 ! Z_PitchFrequency - Frequency of sine pitch excitation, [rad/s] + +!------- INDIVIDUAL PITCH CONTROL ----------------------------------------- +0.0 ! IPC_IntSat - Integrator saturation (maximum signal amplitude contribution to pitch from IPC), [rad] +0.0 0.0 ! IPC_KI - Integral gain for the individual pitch controller: first parameter for 1P reductions, second for 2P reductions, [-] +0.0 0.0 ! IPC_aziOffset - Phase offset added to the azimuth angle for the individual pitch controller, [rad]. +0.0 ! IPC_CornerFreqAct - Corner frequency of the first-order actuators model, to induce a phase lag in the IPC signal {0: Disable}, [rad/s] + +!------- VS TORQUE CONTROL ------------------------------------------------ +94.40000000000 ! VS_GenEff - Generator efficiency mechanical power -> electrical power, [should match the efficiency defined in the generator properties!], [-] +43200.40636000 ! VS_ArSatTq - Above rated generator torque PI control saturation, [Nm] +1500000.000000 ! VS_MaxRat - Maximum torque rate (in absolute value) in torque controller, [Nm/s]. +47520.44700000 ! VS_MaxTq - Maximum generator torque in Region 3 (HSS side), [Nm]. +0.000000000000 ! VS_MinTq - Minimum generator (HSS side), [Nm]. +34.57519000000 ! VS_MinOMSpd - Optimal mode minimum speed, cut-in speed towards optimal mode gain path, [rad/s] +2.408710000000 ! VS_Rgn2K - Generator torque constant in Region 2 (HSS side), [N-m/(rad/s)^2] +5000000.000000 ! VS_RtPwr - Wind turbine rated power [W] +43200.40636000 ! VS_RtTq - Rated torque, [Nm]. +122.6055600000 ! VS_RefSpd - Rated generator speed [rad/s] +1 ! VS_n - Number of generator PI torque controller gains +-1019.38725000 ! VS_KP - Proportional gain for generator PI torque controller [1/(rad/s) Nm]. (Only used in the transitional 2.5 region if VS_ControlMode =/ 2) +-188.881010000 ! VS_KI - Integral gain for generator PI torque controller [1/rad Nm]. (Only used in the transitional 2.5 region if VS_ControlMode =/ 2) +7.50 ! VS_TSRopt - Power-maximizing region 2 tip-speed-ratio [rad]. + +!------- SETPOINT SMOOTHER --------------------------------------------- +1.00000 ! SS_VSGain - Variable speed torque controller setpoint smoother gain, [-]. +0.00100 ! SS_PCGain - Collective pitch controller setpoint smoother gain, [-]. + +!------- WIND SPEED ESTIMATOR --------------------------------------------- +63.000 ! WE_BladeRadius - Blade length [m] +1 ! WE_CP_n - Amount of parameters in the Cp array +0.0 0.0 0.0 0.0 ! WE_CP - Parameters that define the parameterized CP(lambda) function +0.0 ! WE_Gamma - Adaption gain of the wind speed estimator algorithm [m/rad] +96.8 ! WE_GearboxRatio - Gearbox ratio [>=1], [-] +44209949.92748 ! WE_Jtot - Total drivetrain inertia, including blades, hub and casted generator inertia to LSS, [kg m^2] +1.225 ! WE_RhoAir - Air density, [kg m^-3] +"Cp_Ct_Cq.NREL5MW.txt" ! PerfFileName - File containing rotor performance tables (Cp,Ct,Cq) +52 24 ! PerfTableSize - Size of rotor performance tables, first number refers to number of blade pitch angles, second number referse to number of tip-speed ratios +44 ! WE_FOPoles_N - Number of first-order system poles used in EKF +3.00 3.50 4.00 4.50 5.00 5.50 6.00 6.50 7.00 7.50 8.00 8.50 9.00 9.50 10.00 10.50 11.00 11.90 12.40 12.90 13.40 13.90 14.40 14.90 15.40 15.90 16.40 16.90 17.40 17.90 18.40 18.90 19.40 19.90 20.40 20.90 21.40 21.90 22.40 22.90 23.40 23.90 24.40 24.90 ! WE_FOPoles_v - Wind speeds corresponding to first-order system poles [m/s] +-0.01748748 -0.02040206 -0.02331664 -0.02623122 -0.02914580 -0.03206038 -0.03497496 -0.03788954 -0.04080412 -0.04371869 -0.04663327 -0.04954785 -0.05246243 -0.05537701 -0.05829159 -0.06120617 -0.06412075 -0.05598597 -0.06682738 -0.07866942 -0.09231394 -0.10538023 -0.12078921 -0.13477157 -0.15013009 -0.16776621 -0.18237924 -0.19867240 -0.21736726 -0.23579548 -0.25106514 -0.26879031 -0.28902598 -0.31162550 -0.32699698 -0.34332081 -0.36199787 -0.38318873 -0.40688830 -0.43360214 -0.46421748 -0.49745234 -0.53336317 -0.57196615 ! WE_FOPoles - First order system poles + +!------- YAW CONTROL ------------------------------------------------------ +0.0 ! Y_ErrThresh - Yaw error threshold. Turbine begins to yaw when it passes this. [rad^2 s] +0.0 ! Y_IPC_IntSat - Integrator saturation (maximum signal amplitude contribution to pitch from yaw-by-IPC), [rad] +1 ! Y_IPC_n - Number of controller gains (yaw-by-IPC) +0.0 ! Y_IPC_KP - Yaw-by-IPC proportional controller gain Kp +0.0 ! Y_IPC_KI - Yaw-by-IPC integral controller gain Ki +0.0 ! Y_IPC_omegaLP - Low-pass filter corner frequency for the Yaw-by-IPC controller to filtering the yaw alignment error, [rad/s]. +0.0 ! Y_IPC_zetaLP - Low-pass filter damping factor for the Yaw-by-IPC controller to filtering the yaw alignment error, [-]. +0.0 ! Y_MErrSet - Yaw alignment error, set point [rad] +0.0 ! Y_omegaLPFast - Corner frequency fast low pass filter, 1.0 [Hz] +0.0 ! Y_omegaLPSlow - Corner frequency slow low pass filter, 1/60 [Hz] +0.0 ! Y_Rate - Yaw rate [rad/s] + +!------- TOWER FORE-AFT DAMPING ------------------------------------------- +-1 ! FA_KI - Integral gain for the fore-aft tower damper controller, -1 = off / >0 = on [rad s/m] - !NJA - Make this a flag +0.0 ! FA_HPF_CornerFreq - Corner frequency (-3dB point) in the high-pass filter on the fore-aft acceleration signal [rad/s] +0.0 ! FA_IntSat - Integrator saturation (maximum signal amplitude contribution to pitch from FA damper), [rad] + +!------- PEAK SHAVING ------------------------------------------- +44 ! PS_BldPitchMin_N - Number of values in minimum blade pitch lookup table (should equal number of values in PS_WindSpeeds and PS_BldPitchMin) +3.00 3.50 4.00 4.50 5.00 5.50 6.00 6.50 7.00 7.50 8.00 8.50 9.00 9.50 10.00 10.50 11.00 11.90 12.40 12.90 13.40 13.90 14.40 14.90 15.40 15.90 16.40 16.90 17.40 17.90 18.40 18.90 19.40 19.90 20.40 20.90 21.40 21.90 22.40 22.90 23.40 23.90 24.40 24.90 ! PS_WindSpeeds - Wind speeds corresponding to minimum blade pitch angles [m/s] +-0.01745329 -0.01745329 -0.01745329 -0.01745329 -0.01745329 -0.01745329 -0.01745329 -0.01745329 -0.01745329 -0.01745329 -0.01745329 -0.01745329 -0.01745329 -0.01043930 0.01752641 0.03876018 0.05579366 0.07636280 0.08850549 0.10004206 0.11162711 0.12254282 0.13376138 0.14425013 0.15478810 0.16572605 0.17554639 0.18554307 0.19595332 0.20612251 0.21529640 0.22488312 0.23488900 0.24529504 0.25394261 0.26268712 0.27181488 0.28132974 0.29122769 0.30098555 0.30880015 0.31693135 0.32539084 0.33418433 ! PS_BldPitchMin - Minimum blade pitch angles [rad] + +!------- SHUTDOWN ------------------------------------------- +0.261800000000 ! SD_MaxPit - Maximum blade pitch angle to initiate shutdown, [rad] +0.418880000000 ! SD_CornerFreq - Cutoff Frequency for first order low-pass filter for blade pitch angle, [rad/s] \ No newline at end of file diff --git a/Source/Constants.f90 b/src/Constants.f90 similarity index 83% rename from Source/Constants.f90 rename to src/Constants.f90 index d5534b8..084f578 100644 --- a/Source/Constants.f90 +++ b/src/Constants.f90 @@ -1,6 +1,7 @@ MODULE Constants REAL(4), PARAMETER :: RPS2RPM = 9.5492966 ! Factor to convert radians per second to revolutions per minute. REAL(4), PARAMETER :: R2D = 57.295780 ! Factor to convert radians to degrees. + REAL(4), PARAMETER :: D2R = 0.0175 ! Factor to convert degrees to radians. REAL(4), PARAMETER :: PI = 3.14159265359 ! Mathematical constant pi INTEGER(4), PARAMETER :: NP_1 = 1 ! First rotational harmonic INTEGER(4), PARAMETER :: NP_2 = 2 ! Second rotational harmonic diff --git a/src/ControllerBlocks.f90 b/src/ControllerBlocks.f90 new file mode 100644 index 0000000..ea595cc --- /dev/null +++ b/src/ControllerBlocks.f90 @@ -0,0 +1,328 @@ +! This module contains additional blocks to supplement the primary controllers used in the Controllers module +! +! Many of these have I/O flags as a part of the DISCON input file +! +! Blocks (Subroutines): +! State Machine: determine the state of the wind turbine to specify the corresponding control actions +! WindSpeedEstimator: Estimate wind speed +! SetpointSmoother: Modify generator torque and blade pitch controller setpoints in transition region + +MODULE ControllerBlocks + +USE, INTRINSIC :: ISO_C_Binding +USE Constants +USE Filters +USE Functions + +IMPLICIT NONE + +CONTAINS +!------------------------------------------------------------------------------------------------------------------------------- + SUBROUTINE StateMachine(CntrPar, LocalVar) + ! State machine, determines the state of the wind turbine to specify the corresponding control actions + ! PC States: + ! PC_State = 0, No pitch control active, BldPitch = PC_MinPit + ! PC_State = 1, Active PI blade pitch control enabled + ! VS States + ! VS_State = 0, Error state, for debugging purposes, GenTq = VS_RtTq + ! VS_State = 1, Region 1(.5) operation, torque control to keep the rotor at cut-in speed towards the Cp-max operational curve + ! VS_State = 2, Region 2 operation, maximum rotor power efficiency (Cp-max) tracking using K*omega^2 law, fixed fine-pitch angle in BldPitch controller + ! VS_State = 3, Region 2.5, transition between below and above-rated operating conditions (near-rated region) using PI torque control + ! VS_State = 4, above-rated operation using pitch control (constant torque mode) + ! VS_State = 5, above-rated operation using pitch and torque control (constant power mode) + ! VS_State = 6, Tip-Speed-Ratio tracking PI controller + USE ROSCO_Types, ONLY : LocalVariables, ControlParameters + IMPLICIT NONE + + ! Inputs + TYPE(ControlParameters), INTENT(IN) :: CntrPar + TYPE(LocalVariables), INTENT(INOUT) :: LocalVar + + ! Initialize State machine if first call + IF (LocalVar%iStatus == 0) THEN ! .TRUE. if we're on the first call to the DLL + + IF (LocalVar%PitCom(1) >= CntrPar%VS_Rgn3Pitch) THEN ! We are in region 3 + IF (CntrPar%VS_ControlMode == 1) THEN ! Constant power tracking + LocalVar%VS_State = 5 + LocalVar%PC_State = 1 + ELSE ! Constant torque tracking + LocalVar%VS_State = 4 + LocalVar%PC_State = 1 + END IF + ELSE ! We are in Region 2 + LocalVar%VS_State = 2 + LocalVar%PC_State = 0 + END IF + + ! Operational States + ELSE + ! --- Pitch controller state machine --- + IF (CntrPar%PC_ControlMode == 1) THEN + LocalVar%PC_State = 1 + ELSE + LocalVar%PC_State = 0 + END IF + + ! --- Torque control state machine --- + IF (LocalVar%PC_PitComT >= CntrPar%VS_Rgn3Pitch) THEN ! Region 3 + IF (CntrPar%VS_ControlMode == 1) THEN + LocalVar%VS_State = 5 ! Constant power tracking + ELSE + LocalVar%VS_State = 4 ! Constant torque tracking + END IF + ELSE + IF (LocalVar%GenArTq >= CntrPar%VS_MaxOMTq*1.01) THEN ! Region 2 1/2 - active PI torque control + LocalVar%VS_State = 3 + ELSEIF (LocalVar%GenSpeedF < CntrPar%VS_RefSpd) THEN ! Region 2 - optimal torque is proportional to the square of the generator speed + + LocalVar%VS_State = 2 + ELSEIF (LocalVar%GenBrTq <= CntrPar%VS_MinOMTq*0.99) THEN ! Region 1 1/2 + + LocalVar%VS_State = 1 + ELSE ! Error state, Debug + LocalVar%VS_State = 0 + END IF + END IF + END IF + END SUBROUTINE StateMachine +!------------------------------------------------------------------------------------------------------------------------------- + SUBROUTINE WindSpeedEstimator(LocalVar, CntrPar, objInst, PerfData) + ! Wind Speed Estimator estimates wind speed at hub height. Currently implements two types of estimators + ! WE_Mode = 0, Filter hub height wind speed as passed from servodyn using first order low pass filter with 1Hz cornering frequency + ! WE_Mode = 1, Use Inversion and Inveriance filter as defined by Ortege et. al. + USE ROSCO_Types, ONLY : LocalVariables, ControlParameters, ObjectInstances, PerformanceData + IMPLICIT NONE + + ! Inputs + TYPE(ControlParameters), INTENT(IN) :: CntrPar + TYPE(LocalVariables), INTENT(INOUT) :: LocalVar + TYPE(ObjectInstances), INTENT(INOUT) :: objInst + TYPE(PerformanceData), INTENT(INOUT) :: PerfData + ! Allocate Variables + REAL(4) :: F_WECornerFreq ! Corner frequency (-3dB point) for first order low pass filter for measured hub height wind speed [Hz] + + ! Only used in EKF, if WE_Mode = 2 + REAL(4), SAVE :: om_r ! Estimated rotor speed [rad/s] + REAL(4), SAVE :: v_t ! Estimated wind speed, turbulent component [m/s] + REAL(4), SAVE :: v_m ! Estimated wind speed, 10-minute averaged [m/s] + REAL(4), SAVE :: v_h ! Combined estimated wind speed [m/s] + REAL(4) :: L ! Turbulent length scale parameter [m] + REAL(4) :: Ti ! Turbulent intensity, [-] + ! REAL(4), DIMENSION(3,3) :: I + ! - operating conditions + REAL(4) :: A_op ! Estimated operational system pole [UNITS!] + REAL(4) :: Cp_op ! Estimated operational Cp [-] + REAL(4) :: Tau_r ! Estimated rotor torque [Nm] + REAL(4) :: a ! wind variance + REAL(4) :: lambda ! tip-speed-ratio [rad] + + ! REAL(4), DIMENSION(1,23) :: WE_EKF_Vref + ! REAL(4) :: WE_EKF_Vref(23) + ! REAL(4) :: WE_EKF_Aref(23) + ! REAL(4) :: WE_EKF_Cpref(23) + ! - Covariance matrices + REAL(4), DIMENSION(3,3) :: F ! First order system jacobian + REAL(4), DIMENSION(3,3), SAVE :: P ! Covariance estiamte + REAL(4), DIMENSION(1,3) :: H ! Output equation jacobian + REAL(4), DIMENSION(3,1), SAVE :: xh ! Estimated state matrix + REAL(4), DIMENSION(3,1) :: dxh ! Estimated state matrix deviation from previous timestep + REAL(4), DIMENSION(3,3) :: Q ! Process noise covariance matrix + REAL(4), DIMENSION(1,1) :: S ! Innovation covariance + REAL(4), DIMENSION(3,1), SAVE :: K ! Kalman gain matrix + REAL(4) :: R_m ! Measurement noise covariance [(rad/s)^2] + REAL(4) :: temp ! temp variable + + ! WE_EKF_Vref = (/ 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25 /) + ! WE_EKF_Aref = (/ -0.0203, -0.0270, -0.0338, -0.0405, -0.0473, -0.0540, -0.0608, -0.0675, -0.0743, -0.0671, -0.0939, -0.1257, -0.1601, -0.1973, -0.2364, -0.2783, -0.3223, -0.3678, -0.4153, -0.4632, -0.5122, -0.5629, -0.6194 /) + ! WE_EKF_Cpref = (/ 0.4957, 0.4957, 0.4957, 0.4957, 0.4957, 0.4957, 0.4957, 0.4957, 0.4957, 0.4193, 0.3298, 0.2641, 0.2147, 0.1769, 0.1475, 0.1242, 0.1056, 0.0906, 0.0782, 0.0680, 0.0596, 0.0524, 0.0464 /) + + + ! ---- Define wind speed estimate ---- + + ! Inversion and Invariance Filter implementation + IF (CntrPar%WE_Mode == 1) THEN + LocalVar%WE_VwIdot = CntrPar%WE_Gamma/CntrPar%WE_Jtot*(LocalVar%VS_LastGenTrq*CntrPar%WE_GearboxRatio - AeroDynTorque(LocalVar, CntrPar, PerfData)) + LocalVar%WE_VwI = LocalVar%WE_VwI + LocalVar%WE_VwIdot*LocalVar%DT + LocalVar%WE_Vw = LocalVar%WE_VwI + CntrPar%WE_Gamma*LocalVar%RotSpeed + + ! Extended Kalman Filter (EKF) implementation + ELSEIF (CntrPar%WE_Mode == 2) THEN + ! Define contant values + L = 4.0 * CntrPar%WE_BladeRadius + Ti = 0.2 + R_m = 0.02 + H = RESHAPE((/1.0 , 0.0 , 0.0/),(/1,3/)) + ! Define matrices to be filled + F = RESHAPE((/0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0/),(/3,3/)) + Q = RESHAPE((/0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0/),(/3,3/)) + IF (LocalVar%iStatus == 0) THEN + ! Initialize recurring values + om_r = LocalVar%RotSpeed + v_t = 0.0 + v_m = LocalVar%HorWindV + v_h = LocalVar%HorWindV + xh = RESHAPE((/om_r, v_t, v_m/),(/3,1/)) + P = RESHAPE((/0.01, 0.0, 0.0, 0.0, 0.01, 0.0, 0.0, 0.0, 1.0/),(/3,3/)) + K = RESHAPE((/0.0,0.0,0.0/),(/3,1/)) + ELSE + ! Update estimated values + ! v_h = v_m + v_t + a = PI * v_m/(2.0*L) + + ! Find estimated operating Cp and system pole + A_op = interp1d(CntrPar%WE_FOPoles_v,CntrPar%WE_FOPoles,v_h) + + ! TEST INTERP2D + lambda = LocalVar%RotSpeed * CntrPar%WE_BladeRadius/v_h + Cp_op = interp2d(PerfData%Beta_vec,PerfData%TSR_vec,PerfData%Cp_mat, LocalVar%BlPitch(1)*R2D, lambda ) + Cp_op = max(0.0,Cp_op) + + ! Update Jacobian + F(1,1) = A_op + F(1,2) = 1.0/(2.0*CntrPar%WE_Jtot) * CntrPar%WE_RhoAir * PI *CntrPar%WE_BladeRadius**2.0 * Cp_op * 3.0 * v_h**2.0 * 1.0/om_r + F(1,3) = 1.0/(2.0*CntrPar%WE_Jtot) * CntrPar%WE_RhoAir * PI *CntrPar%WE_BladeRadius**2.0 * Cp_op * 3.0 * v_h**2.0 * 1.0/om_r + F(2,2) = PI * v_m/(2.0*L) + F(2,3) = PI * v_t/(2.0*L) + + ! Update process noise covariance + Q(1,1) = 0.00001 + Q(2,2) =(PI * (v_m**3.0) * (Ti**2.0)) / L + Q(3,3) = (2.0**2.0)/600.0 + + ! Prediction update + ! Tau_r = 0.5 * CntrPar%WE_RhoAir * PI *CntrPar%WE_BladeRadius**3 * Cp_op * v_h**2 * 1.0/(lambda) + Tau_r = AeroDynTorque(LocalVar,CntrPar,PerfData) + dxh(1,1) = 1.0/CntrPar%WE_Jtot * (Tau_r - CntrPar%WE_GearboxRatio * LocalVar%VS_LastGenTrq) + dxh(2,1) = -a*v_t + dxh(3,1) = 0.0 + + xh = xh + LocalVar%DT * dxh ! state update + P = P + LocalVar%DT*(MATMUL(F,P) + MATMUL(P,TRANSPOSE(F)) + Q - MATMUL(K * R_m, TRANSPOSE(K))) + + ! Measurement update + S = MATMUL(H,MATMUL(P,TRANSPOSE(H))) + R_m ! NJA: (H*T*H') \approx 0 + K = MATMUL(P,TRANSPOSE(H))/S(1,1) + xh = xh + K*(LocalVar%GenSpeedF/CntrPar%WE_GearboxRatio - xh(1,1)) + P = MATMUL(identity(3) - MATMUL(K,H),P) + + ! Wind Speed Estimate + ! xh(1,1) = saturate(xh(1,1),0.0, CntrPar%PC_RefSpd * 1.5) + ! xh(2,1) = saturate(xh(2,1),-10.0, 10.0) + ! xh(3,1) = saturate(xh(3,1),0.0, MAXVAL(WE_EKF_Vref)) + om_r = xh(1,1) + v_t = xh(2,1) + v_m = xh(3,1) + v_h = v_t + v_m + LocalVar%TestType = v_m + v_t + LocalVar%WE_Vw = v_m + v_t + ! LocalVar%WE_Vw = LPFilter(v_m + v_t,LocalVar%DT,0.5,LocalVar%iStatus,.FALSE.,objInst%instLPF) + ENDIF + + ELSE + ! Define Variables + F_WECornerFreq = 0.0333 ! Fix to 30 second time constant for now + + ! Filter wind speed at hub height as directly passed from OpenFAST + LocalVar%WE_Vw = LPFilter(LocalVar%HorWindV, LocalVar%DT, F_WECornerFreq, LocalVar%iStatus, .FALSE., objInst%instLPF) + ENDIF + + END SUBROUTINE WindSpeedEstimator +!------------------------------------------------------------------------------------------------------------------------------- + SUBROUTINE SetpointSmoother(LocalVar, CntrPar, objInst) + ! Setpoint smoother modifies controller reference in order to separate generator torque and blade pitch control actions + ! SS_Mode = 0, No setpoint smoothing + ! SS_Mode = 1, Implement setpoint smoothing + USE ROSCO_Types, ONLY : LocalVariables, ControlParameters, ObjectInstances + IMPLICIT NONE + + ! Inputs + TYPE(ControlParameters), INTENT(IN) :: CntrPar + TYPE(LocalVariables), INTENT(INOUT) :: LocalVar + TYPE(ObjectInstances), INTENT(INOUT) :: objInst + ! Allocate Variables + Real(4) :: DelOmega ! Reference generator speed shift, rad/s. + + ! ------ Setpoint Smoothing ------ + IF ( CntrPar%SS_Mode == 1) THEN + ! Find setpoint shift amount + DelOmega = ((LocalVar%BlPitch(1) - CntrPar%PC_MinPit)/0.524) * CntrPar%SS_VSGain - ((CntrPar%VS_RtPwr - LocalVar%VS_GenPwr))/CntrPar%VS_RtPwr * CntrPar%SS_PCGain ! Normalize to 30 degrees for now + DelOmega = DelOmega * CntrPar%PC_RefSpd + ! Filter + LocalVar%SS_DelOmegaF = LPFilter(DelOmega, LocalVar%DT, CntrPar%F_SSCornerFreq, LocalVar%iStatus, .FALSE., objInst%instLPF) + ELSE + LocalVar%SS_DelOmegaF = 0 ! No setpoint smoothing + ENDIF + + END SUBROUTINE SetpointSmoother +!------------------------------------------------------------------------------------------------------------------------------- + REAL FUNCTION PeakShaving(LocalVar, CntrPar, objInst) + ! PeakShaving defines a minimum blade pitch angle based on a lookup table provided by DISON.IN + ! SS_Mode = 0, No setpoint smoothing + ! SS_Mode = 1, Implement setpoint smoothing + USE ROSCO_Types, ONLY : LocalVariables, ControlParameters, ObjectInstances + IMPLICIT NONE + ! Inputs + TYPE(ControlParameters), INTENT(IN) :: CntrPar + TYPE(LocalVariables), INTENT(INOUT) :: LocalVar + TYPE(ObjectInstances), INTENT(INOUT) :: objInst + ! Allocate Variables + REAL(4) :: V_towertop ! Estimated velocity of tower top (m/s) + REAL(4) :: Vhat ! Estimated wind speed without towertop motion [m/s] + REAL(4) :: Vhatf ! 30 second low pass filtered Estimated wind speed without towertop motion [m/s] + + ! Account for towertop motions in wind speed estimate + ! Integrate Towertop Acceleration + ! dV_towertop = + ! V_towertop = PIController(LocalVar%FA_Acc, 0.0, 1.0, -100.00, 100.00, LocalVar%DT, 0.0, .FALSE., objInst%instPI) + + Vhat = LocalVar%WE_Vw + Vhatf = LPFilter(Vhat,LocalVar%DT,0.2,LocalVar%iStatus,.FALSE.,objInst%instLPF) + LocalVar%TestType = Vhatf + ! Define minimum blade pitch angle as a function of estimated wind speed + PeakShaving = interp1d(CntrPar%PS_WindSpeeds, CntrPar%PS_BldPitchMin, Vhatf) + + END FUNCTION PeakShaving +!------------------------------------------------------------------------------------------------------------------------------- + REAL FUNCTION Shutdown(LocalVar, CntrPar, objInst) + ! PeakShaving defines a minimum blade pitch angle based on a lookup table provided by DISON.IN + ! SS_Mode = 0, No setpoint smoothing + ! SS_Mode = 1, Implement setpoint smoothing + USE ROSCO_Types, ONLY : LocalVariables, ControlParameters, ObjectInstances + IMPLICIT NONE + ! Inputs + TYPE(ControlParameters), INTENT(IN) :: CntrPar + TYPE(LocalVariables), INTENT(INOUT) :: LocalVar + TYPE(ObjectInstances), INTENT(INOUT) :: objInst + ! Allocate Variables + REAL(4) :: SD_BlPitchF + ! Initialize Shutdown Varible + IF (LocalVar%iStatus == 0) THEN + LocalVar%SD = .FALSE. + ENDIF + + ! See if we should shutdown + IF (.NOT. LocalVar%SD ) THEN + SD_BlPitchF = LPFilter(LocalVar%PC_PitComT, LocalVar%DT, CntrPar%SD_CornerFreq, LocalVar%iStatus, .FALSE., objInst%instLPF) + ! Go into shutdown if above max pit + IF (SD_BlPitchF > CntrPar%SD_MaxPit) THEN + LocalVar%SD = .TRUE. + ELSE + LocalVar%SD = .FALSE. + ENDIF + ENDIF + + ! Pitch Blades to 90 degrees at max pitch rate if in shutdown mode + IF (LocalVar%SD) THEN + Shutdown = LocalVar%BlPitch(1) + CntrPar%PC_MaxRat*LocalVar%DT + IF (MODULO(LocalVar%Time, 10.0) == 0) THEN + print *, ' ** SHUTDOWN MODE **' + ENDIF + ELSE + Shutdown = LocalVar%PC_PitComT + ENDIF + + + END FUNCTION Shutdown +!------------------------------------------------------------------------------------------------------------------------------- + +END MODULE ControllerBlocks diff --git a/Source/Controllers.f90 b/src/Controllers.f90 similarity index 70% rename from Source/Controllers.f90 rename to src/Controllers.f90 index 8422d29..7b98090 100644 --- a/Source/Controllers.f90 +++ b/src/Controllers.f90 @@ -3,60 +3,65 @@ MODULE Controllers USE, INTRINSIC :: ISO_C_Binding USE Functions USE Filters + USE ControllerBlocks IMPLICIT NONE CONTAINS +!------------------------------------------------------------------------------------------------------------------------------- SUBROUTINE PitchControl(avrSWAP, CntrPar, LocalVar, objInst) - - USE DRC_Types, ONLY : ControlParameters, LocalVariables, ObjectInstances - - ! Local Variables: - REAL(C_FLOAT), INTENT(INOUT) :: avrSWAP(*) ! The swap array, used to pass data to, and receive data from the DLL controller. - INTEGER(4) :: K ! Index used for looping through blades. + ! Blade pitch controller, generally maximizes rotor speed below rated (region 2) and regulates rotor speed above rated (region 3) + ! PC_State = 0, fix blade pitch to fine pitch angle (PC_FinePit) + ! PC_State = 1, is gain scheduled PI controller + ! Additional loops/methods (enabled via switches in DISCON.IN): + ! Individual pitch control + ! Tower fore-aft damping + ! Sine excitation on pitch + USE ROSCO_Types, ONLY : ControlParameters, LocalVariables, ObjectInstances + ! Inputs TYPE(ControlParameters), INTENT(INOUT) :: CntrPar TYPE(LocalVariables), INTENT(INOUT) :: LocalVar TYPE(ObjectInstances), INTENT(INOUT) :: objInst - - !.............................................................................................................................. - ! Pitch control - !.............................................................................................................................. - IF (LocalVar%PC_State >= 1) THEN - LocalVar%PC_MaxPitVar = CntrPar%PC_MaxPit - ELSE - LocalVar%PC_MaxPitVar = CntrPar%PC_FinePit + ! Allocate Variables: + REAL(C_FLOAT), INTENT(INOUT) :: avrSWAP(*) ! The swap array, used to pass data to, and receive data from the DLL controller. + INTEGER(4) :: K ! Index used for looping through blades. + + + ! ------- Blade Pitch Controller -------- + ! Load PC State + IF (LocalVar%PC_State == 1) THEN ! PI BldPitch control + LocalVar%PC_MaxPit = CntrPar%PC_MaxPit + ELSE ! debug mode, fix at fine pitch + LocalVar%PC_MaxPit = CntrPar%PC_FinePit END IF - ! Compute the gain scheduling correction factor based on the previously - ! commanded pitch angle for blade 1: - LocalVar%PC_KP = interp1d(CntrPar%PC_GS_angles, CntrPar%PC_GS_KP, LocalVar%PC_PitComT) - LocalVar%PC_KI = interp1d(CntrPar%PC_GS_angles, CntrPar%PC_GS_KI, LocalVar%PC_PitComT) - LocalVar%PC_KD = interp1d(CntrPar%PC_GS_angles, CntrPar%PC_GS_KD, LocalVar%PC_PitComT) - LocalVar%PC_TF = interp1d(CntrPar%PC_GS_angles, CntrPar%PC_GS_TF, LocalVar%PC_PitComT) + ! Compute (interpolate) the gains based on previously commanded blade pitch angles and lookup table: + LocalVar%PC_KP = interp1d(CntrPar%PC_GS_angles, CntrPar%PC_GS_KP, LocalVar%PC_PitComT) ! Proportional gain + LocalVar%PC_KI = interp1d(CntrPar%PC_GS_angles, CntrPar%PC_GS_KI, LocalVar%PC_PitComT) ! Integral gain + LocalVar%PC_KD = interp1d(CntrPar%PC_GS_angles, CntrPar%PC_GS_KD, LocalVar%PC_PitComT) ! Derivative gain + LocalVar%PC_TF = interp1d(CntrPar%PC_GS_angles, CntrPar%PC_GS_TF, LocalVar%PC_PitComT) ! TF gains (derivative filter) !NJA - need to clarify - ! Integrate the error signal w.r.t. time; saturate the integral term using the pitch angle limits: - ! Compute the pitch commands associated with the proportional and integral - ! gains: + ! Compute the collective pitch command associated with the proportional and integral gains: IF (LocalVar%iStatus == 0) THEN - LocalVar%PC_PitComT = PIController(LocalVar%PC_SpdErr, LocalVar%PC_KP, LocalVar%PC_KI, CntrPar%PC_FinePit, LocalVar%PC_MaxPitVar, LocalVar%DT, LocalVar%PitCom(1), .TRUE., objInst%instPI) + LocalVar%PC_PitComT = PIController(LocalVar%PC_SpdErr, LocalVar%PC_KP, LocalVar%PC_KI, CntrPar%PC_FinePit, LocalVar%PC_MaxPit, LocalVar%DT, LocalVar%PitCom(1), .TRUE., objInst%instPI) ELSE - LocalVar%PC_PitComT = PIController(LocalVar%PC_SpdErr, LocalVar%PC_KP, LocalVar%PC_KI, CntrPar%PC_FinePit, LocalVar%PC_MaxPitVar, LocalVar%DT, CntrPar%PC_FinePit, .FALSE., objInst%instPI) + LocalVar%PC_PitComT = PIController(LocalVar%PC_SpdErr, LocalVar%PC_KP, LocalVar%PC_KI, CntrPar%PC_FinePit, LocalVar%PC_MaxPit, LocalVar%DT, LocalVar%BlPitch(1), .FALSE., objInst%instPI) END IF - ! Individual pitch control + ! Find individual pitch control contribution IF ((CntrPar%IPC_ControlMode >= 1) .OR. (CntrPar%Y_ControlMode == 2)) THEN CALL IPC(CntrPar, LocalVar, objInst) ELSE LocalVar%IPC_PitComF = 0.0 ! THIS IS AN ARRAY!! END IF - ! Fore-aft tower vibration damping control + ! Include tower fore-aft tower vibration damping control IF ((CntrPar%FA_KI > 0.0) .OR. (CntrPar%Y_ControlMode == 2)) THEN CALL ForeAftDamping(CntrPar, LocalVar, objInst) ELSE LocalVar%FA_PitCom = 0.0 ! THIS IS AN ARRAY!! - END IF + ENDIF ! Sine excitation on pitch IF (CntrPar%Z_EnableSine == 1) THEN @@ -65,13 +70,25 @@ SUBROUTINE PitchControl(avrSWAP, CntrPar, LocalVar, objInst) LocalVar%PC_SineExcitation = 0 END IF + ! Peak Shaving + IF (CntrPar%PS_Mode == 1) THEN + LocalVar%PC_MinPit = PeakShaving(LocalVar,CntrPar,objInst) + ELSE + LocalVar%PC_MinPit = CntrPar%PC_MinPit + ENDIF + + ! Shutdown + IF (CntrPar%SD_Mode == 1) THEN + LocalVar%PC_PitComT = Shutdown(LocalVar, CntrPar, objInst) + ENDIF + ! Combine and saturate all pitch commands: DO K = 1,LocalVar%NumBl ! Loop through all blades, add IPC contribution and limit pitch rate - ! PitCom(K) = ratelimit(LocalVar%PC_PitComT_IPC(K), LocalVar%BlPitch(K), PC_MinRat, PC_MaxRat, LocalVar%DT) ! Saturate the overall command of blade K using the pitch rate limit - LocalVar%PitCom(K) = saturate(LocalVar%PC_PitComT, CntrPar%PC_MinPit, CntrPar%PC_MaxPit) ! Saturate the overall command using the pitch angle limits + LocalVar%PitCom(K) = saturate(LocalVar%PC_PitComT, LocalVar%PC_MinPit, CntrPar%PC_MaxPit) ! Saturate the overall command using the pitch angle limits LocalVar%PitCom(K) = LocalVar%PitCom(K) + LocalVar%IPC_PitComF(K) + LocalVar%FA_PitCom(K) + LocalVar%PC_SineExcitation + LocalVar%PitCom(K) = ratelimit(LocalVar%PitCom(K), LocalVar%BlPitch(K), CntrPar%PC_MinRat, CntrPar%PC_MaxRat, LocalVar%DT) ! Saturate the overall command of blade K using the pitch rate limit END DO - + ! Command the pitch demanded from the last ! call to the controller (See Appendix A of Bladed User's Guide): avrSWAP(42) = LocalVar%PitCom(1) ! Use the command angles of all blades if using individual pitch @@ -79,48 +96,66 @@ SUBROUTINE PitchControl(avrSWAP, CntrPar, LocalVar, objInst) avrSWAP(44) = LocalVar%PitCom(3) ! " avrSWAP(45) = LocalVar%PitCom(1) ! Use the command angle of blade 1 if using collective pitch END SUBROUTINE PitchControl - +!------------------------------------------------------------------------------------------------------------------------------- SUBROUTINE VariableSpeedControl(avrSWAP, CntrPar, LocalVar, objInst) - - USE DRC_Types, ONLY : ControlParameters, LocalVariables, ObjectInstances - - REAL(C_FLOAT), INTENT(INOUT) :: avrSWAP(*) ! The swap array, used to pass data to, and receive data from, the DLL controller. - + ! Generator torque controller + ! VS_State = 0, Error state, for debugging purposes, GenTq = VS_RtTq + ! VS_State = 1, Region 1(.5) operation, torque control to keep the rotor at cut-in speed towards the Cp-max operational curve + ! VS_State = 2, Region 2 operation, maximum rotor power efficiency (Cp-max) tracking using K*omega^2 law, fixed fine-pitch angle in BldPitch controller + ! VS_State = 3, Region 2.5, transition between below and above-rated operating conditions (near-rated region) using PI torque control + ! VS_State = 4, above-rated operation using pitch control (constant torque mode) + ! VS_State = 5, above-rated operation using pitch and torque control (constant power mode) + ! VS_State = 6, Tip-Speed-Ratio tracking PI controller + USE ROSCO_Types, ONLY : ControlParameters, LocalVariables, ObjectInstances + ! Inputs TYPE(ControlParameters), INTENT(INOUT) :: CntrPar TYPE(LocalVariables), INTENT(INOUT) :: LocalVar TYPE(ObjectInstances), INTENT(INOUT) :: objInst + ! Allocate Variables + REAL(C_FLOAT), INTENT(INOUT) :: avrSWAP(*) ! The swap array, used to pass data to, and receive data from, the DLL controller. + REAL(4) :: VS_MaxTq ! Locally allocated maximum torque saturation limits - !.............................................................................................................................. - ! VARIABLE-SPEED TORQUE CONTROL: - ! Compute the generator torque, which depends on which region we are in: - !.............................................................................................................................. - IF (LocalVar%VS_State >= 4) THEN - LocalVar%GenArTq = PIController(LocalVar%VS_SpdErrAr, CntrPar%VS_KP(1), CntrPar%VS_KI(1), CntrPar%VS_MaxOMTq, CntrPar%VS_ArSatTq, LocalVar%DT, CntrPar%VS_ArSatTq, .TRUE., objInst%instPI) - LocalVar%GenBrTq = PIController(LocalVar%VS_SpdErrBr, CntrPar%VS_KP(1), CntrPar%VS_KI(1), CntrPar%VS_MinTq, CntrPar%VS_MinOMTq, LocalVar%DT, CntrPar%VS_MinOMTq, .TRUE., objInst%instPI) - IF (LocalVar%VS_State == 4) THEN - LocalVar%GenTq = CntrPar%VS_RtTq - ELSEIF (LocalVar%VS_State == 5) THEN - LocalVar%GenTq = (CntrPar%VS_RtPwr/CntrPar%VS_GenEff)/LocalVar%GenSpeedF - END IF + ! -------- Variable-Speed Torque Controller -------- + ! Optimal Tip-Speed-Ratio tracking controller + IF (CntrPar%VS_ControlMode == 2) THEN + ! Define max torque + IF (LocalVar%VS_State >= 4) THEN + VS_MaxTq = CntrPar%VS_RtTq + ELSE + ! VS_MaxTq = CntrPar%VS_MaxTq ! NJA: May want to boost max torque + VS_MaxTq = CntrPar%VS_RtTq + ENDIF + + ! TSR tracking vs control + LocalVar%GenTq = PIController(LocalVar%VS_SpdErr, CntrPar%VS_KP(1), CntrPar%VS_KI(1), CntrPar%VS_MinTq, VS_MaxTq, LocalVar%DT, LocalVar%VS_LastGenTrq, .FALSE., objInst%instPI) + + + ! K*Omega^2 control law with PI torque control in transition regions ELSE + ! Update PI loops for region 1.5 and 2.5 PI control + ! LocalVar%GenArTq = PIController(LocalVar%VS_SpdErrAr, CntrPar%VS_KP(1), CntrPar%VS_KI(1), CntrPar%VS_MaxOMTq, CntrPar%VS_ArSatTq, LocalVar%DT, CntrPar%VS_RtTq, .TRUE., objInst%instPI) LocalVar%GenArTq = PIController(LocalVar%VS_SpdErrAr, CntrPar%VS_KP(1), CntrPar%VS_KI(1), CntrPar%VS_MaxOMTq, CntrPar%VS_ArSatTq, LocalVar%DT, CntrPar%VS_MaxOMTq, .FALSE., objInst%instPI) - LocalVar%GenBrTq = PIController(LocalVar%VS_SpdErrBr, CntrPar%VS_KP(1), CntrPar%VS_KI(1), CntrPar%VS_MinTq, CntrPar%VS_MinOMTq, LocalVar%DT, CntrPar%VS_MinOMTq, .FALSE., objInst%instPI) - IF (LocalVar%VS_State == 3) THEN - LocalVar%GenTq = LocalVar%GenArTq - ELSEIF (LocalVar%VS_State == 1) THEN + LocalVar%GenBrTq = PIController(LocalVar%VS_SpdErrBr, CntrPar%VS_KP(1), CntrPar%VS_KI(1), CntrPar%VS_MinTq, CntrPar%VS_MinOMTq, LocalVar%DT, CntrPar%VS_MinOMTq, .TRUE., objInst%instPI) + + IF (LocalVar%VS_State == 1) THEN ! Region 1.5 LocalVar%GenTq = LocalVar%GenBrTq - ELSEIF (LocalVar%VS_State == 2) THEN + ELSEIF (LocalVar%VS_State == 2) THEN ! Region 2 LocalVar%GenTq = CntrPar%VS_Rgn2K*LocalVar%GenSpeedF*LocalVar%GenSpeedF - ELSE - LocalVar%GenTq = CntrPar%VS_MaxOMTq + ELSEIF (LocalVar%VS_State == 3) THEN ! Region 2.5 + LocalVar%GenTq = LocalVar%GenArTq + ELSEIF (LocalVar%VS_State == 4) THEN ! Region 3, constant torque + LocalVar%GenTq = CntrPar%VS_RtTq + ELSEIF (LocalVar%VS_State == 5) THEN ! Region 3, constant power + LocalVar%GenTq = (CntrPar%VS_RtPwr/CntrPar%VS_GenEff)/LocalVar%GenSpeedF END IF - END IF - + + ENDIF + + ! Saturate the commanded torque using the maximum torque limit: LocalVar%GenTq = MIN(LocalVar%GenTq, CntrPar%VS_MaxTq) ! Saturate the command using the maximum torque limit ! Saturate the commanded torque using the torque rate limit: - IF (LocalVar%iStatus == 0) LocalVar%VS_LastGenTrq = LocalVar%GenTq ! Initialize the value of LocalVar%VS_LastGenTrq on the first pass only LocalVar%GenTq = ratelimit(LocalVar%GenTq, LocalVar%VS_LastGenTrq, -CntrPar%VS_MaxRat, CntrPar%VS_MaxRat, LocalVar%DT) ! Saturate the command using the torque rate limit ! Reset the value of LocalVar%VS_LastGenTrq to the current values: @@ -129,10 +164,13 @@ SUBROUTINE VariableSpeedControl(avrSWAP, CntrPar, LocalVar, objInst) ! Set the command generator torque (See Appendix A of Bladed User's Guide): avrSWAP(47) = LocalVar%VS_LastGenTrq ! Demanded generator torque END SUBROUTINE VariableSpeedControl - +!------------------------------------------------------------------------------------------------------------------------------- SUBROUTINE YawRateControl(avrSWAP, CntrPar, LocalVar, objInst) - - USE DRC_Types, ONLY : ControlParameters, LocalVariables, ObjectInstances + ! Yaw rate controller + ! Y_ControlMode = 0, No yaw control + ! Y_ControlMode = 1, Simple yaw rate control using yaw drive + ! Y_ControlMode = 2, Yaw by IPC (accounted for in IPC subroutine) + USE ROSCO_Types, ONLY : ControlParameters, LocalVariables, ObjectInstances REAL(C_FLOAT), INTENT(INOUT) :: avrSWAP(*) ! The swap array, used to pass data to, and receive data from, the DLL controller. @@ -165,15 +203,13 @@ SUBROUTINE YawRateControl(avrSWAP, CntrPar, LocalVar, objInst) END IF END IF END SUBROUTINE YawRateControl - +!------------------------------------------------------------------------------------------------------------------------------- SUBROUTINE IPC(CntrPar, LocalVar, objInst) - !------------------------------------------------------------------------------------------------------------------------------- ! Individual pitch control subroutine - ! Calculates the commanded pitch angles for IPC employed for blade fatigue load reductions at 1P and 2P - ! - ! Variable declaration and initialization - !------------------------------------------------------------------------------------------------------------------------------ - USE DRC_Types, ONLY : ControlParameters, LocalVariables, ObjectInstances + ! - Calculates the commanded pitch angles for IPC employed for blade fatigue load reductions at 1P and 2P + ! - Includes yaw by IPC + + USE ROSCO_Types, ONLY : ControlParameters, LocalVariables, ObjectInstances ! Local variables REAL(4) :: PitComIPC(3), PitComIPCF(3), PitComIPC_1P(3), PitComIPC_2P(3) @@ -254,14 +290,11 @@ SUBROUTINE IPC(CntrPar, LocalVar, objInst) LocalVar%IPC_PitComF(K) = PitComIPCF(K) END DO END SUBROUTINE IPC - +!------------------------------------------------------------------------------------------------------------------------------- SUBROUTINE ForeAftDamping(CntrPar, LocalVar, objInst) - !------------------------------------------------------------------------------------------------------------------------------- ! Fore-aft damping controller, reducing the tower fore-aft vibrations using pitch - ! - ! Variable declaration and initialization - !------------------------------------------------------------------------------------------------------------------------------ - USE DRC_Types, ONLY : ControlParameters, LocalVariables, ObjectInstances + + USE ROSCO_Types, ONLY : ControlParameters, LocalVariables, ObjectInstances ! Local variables INTEGER(4) :: K ! Integer used to loop through turbine blades diff --git a/Source/DISCON.f90 b/src/DISCON.F90 similarity index 89% rename from Source/DISCON.f90 rename to src/DISCON.F90 index 6a64266..8ce4bd3 100644 --- a/Source/DISCON.f90 +++ b/src/DISCON.F90 @@ -1,19 +1,21 @@ !======================================================================= -! SUBROUTINE DISCON(avrSWAP, from_SC, to_SC, aviFAIL, accINFILE, avcOUTNAME, avcMSG) BIND (C, NAME='DISCON') SUBROUTINE DISCON(avrSWAP, aviFAIL, accINFILE, avcOUTNAME, avcMSG) BIND (C, NAME='DISCON') ! DO NOT REMOVE or MODIFY LINES starting with "!DEC$" or "!GCC$" ! !DEC$ specifies attributes for IVF and !GCC$ specifies attributes for gfortran -!DEC$ ATTRIBUTES DLLEXPORT :: DISCON USE, INTRINSIC :: ISO_C_Binding -USE :: DRC_Types +USE :: ROSCO_Types USE :: ReadSetParameters +USE :: ControllerBlocks USE :: Controllers USE :: Constants USE :: Filters +USE :: Functions IMPLICIT NONE +! Enable .dll export #ifndef IMPLICIT_DLLEXPORT +!DEC$ ATTRIBUTES DLLEXPORT :: DISCON !GCC$ ATTRIBUTES DLLEXPORT :: DISCON #endif @@ -36,21 +38,24 @@ SUBROUTINE DISCON(avrSWAP, aviFAIL, accINFILE, avcOUTNAME, avcMSG) BIND (C, NAME TYPE(ControlParameters), SAVE :: CntrPar TYPE(LocalVariables), SAVE :: LocalVar TYPE(ObjectInstances), SAVE :: objInst +TYPE(PerformanceData), SAVE :: PerfData !------------------------------------------------------------------------------------------------------------------------------ ! Main control calculations !------------------------------------------------------------------------------------------------------------------------------ ! Read avrSWAP array into derived types/variables CALL ReadAvrSWAP(avrSWAP, LocalVar) -CALL SetParameters(avrSWAP, aviFAIL, ErrMsg, SIZE(avcMSG), CntrPar, LocalVar, objInst) +CALL SetParameters(avrSWAP, aviFAIL, ErrMsg, SIZE(avcMSG), CntrPar, LocalVar, objInst, PerfData) CALL PreFilterMeasuredSignals(CntrPar, LocalVar, objInst) IF ((LocalVar%iStatus >= 0) .AND. (aviFAIL >= 0)) THEN ! Only compute control calculations if no error has occurred and we are not on the last time step - CALL ComputeVariablesSetpoints(CntrPar, LocalVar) + CALL ComputeVariablesSetpoints(CntrPar, LocalVar, objInst) CALL StateMachine(CntrPar, LocalVar) - CALL WindSpeedEstimator(LocalVar, CntrPar) + CALL WindSpeedEstimator(LocalVar, CntrPar, objInst, PerfData) + CALL SetpointSmoother(LocalVar, CntrPar, objInst) + CALL VariableSpeedControl(avrSWAP, CntrPar, LocalVar, objInst) CALL PitchControl(avrSWAP, CntrPar, LocalVar, objInst) CALL YawRateControl(avrSWAP, CntrPar, LocalVar, objInst) diff --git a/Source/Filters.f90 b/src/Filters.f90 similarity index 87% rename from Source/Filters.f90 rename to src/Filters.f90 index f6dc0e4..6f730c4 100644 --- a/Source/Filters.f90 +++ b/src/Filters.f90 @@ -3,17 +3,12 @@ MODULE Filters !............................................................................................................................... - IMPLICIT NONE +IMPLICIT NONE CONTAINS - - !------------------------------------------------------------------------------------------------------------------------------- - ! Discrete time Low-Pass Filter +!------------------------------------------------------------------------------------------------------------------------------- REAL FUNCTION LPFilter(InputSignal, DT, CornerFreq, iStatus, reset, inst) - !............................................................................................................................... - - ! Inputs - + ! Discrete time Low-Pass Filter REAL(4), INTENT(IN) :: InputSignal REAL(4), INTENT(IN) :: DT ! time step [s] REAL(4), INTENT(IN) :: CornerFreq ! corner frequency [rad/s] @@ -44,15 +39,11 @@ REAL FUNCTION LPFilter(InputSignal, DT, CornerFreq, iStatus, reset, inst) inst = inst + 1 END FUNCTION LPFilter - !------------------------------------------------------------------------------------------------------------------------------- - ! Discrete time second order Low-Pass Filter +!------------------------------------------------------------------------------------------------------------------------------- REAL FUNCTION SecLPFilter(InputSignal, DT, CornerFreq, Damp, iStatus, reset, inst) - !............................................................................................................................... - + ! Discrete time second order Low-Pass Filter + IMPLICIT NONE - - ! Inputs - REAL(4), INTENT(IN) :: InputSignal REAL(4), INTENT(IN) :: DT ! time step [s] REAL(4), INTENT(IN) :: CornerFreq ! corner frequency [rad/s] @@ -61,15 +52,13 @@ REAL FUNCTION SecLPFilter(InputSignal, DT, CornerFreq, Damp, iStatus, reset, ins INTEGER(4), INTENT(INOUT) :: inst ! Instance number. Every instance of this function needs to have an unique instance number to ensure instances don't influence each other. LOGICAL(4), INTENT(IN) :: reset ! Reset the filter to the input signal - ! Local - + ! Local REAL(4), DIMENSION(99), SAVE :: InputSignalLast1 ! Input signal the last time this filter was called. Supports 99 separate instances. REAL(4), DIMENSION(99), SAVE :: InputSignalLast2 ! Input signal the next to last time this filter was called. Supports 99 separate instances. REAL(4), DIMENSION(99), SAVE :: OutputSignalLast1 ! Output signal the last time this filter was called. Supports 99 separate instances. REAL(4), DIMENSION(99), SAVE :: OutputSignalLast2 ! Output signal the next to last time this filter was called. Supports 99 separate instances. - ! Initialization - + ! Initialization IF ((iStatus == 0) .OR. reset ) THEN OutputSignalLast1(inst) = InputSignal OutputSignalLast2(inst) = InputSignal @@ -77,14 +66,12 @@ REAL FUNCTION SecLPFilter(InputSignal, DT, CornerFreq, Damp, iStatus, reset, ins InputSignalLast2(inst) = InputSignal ENDIF - ! Body - + ! Body SecLPFilter = 1/(4+4*DT*Damp*CornerFreq+DT**2*CornerFreq**2) * ( (8-2*DT**2*CornerFreq**2)*OutputSignalLast1(inst) & + (-4+4*DT*Damp*CornerFreq-DT**2*CornerFreq**2)*OutputSignalLast2(inst) + (DT**2*CornerFreq**2)*InputSignal & + (2*DT**2*CornerFreq**2)*InputSignalLast1(inst) + (DT**2*CornerFreq**2)*InputSignalLast2(inst) ) - ! Save signals for next time step - + ! Save signals for next time step InputSignalLast2(inst) = InputSignalLast1 (inst) InputSignalLast1(inst) = InputSignal OutputSignalLast2(inst) = OutputSignalLast1 (inst) @@ -92,12 +79,9 @@ REAL FUNCTION SecLPFilter(InputSignal, DT, CornerFreq, Damp, iStatus, reset, ins inst = inst + 1 END FUNCTION SecLPFilter - !------------------------------------------------------------------------------------------------------------------------------- - ! Discrete time High-Pass Filter +!------------------------------------------------------------------------------------------------------------------------------- REAL FUNCTION HPFilter( InputSignal, DT, CornerFreq, iStatus, reset, inst) - !............................................................................................................................... - - ! Inputs + ! Discrete time High-Pass Filter REAL(4), INTENT(IN) :: InputSignal REAL(4), INTENT(IN) :: DT ! time step [s] @@ -105,39 +89,30 @@ REAL FUNCTION HPFilter( InputSignal, DT, CornerFreq, iStatus, reset, inst) INTEGER, INTENT(IN) :: iStatus ! A status flag set by the simulation as follows: 0 if this is the first call, 1 for all subsequent time steps, -1 if this is the final call at the end of the simulation. INTEGER, INTENT(INOUT) :: inst ! Instance number. Every instance of this function needs to have an unique instance number to ensure instances don't influence each other. LOGICAL(4), INTENT(IN) :: reset ! Reset the filter to the input signal - - ! Local - + ! Local REAL(4) :: K ! Constant gain REAL(4), DIMENSION(99), SAVE :: InputSignalLast ! Input signal the last time this filter was called. Supports 99 separate instances. REAL(4), DIMENSION(99), SAVE :: OutputSignalLast ! Output signal the last time this filter was called. Supports 99 separate instances. - ! Initialization - + ! Initialization IF ((iStatus == 0) .OR. reset) THEN OutputSignalLast(inst) = InputSignal InputSignalLast(inst) = InputSignal ENDIF - K = 2.0 / DT - ! Body - + ! Body HPFilter = K/(CornerFreq + K)*InputSignal - K/(CornerFreq + K)*InputSignalLast(inst) - (CornerFreq - K)/(CornerFreq + K)*OutputSignalLast(inst) - ! Save signals for next time step - + ! Save signals for next time step InputSignalLast(inst) = InputSignal OutputSignalLast(inst) = HPFilter inst = inst + 1 END FUNCTION HPFilter - !------------------------------------------------------------------------------------------------------------------------------- - ! Discrete time inverted Notch Filter with descending slopes, G = CornerFreq*s/(Damp*s^2+CornerFreq*s+Damp*CornerFreq^2) +!------------------------------------------------------------------------------------------------------------------------------- REAL FUNCTION NotchFilterSlopes(InputSignal, DT, CornerFreq, Damp, iStatus, reset, inst) - !............................................................................................................................... - - ! Inputs + ! Discrete time inverted Notch Filter with descending slopes, G = CornerFreq*s/(Damp*s^2+CornerFreq*s+Damp*CornerFreq^2) REAL(4), INTENT(IN) :: InputSignal REAL(4), INTENT(IN) :: DT ! time step [s] @@ -146,16 +121,13 @@ REAL FUNCTION NotchFilterSlopes(InputSignal, DT, CornerFreq, Damp, iStatus, rese INTEGER, INTENT(IN) :: iStatus ! A status flag set by the simulation as follows: 0 if this is the first call, 1 for all subsequent time steps, -1 if this is the final call at the end of the simulation. INTEGER, INTENT(INOUT) :: inst ! Instance number. Every instance of this function needs to have an unique instance number to ensure instances don't influence each other. LOGICAL(4), INTENT(IN) :: reset ! Reset the filter to the input signal - - ! Local - + ! Local REAL(4), DIMENSION(99), SAVE :: InputSignalLast1 ! Input signal the last time this filter was called. Supports 99 separate instances. REAL(4), DIMENSION(99), SAVE :: InputSignalLast2 ! Input signal the next to last time this filter was called. Supports 99 separate instances. REAL(4), DIMENSION(99), SAVE :: OutputSignalLast1 ! Output signal the last time this filter was called. Supports 99 separate instances. REAL(4), DIMENSION(99), SAVE :: OutputSignalLast2 ! Output signal the next to last time this filter was called. Supports 99 separate instances. - - ! Initialization - + + ! Initialization IF ((iStatus == 0) .OR. reset) THEN OutputSignalLast1(inst) = InputSignal OutputSignalLast2(inst) = InputSignal @@ -163,14 +135,12 @@ REAL FUNCTION NotchFilterSlopes(InputSignal, DT, CornerFreq, Damp, iStatus, rese InputSignalLast2(inst) = InputSignal ENDIF - ! Body - + ! Body NotchFilterSlopes = 1.0/(4.0+2.0*DT*Damp*CornerFreq+DT**2.0*CornerFreq**2.0) * ( (8.0-2.0*DT**2.0*CornerFreq**2.0)*OutputSignalLast1(inst) & + (-4.0+2.0*DT*Damp*CornerFreq-DT**2.0*CornerFreq**2.0)*OutputSignalLast2(inst) + & (2.0*DT*Damp*CornerFreq)*InputSignal + (-2.0*DT*Damp*CornerFreq)*InputSignalLast2(inst) ) - ! Save signals for next time step - + ! Save signals for next time step InputSignalLast2(inst) = InputSignalLast1(inst) InputSignalLast1(inst) = InputSignal !Save input signal for next time step OutputSignalLast2(inst) = OutputSignalLast1(inst) !Save input signal for next time step @@ -178,12 +148,9 @@ REAL FUNCTION NotchFilterSlopes(InputSignal, DT, CornerFreq, Damp, iStatus, rese inst = inst + 1 END FUNCTION NotchFilterSlopes - !------------------------------------------------------------------------------------------------------------------------------- - ! Discrete time Notch Filter, G = (s^2 + 2*omega*betaNum*s + omega^2)/(s^2 + 2*omega*betaDen*s + omega^2) +!------------------------------------------------------------------------------------------------------------------------------- REAL FUNCTION NotchFilter(InputSignal, DT, omega, betaNum, betaDen, iStatus, reset, inst) - !............................................................................................................................... - - ! Inputs + ! Discrete time Notch Filter, G = (s^2 + 2*omega*betaNum*s + omega^2)/(s^2 + 2*omega*betaDen*s + omega^2) REAL(4), INTENT(IN) :: InputSignal REAL(4), INTENT(IN) :: DT ! time step [s] @@ -193,23 +160,20 @@ REAL FUNCTION NotchFilter(InputSignal, DT, omega, betaNum, betaDen, iStatus, res INTEGER, INTENT(IN) :: iStatus ! A status flag set by the simulation as follows: 0 if this is the first call, 1 for all subsequent time steps, -1 if this is the final call at the end of the simulation. INTEGER, INTENT(INOUT) :: inst ! Instance number. Every instance of this function needs to have an unique instance number to ensure instances don't influence each other. LOGICAL(4), INTENT(IN) :: reset ! Reset the filter to the input signal - - ! Local + ! Local REAL(4) :: K, P1, P2, P3, P4, P5 ! Constant gain REAL(4), DIMENSION(99), SAVE :: InputSignalLast1 ! Input signal the last time this filter was called. Supports 99 separate instances. REAL(4), DIMENSION(99), SAVE :: InputSignalLast2 ! Input signal the next to last time this filter was called. Supports 99 separate instances. REAL(4), DIMENSION(99), SAVE :: OutputSignalLast1 ! Output signal the last time this filter was called. Supports 99 separate instances. REAL(4), DIMENSION(99), SAVE :: OutputSignalLast2 ! Output signal the next to last time this filter was called. Supports 99 separate instances. - ! Initialization - + ! Initialization IF ((iStatus == 0) .OR. reset) THEN OutputSignalLast1(inst) = InputSignal OutputSignalLast2(inst) = InputSignal InputSignalLast1(inst) = InputSignal InputSignalLast2(inst) = InputSignal ENDIF - K = 2/DT P1 = (K**2 + 2*omega*BetaNum*K + omega**2)/(K**2 + 2*omega*BetaDen*K + omega**2) P2 = (2*omega**2 - 2*K**2) / (K**2 + 2*omega*BetaDen*K + omega**2); @@ -228,12 +192,11 @@ REAL FUNCTION NotchFilter(InputSignal, DT, omega, betaNum, betaDen, iStatus, res inst = inst + 1 END FUNCTION NotchFilter - !------------------------------------------------------------------------------------------------------------------------------- - ! Prefilter measured wind turbine signals to separate the filtering from the actual control actions +!------------------------------------------------------------------------------------------------------------------------------- SUBROUTINE PreFilterMeasuredSignals(CntrPar, LocalVar, objInst) - !............................................................................................................................... + ! Prefilter measured wind turbine signals to separate the filtering from the actual control actions - USE DRC_Types, ONLY : ControlParameters, LocalVariables, ObjectInstances + USE ROSCO_Types, ONLY : ControlParameters, LocalVariables, ObjectInstances TYPE(ControlParameters), INTENT(INOUT) :: CntrPar TYPE(LocalVariables), INTENT(INOUT) :: LocalVar diff --git a/Source/Functions.f90 b/src/Functions.f90 similarity index 59% rename from Source/Functions.f90 rename to src/Functions.f90 index d43f7d2..c0dd488 100644 --- a/Source/Functions.f90 +++ b/src/Functions.f90 @@ -2,13 +2,14 @@ MODULE Functions USE Constants +USE Filters + IMPLICIT NONE CONTAINS - !------------------------------------------------------------------------------------------------------------------------------- - ! Saturates inputValue. Makes sure it is not smaller than minValue and not larger than maxValue +!------------------------------------------------------------------------------------------------------------------------------- REAL FUNCTION saturate(inputValue, minValue, maxValue) - ! + ! Saturates inputValue. Makes sure it is not smaller than minValue and not larger than maxValue IMPLICIT NONE @@ -19,10 +20,9 @@ REAL FUNCTION saturate(inputValue, minValue, maxValue) saturate = MIN(MAX(inputValue,minValue), maxValue) END FUNCTION saturate - !------------------------------------------------------------------------------------------------------------------------------- - ! Saturates inputValue. Makes sure it is not smaller than minValue and not larger than maxValue +!------------------------------------------------------------------------------------------------------------------------------- REAL FUNCTION ratelimit(inputSignal, inputSignalPrev, minRate, maxRate, DT) - ! + ! Saturates inputValue. Makes sure it is not smaller than minValue and not larger than maxValue IMPLICIT NONE REAL(4), INTENT(IN) :: inputSignal @@ -30,7 +30,6 @@ REAL FUNCTION ratelimit(inputSignal, inputSignalPrev, minRate, maxRate, DT) REAL(4), INTENT(IN) :: minRate REAL(4), INTENT(IN) :: maxRate REAL(4), INTENT(IN) :: DT - ! Local variables REAL(4) :: rate @@ -39,13 +38,12 @@ REAL FUNCTION ratelimit(inputSignal, inputSignalPrev, minRate, maxRate, DT) ratelimit = inputSignalPrev + rate*DT ! Saturate the overall command using the rate limit END FUNCTION ratelimit - !------------------------------------------------------------------------------------------------------------------------------- - ! PI controller, with output saturation +!------------------------------------------------------------------------------------------------------------------------------- REAL FUNCTION PIController(error, kp, ki, minValue, maxValue, DT, I0, reset, inst) - ! - IMPLICIT NONE + ! PI controller, with output saturation - ! Inputs + IMPLICIT NONE + ! Allocate Inputs REAL(4), INTENT(IN) :: error REAL(4), INTENT(IN) :: kp REAL(4), INTENT(IN) :: ki @@ -54,9 +52,8 @@ REAL FUNCTION PIController(error, kp, ki, minValue, maxValue, DT, I0, reset, ins REAL(4), INTENT(IN) :: DT INTEGER(4), INTENT(INOUT) :: inst REAL(4), INTENT(IN) :: I0 - LOGICAL, INTENT(IN) :: reset - - ! Local + LOGICAL, INTENT(IN) :: reset + ! Allocate local variables INTEGER(4) :: i ! Counter for making arrays REAL(4) :: PTerm ! Proportional term REAL(4), DIMENSION(99), SAVE :: ITerm = (/ (real(9999.9), i = 1,99) /) ! Integral term, current. @@ -82,17 +79,18 @@ REAL FUNCTION PIController(error, kp, ki, minValue, maxValue, DT, I0, reset, ins inst = inst + 1 END FUNCTION PIController - !------------------------------------------------------------------------------------------------------------------------------- - ! interp1 1-D interpolation (table lookup), xData and yData should be monotonically increasing +!------------------------------------------------------------------------------------------------------------------------------- REAL FUNCTION interp1d(xData, yData, xq) - ! + ! interp1d 1-D interpolation (table lookup), xData should be monotonically increasing + IMPLICIT NONE - ! Inputs + ! Inputs REAL(4), DIMENSION(:), INTENT(IN) :: xData ! Provided x data (vector), to be interpolated REAL(4), DIMENSION(:), INTENT(IN) :: yData ! Provided y data (vector), to be interpolated REAL(4), INTENT(IN) :: xq ! x-value for which the y value has to be interpolated INTEGER(4) :: I ! Iteration index + ! Interpolate IF (xq <= MINVAL(xData)) THEN interp1d = yData(1) ELSEIF (xq >= MAXVAL(xData)) THEN @@ -109,27 +107,168 @@ REAL FUNCTION interp1d(xData, yData, xq) END IF END FUNCTION interp1d - !------------------------------------------------------------------------------------------------------------------------------- - ! DF controller, with output saturation - REAL FUNCTION DFController(error, Kd, Tf, DT, inst) - ! +!------------------------------------------------------------------------------------------------------------------------------- + REAL FUNCTION interp2d(xData, yData, zData, xq, yq) + ! interp2d 2-D interpolation (table lookup). Query done using bilinear interpolation. + ! Note that the interpolated matrix with associated query vectors may be different than "standard", - zData should be formatted accordingly + ! - xData follows the matrix from left to right + ! - yData follows the matrix from top to bottom + ! A simple case: xData = [1 2 3], yData = [4 5 6] + ! | 1 2 3 + ! ------------- + ! 4| a b c + ! 5| d e f + ! 6| g H i + IMPLICIT NONE + ! Inputs + REAL(4), DIMENSION(:), INTENT(IN) :: xData ! Provided x data (vector), to find query point (should be monotonically increasing) + REAL(4), DIMENSION(:), INTENT(IN) :: yData ! Provided y data (vector), to find query point (should be monotonically increasing) + REAL(4), DIMENSION(:,:), INTENT(IN) :: zData ! Provided z data (vector), to be interpolated + REAL(4), INTENT(IN) :: xq ! x-value for which the z value has to be interpolated + REAL(4), INTENT(IN) :: yq ! y-value for which the z value has to be interpolated + ! Allocate variables + INTEGER(4) :: i ! Iteration index & query index, x-direction + INTEGER(4) :: ii ! Iteration index & second que . ry index, x-direction + INTEGER(4) :: j ! Iteration index & query index, y-direction + INTEGER(4) :: jj ! Iteration index & second query index, y-direction + REAL(4), DIMENSION(2,2) :: fQ ! zData value at query points for bilinear interpolation + REAL(4), DIMENSION(1) :: fxy ! Interpolated z-data point to be returned + REAL(4) :: fxy1 ! zData value at query point for bilinear interpolation + REAL(4) :: fxy2 ! zData value at query point for bilinear interpolation + + ! ---- Find corner indices surrounding desired interpolation point ----- + ! x-direction + IF (xq <= MINVAL(xData)) THEN ! On lower x-bound, just need to find zData(yq) + j = 1 + jj = 1 + interp2d = interp1d(yData,zData(:,j),yq) + RETURN + ELSEIF (xq >= MAXVAL(xData)) THEN ! On upper x-bound, just need to find zData(yq) + j = size(xData) + jj = size(xData) + interp2d = interp1d(yData,zData(:,j),yq) + RETURN + ELSE + DO j = 1,size(xData) ! On axis, just need 1d interpolation + IF (xq == xData(j)) THEN + jj = j + interp2d = interp1d(yData,zData(:,j),yq) + RETURN + ELSEIF (xq <= xData(j)) THEN + jj = j + EXIT + ELSE + CONTINUE + END IF + END DO + ENDIF + j = j-1 ! Move j back one + ! y-direction + IF (yq <= MINVAL(yData)) THEN ! On lower y-bound, just need to find zData(xq) + i = 1 + ii = 1 + interp2d = interp1d(xData,zData(i,:),xq) + RETURN + ELSEIF (yq >= MAXVAL(yData)) THEN ! On upper y-bound, just need to find zData(xq) + i = size(yData) + ii = size(yData) + interp2d = interp1d(xData,zData(i,:),xq) + RETURN + ELSE + DO i = 1,size(yData) + IF (yq == yData(i)) THEN ! On axis, just need 1d interpolation + ii = i + interp2d = interp1d(yData,zData(i,:),xq) + RETURN + ELSEIF (yq <= yData(i)) THEN + ii = i + EXIT + ELSE + CONTINUE + END IF + END DO + ENDIF + i = i-1 ! move i back one + + ! ---- Do bilinear interpolation ---- + ! Find values at corners + fQ(1,1) = zData(i,j) + fQ(2,1) = zData(ii,j) + fQ(1,2) = zData(i,jj) + fQ(2,2) = zData(ii,jj) + ! Interpolate + fxy1 = (xData(jj) - xq)/(xData(jj) - xData(j))*fQ(1,1) + (xq - xData(j))/(xData(jj) - xData(j))*fQ(2,1) + fxy2 = (xData(jj) - xq)/(xData(jj) - xData(j))*fQ(1,2) + (xq - xData(j))/(xData(jj) - xData(j))*fQ(2,1) + fxy = (yData(ii) - yq)/(yData(ii) - yData(i))*fxy1 + (yq - yData(i))/(yData(ii) - yData(i))*fxy2 + + interp2d = fxy(1) + + END FUNCTION interp2d +!------------------------------------------------------------------------------------------------------------------------------- + FUNCTION matinv3(A) RESULT(B) + ! Performs a direct calculation of the inverse of a 3×3 matrix. + ! Source: http://fortranwiki.org/fortran/show/Matrix+inversion + REAL(4), INTENT(IN) :: A(3,3) !! Matrix + REAL(4) :: B(3,3) !! Inverse matrix + REAL(4) :: detinv + + ! Calculate the inverse determinant of the matrix + detinv = 1/(A(1,1)*A(2,2)*A(3,3) - A(1,1)*A(2,3)*A(3,2)& + - A(1,2)*A(2,1)*A(3,3) + A(1,2)*A(2,3)*A(3,1)& + + A(1,3)*A(2,1)*A(3,2) - A(1,3)*A(2,2)*A(3,1)) + + ! Calculate the inverse of the matrix + B(1,1) = +detinv * (A(2,2)*A(3,3) - A(2,3)*A(3,2)) + B(2,1) = -detinv * (A(2,1)*A(3,3) - A(2,3)*A(3,1)) + B(3,1) = +detinv * (A(2,1)*A(3,2) - A(2,2)*A(3,1)) + B(1,2) = -detinv * (A(1,2)*A(3,3) - A(1,3)*A(3,2)) + B(2,2) = +detinv * (A(1,1)*A(3,3) - A(1,3)*A(3,1)) + B(3,2) = -detinv * (A(1,1)*A(3,2) - A(1,2)*A(3,1)) + B(1,3) = +detinv * (A(1,2)*A(2,3) - A(1,3)*A(2,2)) + B(2,3) = -detinv * (A(1,1)*A(2,3) - A(1,3)*A(2,1)) + B(3,3) = +detinv * (A(1,1)*A(2,2) - A(1,2)*A(2,1)) + END FUNCTION matinv3 +!------------------------------------------------------------------------------------------------------------------------------- + FUNCTION identity(n) RESULT(A) + ! Produces an identity matrix of size n x n + + INTEGER, INTENT(IN) :: n + REAL(4), DIMENSION(n, n) :: A + INTEGER :: i + INTEGER :: j - ! Inputs + ! Build identity matrix + DO i=1,n + DO j = 1,n + IF (i == j) THEN + A(i,j) = 1.0 + ELSE + A(i,j) = 0.0 + ENDIF + ENDDO + ENDDO + + END FUNCTION identity +!------------------------------------------------------------------------------------------------------------------------------- + REAL FUNCTION DFController(error, Kd, Tf, DT, inst) + ! DF controller, with output saturation + + IMPLICIT NONE + ! Inputs REAL(4), INTENT(IN) :: error REAL(4), INTENT(IN) :: kd REAL(4), INTENT(IN) :: tf REAL(4), INTENT(IN) :: DT INTEGER(4), INTENT(IN) :: inst - - ! Local + ! Local REAL(4) :: B ! INTEGER(4) :: i ! Counter for making arrays REAL(4), DIMENSION(99), SAVE :: errorLast = (/ (0, i=1,99) /) ! REAL(4), DIMENSION(99), SAVE :: DFControllerLast = (/ (0, i=1,99) /) ! INTEGER(4), DIMENSION(99), SAVE :: FirstCall = (/ (1, i=1,99) /) ! First call of this function? - ! Initialize persistent variables/arrays, and set inital condition for integrator term + ! Initialize persistent variables/arrays, and set inital condition for integrator term ! IF (FirstCall(inst) == 1) THEN ! FirstCall(inst) = 0 ! END IF @@ -140,242 +279,151 @@ REAL FUNCTION DFController(error, Kd, Tf, DT, inst) errorLast(inst) = error DFControllerLast(inst) = DFController END FUNCTION DFController - !------------------------------------------------------------------------------------------------------------------------------- - ! State machines, determines the state of the wind turbine to determine the corresponding control actions - ! States: - ! - VS/PC_State = 0, Error state, for debugging purposes (VS) / No pitch control active, pitch constant at fine-pitch (PC) - ! - VS_State = 1, Region 1(.5) operation, torque control to keep the rotor at cut-in speed towards the Cp-max operational curve - ! - VS_State = 2, Region 2, operation, maximum rotor power efficiency (Cp-max) tracking, keep TSR constant at a fixed fine-pitch angle - ! - VS_State = 3, Region 2.5, transition between below and above-rated operating conditions (near-rated region) using PI torque control - ! - VS_State = 4 + PC_State = 1, above-rated operation using pitch control (constant torque mode) - ! - VS_State = 5 + PC_State = 2, above-rated operation using pitch and torque control (constant power mode) - SUBROUTINE StateMachine(CntrPar, LocalVar) - USE DRC_Types, ONLY : LocalVariables, ControlParameters - IMPLICIT NONE - - ! Inputs - TYPE(ControlParameters), INTENT(IN) :: CntrPar - TYPE(LocalVariables), INTENT(INOUT) :: LocalVar - - ! Local - ! Pitch control state machine - IF (LocalVar%iStatus == 0) THEN - IF (LocalVar%PitCom(1) >= CntrPar%VS_Rgn3Pitch) THEN ! We are in region 3 - IF (CntrPar%VS_ControlMode == 1) THEN ! Constant power tracking - LocalVar%VS_State = 5 - LocalVar%PC_State = 2 - ELSE ! Constant torque tracking - LocalVar%VS_State = 4 - LocalVar%PC_State = 1 - END IF - ELSE - LocalVar%VS_State = 2 - LocalVar%PC_State = 0 - END IF - ELSE - IF ((CntrPar%VS_ControlMode == 0) .AND. (LocalVar%GenTq >= CntrPar%PC_RtTq99)) THEN - LocalVar%PC_State = 1 - ELSEIF ((CntrPar%VS_ControlMode == 1) .AND. (LocalVar%GenArTq >= CntrPar%VS_ArSatTq*0.99)) THEN - LocalVar%PC_State = 2 - ELSE - LocalVar%PC_State = 0 - END IF - - ! Torque control state machine - IF (LocalVar%PC_PitComT >= CntrPar%VS_Rgn3Pitch) THEN ! We are in region 3 ! - IF (CntrPar%VS_ControlMode == 1) THEN ! Constant power tracking - LocalVar%VS_State = 5 - ELSE ! Constant torque tracking - LocalVar%VS_State = 4 - END IF - ELSE - IF (LocalVar%GenArTq >= CntrPar%VS_MaxOMTq*1.01) THEN ! We are in region 2 1/2 - active PI torque control - LocalVar%VS_State = 3 - ELSEIF (LocalVar%GenBrTq <= CntrPar%VS_MinOMTq*0.99) THEN ! We are in region 1 1/2 - LocalVar%VS_State = 1 - ELSEIF (LocalVar%GenSpeedF < CntrPar%VS_RefSpd) THEN ! We are in region 2 - optimal torque is proportional to the square of the generator speed - LocalVar%VS_State = 2 - ELSE ! Error state, for debugging purposes - LocalVar%VS_State = 0 - END IF - END IF - END IF - END SUBROUTINE StateMachine - !------------------------------------------------------------------------------------------------------------------------------- - SUBROUTINE Debug(LocalVar, CntrPar, avrSWAP, RootName, size_avcOUTNAME) - USE, INTRINSIC :: ISO_C_Binding - USE DRC_Types, ONLY : LocalVariables, ControlParameters - - IMPLICIT NONE - - TYPE(ControlParameters), INTENT(IN) :: CntrPar - TYPE(LocalVariables), INTENT(IN) :: LocalVar - - INTEGER(4), INTENT(IN) :: size_avcOUTNAME - INTEGER(4) :: I ! Generic index. - CHARACTER(1), PARAMETER :: Tab = CHAR(9) ! The tab character. - CHARACTER(25), PARAMETER :: FmtDat = "(F8.3,99('"//Tab//"',ES10.3E2,:)) " ! The format of the debugging data - INTEGER(4), PARAMETER :: UnDb = 85 ! I/O unit for the debugging information - INTEGER(4), PARAMETER :: UnDb2 = 86 ! I/O unit for the debugging information, avrSWAP - REAL(C_FLOAT), INTENT(INOUT) :: avrSWAP(*) ! The swap array, used to pass data to, and receive data from, the DLL controller. - CHARACTER(size_avcOUTNAME-1), INTENT(IN) :: RootName ! a Fortran version of the input C string (not considered an array here) [subtract 1 for the C null-character] - - !.............................................................................................................................. - ! Initializing debug file - !.............................................................................................................................. - IF (LocalVar%iStatus == 0) THEN ! .TRUE. if we're on the first call to the DLL - ! If we're debugging, open the debug file and write the header: - IF (CntrPar%LoggingLevel > 0) THEN - !OPEN(unit=UnDb, FILE=TRIM(RootName)//'.dbg', STATUS='NEW') - OPEN(unit=UnDb, FILE='DEBUG.dbg') - WRITE (UnDb,'(A)') ' LocalVar%Time ' //Tab//'LocalVar%FA_Acc '//Tab//'LocalVar%FA_AccHPF '//Tab//'LocalVar%FA_AccHPFI '//Tab//'LocalVar%PitCom ' - WRITE (UnDb,'(A)') ' (sec) ' //Tab//'(m/s^2) ' //Tab//'(m/s^2) ' //Tab//'(m/s) ' //Tab//'(rad) ' - !WRITE (UnDb,'(A)') ' LocalVar%Time ' //Tab//'LocalVar%PC_PitComT ' //Tab//'LocalVar%PC_SpdErr ' //Tab//'LocalVar%PC_KP ' //Tab//'LocalVar%PC_KI ' //Tab//'LocalVar%Y_M ' //Tab//'LocalVar%rootMOOP(1) '//Tab//'VS_RtPwr '//Tab//'LocalVar%GenTq' - !WRITE (UnDb,'(A)') ' (sec) ' //Tab//'(rad) ' //Tab//'(rad/s) '//Tab//'(-) ' //Tab//'(-) ' //Tab//'(rad) ' //Tab//'(?) ' //Tab//'(W) '//Tab//'(Nm) ' - END IF - - IF (CntrPar%LoggingLevel > 1) THEN - !OPEN(UnDb2, FILE=TRIM(RootName)//'.dbg2', STATUS='REPLACE') - OPEN(unit=UnDb2, FILE='DEBUG2.dbg') - WRITE(UnDb2,'(/////)') - WRITE(UnDb2,'(A,85("'//Tab//'AvrSWAP(",I2,")"))') 'LocalVar%Time ', (i,i=1,85) - WRITE(UnDb2,'(A,85("'//Tab//'(-)"))') '(s)' - END IF - ELSE - ! Print simulation status, every 10 seconds - IF (MODULO(LocalVar%Time, 10.0) == 0) THEN - WRITE(*, 100) LocalVar%GenSpeedF*RPS2RPM, LocalVar%BlPitch(1)*R2D, avrSWAP(15)/1000.0, LocalVar%WE_Vw ! LocalVar%Time !/1000.0 - 100 FORMAT('Generator speed: ', f6.1, ' RPM, Pitch angle: ', f5.1, ' deg, Power: ', f7.1, ' kW, Est. wind Speed: ', f5.1, ' m/s') - ! PRINT *, LocalVar%PC_State, LocalVar%VS_State, CntrPar%VS_Rgn3Pitch, CntrPar%PC_FinePit, CntrPar%PC_Switch, LocalVar%BlPitch(1) ! Additional debug info - ! PRINT *, LocalVar%RotSpeed - END IF - - ! Output debugging information if requested: - IF (CntrPar%LoggingLevel > 0) THEN - WRITE (UnDb,FmtDat) LocalVar%Time, LocalVar%FA_Acc, LocalVar%FA_AccHPF, LocalVar%FA_AccHPFI, LocalVar%PitCom - END IF - - IF (CntrPar%LoggingLevel > 1) THEN - WRITE (UnDb2,FmtDat) LocalVar%Time, avrSWAP(1:85) - END IF - END IF - - IF (MODULO(LocalVar%Time, 10.0) == 0.0) THEN - !LocalVar%TestType = LocalVar%TestType + 10 - !PRINT *, LocalVar%TestType - END IF - END SUBROUTINE Debug - !------------------------------------------------------------------------------------------------------------------------------- - !The Coleman or d-q axis transformation transforms the root out of plane bending moments of each turbine blade - !to a direct axis and a quadrature axis +!------------------------------------------------------------------------------------------------------------------------------- SUBROUTINE ColemanTransform(rootMOOP, aziAngle, nHarmonic, axTOut, axYOut) - !............................................................................................................................... + ! The Coleman or d-q axis transformation transforms the root out of plane bending moments of each turbine blade + ! to a direct axis and a quadrature axis IMPLICIT NONE - - ! Inputs - + ! Inputs REAL(4), INTENT(IN) :: rootMOOP(3) ! Root out of plane bending moments of each blade REAL(4), INTENT(IN) :: aziAngle ! Rotor azimuth angle INTEGER(4), INTENT(IN) :: nHarmonic ! The harmonic number, nP - - ! Outputs - + ! Outputs REAL(4), INTENT(OUT) :: axTOut, axYOut ! Direct axis and quadrature axis outputted by this transform - - ! Local - + ! Local REAL(4), PARAMETER :: phi2 = 2.0/3.0*PI ! Phase difference from first to second blade REAL(4), PARAMETER :: phi3 = 4.0/3.0*PI ! Phase difference from first to third blade - ! Body - + ! Body axTOut = 2.0/3.0 * (cos(nHarmonic*(aziAngle))*rootMOOP(1) + cos(nHarmonic*(aziAngle+phi2))*rootMOOP(2) + cos(nHarmonic*(aziAngle+phi3))*rootMOOP(3)) axYOut = 2.0/3.0 * (sin(nHarmonic*(aziAngle))*rootMOOP(1) + sin(nHarmonic*(aziAngle+phi2))*rootMOOP(2) + sin(nHarmonic*(aziAngle+phi3))*rootMOOP(3)) END SUBROUTINE ColemanTransform - !------------------------------------------------------------------------------------------------------------------------------- - !The inverse Coleman or d-q axis transformation transforms the direct axis and quadrature axis - !back to root out of plane bending moments of each turbine blade +!------------------------------------------------------------------------------------------------------------------------------- SUBROUTINE ColemanTransformInverse(axTIn, axYIn, aziAngle, nHarmonic, aziOffset, PitComIPC) - !............................................................................................................................... - + ! The inverse Coleman or d-q axis transformation transforms the direct axis and quadrature axis + ! back to root out of plane bending moments of each turbine blade IMPLICIT NONE - - ! Inputs - + ! Inputs REAL(4), INTENT(IN) :: axTIn, axYIn ! Direct axis and quadrature axis REAL(4), INTENT(IN) :: aziAngle ! Rotor azimuth angle REAL(4), INTENT(IN) :: aziOffset ! Phase shift added to the azimuth angle INTEGER(4), INTENT(IN) :: nHarmonic ! The harmonic number, nP - - ! Outputs - + ! Outputs REAL(4), INTENT(OUT) :: PitComIPC(3) ! Root out of plane bending moments of each blade - - ! Local - + ! Local REAL(4), PARAMETER :: phi2 = 2.0/3.0*PI ! Phase difference from first to second blade REAL(4), PARAMETER :: phi3 = 4.0/3.0*PI ! Phase difference from first to third blade - ! Body - + ! Body PitComIPC(1) = cos(nHarmonic*(aziAngle+aziOffset))*axTIn + sin(nHarmonic*(aziAngle+aziOffset))*axYIn PitComIPC(2) = cos(nHarmonic*(aziAngle+aziOffset+phi2))*axTIn + sin(nHarmonic*(aziAngle+aziOffset+phi2))*axYIn PitComIPC(3) = cos(nHarmonic*(aziAngle+aziOffset+phi3))*axTIn + sin(nHarmonic*(aziAngle+aziOffset+phi3))*axYIn END SUBROUTINE ColemanTransformInverse - !------------------------------------------------------------------------------------------------------------------------------- - !Paremeterized Cp(lambda) function for a fixed pitch angle. Circumvents the need of importing a look-up table +!------------------------------------------------------------------------------------------------------------------------------- REAL FUNCTION CPfunction(CP, lambda) + ! Paremeterized Cp(lambda) function for a fixed pitch angle. Circumvents the need of importing a look-up table IMPLICIT NONE ! Inputs REAL(4), INTENT(IN) :: CP(4) ! Parameters defining the parameterizable Cp(lambda) function REAL(4), INTENT(IN) :: lambda ! Estimated or measured tip-speed ratio input + ! Lookup CPfunction = exp(-CP(1)/lambda)*(CP(2)/lambda-CP(3))+CP(4)*lambda CPfunction = saturate(CPfunction, 0.001, 1.0) END FUNCTION CPfunction - !------------------------------------------------------------------------------------------------------------------------------- - !Function for computing the aerodynamic torque, divided by the effective rotor torque of the turbine, for use in wind speed estimation - REAL FUNCTION AeroDynTorque(LocalVar, CntrPar) - USE DRC_Types, ONLY : LocalVariables, ControlParameters +!------------------------------------------------------------------------------------------------------------------------------- + REAL FUNCTION AeroDynTorque(LocalVar, CntrPar, PerfData) + ! Function for computing the aerodynamic torque, divided by the effective rotor torque of the turbine, for use in wind speed estimation + + USE ROSCO_Types, ONLY : LocalVariables, ControlParameters, PerformanceData IMPLICIT NONE - ! Inputs + ! Inputs TYPE(ControlParameters), INTENT(IN) :: CntrPar TYPE(LocalVariables), INTENT(IN) :: LocalVar + TYPE(PerformanceData), INTENT(IN) :: PerfData - ! Local + ! Local REAL(4) :: RotorArea REAL(4) :: Cp REAL(4) :: Lambda + ! Find Torque RotorArea = PI*CntrPar%WE_BladeRadius**2 Lambda = LocalVar%RotSpeed*CntrPar%WE_BladeRadius/LocalVar%WE_Vw - Cp = CPfunction(CntrPar%WE_CP, Lambda) - + ! Cp = CPfunction(CntrPar%WE_CP, Lambda) + Cp = interp2d(PerfData%Beta_vec,PerfData%TSR_vec,PerfData%Cp_mat, LocalVar%BlPitch(1)*R2D, Lambda) AeroDynTorque = 0.5*(CntrPar%WE_RhoAir*RotorArea)*(LocalVar%WE_Vw**3/LocalVar%RotSpeed)*Cp AeroDynTorque = MAX(AeroDynTorque, 0.0) END FUNCTION AeroDynTorque - !------------------------------------------------------------------------------------------------------------------------------- - SUBROUTINE WindSpeedEstimator(LocalVar, CntrPar) - USE DRC_Types, ONLY : LocalVariables, ControlParameters - IMPLICIT NONE +!------------------------------------------------------------------------------------------------------------------------------- + SUBROUTINE Debug(LocalVar, CntrPar, avrSWAP, RootName, size_avcOUTNAME) + ! Debug routine, defines what gets printed to DEBUG.dbg if LoggingLevel = 1 - ! Inputs - TYPE(ControlParameters), INTENT(IN) :: CntrPar - TYPE(LocalVariables), INTENT(INOUT) :: LocalVar + USE, INTRINSIC :: ISO_C_Binding + USE ROSCO_Types, ONLY : LocalVariables, ControlParameters - ! Body - LocalVar%WE_VwIdot = CntrPar%WE_Gamma/CntrPar%WE_Jtot*(LocalVar%VS_LastGenTrq*CntrPar%WE_GearboxRatio - AeroDynTorque(LocalVar, CntrPar)) + IMPLICIT NONE + + TYPE(ControlParameters), INTENT(IN) :: CntrPar + TYPE(LocalVariables), INTENT(IN) :: LocalVar + + INTEGER(4), INTENT(IN) :: size_avcOUTNAME + INTEGER(4) :: I ! Generic index. + CHARACTER(1), PARAMETER :: Tab = CHAR(9) ! The tab character. + CHARACTER(25), PARAMETER :: FmtDat = "(F8.3,99('"//Tab//"',ES10.3E2,:)) " ! The format of the debugging data + INTEGER(4), PARAMETER :: UnDb = 85 ! I/O unit for the debugging information + INTEGER(4), PARAMETER :: UnDb2 = 86 ! I/O unit for the debugging information, avrSWAP + REAL(C_FLOAT), INTENT(INOUT) :: avrSWAP(*) ! The swap array, used to pass data to, and receive data from, the DLL controller. + CHARACTER(size_avcOUTNAME-1), INTENT(IN) :: RootName ! a Fortran version of the input C string (not considered an array here) [subtract 1 for the C null-character] - LocalVar%WE_VwI = LocalVar%WE_VwI + LocalVar%WE_VwIdot*LocalVar%DT - LocalVar%WE_Vw = LocalVar%WE_VwI + CntrPar%WE_Gamma*LocalVar%RotSpeed + ! Initialize debug file + IF (LocalVar%iStatus == 0) THEN ! .TRUE. if we're on the first call to the DLL + ! If we're debugging, open the debug file and write the header: + IF (CntrPar%LoggingLevel > 0) THEN + !OPEN(unit=UnDb, FILE=TRIM(RootName)//'.dbg', STATUS='NEW') + OPEN(unit=UnDb, FILE='DEBUG.dbg') + WRITE (UnDb,'(A)') ' Time ' //Tab//' WE_TowerTop ' //Tab//' WE_Vw ' //Tab//' SS_DelOmega ' + WRITE (UnDb,'(A)') ' (sec) ' //Tab//'(m/s) ' //Tab//'(rad) ' + !WRITE (UnDb,'(A)') ' LocalVar%Time ' //Tab//'LocalVar%PC_PitComT ' //Tab//'LocalVar%PC_SpdErr ' //Tab//'LocalVar%PC_KP ' //Tab//'LocalVar%PC_KI ' //Tab//'LocalVar%Y_M ' //Tab//'LocalVar%rootMOOP(1) '//Tab//'VS_RtPwr '//Tab//'LocalVar%GenTq' + !WRITE (UnDb,'(A)') ' (sec) ' //Tab//'(rad) ' //Tab//'(rad/s) '//Tab//'(-) ' //Tab//'(-) ' //Tab//'(rad) ' //Tab//'(?) ' //Tab//'(W) '//Tab//'(Nm) ' + END IF + + IF (CntrPar%LoggingLevel > 1) THEN + !OPEN(UnDb2, FILE=TRIM(RootName)//'.dbg2', STATUS='REPLACE') + OPEN(unit=UnDb2, FILE='DEBUG2.dbg') + WRITE(UnDb2,'(/////)') + WRITE(UnDb2,'(A,85("'//Tab//'AvrSWAP(",I2,")"))') 'LocalVar%Time ', (i,i=1,85) + WRITE(UnDb2,'(A,85("'//Tab//'(-)"))') '(s)' + END IF + ELSE + ! Print simulation status, every 10 seconds + IF (MODULO(LocalVar%Time, 10.0) == 0) THEN + WRITE(*, 100) LocalVar%GenSpeedF*RPS2RPM, LocalVar%BlPitch(1)*R2D, avrSWAP(15)/1000.0, LocalVar%WE_Vw ! LocalVar%Time !/1000.0 + 100 FORMAT('Generator speed: ', f6.1, ' RPM, Pitch angle: ', f5.1, ' deg, Power: ', f7.1, ' kW, Est. wind Speed: ', f5.1, ' m/s') + ! PRINT *, LocalVar%PC_State, LocalVar%VS_State, CntrPar%VS_Rgn3Pitch, CntrPar%PC_FinePit, CntrPar%PC_Switch, LocalVar%BlPitch(1) ! Additional debug info + ! PRINT *, LocalVar%RotSpeed + END IF + + ! Output debugging information if requested: + IF (CntrPar%LoggingLevel > 0) THEN + WRITE (UnDb,FmtDat) LocalVar%Time, LocalVar%TestType, LocalVar%WE_Vw, LocalVar%SS_DelOmegaF + END IF + + IF (CntrPar%LoggingLevel > 1) THEN + WRITE (UnDb2,FmtDat) LocalVar%Time, avrSWAP(1:85) + END IF + END IF - END SUBROUTINE WindSpeedEstimator - !------------------------------------------------------------------------------------------------------------------------------- + IF (MODULO(LocalVar%Time, 10.0) == 0.0) THEN + !LocalVar%TestType = LocalVar%TestType + 10 + !PRINT *, LocalVar%TestType + END IF + END SUBROUTINE Debug END MODULE Functions diff --git a/Source/DRC_Types.f90 b/src/ROSCO_Types.f90 similarity index 73% rename from Source/DRC_Types.f90 rename to src/ROSCO_Types.f90 index 632989c..5752cdd 100644 --- a/Source/DRC_Types.f90 +++ b/src/ROSCO_Types.f90 @@ -1,27 +1,29 @@ -MODULE DRC_Types - +MODULE ROSCO_Types +! Define Types IMPLICIT NONE TYPE, PUBLIC :: ControlParameters INTEGER(4) :: LoggingLevel ! 0 = write no debug files, 1 = write standard output .dbg-file, 2 = write standard output .dbg-file and complete avrSWAP-array .dbg2-file - INTEGER(4) :: F_LPFType ! 1 = first-order low-pass filter, 2 = second-order low-pass filter - INTEGER(4) :: F_NotchType ! 0 = disable, 1 = enable: notch on the measured generator speed, + INTEGER(4) :: F_LPFType ! {1: first-order low-pass filter, 2: second-order low-pass filter}, [rad/s] + INTEGER(4) :: F_NotchType ! Notch on the measured generator speed {0: disable, 1: enable} REAL(4) :: F_LPFCornerFreq ! Corner frequency (-3dB point) in the first-order low-pass filter, [rad/s] - REAL(4) :: F_LPFDamping ! Damping coefficient if F_LPFType = 2, unused otherwise + REAL(4) :: F_LPFDamping ! Damping coefficient [used only when F_FilterType = 2] REAL(4) :: F_NotchCornerFreq ! Natural frequency of the notch filter, [rad/s] REAL(4), DIMENSION(:), ALLOCATABLE :: F_NotchBetaNumDen ! These two notch damping values (numerator and denominator) determines the width and depth of the notch - + Real(4) :: F_SSCornerFreq ! Setpoint Smoother mode {0: no setpoint smoothing, 1: introduce setpoint smoothing} + REAL(4) :: FA_HPFCornerFreq ! Corner frequency (-3dB point) in the high-pass filter on the fore-aft acceleration signal [rad/s] REAL(4) :: FA_IntSat ! Integrator saturation (maximum signal amplitude contrbution to pitch from FA damper), [rad] REAL(4) :: FA_KI ! Integral gain for the fore-aft tower damper controller, -1 = off / >0 = on [rad s/m] - INTEGER(4) :: IPC_ControlMode ! Turn Individual Pitch Control (IPC) for fatigue load reductions (pitch contribution) 0 = off / 1 = (1P reductions) / 2 = (1P+2P reductions) + INTEGER(4) :: IPC_ControlMode ! Turn Individual Pitch Control (IPC) for fatigue load reductions (pitch contribution) {0: off, 1: 1P reductions, 2: 1P+2P reductions} REAL(4) :: IPC_IntSat ! Integrator saturation (maximum signal amplitude contrbution to pitch from IPC) REAL(4), DIMENSION(:), ALLOCATABLE :: IPC_KI ! Integral gain for the individual pitch controller, [-]. 8E-10 REAL(4), DIMENSION(:), ALLOCATABLE :: IPC_aziOffset ! Phase offset added to the azimuth angle for the individual pitch controller, [rad]. - REAL(4) :: IPC_CornerFreqAct ! Corner frequency of the first-order actuators model, to induce a phase lag in the IPC signal. Set 0 to disable. [rad/s] + REAL(4) :: IPC_CornerFreqAct ! Corner frequency of the first-order actuators model, to induce a phase lag in the IPC signal {0: Disable}, [rad/s] + INTEGER(4) :: PC_ControlMode ! Blade pitch control mode {0: No pitch, fix to fine pitch, 1: active PI blade pitch control} INTEGER(4) :: PC_GS_n ! Amount of gain-scheduling table entries REAL(4), DIMENSION(:), ALLOCATABLE :: PC_GS_angles ! Gain-schedule table: pitch angles REAL(4), DIMENSION(:), ALLOCATABLE :: PC_GS_KP ! Gain-schedule table: pitch controller kp gains @@ -36,7 +38,7 @@ MODULE DRC_Types REAL(4) :: PC_FinePit ! Record 5: Below-rated pitch angle set-point (deg) [used only with Bladed Interface] REAL(4) :: PC_Switch ! Angle above lowest minimum pitch angle for switch [rad] - INTEGER(4) :: VS_ControlMode ! Generator torque control mode in above rated conditions, 0 = constant torque / 1 = constant power + INTEGER(4) :: VS_ControlMode ! Generator torque control mode in above rated conditions {0: constant torque, 1: constant power} REAL(4) :: VS_GenEff ! Generator efficiency mechanical power -> electrical power [-] REAL(4) :: VS_ArSatTq ! Above rated generator torque PI control saturation, [Nm] -- 212900 REAL(4) :: VS_MaxRat ! Maximum torque rate (in absolute value) in torque controller, [Nm/s]. @@ -50,7 +52,13 @@ MODULE DRC_Types INTEGER(4) :: VS_n ! Number of controller gains REAL(4), DIMENSION(:), ALLOCATABLE :: VS_KP ! Proportional gain for generator PI torque controller, used in the transitional 2.5 region REAL(4), DIMENSION(:), ALLOCATABLE :: VS_KI ! Integral gain for generator PI torque controller, used in the transitional 2.5 region + REAL(4) :: VS_TSRopt ! Power-maximizing region 2 tip-speed ratio [rad] + INTEGER(4) :: SS_Mode ! Setpoint Smoother mode {0: no setpoint smoothing, 1: introduce setpoint smoothing} + REAL(4) :: SS_VSGain ! Variable speed torque controller setpoint smoother gain, [-]. + REAL(4) :: SS_PCGain ! Collective pitch controller setpoint smoother gain, [-]. + + INTEGER(4) :: WE_Mode ! Wind speed estimator mode {0: One-second low pass filtered hub height wind speed, 1: Imersion and Invariance Estimator (Ortega et al.) REAL(4) :: WE_BladeRadius ! Blade length [m] INTEGER(4) :: WE_CP_n ! Amount of parameters in the Cp array REAL(4), DIMENSION(:), ALLOCATABLE :: WE_CP ! Parameters that define the parameterized CP(\lambda) function @@ -58,8 +66,13 @@ MODULE DRC_Types REAL(4) :: WE_GearboxRatio ! Gearbox ratio, >=1 [-] REAL(4) :: WE_Jtot ! Total drivetrain inertia, including blades, hub and casted generator inertia to LSS [kg m^2] REAL(4) :: WE_RhoAir ! Air density [kg m^-3] - - INTEGER(4) :: Y_ControlMode ! Yaw control mode: (0 = no yaw control, 1 = yaw rate control, 2 = yaw-by-IPC) + CHARACTER(1024) :: PerfFileName ! File containing rotor performance tables (Cp,Ct,Cq) + INTEGER(4), DIMENSION(:), ALLOCATABLE :: PerfTableSize ! Size of rotor performance tables, first number refers to number of blade pitch angles, second number referse to number of tip-speed ratios + INTEGER(4) :: WE_FOPoles_N ! Number of first-order system poles used in EKF + REAL(4), DIMENSION(:), ALLOCATABLE :: WE_FOPoles_v ! Wind speeds corresponding to first-order system poles [m/s] + REAL(4), DIMENSION(:), ALLOCATABLE :: WE_FOPoles ! First order system poles + + INTEGER(4) :: Y_ControlMode ! Yaw control mode {0: no yaw control, 1: yaw rate control, 2: yaw-by-IPC} REAL(4) :: Y_ErrThresh ! Error threshold [rad]. Turbine begins to yaw when it passes this. (104.71975512) -- 1.745329252 REAL(4) :: Y_IPC_IntSat ! Integrator saturation (maximum signal amplitude contrbution to pitch from yaw-by-IPC) INTEGER(4) :: Y_IPC_n ! Number of controller gains (yaw-by-IPC) @@ -76,6 +89,15 @@ MODULE DRC_Types REAL(4) :: Z_PitchAmplitude ! Amplitude of sine pitch excitation REAL(4) :: Z_PitchFrequency ! Frequency of sine pitch excitation + INTEGER(4) :: PS_Mode ! Peak shaving mode {0: no peak shaving, 1: implement peak shaving} + INTEGER(4) :: PS_BldPitchMin_N ! Number of values in minimum blade pitch lookup table (should equal number of values in PS_WindSpeeds and PS_BldPitchMin) + REAL(4), DIMENSION(:), ALLOCATABLE :: PS_WindSpeeds ! Wind speeds corresponding to minimum blade pitch angles [m/s] + REAL(4), DIMENSION(:), ALLOCATABLE :: PS_BldPitchMin ! Minimum blade pitch angles [rad] + + INTEGER(4) :: SD_Mode ! Shutdown mode {0: no shutdown procedure, 1: pitch to max pitch at shutdown} + REAL(4) :: SD_MaxPit ! Maximum blade pitch angle to initiate shutdown, [rad] + REAL(4) :: SD_CornerFreq ! Cutoff Frequency for first order low-pass filter for blade pitch angle, [rad/s] + REAL(4) :: PC_RtTq99 ! 99% of the rated torque value, using for switching between pitch and torque control, [Nm]. REAL(4) :: VS_MaxOMTq ! Maximum torque at the end of the below-rated region 2, [Nm] REAL(4) :: VS_MinOMTq ! Minimum torque at the beginning of the below-rated region 2, [Nm] @@ -83,7 +105,7 @@ MODULE DRC_Types END TYPE ControlParameters TYPE, PUBLIC :: LocalVariables - ! From avrSWAP + ! ---------- From avrSWAP ---------- INTEGER(4) :: iStatus REAL(4) :: Time REAL(4) :: DT @@ -97,7 +119,7 @@ MODULE DRC_Types REAL(4) :: Azimuth INTEGER(4) :: NumBl - ! Internal controller variables + ! ---------- -Internal controller variables ---------- REAL(4) :: FA_Acc ! Tower fore-aft acceleration [m/s^2] REAL(4) :: FA_AccHPF ! High-pass filtered fore-aft acceleration [m/s^2] REAL(4) :: FA_AccHPFI ! Tower velocity, high-pass filtered and integrated fore-aft acceleration [m/s] @@ -108,24 +130,27 @@ MODULE DRC_Types REAL(4) :: GenArTq ! Electrical generator torque, for above-rated PI-control [Nm]. REAL(4) :: GenBrTq ! Electrical generator torque, for below-rated PI-control [Nm]. INTEGER(4) :: GlobalState ! Current global state to determine the behavior of the different controllers [-]. - REAL(4) :: IPC_PitComF(3) ! Commanded pitch of each blade as calculated by the individual pitch controller, F stands for low-pass filtered, [rad]. - REAL(4) :: PC_KP ! Proportional gain for pitch controller at rated pitch (zero), [s]. - REAL(4) :: PC_KI ! Integral gain for pitch controller at rated pitch (zero), [-]. - REAL(4) :: PC_KD ! Differential gain for pitch controller at rated pitch (zero), [-]. + REAL(4) :: IPC_PitComF(3) ! Commanded pitch of each blade as calculated by the individual pitch controller, F stands for low-pass filtered [rad]. + REAL(4) :: PC_KP ! Proportional gain for pitch controller at rated pitch (zero) [s]. + REAL(4) :: PC_KI ! Integral gain for pitch controller at rated pitch (zero) [-]. + REAL(4) :: PC_KD ! Differential gain for pitch controller at rated pitch (zero) [-]. REAL(4) :: PC_TF ! First-order filter parameter for derivative action - REAL(4) :: PC_MaxPitVar ! Maximum pitch setting in pitch controller (variable) [rad]. - REAL(4) :: PC_PitComT ! Total command pitch based on the sum of the proportional and integral terms, [rad]. + REAL(4) :: PC_MaxPit ! Maximum pitch setting in pitch controller (variable) [rad]. + REAL(4) :: PC_MinPit ! Minimum pitch setting in pitch controller (variable) [rad]. + REAL(4) :: PC_PitComT ! Total command pitch based on the sum of the proportional and integral terms [rad]. REAL(4) :: PC_PitComT_IPC(3) ! Total command pitch based on the sum of the proportional and integral terms, including IPC term [rad]. REAL(4) :: PC_PwrErr ! Power error with respect to rated power [W] REAL(4) :: PC_SineExcitation ! Sine contribution to pitch signal REAL(4) :: PC_SpdErr ! Current speed error (pitch control) [rad/s]. INTEGER(4) :: PC_State ! State of the pitch control system - REAL(4) :: PitCom(3) ! Commanded pitch of each blade the last time the controller was called, [rad]. - INTEGER(4) :: TestType ! Test variable, no use - REAL(4) :: VS_LastGenTrq ! Commanded electrical generator torque the last time the controller was called, [Nm]. + REAL(4) :: PitCom(3) ! Commanded pitch of each blade the last time the controller was called [rad]. + REAL(4) :: SS_DelOmegaF ! Filtered setpoint shifting term defined in setpoint smoother [rad/s]. + REAL(4) :: TestType ! Test variable, no use + REAL(4) :: VS_LastGenTrq ! Commanded electrical generator torque the last time the controller was called [Nm]. REAL(4) :: VS_MechGenPwr ! Mechanical power on the generator axis [W] - REAL(4) :: VS_SpdErrAr ! Current speed error (generator torque control) [rad/s]. - REAL(4) :: VS_SpdErrBr ! Current speed error (generator torque control) [rad/s]. + REAL(4) :: VS_SpdErrAr ! Current speed error for region 2.5 PI controller (generator torque control) [rad/s]. + REAL(4) :: VS_SpdErrBr ! Current speed error for region 1.5 PI controller (generator torque control) [rad/s]. + REAL(4) :: VS_SpdErr ! Current speed error for tip-speed-ratio tracking controller (generator torque control) [rad/s]. INTEGER(4) :: VS_State ! State of the torque control system REAL(4) :: WE_Vw ! Estimated wind speed [m/s] REAL(4) :: WE_VwI ! Integrated wind speed quantity for estimation [m/s] @@ -134,8 +159,9 @@ MODULE DRC_Types REAL(4) :: Y_ErrLPFFast ! Filtered yaw error by fast low pass filter [rad]. REAL(4) :: Y_ErrLPFSlow ! Filtered yaw error by slow low pass filter [rad]. REAL(4) :: Y_MErr ! Measured yaw error, measured + setpoint [rad]. - REAL(4) :: Y_YawEndT ! Yaw end time, [s]. Indicates the time up until which yaw is active with a fixed rate -END TYPE LocalVariables + REAL(4) :: Y_YawEndT ! Yaw end time [s]. Indicates the time up until which yaw is active with a fixed rate + LOGICAL(1) :: SD ! Shutdown, .FALSE. if inactive, .TRUE. if active + END TYPE LocalVariables TYPE, PUBLIC :: ObjectInstances INTEGER(4) :: instLPF @@ -145,4 +171,13 @@ MODULE DRC_Types INTEGER(4) :: instNotch INTEGER(4) :: instPI END TYPE ObjectInstances -END MODULE DRC_Types \ No newline at end of file + +TYPE, PUBLIC :: PerformanceData + REAL(4), DIMENSION(:), ALLOCATABLE :: TSR_vec + REAL(4), DIMENSION(:), ALLOCATABLE :: Beta_vec + REAL(4), DIMENSION(:,:), ALLOCATABLE :: Cp_mat + REAL(4), DIMENSION(:,:), ALLOCATABLE :: Ct_mat + REAL(4), DIMENSION(:,:), ALLOCATABLE :: Cq_mat +END TYPE PerformanceData + +END MODULE ROSCO_Types \ No newline at end of file diff --git a/Source/ReadSetParameters.f90 b/src/ReadSetParameters.f90 similarity index 60% rename from Source/ReadSetParameters.f90 rename to src/ReadSetParameters.f90 index 688b23d..5fc65e3 100644 --- a/Source/ReadSetParameters.f90 +++ b/src/ReadSetParameters.f90 @@ -1,14 +1,17 @@ MODULE ReadSetParameters USE, INTRINSIC :: ISO_C_Binding + +USE Constants +USE Functions + IMPLICIT NONE CONTAINS - !.............................................................................................................................. + ! ----------------------------------------------------------------------------------- ! Read all constant control parameters from DISCON.IN parameter file - !.............................................................................................................................. SUBROUTINE ReadControlParameterFileSub(CntrPar) - USE DRC_Types, ONLY : ControlParameters + USE ROSCO_Types, ONLY : ControlParameters INTEGER(4), PARAMETER :: UnControllerParameters = 89 TYPE(ControlParameters), INTENT(INOUT) :: CntrPar @@ -31,7 +34,12 @@ SUBROUTINE ReadControlParameterFileSub(CntrPar) READ(UnControllerParameters, *) CntrPar%F_NotchType READ(UnControllerParameters, *) CntrPar%IPC_ControlMode READ(UnControllerParameters, *) CntrPar%VS_ControlMode + READ(UnControllerParameters, *) CntrPar%PC_ControlMode READ(UnControllerParameters, *) CntrPar%Y_ControlMode + READ(UnControllerParameters, *) CntrPar%SS_Mode + READ(UnControllerParameters, *) CntrPar%WE_Mode + READ(UnControllerParameters, *) CntrPar%PS_Mode + READ(UnControllerParameters, *) CntrPar%SD_Mode READ(UnControllerParameters, *) !----------------- FILTER CONSTANTS --------------------- @@ -41,6 +49,7 @@ SUBROUTINE ReadControlParameterFileSub(CntrPar) READ(UnControllerParameters, *) CntrPar%F_NotchCornerFreq ALLOCATE(CntrPar%F_NotchBetaNumDen(2)) READ(UnControllerParameters,*) CntrPar%F_NotchBetaNumDen + READ(UnControllerParameters,*) CntrPar%F_SSCornerFreq READ(UnControllerParameters, *) !----------- BLADE PITCH CONTROLLER CONSTANTS ----------- @@ -96,8 +105,15 @@ SUBROUTINE ReadControlParameterFileSub(CntrPar) READ(UnControllerParameters,*) CntrPar%VS_KP ALLOCATE(CntrPar%VS_KI(CntrPar%VS_n)) READ(UnControllerParameters,*) CntrPar%VS_KI + READ(UnControllerParameters,*) CntrPar%VS_TSRopt READ(UnControllerParameters, *) + !------- Setpoint Smoother -------------------------------- + READ(UnControllerParameters, *) + READ(UnControllerParameters, *) CntrPar%SS_VSGain + READ(UnControllerParameters, *) CntrPar%SS_PCGain + READ(UnControllerParameters, *) + !------------ WIND SPEED ESTIMATOR CONTANTS -------------- READ(UnControllerParameters, *) READ(UnControllerParameters, *) CntrPar%WE_BladeRadius @@ -108,6 +124,15 @@ SUBROUTINE ReadControlParameterFileSub(CntrPar) READ(UnControllerParameters, *) CntrPar%WE_GearboxRatio READ(UnControllerParameters, *) CntrPar%WE_Jtot READ(UnControllerParameters, *) CntrPar%WE_RhoAir + READ(UnControllerParameters, *) CntrPar%PerfFileName + ALLOCATE(CntrPar%PerfTableSize(2)) + READ(UnControllerParameters, *) CntrPar%PerfTableSize + READ(UnControllerParameters, *) CntrPar%WE_FOPoles_N + ALLOCATE(CntrPar%WE_FOPoles_v(CntrPar%WE_FOPoles_n)) + READ(UnControllerParameters, *) CntrPar%WE_FOPoles_v + ALLOCATE(CntrPar%WE_FOPoles(CntrPar%WE_FOPoles_n)) + READ(UnControllerParameters, *) CntrPar%WE_FOPoles + READ(UnControllerParameters, *) !-------------- YAW CONTROLLER CONSTANTS ----------------- @@ -132,7 +157,21 @@ SUBROUTINE ReadControlParameterFileSub(CntrPar) READ(UnControllerParameters, *) CntrPar%FA_KI READ(UnControllerParameters, *) CntrPar%FA_HPFCornerFreq READ(UnControllerParameters, *) CntrPar%FA_IntSat - + READ(UnControllerParameters, *) + + !------------ PEAK SHAVING ------------ + READ(UnControllerParameters, *) + READ(UnControllerParameters, *) CntrPar%PS_BldPitchMin_N + ALLOCATE(CntrPar%PS_WindSpeeds(CntrPar%PS_BldPitchMin_N)) + READ(UnControllerParameters, *) CntrPar%PS_WindSpeeds + ALLOCATE(CntrPar%PS_BldPitchMin(CntrPar%PS_BldPitchMin_N)) + READ(UnControllerParameters, *) CntrPar%PS_BldPitchMin + READ(UnControllerParameters, *) + + !------------ SHUTDOWN ------------ + READ(UnControllerParameters, *) + READ(UnControllerParameters, *) CntrPar%SD_MaxPit + READ(UnControllerParameters, *) CntrPar%SD_CornerFreq ! END OF INPUT FILE !------------------- CALCULATED CONSTANTS ----------------------- @@ -142,29 +181,78 @@ SUBROUTINE ReadControlParameterFileSub(CntrPar) CntrPar%VS_Rgn3Pitch = CntrPar%PC_FinePit + CntrPar%PC_Switch CLOSE(UnControllerParameters) + + !------------------- HOUSEKEEPING ----------------------- + CntrPar%PerfFileName = TRIM(CntrPar%PerfFileName) + END SUBROUTINE ReadControlParameterFileSub - - SUBROUTINE ComputeVariablesSetpoints(CntrPar, LocalVar) - USE DRC_Types, ONLY : ControlParameters, LocalVariables + ! ----------------------------------------------------------------------------------- + ! Calculate setpoints for primary control actions + SUBROUTINE ComputeVariablesSetpoints(CntrPar, LocalVar, objInst) + USE ROSCO_Types, ONLY : ControlParameters, LocalVariables, ObjectInstances - ! Local variables + ! Allocate variables TYPE(ControlParameters), INTENT(INOUT) :: CntrPar TYPE(LocalVariables), INTENT(INOUT) :: LocalVar - - ! Calculate yaw misalignment error + TYPE(ObjectInstances), INTENT(INOUT) :: objInst + + REAL(4) :: VS_RefSpd ! Referece speed for variable speed torque controller, [rad/s] + REAL(4) :: PC_RefSpd ! Referece speed for pitch controller, [rad/s] + REAL(4) :: Omega_op ! Optimal TSR-tracking generator speed, [rad/s] + REAL(4) :: WE_Vw_f ! Filtered Wind Speed Estimate + ! temp + ! REAL(4) :: VS_TSRop = 7.5 + + ! ----- Calculate yaw misalignment error ----- LocalVar%Y_MErr = LocalVar%Y_M + CntrPar%Y_MErrSet ! Yaw-alignment error - ! Compute the current speed AND power error - LocalVar%PC_SpdErr = CntrPar%PC_RefSpd - LocalVar%GenSpeedF ! Speed error + ! ----- Pitch controller speed and power error ----- + ! Implement setpoint smoothing + IF (LocalVar%SS_DelOmegaF < 0) THEN + PC_RefSpd = CntrPar%PC_RefSpd - LocalVar%SS_DelOmegaF + ELSE + PC_RefSpd = CntrPar%PC_RefSpd + ENDIF + LocalVar%PC_SpdErr = PC_RefSpd - LocalVar%GenSpeedF ! Speed error LocalVar%PC_PwrErr = CntrPar%VS_RtPwr - LocalVar%VS_GenPwr ! Power error - ! XXX - LocalVar%VS_SpdErrAr = CntrPar%VS_RefSpd - LocalVar%GenSpeedF ! Current speed error - Above-rated PI-control - LocalVar%VS_SpdErrBr = CntrPar%VS_MinOMSpd - LocalVar%GenSpeedF ! Current speed error - Below-rated PI-control - END SUBROUTINE ComputeVariablesSetpoints + ! ----- Torque controller reference errors ----- + ! Define VS reference generator speed [rad/s] + IF (CntrPar%VS_ControlMode == 2) THEN + WE_Vw_f = LPFilter(LocalVar%We_Vw, LocalVar%DT, 0.625, LocalVar%iStatus, .FALSE., objInst%instLPF) + ! WE_Vw_f = LocalVar%We_Vw + VS_RefSpd = (CntrPar%VS_TSRopt * WE_Vw_f / CntrPar%WE_BladeRadius) * CntrPar%WE_GearboxRatio + VS_RefSpd = saturate(VS_RefSpd,CntrPar%VS_MinOMSpd, CntrPar%VS_RefSpd) + ELSE + VS_RefSpd = CntrPar%VS_RefSpd + ENDIF + + + ! Implement setpoint smoothing + IF (LocalVar%SS_DelOmegaF > 0) THEN + VS_RefSpd = VS_RefSpd - LocalVar%SS_DelOmegaF + ENDIF + + ! Force zero torque in shutdown mode + IF (LocalVar%SD) THEN + VS_RefSpd = CntrPar%VS_MinOMSpd + ENDIF + + ! TSR-tracking reference error + IF (CntrPar%VS_ControlMode == 2) THEN + LocalVar%VS_SpdErr = VS_RefSpd - LocalVar%GenSpeedF + ENDIF + + ! Define transition region setpoint errors + LocalVar%VS_SpdErrAr = VS_RefSpd - LocalVar%GenSpeedF ! Current speed error - Region 2.5 PI-control (Above Rated) + LocalVar%VS_SpdErrBr = CntrPar%VS_MinOMSpd - LocalVar%GenSpeedF ! Current speed error - Region 1.5 PI-control (Below Rated) + + END SUBROUTINE ComputeVariablesSetpoints + ! ----------------------------------------------------------------------------------- + ! Read avrSWAP array passed from ServoDyn SUBROUTINE ReadAvrSWAP(avrSWAP, LocalVar) - USE DRC_Types, ONLY : LocalVariables + USE ROSCO_Types, ONLY : LocalVariables REAL(C_FLOAT), INTENT(INOUT) :: avrSWAP(*) ! The swap array, used to pass data to, and receive data from, the DLL controller. TYPE(LocalVariables), INTENT(INOUT) :: LocalVar @@ -173,7 +261,6 @@ SUBROUTINE ReadAvrSWAP(avrSWAP, LocalVar) LocalVar%iStatus = NINT(avrSWAP(1)) LocalVar%Time = avrSWAP(2) LocalVar%DT = avrSWAP(3) - LocalVar%BlPitch(1) = avrSWAP(4) LocalVar%VS_MechGenPwr = avrSWAP(14) LocalVar%VS_GenPwr = avrSWAP(15) LocalVar%GenSpeed = avrSWAP(20) @@ -184,16 +271,27 @@ SUBROUTINE ReadAvrSWAP(avrSWAP, LocalVar) LocalVar%rootMOOP(1) = avrSWAP(30) LocalVar%rootMOOP(2) = avrSWAP(31) LocalVar%rootMOOP(3) = avrSWAP(32) - LocalVar%BlPitch(2) = avrSWAP(33) - LocalVar%BlPitch(3) = avrSWAP(34) LocalVar%FA_Acc = avrSWAP(53) LocalVar%Azimuth = avrSWAP(60) LocalVar%NumBl = NINT(avrSWAP(61)) + + ! --- NJA: usually feedback back the previous pitch command helps for numerical stability, sometimes it does not... + IF (LocalVar%iStatus == 0) THEN + LocalVar%BlPitch(1) = avrSWAP(4) + LocalVar%BlPitch(2) = avrSWAP(33) + LocalVar%BlPitch(3) = avrSWAP(34) + ELSE + LocalVar%BlPitch(1) = LocalVar%PitCom(1) + LocalVar%BlPitch(2) = LocalVar%PitCom(2) + LocalVar%BlPitch(3) = LocalVar%PitCom(3) + ENDIF + END SUBROUTINE ReadAvrSWAP - + ! ----------------------------------------------------------------------------------- + ! Check for errors before any execution SUBROUTINE Assert(LocalVar, CntrPar, avrSWAP, aviFAIL, ErrMsg, size_avcMSG) USE, INTRINSIC :: ISO_C_Binding - USE DRC_Types, ONLY : LocalVariables, ControlParameters + USE ROSCO_Types, ONLY : LocalVariables, ControlParameters IMPLICIT NONE @@ -298,36 +396,38 @@ SUBROUTINE Assert(LocalVar, CntrPar, avrSWAP, aviFAIL, ErrMsg, size_avcMSG) ErrMsg = 'IPC_KI(2) must be zero or greater than zero.' ENDIF - IF (CntrPar%Y_IPC_omegaLP <= 0.0) THEN - aviFAIL = -1 - ErrMsg = 'Y_IPC_omegaLP must be greater than zero.' - ENDIF - - IF (CntrPar%Y_IPC_zetaLP <= 0.0) THEN - aviFAIL = -1 - ErrMsg = 'Y_IPC_zetaLP must be greater than zero.' - ENDIF - - IF (CntrPar%Y_ErrThresh <= 0.0) THEN - aviFAIL = -1 - ErrMsg = 'Y_ErrThresh must be greater than zero.' - ENDIF - - IF (CntrPar%Y_Rate <= 0.0) THEN - aviFAIL = -1 - ErrMsg = 'CntrPar%Y_Rate must be greater than zero.' - ENDIF - - IF (CntrPar%Y_omegaLPFast <= 0.0) THEN - aviFAIL = -1 - ErrMsg = 'Y_omegaLPFast must be greater than zero.' - ENDIF - - IF (CntrPar%Y_omegaLPSlow <= 0.0) THEN - aviFAIL = -1 - ErrMsg = 'Y_omegaLPSlow must be greater than zero.' + ! ---- Yaw Control ---- + IF (CntrPar%Y_ControlMode > 0) THEN + IF (CntrPar%Y_IPC_omegaLP <= 0.0) THEN + aviFAIL = -1 + ErrMsg = 'Y_IPC_omegaLP must be greater than zero.' + ENDIF + + IF (CntrPar%Y_IPC_zetaLP <= 0.0) THEN + aviFAIL = -1 + ErrMsg = 'Y_IPC_zetaLP must be greater than zero.' + ENDIF + + IF (CntrPar%Y_ErrThresh <= 0.0) THEN + aviFAIL = -1 + ErrMsg = 'Y_ErrThresh must be greater than zero.' + ENDIF + + IF (CntrPar%Y_Rate <= 0.0) THEN + aviFAIL = -1 + ErrMsg = 'CntrPar%Y_Rate must be greater than zero.' + ENDIF + + IF (CntrPar%Y_omegaLPFast <= 0.0) THEN + aviFAIL = -1 + ErrMsg = 'Y_omegaLPFast must be greater than zero.' + ENDIF + + IF (CntrPar%Y_omegaLPSlow <= 0.0) THEN + aviFAIL = -1 + ErrMsg = 'Y_omegaLPSlow must be greater than zero.' + ENDIF ENDIF - ! Abort if the user has not requested a pitch angle actuator (See Appendix A ! of Bladed User's Guide): IF (NINT(avrSWAP(10)) /= 0) THEN ! .TRUE. if a pitch angle actuator hasn't been requested @@ -339,15 +439,18 @@ SUBROUTINE Assert(LocalVar, CntrPar, avrSWAP, aviFAIL, ErrMsg, size_avcMSG) aviFAIL = -1 ErrMsg = 'IPC enabled, but Ptch_Cntrl in ServoDyn has a value of 0. Set it to 1.' ENDIF + END SUBROUTINE Assert - - SUBROUTINE SetParameters(avrSWAP, aviFAIL, ErrMsg, size_avcMSG, CntrPar, LocalVar, objInst) - USE DRC_Types, ONLY : ControlParameters, LocalVariables, ObjectInstances + ! ----------------------------------------------------------------------------------- + ! Define parameters for control actions + SUBROUTINE SetParameters(avrSWAP, aviFAIL, ErrMsg, size_avcMSG, CntrPar, LocalVar, objInst, PerfData) + USE ROSCO_Types, ONLY : ControlParameters, LocalVariables, ObjectInstances, PerformanceData INTEGER(4), INTENT(IN) :: size_avcMSG TYPE(ControlParameters), INTENT(INOUT) :: CntrPar TYPE(LocalVariables), INTENT(INOUT) :: LocalVar TYPE(ObjectInstances), INTENT(INOUT) :: objInst + TYPE(PerformanceData), INTENT(INOUT) :: PerfData REAL(C_FLOAT), INTENT(INOUT) :: avrSWAP(*) ! The swap array, used to pass data to, and receive data from, the DLL controller. INTEGER(C_INT), INTENT(OUT) :: aviFAIL ! A flag used to indicate the success of this DLL call set as follows: 0 if the DLL call was successful, >0 if the DLL call was successful but cMessage should be issued as a warning messsage, <0 if the DLL call was unsuccessful or for any other reason the simulation is to be stopped at this point with cMessage as the error message. @@ -384,16 +487,24 @@ SUBROUTINE SetParameters(avrSWAP, aviFAIL, ErrMsg, size_avcMSG, CntrPar, LocalVa ! Inform users that we are using this user-defined routine: aviFAIL = 1 - ErrMsg = ' '//NEW_LINE('A')// & - 'Running the Delft Research Controller (DRC) '//NEW_LINE('A')// & - 'A wind turbine controller for use in the scientific field '//NEW_LINE('A')// & - 'Written by S.P. Mulders, Jan-Willem van Wingerden '//NEW_LINE('A')// & - 'Delft University of Technology, The Netherlands '//NEW_LINE('A')// & - 'Visit our GitHub-page to contribute to this project: '//NEW_LINE('A')// & - 'https://github.com/TUDelft-DataDrivenControl ' - + ErrMsg = ' '//NEW_LINE('A')// & + '------------------------------------------------------------------------------'//NEW_LINE('A')// & + 'Running a controller implemented through NREL''s ROSCO Toolbox '//NEW_LINE('A')// & + 'A wind turbine controller framework for public use in the scientific field '//NEW_LINE('A')// & + 'Developed in collaboration: National Renewable Energy Laboratory '//NEW_LINE('A')// & + ' Delft University of Technology, The Netherlands '//NEW_LINE('A')// & + 'Primary development by (listed alphabetically): Nikhar J. Abbas '//NEW_LINE('A')// & + ' Sebastiaan P. Mulders '//NEW_LINE('A')// & + ' Jan-Willem van Wingerden '//NEW_LINE('A')// & + 'Visit our GitHub-page to contribute to this project: '//NEW_LINE('A')// & + 'https://github.com/NREL/ROSCO '//NEW_LINE('A')// & + '------------------------------------------------------------------------------' + CALL ReadControlParameterFileSub(CntrPar) - + + IF (CntrPar%WE_Mode > 0) THEN + CALL READCpFile(CntrPar,PerfData) + ENDIF ! Initialize testValue (debugging variable) LocalVar%TestType = 0 @@ -410,9 +521,72 @@ SUBROUTINE SetParameters(avrSWAP, aviFAIL, ErrMsg, size_avcMSG, CntrPar, LocalVa LocalVar%WE_Vw = 10 LocalVar%WE_VwI = LocalVar%WE_Vw - CntrPar%WE_Gamma*LocalVar%RotSpeed + ! Setpoint Smoother initialization to zero + LocalVar%SS_DelOmegaF = 0 + + ! Generator Torque at K omega^2 or rated + IF (LocalVar%GenSpeed > 0.98 * CntrPar%PC_RefSpd) THEN + LocalVar%GenTq = CntrPar%VS_RtTq + ELSE + LocalVar%GenTq = min(CntrPar%VS_RtTq, CntrPar%VS_Rgn2K*LocalVar%GenSpeed*LocalVar%GenSpeed) + ENDIF + LocalVar%VS_LastGenTrq = LocalVar%GenTq + ! Check validity of input parameters: CALL Assert(LocalVar, CntrPar, avrSWAP, aviFAIL, ErrMsg, size_avcMSG) + ENDIF END SUBROUTINE SetParameters + ! ----------------------------------------------------------------------------------- + ! Read all constant control parameters from DISCON.IN parameter file + SUBROUTINE ReadCpFile(CntrPar,PerfData) + USE ROSCO_Types, ONLY : PerformanceData, ControlParameters + + INTEGER(4), PARAMETER :: UnPerfParameters = 89 + TYPE(PerformanceData), INTENT(INOUT) :: PerfData + TYPE(ControlParameters), INTENT(INOUT) :: CntrPar + ! Local variables + INTEGER(4) :: i ! iteration index + OPEN(unit=UnPerfParameters, file=TRIM(CntrPar%PerfFileName), status='old', action='read') ! Should put input file into DISCON.IN + + ! ----------------------- Axis Definitions ------------------------ + READ(UnPerfParameters, *) + READ(UnPerfParameters, *) + READ(UnPerfParameters, *) + READ(UnPerfParameters, *) + ALLOCATE(PerfData%Beta_vec(CntrPar%PerfTableSize(1))) + READ(UnPerfParameters, *) PerfData%Beta_vec + READ(UnPerfParameters, *) + ALLOCATE(PerfData%TSR_vec(CntrPar%PerfTableSize(2))) + READ(UnPerfParameters, *) PerfData%TSR_vec + + ! ----------------------- Read Cp, Ct, Cq, Tables ------------------------ + READ(UnPerfParameters, *) + READ(UnPerfParameters, *) ! Input file should contains wind speed information here - unneeded for now + READ(UnPerfParameters, *) + READ(UnPerfParameters, *) + READ(UnPerfParameters, *) + ALLOCATE(PerfData%Cp_mat(CntrPar%PerfTableSize(2),CntrPar%PerfTableSize(1))) + DO i = 1,CntrPar%PerfTableSize(2) + READ(UnPerfParameters, *) PerfData%Cp_mat(i,:) ! Read Cp table + END DO + READ(UnPerfParameters, *) + READ(UnPerfParameters, *) + READ(UnPerfParameters, *) + READ(UnPerfParameters, *) + ALLOCATE(PerfData%Ct_mat(CntrPar%PerfTableSize(1),CntrPar%PerfTableSize(2))) + DO i = 1,CntrPar%PerfTableSize(2) + READ(UnPerfParameters, *) PerfData%Ct_mat(i,:) ! Read Ct table + END DO + READ(UnPerfParameters, *) + READ(UnPerfParameters, *) + READ(UnPerfParameters, *) + READ(UnPerfParameters, *) + ALLOCATE(PerfData%Cq_mat(CntrPar%PerfTableSize(1),CntrPar%PerfTableSize(2))) + DO i = 1,CntrPar%PerfTableSize(2) + READ(UnPerfParameters, *) PerfData%Ct_mat(i,:) ! Read Cq table + END DO + + END SUBROUTINE ReadCpFile END MODULE ReadSetParameters \ No newline at end of file