From aa888a1fc23ffedc1f8ccde73eff28dcae5dec40 Mon Sep 17 00:00:00 2001 From: dzalkind <65573423+dzalkind@users.noreply.github.com> Date: Fri, 19 Nov 2021 15:47:59 -0700 Subject: [PATCH 001/218] FOCAL Updates (#64) * Update headers * fix bullets * make uppercase * Update turbine.py (#56) * Update turbine.py This add several lines for fixing the problem of repeated maximum values in the performance tables. This will cause the error (' the length of x and y is different.') of 'interpolate.interp1d.' * Add comments and catch when there are multiple optimal pitch angles Co-authored-by: dzalkind * increment version * Update for OpenFAST v3.0.0 * Update for OpenFAST v3.0.0 * Install OF3.0.0 for tests * update for OF v3.0.0 * add publish to pypi on release * Update to ROSCO v2.3.0 * Update Testing (#58) * Update scripts to run on eagle * Update IEA-15MW semi example: use peak shaving w/ ps_percen=0.8 * Add comparison plots to testing scripts * Update submit script for testing * Update for latest eagle runs * Add future to install dependencies * add TMax to self, define tmin in print_results * run tests in CI * generic ROSCO path * default to overwrite * fix path * import platform * separate run_testing * cleanup, specify lite test * don't run testing in after examples, oops. Co-authored-by: nikhar-abbas <40865984+nikhar-abbas@users.noreply.github.com> Co-authored-by: Nikhar Abbas * increment version * Update for OpenFAST v3.0.0 * Install OF3.0.0 for tests * update for OF v3.0.0 * add publish to pypi on release * Update to ROSCO v2.3.0 * Increment Version, OF3.0 (#57) * increment version * Update for OpenFAST v3.0.0 * Install OF3.0.0 for tests * update for OF v3.0.0 * add publish to pypi on release * Update to ROSCO v2.3.0 * increment version * Update for OpenFAST v3.0.0 * Install OF3.0.0 for tests * update for OF v3.0.0 * add publish to pypi on release * Update to ROSCO v2.3.0 * add ROSCO without submodule * move ROSCO source to ROSCO folder * Move cmake-related files to ROSCO * Add back pesky ErrVar * Remove parameters_files * Merge ROSCO and _toolbox gitignore * Fix .gitignore * Remove Examples/DISCON.IN from git * Fix and point example_01 to Tune_Cases/ * Update verbiage around using ofTools vs. weis * Fix and point example_04 to Tune_Cases/ * Clean up example_06 * Clean up example_07 * Only check FlpCornerFreq if using Flp control, fixes example 05 * Make example_04 consistent with others * Let example_05 run independently from 04 * Clean up example_05, wind files * Add schema and update empty tuning yaml inputs, not connected yet * Integrate schema into turbine, controller, and examples * Only check Fl filter parameters if Fl_Mode > 0, fix example_05 * bump version to 2.3 * Compile ROSCO from ROSCO dir * Rename to CI_rosco * Add omega vs. windspeed functionality * Fix tests: 5MW U_pc and 06 example dir * Make _Toolbox vs_minspeed in rotor frame to match ROSCO * Revert ServoDyn change * change rotor speed constraint to be epsilon * rename for clarity * docs major refresh * fix FA_AccF units in debug file * docs that build locally * Deallocate arrays in ROSCO, check in example_05 * Clean up comments * remove gitmodules * furo theme * furo in requirements * move readthedocs config file, remove furo import in conf.py * add docs requirements file * typo * move index out of source folder * trying to get furo to work * import date * fix versions and titles, cleanup readthedocs requirements * typo fix, remove extras * more cleanup * bump version * no furo extension, "hack" to load RT version * proper toctree paths * specify method * add mock modules * fix typos * update python install requirements * running locally * move index to main docs dir again * update to build locally * error during warnings * automated version * cleanup * remove old docs * re-add docs * simplify * fix figure path * try alabaster * remove archived docs * Add omega vs. windspeed functionality * Fix tests: 5MW U_pc and 06 example dir * more detailed sp.optimize settings * run MBC3 in parallel * restructure driver, run initialization doe for tuning * Try new dlclose function * Update example_05 to run simple simulation twice and check result * Revert deallocation stuff * Close discon library after every sim run * Test examples on macOS and windows * Run examples instead of testing on other platforms * Skip examples in windows for now * update paths and yaml load funciton * Skip mac testing of examples * provide default U_pc for single omega/zeta case * allow for float or list-like pc tuning inputs * Change name in setup.py * WE_Vw unit fix * Pass through kp_float, if desired * Minor fixes: schema error and InputReader defaults * cleeanup for improved stability * check for doe_logs as string in load_DOE * major restructure for rsched_driver class * cleanup verbosity * run serial by default * load_parallel as linturb_option * specific IEA15MW yaml for multi omega * remove unused module imports * fix error message types * lin_file as input * add comments on inputs to LinearTurbineModel init method * remove relative file paths * provide OpenFAST linearizations for IEA15MW UMaineSemi * put plotting in specific function * fix WE_lambda units * add self in on a few necessary variables * creaete example 12 for robust scheduling * try a few mbc3 locations for import * allow list-like or numpy arrays for omega_pc and zeta_pc schedules * create and use recorder setup function * Pass Through Kp_float (#57) * Pass through kp_float, if desired * Minor fixes: schema error and InputReader defaults * fix setup_recorder to work for optimization driver too * Allow pass through of Kp_float = 0 * cleanup om problems, update om0 calc * doe levels as input * negative k_float to account for OF conventions * cleanup print statements * variable name cleanup, use calculated k_float * Add defaults to omega_,zeta_ pc and vs, allow to be numbers * use standard tuning k_float as IC * formatting update * update problem setup methods * cleanup add_dv, enable adding design variables after problem is setup * change optimization step size * more setup restructure * update verbosity * use sphinx-rtd-theme * master doc and sphinx rtd theme * index back to root folder * only ignore install folders * remove hidden toctree * furo theme * update paths * convert rt version to string * update sphinx settings * move conf * furo theme * Mostly a docs update (#61) * rename for clarity * docs major refresh * fix FA_AccF units in debug file * docs that build locally * remove gitmodules * furo theme * furo in requirements * move readthedocs config file, remove furo import in conf.py * add docs requirements file * typo * move index out of source folder * trying to get furo to work * import date * fix versions and titles, cleanup readthedocs requirements * typo fix, remove extras * more cleanup * bump version * no furo extension, "hack" to load RT version * proper toctree paths * specify method * add mock modules * fix typos * update python install requirements * running locally * move index to main docs dir again * update to build locally * error during warnings * automated version * cleanup * remove old docs * re-add docs * simplify * fix figure path * try alabaster * remove archived docs * use sphinx-rtd-theme * master doc and sphinx rtd theme * index back to root folder * only ignore install folders * remove hidden toctree * furo theme * update paths * convert rt version to string * update sphinx settings * move conf * furo theme * Pass through Kp_float = 0 (#59) * Pass through kp_float, if desired * Minor fixes: schema error and InputReader defaults * Allow pass through of Kp_float = 0 * Add flp parameters to schema * Change Fl_Mode default to 0 * Add defaults to omega_,zeta_ pc and vs, allow to be numbers * Allow single pitch tuning values in code, default U_pc to 0 * use nac acceleration for floating feedback * Fix TSR saturation for region 2.5operation * Modify system for constant power operation * Only modify pole for constant power above-rated * Remove GenEff from K calc * Update tuning, use constant power * use load_rosco_yaml * constant power * Fix broken tests * Include Fl_Mode=2 for nacelle pitching feedback * Add FOCAL inputs - hpf on floating feedback - lpf on wind speed estimator - associated schema updates * Set notch and check frequencies when Fl_Mode = 1 (fixes bug) * Skip filter step if there's an error * Update IEA-15MW test case DISCON with focal inputs * Allow Fl_Mode = 2 in ROSCO * Pass through lpf frequency * Add FOCAL tuning yaml * Set Cp contour number of levels * Add FOCAL params to various writers * Update/tune focal yaml * Add scripts for running FAST, tuning various parameters and cases * Add notebook for FAST plotting * Set up step case for testing * Change doubles to C_doubles * Define real and integer kinds, assign to all of ROSCO * Add ADJUSTL to DISCON error message * Fix Fl_Mode == 2 * Fix Fl_Mode == 2 again * Call yaw, flap, and debug only if enabled in DISOCN.IN * Make avrSWAP a ReKi and set constant kinds * Add DISCONs for testing - revert this later * Fix DISCON comparison, before DISCON's were overwritten by model * Rename DEBUG2.dbg to RootName.dbg2 * Update TestCase DISCONs to new input file * Add API change page in docs * Add link to API change on main page * Fix table headers * Fix title underlines * Fix tables again * Fix tables again * Fix version numbering in docs * Simplify FAST_directory in run_FAST * Versioning (#65) * use sphinx-rtd-theme * master doc and sphinx rtd theme * index back to root folder * only ignore install folders * remove hidden toctree * furo theme * update paths * convert rt version to string * update sphinx settings * move conf * furo theme * remove git versioning from cmake * use hard coded rosco_version * update intro write method * set nowrap for intel compilers * Add transfer of error message and clear message after each call * update install instructions * Catch nans in ROSCO at end of WSE * fix conda install typo * cleanup docs * Rename DEBUG2.dbg to RootName.dbg2 * Fix Fl_Mode == 2 * Fix Fl_Mode == 2 again * Allow Fl_Mode = 2 in ROSCO * Set notch and check frequencies when Fl_Mode = 1 (fixes bug) * Update FOCAL tuning yaml * Update TSR * Clean up and doc fix * Remove publish to pypi * Define all constant inputs to functions with kind typing * Generate Test_Case/ inputs automatically * Fix IEA15 DISCON path * Fix example 11 paths * Auto-generate tuning input yaml using schema * Add toolbox_input to doc index * Add toctree * Re-name title of toolbox_input Co-authored-by: Nikhar Abbas Co-authored-by: Xianping Du <38188001+Seager1989@users.noreply.github.com> Co-authored-by: nikhar-abbas <40865984+nikhar-abbas@users.noreply.github.com> --- .github/workflows/CI_rosco-pytools.yml | 3 +- .github/workflows/publish_to_pypi.yml | 27 - Examples/example_11.py | 12 +- Examples/example_12.py | 5 +- ROSCO/src/Constants.f90 | 22 +- ROSCO/src/ControllerBlocks.f90 | 75 +- ROSCO/src/Controllers.f90 | 63 +- ROSCO/src/DISCON.F90 | 28 +- ROSCO/src/Filters.f90 | 144 ++-- ROSCO/src/Functions.f90 | 222 +++--- ROSCO/src/ROSCO_Types.f90 | 363 ++++----- ROSCO/src/ReadSetParameters.f90 | 90 ++- ROSCO_testing/ROSCO_testing.py | 6 +- ROSCO_toolbox/controller.py | 19 +- ROSCO_toolbox/inputs/.gitignore | 2 + ROSCO_toolbox/inputs/schema2rst.py | 34 +- ROSCO_toolbox/inputs/toolbox_schema.yaml | 78 +- ROSCO_toolbox/linear/robust_scheduling.py | 3 - ROSCO_toolbox/ofTools/case_gen/CaseLibrary.py | 508 ++++++++++++ ROSCO_toolbox/ofTools/case_gen/HH_WindFile.py | 133 ++++ ROSCO_toolbox/ofTools/case_gen/run_FAST.py | 194 +++++ ROSCO_toolbox/ofTools/fast_io/FAST_writer.py | 8 +- .../ofTools/fast_io/output_processing.py | 1 + ROSCO_toolbox/ofTools/fast_io/plot_FAST.ipynb | 729 ++++++++++++++++++ ROSCO_toolbox/turbine.py | 2 +- ROSCO_toolbox/utilities.py | 18 +- Test_Cases/5MW_Land_Simulink/DISCON.IN | 119 --- .../NRELOffshrBsline5MW_Onshore_ServoDyn.dat | 2 +- Test_Cases/BAR_10/BAR_10_DISCON.IN | 76 +- ...AR_10_Cp_Ct_Cq.txt => Cp_Ct_Cq.BAR_10.txt} | 0 .../{ServoData => }/DISCON-UMaineSemi.IN | 30 +- .../IEA-15-240-RWT-UMaineSemi_ServoDyn.dat | 2 +- Test_Cases/NREL-5MW/DISCON.IN | 74 +- Test_Cases/update_discons.py | 54 ++ Tune_Cases/BAR.yaml | 5 +- Tune_Cases/Cp_Ct_Cq.DTU10MW.txt | 165 ---- Tune_Cases/Cp_Ct_Cq.IEA15MW.txt | 165 ---- Tune_Cases/Cp_Ct_Cq.NREL5MW.txt | 165 ---- Tune_Cases/DISCON.IN | 119 --- Tune_Cases/DTU10MW.yaml | 49 -- Tune_Cases/IEA15MW.yaml | 6 +- .../IEA15MW_FOCAL.yaml | 41 +- Tune_Cases/IEA15MW_MultiOmega.yaml | 1 + Tune_Cases/NREL5MW.yaml | 2 +- Tune_Cases/README.md | 52 +- docs/index.rst | 4 +- docs/source/api_change.rst | 26 + docs/source/figures/ROSCO_toolbox.png | Bin 0 -> 14071 bytes docs/source/rosco.rst | 10 +- docs/source/rosco_toolbox.rst | 230 +----- docs/source/toolbox_input.rst | 437 +++++++++++ 51 files changed, 2875 insertions(+), 1748 deletions(-) delete mode 100644 .github/workflows/publish_to_pypi.yml create mode 100644 ROSCO_toolbox/inputs/.gitignore create mode 100644 ROSCO_toolbox/ofTools/case_gen/CaseLibrary.py create mode 100644 ROSCO_toolbox/ofTools/case_gen/HH_WindFile.py create mode 100644 ROSCO_toolbox/ofTools/case_gen/run_FAST.py create mode 100644 ROSCO_toolbox/ofTools/fast_io/plot_FAST.ipynb delete mode 100644 Test_Cases/5MW_Land_Simulink/DISCON.IN rename Test_Cases/BAR_10/{BAR_10_Cp_Ct_Cq.txt => Cp_Ct_Cq.BAR_10.txt} (100%) rename Test_Cases/IEA-15-240-RWT-UMaineSemi/{ServoData => }/DISCON-UMaineSemi.IN (83%) create mode 100644 Test_Cases/update_discons.py delete mode 100644 Tune_Cases/Cp_Ct_Cq.DTU10MW.txt delete mode 100644 Tune_Cases/Cp_Ct_Cq.IEA15MW.txt delete mode 100644 Tune_Cases/Cp_Ct_Cq.NREL5MW.txt delete mode 100644 Tune_Cases/DISCON.IN delete mode 100644 Tune_Cases/DTU10MW.yaml rename Test_Cases/IEA-15-240-RWT-UMaineSemi/ServoData/IEA15MW-UMaineSemi.yaml => Tune_Cases/IEA15MW_FOCAL.yaml (60%) create mode 100644 docs/source/api_change.rst create mode 100644 docs/source/figures/ROSCO_toolbox.png create mode 100644 docs/source/toolbox_input.rst diff --git a/.github/workflows/CI_rosco-pytools.yml b/.github/workflows/CI_rosco-pytools.yml index 8c9c10c8..77a029ab 100644 --- a/.github/workflows/CI_rosco-pytools.yml +++ b/.github/workflows/CI_rosco-pytools.yml @@ -48,7 +48,6 @@ jobs: run: | conda install compilers - # Install ROSCO toolbox - name: Install ROSCO toolbox run: | @@ -160,4 +159,4 @@ jobs: - name: Run testing run: | cd ROSCO_testing - python ROSCO_testing.py \ No newline at end of file + python ROSCO_testing.py diff --git a/.github/workflows/publish_to_pypi.yml b/.github/workflows/publish_to_pypi.yml deleted file mode 100644 index 096085a1..00000000 --- a/.github/workflows/publish_to_pypi.yml +++ /dev/null @@ -1,27 +0,0 @@ -name: Upload to PyPi - -on: - release: - types: [released] - -jobs: - deploy: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - - name: Set up Python 3.8 - uses: actions/setup-python@v2 - with: - python-version: 3.8 - - name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install setuptools wheel twine - - name: Build and publish - if: startsWith(github.ref, 'refs/tags') - env: - TWINE_USERNAME: __token__ - TWINE_PASSWORD: ${{ secrets.PYPI_API_TOKEN }} - run: | - python setup.py sdist bdist_wheel - twine upload dist/* \ No newline at end of file diff --git a/Examples/example_11.py b/Examples/example_11.py index a9ea5b12..f8a9b199 100644 --- a/Examples/example_11.py +++ b/Examples/example_11.py @@ -40,10 +40,14 @@ controller = ROSCO_controller.Controller(controller_params) # Load turbine data from OpenFAST and rotor performance text file -turbine.load_from_fast(path_params['FAST_InputFile'], \ - os.path.join(this_dir,path_params['FAST_directory']), \ - dev_branch=True,rot_source='txt',\ - txt_filename=os.path.join(this_dir,path_params['FAST_directory'],path_params['rotor_performance_filename'])) +tune_dir = os.path.join(this_dir,'../Tune_Cases') +turbine.load_from_fast( + path_params['FAST_InputFile'], + os.path.join(this_dir,path_params['FAST_directory']), + dev_branch=True, + rot_source='txt', + txt_filename=os.path.join(tune_dir,path_params['rotor_performance_filename']) + ) # Tune controller controller.tune_controller(turbine) diff --git a/Examples/example_12.py b/Examples/example_12.py index f6468947..b02bc976 100644 --- a/Examples/example_12.py +++ b/Examples/example_12.py @@ -21,7 +21,6 @@ from ROSCO_toolbox import turbine as ROSCO_turbine from ROSCO_toolbox import controller as ROSCO_controller - def run_example(): # Shorthand directories this_dir = os.path.dirname(os.path.abspath(__file__)) @@ -114,10 +113,10 @@ def run_example(): ax[4].set_ylabel('Integral Gain') ax[4].grid() - if True: + + if False: plt.show() else: plt.savefig(os.path.join(example_out_dir, '12_RobustSched.png')) - if __name__ == '__main__': run_example() diff --git a/ROSCO/src/Constants.f90 b/ROSCO/src/Constants.f90 index 9feed5ea..2bce3480 100644 --- a/ROSCO/src/Constants.f90 +++ b/ROSCO/src/Constants.f90 @@ -9,13 +9,21 @@ ! CONDITIONS OF ANY KIND, either express or implied. See the License for the ! specific language governing permissions and limitations under the License. + + MODULE Constants + USE, INTRINSIC :: ISO_C_Binding + Character(*), PARAMETER :: rosco_version = 'v2.4.1' ! ROSCO version - REAL(8), PARAMETER :: RPS2RPM = 9.5492966 ! Factor to convert radians per second to revolutions per minute. - REAL(8), PARAMETER :: R2D = 57.295780 ! Factor to convert radians to degrees. - REAL(8), PARAMETER :: D2R = 0.0175 ! Factor to convert degrees to radians. - REAL(8), 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 - CHARACTER(*), PARAMETER :: NewLine = ACHAR(10) ! The delimiter for New Lines [ Windows is CHAR(13)//CHAR(10); MAC is CHAR(13); Unix is CHAR(10) {CHAR(13)=\r is a line feed, CHAR(10)=\n is a new line}] + INTEGER, PARAMETER :: DbKi = C_DOUBLE !< Default kind for double floating-point numbers + INTEGER, PARAMETER :: ReKi = C_FLOAT !< Default kind for single floating-point numbers + INTEGER, PARAMETER :: IntKi = C_INT !< Default kind for integer numbers + + REAL(DbKi), PARAMETER :: RPS2RPM = 9.5492966 ! Factor to convert radians per second to revolutions per minute. + REAL(DbKi), PARAMETER :: R2D = 57.295780 ! Factor to convert radians to degrees. + REAL(DbKi), PARAMETER :: D2R = 0.0175 ! Factor to convert degrees to radians. + REAL(DbKi), PARAMETER :: PI = 3.14159265359 ! Mathematical constant pi + INTEGER(IntKi), PARAMETER :: NP_1 = 1 ! First rotational harmonic + INTEGER(IntKi), PARAMETER :: NP_2 = 2 ! Second rotational harmonic + CHARACTER(*), PARAMETER :: NewLine = ACHAR(10) ! The delimiter for New Lines [ Windows is CHAR(13)//CHAR(10); MAC is CHAR(13); Unix is CHAR(10) {CHAR(13)=\r is a line feed, CHAR(10)=\n is a new line}] END MODULE Constants \ No newline at end of file diff --git a/ROSCO/src/ControllerBlocks.f90 b/ROSCO/src/ControllerBlocks.f90 index 4c2968b0..6c76e2e1 100644 --- a/ROSCO/src/ControllerBlocks.f90 +++ b/ROSCO/src/ControllerBlocks.f90 @@ -32,9 +32,9 @@ SUBROUTINE ComputeVariablesSetpoints(CntrPar, LocalVar, objInst) TYPE(LocalVariables), INTENT(INOUT) :: LocalVar TYPE(ObjectInstances), INTENT(INOUT) :: objInst - REAL(8) :: VS_RefSpd ! Referece speed for variable speed torque controller, [rad/s] - REAL(8) :: PC_RefSpd ! Referece speed for pitch controller, [rad/s] - REAL(8) :: Omega_op ! Optimal TSR-tracking generator speed, [rad/s] + REAL(DbKi) :: VS_RefSpd ! Referece speed for variable speed torque controller, [rad/s] + REAL(DbKi) :: PC_RefSpd ! Referece speed for pitch controller, [rad/s] + REAL(DbKi) :: Omega_op ! Optimal TSR-tracking generator speed, [rad/s] ! ----- Calculate yaw misalignment error ----- LocalVar%Y_MErr = LocalVar%Y_M + CntrPar%Y_MErrSet ! Yaw-alignment error @@ -172,34 +172,34 @@ SUBROUTINE WindSpeedEstimator(LocalVar, CntrPar, objInst, PerfData, DebugVar, Er TYPE(ErrorVariables), INTENT(INOUT) :: ErrVar ! Allocate Variables - REAL(8) :: F_WECornerFreq ! Corner frequency (-3dB point) for first order low pass filter for measured hub height wind speed [Hz] + REAL(DbKi) :: 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(8), SAVE :: om_r ! Estimated rotor speed [rad/s] - REAL(8), SAVE :: v_t ! Estimated wind speed, turbulent component [m/s] - REAL(8), SAVE :: v_m ! Estimated wind speed, 10-minute averaged [m/s] - REAL(8), SAVE :: v_h ! Combined estimated wind speed [m/s] - REAL(8) :: L ! Turbulent length scale parameter [m] - REAL(8) :: Ti ! Turbulent intensity, [-] - + REAL(DbKi), SAVE :: om_r ! Estimated rotor speed [rad/s] + REAL(DbKi), SAVE :: v_t ! Estimated wind speed, turbulent component [m/s] + REAL(DbKi), SAVE :: v_m ! Estimated wind speed, 10-minute averaged [m/s] + REAL(DbKi), SAVE :: v_h ! Combined estimated wind speed [m/s] + REAL(DbKi) :: L ! Turbulent length scale parameter [m] + REAL(DbKi) :: Ti ! Turbulent intensity, [-] + ! REAL(DbKi), DIMENSION(3,3) :: I ! - operating conditions - REAL(8) :: A_op ! Estimated operational system pole [UNITS!] - REAL(8) :: Cp_op ! Estimated operational Cp [-] - REAL(8) :: Tau_r ! Estimated rotor torque [Nm] - REAL(8) :: a ! wind variance - REAL(8) :: lambda ! tip-speed-ratio [rad] - REAL(8) :: RotSpeed ! Rotor Speed [rad], locally + REAL(DbKi) :: A_op ! Estimated operational system pole [UNITS!] + REAL(DbKi) :: Cp_op ! Estimated operational Cp [-] + REAL(DbKi) :: Tau_r ! Estimated rotor torque [Nm] + REAL(DbKi) :: a ! wind variance + REAL(DbKi) :: lambda ! tip-speed-ratio [rad] + REAL(DbKi) :: RotSpeed ! Rotor Speed [rad], locally ! - Covariance matrices - REAL(8), DIMENSION(3,3) :: F ! First order system jacobian - REAL(8), DIMENSION(3,3), SAVE :: P ! Covariance estiamte - REAL(8), DIMENSION(1,3) :: H ! Output equation jacobian - REAL(8), DIMENSION(3,1), SAVE :: xh ! Estimated state matrix - REAL(8), DIMENSION(3,1) :: dxh ! Estimated state matrix deviation from previous timestep - REAL(8), DIMENSION(3,3) :: Q ! Process noise covariance matrix - REAL(8), DIMENSION(1,1) :: S ! Innovation covariance - REAL(8), DIMENSION(3,1), SAVE :: K ! Kalman gain matrix - REAL(8) :: R_m ! Measurement noise covariance [(rad/s)^2] + REAL(DbKi), DIMENSION(3,3) :: F ! First order system jacobian + REAL(DbKi), DIMENSION(3,3), SAVE :: P ! Covariance estiamte + REAL(DbKi), DIMENSION(1,3) :: H ! Output equation jacobian + REAL(DbKi), DIMENSION(3,1), SAVE :: xh ! Estimated state matrix + REAL(DbKi), DIMENSION(3,1) :: dxh ! Estimated state matrix deviation from previous timestep + REAL(DbKi), DIMENSION(3,3) :: Q ! Process noise covariance matrix + REAL(DbKi), DIMENSION(1,1) :: S ! Innovation covariance + REAL(DbKi), DIMENSION(3,1), SAVE :: K ! Kalman gain matrix + REAL(DbKi) :: R_m ! Measurement noise covariance [(rad/s)^2] CHARACTER(*), PARAMETER :: RoutineName = 'WindSpeedEstimator' @@ -231,11 +231,11 @@ SUBROUTINE WindSpeedEstimator(LocalVar, CntrPar, objInst, PerfData, DebugVar, Er 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 = max(LocalVar%RotSpeedF, EPSILON(1.0)) + om_r = max(LocalVar%RotSpeedF, EPSILON(1.0_DbKi)) v_t = 0.0 v_m = LocalVar%HorWindV v_h = LocalVar%HorWindV - lambda = max(LocalVar%RotSpeed, EPSILON(1.0)) * CntrPar%WE_BladeRadius/v_h + lambda = max(LocalVar%RotSpeed, EPSILON(1.0_DbKi)) * CntrPar%WE_BladeRadius/v_h 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/)) @@ -246,7 +246,7 @@ SUBROUTINE WindSpeedEstimator(LocalVar, CntrPar, objInst, PerfData, DebugVar, Er A_op = interp1d(CntrPar%WE_FOPoles_v,CntrPar%WE_FOPoles,v_h,ErrVar) ! TEST INTERP2D - lambda = max(LocalVar%RotSpeed, EPSILON(1.0)) * CntrPar%WE_BladeRadius/v_h + lambda = max(LocalVar%RotSpeed, EPSILON(1.0_DbKi)) * CntrPar%WE_BladeRadius/v_h Cp_op = interp2d(PerfData%Beta_vec,PerfData%TSR_vec,PerfData%Cp_mat, LocalVar%BlPitch(1)*R2D, lambda , ErrVar) Cp_op = max(0.0,Cp_op) @@ -280,7 +280,7 @@ SUBROUTINE WindSpeedEstimator(LocalVar, CntrPar, objInst, PerfData, DebugVar, Er ! Wind Speed Estimate - om_r = max(xh(1,1), EPSILON(1.0)) + om_r = max(xh(1,1), EPSILON(1.0_DbKi)) v_t = xh(2,1) v_m = xh(3,1) v_h = v_t + v_m @@ -301,11 +301,8 @@ SUBROUTINE WindSpeedEstimator(LocalVar, CntrPar, objInst, PerfData, DebugVar, Er DebugVar%WE_Vt = v_t DebugVar%WE_lambda = lambda ELSE - ! Define Variables - F_WECornerFreq = 0.20944 ! 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) + LocalVar%WE_Vw = LPFilter(LocalVar%HorWindV, LocalVar%DT, CntrPar%F_WECornerFreq, LocalVar%iStatus, .FALSE., objInst%instLPF) ENDIF ! Add RoutineName to error message @@ -327,7 +324,7 @@ SUBROUTINE SetpointSmoother(LocalVar, CntrPar, objInst) TYPE(LocalVariables), INTENT(INOUT) :: LocalVar TYPE(ObjectInstances), INTENT(INOUT) :: objInst ! Allocate Variables - REAL(8) :: DelOmega ! Reference generator speed shift, rad/s. + REAL(DbKi) :: DelOmega ! Reference generator speed shift, rad/s. ! ------ Setpoint Smoothing ------ IF ( CntrPar%SS_Mode == 1) THEN @@ -342,7 +339,7 @@ SUBROUTINE SetpointSmoother(LocalVar, CntrPar, objInst) END SUBROUTINE SetpointSmoother !------------------------------------------------------------------------------------------------------------------------------- - REAL FUNCTION PitchSaturation(LocalVar, CntrPar, objInst, DebugVar, ErrVar) + REAL(DbKi) FUNCTION PitchSaturation(LocalVar, CntrPar, objInst, DebugVar, ErrVar) ! PitchSaturation defines a minimum blade pitch angle based on a lookup table provided by DISCON.IN ! SS_Mode = 0, No setpoint smoothing ! SS_Mode = 1, Implement pitch saturation @@ -367,7 +364,7 @@ REAL FUNCTION PitchSaturation(LocalVar, CntrPar, objInst, DebugVar, ErrVar) END FUNCTION PitchSaturation !------------------------------------------------------------------------------------------------------------------------------- - REAL FUNCTION Shutdown(LocalVar, CntrPar, objInst) + REAL(DbKi) 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 @@ -379,7 +376,7 @@ REAL FUNCTION Shutdown(LocalVar, CntrPar, objInst) TYPE(ObjectInstances), INTENT(INOUT) :: objInst ! Local Variables - REAL(8) :: SD_BlPitchF + REAL(DbKi) :: SD_BlPitchF ! Initialize Shutdown Varible IF (LocalVar%iStatus == 0) THEN LocalVar%SD = .FALSE. @@ -401,7 +398,7 @@ REAL FUNCTION Shutdown(LocalVar, CntrPar, objInst) ! 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 + IF (MODULO(LocalVar%Time, 10.0_DbKi) == 0) THEN print *, ' ** SHUTDOWN MODE **' ENDIF ELSE diff --git a/ROSCO/src/Controllers.f90 b/ROSCO/src/Controllers.f90 index 93f2d215..8dc83dc8 100644 --- a/ROSCO/src/Controllers.f90 +++ b/ROSCO/src/Controllers.f90 @@ -30,7 +30,7 @@ SUBROUTINE PitchControl(avrSWAP, CntrPar, LocalVar, objInst, DebugVar, ErrVar) USE ROSCO_Types, ONLY : ControlParameters, LocalVariables, ObjectInstances, DebugVariables, ErrorVariables ! Inputs - REAL(C_FLOAT), INTENT(INOUT) :: avrSWAP(*) ! The swap array, used to pass data to, and receive data from the DLL controller. + REAL(ReKi), INTENT(INOUT) :: avrSWAP(*) ! The swap array, used to pass data to, and receive data from the DLL controller. TYPE(ControlParameters), INTENT(INOUT) :: CntrPar TYPE(LocalVariables), INTENT(INOUT) :: LocalVar TYPE(ObjectInstances), INTENT(INOUT) :: objInst @@ -38,8 +38,8 @@ SUBROUTINE PitchControl(avrSWAP, CntrPar, LocalVar, objInst, DebugVar, ErrVar) TYPE(ErrorVariables), INTENT(INOUT) :: ErrVar ! Allocate Variables: - INTEGER(4) :: K ! Index used for looping through blades. - REAL(8), Save :: PitComT_Last + INTEGER(IntKi) :: K ! Index used for looping through blades. + REAL(DbKi), Save :: PitComT_Last CHARACTER(*), PARAMETER :: RoutineName = 'PitchControl' @@ -136,7 +136,7 @@ SUBROUTINE VariableSpeedControl(avrSWAP, CntrPar, LocalVar, objInst) ! VS_State = 6, Tip-Speed-Ratio tracking PI controller USE ROSCO_Types, ONLY : ControlParameters, LocalVariables, ObjectInstances ! Inputs - REAL(C_FLOAT), INTENT(INOUT) :: avrSWAP(*) ! The swap array, used to pass data to, and receive data from, the DLL controller. + REAL(ReKi), INTENT(INOUT) :: avrSWAP(*) ! The swap array, used to pass data to, and receive data from, the DLL controller. TYPE(ControlParameters), INTENT(INOUT) :: CntrPar TYPE(LocalVariables), INTENT(INOUT) :: LocalVar TYPE(ObjectInstances), INTENT(INOUT) :: objInst @@ -197,7 +197,7 @@ SUBROUTINE VariableSpeedControl(avrSWAP, CntrPar, LocalVar, objInst) LocalVar%VS_LastGenPwr = LocalVar%VS_GenPwr ! Set the command generator torque (See Appendix A of Bladed User's Guide): - avrSWAP(47) = MAX(0.0, LocalVar%VS_LastGenTrq) ! Demanded generator torque, prevent negatives. + avrSWAP(47) = MAX(0.0_DbKi, LocalVar%VS_LastGenTrq) ! Demanded generator torque, prevent negatives. END SUBROUTINE VariableSpeedControl !------------------------------------------------------------------------------------------------------------------------------- SUBROUTINE YawRateControl(avrSWAP, CntrPar, LocalVar, objInst) @@ -207,7 +207,7 @@ SUBROUTINE YawRateControl(avrSWAP, CntrPar, LocalVar, objInst) ! 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. + REAL(ReKi), INTENT(INOUT) :: avrSWAP(*) ! The swap array, used to pass data to, and receive data from, the DLL controller. TYPE(ControlParameters), INTENT(INOUT) :: CntrPar TYPE(LocalVariables), INTENT(INOUT) :: LocalVar TYPE(ObjectInstances), INTENT(INOUT) :: objInst @@ -250,14 +250,15 @@ SUBROUTINE IPC(CntrPar, LocalVar, objInst) TYPE(ObjectInstances), INTENT(INOUT) :: objInst ! Local variables - REAL(8) :: PitComIPC(3), PitComIPCF(3), PitComIPC_1P(3), PitComIPC_2P(3) - INTEGER(4) :: K ! Integer used to loop through turbine blades - REAL(8) :: axisTilt_1P, axisYaw_1P, axisYawF_1P ! Direct axis and quadrature axis outputted by Coleman transform, 1P - REAL(8), SAVE :: IntAxisTilt_1P, IntAxisYaw_1P ! Integral of the direct axis and quadrature axis, 1P - REAL(8) :: axisTilt_2P, axisYaw_2P, axisYawF_2P ! Direct axis and quadrature axis outputted by Coleman transform, 1P - REAL(8), SAVE :: IntAxisTilt_2P, IntAxisYaw_2P ! Integral of the direct axis and quadrature axis, 1P - REAL(8) :: IntAxisYawIPC_1P ! IPC contribution with yaw-by-IPC component - REAL(8) :: Y_MErrF, Y_MErrF_IPC ! Unfiltered and filtered yaw alignment error [rad] + REAL(DbKi) :: PitComIPC(3), PitComIPCF(3), PitComIPC_1P(3), PitComIPC_2P(3) + INTEGER(IntKi) :: K ! Integer used to loop through turbine blades + REAL(DbKi) :: axisTilt_1P, axisYaw_1P, axisYawF_1P ! Direct axis and quadrature axis outputted by Coleman transform, 1P + REAL(DbKi), SAVE :: IntAxisTilt_1P, IntAxisYaw_1P ! Integral of the direct axis and quadrature axis, 1P + REAL(DbKi) :: axisTilt_2P, axisYaw_2P, axisYawF_2P ! Direct axis and quadrature axis outputted by Coleman transform, 1P + REAL(DbKi), SAVE :: IntAxisTilt_2P, IntAxisYaw_2P ! Integral of the direct axis and quadrature axis, 1P + REAL(DbKi) :: IntAxisYawIPC_1P ! IPC contribution with yaw-by-IPC component + REAL(DbKi) :: Y_MErrF, Y_MErrF_IPC ! Unfiltered and filtered yaw alignment error [rad] + ! Body ! Initialization @@ -276,7 +277,7 @@ SUBROUTINE IPC(CntrPar, LocalVar, objInst) ! High-pass filter the MBC yaw component and filter yaw alignment error, and compute the yaw-by-IPC contribution IF (CntrPar%Y_ControlMode == 2) THEN Y_MErrF = SecLPFilter(LocalVar%Y_MErr, LocalVar%DT, CntrPar%Y_IPC_omegaLP, CntrPar%Y_IPC_zetaLP, LocalVar%iStatus, .FALSE., objInst%instSecLPF) - Y_MErrF_IPC = PIController(Y_MErrF, CntrPar%Y_IPC_KP(1), CntrPar%Y_IPC_KI(1), -CntrPar%Y_IPC_IntSat, CntrPar%Y_IPC_IntSat, LocalVar%DT, 0.0, .FALSE., objInst%instPI) + Y_MErrF_IPC = PIController(Y_MErrF, CntrPar%Y_IPC_KP(1), CntrPar%Y_IPC_KI(1), -CntrPar%Y_IPC_IntSat, CntrPar%Y_IPC_IntSat, LocalVar%DT, 0.0_DbKi, .FALSE., objInst%instPI) ELSE axisYawF_1P = axisYaw_1P Y_MErrF = 0.0 @@ -331,14 +332,14 @@ SUBROUTINE ForeAftDamping(CntrPar, LocalVar, objInst) USE ROSCO_Types, ONLY : ControlParameters, LocalVariables, ObjectInstances ! Local variables - INTEGER(4) :: K ! Integer used to loop through turbine blades + INTEGER(IntKi) :: K ! Integer used to loop through turbine blades TYPE(ControlParameters), INTENT(INOUT) :: CntrPar TYPE(LocalVariables), INTENT(INOUT) :: LocalVar TYPE(ObjectInstances), INTENT(INOUT) :: objInst ! Body - LocalVar%FA_AccHPFI = PIController(LocalVar%FA_AccHPF, 0.0, CntrPar%FA_KI, -CntrPar%FA_IntSat, CntrPar%FA_IntSat, LocalVar%DT, 0.0, .FALSE., objInst%instPI) + LocalVar%FA_AccHPFI = PIController(LocalVar%FA_AccHPF, 0.0_DbKi, CntrPar%FA_KI, -CntrPar%FA_IntSat, CntrPar%FA_IntSat, LocalVar%DT, 0.0_DbKi, .FALSE., objInst%instPI) ! Store the fore-aft pitch contribution to LocalVar data type DO K = 1,LocalVar%NumBl @@ -347,7 +348,7 @@ SUBROUTINE ForeAftDamping(CntrPar, LocalVar, objInst) END SUBROUTINE ForeAftDamping !------------------------------------------------------------------------------------------------------------------------------- - REAL FUNCTION FloatingFeedback(LocalVar, CntrPar, objInst) + REAL(DbKi) FUNCTION FloatingFeedback(LocalVar, CntrPar, objInst) ! FloatingFeedback defines a minimum blade pitch angle based on a lookup table provided by DISON.IN ! Fl_Mode = 0, No feedback ! Fl_Mode = 1, Proportional feedback of nacelle velocity (translational) @@ -359,16 +360,16 @@ REAL FUNCTION FloatingFeedback(LocalVar, CntrPar, objInst) TYPE(LocalVariables), INTENT(IN) :: LocalVar TYPE(ObjectInstances), INTENT(INOUT) :: objInst ! Allocate Variables - REAL(8) :: FA_vel ! Tower fore-aft velocity [m/s] - REAL(8) :: NacIMU_FA_vel ! Tower fore-aft pitching velocity [rad/s] + REAL(DbKi) :: FA_vel ! Tower fore-aft velocity [m/s] + REAL(DbKi) :: NacIMU_FA_vel ! Tower fore-aft pitching velocity [rad/s] ! Calculate floating contribution to pitch command - FA_vel = PIController(LocalVar%FA_AccF, 0.0, 1.0, -100.0 , 100.0 ,LocalVar%DT, 0.0, .FALSE., objInst%instPI) ! NJA: should never reach saturation limits.... - NacIMU_FA_vel = PIController(LocalVar%NacIMU_FA_AccF, 0.0, 1.0, -100.0 , 100.0 ,LocalVar%DT, 0.0, .FALSE., objInst%instPI) ! NJA: should never reach saturation limits.... + FA_vel = PIController(LocalVar%FA_AccF, 0.0_DbKi, 1.0_DbKi, -100.0_DbKi , 100.0_DbKi ,LocalVar%DT, 0.0_DbKi, .FALSE., objInst%instPI) ! NJA: should never reach saturation limits.... + NacIMU_FA_vel = PIController(LocalVar%NacIMU_FA_AccF, 0.0_DbKi, 1.0_DbKi, -100.0_DbKi , 100.0_DbKi ,LocalVar%DT, 0.0_DbKi, .FALSE., objInst%instPI) ! NJA: should never reach saturation limits.... if (CntrPar%Fl_Mode == 1) THEN - FloatingFeedback = (0.0 - FA_vel) * CntrPar%Fl_Kp !* LocalVar%PC_KP/maxval(CntrPar%PC_GS_KP) + FloatingFeedback = (0.0_DbKi - FA_vel) * CntrPar%Fl_Kp !* LocalVar%PC_KP/maxval(CntrPar%PC_GS_KP) ELSEIF (CntrPar%Fl_Mode == 2) THEN - FloatingFeedback = (0.0 - NacIMU_FA_vel) * CntrPar%Fl_Kp !* LocalVar%PC_KP/maxval(CntrPar%PC_GS_KP) + FloatingFeedback = (0.0_DbKi - NacIMU_FA_vel) * CntrPar%Fl_Kp !* LocalVar%PC_KP/maxval(CntrPar%PC_GS_KP) END IF END FUNCTION FloatingFeedback @@ -380,17 +381,17 @@ SUBROUTINE FlapControl(avrSWAP, CntrPar, LocalVar, objInst) ! 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. + REAL(ReKi), INTENT(INOUT) :: avrSWAP(*) ! The swap array, used to pass data to, and receive data from, the DLL controller. TYPE(ControlParameters), INTENT(INOUT) :: CntrPar TYPE(LocalVariables), INTENT(INOUT) :: LocalVar TYPE(ObjectInstances), INTENT(INOUT) :: objInst ! Internal Variables - Integer(4) :: K - REAL(8) :: RootMOOP_F(3) - REAL(8) :: RootMyb_Vel(3) - REAL(8), SAVE :: RootMyb_Last(3) - REAL(8) :: RootMyb_VelErr(3) + INTEGER(IntKi) :: K + REAL(DbKi) :: rootMOOP_F(3) + REAL(DbKi) :: RootMyb_Vel(3) + REAL(DbKi), SAVE :: RootMyb_Last(3) + REAL(DbKi) :: RootMyb_VelErr(3) ! Flap control IF (CntrPar%Flp_Mode >= 1) THEN @@ -428,7 +429,7 @@ SUBROUTINE FlapControl(avrSWAP, CntrPar, LocalVar, objInst) RootMyb_VelErr(K) = 0 - RootMyb_Vel(K) ! Find flap angle command - includes an integral term to encourage zero flap angle - LocalVar%Flp_Angle(K) = PIIController(RootMyb_VelErr(K), 0 - LocalVar%Flp_Angle(K), CntrPar%Flp_Kp, CntrPar%Flp_Ki, 0.05, -CntrPar%Flp_MaxPit , CntrPar%Flp_MaxPit , LocalVar%DT, 0.0, .FALSE., objInst%instPI) + LocalVar%Flp_Angle(K) = PIIController(RootMyb_VelErr(K), 0 - LocalVar%Flp_Angle(K), CntrPar%Flp_Kp, CntrPar%Flp_Ki, REAL(0.05,DbKi), -CntrPar%Flp_MaxPit , CntrPar%Flp_MaxPit , LocalVar%DT, 0.0, .FALSE., objInst%instPI) ! Saturation Limits LocalVar%Flp_Angle(K) = saturate(LocalVar%Flp_Angle(K), -CntrPar%Flp_MaxPit, CntrPar%Flp_MaxPit) diff --git a/ROSCO/src/DISCON.F90 b/ROSCO/src/DISCON.F90 index 2aedf05b..38d8aa1b 100644 --- a/ROSCO/src/DISCON.F90 +++ b/ROSCO/src/DISCON.F90 @@ -38,8 +38,8 @@ SUBROUTINE DISCON(avrSWAP, aviFAIL, accINFILE, avcOUTNAME, avcMSG) BIND (C, NAME !------------------------------------------------------------------------------------------------------------------------------ ! Passed Variables: -!REAL(C_FLOAT), INTENT(IN) :: from_SC(*) ! DATA from the super controller -!REAL(C_FLOAT), INTENT(INOUT) :: to_SC(*) ! DATA to the super controller +!REAL(ReKi), INTENT(IN) :: from_SC(*) ! DATA from the super controller +!REAL(ReKi), INTENT(INOUT) :: to_SC(*) ! DATA to the super controller 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(INOUT) :: 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. @@ -69,7 +69,7 @@ SUBROUTINE DISCON(avrSWAP, aviFAIL, accINFILE, avcOUTNAME, avcMSG) BIND (C, NAME CALL SetParameters(avrSWAP, accINFILE, SIZE(avcMSG), CntrPar, LocalVar, objInst, PerfData, ErrVar) ! Filter signals -CALL PreFilterMeasuredSignals(CntrPar, LocalVar, objInst) +CALL PreFilterMeasuredSignals(CntrPar, LocalVar, objInst, ErrVar) IF ((LocalVar%iStatus >= 0) .AND. (ErrVar%aviFAIL >= 0)) THEN ! Only compute control calculations if no error has occurred and we are not on the last time step CALL WindSpeedEstimator(LocalVar, CntrPar, objInst, PerfData, DebugVar, ErrVar) @@ -79,9 +79,18 @@ SUBROUTINE DISCON(avrSWAP, aviFAIL, accINFILE, avcOUTNAME, avcMSG) BIND (C, NAME CALL ComputeVariablesSetpoints(CntrPar, LocalVar, objInst) CALL VariableSpeedControl(avrSWAP, CntrPar, LocalVar, objInst) CALL PitchControl(avrSWAP, CntrPar, LocalVar, objInst, DebugVar, ErrVar) - CALL YawRateControl(avrSWAP, CntrPar, LocalVar, objInst) - CALL FlapControl(avrSWAP, CntrPar, LocalVar, objInst) - CALL Debug(LocalVar, CntrPar, DebugVar, avrSWAP, RootName, SIZE(avcOUTNAME)) + + IF (CntrPar%Y_ControlMode > 0) THEN + CALL YawRateControl(avrSWAP, CntrPar, LocalVar, objInst) + END IF + + IF (CntrPar%Flp_Mode > 0) THEN + CALL FlapControl(avrSWAP, CntrPar, LocalVar, objInst) + END IF + + IF (CntrPar%LoggingLevel > 0) THEN + CALL Debug(LocalVar, CntrPar, DebugVar, avrSWAP, RootName, SIZE(avcOUTNAME)) + END IF END IF ! Add RoutineName to error message @@ -89,9 +98,12 @@ SUBROUTINE DISCON(avrSWAP, aviFAIL, accINFILE, avcOUTNAME, avcMSG) BIND (C, NAME ErrVar%ErrMsg = RoutineName//':'//TRIM(ErrVar%ErrMsg) print * , TRIM(ErrVar%ErrMsg) ENDIF -ErrMsg = ErrVar%ErrMsg -avcMSG = TRANSFER(TRIM(ErrVar%ErrMsg)//C_NULL_CHAR, avcMSG, SIZE(avcMSG)) +ErrMsg = ADJUSTL(TRIM(ErrVar%ErrMsg)) +avcMSG = TRANSFER(ErrMsg//C_NULL_CHAR, avcMSG, LEN(ErrMsg)+1) +avcMSG = TRANSFER(ErrMsg//C_NULL_CHAR, avcMSG, SIZE(avcMSG)) aviFAIL = ErrVar%aviFAIL +ErrVar%ErrMsg = '' + RETURN END SUBROUTINE DISCON diff --git a/ROSCO/src/Filters.f90 b/ROSCO/src/Filters.f90 index 0e6a9bdb..7cfc43e5 100644 --- a/ROSCO/src/Filters.f90 +++ b/ROSCO/src/Filters.f90 @@ -26,26 +26,26 @@ MODULE Filters CONTAINS !------------------------------------------------------------------------------------------------------------------------------- - REAL FUNCTION LPFilter(InputSignal, DT, CornerFreq, iStatus, reset, inst) + REAL(DbKi) FUNCTION LPFilter(InputSignal, DT, CornerFreq, iStatus, reset, inst) ! Discrete time Low-Pass Filter of the form: ! Continuous Time Form: H(s) = CornerFreq/(1 + CornerFreq) ! Discrete Time Form: H(z) = (b1z + b0) / (a1*z + a0) ! - REAL(8), INTENT(IN) :: InputSignal - REAL(8), INTENT(IN) :: DT ! time step [s] - REAL(8), INTENT(IN) :: CornerFreq ! corner frequency [rad/s] - INTEGER(4), 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(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. + REAL(DbKi), INTENT(IN) :: InputSignal + REAL(DbKi), INTENT(IN) :: DT ! time step [s] + REAL(DbKi), INTENT(IN) :: CornerFreq ! corner frequency [rad/s] + INTEGER(IntKi), 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(IntKi), 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 - REAL(8), DIMENSION(99), SAVE :: a1 ! Denominator coefficient 1 - REAL(8), DIMENSION(99), SAVE :: a0 ! Denominator coefficient 0 - REAL(8), DIMENSION(99), SAVE :: b1 ! Numerator coefficient 1 - REAL(8), DIMENSION(99), SAVE :: b0 ! Numerator coefficient 0 + REAL(DbKi), DIMENSION(99), SAVE :: a1 ! Denominator coefficient 1 + REAL(DbKi), DIMENSION(99), SAVE :: a0 ! Denominator coefficient 0 + REAL(DbKi), DIMENSION(99), SAVE :: b1 ! Numerator coefficient 1 + REAL(DbKi), DIMENSION(99), SAVE :: b0 ! Numerator coefficient 0 - REAL(8), DIMENSION(99), SAVE :: InputSignalLast ! Input signal the last time this filter was called. Supports 99 separate instances. - REAL(8), DIMENSION(99), SAVE :: OutputSignalLast ! Output signal the last time this filter was called. Supports 99 separate instances. + REAL(DbKi), DIMENSION(99), SAVE :: InputSignalLast ! Input signal the last time this filter was called. Supports 99 separate instances. + REAL(DbKi), DIMENSION(99), SAVE :: OutputSignalLast ! Output signal the last time this filter was called. Supports 99 separate instances. ! Initialization IF ((iStatus == 0) .OR. reset) THEN @@ -69,29 +69,29 @@ REAL FUNCTION LPFilter(InputSignal, DT, CornerFreq, iStatus, reset, inst) END FUNCTION LPFilter !------------------------------------------------------------------------------------------------------------------------------- - REAL FUNCTION SecLPFilter(InputSignal, DT, CornerFreq, Damp, iStatus, reset, inst) + REAL(DbKi) FUNCTION SecLPFilter(InputSignal, DT, CornerFreq, Damp, iStatus, reset, inst) ! Discrete time Low-Pass Filter of the form: ! Continuous Time Form: H(s) = CornerFreq^2/(s^2 + 2*CornerFreq*Damp*s + CornerFreq^2) ! Discrete Time From: H(z) = (b2*z^2 + b1*z + b0) / (a2*z^2 + a1*z + a0) - REAL(8), INTENT(IN) :: InputSignal - REAL(8), INTENT(IN) :: DT ! time step [s] - REAL(8), INTENT(IN) :: CornerFreq ! corner frequency [rad/s] - REAL(8), INTENT(IN) :: Damp ! Dampening constant - INTEGER(4), 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(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. + REAL(DbKi), INTENT(IN) :: InputSignal + REAL(DbKi), INTENT(IN) :: DT ! time step [s] + REAL(DbKi), INTENT(IN) :: CornerFreq ! corner frequency [rad/s] + REAL(DbKi), INTENT(IN) :: Damp ! Dampening constant + INTEGER(IntKi), 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(IntKi), 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 - REAL(8), DIMENSION(99), SAVE :: a2 ! Denominator coefficient 2 - REAL(8), DIMENSION(99), SAVE :: a1 ! Denominator coefficient 1 - REAL(8), DIMENSION(99), SAVE :: a0 ! Denominator coefficient 0 - REAL(8), DIMENSION(99), SAVE :: b2 ! Numerator coefficient 2 - REAL(8), DIMENSION(99), SAVE :: b1 ! Numerator coefficient 1 - REAL(8), DIMENSION(99), SAVE :: b0 ! Numerator coefficient 0 - REAL(8), DIMENSION(99), SAVE :: InputSignalLast1 ! Input signal the last time this filter was called. Supports 99 separate instances. - REAL(8), DIMENSION(99), SAVE :: InputSignalLast2 ! Input signal the next to last time this filter was called. Supports 99 separate instances. - REAL(8), DIMENSION(99), SAVE :: OutputSignalLast1 ! Output signal the last time this filter was called. Supports 99 separate instances. - REAL(8), DIMENSION(99), SAVE :: OutputSignalLast2 ! Output signal the next to last time this filter was called. Supports 99 separate instances. + REAL(DbKi), DIMENSION(99), SAVE :: a2 ! Denominator coefficient 2 + REAL(DbKi), DIMENSION(99), SAVE :: a1 ! Denominator coefficient 1 + REAL(DbKi), DIMENSION(99), SAVE :: a0 ! Denominator coefficient 0 + REAL(DbKi), DIMENSION(99), SAVE :: b2 ! Numerator coefficient 2 + REAL(DbKi), DIMENSION(99), SAVE :: b1 ! Numerator coefficient 1 + REAL(DbKi), DIMENSION(99), SAVE :: b0 ! Numerator coefficient 0 + REAL(DbKi), DIMENSION(99), SAVE :: InputSignalLast1 ! Input signal the last time this filter was called. Supports 99 separate instances. + REAL(DbKi), DIMENSION(99), SAVE :: InputSignalLast2 ! Input signal the next to last time this filter was called. Supports 99 separate instances. + REAL(DbKi), DIMENSION(99), SAVE :: OutputSignalLast1 ! Output signal the last time this filter was called. Supports 99 separate instances. + REAL(DbKi), DIMENSION(99), SAVE :: OutputSignalLast2 ! Output signal the next to last time this filter was called. Supports 99 separate instances. ! Initialization IF ((iStatus == 0) .OR. reset ) THEN @@ -126,19 +126,19 @@ REAL FUNCTION SecLPFilter(InputSignal, DT, CornerFreq, Damp, iStatus, reset, ins END FUNCTION SecLPFilter !------------------------------------------------------------------------------------------------------------------------------- - REAL FUNCTION HPFilter( InputSignal, DT, CornerFreq, iStatus, reset, inst) + REAL(DbKi) FUNCTION HPFilter( InputSignal, DT, CornerFreq, iStatus, reset, inst) ! Discrete time High-Pass Filter - REAL(8), INTENT(IN) :: InputSignal - REAL(8), INTENT(IN) :: DT ! time step [s] - REAL(8), INTENT(IN) :: CornerFreq ! corner frequency [rad/s] + REAL(DbKi), INTENT(IN) :: InputSignal + REAL(DbKi), INTENT(IN) :: DT ! time step [s] + REAL(DbKi), INTENT(IN) :: CornerFreq ! corner frequency [rad/s] 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 - REAL(8) :: K ! Constant gain - REAL(8), DIMENSION(99), SAVE :: InputSignalLast ! Input signal the last time this filter was called. Supports 99 separate instances. - REAL(8), DIMENSION(99), SAVE :: OutputSignalLast ! Output signal the last time this filter was called. Supports 99 separate instances. + REAL(DbKi) :: K ! Constant gain + REAL(DbKi), DIMENSION(99), SAVE :: InputSignalLast ! Input signal the last time this filter was called. Supports 99 separate instances. + REAL(DbKi), DIMENSION(99), SAVE :: OutputSignalLast ! Output signal the last time this filter was called. Supports 99 separate instances. ! Initialization IF ((iStatus == 0) .OR. reset) THEN @@ -157,22 +157,22 @@ REAL FUNCTION HPFilter( InputSignal, DT, CornerFreq, iStatus, reset, inst) END FUNCTION HPFilter !------------------------------------------------------------------------------------------------------------------------------- - REAL FUNCTION NotchFilterSlopes(InputSignal, DT, CornerFreq, Damp, iStatus, reset, inst) + REAL(DbKi) FUNCTION NotchFilterSlopes(InputSignal, DT, CornerFreq, Damp, iStatus, reset, inst) ! Discrete time inverted Notch Filter with descending slopes, G = CornerFreq*s/(Damp*s^2+CornerFreq*s+Damp*CornerFreq^2) - REAL(8), INTENT(IN) :: InputSignal - REAL(8), INTENT(IN) :: DT ! time step [s] - REAL(8), INTENT(IN) :: CornerFreq ! corner frequency [rad/s] - REAL(8), INTENT(IN) :: Damp ! Dampening constant + REAL(DbKi), INTENT(IN) :: InputSignal + REAL(DbKi), INTENT(IN) :: DT ! time step [s] + REAL(DbKi), INTENT(IN) :: CornerFreq ! corner frequency [rad/s] + REAL(DbKi), INTENT(IN) :: Damp ! Dampening constant 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 - REAL(8), DIMENSION(99), SAVE :: b2, b0, a2, a1, a0 ! Input signal the last time this filter was called. Supports 99 separate instances. - REAL(8), DIMENSION(99), SAVE :: InputSignalLast1 ! Input signal the last time this filter was called. Supports 99 separate instances. - REAL(8), DIMENSION(99), SAVE :: InputSignalLast2 ! Input signal the next to last time this filter was called. Supports 99 separate instances. - REAL(8), DIMENSION(99), SAVE :: OutputSignalLast1 ! Output signal the last time this filter was called. Supports 99 separate instances. - REAL(8), DIMENSION(99), SAVE :: OutputSignalLast2 ! Output signal the next to last time this filter was called. Supports 99 separate instances. + REAL(DbKi), DIMENSION(99), SAVE :: b2, b0, a2, a1, a0 ! Input signal the last time this filter was called. Supports 99 separate instances. + REAL(DbKi), DIMENSION(99), SAVE :: InputSignalLast1 ! Input signal the last time this filter was called. Supports 99 separate instances. + REAL(DbKi), DIMENSION(99), SAVE :: InputSignalLast2 ! Input signal the next to last time this filter was called. Supports 99 separate instances. + REAL(DbKi), DIMENSION(99), SAVE :: OutputSignalLast1 ! Output signal the last time this filter was called. Supports 99 separate instances. + REAL(DbKi), DIMENSION(99), SAVE :: OutputSignalLast2 ! Output signal the next to last time this filter was called. Supports 99 separate instances. ! Initialization IF ((iStatus == 0) .OR. reset) THEN @@ -203,25 +203,25 @@ REAL FUNCTION NotchFilterSlopes(InputSignal, DT, CornerFreq, Damp, iStatus, rese END FUNCTION NotchFilterSlopes !------------------------------------------------------------------------------------------------------------------------------- - REAL FUNCTION NotchFilter(InputSignal, DT, omega, betaNum, betaDen, iStatus, reset, inst) + REAL(DbKi) FUNCTION NotchFilter(InputSignal, DT, omega, betaNum, betaDen, iStatus, reset, inst) ! Discrete time Notch Filter ! Continuous Time Form: G(s) = (s^2 + 2*omega*betaNum*s + omega^2)/(s^2 + 2*omega*betaDen*s + omega^2) ! Discrete Time Form: H(z) = (b2*z^2 +b1*z^2 + b0*z)/((z^2 +a1*z^2 + a0*z)) - REAL(8), INTENT(IN) :: InputSignal - REAL(8), INTENT(IN) :: DT ! time step [s] - REAL(8), INTENT(IN) :: omega ! corner frequency [rad/s] - REAL(8), INTENT(IN) :: betaNum ! Dampening constant in numerator of filter transfer function - REAL(8), INTENT(IN) :: betaDen ! Dampening constant in denominator of filter transfer function + REAL(DbKi), INTENT(IN) :: InputSignal + REAL(DbKi), INTENT(IN) :: DT ! time step [s] + REAL(DbKi), INTENT(IN) :: omega ! corner frequency [rad/s] + REAL(DbKi), INTENT(IN) :: betaNum ! Dampening constant in numerator of filter transfer function + REAL(DbKi), INTENT(IN) :: betaDen ! Dampening constant in denominator of filter transfer function 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 - REAL(8), DIMENSION(99), SAVE :: K, b2, b1, b0, a1, a0 ! Constant gain - REAL(8), DIMENSION(99), SAVE :: InputSignalLast1 ! Input signal the last time this filter was called. Supports 99 separate instances. - REAL(8), DIMENSION(99), SAVE :: InputSignalLast2 ! Input signal the next to last time this filter was called. Supports 99 separate instances. - REAL(8), DIMENSION(99), SAVE :: OutputSignalLast1 ! Output signal the last time this filter was called. Supports 99 separate instances. - REAL(8), DIMENSION(99), SAVE :: OutputSignalLast2 ! Output signal the next to last time this filter was called. Supports 99 separate instances. + REAL(DbKi), DIMENSION(99), SAVE :: K, b2, b1, b0, a1, a0 ! Constant gain + REAL(DbKi), DIMENSION(99), SAVE :: InputSignalLast1 ! Input signal the last time this filter was called. Supports 99 separate instances. + REAL(DbKi), DIMENSION(99), SAVE :: InputSignalLast2 ! Input signal the next to last time this filter was called. Supports 99 separate instances. + REAL(DbKi), DIMENSION(99), SAVE :: OutputSignalLast1 ! Output signal the last time this filter was called. Supports 99 separate instances. + REAL(DbKi), DIMENSION(99), SAVE :: OutputSignalLast2 ! Output signal the next to last time this filter was called. Supports 99 separate instances. ! Initialization IF ((iStatus == 0) .OR. reset) THEN @@ -249,14 +249,20 @@ REAL FUNCTION NotchFilter(InputSignal, DT, omega, betaNum, betaDen, iStatus, res END FUNCTION NotchFilter !------------------------------------------------------------------------------------------------------------------------------- - SUBROUTINE PreFilterMeasuredSignals(CntrPar, LocalVar, objInst) + SUBROUTINE PreFilterMeasuredSignals(CntrPar, LocalVar, objInst, ErrVar) ! Prefilter measured wind turbine signals to separate the filtering from the actual control actions - USE ROSCO_Types, ONLY : ControlParameters, LocalVariables, ObjectInstances + USE ROSCO_Types, ONLY : ControlParameters, LocalVariables, ObjectInstances, ErrorVariables TYPE(ControlParameters), INTENT(INOUT) :: CntrPar TYPE(LocalVariables), INTENT(INOUT) :: LocalVar TYPE(ObjectInstances), INTENT(INOUT) :: objInst + TYPE(ErrorVariables), INTENT(INOUT) :: ErrVar + + ! If there's an error, don't even try to run + IF (ErrVar%aviFAIL < 0) THEN + RETURN + ENDIF ! Filter the HSS (generator) and LSS (rotor) speed measurement: ! Apply Low-Pass Filter (choice between first- and second-order low-pass filter) @@ -266,6 +272,12 @@ SUBROUTINE PreFilterMeasuredSignals(CntrPar, LocalVar, objInst) ELSEIF (CntrPar%F_LPFType == 2) THEN LocalVar%GenSpeedF = SecLPFilter(LocalVar%GenSpeed, LocalVar%DT, CntrPar%F_LPFCornerFreq, CntrPar%F_LPFDamping, LocalVar%iStatus, .FALSE., objInst%instSecLPF) ! Second-order low-pass filter on generator speed LocalVar%RotSpeedF = SecLPFilter(LocalVar%RotSpeed, LocalVar%DT, CntrPar%F_LPFCornerFreq, CntrPar%F_LPFDamping, LocalVar%iStatus, .FALSE., objInst%instSecLPF) ! Second-order low-pass filter on generator speed + ELSE + IF (LocalVar%iStatus ==0) THEN + print *, 'No generator speed low-pass filter is selected in ROSCO (F_LPFType=0)' + ENDIF + LocalVar%GenSpeedF = LocalVar%GenSpeed + LocalVar%RotSpeedF = LocalVar%RotSpeed ENDIF ! Apply Notch Fitler IF (CntrPar%F_NotchType == 1 .OR. CntrPar%F_NotchType == 3) THEN @@ -276,14 +288,14 @@ SUBROUTINE PreFilterMeasuredSignals(CntrPar, LocalVar, objInst) IF (CntrPar%Fl_Mode > 0) THEN ! Force to start at 0 IF (LocalVar%iStatus == 0) THEN - LocalVar%NacIMU_FA_AccF = SecLPFilter(0., LocalVar%DT, CntrPar%F_FlCornerFreq(1), CntrPar%F_FlCornerFreq(2), LocalVar%iStatus, .FALSE., objInst%instSecLPF) ! Fixed Damping - LocalVar%FA_AccF = SecLPFilter(0., LocalVar%DT, CntrPar%F_FlCornerFreq(1), CntrPar%F_FlCornerFreq(2), LocalVar%iStatus, .FALSE., objInst%instSecLPF) ! Fixed Damping + LocalVar%NacIMU_FA_AccF = SecLPFilter(REAL(0.,DbKi), LocalVar%DT, CntrPar%F_FlCornerFreq(1), CntrPar%F_FlCornerFreq(2), LocalVar%iStatus, .FALSE., objInst%instSecLPF) ! Fixed Damping + LocalVar%FA_AccF = SecLPFilter(REAL(0.,DbKi), LocalVar%DT, CntrPar%F_FlCornerFreq(1), CntrPar%F_FlCornerFreq(2), LocalVar%iStatus, .FALSE., objInst%instSecLPF) ! Fixed Damping ELSE LocalVar%NacIMU_FA_AccF = SecLPFilter(LocalVar%NacIMU_FA_Acc, LocalVar%DT, CntrPar%F_FlCornerFreq(1), CntrPar%F_FlCornerFreq(2), LocalVar%iStatus, .FALSE., objInst%instSecLPF) ! Fixed Damping LocalVar%FA_AccF = SecLPFilter(LocalVar%FA_Acc, LocalVar%DT, CntrPar%F_FlCornerFreq(1), CntrPar%F_FlCornerFreq(2), LocalVar%iStatus, .FALSE., objInst%instSecLPF) ! Fixed Damping ENDIF - LocalVar%NacIMU_FA_AccF = HPFilter(LocalVar%NacIMU_FA_AccF, LocalVar%DT, 0.0167, LocalVar%iStatus, .FALSE., objInst%instHPF) - LocalVar%FA_AccF = HPFilter(LocalVar%FA_AccF, LocalVar%DT, 0.0167, LocalVar%iStatus, .FALSE., objInst%instHPF) + LocalVar%NacIMU_FA_AccF = HPFilter(LocalVar%NacIMU_FA_AccF, LocalVar%DT, CntrPar%F_FlHighPassFreq, LocalVar%iStatus, .FALSE., objInst%instHPF) + LocalVar%FA_AccF = HPFilter(LocalVar%FA_AccF, LocalVar%DT, CntrPar%F_FlHighPassFreq, LocalVar%iStatus, .FALSE., objInst%instHPF) IF (CntrPar%F_NotchType >= 2) THEN LocalVar%NACIMU_FA_AccF = NotchFilter(LocalVar%NacIMU_FA_AccF, LocalVar%DT, CntrPar%F_NotchCornerFreq, CntrPar%F_NotchBetaNumDen(1), CntrPar%F_NotchBetaNumDen(2), LocalVar%iStatus, .FALSE., objInst%instNotch) ! Fixed Damping @@ -294,12 +306,12 @@ SUBROUTINE PreFilterMeasuredSignals(CntrPar, LocalVar, objInst) LocalVar%FA_AccHPF = HPFilter(LocalVar%FA_Acc, LocalVar%DT, CntrPar%FA_HPFCornerFreq, LocalVar%iStatus, .FALSE., objInst%instHPF) ! Filter Wind Speed Estimator Signal - LocalVar%We_Vw_F = LPFilter(LocalVar%WE_Vw, LocalVar%DT, 0.209, LocalVar%iStatus,.FALSE.,objInst%instLPF) ! 30 second time constant + LocalVar%We_Vw_F = LPFilter(LocalVar%WE_Vw, LocalVar%DT, CntrPar%F_WECornerFreq, LocalVar%iStatus,.FALSE.,objInst%instLPF) ! 30 second time constant ! Control commands (used by WSE, mostly) - LocalVar%VS_LastGenTrqF = SecLPFilter(LocalVar%VS_LastGenTrq, LocalVar%DT, CntrPar%F_LPFCornerFreq, 0.7, LocalVar%iStatus, .FALSE., objInst%instSecLPF) - LocalVar%PC_PitComTF = SecLPFilter(LocalVar%PC_PitComT, LocalVar%DT, CntrPar%F_LPFCornerFreq*0.25, 0.7, LocalVar%iStatus, .FALSE., objInst%instSecLPF) + LocalVar%VS_LastGenTrqF = SecLPFilter(LocalVar%VS_LastGenTrq, LocalVar%DT, CntrPar%F_LPFCornerFreq, 0.7_DbKi, LocalVar%iStatus, .FALSE., objInst%instSecLPF) + LocalVar%PC_PitComTF = SecLPFilter(LocalVar%PC_PitComT, LocalVar%DT, CntrPar%F_LPFCornerFreq*0.25, 0.7_DbKi, LocalVar%iStatus, .FALSE., objInst%instSecLPF) END SUBROUTINE PreFilterMeasuredSignals END MODULE Filters diff --git a/ROSCO/src/Functions.f90 b/ROSCO/src/Functions.f90 index d17d0703..b99d1527 100644 --- a/ROSCO/src/Functions.f90 +++ b/ROSCO/src/Functions.f90 @@ -34,31 +34,31 @@ MODULE Functions CONTAINS !------------------------------------------------------------------------------------------------------------------------------- - REAL FUNCTION saturate(inputValue, minValue, maxValue) + REAL(DbKi) FUNCTION saturate(inputValue, minValue, maxValue) ! Saturates inputValue. Makes sure it is not smaller than minValue and not larger than maxValue IMPLICIT NONE - REAL(8), INTENT(IN) :: inputValue - REAL(8), INTENT(IN) :: minValue - REAL(8), INTENT(IN) :: maxValue + REAL(DbKi), INTENT(IN) :: inputValue + REAL(DbKi), INTENT(IN) :: minValue + REAL(DbKi), INTENT(IN) :: maxValue - saturate = MIN(MAX(inputValue,minValue), maxValue) + saturate = REAL(MIN(MAX(inputValue,minValue), maxValue),DbKi) END FUNCTION saturate !------------------------------------------------------------------------------------------------------------------------------- - REAL FUNCTION ratelimit(inputSignal, inputSignalPrev, minRate, maxRate, DT) + REAL(DbKi) 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(8), INTENT(IN) :: inputSignal - REAL(8), INTENT(IN) :: inputSignalPrev - REAL(8), INTENT(IN) :: minRate - REAL(8), INTENT(IN) :: maxRate - REAL(8), INTENT(IN) :: DT + REAL(DbKi), INTENT(IN) :: inputSignal + REAL(DbKi), INTENT(IN) :: inputSignalPrev + REAL(DbKi), INTENT(IN) :: minRate + REAL(DbKi), INTENT(IN) :: maxRate + REAL(DbKi), INTENT(IN) :: DT ! Local variables - REAL(8) :: rate + REAL(DbKi) :: rate rate = (inputSignal - inputSignalPrev)/DT ! Signal rate (unsaturated) rate = saturate(rate, minRate, maxRate) ! Saturate the signal rate @@ -67,26 +67,26 @@ REAL FUNCTION ratelimit(inputSignal, inputSignalPrev, minRate, maxRate, DT) END FUNCTION ratelimit !------------------------------------------------------------------------------------------------------------------------------- - REAL FUNCTION PIController(error, kp, ki, minValue, maxValue, DT, I0, reset, inst) + REAL(DbKi) FUNCTION PIController(error, kp, ki, minValue, maxValue, DT, I0, reset, inst) ! PI controller, with output saturation IMPLICIT NONE ! Allocate Inputs - REAL(8), INTENT(IN) :: error - REAL(8), INTENT(IN) :: kp - REAL(8), INTENT(IN) :: ki - REAL(8), INTENT(IN) :: minValue - REAL(8), INTENT(IN) :: maxValue - REAL(8), INTENT(IN) :: DT - INTEGER(4), INTENT(INOUT) :: inst - REAL(8), INTENT(IN) :: I0 + REAL(DbKi), INTENT(IN) :: error + REAL(DbKi), INTENT(IN) :: kp + REAL(DbKi), INTENT(IN) :: ki + REAL(DbKi), INTENT(IN) :: minValue + REAL(DbKi), INTENT(IN) :: maxValue + REAL(DbKi), INTENT(IN) :: DT + INTEGER(IntKi), INTENT(INOUT) :: inst + REAL(DbKi), INTENT(IN) :: I0 LOGICAL, INTENT(IN) :: reset ! Allocate local variables - INTEGER(4) :: i ! Counter for making arrays - REAL(8) :: PTerm ! Proportional term - REAL(8), DIMENSION(99), SAVE :: ITerm = (/ (real(9999.9), i = 1,99) /) ! Integral term, current. - REAL(8), DIMENSION(99), SAVE :: ITermLast = (/ (real(9999.9), i = 1,99) /) ! Integral term, the last time this controller was called. Supports 99 separate instances. - INTEGER(4), DIMENSION(99), SAVE :: FirstCall = (/ (1, i=1,99) /) ! First call of this function? + INTEGER(IntKi) :: i ! Counter for making arrays + REAL(DbKi) :: PTerm ! Proportional term + REAL(DbKi), DIMENSION(99), SAVE :: ITerm = (/ (real(9999.9), i = 1,99) /) ! Integral term, current. + REAL(DbKi), DIMENSION(99), SAVE :: ITermLast = (/ (real(9999.9), i = 1,99) /) ! Integral term, the last time this controller was called. Supports 99 separate instances. + INTEGER(IntKi), DIMENSION(99), SAVE :: FirstCall = (/ (1, i=1,99) /) ! First call of this function? ! Initialize persistent variables/arrays, and set inital condition for integrator term IF ((FirstCall(inst) == 1) .OR. reset) THEN @@ -108,31 +108,31 @@ REAL FUNCTION PIController(error, kp, ki, minValue, maxValue, DT, I0, reset, ins END FUNCTION PIController !------------------------------------------------------------------------------------------------------------------------------- - REAL(8) FUNCTION PIIController(error, error2, kp, ki, ki2, minValue, maxValue, DT, I0, reset, inst) + REAL(DbKi) FUNCTION PIIController(error, error2, kp, ki, ki2, minValue, maxValue, DT, I0, reset, inst) ! PI controller, with output saturation. ! Added error2 term for additional integral control input IMPLICIT NONE ! Allocate Inputs - REAL(8), INTENT(IN) :: error - REAL(8), INTENT(IN) :: error2 - REAL(8), INTENT(IN) :: kp - REAL(8), INTENT(IN) :: ki2 - REAL(8), INTENT(IN) :: ki - REAL(8), INTENT(IN) :: minValue - REAL(8), INTENT(IN) :: maxValue - REAL(8), INTENT(IN) :: DT - INTEGER(4), INTENT(INOUT) :: inst - REAL(8), INTENT(IN) :: I0 + REAL(DbKi), INTENT(IN) :: error + REAL(DbKi), INTENT(IN) :: error2 + REAL(DbKi), INTENT(IN) :: kp + REAL(DbKi), INTENT(IN) :: ki2 + REAL(DbKi), INTENT(IN) :: ki + REAL(DbKi), INTENT(IN) :: minValue + REAL(DbKi), INTENT(IN) :: maxValue + REAL(DbKi), INTENT(IN) :: DT + INTEGER(IntKi), INTENT(INOUT) :: inst + REAL(DbKi), INTENT(IN) :: I0 LOGICAL, INTENT(IN) :: reset ! Allocate local variables - INTEGER(4) :: i ! Counter for making arrays - REAL(8) :: PTerm ! Proportional term - REAL(8), DIMENSION(99), SAVE :: ITerm = (/ (real(9999.9), i = 1,99) /) ! Integral term, current. - REAL(8), DIMENSION(99), SAVE :: ITermLast = (/ (real(9999.9), i = 1,99) /) ! Integral term, the last time this controller was called. Supports 99 separate instances. - REAL(8), DIMENSION(99), SAVE :: ITerm2 = (/ (real(9999.9), i = 1,99) /) ! Second Integral term, current. - REAL(8), DIMENSION(99), SAVE :: ITermLast2 = (/ (real(9999.9), i = 1,99) /) ! Second Integral term, the last time this controller was called. Supports 99 separate instances. - INTEGER(4), DIMENSION(99), SAVE :: FirstCall = (/ (1, i=1,99) /) ! First call of this function? + INTEGER(IntKi) :: i ! Counter for making arrays + REAL(DbKi) :: PTerm ! Proportional term + REAL(DbKi), DIMENSION(99), SAVE :: ITerm = (/ (real(9999.9), i = 1,99) /) ! Integral term, current. + REAL(DbKi), DIMENSION(99), SAVE :: ITermLast = (/ (real(9999.9), i = 1,99) /) ! Integral term, the last time this controller was called. Supports 99 separate instances. + REAL(DbKi), DIMENSION(99), SAVE :: ITerm2 = (/ (real(9999.9), i = 1,99) /) ! Second Integral term, current. + REAL(DbKi), DIMENSION(99), SAVE :: ITermLast2 = (/ (real(9999.9), i = 1,99) /) ! Second Integral term, the last time this controller was called. Supports 99 separate instances. + INTEGER(IntKi), DIMENSION(99), SAVE :: FirstCall = (/ (1, i=1,99) /) ! First call of this function? ! Initialize persistent variables/arrays, and set inital condition for integrator term IF ((FirstCall(inst) == 1) .OR. reset) THEN @@ -159,21 +159,21 @@ REAL(8) FUNCTION PIIController(error, error2, kp, ki, ki2, minValue, maxValue, D END FUNCTION PIIController !------------------------------------------------------------------------------------------------------------------------------- - REAL FUNCTION interp1d(xData, yData, xq, ErrVar) + REAL(DbKi) FUNCTION interp1d(xData, yData, xq, ErrVar) ! interp1d 1-D interpolation (table lookup), xData should be strictly increasing USE ROSCO_Types, ONLY : ErrorVariables IMPLICIT NONE ! Inputs - REAL(8), DIMENSION(:), INTENT(IN) :: xData ! Provided x data (vector), to be interpolated - REAL(8), DIMENSION(:), INTENT(IN) :: yData ! Provided y data (vector), to be interpolated - REAL(8), INTENT(IN) :: xq ! x-value for which the y value has to be interpolated - INTEGER(4) :: I ! Iteration index + REAL(DbKi), DIMENSION(:), INTENT(IN) :: xData ! Provided x data (vector), to be interpolated + REAL(DbKi), DIMENSION(:), INTENT(IN) :: yData ! Provided y data (vector), to be interpolated + REAL(DbKi), INTENT(IN) :: xq ! x-value for which the y value has to be interpolated + INTEGER(IntKi) :: I ! Iteration index ! Error Catching TYPE(ErrorVariables), INTENT(INOUT) :: ErrVar - INTEGER(4) :: I_DIFF + INTEGER(IntKi) :: I_DIFF CHARACTER(*), PARAMETER :: RoutineName = 'interp1d' @@ -220,7 +220,7 @@ REAL FUNCTION interp1d(xData, yData, xq, ErrVar) END FUNCTION interp1d !------------------------------------------------------------------------------------------------------------------------------- - REAL FUNCTION interp2d(xData, yData, zData, xq, yq, ErrVar) + REAL(DbKi) FUNCTION interp2d(xData, yData, zData, xq, yq, ErrVar) ! 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 @@ -238,26 +238,26 @@ REAL FUNCTION interp2d(xData, yData, zData, xq, yq, ErrVar) IMPLICIT NONE ! Inputs - REAL(8), DIMENSION(:), INTENT(IN) :: xData ! Provided x data (vector), to find query point (should be strictly increasing) - REAL(8), DIMENSION(:), INTENT(IN) :: yData ! Provided y data (vector), to find query point (should be strictly increasing) - REAL(8), DIMENSION(:,:), INTENT(IN) :: zData ! Provided z data (vector), to be interpolated - REAL(8), INTENT(IN) :: xq ! x-value for which the z value has to be interpolated - REAL(8), INTENT(IN) :: yq ! y-value for which the z value has to be interpolated + REAL(DbKi), DIMENSION(:), INTENT(IN) :: xData ! Provided x data (vector), to find query point (should be strictly increasing) + REAL(DbKi), DIMENSION(:), INTENT(IN) :: yData ! Provided y data (vector), to find query point (should be strictly increasing) + REAL(DbKi), DIMENSION(:,:), INTENT(IN) :: zData ! Provided z data (vector), to be interpolated + REAL(DbKi), INTENT(IN) :: xq ! x-value for which the z value has to be interpolated + REAL(DbKi), 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(8), DIMENSION(2,2) :: fQ ! zData value at query points for bilinear interpolation - REAL(8), DIMENSION(1) :: fxy ! Interpolated z-data point to be returned - REAL(8) :: fxy1 ! zData value at query point for bilinear interpolation - REAL(8) :: fxy2 ! zData value at query point for bilinear interpolation + INTEGER(IntKi) :: i ! Iteration index & query index, x-direction + INTEGER(IntKi) :: ii ! Iteration index & second que . ry index, x-direction + INTEGER(IntKi) :: j ! Iteration index & query index, y-direction + INTEGER(IntKi) :: jj ! Iteration index & second query index, y-direction + REAL(DbKi), DIMENSION(2,2) :: fQ ! zData value at query points for bilinear interpolation + REAL(DbKi), DIMENSION(1) :: fxy ! Interpolated z-data point to be returned + REAL(DbKi) :: fxy1 ! zData value at query point for bilinear interpolation + REAL(DbKi) :: fxy2 ! zData value at query point for bilinear interpolation LOGICAL :: edge ! Error Catching TYPE(ErrorVariables), INTENT(INOUT) :: ErrVar - INTEGER(4) :: I_DIFF + INTEGER(IntKi) :: I_DIFF CHARACTER(*), PARAMETER :: RoutineName = 'interp2d' @@ -372,9 +372,9 @@ 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(8), INTENT(IN) :: A(3,3) !! Matrix - REAL(8) :: B(3,3) !! Inverse matrix - REAL(8) :: detinv + REAL(DbKi), INTENT(IN) :: A(3,3) !! Matrix + REAL(DbKi) :: B(3,3) !! Inverse matrix + REAL(DbKi) :: 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)& @@ -398,7 +398,7 @@ FUNCTION identity(n) RESULT(A) ! Produces an identity matrix of size n x n INTEGER, INTENT(IN) :: n - REAL(8), DIMENSION(n, n) :: A + REAL(DbKi), DIMENSION(n, n) :: A INTEGER :: i INTEGER :: j @@ -416,22 +416,22 @@ FUNCTION identity(n) RESULT(A) END FUNCTION identity !------------------------------------------------------------------------------------------------------------------------------- - REAL FUNCTION DFController(error, Kd, Tf, DT, inst) + REAL(DbKi) FUNCTION DFController(error, Kd, Tf, DT, inst) ! DF controller, with output saturation IMPLICIT NONE ! Inputs - REAL(8), INTENT(IN) :: error - REAL(8), INTENT(IN) :: kd - REAL(8), INTENT(IN) :: tf - REAL(8), INTENT(IN) :: DT - INTEGER(4), INTENT(IN) :: inst + REAL(DbKi), INTENT(IN) :: error + REAL(DbKi), INTENT(IN) :: kd + REAL(DbKi), INTENT(IN) :: tf + REAL(DbKi), INTENT(IN) :: DT + INTEGER(IntKi), INTENT(IN) :: inst ! Local - REAL(8) :: B ! - INTEGER(4) :: i ! Counter for making arrays - REAL(8), DIMENSION(99), SAVE :: errorLast = (/ (0, i=1,99) /) ! - REAL(8), DIMENSION(99), SAVE :: DFControllerLast = (/ (0, i=1,99) /) ! - INTEGER(4), DIMENSION(99), SAVE :: FirstCall = (/ (1, i=1,99) /) ! First call of this function? + REAL(DbKi) :: B ! + INTEGER(IntKi) :: i ! Counter for making arrays + REAL(DbKi), DIMENSION(99), SAVE :: errorLast = (/ (0, i=1,99) /) ! + REAL(DbKi), DIMENSION(99), SAVE :: DFControllerLast = (/ (0, i=1,99) /) ! + INTEGER(IntKi), DIMENSION(99), SAVE :: FirstCall = (/ (1, i=1,99) /) ! First call of this function? ! Initialize persistent variables/arrays, and set inital condition for integrator term ! IF (FirstCall(inst) == 1) THEN @@ -452,14 +452,14 @@ SUBROUTINE ColemanTransform(rootMOOP, aziAngle, nHarmonic, axTOut, axYOut) IMPLICIT NONE ! Inputs - REAL(8), INTENT(IN) :: rootMOOP(3) ! Root out of plane bending moments of each blade - REAL(8), INTENT(IN) :: aziAngle ! Rotor azimuth angle - INTEGER(4), INTENT(IN) :: nHarmonic ! The harmonic number, nP + REAL(DbKi), INTENT(IN) :: rootMOOP(3) ! Root out of plane bending moments of each blade + REAL(DbKi), INTENT(IN) :: aziAngle ! Rotor azimuth angle + INTEGER(IntKi), INTENT(IN) :: nHarmonic ! The harmonic number, nP ! Outputs - REAL(8), INTENT(OUT) :: axTOut, axYOut ! Direct axis and quadrature axis outputted by this transform + REAL(DbKi), INTENT(OUT) :: axTOut, axYOut ! Direct axis and quadrature axis outputted by this transform ! Local - REAL(8), PARAMETER :: phi2 = 2.0/3.0*PI ! Phase difference from first to second blade - REAL(8), PARAMETER :: phi3 = 4.0/3.0*PI ! Phase difference from first to third blade + REAL(DbKi), PARAMETER :: phi2 = 2.0/3.0*PI ! Phase difference from first to second blade + REAL(DbKi), PARAMETER :: phi3 = 4.0/3.0*PI ! Phase difference from first to third blade ! Body axTOut = 2.0/3.0 * (cos(nHarmonic*(aziAngle))*rootMOOP(1) + cos(nHarmonic*(aziAngle+phi2))*rootMOOP(2) + cos(nHarmonic*(aziAngle+phi3))*rootMOOP(3)) @@ -473,15 +473,15 @@ SUBROUTINE ColemanTransformInverse(axTIn, axYIn, aziAngle, nHarmonic, aziOffset, ! back to root out of plane bending moments of each turbine blade IMPLICIT NONE ! Inputs - REAL(8), INTENT(IN) :: axTIn, axYIn ! Direct axis and quadrature axis - REAL(8), INTENT(IN) :: aziAngle ! Rotor azimuth angle - REAL(8), INTENT(IN) :: aziOffset ! Phase shift added to the azimuth angle - INTEGER(4), INTENT(IN) :: nHarmonic ! The harmonic number, nP + REAL(DbKi), INTENT(IN) :: axTIn, axYIn ! Direct axis and quadrature axis + REAL(DbKi), INTENT(IN) :: aziAngle ! Rotor azimuth angle + REAL(DbKi), INTENT(IN) :: aziOffset ! Phase shift added to the azimuth angle + INTEGER(IntKi), INTENT(IN) :: nHarmonic ! The harmonic number, nP ! Outputs - REAL(8), INTENT(OUT) :: PitComIPC(3) ! Root out of plane bending moments of each blade + REAL(DbKi), INTENT(OUT) :: PitComIPC(3) ! Root out of plane bending moments of each blade ! Local - REAL(8), PARAMETER :: phi2 = 2.0/3.0*PI ! Phase difference from first to second blade - REAL(8), PARAMETER :: phi3 = 4.0/3.0*PI ! Phase difference from first to third blade + REAL(DbKi), PARAMETER :: phi2 = 2.0/3.0*PI ! Phase difference from first to second blade + REAL(DbKi), PARAMETER :: phi3 = 4.0/3.0*PI ! Phase difference from first to third blade ! Body PitComIPC(1) = cos(nHarmonic*(aziAngle+aziOffset))*axTIn + sin(nHarmonic*(aziAngle+aziOffset))*axYIn @@ -491,22 +491,22 @@ SUBROUTINE ColemanTransformInverse(axTIn, axYIn, aziAngle, nHarmonic, aziOffset, END SUBROUTINE ColemanTransformInverse !------------------------------------------------------------------------------------------------------------------------------- - REAL FUNCTION CPfunction(CP, lambda) + REAL(DbKi) 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(8), INTENT(IN) :: CP(4) ! Parameters defining the parameterizable Cp(lambda) function - REAL(8), INTENT(IN) :: lambda ! Estimated or measured tip-speed ratio input + REAL(DbKi), INTENT(IN) :: CP(4) ! Parameters defining the parameterizable Cp(lambda) function + REAL(DbKi), 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.001D0, 1.0D0) + CPfunction = saturate(CPfunction, 0.001_DbKi, 1.0_DbKi) END FUNCTION CPfunction !------------------------------------------------------------------------------------------------------------------------------- - REAL FUNCTION AeroDynTorque(LocalVar, CntrPar, PerfData, ErrVar) + REAL(DbKi) FUNCTION AeroDynTorque(LocalVar, CntrPar, PerfData, ErrVar) ! 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, ErrorVariables @@ -519,9 +519,9 @@ REAL FUNCTION AeroDynTorque(LocalVar, CntrPar, PerfData, ErrVar) TYPE(ErrorVariables), INTENT(INOUT) :: ErrVar ! Local - REAL(8) :: RotorArea - REAL(8) :: Cp - REAL(8) :: Lambda + REAL(DbKi) :: RotorArea + REAL(DbKi) :: Cp + REAL(DbKi) :: Lambda CHARACTER(*), PARAMETER :: RoutineName = 'AeroDynTorque' @@ -533,7 +533,7 @@ REAL FUNCTION AeroDynTorque(LocalVar, CntrPar, PerfData, ErrVar) Cp = interp2d(PerfData%Beta_vec,PerfData%TSR_vec,PerfData%Cp_mat, LocalVar%PC_PitComT*R2D, Lambda, ErrVar) AeroDynTorque = 0.5*(CntrPar%WE_RhoAir*RotorArea)*(LocalVar%WE_Vw**3/LocalVar%RotSpeedF)*Cp - AeroDynTorque = MAX(AeroDynTorque, 0.0) + AeroDynTorque = MAX(AeroDynTorque, 0.0_DbKi) ! Add RoutineName to error message IF (ErrVar%aviFAIL < 0) THEN @@ -555,13 +555,13 @@ SUBROUTINE Debug(LocalVar, CntrPar, DebugVar, avrSWAP, RootName, size_avcOUTNAME TYPE(LocalVariables), INTENT(IN) :: LocalVar TYPE(DebugVariables), INTENT(IN) :: DebugVar - INTEGER(4), INTENT(IN) :: size_avcOUTNAME - INTEGER(4) :: I , nDebugOuts ! Generic index. + INTEGER(IntKi), INTENT(IN) :: size_avcOUTNAME + INTEGER(IntKi) :: I , nDebugOuts ! Generic index. CHARACTER(1), PARAMETER :: Tab = CHAR(9) ! The tab character. CHARACTER(29), PARAMETER :: FmtDat = "(F10.3,TR5,99(ES10.3E2,TR5:))" ! 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. + INTEGER(IntKi), PARAMETER :: UnDb = 85 ! I/O unit for the debugging information + INTEGER(IntKi), PARAMETER :: UnDb2 = 86 ! I/O unit for the debugging information, avrSWAP + REAL(ReKi), 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] CHARACTER(200) :: Version ! git version of ROSCO CHARACTER(10) :: DebugOutStr1, DebugOutStr2, DebugOutStr3, DebugOutStr4, DebugOutStr5, & @@ -573,7 +573,7 @@ SUBROUTINE Debug(LocalVar, CntrPar, DebugVar, avrSWAP, RootName, size_avcOUTNAME DebugOutUni11, DebugOutUni12, DebugOutUni13, DebugOutUni14, DebugOutUni15, & DebugOutUni16, DebugOutUni17, DebugOutUni18, DebugOutUni19, DebugOutUni20 CHARACTER(10), ALLOCATABLE :: DebugOutStrings(:), DebugOutUnits(:) - REAL(8), ALLOCATABLE :: DebugOutData(:) + REAL(DbKi), ALLOCATABLE :: DebugOutData(:) ! Set up Debug Strings and Data ! Note that Debug strings have 10 character limit @@ -634,7 +634,7 @@ SUBROUTINE Debug(LocalVar, CntrPar, DebugVar, avrSWAP, RootName, size_avcOUTNAME END IF ELSE ! Print simulation status, every 10 seconds - IF (MODULO(LocalVar%Time, 10.0) == 0) THEN + IF (MODULO(LocalVar%Time, 10.0_DbKi) == 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') END IF @@ -746,8 +746,8 @@ LOGICAL Function NonDecreasing(Array) IMPLICIT NONE - REAL(8), DIMENSION(:) :: Array - INTEGER(4) :: I_DIFF + REAL(DbKi), DIMENSION(:) :: Array + INTEGER(IntKi) :: I_DIFF NonDecreasing = .TRUE. ! Is Array non decreasing diff --git a/ROSCO/src/ROSCO_Types.f90 b/ROSCO/src/ROSCO_Types.f90 index 1eeaf682..bd4670b5 100644 --- a/ROSCO/src/ROSCO_Types.f90 +++ b/ROSCO/src/ROSCO_Types.f90 @@ -20,225 +20,228 @@ MODULE ROSCO_Types ! Define Types USE, INTRINSIC :: ISO_C_Binding +USE Constants 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(IntKi) :: 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}, [rad/s] - INTEGER(4) :: F_NotchType ! Notch on the measured generator speed {0: disable, 1: enable} - REAL(8) :: F_LPFCornerFreq ! Corner frequency (-3dB point) in the first-order low-pass filter, [rad/s] - REAL(8) :: F_LPFDamping ! Damping coefficient [used only when F_FilterType = 2] - REAL(8) :: F_NotchCornerFreq ! Natural frequency of the notch filter, [rad/s] - REAL(8), DIMENSION(:), ALLOCATABLE :: F_NotchBetaNumDen ! These two notch damping values (numerator and denominator) determines the width and depth of the notch - REAL(8) :: F_SSCornerFreq ! Setpoint Smoother mode {0: no setpoint smoothing, 1: introduce setpoint smoothing} - REAL(8), DIMENSION(:), ALLOCATABLE :: F_FlCornerFreq ! Corner frequency (-3dB point) in the second order low pass filter of the tower-top fore-aft motion for floating feedback control [rad/s]. - REAL(8), DIMENSION(:), ALLOCATABLE :: F_FlpCornerFreq ! Corner frequency (-3dB point) in the second order low pass filter of the blade root bending moment for flap control [rad/s]. - - REAL(8) :: FA_HPFCornerFreq ! Corner frequency (-3dB point) in the high-pass filter on the fore-aft acceleration signal [rad/s] - REAL(8) :: FA_IntSat ! Integrator saturation (maximum signal amplitude contrbution to pitch from FA damper), [rad] - REAL(8) :: FA_KI ! Integral gain for the fore-aft tower damper controller, -1 = off / >0 = on [rad s/m] + INTEGER(IntKi) :: F_LPFType ! {1: first-order low-pass filter, 2: second-order low-pass filter}, [rad/s] + INTEGER(IntKi) :: F_NotchType ! Notch on the measured generator speed {0: disable, 1: enable} + REAL(DbKi) :: F_LPFCornerFreq ! Corner frequency (-3dB point) in the first-order low-pass filter, [rad/s] + REAL(DbKi) :: F_LPFDamping ! Damping coefficient [used only when F_FilterType = 2] + REAL(DbKi) :: F_NotchCornerFreq ! Natural frequency of the notch filter, [rad/s] + REAL(DbKi), DIMENSION(:), ALLOCATABLE :: F_NotchBetaNumDen ! These two notch damping values (numerator and denominator) determines the width and depth of the notch + REAL(DbKi) :: F_SSCornerFreq ! Setpoint Smoother mode {0: no setpoint smoothing, 1: introduce setpoint smoothing} + REAL(DbKi) :: F_WECornerFreq ! Corner frequency (-3dB point) in the first order low pass filter for the wind speed estimate [rad/s] + REAL(DbKi), DIMENSION(:), ALLOCATABLE :: F_FlCornerFreq ! Corner frequency (-3dB point) in the second order low pass filter of the tower-top fore-aft motion for floating feedback control [rad/s]. + REAL(DbKi) :: F_FlHighPassFreq ! Natural frequency of first-roder high-pass filter for nacelle fore-aft motion [rad/s] + REAL(DbKi), DIMENSION(:), ALLOCATABLE :: F_FlpCornerFreq ! Corner frequency (-3dB point) in the second order low pass filter of the blade root bending moment for flap control [rad/s]. + + REAL(DbKi) :: FA_HPFCornerFreq ! Corner frequency (-3dB point) in the high-pass filter on the fore-aft acceleration signal [rad/s] + REAL(DbKi) :: FA_IntSat ! Integrator saturation (maximum signal amplitude contrbution to pitch from FA damper), [rad] + REAL(DbKi) :: 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} - REAL(8) :: IPC_IntSat ! Integrator saturation (maximum signal amplitude contrbution to pitch from IPC) - REAL(8), DIMENSION(:), ALLOCATABLE :: IPC_KI ! Integral gain for the individual pitch controller, [-]. 8E-10 - REAL(8), DIMENSION(:), ALLOCATABLE :: IPC_aziOffset ! Phase offset added to the azimuth angle for the individual pitch controller, [rad]. - REAL(8) :: IPC_CornerFreqAct ! Corner frequency of the first-order actuators model, to induce a phase lag in the IPC signal {0: Disable}, [rad/s] + INTEGER(IntKi) :: IPC_ControlMode ! Turn Individual Pitch Control (IPC) for fatigue load reductions (pitch contribution) {0: off, 1: 1P reductions, 2: 1P+2P reductions} + REAL(DbKi) :: IPC_IntSat ! Integrator saturation (maximum signal amplitude contrbution to pitch from IPC) + REAL(DbKi), DIMENSION(:), ALLOCATABLE :: IPC_KI ! Integral gain for the individual pitch controller, [-]. 8E-10 + REAL(DbKi), DIMENSION(:), ALLOCATABLE :: IPC_aziOffset ! Phase offset added to the azimuth angle for the individual pitch controller, [rad]. + REAL(DbKi) :: 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(8), DIMENSION(:), ALLOCATABLE :: PC_GS_angles ! Gain-schedule table: pitch angles - REAL(8), DIMENSION(:), ALLOCATABLE :: PC_GS_KP ! Gain-schedule table: pitch controller kp gains - REAL(8), DIMENSION(:), ALLOCATABLE :: PC_GS_KI ! Gain-schedule table: pitch controller ki gains - REAL(8), DIMENSION(:), ALLOCATABLE :: PC_GS_KD ! Gain-schedule table: pitch controller kd gains - REAL(8), DIMENSION(:), ALLOCATABLE :: PC_GS_TF ! Gain-schedule table: pitch controller tf gains (derivative filter) - REAL(8) :: PC_MaxPit ! Maximum physical pitch limit, [rad]. - REAL(8) :: PC_MinPit ! Minimum physical pitch limit, [rad]. - REAL(8) :: PC_MaxRat ! Maximum pitch rate (in absolute value) in pitch controller, [rad/s]. - REAL(8) :: PC_MinRat ! Minimum pitch rate (in absolute value) in pitch controller, [rad/s]. - REAL(8) :: PC_RefSpd ! Desired (reference) HSS speed for pitch controller, [rad/s]. - REAL(8) :: PC_FinePit ! Record 5: Below-rated pitch angle set-point (deg) [used only with Bladed Interface] - REAL(8) :: PC_Switch ! Angle above lowest minimum pitch angle for switch [rad] + INTEGER(IntKi) :: PC_ControlMode ! Blade pitch control mode {0: No pitch, fix to fine pitch, 1: active PI blade pitch control} + INTEGER(IntKi) :: PC_GS_n ! Amount of gain-scheduling table entries + REAL(DbKi), DIMENSION(:), ALLOCATABLE :: PC_GS_angles ! Gain-schedule table: pitch angles + REAL(DbKi), DIMENSION(:), ALLOCATABLE :: PC_GS_KP ! Gain-schedule table: pitch controller kp gains + REAL(DbKi), DIMENSION(:), ALLOCATABLE :: PC_GS_KI ! Gain-schedule table: pitch controller ki gains + REAL(DbKi), DIMENSION(:), ALLOCATABLE :: PC_GS_KD ! Gain-schedule table: pitch controller kd gains + REAL(DbKi), DIMENSION(:), ALLOCATABLE :: PC_GS_TF ! Gain-schedule table: pitch controller tf gains (derivative filter) + REAL(DbKi) :: PC_MaxPit ! Maximum physical pitch limit, [rad]. + REAL(DbKi) :: PC_MinPit ! Minimum physical pitch limit, [rad]. + REAL(DbKi) :: PC_MaxRat ! Maximum pitch rate (in absolute value) in pitch controller, [rad/s]. + REAL(DbKi) :: PC_MinRat ! Minimum pitch rate (in absolute value) in pitch controller, [rad/s]. + REAL(DbKi) :: PC_RefSpd ! Desired (reference) HSS speed for pitch controller, [rad/s]. + REAL(DbKi) :: PC_FinePit ! Record 5: Below-rated pitch angle set-point (deg) [used only with Bladed Interface] + REAL(DbKi) :: 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, 2: TSR Tracking, 3: TSR Tracking w/ const power} - REAL(8) :: VS_GenEff ! Generator efficiency mechanical power -> electrical power [-] - REAL(8) :: VS_ArSatTq ! Above rated generator torque PI control saturation, [Nm] -- 212900 - REAL(8) :: VS_MaxRat ! Maximum torque rate (in absolute value) in torque controller, [Nm/s]. - REAL(8) :: VS_MaxTq ! Maximum generator torque in Region 3 (HSS side), [Nm]. -- chosen to be 10% above VS_RtTq - REAL(8) :: VS_MinTq ! Minimum generator (HSS side), [Nm]. - REAL(8) :: VS_MinOMSpd ! Optimal mode minimum speed, [rad/s] - REAL(8) :: VS_Rgn2K ! Generator torque constant in Region 2 (HSS side), N-m/(rad/s)^2 - REAL(8) :: VS_RtPwr ! Wind turbine rated power [W] - REAL(8) :: VS_RtTq ! Rated torque, [Nm]. - REAL(8) :: VS_RefSpd ! Rated generator speed [rad/s] - INTEGER(4) :: VS_n ! Number of controller gains - REAL(8), DIMENSION(:), ALLOCATABLE :: VS_KP ! Proportional gain for generator PI torque controller, used in the transitional 2.5 region - REAL(8), DIMENSION(:), ALLOCATABLE :: VS_KI ! Integral gain for generator PI torque controller, used in the transitional 2.5 region - REAL(8) :: VS_TSRopt ! Power-maximizing region 2 tip-speed ratio [rad] + INTEGER(IntKi) :: VS_ControlMode ! Generator torque control mode in above rated conditions {0: constant torque, 1: constant power, 2: TSR Tracking, 3: TSR Tracking w/ const power} + REAL(DbKi) :: VS_GenEff ! Generator efficiency mechanical power -> electrical power [-] + REAL(DbKi) :: VS_ArSatTq ! Above rated generator torque PI control saturation, [Nm] -- 212900 + REAL(DbKi) :: VS_MaxRat ! Maximum torque rate (in absolute value) in torque controller, [Nm/s]. + REAL(DbKi) :: VS_MaxTq ! Maximum generator torque in Region 3 (HSS side), [Nm]. -- chosen to be 10% above VS_RtTq + REAL(DbKi) :: VS_MinTq ! Minimum generator (HSS side), [Nm]. + REAL(DbKi) :: VS_MinOMSpd ! Optimal mode minimum speed, [rad/s] + REAL(DbKi) :: VS_Rgn2K ! Generator torque constant in Region 2 (HSS side), N-m/(rad/s)^2 + REAL(DbKi) :: VS_RtPwr ! Wind turbine rated power [W] + REAL(DbKi) :: VS_RtTq ! Rated torque, [Nm]. + REAL(DbKi) :: VS_RefSpd ! Rated generator speed [rad/s] + INTEGER(IntKi) :: VS_n ! Number of controller gains + REAL(DbKi), DIMENSION(:), ALLOCATABLE :: VS_KP ! Proportional gain for generator PI torque controller, used in the transitional 2.5 region + REAL(DbKi), DIMENSION(:), ALLOCATABLE :: VS_KI ! Integral gain for generator PI torque controller, used in the transitional 2.5 region + REAL(DbKi) :: 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(8) :: SS_VSGain ! Variable speed torque controller setpoint smoother gain, [-]. - REAL(8) :: 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(8) :: WE_BladeRadius ! Blade length [m] - INTEGER(4) :: WE_CP_n ! Amount of parameters in the Cp array - REAL(8), DIMENSION(:), ALLOCATABLE :: WE_CP ! Parameters that define the parameterized CP(\lambda) function - REAL(8) :: WE_Gamma ! Adaption gain of the wind speed estimator algorithm [m/rad] - REAL(8) :: WE_GearboxRatio ! Gearbox ratio, >=1 [-] - REAL(8) :: WE_Jtot ! Total drivetrain inertia, including blades, hub and casted generator inertia to LSS [kg m^2] - REAL(8) :: WE_RhoAir ! Air density [kg m^-3] + INTEGER(IntKi) :: SS_Mode ! Setpoint Smoother mode {0: no setpoint smoothing, 1: introduce setpoint smoothing} + REAL(DbKi) :: SS_VSGain ! Variable speed torque controller setpoint smoother gain, [-]. + REAL(DbKi) :: SS_PCGain ! Collective pitch controller setpoint smoother gain, [-]. + + INTEGER(IntKi) :: 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(DbKi) :: WE_BladeRadius ! Blade length [m] + INTEGER(IntKi) :: WE_CP_n ! Amount of parameters in the Cp array + REAL(DbKi), DIMENSION(:), ALLOCATABLE :: WE_CP ! Parameters that define the parameterized CP(\lambda) function + REAL(DbKi) :: WE_Gamma ! Adaption gain of the wind speed estimator algorithm [m/rad] + REAL(DbKi) :: WE_GearboxRatio ! Gearbox ratio, >=1 [-] + REAL(DbKi) :: WE_Jtot ! Total drivetrain inertia, including blades, hub and casted generator inertia to LSS [kg m^2] + REAL(DbKi) :: WE_RhoAir ! Air density [kg m^-3] 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(8), DIMENSION(:), ALLOCATABLE :: WE_FOPoles_v ! Wind speeds corresponding to first-order system poles [m/s] - REAL(8), 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(8) :: Y_ErrThresh ! Error threshold [rad]. Turbine begins to yaw when it passes this. (104.71975512) -- 1.745329252 - REAL(8) :: 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) - REAL(8), DIMENSION(:), ALLOCATABLE :: Y_IPC_KP ! Yaw-by-IPC proportional controller gain Kp - REAL(8), DIMENSION(:), ALLOCATABLE :: Y_IPC_KI ! Yaw-by-IPC integral controller gain Ki - REAL(8) :: Y_IPC_omegaLP ! Low-pass filter corner frequency for the Yaw-by-IPC controller to filtering the yaw alignment error, [rad/s]. - REAL(8) :: Y_IPC_zetaLP ! Low-pass filter damping factor for the Yaw-by-IPC controller to filtering the yaw alignment error, [-]. - REAL(8) :: Y_MErrSet ! Yaw alignment error, setpoint [rad] - REAL(8) :: Y_omegaLPFast ! Corner frequency fast low pass filter, 1.0 [Hz] - REAL(8) :: Y_omegaLPSlow ! Corner frequency slow low pass filter, 1/60 [Hz] - REAL(8) :: Y_Rate ! Yaw rate [rad/s] + INTEGER(IntKi), 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(IntKi) :: WE_FOPoles_N ! Number of first-order system poles used in EKF + REAL(DbKi), DIMENSION(:), ALLOCATABLE :: WE_FOPoles_v ! Wind speeds corresponding to first-order system poles [m/s] + REAL(DbKi), DIMENSION(:), ALLOCATABLE :: WE_FOPoles ! First order system poles + + INTEGER(IntKi) :: Y_ControlMode ! Yaw control mode {0: no yaw control, 1: yaw rate control, 2: yaw-by-IPC} + REAL(DbKi) :: Y_ErrThresh ! Error threshold [rad]. Turbine begins to yaw when it passes this. (104.71975512) -- 1.745329252 + REAL(DbKi) :: Y_IPC_IntSat ! Integrator saturation (maximum signal amplitude contrbution to pitch from yaw-by-IPC) + INTEGER(IntKi) :: Y_IPC_n ! Number of controller gains (yaw-by-IPC) + REAL(DbKi), DIMENSION(:), ALLOCATABLE :: Y_IPC_KP ! Yaw-by-IPC proportional controller gain Kp + REAL(DbKi), DIMENSION(:), ALLOCATABLE :: Y_IPC_KI ! Yaw-by-IPC integral controller gain Ki + REAL(DbKi) :: Y_IPC_omegaLP ! Low-pass filter corner frequency for the Yaw-by-IPC controller to filtering the yaw alignment error, [rad/s]. + REAL(DbKi) :: Y_IPC_zetaLP ! Low-pass filter damping factor for the Yaw-by-IPC controller to filtering the yaw alignment error, [-]. + REAL(DbKi) :: Y_MErrSet ! Yaw alignment error, setpoint [rad] + REAL(DbKi) :: Y_omegaLPFast ! Corner frequency fast low pass filter, 1.0 [Hz] + REAL(DbKi) :: Y_omegaLPSlow ! Corner frequency slow low pass filter, 1/60 [Hz] + REAL(DbKi) :: Y_Rate ! Yaw rate [rad/s] - INTEGER(4) :: PS_Mode ! Pitch saturation mode {0: no peak shaving, 1: implement pitch saturation} - 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(8), DIMENSION(:), ALLOCATABLE :: PS_WindSpeeds ! Wind speeds corresponding to minimum blade pitch angles [m/s] - REAL(8), 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(8) :: SD_MaxPit ! Maximum blade pitch angle to initiate shutdown, [rad] - REAL(8) :: SD_CornerFreq ! Cutoff Frequency for first order low-pass filter for blade pitch angle, [rad/s] + INTEGER(IntKi) :: PS_Mode ! Pitch saturation mode {0: no peak shaving, 1: implement pitch saturation} + INTEGER(IntKi) :: PS_BldPitchMin_N ! Number of values in minimum blade pitch lookup table (should equal number of values in PS_WindSpeeds and PS_BldPitchMin) + REAL(DbKi), DIMENSION(:), ALLOCATABLE :: PS_WindSpeeds ! Wind speeds corresponding to minimum blade pitch angles [m/s] + REAL(DbKi), DIMENSION(:), ALLOCATABLE :: PS_BldPitchMin ! Minimum blade pitch angles [rad] + + INTEGER(IntKi) :: SD_Mode ! Shutdown mode {0: no shutdown procedure, 1: pitch to max pitch at shutdown} + REAL(DbKi) :: SD_MaxPit ! Maximum blade pitch angle to initiate shutdown, [rad] + REAL(DbKi) :: SD_CornerFreq ! Cutoff Frequency for first order low-pass filter for blade pitch angle, [rad/s] - INTEGER(4) :: Fl_Mode ! Floating specific feedback mode {0: no nacelle velocity feedback, 1: nacelle velocity feedback} - REAL(8) :: Fl_Kp ! Nacelle velocity proportional feedback gain [s] - - INTEGER(4) :: Flp_Mode ! Flap actuator mode {0: off, 1: fixed flap position, 2: PI flap control} - REAL(8) :: Flp_Angle ! Fixed flap angle (degrees) - REAL(8) :: Flp_Kp ! PI flap control proportional gain - REAL(8) :: Flp_Ki ! PI flap control integral gain - REAL(8) :: Flp_MaxPit ! Maximum (and minimum) flap pitch angle [rad] + INTEGER(IntKi) :: Fl_Mode ! Floating specific feedback mode {0: no nacelle velocity feedback, 1: nacelle velocity feedback} + REAL(DbKi) :: Fl_Kp ! Nacelle velocity proportional feedback gain [s] + + INTEGER(IntKi) :: Flp_Mode ! Flap actuator mode {0: off, 1: fixed flap position, 2: PI flap control} + REAL(DbKi) :: Flp_Angle ! Fixed flap angle (degrees) + REAL(DbKi) :: Flp_Kp ! PI flap control proportional gain + REAL(DbKi) :: Flp_Ki ! PI flap control integral gain + REAL(DbKi) :: Flp_MaxPit ! Maximum (and minimum) flap pitch angle [rad] - REAL(8) :: PC_RtTq99 ! 99% of the rated torque value, using for switching between pitch and torque control, [Nm]. - REAL(8) :: VS_MaxOMTq ! Maximum torque at the end of the below-rated region 2, [Nm] - REAL(8) :: VS_MinOMTq ! Minimum torque at the beginning of the below-rated region 2, [Nm] + REAL(DbKi) :: PC_RtTq99 ! 99% of the rated torque value, using for switching between pitch and torque control, [Nm]. + REAL(DbKi) :: VS_MaxOMTq ! Maximum torque at the end of the below-rated region 2, [Nm] + REAL(DbKi) :: VS_MinOMTq ! Minimum torque at the beginning of the below-rated region 2, [Nm] END TYPE ControlParameters TYPE, PUBLIC :: LocalVariables ! ---------- From avrSWAP ---------- - INTEGER(4) :: iStatus - REAL(8) :: Time - REAL(8) :: DT - REAL(8) :: VS_GenPwr - REAL(8) :: GenSpeed - REAL(8) :: RotSpeed - REAL(8) :: Y_M - REAL(8) :: HorWindV - REAL(8) :: rootMOOP(3) - REAL(8) :: BlPitch(3) - REAL(8) :: Azimuth - INTEGER(4) :: NumBl - REAL(8) :: FA_Acc ! Tower fore-aft acceleration [m/s^2] - REAL(8) :: NacIMU_FA_Acc ! Tower fore-aft acceleration [rad/s^2] + INTEGER(IntKi) :: iStatus + REAL(DbKi) :: Time + REAL(DbKi) :: DT + REAL(DbKi) :: VS_GenPwr + REAL(DbKi) :: GenSpeed + REAL(DbKi) :: RotSpeed + REAL(DbKi) :: Y_M + REAL(DbKi) :: HorWindV + REAL(DbKi) :: rootMOOP(3) + REAL(DbKi) :: BlPitch(3) + REAL(DbKi) :: Azimuth + INTEGER(IntKi) :: NumBl + REAL(DbKi) :: FA_Acc ! Tower fore-aft acceleration [m/s^2] + REAL(DbKi) :: NacIMU_FA_Acc ! Tower fore-aft acceleration [rad/s^2] ! ---------- -Internal controller variables ---------- - REAL(8) :: FA_AccHPF ! High-pass filtered fore-aft acceleration [m/s^2] - REAL(8) :: FA_AccHPFI ! Tower velocity, high-pass filtered and integrated fore-aft acceleration [m/s] - REAL(8) :: FA_PitCom(3) ! Tower fore-aft vibration damping pitch contribution [rad] - REAL(8) :: RotSpeedF ! Filtered LSS (generator) speed [rad/s]. - REAL(8) :: GenSpeedF ! Filtered HSS (generator) speed [rad/s]. - REAL(8) :: GenTq ! Electrical generator torque, [Nm]. - REAL(8) :: GenTqMeas ! Measured generator torque [Nm] - REAL(8) :: GenArTq ! Electrical generator torque, for above-rated PI-control [Nm]. - REAL(8) :: GenBrTq ! Electrical generator torque, for below-rated PI-control [Nm]. - REAL(8) :: IPC_PitComF(3) ! Commanded pitch of each blade as calculated by the individual pitch controller, F stands for low-pass filtered [rad]. - REAL(8) :: PC_KP ! Proportional gain for pitch controller at rated pitch (zero) [s]. - REAL(8) :: PC_KI ! Integral gain for pitch controller at rated pitch (zero) [-]. - REAL(8) :: PC_KD ! Differential gain for pitch controller at rated pitch (zero) [-]. - REAL(8) :: PC_TF ! First-order filter parameter for derivative action - REAL(8) :: PC_MaxPit ! Maximum pitch setting in pitch controller (variable) [rad]. - REAL(8) :: PC_MinPit ! Minimum pitch setting in pitch controller (variable) [rad]. - REAL(8) :: PC_PitComT ! Total command pitch based on the sum of the proportional and integral terms [rad]. - REAL(8) :: PC_PitComTF ! Filtered Total command pitch based on the sum of the proportional and integral terms [rad]. - REAL(8) :: PC_PitComT_IPC(3) ! Total command pitch based on the sum of the proportional and integral terms, including IPC term [rad]. - REAL(8) :: PC_PwrErr ! Power error with respect to rated power [W] - REAL(8) :: PC_SineExcitation ! Sine contribution to pitch signal - REAL(8) :: PC_SpdErr ! Current speed error (pitch control) [rad/s]. - INTEGER(4) :: PC_State ! State of the pitch control system - REAL(8) :: PitCom(3) ! Commanded pitch of each blade the last time the controller was called [rad]. - REAL(8) :: SS_DelOmegaF ! Filtered setpoint shifting term defined in setpoint smoother [rad/s]. - REAL(8) :: TestType ! Test variable, no use - REAL(8) :: VS_MaxTq ! Maximum allowable generator torque [Nm]. - REAL(8) :: VS_LastGenTrq ! Commanded electrical generator torque the last time the controller was called [Nm]. - REAL(8) :: VS_LastGenPwr ! Commanded electrical generator torque the last time the controller was called [Nm]. - REAL(8) :: VS_MechGenPwr ! Mechanical power on the generator axis [W] - REAL(8) :: VS_SpdErrAr ! Current speed error for region 2.5 PI controller (generator torque control) [rad/s]. - REAL(8) :: VS_SpdErrBr ! Current speed error for region 1.5 PI controller (generator torque control) [rad/s]. - REAL(8) :: 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(8) :: VS_Rgn3Pitch ! Pitch angle at which the state machine switches to region 3, [rad]. - REAL(8) :: WE_Vw ! Estimated wind speed [m/s] - REAL(8) :: WE_Vw_F ! Filtered estimated wind speed [m/s] - REAL(8) :: WE_VwI ! Integrated wind speed quantity for estimation [m/s] - REAL(8) :: WE_VwIdot ! Differentiated integrated wind speed quantity for estimation [m/s] - REAL(8) :: VS_LastGenTrqF ! Differentiated integrated wind speed quantity for estimation [m/s] - REAL(8) :: Y_AccErr ! Accumulated yaw error [rad]. - REAL(8) :: Y_ErrLPFFast ! Filtered yaw error by fast low pass filter [rad]. - REAL(8) :: Y_ErrLPFSlow ! Filtered yaw error by slow low pass filter [rad]. - REAL(8) :: Y_MErr ! Measured yaw error, measured + setpoint [rad]. - REAL(8) :: Y_YawEndT ! Yaw end time [s]. Indicates the time up until which yaw is active with a fixed rate + REAL(DbKi) :: FA_AccHPF ! High-pass filtered fore-aft acceleration [m/s^2] + REAL(DbKi) :: FA_AccHPFI ! Tower velocity, high-pass filtered and integrated fore-aft acceleration [m/s] + REAL(DbKi) :: FA_PitCom(3) ! Tower fore-aft vibration damping pitch contribution [rad] + REAL(DbKi) :: RotSpeedF ! Filtered LSS (generator) speed [rad/s]. + REAL(DbKi) :: GenSpeedF ! Filtered HSS (generator) speed [rad/s]. + REAL(DbKi) :: GenTq ! Electrical generator torque, [Nm]. + REAL(DbKi) :: GenTqMeas ! Measured generator torque [Nm] + REAL(DbKi) :: GenArTq ! Electrical generator torque, for above-rated PI-control [Nm]. + REAL(DbKi) :: GenBrTq ! Electrical generator torque, for below-rated PI-control [Nm]. + REAL(DbKi) :: IPC_PitComF(3) ! Commanded pitch of each blade as calculated by the individual pitch controller, F stands for low-pass filtered [rad]. + REAL(DbKi) :: PC_KP ! Proportional gain for pitch controller at rated pitch (zero) [s]. + REAL(DbKi) :: PC_KI ! Integral gain for pitch controller at rated pitch (zero) [-]. + REAL(DbKi) :: PC_KD ! Differential gain for pitch controller at rated pitch (zero) [-]. + REAL(DbKi) :: PC_TF ! First-order filter parameter for derivative action + REAL(DbKi) :: PC_MaxPit ! Maximum pitch setting in pitch controller (variable) [rad]. + REAL(DbKi) :: PC_MinPit ! Minimum pitch setting in pitch controller (variable) [rad]. + REAL(DbKi) :: PC_PitComT ! Total command pitch based on the sum of the proportional and integral terms [rad]. + REAL(DbKi) :: PC_PitComTF ! Filtered Total command pitch based on the sum of the proportional and integral terms [rad]. + REAL(DbKi) :: PC_PitComT_IPC(3) ! Total command pitch based on the sum of the proportional and integral terms, including IPC term [rad]. + REAL(DbKi) :: PC_PwrErr ! Power error with respect to rated power [W] + REAL(DbKi) :: PC_SineExcitation ! Sine contribution to pitch signal + REAL(DbKi) :: PC_SpdErr ! Current speed error (pitch control) [rad/s]. + INTEGER(IntKi) :: PC_State ! State of the pitch control system + REAL(DbKi) :: PitCom(3) ! Commanded pitch of each blade the last time the controller was called [rad]. + REAL(DbKi) :: SS_DelOmegaF ! Filtered setpoint shifting term defined in setpoint smoother [rad/s]. + REAL(DbKi) :: TestType ! Test variable, no use + REAL(DbKi) :: VS_MaxTq ! Maximum allowable generator torque [Nm]. + REAL(DbKi) :: VS_LastGenTrq ! Commanded electrical generator torque the last time the controller was called [Nm]. + REAL(DbKi) :: VS_LastGenPwr ! Commanded electrical generator torque the last time the controller was called [Nm]. + REAL(DbKi) :: VS_MechGenPwr ! Mechanical power on the generator axis [W] + REAL(DbKi) :: VS_SpdErrAr ! Current speed error for region 2.5 PI controller (generator torque control) [rad/s]. + REAL(DbKi) :: VS_SpdErrBr ! Current speed error for region 1.5 PI controller (generator torque control) [rad/s]. + REAL(DbKi) :: VS_SpdErr ! Current speed error for tip-speed-ratio tracking controller (generator torque control) [rad/s]. + INTEGER(IntKi) :: VS_State ! State of the torque control system + REAL(DbKi) :: VS_Rgn3Pitch ! Pitch angle at which the state machine switches to region 3, [rad]. + REAL(DbKi) :: WE_Vw ! Estimated wind speed [m/s] + REAL(DbKi) :: WE_Vw_F ! Filtered estimated wind speed [m/s] + REAL(DbKi) :: WE_VwI ! Integrated wind speed quantity for estimation [m/s] + REAL(DbKi) :: WE_VwIdot ! Differentiated integrated wind speed quantity for estimation [m/s] + REAL(DbKi) :: VS_LastGenTrqF ! Differentiated integrated wind speed quantity for estimation [m/s] + REAL(DbKi) :: Y_AccErr ! Accumulated yaw error [rad]. + REAL(DbKi) :: Y_ErrLPFFast ! Filtered yaw error by fast low pass filter [rad]. + REAL(DbKi) :: Y_ErrLPFSlow ! Filtered yaw error by slow low pass filter [rad]. + REAL(DbKi) :: Y_MErr ! Measured yaw error, measured + setpoint [rad]. + REAL(DbKi) :: 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 - REAL(8) :: Fl_PitCom ! Shutdown, .FALSE. if inactive, .TRUE. if active - REAL(8) :: NACIMU_FA_AccF - REAL(8) :: FA_AccF - REAL(8) :: Flp_Angle(3) ! Flap Angle (rad) + REAL(DbKi) :: Fl_PitCom ! Shutdown, .FALSE. if inactive, .TRUE. if active + REAL(DbKi) :: NACIMU_FA_AccF + REAL(DbKi) :: FA_AccF + REAL(DbKi) :: Flp_Angle(3) ! Flap Angle (rad) END TYPE LocalVariables TYPE, PUBLIC :: ObjectInstances - INTEGER(4) :: instLPF - INTEGER(4) :: instSecLPF - INTEGER(4) :: instHPF - INTEGER(4) :: instNotchSlopes - INTEGER(4) :: instNotch - INTEGER(4) :: instPI + INTEGER(IntKi) :: instLPF + INTEGER(IntKi) :: instSecLPF + INTEGER(IntKi) :: instHPF + INTEGER(IntKi) :: instNotchSlopes + INTEGER(IntKi) :: instNotch + INTEGER(IntKi) :: instPI END TYPE ObjectInstances TYPE, PUBLIC :: PerformanceData - REAL(8), DIMENSION(:), ALLOCATABLE :: TSR_vec - REAL(8), DIMENSION(:), ALLOCATABLE :: Beta_vec - REAL(8), DIMENSION(:,:), ALLOCATABLE :: Cp_mat - REAL(8), DIMENSION(:,:), ALLOCATABLE :: Ct_mat - REAL(8), DIMENSION(:,:), ALLOCATABLE :: Cq_mat + REAL(DbKi), DIMENSION(:), ALLOCATABLE :: TSR_vec + REAL(DbKi), DIMENSION(:), ALLOCATABLE :: Beta_vec + REAL(DbKi), DIMENSION(:,:), ALLOCATABLE :: Cp_mat + REAL(DbKi), DIMENSION(:,:), ALLOCATABLE :: Ct_mat + REAL(DbKi), DIMENSION(:,:), ALLOCATABLE :: Cq_mat END TYPE PerformanceData TYPE, PUBLIC :: DebugVariables ! Variables used for debug purposes - REAL(8) :: WE_Cp ! Cp that WSE uses to determine aerodynamic torque[-] - REAL(8) :: WE_b ! Pitch that WSE uses to determine aerodynamic torque[-] - REAL(8) :: WE_w ! Rotor Speed that WSE uses to determine aerodynamic torque[-] - REAL(8) :: WE_t ! Torque that WSE uses[-] - REAL(8) :: WE_Vm ! Mean wind speed component in WSE [m/s] - REAL(8) :: WE_Vt ! Turbulent wind speed component in WSE [m/s] - REAL(8) :: WE_lambda ! TSR in WSE [rad] + REAL(DbKi) :: WE_Cp ! Cp that WSE uses to determine aerodynamic torque[-] + REAL(DbKi) :: WE_b ! Pitch that WSE uses to determine aerodynamic torque[-] + REAL(DbKi) :: WE_w ! Rotor Speed that WSE uses to determine aerodynamic torque[-] + REAL(DbKi) :: WE_t ! Torque that WSE uses[-] + REAL(DbKi) :: WE_Vm ! Mean wind speed component in WSE [m/s] + REAL(DbKi) :: WE_Vt ! Turbulent wind speed component in WSE [m/s] + REAL(DbKi) :: WE_lambda ! TSR in WSE [rad] ! - REAL(8) :: PC_PICommand + REAL(DbKi) :: PC_PICommand END TYPE DebugVariables TYPE, PUBLIC :: ErrorVariables ! Error Catching - INTEGER(4) :: size_avcMSG + INTEGER(IntKi) :: size_avcMSG INTEGER(C_INT) :: 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. ! CHARACTER(:), ALLOCATABLE :: ErrMsg ! a Fortran version of the C string argument (not considered an array here) [subtract 1 for the C null-character] CHARACTER(:), ALLOCATABLE :: ErrMsg ! a Fortran version of the C string argument (not considered an array here) [subtract 1 for the C null-character] END TYPE ErrorVariables -END MODULE ROSCO_Types +END MODULE ROSCO_Types \ No newline at end of file diff --git a/ROSCO/src/ReadSetParameters.f90 b/ROSCO/src/ReadSetParameters.f90 index 1203d046..b9c61531 100644 --- a/ROSCO/src/ReadSetParameters.f90 +++ b/ROSCO/src/ReadSetParameters.f90 @@ -43,7 +43,7 @@ MODULE ReadSetParameters SUBROUTINE ReadAvrSWAP(avrSWAP, LocalVar) 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. + REAL(ReKi), INTENT(INOUT) :: avrSWAP(*) ! The swap array, used to pass data to, and receive data from, the DLL controller. TYPE(LocalVariables), INTENT(INOUT) :: LocalVar ! Load variables from calling program (See Appendix A of Bladed User's Guide): @@ -83,8 +83,8 @@ SUBROUTINE SetParameters(avrSWAP, accINFILE, size_avcMSG, CntrPar, LocalVar, obj USE ROSCO_Types, ONLY : ControlParameters, LocalVariables, ObjectInstances, PerformanceData, ErrorVariables - REAL(C_FLOAT), INTENT(INOUT) :: avrSWAP(*) ! The swap array, used to pass data to, and receive data from, the DLL controller. - CHARACTER(C_CHAR), INTENT(IN ) :: accINFILE(NINT(avrSWAP(50))) ! The name of the parameter input file + REAL(ReKi), INTENT(INOUT) :: avrSWAP(*) ! The swap array, used to pass data to, and receive data from, the DLL controller. + CHARACTER(C_CHAR), INTENT(IN ) :: accINFILE(NINT(avrSWAP(50))) ! The name of the parameter input file INTEGER(4), INTENT(IN ) :: size_avcMSG TYPE(ControlParameters), INTENT(INOUT) :: CntrPar @@ -191,13 +191,13 @@ SUBROUTINE ReadControlParameterFileSub(CntrPar, accINFILE, accINFILE_size,ErrVar USE, INTRINSIC :: ISO_C_Binding USE ROSCO_Types, ONLY : ControlParameters, ErrorVariables - INTEGER(4) :: accINFILE_size ! size of DISCON input filename, INTENT(IN) here?? + INTEGER(IntKi) :: accINFILE_size ! size of DISCON input filename CHARACTER(accINFILE_size), INTENT(IN ) :: accINFILE(accINFILE_size) ! DISCON input filename + INTEGER(IntKi), PARAMETER :: UnControllerParameters = 89 ! Unit number to open file TYPE(ControlParameters), INTENT(INOUT) :: CntrPar ! Control parameter type TYPE(ErrorVariables), INTENT(INOUT) :: ErrVar ! Control parameter type - INTEGER(4), PARAMETER :: UnControllerParameters = 89 ! Unit number to open file - INTEGER(4) :: CurLine + INTEGER(IntKi) :: CurLine CHARACTER(*), PARAMETER :: RoutineName = 'ReadControlParameterFileSub' @@ -241,7 +241,9 @@ SUBROUTINE ReadControlParameterFileSub(CntrPar, accINFILE, accINFILE_size,ErrVar CALL ParseInput(UnControllerParameters,CurLine,'F_NotchCornerFreq',accINFILE(1),CntrPar%F_NotchCornerFreq,ErrVar) CALL ParseAry(UnControllerParameters, CurLine, 'F_NotchBetaNumDen', CntrPar%F_NotchBetaNumDen, 2, accINFILE(1), ErrVar ) CALL ParseInput(UnControllerParameters,CurLine,'F_SSCornerFreq',accINFILE(1),CntrPar%F_SSCornerFreq,ErrVar) + CALL ParseInput(UnControllerParameters,CurLine,'F_WECornerFreq',accINFILE(1),CntrPar%F_WECornerFreq,ErrVar) CALL ParseAry(UnControllerParameters, CurLine, 'F_FlCornerFreq', CntrPar%F_FlCornerFreq, 2, accINFILE(1), ErrVar ) + CALL ParseInput(UnControllerParameters,CurLine,'F_FlHighPassFreq',accINFILE(1),CntrPar%F_FlHighPassFreq,ErrVar) CALL ParseAry(UnControllerParameters, CurLine, 'F_FlpCornerFreq', CntrPar%F_FlpCornerFreq, 2, accINFILE(1), ErrVar ) CALL ReadEmptyLine(UnControllerParameters,CurLine) @@ -388,12 +390,12 @@ SUBROUTINE ReadCpFile(CntrPar,PerfData, ErrVar) TYPE(ErrorVariables), INTENT(INOUT) :: ErrVar ! Local variables - INTEGER(4), PARAMETER :: UnPerfParameters = 89 - INTEGER(4) :: i ! iteration index + INTEGER(IntKi), PARAMETER :: UnPerfParameters = 89 + INTEGER(IntKi) :: i ! iteration index - INTEGER(4) :: CurLine - CHARACTER(*), PARAMETER :: RoutineName = 'ReadCpFile' - REAL(8), DIMENSION(:), ALLOCATABLE :: TmpPerf + INTEGER(IntKi) :: CurLine + CHARACTER(*), PARAMETER :: RoutineName = 'ReadCpFile' + REAL(DbKi), DIMENSION(:), ALLOCATABLE :: TmpPerf CurLine = 1 @@ -453,8 +455,8 @@ SUBROUTINE CheckInputs(LocalVar, CntrPar, avrSWAP, ErrVar, size_avcMSG) TYPE(ControlParameters), INTENT(IN ) :: CntrPar TYPE(LocalVariables), INTENT(IN ) :: LocalVar TYPE(ErrorVariables), INTENT(INOUT) :: ErrVar - INTEGER(4), INTENT(IN ) :: size_avcMSG - REAL(C_FLOAT), INTENT(IN ) :: avrSWAP(*) ! The swap array, used to pass data to, and receive data from, the DLL controller. + INTEGER(IntKi), INTENT(IN ) :: size_avcMSG + REAL(ReKi), INTENT(IN ) :: avrSWAP(*) ! The swap array, used to pass data to, and receive data from, the DLL controller. CHARACTER(*), PARAMETER :: RoutineName = 'CheckInputs' ! Local @@ -594,6 +596,18 @@ SUBROUTINE CheckInputs(LocalVar, CntrPar, avrSWAP, ErrVar, size_avcMSG) ErrVar%ErrMsg = 'F_SSCornerFreq must be greater than zero.' ENDIF + ! F_WECornerFreq + IF (CntrPar%F_WECornerFreq <= 0.0) THEN + ErrVar%aviFAIL = -1 + ErrVar%ErrMsg = 'F_WECornerFreq must be greater than zero.' + ENDIF + + ! F_FlHighPassFreq + IF (CntrPar%F_FlHighPassFreq <= 0.0) THEN + ErrVar%aviFAIL = -1 + ErrVar%ErrMsg = 'F_FlHighPassFreq must be greater than zero.' + ENDIF + IF (CntrPar%Fl_Mode > 0) THEN ! F_FlCornerFreq(1) (frequency) IF (CntrPar%F_FlCornerFreq(1) <= 0.0) THEN @@ -888,15 +902,15 @@ subroutine ParseInput_Int(Un, CurLine, VarName, FileName, Variable, ErrVar, Chec USE ROSCO_Types, ONLY : ErrorVariables CHARACTER(1024) :: Line - INTEGER(4), INTENT(IN ) :: Un ! Input file unit + INTEGER(IntKi), INTENT(IN ) :: Un ! Input file unit CHARACTER(*), INTENT(IN ) :: VarName ! Input file unit CHARACTER(*), INTENT(IN ) :: FileName ! Input file unit - INTEGER(4), INTENT(INOUT) :: CurLine ! Current line of input + INTEGER(IntKi), INTENT(INOUT) :: CurLine ! Current line of input TYPE(ErrorVariables), INTENT(INOUT) :: ErrVar ! Current line of input CHARACTER(20) :: Words (2) ! The two "words" parsed from the line - INTEGER(4), INTENT(INOUT) :: Variable ! Variable - INTEGER(4) :: ErrStatLcl ! Error status local to this routine. + INTEGER(IntKi), INTENT(INOUT) :: Variable ! Variable + INTEGER(IntKi) :: ErrStatLcl ! Error status local to this routine. LOGICAL, OPTIONAL, INTENT(IN ) :: CheckName LOGICAL :: CheckName_ @@ -952,16 +966,16 @@ subroutine ParseInput_Dbl(Un, CurLine, VarName, FileName, Variable, ErrVar, Chec USE ROSCO_Types, ONLY : ErrorVariables CHARACTER(1024) :: Line - INTEGER(4), INTENT(IN ) :: Un ! Input file unit + INTEGER(IntKi), INTENT(IN ) :: Un ! Input file unit CHARACTER(*), INTENT(IN ) :: VarName ! Input file unit CHARACTER(*), INTENT(IN ) :: FileName ! Input file unit - INTEGER(4), INTENT(INOUT) :: CurLine ! Current line of input + INTEGER(IntKi), INTENT(INOUT) :: CurLine ! Current line of input TYPE(ErrorVariables), INTENT(INOUT) :: ErrVar ! Current line of input CHARACTER(20) :: Words (2) ! The two "words" parsed from the line LOGICAL, OPTIONAL, INTENT(IN ) :: CheckName - REAL(8), INTENT(INOUT) :: Variable ! Variable - INTEGER(4) :: ErrStatLcl ! Error status local to this routine. + REAL(DbKi), INTENT(INOUT) :: Variable ! Variable + INTEGER(IntKi) :: ErrStatLcl ! Error status local to this routine. LOGICAL :: CheckName_ @@ -1016,16 +1030,16 @@ subroutine ParseInput_Str(Un, CurLine, VarName, FileName, Variable, ErrVar, Chec USE ROSCO_Types, ONLY : ErrorVariables CHARACTER(1024) :: Line - INTEGER(4), INTENT(IN ) :: Un ! Input file unit + INTEGER(IntKi), INTENT(IN ) :: Un ! Input file unit CHARACTER(*), INTENT(IN ) :: VarName ! Input file unit CHARACTER(*), INTENT(IN ) :: FileName ! Input file unit - INTEGER(4), INTENT(INOUT) :: CurLine ! Current line of input + INTEGER(IntKi), INTENT(INOUT) :: CurLine ! Current line of input TYPE(ErrorVariables), INTENT(INOUT) :: ErrVar ! Current line of input CHARACTER(200) :: Words (2) ! The two "words" parsed from the line LOGICAL, OPTIONAL, INTENT(IN ) :: CheckName CHARACTER(*), INTENT(INOUT) :: Variable ! Variable - INTEGER(4) :: ErrStatLcl ! Error status local to this routine. + INTEGER(IntKi) :: ErrStatLcl ! Error status local to this routine. LOGICAL :: CheckName_ @@ -1083,12 +1097,12 @@ SUBROUTINE ParseDbAry ( Un, LineNum, AryName, Ary, AryLen, FileName, ErrVar, Che USE ROSCO_Types, ONLY : ErrorVariables ! Arguments declarations. - INTEGER(4), INTENT(IN ) :: Un ! Input file unit + INTEGER(IntKi), INTENT(IN ) :: Un ! Input file unit INTEGER, INTENT(IN ) :: AryLen !< The length of the array to parse. - REAL(8), ALLOCATABLE, INTENT(INOUT) :: Ary(:) !< The array to receive the input values. + REAL(DbKi), ALLOCATABLE, INTENT(INOUT) :: Ary(:) !< The array to receive the input values. - INTEGER(4), INTENT(INOUT) :: LineNum !< The number of the line to parse. + INTEGER(IntKi), INTENT(INOUT) :: LineNum !< The number of the line to parse. CHARACTER(*), INTENT(IN) :: FileName !< The name of the file being parsed. @@ -1102,8 +1116,8 @@ SUBROUTINE ParseDbAry ( Un, LineNum, AryName, Ary, AryLen, FileName, ErrVar, Che ! Local declarations. CHARACTER(1024) :: Line - INTEGER(4) :: ErrStatLcl ! Error status local to this routine. - INTEGER(4) :: i + INTEGER(IntKi) :: ErrStatLcl ! Error status local to this routine. + INTEGER(IntKi) :: i CHARACTER(200), ALLOCATABLE :: Words_Ary (:) ! The array "words" parsed from the line. CHARACTER(1024) :: Debug_String @@ -1210,12 +1224,12 @@ SUBROUTINE ParseInAry ( Un, LineNum, AryName, Ary, AryLen, FileName, ErrVar, Che USE ROSCO_Types, ONLY : ErrorVariables ! Arguments declarations. - INTEGER(4), INTENT(IN ) :: Un ! Input file unit + INTEGER(IntKi), INTENT(IN ) :: Un ! Input file unit INTEGER, INTENT(IN ) :: AryLen !< The length of the array to parse. - INTEGER(4), ALLOCATABLE, INTENT(INOUT) :: Ary(:) !< The array to receive the input values. + INTEGER(IntKi), ALLOCATABLE, INTENT(INOUT) :: Ary(:) !< The array to receive the input values. - INTEGER(4), INTENT(INOUT) :: LineNum !< The number of the line to parse. + INTEGER(IntKi), INTENT(INOUT) :: LineNum !< The number of the line to parse. CHARACTER(*), INTENT(IN) :: FileName !< The name of the file being parsed. @@ -1228,8 +1242,8 @@ SUBROUTINE ParseInAry ( Un, LineNum, AryName, Ary, AryLen, FileName, ErrVar, Che ! Local declarations. CHARACTER(1024) :: Line - INTEGER(4) :: ErrStatLcl ! Error status local to this routine. - INTEGER(4) :: i + INTEGER(IntKi) :: ErrStatLcl ! Error status local to this routine. + INTEGER(IntKi) :: i CHARACTER(200), ALLOCATABLE :: Words_Ary (:) ! The array "words" parsed from the line. CHARACTER(1024) :: Debug_String @@ -1339,8 +1353,8 @@ SUBROUTINE ChkParseData ( Words, ExpVarName, FileName, FileLineNum, ErrVar ) ! Arguments declarations. TYPE(ErrorVariables), INTENT(INOUT) :: ErrVar ! Current line of input - INTEGER(4), INTENT(IN) :: FileLineNum !< The number of the line in the file being parsed. - INTEGER(4) :: NameIndx !< The index into the Words array that points to the variable name. + INTEGER(IntKi), INTENT(IN) :: FileLineNum !< The number of the line in the file being parsed. + INTEGER(IntKi) :: NameIndx !< The index into the Words array that points to the variable name. CHARACTER(*), INTENT(IN) :: ExpVarName !< The expected variable name. CHARACTER(*), INTENT(IN) :: Words (2) !< The two words to be parsed from the line. @@ -1392,8 +1406,8 @@ END SUBROUTINE ChkParseData !======================================================================= subroutine ReadEmptyLine(Un,CurLine) - INTEGER(4), INTENT(IN ) :: Un ! Input file unit - INTEGER(4), INTENT(INOUT) :: CurLine ! Current line of input + INTEGER(IntKi), INTENT(IN ) :: Un ! Input file unit + INTEGER(IntKi), INTENT(INOUT) :: CurLine ! Current line of input CHARACTER(1024) :: Line diff --git a/ROSCO_testing/ROSCO_testing.py b/ROSCO_testing/ROSCO_testing.py index 2380ac96..d65eaa3a 100644 --- a/ROSCO_testing/ROSCO_testing.py +++ b/ROSCO_testing/ROSCO_testing.py @@ -462,7 +462,11 @@ def ROSCO_DISCON_Comp(self, DISCON_filenames, testtype='light', more_case_inputs self.wind_dir = os.path.join(run_dir_init, 'wind') # wind in base runDir # Point to different DISCON.IN files using more_case_inputs - more_case_inputs[('ServoDyn', 'DLL_InFile')] = {'vals': [discon], 'group': 0} + # Control (DISCON) Inputs + discon_vt = ROSCO_utilities.read_DISCON(discon) + for discon_input in discon_vt: + more_case_inputs[('DISCON_in',discon_input)] = {'vals': [discon_vt[discon_input]], 'group': 0} + self.wind_dir = os.path.join(run_dir_init, 'wind') # wind in base runDir if testtype.lower() == 'light': diff --git a/ROSCO_toolbox/controller.py b/ROSCO_toolbox/controller.py index acc2742b..6db497b0 100644 --- a/ROSCO_toolbox/controller.py +++ b/ROSCO_toolbox/controller.py @@ -77,9 +77,7 @@ def __init__(self, controller_params): self.vs_minspd = controller_params['vs_minspd'] self.ss_vsgain = controller_params['ss_vsgain'] self.ss_pcgain = controller_params['ss_pcgain'] - self.ss_cornerfreq = controller_params['f_ss_cornerfreq'] self.ps_percent = controller_params['ps_percent'] - self.sd_cornerfreq = controller_params['sd_cornerfreq'] self.sd_maxpit = controller_params['sd_maxpit'] self.WS_GS_n = controller_params['WS_GS_n'] self.PC_GS_n = controller_params['PC_GS_n'] @@ -113,13 +111,21 @@ def __init__(self, controller_params): self.twr_freq = 0 self.ptfm_freq = 0 - # Use critical damping if LPFType = 2 if controller_params['F_LPFType'] == 2: self.F_LPFDamping = 0.7 else: self.F_LPFDamping = 0.0 + # Filter parameters + self.f_we_cornerfreq = controller_params['filter_params']['f_we_cornerfreq'] + self.f_fl_highpassfreq = controller_params['filter_params']['f_fl_highpassfreq'] + self.f_ss_cornerfreq = controller_params['filter_params']['f_ss_cornerfreq'] + self.f_sd_cornerfreq = controller_params['filter_params']['f_sd_cornerfreq'] + + # Save controller_params for later (direct passthrough) + self.controller_params = controller_params + # Error checking: number of breakpoints if self.WS_GS_n <= self.PC_GS_n: raise Exception('Number of WS breakpoints is not greater than pitch control breakpoints') @@ -355,6 +361,13 @@ def tune_controller(self, turbine): self.Ki_flap = np.array([0.0]) self.Kp_flap = np.array([0.0]) + # --- Set up filters --- + self.f_lpf_cornerfreq = turbine.bld_edgewise_freq / 4 + + # --- Direct input passthrough --- + if 'f_lpf_cornerfreq' in self.controller_params['filter_params']: + self.f_lpf_cornerfreq = self.controller_params['filter_params']['f_lpf_cornerfreq'] + def tune_flap_controller(self,turbine): ''' Tune controller for distributed aerodynamic control diff --git a/ROSCO_toolbox/inputs/.gitignore b/ROSCO_toolbox/inputs/.gitignore new file mode 100644 index 00000000..1976f2bd --- /dev/null +++ b/ROSCO_toolbox/inputs/.gitignore @@ -0,0 +1,2 @@ +# Temp file for debugging rst generation, copied to docs/ and renamed +toolbox_schema.rst \ No newline at end of file diff --git a/ROSCO_toolbox/inputs/schema2rst.py b/ROSCO_toolbox/inputs/schema2rst.py index 094f1b4a..feafe9de 100644 --- a/ROSCO_toolbox/inputs/schema2rst.py +++ b/ROSCO_toolbox/inputs/schema2rst.py @@ -1,6 +1,9 @@ import textwrap import validation +from shutil import copy +import os + mywidth = 70 myindent = " " * 4 @@ -84,9 +87,15 @@ def write_rst(self): self.f.close() def write_header(self): - self.f.write("*" * 30 + "\n") - self.f.write(self.fname + "\n") - self.f.write("*" * 30 + "\n") + title = 'ROSCO_Toolbox tuning .yaml' + self.f.write("\n") + self.f.write(".. toctree::\n") + self.f.write("\n") + self.f.write(".. _rt_tuning_yaml: \n") + self.f.write("\n") + self.f.write("*" * len(title) + "\n") + self.f.write(title + "\n") + self.f.write("*" * len(title) + "\n") if "description" in self.yaml.keys(): self.f.write(self.yaml["description"] + "\n") @@ -107,6 +116,18 @@ def write_loop(self, rv, idepth, name, desc=None): k_desc = None if not "description" in rv[k] else rv[k]["description"] self.write_loop(rv[k]["properties"], idepth + 1, k, k_desc) + # If multiple types are allowed, only ["number", "integer", "string", "boolean"] allowed, need to + # add support for objects, but nothing is like this now + elif isinstance(rv[k]["type"], list): + type_string = [] + for i_type in range(len(rv[k]["type"])): + temp_rv = rv[k].copy() + temp_rv['type'] = rv[k]["type"][i_type] + type_string.append(get_type_string(temp_rv)) + + self.f.write(":code:`" + k + "` : " + ' or '.join(type_string) + "\n") + self.f.write(get_description_string(rv[k]) + "\n") + elif rv[k]["type"].lower() in ["number", "integer", "string", "boolean"]: self.f.write(":code:`" + k + "` : " + get_type_string(rv[k]) + "\n") self.f.write(get_description_string(rv[k]) + "\n") @@ -127,5 +148,10 @@ def write_loop(self, rv, idepth, name, desc=None): if __name__ == "__main__": - myobj = Schema2RST('/Users/dzalkind/Tools/ROSCO/ROSCO_toolbox/inputs/toolbox_schema.yaml') + shema_file = os.path.join(os.path.dirname(__file__),'toolbox_schema.yaml') + myobj = Schema2RST(shema_file) myobj.write_rst() + + filename = myobj.fout.split('/')[-1] + doc_file = os.path.realpath(os.path.join(os.path.dirname(__file__),'../../docs/source/toolbox_input.rst')) + copy(myobj.fout, doc_file) diff --git a/ROSCO_toolbox/inputs/toolbox_schema.yaml b/ROSCO_toolbox/inputs/toolbox_schema.yaml index 73e69211..7f9adb76 100644 --- a/ROSCO_toolbox/inputs/toolbox_schema.yaml +++ b/ROSCO_toolbox/inputs/toolbox_schema.yaml @@ -14,11 +14,11 @@ properties: properties: FAST_InputFile: type: string - description: Name of *.fst file + description: Name of `*.fst` file # default: IEA-15-240-RWT-UMaineSemi.fst FAST_directory: type: string - description: Main OpenFAST model directory, where the *.fst lives, relative to ROSCO dir (if applicable) + description: Main OpenFAST model directory, where the `*.fst` lives, relative to ROSCO dir (if applicable) # default: Test_Cases/IEA-15-240-RWT-UMaineSemi rotor_performance_filename: type: string @@ -77,6 +77,7 @@ properties: description: Blade edgewise first natural frequency [rad/s] unit: rad/s minimum: 0 + default: 4.0 bld_flapwise_freq: type: number description: Blade flapwise first natural frequency [rad/s] @@ -256,11 +257,6 @@ properties: type: number default: 0.6981 unit: rad - sd_cornerfreq: - description: Cutoff Frequency for first order low-pass filter for blade pitch angle [rad/s], {default = 0.41888 ~ time constant of 15s} - type: number - default: 0.41888 - unit: rad flp_maxpit: description: Maximum (and minimum) flap pitch angle [rad] type: number @@ -276,12 +272,6 @@ properties: description: Platform natural frequency, for floating only unit: rad/s minimum: 0 - f_ss_cornerfreq: - type: number - description: First order low-pass filter cornering frequency for setpoint smoother [rad/s] - minimum: 0 - unit: rad/s - default: 0.6283 WS_GS_n: type: number description: Number of wind speed breakpoints @@ -310,23 +300,45 @@ properties: minimum: 0 description: Flap controller desired natural frequency [rad/s] unit: rad/s - - filter_params: - type: object - default: {} - properties: - f_we_cornerfreq: - type: number - description: Corner frequency (-3dB point) in the first order low pass filter for the wind speed estimate [rad/s] - minimum: 0 - unit: rad/s - default: 0.209440 - f_fl_highpassfreq: - type: number - minimum: 0 - unit: rad/s - default: 0.01042 - description: Natural frequency of first-order high-pass filter for nacelle fore-aft motion [rad/s] + filter_params: + type: object + default: {} + properties: + f_lpf_cornerfreq: + type: number + description: Corner frequency (-3dB point) in the first order low pass filter of the generator speed [rad/s] + minimum: 0 + unit: rad/s + # default: 1.00810 + f_lpf_damping: + type: number + description: Damping ratio in the first order low pass filter of the generator speed [-] + minimum: 0 + unit: rad/s + # default: 0.707 + f_we_cornerfreq: + type: number + description: Corner frequency (-3dB point) in the first order low pass filter for the wind speed estimate [rad/s] + minimum: 0 + unit: rad/s + default: 0.209440 + f_fl_highpassfreq: + type: number + minimum: 0 + unit: rad/s + default: 0.01042 + description: Natural frequency of first-order high-pass filter for nacelle fore-aft motion [rad/s] + f_ss_cornerfreq: + type: number + description: First order low-pass filter cornering frequency for setpoint smoother [rad/s] + minimum: 0 + unit: rad/s + default: 0.6283 + f_sd_cornerfreq: + description: Cutoff Frequency for first order low-pass filter for blade pitch angle [rad/s], {default = 0.41888 ~ time constant of 15s} + type: number + default: 0.41888 + unit: rad linmodel_tuning: type: object @@ -354,6 +366,8 @@ properties: type: [number, array] description: Desired maximum stability margin default: 0.1 + items: + type: number omega_pc: type: object default: {} @@ -362,8 +376,12 @@ properties: type: [number, array] default: 0.0 description: Desired maximum allowable omega for robust tuning. Array must be of length U_pc. + items: + type: number max: type: [number, array] default: 0.2 description: Desired maximum allowable omega for robust tuning. Array must be of length U_pc. + items: + type: number diff --git a/ROSCO_toolbox/linear/robust_scheduling.py b/ROSCO_toolbox/linear/robust_scheduling.py index 4058ddcd..2ef2ba5b 100644 --- a/ROSCO_toolbox/linear/robust_scheduling.py +++ b/ROSCO_toolbox/linear/robust_scheduling.py @@ -282,7 +282,6 @@ def init_doe(self, om_problem, levels=20): os.makedirs(self.output_dir, exist_ok=True) # om_problem.driver.options['run_parallel'] = True # om_problem.driver.options['procs_per_model'] = 1 - return om_problem @staticmethod @@ -312,7 +311,6 @@ def post_doe(self, save_csv=False): doe_outfile = '.'.join(self.doe_logfile.split('.')[:-1]) + '.csv' else: doe_outfile = None - df = load_DOE(self.doe_logfile, outfile_name=doe_outfile) return df @@ -387,7 +385,6 @@ def load_linturb(linfile_path, load_parallel=False): return linturb - def load_ROSCO(path_params, turbine_params, controller_params): turbine = ROSCO_turbine.Turbine(turbine_params) controller = ROSCO_controller.Controller(controller_params) diff --git a/ROSCO_toolbox/ofTools/case_gen/CaseLibrary.py b/ROSCO_toolbox/ofTools/case_gen/CaseLibrary.py new file mode 100644 index 00000000..04746f82 --- /dev/null +++ b/ROSCO_toolbox/ofTools/case_gen/CaseLibrary.py @@ -0,0 +1,508 @@ +import os, yaml +import numpy as np + +from ROSCO_toolbox.ofTools.case_gen.CaseGen_General import CaseGen_General +from ROSCO_toolbox.ofTools.case_gen.CaseGen_IEC import CaseGen_IEC +from ROSCO_toolbox.ofTools.case_gen.HH_WindFile import HH_StepFile + +# ROSCO +from ROSCO_toolbox import controller as ROSCO_controller +from ROSCO_toolbox import turbine as ROSCO_turbine +from ROSCO_toolbox import utilities as ROSCO_utilities + +from ROSCO_toolbox.inputs.validation import load_rosco_yaml + +# Globals +this_dir = os.path.dirname(os.path.abspath(__file__)) +tune_case_dir = os.path.realpath(os.path.join(this_dir,'../../../Tune_Cases')) + +def find_max_group(case_inputs): + max_group = 0 + for ci in case_inputs: + max_group = np.max([case_inputs[ci]['group'],max_group]) + return max_group + + +def set_channels(): + channels = {} + for var in ["TipDxc1", "TipDyc1", "TipDzc1", "TipDxb1", "TipDyb1", "TipDxc2", "TipDyc2", \ + "TipDzc2", "TipDxb2", "TipDyb2", "TipDxc3", "TipDyc3", "TipDzc3", "TipDxb3", "TipDyb3", \ + "RootMxc1", "RootMyc1", "RootMzc1", "RootMxb1", "RootMyb1", "RootMxc2", "RootMyc2", \ + "RootMzc2", "RootMxb2", "RootMyb2", "RootMxc3", "RootMyc3", "RootMzc3", "RootMxb3",\ + "RootMyb3", "TwrBsMxt", "TwrBsMyt", "TwrBsMzt", "GenPwr", "GenTq", "RotThrust",\ + "RtAeroCp", "RtAeroCt", "RotSpeed", "BldPitch1", "TTDspSS", "TTDspFA", \ + "NcIMUTAxs", "NcIMUTAys", "NcIMUTAzs", "NcIMURAxs", "NcIMURAys", "NcIMURAzs", \ + "NacYaw", "Wind1VelX", "Wind1VelY", "Wind1VelZ", "LSSTipMxa","LSSTipMya",\ + "LSSTipMza","LSSTipMxs","LSSTipMys","LSSTipMzs","LSShftFys","LSShftFzs", \ + "TipRDxr", "TipRDyr", "TipRDzr","RtVAvgxh"]: + channels[var] = True + return channels + + +def load_tuning_yaml(tuning_yaml): + # Load yaml file, this could be an object... + inps = load_rosco_yaml(tuning_yaml) + path_params = inps['path_params'] + turbine_params = inps['turbine_params'] + controller_params = inps['controller_params'] + + # Instantiate turbine, controller, and file processing classes + turbine = ROSCO_turbine.Turbine(turbine_params) + controller = ROSCO_controller.Controller(controller_params) + + # Load turbine data from OpenFAST and rotor performance text file + cp_filename = os.path.join(tune_case_dir,path_params['FAST_directory'],path_params['rotor_performance_filename']) + turbine.load_from_fast(path_params['FAST_InputFile'], \ + os.path.join(tune_case_dir,path_params['FAST_directory']), \ + dev_branch=True,rot_source='txt',\ + txt_filename=cp_filename) + + return turbine, controller, cp_filename + + +############################################################################################## +# +# Wind input cases +# +############################################################################################## + +def power_curve(run_dir): + # Constant wind speed, multiple wind speeds, define below + + # Runtime + T_max = 400. + + # Run conditions + U = np.arange(4,14.5,.5).tolist() + U = np.linspace(9.5,12,num=16) + + + case_inputs = {} + # simulation settings + case_inputs[("Fst","TMax")] = {'vals':[T_max], 'group':0} + + # DOFs + if False: + case_inputs[("ElastoDyn","YawDOF")] = {'vals':['True'], 'group':0} + case_inputs[("ElastoDyn","FlapDOF1")] = {'vals':['False'], 'group':0} + case_inputs[("ElastoDyn","FlapDOF2")] = {'vals':['False'], 'group':0} + case_inputs[("ElastoDyn","EdgeDOF")] = {'vals':['False'], 'group':0} + case_inputs[("ElastoDyn","DrTrDOF")] = {'vals':['False'], 'group':0} + case_inputs[("ElastoDyn","GenDOF")] = {'vals':['True'], 'group':0} + case_inputs[("ElastoDyn","TwFADOF1")] = {'vals':['False'], 'group':0} + case_inputs[("ElastoDyn","TwFADOF2")] = {'vals':['False'], 'group':0} + case_inputs[("ElastoDyn","TwSSDOF1")] = {'vals':['False'], 'group':0} + case_inputs[("ElastoDyn","TwSSDOF2")] = {'vals':['False'], 'group':0} + case_inputs[("ElastoDyn","PtfmSgDOF")] = {'vals':['False'], 'group':0} + case_inputs[("ElastoDyn","PtfmHvDOF")] = {'vals':['False'], 'group':0} + case_inputs[("ElastoDyn","PtfmPDOF")] = {'vals':['False'], 'group':0} + case_inputs[("ElastoDyn","PtfmSwDOF")] = {'vals':['False'], 'group':0} + case_inputs[("ElastoDyn","PtfmRDOF")] = {'vals':['False'], 'group':0} + case_inputs[("ElastoDyn","PtfmYDOF")] = {'vals':['False'], 'group':0} + + # wind inflow + case_inputs[("InflowWind","WindType")] = {'vals':[1], 'group':0} + case_inputs[("InflowWind","HWindSpeed")] = {'vals':U, 'group':1} + + # Stop Generator from Turning Off + case_inputs[('ServoDyn', 'GenTiStr')] = {'vals': ['True'], 'group': 0} + case_inputs[('ServoDyn', 'GenTiStp')] = {'vals': ['True'], 'group': 0} + case_inputs[('ServoDyn', 'SpdGenOn')] = {'vals': [0.], 'group': 0} + case_inputs[('ServoDyn', 'TimGenOn')] = {'vals': [0.], 'group': 0} + case_inputs[('ServoDyn', 'GenModel')] = {'vals': [1], 'group': 0} + + + # AeroDyn + case_inputs[("AeroDyn15", "WakeMod")] = {'vals': [1], 'group': 0} + case_inputs[("AeroDyn15", "AFAeroMod")] = {'vals': [2], 'group': 0} + case_inputs[("AeroDyn15", "TwrPotent")] = {'vals': [0], 'group': 0} + case_inputs[("AeroDyn15", "TwrShadow")] = {'vals': ['False'], 'group': 0} + case_inputs[("AeroDyn15", "TwrAero")] = {'vals': ['False'], 'group': 0} + case_inputs[("AeroDyn15", "SkewMod")] = {'vals': [1], 'group': 0} + case_inputs[("AeroDyn15", "TipLoss")] = {'vals': ['True'], 'group': 0} + case_inputs[("AeroDyn15", "HubLoss")] = {'vals': ['True'], 'group': 0} + case_inputs[("AeroDyn15", "TanInd")] = {'vals': ['True'], 'group': 0} + case_inputs[("AeroDyn15", "AIDrag")] = {'vals': ['True'], 'group': 0} + case_inputs[("AeroDyn15", "TIDrag")] = {'vals': ['True'], 'group': 0} + case_inputs[("AeroDyn15", "IndToler")] = {'vals': [1.e-5], 'group': 0} + case_inputs[("AeroDyn15", "MaxIter")] = {'vals': [5000], 'group': 0} + case_inputs[("AeroDyn15", "UseBlCm")] = {'vals': ['True'], 'group': 0} + + return case_inputs + + # # Controller + # if rosco_dll: + # # Need to update this to ROSCO with power control!!! + # case_inputs[("ServoDyn","DLL_FileName")] = {'vals':[rosco_dll], 'group':0} + + # # Control (DISCON) Inputs + # discon_vt = ROSCO_utilities.read_DISCON(discon_file) + # for discon_input in discon_vt: + # case_inputs[('DISCON_in',discon_input)] = {'vals': [discon_vt[discon_input]], 'group': 0} + + # from weis.aeroelasticse.CaseGen_General import CaseGen_General + # case_list, case_name_list = CaseGen_General(case_inputs, dir_matrix=runDir, namebase=namebase) + + # channels = set_channels() + + return case_list, case_name_list, channels + +def simp_step(run_dir): + # Set up cases for FIW-JIP project + # 3.x in controller tuning register + + # Default Runtime + T_max = 300. + + # Step Wind Setup + + # Make Default step wind object + hh_step = HH_StepFile() + hh_step.t_max = T_max + hh_step.t_step = 150 + hh_step.wind_directory = run_dir + + # Run conditions + U_start = [16] + U_end = [17] + step_wind_files = [] + + for u_s,u_e in zip(U_start,U_end): + # Make Step + hh_step.u_start = u_s + hh_step.u_end = u_e + hh_step.update() + hh_step.write() + + step_wind_files.append(hh_step.filename) + + case_inputs = {} + # simulation settings + case_inputs[("Fst","TMax")] = {'vals':[T_max], 'group':0} + case_inputs[("Fst","OutFileFmt")] = {'vals':[2], 'group':0} + # case_inputs[("Fst","DT")] = {'vals':[1/80], 'group':0} + + # DOFs + # case_inputs[("ElastoDyn","YawDOF")] = {'vals':['True'], 'group':0} + # case_inputs[("ElastoDyn","FlapDOF1")] = {'vals':['False'], 'group':0} + # case_inputs[("ElastoDyn","FlapDOF2")] = {'vals':['False'], 'group':0} + # case_inputs[("ElastoDyn","EdgeDOF")] = {'vals':['False'], 'group':0} + # case_inputs[("ElastoDyn","DrTrDOF")] = {'vals':['False'], 'group':0} + # case_inputs[("ElastoDyn","GenDOF")] = {'vals':['True'], 'group':0} + # case_inputs[("ElastoDyn","TwFADOF1")] = {'vals':['False'], 'group':0} + # case_inputs[("ElastoDyn","TwFADOF2")] = {'vals':['False'], 'group':0} + # case_inputs[("ElastoDyn","TwSSDOF1")] = {'vals':['False'], 'group':0} + # case_inputs[("ElastoDyn","TwSSDOF2")] = {'vals':['False'], 'group':0} + # case_inputs[("ElastoDyn","PtfmSgDOF")] = {'vals':['False'], 'group':0} + # case_inputs[("ElastoDyn","PtfmHvDOF")] = {'vals':['False'], 'group':0} + # case_inputs[("ElastoDyn","PtfmPDOF")] = {'vals':['False'], 'group':0} + # case_inputs[("ElastoDyn","PtfmSwDOF")] = {'vals':['False'], 'group':0} + # case_inputs[("ElastoDyn","PtfmRDOF")] = {'vals':['False'], 'group':0} + # case_inputs[("ElastoDyn","PtfmYDOF")] = {'vals':['False'], 'group':0} + + # wind inflow + case_inputs[("InflowWind","WindType")] = {'vals':[2], 'group':0} + case_inputs[("InflowWind","Filename_Uni")] = {'vals':step_wind_files, 'group':1} + + + # Stop Generator from Turning Off + case_inputs[('ServoDyn', 'GenTiStr')] = {'vals': ['True'], 'group': 0} + case_inputs[('ServoDyn', 'GenTiStp')] = {'vals': ['True'], 'group': 0} + case_inputs[('ServoDyn', 'SpdGenOn')] = {'vals': [0.], 'group': 0} + case_inputs[('ServoDyn', 'TimGenOn')] = {'vals': [0.], 'group': 0} + case_inputs[('ServoDyn', 'GenModel')] = {'vals': [1], 'group': 0} + + + # AeroDyn + case_inputs[("AeroDyn15", "WakeMod")] = {'vals': [1], 'group': 0} + case_inputs[("AeroDyn15", "AFAeroMod")] = {'vals': [2], 'group': 0} + case_inputs[("AeroDyn15", "TwrPotent")] = {'vals': [0], 'group': 0} + case_inputs[("AeroDyn15", "TwrShadow")] = {'vals': ['False'], 'group': 0} + case_inputs[("AeroDyn15", "TwrAero")] = {'vals': ['False'], 'group': 0} + case_inputs[("AeroDyn15", "SkewMod")] = {'vals': [1], 'group': 0} + case_inputs[("AeroDyn15", "TipLoss")] = {'vals': ['True'], 'group': 0} + case_inputs[("AeroDyn15", "HubLoss")] = {'vals': ['True'], 'group': 0} + case_inputs[("AeroDyn15", "TanInd")] = {'vals': ['True'], 'group': 0} + case_inputs[("AeroDyn15", "AIDrag")] = {'vals': ['True'], 'group': 0} + case_inputs[("AeroDyn15", "TIDrag")] = {'vals': ['True'], 'group': 0} + case_inputs[("AeroDyn15", "IndToler")] = {'vals': [1.e-5], 'group': 0} + case_inputs[("AeroDyn15", "MaxIter")] = {'vals': [5000], 'group': 0} + case_inputs[("AeroDyn15", "UseBlCm")] = {'vals': ['True'], 'group': 0} + + + + # # Tune Floating Feedback Gain + # if tune == 'fl_gain': + # case_inputs[('DISCON_in','Fl_Kp')] = {'vals': np.linspace(0,-18,6,endpoint=True).tolist(), 'group': 2} + + # elif tune == 'fl_phase': + # case_inputs[('DISCON_in','Fl_Kp')] = {'vals': 8*[-25], 'group': 2} + # case_inputs[('DISCON_in','F_FlCornerFreq')] = {'vals': 8*[0.300], 'group': 2} + # case_inputs[('DISCON_in','F_FlHighPassFreq')] = {'vals':[0.001,0.005,0.010,0.020,0.030,0.042,0.060,0.100], 'group': 2} + # case_inputs[('meta','Fl_Phase')] = {'vals':8*[-50],'group':2} + + # elif tune == 'pc_mode': + # # define omega, zeta + # omega = np.linspace(.05,.25,8,endpoint=True).tolist() + # zeta = np.linspace(1,3,3,endpoint=True).tolist() + + # control_case_inputs = sweep_pc_mode(omega,zeta) + # case_inputs.update(control_case_inputs) + + + # elif tune == 'ps_perc': + # # Set sweep limits here + # ps_perc = np.linspace(.75,1,num=8,endpoint=True).tolist() + + # # load default params + # weis_dir = os.path.dirname(os.path.dirname(os.path.dirname(__file__))) + # control_param_yaml = os.path.join(weis_dir,'examples/OpenFAST_models/CT15MW-spar/ServoData/IEA15MW-CT-spar.yaml') + # inps = yaml.safe_load(open(control_param_yaml)) + # path_params = inps['path_params'] + # turbine_params = inps['turbine_params'] + # controller_params = inps['controller_params'] + + # # make default controller, turbine objects for ROSCO_toolbox + # turbine = ROSCO_turbine.Turbine(turbine_params) + # turbine.load_from_fast( path_params['FAST_InputFile'],path_params['FAST_directory'], dev_branch=True) + + # controller = ROSCO_controller.Controller(controller_params) + + # # tune default controller + # controller.tune_controller(turbine) + + # # Loop through and make min pitch tables + # ps_ws = [] + # ps_mp = [] + # m_ps = [] # flattened (omega,zeta) pairs + # for p in ps_perc: + # controller.ps_percent = p + # controller.tune_controller(turbine) + # m_ps.append(controller.ps_min_bld_pitch) + + # # add control gains to case_list + # case_inputs[('meta','ps_perc')] = {'vals': ps_perc, 'group': 2} + # case_inputs[('DISCON_in', 'PS_BldPitchMin')] = {'vals': m_ps, 'group': 2} + + # elif tune == 'max_tq': + # case_inputs[('DISCON_in','VS_MaxTq')] = {'vals': [19624046.66639, 1.5*19624046.66639], 'group': 3} + + # elif tune == 'yaw': + # case_inputs[('ElastoDyn','NacYaw')] = {'vals': [-10,0,10], 'group': 3} + + + + return case_inputs + + +def steps(discon_file,runDir, namebase,rosco_dll=''): + # Set up cases for FIW-JIP project + # 3.x in controller tuning register + + # Default Runtime + T_max = 800. + + # Step Wind Setup + + # Make Default step wind object + hh_step = HH_StepFile() + hh_step.t_max = T_max + hh_step.t_step = 400 + hh_step.wind_directory = runDir + + # Run conditions + U = np.arange(4,24,1).tolist() + step_wind_files = [] + + for u in U: + # Step up + hh_step.u_start = u + hh_step.u_end = u+1 + hh_step.update() + hh_step.write() + + step_wind_files.append(hh_step.filename) + + # Step down + hh_step.u_start = u+1 + hh_step.u_end = u + hh_step.update() + hh_step.write() + + step_wind_files.append(hh_step.filename) + + case_inputs = {} + # simulation settings + case_inputs[("Fst","TMax")] = {'vals':[T_max], 'group':0} + case_inputs[("Fst","OutFileFmt")] = {'vals':[2], 'group':0} + + # DOFs + if True: + case_inputs[("ElastoDyn","YawDOF")] = {'vals':['False'], 'group':0} + case_inputs[("ElastoDyn","FlapDOF1")] = {'vals':['False'], 'group':0} + case_inputs[("ElastoDyn","FlapDOF2")] = {'vals':['False'], 'group':0} + case_inputs[("ElastoDyn","EdgeDOF")] = {'vals':['False'], 'group':0} + case_inputs[("ElastoDyn","DrTrDOF")] = {'vals':['False'], 'group':0} + case_inputs[("ElastoDyn","GenDOF")] = {'vals':['True'], 'group':0} + case_inputs[("ElastoDyn","TwFADOF1")] = {'vals':['False'], 'group':0} + case_inputs[("ElastoDyn","TwFADOF2")] = {'vals':['False'], 'group':0} + case_inputs[("ElastoDyn","TwSSDOF1")] = {'vals':['False'], 'group':0} + case_inputs[("ElastoDyn","TwSSDOF2")] = {'vals':['False'], 'group':0} + case_inputs[("ElastoDyn","PtfmSgDOF")] = {'vals':['False'], 'group':0} + case_inputs[("ElastoDyn","PtfmHvDOF")] = {'vals':['False'], 'group':0} + case_inputs[("ElastoDyn","PtfmPDOF")] = {'vals':['False'], 'group':0} + case_inputs[("ElastoDyn","PtfmSwDOF")] = {'vals':['False'], 'group':0} + case_inputs[("ElastoDyn","PtfmRDOF")] = {'vals':['False'], 'group':0} + case_inputs[("ElastoDyn","PtfmYDOF")] = {'vals':['False'], 'group':0} + + # wind inflow + case_inputs[("InflowWind","WindType")] = {'vals':[2], 'group':0} + case_inputs[("InflowWind","Filename")] = {'vals':step_wind_files, 'group':1} + + + # Stop Generator from Turning Off + case_inputs[('ServoDyn', 'GenTiStr')] = {'vals': ['True'], 'group': 0} + case_inputs[('ServoDyn', 'GenTiStp')] = {'vals': ['True'], 'group': 0} + case_inputs[('ServoDyn', 'SpdGenOn')] = {'vals': [0.], 'group': 0} + case_inputs[('ServoDyn', 'TimGenOn')] = {'vals': [0.], 'group': 0} + case_inputs[('ServoDyn', 'GenModel')] = {'vals': [1], 'group': 0} + + + # AeroDyn + case_inputs[("AeroDyn15", "WakeMod")] = {'vals': [1], 'group': 0} + case_inputs[("AeroDyn15", "AFAeroMod")] = {'vals': [2], 'group': 0} + case_inputs[("AeroDyn15", "TwrPotent")] = {'vals': [0], 'group': 0} + case_inputs[("AeroDyn15", "TwrShadow")] = {'vals': ['False'], 'group': 0} + case_inputs[("AeroDyn15", "TwrAero")] = {'vals': ['False'], 'group': 0} + case_inputs[("AeroDyn15", "SkewMod")] = {'vals': [1], 'group': 0} + case_inputs[("AeroDyn15", "TipLoss")] = {'vals': ['True'], 'group': 0} + case_inputs[("AeroDyn15", "HubLoss")] = {'vals': ['True'], 'group': 0} + case_inputs[("AeroDyn15", "TanInd")] = {'vals': ['True'], 'group': 0} + case_inputs[("AeroDyn15", "AIDrag")] = {'vals': ['True'], 'group': 0} + case_inputs[("AeroDyn15", "TIDrag")] = {'vals': ['True'], 'group': 0} + case_inputs[("AeroDyn15", "IndToler")] = {'vals': [1.e-5], 'group': 0} + case_inputs[("AeroDyn15", "MaxIter")] = {'vals': [5000], 'group': 0} + case_inputs[("AeroDyn15", "UseBlCm")] = {'vals': ['True'], 'group': 0} + + # Controller + if rosco_dll: + # Need to update this to ROSCO with power control!!! + case_inputs[("ServoDyn","DLL_FileName")] = {'vals':[rosco_dll], 'group':0} + + # Control (DISCON) Inputs + discon_vt = ROSCO_utilities.read_DISCON(discon_file) + for discon_input in discon_vt: + case_inputs[('DISCON_in',discon_input)] = {'vals': [discon_vt[discon_input]], 'group': 0} + + from weis.aeroelasticse.CaseGen_General import CaseGen_General + case_list, case_name_list = CaseGen_General(case_inputs, dir_matrix=runDir, namebase=namebase) + + channels = set_channels() + + return case_list, case_name_list, channels + + +def sweep_pc_mode(cont_yaml,omega=np.linspace(.05,.35,8,endpoint=True).tolist(),zeta=[1.5],group=2): + + + inps = yaml.safe_load(open(cont_yaml)) + path_params = inps['path_params'] + turbine_params = inps['turbine_params'] + controller_params = inps['controller_params'] + + # make default controller, turbine objects for ROSCO_toolbox + turbine = ROSCO_turbine.Turbine(turbine_params) + turbine.load_from_fast( path_params['FAST_InputFile'],path_params['FAST_directory'], dev_branch=True) + + controller = ROSCO_controller.Controller(controller_params) + + # tune default controller + controller.tune_controller(turbine) + + # check if inputs are lists + if not isinstance(omega,list): + omega = [omega] + if not isinstance(zeta,list): + zeta = [zeta] + + # Loop through and make PI gains + pc_kp = [] + pc_ki = [] + m_omega = [] # flattened (omega,zeta) pairs + m_zeta = [] # flattened (omega,zeta) pairs + for o in omega: + for z in zeta: + controller.omega_pc = o + controller.zeta_pc = z + controller.tune_controller(turbine) + pc_kp.append(controller.pc_gain_schedule.Kp.tolist()) + pc_ki.append(controller.pc_gain_schedule.Ki.tolist()) + m_omega.append(o) + m_zeta.append(z) + + # add control gains to case_list + case_inputs = {} + case_inputs[('meta','omega')] = {'vals': m_omega, 'group': group} + case_inputs[('meta','zeta')] = {'vals': m_zeta, 'group': group} + case_inputs[('DISCON_in', 'PC_GS_KP')] = {'vals': pc_kp, 'group': group} + case_inputs[('DISCON_in', 'PC_GS_KI')] = {'vals': pc_ki, 'group': group} + + return case_inputs + +# Control sweep functions +# function(controller,turbine,start_group) + + +def sweep_rated_torque(tuning_yaml,start_group): + + # Sweep multiplier of original rated torque + multipliers = np.linspace(1,1.5,5) + + + # Load yaml file + inps = load_rosco_yaml(tuning_yaml) + path_params = inps['path_params'] + controller_params = inps['controller_params'] + + var_trees = [] + for m in multipliers: + + turbine_params = inps['turbine_params'].copy() + turbine_params['rated_power'] *= m + + # Instantiate turbine, controller, and file processing classes + turbine = ROSCO_turbine.Turbine(turbine_params) + controller = ROSCO_controller.Controller(controller_params) + + # Load turbine data from OpenFAST and rotor performance text file + cp_filename = os.path.join(tune_case_dir,path_params['FAST_directory'],path_params['rotor_performance_filename']) + turbine.load_from_fast(path_params['FAST_InputFile'], \ + os.path.join(tune_case_dir,path_params['FAST_directory']), \ + dev_branch=True,rot_source='txt',\ + txt_filename=cp_filename) + + controller.tune_controller(turbine) + discon_vt = ROSCO_utilities.DISCON_dict(turbine, controller, txt_filename=cp_filename) + var_trees.append(discon_vt.copy()) + + # Translate array of dicts into dict of arrays + discon_array = {} + for var in var_trees[0]: + discon_array[var] = [] + + for vt in var_trees: + for var in vt: + discon_array[var].append(vt[var]) + + + case_inputs_control = {} + for discon_input in discon_array: + case_inputs_control[('DISCON_in',discon_input)] = {'vals': discon_array[discon_input], 'group': start_group} + + return case_inputs_control + + + + + + diff --git a/ROSCO_toolbox/ofTools/case_gen/HH_WindFile.py b/ROSCO_toolbox/ofTools/case_gen/HH_WindFile.py new file mode 100644 index 00000000..a74205ce --- /dev/null +++ b/ROSCO_toolbox/ofTools/case_gen/HH_WindFile.py @@ -0,0 +1,133 @@ +#!/usr/bin/env python +import numpy as np +import matplotlib.pyplot as plt +import os + +# Wind file for sheared 18 m/s wind with 30 degree direction. +# Time Wind Wind Vert. Horiz. Vert. LinV Gust +# Speed Dir Speed Shear Shear Shear Speed + +class HH_WindFile(object): + ''' + Hub height wind file + + + __init__: setup file based on wind_type, t_max, dt + write: write file + + ''' + + def __init__(self,**kwargs): + + + self.wind_type = 'step' # wind file type: 'step' supported + self.dt = 0.05 # wind time step + self.filename = self.wind_type + '.wnd' # Path to fst directory files + self.T_max = 600 + + # set default wind input (step) + self.time = [0,300,300+self.dt,600] + self.wind_speed = [10,10,14,14] + self.wind_dir = [0] * len(self.time) + self.vert_speed = [0] * len(self.time) + self.horiz_shear = [0] * len(self.time) + self.vert_shear = [0] * len(self.time) + self.linv_shear = [0] * len(self.time) + self.gust_speed = [0] * len(self.time) + + # Optional population class attributes from key word arguments + for k, w in kwargs.items(): + try: + setattr(self, k, w) + except: + pass + + super(HH_WindFile, self).__init__() + + + def write(self): + if not os.path.isdir(os.path.dirname(self.filename)): + os.makedirs(os.path.dirname(self.filename)) + with open(self.filename,'w') as f: + f.write('!\tTime\tWind Speed\tWind Dir\tVert. Spd.\tHoriz. Shr.\t Vert. Shr.\t LinV. Shr.\tGust Speed\n') + for t, ws, wd, vs, hs, vs, ls, gs in zip(self.time,self.wind_speed,self.wind_dir,self.vert_speed, \ + self.horiz_shear, self.vert_shear, self.linv_shear, self.gust_speed): + f.write('{:6.6f}\t{:6.6f}\t{:6.6f}\t{:6.6f}\t{:6.6f}\t{:6.6f}\t{:6.6f}\t{:6.6f}\n'.format( + t,ws,wd,vs,hs,vs,ls,gs)) + + + def plot(self): + plt.plot(self.time,self.wind_speed) + plt.show() + +class HH_StepFile(HH_WindFile): + + def __init__(self): + + self.u_start = 10 + self.u_end = 14 + self.t_step = 300 + self.t_max = 600 + self.dt = 0.05 + + self.wind_type = 'step' # wind file type: 'step' supported + self.wind_directory = '.' + + self.update() + + + def update(self): + self.filename = os.path.join(self.wind_directory,'{}_{:.1f}_{:.1f}.wnd'.format(self.wind_type,self.u_start,self.u_end)) + + # set default wind input (step) + self.time = [0,self.t_step,self.t_step+self.dt,self.t_max] + self.wind_speed = [self.u_start,self.u_start,self.u_end,self.u_end] + self.wind_dir = [0] * len(self.time) + self.vert_speed = [0] * len(self.time) + self.horiz_shear = [0] * len(self.time) + self.vert_shear = [0] * len(self.time) + self.linv_shear = [0] * len(self.time) + self.gust_speed = [0] * len(self.time) + +# def gen_step_wind(,u_start,u_end,t_step,t_max,dt=0.05) +# ''' +# Generate wind input with single step in wind +# No shear, direction or anything else + +# Inputs: +# - filename: where to write file +# - u_start: starting wind speed +# - u_end: ending wind speed +# - t_step: time of wind step + +# ''' + +# # time breakpoints +# t_bp = [0,t_step,t_step+dt,t_max] +# u_bp = [u_start,u_start,u_end,u_end] + + +# Uinf = 8.0 +# max_wdir_delta = 30.0 +# T = 600.0 +# dt = 0.5 + +# t = np.arange(0,T+dt,dt) +# wdir = max_wdir_delta * np.sin(2*np.pi*t/T) +# for ti,wdi in zip(t,wdir): +# print('{:>6.1f}\t{:.1f}\t{:.1f}\t0.0\t0.0\t0.0\t0.0\t0.0'.format(ti,Uinf,wdi)) + + + +if __name__ == "__main__": + hh_step = HH_StepFile() + + hh_step.t_step = 400 + hh_step.t_max = 800 + hh_step.u_start = 10 + hh_step.u_end = 11 + hh_step.update() + + hh_step.write() + + print('here') diff --git a/ROSCO_toolbox/ofTools/case_gen/run_FAST.py b/ROSCO_toolbox/ofTools/case_gen/run_FAST.py new file mode 100644 index 00000000..26cc8a22 --- /dev/null +++ b/ROSCO_toolbox/ofTools/case_gen/run_FAST.py @@ -0,0 +1,194 @@ +""" + +Example script to run the DLCs in OpenFAST + +""" + +from ROSCO_toolbox.ofTools.case_gen.runFAST_pywrapper import runFAST_pywrapper, runFAST_pywrapper_batch +from ROSCO_toolbox.ofTools.case_gen.CaseGen_IEC import CaseGen_IEC +from ROSCO_toolbox.ofTools.case_gen.CaseGen_General import CaseGen_General +from ROSCO_toolbox.ofTools.case_gen.CaseLibrary import power_curve, set_channels, find_max_group, sweep_rated_torque, load_tuning_yaml, simp_step +from wisdem.commonse.mpi_tools import MPI +import sys, os, platform +import numpy as np +from ROSCO_toolbox import utilities as ROSCO_utilities +from ROSCO_toolbox.inputs.validation import load_rosco_yaml + +from ROSCO_toolbox import controller as ROSCO_controller +from ROSCO_toolbox import turbine as ROSCO_turbine + +# Globals +this_dir = os.path.dirname(os.path.abspath(__file__)) +tune_case_dir = os.path.realpath(os.path.join(this_dir,'../../../Tune_Cases')) + + +def run_FAST(tuning_yaml,wind_case_fcn,control_sweep_fcn,save_dir,n_cores=1): + # set up run directory + if control_sweep_fcn: + sweep_name = control_sweep_fcn.__name__ + else: + sweep_name = 'base' + + turbine_name = os.path.split(tuning_yaml)[-1].split('.')[0] + run_dir = os.path.join(save_dir,turbine_name,wind_case_fcn.__name__,sweep_name) + + + # Start with tuning yaml definition of controller + if not os.path.isabs(tuning_yaml): + tuning_yaml = os.path.join(tune_case_dir,tuning_yaml) + + + # Load yaml file + inps = load_rosco_yaml(tuning_yaml) + path_params = inps['path_params'] + turbine_params = inps['turbine_params'] + controller_params = inps['controller_params'] + + # Instantiate turbine, controller, and file processing classes + turbine = ROSCO_turbine.Turbine(turbine_params) + controller = ROSCO_controller.Controller(controller_params) + + # Load turbine data from OpenFAST and rotor performance text file + cp_filename = os.path.join(tune_case_dir,path_params['FAST_directory'],path_params['rotor_performance_filename']) + turbine.load_from_fast(path_params['FAST_InputFile'], \ + os.path.join(tune_case_dir,path_params['FAST_directory']), \ + dev_branch=True,rot_source='txt',\ + txt_filename=cp_filename) + + # tune base controller defined by the yaml + controller.tune_controller(turbine) + + # Apply all discon variables as case inputs + discon_vt = ROSCO_utilities.DISCON_dict(turbine, controller, txt_filename=cp_filename) + control_base_case = {} + for discon_input in discon_vt: + control_base_case[('DISCON_in',discon_input)] = {'vals': [discon_vt[discon_input]], 'group': 0} + + # Set up wind case + case_inputs = wind_case_fcn(run_dir) + case_inputs.update(control_base_case) + + # Specify rosco controller dylib + rosco_dll = '/Users/dzalkind/Tools/ROSCO/ROSCO/build/libdiscon.dylib' #'/Users/dzalkind/Tools/ROSCO_toolbox/ROSCO/build/libdiscon.dylib' + + if not rosco_dll: # use WEIS ROSCO + run_dir1 = os.path.dirname( os.path.dirname( os.path.dirname( os.path.realpath(__file__) ) ) ) + os.sep + if platform.system() == 'Windows': + rosco_dll = os.path.join(run_dir1, 'local/lib/libdiscon.dll') + elif platform.system() == 'Darwin': + rosco_dll = os.path.join(run_dir1, 'local/lib/libdiscon.dylib') + else: + rosco_dll = os.path.join(run_dir1, 'local/lib/libdiscon.so') + + case_inputs[('ServoDyn','DLL_FileName')] = {'vals': [rosco_dll], 'group': 0} + + # Sweep control parameter + if control_sweep_fcn: + case_inputs_control = control_sweep_fcn(tuning_yaml,find_max_group(case_inputs)+1) + sweep_name = control_sweep_fcn.__name__ + case_inputs.update(case_inputs_control) + else: + sweep_name = 'base' + + + + # Generate cases + case_list, case_name_list = CaseGen_General(case_inputs, dir_matrix=run_dir, namebase=turbine_name) + channels = set_channels() + + # Management of parallelization, leave in for now + if MPI: + from wisdem.commonse.mpi_tools import map_comm_heirarchical, subprocessor_loop, subprocessor_stop + n_OF_runs = len(case_list) + + available_cores = MPI.COMM_WORLD.Get_size() + n_parallel_OFruns = np.min([available_cores - 1, n_OF_runs]) + comm_map_down, comm_map_up, color_map = map_comm_heirarchical(1, n_parallel_OFruns) + sys.stdout.flush() + + + # Parallel file generation with MPI + if MPI: + comm = MPI.COMM_WORLD + rank = comm.Get_rank() + else: + rank = 0 + if rank == 0: + + # Run FAST cases + fastBatch = runFAST_pywrapper_batch(FAST_ver='OpenFAST',dev_branch = True) + + # Select Turbine Model + model_dir = os.path.join(os.path.dirname( os.path.dirname( os.path.realpath(__file__) ) ), '01_aeroelasticse/OpenFAST_models') + + # FAST_directory (relative to Tune_Dir/) + fastBatch.FAST_directory = os.path.realpath(os.path.join(tune_case_dir,path_params['FAST_directory'])) + fastBatch.FAST_InputFile = path_params['FAST_InputFile'] + fastBatch.channels = channels + fastBatch.FAST_runDirectory = run_dir + fastBatch.case_list = case_list + fastBatch.case_name_list = case_name_list + fastBatch.debug_level = 2 + fastBatch.FAST_exe = 'openfast' + + if MPI: + fastBatch.run_mpi(comm_map_down) + else: + if n_cores == 1: + fastBatch.run_serial() + else: + fastBatch.run_multi(cores=n_cores) + + if MPI: + sys.stdout.flush() + if rank in comm_map_up.keys(): + subprocessor_loop(comm_map_up) + sys.stdout.flush() + + # Close signal to subprocessors + if rank == 0 and MPI: + subprocessor_stop(comm_map_down) + sys.stdout.flush() + + +if __name__ == "__main__": + + # Simulation config + sim_config = 6 + n_cores = 8 + + if sim_config == 1: + # FOCAL single wind speed testing + tuning_yaml = '/Users/dzalkind/Tools/ROSCO/Tune_Cases/IEA15MW_FOCAL.yaml' + wind_case = simp_step + sweep_mode = None + save_dir = '/Users/dzalkind/Projects/FOCAL/torque_274' + + elif sim_config == 6: + + # FOCAL rated wind speed tuning + tuning_yaml = '/Users/dzalkind/Tools/ROSCO/Tune_Cases/IEA15MW_FOCAL.yaml' + wind_case = power_curve + sweep_mode = sweep_rated_torque + save_dir = '/Users/dzalkind/Projects/FOCAL/drop_torque' + + else: + raise Exception('This simulation configuration is not supported.') + + + + + run_FAST(tuning_yaml,wind_case,sweep_mode,save_dir,n_cores=n_cores) + + # # Options: simp, pwr_curve + # test_type = 'pwr_curve' + + # save_dir_list = [os.path.join(res_dir,tm,os.path.basename(dl).split('.')[0],test_type) \ + # for tm, dl in zip(turbine_mods,discon_list)] + + # for tm, co, sd in zip(turbine_mods,discon_list,save_dir_list): + # run_Simp(tm,co,sd,n_cores=8) + + + + diff --git a/ROSCO_toolbox/ofTools/fast_io/FAST_writer.py b/ROSCO_toolbox/ofTools/fast_io/FAST_writer.py index 2cfbe5b6..0a1b5957 100644 --- a/ROSCO_toolbox/ofTools/fast_io/FAST_writer.py +++ b/ROSCO_toolbox/ofTools/fast_io/FAST_writer.py @@ -1343,7 +1343,6 @@ def write_DISCON_in(self): controller.Fl_Mode = int(self.fst_vt['DISCON_in']['Fl_Mode']) controller.Flp_Mode = int(self.fst_vt['DISCON_in']['Flp_Mode']) controller.F_LPFDamping = self.fst_vt['DISCON_in']['F_LPFDamping'] - controller.ss_cornerfreq = self.fst_vt['DISCON_in']['F_SSCornerFreq'] controller.pitch_op_pc = self.fst_vt['DISCON_in']['PC_GS_angles'] controller.pc_gain_schedule.Kp = self.fst_vt['DISCON_in']['PC_GS_KP'] controller.pc_gain_schedule.Ki = self.fst_vt['DISCON_in']['PC_GS_KI'] @@ -1366,13 +1365,18 @@ def write_DISCON_in(self): # controller.ps_wind_speeds = self.fst_vt['DISCON_in']['ps_wind_speeds'] controller.ps_min_bld_pitch = self.fst_vt['DISCON_in']['PS_BldPitchMin'] controller.sd_maxpit = self.fst_vt['DISCON_in']['SD_MaxPit'] - controller.sd_cornerfreq = self.fst_vt['DISCON_in']['SD_CornerFreq'] controller.Kp_float = self.fst_vt['DISCON_in']['Fl_Kp'] controller.Kp_flap = self.fst_vt['DISCON_in']['Flp_Kp'] controller.Ki_flap = self.fst_vt['DISCON_in']['Flp_Ki'] controller.flp_angle = self.fst_vt['DISCON_in']['Flp_Angle'] controller.flp_maxpit = self.fst_vt['DISCON_in']['Flp_MaxPit'] + controller.f_lpf_cornerfreq = self.fst_vt['DISCON_in']['F_LPFCornerFreq'] + controller.f_ss_cornerfreq = self.fst_vt['DISCON_in']['F_SSCornerFreq'] + controller.f_we_cornerfreq = self.fst_vt['DISCON_in']['F_WECornerFreq'] + controller.f_fl_highpassfreq = self.fst_vt['DISCON_in']['F_FlHighPassFreq'] + controller.f_sd_cornerfreq = self.fst_vt['DISCON_in']['SD_CornerFreq'] + turbine = type('', (), {})() turbine.Cp = type('', (), {})() turbine.Ct = type('', (), {})() diff --git a/ROSCO_toolbox/ofTools/fast_io/output_processing.py b/ROSCO_toolbox/ofTools/fast_io/output_processing.py index 72efd7b3..97ab8a08 100644 --- a/ROSCO_toolbox/ofTools/fast_io/output_processing.py +++ b/ROSCO_toolbox/ofTools/fast_io/output_processing.py @@ -165,6 +165,7 @@ def plot_fast_out(self, fastout=None, cases=None, showplot=True, fignum=None, xl print('{} is not available as an output channel.'.format(channel)) plt.legend(myleg, loc='upper center', bbox_to_anchor=( 0.5, 0.0), borderaxespad=2, ncol=len(fastout)) + fig.align_ylabels() figlist.append(fig) diff --git a/ROSCO_toolbox/ofTools/fast_io/plot_FAST.ipynb b/ROSCO_toolbox/ofTools/fast_io/plot_FAST.ipynb new file mode 100644 index 00000000..4e64a191 --- /dev/null +++ b/ROSCO_toolbox/ofTools/fast_io/plot_FAST.ipynb @@ -0,0 +1,729 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Plot OpenFAST Outputs" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "# Load all the tools\n", + "import numpy as np\n", + "# from wisdem.aeroelasticse.CaseLibrary import ROSCO_Test\n", + "import os, subprocess\n", + "\n", + "# from weis.aeroelasticse.FAST_reader import InputReader_Common, InputReader_OpenFAST, InputReader_FAST7\n", + "# from weis.aeroelasticse.FAST_writer import InputWriter_Common, InputWriter_OpenFAST, InputWriter_FAST7\n", + "# from weis.aeroelasticse.runFAST_pywrapper import runFAST_pywrapper_batch\n", + "# from weis.aeroelasticse.CaseGen_General import CaseGen_General\n", + "# from weis.aeroelasticse.CaseGen_IEC import CaseGen_IEC\n", + "# from pCrunch import pdTools\n", + "# from pCrunch import Processing, Analysis\n", + "# from weis.aeroelasticse.Util import FileTools\n", + "\n", + "# Instantiate fast_IO\n", + "from ROSCO_toolbox.ofTools.fast_io import output_processing\n", + "\n", + "from ROSCO_toolbox.ofTools.util import spectral\n", + "\n", + "\n", + "import pandas as pd\n", + "\n", + "import matplotlib.pyplot as plt\n", + "# %matplotlib\n", + "\n", + "i_fig = 0" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Set outputs" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "outfiles = [\n", + "# '/Users/dzalkind/Tools/WEIS-1/outputs/iea15mw/iea15mw_00.outb',\n", + "# '/Users/dzalkind/Tools/WEIS-1/outputs/iea15mw/iea15mw_01.outb',\n", + "# '/Users/dzalkind/Tools/WEIS-1/outputs/iea15mw/iea15mw_02.outb',\n", + "# '/Users/dzalkind/Tools/WEIS-1/outputs/iea15mw/iea15mw_08.outb',\n", + "# '/Users/dzalkind/Tools/ROSCO_toolbox/Examples/examples_out/13_Simulink_Test/OL_Test_1.SFunc.outb',\n", + " '/Users/dzalkind/Projects/FOCAL/IEA15MW_FOCAL/power_curve/base/IEA15MW_FOCAL_07.outb',\n", + "# '/Users/dzalkind/Tools/WEIS-3/results/UMaine-Semi/DISCON/IB_NTM_Raft/iea15mw_1.outb',\n", + "# '/Users/dzalkind/Tools/WEIS-3/results/UMaine-Semi/DISCON/IB_NTM_Raft/iea15mw_2.outb',\n", + "# '/Users/dzalkind/Tools/WEIS-3/results/CT-semi/ntm_long/DISCON-CT-semi/iea15mw_13.outb',\n", + "# '/Users/dzalkind/Tools/WEIS-4/optimizations/both_debug_nowrapper/NREL5MW_OC3_spar_IEC_0.outb',\n", + "# '/Users/dzalkind/Tools/WEIS-4/optimizations/outputs_opt_both_debug/NREL5MW_OC3_spar_IEC_0.outb',\n", + "# '/Users/dzalkind/Tools/WEIS-4/optimizations/outputs_opt_both_debug2/NREL5MW_OC3_spar_IEC_0.outb',\n", + "# '/Users/dzalkind/Tools/WEIS-4/optimizations/outputs_opt_both_debug3/NREL5MW_OC3_spar_IEC_0.outb',\n", + "# '/Users/dzalkind/Tools/WEIS-4/optimizations/outputs_opt_both_debug4/NREL5MW_OC3_spar_IEC_0.outb',\n", + "# '/Users/dzalkind/Tools/WEIS-3/sowfa_debug/rotor_sweep/c_001_sp6_h150_D240_oR2_yaw_base/IEA-15-240-RWT-Monopile.2.T2.out',\n", + "# '/Users/dzalkind/Tools/WEIS-3/results/CT-barge/DISCON-CT-barge_hiBW/simp/step_1.outb',\n", + "]\n", + "\n", + "# outfiles" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Wind1VelX is not available as an output channel.\n", + "BldPitch1 is not available as an output channel.\n", + "GenTq is not available as an output channel.\n", + "TwrBsMyt is not available as an output channel.\n", + "GenPwr is not available as an output channel.\n", + "RotThrust is not available as an output channel.\n", + "Fl_Pitcom is not available as an output channel.\n", + "PC_MinPit is not available as an output channel.\n", + "WE_Vw is not available as an output channel.\n", + "RtVAvgxh is not available as an output channel.\n", + "BldPitch1 is not available as an output channel.\n", + "PtfmSurge is not available as an output channel.\n", + "PtfmSway is not available as an output channel.\n", + "PtfmHeave is not available as an output channel.\n", + "PtfmPitch is not available as an output channel.\n", + "PtfmRoll is not available as an output channel.\n", + "PtfmYaw is not available as an output channel.\n", + "RtVAvgxh is not available as an output channel.\n", + "BldPitch1 is not available as an output channel.\n", + "RotThrust is not available as an output channel.\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "output_ext = '.out'\n", + "plt.rcParams[\"figure.figsize\"] = [9,7]\n", + "\n", + "ROSCO = True\n", + "\n", + "# Define Plot cases \n", + "cases = {}\n", + "cases['Gen. Speed Sigs.'] = ['Wind1VelX', 'BldPitch1', 'GenTq', 'GenSpeed','TwrBsMyt','GenPwr','RotThrust']#,'PtfmPitch','PtfmYaw','NacYaw']\n", + "# cases['Debug'] = ['IPDefl1','OoPDefl1','Azimuth','RotTorq']#,'PtfmPitch','PtfmYaw','NacYaw']\n", + "cases['Plt. Control Sigs.'] = ['RtVAvgxh', 'BldPitch1', 'Fl_Pitcom', 'PC_MinPit','WE_Vw']\n", + "cases['Platform Motion'] = ['PtfmSurge', 'PtfmSway', 'PtfmHeave', 'PtfmPitch','PtfmRoll','PtfmYaw']\n", + "cases['Rot Thrust'] = ['RtVAvgxh','BldPitch1','RotThrust']\n", + "\n", + "op = output_processing.output_processing()\n", + "\n", + "# Rosco outfiles\n", + "r_outfiles = [out.split('.out')[0] + '.RO.dbg' for out in outfiles]\n", + "\n", + "fast_out = []\n", + "fast_out = op.load_fast_out(outfiles, tmin=0)\n", + "if ROSCO:\n", + " rosco_out = op.load_fast_out(r_outfiles, tmin=0)\n", + " \n", + "# Combine outputs\n", + "if ROSCO:\n", + " comb_out = [None] * len(fast_out)\n", + " for i, (r_out, f_out) in enumerate(zip(rosco_out,fast_out)):\n", + " r_out.update(f_out)\n", + " comb_out[i] = r_out\n", + "else:\n", + " comb_out = fast_out\n", + "\n", + "# comb_out\n", + "# if False:\n", + "# comb_out[0]['meta']['name'] = 'Variable Bandwidth'\n", + "\n", + " \n", + "# Plot\n", + "fig, ax = op.plot_fast_out(comb_out,cases, showplot=True)\n", + "\n", + "if False: # Print!\n", + " \n", + " save_fig_dir = '/Users/dzalkind/Projects/CarbonTrust/Deliverables'\n", + " for f in fig:\n", + " f.savefig(os.path.join(save_fig_dir,'ts'+str(i_fig)))\n", + " i_fig += 1" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
fq_0psd_0fq_1psd_1fq_2psd_2
00.0000001.671551e+100.0000001.965097e+100.0000001.081063e+10
10.0001536.689014e+090.0001537.170768e+090.0001533.754186e+09
20.0003053.124308e+070.0003051.730212e+060.0003054.290867e+06
30.0004584.563406e+070.0004586.438544e+060.0004581.180544e+06
40.0006103.262825e+070.0006104.078779e+060.0006107.362297e+05
.....................
26214039.9993909.375684e-0539.9993902.434349e-0439.9993901.894379e-04
26214139.9995421.289097e-0539.9995428.927871e-0539.9995423.235635e-04
26214239.9996955.578019e-0539.9996956.308301e-0539.9996952.832569e-05
26214339.9998476.688827e-0539.9998479.410833e-0539.9998474.557659e-05
26214440.0000006.043648e-0740.0000005.951048e-0540.0000004.245373e-05
\n", + "

262145 rows × 6 columns

\n", + "
" + ], + "text/plain": [ + " fq_0 psd_0 fq_1 psd_1 fq_2 \\\n", + "0 0.000000 1.671551e+10 0.000000 1.965097e+10 0.000000 \n", + "1 0.000153 6.689014e+09 0.000153 7.170768e+09 0.000153 \n", + "2 0.000305 3.124308e+07 0.000305 1.730212e+06 0.000305 \n", + "3 0.000458 4.563406e+07 0.000458 6.438544e+06 0.000458 \n", + "4 0.000610 3.262825e+07 0.000610 4.078779e+06 0.000610 \n", + "... ... ... ... ... ... \n", + "262140 39.999390 9.375684e-05 39.999390 2.434349e-04 39.999390 \n", + "262141 39.999542 1.289097e-05 39.999542 8.927871e-05 39.999542 \n", + "262142 39.999695 5.578019e-05 39.999695 6.308301e-05 39.999695 \n", + "262143 39.999847 6.688827e-05 39.999847 9.410833e-05 39.999847 \n", + "262144 40.000000 6.043648e-07 40.000000 5.951048e-05 40.000000 \n", + "\n", + " psd_2 \n", + "0 1.081063e+10 \n", + "1 3.754186e+09 \n", + "2 4.290867e+06 \n", + "3 1.180544e+06 \n", + "4 7.362297e+05 \n", + "... ... \n", + "262140 1.894379e-04 \n", + "262141 3.235635e-04 \n", + "262142 2.832569e-05 \n", + "262143 4.557659e-05 \n", + "262144 4.245373e-05 \n", + "\n", + "[262145 rows x 6 columns]" + ] + }, + "execution_count": 28, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjsAAAGtCAYAAADwAbWYAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8vihELAAAACXBIWXMAAAsTAAALEwEAmpwYAAB7oklEQVR4nO3dd3wcxfnH8c/cnbpkyb13bGNAmGJsTDW9hx4gdAglgZDwS6GkQIAQJyEFkhACodcQIPReTA8YTDFginsvsmxZXVfm98de7+rS6ft+vRLudmd35+7Wuudmnpkx1lpEREREcpWruysgIiIi0pkU7IiIiEhOU7AjIiIiOU3BjoiIiOQ0BTsiIiKS0zzdXYHOUFFRYbfZZpvuroZIgvr6ekpKSrq7GiJJ6f6UnurDDz+sstYObuvxORnsDB06lA8++KC7qyGSYO7cucyePbu7qyGSlO5P6amMMcvbc7y6sURERCSnKdgRERGRnKZgR0RERHKagh0RERHJaQp2REREJKcp2BEREZGcpmBHREREcpqCHREREclpCnZEREQkpynYERERkZymYEdERERymoIdERERyWkKdkRERCSnKdgRERGRnKZgR0RERHKagh0RERHJaQp2REREJKcp2BEREZGcpmBHREREcpqCHREREclpCnZEREQkpynYERERkZymYEdERERymoIdERERyWkKdkRERCSnKdgRERGRnKZgR0RERHKagh0RERHJaQp2REREJKcp2BEREZGcpmBHREREcpqCHREREclpCnZEREQkpynYERERkZymYEdERERymoIdERERyWkKdkRERCSnKdgRERGRnKZgR0RERHKagh0RERHJaQp2REREJKcp2BEREZGcpmBHREREcpqCHREREclpCnZEREQkpynYERERkZymYEdERERymoIdERERyWkKdkRERCSnKdgRERGRnKZgR0RERHKagh0RERHJaQp2REREJKf1imDHGFNijPnQGHNkd9dFREREepduCXaMMXcYYzYYYz6L236oMeYrY8wiY8zlUbsuAx7u2lqKiIhILuiulp27gEOjNxhj3MDfgcOA7YBTjDHbGWMOBL4A1nd1JUVERKT383THRa21bxhjxsVtngEsstYuATDGPAQcDZQCJTgBUKMx5llrbSD+nMaY84HzAQYPHszcuXM77wWItFFdXZ3uTemx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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "# plot thrust spectra\n", + "\n", + "df = pd.DataFrame()\n", + "\n", + "for i in range(3):\n", + " fq, y, _ = spectral.fft_wrap(\n", + " fast_out[i]['Time'], fast_out[i]['RotThrust'], averaging='Welch', averaging_window='Hamming', output_type='psd')\n", + "\n", + " plt.plot(fq,np.sqrt(y))\n", + " \n", + " df['fq_'+str(i)] = fq\n", + " df['psd_'+str(i)] = y\n", + " \n", + "# fq, y, _ = spectral.fft_wrap(\n", + "# fast_out[i]['Time'], fast_out[i]['RtVAvgxh'], averaging='Welch', averaging_window='Hamming', output_type='psd')\n", + "\n", + "# plt.plot(fq,np.sqrt(y))\n", + " \n", + "# fq, y, _ = spectral.fft_wrap(\n", + "# fast_out[i]['Time'], fast_out[i]['Wind1VelX'], averaging='Welch', averaging_window='Hamming', output_type='psd')\n", + "\n", + "# plt.plot(fq,np.sqrt(y))\n", + " \n", + " \n", + " \n", + " \n", + " \n", + "plt.yscale('log')\n", + "plt.xscale('log')\n", + "\n", + "plt.xlim([1e-2,10])\n", + "plt.grid('True')\n", + "\n", + "plt.xlabel('Freq. (Hz)')\n", + "plt.ylabel('PSD')\n", + "\n", + "\n", + "df.to_pickle('/Users/dzalkind/Tools/RAFT/designs/rotors/thrust_psd.p')\n", + "df" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'Time': array([0.00000e+00, 1.30000e-02, 2.50000e-02, ..., 7.99975e+02,\n", + " 7.99987e+02, 8.00000e+02]),\n", + " 'FA_AccF': array([ 0.000e+00, 1.264e-23, -8.574e-23, ..., -9.656e-17, -9.670e-17,\n", + " -9.684e-17]),\n", + " 'FA_AccR': array([-0.000e+00, 7.226e-18, -7.774e-17, ..., -3.648e-17, 2.417e-17,\n", + " 2.873e-17]),\n", + " 'RotSpeed': array([0.6132, 0.6131, 0.613 , ..., 0.5879, 0.5878, 0.5878]),\n", + " 'RotSpeedF': array([0.6132, 0.6132, 0.6132, ..., 0.5932, 0.5932, 0.5931]),\n", + " 'GenSpeed': array([0.6132, 0.6131, 0.613 , ..., 0.5879, 0.5878, 0.5878]),\n", + " 'GenSpeedF': array([0.6132, 0.6132, 0.6132, ..., 0.5932, 0.5932, 0.5931]),\n", + " 'FA_Acc': array([0., 0., 0., ..., 0., 0., 0.]),\n", + " 'Fl_Pitcom': array([-0.000e+00, 1.481e-24, -8.567e-24, ..., 4.151e-13, 4.151e-13,\n", + " 4.151e-13]),\n", + " 'PC_MinPit': array([0., 0., 0., ..., 0., 0., 0.]),\n", + " 'SS_dOmF': array([-0.0007917, -0.0007917, -0.0007901, ..., -0.0004443, -0.0004443,\n", + " -0.0004444]),\n", + " 'WE_Vw': array([8.963, 8.963, 8.963, ..., 7.916, 7.916, 7.916]),\n", + " 'WE_b': array([0.000e+00, 0.000e+00, 2.101e-28, ..., 2.392e-11, 2.392e-11,\n", + " 2.392e-11]),\n", + " 'WE_t': array([13140000., 13140000., 13140000., ..., 11480000., 11470000.,\n", + " 11470000.]),\n", + " 'WE_w': array([0.6132, 0.6132, 0.6132, ..., 0.5932, 0.5932, 0.5931]),\n", + " 'WE_Vm': array([8.963, 8.963, 8.963, ..., 7.981, 7.98 , 7.98 ]),\n", + " 'WE_Vt': array([ 0.000e+00, -2.132e-13, -8.994e-09, ..., -6.438e-02, -6.455e-02,\n", + " -6.472e-02]),\n", + " 'WE_lambda': array([8.21 , 8.209, 8.208, ..., 8.911, 8.911, 8.91 ]),\n", + " 'WE_Cp': array([0.25 , 0.4574, 0.4574, ..., 0.4622, 0.4622, 0.4622]),\n", + " 'meta': {'name': 'iea15mw_0.RO',\n", + " 'description': [' Generated on 22-Jun-2021 at 17:43:27 using ROSCO-v2.1.1-43-g22b65089\\n'],\n", + " 'channels': ['Time',\n", + " 'FA_AccF',\n", + " 'FA_AccR',\n", + " 'RotSpeed',\n", + " 'RotSpeedF',\n", + " 'GenSpeed',\n", + " 'GenSpeedF',\n", + " 'FA_Acc',\n", + " 'Fl_Pitcom',\n", + " 'PC_MinPit',\n", + " 'SS_dOmF',\n", + " 'WE_Vw',\n", + " 'WE_b',\n", + " 'WE_t',\n", + " 'WE_w',\n", + " 'WE_Vm',\n", + " 'WE_Vt',\n", + " 'WE_lambda',\n", + " 'WE_Cp'],\n", + " 'attribute_units': ['sec',\n", + " 'm/s',\n", + " 'rad/s^2',\n", + " 'rad/s',\n", + " 'rad/s',\n", + " 'rad/s',\n", + " 'rad/s',\n", + " 'm/s^2',\n", + " 'rad',\n", + " 'rad',\n", + " 'rad/s',\n", + " 'rad',\n", + " 'deg',\n", + " 'Nm',\n", + " 'rad/s',\n", + " 'm/s',\n", + " 'm/s',\n", + " 'rad/s',\n", + " '-'],\n", + " 'filename': '/Users/dzalkind/Tools/WEIS-3/results/UMaine-Semi/DISCON/IB_NTM_Raft/iea15mw_0.RO.dbg'}}" + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "fast_out[3]" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(PtfmYaw,0) max period = 150.00041666666667\n", + "(PtfmYaw,1) max period = 85.71452380952381\n" + ] + }, + { + "data": { + "image/png": "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ZB50O2wREb8SHBxMmzZtaNGiBVdffTVZWVlFrn5977330rx5c+69995SXfeKK67g9ddfP7o9Y8YMWrVqVeJsur5k0qRJtGvXjpCQkNOeXK+ggGqRkdIr2GpzQ7f67D1wmKkrtvPLkq38unQbP/y1CWOgdWJF+rSozvkta5R6RJaISHlVcImCyy67jBEjRnDxxRczfPhwbrvttqPHvfHGG2zbtq3QNP8n8sILL9C5c2cGDhxIfHw8Q4cOZfjw4YSEeO+f8ZycHIKDgz12vTp16jBy5EieffZZj10TlMhIntiIUPq0qEGfFjXIzbUs3LiHX5Zs5efFW3hq7BKeGruElrXiOK9lDc5vWYM68UpqREROpEuXLixbtoxhw4axcuVK2rRpw9lnn83SpUvZt28fHTt25P7772fs2LFERkayZMkS1q5dy3vvvceoUaOYPn06HTt2ZOTIkSQkJHDPPfdw33330b59e1q1akViYiLdunVj3759ALz66qt06dKF2267jT59+jBgwAAuuugiKlWqxLvvvss777zD6tWreeKJJ4qNOSkpieuvv56ffvqJoUOHMmLECJ599llSUlLYvn07KSkprFmzhpEjRzJmzBiysrJYuXIlF110EU8//fQJ6yMpKQng6FpRnqJERo4TFGRomRhHy8Q4/tm7Iet3ZvHj/E38OH8T/zduCf83bgktalWgX6uaXNS2FgkVItwOWUSksLHDYPN8z16zekvo+1SpDs3OzmbChAn069ePvn37smDBgqMtNQAxMTFHt8eOHcuuXbv45ZdfGDNmDP3792fq1Km8/fbbtG/fnrlz59KmTRtuueUWRo0aRVpaGrNmzSIyMpIJEyYQERHB8uXLGTx4MLNmzaJ79+5MnjyZAQMGsGHDBjZt2gTAlClTGDRoUImxR0REMGXKFABGjBhR7HFz587lzz//JDw8nMaNG3P77bdTu3btYpco8JaASmTK26ilslK7chQ392jAzT0asH5nFuMWbOaH+Zt4auwSnh63hB6NqnJZSm16NU0gLETdrkSk/Nq/fz9t2rQBoGPHjgwZMoSNGzeWeF7//v0xxtCyZUsSEhJo2bIlAM2bN2fNmjW0adOGoKAgbr75ZmbNmkV8fDwZGRkMHTqUuXPnEhwczLJlywBnnaUXX3yRRYsW0axZM3bt2sWmTZuYPn06L7/8comxXH75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2TNxelFAtcios6+IiJRL3e6GRzy0WvafH8Iv/3EWrZz+GmyeD/u2O/PUHHFgDywd55n7naaAapEREREpt4KCndaZxzz4x/z4B44vu/pb+P11WDYOrvrGmbzv82vgpt9cacEJqBYZERGRcu/BzdBjmPeu//4FThID8MGF8FZPZzHLopKeMqBERkREJJCERkLP+z33qKm05n1StvfLo0dLIiIigejIoyZw1mCaPRImPeNqSN6gFhkREZFAF5cIZz0ED2yE6KpuR+NRAZXIaK0lERGREwiLhruXwSO7oPfjbkfjEQGVyGj4tYiISAmCgpxX1zsg9QG4bYbnrn14v+euVUoBlciIiIjISUj9F1Rr4ox08oSDmZ65zklQZ18REZHyLjQSrvgcarWD7cvhvT6ndh1b9gtRqkVGREREoNE5EF0F6nZ2Wmja3wB/+8LZl3J96a5hjPfiK4ZaZERERKSw0Eg4/znn85Eh3P1eyNs+UT/Usk9k1CIjIiIipXfHfDB56UPy2e7GglpkRERE5GRUrAOP7srfXj4BPhrofA4KLvNw1CIjIiIip67h2fC3L6HBWRBeocxvH1AtMsaY/kD/5ORkt0MREREpPxr2dl4uCKgWGU2IJyIiUr4EVCIjIiIi5YsSGREREfFbSmRERETEbymREREREb+lREZERET8lhIZERER8VtKZERERMRvKZERERERv6VERkRERPyWEhkRERHxW0pkRERExG8pkRERERG/pURGRERE/JYSGREREfFbxlrrdgweZ4zZBqwtxaFxQMZp3Kq055fmuBMdU9y+osqPLTt2uwqwvYRYPMGf67a09e2PdXsy55ZV3ZamTHV7auWq25Pbr7o9vWO9+e9YRWtt1SKvbK0tty/gzbI4vzTHneiY4vYVVX5sWRHbs1S3J1eHgVS3J3NuWdVtKb/HqttTKFfdntx+1a1v1m1J9y3vj5a+K6PzS3PciY4pbl9R5ceWne7PeKr8uW5LW9/+WLcnc25Z1e3J/DfwNn+o29P5fVDae3uDr9Stt37Xlube3hLodXvC+wbkoyUpnjFmlrU2xe04ApHq1ntUt96juvUe1W3ZKO8tMuXRm24HEMBUt96juvUe1a33qG7LgFpkRERExG+pRUZERET8lhIZERER8VtKZERERMRvKZERERERv6VERo4yxjQ1xowwxnxhjLnV7XgC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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "# Plot Spectral\n", + "\n", + "_,_,max_periods = op.plot_spectral(fast_out,[('PtfmYaw',0),('PtfmYaw',1)],showplot=False,detrend=True)\n", + "yaw_fast = fast_out[0]['PtfmYaw']\n", + "std_yaw_fast = np.std(yaw_fast)\n", + "amp = std_yaw_fast * np.sqrt(2)\n", + "\n", + "\n", + "\n", + "\n", + "# save_yaml(dir_matrix, 'case_matrix.yaml', matrix_out_yaml)\n", + "\n", + "# op" + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "metadata": {}, + "outputs": [], + "source": [ + "# ret" + ] + }, + { + "cell_type": "code", + "execution_count": 49, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "94.73684210526316" + ] + }, + "execution_count": 49, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "1/2e-3\n", + "\n", + "3600/38\n" + ] + }, + { + "cell_type": "code", + "execution_count": 50, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "1.9752718440907233" + ] + }, + "execution_count": 50, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "yaw_fast = fast_out[0]['PtfmYaw']\n", + "amp = np.std(yaw_fast) * np.sqrt(2)\n", + "\n", + "\n", + "per = 3600/38\n", + "\n", + "tt = fast_out[0]['Time']\n", + "\n", + "yaw_sowfa = amp * np.sin(2 * np.pi / per * tt)\n", + "\n", + "\n", + "plt.plot(tt,yaw_fast,tt,yaw_sowfa)\n", + "\n", + "np.min(yaw_fast)\n", + "\n", + "amp" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 51, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'/Users/dzalkind/Tools/WEIS-3/pCrunch/HPC_tools/eagle2local_sim_inp.sh /Users/dzalkind/Tools/WEIS-3/results/CT-semi/ntm_long/DISCON-CT-semi/ iea15mw_07'" + ] + }, + "execution_count": 51, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# pull from eagle if necessary\n", + "pull_script = '/Users/dzalkind/Tools/WEIS-3/pCrunch/HPC_tools/eagle2local_sim_inp.sh'\n", + "\n", + "\n", + "basedir = outfiles[0].split('/')[1]\n", + "# if basedir == 'scratch':\n", + " \n", + "temp = outfiles[0].split('/')\n", + "filedir = '/'.join(temp[:-1]) + '/'\n", + "\n", + "namebase = temp[-1].split('.')[0]\n", + "search_str = namebase + '*'\n", + "\n", + "shell_cmd = pull_script + ' ' + filedir + ' ' + namebase\n", + "\n", + "shell_cmd\n", + "# ret = subprocess.call(pull_script,shell=True)\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "weis-env3", + "language": "python", + "name": "weis-env3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.6" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/ROSCO_toolbox/turbine.py b/ROSCO_toolbox/turbine.py index 60af0b2c..80fe0357 100644 --- a/ROSCO_toolbox/turbine.py +++ b/ROSCO_toolbox/turbine.py @@ -662,7 +662,7 @@ def plot_performance(self): max_tsr_id = self.TSR_initial[max_ind[0]] P = plt.contourf(self.pitch_initial_rad * rad2deg, self.TSR_initial, self.performance_table, - levels=np.linspace(0,np.max(self.performance_table),20)) + levels=20) plt.colorbar(format='%1.3f') plt.title('Power Coefficient', fontsize=14, fontweight='bold') plt.xlabel('Pitch Angle [deg]', fontsize=14, fontweight='bold') diff --git a/ROSCO_toolbox/utilities.py b/ROSCO_toolbox/utilities.py index 139d4f09..dbc7f3cb 100644 --- a/ROSCO_toolbox/utilities.py +++ b/ROSCO_toolbox/utilities.py @@ -75,12 +75,14 @@ def write_DISCON(turbine, controller, param_file='DISCON.IN', txt_filename='Cp_C file.write('{0:<12d} ! Flp_Mode - Flap control mode {{0: no flap control, 1: steady state flap angle, 2: Proportional flap control}}\n'.format(int(controller.Flp_Mode))) file.write('\n') file.write('!------- FILTERS ----------------------------------------------------------\n') - file.write('{:<13.5f} ! F_LPFCornerFreq - Corner frequency (-3dB point) in the low-pass filters, [rad/s]\n'.format(turbine.bld_edgewise_freq * 1/4)) + file.write('{:<13.5f} ! F_LPFCornerFreq - Corner frequency (-3dB point) in the low-pass filters, [rad/s]\n'.format(controller.f_lpf_cornerfreq)) file.write('{:<13.5f} ! F_LPFDamping - Damping coefficient {{used only when F_FilterType = 2}} [-]\n'.format(controller.F_LPFDamping)) file.write('{:<13.5f} ! F_NotchCornerFreq - Natural frequency of the notch filter, [rad/s]\n'.format(controller.twr_freq)) file.write('{:<10.5f}{:<9.5f} ! F_NotchBetaNumDen - Two notch damping values (numerator and denominator, resp) - determines the width and depth of the notch, [-]\n'.format(0.0,0.25)) - file.write('{:<014.5f} ! F_SSCornerFreq - Corner frequency (-3dB point) in the first order low pass filter for the setpoint smoother, [rad/s].\n'.format(controller.ss_cornerfreq)) + file.write('{:<13.5f} ! F_SSCornerFreq - Corner frequency (-3dB point) in the first order low pass filter for the setpoint smoother, [rad/s].\n'.format(controller.f_ss_cornerfreq)) + file.write('{:<13.5f} ! F_WECornerFreq - Corner frequency (-3dB point) in the first order low pass filter for the wind speed estimate [rad/s].\n'.format(controller.f_we_cornerfreq)) file.write('{:<10.5f}{:<9.5f} ! F_FlCornerFreq - Natural frequency and damping in the second order low pass filter of the tower-top fore-aft motion for floating feedback control [rad/s, -].\n'.format(controller.ptfm_freq, 1.0)) + file.write('{:<13.5f} ! F_FlHighPassFreq - Natural frequency of first-order high-pass filter for nacelle fore-aft motion [rad/s].\n'.format(controller.f_fl_highpassfreq)) file.write('{:<10.5f}{:<9.5f} ! F_FlpCornerFreq - Corner frequency and damping in the second order low pass filter of the blade root bending moment for flap control [rad/s, -].\n'.format(turbine.bld_flapwise_freq*1/3, 1.0)) file.write('\n') @@ -136,7 +138,7 @@ def write_DISCON(turbine, controller, param_file='DISCON.IN', txt_filename='Cp_C file.write( '"{}" ! PerfFileName - File containing rotor performance tables (Cp,Ct,Cq)\n'.format(txt_filename)) file.write('{:<7d} {:<10d} ! PerfTableSize - Size of rotor performance tables, first number refers to number of blade pitch angles, second number referse to number of tip-speed ratios\n'.format(len(turbine.Cp.pitch_initial_rad),len(turbine.Cp.TSR_initial))) file.write('{:<11d} ! WE_FOPoles_N - Number of first-order system poles used in EKF\n'.format(len(controller.A))) - file.write('{} ! WE_FOPoles_v - Wind speeds corresponding to first-order system poles [m/s]\n'.format(''.join('{:<4.2f} '.format(controller.v[i]) for i in range(len(controller.v))))) + file.write('{} ! WE_FOPoles_v - Wind speeds corresponding to first-order system poles [m/s]\n'.format(''.join('{:<4.4f} '.format(controller.v[i]) for i in range(len(controller.v))))) file.write('{} ! WE_FOPoles - First order system poles [1/s]\n'.format(''.join('{:<10.8f} '.format(controller.A[i]) for i in range(len(controller.A))))) file.write('\n') file.write('!------- YAW CONTROL ------------------------------------------------------\n') @@ -164,7 +166,7 @@ def write_DISCON(turbine, controller, param_file='DISCON.IN', txt_filename='Cp_C file.write('\n') file.write('!------- SHUTDOWN -----------------------------------------------------------\n') file.write('{:<014.5f} ! SD_MaxPit - Maximum blade pitch angle to initiate shutdown, [rad]\n'.format(controller.sd_maxpit)) - file.write('{:<014.5f} ! SD_CornerFreq - Cutoff Frequency for first order low-pass filter for blade pitch angle, [rad/s]\n'.format(controller.sd_cornerfreq)) + file.write('{:<014.5f} ! SD_CornerFreq - Cutoff Frequency for first order low-pass filter for blade pitch angle, [rad/s]\n'.format(controller.f_sd_cornerfreq)) file.write('\n') file.write('!------- Floating -----------------------------------------------------------\n') if controller.Fl_Mode == 2: @@ -369,8 +371,10 @@ def DISCON_dict(turbine, controller, txt_filename=None): DISCON_dict['F_LPFDamping'] = controller.F_LPFDamping DISCON_dict['F_NotchCornerFreq'] = controller.twr_freq DISCON_dict['F_NotchBetaNumDen'] = [0.0, 0.25] - DISCON_dict['F_SSCornerFreq'] = controller.ss_cornerfreq - DISCON_dict['F_FlCornerFreq'] = [turbine.ptfm_freq, 1.0] + DISCON_dict['F_WECornerFreq'] = controller.f_we_cornerfreq + DISCON_dict['F_SSCornerFreq'] = controller.f_ss_cornerfreq + DISCON_dict['F_FlHighPassFreq'] = controller.f_fl_highpassfreq + DISCON_dict['F_FlCornerFreq'] = [controller.ptfm_freq, 1.0] DISCON_dict['F_FlpCornerFreq'] = [turbine.bld_flapwise_freq*1/3, 1.0] # ------- BLADE PITCH CONTROL ------- DISCON_dict['PC_GS_n'] = len(controller.pitch_op_pc) @@ -444,7 +448,7 @@ def DISCON_dict(turbine, controller, txt_filename=None): DISCON_dict['PS_BldPitchMin'] = controller.ps_min_bld_pitch # ------- SHUTDOWN ------- DISCON_dict['SD_MaxPit'] = controller.sd_maxpit - DISCON_dict['SD_CornerFreq'] = controller.sd_cornerfreq + DISCON_dict['SD_CornerFreq'] = controller.f_sd_cornerfreq # ------- Floating ------- DISCON_dict['Fl_Kp'] = controller.Kp_float # ------- FLAP ACTUATION ------- diff --git a/Test_Cases/5MW_Land_Simulink/DISCON.IN b/Test_Cases/5MW_Land_Simulink/DISCON.IN deleted file mode 100644 index 7298a475..00000000 --- a/Test_Cases/5MW_Land_Simulink/DISCON.IN +++ /dev/null @@ -1,119 +0,0 @@ -! Controller parameter input file for the 5MW_Land_DLL_WTurb wind turbine -! - File written using ROSCO Controller tuning logic on 02/27/20 - -!------- 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 and/or tower fore-aft motion (for floating) {0: disable, 1: generator speed, 2: tower-top fore-aft motion, 3: generator speed and tower-top fore-aft motion} -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 with constant torque, 3: TSR tracking PI control with constant power} -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 - Pitch saturation mode {0: no pitch saturation, 1: implement pitch saturation} -0 ! SD_Mode - Shutdown mode {0: no shutdown procedure, 1: pitch to max pitch at shutdown} -0 ! Fl_Mode - Floating specific feedback mode {0: no nacelle velocity feedback, 1: nacelle velocity feedback} -0 ! Flp_Mode - Flap control mode {0: no flap control, 1: steady state flap angle, 2: Proportional flap control} - -!------- FILTERS ---------------------------------------------------------- -1.57080 ! F_LPFCornerFreq - Corner frequency (-3dB point) in the low-pass filters, [rad/s] -0.00000 ! F_LPFDamping - Damping coefficient [used only when F_FilterType = 2] -0.44990 ! F_NotchCornerFreq - Natural frequency of the notch filter, [rad/s] -0.00000 0.25000 ! F_NotchBetaNumDen - Two notch damping values (numerator and denominator, resp) - determines the width and depth of the notch, [-] -0.628320000000 ! F_SSCornerFreq - Corner frequency (-3dB point) in the first order low pass filter for the setpoint smoother, [rad/s]. -0.23250 1.00000 ! F_FlCornerFreq - Natural frequency and damping in the second order low pass filter of the tower-top fore-aft motion for floating feedback control [rad/s, -]. -0.00000 1.00000 ! F_FlpCornerFreq - Corner frequency and damping in the second order low pass filter of the blade root bending moment for flap control [rad/s, -]. - -!------- BLADE PITCH CONTROL ---------------------------------------------- -27 ! PC_GS_n - Amount of gain-scheduling table entries -0.063580 0.091667 0.113820 0.132927 0.150163 0.165982 0.180787 0.194909 0.208461 0.221269 0.233885 0.245874 0.257736 0.269106 0.280469 0.291234 0.302266 0.312525 0.322919 0.333308 0.342993 0.352949 0.362942 0.372100 0.381515 0.391200 0.400190 ! PC_GS_angles - Gain-schedule table: pitch angles --0.015264 -0.013210 -0.011563 -0.010213 -0.009088 -0.008134 -0.007316 -0.006607 -0.005985 -0.005437 -0.004949 -0.004513 -0.004120 -0.003764 -0.003440 -0.003145 -0.002874 -0.002625 -0.002394 -0.002181 -0.001983 -0.001799 -0.001627 -0.001466 -0.001315 -0.001173 -0.001039 ! PC_GS_KP - Gain-schedule table: pitch controller kp gains --0.005660 -0.005036 -0.004536 -0.004126 -0.003785 -0.003495 -0.003247 -0.003031 -0.002843 -0.002676 -0.002528 -0.002396 -0.002276 -0.002168 -0.002070 -0.001980 -0.001898 -0.001822 -0.001752 -0.001688 -0.001628 -0.001572 -0.001519 -0.001470 -0.001425 -0.001381 -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.004360000000 ! PC_MinPit - Minimum physical pitch limit, [rad]. -0.174500000000 ! PC_MaxRat - Maximum pitch rate (in absolute value) in pitch controller, [rad/s]. --0.17450000000 ! PC_MinRat - Minimum pitch rate (in absolute value) in pitch controller, [rad/s]. -122.9096700000 ! PC_RefSpd - Desired (reference) HSS speed for pitch controller, [rad/s]. -0.004360000000 ! PC_FinePit - Record 5: Below-rated pitch angle set-point, [rad] -0.017450000000 ! PC_Switch - Angle above lowest minimum pitch angle for switch, [rad] - -!------- 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!], [%] -43093.51876000 ! 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]. -47402.87063000 ! VS_MaxTq - Maximum generator torque in Region 3 (HSS side), [Nm]. -0.000000000000 ! VS_MinTq - Minimum generator (HSS side), [Nm]. -35.98150000000 ! VS_MinOMSpd - Optimal mode minimum speed, cut-in speed towards optimal mode gain path, [rad/s] -2.060980000000 ! VS_Rgn2K - Generator torque constant in Region 2 (HSS side), [N-m/(rad/s)^2] -5000000.000000 ! VS_RtPwr - Wind turbine rated power [W] -43093.51876000 ! VS_RtTq - Rated torque, [Nm]. -122.9096700000 ! VS_RefSpd - Rated generator speed [rad/s] -1 ! VS_n - Number of generator PI torque controller gains --1028.53436000 ! 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) --185.790360000 ! 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.79 ! 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 (distance from hub center to blade tip), [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] -97.0 ! WE_GearboxRatio - Gearbox ratio [>=1], [-] -43702538.05700 ! 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] -"../NREL-5MW/Cp_Ct_Cq.NREL5MW.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 -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.01651600 -0.01926866 -0.02202133 -0.02477399 -0.02752666 -0.03027933 -0.03303199 -0.03578466 -0.03853732 -0.04128999 -0.04404266 -0.04679532 -0.04954799 -0.05230065 -0.05505332 -0.05780599 -0.06055865 -0.05136706 -0.06083297 -0.07318141 -0.08698814 -0.10174996 -0.11701540 -0.13277020 -0.14916461 -0.16625567 -0.18314382 -0.20108255 -0.21861726 -0.23708646 -0.25523482 -0.27455940 -0.29291942 -0.31337978 -0.33196662 -0.35213321 -0.37322194 -0.39245925 -0.41381198 -0.43612755 -0.45572506 -0.47749086 -0.50133095 -0.53269989 ! WE_FOPoles - First order system poles [1/s] - -!------- 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] - -!------- MINIMUM PITCH SATURATION ------------------------------------------- -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.01485060 0.01236683 0.03352748 0.05055557 0.06777740 0.07974763 0.09136965 0.10271004 0.11384522 0.12469291 0.13535631 0.14591258 0.15638173 0.16654155 0.17679154 0.18673044 0.19673079 0.20647404 0.21633775 0.22580762 0.23562090 0.24482023 0.25423878 0.26372109 0.27262634 0.28186719 0.29118443 0.29975995 0.30867256 0.31789492 0.32643003 ! PS_BldPitchMin - Minimum blade pitch angles [rad] - -!------- SHUTDOWN ----------------------------------------------------------- -0.436300000000 ! 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] - -!------- Floating ----------------------------------------------------------- -0.000000000000 ! Fl_Kp - Nacelle velocity proportional feedback gain [s] - -!------- FLAP ACTUATION ----------------------------------------------------- -0.000000000000 ! Flp_Angle - Initial or steady state flap angle [rad] -0.00000000e+00 ! Flp_Kp - Blade root bending moment proportional gain for flap control [s] -0.00000000e+00 ! Flp_Ki - Flap displacement integral gain for flap control [s] -0.000000000000 ! Flp_MaxPit - Maximum (and minimum) flap pitch angle [rad] \ No newline at end of file diff --git a/Test_Cases/5MW_Land_Simulink/NRELOffshrBsline5MW_Onshore_ServoDyn.dat b/Test_Cases/5MW_Land_Simulink/NRELOffshrBsline5MW_Onshore_ServoDyn.dat index 8599775b..dc0cf3ec 100644 --- a/Test_Cases/5MW_Land_Simulink/NRELOffshrBsline5MW_Onshore_ServoDyn.dat +++ b/Test_Cases/5MW_Land_Simulink/NRELOffshrBsline5MW_Onshore_ServoDyn.dat @@ -68,7 +68,7 @@ True GenTiStp - Method to stop the generator {T: timed using TimGen "unused" SStCfiles - Name of the files for substructure structural controllers (quoted strings) [unused when NumSStC==0] ---------------------- BLADED INTERFACE ---------------------------------------- [used only with Bladed Interface] "../../ROSCO/build/libdiscon.dylib" DLL_FileName - Name/location of the dynamic library {.dll [Windows] or .so [Linux]} in the Bladed-DLL format (-) [used only with Bladed Interface] -"DISCON.IN" DLL_InFile - Name of input file sent to the DLL (-) [used only with Bladed Interface] +"../NREL-5MW/DISCON.IN" DLL_InFile - Name of input file sent to the DLL (-) [used only with Bladed Interface] "DISCON" DLL_ProcName - Name of procedure in DLL to be called (-) [case sensitive; used only with DLL Interface] "default" DLL_DT - Communication interval for dynamic library (s) (or "default") [used only with Bladed Interface] false DLL_Ramp - Whether a linear ramp should be used between DLL_DT time steps [introduces time shift when true] (flag) [used only with Bladed Interface] diff --git a/Test_Cases/BAR_10/BAR_10_DISCON.IN b/Test_Cases/BAR_10/BAR_10_DISCON.IN index f0cffc40..04c4cf1f 100644 --- a/Test_Cases/BAR_10/BAR_10_DISCON.IN +++ b/Test_Cases/BAR_10/BAR_10_DISCON.IN @@ -1,5 +1,5 @@ ! Controller parameter input file for the BAR_10 wind turbine -! - File written using ROSCO Controller tuning logic on 11/19/20 +! - File written using ROSCO version 2.4.1 controller tuning logic on 11/11/21 !------- 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} @@ -15,31 +15,33 @@ 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 - Pitch saturation mode {0: no pitch saturation, 1: implement pitch saturation} 0 ! SD_Mode - Shutdown mode {0: no shutdown procedure, 1: pitch to max pitch at shutdown} -0 ! Fl_Mode - Floating specific feedback mode {0: no nacelle velocity feedback, 1: nacelle velocity feedback} +0 ! Fl_Mode - Floating specific feedback mode {0: no nacelle velocity feedback, 1: feed back translational velocity, 2: feed back rotational veloicty} 2 ! Flp_Mode - Flap control mode {0: no flap control, 1: steady state flap angle, 2: Proportional flap control} !------- FILTERS ---------------------------------------------------------- 0.81771 ! F_LPFCornerFreq - Corner frequency (-3dB point) in the low-pass filters, [rad/s] -0.70000 ! F_LPFDamping - Damping coefficient [used only when F_FilterType = 2] +0.70000 ! F_LPFDamping - Damping coefficient {used only when F_FilterType = 2} [-] 0.00000 ! F_NotchCornerFreq - Natural frequency of the notch filter, [rad/s] 0.00000 0.25000 ! F_NotchBetaNumDen - Two notch damping values (numerator and denominator, resp) - determines the width and depth of the notch, [-] -0.628320000000 ! F_SSCornerFreq - Corner frequency (-3dB point) in the first order low pass filter for the setpoint smoother, [rad/s]. +0.62830 ! F_SSCornerFreq - Corner frequency (-3dB point) in the first order low pass filter for the setpoint smoother, [rad/s]. +0.20944 ! F_WECornerFreq - Corner frequency (-3dB point) in the first order low pass filter for the wind speed estimate [rad/s]. 0.00000 1.00000 ! F_FlCornerFreq - Natural frequency and damping in the second order low pass filter of the tower-top fore-aft motion for floating feedback control [rad/s, -]. -0.90697 1.00000 ! F_FlpCornerFreq - Corner frequency and damping in the second order low pass filter of the blade root bending moment for flap control [rad/s, -]. +0.01042 ! F_FlHighPassFreq - Natural frequency of first-order high-pass filter for nacelle fore-aft motion [rad/s]. +0.87200 1.00000 ! F_FlpCornerFreq - Corner frequency and damping in the second order low pass filter of the blade root bending moment for flap control [rad/s, -]. !------- BLADE PITCH CONTROL ---------------------------------------------- -33 ! PC_GS_n - Amount of gain-scheduling table entries -0.000000 0.081270 0.102232 0.120018 0.136773 0.151556 0.166247 0.179619 0.192842 0.205458 0.217785 0.229465 0.241251 0.252388 0.263408 0.274584 0.285186 0.295470 0.305837 0.316616 0.326179 0.335567 0.345179 0.355282 0.365503 0.373847 0.382522 0.391565 0.400759 0.410274 0.420186 0.427874 0.435568 ! PC_GS_angles - Gain-schedule table: pitch angles --0.033935 -0.028901 -0.025011 -0.021916 -0.019395 -0.017301 -0.015535 -0.014024 -0.012718 -0.011577 -0.010573 -0.009681 -0.008884 -0.008167 -0.007520 -0.006932 -0.006395 -0.005904 -0.005452 -0.005035 -0.004650 -0.004292 -0.003959 -0.003648 -0.003358 -0.003085 -0.002830 -0.002589 -0.002363 -0.002149 -0.001946 -0.001755 -0.001573 ! PC_GS_KP - Gain-schedule table: pitch controller kp gains --0.003054 -0.002662 -0.002359 -0.002118 -0.001922 -0.001759 -0.001621 -0.001504 -0.001402 -0.001313 -0.001235 -0.001166 -0.001104 -0.001048 -0.000998 -0.000952 -0.000910 -0.000872 -0.000837 -0.000804 -0.000774 -0.000746 -0.000720 -0.000696 -0.000674 -0.000652 -0.000633 -0.000614 -0.000596 -0.000580 -0.000564 -0.000549 -0.000535 ! 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 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 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]. +30 ! PC_GS_n - Amount of gain-scheduling table entries +0.055571 0.084171 0.107141 0.126263 0.144146 0.160539 0.176153 0.190873 0.205230 0.218766 0.232200 0.244952 0.257566 0.269958 0.281962 0.293941 0.305512 0.316846 0.328160 0.339075 0.349883 0.360682 0.371115 0.381477 0.391841 0.401895 0.411830 0.421766 0.431531 0.441117 ! PC_GS_angles - Gain-schedule table: pitch angles [rad]. +-0.017860 -0.014810 -0.012465 -0.010606 -0.009097 -0.007846 -0.006793 -0.005894 -0.005118 -0.004442 -0.003846 -0.003318 -0.002847 -0.002423 -0.002041 -0.001694 -0.001377 -0.001088 -0.000822 -0.000576 -0.000349 -0.000139 0.000057 0.000240 0.000411 0.000571 0.000721 0.000862 0.000995 0.001121 ! PC_GS_KP - Gain-schedule table: pitch controller kp gains [s]. +-0.000729 -0.000634 -0.000561 -0.000503 -0.000455 -0.000416 -0.000383 -0.000355 -0.000331 -0.000310 -0.000291 -0.000275 -0.000260 -0.000247 -0.000235 -0.000224 -0.000214 -0.000205 -0.000197 -0.000189 -0.000182 -0.000175 -0.000169 -0.000164 -0.000158 -0.000153 -0.000149 -0.000144 -0.000140 -0.000136 ! 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 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 0.0 0.0 0.0 ! PC_GS_TF - Gain-schedule table: pitch controller tf gains (derivative filter) +1.570000000000 ! PC_MaxPit - Maximum physical pitch limit, [rad]. +-0.02142000000 ! PC_MinPit - Minimum physical pitch limit, [rad]. 2.000000000000 ! PC_MaxRat - Maximum pitch rate (in absolute value) in pitch controller, [rad/s]. -2.00000000000 ! PC_MinRat - Minimum pitch rate (in absolute value) in pitch controller, [rad/s]. 79.85313000000 ! 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.02142000000 ! PC_FinePit - Record 5: Below-rated pitch angle set-point, [rad] 0.017450000000 ! PC_Switch - Angle above lowest minimum pitch angle for switch, [rad] !------- INDIVIDUAL PITCH CONTROL ----------------------------------------- @@ -53,16 +55,16 @@ 63892.81326000 ! VS_ArSatTq - Above rated generator torque PI control saturation, [Nm] 4500000.000000 ! VS_MaxRat - Maximum torque rate (in absolute value) in torque controller, [Nm/s]. 70282.09458000 ! VS_MaxTq - Maximum generator torque in Region 3 (HSS side), [Nm]. -0.000000000000 ! VS_MinTq - Minimum generator (HSS side), [Nm]. -29.59272000000 ! VS_MinOMSpd - Optimal mode minimum speed, cut-in speed towards optimal mode gain path, [rad/s] -13.63377000000 ! VS_Rgn2K - Generator torque constant in Region 2 (HSS side), [N-m/(rad/s)^2] +0.000000000000 ! VS_MinTq - Minimum generator torque (HSS side), [Nm]. +27.13407000000 ! VS_MinOMSpd - Minimum generator speed [rad/s] +13.36109000000 ! VS_Rgn2K - Generator torque constant in Region 2 (HSS side), [Nm/(rad/s)^2] 5000000.000000 ! VS_RtPwr - Wind turbine rated power [W] 63892.81326000 ! VS_RtTq - Rated torque, [Nm]. -79.85313000000 ! VS_RefSpd - Rated generator speed [rad/s] +74.83178000000 ! VS_RefSpd - Rated generator speed [rad/s] 1 ! VS_n - Number of generator PI torque controller gains --2449.27265000 ! 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) --324.184760000 ! VS_KI - Integral gain for generator PI torque controller [1/rad Nm]. (Only used in the transitional 2.5 region if VS_ControlMode =/ 2) -10.50 ! VS_TSRopt - Power-maximizing region 2 tip-speed-ratio [rad]. +-2398.24047000 ! VS_KP - Proportional gain for generator PI torque controller [-]. (Only used in the transitional 2.5 region if VS_ControlMode =/ 2) +-332.357190000 ! VS_KI - Integral gain for generator PI torque controller [s]. (Only used in the transitional 2.5 region if VS_ControlMode =/ 2) +9.63 ! VS_TSRopt - Power-maximizing region 2 tip-speed-ratio [rad]. !------- SETPOINT SMOOTHER --------------------------------------------- 1.00000 ! SS_VSGain - Variable speed torque controller setpoint smoother gain, [-]. @@ -71,16 +73,16 @@ !------- WIND SPEED ESTIMATOR --------------------------------------------- 102.996 ! WE_BladeRadius - Blade length (distance from hub center to blade tip), [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_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], [-] -303517908.05748 ! WE_Jtot - Total drivetrain inertia, including blades, hub and casted generator inertia to LSS, [kg m^2] +311169343.31448 ! 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] -"BAR_10_Cp_Ct_Cq.txt" ! PerfFileName - File containing rotor performance tables (Cp,Ct,Cq) +"Cp_Ct_Cq.BAR_10.txt" ! PerfFileName - File containing rotor performance tables (Cp,Ct,Cq) 20 20 ! 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.77 9.27 9.77 10.27 10.77 11.27 11.77 12.27 12.77 13.27 13.77 14.27 14.77 15.27 15.77 16.27 16.77 17.27 17.77 18.27 18.77 19.27 19.77 20.27 20.77 21.27 21.77 22.27 22.77 23.27 23.77 24.27 24.77 ! WE_FOPoles_v - Wind speeds corresponding to first-order system poles [m/s] --0.00916809 -0.01069611 -0.01222412 -0.01375214 -0.01528016 -0.01680817 -0.01833619 -0.01986420 -0.02139222 -0.02292023 -0.02444825 -0.02018410 -0.02498093 -0.03029010 -0.03645166 -0.04286101 -0.04986109 -0.05718743 -0.06479133 -0.07279857 -0.08092143 -0.08974958 -0.09825923 -0.10766441 -0.11700842 -0.12639567 -0.13680217 -0.14696823 -0.15695945 -0.16794302 -0.17973091 -0.19026756 -0.20132954 -0.21321573 -0.22571789 -0.23870610 -0.25011962 -0.26208372 -0.27466260 -0.28820310 -0.30268014 -0.31781843 -0.32958079 -0.34220397 ! WE_FOPoles - First order system poles +60 ! WE_FOPoles_N - Number of first-order system poles used in EKF +3.0000 3.1818 3.3637 3.5455 3.7274 3.9092 4.0911 4.2729 4.4548 4.6366 4.8185 5.0003 5.1822 5.3640 5.5459 5.7277 5.9096 6.0914 6.2732 6.4551 6.6369 6.8188 7.0006 7.1825 7.3643 7.5462 7.7280 7.9099 8.0917 8.2736 8.8311 9.3887 9.9462 10.5038 11.0613 11.6188 12.1764 12.7339 13.2915 13.8490 14.4066 14.9641 15.5217 16.0792 16.6368 17.1943 17.7519 18.3094 18.8670 19.4245 19.9821 20.5396 21.0972 21.6547 22.2123 22.7698 23.3274 23.8849 24.4425 25.0000 ! WE_FOPoles_v - Wind speeds corresponding to first-order system poles [m/s] +-0.01032222 -0.01094791 -0.01157359 -0.01219928 -0.01282497 -0.01345066 -0.01407634 -0.01470203 -0.01532772 -0.01595341 -0.01657910 -0.01720478 -0.01783047 -0.01845616 -0.01908185 -0.01970753 -0.02033322 -0.02095891 -0.02158460 -0.02221029 -0.02283597 -0.02346166 -0.02408735 -0.02471304 -0.02533872 -0.02596441 -0.02659010 -0.02721579 -0.02784148 -0.03155938 -0.02064411 -0.02523568 -0.03115136 -0.03804402 -0.04536814 -0.05319900 -0.06143614 -0.07007492 -0.07905118 -0.08848838 -0.09813189 -0.10826896 -0.11875987 -0.12946050 -0.14060876 -0.15206714 -0.16389528 -0.17579675 -0.18819749 -0.20120021 -0.21421783 -0.22701846 -0.24079660 -0.25500830 -0.26920997 -0.28368131 -0.29815345 -0.31266837 -0.32821652 -0.34409134 ! WE_FOPoles - First order system poles [1/s] !------- YAW CONTROL ------------------------------------------------------ 0.0 ! Y_ErrThresh - Yaw error threshold. Turbine begins to yaw when it passes this. [rad^2 s] @@ -91,22 +93,22 @@ 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_omegaLPFast - Corner frequency fast low pass filter, 1.0 [rad/s] +0.0 ! Y_omegaLPSlow - Corner frequency slow low pass filter, 1/60 [rad/s] 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_HPFCornerFreq - 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] !------- MINIMUM PITCH SATURATION ------------------------------------------- -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.77 9.27 9.77 10.27 10.77 11.27 11.77 12.27 12.77 13.27 13.77 14.27 14.77 15.27 15.77 16.27 16.77 17.27 17.77 18.27 18.77 19.27 19.77 20.27 20.77 21.27 21.77 22.27 22.77 23.27 23.77 24.27 24.77 ! PS_WindSpeeds - Wind speeds corresponding to minimum blade pitch angles [m/s] -0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00787764 0.03110294 0.05282515 0.06521487 0.07721293 0.08869902 0.10001143 0.11102809 0.12192860 0.13256353 0.14318984 0.15346483 0.16395126 0.17393638 0.18415157 0.19404097 0.20383823 0.21383900 0.22345100 0.23285045 0.24246185 0.25238513 0.26138595 0.27041745 0.27968880 0.28925873 0.29892232 0.30723659 0.31578458 0.32459029 0.33363474 0.34287381 0.35231919 0.36008984 0.36800358 ! PS_BldPitchMin - Minimum blade pitch angles [rad] +60 ! PS_BldPitchMin_N - Number of values in minimum blade pitch lookup table (should equal number of values in PS_WindSpeeds and PS_BldPitchMin) +3.0000 3.1818 3.3637 3.5455 3.7274 3.9092 4.0911 4.2729 4.4548 4.6366 4.8185 5.0003 5.1822 5.3640 5.5459 5.7277 5.9096 6.0914 6.2732 6.4551 6.6369 6.8188 7.0006 7.1825 7.3643 7.5462 7.7280 7.9099 8.0917 8.2736 8.8311 9.3887 9.9462 10.5038 11.0613 11.6188 12.1764 12.7339 13.2915 13.8490 14.4066 14.9641 15.5217 16.0792 16.6368 17.1943 17.7519 18.3094 18.8670 19.4245 19.9821 20.5396 21.0972 21.6547 22.2123 22.7698 23.3274 23.8849 24.4425 25.0000 ! PS_WindSpeeds - Wind speeds corresponding to minimum blade pitch angles [m/s] +-0.02141940 -0.02141940 -0.02141940 -0.02141940 -0.02141940 -0.02141940 -0.02141940 -0.02141940 -0.02141940 -0.02141940 -0.02141940 -0.02141940 -0.02141940 -0.02141940 -0.02141940 -0.02141940 -0.02141940 -0.02141940 -0.02141940 -0.02141940 -0.02141940 -0.02141940 -0.02141940 -0.02141940 -0.02141940 -0.02141940 -0.01349065 -0.00174581 0.00921197 0.02613785 0.04179544 0.05575344 0.06942849 0.08245003 0.09513051 0.10763870 0.11969799 0.13168444 0.14346758 0.15502659 0.16653493 0.17783846 0.18901433 0.20015094 0.21108168 0.22191520 0.23270619 0.24332255 0.25385964 0.26435863 0.27473970 0.28503565 0.29529709 0.30541422 0.31541604 0.32537159 0.33522814 0.34495680 0.35464470 0.36428596 ! PS_BldPitchMin - Minimum blade pitch angles [rad] !------- SHUTDOWN ----------------------------------------------------------- -0.435570000000 ! SD_MaxPit - Maximum blade pitch angle to initiate shutdown, [rad] +0.698100000000 ! 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] !------- Floating ----------------------------------------------------------- @@ -114,6 +116,6 @@ !------- FLAP ACTUATION ----------------------------------------------------- 0.000000000000 ! Flp_Angle - Initial or steady state flap angle [rad] -7.94389143e-08 ! Flp_Kp - Blade root bending moment proportional gain for flap control [s] -1.63212406e-09 ! Flp_Ki - Flap displacement integral gain for flap control [s] -0.174530000000 ! Flp_MaxPit - Maximum (and minimum) flap pitch angle [rad] \ No newline at end of file +7.83530248e-08 ! Flp_Kp - Blade root bending moment proportional gain for flap control [s] +1.63131797e-09 ! Flp_Ki - Flap displacement integral gain for flap control [-] +0.174500000000 ! Flp_MaxPit - Maximum (and minimum) flap pitch angle [rad] \ No newline at end of file diff --git a/Test_Cases/BAR_10/BAR_10_Cp_Ct_Cq.txt b/Test_Cases/BAR_10/Cp_Ct_Cq.BAR_10.txt similarity index 100% rename from Test_Cases/BAR_10/BAR_10_Cp_Ct_Cq.txt rename to Test_Cases/BAR_10/Cp_Ct_Cq.BAR_10.txt diff --git a/Test_Cases/IEA-15-240-RWT-UMaineSemi/ServoData/DISCON-UMaineSemi.IN b/Test_Cases/IEA-15-240-RWT-UMaineSemi/DISCON-UMaineSemi.IN similarity index 83% rename from Test_Cases/IEA-15-240-RWT-UMaineSemi/ServoData/DISCON-UMaineSemi.IN rename to Test_Cases/IEA-15-240-RWT-UMaineSemi/DISCON-UMaineSemi.IN index e967e2f4..438fc42a 100644 --- a/Test_Cases/IEA-15-240-RWT-UMaineSemi/ServoData/DISCON-UMaineSemi.IN +++ b/Test_Cases/IEA-15-240-RWT-UMaineSemi/DISCON-UMaineSemi.IN @@ -1,5 +1,5 @@ ! Controller parameter input file for the IEA-15-240-RWT-UMaineSemi wind turbine -! - File written using ROSCO version 2.2.0 controller tuning logic on 06/02/21 +! - File written using ROSCO version 2.4.1 controller tuning logic on 11/11/21 !------- 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} @@ -15,7 +15,7 @@ 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 - Pitch saturation mode {0: no pitch saturation, 1: implement pitch saturation} 0 ! SD_Mode - Shutdown mode {0: no shutdown procedure, 1: pitch to max pitch at shutdown} -2 ! Fl_Mode - Floating specific feedback mode {0: no nacelle velocity feedback, 1: nacelle velocity feedback} +2 ! Fl_Mode - Floating specific feedback mode {0: no nacelle velocity feedback, 1: feed back translational velocity, 2: feed back rotational veloicty} 0 ! Flp_Mode - Flap control mode {0: no flap control, 1: steady state flap angle, 2: Proportional flap control} !------- FILTERS ---------------------------------------------------------- @@ -23,18 +23,20 @@ 0.70000 ! F_LPFDamping - Damping coefficient {used only when F_FilterType = 2} [-] 3.35500 ! F_NotchCornerFreq - Natural frequency of the notch filter, [rad/s] 0.00000 0.25000 ! F_NotchBetaNumDen - Two notch damping values (numerator and denominator, resp) - determines the width and depth of the notch, [-] -0.628320000000 ! F_SSCornerFreq - Corner frequency (-3dB point) in the first order low pass filter for the setpoint smoother, [rad/s]. +0.62830 ! F_SSCornerFreq - Corner frequency (-3dB point) in the first order low pass filter for the setpoint smoother, [rad/s]. +0.20944 ! F_WECornerFreq - Corner frequency (-3dB point) in the first order low pass filter for the wind speed estimate [rad/s]. 0.21300 1.00000 ! F_FlCornerFreq - Natural frequency and damping in the second order low pass filter of the tower-top fore-aft motion for floating feedback control [rad/s, -]. +0.01042 ! F_FlHighPassFreq - Natural frequency of first-order high-pass filter for nacelle fore-aft motion [rad/s]. 1.16240 1.00000 ! F_FlpCornerFreq - Corner frequency and damping in the second order low pass filter of the blade root bending moment for flap control [rad/s, -]. !------- BLADE PITCH CONTROL ---------------------------------------------- 30 ! PC_GS_n - Amount of gain-scheduling table entries 0.060198 0.087134 0.108448 0.126859 0.143398 0.158602 0.172796 0.186189 0.198928 0.211120 0.222850 0.234173 0.245147 0.255807 0.266195 0.276325 0.286231 0.295933 0.305445 0.314779 0.323952 0.332975 0.341858 0.350608 0.359236 0.367748 0.376149 0.384447 0.392644 0.400744 ! PC_GS_angles - Gain-schedule table: pitch angles [rad]. --1.598670 -1.403333 -1.241551 -1.105363 -0.989139 -0.888791 -0.801272 -0.724271 -0.655999 -0.595051 -0.540309 -0.490871 -0.446001 -0.405095 -0.367649 -0.333242 -0.301519 -0.272177 -0.244958 -0.219639 -0.196029 -0.173960 -0.153286 -0.133879 -0.115625 -0.098425 -0.082190 -0.066841 -0.052308 -0.038527 ! PC_GS_KP - Gain-schedule table: pitch controller kp gains [s]. --0.206015 -0.186658 -0.170625 -0.157129 -0.145612 -0.135667 -0.126994 -0.119364 -0.112598 -0.106558 -0.101133 -0.096234 -0.091788 -0.087734 -0.084023 -0.080613 -0.077470 -0.074562 -0.071864 -0.069355 -0.067016 -0.064829 -0.062780 -0.060857 -0.059048 -0.057343 -0.055734 -0.054213 -0.052773 -0.051408 ! PC_GS_KI - Gain-schedule table: pitch controller ki gains [-]. +-1.269046 -1.104681 -0.968551 -0.853956 -0.756161 -0.671723 -0.598081 -0.533289 -0.475842 -0.424558 -0.378496 -0.336896 -0.299141 -0.264721 -0.233212 -0.204261 -0.177567 -0.152878 -0.129975 -0.108671 -0.088804 -0.070234 -0.052838 -0.036508 -0.021148 -0.006676 0.006985 0.019900 0.032129 0.043725 ! PC_GS_KP - Gain-schedule table: pitch controller kp gains [s]. +-0.131850 -0.119461 -0.109200 -0.100563 -0.093191 -0.086827 -0.081276 -0.076393 -0.072063 -0.068197 -0.064725 -0.061590 -0.058744 -0.056150 -0.053775 -0.051593 -0.049581 -0.047720 -0.045993 -0.044388 -0.042890 -0.041490 -0.040179 -0.038948 -0.037791 -0.036700 -0.035670 -0.034697 -0.033775 -0.032901 ! 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 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 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]. +1.570000000000 ! PC_MaxPit - Maximum physical pitch limit, [rad]. 0.000000000000 ! PC_MinPit - Minimum physical pitch limit, [rad]. 0.034900000000 ! PC_MaxRat - Maximum pitch rate (in absolute value) in pitch controller, [rad/s]. -0.03490000000 ! PC_MinRat - Minimum pitch rate (in absolute value) in pitch controller, [rad/s]. @@ -53,9 +55,9 @@ 19624046.66639 ! VS_ArSatTq - Above rated generator torque PI control saturation, [Nm] 4500000.000000 ! VS_MaxRat - Maximum torque rate (in absolute value) in torque controller, [Nm/s]. 21586451.33303 ! VS_MaxTq - Maximum generator torque in Region 3 (HSS side), [Nm]. -0.000000000000 ! VS_MinTq - Minimum generator (HSS side), [Nm]. -0.523600000000 ! VS_MinOMSpd - Optimal mode minimum speed, cut-in speed towards optimal mode gain path, [rad/s] -34937749.21735 ! VS_Rgn2K - Generator torque constant in Region 2 (HSS side), [Nm/(rad/s)^2] +0.000000000000 ! VS_MinTq - Minimum generator torque (HSS side), [Nm]. +0.523600000000 ! VS_MinOMSpd - Minimum generator speed [rad/s] +33732396.86935 ! VS_Rgn2K - Generator torque constant in Region 2 (HSS side), [Nm/(rad/s)^2] 15000000.00000 ! VS_RtPwr - Wind turbine rated power [W] 19624046.66639 ! VS_RtTq - Rated torque, [Nm]. 0.791680000000 ! VS_RefSpd - Rated generator speed [rad/s] @@ -79,7 +81,7 @@ "Cp_Ct_Cq.IEA15MW.txt" ! PerfFileName - File containing rotor performance tables (Cp,Ct,Cq) 104 72 ! PerfTableSize - Size of rotor performance tables, first number refers to number of blade pitch angles, second number referse to number of tip-speed ratios 60 ! WE_FOPoles_N - Number of first-order system poles used in EKF -3.00 3.27 3.53 3.80 4.07 4.33 4.60 4.87 5.14 5.40 5.67 5.94 6.20 6.47 6.74 7.00 7.27 7.54 7.80 8.07 8.34 8.60 8.87 9.14 9.41 9.67 9.94 10.21 10.47 10.74 11.22 11.69 12.17 12.64 13.12 13.59 14.07 14.54 15.02 15.49 15.97 16.44 16.92 17.39 17.87 18.35 18.82 19.30 19.77 20.25 20.72 21.20 21.67 22.15 22.62 23.10 23.57 24.05 24.52 25.00 ! WE_FOPoles_v - Wind speeds corresponding to first-order system poles [m/s] +3.0000 3.2669 3.5338 3.8007 4.0676 4.3345 4.6014 4.8683 5.1352 5.4021 5.6690 5.9359 6.2028 6.4697 6.7366 7.0034 7.2703 7.5372 7.8041 8.0710 8.3379 8.6048 8.8717 9.1386 9.4055 9.6724 9.9393 10.2062 10.4731 10.7400 11.2153 11.6907 12.1660 12.6413 13.1167 13.5920 14.0673 14.5427 15.0180 15.4933 15.9687 16.4440 16.9193 17.3947 17.8700 18.3453 18.8207 19.2960 19.7713 20.2467 20.7220 21.1973 21.6727 22.1480 22.6233 23.0987 23.5740 24.0493 24.5247 25.0000 ! WE_FOPoles_v - Wind speeds corresponding to first-order system poles [m/s] -0.02366483 -0.02577018 -0.02787553 -0.02998089 -0.03208624 -0.03419159 -0.03629695 -0.03840230 -0.04050765 -0.04261301 -0.04471836 -0.04682371 -0.04892907 -0.05103442 -0.05313977 -0.05524513 -0.05735048 -0.05945583 -0.06156119 -0.06366654 -0.06577189 -0.06787725 -0.06998260 -0.07208795 -0.07419331 -0.07629866 -0.07840401 -0.08050937 -0.08261472 -0.07921295 -0.05363855 -0.05601196 -0.06228621 -0.07050010 -0.08000290 -0.09048156 -0.10174863 -0.11365942 -0.12615707 -0.13917960 -0.15270665 -0.16669562 -0.18106141 -0.19588503 -0.21106595 -0.22664340 -0.24258187 -0.25886648 -0.27550565 -0.29248186 -0.30978187 -0.32738614 -0.34531736 -0.36353035 -0.38202289 -0.40082810 -0.41987220 -0.43918834 -0.45876266 -0.47857910 ! WE_FOPoles - First order system poles [1/s] !------- YAW CONTROL ------------------------------------------------------ @@ -103,17 +105,17 @@ !------- MINIMUM PITCH SATURATION ------------------------------------------- 60 ! PS_BldPitchMin_N - Number of values in minimum blade pitch lookup table (should equal number of values in PS_WindSpeeds and PS_BldPitchMin) 3.0000 3.2669 3.5338 3.8007 4.0676 4.3345 4.6014 4.8683 5.1352 5.4021 5.6690 5.9359 6.2028 6.4697 6.7366 7.0034 7.2703 7.5372 7.8041 8.0710 8.3379 8.6048 8.8717 9.1386 9.4055 9.6724 9.9393 10.2062 10.4731 10.7400 11.2153 11.6907 12.1660 12.6413 13.1167 13.5920 14.0673 14.5427 15.0180 15.4933 15.9687 16.4440 16.9193 17.3947 17.8700 18.3453 18.8207 19.2960 19.7713 20.2467 20.7220 21.1973 21.6727 22.1480 22.6233 23.0987 23.5740 24.0493 24.5247 25.0000 ! PS_WindSpeeds - Wind speeds corresponding to minimum blade pitch angles [m/s] -0.06981317 0.06981317 0.06981317 0.06544985 0.06108652 0.06108652 0.05672320 0.05235988 0.04363323 0.03926991 0.03054326 0.02617994 0.01745329 0.01308997 0.00436332 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00846242 0.02297908 0.03562095 0.04679173 0.05441817 0.06531126 0.07566895 0.08563939 0.09530571 0.10472222 0.11392608 0.12294997 0.13181647 0.14054481 0.14914972 0.15764424 0.16603901 0.17434237 0.18256207 0.19070469 0.19877714 0.20678372 0.21472883 0.22261606 0.23044510 0.23822156 0.24594897 0.25362874 0.26126159 0.26884689 0.27639120 0.28389435 0.29135253 0.29877202 0.30615320 ! PS_BldPitchMin - Minimum blade pitch angles [rad] +0.06961065 0.06916756 0.06801949 0.06592239 0.06303563 0.05939204 0.05520107 0.05047233 0.04511353 0.03915876 0.03265491 0.02578782 0.01866353 0.01138963 0.00409471 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00846242 0.02297908 0.03562095 0.04679173 0.05441817 0.06531126 0.07566895 0.08563939 0.09530571 0.10472222 0.11392608 0.12294997 0.13181647 0.14054481 0.14914972 0.15764424 0.16603901 0.17434237 0.18256207 0.19070469 0.19877714 0.20678372 0.21472883 0.22261606 0.23044510 0.23822156 0.24594897 0.25362874 0.26126159 0.26884689 0.27639120 0.28389435 0.29135253 0.29877202 0.30615320 ! PS_BldPitchMin - Minimum blade pitch angles [rad] !------- SHUTDOWN ----------------------------------------------------------- -0.400740000000 ! SD_MaxPit - Maximum blade pitch angle to initiate shutdown, [rad] +0.698100000000 ! 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] !------- Floating ----------------------------------------------------------- --9.37521000000 ! Fl_Kp - Nacelle velocity proportional feedback gain [s] +-9.37521000000 ! Fl_Kp - Nacelle pitching proportional feedback gain [s] !------- FLAP ACTUATION ----------------------------------------------------- 0.000000000000 ! Flp_Angle - Initial or steady state flap angle [rad] 0.00000000e+00 ! Flp_Kp - Blade root bending moment proportional gain for flap control [s] 0.00000000e+00 ! Flp_Ki - Flap displacement integral gain for flap control [-] -0.000000000000 ! Flp_MaxPit - Maximum (and minimum) flap pitch angle [rad] \ No newline at end of file +0.174500000000 ! Flp_MaxPit - Maximum (and minimum) flap pitch angle [rad] \ No newline at end of file diff --git a/Test_Cases/IEA-15-240-RWT-UMaineSemi/IEA-15-240-RWT-UMaineSemi_ServoDyn.dat b/Test_Cases/IEA-15-240-RWT-UMaineSemi/IEA-15-240-RWT-UMaineSemi_ServoDyn.dat index 2bde0d1b..ba0cc386 100644 --- a/Test_Cases/IEA-15-240-RWT-UMaineSemi/IEA-15-240-RWT-UMaineSemi_ServoDyn.dat +++ b/Test_Cases/IEA-15-240-RWT-UMaineSemi/IEA-15-240-RWT-UMaineSemi_ServoDyn.dat @@ -68,7 +68,7 @@ True GenTiStp - Method to stop the generator {T: timed usin "unused" SStCfiles - Name of the files for substructure structural controllers (quoted strings) [unused when NumSStC==0] ---------------------- BLADED INTERFACE ---------------------------------------- [used only with Bladed Interface] "../../ROSCO/install/lib/libdiscon.so" DLL_FileName - Name/location of the dynamic library {.dll [Windows] or .so [Linux]} in the Bladed-DLL format (-) [used only with Bladed Interface] -"ServoData/DISCON-UMaineSemi.IN" DLL_InFile - Name of input file sent to the DLL (-) [used only with Bladed Interface] +"DISCON-UMaineSemi.IN" DLL_InFile - Name of input file sent to the DLL (-) [used only with Bladed Interface] "DISCON" DLL_ProcName - Name of procedure in DLL to be called (-) [case sensitive; used only with DLL Interface] "default" DLL_DT - Communication interval for dynamic library (s) (or "default") [used only with Bladed Interface] False DLL_Ramp - Whether a linear ramp should be used between DLL_DT time steps [introduces time shift when true] (flag) [used only with Bladed Interface] diff --git a/Test_Cases/NREL-5MW/DISCON.IN b/Test_Cases/NREL-5MW/DISCON.IN index 23d1ea17..9391f4b1 100644 --- a/Test_Cases/NREL-5MW/DISCON.IN +++ b/Test_Cases/NREL-5MW/DISCON.IN @@ -1,8 +1,8 @@ -! Controller parameter input file for the 5MW_Land wind turbine -! - File written using ROSCO Controller tuning logic on 05/14/20 +! Controller parameter input file for the NREL-5MW wind turbine +! - File written using ROSCO version 2.4.1 controller tuning logic on 11/11/21 !------- DEBUG ------------------------------------------------------------ -2 ! LoggingLevel - {0: write no debug files, 1: write standard output .dbg-file, 2: write standard output .dbg-file and complete avrSWAP-array .dbg2-file} +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 @@ -13,39 +13,41 @@ 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 - Pitch saturation mode {0: no pitch saturation, 1: implement pitch saturation} +1 ! PS_Mode - Pitch saturation mode {0: no pitch saturation, 1: implement pitch saturation} 0 ! SD_Mode - Shutdown mode {0: no shutdown procedure, 1: pitch to max pitch at shutdown} -0 ! Fl_Mode - Floating specific feedback mode {0: no nacelle velocity feedback, 1: nacelle velocity feedback} +0 ! Fl_Mode - Floating specific feedback mode {0: no nacelle velocity feedback, 1: feed back translational velocity, 2: feed back rotational veloicty} 0 ! Flp_Mode - Flap control mode {0: no flap control, 1: steady state flap angle, 2: Proportional flap control} !------- FILTERS ---------------------------------------------------------- 1.57080 ! F_LPFCornerFreq - Corner frequency (-3dB point) in the low-pass filters, [rad/s] -0.00000 ! F_LPFDamping - Damping coefficient [used only when F_FilterType = 2] -3.24210 ! F_NotchCornerFreq - Natural frequency of the notch filter, [rad/s] +0.00000 ! F_LPFDamping - Damping coefficient {used only when F_FilterType = 2} [-] +0.00000 ! F_NotchCornerFreq - Natural frequency of the notch filter, [rad/s] 0.00000 0.25000 ! F_NotchBetaNumDen - Two notch damping values (numerator and denominator, resp) - determines the width and depth of the notch, [-] -0.314150000000 ! F_SSCornerFreq - Corner frequency (-3dB point) in the first order low pass filter for the setpoint smoother, [rad/s]. -0.21360 1.00000 ! F_FlCornerFreq - Natural frequency and damping in the second order low pass filter of the tower-top fore-aft motion for floating feedback control [rad/s, -]. +0.62830 ! F_SSCornerFreq - Corner frequency (-3dB point) in the first order low pass filter for the setpoint smoother, [rad/s]. +0.20944 ! F_WECornerFreq - Corner frequency (-3dB point) in the first order low pass filter for the wind speed estimate [rad/s]. +0.00000 1.00000 ! F_FlCornerFreq - Natural frequency and damping in the second order low pass filter of the tower-top fore-aft motion for floating feedback control [rad/s, -]. +0.01042 ! F_FlHighPassFreq - Natural frequency of first-order high-pass filter for nacelle fore-aft motion [rad/s]. 0.00000 1.00000 ! F_FlpCornerFreq - Corner frequency and damping in the second order low pass filter of the blade root bending moment for flap control [rad/s, -]. !------- BLADE PITCH CONTROL ---------------------------------------------- 30 ! PC_GS_n - Amount of gain-scheduling table entries 0.057184 0.084679 0.106097 0.124429 0.140845 0.155934 0.170053 0.183401 0.196139 0.208359 0.220146 0.231564 0.242647 0.253450 0.263988 0.274301 0.284401 0.294305 0.304033 0.313597 0.323005 0.332262 0.341382 0.350374 0.359244 0.367996 0.376635 0.385162 0.393584 0.401904 ! PC_GS_angles - Gain-schedule table: pitch angles [rad]. --0.017430 -0.015265 -0.013508 -0.012054 -0.010831 -0.009787 -0.008886 -0.008101 -0.007410 -0.006798 -0.006251 -0.005760 -0.005317 -0.004915 -0.004548 -0.004213 -0.003905 -0.003620 -0.003358 -0.003114 -0.002887 -0.002676 -0.002478 -0.002293 -0.002119 -0.001956 -0.001802 -0.001656 -0.001519 -0.001389 ! PC_GS_KP - Gain-schedule table: pitch controller kp gains [s]. --0.005822 -0.005216 -0.004724 -0.004317 -0.003975 -0.003683 -0.003431 -0.003211 -0.003018 -0.002846 -0.002693 -0.002556 -0.002432 -0.002319 -0.002217 -0.002123 -0.002037 -0.001957 -0.001884 -0.001815 -0.001752 -0.001693 -0.001637 -0.001586 -0.001537 -0.001491 -0.001448 -0.001408 -0.001369 -0.001333 ! PC_GS_KI - Gain-schedule table: pitch controller ki gains [-]. +-0.020690 -0.018186 -0.016154 -0.014472 -0.013057 -0.011849 -0.010807 -0.009899 -0.009100 -0.008391 -0.007759 -0.007192 -0.006679 -0.006214 -0.005790 -0.005402 -0.005045 -0.004716 -0.004412 -0.004130 -0.003868 -0.003623 -0.003395 -0.003181 -0.002980 -0.002791 -0.002613 -0.002445 -0.002286 -0.002135 ! PC_GS_KP - Gain-schedule table: pitch controller kp gains [s]. +-0.008383 -0.007511 -0.006803 -0.006217 -0.005724 -0.005303 -0.004940 -0.004624 -0.004345 -0.004099 -0.003878 -0.003681 -0.003502 -0.003340 -0.003192 -0.003057 -0.002933 -0.002818 -0.002712 -0.002614 -0.002523 -0.002438 -0.002358 -0.002283 -0.002213 -0.002147 -0.002085 -0.002027 -0.001971 -0.001919 ! 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 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 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]. +1.570000000000 ! PC_MaxPit - Maximum physical pitch limit, [rad]. +0.004490000000 ! PC_MinPit - Minimum physical pitch limit, [rad]. 0.174500000000 ! PC_MaxRat - Maximum pitch rate (in absolute value) in pitch controller, [rad/s]. -0.17450000000 ! PC_MinRat - Minimum pitch rate (in absolute value) in pitch controller, [rad/s]. 122.9096700000 ! 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.004490000000 ! PC_FinePit - Record 5: Below-rated pitch angle set-point, [rad] 0.017450000000 ! PC_Switch - Angle above lowest minimum pitch angle for switch, [rad] !------- 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.1 ! IPC_IntSat - Integrator saturation (maximum signal amplitude contribution to pitch from IPC), [rad] +0.0e+00 0.0 ! IPC_KI - Integral gain for the individual pitch controller: first parameter for 1P reductions, second for 2P reductions, [-] +0.0e+00 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 ------------------------------------------------ @@ -53,34 +55,34 @@ 43093.51876000 ! 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]. 47402.87063000 ! VS_MaxTq - Maximum generator torque in Region 3 (HSS side), [Nm]. -0.000000000000 ! VS_MinTq - Minimum generator (HSS side), [Nm]. -34.87381000000 ! VS_MinOMSpd - Optimal mode minimum speed, cut-in speed towards optimal mode gain path, [rad/s] -2.060980000000 ! VS_Rgn2K - Generator torque constant in Region 2 (HSS side), [N-m/(rad/s)^2] +0.000000000000 ! VS_MinTq - Minimum generator torque (HSS side), [Nm]. +35.98150000000 ! VS_MinOMSpd - Minimum generator speed [rad/s] +2.060980000000 ! VS_Rgn2K - Generator torque constant in Region 2 (HSS side), [Nm/(rad/s)^2] 5000000.000000 ! VS_RtPwr - Wind turbine rated power [W] 43093.51876000 ! VS_RtTq - Rated torque, [Nm]. 122.9096700000 ! VS_RefSpd - Rated generator speed [rad/s] 1 ! VS_n - Number of generator PI torque controller gains --276.090740000 ! 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) --46.4475900000 ! 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.55 ! VS_TSRopt - Power-maximizing region 2 tip-speed-ratio [rad]. +-675.470050000 ! VS_KP - Proportional gain for generator PI torque controller [-]. (Only used in the transitional 2.5 region if VS_ControlMode =/ 2) +-104.507080000 ! VS_KI - Integral gain for generator PI torque controller [s]. (Only used in the transitional 2.5 region if VS_ControlMode =/ 2) +7.79 ! VS_TSRopt - Power-maximizing region 2 tip-speed-ratio [rad]. !------- SETPOINT SMOOTHER --------------------------------------------- 1.00000 ! SS_VSGain - Variable speed torque controller setpoint smoother gain, [-]. -0.01000 ! SS_PCGain - Collective pitch controller setpoint smoother gain, [-]. +0.00100 ! SS_PCGain - Collective pitch controller setpoint smoother gain, [-]. !------- WIND SPEED ESTIMATOR --------------------------------------------- 63.000 ! WE_BladeRadius - Blade length (distance from hub center to blade tip), [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_CP - Parameters that define the parameterized CP(lambda) function 0.0 ! WE_Gamma - Adaption gain of the wind speed estimator algorithm [m/rad] 97.0 ! WE_GearboxRatio - Gearbox ratio [>=1], [-] 43702538.05700 ! 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) 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 -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.01651600 -0.01926866 -0.02202133 -0.02477399 -0.02752666 -0.03027933 -0.03303199 -0.03578466 -0.03853732 -0.04128999 -0.04404266 -0.04679532 -0.04954799 -0.05230065 -0.05505332 -0.05780599 -0.06055865 -0.05136706 -0.06083297 -0.07318141 -0.08698814 -0.10174996 -0.11701540 -0.13277020 -0.14916461 -0.16625567 -0.18314382 -0.20108255 -0.21861726 -0.23708646 -0.25523482 -0.27455940 -0.29291942 -0.31337978 -0.33196662 -0.35213321 -0.37322194 -0.39245925 -0.41381198 -0.43612755 -0.45572506 -0.47749086 -0.50133095 -0.53269989 ! WE_FOPoles - First order system poles [1/s] +60 ! WE_FOPoles_N - Number of first-order system poles used in EKF +3.0000 3.2897 3.5793 3.8690 4.1586 4.4483 4.7379 5.0276 5.3172 5.6069 5.8966 6.1862 6.4759 6.7655 7.0552 7.3448 7.6345 7.9241 8.2138 8.5034 8.7931 9.0828 9.3724 9.6621 9.9517 10.2414 10.5310 10.8207 11.1103 11.4000 11.8533 12.3067 12.7600 13.2133 13.6667 14.1200 14.5733 15.0267 15.4800 15.9333 16.3867 16.8400 17.2933 17.7467 18.2000 18.6533 19.1067 19.5600 20.0133 20.4667 20.9200 21.3733 21.8267 22.2800 22.7333 23.1867 23.6400 24.0933 24.5467 25.0000 ! WE_FOPoles_v - Wind speeds corresponding to first-order system poles [m/s] +-0.01595686 -0.01749752 -0.01903818 -0.02057884 -0.02211950 -0.02366017 -0.02520083 -0.02674149 -0.02828215 -0.02982281 -0.03136348 -0.03290414 -0.03444480 -0.03598546 -0.03752613 -0.03906679 -0.04060745 -0.04214811 -0.04368877 -0.04522944 -0.04677010 -0.04831076 -0.04985142 -0.05139208 -0.05293275 -0.05447341 -0.05801792 -0.06143926 -0.06457372 -0.06037223 0.02081964 0.01321781 0.00260088 -0.00946527 -0.02243222 -0.03602280 -0.05018905 -0.06471244 -0.07962397 -0.09509370 -0.11064413 -0.12676985 -0.14280724 -0.15953654 -0.17597588 -0.19315019 -0.21019460 -0.22763723 -0.24561537 -0.26323269 -0.28154954 -0.30021563 -0.31850528 -0.33751960 -0.35713765 -0.37607197 -0.39558204 -0.41576810 -0.43645174 -0.46925015 ! WE_FOPoles - First order system poles [1/s] !------- YAW CONTROL ------------------------------------------------------ 0.0 ! Y_ErrThresh - Yaw error threshold. Turbine begins to yaw when it passes this. [rad^2 s] @@ -91,19 +93,19 @@ 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_omegaLPFast - Corner frequency fast low pass filter, 1.0 [rad/s] +0.0 ! Y_omegaLPSlow - Corner frequency slow low pass filter, 1/60 [rad/s] 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_HPFCornerFreq - 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] !------- MINIMUM PITCH SATURATION ------------------------------------------- -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.01745329 -0.01745329 0.00328405 0.02562355 0.04517390 0.05783628 0.06999314 0.08176368 0.09325336 0.10440432 0.11531371 0.12610147 0.13676836 0.14709199 0.15750297 0.16757105 0.17770429 0.18757441 0.19756086 0.20712313 0.21707295 0.22634750 0.23589052 0.24549638 0.25445922 0.26382523 0.27327477 0.28187764 0.29088444 0.30026370 0.30887704 ! PS_BldPitchMin - Minimum blade pitch angles [rad] +60 ! PS_BldPitchMin_N - Number of values in minimum blade pitch lookup table (should equal number of values in PS_WindSpeeds and PS_BldPitchMin) +3.0000 3.2897 3.5793 3.8690 4.1586 4.4483 4.7379 5.0276 5.3172 5.6069 5.8966 6.1862 6.4759 6.7655 7.0552 7.3448 7.6345 7.9241 8.2138 8.5034 8.7931 9.0828 9.3724 9.6621 9.9517 10.2414 10.5310 10.8207 11.1103 11.4000 11.8533 12.3067 12.7600 13.2133 13.6667 14.1200 14.5733 15.0267 15.4800 15.9333 16.3867 16.8400 17.2933 17.7467 18.2000 18.6533 19.1067 19.5600 20.0133 20.4667 20.9200 21.3733 21.8267 22.2800 22.7333 23.1867 23.6400 24.0933 24.5467 25.0000 ! PS_WindSpeeds - Wind speeds corresponding to minimum blade pitch angles [m/s] +0.00449013 0.00449013 0.00449013 0.00449013 0.00449013 0.00449013 0.00449013 0.00449013 0.00449013 0.00449013 0.00449013 0.00449013 0.00449013 0.00449013 0.00449013 0.00449013 0.00449013 0.00449013 0.00449013 0.00449013 0.00449013 0.00449013 0.00449013 0.00449013 0.00615705 0.01974266 0.02860718 0.03688441 0.04477108 0.05235718 0.06376120 0.07475523 0.08542212 0.09583633 0.10602670 0.11603322 0.12587821 0.13557604 0.14513809 0.15458149 0.16391849 0.17315573 0.18230188 0.19135693 0.20032692 0.20921910 0.21803582 0.22677328 0.23544465 0.24404429 0.25256294 0.26101610 0.26941462 0.27773852 0.28598556 0.29417473 0.30231731 0.31040191 0.31841638 0.32635836 ! PS_BldPitchMin - Minimum blade pitch angles [rad] !------- SHUTDOWN ----------------------------------------------------------- 0.436300000000 ! SD_MaxPit - Maximum blade pitch angle to initiate shutdown, [rad] @@ -115,5 +117,5 @@ !------- FLAP ACTUATION ----------------------------------------------------- 0.000000000000 ! Flp_Angle - Initial or steady state flap angle [rad] 0.00000000e+00 ! Flp_Kp - Blade root bending moment proportional gain for flap control [s] -0.00000000e+00 ! Flp_Ki - Flap displacement integral gain for flap control [s] -0.000000000000 ! Flp_MaxPit - Maximum (and minimum) flap pitch angle [rad] +0.00000000e+00 ! Flp_Ki - Flap displacement integral gain for flap control [-] +0.174500000000 ! Flp_MaxPit - Maximum (and minimum) flap pitch angle [rad] \ No newline at end of file diff --git a/Test_Cases/update_discons.py b/Test_Cases/update_discons.py new file mode 100644 index 00000000..076387ee --- /dev/null +++ b/Test_Cases/update_discons.py @@ -0,0 +1,54 @@ +''' +Update the DISCON.IN examples in the ROSCO repository using the Tune_Case/ .yaml files + +''' +import os + +# ROSCO toolbox modules +from ROSCO_toolbox import controller as ROSCO_controller +from ROSCO_toolbox import turbine as ROSCO_turbine +from ROSCO_toolbox.utilities import write_DISCON +from ROSCO_toolbox.inputs.validation import load_rosco_yaml + +test_dir = os.path.dirname(os.path.abspath(__file__)) +tune_dir = os.path.realpath(os.path.join(test_dir,'../Tune_Cases')) + + +# Paths are relative to Tune_Case/ and Test_Case/ +tune_to_test_map = { + 'NREL5MW.yaml': 'NREL-5MW/DISCON.IN', + 'IEA15MW.yaml': 'IEA-15-240-RWT-UMaineSemi/DISCON-UMaineSemi.IN', + 'BAR.yaml': 'BAR_10/BAR_10_DISCON.IN' +} + +for tuning_yaml in tune_to_test_map: + + # Load yaml file + inps = load_rosco_yaml(os.path.join(tune_dir,tuning_yaml)) + path_params = inps['path_params'] + turbine_params = inps['turbine_params'] + controller_params = inps['controller_params'] + + # Instantiate turbine, controller, and file processing classes + turbine = ROSCO_turbine.Turbine(turbine_params) + controller = ROSCO_controller.Controller(controller_params) + + # Load turbine data from OpenFAST and rotor performance text file + turbine.load_from_fast( + path_params['FAST_InputFile'], + os.path.join(tune_dir,path_params['FAST_directory']), + dev_branch=True, + rot_source='txt', + txt_filename=os.path.join(tune_dir,path_params['rotor_performance_filename']) + ) + + # Tune controller + controller.tune_controller(turbine) + + # Write parameter input file + discon_in_file = os.path.join(test_dir,tune_to_test_map[tuning_yaml]) + write_DISCON( + turbine,controller, + param_file=discon_in_file, + txt_filename=path_params['rotor_performance_filename'].split('/')[-1] + ) diff --git a/Tune_Cases/BAR.yaml b/Tune_Cases/BAR.yaml index 8942f555..50470c2a 100644 --- a/Tune_Cases/BAR.yaml +++ b/Tune_Cases/BAR.yaml @@ -6,7 +6,7 @@ path_params: FAST_InputFile: 'BAR_10.fst' # Name of *.fst file FAST_directory: '../Test_Cases/BAR_10' # Main OpenFAST model directory, where the *.fst lives # Optional (but suggested...) - rotor_performance_filename: 'BAR_10_Cp_Ct_Cq.txt' # Filename for rotor performance text file (if it has been generated by ccblade already) + rotor_performance_filename: '../Test_Cases/BAR_10/Cp_Ct_Cq.BAR_10.txt' # Filename for rotor performance text file (if it has been generated by ccblade already) # -------------------------------- TURBINE PARAMETERS ----------------------------------- turbine_params: @@ -32,7 +32,7 @@ controller_params: Y_ControlMode: 0 # Yaw control mode {0: no yaw control, 1: yaw rate control, 2: yaw-by-IPC} SS_Mode: 1 # Setpoint Smoother mode {0: no setpoint smoothing, 1: introduce setpoint smoothing} WE_Mode: 2 # Wind speed estimator mode {0: One-second low pass filtered hub height wind speed, 1: Immersion and Invariance Estimator (Ortega et al.)} - PS_Mode: 0 # Peak shaving mode {0: no peak shaving, 1: implement peak shaving} + PS_Mode: 1 # Peak shaving mode {0: no peak shaving, 1: implement peak shaving} SD_Mode: 0 # Shutdown mode {0: no shutdown procedure, 1: pitch to max pitch at shutdown} Fl_Mode: 0 # Floating specific feedback mode {0: no nacelle velocity feedback, 1: nacelle velocity feedback} Flp_Mode: 2 # Flap control mode {0: no flap control, 1: steady state flap angle, 2: Proportional flap control} @@ -45,3 +45,4 @@ controller_params: # Only needed if Flp_Mode > 0 zeta_flp: 0.7 # Flap controller desired damping ratio [-] omega_flp: 2.63 # Flap controller desired natural frequency [rad/s] + ps_percent: 0.8 diff --git a/Tune_Cases/Cp_Ct_Cq.DTU10MW.txt b/Tune_Cases/Cp_Ct_Cq.DTU10MW.txt deleted file mode 100644 index 8389e32d..00000000 --- a/Tune_Cases/Cp_Ct_Cq.DTU10MW.txt +++ /dev/null @@ -1,165 +0,0 @@ -# ----- 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/Tune_Cases/Cp_Ct_Cq.IEA15MW.txt b/Tune_Cases/Cp_Ct_Cq.IEA15MW.txt deleted file mode 100644 index 46e1039d..00000000 --- a/Tune_Cases/Cp_Ct_Cq.IEA15MW.txt +++ /dev/null @@ -1,165 +0,0 @@ -# ----- Rotor performance tables for the IEA-15-240-RWT wind turbine ----- -# ------------ Written on Jan-21-20 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) -10.88 - -# Power coefficient - -0.063489 0.065012 0.066528 0.068036 0.069536 0.071027 0.072508 0.073978 0.075437 0.076883 0.078315 0.079732 0.081133 0.082518 0.083884 0.085231 0.086558 0.087863 0.089145 0.090403 0.091636 0.092842 0.094021 0.095170 0.096290 0.097378 0.098433 0.099455 0.100441 0.101391 0.102303 0.103177 0.104011 0.104804 0.105554 0.106261 0.106924 0.107542 0.108113 0.108637 0.109113 0.109540 0.109918 0.110246 0.110523 0.110749 0.110924 0.111046 0.111117 0.111135 0.111100 0.111013 0.110872 0.110679 0.110433 0.110135 0.109784 0.109381 0.108927 0.108421 0.107865 0.107260 0.106605 0.105903 0.105153 0.104356 0.103515 0.102629 0.101701 0.100730 0.099718 0.098666 0.097576 0.096448 0.095283 0.094083 0.092848 0.091581 0.090280 0.088949 0.087587 0.086196 0.084777 0.083330 0.081857 0.080357 0.078833 0.077285 0.075713 0.074119 0.072503 0.070866 0.069208 0.067531 0.065834 0.064119 0.062385 0.060634 0.058865 0.057080 0.055279 0.053462 0.051630 0.049782 -0.081973 0.083752 0.085516 0.087265 0.088996 0.090708 0.092401 0.094072 0.095721 0.097345 0.098945 0.100517 0.102061 0.103575 0.105057 0.106507 0.107923 0.109302 0.110644 0.111948 0.113210 0.114431 0.115608 0.116741 0.117827 0.118865 0.119853 0.120791 0.121676 0.122509 0.123286 0.124008 0.124673 0.125280 0.125828 0.126316 0.126743 0.127110 0.127414 0.127655 0.127834 0.127949 0.128000 0.127986 0.127909 0.127766 0.127560 0.127289 0.126955 0.126557 0.126096 0.125572 0.124987 0.124341 0.123635 0.122871 0.122049 0.121171 0.120237 0.119250 0.118210 0.117119 0.115979 0.114790 0.113555 0.112274 0.110949 0.109582 0.108173 0.106724 0.105237 0.103712 0.102152 0.100557 0.098928 0.097267 0.095574 0.093851 0.092099 0.090319 0.088512 0.086678 0.084819 0.082936 0.081028 0.079098 0.077146 0.075172 0.073177 0.071162 0.069127 0.067073 0.065001 0.062910 0.060801 0.058674 0.056531 0.054371 0.052194 0.050001 0.047793 0.045570 0.043332 0.041080 -0.102787 0.104799 0.106784 0.108741 0.110668 0.112564 0.114426 0.116252 0.118041 0.119792 0.121502 0.123169 0.124792 0.126368 0.127896 0.129375 0.130802 0.132175 0.133492 0.134753 0.135955 0.137096 0.138174 0.139189 0.140139 0.141022 0.141837 0.142582 0.143257 0.143860 0.144391 0.144847 0.145230 0.145537 0.145768 0.145922 0.145999 0.146000 0.145922 0.145768 0.145536 0.145227 0.144842 0.144381 0.143845 0.143234 0.142551 0.141796 0.140970 0.140075 0.139113 0.138084 0.136991 0.135835 0.134618 0.133342 0.132008 0.130618 0.129175 0.127679 0.126132 0.124537 0.122895 0.121207 0.119475 0.117701 0.115886 0.114032 0.112141 0.110213 0.108249 0.106252 0.104223 0.102162 0.100070 0.097950 0.095802 0.093627 0.091425 0.089199 0.086948 0.084673 0.082375 0.080055 0.077714 0.075351 0.072967 0.070562 0.068138 0.065694 0.063231 0.060749 0.058248 0.055730 0.053193 0.050639 0.048068 0.045480 0.042876 0.040256 0.037621 0.034971 0.032306 0.029628 -0.125676 0.127880 0.130042 0.132160 0.134232 0.136255 0.138227 0.140146 0.142010 0.143816 0.145563 0.147248 0.148870 0.150425 0.151912 0.153329 0.154674 0.155944 0.157139 0.158255 0.159293 0.160249 0.161122 0.161912 0.162615 0.163232 0.163762 0.164202 0.164552 0.164812 0.164981 0.165058 0.165043 0.164937 0.164739 0.164450 0.164070 0.163601 0.163042 0.162396 0.161664 0.160847 0.159946 0.158964 0.157903 0.156763 0.155548 0.154259 0.152899 0.151469 0.149972 0.148409 0.146783 0.145097 0.143351 0.141549 0.139692 0.137783 0.135822 0.133814 0.131758 0.129657 0.127513 0.125327 0.123101 0.120837 0.118536 0.116199 0.113828 0.111425 0.108990 0.106525 0.104030 0.101508 0.098958 0.096381 0.093779 0.091153 0.088501 0.085826 0.083128 0.080407 0.077663 0.074897 0.072109 0.069300 0.066470 0.063618 0.060747 0.057855 0.054943 0.052012 0.049062 0.046093 0.043105 0.040099 0.037076 0.034036 0.030980 0.027908 0.024821 0.021720 0.018605 0.015478 -0.150325 0.152665 0.154944 0.157159 0.159307 0.161387 0.163395 0.165328 0.167185 0.168963 0.170660 0.172272 0.173798 0.175236 0.176583 0.177837 0.178997 0.180060 0.181024 0.181889 0.182652 0.183312 0.183867 0.184318 0.184662 0.184899 0.185029 0.185051 0.184966 0.184774 0.184476 0.184073 0.183564 0.182953 0.182240 0.181427 0.180515 0.179508 0.178406 0.177212 0.175929 0.174559 0.173104 0.171567 0.169950 0.168257 0.166489 0.164649 0.162739 0.160763 0.158723 0.156621 0.154459 0.152240 0.149966 0.147639 0.145262 0.142836 0.140364 0.137847 0.135288 0.132687 0.130047 0.127370 0.124656 0.121908 0.119127 0.116313 0.113469 0.110594 0.107691 0.104760 0.101801 0.098815 0.095803 0.092765 0.089702 0.086614 0.083501 0.080364 0.077203 0.074018 0.070810 0.067578 0.064323 0.061046 0.057746 0.054424 0.051080 0.047714 0.044327 0.040919 0.037490 0.034042 0.030575 0.027089 0.023585 0.020064 0.016527 0.012975 0.009410 0.005832 0.002243 -0.001355 -0.176367 0.178771 0.181092 0.183326 0.185470 0.187521 0.189477 0.191335 0.193092 0.194745 0.196292 0.197731 0.199060 0.200275 0.201375 0.202358 0.203222 0.203966 0.204589 0.205088 0.205464 0.205716 0.205844 0.205848 0.205729 0.205486 0.205121 0.204636 0.204031 0.203309 0.202471 0.201520 0.200458 0.199287 0.198009 0.196629 0.195148 0.193569 0.191896 0.190131 0.188278 0.186339 0.184317 0.182216 0.180038 0.177786 0.175464 0.173073 0.170617 0.168098 0.165519 0.162882 0.160191 0.157446 0.154651 0.151808 0.148918 0.145984 0.143008 0.139992 0.136937 0.133844 0.130716 0.127553 0.124357 0.121128 0.117869 0.114579 0.111259 0.107910 0.104532 0.101127 0.097693 0.094232 0.090744 0.087229 0.083687 0.080118 0.076523 0.072902 0.069255 0.065582 0.061883 0.058159 0.054409 0.050634 0.046834 0.043009 0.039161 0.035289 0.031393 0.027476 0.023537 0.019578 0.015600 0.011603 0.007590 0.003561 -0.000482 -0.004537 -0.008603 -0.012678 -0.016759 -0.020846 -0.203385 0.205770 0.208046 0.210209 0.212256 0.214184 0.215991 0.217672 0.219227 0.220651 0.221943 0.223100 0.224121 0.225003 0.225746 0.226347 0.226807 0.227126 0.227302 0.227337 0.227231 0.226985 0.226601 0.226080 0.225423 0.224634 0.223713 0.222665 0.221491 0.220194 0.218778 0.217246 0.215601 0.213846 0.211986 0.210022 0.207960 0.205803 0.203553 0.201214 0.198790 0.196284 0.193698 0.191038 0.188304 0.185501 0.182632 0.179699 0.176705 0.173653 0.170545 0.167384 0.164173 0.160913 0.157607 0.154257 0.150864 0.147430 0.143958 0.140447 0.136901 0.133319 0.129703 0.126054 0.122372 0.118659 0.114914 0.111138 0.107331 0.103494 0.099627 0.095730 0.091803 0.087846 0.083860 0.079844 0.075798 0.071723 0.067618 0.063483 0.059319 0.055126 0.050903 0.046652 0.042372 0.038064 0.033729 0.029368 0.024980 0.020568 0.016132 0.011674 0.007195 0.002696 -0.001820 -0.006353 -0.010900 -0.015460 -0.020029 -0.024607 -0.029191 -0.033778 -0.038365 -0.042950 -0.230922 0.233194 0.235328 0.237322 0.239171 0.240873 0.242424 0.243823 0.245067 0.246154 0.247083 0.247852 0.248462 0.248911 0.249199 0.249328 0.249298 0.249110 0.248766 0.248267 0.247616 0.246815 0.245867 0.244774 0.243540 0.242167 0.240661 0.239023 0.237259 0.235372 0.233365 0.231244 0.229011 0.226672 0.224228 0.221685 0.219046 0.216316 0.213496 0.210592 0.207606 0.204542 0.201404 0.198195 0.194918 0.191576 0.188172 0.184708 0.181189 0.177615 0.173990 0.170315 0.166593 0.162827 0.159016 0.155165 0.151273 0.147342 0.143374 0.139369 0.135328 0.131252 0.127142 0.122997 0.118818 0.114606 0.110360 0.106081 0.101768 0.097422 0.093042 0.088629 0.084182 0.079702 0.075187 0.070639 0.066057 0.061441 0.056791 0.052107 0.047390 0.042641 0.037858 0.033045 0.028200 0.023325 0.018422 0.013490 0.008533 0.003550 -0.001455 -0.006482 -0.011528 -0.016592 -0.021671 -0.026763 -0.031865 -0.036974 -0.042089 -0.047205 -0.052320 -0.057431 -0.062535 -0.067629 -0.258482 0.260539 0.262430 0.264149 0.265695 0.267066 0.268259 0.269274 0.270110 0.270767 0.271244 0.271542 0.271663 0.271607 0.271375 0.270971 0.270396 0.269653 0.268744 0.267673 0.266443 0.265058 0.263522 0.261838 0.260012 0.258048 0.255950 0.253722 0.251369 0.248895 0.246304 0.243601 0.240790 0.237875 0.234860 0.231748 0.228545 0.225254 0.221878 0.218422 0.214888 0.211282 0.207605 0.203861 0.200053 0.196184 0.192257 0.188274 0.184238 0.180151 0.176016 0.171834 0.167607 0.163337 0.159024 0.154671 0.150279 0.145847 0.141377 0.136869 0.132323 0.127740 0.123119 0.118462 0.113767 0.109034 0.104264 0.099456 0.094611 0.089727 0.084805 0.079844 0.074845 0.069806 0.064729 0.059614 0.054459 0.049266 0.044036 0.038767 0.033462 0.028121 0.022745 0.017334 0.011891 0.006417 0.000914 -0.004618 -0.010176 -0.015757 -0.021360 -0.026983 -0.032622 -0.038274 -0.043938 -0.049609 -0.055285 -0.060962 -0.066637 -0.072306 -0.077966 -0.083613 -0.089243 -0.094852 -0.285543 0.287287 0.288834 0.290184 0.291335 0.292288 0.293042 0.293598 0.293956 0.294118 0.294086 0.293861 0.293446 0.292843 0.292055 0.291086 0.289939 0.288618 0.287128 0.285472 0.283655 0.281683 0.279560 0.277291 0.274881 0.272334 0.269656 0.266850 0.263921 0.260874 0.257714 0.254445 0.251070 0.247595 0.244024 0.240360 0.236609 0.232772 0.228856 0.224863 0.220796 0.216659 0.212456 0.208189 0.203861 0.199476 0.195034 0.190540 0.185994 0.181399 0.176757 0.172069 0.167337 0.162561 0.157742 0.152881 0.147978 0.143033 0.138047 0.133019 0.127950 0.122839 0.117686 0.112491 0.107254 0.101974 0.096650 0.091283 0.085873 0.080419 0.074921 0.069378 0.063791 0.058160 0.052485 0.046766 0.041004 0.035198 0.029351 0.023463 0.017534 0.011567 0.005563 -0.000477 -0.006551 -0.012657 -0.018793 -0.024955 -0.031142 -0.037351 -0.043579 -0.049823 -0.056078 -0.062342 -0.068611 -0.074882 -0.081150 -0.087411 -0.093661 -0.099896 -0.106112 -0.112304 -0.118468 -0.124598 -0.311607 0.312955 0.314086 0.314998 0.315693 0.316172 0.316437 0.316489 0.316331 0.315965 0.315394 0.314622 0.313651 0.312486 0.311131 0.309591 0.307871 0.305975 0.303910 0.301681 0.299292 0.296748 0.294056 0.291219 0.288243 0.285132 0.281892 0.278527 0.275041 0.271441 0.267729 0.263912 0.259992 0.255975 0.251865 0.247665 0.243381 0.239015 0.234572 0.230055 0.225467 0.220813 0.216093 0.211313 0.206473 0.201577 0.196627 0.191625 0.186572 0.181469 0.176319 0.171120 0.165876 0.160584 0.155246 0.149863 0.144433 0.138956 0.133433 0.127863 0.122246 0.116582 0.110869 0.105109 0.099299 0.093440 0.087532 0.081573 0.075565 0.069506 0.063397 0.057237 0.051027 0.044767 0.038457 0.032098 0.025691 0.019237 0.012737 0.006193 -0.000395 -0.007023 -0.013690 -0.020394 -0.027133 -0.033902 -0.040701 -0.047525 -0.054370 -0.061234 -0.068112 -0.075001 -0.081897 -0.088794 -0.095689 -0.102577 -0.109454 -0.116314 -0.123154 -0.129966 -0.136748 -0.143492 -0.150195 -0.156850 -0.336257 0.337163 0.337836 0.338275 0.338485 0.338466 0.338221 0.337753 0.337067 0.336165 0.335052 0.333733 0.332212 0.330495 0.328587 0.326494 0.324222 0.321775 0.319159 0.316380 0.313443 0.310352 0.307114 0.303733 0.300214 0.296562 0.292782 0.288879 0.284858 0.280724 0.276481 0.272133 0.267686 0.263144 0.258511 0.253791 0.248988 0.244107 0.239150 0.234120 0.229022 0.223859 0.218631 0.213344 0.207997 0.202594 0.197137 0.191625 0.186060 0.180444 0.174775 0.169055 0.163284 0.157461 0.151587 0.145661 0.139682 0.133651 0.127567 0.121430 0.115238 0.108991 0.102689 0.096332 0.089918 0.083448 0.076921 0.070336 0.063694 0.056994 0.050237 0.043423 0.036552 0.029625 0.022642 0.015606 0.008517 0.001377 -0.005813 -0.013051 -0.020333 -0.027659 -0.035024 -0.042427 -0.049863 -0.057328 -0.064821 -0.072335 -0.079867 -0.087412 -0.094966 -0.102524 -0.110081 -0.117633 -0.125173 -0.132696 -0.140197 -0.147670 -0.155110 -0.162510 -0.169864 -0.177168 -0.184414 -0.191597 -0.359180 0.359631 0.359836 0.359798 0.359520 0.359005 0.358257 0.357280 0.356079 0.354660 0.353027 0.351187 0.349145 0.346907 0.344479 0.341865 0.339072 0.336106 0.332970 0.329671 0.326214 0.322604 0.318847 0.314947 0.310910 0.306740 0.302444 0.298025 0.293489 0.288840 0.284084 0.279225 0.274268 0.269217 0.264077 0.258851 0.253543 0.248158 0.242697 0.237166 0.231565 0.225898 0.220167 0.214375 0.208522 0.202609 0.196639 0.190611 0.184525 0.178382 0.172182 0.165924 0.159609 0.153236 0.146804 0.140312 0.133761 0.127150 0.120477 0.113743 0.106946 0.100086 0.093163 0.086175 0.079123 0.072005 0.064823 0.057574 0.050261 0.042882 0.035439 0.027931 0.020360 0.012727 0.005033 -0.002720 -0.010530 -0.018396 -0.026314 -0.034282 -0.042297 -0.050356 -0.058454 -0.066589 -0.074755 -0.082948 -0.091163 -0.099396 -0.107642 -0.115894 -0.124148 -0.132399 -0.140639 -0.148863 -0.157066 -0.165240 -0.173380 -0.181478 -0.189529 -0.197526 -0.205461 -0.213329 -0.221123 -0.228836 -0.380147 0.380160 0.379918 0.379426 0.378687 0.377705 0.376487 0.375037 0.373362 0.371466 0.369357 0.367038 0.364518 0.361800 0.358890 0.355794 0.352517 0.349065 0.345442 0.341655 0.337709 0.333609 0.329360 0.324968 0.320437 0.315774 0.310983 0.306070 0.301039 0.295896 0.290646 0.285293 0.279843 0.274299 0.268665 0.262946 0.257145 0.251265 0.245309 0.239281 0.233182 0.227014 0.220780 0.214481 0.208117 0.201688 0.195196 0.188640 0.182019 0.175335 0.168585 0.161771 0.154890 0.147943 0.140929 0.133847 0.126695 0.119474 0.112183 0.104820 0.097385 0.089878 0.082297 0.074643 0.066915 0.059112 0.051236 0.043285 0.035261 0.027163 0.018993 0.010751 0.002440 -0.005940 -0.014386 -0.022896 -0.031468 -0.040098 -0.048783 -0.057520 -0.066304 -0.075131 -0.083997 -0.092896 -0.101824 -0.110775 -0.119743 -0.128723 -0.137708 -0.146693 -0.155670 -0.164635 -0.173579 -0.182495 -0.191378 -0.200219 -0.209011 -0.217747 -0.226420 -0.235023 -0.243547 -0.251985 -0.260330 -0.268576 -0.399002 0.398622 0.397983 0.397089 0.395943 0.394551 0.392919 0.391053 0.388958 0.386641 0.384106 0.381360 0.378408 0.375255 0.371906 0.368368 0.364646 0.360745 0.356671 0.352428 0.348024 0.343462 0.338750 0.333892 0.328893 0.323760 0.318498 0.313112 0.307607 0.301989 0.296263 0.290434 0.284505 0.278481 0.272366 0.266164 0.259878 0.253511 0.247066 0.240545 0.233949 0.227280 0.220540 0.213727 0.206843 0.199888 0.192861 0.185761 0.178589 0.171343 0.164024 0.156629 0.149158 0.141611 0.133986 0.126283 0.118500 0.110637 0.102693 0.094667 0.086559 0.078367 0.070092 0.061733 0.053290 0.044764 0.036153 0.027459 0.018682 0.009823 0.000884 -0.008133 -0.017227 -0.026395 -0.035635 -0.044943 -0.054316 -0.063750 -0.073241 -0.082783 -0.092372 -0.102003 -0.111670 -0.121366 -0.131087 -0.140825 -0.150575 -0.160329 -0.170080 -0.179822 -0.189547 -0.199247 -0.208915 -0.218543 -0.228122 -0.237646 -0.247105 -0.256492 -0.265798 -0.275015 -0.284135 -0.293151 -0.302053 -0.310835 -0.415647 0.414953 0.413993 0.412771 0.411294 0.409566 0.407591 0.405376 0.402927 0.400248 0.397346 0.394225 0.390892 0.387352 0.383610 0.379672 0.375545 0.371233 0.366742 0.362078 0.357247 0.352255 0.347107 0.341810 0.336369 0.330790 0.325079 0.319242 0.313283 0.307209 0.301024 0.294732 0.288339 0.281848 0.275263 0.268588 0.261824 0.254976 0.248044 0.241030 0.233936 0.226761 0.219505 0.212169 0.204753 0.197255 0.189675 0.182013 0.174267 0.166437 0.158522 0.150520 0.142431 0.134254 0.125988 0.117632 0.109184 0.100644 0.092012 0.083286 0.074466 0.065552 0.056543 0.047439 0.038240 0.028947 0.019560 0.010079 0.000507 -0.009156 -0.018906 -0.028742 -0.038662 -0.048661 -0.058736 -0.068883 -0.079097 -0.089373 -0.099707 -0.110092 -0.120521 -0.130990 -0.141491 -0.152017 -0.162562 -0.173118 -0.183678 -0.194234 -0.204778 -0.215302 -0.225797 -0.236255 -0.246668 -0.257026 -0.267320 -0.277542 -0.287683 -0.297733 -0.307684 -0.317527 -0.327252 -0.336851 -0.346317 -0.355641 -0.430018 0.429119 0.427939 0.426486 0.424766 0.422786 0.420548 0.418059 0.415325 0.412350 0.409140 0.405703 0.402042 0.398165 0.394077 0.389785 0.385293 0.380609 0.375738 0.370688 0.365463 0.360070 0.354516 0.348807 0.342949 0.336949 0.330812 0.324545 0.318152 0.311639 0.305011 0.298273 0.291429 0.284482 0.277436 0.270294 0.263058 0.255730 0.248310 0.240799 0.233198 0.225506 0.217723 0.209849 0.201882 0.193823 0.185669 0.177421 0.169076 0.160635 0.152096 0.143458 0.134720 0.125881 0.116940 0.107895 0.098747 0.089494 0.080136 0.070671 0.061100 0.051423 0.041638 0.031747 0.021749 0.011646 0.001438 -0.008872 -0.019284 -0.029794 -0.040400 -0.051099 -0.061886 -0.072758 -0.083710 -0.094736 -0.105831 -0.116989 -0.128203 -0.139466 -0.150772 -0.162113 -0.173482 -0.184871 -0.196272 -0.207676 -0.219076 -0.230461 -0.241824 -0.253155 -0.264445 -0.275684 -0.286862 -0.297970 -0.308998 -0.319936 -0.330773 -0.341501 -0.352109 -0.362588 -0.372928 -0.383121 -0.393158 -0.403032 -0.442063 0.441091 0.439816 0.438244 0.436384 0.434244 0.431831 0.429149 0.426205 0.423004 0.419553 0.415859 0.411928 0.407767 0.403382 0.398780 0.393968 0.388952 0.383739 0.378336 0.372750 0.366989 0.361058 0.354965 0.348717 0.342320 0.335780 0.329104 0.322296 0.315363 0.308308 0.301137 0.293852 0.286458 0.278957 0.271351 0.263642 0.255830 0.247915 0.239898 0.231778 0.223555 0.215227 0.206795 0.198257 0.189613 0.180861 0.172000 0.163030 0.153948 0.144755 0.135449 0.126029 0.116493 0.106841 0.097073 0.087186 0.077181 0.067057 0.056813 0.046449 0.035966 0.025363 0.014640 0.003799 -0.007158 -0.018231 -0.029416 -0.040712 -0.052115 -0.063620 -0.075225 -0.086924 -0.098711 -0.110581 -0.122527 -0.134542 -0.146619 -0.158751 -0.170930 -0.183149 -0.195398 -0.207669 -0.219953 -0.232242 -0.244525 -0.256794 -0.269038 -0.281247 -0.293412 -0.305521 -0.317563 -0.329530 -0.341408 -0.353188 -0.364859 -0.376410 -0.387831 -0.399110 -0.410238 -0.421205 -0.432002 -0.442621 -0.453055 -0.451802 0.450851 0.449602 0.448042 0.446161 0.443969 0.441475 0.438689 0.435617 0.432266 0.428643 0.424757 0.420615 0.416224 0.411594 0.406730 0.401641 0.396335 0.390819 0.385101 0.379189 0.373091 0.366815 0.360367 0.353755 0.346986 0.340066 0.333001 0.325796 0.318457 0.310988 0.303393 0.295676 0.287839 0.279884 0.271812 0.263623 0.255319 0.246897 0.238360 0.229704 0.220931 0.212039 0.203027 0.193894 0.184639 0.175262 0.165761 0.156134 0.146382 0.136502 0.126494 0.116356 0.106088 0.095688 0.085157 0.074493 0.063695 0.052764 0.041698 0.030499 0.019166 0.007699 -0.003899 -0.015628 -0.027486 -0.039469 -0.051575 -0.063800 -0.076140 -0.088590 -0.101145 -0.113798 -0.126542 -0.139371 -0.152277 -0.165252 -0.178289 -0.191377 -0.204510 -0.217677 -0.230869 -0.244077 -0.257291 -0.270501 -0.283695 -0.296863 -0.309995 -0.323079 -0.336104 -0.349058 -0.361929 -0.374706 -0.387377 -0.399930 -0.412353 -0.424635 -0.436765 -0.448730 -0.460521 -0.472129 -0.483543 -0.494757 -0.505762 -0.459297 0.458487 0.457347 0.455885 0.454100 0.451978 0.449513 0.446719 0.443607 0.440186 0.436466 0.432456 0.428165 0.423604 0.418781 0.413706 0.408387 0.402834 0.397056 0.391062 0.384860 0.378459 0.371867 0.365093 0.358143 0.351024 0.343743 0.336306 0.328719 0.320987 0.313113 0.305101 0.296953 0.288673 0.280259 0.271713 0.263035 0.254225 0.245283 0.236207 0.226997 0.217653 0.208173 0.198557 0.188803 0.178911 0.168879 0.158707 0.148393 0.137936 0.127335 0.116589 0.105698 0.094659 0.083473 0.072139 0.060657 0.049025 0.037243 0.025312 0.013233 0.001004 -0.011371 -0.023892 -0.036555 -0.049359 -0.062299 -0.075372 -0.088572 -0.101895 -0.115334 -0.128882 -0.142532 -0.156276 -0.170106 -0.184014 -0.197989 -0.212024 -0.226109 -0.240233 -0.254387 -0.268559 -0.282740 -0.296918 -0.311082 -0.325220 -0.339320 -0.353370 -0.367358 -0.381271 -0.395096 -0.408822 -0.422434 -0.435920 -0.449267 -0.462463 -0.475495 -0.488350 -0.501019 -0.513490 -0.525753 -0.537800 -0.549622 -0.561213 -0.464524 0.464010 0.463124 0.461867 0.460252 0.458285 0.455961 0.453270 0.450214 0.446812 0.443075 0.439014 0.434642 0.429972 0.425014 0.419779 0.414280 0.408525 0.402527 0.396294 0.389838 0.383166 0.376288 0.369212 0.361947 0.354499 0.346875 0.339081 0.331123 0.323005 0.314731 0.306304 0.297724 0.288994 0.280114 0.271083 0.261902 0.252571 0.243089 0.233455 0.223670 0.213731 0.203639 0.193392 0.182990 0.172431 0.161714 0.150839 0.139804 0.128608 0.117250 0.105730 0.094047 0.082199 0.070187 0.058009 0.045665 0.033155 0.020479 0.007638 -0.005368 -0.018538 -0.031869 -0.045358 -0.059004 -0.072800 -0.086744 -0.100830 -0.115052 -0.129403 -0.143876 -0.158462 -0.173152 -0.187939 -0.202813 -0.217764 -0.232782 -0.247856 -0.262976 -0.278131 -0.293310 -0.308501 -0.323691 -0.338869 -0.354022 -0.369137 -0.384202 -0.399202 -0.414124 -0.428955 -0.443680 -0.458286 -0.472758 -0.487083 -0.501248 -0.515237 -0.529039 -0.542641 -0.556031 -0.569199 -0.582135 -0.594830 -0.607277 -0.619470 -0.467581 0.467439 0.466924 0.466015 0.464697 0.462976 0.460865 0.458368 0.455477 0.452190 0.448523 0.444490 0.440109 0.435393 0.430359 0.425020 0.419389 0.413478 0.407300 0.400867 0.394189 0.387276 0.380139 0.372786 0.365226 0.357466 0.349513 0.341374 0.333053 0.324554 0.315881 0.307035 0.298017 0.288829 0.279469 0.269940 0.260240 0.250369 0.240328 0.230115 0.219731 0.209173 0.198442 0.187537 0.176457 0.165200 0.153766 0.142154 0.130364 0.118393 0.106242 0.093909 0.081395 0.068697 0.055816 0.042751 0.029503 0.016070 0.002454 -0.011344 -0.025323 -0.039481 -0.053815 -0.068321 -0.082996 -0.097834 -0.112829 -0.127975 -0.143265 -0.158690 -0.174241 -0.189910 -0.205686 -0.221560 -0.237521 -0.253558 -0.269661 -0.285816 -0.302013 -0.318240 -0.334483 -0.350730 -0.366968 -0.383183 -0.399362 -0.415490 -0.431552 -0.447535 -0.463423 -0.479202 -0.494856 -0.510370 -0.525729 -0.540919 -0.555924 -0.570730 -0.585323 -0.599691 -0.613823 -0.627707 -0.641335 -0.654698 -0.667789 -0.680602 -0.468689 0.468955 0.468856 0.468362 0.467454 0.466107 0.464315 0.462087 0.459436 0.456359 0.452855 0.448936 0.444619 0.439927 0.434877 0.429487 0.423774 0.417751 0.411434 0.404836 0.397969 0.390844 0.383472 0.375863 0.368026 0.359970 0.351700 0.343223 0.334544 0.325665 0.316589 0.307318 0.297852 0.288193 0.278341 0.268297 0.258060 0.247631 0.237009 0.226194 0.215185 0.203983 0.192585 0.180992 0.169203 0.157217 0.145032 0.132650 0.120067 0.107285 0.094302 0.081117 0.067730 0.054141 0.040349 0.026353 0.012154 -0.002247 -0.016850 -0.031652 -0.046653 -0.061847 -0.077232 -0.092804 -0.108556 -0.124483 -0.140578 -0.156832 -0.173236 -0.189782 -0.206459 -0.223256 -0.240163 -0.257169 -0.274262 -0.291430 -0.308660 -0.325940 -0.343256 -0.360596 -0.377945 -0.395288 -0.412613 -0.429904 -0.447145 -0.464321 -0.481417 -0.498417 -0.515304 -0.532062 -0.548675 -0.565127 -0.581400 -0.597480 -0.613351 -0.628997 -0.644405 -0.659562 -0.674457 -0.689079 -0.703419 -0.717470 -0.731225 -0.744680 -0.467970 0.468729 0.469098 0.469066 0.468611 0.467711 0.466346 0.464498 0.462166 0.459368 0.456109 0.452390 0.448219 0.443619 0.438616 0.433232 0.427485 0.421395 0.414978 0.408250 0.401224 0.393913 0.386330 0.378485 0.370388 0.362047 0.353469 0.344659 0.335621 0.326359 0.316874 0.307168 0.297244 0.287101 0.276741 0.266164 0.255371 0.244361 0.233136 0.221694 0.210036 0.198161 0.186067 0.173756 0.161226 0.148477 0.135508 0.122318 0.108908 0.095275 0.081421 0.067343 0.053042 0.038517 0.023769 0.008797 -0.006398 -0.021815 -0.037453 -0.053308 -0.069377 -0.085658 -0.102144 -0.118830 -0.135709 -0.152774 -0.170017 -0.187427 -0.204994 -0.222708 -0.240557 -0.258530 -0.276615 -0.294799 -0.313070 -0.331413 -0.349816 -0.368264 -0.386743 -0.405239 -0.423735 -0.442217 -0.460669 -0.479074 -0.497417 -0.515680 -0.533845 -0.551897 -0.569817 -0.587587 -0.605191 -0.622610 -0.639827 -0.656824 -0.673586 -0.690098 -0.706345 -0.722315 -0.737996 -0.753378 -0.768453 -0.783215 -0.797657 -0.811779 -0.465449 0.466822 0.467765 0.468266 0.468318 0.467907 0.467016 0.465627 0.463719 0.461281 0.458332 0.454883 0.450939 0.446507 0.441616 0.436293 0.430564 0.424451 0.417973 0.411148 0.403993 0.396522 0.388749 0.380686 0.372342 0.363726 0.354844 0.345702 0.336303 0.326651 0.316749 0.306598 0.296201 0.285560 0.274675 0.263547 0.252177 0.240566 0.228713 0.216619 0.204284 0.191706 0.178887 0.165826 0.152523 0.138977 0.125187 0.111154 0.096876 0.082354 0.067587 0.052574 0.037316 0.021811 0.006061 -0.009933 -0.026172 -0.042653 -0.059374 -0.076331 -0.093520 -0.110936 -0.128573 -0.146424 -0.164481 -0.182734 -0.201174 -0.219789 -0.238567 -0.257498 -0.276568 -0.295765 -0.315075 -0.334485 -0.353980 -0.373546 -0.393167 -0.412829 -0.432516 -0.452211 -0.471899 -0.491561 -0.511182 -0.530743 -0.550227 -0.569615 -0.588888 -0.608028 -0.627016 -0.645832 -0.664459 -0.682876 -0.701065 -0.719009 -0.736691 -0.754094 -0.771206 -0.788014 -0.804506 -0.820674 -0.836509 -0.852006 -0.867162 -0.881976 -0.461206 0.463265 0.464879 0.466023 0.466667 0.466808 0.466440 0.465547 0.464118 0.462134 0.459576 0.456460 0.452804 0.448616 0.443906 0.438704 0.433044 0.426951 0.420451 0.413563 0.406307 0.398701 0.390758 0.382491 0.373911 0.365026 0.355842 0.346366 0.336601 0.326553 0.316223 0.305616 0.294734 0.283578 0.272150 0.260451 0.248483 0.236246 0.223741 0.210968 0.197927 0.184618 0.171042 0.157199 0.143088 0.128709 0.114062 0.099147 0.083964 0.068511 0.052789 0.036798 0.020537 0.004008 -0.012790 -0.029856 -0.047187 -0.064782 -0.082636 -0.100745 -0.119104 -0.137707 -0.156547 -0.175613 -0.194898 -0.214390 -0.234077 -0.253947 -0.273987 -0.294184 -0.314525 -0.334995 -0.355579 -0.376263 -0.397031 -0.417866 -0.438754 -0.459676 -0.480617 -0.501557 -0.522481 -0.543368 -0.564201 -0.584960 -0.605626 -0.626178 -0.646598 -0.666864 -0.686956 -0.706853 -0.726536 -0.745983 -0.765176 -0.784096 -0.802725 -0.821049 -0.839054 -0.856726 -0.874056 -0.891035 -0.907657 -0.923919 -0.939817 -0.955352 -0.455402 0.458170 0.460499 0.462352 0.463687 0.464473 0.464696 0.464356 0.463444 0.461953 0.459867 0.457162 0.453855 0.449968 0.445507 0.440489 0.434950 0.428923 0.422439 0.415521 0.408193 0.400473 0.392378 0.383920 0.375112 0.365961 0.356476 0.346662 0.336526 0.326073 0.315306 0.304230 0.292846 0.281159 0.269169 0.256879 0.244289 0.231402 0.218218 0.204738 0.190963 0.176893 0.162528 0.147868 0.132915 0.117668 0.102126 0.086290 0.070159 0.053734 0.037014 0.020000 0.002692 -0.014910 -0.032805 -0.050990 -0.069464 -0.088222 -0.107260 -0.126574 -0.146155 -0.165997 -0.186091 -0.206425 -0.226989 -0.247770 -0.268756 -0.289932 -0.311285 -0.332799 -0.354461 -0.376254 -0.398163 -0.420171 -0.442261 -0.464416 -0.486618 -0.508849 -0.531090 -0.553323 -0.575528 -0.597686 -0.619775 -0.641775 -0.663666 -0.685425 -0.707030 -0.728461 -0.749694 -0.770708 -0.791481 -0.811992 -0.832220 -0.852146 -0.871754 -0.891028 -0.909953 -0.928519 -0.946715 -0.964535 -0.981974 -0.999029 -1.015700 -1.031986 -0.448169 0.451678 0.454749 0.457335 0.459407 0.460916 0.461823 0.462108 0.461774 0.460816 0.459233 0.457010 0.454124 0.450592 0.446435 0.441664 0.436302 0.430388 0.423959 0.417045 0.409671 0.401859 0.393626 0.384988 0.375957 0.366542 0.356754 0.346599 0.336086 0.325218 0.314003 0.302443 0.290543 0.278306 0.265734 0.252830 0.239596 0.226034 0.212144 0.197929 0.183389 0.168526 0.153339 0.137829 0.121998 0.105844 0.089368 0.072571 0.055452 0.038011 0.020249 0.002166 -0.016237 -0.034960 -0.054000 -0.073356 -0.093022 -0.112996 -0.133271 -0.153841 -0.174698 -0.195832 -0.217232 -0.238887 -0.260782 -0.282906 -0.305242 -0.327776 -0.350494 -0.373378 -0.396413 -0.419581 -0.442866 -0.466248 -0.489711 -0.513236 -0.536802 -0.560391 -0.583983 -0.607557 -0.631091 -0.654565 -0.677956 -0.701243 -0.724401 -0.747408 -0.770241 -0.792875 -0.815288 -0.837455 -0.859354 -0.880963 -0.902259 -0.923225 -0.943842 -0.964096 -0.983973 -1.003462 -1.022556 -1.041247 -1.059535 -1.077416 -1.094891 -1.111962 -0.439672 0.443891 0.447724 0.451089 0.453918 0.456180 0.457833 0.458828 0.459145 0.458782 0.457743 0.456030 0.453628 0.450517 0.446715 0.442241 0.437114 0.431361 0.425028 0.418149 0.410755 0.402869 0.394513 0.385703 0.376454 0.366777 0.356684 0.346184 0.335285 0.323994 0.312317 0.300259 0.287825 0.275020 0.261846 0.248306 0.234403 0.220139 0.205517 0.190537 0.175202 0.159513 0.143470 0.127075 0.110328 0.093229 0.075779 0.057979 0.039828 0.021328 0.002478 -0.016721 -0.036268 -0.056161 -0.076397 -0.096974 -0.117886 -0.139128 -0.160694 -0.182574 -0.204759 -0.227239 -0.249999 -0.273027 -0.296307 -0.319826 -0.343566 -0.367513 -0.391648 -0.415955 -0.440416 -0.465013 -0.489726 -0.514536 -0.539425 -0.564370 -0.589353 -0.614351 -0.639343 -0.664307 -0.689219 -0.714057 -0.738798 -0.763415 -0.787886 -0.812185 -0.836286 -0.860165 -0.883797 -0.907155 -0.930217 -0.952957 -0.975357 -0.997395 -1.019055 -1.040322 -1.061183 -1.081628 -1.101651 -1.121248 -1.140418 -1.159159 -1.177473 -1.195362 -0.430232 0.435018 0.439542 0.443675 0.447310 0.450356 0.452776 0.454530 0.455573 0.455879 0.455445 0.454280 0.452388 0.449756 0.446368 0.442240 0.437395 0.431855 0.425657 0.418845 0.411455 0.403514 0.395047 0.386073 0.376610 0.366672 0.356271 0.345420 0.334127 0.322402 0.310250 0.297680 0.284695 0.271302 0.257504 0.243305 0.228708 0.213716 0.198332 0.182559 0.166397 0.149848 0.132915 0.115597 0.097896 0.079813 0.061348 0.042502 0.023276 0.003670 -0.016316 -0.036679 -0.057418 -0.078532 -0.100017 -0.121867 -0.144078 -0.166643 -0.189552 -0.212797 -0.236366 -0.260245 -0.284419 -0.308875 -0.333595 -0.358563 -0.383763 -0.409175 -0.434784 -0.460568 -0.486510 -0.512589 -0.538785 -0.565077 -0.591444 -0.617865 -0.644316 -0.670775 -0.697219 -0.723623 -0.749964 -0.776216 -0.802352 -0.828349 -0.854177 -0.879812 -0.905225 -0.930390 -0.955280 -0.979869 -1.004130 -1.028040 -1.051577 -1.074723 -1.097460 -1.119773 -1.141652 -1.163088 -1.184076 -1.204614 -1.224701 -1.244337 -1.263526 -1.282271 -0.420179 0.425379 0.430434 0.435234 0.439637 0.443507 0.446734 0.449268 0.451076 0.452117 0.452359 0.451800 0.450455 0.448327 0.445406 0.441676 0.437157 0.431875 0.425854 0.419140 0.411778 0.403799 0.395232 0.386102 0.376429 0.366229 0.355519 0.344311 0.332616 0.320445 0.307806 0.294706 0.281153 0.267152 0.252708 0.237826 0.222509 0.206762 0.190588 0.173989 0.156967 0.139525 0.121665 0.103387 0.084694 0.065585 0.046063 0.026128 0.005780 -0.014978 -0.036147 -0.057725 -0.079708 -0.102095 -0.124880 -0.148059 -0.171623 -0.195564 -0.219873 -0.244538 -0.269544 -0.294878 -0.320522 -0.346460 -0.372676 -0.399150 -0.425864 -0.452799 -0.479936 -0.507254 -0.534732 -0.562350 -0.590084 -0.617913 -0.645815 -0.673764 -0.701739 -0.729712 -0.757661 -0.785558 -0.813378 -0.841093 -0.868676 -0.896098 -0.923331 -0.950347 -0.977116 -1.003610 -1.029799 -1.055657 -1.081156 -1.106273 -1.130986 -1.155276 -1.179125 -1.202521 -1.225454 -1.247917 -1.269907 -1.291423 -1.312464 -1.333034 -1.353135 -1.372773 -0.409677 0.415215 0.420684 0.426003 0.431053 0.435690 0.439750 0.443110 0.445707 0.447512 0.448491 0.448607 0.447861 0.446271 0.443844 0.440562 0.436412 0.431423 0.425620 0.419037 0.411726 0.403726 0.395073 0.385794 0.375915 0.365454 0.354430 0.342859 0.330753 0.318125 0.304984 0.291339 0.277198 0.262568 0.247456 0.231866 0.215804 0.199273 0.182278 0.164822 0.146907 0.128537 0.109713 0.090437 0.070710 0.050534 0.029911 0.008841 -0.012674 -0.034633 -0.057035 -0.079878 -0.103157 -0.126870 -0.151010 -0.175571 -0.200543 -0.225918 -0.251682 -0.277822 -0.304323 -0.331167 -0.358337 -0.385815 -0.413582 -0.441619 -0.469905 -0.498420 -0.527143 -0.556052 -0.585124 -0.614337 -0.643667 -0.673090 -0.702582 -0.732117 -0.761669 -0.791213 -0.820720 -0.850163 -0.879514 -0.908744 -0.937822 -0.966719 -0.995405 -1.023848 -1.052017 -1.079883 -1.107415 -1.134583 -1.161360 -1.187723 -1.213649 -1.239120 -1.264120 -1.288636 -1.312661 -1.336190 -1.359220 -1.381752 -1.403787 -1.425329 -1.446383 -1.466955 -0.398798 0.404650 0.410464 0.416208 0.421784 0.427061 0.431888 0.436087 0.439520 0.442116 0.443857 0.444704 0.444621 0.443617 0.441707 0.438900 0.435167 0.430508 0.424955 0.418536 0.411301 0.403299 0.394571 0.385152 0.375069 0.364347 0.353007 0.341066 0.328540 0.315442 0.301784 0.287577 0.272830 0.257550 0.241746 0.225424 0.208588 0.191245 0.173398 0.155052 0.136210 0.116875 0.097049 0.076735 0.055934 0.034648 0.012879 -0.009372 -0.032103 -0.055313 -0.078998 -0.103158 -0.127787 -0.152880 -0.178430 -0.204428 -0.230865 -0.257729 -0.285005 -0.312677 -0.340729 -0.369141 -0.397894 -0.426970 -0.456347 -0.486005 -0.515921 -0.546075 -0.576443 -0.607001 -0.637726 -0.668593 -0.699577 -0.730652 -0.761792 -0.792969 -0.824157 -0.855326 -0.886447 -0.917490 -0.948426 -0.979222 -1.009848 -1.040270 -1.070456 -1.100374 -1.129990 -1.159272 -1.188188 -1.216708 -1.244805 -1.272454 -1.299634 -1.326325 -1.352514 -1.378190 -1.403347 -1.427982 -1.452093 -1.475682 -1.498751 -1.521306 -1.543353 -1.564900 -0.387573 0.393742 0.399882 0.405984 0.412004 0.417822 0.423294 0.428263 0.432537 0.435973 0.438500 0.440102 0.440738 0.440374 0.439023 0.436708 0.433421 0.429131 0.423859 0.417636 0.410503 0.402518 0.393729 0.384177 0.373895 0.362912 0.351251 0.338933 0.325976 0.312397 0.298207 0.283421 0.268047 0.252096 0.235576 0.218495 0.200858 0.182672 0.163943 0.144673 0.124868 0.104531 0.083664 0.062271 0.040353 0.017912 -0.005048 -0.028527 -0.052523 -0.077033 -0.102055 -0.127585 -0.153617 -0.180146 -0.207161 -0.234654 -0.262613 -0.291024 -0.319869 -0.349131 -0.378791 -0.408829 -0.439225 -0.469957 -0.501004 -0.532342 -0.563949 -0.595801 -0.627874 -0.660142 -0.692579 -0.725161 -0.757858 -0.790645 -0.823492 -0.856370 -0.889251 -0.922102 -0.954893 -0.987593 -1.020168 -1.052584 -1.084809 -1.116807 -1.148543 -1.179984 -1.211093 -1.241837 -1.272182 -1.302098 -1.331557 -1.360533 -1.389007 -1.416960 -1.444379 -1.471256 -1.497587 -1.523369 -1.548603 -1.573291 -1.597437 -1.621048 -1.644131 -1.666696 -0.375987 0.382508 0.388981 0.395423 0.401822 0.408109 0.414143 0.419771 0.424820 0.429099 0.432460 0.434837 0.436215 0.436545 0.435802 0.434006 0.431180 0.427295 0.422335 0.416336 0.409333 0.401384 0.392547 0.382870 0.372393 0.361148 0.349162 0.336460 0.323063 0.308989 0.294252 0.278868 0.262847 0.246202 0.228942 0.211075 0.192609 0.173550 0.153904 0.133677 0.112873 0.091495 0.069547 0.047033 0.023955 0.000315 -0.023885 -0.048641 -0.073952 -0.099814 -0.126225 -0.153180 -0.180671 -0.208691 -0.237229 -0.266274 -0.295813 -0.325828 -0.356300 -0.387211 -0.418539 -0.450263 -0.482361 -0.514810 -0.547586 -0.580667 -0.614025 -0.647637 -0.681476 -0.715515 -0.749727 -0.784084 -0.818556 -0.853115 -0.887729 -0.922368 -0.957000 -0.991593 -1.026112 -1.060524 -1.094793 -1.128885 -1.162762 -1.196388 -1.229725 -1.262738 -1.295388 -1.327640 -1.359460 -1.390816 -1.421679 -1.452027 -1.481837 -1.511094 -1.539786 -1.567908 -1.595456 -1.622429 -1.648828 -1.674659 -1.699925 -1.724636 -1.748799 -1.772427 -0.364017 0.370933 0.377775 0.384566 0.391319 0.398014 0.404545 0.410759 0.416486 0.421545 0.425748 0.428943 0.431076 0.432126 0.432042 0.430809 0.428460 0.424997 0.420383 0.414633 0.407788 0.399896 0.391026 0.381233 0.370564 0.359056 0.346742 0.333648 0.319800 0.305217 0.289917 0.273916 0.257229 0.239867 0.221841 0.203161 0.183836 0.163872 0.143277 0.122056 0.100215 0.077757 0.054688 0.031010 0.006726 -0.018160 -0.043646 -0.069729 -0.096406 -0.123674 -0.151529 -0.179963 -0.208969 -0.238537 -0.268657 -0.299313 -0.330489 -0.362167 -0.394326 -0.426945 -0.460001 -0.493472 -0.527333 -0.561561 -0.596130 -0.631014 -0.666187 -0.701621 -0.737290 -0.773163 -0.809212 -0.845407 -0.881716 -0.918109 -0.954552 -0.991013 -1.027457 -1.063850 -1.100155 -1.136337 -1.172358 -1.208180 -1.243764 -1.279070 -1.314061 -1.348696 -1.382936 -1.416744 -1.450085 -1.482926 -1.515239 -1.547001 -1.578192 -1.608797 -1.638808 -1.668219 -1.697028 -1.725237 -1.752848 -1.779866 -1.806298 -1.832154 -1.857443 -1.882179 -0.351645 0.358996 0.366247 0.373421 0.380538 0.387606 0.394579 0.401317 0.407657 0.413410 0.418398 0.422429 0.425353 0.427132 0.427738 0.427115 0.425274 0.422246 0.418004 0.412532 0.405867 0.398055 0.389165 0.379265 0.368408 0.356636 0.343989 0.330496 0.316186 0.301080 0.285201 0.268565 0.251189 0.233085 0.214268 0.194747 0.174532 0.153631 0.132052 0.109801 0.086885 0.063308 0.039074 0.014189 -0.011346 -0.037526 -0.064348 -0.091809 -0.119905 -0.148633 -0.177985 -0.207956 -0.238534 -0.269709 -0.301468 -0.333794 -0.366668 -0.400069 -0.433975 -0.468363 -0.503209 -0.538488 -0.574176 -0.610245 -0.646669 -0.683421 -0.720472 -0.757793 -0.795355 -0.833127 -0.871077 -0.909173 -0.947383 -0.985673 -1.024008 -1.062353 -1.100670 -1.138924 -1.177076 -1.215087 -1.252917 -1.290526 -1.327872 -1.364914 -1.401610 -1.437918 -1.473798 -1.509211 -1.544120 -1.578493 -1.612303 -1.645525 -1.678142 -1.710142 -1.741516 -1.772263 -1.802380 -1.831871 -1.860739 -1.888992 -1.916637 -1.943684 -1.970147 -1.996037 -0.338854 0.346679 0.354379 0.361973 0.369484 0.376930 0.384303 0.391517 0.398410 0.404801 0.410493 0.415312 0.419056 0.421591 0.422894 0.422921 0.421627 0.419052 0.415197 0.410032 0.403568 0.395858 0.386965 0.376966 0.365924 0.353889 0.340904 0.327003 0.312219 0.296577 0.280101 0.262810 0.244723 0.225855 0.206219 0.185827 0.164692 0.142820 0.120222 0.096905 0.072874 0.048136 0.022695 -0.003444 -0.030276 -0.057798 -0.086007 -0.114898 -0.144467 -0.174708 -0.205616 -0.237179 -0.269389 -0.302230 -0.335688 -0.369743 -0.404374 -0.439559 -0.475274 -0.511493 -0.548192 -0.585343 -0.622920 -0.660896 -0.699240 -0.737925 -0.776919 -0.816193 -0.855713 -0.895449 -0.935365 -0.975429 -1.015604 -1.055856 -1.096146 -1.136438 -1.176692 -1.216869 -1.256928 -1.296828 -1.336526 -1.375979 -1.415144 -1.453976 -1.492431 -1.530465 -1.568036 -1.605103 -1.641629 -1.677583 -1.712936 -1.747666 -1.781757 -1.815199 -1.847985 -1.880115 -1.911588 -1.942409 -1.972583 -2.002117 -2.031023 -2.059310 -2.086994 -2.114088 -0.325631 0.333967 0.342151 0.350204 0.358145 0.365993 0.373759 0.381406 0.388805 0.395780 0.402127 0.407659 0.412192 0.415516 0.417532 0.418222 0.417519 0.415425 0.411970 0.407130 0.400893 0.393305 0.384424 0.374336 0.363113 0.350813 0.337485 0.323169 0.307899 0.291706 0.274615 0.256650 0.237829 0.218170 0.197688 0.176397 0.154308 0.131432 0.107779 0.083356 0.058170 0.032229 0.005537 -0.021900 -0.050078 -0.078993 -0.108639 -0.139013 -0.170109 -0.201922 -0.234441 -0.267656 -0.301555 -0.336122 -0.371339 -0.407184 -0.443635 -0.480666 -0.518252 -0.556366 -0.594981 -0.634069 -0.673601 -0.713548 -0.753879 -0.794563 -0.835567 -0.876860 -0.918406 -0.960172 -1.002122 -1.044219 -1.086426 -1.128704 -1.171015 -1.213318 -1.255573 -1.297736 -1.339764 -1.381614 -1.423240 -1.464597 -1.505638 -1.546316 -1.586585 -1.626398 -1.665712 -1.704484 -1.742677 -1.780261 -1.817206 -1.853493 -1.889107 -1.924039 -1.958287 -1.991849 -2.024728 -2.056928 -2.088456 -2.119322 -2.149538 -2.179115 -2.208068 -2.236415 -0.311965 0.320845 0.329550 0.338097 0.346503 0.354787 0.362962 0.371022 0.378888 0.386397 0.393355 0.399549 0.404804 0.408909 0.411670 0.413027 0.412943 0.411366 0.408328 0.403828 0.397842 0.390393 0.381541 0.371374 0.359974 0.347408 0.333732 0.318991 0.303224 0.286464 0.268741 0.250079 0.230501 0.210026 0.188670 0.166448 0.143374 0.119459 0.094713 0.069145 0.042764 0.015576 -0.012412 -0.041195 -0.070768 -0.101125 -0.132262 -0.164173 -0.196852 -0.230292 -0.264481 -0.299407 -0.335056 -0.371409 -0.408447 -0.446144 -0.484476 -0.523416 -0.562937 -0.603010 -0.643607 -0.684698 -0.726252 -0.768237 -0.810622 -0.853372 -0.896455 -0.939834 -0.983475 -1.027339 -1.071389 -1.115588 -1.159893 -1.204266 -1.248664 -1.293045 -1.337364 -1.381577 -1.425638 -1.469501 -1.513116 -1.556436 -1.599411 -1.641993 -1.684131 -1.725778 -1.766887 -1.807417 -1.847329 -1.886592 -1.925181 -1.963074 -2.000261 -2.036736 -2.072496 -2.107541 -2.141876 -2.175505 -2.208439 -2.240687 -2.272263 -2.303180 -2.333454 -2.363105 -0.297848 0.307302 0.316561 0.325636 0.334540 0.343293 0.351907 0.360385 0.368690 0.376695 0.384218 0.391040 0.396958 0.401794 0.405312 0.407358 0.407902 0.406876 0.404278 0.400130 0.394413 0.387120 0.378315 0.368078 0.356505 0.343673 0.329643 0.314468 0.298191 0.280849 0.262475 0.243096 0.222736 0.201418 0.179159 0.155975 0.131882 0.106891 0.081015 0.054263 0.026644 -0.001835 -0.031166 -0.061343 -0.092360 -0.124211 -0.156892 -0.190396 -0.224715 -0.259839 -0.295757 -0.332455 -0.369914 -0.408115 -0.447035 -0.486647 -0.526924 -0.567837 -0.609358 -0.651457 -0.694103 -0.737263 -0.780907 -0.824999 -0.869506 -0.914392 -0.959622 -1.005157 -1.050961 -1.096993 -1.143214 -1.189582 -1.236055 -1.282590 -1.329142 -1.375667 -1.422118 -1.468447 -1.514605 -1.560543 -1.606209 -1.651553 -1.696523 -1.741066 -1.785131 -1.828666 -1.871626 -1.913966 -1.955649 -1.996644 -2.036927 -2.076479 -2.115293 -2.153361 -2.190685 -2.227266 -2.263108 -2.298219 -2.332610 -2.366292 -2.399279 -2.431588 -2.463235 -2.494241 -0.283280 0.293331 0.303172 0.312806 0.322242 0.331495 0.340579 0.349496 0.358233 0.366707 0.374751 0.382163 0.388714 0.394219 0.398467 0.401225 0.402403 0.401952 0.399825 0.396042 0.390604 0.383488 0.374744 0.364447 0.352706 0.339605 0.325216 0.309598 0.292797 0.274857 0.255813 0.235694 0.214529 0.192340 0.169148 0.144970 0.119824 0.093721 0.066676 0.038698 0.009798 -0.020016 -0.050737 -0.082356 -0.114869 -0.148268 -0.182547 -0.217699 -0.253715 -0.290584 -0.328291 -0.366820 -0.406152 -0.446264 -0.487128 -0.528719 -0.571005 -0.613958 -0.657545 -0.701737 -0.746499 -0.791798 -0.837600 -0.883868 -0.930568 -0.977660 -1.025107 -1.072870 -1.120907 -1.169177 -1.217638 -1.266246 -1.314957 -1.363723 -1.412499 -1.461236 -1.509886 -1.558397 -1.606717 -1.654795 -1.702577 -1.750007 -1.797031 -1.843595 -1.889643 -1.935124 -1.979989 -2.024194 -2.067702 -2.110483 -2.152513 -2.193778 -2.234271 -2.273987 -2.312928 -2.351097 -2.388501 -2.425147 -2.461048 -2.496217 -2.530669 -2.564422 -2.597494 -2.629908 -0.268273 0.278928 0.289374 0.299596 0.309594 0.319378 0.328961 0.338345 0.347525 0.356449 0.364985 0.372948 0.380104 0.386239 0.391163 0.394631 0.396462 0.396592 0.394964 0.391565 0.386416 0.379497 0.370825 0.360480 0.348574 0.335204 0.320450 0.304378 0.287042 0.268486 0.248751 0.227871 0.205874 0.182787 0.158631 0.133427 0.107191 0.079939 0.051685 0.022440 -0.007785 -0.038980 -0.071138 -0.104251 -0.138311 -0.173311 -0.209245 -0.246102 -0.283874 -0.322546 -0.362103 -0.402526 -0.443793 -0.485878 -0.528752 -0.572385 -0.616747 -0.661805 -0.707528 -0.753880 -0.800828 -0.848335 -0.896366 -0.944882 -0.993845 -1.043215 -1.092951 -1.143012 -1.193355 -1.243935 -1.294709 -1.345628 -1.396646 -1.447715 -1.498784 -1.549803 -1.600720 -1.651480 -1.702030 -1.752314 -1.802274 -1.851853 -1.900994 -1.949639 -1.997730 -2.045213 -2.092040 -2.138166 -2.183554 -2.228174 -2.272007 -2.315040 -2.357267 -2.398687 -2.439300 -2.479112 -2.518131 -2.556366 -2.593832 -2.630541 -2.666512 -2.701763 -2.736315 -2.770191 -0.252865 0.264105 0.275165 0.285997 0.296585 0.306929 0.317040 0.326917 0.336561 0.345937 0.354943 0.363420 0.371151 0.377892 0.383446 0.387588 0.390085 0.390805 0.389694 0.386703 0.381856 0.375143 0.366556 0.356175 0.344108 0.330467 0.315343 0.298807 0.280920 0.261732 0.241286 0.219620 0.196766 0.172751 0.147601 0.121336 0.093976 0.065536 0.036033 0.005478 -0.026117 -0.058741 -0.092385 -0.127041 -0.162702 -0.199358 -0.237002 -0.275623 -0.315210 -0.355746 -0.397215 -0.439594 -0.482859 -0.526981 -0.571929 -0.617672 -0.664177 -0.711409 -0.759335 -0.807918 -0.857122 -0.906908 -0.957240 -1.008075 -1.059374 -1.111094 -1.163193 -1.215626 -1.268348 -1.321311 -1.374469 -1.427772 -1.481171 -1.534614 -1.588048 -1.641419 -1.694672 -1.747751 -1.800598 -1.853154 -1.905358 -1.957150 -2.008470 -2.059257 -2.109451 -2.158996 -2.207842 -2.255945 -2.303269 -2.349786 -2.395479 -2.440336 -2.484353 -2.527532 -2.569873 -2.611384 -2.652074 -2.691954 -2.731039 -2.769345 -2.806889 -2.843694 -2.879780 -2.915173 -0.237109 0.248890 0.260549 0.272003 0.283204 0.294136 0.304801 0.315200 0.325330 0.335169 0.344635 0.353602 0.361877 0.369202 0.375356 0.380126 0.383276 0.384601 0.384015 0.381458 0.376924 0.370425 0.361938 0.351530 0.339306 0.325393 0.309891 0.292881 0.274428 0.254590 0.233413 0.210937 0.187199 0.162228 0.136050 0.108691 0.080169 0.050503 0.019709 -0.012199 -0.045209 -0.079310 -0.114490 -0.150742 -0.188056 -0.226424 -0.265836 -0.306280 -0.347742 -0.390205 -0.433648 -0.478047 -0.523374 -0.569598 -0.616687 -0.664607 -0.713322 -0.762798 -0.812997 -0.863882 -0.915413 -0.967552 -1.020256 -1.073485 -1.127194 -1.181338 -1.235874 -1.290753 -1.345927 -1.401348 -1.456965 -1.512726 -1.568579 -1.624468 -1.680339 -1.736134 -1.791795 -1.847262 -1.902475 -1.957370 -2.011885 -2.065956 -2.119519 -2.172510 -2.224867 -2.276533 -2.327457 -2.377596 -2.426914 -2.475386 -2.522995 -2.569734 -2.615601 -2.660595 -2.704722 -2.747989 -2.790407 -2.831989 -2.872750 -2.912708 -2.951882 -2.990296 -3.027972 -3.064939 -0.221031 0.233333 0.245550 0.257617 0.269444 0.280987 0.292234 0.303180 0.313820 0.324140 0.334071 0.343511 0.352297 0.360183 0.366916 0.372281 0.376049 0.377989 0.377933 0.375825 0.371621 0.365341 0.356969 0.346542 0.334166 0.319978 0.304092 0.286596 0.267564 0.247056 0.225126 0.201816 0.177166 0.151209 0.123972 0.095483 0.065762 0.034829 0.002702 -0.030603 -0.065075 -0.100700 -0.137468 -0.175368 -0.214392 -0.254528 -0.295766 -0.338092 -0.381491 -0.425942 -0.471422 -0.517905 -0.565360 -0.613753 -0.663050 -0.713215 -0.764211 -0.816000 -0.868544 -0.921803 -0.975735 -1.030299 -1.085452 -1.141147 -1.197341 -1.253985 -1.311033 -1.368433 -1.426136 -1.484090 -1.542242 -1.600536 -1.658916 -1.717327 -1.775708 -1.834000 -1.892140 -1.950067 -2.007716 -2.065020 -2.121913 -2.178328 -2.234198 -2.289457 -2.344039 -2.397887 -2.450950 -2.503184 -2.554555 -2.605040 -2.654626 -2.703306 -2.751080 -2.797950 -2.843921 -2.889002 -2.933206 -2.976547 -3.019042 -3.060709 -3.101571 -3.141651 -3.180975 -3.219573 -0.204626 0.217465 0.230211 0.242854 0.255306 0.267476 0.279328 0.290845 0.302019 0.312841 0.323248 0.333154 0.342428 0.350852 0.358146 0.364082 0.368428 0.370968 0.371454 0.369803 0.365946 0.359897 0.351647 0.341208 0.328685 0.314221 0.297943 0.279950 0.260322 0.239127 0.216421 0.192252 0.166662 0.139687 0.111359 0.081703 0.050745 0.018506 -0.014997 -0.049746 -0.085726 -0.122926 -0.161332 -0.200935 -0.241723 -0.283685 -0.326809 -0.371078 -0.416475 -0.462978 -0.510560 -0.559192 -0.608841 -0.659470 -0.711043 -0.763523 -0.816870 -0.871045 -0.926007 -0.981713 -1.038121 -1.095185 -1.152860 -1.211099 -1.269854 -1.329074 -1.388710 -1.448709 -1.509018 -1.569582 -1.630344 -1.691247 -1.752232 -1.813239 -1.874205 -1.935068 -1.995761 -2.056220 -2.116375 -2.176158 -2.235497 -2.294324 -2.352567 -2.410157 -2.467028 -2.523121 -2.578383 -2.632772 -2.686257 -2.738816 -2.790440 -2.841122 -2.890864 -2.939668 -2.987543 -3.034498 -3.080548 -3.125706 -3.169993 -3.213428 -3.256035 -3.297840 -3.338871 -3.379158 -0.187895 0.201284 0.214567 0.227750 0.240798 0.253598 0.266072 0.278185 0.289915 0.301261 0.312162 0.322538 0.332286 0.341220 0.349059 0.355546 0.360442 0.363547 0.364582 0.363394 0.359901 0.354093 0.345970 0.335527 0.322860 0.308118 0.291441 0.272938 0.252699 0.230797 0.207292 0.182239 0.155681 0.127657 0.098202 0.067344 0.035110 0.001522 -0.033400 -0.069637 -0.107175 -0.146000 -0.186098 -0.227457 -0.270066 -0.313913 -0.358982 -0.405256 -0.452715 -0.501333 -0.551082 -0.601930 -0.653839 -0.706773 -0.760693 -0.815558 -0.871329 -0.927962 -0.985416 -1.043644 -1.102602 -1.162243 -1.222517 -1.283377 -1.344770 -1.406645 -1.468947 -1.531623 -1.594615 -1.657867 -1.721317 -1.784907 -1.848574 -1.912253 -1.975881 -2.039389 -2.102710 -2.165773 -2.228507 -2.290839 -2.352696 -2.414002 -2.474685 -2.534672 -2.593896 -2.652295 -2.709820 -2.766427 -2.822087 -2.876783 -2.930505 -2.983251 -3.035022 -3.085823 -3.135663 -3.184552 -3.232507 -3.279543 -3.325682 -3.370945 -3.415357 -3.458946 -3.501743 -3.543779 - - -# Thrust coefficient - -0.127013 0.127522 0.128034 0.128548 0.129064 0.129581 0.130098 0.130614 0.131127 0.131637 0.132143 0.132644 0.133138 0.133625 0.134103 0.134571 0.135028 0.135473 0.135905 0.136323 0.136725 0.137110 0.137477 0.137825 0.138153 0.138460 0.138744 0.139005 0.139240 0.139450 0.139632 0.139786 0.139911 0.140005 0.140067 0.140096 0.140091 0.140051 0.139974 0.139861 0.139710 0.139521 0.139292 0.139023 0.138713 0.138362 0.137970 0.137536 0.137059 0.136540 0.135978 0.135372 0.134724 0.134033 0.133298 0.132520 0.131699 0.130835 0.129928 0.128979 0.127988 0.126955 0.125882 0.124768 0.123615 0.122423 0.121193 0.119926 0.118622 0.117284 0.115911 0.114505 0.113066 0.111596 0.110096 0.108566 0.107008 0.105422 0.103809 0.102170 0.100506 0.098818 0.097106 0.095372 0.093616 0.091839 0.090042 0.088225 0.086390 0.084537 0.082667 0.080780 0.078877 0.076960 0.075028 0.073082 0.071123 0.069151 0.067168 0.065173 0.063167 0.061151 0.059125 0.057090 -0.148515 0.149158 0.149798 0.150434 0.151065 0.151689 0.152306 0.152913 0.153509 0.154094 0.154665 0.155221 0.155761 0.156283 0.156785 0.157268 0.157728 0.158165 0.158577 0.158963 0.159321 0.159650 0.159947 0.160213 0.160445 0.160642 0.160802 0.160925 0.161007 0.161049 0.161049 0.161005 0.160917 0.160783 0.160602 0.160374 0.160097 0.159771 0.159395 0.158968 0.158491 0.157961 0.157380 0.156746 0.156060 0.155321 0.154529 0.153685 0.152787 0.151837 0.150835 0.149781 0.148675 0.147519 0.146313 0.145057 0.143754 0.142403 0.141005 0.139563 0.138077 0.136548 0.134977 0.133366 0.131716 0.130028 0.128304 0.126544 0.124749 0.122922 0.121062 0.119172 0.117251 0.115302 0.113325 0.111321 0.109291 0.107237 0.105159 0.103059 0.100936 0.098793 0.096629 0.094447 0.092246 0.090028 0.087793 0.085542 0.083276 0.080996 0.078701 0.076394 0.074074 0.071742 0.069398 0.067044 0.064679 0.062304 0.059920 0.057528 0.055127 0.052718 0.050302 0.047880 -0.172560 0.173309 0.174047 0.174771 0.175480 0.176172 0.176846 0.177500 0.178131 0.178739 0.179321 0.179877 0.180403 0.180898 0.181361 0.181790 0.182182 0.182537 0.182851 0.183124 0.183353 0.183537 0.183674 0.183762 0.183800 0.183786 0.183719 0.183597 0.183419 0.183184 0.182891 0.182538 0.182125 0.181652 0.181116 0.180518 0.179858 0.179134 0.178347 0.177496 0.176582 0.175604 0.174562 0.173457 0.172290 0.171061 0.169771 0.168421 0.167011 0.165543 0.164019 0.162439 0.160805 0.159119 0.157381 0.155594 0.153759 0.151877 0.149950 0.147980 0.145968 0.143914 0.141822 0.139692 0.137525 0.135323 0.133088 0.130820 0.128521 0.126192 0.123834 0.121449 0.119037 0.116601 0.114140 0.111657 0.109152 0.106626 0.104081 0.101516 0.098934 0.096334 0.093718 0.091087 0.088441 0.085780 0.083106 0.080419 0.077719 0.075008 0.072285 0.069552 0.066808 0.064055 0.061293 0.058522 0.055743 0.052957 0.050165 0.047367 0.044564 0.041756 0.038945 0.036131 -0.198970 0.199785 0.200576 0.201342 0.202080 0.202789 0.203465 0.204107 0.204712 0.205280 0.205806 0.206290 0.206728 0.207119 0.207460 0.207749 0.207984 0.208163 0.208284 0.208345 0.208343 0.208279 0.208148 0.207951 0.207685 0.207350 0.206943 0.206465 0.205913 0.205288 0.204588 0.203813 0.202963 0.202037 0.201035 0.199957 0.198804 0.197576 0.196274 0.194899 0.193451 0.191932 0.190343 0.188685 0.186961 0.185171 0.183318 0.181403 0.179428 0.177395 0.175306 0.173162 0.170966 0.168719 0.166423 0.164080 0.161691 0.159259 0.156784 0.154269 0.151716 0.149125 0.146499 0.143838 0.141146 0.138422 0.135668 0.132887 0.130078 0.127244 0.124386 0.121505 0.118601 0.115677 0.112734 0.109771 0.106790 0.103793 0.100779 0.097749 0.094704 0.091645 0.088573 0.085487 0.082388 0.079278 0.076156 0.073023 0.069880 0.066728 0.063566 0.060396 0.057219 0.054034 0.050843 0.047647 0.044445 0.041240 0.038032 0.034821 0.031610 0.028398 0.025187 0.021979 -0.227540 0.228369 0.229159 0.229907 0.230612 0.231270 0.231879 0.232437 0.232939 0.233385 0.233770 0.234093 0.234351 0.234541 0.234661 0.234709 0.234683 0.234580 0.234399 0.234138 0.233794 0.233368 0.232856 0.232259 0.231574 0.230802 0.229942 0.228992 0.227954 0.226826 0.225610 0.224306 0.222914 0.221435 0.219871 0.218223 0.216492 0.214680 0.212789 0.210821 0.208777 0.206661 0.204474 0.202218 0.199896 0.197509 0.195061 0.192552 0.189986 0.187364 0.184689 0.181963 0.179187 0.176364 0.173495 0.170583 0.167630 0.164638 0.161608 0.158542 0.155442 0.152309 0.149146 0.145954 0.142734 0.139488 0.136217 0.132922 0.129605 0.126267 0.122908 0.119531 0.116135 0.112721 0.109291 0.105845 0.102384 0.098907 0.095417 0.091913 0.088396 0.084867 0.081326 0.077774 0.074211 0.070639 0.067057 0.063466 0.059868 0.056262 0.052650 0.049032 0.045408 0.041781 0.038151 0.034519 0.030886 0.027254 0.023622 0.019994 0.016371 0.012753 0.009142 0.005541 -0.258040 0.258815 0.259533 0.260189 0.260782 0.261307 0.261762 0.262143 0.262448 0.262674 0.262817 0.262876 0.262847 0.262728 0.262517 0.262211 0.261809 0.261309 0.260710 0.260009 0.259207 0.258302 0.257295 0.256183 0.254969 0.253651 0.252231 0.250709 0.249087 0.247366 0.245547 0.243632 0.241623 0.239523 0.237334 0.235058 0.232698 0.230256 0.227735 0.225137 0.222465 0.219722 0.216911 0.214033 0.211091 0.208088 0.205027 0.201909 0.198738 0.195515 0.192244 0.188925 0.185563 0.182158 0.178712 0.175229 0.171710 0.168156 0.164570 0.160954 0.157308 0.153635 0.149937 0.146213 0.142467 0.138698 0.134908 0.131099 0.127270 0.123424 0.119560 0.115679 0.111782 0.107870 0.103943 0.100002 0.096048 0.092081 0.088101 0.084110 0.080107 0.076094 0.072071 0.068038 0.063997 0.059948 0.055892 0.051829 0.047760 0.043687 0.039611 0.035532 0.031453 0.027373 0.023296 0.019221 0.015151 0.011088 0.007033 0.002989 -0.001044 -0.005063 -0.009066 -0.013050 -0.290195 0.290832 0.291389 0.291861 0.292245 0.292538 0.292736 0.292836 0.292835 0.292730 0.292518 0.292197 0.291765 0.291219 0.290559 0.289781 0.288887 0.287874 0.286742 0.285491 0.284122 0.282635 0.281030 0.279310 0.277475 0.275527 0.273469 0.271302 0.269029 0.266652 0.264175 0.261601 0.258931 0.256170 0.253320 0.250385 0.247367 0.244270 0.241095 0.237848 0.234530 0.231144 0.227693 0.224181 0.220609 0.216982 0.213300 0.209568 0.205788 0.201962 0.198093 0.194182 0.190233 0.186247 0.182226 0.178173 0.174088 0.169975 0.165834 0.161667 0.157476 0.153261 0.149024 0.144766 0.140488 0.136191 0.131876 0.127543 0.123193 0.118827 0.114446 0.110050 0.105639 0.101215 0.096778 0.092327 0.087865 0.083391 0.078906 0.074411 0.069906 0.065392 0.060870 0.056340 0.051804 0.047262 0.042716 0.038167 0.033617 0.029066 0.024516 0.019970 0.015428 0.010892 0.006365 0.001848 -0.002656 -0.007145 -0.011618 -0.016072 -0.020503 -0.024911 -0.029292 -0.033643 -0.323679 0.324077 0.324369 0.324549 0.324615 0.324562 0.324388 0.324090 0.323665 0.323110 0.322424 0.321606 0.320653 0.319566 0.318343 0.316986 0.315493 0.313866 0.312107 0.310215 0.308194 0.306045 0.303771 0.301374 0.298858 0.296224 0.293477 0.290620 0.287656 0.284589 0.281422 0.278160 0.274804 0.271360 0.267830 0.264217 0.260526 0.256760 0.252922 0.249015 0.245042 0.241008 0.236914 0.232765 0.228562 0.224309 0.220009 0.215663 0.211275 0.206847 0.202381 0.197880 0.193345 0.188778 0.184182 0.179558 0.174907 0.170231 0.165531 0.160809 0.156066 0.151302 0.146519 0.141718 0.136898 0.132062 0.127208 0.122339 0.117454 0.112555 0.107641 0.102714 0.097773 0.092819 0.087853 0.082876 0.077887 0.072888 0.067880 0.062863 0.057838 0.052806 0.047769 0.042728 0.037684 0.032639 0.027594 0.022551 0.017511 0.012478 0.007452 0.002436 -0.002568 -0.007558 -0.012531 -0.017485 -0.022416 -0.027324 -0.032203 -0.037053 -0.041870 -0.046650 -0.051391 -0.056091 -0.358116 0.358162 0.358072 0.357842 0.357470 0.356952 0.356286 0.355471 0.354505 0.353386 0.352116 0.350693 0.349117 0.347391 0.345514 0.343489 0.341317 0.339002 0.336545 0.333949 0.331218 0.328355 0.325364 0.322248 0.319012 0.315660 0.312195 0.308622 0.304945 0.301168 0.297294 0.293329 0.289275 0.285136 0.280917 0.276621 0.272252 0.267814 0.263309 0.258742 0.254116 0.249434 0.244699 0.239913 0.235081 0.230204 0.225285 0.220327 0.215331 0.210301 0.205238 0.200144 0.195021 0.189870 0.184694 0.179494 0.174271 0.169025 0.163759 0.158473 0.153168 0.147844 0.142502 0.137143 0.131767 0.126376 0.120968 0.115546 0.110109 0.104657 0.099192 0.093715 0.088224 0.082722 0.077210 0.071687 0.066154 0.060614 0.055066 0.049513 0.043955 0.038394 0.032832 0.027270 0.021711 0.016155 0.010606 0.005065 -0.000465 -0.005983 -0.011484 -0.016968 -0.022430 -0.027869 -0.033281 -0.038663 -0.044012 -0.049325 -0.054599 -0.059830 -0.065014 -0.070150 -0.075232 -0.080258 -0.393099 0.392671 0.392078 0.391319 0.390392 0.389295 0.388028 0.386590 0.384982 0.383204 0.381258 0.379145 0.376868 0.374429 0.371831 0.369077 0.366170 0.363114 0.359914 0.356573 0.353096 0.349487 0.345752 0.341894 0.337919 0.333831 0.329634 0.325333 0.320933 0.316437 0.311851 0.307177 0.302422 0.297588 0.292679 0.287700 0.282654 0.277545 0.272375 0.267150 0.261871 0.256542 0.251165 0.245744 0.240282 0.234780 0.229241 0.223668 0.218063 0.212427 0.206762 0.201071 0.195355 0.189614 0.183851 0.178066 0.172260 0.166433 0.160588 0.154724 0.148841 0.142941 0.137024 0.131091 0.125141 0.119176 0.113196 0.107202 0.101194 0.095172 0.089138 0.083093 0.077036 0.070970 0.064894 0.058811 0.052721 0.046627 0.040528 0.034428 0.028327 0.022229 0.016134 0.010045 0.003965 -0.002105 -0.008161 -0.014201 -0.020223 -0.026222 -0.032197 -0.038143 -0.044058 -0.049939 -0.055780 -0.061580 -0.067335 -0.073040 -0.078692 -0.084287 -0.089822 -0.095292 -0.100693 -0.106022 -0.428215 0.427199 0.425994 0.424600 0.423017 0.421246 0.419287 0.417143 0.414814 0.412305 0.409617 0.406754 0.403720 0.400518 0.397153 0.393630 0.389952 0.386126 0.382156 0.378048 0.373807 0.369439 0.364947 0.360338 0.355615 0.350785 0.345852 0.340820 0.335695 0.330481 0.325182 0.319802 0.314346 0.308818 0.303222 0.297560 0.291838 0.286059 0.280225 0.274341 0.268408 0.262431 0.256412 0.250354 0.244259 0.238130 0.231968 0.225776 0.219555 0.213308 0.207036 0.200739 0.194419 0.188077 0.181714 0.175331 0.168928 0.162505 0.156064 0.149605 0.143129 0.136636 0.130126 0.123600 0.117059 0.110504 0.103934 0.097351 0.090755 0.084147 0.077529 0.070900 0.064263 0.057618 0.050966 0.044310 0.037652 0.030992 0.024333 0.017676 0.011025 0.004382 -0.002251 -0.008871 -0.015476 -0.022062 -0.028626 -0.035166 -0.041676 -0.048154 -0.054597 -0.061000 -0.067360 -0.073672 -0.079933 -0.086138 -0.092284 -0.098366 -0.104379 -0.110320 -0.116185 -0.121967 -0.127664 -0.133270 -0.463098 0.461398 0.459491 0.457378 0.455062 0.452544 0.449827 0.446916 0.443812 0.440521 0.437047 0.433393 0.429567 0.425572 0.421415 0.417101 0.412637 0.408028 0.403279 0.398397 0.393387 0.388254 0.383003 0.377641 0.372172 0.366601 0.360933 0.355172 0.349324 0.343393 0.337383 0.331298 0.325143 0.318921 0.312637 0.306294 0.299896 0.293445 0.286946 0.280401 0.273814 0.267187 0.260523 0.253824 0.247092 0.240330 0.233539 0.226721 0.219877 0.213008 0.206116 0.199202 0.192265 0.185308 0.178331 0.171334 0.164318 0.157283 0.150231 0.143161 0.136074 0.128971 0.121852 0.114718 0.107569 0.100407 0.093232 0.086044 0.078845 0.071636 0.064418 0.057192 0.049960 0.042724 0.035485 0.028245 0.021007 0.013772 0.006544 -0.000676 -0.007884 -0.015078 -0.022254 -0.029410 -0.036541 -0.043644 -0.050715 -0.057751 -0.064747 -0.071698 -0.078602 -0.085454 -0.092248 -0.098982 -0.105649 -0.112246 -0.118768 -0.125209 -0.131565 -0.137832 -0.144003 -0.150075 -0.156043 -0.161900 -0.497449 0.494993 0.492317 0.489425 0.486321 0.483007 0.479488 0.475770 0.471856 0.467753 0.463467 0.459003 0.454369 0.449570 0.444613 0.439505 0.434251 0.428857 0.423330 0.417674 0.411897 0.406002 0.399996 0.393884 0.387670 0.381361 0.374960 0.368473 0.361903 0.355256 0.348536 0.341747 0.334892 0.327977 0.321005 0.313979 0.306903 0.299780 0.292614 0.285406 0.278161 0.270879 0.263565 0.256219 0.248843 0.241440 0.234011 0.226556 0.219077 0.211575 0.204051 0.196505 0.188939 0.181352 0.173746 0.166120 0.158476 0.150814 0.143134 0.135438 0.127725 0.119996 0.112252 0.104493 0.096721 0.088936 0.081139 0.073332 0.065515 0.057690 0.049859 0.042022 0.034183 0.026344 0.018506 0.010672 0.002844 -0.004974 -0.012780 -0.020570 -0.028341 -0.036090 -0.043813 -0.051505 -0.059162 -0.066781 -0.074357 -0.081885 -0.089360 -0.096779 -0.104136 -0.111427 -0.118646 -0.125788 -0.132848 -0.139821 -0.146701 -0.153484 -0.160163 -0.166733 -0.173190 -0.179527 -0.185740 -0.191822 -0.531037 0.527777 0.524290 0.520581 0.516654 0.512515 0.508170 0.503625 0.498887 0.493962 0.488859 0.483583 0.478141 0.472540 0.466787 0.460888 0.454848 0.448675 0.442373 0.435949 0.429408 0.422756 0.415997 0.409138 0.402183 0.395138 0.388006 0.380793 0.373503 0.366141 0.358711 0.351218 0.343665 0.336056 0.328394 0.320684 0.312928 0.305130 0.297293 0.289418 0.281509 0.273567 0.265595 0.257595 0.249567 0.241513 0.233435 0.225332 0.217207 0.209059 0.200890 0.192700 0.184489 0.176258 0.168008 0.159739 0.151451 0.143146 0.134823 0.126483 0.118128 0.109757 0.101371 0.092972 0.084560 0.076136 0.067703 0.059261 0.050811 0.042357 0.033898 0.025439 0.016981 0.008526 0.000079 -0.008360 -0.016786 -0.025195 -0.033585 -0.041951 -0.050290 -0.058596 -0.066866 -0.075094 -0.083277 -0.091409 -0.099485 -0.107500 -0.115449 -0.123327 -0.131128 -0.138847 -0.146478 -0.154015 -0.161453 -0.168786 -0.176008 -0.183113 -0.190095 -0.196949 -0.203668 -0.210246 -0.216679 -0.222961 -0.563691 0.559599 0.555279 0.550736 0.545975 0.541003 0.535828 0.530458 0.524899 0.519160 0.513246 0.507165 0.500924 0.494530 0.487988 0.481305 0.474487 0.467540 0.460470 0.453283 0.445984 0.438578 0.431071 0.423469 0.415775 0.407996 0.400135 0.392198 0.384189 0.376113 0.367974 0.359776 0.351523 0.343218 0.334866 0.326469 0.318030 0.309553 0.301040 0.292493 0.283915 0.275306 0.266670 0.258006 0.249317 0.240603 0.231864 0.223103 0.214318 0.205511 0.196683 0.187834 0.178964 0.170074 0.161164 0.152235 0.143287 0.134322 0.125339 0.116340 0.107325 0.098295 0.089251 0.080195 0.071128 0.062051 0.052965 0.043873 0.034777 0.025679 0.016581 0.007486 -0.001603 -0.010684 -0.019751 -0.028803 -0.037834 -0.046842 -0.055821 -0.064767 -0.073675 -0.082540 -0.091357 -0.100120 -0.108825 -0.117467 -0.126038 -0.134535 -0.142950 -0.151278 -0.159513 -0.167649 -0.175680 -0.183599 -0.191400 -0.199077 -0.206623 -0.214031 -0.221296 -0.228411 -0.235370 -0.242167 -0.248796 -0.255251 -0.595284 0.590359 0.585206 0.579832 0.574246 0.568454 0.562463 0.556281 0.549917 0.543375 0.536665 0.529792 0.522764 0.515586 0.508265 0.500808 0.493221 0.485508 0.477677 0.469733 0.461681 0.453527 0.445276 0.436933 0.428504 0.419993 0.411406 0.402746 0.394019 0.385230 0.376382 0.367479 0.358525 0.349523 0.340478 0.331392 0.322268 0.313108 0.303916 0.294691 0.285437 0.276155 0.266845 0.257509 0.248147 0.238761 0.229350 0.219915 0.210457 0.200977 0.191474 0.181950 0.172405 0.162838 0.153252 0.143647 0.134022 0.124379 0.114720 0.105044 0.095353 0.085648 0.075930 0.066201 0.056462 0.046716 0.036964 0.027208 0.017450 0.007695 -0.002055 -0.011798 -0.021529 -0.031244 -0.040940 -0.050612 -0.060256 -0.069866 -0.079438 -0.088966 -0.098445 -0.107869 -0.117232 -0.126529 -0.135753 -0.144900 -0.153961 -0.162932 -0.171806 -0.180576 -0.189235 -0.197777 -0.206195 -0.214482 -0.222630 -0.230634 -0.238487 -0.246180 -0.253709 -0.261065 -0.268242 -0.275235 -0.282036 -0.288641 -0.625724 0.619989 0.614028 0.607849 0.601461 0.594871 0.588088 0.581117 0.573966 0.566641 0.559151 0.551502 0.543701 0.535754 0.527667 0.519447 0.511099 0.502630 0.494046 0.485352 0.476553 0.467656 0.458665 0.449586 0.440425 0.431185 0.421874 0.412494 0.403051 0.393550 0.383993 0.374386 0.364731 0.355033 0.345294 0.335517 0.325704 0.315858 0.305980 0.296071 0.286133 0.276167 0.266173 0.256152 0.246105 0.236032 0.225934 0.215811 0.205665 0.195494 0.185301 0.175085 0.164847 0.154588 0.144308 0.134008 0.123689 0.113352 0.102999 0.092630 0.082246 0.071849 0.061441 0.051023 0.040597 0.030166 0.019732 0.009298 -0.001134 -0.011558 -0.021973 -0.032373 -0.042755 -0.053115 -0.063447 -0.073746 -0.084007 -0.094224 -0.104391 -0.114503 -0.124553 -0.134535 -0.144443 -0.154271 -0.164012 -0.173658 -0.183205 -0.192643 -0.201967 -0.211169 -0.220242 -0.229179 -0.237971 -0.246612 -0.255094 -0.263409 -0.271551 -0.279512 -0.287285 -0.294862 -0.302237 -0.309404 -0.316356 -0.323089 -0.654941 0.648444 0.641718 0.634774 0.627620 0.620265 0.612718 0.604985 0.597073 0.588989 0.580741 0.572335 0.563778 0.555076 0.546237 0.537267 0.528170 0.518955 0.509626 0.500189 0.490651 0.481016 0.471291 0.461482 0.451593 0.441631 0.431599 0.421503 0.411347 0.401136 0.390873 0.380563 0.370208 0.359811 0.349376 0.338904 0.328397 0.317857 0.307285 0.296682 0.286049 0.275386 0.264694 0.253975 0.243228 0.232453 0.221652 0.210825 0.199973 0.189096 0.178194 0.167269 0.156321 0.145351 0.134360 0.123349 0.112319 0.101271 0.090207 0.079127 0.068033 0.056928 0.045813 0.034690 0.023562 0.012432 0.001302 -0.009823 -0.020941 -0.032047 -0.043136 -0.054204 -0.065247 -0.076258 -0.087232 -0.098163 -0.109045 -0.119872 -0.130637 -0.141334 -0.151956 -0.162496 -0.172947 -0.183303 -0.193556 -0.203699 -0.213724 -0.223623 -0.233390 -0.243015 -0.252492 -0.261811 -0.270966 -0.279947 -0.288748 -0.297360 -0.305775 -0.313986 -0.321985 -0.329764 -0.337318 -0.344639 -0.351722 -0.358562 -0.682919 0.675687 0.668244 0.660589 0.652719 0.644641 0.636368 0.627907 0.619265 0.610449 0.601467 0.592326 0.583034 0.573596 0.564020 0.554313 0.544480 0.534529 0.524466 0.514297 0.504028 0.493665 0.483214 0.472682 0.462073 0.451393 0.440647 0.429838 0.418973 0.408054 0.397086 0.386071 0.375014 0.363915 0.352778 0.341605 0.330395 0.319152 0.307874 0.296564 0.285223 0.273849 0.262446 0.251011 0.239548 0.228056 0.216535 0.204986 0.193411 0.181810 0.170182 0.158531 0.146855 0.135157 0.123438 0.111698 0.099939 0.088162 0.076370 0.064562 0.052743 0.040913 0.029075 0.017232 0.005387 -0.006456 -0.018295 -0.030124 -0.041940 -0.053738 -0.065512 -0.077257 -0.088968 -0.100637 -0.112259 -0.123826 -0.135333 -0.146773 -0.158138 -0.169421 -0.180615 -0.191712 -0.202705 -0.213587 -0.224348 -0.234982 -0.245480 -0.255834 -0.266035 -0.276075 -0.285945 -0.295637 -0.305142 -0.314452 -0.323558 -0.332452 -0.341125 -0.349569 -0.357777 -0.365741 -0.373455 -0.380912 -0.388108 -0.395037 -0.709676 0.701756 0.693623 0.685286 0.676749 0.668004 0.659052 0.649903 0.640567 0.631051 0.621364 0.611514 0.601508 0.591354 0.581060 0.570633 0.560080 0.549408 0.538624 0.527734 0.516746 0.505666 0.494499 0.483252 0.471929 0.460537 0.449080 0.437562 0.425989 0.414362 0.402687 0.390965 0.379200 0.367394 0.355547 0.343661 0.331738 0.319778 0.307783 0.295752 0.283686 0.271587 0.259455 0.247290 0.235093 0.222865 0.210608 0.198320 0.186004 0.173661 0.161290 0.148894 0.136474 0.124030 0.111564 0.099078 0.086573 0.074051 0.061513 0.048962 0.036400 0.023830 0.011254 -0.001324 -0.013900 -0.026470 -0.039031 -0.051576 -0.064102 -0.076601 -0.089069 -0.101499 -0.113884 -0.126218 -0.138493 -0.150702 -0.162837 -0.174892 -0.186859 -0.198729 -0.210495 -0.222149 -0.233683 -0.245087 -0.256354 -0.267474 -0.278440 -0.289241 -0.299870 -0.310316 -0.320571 -0.330626 -0.340470 -0.350097 -0.359495 -0.368656 -0.377573 -0.386235 -0.394636 -0.402768 -0.410625 -0.418202 -0.425493 -0.432493 -0.735186 0.726648 0.717890 0.708916 0.699736 0.690356 0.680776 0.670990 0.661002 0.650825 0.640467 0.629937 0.619245 0.608400 0.597410 0.586283 0.575028 0.563652 0.552162 0.540566 0.528871 0.517083 0.505208 0.493253 0.481222 0.469122 0.456956 0.444730 0.432446 0.420110 0.407723 0.395289 0.382809 0.370284 0.357717 0.345107 0.332457 0.319767 0.307038 0.294270 0.281465 0.268623 0.255746 0.242833 0.229886 0.216906 0.203893 0.190849 0.177775 0.164672 0.151540 0.138382 0.125199 0.111992 0.098763 0.085514 0.072246 0.058961 0.045662 0.032351 0.019030 0.005704 -0.007625 -0.020952 -0.034274 -0.047584 -0.060878 -0.074151 -0.087397 -0.100608 -0.113778 -0.126900 -0.139967 -0.152971 -0.165904 -0.178758 -0.191526 -0.204200 -0.216770 -0.229229 -0.241568 -0.253777 -0.265849 -0.277774 -0.289543 -0.301146 -0.312574 -0.323818 -0.334867 -0.345712 -0.356344 -0.366751 -0.376925 -0.386856 -0.396535 -0.405951 -0.415096 -0.423962 -0.432541 -0.440827 -0.448812 -0.456492 -0.463861 -0.470916 -0.759498 0.750370 0.741038 0.731493 0.721729 0.711751 0.701568 0.691185 0.680598 0.669804 0.658816 0.647643 0.636297 0.624789 0.613128 0.601323 0.589386 0.577322 0.565142 0.552852 0.540460 0.527973 0.515397 0.502739 0.490004 0.477197 0.464323 0.451386 0.438390 0.425339 0.412234 0.399077 0.385872 0.372618 0.359316 0.345969 0.332578 0.319142 0.305663 0.292143 0.278581 0.264980 0.251340 0.237662 0.223948 0.210197 0.196412 0.182594 0.168744 0.154863 0.140954 0.127017 0.113053 0.099066 0.085057 0.071027 0.056978 0.042914 0.028837 0.014749 0.000654 -0.013444 -0.027540 -0.041630 -0.055710 -0.069772 -0.083812 -0.097823 -0.111798 -0.125730 -0.139611 -0.153433 -0.167188 -0.180868 -0.194464 -0.207969 -0.221373 -0.234668 -0.247844 -0.260893 -0.273805 -0.286570 -0.299180 -0.311623 -0.323891 -0.335974 -0.347860 -0.359541 -0.371005 -0.382241 -0.393241 -0.403992 -0.414486 -0.424711 -0.434658 -0.444317 -0.453678 -0.462734 -0.471478 -0.479902 -0.488001 -0.495769 -0.503203 -0.510298 -0.782736 0.773023 0.763129 0.753039 0.742744 0.732230 0.721495 0.710545 0.699390 0.688027 0.676455 0.664680 0.652715 0.640574 0.628268 0.615809 0.603208 0.590474 0.577617 0.564645 0.551566 0.538387 0.525115 0.511757 0.498319 0.484805 0.471220 0.457569 0.443855 0.430081 0.416248 0.402359 0.388415 0.374418 0.360369 0.346269 0.332120 0.317923 0.303679 0.289389 0.275055 0.260678 0.246258 0.231797 0.217298 0.202759 0.188185 0.173575 0.158931 0.144256 0.129551 0.114817 0.100056 0.085271 0.070464 0.055636 0.040791 0.025931 0.011059 -0.003822 -0.018706 -0.033589 -0.048467 -0.063334 -0.078185 -0.093012 -0.107809 -0.122569 -0.137283 -0.151944 -0.166544 -0.181073 -0.195523 -0.209885 -0.224151 -0.238310 -0.252355 -0.266274 -0.280059 -0.293699 -0.307185 -0.320506 -0.333652 -0.346613 -0.359378 -0.371937 -0.384278 -0.396390 -0.408263 -0.419885 -0.431245 -0.442333 -0.453136 -0.463645 -0.473849 -0.483739 -0.493304 -0.502538 -0.511433 -0.519982 -0.528181 -0.536024 -0.543509 -0.550633 -0.804995 0.794725 0.784283 0.773662 0.762848 0.751830 0.740596 0.729135 0.717447 0.705543 0.693424 0.681090 0.668545 0.655803 0.642879 0.629788 0.616543 0.603155 0.589634 0.575989 0.562231 0.548366 0.534402 0.520346 0.506203 0.491980 0.477681 0.463310 0.448869 0.434361 0.419789 0.405155 0.390459 0.375705 0.360893 0.346026 0.331104 0.316130 0.301104 0.286028 0.270904 0.255733 0.240517 0.225256 0.209954 0.194611 0.179229 0.163810 0.148356 0.132868 0.117350 0.101802 0.086227 0.070627 0.055004 0.039362 0.023702 0.008030 -0.007653 -0.023341 -0.039029 -0.054713 -0.070387 -0.086044 -0.101679 -0.117282 -0.132848 -0.148366 -0.163829 -0.179229 -0.194555 -0.209799 -0.224951 -0.240002 -0.254942 -0.269761 -0.284450 -0.298997 -0.313393 -0.327626 -0.341687 -0.355565 -0.369248 -0.382726 -0.395986 -0.409018 -0.421810 -0.434350 -0.446627 -0.458628 -0.470342 -0.481757 -0.492862 -0.503645 -0.514096 -0.524205 -0.533963 -0.543363 -0.552397 -0.561060 -0.569346 -0.577253 -0.584777 -0.591918 -0.826322 0.815545 0.804597 0.793469 0.782156 0.770645 0.758926 0.746989 0.734819 0.722409 0.709770 0.696907 0.683821 0.670513 0.657000 0.643301 0.629431 0.615403 0.601230 0.586923 0.572492 0.557945 0.543291 0.528537 0.513688 0.498752 0.483732 0.468631 0.453453 0.438201 0.422877 0.407484 0.392023 0.376497 0.360908 0.345257 0.329547 0.313779 0.297955 0.282076 0.266145 0.250164 0.234133 0.218056 0.201933 0.185768 0.169561 0.153316 0.137034 0.120717 0.104368 0.087989 0.071581 0.055149 0.038694 0.022220 0.005731 -0.010771 -0.027279 -0.043791 -0.060299 -0.076798 -0.093281 -0.109742 -0.126172 -0.142564 -0.158908 -0.175196 -0.191418 -0.207564 -0.223626 -0.239592 -0.255453 -0.271199 -0.286820 -0.302304 -0.317640 -0.332819 -0.347829 -0.362659 -0.377297 -0.391732 -0.405952 -0.419945 -0.433700 -0.447204 -0.460444 -0.473408 -0.486083 -0.498458 -0.510519 -0.522255 -0.533652 -0.544700 -0.555389 -0.565707 -0.575647 -0.585202 -0.594364 -0.603129 -0.611492 -0.619450 -0.627004 -0.634152 -0.846799 0.835537 0.824120 0.812531 0.800748 0.788765 0.776577 0.764170 0.751538 0.738667 0.725543 0.712175 0.698571 0.684733 0.670663 0.656380 0.641904 0.627252 0.612439 0.597478 0.582379 0.567153 0.551810 0.536356 0.520798 0.505142 0.489392 0.473552 0.457626 0.441618 0.425529 0.409363 0.393123 0.376810 0.360428 0.343979 0.327464 0.310886 0.294247 0.277549 0.260794 0.243985 0.227123 0.210211 0.193252 0.176247 0.159199 0.142110 0.124983 0.107819 0.090622 0.073393 0.056137 0.038855 0.021552 0.004229 -0.013107 -0.030454 -0.047805 -0.065154 -0.082497 -0.099826 -0.117132 -0.134410 -0.151649 -0.168840 -0.185974 -0.203041 -0.220031 -0.236934 -0.253739 -0.270436 -0.287013 -0.303461 -0.319767 -0.335921 -0.351911 -0.367726 -0.383353 -0.398782 -0.413999 -0.428993 -0.443751 -0.458261 -0.472508 -0.486482 -0.500167 -0.513552 -0.526622 -0.539365 -0.551767 -0.563816 -0.575498 -0.586803 -0.597719 -0.608237 -0.618350 -0.628049 -0.637329 -0.646185 -0.654615 -0.662617 -0.670191 -0.677338 -0.866547 0.854796 0.842917 0.830885 0.818671 0.806252 0.793616 0.780758 0.767670 0.754346 0.740772 0.726932 0.712833 0.698486 0.683889 0.669049 0.653988 0.638728 0.623286 0.607678 0.591917 0.576015 0.559981 0.543824 0.527550 0.511167 0.494678 0.478089 0.461404 0.444626 0.427760 0.410808 0.393774 0.376660 0.359470 0.342205 0.324870 0.307465 0.289995 0.272460 0.254865 0.237211 0.219502 0.201739 0.183925 0.166064 0.148157 0.130207 0.112217 0.094189 0.076126 0.058032 0.039909 0.021760 0.003590 -0.014597 -0.032797 -0.051005 -0.069214 -0.087418 -0.105610 -0.123783 -0.141927 -0.160033 -0.178093 -0.196095 -0.214030 -0.231887 -0.249655 -0.267323 -0.284880 -0.302315 -0.319616 -0.336772 -0.353771 -0.370601 -0.387249 -0.403704 -0.419954 -0.435984 -0.451783 -0.467338 -0.482635 -0.497661 -0.512401 -0.526843 -0.540972 -0.554774 -0.568235 -0.581341 -0.594078 -0.606433 -0.618392 -0.629945 -0.641081 -0.651790 -0.662065 -0.671900 -0.681288 -0.690227 -0.698716 -0.706753 -0.714339 -0.721476 -0.885674 0.873431 0.861083 0.848603 0.835965 0.823136 0.810087 0.796803 0.783278 0.769508 0.755488 0.741204 0.726640 0.711801 0.696697 0.681327 0.665703 0.649851 0.633792 0.617545 0.601126 0.584548 0.567822 0.550957 0.533962 0.516843 0.499606 0.482256 0.464800 0.447241 0.429584 0.411832 0.393989 0.376059 0.358045 0.339950 0.321778 0.303531 0.285212 0.266825 0.248373 0.229858 0.211283 0.192652 0.173968 0.155232 0.136449 0.117621 0.098750 0.079840 0.060895 0.041917 0.022910 0.003877 -0.015176 -0.034246 -0.053327 -0.072412 -0.091495 -0.110569 -0.129625 -0.148655 -0.167650 -0.186598 -0.205491 -0.224315 -0.243062 -0.261719 -0.280274 -0.298717 -0.317036 -0.335217 -0.353250 -0.371121 -0.388819 -0.406331 -0.423643 -0.440744 -0.457619 -0.474255 -0.490639 -0.506757 -0.522595 -0.538138 -0.553371 -0.568280 -0.582851 -0.597067 -0.610915 -0.624379 -0.637445 -0.650099 -0.662329 -0.674122 -0.685470 -0.696362 -0.706791 -0.716752 -0.726241 -0.735255 -0.743794 -0.751859 -0.759451 -0.766571 -0.904294 0.891526 0.878700 0.865774 0.852703 0.839463 0.826018 0.812336 0.798400 0.784203 0.769743 0.755016 0.740009 0.724704 0.709107 0.693226 0.677064 0.660637 0.643973 0.627095 0.610022 0.592769 0.575348 0.557771 0.540046 0.522183 0.504188 0.486068 0.467828 0.449475 0.431013 0.412448 0.393782 0.375021 0.356168 0.337227 0.318202 0.299096 0.279913 0.260657 0.241331 0.221938 0.202482 0.182965 0.163392 0.143766 0.124088 0.104364 0.084595 0.064786 0.044940 0.025061 0.005152 -0.014782 -0.034737 -0.054706 -0.074683 -0.094662 -0.114635 -0.134594 -0.154529 -0.174431 -0.194289 -0.214093 -0.233830 -0.253488 -0.273058 -0.292525 -0.311879 -0.331106 -0.350194 -0.369131 -0.387903 -0.406498 -0.424902 -0.443102 -0.461084 -0.478836 -0.496341 -0.513588 -0.530560 -0.547244 -0.563624 -0.579684 -0.595410 -0.610786 -0.625796 -0.640424 -0.654655 -0.668473 -0.681863 -0.694811 -0.707304 -0.719331 -0.730882 -0.741949 -0.752525 -0.762605 -0.772187 -0.781270 -0.789854 -0.797939 -0.805529 -0.812627 -0.922602 0.909211 0.895853 0.882455 0.868955 0.855298 0.841452 0.827383 0.813059 0.798460 0.783578 0.768412 0.752961 0.737210 0.721142 0.704763 0.688079 0.671098 0.653843 0.636342 0.618618 0.600689 0.582571 0.564276 0.545815 0.527199 0.508437 0.489535 0.470501 0.451341 0.432061 0.412668 0.393165 0.373557 0.353850 0.334047 0.314154 0.294173 0.274110 0.253968 0.233751 0.213464 0.193108 0.172690 0.152211 0.131675 0.111086 0.090448 0.069764 0.049038 0.028273 0.007475 -0.013354 -0.034207 -0.055080 -0.075965 -0.096857 -0.117746 -0.138624 -0.159483 -0.180312 -0.201099 -0.221834 -0.242505 -0.263098 -0.283603 -0.304006 -0.324295 -0.344457 -0.364478 -0.384346 -0.404046 -0.423567 -0.442893 -0.462010 -0.480906 -0.499565 -0.517972 -0.536114 -0.553975 -0.571539 -0.588791 -0.605715 -0.622295 -0.638514 -0.654356 -0.669804 -0.684841 -0.699451 -0.713619 -0.727327 -0.740563 -0.753313 -0.765567 -0.777316 -0.788551 -0.799266 -0.809459 -0.819128 -0.828273 -0.836895 -0.844996 -0.852579 -0.859647 -0.940801 0.926679 0.912681 0.898739 0.884771 0.870696 0.856447 0.841983 0.827275 0.812294 0.797014 0.781426 0.765534 0.749335 0.732815 0.715956 0.698762 0.681244 0.663411 0.645296 0.626925 0.608320 0.589501 0.570484 0.551280 0.531903 0.512363 0.492669 0.472828 0.452849 0.432739 0.412503 0.392148 0.371680 0.351103 0.330423 0.309645 0.288774 0.267814 0.246770 0.225646 0.204446 0.183175 0.161836 0.140434 0.118972 0.097454 0.075884 0.054266 0.032605 0.010904 -0.010832 -0.032599 -0.054389 -0.076197 -0.098016 -0.119837 -0.141653 -0.163452 -0.185226 -0.206963 -0.228649 -0.250274 -0.271825 -0.293288 -0.314650 -0.335898 -0.357020 -0.378000 -0.398825 -0.419482 -0.439956 -0.460233 -0.480298 -0.500138 -0.519736 -0.539078 -0.558148 -0.576931 -0.595410 -0.613570 -0.631394 -0.648864 -0.665965 -0.682677 -0.698984 -0.714869 -0.730313 -0.745300 -0.759812 -0.773834 -0.787353 -0.800355 -0.812830 -0.824769 -0.836166 -0.847015 -0.857316 -0.867066 -0.876268 -0.884923 -0.893033 -0.900604 -0.907639 -0.959011 0.944087 0.929354 0.914765 0.900243 0.885701 0.871042 0.856187 0.841090 0.825724 0.810063 0.794076 0.777758 0.761113 0.744138 0.726815 0.709125 0.691078 0.672685 0.653964 0.634950 0.615670 0.596149 0.576404 0.556451 0.536305 0.515978 0.495480 0.474821 0.454011 0.433056 0.411965 0.390744 0.369399 0.347938 0.326365 0.304687 0.282909 0.261036 0.239073 0.217024 0.194896 0.172691 0.150415 0.128072 0.105665 0.083200 0.060681 0.038111 0.015496 -0.007160 -0.029851 -0.052573 -0.075318 -0.098079 -0.120848 -0.143616 -0.166374 -0.189111 -0.211814 -0.234472 -0.257072 -0.279600 -0.302044 -0.324388 -0.346620 -0.368726 -0.390690 -0.412500 -0.434140 -0.455596 -0.476853 -0.497896 -0.518710 -0.539278 -0.559587 -0.579618 -0.599357 -0.618787 -0.637890 -0.656649 -0.675048 -0.693067 -0.710689 -0.727896 -0.744668 -0.760988 -0.776837 -0.792196 -0.807050 -0.821382 -0.835178 -0.848427 -0.861117 -0.873242 -0.884795 -0.895773 -0.906175 -0.916003 -0.925256 -0.933939 -0.942055 -0.949609 -0.956605 -0.977288 0.961527 0.945992 0.930672 0.915506 0.900408 0.885283 0.870023 0.854543 0.838789 0.822742 0.806373 0.789649 0.772568 0.755136 0.737349 0.719179 0.700613 0.681667 0.662352 0.642701 0.622748 0.602522 0.582045 0.561337 0.540414 0.519291 0.497979 0.476491 0.454836 0.433024 0.411063 0.388961 0.366726 0.344365 0.321884 0.299289 0.276588 0.253785 0.230886 0.207897 0.184822 0.161666 0.138435 0.115133 0.091764 0.068334 0.044846 0.021307 -0.002280 -0.025909 -0.049574 -0.073269 -0.096987 -0.120718 -0.144454 -0.168186 -0.191902 -0.215591 -0.239239 -0.262833 -0.286360 -0.309805 -0.333154 -0.356392 -0.379506 -0.402481 -0.425301 -0.447951 -0.470417 -0.492682 -0.514732 -0.536550 -0.558121 -0.579427 -0.600453 -0.621182 -0.641596 -0.661678 -0.681410 -0.700773 -0.719750 -0.738320 -0.756466 -0.774167 -0.791404 -0.808158 -0.824409 -0.840139 -0.855331 -0.869968 -0.884038 -0.897528 -0.910429 -0.922734 -0.934438 -0.945540 -0.956041 -0.965940 -0.975242 -0.983949 -0.992066 -0.999598 -1.006551 -0.995665 0.979044 0.962674 0.946557 0.930670 0.914936 0.899258 0.883537 0.867655 0.851521 0.835083 0.818326 0.801213 0.783714 0.765832 0.747574 0.728927 0.709855 0.690362 0.670465 0.650184 0.629560 0.608629 0.587417 0.565948 0.544240 0.522311 0.500175 0.477845 0.455334 0.432651 0.409807 0.386810 0.363669 0.340393 0.316988 0.293462 0.269820 0.246071 0.222220 0.198272 0.174233 0.150109 0.125904 0.101625 0.077276 0.052862 0.028388 0.003860 -0.020717 -0.045338 -0.069995 -0.094681 -0.119388 -0.144107 -0.168828 -0.193539 -0.218230 -0.242885 -0.267493 -0.292037 -0.316505 -0.340880 -0.365148 -0.389294 -0.413302 -0.437158 -0.460845 -0.484347 -0.507649 -0.530735 -0.553588 -0.576191 -0.598527 -0.620580 -0.642332 -0.663765 -0.684861 -0.705601 -0.725966 -0.745938 -0.765496 -0.784620 -0.803291 -0.821487 -0.839189 -0.856376 -0.873028 -0.889126 -0.904652 -0.919591 -0.933930 -0.947657 -0.960764 -0.973245 -0.985097 -0.996320 -1.006914 -1.016883 -1.026228 -1.034955 -1.043069 -1.050576 -1.057483 -1.014154 0.996665 0.979438 0.962488 0.945813 0.929373 0.913072 0.896809 0.880469 0.863937 0.847118 0.829964 0.812458 0.794557 0.776240 0.757511 0.738379 0.718809 0.698780 0.678306 0.657404 0.636114 0.614477 0.592527 0.570290 0.547790 0.525046 0.502076 0.478894 0.455513 0.431946 0.408205 0.384299 0.360238 0.336031 0.311686 0.287211 0.262614 0.237902 0.213080 0.188156 0.163136 0.138026 0.112830 0.087556 0.062208 0.036792 0.011313 -0.014222 -0.039808 -0.065438 -0.091105 -0.116801 -0.142515 -0.168239 -0.193961 -0.219669 -0.245349 -0.270988 -0.296569 -0.322078 -0.347500 -0.372820 -0.398020 -0.423087 -0.448002 -0.472751 -0.497317 -0.521683 -0.545833 -0.569750 -0.593416 -0.616814 -0.639926 -0.662734 -0.685220 -0.707364 -0.729148 -0.750552 -0.771557 -0.792141 -0.812284 -0.831965 -0.851163 -0.869856 -0.888022 -0.905641 -0.922692 -0.939155 -0.955013 -0.970251 -0.984855 -0.998815 -1.012124 -1.024778 -1.036774 -1.048114 -1.058799 -1.068832 -1.078218 -1.086962 -1.095069 -1.102547 -1.109404 -1.032759 1.014398 0.996305 0.978502 0.960999 0.943787 0.926798 0.909925 0.893056 0.876072 0.858856 0.841314 0.823403 0.805100 0.786362 0.767173 0.747551 0.727481 0.706925 0.685880 0.664367 0.642415 0.620073 0.597382 0.574373 0.551073 0.527506 0.503690 0.479644 0.455381 0.430918 0.406265 0.381436 0.356439 0.331286 0.305986 0.280547 0.254977 0.229284 0.203476 0.177558 0.151539 0.125424 0.099220 0.072932 0.046566 0.020130 -0.006372 -0.032933 -0.059547 -0.086205 -0.112901 -0.139623 -0.166363 -0.193110 -0.219850 -0.246570 -0.273256 -0.299891 -0.326462 -0.352950 -0.379342 -0.405619 -0.431766 -0.457765 -0.483601 -0.509257 -0.534714 -0.559956 -0.584965 -0.609724 -0.634214 -0.658417 -0.682314 -0.705886 -0.729113 -0.751977 -0.774456 -0.796530 -0.818179 -0.839380 -0.860112 -0.880352 -0.900079 -0.919269 -0.937901 -0.955952 -0.973400 -0.990226 -1.006413 -1.021945 -1.036812 -1.051002 -1.064510 -1.077333 -1.089470 -1.100924 -1.111697 -1.121792 -1.131216 -1.139973 -1.148070 -1.155516 -1.162319 -1.051485 1.032245 1.013281 0.994615 0.976263 0.958232 0.940493 0.922950 0.905490 0.887987 0.870325 0.852385 0.834074 0.815356 0.796201 0.776569 0.756458 0.735882 0.714802 0.693195 0.671076 0.648469 0.625424 0.601989 0.578202 0.554096 0.529696 0.505025 0.480103 0.454947 0.429573 0.403996 0.378228 0.352282 0.326167 0.299895 0.273475 0.246916 0.220225 0.193412 0.166484 0.139448 0.112310 0.085078 0.057758 0.030357 0.002881 -0.024663 -0.052269 -0.079928 -0.107634 -0.135375 -0.163143 -0.190926 -0.218712 -0.246487 -0.274235 -0.301942 -0.329591 -0.357165 -0.384648 -0.412023 -0.439272 -0.466379 -0.493326 -0.520096 -0.546670 -0.573032 -0.599162 -0.625042 -0.650654 -0.675978 -0.700996 -0.725687 -0.750032 -0.774010 -0.797600 -0.820782 -0.843533 -0.865831 -0.887654 -0.908978 -0.929781 -0.950038 -0.969727 -0.988824 -1.007305 -1.025149 -1.042337 -1.058850 -1.074675 -1.089801 -1.104218 -1.117922 -1.130912 -1.143189 -1.154754 -1.165612 -1.175767 -1.185224 -1.193992 -1.202077 -1.209487 -1.216233 -1.070335 1.050209 1.030368 1.010832 0.991619 0.972745 0.954203 0.935933 0.917824 0.899747 0.881575 0.863195 0.844482 0.825348 0.805766 0.785699 0.765111 0.744023 0.722417 0.700256 0.677534 0.654279 0.630533 0.606353 0.581785 0.556865 0.531624 0.506088 0.480279 0.454217 0.427920 0.401404 0.374683 0.347771 0.320680 0.293420 0.266002 0.238436 0.210732 0.182897 0.154939 0.126868 0.098689 0.070411 0.042041 0.013585 -0.014949 -0.043554 -0.072223 -0.100948 -0.129718 -0.158525 -0.187356 -0.216200 -0.245042 -0.273868 -0.302661 -0.331405 -0.360082 -0.388676 -0.417168 -0.445540 -0.473776 -0.501857 -0.529765 -0.557482 -0.584989 -0.612267 -0.639297 -0.666060 -0.692536 -0.718706 -0.744549 -0.770045 -0.795171 -0.819908 -0.844233 -0.868124 -0.891557 -0.914511 -0.936960 -0.958881 -0.980249 -1.001039 -1.021228 -1.040790 -1.059701 -1.077940 -1.095487 -1.112325 -1.128440 -1.143822 -1.158464 -1.172362 -1.185517 -1.197931 -1.209605 -1.220546 -1.230758 -1.240247 -1.249023 -1.257092 -1.264464 -1.271149 -1.089309 1.068293 1.047567 1.027154 1.007073 0.987341 0.967964 0.948914 0.930100 0.911396 0.892665 0.873784 0.854636 0.835090 0.815073 0.794565 0.773515 0.751918 0.729780 0.707066 0.683748 0.659851 0.635407 0.610482 0.585127 0.559387 0.533296 0.506885 0.480177 0.453197 0.425964 0.398496 0.370808 0.342915 0.314830 0.286566 0.258134 0.229545 0.200808 0.171933 0.142929 0.113804 0.084567 0.055224 0.025784 -0.003745 -0.033356 -0.063042 -0.092793 -0.122601 -0.152455 -0.182345 -0.212258 -0.242179 -0.272095 -0.301989 -0.331842 -0.361639 -0.391360 -0.420988 -0.450504 -0.479890 -0.509127 -0.538196 -0.567079 -0.595757 -0.624209 -0.652417 -0.680359 -0.708017 -0.735370 -0.762396 -0.789075 -0.815384 -0.841302 -0.866806 -0.891873 -0.916480 -0.940603 -0.964217 -0.987297 -1.009818 -1.031755 -1.053080 -1.073770 -1.093798 -1.113139 -1.131772 -1.149677 -1.166837 -1.183241 -1.198877 -1.213742 -1.227833 -1.241151 -1.253699 -1.265481 -1.276502 -1.286769 -1.296288 -1.305069 -1.313120 -1.320450 -1.327071 -1.108406 1.086496 1.064880 1.043582 1.022624 1.002025 0.981795 0.961925 0.942357 0.922972 0.903635 0.884204 0.864566 0.844587 0.824139 0.803178 0.781670 0.759574 0.736900 0.713629 0.689724 0.665186 0.640050 0.614378 0.588235 0.561668 0.534719 0.507422 0.479806 0.451895 0.423712 0.395277 0.366607 0.337718 0.308624 0.279340 0.249877 0.220247 0.190461 0.160528 0.130459 0.100262 0.069946 0.039521 0.008993 -0.021629 -0.052337 -0.083121 -0.113973 -0.144884 -0.175841 -0.206832 -0.237843 -0.268860 -0.299867 -0.330844 -0.361775 -0.392640 -0.423421 -0.454099 -0.484654 -0.515068 -0.545321 -0.575394 -0.605266 -0.634918 -0.664329 -0.693479 -0.722347 -0.750912 -0.779152 -0.807046 -0.834571 -0.861704 -0.888422 -0.914702 -0.940520 -0.965850 -0.990668 -1.014949 -1.038665 -1.061790 -1.084298 -1.106161 -1.127353 -1.147847 -1.167618 -1.186644 -1.204905 -1.222387 -1.239077 -1.254966 -1.270052 -1.284335 -1.297815 -1.310496 -1.322384 -1.333484 -1.343804 -1.353350 -1.362134 -1.370163 -1.377449 -1.384002 -1.127620 1.104815 1.082304 1.060116 1.038273 1.016798 0.995703 0.974988 0.954622 0.934507 0.914514 0.894493 0.874314 0.853858 0.832973 0.811556 0.789581 0.766995 0.743787 0.719956 0.695465 0.670290 0.644466 0.618049 0.591112 0.563713 0.535898 0.507706 0.479169 0.450315 0.421170 0.391754 0.362086 0.332186 0.302067 0.271746 0.241235 0.210546 0.179693 0.148684 0.117532 0.086245 0.054833 0.023305 -0.008330 -0.040064 -0.071886 -0.103789 -0.135761 -0.167793 -0.199870 -0.231981 -0.264109 -0.296239 -0.328353 -0.360431 -0.392455 -0.424405 -0.456262 -0.488005 -0.519615 -0.551072 -0.582356 -0.613446 -0.644322 -0.674962 -0.705346 -0.735452 -0.765258 -0.794742 -0.823882 -0.852654 -0.881035 -0.909002 -0.936531 -0.963595 -0.990171 -1.016232 -1.041753 -1.066705 -1.091062 -1.114796 -1.137878 -1.160281 -1.181976 -1.202937 -1.223137 -1.242556 -1.261173 -1.278975 -1.295950 -1.312091 -1.327398 -1.341870 -1.355511 -1.368325 -1.380317 -1.391494 -1.401864 -1.411436 -1.420220 -1.428225 -1.435463 -1.441946 -1.146936 1.123245 1.099837 1.076753 1.054019 1.031659 1.009689 0.988113 0.966917 0.946030 0.925331 0.904679 0.883921 0.862935 0.841582 0.819710 0.797258 0.774184 0.750451 0.726054 0.700973 0.675167 0.648659 0.621498 0.593765 0.565528 0.536839 0.507742 0.478273 0.448464 0.418342 0.387931 0.357251 0.326323 0.295164 0.263788 0.232212 0.200448 0.168509 0.136407 0.104153 0.071757 0.039230 0.006580 -0.026181 -0.059045 -0.092002 -0.125041 -0.158153 -0.191324 -0.224541 -0.257789 -0.291052 -0.324312 -0.357550 -0.390746 -0.423879 -0.456931 -0.489879 -0.522704 -0.555384 -0.587900 -0.620230 -0.652352 -0.684246 -0.715889 -0.747259 -0.778334 -0.809091 -0.839506 -0.869557 -0.899219 -0.928468 -0.957279 -0.985626 -1.013484 -1.040826 -1.067626 -1.093855 -1.119485 -1.144488 -1.168834 -1.192494 -1.215439 -1.237639 -1.259067 -1.279697 -1.299508 -1.318480 -1.336601 -1.353860 -1.370253 -1.385780 -1.400441 -1.414242 -1.427187 -1.439282 -1.450534 -1.460954 -1.470549 -1.479331 -1.487309 -1.494497 -1.500906 -1.166322 1.141771 1.117474 1.093491 1.069859 1.046606 1.023752 1.001304 0.979256 0.957561 0.936113 0.914783 0.893411 0.871855 0.849988 0.827647 0.804715 0.781145 0.756892 0.731930 0.706254 0.679824 0.652632 0.624729 0.596198 0.567117 0.537546 0.507535 0.477123 0.446346 0.415234 0.383813 0.352106 0.320135 0.287918 0.255472 0.222813 0.189955 0.156913 0.123699 0.090325 0.056801 0.023140 -0.010649 -0.044556 -0.078570 -0.112680 -0.146876 -0.181146 -0.215475 -0.249850 -0.284254 -0.318669 -0.353076 -0.387455 -0.421785 -0.456045 -0.490214 -0.524270 -0.558192 -0.591959 -0.625549 -0.658940 -0.692110 -0.725036 -0.757696 -0.790066 -0.822123 -0.853843 -0.885203 -0.916177 -0.946740 -0.976867 -1.006532 -1.035708 -1.064368 -1.092485 -1.120030 -1.146974 -1.173288 -1.198941 -1.223904 -1.248145 -1.271634 -1.294341 -1.316237 -1.337297 -1.357500 -1.376827 -1.395266 -1.412809 -1.429453 -1.445199 -1.460050 -1.474010 -1.487084 -1.499281 -1.510608 -1.521075 -1.530691 -1.539468 -1.547418 -1.554552 -1.560884 -1.185718 1.160367 1.135202 1.110324 1.085791 1.061638 1.037892 1.014561 0.991645 0.969115 0.946882 0.924829 0.902805 0.880648 0.858223 0.835378 0.811960 0.787887 0.763114 0.737592 0.711320 0.684262 0.656390 0.627747 0.598417 0.568486 0.538026 0.507090 0.475723 0.443966 0.411850 0.379405 0.346655 0.313625 0.280333 0.246800 0.213041 0.179072 0.144909 0.110564 0.076051 0.041382 0.006567 -0.028381 -0.063452 -0.098635 -0.133918 -0.169290 -0.204736 -0.240243 -0.275794 -0.311372 -0.346957 -0.382528 -0.418066 -0.453547 -0.488949 -0.524252 -0.559432 -0.594468 -0.629337 -0.664017 -0.698485 -0.732717 -0.766690 -0.800381 -0.833765 -0.866818 -0.899515 -0.931831 -0.963740 -0.995216 -1.026231 -1.056760 -1.086775 -1.116246 -1.145146 -1.173444 -1.201110 -1.228113 -1.254422 -1.280005 -1.304831 -1.328866 -1.352081 -1.374447 -1.395938 -1.416532 -1.436214 -1.454971 -1.472798 -1.489693 -1.505659 -1.520698 -1.534816 -1.548020 -1.560317 -1.571717 -1.582230 -1.591865 -1.600636 -1.608553 -1.615631 -1.621883 -1.205049 1.178980 1.152999 1.127244 1.101811 1.076754 1.052106 1.027882 1.004087 0.980702 0.957653 0.934838 0.912123 0.889331 0.866315 0.842924 0.819002 0.794422 0.769122 0.743046 0.716174 0.688486 0.659935 0.630556 0.600424 0.569639 0.538281 0.506410 0.474078 0.441328 0.408194 0.374710 0.340902 0.306796 0.272414 0.237776 0.202899 0.167802 0.132499 0.097006 0.061335 0.025500 -0.010487 -0.046613 -0.082868 -0.119239 -0.155714 -0.192280 -0.228922 -0.265625 -0.302370 -0.339140 -0.375912 -0.412666 -0.449378 -0.486027 -0.522590 -0.559043 -0.595364 -0.631530 -0.667517 -0.703303 -0.738863 -0.774172 -0.809208 -0.843944 -0.878356 -0.912418 -0.946105 -0.979390 -1.012245 -1.044645 -1.076561 -1.107964 -1.138827 -1.169118 -1.198808 -1.227867 -1.256262 -1.283960 -1.310930 -1.337138 -1.362551 -1.387136 -1.410861 -1.433696 -1.455618 -1.476605 -1.496641 -1.515717 -1.533828 -1.550975 -1.567159 -1.582387 -1.596663 -1.609995 -1.622393 -1.633864 -1.644421 -1.654073 -1.662835 -1.670718 -1.677736 -1.683906 -1.224275 1.197542 1.170823 1.144232 1.117911 1.091948 1.066393 1.041268 1.016581 0.992326 0.968437 0.944828 0.921380 0.897922 0.874283 0.850312 0.825852 0.800760 0.774923 0.748295 0.720823 0.692497 0.663274 0.633158 0.602223 0.570580 0.538316 0.505501 0.472192 0.438435 0.404270 0.369732 0.334851 0.299653 0.264163 0.228403 0.192391 0.156147 0.119687 0.083026 0.046179 0.009160 -0.028018 -0.065342 -0.102800 -0.140378 -0.178065 -0.215844 -0.253701 -0.291618 -0.329576 -0.367555 -0.405533 -0.443486 -0.481391 -0.519225 -0.556964 -0.594585 -0.632064 -0.669376 -0.706498 -0.743405 -0.780072 -0.816475 -0.852587 -0.888383 -0.923837 -0.958922 -0.993612 -1.027878 -1.061693 -1.095028 -1.127854 -1.160143 -1.191862 -1.222983 -1.253473 -1.283299 -1.312429 -1.340829 -1.368465 -1.395302 -1.421305 -1.446442 -1.470678 -1.493986 -1.516339 -1.537718 -1.558109 -1.577504 -1.595900 -1.613299 -1.629703 -1.645119 -1.659553 -1.673013 -1.685509 -1.697051 -1.707650 -1.717318 -1.726068 -1.733914 -1.740870 -1.746953 -1.243400 1.216008 1.188613 1.161256 1.134079 1.107216 1.080750 1.054717 1.029128 1.003989 0.979242 0.954811 0.930593 0.906435 0.882146 0.857566 0.832529 0.806903 0.780527 0.753339 0.725270 0.696306 0.666409 0.635557 0.603820 0.571312 0.538135 0.504366 0.470067 0.435291 0.400081 0.364474 0.328503 0.292198 0.255584 0.218684 0.181520 0.144111 0.106474 0.068627 0.030586 -0.007636 -0.046025 -0.084566 -0.123246 -0.162051 -0.200968 -0.239980 -0.279070 -0.318220 -0.357410 -0.396616 -0.435816 -0.474986 -0.514101 -0.553138 -0.592071 -0.630877 -0.669530 -0.708005 -0.746278 -0.784322 -0.822113 -0.859623 -0.896827 -0.933698 -0.970208 -1.006329 -1.042035 -1.077295 -1.112081 -1.146363 -1.180112 -1.213295 -1.245882 -1.277841 -1.309138 -1.339739 -1.369612 -1.398719 -1.427025 -1.454495 -1.481094 -1.506784 -1.531534 -1.555314 -1.578100 -1.599873 -1.620620 -1.640335 -1.659016 -1.676667 -1.693291 -1.708895 -1.723487 -1.737075 -1.749669 -1.761280 -1.771919 -1.781601 -1.790337 -1.798143 -1.805035 -1.811029 -1.262421 1.234377 1.206317 1.178265 1.150290 1.122549 1.095174 1.068226 1.041726 1.015692 0.990073 0.964797 0.939778 0.914884 0.889917 0.864699 0.839055 0.812862 0.785940 0.758186 0.729522 0.699919 0.669344 0.637756 0.605215 0.571839 0.537741 0.503008 0.467709 0.431900 0.395630 0.358940 0.321864 0.284434 0.246679 0.208622 0.170288 0.131695 0.092865 0.053813 0.014557 -0.024887 -0.064505 -0.104282 -0.144204 -0.184255 -0.224422 -0.264685 -0.305028 -0.345430 -0.385868 -0.426320 -0.466761 -0.507165 -0.547508 -0.587765 -0.627909 -0.667916 -0.707760 -0.747415 -0.786855 -0.826053 -0.864983 -0.903617 -0.941927 -0.979887 -1.017467 -1.054639 -1.091373 -1.127640 -1.163410 -1.198651 -1.233332 -1.267421 -1.300885 -1.333691 -1.365803 -1.397188 -1.427809 -1.457629 -1.486612 -1.514720 -1.541915 -1.568163 -1.593428 -1.617683 -1.640902 -1.663070 -1.684173 -1.704209 -1.723177 -1.741081 -1.757926 -1.773718 -1.788468 -1.802182 -1.814873 -1.826552 -1.837231 -1.846923 -1.855644 -1.863408 -1.870232 -1.876133 - - -# Torque coefficient - -0.021215 0.021724 0.022230 0.022734 0.023235 0.023733 0.024228 0.024720 0.025207 0.025690 0.026169 0.026642 0.027111 0.027573 0.028030 0.028480 0.028923 0.029359 0.029788 0.030208 0.030620 0.031023 0.031417 0.031801 0.032175 0.032539 0.032891 0.033232 0.033562 0.033880 0.034184 0.034476 0.034755 0.035020 0.035271 0.035507 0.035728 0.035935 0.036126 0.036301 0.036460 0.036602 0.036729 0.036838 0.036931 0.037006 0.037065 0.037106 0.037129 0.037135 0.037124 0.037095 0.037048 0.036983 0.036901 0.036801 0.036684 0.036549 0.036398 0.036229 0.036043 0.035841 0.035622 0.035387 0.035136 0.034870 0.034589 0.034293 0.033983 0.033659 0.033320 0.032969 0.032605 0.032228 0.031839 0.031438 0.031025 0.030601 0.030167 0.029722 0.029267 0.028802 0.028328 0.027844 0.027352 0.026851 0.026342 0.025825 0.025299 0.024767 0.024227 0.023680 0.023126 0.022565 0.021998 0.021425 0.020846 0.020261 0.019670 0.019073 0.018471 0.017864 0.017252 0.016635 -0.025284 0.025833 0.026377 0.026916 0.027450 0.027978 0.028500 0.029016 0.029524 0.030026 0.030519 0.031004 0.031480 0.031947 0.032404 0.032851 0.033288 0.033714 0.034128 0.034530 0.034919 0.035296 0.035659 0.036008 0.036343 0.036663 0.036968 0.037257 0.037530 0.037787 0.038027 0.038249 0.038455 0.038642 0.038811 0.038961 0.039093 0.039206 0.039300 0.039374 0.039430 0.039465 0.039481 0.039477 0.039453 0.039409 0.039345 0.039262 0.039158 0.039036 0.038893 0.038732 0.038551 0.038352 0.038135 0.037899 0.037645 0.037374 0.037086 0.036782 0.036461 0.036125 0.035773 0.035406 0.035025 0.034630 0.034222 0.033800 0.033365 0.032918 0.032460 0.031989 0.031508 0.031016 0.030514 0.030001 0.029479 0.028948 0.028407 0.027858 0.027301 0.026735 0.026162 0.025581 0.024993 0.024397 0.023795 0.023186 0.022571 0.021949 0.021322 0.020688 0.020049 0.019404 0.018754 0.018098 0.017437 0.016770 0.016099 0.015423 0.014742 0.014056 0.013365 0.012671 -0.029439 0.030016 0.030584 0.031145 0.031697 0.032240 0.032773 0.033296 0.033808 0.034310 0.034800 0.035277 0.035742 0.036193 0.036631 0.037055 0.037463 0.037856 0.038234 0.038595 0.038939 0.039266 0.039575 0.039865 0.040137 0.040390 0.040624 0.040837 0.041031 0.041203 0.041355 0.041486 0.041596 0.041683 0.041750 0.041794 0.041816 0.041816 0.041794 0.041750 0.041683 0.041595 0.041484 0.041352 0.041199 0.041024 0.040828 0.040612 0.040376 0.040119 0.039843 0.039549 0.039236 0.038905 0.038556 0.038191 0.037809 0.037411 0.036997 0.036569 0.036126 0.035669 0.035198 0.034715 0.034219 0.033711 0.033191 0.032660 0.032118 0.031566 0.031004 0.030432 0.029851 0.029260 0.028661 0.028054 0.027439 0.026816 0.026185 0.025548 0.024903 0.024251 0.023593 0.022929 0.022258 0.021581 0.020899 0.020210 0.019516 0.018816 0.018110 0.017399 0.016683 0.015962 0.015235 0.014504 0.013767 0.013026 0.012280 0.011530 0.010775 0.010016 0.009253 0.008486 -0.033595 0.034185 0.034763 0.035329 0.035883 0.036423 0.036950 0.037463 0.037962 0.038445 0.038912 0.039362 0.039796 0.040211 0.040609 0.040988 0.041347 0.041687 0.042006 0.042304 0.042582 0.042837 0.043071 0.043282 0.043470 0.043635 0.043776 0.043894 0.043988 0.044057 0.044102 0.044123 0.044119 0.044091 0.044038 0.043960 0.043859 0.043733 0.043584 0.043411 0.043216 0.042997 0.042757 0.042494 0.042210 0.041906 0.041581 0.041236 0.040873 0.040490 0.040090 0.039672 0.039238 0.038787 0.038320 0.037839 0.037342 0.036832 0.036308 0.035771 0.035221 0.034660 0.034087 0.033502 0.032907 0.032302 0.031687 0.031062 0.030428 0.029786 0.029135 0.028476 0.027809 0.027135 0.026453 0.025764 0.025069 0.024367 0.023658 0.022943 0.022222 0.021494 0.020761 0.020021 0.019276 0.018525 0.017769 0.017006 0.016239 0.015466 0.014687 0.013904 0.013115 0.012321 0.011523 0.010719 0.009911 0.009099 0.008282 0.007460 0.006635 0.005806 0.004973 0.004137 -0.037673 0.038259 0.038831 0.039386 0.039924 0.040445 0.040948 0.041433 0.041898 0.042344 0.042769 0.043173 0.043556 0.043916 0.044253 0.044568 0.044858 0.045125 0.045367 0.045583 0.045774 0.045940 0.046079 0.046192 0.046278 0.046338 0.046370 0.046376 0.046354 0.046306 0.046232 0.046131 0.046003 0.045850 0.045671 0.045467 0.045239 0.044986 0.044710 0.044411 0.044090 0.043746 0.043382 0.042996 0.042591 0.042167 0.041724 0.041263 0.040784 0.040289 0.039778 0.039251 0.038709 0.038153 0.037583 0.037000 0.036404 0.035796 0.035177 0.034546 0.033904 0.033253 0.032591 0.031920 0.031240 0.030551 0.029854 0.029149 0.028436 0.027716 0.026989 0.026254 0.025512 0.024764 0.024009 0.023248 0.022480 0.021706 0.020926 0.020140 0.019348 0.018550 0.017746 0.016936 0.016120 0.015299 0.014472 0.013639 0.012801 0.011958 0.011109 0.010255 0.009395 0.008531 0.007662 0.006789 0.005911 0.005028 0.004142 0.003252 0.002358 0.001462 0.000562 -0.000340 -0.041599 0.042167 0.042714 0.043241 0.043747 0.044230 0.044692 0.045130 0.045544 0.045934 0.046299 0.046639 0.046952 0.047239 0.047498 0.047730 0.047934 0.048109 0.048256 0.048374 0.048463 0.048522 0.048552 0.048553 0.048525 0.048468 0.048382 0.048267 0.048125 0.047954 0.047757 0.047532 0.047282 0.047005 0.046704 0.046379 0.046029 0.045657 0.045262 0.044846 0.044409 0.043952 0.043475 0.042979 0.042465 0.041934 0.041386 0.040822 0.040243 0.039649 0.039041 0.038419 0.037784 0.037137 0.036477 0.035807 0.035125 0.034433 0.033731 0.033020 0.032299 0.031570 0.030832 0.030086 0.029332 0.028570 0.027802 0.027026 0.026242 0.025453 0.024656 0.023853 0.023043 0.022226 0.021404 0.020575 0.019739 0.018897 0.018049 0.017195 0.016335 0.015469 0.014596 0.013718 0.012833 0.011943 0.011047 0.010145 0.009237 0.008323 0.007405 0.006481 0.005552 0.004618 0.003680 0.002737 0.001790 0.000840 -0.000114 -0.001070 -0.002029 -0.002990 -0.003953 -0.004917 -0.045307 0.045838 0.046345 0.046827 0.047283 0.047713 0.048115 0.048490 0.048836 0.049153 0.049441 0.049699 0.049926 0.050123 0.050288 0.050422 0.050525 0.050596 0.050635 0.050643 0.050619 0.050564 0.050479 0.050363 0.050216 0.050041 0.049835 0.049602 0.049340 0.049051 0.048736 0.048395 0.048028 0.047637 0.047223 0.046786 0.046326 0.045846 0.045344 0.044823 0.044283 0.043725 0.043149 0.042556 0.041948 0.041323 0.040684 0.040031 0.039364 0.038684 0.037991 0.037287 0.036572 0.035846 0.035109 0.034363 0.033607 0.032842 0.032069 0.031287 0.030497 0.029699 0.028893 0.028080 0.027260 0.026433 0.025599 0.024758 0.023910 0.023055 0.022193 0.021325 0.020451 0.019569 0.018681 0.017786 0.016885 0.015977 0.015063 0.014142 0.013214 0.012280 0.011339 0.010392 0.009439 0.008479 0.007514 0.006542 0.005565 0.004582 0.003594 0.002601 0.001603 0.000601 -0.000405 -0.001415 -0.002428 -0.003444 -0.004462 -0.005482 -0.006503 -0.007524 -0.008546 -0.009568 -0.048734 0.049213 0.049664 0.050084 0.050475 0.050834 0.051161 0.051457 0.051719 0.051949 0.052145 0.052307 0.052435 0.052530 0.052591 0.052618 0.052612 0.052572 0.052500 0.052394 0.052257 0.052088 0.051888 0.051657 0.051397 0.051107 0.050789 0.050444 0.050071 0.049673 0.049250 0.048802 0.048331 0.047837 0.047321 0.046785 0.046228 0.045651 0.045056 0.044443 0.043813 0.043167 0.042504 0.041827 0.041136 0.040430 0.039712 0.038981 0.038238 0.037484 0.036719 0.035943 0.035158 0.034363 0.033559 0.032746 0.031925 0.031095 0.030258 0.029412 0.028560 0.027700 0.026832 0.025957 0.025075 0.024186 0.023290 0.022387 0.021477 0.020560 0.019636 0.018704 0.017766 0.016820 0.015868 0.014908 0.013941 0.012966 0.011985 0.010997 0.010001 0.008999 0.007990 0.006974 0.005951 0.004923 0.003888 0.002847 0.001801 0.000749 -0.000307 -0.001368 -0.002433 -0.003502 -0.004573 -0.005648 -0.006725 -0.007803 -0.008882 -0.009962 -0.011042 -0.012120 -0.013197 -0.014272 -0.051823 0.052235 0.052614 0.052959 0.053269 0.053544 0.053783 0.053986 0.054154 0.054286 0.054381 0.054441 0.054465 0.054454 0.054408 0.054327 0.054211 0.054062 0.053880 0.053665 0.053419 0.053141 0.052833 0.052496 0.052129 0.051736 0.051315 0.050868 0.050397 0.049901 0.049381 0.048839 0.048276 0.047691 0.047087 0.046463 0.045821 0.045161 0.044484 0.043791 0.043083 0.042360 0.041622 0.040872 0.040108 0.039333 0.038545 0.037747 0.036938 0.036118 0.035289 0.034451 0.033603 0.032747 0.031883 0.031010 0.030129 0.029241 0.028344 0.027441 0.026529 0.025610 0.024684 0.023750 0.022809 0.021860 0.020904 0.019940 0.018968 0.017989 0.017002 0.016008 0.015005 0.013995 0.012977 0.011952 0.010918 0.009877 0.008829 0.007772 0.006709 0.005638 0.004560 0.003475 0.002384 0.001287 0.000183 -0.000926 -0.002040 -0.003159 -0.004283 -0.005410 -0.006540 -0.007674 -0.008809 -0.009946 -0.011084 -0.012222 -0.013360 -0.014497 -0.015631 -0.016763 -0.017892 -0.019017 -0.054522 0.054855 0.055150 0.055408 0.055628 0.055810 0.055954 0.056060 0.056128 0.056159 0.056153 0.056110 0.056031 0.055916 0.055765 0.055580 0.055361 0.055109 0.054825 0.054508 0.054162 0.053785 0.053380 0.052946 0.052486 0.052000 0.051488 0.050953 0.050393 0.049812 0.049208 0.048584 0.047940 0.047276 0.046594 0.045895 0.045178 0.044446 0.043698 0.042936 0.042159 0.041369 0.040567 0.039752 0.038926 0.038088 0.037240 0.036382 0.035514 0.034637 0.033750 0.032855 0.031952 0.031040 0.030119 0.029191 0.028255 0.027311 0.026359 0.025399 0.024431 0.023455 0.022471 0.021479 0.020479 0.019471 0.018455 0.017430 0.016397 0.015355 0.014305 0.013247 0.012180 0.011105 0.010022 0.008930 0.007829 0.006721 0.005604 0.004480 0.003348 0.002209 0.001062 -0.000091 -0.001251 -0.002417 -0.003588 -0.004765 -0.005946 -0.007132 -0.008321 -0.009513 -0.010708 -0.011904 -0.013101 -0.014298 -0.015495 -0.016690 -0.017884 -0.019074 -0.020261 -0.021444 -0.022620 -0.023791 -0.056794 0.057040 0.057246 0.057412 0.057539 0.057626 0.057675 0.057684 0.057655 0.057589 0.057484 0.057344 0.057167 0.056954 0.056707 0.056427 0.056113 0.055768 0.055391 0.054985 0.054550 0.054086 0.053595 0.053078 0.052536 0.051969 0.051378 0.050765 0.050130 0.049473 0.048797 0.048101 0.047387 0.046655 0.045905 0.045140 0.044359 0.043563 0.042754 0.041930 0.041094 0.040246 0.039386 0.038514 0.037632 0.036740 0.035838 0.034926 0.034005 0.033075 0.032136 0.031189 0.030233 0.029268 0.028296 0.027314 0.026325 0.025326 0.024320 0.023305 0.022281 0.021248 0.020207 0.019157 0.018098 0.017031 0.015954 0.014868 0.013773 0.012668 0.011555 0.010432 0.009300 0.008159 0.007009 0.005850 0.004683 0.003506 0.002321 0.001129 -0.000072 -0.001280 -0.002495 -0.003717 -0.004945 -0.006179 -0.007418 -0.008662 -0.009910 -0.011161 -0.012414 -0.013670 -0.014927 -0.016184 -0.017441 -0.018696 -0.019949 -0.021200 -0.022446 -0.023688 -0.024924 -0.026153 -0.027375 -0.028588 -0.058622 0.058780 0.058897 0.058974 0.059011 0.059007 0.058965 0.058883 0.058763 0.058606 0.058412 0.058182 0.057917 0.057618 0.057285 0.056920 0.056524 0.056097 0.055641 0.055157 0.054645 0.054106 0.053542 0.052952 0.052339 0.051702 0.051043 0.050363 0.049662 0.048941 0.048201 0.047443 0.046668 0.045876 0.045068 0.044245 0.043408 0.042557 0.041693 0.040816 0.039927 0.039027 0.038116 0.037194 0.036262 0.035320 0.034368 0.033407 0.032437 0.031458 0.030470 0.029473 0.028467 0.027451 0.026427 0.025394 0.024352 0.023300 0.022240 0.021170 0.020090 0.019001 0.017903 0.016794 0.015676 0.014548 0.013410 0.012262 0.011104 0.009936 0.008758 0.007570 0.006372 0.005165 0.003947 0.002721 0.001485 0.000240 -0.001013 -0.002275 -0.003545 -0.004822 -0.006106 -0.007397 -0.008693 -0.009995 -0.011301 -0.012611 -0.013924 -0.015239 -0.016556 -0.017874 -0.019191 -0.020508 -0.021822 -0.023134 -0.024442 -0.025744 -0.027041 -0.028332 -0.029614 -0.030887 -0.032150 -0.033403 -0.060009 0.060085 0.060119 0.060113 0.060066 0.059980 0.059855 0.059692 0.059491 0.059254 0.058982 0.058674 0.058333 0.057959 0.057553 0.057117 0.056650 0.056154 0.055630 0.055079 0.054502 0.053899 0.053271 0.052619 0.051945 0.051248 0.050530 0.049792 0.049034 0.048258 0.047463 0.046651 0.045823 0.044979 0.044120 0.043247 0.042360 0.041461 0.040548 0.039624 0.038688 0.037742 0.036784 0.035816 0.034838 0.033851 0.032853 0.031846 0.030829 0.029803 0.028767 0.027722 0.026666 0.025602 0.024527 0.023442 0.022348 0.021243 0.020129 0.019003 0.017868 0.016722 0.015565 0.014398 0.013219 0.012030 0.010830 0.009619 0.008397 0.007164 0.005921 0.004667 0.003402 0.002126 0.000841 -0.000454 -0.001759 -0.003073 -0.004396 -0.005728 -0.007067 -0.008413 -0.009766 -0.011125 -0.012490 -0.013858 -0.015231 -0.016606 -0.017984 -0.019363 -0.020742 -0.022120 -0.023497 -0.024871 -0.026242 -0.027607 -0.028967 -0.030320 -0.031665 -0.033001 -0.034327 -0.035642 -0.036944 -0.038232 -0.060972 0.060974 0.060935 0.060856 0.060738 0.060580 0.060385 0.060153 0.059884 0.059580 0.059241 0.058870 0.058465 0.058029 0.057563 0.057066 0.056540 0.055987 0.055406 0.054798 0.054165 0.053508 0.052826 0.052122 0.051395 0.050647 0.049879 0.049091 0.048284 0.047459 0.046617 0.045758 0.044884 0.043995 0.043091 0.042174 0.041244 0.040300 0.039345 0.038378 0.037400 0.036411 0.035411 0.034401 0.033380 0.032349 0.031308 0.030256 0.029194 0.028122 0.027040 0.025947 0.024843 0.023729 0.022604 0.021468 0.020321 0.019163 0.017993 0.016812 0.015620 0.014416 0.013200 0.011972 0.010733 0.009481 0.008218 0.006943 0.005655 0.004357 0.003046 0.001724 0.000391 -0.000953 -0.002307 -0.003672 -0.005047 -0.006431 -0.007824 -0.009226 -0.010635 -0.012050 -0.013472 -0.014900 -0.016332 -0.017767 -0.019206 -0.020646 -0.022087 -0.023528 -0.024968 -0.026406 -0.027840 -0.029271 -0.030695 -0.032113 -0.033523 -0.034925 -0.036316 -0.037695 -0.039063 -0.040416 -0.041755 -0.043077 -0.061535 0.061476 0.061378 0.061240 0.061063 0.060848 0.060597 0.060309 0.059986 0.059628 0.059238 0.058814 0.058359 0.057872 0.057356 0.056810 0.056236 0.055635 0.055006 0.054352 0.053673 0.052969 0.052243 0.051493 0.050722 0.049931 0.049119 0.048289 0.047440 0.046573 0.045690 0.044791 0.043877 0.042948 0.042005 0.041048 0.040079 0.039097 0.038103 0.037097 0.036080 0.035052 0.034012 0.032961 0.031900 0.030827 0.029743 0.028648 0.027542 0.026425 0.025296 0.024156 0.023003 0.021840 0.020664 0.019476 0.018275 0.017063 0.015838 0.014600 0.013349 0.012086 0.010810 0.009521 0.008219 0.006904 0.005576 0.004235 0.002881 0.001515 0.000136 -0.001254 -0.002657 -0.004071 -0.005496 -0.006931 -0.008377 -0.009832 -0.011295 -0.012767 -0.014246 -0.015731 -0.017222 -0.018717 -0.020216 -0.021718 -0.023222 -0.024726 -0.026230 -0.027732 -0.029232 -0.030728 -0.032219 -0.033704 -0.035181 -0.036650 -0.038109 -0.039557 -0.040992 -0.042413 -0.043820 -0.045210 -0.046583 -0.047938 -0.061728 0.061625 0.061482 0.061301 0.061081 0.060825 0.060531 0.060202 0.059839 0.059441 0.059010 0.058546 0.058051 0.057526 0.056970 0.056385 0.055772 0.055132 0.054465 0.053772 0.053055 0.052313 0.051549 0.050762 0.049954 0.049126 0.048277 0.047411 0.046526 0.045624 0.044705 0.043771 0.042821 0.041857 0.040879 0.039888 0.038883 0.037866 0.036837 0.035795 0.034742 0.033676 0.032599 0.031509 0.030408 0.029294 0.028169 0.027031 0.025880 0.024718 0.023542 0.022354 0.021152 0.019938 0.018710 0.017469 0.016215 0.014947 0.013665 0.012369 0.011059 0.009735 0.008397 0.007045 0.005679 0.004299 0.002905 0.001497 0.000075 -0.001360 -0.002808 -0.004269 -0.005742 -0.007227 -0.008723 -0.010230 -0.011747 -0.013273 -0.014807 -0.016350 -0.017899 -0.019453 -0.021013 -0.022576 -0.024142 -0.025710 -0.027278 -0.028846 -0.030412 -0.031974 -0.033533 -0.035086 -0.036633 -0.038171 -0.039700 -0.041218 -0.042724 -0.044216 -0.045694 -0.047156 -0.048600 -0.050026 -0.051432 -0.052816 -0.061581 0.061452 0.061283 0.061075 0.060829 0.060545 0.060225 0.059869 0.059477 0.059051 0.058591 0.058099 0.057575 0.057020 0.056434 0.055819 0.055176 0.054505 0.053808 0.053085 0.052336 0.051564 0.050769 0.049951 0.049112 0.048253 0.047374 0.046477 0.045561 0.044629 0.043679 0.042715 0.041734 0.040740 0.039731 0.038708 0.037671 0.036622 0.035559 0.034484 0.033395 0.032294 0.031179 0.030052 0.028911 0.027757 0.026589 0.025408 0.024213 0.023004 0.021781 0.020544 0.019293 0.018027 0.016746 0.015451 0.014141 0.012816 0.011476 0.010121 0.008750 0.007364 0.005963 0.004546 0.003115 0.001668 0.000206 -0.001271 -0.002762 -0.004267 -0.005786 -0.007318 -0.008862 -0.010419 -0.011988 -0.013567 -0.015156 -0.016754 -0.018359 -0.019972 -0.021591 -0.023216 -0.024844 -0.026475 -0.028107 -0.029740 -0.031373 -0.033003 -0.034631 -0.036253 -0.037870 -0.039480 -0.041080 -0.042671 -0.044250 -0.045817 -0.047369 -0.048905 -0.050424 -0.051925 -0.053406 -0.054865 -0.056303 -0.057717 -0.061123 0.060989 0.060812 0.060595 0.060338 0.060042 0.059708 0.059338 0.058930 0.058488 0.058011 0.057500 0.056956 0.056381 0.055775 0.055138 0.054473 0.053780 0.053059 0.052312 0.051539 0.050743 0.049923 0.049080 0.048216 0.047332 0.046428 0.045505 0.044563 0.043605 0.042629 0.041638 0.040630 0.039608 0.038571 0.037519 0.036453 0.035373 0.034279 0.033170 0.032047 0.030910 0.029759 0.028593 0.027413 0.026217 0.025007 0.023782 0.022542 0.021286 0.020015 0.018728 0.017426 0.016107 0.014773 0.013422 0.012055 0.010672 0.009272 0.007855 0.006422 0.004973 0.003507 0.002024 0.000525 -0.000990 -0.002521 -0.004067 -0.005629 -0.007206 -0.008797 -0.010401 -0.012019 -0.013649 -0.015290 -0.016942 -0.018603 -0.020273 -0.021950 -0.023634 -0.025324 -0.027017 -0.028714 -0.030412 -0.032112 -0.033810 -0.035506 -0.037199 -0.038887 -0.040569 -0.042244 -0.043909 -0.045563 -0.047206 -0.048835 -0.050448 -0.052045 -0.053625 -0.055184 -0.056723 -0.058239 -0.059732 -0.061200 -0.062643 -0.060387 0.060260 0.060093 0.059885 0.059633 0.059340 0.059007 0.058635 0.058224 0.057776 0.057292 0.056773 0.056219 0.055632 0.055013 0.054363 0.053683 0.052974 0.052236 0.051472 0.050682 0.049867 0.049028 0.048166 0.047283 0.046378 0.045453 0.044509 0.043546 0.042565 0.041566 0.040551 0.039520 0.038472 0.037409 0.036330 0.035236 0.034126 0.033000 0.031859 0.030702 0.029529 0.028341 0.027136 0.025916 0.024679 0.023425 0.022155 0.020869 0.019565 0.018245 0.016907 0.015552 0.014180 0.012790 0.011382 0.009957 0.008513 0.007052 0.005573 0.004076 0.002562 0.001029 -0.000521 -0.002089 -0.003674 -0.005275 -0.006893 -0.008527 -0.010177 -0.011841 -0.013519 -0.015210 -0.016913 -0.018628 -0.020353 -0.022087 -0.023830 -0.025579 -0.027335 -0.029094 -0.030858 -0.032623 -0.034389 -0.036155 -0.037918 -0.039678 -0.041434 -0.043182 -0.044923 -0.046655 -0.048375 -0.050083 -0.051776 -0.053454 -0.055115 -0.056756 -0.058377 -0.059977 -0.061553 -0.063104 -0.064630 -0.066129 -0.067600 -0.059409 0.059304 0.059157 0.058968 0.058737 0.058462 0.058143 0.057782 0.057379 0.056937 0.056456 0.055937 0.055382 0.054792 0.054168 0.053512 0.052824 0.052106 0.051358 0.050583 0.049781 0.048953 0.048100 0.047224 0.046325 0.045404 0.044462 0.043500 0.042519 0.041519 0.040500 0.039464 0.038410 0.037339 0.036251 0.035145 0.034023 0.032883 0.031727 0.030553 0.029361 0.028153 0.026927 0.025683 0.024421 0.023142 0.021844 0.020528 0.019194 0.017842 0.016470 0.015081 0.013672 0.012244 0.010797 0.009331 0.007846 0.006341 0.004817 0.003274 0.001712 0.000130 -0.001471 -0.003090 -0.004728 -0.006384 -0.008058 -0.009749 -0.011457 -0.013180 -0.014918 -0.016671 -0.018436 -0.020214 -0.022003 -0.023802 -0.025609 -0.027425 -0.029247 -0.031073 -0.032904 -0.034737 -0.036572 -0.038406 -0.040238 -0.042066 -0.043890 -0.045707 -0.047517 -0.049316 -0.051105 -0.052880 -0.054641 -0.056385 -0.058111 -0.059818 -0.061504 -0.063167 -0.064805 -0.066419 -0.068005 -0.069563 -0.071092 -0.072591 -0.058207 0.058143 0.058032 0.057874 0.057672 0.057426 0.057134 0.056797 0.056414 0.055988 0.055520 0.055011 0.054463 0.053878 0.053256 0.052601 0.051911 0.051190 0.050439 0.049658 0.048849 0.048013 0.047151 0.046264 0.045354 0.044421 0.043465 0.042489 0.041491 0.040474 0.039437 0.038381 0.037306 0.036212 0.035100 0.033968 0.032818 0.031648 0.030460 0.029253 0.028027 0.026782 0.025517 0.024233 0.022930 0.021607 0.020264 0.018901 0.017518 0.016115 0.014692 0.013249 0.011785 0.010300 0.008795 0.007269 0.005722 0.004155 0.002566 0.000957 -0.000673 -0.002323 -0.003993 -0.005684 -0.007393 -0.009122 -0.010870 -0.012635 -0.014417 -0.016215 -0.018028 -0.019856 -0.021697 -0.023550 -0.025414 -0.027287 -0.029169 -0.031058 -0.032952 -0.034851 -0.036753 -0.038657 -0.040560 -0.042462 -0.044361 -0.046255 -0.048142 -0.050022 -0.051892 -0.053750 -0.055595 -0.057426 -0.059239 -0.061034 -0.062809 -0.064562 -0.066291 -0.067996 -0.069674 -0.071324 -0.072945 -0.074535 -0.076095 -0.077623 -0.056815 0.056798 0.056735 0.056625 0.056464 0.056255 0.055999 0.055695 0.055344 0.054945 0.054499 0.054009 0.053477 0.052904 0.052292 0.051643 0.050959 0.050241 0.049490 0.048709 0.047897 0.047057 0.046190 0.045297 0.044378 0.043435 0.042469 0.041480 0.040469 0.039436 0.038382 0.037307 0.036212 0.035095 0.033958 0.032800 0.031621 0.030422 0.029202 0.027961 0.026699 0.025416 0.024112 0.022787 0.021441 0.020073 0.018684 0.017273 0.015840 0.014386 0.012909 0.011411 0.009890 0.008347 0.006782 0.005195 0.003585 0.001953 0.000298 -0.001378 -0.003077 -0.004797 -0.006539 -0.008302 -0.010085 -0.011888 -0.013710 -0.015550 -0.017408 -0.019282 -0.021172 -0.023076 -0.024993 -0.026921 -0.028861 -0.030809 -0.032766 -0.034729 -0.036697 -0.038669 -0.040642 -0.042617 -0.044590 -0.046560 -0.048526 -0.050485 -0.052437 -0.054379 -0.056310 -0.058227 -0.060129 -0.062014 -0.063880 -0.065726 -0.067549 -0.069348 -0.071121 -0.072867 -0.074584 -0.076272 -0.077927 -0.079551 -0.081142 -0.082699 -0.055274 0.055306 0.055294 0.055236 0.055129 0.054970 0.054759 0.054496 0.054183 0.053820 0.053407 0.052945 0.052436 0.051882 0.051287 0.050651 0.049977 0.049267 0.048522 0.047744 0.046934 0.046094 0.045224 0.044327 0.043403 0.042453 0.041478 0.040478 0.039454 0.038407 0.037337 0.036243 0.035127 0.033988 0.032826 0.031641 0.030434 0.029204 0.027951 0.026676 0.025378 0.024057 0.022712 0.021345 0.019955 0.018541 0.017104 0.015644 0.014160 0.012653 0.011121 0.009567 0.007988 0.006385 0.004758 0.003108 0.001433 -0.000265 -0.001987 -0.003733 -0.005502 -0.007294 -0.009108 -0.010945 -0.012802 -0.014681 -0.016579 -0.018496 -0.020430 -0.022382 -0.024349 -0.026330 -0.028324 -0.030329 -0.032345 -0.034370 -0.036402 -0.038439 -0.040482 -0.042527 -0.044573 -0.046618 -0.048661 -0.050700 -0.052734 -0.054759 -0.056776 -0.058780 -0.060772 -0.062748 -0.064708 -0.066648 -0.068567 -0.070463 -0.072335 -0.074180 -0.075997 -0.077785 -0.079542 -0.081266 -0.082957 -0.084614 -0.086236 -0.087823 -0.053613 0.053700 0.053742 0.053739 0.053686 0.053583 0.053427 0.053215 0.052948 0.052627 0.052254 0.051828 0.051350 0.050823 0.050250 0.049633 0.048975 0.048277 0.047542 0.046771 0.045966 0.045129 0.044260 0.043361 0.042433 0.041478 0.040495 0.039486 0.038450 0.037389 0.036303 0.035191 0.034054 0.032892 0.031705 0.030493 0.029256 0.027995 0.026709 0.025398 0.024063 0.022702 0.021317 0.019906 0.018471 0.017010 0.015524 0.014013 0.012477 0.010915 0.009328 0.007715 0.006077 0.004413 0.002723 0.001008 -0.000733 -0.002499 -0.004291 -0.006107 -0.007948 -0.009813 -0.011702 -0.013614 -0.015547 -0.017503 -0.019478 -0.021473 -0.023485 -0.025514 -0.027559 -0.029618 -0.031690 -0.033774 -0.035867 -0.037968 -0.040077 -0.042190 -0.044307 -0.046426 -0.048545 -0.050663 -0.052776 -0.054885 -0.056986 -0.059079 -0.061160 -0.063228 -0.065281 -0.067317 -0.069334 -0.071329 -0.073302 -0.075249 -0.077169 -0.079061 -0.080922 -0.082752 -0.084548 -0.086311 -0.088038 -0.089729 -0.091383 -0.093001 -0.051843 0.051996 0.052101 0.052157 0.052162 0.052117 0.052017 0.051863 0.051650 0.051379 0.051050 0.050666 0.050227 0.049733 0.049188 0.048595 0.047957 0.047276 0.046555 0.045795 0.044998 0.044166 0.043300 0.042402 0.041472 0.040513 0.039523 0.038505 0.037458 0.036383 0.035280 0.034150 0.032992 0.031806 0.030594 0.029355 0.028088 0.026795 0.025475 0.024128 0.022754 0.021353 0.019925 0.018470 0.016988 0.015480 0.013944 0.012381 0.010790 0.009173 0.007528 0.005856 0.004156 0.002429 0.000675 -0.001106 -0.002915 -0.004751 -0.006613 -0.008502 -0.010416 -0.012356 -0.014321 -0.016309 -0.018320 -0.020353 -0.022407 -0.024481 -0.026572 -0.028681 -0.030805 -0.032943 -0.035094 -0.037256 -0.039427 -0.041606 -0.043792 -0.045982 -0.048175 -0.050368 -0.052561 -0.054751 -0.056937 -0.059115 -0.061286 -0.063445 -0.065592 -0.067724 -0.069839 -0.071934 -0.074009 -0.076060 -0.078086 -0.080085 -0.082054 -0.083993 -0.085899 -0.087771 -0.089608 -0.091409 -0.093172 -0.094899 -0.096587 -0.098237 -0.049982 0.050205 0.050380 0.050504 0.050574 0.050589 0.050549 0.050452 0.050297 0.050082 0.049805 0.049467 0.049071 0.048618 0.048107 0.047543 0.046930 0.046270 0.045565 0.044819 0.044032 0.043208 0.042347 0.041451 0.040521 0.039559 0.038563 0.037536 0.036478 0.035389 0.034270 0.033120 0.031941 0.030732 0.029493 0.028226 0.026929 0.025602 0.024247 0.022863 0.021450 0.020007 0.018536 0.017036 0.015507 0.013948 0.012361 0.010745 0.009099 0.007425 0.005721 0.003988 0.002226 0.000434 -0.001386 -0.003236 -0.005114 -0.007021 -0.008955 -0.010918 -0.012908 -0.014924 -0.016965 -0.019032 -0.021122 -0.023234 -0.025367 -0.027521 -0.029693 -0.031881 -0.034086 -0.036304 -0.038535 -0.040776 -0.043027 -0.045285 -0.047549 -0.049816 -0.052085 -0.054355 -0.056622 -0.058886 -0.061144 -0.063393 -0.065633 -0.067860 -0.070073 -0.072269 -0.074447 -0.076603 -0.078736 -0.080844 -0.082924 -0.084974 -0.086993 -0.088979 -0.090930 -0.092845 -0.094723 -0.096563 -0.098365 -0.100127 -0.101850 -0.103533 -0.048054 0.048346 0.048592 0.048788 0.048928 0.049011 0.049035 0.048999 0.048903 0.048745 0.048525 0.048240 0.047891 0.047481 0.047010 0.046480 0.045896 0.045260 0.044576 0.043846 0.043073 0.042258 0.041404 0.040511 0.039582 0.038616 0.037615 0.036580 0.035510 0.034407 0.033271 0.032102 0.030901 0.029668 0.028403 0.027106 0.025777 0.024418 0.023026 0.021604 0.020150 0.018666 0.017150 0.015603 0.014025 0.012416 0.010776 0.009105 0.007403 0.005670 0.003906 0.002110 0.000284 -0.001573 -0.003462 -0.005380 -0.007330 -0.009309 -0.011318 -0.013356 -0.015422 -0.017516 -0.019636 -0.021782 -0.023952 -0.026145 -0.028359 -0.030594 -0.032847 -0.035117 -0.037403 -0.039702 -0.042014 -0.044337 -0.046667 -0.049005 -0.051348 -0.053694 -0.056041 -0.058387 -0.060730 -0.063068 -0.065399 -0.067720 -0.070030 -0.072326 -0.074606 -0.076867 -0.079108 -0.081325 -0.083517 -0.085682 -0.087816 -0.089919 -0.091988 -0.094021 -0.096018 -0.097978 -0.099898 -0.101778 -0.103618 -0.105418 -0.107177 -0.108895 -0.046078 0.046439 0.046755 0.047021 0.047234 0.047389 0.047482 0.047511 0.047477 0.047379 0.047216 0.046987 0.046691 0.046327 0.045900 0.045409 0.044858 0.044250 0.043589 0.042878 0.042120 0.041317 0.040471 0.039582 0.038654 0.037686 0.036679 0.035635 0.034555 0.033437 0.032284 0.031096 0.029872 0.028614 0.027321 0.025995 0.024634 0.023240 0.021812 0.020350 0.018855 0.017327 0.015765 0.014171 0.012543 0.010882 0.009188 0.007461 0.005701 0.003908 0.002082 0.000223 -0.001669 -0.003594 -0.005552 -0.007542 -0.009564 -0.011618 -0.013702 -0.015817 -0.017961 -0.020134 -0.022335 -0.024561 -0.026812 -0.029087 -0.031383 -0.033700 -0.036036 -0.038389 -0.040757 -0.043139 -0.045533 -0.047937 -0.050349 -0.052768 -0.055191 -0.057616 -0.060042 -0.062466 -0.064885 -0.067299 -0.069704 -0.072098 -0.074479 -0.076844 -0.079192 -0.081519 -0.083823 -0.086103 -0.088354 -0.090576 -0.092765 -0.094921 -0.097041 -0.099123 -0.101167 -0.103171 -0.105134 -0.107055 -0.108936 -0.110774 -0.112571 -0.114326 -0.044075 0.044498 0.044882 0.045219 0.045503 0.045729 0.045895 0.045995 0.046027 0.045990 0.045886 0.045714 0.045474 0.045162 0.044781 0.044332 0.043818 0.043241 0.042607 0.041917 0.041176 0.040385 0.039548 0.038665 0.037737 0.036767 0.035756 0.034703 0.033610 0.032478 0.031308 0.030099 0.028853 0.027569 0.026249 0.024891 0.023498 0.022068 0.020602 0.019100 0.017563 0.015990 0.014382 0.012739 0.011060 0.009346 0.007596 0.005812 0.003993 0.002138 0.000248 -0.001676 -0.003636 -0.005630 -0.007658 -0.009721 -0.011817 -0.013947 -0.016109 -0.018302 -0.020526 -0.022779 -0.025061 -0.027369 -0.029703 -0.032061 -0.034441 -0.036841 -0.039260 -0.041697 -0.044149 -0.046615 -0.049092 -0.051579 -0.054074 -0.056575 -0.059079 -0.061585 -0.064090 -0.066593 -0.069090 -0.071580 -0.074060 -0.076528 -0.078981 -0.081417 -0.083833 -0.086227 -0.088595 -0.090937 -0.093249 -0.095528 -0.097774 -0.099983 -0.102154 -0.104286 -0.106377 -0.108427 -0.110434 -0.112399 -0.114320 -0.116199 -0.118035 -0.119828 -0.042076 0.042544 0.042987 0.043391 0.043747 0.044044 0.044281 0.044453 0.044555 0.044585 0.044542 0.044428 0.044243 0.043986 0.043654 0.043251 0.042777 0.042235 0.041629 0.040963 0.040240 0.039463 0.038635 0.037758 0.036832 0.035860 0.034843 0.033782 0.032677 0.031531 0.030342 0.029113 0.027843 0.026533 0.025184 0.023795 0.022367 0.020901 0.019397 0.017854 0.016273 0.014655 0.012999 0.011305 0.009574 0.007806 0.006000 0.004157 0.002276 0.000359 -0.001596 -0.003587 -0.005615 -0.007680 -0.009782 -0.011919 -0.014091 -0.016298 -0.018538 -0.020811 -0.023116 -0.025452 -0.027816 -0.030208 -0.032625 -0.035067 -0.037532 -0.040017 -0.042521 -0.045043 -0.047580 -0.050131 -0.052693 -0.055264 -0.057843 -0.060427 -0.063014 -0.065601 -0.068187 -0.070770 -0.073346 -0.075913 -0.078469 -0.081012 -0.083538 -0.086045 -0.088530 -0.090991 -0.093426 -0.095830 -0.098203 -0.100541 -0.102843 -0.105107 -0.107331 -0.109513 -0.111653 -0.113749 -0.115802 -0.117810 -0.119775 -0.121695 -0.123572 -0.125405 -0.040115 0.040611 0.041094 0.041552 0.041972 0.042342 0.042650 0.042892 0.043065 0.043164 0.043187 0.043134 0.043005 0.042802 0.042523 0.042167 0.041736 0.041231 0.040657 0.040016 0.039313 0.038551 0.037733 0.036861 0.035938 0.034964 0.033942 0.032872 0.031755 0.030593 0.029386 0.028136 0.026842 0.025505 0.024126 0.022705 0.021243 0.019740 0.018196 0.016611 0.014986 0.013321 0.011615 0.009870 0.008086 0.006261 0.004398 0.002494 0.000552 -0.001430 -0.003451 -0.005511 -0.007610 -0.009747 -0.011922 -0.014135 -0.016385 -0.018671 -0.020991 -0.023346 -0.025734 -0.028152 -0.030600 -0.033077 -0.035580 -0.038107 -0.040658 -0.043229 -0.045820 -0.048428 -0.051051 -0.053688 -0.056336 -0.058993 -0.061656 -0.064325 -0.066995 -0.069666 -0.072334 -0.074998 -0.077654 -0.080300 -0.082933 -0.085551 -0.088151 -0.090730 -0.093286 -0.095815 -0.098316 -0.100784 -0.103219 -0.105617 -0.107976 -0.110295 -0.112572 -0.114805 -0.116995 -0.119139 -0.121239 -0.123293 -0.125302 -0.127266 -0.129185 -0.131060 -0.038203 0.038719 0.039229 0.039725 0.040196 0.040628 0.041007 0.041320 0.041562 0.041731 0.041822 0.041833 0.041763 0.041615 0.041389 0.041083 0.040696 0.040230 0.039689 0.039075 0.038394 0.037648 0.036841 0.035975 0.035054 0.034079 0.033051 0.031972 0.030843 0.029665 0.028440 0.027167 0.025849 0.024485 0.023075 0.021622 0.020124 0.018582 0.016998 0.015370 0.013699 0.011986 0.010231 0.008433 0.006594 0.004712 0.002789 0.000824 -0.001182 -0.003230 -0.005319 -0.007449 -0.009619 -0.011831 -0.014082 -0.016372 -0.018701 -0.021067 -0.023469 -0.025907 -0.028378 -0.030881 -0.033415 -0.035977 -0.038567 -0.041181 -0.043819 -0.046478 -0.049156 -0.051852 -0.054563 -0.057287 -0.060022 -0.062766 -0.065516 -0.068270 -0.071026 -0.073781 -0.076532 -0.079278 -0.082015 -0.084741 -0.087452 -0.090147 -0.092822 -0.095474 -0.098101 -0.100700 -0.103267 -0.105800 -0.108297 -0.110756 -0.113173 -0.115548 -0.117880 -0.120166 -0.122406 -0.124600 -0.126748 -0.128849 -0.130904 -0.132913 -0.134876 -0.136794 -0.036343 0.036876 0.037406 0.037929 0.038438 0.038918 0.039358 0.039741 0.040054 0.040291 0.040449 0.040526 0.040519 0.040427 0.040253 0.039997 0.039657 0.039233 0.038727 0.038142 0.037482 0.036753 0.035958 0.035099 0.034180 0.033203 0.032170 0.031082 0.029940 0.028747 0.027502 0.026207 0.024863 0.023471 0.022031 0.020543 0.019009 0.017428 0.015802 0.014130 0.012413 0.010651 0.008844 0.006993 0.005097 0.003157 0.001174 -0.000854 -0.002926 -0.005041 -0.007199 -0.009401 -0.011645 -0.013932 -0.016260 -0.018630 -0.021039 -0.023487 -0.025973 -0.028495 -0.031051 -0.033640 -0.036261 -0.038910 -0.041587 -0.044290 -0.047016 -0.049764 -0.052532 -0.055317 -0.058117 -0.060930 -0.063753 -0.066585 -0.069423 -0.072264 -0.075106 -0.077947 -0.080783 -0.083612 -0.086431 -0.089238 -0.092029 -0.094801 -0.097552 -0.100278 -0.102977 -0.105646 -0.108281 -0.110880 -0.113440 -0.115960 -0.118437 -0.120869 -0.123256 -0.125596 -0.127889 -0.130134 -0.132331 -0.134480 -0.136583 -0.138638 -0.140647 -0.142611 -0.034535 0.035085 0.035632 0.036176 0.036712 0.037230 0.037718 0.038161 0.038542 0.038848 0.039073 0.039216 0.039272 0.039240 0.039120 0.038913 0.038620 0.038238 0.037768 0.037214 0.036578 0.035867 0.035084 0.034232 0.033316 0.032338 0.031299 0.030201 0.029046 0.027836 0.026572 0.025254 0.023885 0.022463 0.020991 0.019469 0.017898 0.016277 0.014608 0.012891 0.011126 0.009314 0.007455 0.005549 0.003596 0.001596 -0.000450 -0.002542 -0.004680 -0.006864 -0.009094 -0.011369 -0.013688 -0.016052 -0.018459 -0.020909 -0.023400 -0.025932 -0.028502 -0.031110 -0.033753 -0.036429 -0.039138 -0.041876 -0.044642 -0.047435 -0.050251 -0.053089 -0.055947 -0.058823 -0.061713 -0.064616 -0.067530 -0.070451 -0.073378 -0.076308 -0.079238 -0.082165 -0.085087 -0.088000 -0.090903 -0.093792 -0.096663 -0.099514 -0.102342 -0.105144 -0.107916 -0.110655 -0.113359 -0.116025 -0.118650 -0.121232 -0.123769 -0.126260 -0.128703 -0.131098 -0.133444 -0.135741 -0.137990 -0.140190 -0.142341 -0.144445 -0.146502 -0.148512 -0.032774 0.033343 0.033907 0.034469 0.035026 0.035574 0.036100 0.036591 0.037031 0.037404 0.037697 0.037904 0.038024 0.038053 0.037988 0.037832 0.037586 0.037247 0.036814 0.036292 0.035681 0.034988 0.034218 0.033374 0.032461 0.031481 0.030436 0.029329 0.028161 0.026934 0.025650 0.024309 0.022912 0.021461 0.019957 0.018399 0.016790 0.015128 0.013416 0.011652 0.009839 0.007975 0.006062 0.004100 0.002088 0.000027 -0.002082 -0.004240 -0.006446 -0.008701 -0.011003 -0.013353 -0.015749 -0.018191 -0.020679 -0.023211 -0.025786 -0.028402 -0.031058 -0.033753 -0.036484 -0.039249 -0.042047 -0.044875 -0.047732 -0.050616 -0.053524 -0.056454 -0.059403 -0.062371 -0.065353 -0.068348 -0.071353 -0.074365 -0.077382 -0.080402 -0.083421 -0.086436 -0.089445 -0.092445 -0.095432 -0.098404 -0.101357 -0.104288 -0.107194 -0.110071 -0.112918 -0.115729 -0.118503 -0.121236 -0.123926 -0.126572 -0.129170 -0.131720 -0.134221 -0.136673 -0.139074 -0.141425 -0.143726 -0.145978 -0.148181 -0.150335 -0.152441 -0.154500 -0.031056 0.031646 0.032230 0.032809 0.033385 0.033956 0.034513 0.035044 0.035532 0.035964 0.036322 0.036595 0.036777 0.036867 0.036859 0.036754 0.036554 0.036258 0.035865 0.035374 0.034790 0.034117 0.033360 0.032525 0.031614 0.030633 0.029582 0.028465 0.027283 0.026039 0.024734 0.023369 0.021945 0.020464 0.018926 0.017333 0.015684 0.013981 0.012224 0.010413 0.008550 0.006634 0.004666 0.002646 0.000574 -0.001549 -0.003724 -0.005949 -0.008225 -0.010551 -0.012928 -0.015353 -0.017828 -0.020351 -0.022920 -0.025536 -0.028195 -0.030898 -0.033642 -0.036424 -0.039245 -0.042100 -0.044989 -0.047909 -0.050858 -0.053834 -0.056835 -0.059858 -0.062901 -0.065962 -0.069037 -0.072125 -0.075223 -0.078328 -0.081437 -0.084547 -0.087657 -0.090761 -0.093859 -0.096946 -0.100019 -0.103075 -0.106111 -0.109123 -0.112108 -0.115063 -0.117984 -0.120868 -0.123713 -0.126515 -0.129271 -0.131981 -0.134642 -0.137253 -0.139814 -0.142323 -0.144781 -0.147187 -0.149543 -0.151848 -0.154103 -0.156309 -0.158466 -0.160577 -0.029375 0.029989 0.030595 0.031194 0.031789 0.032379 0.032962 0.033525 0.034054 0.034535 0.034952 0.035288 0.035533 0.035681 0.035732 0.035680 0.035526 0.035273 0.034919 0.034462 0.033905 0.033252 0.032510 0.031683 0.030776 0.029792 0.028736 0.027609 0.026413 0.025151 0.023825 0.022435 0.020983 0.019471 0.017899 0.016269 0.014580 0.012834 0.011031 0.009172 0.007258 0.005289 0.003264 0.001185 -0.000948 -0.003135 -0.005375 -0.007669 -0.010016 -0.012416 -0.014868 -0.017372 -0.019926 -0.022531 -0.025184 -0.027884 -0.030630 -0.033420 -0.036253 -0.039126 -0.042036 -0.044984 -0.047965 -0.050978 -0.054021 -0.057091 -0.060186 -0.063304 -0.066441 -0.069597 -0.072767 -0.075949 -0.079141 -0.082340 -0.085542 -0.088746 -0.091947 -0.095142 -0.098329 -0.101505 -0.104665 -0.107806 -0.110926 -0.114021 -0.117086 -0.120119 -0.123116 -0.126075 -0.128991 -0.131862 -0.134687 -0.137462 -0.140187 -0.142860 -0.145481 -0.148049 -0.150565 -0.153029 -0.155440 -0.157800 -0.160110 -0.162369 -0.164580 -0.166743 -0.027729 0.028369 0.029000 0.029621 0.030236 0.030845 0.031448 0.032039 0.032603 0.033126 0.033591 0.033986 0.034292 0.034500 0.034606 0.034608 0.034503 0.034292 0.033976 0.033554 0.033025 0.032394 0.031666 0.030848 0.029944 0.028959 0.027897 0.026759 0.025550 0.024270 0.022921 0.021506 0.020026 0.018482 0.016875 0.015207 0.013477 0.011687 0.009838 0.007930 0.005963 0.003939 0.001857 -0.000282 -0.002478 -0.004730 -0.007038 -0.009402 -0.011822 -0.014297 -0.016826 -0.019409 -0.022045 -0.024732 -0.027470 -0.030257 -0.033091 -0.035970 -0.038893 -0.041857 -0.044860 -0.047900 -0.050975 -0.054082 -0.057220 -0.060386 -0.063577 -0.066791 -0.070025 -0.073276 -0.076543 -0.079821 -0.083109 -0.086403 -0.089700 -0.092997 -0.096291 -0.099579 -0.102857 -0.106122 -0.109371 -0.112599 -0.115804 -0.118982 -0.122129 -0.125241 -0.128316 -0.131349 -0.134338 -0.137280 -0.140173 -0.143015 -0.145805 -0.148541 -0.151224 -0.153854 -0.156429 -0.158951 -0.161420 -0.163837 -0.166203 -0.168517 -0.170783 -0.173000 -0.026114 0.026783 0.027439 0.028085 0.028722 0.029351 0.029974 0.030587 0.031180 0.031740 0.032249 0.032692 0.033056 0.033322 0.033484 0.033539 0.033483 0.033315 0.033038 0.032650 0.032150 0.031541 0.030829 0.030020 0.029120 0.028134 0.027065 0.025917 0.024692 0.023393 0.022023 0.020582 0.019073 0.017496 0.015854 0.014146 0.012375 0.010540 0.008643 0.006685 0.004665 0.002585 0.000444 -0.001756 -0.004016 -0.006335 -0.008712 -0.011148 -0.013642 -0.016193 -0.018801 -0.021465 -0.024183 -0.026955 -0.029780 -0.032654 -0.035577 -0.038547 -0.041561 -0.044618 -0.047715 -0.050849 -0.054020 -0.057223 -0.060458 -0.063720 -0.067009 -0.070320 -0.073652 -0.077001 -0.080365 -0.083741 -0.087126 -0.090517 -0.093910 -0.097302 -0.100691 -0.104072 -0.107443 -0.110799 -0.114137 -0.117454 -0.120745 -0.124007 -0.127237 -0.130430 -0.133582 -0.136692 -0.139755 -0.142769 -0.145731 -0.148642 -0.151498 -0.154299 -0.157046 -0.159737 -0.162374 -0.164956 -0.167484 -0.169960 -0.172383 -0.174755 -0.177077 -0.179350 -0.024528 0.025226 0.025910 0.026582 0.027243 0.027894 0.028537 0.029171 0.029789 0.030380 0.030927 0.031414 0.031827 0.032150 0.032367 0.032473 0.032467 0.032343 0.032104 0.031750 0.031279 0.030694 0.029998 0.029198 0.028302 0.027314 0.026239 0.025080 0.023840 0.022523 0.021129 0.019662 0.018123 0.016513 0.014834 0.013087 0.011272 0.009392 0.007447 0.005436 0.003362 0.001225 -0.000976 -0.003239 -0.005564 -0.007951 -0.010399 -0.012908 -0.015477 -0.018106 -0.020794 -0.023540 -0.026343 -0.029201 -0.032113 -0.035077 -0.038091 -0.041152 -0.044260 -0.047410 -0.050602 -0.053833 -0.057100 -0.060401 -0.063733 -0.067095 -0.070482 -0.073892 -0.077324 -0.080772 -0.084236 -0.087711 -0.091194 -0.094683 -0.098174 -0.101663 -0.105147 -0.108624 -0.112088 -0.115536 -0.118966 -0.122372 -0.125750 -0.129098 -0.132411 -0.135686 -0.138918 -0.142104 -0.145242 -0.148329 -0.151363 -0.154343 -0.157266 -0.160134 -0.162946 -0.165701 -0.168400 -0.171045 -0.173634 -0.176169 -0.178652 -0.181083 -0.183463 -0.185794 -0.022967 0.023696 0.024410 0.025110 0.025797 0.026472 0.027136 0.027790 0.028430 0.029047 0.029627 0.030153 0.030610 0.030983 0.031254 0.031412 0.031454 0.031375 0.031174 0.030854 0.030414 0.029851 0.029172 0.028383 0.027490 0.026501 0.025419 0.024249 0.022994 0.021657 0.020240 0.018745 0.017175 0.015532 0.013815 0.012027 0.010170 0.008242 0.006247 0.004184 0.002055 -0.000141 -0.002403 -0.004730 -0.007122 -0.009578 -0.012098 -0.014682 -0.017328 -0.020036 -0.022806 -0.025636 -0.028524 -0.031470 -0.034471 -0.037526 -0.040632 -0.043786 -0.046988 -0.050234 -0.053523 -0.056851 -0.060216 -0.063616 -0.067048 -0.070510 -0.073997 -0.077509 -0.081041 -0.084590 -0.088154 -0.091730 -0.095313 -0.098902 -0.102491 -0.106079 -0.109661 -0.113233 -0.116793 -0.120335 -0.123856 -0.127353 -0.130820 -0.134255 -0.137653 -0.141010 -0.144323 -0.147588 -0.150802 -0.153963 -0.157069 -0.160119 -0.163112 -0.166048 -0.168926 -0.171746 -0.174510 -0.177218 -0.179870 -0.182467 -0.185011 -0.187502 -0.189942 -0.192333 -0.021432 0.022192 0.022937 0.023666 0.024380 0.025080 0.025767 0.026441 0.027102 0.027744 0.028352 0.028913 0.029409 0.029825 0.030146 0.030355 0.030444 0.030410 0.030249 0.029963 0.029552 0.029013 0.028352 0.027573 0.026684 0.025693 0.024605 0.023423 0.022152 0.020795 0.019354 0.017832 0.016230 0.014552 0.012797 0.010968 0.009065 0.007091 0.005044 0.002928 0.000741 -0.001514 -0.003839 -0.006231 -0.008691 -0.011217 -0.013811 -0.016470 -0.019195 -0.021984 -0.024837 -0.027752 -0.030728 -0.033763 -0.036854 -0.040001 -0.043200 -0.046450 -0.049747 -0.053091 -0.056477 -0.059904 -0.063369 -0.066870 -0.070403 -0.073966 -0.077556 -0.081169 -0.084803 -0.088455 -0.092122 -0.095799 -0.099484 -0.103174 -0.106864 -0.110551 -0.114232 -0.117902 -0.121558 -0.125195 -0.128810 -0.132398 -0.135956 -0.139479 -0.142963 -0.146404 -0.149798 -0.153142 -0.156434 -0.159671 -0.162851 -0.165972 -0.169036 -0.172041 -0.174987 -0.177875 -0.180704 -0.183477 -0.186193 -0.188854 -0.191460 -0.194014 -0.196516 -0.198968 -0.019921 0.020712 0.021487 0.022246 0.022989 0.023715 0.024427 0.025124 0.025805 0.026468 0.027102 0.027693 0.028225 0.028680 0.029046 0.029303 0.029439 0.029449 0.029328 0.029076 0.028693 0.028179 0.027536 0.026767 0.025883 0.024891 0.023795 0.022602 0.021314 0.019936 0.018471 0.016921 0.015287 0.013573 0.011779 0.009908 0.007959 0.005936 0.003838 0.001666 -0.000578 -0.002894 -0.005282 -0.007741 -0.010270 -0.012869 -0.015537 -0.018274 -0.021079 -0.023951 -0.026888 -0.029890 -0.032954 -0.036079 -0.039262 -0.042502 -0.045797 -0.049142 -0.052537 -0.055979 -0.059465 -0.062993 -0.066560 -0.070162 -0.073798 -0.077464 -0.081157 -0.084874 -0.088613 -0.092368 -0.096139 -0.099920 -0.103708 -0.107500 -0.111292 -0.115081 -0.118861 -0.122631 -0.126384 -0.130118 -0.133828 -0.137509 -0.141158 -0.144770 -0.148341 -0.151867 -0.155344 -0.158769 -0.162140 -0.165453 -0.168708 -0.171903 -0.175039 -0.178114 -0.181130 -0.184086 -0.186984 -0.189823 -0.192605 -0.195331 -0.198002 -0.200619 -0.203185 -0.205700 -0.018435 0.019255 0.020061 0.020851 0.021622 0.022377 0.023114 0.023834 0.024537 0.025220 0.025877 0.026495 0.027059 0.027550 0.027955 0.028257 0.028439 0.028492 0.028411 0.028193 0.027839 0.027350 0.026724 0.025967 0.025087 0.024093 0.022990 0.021784 0.020480 0.019082 0.017591 0.016011 0.014345 0.012594 0.010761 0.008846 0.006851 0.004778 0.002627 0.000399 -0.001904 -0.004282 -0.006735 -0.009262 -0.011862 -0.014534 -0.017279 -0.020094 -0.022980 -0.025936 -0.028959 -0.032049 -0.035203 -0.038419 -0.041696 -0.045031 -0.048422 -0.051865 -0.055359 -0.058901 -0.062488 -0.066118 -0.069787 -0.073494 -0.077234 -0.081004 -0.084802 -0.088625 -0.092469 -0.096330 -0.100205 -0.104092 -0.107985 -0.111881 -0.115776 -0.119667 -0.123550 -0.127420 -0.131272 -0.135104 -0.138910 -0.142686 -0.146427 -0.150130 -0.153789 -0.157401 -0.160962 -0.164469 -0.167920 -0.171311 -0.174642 -0.177912 -0.181121 -0.184269 -0.187356 -0.190383 -0.193349 -0.196257 -0.199106 -0.201899 -0.204636 -0.207319 -0.209950 -0.212530 -0.016978 0.017821 0.018656 0.019476 0.020278 0.021061 0.021825 0.022569 0.023295 0.023999 0.024677 0.025319 0.025911 0.026436 0.026877 0.027218 0.027444 0.027539 0.027497 0.027314 0.026989 0.026524 0.025916 0.025171 0.024295 0.023299 0.022189 0.020971 0.019650 0.018229 0.016713 0.015104 0.013404 0.011616 0.009742 0.007783 0.005740 0.003616 0.001411 -0.000874 -0.003237 -0.005679 -0.008198 -0.010794 -0.013465 -0.016213 -0.019035 -0.021931 -0.024899 -0.027940 -0.031050 -0.034230 -0.037475 -0.040785 -0.044157 -0.047588 -0.051076 -0.054619 -0.058213 -0.061857 -0.065546 -0.069280 -0.073053 -0.076865 -0.080710 -0.084587 -0.088492 -0.092422 -0.096372 -0.100341 -0.104323 -0.108316 -0.112315 -0.116317 -0.120317 -0.124312 -0.128298 -0.132270 -0.136223 -0.140154 -0.144057 -0.147929 -0.151764 -0.155558 -0.159307 -0.163007 -0.166653 -0.170243 -0.173774 -0.177245 -0.180654 -0.184001 -0.187285 -0.190507 -0.193666 -0.196764 -0.199802 -0.202779 -0.205697 -0.208559 -0.211364 -0.214114 -0.216812 -0.219459 -0.015549 0.016414 0.017274 0.018123 0.018955 0.019767 0.020558 0.021328 0.022076 0.022802 0.023501 0.024165 0.024783 0.025338 0.025811 0.026189 0.026454 0.026590 0.026586 0.026438 0.026142 0.025701 0.025112 0.024378 0.023507 0.022509 0.021392 0.020161 0.018822 0.017380 0.015837 0.014197 0.012463 0.010637 0.008721 0.006717 0.004626 0.002450 0.000190 -0.002153 -0.004578 -0.007084 -0.009670 -0.012337 -0.015082 -0.017905 -0.020806 -0.023784 -0.026837 -0.029964 -0.033163 -0.036433 -0.039771 -0.043176 -0.046643 -0.050172 -0.053760 -0.057403 -0.061099 -0.064846 -0.068640 -0.072478 -0.076358 -0.080276 -0.084229 -0.088214 -0.092227 -0.096265 -0.100324 -0.104401 -0.108492 -0.112593 -0.116699 -0.120808 -0.124915 -0.129016 -0.133106 -0.137181 -0.141236 -0.145268 -0.149270 -0.153238 -0.157169 -0.161056 -0.164896 -0.168684 -0.172416 -0.176091 -0.179705 -0.183256 -0.186744 -0.190169 -0.193530 -0.196827 -0.200061 -0.203232 -0.206342 -0.209391 -0.212380 -0.215311 -0.218186 -0.221005 -0.223771 -0.226487 -0.014147 0.015034 0.015915 0.016789 0.017650 0.018492 0.019311 0.020107 0.020880 0.021628 0.022347 0.023032 0.023673 0.024256 0.024760 0.025170 0.025471 0.025646 0.025680 0.025566 0.025299 0.024881 0.024311 0.023589 0.022723 0.021723 0.020598 0.019354 0.017997 0.016532 0.014962 0.013291 0.011522 0.009657 0.007699 0.005648 0.003508 0.001279 -0.001037 -0.003439 -0.005927 -0.008498 -0.011154 -0.013891 -0.016711 -0.019612 -0.022594 -0.025654 -0.028793 -0.032007 -0.035297 -0.038659 -0.042092 -0.045592 -0.049157 -0.052785 -0.056473 -0.060219 -0.064018 -0.067870 -0.071769 -0.075714 -0.079702 -0.083728 -0.087790 -0.091884 -0.096007 -0.100155 -0.104324 -0.108511 -0.112712 -0.116923 -0.121139 -0.125356 -0.129571 -0.133779 -0.137975 -0.142155 -0.146313 -0.150446 -0.154549 -0.158616 -0.162642 -0.166624 -0.170555 -0.174433 -0.178254 -0.182014 -0.185711 -0.189345 -0.192914 -0.196418 -0.199857 -0.203231 -0.206541 -0.209787 -0.212970 -0.216092 -0.219154 -0.222157 -0.225103 -0.227993 -0.230829 -0.233614 -0.012770 0.013680 0.014582 0.015478 0.016365 0.017235 0.018083 0.018906 0.019703 0.020474 0.021215 0.021920 0.022583 0.023190 0.023723 0.024164 0.024496 0.024707 0.024778 0.024697 0.024460 0.024065 0.023513 0.022803 0.021942 0.020940 0.019807 0.018549 0.017174 0.015685 0.014088 0.012385 0.010580 0.008676 0.006674 0.004577 0.002386 0.000103 -0.002270 -0.004733 -0.007284 -0.009922 -0.012648 -0.015458 -0.018354 -0.021334 -0.024397 -0.027542 -0.030767 -0.034072 -0.037453 -0.040908 -0.044436 -0.048034 -0.051698 -0.055427 -0.059217 -0.063066 -0.066971 -0.070928 -0.074935 -0.078989 -0.083085 -0.087221 -0.091393 -0.095599 -0.099833 -0.104092 -0.108374 -0.112672 -0.116984 -0.121306 -0.125633 -0.129961 -0.134285 -0.138601 -0.142905 -0.147191 -0.151454 -0.155690 -0.159894 -0.164061 -0.168185 -0.172262 -0.176287 -0.180256 -0.184165 -0.188012 -0.191795 -0.195512 -0.199163 -0.202748 -0.206267 -0.209719 -0.213106 -0.216429 -0.219688 -0.222885 -0.226021 -0.229097 -0.232115 -0.235077 -0.237986 -0.240843 - diff --git a/Tune_Cases/Cp_Ct_Cq.NREL5MW.txt b/Tune_Cases/Cp_Ct_Cq.NREL5MW.txt deleted file mode 100644 index 5d1dfb81..00000000 --- a/Tune_Cases/Cp_Ct_Cq.NREL5MW.txt +++ /dev/null @@ -1,165 +0,0 @@ -# ----- Rotor performance tables for the 5MW_Land wind turbine ----- -# ------------ Written on Dec-11-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.091629 0.094090 0.096514 0.098901 0.101250 0.103558 0.105826 0.108050 0.110232 0.112368 0.114459 0.116502 0.118497 0.120443 0.122338 0.124181 0.125970 0.127706 0.129385 0.131007 0.132570 0.134072 0.135514 0.136893 0.138207 0.139457 0.140640 0.141756 0.142804 0.143784 0.144696 0.145540 0.146319 0.147030 0.147676 0.148255 0.148769 0.149219 0.149605 0.149928 0.150188 0.150383 0.150515 0.150582 0.150587 0.150529 0.150409 0.150227 0.149981 0.149673 0.149302 0.148871 0.148380 0.147828 0.147217 0.146545 0.145811 0.145012 0.144149 0.143217 0.142214 0.141136 0.139979 0.138743 0.137424 0.136025 0.134547 0.132992 0.131362 0.129656 0.127872 0.126011 0.124072 0.122058 0.119971 0.117813 0.115588 0.113295 0.110934 0.108508 0.106015 0.103458 0.100837 0.098154 0.095410 0.092608 0.089752 0.086846 0.083892 0.080893 0.077851 0.074769 0.071649 0.068492 0.065301 0.062077 0.058822 0.055539 0.052227 0.048890 0.045528 0.042142 0.038734 0.035304 -0.116951 0.119633 0.122262 0.124837 0.127357 0.129822 0.132229 0.134577 0.136866 0.139093 0.141257 0.143357 0.145391 0.147359 0.149256 0.151083 0.152836 0.154515 0.156117 0.157641 0.159088 0.160454 0.161741 0.162950 0.164079 0.165130 0.166105 0.167003 0.167825 0.168571 0.169242 0.169838 0.170360 0.170805 0.171174 0.171466 0.171682 0.171819 0.171879 0.171861 0.171764 0.171588 0.171336 0.171008 0.170606 0.170128 0.169575 0.168945 0.168237 0.167448 0.166576 0.165617 0.164569 0.163426 0.162185 0.160846 0.159410 0.157879 0.156255 0.154538 0.152730 0.150828 0.148831 0.146743 0.144564 0.142300 0.139952 0.137521 0.135007 0.132410 0.129730 0.126968 0.124126 0.121205 0.118210 0.115142 0.112008 0.108810 0.105552 0.102237 0.098867 0.095445 0.091974 0.088456 0.084893 0.081287 0.077641 0.073957 0.070235 0.066479 0.062689 0.058868 0.055017 0.051137 0.047230 0.043296 0.039337 0.035354 0.031348 0.027320 0.023271 0.019201 0.015112 0.011004 -0.143862 0.146710 0.149490 0.152200 0.154839 0.157404 0.159895 0.162309 0.164643 0.166896 0.169066 0.171151 0.173150 0.175060 0.176880 0.178611 0.180251 0.181803 0.183265 0.184640 0.185928 0.187129 0.188241 0.189267 0.190205 0.191056 0.191818 0.192491 0.193072 0.193560 0.193953 0.194251 0.194452 0.194558 0.194569 0.194485 0.194306 0.194033 0.193665 0.193202 0.192641 0.191981 0.191217 0.190345 0.189362 0.188264 0.187047 0.185711 0.184260 0.182697 0.181024 0.179239 0.177341 0.175330 0.173207 0.170975 0.168638 0.166200 0.163663 0.161026 0.158290 0.155454 0.152519 0.149487 0.146359 0.143140 0.139836 0.136450 0.132987 0.129450 0.125842 0.122168 0.118428 0.114626 0.110765 0.106847 0.102873 0.098848 0.094773 0.090650 0.086481 0.082269 0.078015 0.073720 0.069388 0.065019 0.060615 0.056178 0.051708 0.047209 0.042680 0.038124 0.033540 0.028930 0.024295 0.019636 0.014953 0.010246 0.005517 0.000766 -0.004006 -0.008797 -0.013605 -0.018429 -0.171932 0.174905 0.177790 0.180588 0.183294 0.185908 0.188427 0.190850 0.193175 0.195403 0.197534 0.199566 0.201501 0.203338 0.205076 0.206715 0.208255 0.209695 0.211037 0.212277 0.213415 0.214446 0.215369 0.216180 0.216879 0.217463 0.217933 0.218287 0.218522 0.218640 0.218638 0.218516 0.218273 0.217907 0.217414 0.216790 0.216030 0.215131 0.214090 0.212908 0.211586 0.210129 0.208538 0.206813 0.204952 0.202955 0.200823 0.198564 0.196182 0.193680 0.191059 0.188319 0.185457 0.182475 0.179375 0.176161 0.172837 0.169410 0.165885 0.162267 0.158560 0.154765 0.150886 0.146927 0.142889 0.138777 0.134591 0.130336 0.126013 0.121624 0.117173 0.112661 0.108090 0.103464 0.098783 0.094050 0.089268 0.084438 0.079562 0.074642 0.069681 0.064680 0.059641 0.054566 0.049456 0.044313 0.039138 0.033932 0.028696 0.023431 0.018137 0.012815 0.007466 0.002088 -0.003316 -0.008748 -0.014204 -0.019684 -0.025186 -0.030707 -0.036245 -0.041797 -0.047359 -0.052929 -0.200838 0.203909 0.206880 0.209749 0.212515 0.215177 0.217734 0.220184 0.222527 0.224762 0.226889 0.228905 0.230809 0.232599 0.234272 0.235824 0.237251 0.238552 0.239722 0.240758 0.241657 0.242415 0.243028 0.243492 0.243808 0.243972 0.243980 0.243829 0.243513 0.243029 0.242372 0.241542 0.240542 0.239376 0.238048 0.236558 0.234906 0.233091 0.231115 0.228985 0.226706 0.224284 0.221720 0.219013 0.216162 0.213169 0.210037 0.206769 0.203372 0.199853 0.196218 0.192471 0.188618 0.184663 0.180611 0.176464 0.172226 0.167902 0.163490 0.158992 0.154412 0.149750 0.145010 0.140193 0.135302 0.130339 0.125305 0.120204 0.115036 0.109806 0.104515 0.099166 0.093761 0.088304 0.082795 0.077238 0.071634 0.065985 0.060294 0.054562 0.048792 0.042985 0.037141 0.031263 0.025350 0.019404 0.013425 0.007413 0.001367 -0.004712 -0.010825 -0.016971 -0.023149 -0.029358 -0.035596 -0.041859 -0.048144 -0.054447 -0.060765 -0.067093 -0.073427 -0.079763 -0.086097 -0.092426 -0.230641 0.233863 0.236973 0.239972 0.242855 0.245621 0.248266 0.250787 0.253179 0.255440 0.257564 0.259547 0.261384 0.263068 0.264592 0.265950 0.267134 0.268139 0.268962 0.269596 0.270033 0.270266 0.270291 0.270103 0.269702 0.269091 0.268276 0.267262 0.266050 0.264640 0.263035 0.261238 0.259259 0.257104 0.254781 0.252291 0.249631 0.246804 0.243811 0.240656 0.237346 0.233888 0.230290 0.226559 0.222701 0.218721 0.214623 0.210414 0.206096 0.201671 0.197143 0.192516 0.187792 0.182972 0.178060 0.173059 0.167965 0.162781 0.157510 0.152152 0.146709 0.141185 0.135580 0.129898 0.124142 0.118313 0.112415 0.106451 0.100424 0.094335 0.088188 0.081986 0.075731 0.069425 0.063071 0.056670 0.050224 0.043736 0.037206 0.030636 0.024026 0.017376 0.010688 0.003960 -0.002807 -0.009616 -0.016466 -0.023356 -0.030288 -0.037259 -0.044268 -0.051312 -0.058387 -0.065489 -0.072612 -0.079752 -0.086902 -0.094058 -0.101212 -0.108359 -0.115495 -0.122615 -0.129714 -0.136785 -0.261843 0.265283 0.268590 0.271760 0.274786 0.277662 0.280380 0.282931 0.285305 0.287491 0.289480 0.291263 0.292831 0.294173 0.295276 0.296129 0.296725 0.297061 0.297136 0.296955 0.296523 0.295844 0.294921 0.293755 0.292352 0.290723 0.288880 0.286834 0.284588 0.282145 0.279505 0.276672 0.273653 0.270456 0.267088 0.263559 0.259875 0.256045 0.252073 0.247964 0.243724 0.239357 0.234867 0.230258 0.225534 0.220697 0.215750 0.210693 0.205528 0.200257 0.194884 0.189409 0.183835 0.178163 0.172392 0.166522 0.160556 0.154496 0.148345 0.142104 0.135777 0.129367 0.122876 0.116308 0.109666 0.102954 0.096173 0.089328 0.082421 0.075455 0.068432 0.061354 0.054224 0.047043 0.039813 0.032535 0.025211 0.017841 0.010424 0.002961 -0.004550 -0.012108 -0.019716 -0.027374 -0.035082 -0.042840 -0.050648 -0.058502 -0.066401 -0.074338 -0.082309 -0.090307 -0.098326 -0.106357 -0.114392 -0.122424 -0.130445 -0.138446 -0.146420 -0.154363 -0.162266 -0.170124 -0.177931 -0.185684 -0.294863 0.298505 0.301962 0.305222 0.308270 0.311094 0.313679 0.316009 0.318064 0.319831 0.321297 0.322455 0.323302 0.323836 0.324063 0.323982 0.323596 0.322909 0.321931 0.320676 0.319159 0.317394 0.315387 0.313144 0.310673 0.307981 0.305081 0.301981 0.298693 0.295227 0.291589 0.287788 0.283829 0.279718 0.275460 0.271060 0.266521 0.261847 0.257041 0.252105 0.247043 0.241857 0.236549 0.231120 0.225572 0.219908 0.214126 0.208228 0.202218 0.196097 0.189865 0.183527 0.177082 0.170528 0.163868 0.157105 0.150242 0.143280 0.136225 0.129078 0.121843 0.114525 0.107126 0.099649 0.092099 0.084478 0.076788 0.069034 0.061217 0.053339 0.045403 0.037410 0.029361 0.021257 0.013099 0.004887 -0.003381 -0.011704 -0.020085 -0.028525 -0.037025 -0.045586 -0.054207 -0.062889 -0.071630 -0.080425 -0.089270 -0.098159 -0.107085 -0.116037 -0.125006 -0.133983 -0.142955 -0.151912 -0.160842 -0.169738 -0.178589 -0.187388 -0.196127 -0.204800 -0.213403 -0.221937 -0.230401 -0.238803 -0.329311 0.332920 0.336237 0.339238 0.341909 0.344236 0.346210 0.347822 0.349067 0.349940 0.350441 0.350569 0.350333 0.349747 0.348830 0.347600 0.346067 0.344242 0.342138 0.339774 0.337166 0.334331 0.331285 0.328038 0.324600 0.320979 0.317182 0.313216 0.309084 0.304793 0.300346 0.295746 0.290998 0.286104 0.281067 0.275889 0.270572 0.265117 0.259527 0.253801 0.247942 0.241952 0.235830 0.229580 0.223202 0.216695 0.210063 0.203309 0.196432 0.189437 0.182326 0.175094 0.167744 0.160280 0.152703 0.145017 0.137227 0.129335 0.121345 0.113263 0.105091 0.096832 0.088492 0.080073 0.071578 0.063009 0.054370 0.045662 0.036887 0.028047 0.019143 0.010175 0.001142 -0.007954 -0.017117 -0.026347 -0.035646 -0.045015 -0.054458 -0.063973 -0.073561 -0.083220 -0.092948 -0.102741 -0.112590 -0.122488 -0.132424 -0.142387 -0.152364 -0.162340 -0.172302 -0.182233 -0.192122 -0.201958 -0.211729 -0.221427 -0.231043 -0.240572 -0.250012 -0.259364 -0.268632 -0.277826 -0.286960 -0.296054 -0.363235 0.366309 0.368978 0.371230 0.373053 0.374438 0.375380 0.375886 0.375969 0.375647 0.374938 0.373855 0.372418 0.370650 0.368578 0.366227 0.363623 0.360786 0.357731 0.354468 0.351009 0.347359 0.343525 0.339511 0.335322 0.330963 0.326436 0.321744 0.316891 0.311880 0.306713 0.301391 0.295917 0.290292 0.284516 0.278591 0.272516 0.266292 0.259921 0.253403 0.246740 0.239933 0.232985 0.225896 0.218665 0.211296 0.203791 0.196152 0.188381 0.180479 0.172444 0.164280 0.155989 0.147575 0.139044 0.130399 0.121644 0.112784 0.103824 0.094766 0.085616 0.076376 0.067050 0.057641 0.048151 0.038582 0.028937 0.019216 0.009421 -0.000449 -0.010394 -0.020416 -0.030515 -0.040694 -0.050955 -0.061300 -0.071731 -0.082249 -0.092853 -0.103541 -0.114309 -0.125152 -0.136059 -0.147022 -0.158026 -0.169057 -0.180098 -0.191131 -0.202138 -0.213101 -0.224004 -0.234835 -0.245580 -0.256230 -0.266776 -0.277212 -0.287537 -0.297755 -0.307874 -0.317905 -0.327870 -0.337795 -0.347709 -0.357642 -0.393962 0.396077 0.397689 0.398800 0.399420 0.399559 0.399240 0.398486 0.397328 0.395802 0.393945 0.391789 0.389360 0.386683 0.383774 0.380647 0.377313 0.373778 0.370046 0.366123 0.362012 0.357717 0.353240 0.348584 0.343753 0.338749 0.333573 0.328229 0.322716 0.317037 0.311193 0.305182 0.299007 0.292666 0.286159 0.279488 0.272652 0.265651 0.258486 0.251160 0.243673 0.236029 0.228225 0.220263 0.212146 0.203878 0.195460 0.186895 0.178183 0.169323 0.160320 0.151179 0.141904 0.132499 0.122971 0.113323 0.103560 0.093687 0.083709 0.073628 0.063449 0.053174 0.042807 0.032350 0.021805 0.011172 0.000453 -0.010353 -0.021246 -0.032228 -0.043302 -0.054469 -0.065733 -0.077096 -0.088560 -0.100124 -0.111789 -0.123553 -0.135410 -0.147353 -0.159372 -0.171452 -0.183580 -0.195737 -0.207902 -0.220052 -0.232167 -0.244227 -0.256210 -0.268101 -0.279885 -0.291552 -0.303089 -0.314492 -0.325762 -0.336902 -0.347923 -0.358842 -0.369684 -0.380484 -0.391278 -0.402103 -0.412991 -0.423967 -0.419194 0.420039 0.420355 0.420180 0.419555 0.418521 0.417118 0.415382 0.413345 0.411031 0.408460 0.405652 0.402619 0.399371 0.395912 0.392247 0.388378 0.384308 0.380041 0.375578 0.370923 0.366078 0.361044 0.355823 0.350417 0.344827 0.339054 0.333098 0.326958 0.320635 0.314128 0.307437 0.300561 0.293499 0.286251 0.278817 0.271197 0.263392 0.255405 0.247236 0.238888 0.230363 0.221658 0.212780 0.203732 0.194516 0.185138 0.175593 0.165886 0.156022 0.146004 0.135840 0.125533 0.115090 0.104515 0.093815 0.082993 0.072054 0.061003 0.049843 0.038577 0.027208 0.015736 0.004165 -0.007507 -0.019278 -0.031151 -0.043126 -0.055208 -0.067399 -0.079703 -0.092120 -0.104654 -0.117306 -0.130073 -0.142955 -0.155944 -0.169035 -0.182214 -0.195465 -0.208771 -0.222111 -0.235461 -0.248795 -0.262088 -0.275316 -0.288455 -0.301482 -0.314380 -0.327137 -0.339740 -0.352183 -0.364465 -0.376593 -0.388579 -0.400441 -0.412214 -0.423936 -0.435651 -0.447406 -0.459243 -0.471199 -0.483306 -0.495571 -0.437423 0.437176 0.436516 0.435476 0.434091 0.432395 0.430412 0.428161 0.425657 0.422916 0.419946 0.416750 0.413330 0.409691 0.405833 0.401760 0.397474 0.392976 0.388269 0.383354 0.378233 0.372907 0.367377 0.361643 0.355706 0.349564 0.343216 0.336663 0.329903 0.322934 0.315756 0.308369 0.300770 0.292959 0.284938 0.276705 0.268262 0.259612 0.250758 0.241700 0.232443 0.222985 0.213331 0.203487 0.193456 0.183244 0.172847 0.162270 0.151518 0.140598 0.129515 0.118276 0.106886 0.095352 0.083678 0.071871 0.059936 0.047875 0.035692 0.023391 0.010972 -0.001561 -0.014209 -0.026972 -0.039851 -0.052848 -0.065967 -0.079212 -0.092586 -0.106091 -0.119730 -0.133502 -0.147408 -0.161445 -0.175607 -0.189887 -0.204271 -0.218742 -0.233279 -0.247858 -0.262456 -0.277042 -0.291587 -0.306062 -0.320439 -0.334687 -0.348785 -0.362718 -0.376472 -0.390038 -0.403415 -0.416608 -0.429630 -0.442505 -0.455267 -0.467964 -0.480646 -0.493367 -0.506184 -0.519146 -0.532289 -0.545639 -0.559196 -0.572935 -0.449635 0.448872 0.447774 0.446370 0.444682 0.442721 0.440504 0.438043 0.435343 0.432398 0.429211 0.425783 0.422115 0.418209 0.414065 0.409687 0.405076 0.400234 0.395161 0.389858 0.384326 0.378564 0.372570 0.366346 0.359888 0.353197 0.346271 0.339108 0.331709 0.324070 0.316192 0.308074 0.299715 0.291116 0.282278 0.273201 0.263890 0.254348 0.244576 0.234579 0.224357 0.213915 0.203260 0.192396 0.181331 0.170062 0.158593 0.146932 0.135084 0.123056 0.110855 0.098488 0.085961 0.073281 0.060453 0.047482 0.034371 0.021124 0.007743 -0.005769 -0.019413 -0.033188 -0.047095 -0.061137 -0.075318 -0.089641 -0.104112 -0.118732 -0.133503 -0.148426 -0.163501 -0.178725 -0.194094 -0.209599 -0.225229 -0.240964 -0.256782 -0.272657 -0.288562 -0.304467 -0.320339 -0.336142 -0.351843 -0.367406 -0.382800 -0.398006 -0.413009 -0.427795 -0.442359 -0.456708 -0.470854 -0.484819 -0.498643 -0.512377 -0.526079 -0.539810 -0.553635 -0.567614 -0.581800 -0.596234 -0.610936 -0.625898 -0.641097 -0.656502 -0.457427 0.456594 0.455471 0.454064 0.452386 0.450446 0.448246 0.445777 0.443042 0.440044 0.436776 0.433240 0.429436 0.425363 0.421024 0.416420 0.411552 0.406421 0.401026 0.395368 0.389445 0.383258 0.376804 0.370084 0.363096 0.355839 0.348312 0.340514 0.332443 0.324100 0.315483 0.306594 0.297431 0.287998 0.278295 0.268327 0.258096 0.247607 0.236866 0.225871 0.214631 0.203153 0.191444 0.179511 0.167353 0.154974 0.142380 0.129581 0.116582 0.103393 0.090019 0.076469 0.062750 0.048865 0.034821 0.020621 0.006268 -0.008236 -0.022889 -0.037691 -0.052643 -0.067747 -0.083007 -0.098429 -0.114016 -0.129772 -0.145699 -0.161797 -0.178066 -0.194504 -0.211108 -0.227870 -0.244779 -0.261817 -0.278960 -0.296180 -0.313449 -0.330735 -0.348004 -0.365216 -0.382329 -0.399304 -0.416100 -0.432687 -0.449045 -0.465160 -0.481021 -0.496631 -0.512001 -0.527154 -0.542126 -0.556972 -0.571758 -0.586551 -0.601417 -0.616429 -0.631659 -0.647164 -0.662990 -0.679160 -0.695662 -0.712473 -0.729558 -0.746859 -0.461928 0.461363 0.460509 0.459366 0.457935 0.456203 0.454171 0.451844 0.449213 0.446274 0.443035 0.439487 0.435630 0.431464 0.426989 0.422207 0.417118 0.411723 0.406022 0.400015 0.393703 0.387085 0.380160 0.372928 0.365388 0.357540 0.349382 0.340913 0.332135 0.323046 0.313648 0.303941 0.293928 0.283611 0.272993 0.262080 0.250876 0.239388 0.227620 0.215575 0.203267 0.190702 0.177889 0.164828 0.151522 0.137979 0.124207 0.110214 0.096010 0.081603 0.067000 0.052208 0.037233 0.022079 0.006751 -0.008749 -0.024418 -0.040256 -0.056263 -0.072441 -0.088793 -0.105326 -0.122045 -0.138952 -0.156051 -0.173343 -0.190826 -0.208500 -0.226361 -0.244405 -0.262620 -0.280991 -0.299496 -0.318104 -0.336786 -0.355510 -0.374239 -0.392931 -0.411543 -0.430025 -0.448329 -0.466412 -0.484244 -0.501807 -0.519087 -0.536080 -0.552793 -0.569246 -0.585472 -0.601525 -0.617475 -0.633392 -0.649350 -0.665429 -0.681709 -0.698271 -0.715189 -0.732518 -0.750277 -0.768459 -0.787034 -0.805946 -0.825118 -0.844455 -0.464002 0.463921 0.463533 0.462824 0.461776 0.460391 0.458663 0.456580 0.454149 0.451369 0.448229 0.444736 0.440884 0.436671 0.432098 0.427164 0.421872 0.416224 0.410221 0.403864 0.397155 0.390093 0.382678 0.374911 0.366792 0.358320 0.349496 0.340319 0.330791 0.320913 0.310688 0.300117 0.289203 0.277951 0.266366 0.254456 0.242226 0.229685 0.216837 0.203695 0.190268 0.176567 0.162592 0.148345 0.133836 0.119073 0.104065 0.088823 0.073356 0.057672 0.041777 0.025679 0.009381 -0.007113 -0.023798 -0.040674 -0.057740 -0.074997 -0.092448 -0.110100 -0.127957 -0.146025 -0.164307 -0.182803 -0.201515 -0.220440 -0.239576 -0.258920 -0.278462 -0.298189 -0.318081 -0.338111 -0.358246 -0.378453 -0.398696 -0.418932 -0.439115 -0.459191 -0.479105 -0.498801 -0.518234 -0.537374 -0.556205 -0.574716 -0.592907 -0.610792 -0.628401 -0.645778 -0.662994 -0.680122 -0.697242 -0.714440 -0.731801 -0.749419 -0.767400 -0.785827 -0.804762 -0.824230 -0.844213 -0.864674 -0.885547 -0.906738 -0.928132 -0.949605 -0.464264 0.464773 0.464946 0.464759 0.464203 0.463261 0.461918 0.460178 0.458024 0.455459 0.452487 0.449094 0.445288 0.441062 0.436414 0.431347 0.425863 0.419966 0.413659 0.406944 0.399824 0.392300 0.384374 0.376045 0.367315 0.358186 0.348658 0.338733 0.328413 0.317702 0.306603 0.295119 0.283254 0.271016 0.258412 0.245452 0.232146 0.218500 0.204524 0.190234 0.175637 0.160741 0.145544 0.130056 0.114287 0.098246 0.081946 0.065395 0.048603 0.031578 0.014326 -0.003150 -0.020843 -0.038751 -0.056873 -0.075208 -0.093758 -0.112530 -0.131528 -0.150760 -0.170228 -0.189934 -0.209881 -0.230066 -0.250488 -0.271143 -0.292025 -0.313123 -0.334420 -0.355892 -0.377509 -0.399236 -0.421035 -0.442864 -0.464677 -0.486419 -0.508031 -0.529447 -0.550606 -0.571460 -0.591983 -0.612157 -0.631976 -0.651444 -0.670582 -0.689427 -0.708040 -0.726493 -0.744873 -0.763268 -0.781768 -0.800475 -0.819510 -0.838986 -0.859005 -0.879638 -0.900905 -0.922792 -0.945261 -0.968236 -0.991609 -1.015243 -1.038978 -1.062628 -0.463046 0.464200 0.464996 0.465404 0.465395 0.464956 0.464077 0.462731 0.460922 0.458632 0.455862 0.452617 0.448884 0.444671 0.439969 0.434783 0.429114 0.422969 0.416353 0.409270 0.401724 0.393718 0.385254 0.376335 0.366963 0.357141 0.346870 0.336156 0.325002 0.313412 0.301390 0.288943 0.276077 0.262802 0.249129 0.235069 0.220636 0.205834 0.190683 0.175190 0.159369 0.143216 0.126740 0.109952 0.092864 0.075487 0.057832 0.039910 0.021728 0.003293 -0.015390 -0.034315 -0.053481 -0.072885 -0.092529 -0.112415 -0.132550 -0.152940 -0.173592 -0.194507 -0.215688 -0.237134 -0.258846 -0.280819 -0.303047 -0.325524 -0.348234 -0.371158 -0.394271 -0.417539 -0.440923 -0.464381 -0.487868 -0.511330 -0.534706 -0.557929 -0.580924 -0.603625 -0.625986 -0.647976 -0.669582 -0.690797 -0.711631 -0.732110 -0.752282 -0.772211 -0.791981 -0.811683 -0.831411 -0.851275 -0.871399 -0.891912 -0.912951 -0.934627 -0.957022 -0.980170 -1.004064 -1.028667 -1.053895 -1.079618 -1.105667 -1.131842 -1.157913 -1.183645 -0.460587 0.462421 0.463862 0.464896 0.465485 0.465598 0.465208 0.464315 0.462883 0.460916 0.458395 0.455320 0.451696 0.447514 0.442778 0.437485 0.431638 0.425245 0.418314 0.410851 0.402863 0.394353 0.385326 0.375786 0.365738 0.355185 0.344134 0.332589 0.320555 0.308039 0.295047 0.281588 0.267670 0.253309 0.238517 0.223311 0.207697 0.191690 0.175306 0.158559 0.141449 0.123981 0.106167 0.088019 0.069552 0.050776 0.031704 0.012342 -0.007300 -0.027218 -0.047407 -0.067862 -0.088584 -0.109572 -0.130832 -0.152372 -0.174196 -0.196311 -0.218718 -0.241420 -0.264416 -0.287703 -0.311279 -0.335134 -0.359259 -0.383638 -0.408249 -0.433063 -0.458046 -0.483154 -0.508342 -0.533558 -0.558744 -0.583833 -0.608747 -0.633407 -0.657743 -0.681704 -0.705259 -0.728393 -0.751103 -0.773401 -0.795321 -0.816909 -0.838240 -0.859400 -0.880486 -0.901612 -0.922904 -0.944499 -0.966547 -0.989194 -1.012573 -1.036792 -1.061899 -1.087901 -1.114763 -1.142385 -1.170611 -1.199238 -1.228017 -1.256684 -1.284967 -1.312625 -0.457049 0.459585 0.461697 0.463365 0.464561 0.465247 0.465393 0.464961 0.463952 0.462331 0.460098 0.457230 0.453734 0.449609 0.444852 0.439464 0.433446 0.426804 0.419551 0.411695 0.403245 0.394208 0.384591 0.374400 0.363641 0.352322 0.340449 0.328030 0.315071 0.301582 0.287571 0.273051 0.258033 0.242538 0.226579 0.210172 0.193326 0.176062 0.158392 0.140328 0.121868 0.103024 0.083811 0.064242 0.044332 0.024092 0.003532 -0.017340 -0.038518 -0.059996 -0.081771 -0.103841 -0.126208 -0.148878 -0.171859 -0.195156 -0.218775 -0.242718 -0.266985 -0.291576 -0.316488 -0.341715 -0.367249 -0.393077 -0.419179 -0.445534 -0.472111 -0.498872 -0.525772 -0.552760 -0.579781 -0.606769 -0.633651 -0.660344 -0.686764 -0.712835 -0.738500 -0.763727 -0.788498 -0.812811 -0.836683 -0.860143 -0.883244 -0.906059 -0.928680 -0.951219 -0.973806 -0.996580 -1.019698 -1.043319 -1.067611 -1.092736 -1.118832 -1.145972 -1.174175 -1.203402 -1.233535 -1.264398 -1.295748 -1.327293 -1.358730 -1.389759 -1.420113 -1.449579 -0.452619 0.455817 0.458597 0.460904 0.462712 0.463978 0.464661 0.464733 0.464154 0.462914 0.460984 0.458358 0.455015 0.450966 0.446202 0.440730 0.434544 0.427653 0.420069 0.411806 0.402876 0.393288 0.383052 0.372177 0.360674 0.348550 0.335815 0.322477 0.308548 0.294039 0.278962 0.263332 0.247168 0.230488 0.213313 0.195650 0.177520 0.158940 0.139928 0.120481 0.100609 0.080328 0.059654 0.038600 0.017180 -0.004594 -0.026715 -0.049174 -0.071965 -0.095084 -0.118531 -0.142308 -0.166421 -0.190877 -0.215684 -0.240844 -0.266361 -0.292235 -0.318466 -0.345048 -0.371976 -0.399239 -0.426820 -0.454700 -0.482856 -0.511256 -0.539859 -0.568618 -0.597478 -0.626378 -0.655248 -0.684009 -0.712575 -0.740856 -0.768770 -0.796253 -0.823267 -0.849792 -0.875827 -0.901387 -0.926496 -0.951206 -0.975589 -0.999748 -1.023811 -1.047918 -1.072227 -1.096907 -1.122135 -1.148105 -1.175016 -1.203037 -1.232271 -1.262743 -1.294412 -1.327152 -1.360760 -1.394967 -1.429432 -1.463821 -1.497797 -1.531066 -1.563394 -1.594607 -0.447482 0.451276 0.454675 0.457605 0.460010 0.461858 0.463089 0.463658 0.463536 0.462687 0.461086 0.458715 0.455554 0.451592 0.446839 0.441287 0.434938 0.427795 0.419872 0.411187 0.401756 0.391593 0.380710 0.369120 0.356836 0.343868 0.330228 0.315929 0.300984 0.285408 0.269218 0.252432 0.235072 0.217157 0.198709 0.179736 0.160267 0.140315 0.119894 0.099002 0.077657 0.055875 0.033673 0.011066 -0.011934 -0.035317 -0.059074 -0.083198 -0.107685 -0.132533 -0.157747 -0.183331 -0.209294 -0.235642 -0.262379 -0.289507 -0.317027 -0.344938 -0.373234 -0.401909 -0.430948 -0.460333 -0.490044 -0.520057 -0.550338 -0.580846 -0.611531 -0.642334 -0.673189 -0.704021 -0.734751 -0.765287 -0.795535 -0.825407 -0.854828 -0.883752 -0.912158 -0.940042 -0.967409 -0.994281 -1.020699 -1.046743 -1.072524 -1.098182 -1.123869 -1.149758 -1.176037 -1.202907 -1.230591 -1.259322 -1.289304 -1.320669 -1.353451 -1.387614 -1.423024 -1.459467 -1.496646 -1.534181 -1.571699 -1.608829 -1.645241 -1.680674 -1.714926 -1.747917 -0.441854 0.446133 0.450067 0.453568 0.456548 0.458950 0.460725 0.461801 0.462131 0.461684 0.460426 0.458320 0.455356 0.451504 0.446766 0.441141 0.434630 0.427233 0.418962 0.409840 0.399888 0.389125 0.377566 0.365228 0.352126 0.338274 0.323688 0.308383 0.292377 0.275689 0.258338 0.240347 0.221739 0.202538 0.182759 0.162423 0.141553 0.120171 0.098273 0.075873 0.052990 0.029641 0.005844 -0.018388 -0.043043 -0.068110 -0.093583 -0.119455 -0.145727 -0.172401 -0.199482 -0.226978 -0.254897 -0.283241 -0.312014 -0.341217 -0.370846 -0.400897 -0.431360 -0.462221 -0.493459 -0.525052 -0.556975 -0.589195 -0.621670 -0.654345 -0.687161 -0.720047 -0.752926 -0.785715 -0.818321 -0.850646 -0.882592 -0.914076 -0.945042 -0.975465 -1.005328 -1.034630 -1.063382 -1.091620 -1.119425 -1.146918 -1.174244 -1.201571 -1.229089 -1.257008 -1.285556 -1.314987 -1.345565 -1.377526 -1.411034 -1.446143 -1.482821 -1.520940 -1.560279 -1.600526 -1.641269 -1.682086 -1.722577 -1.762364 -1.801152 -1.838708 -1.874922 -1.909798 -0.435870 0.440553 0.444924 0.448911 0.452413 0.455339 0.457625 0.459202 0.459988 0.459939 0.459024 0.457198 0.454431 0.450704 0.445989 0.440298 0.433624 0.425968 0.417341 0.407767 0.397274 0.385885 0.373620 0.360500 0.346542 0.331766 0.316191 0.299837 0.282726 0.264878 0.246318 0.227070 0.207161 0.186617 0.165451 0.143694 0.121367 0.098484 0.075046 0.051073 0.026585 0.001601 -0.023864 -0.049795 -0.076180 -0.103013 -0.130286 -0.157997 -0.186150 -0.214749 -0.243802 -0.273317 -0.303297 -0.333745 -0.364661 -0.396044 -0.427887 -0.460180 -0.492905 -0.526041 -0.559566 -0.593452 -0.627666 -0.662165 -0.696895 -0.731792 -0.766784 -0.801793 -0.836733 -0.871508 -0.906019 -0.940158 -0.973835 -1.006981 -1.039561 -1.071542 -1.102913 -1.133673 -1.163852 -1.193529 -1.222828 -1.251903 -1.280935 -1.310135 -1.339739 -1.370005 -1.401215 -1.433657 -1.467600 -1.503242 -1.540668 -1.579854 -1.620692 -1.662964 -1.706349 -1.750414 -1.794689 -1.838736 -1.882129 -1.924527 -1.965661 -2.005378 -2.043663 -2.080572 -0.429533 0.434623 0.439367 0.443756 0.447703 0.451101 0.453860 0.455904 0.457139 0.457489 0.456906 0.455362 0.452797 0.449195 0.444517 0.438758 0.431921 0.424002 0.415009 0.404968 0.393913 0.381872 0.368870 0.354932 0.340081 0.324341 0.307736 0.290289 0.272025 0.252970 0.233149 0.212592 0.191327 0.169381 0.146773 0.123533 0.099687 0.075235 0.050192 0.024579 -0.001583 -0.028274 -0.055480 -0.083187 -0.111385 -0.140068 -0.169232 -0.198878 -0.229012 -0.259642 -0.290774 -0.322413 -0.354562 -0.387221 -0.420389 -0.454058 -0.488216 -0.522846 -0.557924 -0.593427 -0.629325 -0.665586 -0.702167 -0.739012 -0.776058 -0.813230 -0.850449 -0.887629 -0.924673 -0.961476 -0.997929 -1.033928 -1.069396 -1.104275 -1.138522 -1.172104 -1.205011 -1.237262 -1.268932 -1.300143 -1.331056 -1.361868 -1.392813 -1.424152 -1.456175 -1.489191 -1.523510 -1.559427 -1.597177 -1.636885 -1.678550 -1.722088 -1.767296 -1.813857 -1.861330 -1.909200 -1.956980 -2.004203 -2.050465 -2.095456 -2.138970 -2.180957 -2.221453 -2.260556 -0.422832 0.428331 0.433453 0.438186 0.442509 0.446310 0.449495 0.451965 0.453622 0.454358 0.454109 0.452826 0.450472 0.446988 0.442350 0.436526 0.429522 0.421335 0.411966 0.401442 0.389802 0.377082 0.363311 0.348521 0.332740 0.315996 0.298317 0.279732 0.260268 0.239955 0.218821 0.196901 0.174226 0.150817 0.126708 0.101926 0.076491 0.050405 0.023689 -0.003633 -0.031541 -0.060014 -0.089039 -0.118604 -0.148700 -0.179323 -0.210474 -0.242156 -0.274376 -0.307143 -0.340461 -0.374333 -0.408760 -0.443739 -0.479264 -0.515322 -0.551892 -0.588953 -0.626477 -0.664435 -0.702794 -0.741510 -0.780529 -0.819786 -0.859209 -0.898717 -0.938224 -0.977631 -1.016832 -1.055714 -1.094167 -1.132097 -1.169424 -1.206086 -1.242030 -1.277234 -1.311701 -1.345498 -1.378738 -1.411592 -1.444271 -1.477032 -1.510164 -1.543988 -1.578834 -1.615036 -1.652911 -1.692732 -1.734670 -1.778763 -1.824954 -1.873069 -1.922807 -1.973734 -2.025303 -2.076971 -2.128228 -2.178604 -2.227729 -2.275344 -2.321343 -2.365735 -2.408598 -2.450069 -0.415755 0.421667 0.427172 0.432250 0.436890 0.441042 0.444589 0.447439 0.449477 0.450575 0.450649 0.449620 0.447458 0.444092 0.439489 0.433603 0.426429 0.417965 0.408210 0.397186 0.384939 0.371511 0.356941 0.341264 0.324514 0.306725 0.287929 0.268160 0.247447 0.225823 0.203323 0.179983 0.155839 0.130910 0.105239 0.078852 0.051758 0.023969 -0.004489 -0.033592 -0.063319 -0.093652 -0.124578 -0.156086 -0.188171 -0.220831 -0.254068 -0.287890 -0.322304 -0.357316 -0.392928 -0.429143 -0.465957 -0.503363 -0.541349 -0.579894 -0.618973 -0.658559 -0.698622 -0.739125 -0.780028 -0.821276 -0.862806 -0.904546 -0.946417 -0.988332 -1.030193 -1.071892 -1.113316 -1.154349 -1.194880 -1.234803 -1.274036 -1.312503 -1.350163 -1.387003 -1.423071 -1.458476 -1.493391 -1.528038 -1.562697 -1.597688 -1.633357 -1.670059 -1.708149 -1.747966 -1.789817 -1.833920 -1.880370 -1.929140 -1.980099 -2.032976 -2.087358 -2.142688 -2.198366 -2.253833 -2.308555 -2.362089 -2.414109 -2.464442 -2.513056 -2.560003 -2.605403 -2.649422 -0.408284 0.414623 0.420510 0.425938 0.430885 0.435336 0.439197 0.442372 0.444743 0.446179 0.446539 0.445768 0.443769 0.440521 0.435939 0.429991 0.422639 0.413890 0.403737 0.392197 0.379320 0.365157 0.349754 0.333154 0.315397 0.296522 0.276565 0.255563 0.233551 0.210564 0.186643 0.161827 0.136151 0.109645 0.082347 0.054287 0.025465 -0.004095 -0.034366 -0.065324 -0.096950 -0.129224 -0.162137 -0.195679 -0.229847 -0.264643 -0.300072 -0.336140 -0.372856 -0.410222 -0.448240 -0.486907 -0.526216 -0.566155 -0.606702 -0.647833 -0.689518 -0.731725 -0.774418 -0.817555 -0.861084 -0.904943 -0.949062 -0.993365 -1.037765 -1.082165 -1.126457 -1.170529 -1.214260 -1.257525 -1.300193 -1.342154 -1.383312 -1.423597 -1.462979 -1.501482 -1.539203 -1.576314 -1.613047 -1.649703 -1.686627 -1.724193 -1.762780 -1.802766 -1.844512 -1.888350 -1.934549 -1.983266 -2.034523 -2.088232 -2.144169 -2.201961 -2.261060 -2.320826 -2.380642 -2.439914 -2.498115 -2.554841 -2.609839 -2.663016 -2.714390 -2.764055 -2.812170 -2.858919 -0.400403 0.407186 0.413458 0.419238 0.424496 0.429216 0.433353 0.436803 0.439465 0.441185 0.441818 0.441268 0.439435 0.436274 0.431709 0.425686 0.418153 0.409107 0.398542 0.386468 0.372938 0.358013 0.341746 0.324188 0.305384 0.285380 0.264215 0.241932 0.218567 0.194163 0.168765 0.142415 0.115147 0.087001 0.058015 0.028209 -0.002410 -0.033813 -0.065972 -0.098864 -0.132469 -0.166770 -0.201759 -0.237430 -0.273781 -0.310816 -0.348543 -0.386967 -0.426095 -0.465925 -0.506459 -0.547688 -0.589600 -0.632173 -0.675383 -0.719199 -0.763588 -0.808511 -0.853927 -0.899784 -0.946024 -0.992581 -1.039378 -1.086333 -1.133349 -1.180323 -1.227139 -1.273679 -1.319803 -1.365361 -1.410210 -1.454227 -1.497317 -1.539421 -1.580537 -1.620743 -1.660207 -1.699164 -1.737929 -1.776876 -1.816401 -1.856909 -1.898803 -1.942468 -1.988259 -2.036486 -2.087375 -2.141008 -2.197347 -2.256229 -2.317334 -2.380153 -2.444030 -2.508283 -2.572268 -2.635368 -2.697090 -2.757082 -2.815175 -2.871337 -2.925625 -2.978184 -3.029194 -3.078860 -0.392097 0.399338 0.406008 0.412136 0.417708 0.422695 0.427069 0.430763 0.433664 0.435625 0.436506 0.436135 0.434464 0.431357 0.426801 0.420686 0.412967 0.403612 0.392621 0.379996 0.365790 0.350074 0.332911 0.314358 0.294468 0.273290 0.250870 0.227254 0.202485 0.176608 0.149674 0.121730 0.092808 0.062959 0.032219 0.000595 -0.031893 -0.065213 -0.099338 -0.134244 -0.169913 -0.206331 -0.243491 -0.281388 -0.320024 -0.359405 -0.399539 -0.440429 -0.482079 -0.524486 -0.567646 -0.611546 -0.656165 -0.701477 -0.747452 -0.794054 -0.841245 -0.888980 -0.937210 -0.985878 -1.034923 -1.084272 -1.133845 -1.183548 -1.233281 -1.282932 -1.332379 -1.381480 -1.430062 -1.477954 -1.525003 -1.571081 -1.616098 -1.660019 -1.702901 -1.744892 -1.786232 -1.827242 -1.868317 -1.909877 -1.952354 -1.996178 -2.041758 -2.089475 -2.139674 -2.192636 -2.248524 -2.307356 -2.369037 -2.433312 -2.499742 -2.567683 -2.636407 -2.705209 -2.773400 -2.840379 -2.905686 -2.969052 -3.030375 -3.089669 -3.147044 -3.202674 -3.256766 -3.309539 -0.383352 0.391065 0.398145 0.404621 0.410507 0.415763 0.420357 0.424259 0.427360 0.429536 0.430603 0.430404 0.428849 0.425797 0.421216 0.414996 0.407077 0.397401 0.385969 0.372776 0.357871 0.341335 0.323242 0.303657 0.282639 0.260242 0.236519 0.211518 0.185289 0.157883 0.129355 0.099755 0.069119 0.037500 0.004933 -0.028581 -0.063011 -0.098325 -0.134496 -0.171501 -0.209323 -0.247951 -0.287378 -0.327603 -0.368631 -0.410466 -0.453117 -0.496584 -0.540869 -0.585966 -0.631863 -0.678541 -0.725974 -0.774129 -0.822971 -0.872460 -0.922551 -0.973194 -1.024334 -1.075913 -1.127864 -1.180109 -1.232562 -1.285124 -1.337688 -1.390133 -1.442312 -1.494044 -1.545127 -1.595377 -1.644629 -1.692757 -1.739691 -1.785453 -1.830170 -1.874073 -1.917485 -1.960814 -2.004504 -2.049014 -2.094802 -2.142305 -2.191932 -2.244057 -2.299008 -2.357027 -2.418204 -2.482513 -2.549780 -2.619651 -2.691536 -2.764695 -2.838353 -2.911765 -2.984220 -3.055140 -3.124129 -3.190996 -3.255694 -3.318284 -3.378922 -3.437809 -3.495171 -3.551246 -0.374154 0.382353 0.389853 0.396686 0.402881 0.408406 0.413217 0.417296 0.420576 0.422918 0.424138 0.424083 0.422602 0.419598 0.414956 0.408619 0.400480 0.390471 0.378581 0.364801 0.349173 0.331789 0.312733 0.292077 0.269888 0.246226 0.221149 0.194711 0.166967 0.137974 0.107793 0.076472 0.044060 0.010605 -0.023865 -0.059343 -0.095792 -0.133180 -0.171481 -0.210673 -0.250740 -0.291674 -0.333469 -0.376128 -0.419654 -0.464055 -0.509335 -0.555493 -0.602526 -0.650424 -0.699169 -0.748733 -0.799085 -0.850188 -0.902002 -0.954480 -1.007571 -1.061222 -1.115376 -1.169972 -1.224939 -1.280194 -1.335645 -1.391190 -1.446710 -1.502059 -1.557049 -1.611460 -1.665071 -1.717682 -1.769124 -1.819285 -1.868150 -1.915811 -1.962481 -2.008478 -2.054215 -2.100153 -2.146779 -2.194582 -2.244029 -2.295562 -2.349584 -2.406457 -2.466489 -2.529862 -2.596617 -2.666671 -2.739763 -2.815402 -2.892871 -2.971353 -3.050038 -3.128128 -3.204918 -3.279861 -3.352653 -3.423161 -3.491390 -3.557451 -3.621535 -3.683867 -3.744692 -3.804264 -0.364492 0.373187 0.381118 0.388316 0.394817 0.400611 0.405640 0.409879 0.413307 0.415782 0.417130 0.417170 0.415746 0.412752 0.408030 0.401552 0.393170 0.382818 0.370451 0.356066 0.339692 0.321431 0.301376 0.279609 0.256205 0.231230 0.204748 0.176819 0.147502 0.116865 0.084969 0.051863 0.017607 -0.017752 -0.054202 -0.091719 -0.130266 -0.169812 -0.210329 -0.251799 -0.294208 -0.337546 -0.381814 -0.427012 -0.473149 -0.520228 -0.568250 -0.617214 -0.667110 -0.717922 -0.769623 -0.822182 -0.875562 -0.929720 -0.984609 -1.040179 -1.096374 -1.153140 -1.210420 -1.268149 -1.326251 -1.384641 -1.443223 -1.501883 -1.560478 -1.618821 -1.676679 -1.733801 -1.789947 -1.844903 -1.898513 -1.950715 -2.001558 -2.051222 -2.100014 -2.148341 -2.196673 -2.245525 -2.295415 -2.346847 -2.400295 -2.456198 -2.514948 -2.576899 -2.642320 -2.711340 -2.783961 -2.860023 -2.939160 -3.020729 -3.103913 -3.187836 -3.271639 -3.354486 -3.435684 -3.514764 -3.591493 -3.665795 -3.737723 -3.807435 -3.875154 -3.941124 -4.005605 -4.068877 -0.354353 0.363556 0.371928 0.379498 0.386306 0.392366 0.397613 0.402002 0.405549 0.408136 0.409576 0.409678 0.408285 0.405261 0.400450 0.393792 0.385148 0.374437 0.361576 0.346564 0.329420 0.310251 0.289162 0.266244 0.241580 0.215243 0.187303 0.157827 0.126881 0.094538 0.060864 0.025910 -0.010260 -0.047599 -0.086103 -0.125738 -0.166465 -0.208254 -0.251079 -0.294921 -0.339768 -0.385615 -0.432461 -0.480311 -0.529170 -0.579041 -0.629922 -0.681806 -0.734679 -0.788517 -0.843286 -0.898950 -0.955465 -1.012785 -1.070857 -1.129625 -1.189033 -1.249031 -1.309557 -1.370543 -1.431911 -1.493576 -1.555428 -1.617334 -1.679107 -1.740511 -1.801275 -1.861120 -1.919785 -1.977064 -2.032844 -2.087120 -2.140030 -2.191853 -2.242984 -2.293891 -2.345106 -2.397184 -2.450664 -2.506057 -2.563840 -2.624441 -2.688244 -2.755585 -2.826695 -2.901659 -2.980428 -3.062757 -3.148138 -3.235801 -3.324840 -3.414328 -3.503337 -3.591023 -3.676727 -3.760075 -3.840889 -3.919147 -3.994951 -4.068504 -4.140049 -4.209849 -4.278187 -4.345372 -0.343727 0.353447 0.362268 0.370218 0.377337 0.383658 0.389121 0.393659 0.397304 0.399980 0.401479 0.401621 0.400217 0.397135 0.392211 0.385341 0.376416 0.365321 0.351948 0.336290 0.318351 0.298242 0.276081 0.251971 0.226000 0.198252 0.168801 0.137722 0.105087 0.070976 0.035460 -0.001409 -0.039561 -0.078959 -0.119596 -0.161430 -0.204423 -0.248544 -0.293769 -0.340080 -0.387468 -0.435928 -0.485462 -0.536075 -0.587772 -0.640552 -0.694408 -0.749330 -0.805294 -0.862270 -0.920218 -0.979097 -1.038859 -1.099450 -1.160813 -1.222891 -1.285632 -1.348985 -1.412884 -1.477263 -1.542044 -1.607130 -1.672394 -1.737658 -1.802688 -1.867203 -1.930893 -1.993447 -2.054608 -2.114207 -2.172181 -2.228606 -2.283722 -2.337901 -2.391600 -2.445355 -2.499753 -2.555372 -2.612763 -2.672444 -2.734886 -2.800503 -2.869671 -2.942710 -3.019810 -3.101016 -3.186213 -3.275054 -3.366875 -3.460799 -3.555840 -3.651007 -3.745316 -3.837929 -3.928265 -4.016023 -4.101081 -4.183466 -4.263334 -4.340920 -4.416484 -4.490313 -4.562718 -4.634037 -0.332607 0.342848 0.352126 0.360463 0.367899 0.374477 0.380153 0.384839 0.388568 0.391306 0.392844 0.392996 0.391547 0.388384 0.383308 0.376207 0.366973 0.355467 0.341565 0.325237 0.306477 0.285396 0.262126 0.236779 0.209455 0.180244 0.149228 0.116488 0.082105 0.046164 0.008736 -0.030115 -0.070322 -0.111861 -0.154710 -0.198827 -0.244173 -0.290719 -0.338439 -0.387320 -0.437352 -0.488534 -0.540869 -0.594361 -0.649012 -0.704818 -0.761767 -0.819842 -0.879012 -0.939239 -1.000480 -1.062688 -1.125807 -1.189780 -1.254547 -1.320056 -1.386258 -1.453095 -1.520509 -1.588431 -1.656777 -1.725433 -1.794233 -1.862950 -1.931299 -1.998953 -2.065561 -2.130804 -2.194455 -2.256392 -2.316617 -2.375312 -2.432813 -2.489558 -2.546072 -2.602960 -2.660843 -2.720315 -2.781937 -2.846228 -2.913641 -2.984580 -3.059422 -3.138465 -3.221856 -3.309603 -3.401509 -3.497091 -3.595553 -3.695909 -3.797100 -3.898055 -3.997759 -4.095408 -4.190517 -4.282840 -4.372309 -4.459004 -4.543129 -4.624941 -4.704723 -4.782787 -4.859478 -4.935166 -0.320994 0.331751 0.341491 0.350220 0.357977 0.364810 0.370697 0.375529 0.379330 0.382107 0.383669 0.383798 0.382283 0.379004 0.373746 0.366392 0.356813 0.344871 0.330421 0.313399 0.293790 0.271704 0.247285 0.220658 0.191933 0.161206 0.128569 0.094109 0.057916 0.020080 -0.019328 -0.060234 -0.102571 -0.146331 -0.191476 -0.237962 -0.285752 -0.334815 -0.385130 -0.436683 -0.489467 -0.543483 -0.598734 -0.655223 -0.712946 -0.771896 -0.832057 -0.893402 -0.955892 -1.019485 -1.084134 -1.149783 -1.216373 -1.283843 -1.352137 -1.421206 -1.491000 -1.561466 -1.632546 -1.704169 -1.776237 -1.848601 -1.921046 -1.993289 -2.065000 -2.135797 -2.205302 -2.273226 -2.339382 -2.403699 -2.466276 -2.527404 -2.587483 -2.647018 -2.706613 -2.766925 -2.828594 -2.892231 -2.958402 -3.027611 -3.100296 -3.176862 -3.257686 -3.343036 -3.433026 -3.527613 -3.626500 -3.729056 -3.834361 -3.941322 -4.048802 -4.155652 -4.260855 -4.363673 -4.463705 -4.560758 -4.654815 -4.746014 -4.834592 -4.920827 -5.005030 -5.087546 -5.168751 -5.249057 -0.308907 0.320154 0.330353 0.339478 0.347560 0.354647 0.360741 0.365717 0.369583 0.372381 0.373946 0.374025 0.372423 0.368991 0.363529 0.355889 0.345939 0.333531 0.318510 0.300767 0.280282 0.257156 0.231549 0.203597 0.173420 0.141124 0.106809 0.070569 0.032502 -0.007295 -0.048753 -0.091786 -0.136336 -0.182397 -0.229923 -0.278868 -0.329195 -0.380874 -0.433885 -0.488216 -0.543864 -0.600828 -0.659112 -0.718714 -0.779630 -0.841844 -0.905335 -0.970065 -1.035992 -1.103068 -1.171240 -1.240447 -1.310624 -1.381714 -1.453664 -1.526428 -1.599959 -1.674207 -1.749115 -1.824602 -1.900542 -1.976737 -2.052913 -2.128742 -2.203832 -2.277754 -2.350149 -2.420766 -2.489458 -2.556237 -2.621314 -2.685048 -2.747908 -2.810477 -2.873430 -2.937455 -3.003216 -3.071330 -3.142358 -3.216782 -3.295034 -3.377531 -3.464645 -3.556611 -3.653513 -3.755240 -3.861375 -3.971139 -4.083488 -4.197225 -4.311124 -4.423980 -4.534801 -4.642939 -4.748055 -4.850012 -4.948846 -5.044744 -5.137972 -5.228834 -5.317672 -5.404864 -5.490826 -5.576020 -0.296369 0.308064 0.318705 0.328226 0.336635 0.343977 0.350275 0.355392 0.359318 0.362123 0.363669 0.363678 0.361965 0.358347 0.352656 0.344696 0.334348 0.321442 0.305825 0.287334 0.265945 0.241743 0.214906 0.185582 0.153903 0.119985 0.083933 0.045851 0.005845 -0.035983 -0.079560 -0.124796 -0.171644 -0.220091 -0.270085 -0.321581 -0.374540 -0.428935 -0.484747 -0.541966 -0.600589 -0.660619 -0.722054 -0.784891 -0.849119 -0.914718 -0.981655 -1.049889 -1.119372 -1.190049 -1.261862 -1.334744 -1.408632 -1.483471 -1.559213 -1.635816 -1.713239 -1.791434 -1.870337 -1.949849 -2.029796 -2.109923 -2.189906 -2.269356 -2.347816 -2.424855 -2.500150 -2.573486 -2.644782 -2.714148 -2.781884 -2.848409 -2.914271 -2.980131 -3.046720 -3.114756 -3.184913 -3.257812 -3.333991 -3.413919 -3.498035 -3.586769 -3.680480 -3.779376 -3.883507 -3.992675 -4.106325 -4.223533 -4.343123 -4.463801 -4.584244 -4.703224 -4.819802 -4.933423 -5.043795 -5.150839 -5.254645 -5.355443 -5.453524 -5.549223 -5.642917 -5.735022 -5.826004 -5.916370 -0.283382 0.295505 0.306548 0.316454 0.325191 0.332790 0.339287 0.344543 0.348526 0.351324 0.352833 0.352757 0.350906 0.347077 0.341129 0.332815 0.322042 0.308603 0.292359 0.273093 0.250768 0.225455 0.197345 0.166604 0.133371 0.097773 0.059924 0.019937 -0.022074 -0.066006 -0.111775 -0.159292 -0.208523 -0.259442 -0.311995 -0.366135 -0.421825 -0.479039 -0.537760 -0.597979 -0.659695 -0.722907 -0.787614 -0.853806 -0.921468 -0.990571 -1.061075 -1.132932 -1.206090 -1.280489 -1.356061 -1.432742 -1.510470 -1.589195 -1.668874 -1.749471 -1.830951 -1.913262 -1.996329 -2.080014 -2.164086 -2.248235 -2.332080 -2.415157 -2.496979 -2.577144 -2.655364 -2.731474 -2.805478 -2.877578 -2.948140 -3.017655 -3.086751 -3.156169 -3.226682 -3.299026 -3.373883 -3.451861 -3.533476 -3.619194 -3.709472 -3.804751 -3.905372 -4.011522 -4.123204 -4.240113 -4.361543 -4.486428 -4.613455 -4.741227 -4.868342 -4.993578 -5.116071 -5.235342 -5.351154 -5.463476 -5.572455 -5.678355 -5.781499 -5.882255 -5.981036 -6.078306 -6.174586 -6.270425 -0.269955 0.282485 0.293898 0.304159 0.313219 0.321075 0.327767 0.333161 0.337197 0.339978 0.341429 0.341255 0.339239 0.335182 0.328940 0.320247 0.309016 0.295009 0.278105 0.258035 0.234743 0.208281 0.178856 0.146648 0.111808 0.074473 0.034766 -0.007192 -0.051278 -0.097385 -0.145423 -0.195302 -0.247003 -0.300483 -0.355688 -0.412569 -0.471091 -0.531230 -0.592970 -0.656304 -0.721230 -0.787745 -0.855845 -0.925515 -0.996732 -1.069459 -1.143650 -1.219252 -1.296207 -1.374448 -1.453904 -1.534512 -1.616217 -1.698970 -1.782740 -1.867498 -1.953204 -2.039804 -2.127197 -2.215190 -2.303492 -2.391736 -2.479470 -2.566169 -2.651361 -2.734678 -2.815869 -2.894839 -2.971683 -3.046672 -3.120237 -3.192952 -3.265529 -3.338780 -3.413506 -3.490456 -3.570310 -3.653650 -3.740979 -3.832777 -3.929519 -4.031652 -4.139503 -4.253238 -4.372796 -4.497747 -4.627226 -4.760014 -4.894666 -5.029680 -5.163602 -5.295240 -5.423821 -5.548922 -5.670362 -5.788162 -5.902518 -6.013729 -6.122152 -6.228191 -6.332304 -6.435010 -6.536883 -6.638505 -0.256105 0.269002 0.280772 0.291346 0.300711 0.308823 0.315707 0.321235 0.325320 0.328075 0.329453 0.329166 0.326959 0.322656 0.316084 0.306991 0.295265 0.280657 0.263054 0.242152 0.217860 0.190211 0.159427 0.125702 0.089200 0.050068 0.008440 -0.035556 -0.081786 -0.130145 -0.180530 -0.232857 -0.287114 -0.343246 -0.401197 -0.460919 -0.522379 -0.585552 -0.650423 -0.716988 -0.785243 -0.855183 -0.926798 -1.000068 -1.074962 -1.151436 -1.229437 -1.308908 -1.389782 -1.471988 -1.555457 -1.640129 -1.725952 -1.812887 -1.900912 -1.989999 -2.080107 -2.171169 -2.263038 -2.355458 -2.448081 -2.540472 -2.632099 -2.722429 -2.811016 -2.897524 -2.981761 -3.063712 -3.143534 -3.221571 -3.298330 -3.374466 -3.450785 -3.528149 -3.607380 -3.689230 -3.774364 -3.863341 -3.956665 -4.054834 -4.158343 -4.267647 -4.383059 -4.504718 -4.632480 -4.765773 -4.903566 -5.044475 -5.186934 -5.329340 -5.470211 -5.608416 -5.743265 -5.874385 -6.001649 -6.125131 -6.245074 -6.361812 -6.475738 -6.587299 -6.697004 -6.805432 -6.913203 -7.020931 -0.241875 0.255074 0.267166 0.278031 0.287666 0.296025 0.303097 0.308757 0.312888 0.315606 0.316900 0.316482 0.314064 0.309492 0.302560 0.293039 0.280782 0.265544 0.247203 0.225436 0.200110 0.171234 0.139045 0.103751 0.065532 0.024543 -0.019073 -0.065174 -0.113621 -0.164308 -0.217119 -0.271984 -0.328887 -0.387765 -0.448560 -0.511226 -0.575728 -0.642046 -0.710165 -0.780079 -0.851784 -0.925271 -1.000525 -1.077519 -1.156213 -1.236556 -1.318492 -1.401956 -1.486875 -1.573176 -1.660792 -1.749669 -1.839760 -1.931039 -2.023488 -2.117080 -2.211768 -2.307456 -2.403937 -2.500891 -2.597908 -2.694470 -2.790001 -2.883987 -2.976008 -3.065773 -3.153161 -3.238219 -3.321166 -3.402422 -3.482572 -3.562367 -3.642696 -3.724458 -3.808482 -3.895521 -3.986209 -4.081093 -4.180694 -4.285529 -4.396115 -4.512912 -4.636226 -4.766155 -4.902453 -5.044386 -5.190750 -5.339994 -5.490435 -5.640387 -5.788366 -5.933316 -6.074620 -6.211957 -6.345247 -6.474620 -6.600364 -6.722852 -6.842515 -6.959849 -7.075423 -7.189871 -7.303858 -7.418027 -0.227327 0.240729 0.253085 0.264225 0.274089 0.282675 0.289930 0.295718 0.299890 0.302566 0.303764 0.303196 0.300553 0.295683 0.288368 0.278385 0.265560 0.249664 0.230543 0.207879 0.181481 0.151339 0.117697 0.080782 0.040787 -0.002122 -0.047791 -0.096069 -0.146809 -0.199899 -0.255220 -0.312714 -0.372354 -0.434074 -0.497813 -0.563526 -0.631182 -0.700757 -0.772241 -0.845624 -0.920902 -0.998060 -1.077077 -1.157919 -1.240537 -1.324876 -1.410873 -1.498456 -1.587548 -1.678077 -1.769982 -1.863210 -1.957727 -2.053518 -2.150567 -2.248842 -2.348288 -2.448755 -2.549969 -2.651552 -2.753013 -2.853760 -2.953222 -3.050903 -3.146415 -3.239530 -3.330191 -3.418488 -3.504713 -3.589367 -3.673119 -3.756823 -3.841439 -3.927881 -4.016987 -4.109489 -4.205998 -4.307064 -4.413226 -4.525025 -4.643004 -4.767627 -4.899191 -5.037745 -5.182911 -5.333779 -5.488962 -5.646752 -5.805349 -5.963005 -6.118265 -6.270151 -6.418106 -6.561861 -6.701385 -6.836863 -6.968631 -7.097099 -7.222743 -7.346117 -7.467850 -7.588630 -7.709162 -7.830114 -0.212501 0.226016 0.238552 0.249921 0.259996 0.268770 0.276197 0.282109 0.286319 0.288945 0.290036 0.289301 0.286418 0.281223 0.273504 0.263023 0.249600 0.233009 0.213068 0.189471 0.161964 0.130513 0.095369 0.056780 0.014949 -0.029944 -0.077736 -0.128262 -0.181371 -0.236945 -0.294861 -0.355076 -0.417548 -0.482207 -0.548993 -0.617861 -0.688780 -0.761729 -0.836696 -0.913671 -0.992644 -1.073599 -1.156504 -1.241319 -1.327988 -1.416451 -1.506636 -1.598467 -1.691864 -1.786760 -1.883098 -1.980832 -2.079942 -2.180420 -2.282246 -2.385388 -2.489758 -2.595143 -2.701204 -2.807491 -2.913426 -3.018387 -3.121819 -3.223248 -3.322333 -3.418913 -3.512970 -3.604644 -3.694311 -3.782549 -3.870126 -3.958004 -4.047182 -4.138588 -4.233056 -4.331290 -4.433884 -4.541406 -4.654418 -4.773484 -4.899179 -5.031974 -5.172148 -5.319683 -5.474048 -5.634140 -5.798384 -5.964926 -6.131856 -6.297384 -6.460110 -6.619132 -6.773942 -6.924321 -7.070291 -7.212097 -7.350118 -7.484805 -7.616688 -7.746383 -7.874577 -8.002011 -8.129426 -8.257511 -0.197408 0.210977 0.223602 0.235125 0.245393 0.254316 0.261894 0.267923 0.272164 0.274736 0.275709 0.274789 0.271652 0.266105 0.257960 0.246948 0.232897 0.215572 0.194769 0.170202 0.141547 0.108743 0.072049 0.031728 -0.012000 -0.058943 -0.108927 -0.161776 -0.217334 -0.275474 -0.336073 -0.399102 -0.464502 -0.532200 -0.602137 -0.674269 -0.748565 -0.825005 -0.903575 -0.984265 -1.067060 -1.151936 -1.238857 -1.327772 -1.418620 -1.511335 -1.605839 -1.702048 -1.799888 -1.899295 -2.000217 -2.102620 -2.206495 -2.311836 -2.418623 -2.526812 -2.636263 -2.746695 -2.857702 -2.968747 -3.079186 -3.188402 -3.295857 -3.401106 -3.503871 -3.604040 -3.701618 -3.796816 -3.890093 -3.982111 -4.073755 -4.166075 -4.260094 -4.356744 -4.456845 -4.561069 -4.670016 -4.784274 -4.904426 -5.031069 -5.164813 -5.306135 -5.455291 -5.612166 -5.776055 -5.945654 -6.119196 -6.294693 -6.470137 -6.643719 -6.814109 -6.980472 -7.142346 -7.299560 -7.452197 -7.600560 -7.745069 -7.886226 -8.024620 -8.160928 -8.295897 -8.430319 -8.564965 -8.700531 -0.182005 0.195633 0.208280 0.219865 0.230273 0.239324 0.247017 0.253151 0.257419 0.259930 0.260774 0.259653 0.256247 0.250324 0.241730 0.230153 0.215444 0.197347 0.175639 0.150061 0.120218 0.086017 0.047719 0.005609 -0.040078 -0.089138 -0.141386 -0.196635 -0.254722 -0.315512 -0.378887 -0.444823 -0.513248 -0.584088 -0.657283 -0.732790 -0.810578 -0.890628 -0.972924 -1.057454 -1.144197 -1.233122 -1.324185 -1.417329 -1.512487 -1.609584 -1.708537 -1.809261 -1.911686 -2.015753 -2.121416 -2.228657 -2.337474 -2.447860 -2.559794 -2.673202 -2.787879 -2.903478 -3.019513 -3.135357 -3.250341 -3.363867 -3.475412 -3.584576 -3.691144 -3.795024 -3.896254 -3.995129 -4.092190 -4.188198 -4.284165 -4.381198 -4.480333 -4.582505 -4.688499 -4.798973 -4.914543 -5.035819 -5.163404 -5.297944 -5.440081 -5.590296 -5.748815 -5.915389 -6.089120 -6.268501 -6.451577 -6.636233 -6.820376 -7.002209 -7.180469 -7.354383 -7.523535 -7.687802 -7.847333 -8.002489 -8.153732 -8.301621 -8.446810 -8.590036 -8.732106 -8.873857 -9.016086 -9.159479 - - -# Thrust coefficient - -0.234686 0.234877 0.235022 0.235122 0.235174 0.235179 0.235135 0.235043 0.234902 0.234712 0.234472 0.234184 0.233847 0.233461 0.233026 0.232545 0.232016 0.231442 0.230822 0.230158 0.229451 0.228701 0.227911 0.227080 0.226211 0.225304 0.224361 0.223382 0.222371 0.221328 0.220256 0.219158 0.218035 0.216890 0.215723 0.214537 0.213333 0.212113 0.210877 0.209627 0.208361 0.207078 0.205778 0.204458 0.203119 0.201761 0.200380 0.198974 0.197541 0.196078 0.194583 0.193057 0.191497 0.189901 0.188267 0.186593 0.184875 0.183111 0.181299 0.179433 0.177510 0.175523 0.173470 0.171347 0.169153 0.166888 0.164555 0.162158 0.159699 0.157177 0.154591 0.151941 0.149230 0.146460 0.143632 0.140753 0.137823 0.134845 0.131820 0.128748 0.125630 0.122469 0.119264 0.116016 0.112727 0.109399 0.106036 0.102641 0.099217 0.095766 0.092289 0.088789 0.085268 0.081727 0.078168 0.074593 0.071003 0.067399 0.063784 0.060158 0.056522 0.052879 0.049229 0.045573 -0.267586 0.267493 0.267339 0.267124 0.266848 0.266511 0.266114 0.265658 0.265144 0.264572 0.263944 0.263261 0.262524 0.261734 0.260894 0.260003 0.259064 0.258079 0.257049 0.255977 0.254865 0.253715 0.252531 0.251316 0.250073 0.248806 0.247516 0.246208 0.244882 0.243541 0.242185 0.240815 0.239431 0.238033 0.236617 0.235184 0.233730 0.232256 0.230759 0.229234 0.227681 0.226094 0.224474 0.222817 0.221122 0.219386 0.217604 0.215774 0.213891 0.211950 0.209945 0.207873 0.205728 0.203502 0.201191 0.198793 0.196310 0.193744 0.191098 0.188375 0.185574 0.182696 0.179740 0.176710 0.173608 0.170441 0.167210 0.163918 0.160565 0.157152 0.153680 0.150149 0.146562 0.142920 0.139226 0.135484 0.131697 0.127870 0.124005 0.120105 0.116172 0.112209 0.108218 0.104201 0.100159 0.096096 0.092011 0.087908 0.083787 0.079651 0.075500 0.071336 0.067161 0.062975 0.058781 0.054579 0.050370 0.046155 0.041936 0.037714 0.033489 0.029262 0.025034 0.020807 -0.301090 0.300607 0.300054 0.299432 0.298742 0.297986 0.297165 0.296280 0.295333 0.294327 0.293264 0.292147 0.290979 0.289762 0.288502 0.287200 0.285863 0.284495 0.283101 0.281685 0.280250 0.278798 0.277332 0.275853 0.274361 0.272858 0.271342 0.269811 0.268263 0.266695 0.265106 0.263491 0.261849 0.260176 0.258468 0.256723 0.254938 0.253109 0.251232 0.249301 0.247311 0.245256 0.243126 0.240914 0.238612 0.236212 0.233708 0.231099 0.228388 0.225580 0.222677 0.219678 0.216584 0.213393 0.210108 0.206732 0.203272 0.199736 0.196124 0.192439 0.188680 0.184849 0.180946 0.176973 0.172930 0.168823 0.164657 0.160436 0.156164 0.151846 0.147484 0.143081 0.138640 0.134163 0.129653 0.125112 0.120542 0.115945 0.111323 0.106678 0.102011 0.097324 0.092618 0.087896 0.083158 0.078406 0.073642 0.068865 0.064079 0.059284 0.054482 0.049674 0.044860 0.040043 0.035222 0.030400 0.025577 0.020753 0.015930 0.011109 0.006289 0.001472 -0.003341 -0.008148 -0.334730 0.333794 0.332785 0.331705 0.330557 0.329344 0.328072 0.326744 0.325366 0.323943 0.322481 0.320988 0.319467 0.317924 0.316364 0.314787 0.313199 0.311600 0.309991 0.308374 0.306745 0.305102 0.303441 0.301761 0.300058 0.298329 0.296570 0.294778 0.292947 0.291074 0.289154 0.287181 0.285150 0.283051 0.280874 0.278609 0.276244 0.273768 0.271174 0.268458 0.265621 0.262664 0.259592 0.256402 0.253091 0.249660 0.246113 0.242458 0.238703 0.234852 0.230909 0.226876 0.222749 0.218530 0.214222 0.209831 0.205360 0.200815 0.196204 0.191531 0.186800 0.182012 0.177171 0.172280 0.167343 0.162363 0.157341 0.152282 0.147186 0.142056 0.136895 0.131705 0.126486 0.121242 0.115973 0.110682 0.105369 0.100037 0.094687 0.089320 0.083938 0.078543 0.073135 0.067717 0.062290 0.056855 0.051413 0.045966 0.040516 0.035063 0.029608 0.024152 0.018697 0.013242 0.007789 0.002338 -0.003110 -0.008553 -0.013990 -0.019420 -0.024842 -0.030253 -0.035651 -0.041034 -0.368288 0.366893 0.365440 0.363936 0.362387 0.360800 0.359181 0.357538 0.355875 0.354198 0.352510 0.350813 0.349109 0.347399 0.345680 0.343949 0.342204 0.340442 0.338658 0.336849 0.335010 0.333135 0.331219 0.329255 0.327238 0.325161 0.323013 0.320781 0.318451 0.316009 0.313442 0.310741 0.307902 0.304925 0.301810 0.298555 0.295157 0.291613 0.287925 0.284100 0.280146 0.276072 0.271881 0.267574 0.263152 0.258615 0.253970 0.249221 0.244374 0.239438 0.234418 0.229320 0.224149 0.218913 0.213616 0.208261 0.202852 0.197395 0.191886 0.186330 0.180727 0.175082 0.169396 0.163672 0.157911 0.152117 0.146291 0.140434 0.134548 0.128636 0.122698 0.116737 0.110755 0.104752 0.098730 0.092692 0.086639 0.080571 0.074492 0.068402 0.062304 0.056198 0.050087 0.043971 0.037852 0.031731 0.025609 0.019486 0.013364 0.007242 0.001123 -0.004994 -0.011106 -0.017213 -0.023313 -0.029405 -0.035487 -0.041556 -0.047609 -0.053645 -0.059660 -0.065650 -0.071614 -0.077545 -0.402146 0.400435 0.398701 0.396950 0.395188 0.393418 0.391644 0.389866 0.388084 0.386297 0.384500 0.382690 0.380864 0.379014 0.377134 0.375219 0.373261 0.371253 0.369187 0.367055 0.364840 0.362525 0.360095 0.357534 0.354830 0.351976 0.348968 0.345804 0.342478 0.338983 0.335315 0.331477 0.327475 0.323319 0.319018 0.314573 0.309984 0.305253 0.300383 0.295379 0.290249 0.285001 0.279645 0.274188 0.268641 0.263009 0.257298 0.251515 0.245665 0.239748 0.233770 0.227737 0.221650 0.215514 0.209331 0.203103 0.196830 0.190512 0.184151 0.177750 0.171311 0.164836 0.158326 0.151784 0.145211 0.138610 0.131982 0.125329 0.118653 0.111955 0.105238 0.098503 0.091752 0.084986 0.078208 0.071420 0.064622 0.057817 0.051006 0.044190 0.037371 0.030550 0.023727 0.016903 0.010080 0.003257 -0.003564 -0.010382 -0.017197 -0.024006 -0.030808 -0.037601 -0.044384 -0.051152 -0.057904 -0.064636 -0.071346 -0.078029 -0.084682 -0.091299 -0.097875 -0.104406 -0.110884 -0.117304 -0.437429 0.435609 0.433792 0.431976 0.430158 0.428335 0.426502 0.424652 0.422777 0.420868 0.418919 0.416920 0.414863 0.412733 0.410514 0.408184 0.405727 0.403128 0.400374 0.397457 0.394372 0.391110 0.387660 0.384014 0.380168 0.376127 0.371898 0.367492 0.362912 0.358158 0.353230 0.348132 0.342872 0.337459 0.331902 0.326212 0.320399 0.314473 0.308440 0.302308 0.296084 0.289774 0.283385 0.276923 0.270392 0.263796 0.257143 0.250430 0.243660 0.236839 0.229970 0.223053 0.216093 0.209092 0.202045 0.194956 0.187824 0.180653 0.173445 0.166202 0.158925 0.151617 0.144280 0.136916 0.129527 0.122114 0.114680 0.107226 0.099754 0.092266 0.084765 0.077251 0.069727 0.062194 0.054654 0.047108 0.039559 0.032006 0.024450 0.016893 0.009335 0.001777 -0.005780 -0.013335 -0.020888 -0.028436 -0.035977 -0.043511 -0.051034 -0.058544 -0.066037 -0.073511 -0.080962 -0.088385 -0.095775 -0.103128 -0.110438 -0.117699 -0.124902 -0.132043 -0.139113 -0.146104 -0.153010 -0.159822 -0.475295 0.473479 0.471648 0.469792 0.467903 0.465968 0.463979 0.461919 0.459765 0.457498 0.455100 0.452555 0.449850 0.446974 0.443917 0.440667 0.437209 0.433530 0.429626 0.425499 0.421157 0.416606 0.411845 0.406876 0.401699 0.396323 0.390757 0.385012 0.379102 0.373039 0.366834 0.360496 0.354035 0.347459 0.340774 0.333989 0.327108 0.320138 0.313085 0.305953 0.298747 0.291473 0.284136 0.276737 0.269283 0.261775 0.254211 0.246595 0.238934 0.231226 0.223476 0.215686 0.207854 0.199978 0.192062 0.184106 0.176113 0.168086 0.160026 0.151936 0.143817 0.135671 0.127501 0.119309 0.111096 0.102864 0.094616 0.086353 0.078077 0.069791 0.061495 0.053192 0.044882 0.036568 0.028250 0.019929 0.011606 0.003281 -0.005044 -0.013369 -0.021694 -0.030015 -0.038332 -0.046643 -0.054945 -0.063236 -0.071512 -0.079770 -0.088006 -0.096216 -0.104393 -0.112533 -0.120630 -0.128675 -0.136662 -0.144584 -0.152431 -0.160197 -0.167872 -0.175450 -0.182922 -0.190279 -0.197511 -0.204609 -0.516120 0.514190 0.512175 0.510047 0.507792 0.505393 0.502836 0.500106 0.497192 0.494076 0.490742 0.487172 0.483355 0.479288 0.474974 0.470418 0.465616 0.460565 0.455268 0.449735 0.443977 0.438009 0.431845 0.425501 0.418989 0.412321 0.405506 0.398555 0.391476 0.384276 0.376964 0.369546 0.362027 0.354414 0.346712 0.338926 0.331060 0.323117 0.315103 0.307021 0.298875 0.290670 0.282407 0.274093 0.265727 0.257307 0.248840 0.240330 0.231776 0.223184 0.214553 0.205879 0.197164 0.188409 0.179617 0.170789 0.161929 0.153038 0.144118 0.135171 0.126200 0.117206 0.108192 0.099159 0.090111 0.081047 0.071972 0.062886 0.053791 0.044689 0.035581 0.026468 0.017351 0.008230 -0.000893 -0.010018 -0.019145 -0.028271 -0.037395 -0.046516 -0.055632 -0.064740 -0.073837 -0.082919 -0.091982 -0.101021 -0.110032 -0.119007 -0.127941 -0.136826 -0.145654 -0.154416 -0.163104 -0.171709 -0.180223 -0.188637 -0.196943 -0.205132 -0.213194 -0.221121 -0.228901 -0.236525 -0.243978 -0.251247 -0.558741 0.556248 0.553578 0.550711 0.547629 0.544312 0.540740 0.536900 0.532786 0.528398 0.523730 0.518775 0.513532 0.508006 0.502211 0.496164 0.489884 0.483387 0.476688 0.469800 0.462736 0.455508 0.448126 0.440600 0.432938 0.425147 0.417236 0.409211 0.401078 0.392844 0.384512 0.376089 0.367578 0.358984 0.350311 0.341562 0.332740 0.323848 0.314890 0.305870 0.296795 0.287663 0.278483 0.269253 0.259972 0.250646 0.241278 0.231869 0.222424 0.212939 0.203411 0.193841 0.184233 0.174588 0.164909 0.155197 0.145456 0.135687 0.125892 0.116075 0.106236 0.096377 0.086503 0.076613 0.066711 0.056798 0.046876 0.036946 0.027009 0.017066 0.007118 -0.002834 -0.012789 -0.022748 -0.032708 -0.042668 -0.052627 -0.062583 -0.072532 -0.082472 -0.092398 -0.102305 -0.112190 -0.122044 -0.131862 -0.141636 -0.151357 -0.161016 -0.170604 -0.180112 -0.189531 -0.198850 -0.208062 -0.217156 -0.226123 -0.234955 -0.243640 -0.252170 -0.260532 -0.268716 -0.276706 -0.284486 -0.292038 -0.299343 -0.600917 0.597455 0.593713 0.589681 0.585346 0.580696 0.575720 0.570416 0.564791 0.558860 0.552645 0.546168 0.539446 0.532495 0.525330 0.517964 0.510410 0.502680 0.494784 0.486731 0.478531 0.470192 0.461721 0.453126 0.444412 0.435586 0.426654 0.417621 0.408491 0.399269 0.389959 0.380565 0.371089 0.361534 0.351905 0.342204 0.332434 0.322599 0.312702 0.302751 0.292746 0.282692 0.272590 0.262436 0.252239 0.242002 0.231724 0.221411 0.211055 0.200655 0.190214 0.179734 0.169217 0.158666 0.148082 0.137470 0.126829 0.116164 0.105476 0.094768 0.084042 0.073300 0.062544 0.051776 0.040998 0.030210 0.019415 0.008612 -0.002197 -0.013012 -0.023832 -0.034656 -0.045483 -0.056312 -0.067140 -0.077964 -0.088782 -0.099588 -0.110379 -0.121147 -0.131887 -0.142591 -0.153251 -0.163857 -0.174398 -0.184866 -0.195250 -0.205539 -0.215723 -0.225794 -0.235740 -0.245552 -0.255220 -0.264732 -0.274080 -0.283253 -0.292238 -0.301024 -0.309593 -0.317928 -0.326010 -0.333818 -0.341330 -0.348521 -0.640702 0.635845 0.630626 0.625052 0.619137 0.612902 0.606371 0.599562 0.592496 0.585184 0.577642 0.569882 0.561919 0.553762 0.545423 0.536911 0.528237 0.519408 0.510433 0.501320 0.492075 0.482704 0.473215 0.463613 0.453903 0.444089 0.434177 0.424170 0.414071 0.403884 0.393612 0.383259 0.372826 0.362318 0.351737 0.341086 0.330368 0.319589 0.308753 0.297863 0.286924 0.275936 0.264897 0.253814 0.242690 0.231526 0.220327 0.209081 0.197791 0.186459 0.175086 0.163676 0.152231 0.140754 0.129246 0.117710 0.106150 0.094567 0.082964 0.071344 0.059708 0.048058 0.036395 0.024722 0.013038 0.001345 -0.010356 -0.022065 -0.033780 -0.045502 -0.057228 -0.068958 -0.080688 -0.092415 -0.104136 -0.115844 -0.127533 -0.139198 -0.150830 -0.162420 -0.173958 -0.185433 -0.196834 -0.208148 -0.219366 -0.230477 -0.241469 -0.252333 -0.263056 -0.273629 -0.284039 -0.294278 -0.304334 -0.314195 -0.323850 -0.333285 -0.342483 -0.351426 -0.360092 -0.368459 -0.376502 -0.384198 -0.391518 -0.398436 -0.676156 0.669722 0.662980 0.655946 0.648637 0.641070 0.633261 0.625218 0.616951 0.608472 0.599791 0.590917 0.581860 0.572629 0.563232 0.553679 0.543975 0.534130 0.524149 0.514039 0.503806 0.493456 0.482993 0.472422 0.461747 0.450972 0.440099 0.429132 0.418075 0.406930 0.395700 0.384388 0.372998 0.361532 0.349993 0.338384 0.326711 0.314978 0.303190 0.291351 0.279463 0.267522 0.255536 0.243508 0.231439 0.219334 0.207180 0.194979 0.182734 0.170447 0.158122 0.145759 0.133363 0.120936 0.108481 0.096000 0.083496 0.070972 0.058430 0.045871 0.033297 0.020710 0.008110 -0.004501 -0.017123 -0.029755 -0.042396 -0.055046 -0.067704 -0.080367 -0.093032 -0.105695 -0.118352 -0.130996 -0.143621 -0.156218 -0.168780 -0.181294 -0.193749 -0.206133 -0.218433 -0.230637 -0.242733 -0.254709 -0.266554 -0.278256 -0.289804 -0.301185 -0.312388 -0.323403 -0.334216 -0.344818 -0.355195 -0.365333 -0.375214 -0.384821 -0.394130 -0.403119 -0.411763 -0.420035 -0.427908 -0.435355 -0.442347 -0.448851 -0.707280 0.699577 0.691612 0.683400 0.674953 0.666274 0.657374 0.648264 0.638953 0.629444 0.619746 0.609869 0.599819 0.589603 0.579230 0.568705 0.558038 0.547233 0.536296 0.525234 0.514051 0.502751 0.491339 0.479817 0.468189 0.456459 0.444630 0.432704 0.420687 0.408579 0.396384 0.384106 0.371748 0.359312 0.346802 0.334223 0.321580 0.308880 0.296125 0.283321 0.270461 0.257553 0.244603 0.231610 0.218578 0.205495 0.192363 0.179183 0.165959 0.152694 0.139391 0.126052 0.112681 0.099280 0.085853 0.072402 0.058930 0.045437 0.031927 0.018399 0.004857 -0.008701 -0.022271 -0.035855 -0.049451 -0.063059 -0.076677 -0.090304 -0.103936 -0.117567 -0.131194 -0.144809 -0.158404 -0.171971 -0.185499 -0.198976 -0.212390 -0.225725 -0.238968 -0.252106 -0.265126 -0.278016 -0.290762 -0.303353 -0.315776 -0.328018 -0.340067 -0.351910 -0.363537 -0.374935 -0.386090 -0.396988 -0.407612 -0.417945 -0.427963 -0.437642 -0.446959 -0.455886 -0.464396 -0.472462 -0.480055 -0.487140 -0.493683 -0.499641 -0.735139 0.726403 0.717433 0.708230 0.698802 0.689160 0.679311 0.669257 0.659007 0.648572 0.637953 0.627156 0.616189 0.605056 0.593765 0.582323 0.570735 0.559008 0.547146 0.535155 0.523037 0.510799 0.498442 0.485971 0.473391 0.460703 0.447912 0.435020 0.422032 0.408951 0.395779 0.382521 0.369180 0.355759 0.342263 0.328697 0.315070 0.301383 0.287645 0.273850 0.260001 0.246109 0.232170 0.218192 0.204160 0.190074 0.175938 0.161755 0.147528 0.133260 0.118954 0.104614 0.090242 0.075843 0.061417 0.046968 0.032496 0.018005 0.003494 -0.011035 -0.025581 -0.040143 -0.054721 -0.069314 -0.083922 -0.098542 -0.113170 -0.127801 -0.142429 -0.157048 -0.171648 -0.186220 -0.200753 -0.215234 -0.229646 -0.243976 -0.258208 -0.272328 -0.286321 -0.300174 -0.313874 -0.327407 -0.340759 -0.353917 -0.366868 -0.379599 -0.392097 -0.404350 -0.416344 -0.428064 -0.439495 -0.450619 -0.461414 -0.471856 -0.481921 -0.491584 -0.500818 -0.509596 -0.517887 -0.525656 -0.532866 -0.539475 -0.545438 -0.550714 -0.760442 0.750839 0.741007 0.730951 0.720679 0.710190 0.699492 0.688596 0.677502 0.666215 0.654744 0.643092 0.631261 0.619260 0.607092 0.594763 0.582280 0.569648 0.556872 0.543958 0.530910 0.517732 0.504430 0.491006 0.477465 0.463811 0.450047 0.436178 0.422206 0.408137 0.393972 0.379718 0.365376 0.350952 0.336451 0.321881 0.307249 0.292559 0.277811 0.263003 0.248149 0.233245 0.218299 0.203297 0.188238 0.173124 0.157960 0.142747 0.127491 0.112194 0.096860 0.081493 0.066094 0.050667 0.035213 0.019734 0.004231 -0.011293 -0.026838 -0.042403 -0.057989 -0.073593 -0.089217 -0.104857 -0.120509 -0.136169 -0.151830 -0.167484 -0.183123 -0.198736 -0.214311 -0.229833 -0.245287 -0.260656 -0.275923 -0.291072 -0.306089 -0.320959 -0.335665 -0.350195 -0.364532 -0.378665 -0.392577 -0.406256 -0.419688 -0.432859 -0.445756 -0.458364 -0.470669 -0.482651 -0.494293 -0.505571 -0.516462 -0.526943 -0.536987 -0.546568 -0.555653 -0.564207 -0.572192 -0.579566 -0.586282 -0.592293 -0.597556 -0.602030 -0.783707 0.773348 0.762767 0.751967 0.740943 0.729701 0.718245 0.706574 0.694699 0.682624 0.670349 0.657884 0.645229 0.632388 0.619366 0.606168 0.592801 0.579272 0.565587 0.551751 0.537770 0.523649 0.509394 0.495008 0.480497 0.465864 0.451115 0.436253 0.421282 0.406208 0.391033 0.375763 0.360402 0.344955 0.329429 0.313835 0.298176 0.282459 0.266675 0.250839 0.234951 0.219016 0.203027 0.186973 0.170861 0.154693 0.138473 0.122205 0.105894 0.089542 0.073152 0.056728 0.040272 0.023786 0.007271 -0.009270 -0.025837 -0.042429 -0.059045 -0.075685 -0.092349 -0.109034 -0.125737 -0.142452 -0.159174 -0.175894 -0.192602 -0.209289 -0.225941 -0.242544 -0.259079 -0.275530 -0.291879 -0.308107 -0.324198 -0.340136 -0.355905 -0.371489 -0.386871 -0.402037 -0.416972 -0.431661 -0.446091 -0.460246 -0.474114 -0.487679 -0.500926 -0.513839 -0.526398 -0.538586 -0.550382 -0.561761 -0.572699 -0.583171 -0.593142 -0.602579 -0.611443 -0.619691 -0.627277 -0.634152 -0.640264 -0.645565 -0.650009 -0.653563 -0.805354 0.794305 0.783045 0.771562 0.759858 0.747928 0.735768 0.723387 0.710780 0.697954 0.684918 0.671666 0.658211 0.644551 0.630690 0.616634 0.602391 0.587968 0.573373 0.558613 0.543695 0.528624 0.513407 0.498048 0.482554 0.466929 0.451179 0.435307 0.419320 0.403221 0.387017 0.370710 0.354308 0.337817 0.321247 0.304605 0.287901 0.271127 0.254290 0.237399 0.220456 0.203458 0.186392 0.169261 0.152069 0.134820 0.117519 0.100169 0.082774 0.065338 0.047863 0.030352 0.012806 -0.004772 -0.022381 -0.040020 -0.057688 -0.075385 -0.093111 -0.110864 -0.128641 -0.146437 -0.164245 -0.182057 -0.199864 -0.217656 -0.235418 -0.253136 -0.270793 -0.288368 -0.305842 -0.323196 -0.340413 -0.357473 -0.374359 -0.391054 -0.407541 -0.423802 -0.439823 -0.455587 -0.471079 -0.486287 -0.501194 -0.515787 -0.530049 -0.543964 -0.557517 -0.570689 -0.583463 -0.595819 -0.607733 -0.619178 -0.630124 -0.640536 -0.650376 -0.659603 -0.668170 -0.676027 -0.683119 -0.689388 -0.694781 -0.699250 -0.702760 -0.705291 -0.825686 0.813979 0.802074 0.789956 0.777609 0.765028 0.752214 0.739153 0.725857 0.712315 0.698535 0.684527 0.670286 0.655822 0.641135 0.626231 0.611117 0.595803 0.580297 0.564609 0.548747 0.532717 0.516527 0.500184 0.483692 0.467059 0.450291 0.433392 0.416368 0.399226 0.381969 0.364606 0.347141 0.329584 0.311948 0.294238 0.276460 0.258606 0.240695 0.222724 0.204699 0.186602 0.168433 0.150197 0.131898 0.113541 0.095131 0.076670 0.058163 0.039612 0.021019 0.002388 -0.016281 -0.034986 -0.053725 -0.072498 -0.091305 -0.110146 -0.129018 -0.147915 -0.166833 -0.185762 -0.204694 -0.223617 -0.242520 -0.261387 -0.280199 -0.298937 -0.317579 -0.336105 -0.354495 -0.372728 -0.390787 -0.408651 -0.426301 -0.443721 -0.460891 -0.477795 -0.494418 -0.510746 -0.526764 -0.542456 -0.557807 -0.572800 -0.587421 -0.601653 -0.615481 -0.628889 -0.641854 -0.654353 -0.666355 -0.677829 -0.688737 -0.699040 -0.708691 -0.717638 -0.725827 -0.733195 -0.739682 -0.745230 -0.749786 -0.753315 -0.755795 -0.757214 -0.844926 0.832581 0.820040 0.807299 0.794335 0.781132 0.767675 0.753971 0.740000 0.725772 0.711277 0.696523 0.681519 0.666261 0.650760 0.635016 0.619036 0.602831 0.586413 0.569792 0.552978 0.535979 0.518805 0.501462 0.483958 0.466300 0.448495 0.430549 0.412469 0.394261 0.375932 0.357489 0.338939 0.320297 0.301570 0.282770 0.263889 0.244937 0.225923 0.206850 0.187706 0.168481 0.149182 0.129813 0.110380 0.090887 0.071338 0.051736 0.032084 0.012386 -0.007357 -0.027143 -0.046969 -0.066836 -0.086742 -0.106688 -0.126672 -0.146690 -0.166737 -0.186804 -0.206883 -0.226964 -0.247033 -0.267076 -0.287075 -0.307010 -0.326859 -0.346598 -0.366207 -0.385663 -0.404946 -0.424034 -0.442908 -0.461547 -0.479931 -0.498042 -0.515864 -0.533382 -0.550581 -0.567445 -0.583959 -0.600106 -0.615871 -0.631240 -0.646198 -0.660732 -0.674823 -0.688451 -0.701588 -0.714203 -0.726262 -0.737728 -0.748556 -0.758694 -0.768085 -0.776668 -0.784378 -0.791150 -0.796921 -0.801636 -0.805256 -0.807757 -0.809125 -0.809360 -0.863234 0.850259 0.837090 0.823722 0.810140 0.796321 0.782247 0.767899 0.753282 0.738376 0.723191 0.707713 0.691955 0.675920 0.659612 0.643035 0.626194 0.609099 0.591766 0.574206 0.556431 0.538453 0.520281 0.501924 0.483391 0.464691 0.445830 0.426818 0.407660 0.388366 0.368941 0.349395 0.329739 0.309987 0.290148 0.270229 0.250223 0.230150 0.210008 0.189799 0.169503 0.149124 0.128667 0.108137 0.087541 0.066882 0.046163 0.025388 0.004559 -0.016320 -0.037247 -0.058221 -0.079242 -0.100308 -0.121419 -0.142574 -0.163766 -0.184988 -0.206233 -0.227491 -0.248748 -0.269991 -0.291204 -0.312366 -0.333453 -0.354444 -0.375313 -0.396037 -0.416594 -0.436960 -0.457113 -0.477031 -0.496693 -0.516077 -0.535165 -0.553943 -0.572394 -0.590503 -0.608254 -0.625630 -0.642617 -0.659199 -0.675365 -0.691101 -0.706392 -0.721221 -0.735565 -0.749397 -0.762684 -0.775391 -0.787478 -0.798895 -0.809585 -0.819486 -0.828531 -0.836652 -0.843782 -0.849853 -0.854805 -0.858595 -0.861196 -0.862593 -0.862784 -0.861782 -0.880774 0.867136 0.853331 0.839329 0.825121 0.810684 0.795987 0.781017 0.765752 0.750191 0.734319 0.718140 0.701641 0.684839 0.667733 0.650330 0.632631 0.614648 0.596395 0.577890 0.559145 0.540176 0.520992 0.501606 0.482028 0.462266 0.442331 0.422231 0.401975 0.381571 0.361028 0.340357 0.319571 0.298686 0.277712 0.256644 0.235494 0.214269 0.192977 0.171594 0.150118 0.128556 0.106912 0.085193 0.063404 0.041546 0.019626 -0.002355 -0.024393 -0.046486 -0.068632 -0.090832 -0.113084 -0.135386 -0.157737 -0.180129 -0.202555 -0.225005 -0.247468 -0.269931 -0.292378 -0.314790 -0.337144 -0.359416 -0.381581 -0.403614 -0.425488 -0.447181 -0.468666 -0.489921 -0.510920 -0.531642 -0.552065 -0.572171 -0.591945 -0.611371 -0.630433 -0.649113 -0.667398 -0.685272 -0.702723 -0.719737 -0.736303 -0.752406 -0.768028 -0.783147 -0.797733 -0.811754 -0.825174 -0.837946 -0.850017 -0.861326 -0.871803 -0.881382 -0.889990 -0.897556 -0.904008 -0.909283 -0.913330 -0.916119 -0.917631 -0.917861 -0.916821 -0.914544 -0.897708 0.883350 0.868868 0.854215 0.839361 0.824294 0.808976 0.793375 0.777476 0.761260 0.744716 0.727838 0.710619 0.693055 0.675161 0.656934 0.638382 0.619511 0.600336 0.580878 0.561155 0.541182 0.520973 0.500541 0.479899 0.459058 0.438027 0.416819 0.395441 0.373905 0.352221 0.330401 0.308464 0.286421 0.264284 0.242045 0.219725 0.197326 0.174843 0.152257 0.129574 0.106800 0.083941 0.061002 0.037987 0.014901 -0.008253 -0.031473 -0.054754 -0.078097 -0.101499 -0.124961 -0.148479 -0.172051 -0.195669 -0.219324 -0.243006 -0.266703 -0.290400 -0.314080 -0.337721 -0.361299 -0.384789 -0.408163 -0.431394 -0.454455 -0.477320 -0.499963 -0.522357 -0.544477 -0.566300 -0.587803 -0.608970 -0.629784 -0.650230 -0.670289 -0.689947 -0.709189 -0.728002 -0.746373 -0.764291 -0.781743 -0.798715 -0.815188 -0.831140 -0.846542 -0.861361 -0.875556 -0.889078 -0.901869 -0.913864 -0.924991 -0.935178 -0.944352 -0.952437 -0.959357 -0.965044 -0.969441 -0.972511 -0.974232 -0.974593 -0.973604 -0.971297 -0.967729 -0.914214 0.899051 0.883822 0.868475 0.852954 0.837228 0.821275 0.805043 0.788501 0.771633 0.754424 0.736851 0.718918 0.700607 0.681927 0.662883 0.643479 0.623719 0.603619 0.583202 0.562490 0.541501 0.520252 0.498758 0.477034 0.455093 0.432947 0.410608 0.388086 0.365395 0.342545 0.319553 0.296440 0.273218 0.249887 0.226456 0.202937 0.179337 0.155629 0.131811 0.107892 0.083877 0.059771 0.035581 0.011310 -0.013038 -0.037459 -0.061951 -0.086511 -0.111140 -0.135834 -0.160591 -0.185408 -0.210276 -0.235186 -0.260127 -0.285085 -0.310044 -0.334987 -0.359888 -0.384722 -0.409462 -0.434080 -0.458546 -0.482831 -0.506908 -0.530747 -0.554322 -0.577605 -0.600571 -0.623200 -0.645473 -0.667373 -0.688885 -0.709991 -0.730676 -0.750928 -0.770732 -0.790079 -0.808957 -0.827352 -0.845250 -0.862634 -0.879481 -0.895761 -0.911440 -0.926475 -0.940811 -0.954390 -0.967141 -0.978992 -0.989866 -0.999687 -1.008376 -1.015854 -1.022048 -1.026893 -1.030345 -1.032374 -1.032964 -1.032122 -1.029875 -1.026279 -1.021422 -0.930433 0.914389 0.898330 0.882216 0.865982 0.849571 0.832949 0.816074 0.798886 0.781360 0.763480 0.745222 0.726571 0.707523 0.688062 0.668204 0.647949 0.627302 0.606273 0.584890 0.563178 0.541160 0.518855 0.496283 0.473459 0.450398 0.427114 0.403622 0.379934 0.356063 0.332024 0.307837 0.283522 0.259094 0.234545 0.209898 0.185156 0.160315 0.135352 0.110275 0.085090 0.059803 0.034421 0.008947 -0.016612 -0.042254 -0.067976 -0.093775 -0.119650 -0.145599 -0.171618 -0.197703 -0.223845 -0.250035 -0.276260 -0.302506 -0.328756 -0.354990 -0.381183 -0.407305 -0.433330 -0.459227 -0.484965 -0.510513 -0.535841 -0.560918 -0.585715 -0.610205 -0.634361 -0.658161 -0.681587 -0.704622 -0.727250 -0.749453 -0.771219 -0.792534 -0.813386 -0.833765 -0.853660 -0.873057 -0.891941 -0.910295 -0.928098 -0.945319 -0.961921 -0.977858 -0.993075 -1.007509 -1.021089 -1.033739 -1.045381 -1.055933 -1.065314 -1.073443 -1.080240 -1.085636 -1.089573 -1.092016 -1.092941 -1.092349 -1.090262 -1.086730 -1.081840 -1.075700 -0.946416 0.929465 0.912509 0.895552 0.878539 0.861396 0.844072 0.826522 0.808678 0.790489 0.771927 0.752982 0.733616 0.713829 0.693597 0.672925 0.651819 0.630283 0.608323 0.585966 0.563244 0.540184 0.516808 0.493139 0.469195 0.444994 0.420551 0.395883 0.371004 0.345930 0.320677 0.295273 0.269732 0.244068 0.218279 0.192386 0.166395 0.140279 0.114033 0.087667 0.061186 0.034596 0.007905 -0.018883 -0.045764 -0.072734 -0.099791 -0.126932 -0.154156 -0.181458 -0.208833 -0.236272 -0.263766 -0.291301 -0.318861 -0.346430 -0.373985 -0.401499 -0.428943 -0.456286 -0.483499 -0.510547 -0.537397 -0.564017 -0.590374 -0.616438 -0.642179 -0.667571 -0.692592 -0.717221 -0.741441 -0.765236 -0.788590 -0.811490 -0.833924 -0.855880 -0.877349 -0.898319 -0.918777 -0.938707 -0.958094 -0.976913 -0.995137 -1.012725 -1.029629 -1.045792 -1.061151 -1.075633 -1.089159 -1.101648 -1.113016 -1.123179 -1.132053 -1.139554 -1.145603 -1.150134 -1.153101 -1.154473 -1.154241 -1.152421 -1.149057 -1.144229 -1.138045 -1.130634 -0.962199 0.944317 0.926442 0.908577 0.890718 0.872784 0.854714 0.836451 0.817925 0.799059 0.779815 0.760164 0.740088 0.719555 0.698555 0.677070 0.655114 0.632686 0.609791 0.586454 0.562711 0.538594 0.514132 0.489348 0.464264 0.438901 0.413277 0.387410 0.361316 0.335014 0.308525 0.281877 0.255089 0.228160 0.201108 0.173944 0.146666 0.119245 0.091688 0.064001 0.036193 0.008271 -0.019761 -0.047896 -0.076132 -0.104464 -0.132891 -0.161408 -0.190013 -0.218699 -0.247458 -0.276278 -0.305147 -0.334048 -0.362963 -0.391867 -0.420733 -0.449530 -0.478227 -0.506790 -0.535186 -0.563378 -0.591331 -0.619012 -0.646388 -0.673429 -0.700106 -0.726396 -0.752278 -0.777736 -0.802752 -0.827311 -0.851402 -0.875011 -0.898129 -0.920745 -0.942849 -0.964427 -0.985465 -1.005944 -1.025843 -1.045131 -1.063768 -1.081703 -1.098879 -1.115231 -1.130688 -1.145167 -1.158585 -1.170855 -1.181891 -1.191604 -1.199907 -1.206715 -1.211951 -1.215556 -1.217491 -1.217737 -1.216300 -1.213216 -1.208556 -1.202425 -1.194953 -1.186290 -0.977811 0.958973 0.940157 0.921361 0.902591 0.883811 0.864940 0.845921 0.826677 0.807113 0.787173 0.766811 0.746010 0.724731 0.702958 0.680665 0.657856 0.634532 0.610698 0.586373 0.561598 0.536411 0.510845 0.484928 0.458685 0.432139 0.405311 0.378221 0.350889 0.323335 0.295585 0.267668 0.239605 0.211387 0.183046 0.154586 0.125985 0.097229 0.068329 0.039293 0.010128 -0.019160 -0.048564 -0.078080 -0.107704 -0.137433 -0.167262 -0.197189 -0.227206 -0.257305 -0.287474 -0.317700 -0.347966 -0.378252 -0.408534 -0.438781 -0.468963 -0.499047 -0.528998 -0.558779 -0.588353 -0.617682 -0.646731 -0.675465 -0.703852 -0.731864 -0.759474 -0.786663 -0.813411 -0.839703 -0.865524 -0.890861 -0.915703 -0.940039 -0.963861 -0.987158 -1.009917 -1.032123 -1.053757 -1.074796 -1.095211 -1.114959 -1.133989 -1.152245 -1.169661 -1.186164 -1.201673 -1.216101 -1.229358 -1.241357 -1.252004 -1.261209 -1.268880 -1.274932 -1.279293 -1.281913 -1.282760 -1.281830 -1.279146 -1.274772 -1.268805 -1.261371 -1.252622 -1.242728 -0.993273 0.973460 0.953676 0.933930 0.914217 0.894535 0.874813 0.854988 0.834983 0.814700 0.794034 0.772960 0.751412 0.729387 0.706830 0.683729 0.660063 0.635842 0.611064 0.585743 0.559924 0.533653 0.506967 0.479897 0.452474 0.424724 0.396669 0.368333 0.339738 0.310907 0.281874 0.252665 0.223296 0.193769 0.164110 0.134320 0.104364 0.074245 0.043973 0.013556 -0.016999 -0.047683 -0.078493 -0.109423 -0.140470 -0.171628 -0.202893 -0.234259 -0.265718 -0.297256 -0.328861 -0.360515 -0.392198 -0.423884 -0.455543 -0.487141 -0.518645 -0.550018 -0.581222 -0.612218 -0.642965 -0.673426 -0.703565 -0.733348 -0.762745 -0.791728 -0.820276 -0.848369 -0.875993 -0.903131 -0.929772 -0.955903 -0.981517 -1.006604 -1.031153 -1.055152 -1.078587 -1.101437 -1.123679 -1.145282 -1.166205 -1.186395 -1.205797 -1.224345 -1.241967 -1.258581 -1.274098 -1.288428 -1.301477 -1.313153 -1.323358 -1.331997 -1.338977 -1.344212 -1.347640 -1.349216 -1.348923 -1.346771 -1.342810 -1.337128 -1.329847 -1.321116 -1.311104 -1.300001 -1.008599 0.987799 0.967022 0.946302 0.925629 0.905001 0.884383 0.863705 0.842899 0.821849 0.800448 0.778631 0.756337 0.733541 0.710199 0.686281 0.661757 0.636632 0.610904 0.584580 0.557707 0.530337 0.502513 0.474272 0.445649 0.416671 0.387367 0.357760 0.327878 0.297747 0.267406 0.236881 0.206178 0.175319 0.144316 0.113159 0.081818 0.050305 0.018630 -0.013200 -0.045175 -0.077289 -0.109538 -0.141916 -0.174418 -0.207038 -0.239770 -0.272605 -0.305533 -0.338537 -0.371602 -0.404704 -0.437820 -0.470918 -0.503962 -0.536918 -0.569748 -0.602412 -0.634869 -0.667076 -0.698994 -0.730584 -0.761812 -0.792645 -0.823053 -0.853014 -0.882509 -0.911520 -0.940033 -0.968034 -0.995514 -1.022463 -1.048872 -1.074732 -1.100032 -1.124756 -1.148884 -1.172391 -1.195245 -1.217405 -1.238821 -1.259435 -1.279184 -1.297996 -1.315789 -1.332474 -1.347958 -1.362146 -1.374941 -1.386244 -1.395954 -1.403971 -1.410199 -1.414561 -1.416998 -1.417477 -1.415995 -1.412585 -1.407323 -1.400322 -1.391726 -1.381704 -1.370446 -1.358156 -1.023807 1.002002 0.980216 0.958494 0.936842 0.915246 0.893686 0.872117 0.850461 0.828607 0.806445 0.783852 0.760808 0.737218 0.713085 0.688338 0.662955 0.636920 0.610235 0.582900 0.554961 0.526477 0.497499 0.468068 0.438223 0.407996 0.377419 0.346519 0.315325 0.283870 0.252195 0.220328 0.188267 0.156046 0.123672 0.091112 0.058357 0.025420 -0.007690 -0.040963 -0.074391 -0.107969 -0.141690 -0.175548 -0.209537 -0.243650 -0.277879 -0.312213 -0.346635 -0.381130 -0.415676 -0.450246 -0.484808 -0.519328 -0.553767 -0.588087 -0.622247 -0.656203 -0.689912 -0.723331 -0.756420 -0.789141 -0.821460 -0.853347 -0.884775 -0.915726 -0.946181 -0.976125 -1.005545 -1.034431 -1.062773 -1.090564 -1.117795 -1.144455 -1.170529 -1.195995 -1.220829 -1.244997 -1.268459 -1.291164 -1.313057 -1.334074 -1.354145 -1.373190 -1.391119 -1.407838 -1.423250 -1.437256 -1.449751 -1.460632 -1.469794 -1.477132 -1.482553 -1.485983 -1.487374 -1.486707 -1.483995 -1.479297 -1.472717 -1.464389 -1.454479 -1.443176 -1.430686 -1.417233 -1.038908 1.016083 0.993272 0.970524 0.947870 0.925288 0.902756 0.880253 0.857705 0.835018 0.812045 0.788669 0.764839 0.740454 0.715507 0.689923 0.663674 0.636722 0.609072 0.580719 0.551702 0.522090 0.491939 0.461299 0.430211 0.398713 0.366839 0.334621 0.302091 0.269288 0.236254 0.203017 0.169576 0.135966 0.102185 0.068191 0.033992 -0.000401 -0.034976 -0.069725 -0.104640 -0.139713 -0.174939 -0.210309 -0.245816 -0.281453 -0.317208 -0.353067 -0.389011 -0.425020 -0.461066 -0.497119 -0.533140 -0.569093 -0.604935 -0.640624 -0.676118 -0.711369 -0.746332 -0.780964 -0.815228 -0.849084 -0.882501 -0.915451 -0.947914 -0.979870 -1.011302 -1.042198 -1.072548 -1.102342 -1.131574 -1.160234 -1.188313 -1.215796 -1.242662 -1.268885 -1.294430 -1.319257 -1.343317 -1.366555 -1.388908 -1.410307 -1.430674 -1.449921 -1.467953 -1.484672 -1.499975 -1.513757 -1.525908 -1.536318 -1.544879 -1.551482 -1.556039 -1.558483 -1.558778 -1.556918 -1.552942 -1.546935 -1.539023 -1.529363 -1.518141 -1.505566 -1.491862 -1.477265 -1.053915 1.030053 1.006200 0.982410 0.958727 0.935139 0.911614 0.888138 0.864671 0.841106 0.817290 0.793107 0.768456 0.743272 0.717484 0.691057 0.663928 0.636054 0.607431 0.578051 0.547944 0.517188 0.485848 0.453978 0.421626 0.388834 0.355640 0.322079 0.288188 0.254014 0.219598 0.184960 0.150116 0.115089 0.079862 0.044405 0.008731 -0.027148 -0.063221 -0.099478 -0.135911 -0.172513 -0.209274 -0.246188 -0.283245 -0.320436 -0.357745 -0.395156 -0.432646 -0.470190 -0.507755 -0.545304 -0.582796 -0.620191 -0.657444 -0.694510 -0.731342 -0.767891 -0.804113 -0.839965 -0.875409 -0.910409 -0.944934 -0.978964 -1.012476 -1.045455 -1.077886 -1.109757 -1.141062 -1.171792 -1.201941 -1.231499 -1.260450 -1.288776 -1.316449 -1.343435 -1.369691 -1.395169 -1.419818 -1.443573 -1.466369 -1.488127 -1.508764 -1.528185 -1.546291 -1.562976 -1.578134 -1.591651 -1.603411 -1.613302 -1.621208 -1.627022 -1.630661 -1.632068 -1.631219 -1.628127 -1.622858 -1.615522 -1.606268 -1.595273 -1.582744 -1.568906 -1.554002 -1.538283 -1.068839 1.043923 1.019012 0.994161 0.969424 0.944811 0.920276 0.895799 0.871375 0.846895 0.822211 0.797181 0.771694 0.745684 0.719039 0.691756 0.663731 0.634931 0.605324 0.574907 0.543700 0.511785 0.479236 0.446117 0.412480 0.378370 0.343832 0.308904 0.273628 0.238057 0.202234 0.166168 0.129892 0.093420 0.056713 0.019762 -0.017418 -0.054814 -0.092416 -0.130213 -0.168197 -0.206358 -0.244687 -0.283176 -0.321814 -0.360588 -0.399480 -0.438468 -0.477527 -0.516625 -0.555724 -0.594783 -0.633759 -0.672606 -0.711279 -0.749728 -0.787904 -0.825758 -0.863246 -0.900326 -0.936959 -0.973114 -1.008765 -1.043890 -1.078472 -1.112495 -1.145948 -1.178821 -1.211109 -1.242804 -1.273898 -1.304378 -1.334224 -1.363408 -1.391896 -1.419645 -1.446608 -1.472732 -1.497957 -1.522215 -1.545434 -1.567531 -1.588413 -1.607982 -1.626131 -1.642751 -1.657726 -1.670936 -1.682262 -1.691584 -1.698782 -1.703753 -1.706423 -1.706744 -1.704706 -1.700349 -1.693764 -1.685084 -1.674478 -1.662146 -1.648313 -1.633222 -1.617132 -1.600314 -1.083687 1.057701 1.031715 1.005787 0.979975 0.954313 0.928752 0.903250 0.877833 0.852413 0.826826 0.800919 0.774574 0.747706 0.720200 0.692031 0.663100 0.633364 0.602765 0.571302 0.538981 0.505891 0.472117 0.437728 0.402782 0.367333 0.331426 0.295106 0.258420 0.221427 0.184169 0.146651 0.108915 0.070962 0.032745 -0.005729 -0.044446 -0.083391 -0.122554 -0.161923 -0.201489 -0.241241 -0.281170 -0.321265 -0.361514 -0.401900 -0.442401 -0.482991 -0.523640 -0.564311 -0.604959 -0.645542 -0.686013 -0.726324 -0.766425 -0.806265 -0.845793 -0.884961 -0.923724 -0.962042 -0.999878 -1.037204 -1.073999 -1.110241 -1.145914 -1.181005 -1.215506 -1.249409 -1.282709 -1.315399 -1.347466 -1.378889 -1.409645 -1.439698 -1.469004 -1.497515 -1.525180 -1.551940 -1.577730 -1.602476 -1.626100 -1.648515 -1.669620 -1.689311 -1.707475 -1.723996 -1.738751 -1.751613 -1.762459 -1.771161 -1.777600 -1.781678 -1.783329 -1.782518 -1.779253 -1.773602 -1.765680 -1.755641 -1.743676 -1.730005 -1.714872 -1.698537 -1.681276 -1.663384 -1.098464 1.071394 1.044317 1.017295 0.990392 0.963657 0.937050 0.910507 0.884068 0.857677 0.831154 0.804348 0.777113 0.749364 0.720979 0.691902 0.662054 0.631366 0.599765 0.567244 0.533799 0.499518 0.464499 0.428819 0.392544 0.355730 0.318430 0.280693 0.242573 0.204132 0.165411 0.126420 0.087194 0.047724 0.007967 -0.032062 -0.072346 -0.112872 -0.153628 -0.194600 -0.235780 -0.277155 -0.318715 -0.360448 -0.402338 -0.444363 -0.486499 -0.528715 -0.570974 -0.613233 -0.655447 -0.697567 -0.739546 -0.781331 -0.822872 -0.864112 -0.905002 -0.945494 -0.985544 -1.025113 -1.064169 -1.102687 -1.140645 -1.178025 -1.214814 -1.251000 -1.286578 -1.321542 -1.355885 -1.389596 -1.422657 -1.455044 -1.486721 -1.517647 -1.547772 -1.577043 -1.605404 -1.632791 -1.659132 -1.684352 -1.708366 -1.731078 -1.752384 -1.772172 -1.790323 -1.806711 -1.821207 -1.833680 -1.844000 -1.852034 -1.857663 -1.860800 -1.861385 -1.859398 -1.854872 -1.847903 -1.838624 -1.827213 -1.813882 -1.798872 -1.782442 -1.764872 -1.746459 -1.727520 -1.113168 1.085007 1.056825 1.028693 1.000681 0.972851 0.945179 0.917580 0.890093 0.862700 0.835218 0.807485 0.779329 0.750680 0.721389 0.691389 0.660605 0.628948 0.596335 0.562746 0.528162 0.492675 0.456393 0.419401 0.381773 0.343572 0.304854 0.265675 0.226096 0.186183 0.145970 0.105477 0.064736 0.023712 -0.017616 -0.059230 -0.101113 -0.143251 -0.185630 -0.228238 -0.271063 -0.314094 -0.357317 -0.400719 -0.444278 -0.487970 -0.531766 -0.575629 -0.619516 -0.663381 -0.707175 -0.750848 -0.794347 -0.837620 -0.880609 -0.923262 -0.965526 -1.007355 -1.048706 -1.089544 -1.129839 -1.169570 -1.208714 -1.247257 -1.285188 -1.322498 -1.359183 -1.395237 -1.430651 -1.465408 -1.499484 -1.532846 -1.565453 -1.597255 -1.628198 -1.658226 -1.687276 -1.715279 -1.742161 -1.767841 -1.792229 -1.815220 -1.836706 -1.856565 -1.874673 -1.890895 -1.905095 -1.917138 -1.926885 -1.934201 -1.938973 -1.941121 -1.940595 -1.937393 -1.931579 -1.923266 -1.912613 -1.899819 -1.885117 -1.868765 -1.851041 -1.832247 -1.812705 -1.792749 -1.127789 1.098540 1.069243 1.039986 1.010849 0.981903 0.953146 0.924476 0.895919 0.867495 0.839034 0.810341 0.781244 0.751667 0.721446 0.690507 0.658764 0.626122 0.592488 0.557815 0.522081 0.485372 0.447806 0.409481 0.370477 0.330864 0.290704 0.250058 0.208997 0.167587 0.125852 0.083830 0.041541 -0.001067 -0.043996 -0.087225 -0.130739 -0.174520 -0.218556 -0.262831 -0.307334 -0.352052 -0.396971 -0.442070 -0.487327 -0.532713 -0.578192 -0.623723 -0.669257 -0.714745 -0.760135 -0.805375 -0.850409 -0.895181 -0.939633 -0.983710 -1.027362 -1.070543 -1.113212 -1.155339 -1.196896 -1.237860 -1.278215 -1.317948 -1.357049 -1.395514 -1.433338 -1.470512 -1.507022 -1.542845 -1.577952 -1.612299 -1.645840 -1.678520 -1.710280 -1.741060 -1.770792 -1.799403 -1.826815 -1.852943 -1.877688 -1.900941 -1.922585 -1.942491 -1.960525 -1.976547 -1.990414 -2.001984 -2.011112 -2.017663 -2.021532 -2.022644 -2.020965 -2.016515 -2.009383 -1.999706 -1.987663 -1.973475 -1.957395 -1.939699 -1.920687 -1.900684 -1.880036 -1.859099 -1.142290 1.111987 1.081574 1.051180 1.020902 0.990821 0.960961 0.931201 0.901556 0.872075 0.842609 0.812929 0.782872 0.752335 0.721167 0.689265 0.656545 0.622899 0.588232 0.552461 0.515564 0.477614 0.438747 0.399067 0.358665 0.317616 0.275989 0.233850 0.191281 0.148347 0.105066 0.061487 0.017615 -0.026608 -0.071168 -0.116045 -0.161220 -0.206676 -0.252400 -0.298375 -0.344589 -0.391026 -0.437671 -0.484498 -0.531481 -0.578585 -0.625770 -0.672987 -0.720187 -0.767315 -0.814319 -0.861142 -0.907725 -0.954009 -0.999937 -1.045454 -1.090509 -1.135060 -1.179068 -1.222505 -1.265346 -1.307569 -1.349162 -1.390112 -1.430414 -1.470065 -1.509057 -1.547377 -1.585006 -1.621914 -1.658062 -1.693402 -1.727881 -1.761439 -1.794015 -1.825542 -1.855948 -1.885160 -1.913093 -1.939656 -1.964745 -1.988241 -2.010021 -2.029948 -2.047879 -2.063666 -2.077162 -2.088217 -2.096681 -2.102422 -2.105342 -2.105375 -2.102502 -2.096773 -2.088299 -2.077236 -2.063787 -2.048196 -2.030731 -2.011690 -1.991398 -1.970205 -1.948479 -1.926603 -1.156634 1.125326 1.093814 1.062277 1.030845 0.999613 0.968628 0.937764 0.907013 0.876452 0.845955 0.815265 0.784224 0.752698 0.720564 0.687674 0.653960 0.619289 0.583575 0.546693 0.508618 0.469412 0.429222 0.388166 0.346342 0.303833 0.260713 0.217058 0.172955 0.128469 0.083619 0.038456 -0.007036 -0.052905 -0.099127 -0.145682 -0.192550 -0.239714 -0.287158 -0.334866 -0.382823 -0.431013 -0.479413 -0.527997 -0.576732 -0.625579 -0.674491 -0.723415 -0.772299 -0.821086 -0.869720 -0.918141 -0.966288 -1.014101 -1.061521 -1.108493 -1.154970 -1.200910 -1.246280 -1.291049 -1.335197 -1.378706 -1.421564 -1.463762 -1.505297 -1.546164 -1.586352 -1.625843 -1.664610 -1.702616 -1.739816 -1.776154 -1.811574 -1.846011 -1.879399 -1.911668 -1.942744 -1.972548 -2.000994 -2.027981 -2.053398 -2.077120 -2.099014 -2.118936 -2.136734 -2.152253 -2.165339 -2.175836 -2.183591 -2.188478 -2.190404 -2.189316 -2.185215 -2.178178 -2.168335 -2.155868 -2.141000 -2.123994 -2.105138 -2.084755 -2.063194 -2.040831 -2.018064 -1.995297 -1.170815 1.138518 1.105954 1.073277 1.040681 1.008284 0.976154 0.944169 0.912297 0.880633 0.849081 0.817362 0.785311 0.752775 0.719650 0.685748 0.651019 0.615303 0.578523 0.540517 0.501250 0.460771 0.419239 0.376785 0.333516 0.289522 0.244885 0.199688 0.154026 0.107960 0.061516 0.014739 -0.032408 -0.079953 -0.127868 -0.176133 -0.224727 -0.273631 -0.322828 -0.372301 -0.422034 -0.472007 -0.522194 -0.572562 -0.623076 -0.673688 -0.724348 -0.774999 -0.825587 -0.876052 -0.926333 -0.976369 -1.026097 -1.075454 -1.124382 -1.172828 -1.220747 -1.268099 -1.314851 -1.360978 -1.406460 -1.451282 -1.495434 -1.538911 -1.581711 -1.623823 -1.665233 -1.705915 -1.745837 -1.784953 -1.823211 -1.860554 -1.896917 -1.932232 -1.966430 -1.999437 -2.031178 -2.061569 -2.090517 -2.117917 -2.143649 -2.167578 -2.189565 -2.209455 -2.227088 -2.242305 -2.254943 -2.264839 -2.271842 -2.275832 -2.276721 -2.274471 -2.269110 -2.260737 -2.249504 -2.235614 -2.219313 -2.200880 -2.180630 -2.158909 -2.136093 -2.112588 -2.088820 -2.065216 -1.184818 1.151549 1.117963 1.084177 1.050413 1.016837 0.983545 0.950422 0.917412 0.884626 0.851992 0.819227 0.786139 0.752576 0.718433 0.683499 0.647734 0.610950 0.573085 0.533940 0.493467 0.451697 0.408804 0.364930 0.320192 0.274689 0.228510 0.181747 0.134500 0.086826 0.038759 -0.009662 -0.058497 -0.107748 -0.157389 -0.207396 -0.257747 -0.308423 -0.359406 -0.410678 -0.462220 -0.514007 -0.566008 -0.618189 -0.670505 -0.722906 -0.775335 -0.827735 -0.880046 -0.932207 -0.984154 -1.035822 -1.087147 -1.138066 -1.188521 -1.238462 -1.287845 -1.336630 -1.384790 -1.432299 -1.479142 -1.525305 -1.570783 -1.615572 -1.659666 -1.703050 -1.745704 -1.787597 -1.828687 -1.868923 -1.908248 -1.946599 -1.983907 -2.020099 -2.055104 -2.088848 -2.121248 -2.152220 -2.181664 -2.209466 -2.235496 -2.259616 -2.281672 -2.301504 -2.318943 -2.333822 -2.345972 -2.355226 -2.361435 -2.364484 -2.364295 -2.360848 -2.354196 -2.344460 -2.331816 -2.316486 -2.298735 -2.278867 -2.257221 -2.234169 -2.210118 -2.185504 -2.160782 -2.136392 -1.198617 1.164417 1.129814 1.094961 1.060039 1.025276 0.990804 0.956527 0.922364 0.888435 0.854698 0.820866 0.786718 0.752110 0.716919 0.680938 0.644112 0.606241 0.567268 0.526970 0.485276 0.442198 0.397923 0.352607 0.306376 0.259340 0.211594 0.163240 0.114384 0.065072 0.015355 -0.034747 -0.085299 -0.136288 -0.187685 -0.239466 -0.291608 -0.344090 -0.396892 -0.449996 -0.503377 -0.557008 -0.610853 -0.664872 -0.719016 -0.773227 -0.827447 -0.881617 -0.935672 -0.989549 -1.043179 -1.096498 -1.149439 -1.201938 -1.253941 -1.305399 -1.356267 -1.406510 -1.456101 -1.505020 -1.553252 -1.600788 -1.647624 -1.693756 -1.739171 -1.783852 -1.827772 -1.870890 -1.913161 -1.954526 -1.994925 -2.034287 -2.072541 -2.109610 -2.145422 -2.179898 -2.212956 -2.244504 -2.274435 -2.302626 -2.328942 -2.353232 -2.375336 -2.395082 -2.412295 -2.426801 -2.438425 -2.446996 -2.452370 -2.454436 -2.453129 -2.448451 -2.440479 -2.429356 -2.415279 -2.398491 -2.379277 -2.357966 -2.334924 -2.310552 -2.285291 -2.259608 -2.233981 -2.208859 -1.212153 1.177098 1.141508 1.105601 1.069553 1.033600 0.997936 0.962489 0.927156 0.892066 0.857207 0.822287 0.787056 0.751382 0.715118 0.678071 0.640157 0.601184 0.561079 0.519613 0.476682 0.432279 0.386601 0.339820 0.292074 0.243479 0.194141 0.144171 0.093679 0.042703 -0.008693 -0.060510 -0.112812 -0.165570 -0.218756 -0.272344 -0.326309 -0.380629 -0.435284 -0.490251 -0.545503 -0.601008 -0.656725 -0.712608 -0.768602 -0.824647 -0.880682 -0.936642 -0.992462 -1.048073 -1.103407 -1.158395 -1.212971 -1.267072 -1.320645 -1.373640 -1.426017 -1.477742 -1.528792 -1.579149 -1.628800 -1.677740 -1.725966 -1.773469 -1.820233 -1.866233 -1.911436 -1.955795 -1.999258 -2.041761 -2.083239 -2.123616 -2.162816 -2.200763 -2.237381 -2.272589 -2.306301 -2.338419 -2.368829 -2.397399 -2.423985 -2.448427 -2.470555 -2.490188 -2.507144 -2.521242 -2.532300 -2.540149 -2.544646 -2.545689 -2.543228 -2.537287 -2.527967 -2.515434 -2.499903 -2.481638 -2.460949 -2.438190 -2.413755 -2.388080 -2.361639 -2.334929 -2.308447 -2.282649 -1.225352 1.189553 1.153035 1.116081 1.078942 1.041810 1.004942 0.968311 0.931793 0.895524 0.859524 0.823495 0.787164 0.750397 0.713042 0.674903 0.635880 0.595786 0.554527 0.511876 0.467692 0.421945 0.374844 0.326576 0.277291 0.227113 0.176156 0.124545 0.072388 0.019724 -0.033379 -0.086950 -0.141032 -0.195592 -0.250599 -0.306026 -0.361847 -0.418039 -0.474580 -0.531442 -0.588596 -0.646003 -0.703620 -0.761392 -0.819261 -0.877164 -0.935035 -0.992808 -1.050413 -1.107778 -1.164835 -1.221513 -1.277744 -1.333469 -1.388633 -1.443190 -1.497100 -1.550334 -1.602870 -1.654693 -1.705795 -1.756172 -1.805818 -1.854719 -1.902856 -1.950196 -1.996699 -2.042312 -2.086977 -2.130626 -2.173188 -2.214583 -2.254731 -2.293556 -2.330981 -2.366920 -2.401284 -2.433968 -2.464848 -2.493785 -2.520626 -2.545201 -2.567329 -2.586821 -2.603488 -2.617142 -2.627597 -2.634683 -2.638264 -2.638246 -2.634595 -2.627361 -2.616668 -2.602701 -2.585694 -2.565935 -2.543759 -2.519550 -2.493731 -2.466774 -2.439187 -2.411495 -2.384210 -2.357789 -1.238167 1.201721 1.164366 1.126403 1.088181 1.049901 1.011824 0.973996 0.936278 0.898814 0.861655 0.824494 0.787046 0.749163 0.710699 0.671442 0.631288 0.590053 0.547617 0.503764 0.458309 0.411202 0.362657 0.312880 0.262030 0.210243 0.157643 0.104364 0.050514 -0.003864 -0.058707 -0.114065 -0.169959 -0.226352 -0.283212 -0.340511 -0.398222 -0.456319 -0.514778 -0.573567 -0.632652 -0.691992 -0.751534 -0.811221 -0.870989 -0.930773 -0.990504 -1.050111 -1.109521 -1.168663 -1.227463 -1.285851 -1.343760 -1.401131 -1.457910 -1.514052 -1.569520 -1.624289 -1.678340 -1.731660 -1.784245 -1.836090 -1.887185 -1.937511 -1.987043 -2.035742 -2.083559 -2.130439 -2.176317 -2.221120 -2.264770 -2.307185 -2.348285 -2.387991 -2.426222 -2.462891 -2.497905 -2.531150 -2.562492 -2.591785 -2.618865 -2.643553 -2.665658 -2.684980 -2.701325 -2.714500 -2.724314 -2.730599 -2.733225 -2.732108 -2.727235 -2.718680 -2.706588 -2.691163 -2.672659 -2.651390 -2.627720 -2.602059 -2.574869 -2.546657 -2.517962 -2.489334 -2.461298 -2.434307 -1.250594 1.213552 1.175454 1.136559 1.097258 1.057860 1.018583 0.979546 0.940614 0.901940 0.863604 0.825289 0.786708 0.747685 0.708095 0.667696 0.626392 0.583991 0.540355 0.495283 0.448540 0.400053 0.350045 0.298734 0.246296 0.192875 0.138606 0.083633 0.028061 -0.028060 -0.084675 -0.141853 -0.199590 -0.257849 -0.316595 -0.375800 -0.435433 -0.495468 -0.555876 -0.616624 -0.677671 -0.738970 -0.800464 -0.862092 -0.923784 -0.985473 -1.047086 -1.108549 -1.169787 -1.230726 -1.291291 -1.351411 -1.411020 -1.470060 -1.528478 -1.586229 -1.643283 -1.699615 -1.755210 -1.810059 -1.864159 -1.917502 -1.970073 -2.021849 -2.072797 -2.122871 -2.172018 -2.220176 -2.267276 -2.313240 -2.357983 -2.401423 -2.443476 -2.484065 -2.523104 -2.560505 -2.596166 -2.629964 -2.661760 -2.691397 -2.718702 -2.743483 -2.765538 -2.784662 -2.800654 -2.813314 -2.822451 -2.827898 -2.829531 -2.827280 -2.821154 -2.811250 -2.797733 -2.780826 -2.760806 -2.738013 -2.712841 -2.685733 -2.657189 -2.627751 -2.597988 -2.568474 -2.539737 -2.512225 -1.262696 1.225028 1.186248 1.146513 1.106177 1.065668 1.025216 0.984964 0.944803 0.904905 0.865373 0.825885 0.786155 0.745968 0.705234 0.663670 0.621196 0.577608 0.532747 0.486438 0.438389 0.388505 0.337010 0.284144 0.230092 0.175012 0.119047 0.062354 0.005032 -0.052861 -0.111283 -0.170312 -0.229924 -0.290081 -0.350747 -0.411889 -0.473478 -0.535484 -0.597874 -0.660611 -0.723649 -0.786936 -0.850409 -0.914002 -0.977644 -1.041261 -1.104780 -1.168121 -1.231208 -1.293966 -1.356318 -1.418193 -1.479526 -1.540258 -1.600339 -1.659726 -1.718392 -1.776317 -1.833487 -1.889898 -1.945544 -2.000413 -2.054487 -2.107735 -2.160117 -2.211583 -2.262074 -2.311523 -2.359853 -2.406984 -2.452826 -2.497294 -2.540305 -2.581779 -2.621628 -2.659761 -2.696066 -2.730413 -2.762654 -2.792624 -2.820136 -2.844988 -2.866969 -2.885866 -2.901472 -2.913584 -2.922007 -2.926579 -2.927183 -2.923764 -2.916356 -2.905076 -2.890109 -2.871695 -2.850140 -2.825812 -2.799135 -2.770588 -2.740711 -2.710079 -2.679291 -2.648939 -2.619550 -2.591557 - - -# Torque coefficient - -0.030572 0.031393 0.032202 0.032999 0.033782 0.034552 0.035309 0.036051 0.036779 0.037492 0.038189 0.038871 0.039537 0.040186 0.040818 0.041433 0.042030 0.042609 0.043169 0.043710 0.044232 0.044733 0.045214 0.045674 0.046113 0.046530 0.046925 0.047297 0.047647 0.047974 0.048278 0.048560 0.048819 0.049057 0.049272 0.049465 0.049637 0.049787 0.049916 0.050024 0.050110 0.050176 0.050219 0.050242 0.050243 0.050224 0.050184 0.050123 0.050041 0.049938 0.049815 0.049671 0.049507 0.049323 0.049119 0.048895 0.048650 0.048384 0.048095 0.047785 0.047450 0.047090 0.046704 0.046292 0.045852 0.045385 0.044892 0.044373 0.043829 0.043260 0.042665 0.042044 0.041397 0.040725 0.040028 0.039308 0.038566 0.037801 0.037013 0.036204 0.035372 0.034519 0.033645 0.032749 0.031834 0.030899 0.029946 0.028976 0.027991 0.026990 0.025975 0.024947 0.023906 0.022852 0.021788 0.020712 0.019626 0.018531 0.017426 0.016312 0.015190 0.014061 0.012924 0.011779 -0.036019 0.036845 0.037655 0.038448 0.039224 0.039983 0.040724 0.041448 0.042153 0.042839 0.043505 0.044152 0.044778 0.045384 0.045969 0.046531 0.047071 0.047588 0.048082 0.048551 0.048997 0.049418 0.049814 0.050186 0.050534 0.050858 0.051158 0.051434 0.051688 0.051917 0.052124 0.052308 0.052468 0.052606 0.052719 0.052809 0.052875 0.052918 0.052936 0.052931 0.052901 0.052847 0.052769 0.052668 0.052544 0.052397 0.052227 0.052033 0.051815 0.051572 0.051303 0.051008 0.050685 0.050333 0.049951 0.049538 0.049096 0.048624 0.048124 0.047596 0.047039 0.046453 0.045838 0.045195 0.044524 0.043826 0.043103 0.042355 0.041580 0.040780 0.039955 0.039104 0.038229 0.037330 0.036407 0.035462 0.034497 0.033512 0.032508 0.031487 0.030450 0.029396 0.028327 0.027243 0.026146 0.025035 0.023912 0.022778 0.021631 0.020475 0.019307 0.018131 0.016944 0.015749 0.014546 0.013335 0.012115 0.010889 0.009655 0.008414 0.007167 0.005914 0.004654 0.003389 -0.041143 0.041957 0.042752 0.043527 0.044282 0.045016 0.045728 0.046418 0.047086 0.047730 0.048351 0.048947 0.049518 0.050065 0.050585 0.051080 0.051549 0.051993 0.052411 0.052805 0.053173 0.053516 0.053834 0.054128 0.054396 0.054639 0.054857 0.055050 0.055216 0.055355 0.055468 0.055553 0.055611 0.055641 0.055644 0.055620 0.055569 0.055491 0.055386 0.055253 0.055093 0.054904 0.054685 0.054436 0.054155 0.053841 0.053493 0.053111 0.052696 0.052249 0.051770 0.051260 0.050717 0.050142 0.049535 0.048897 0.048228 0.047531 0.046805 0.046051 0.045269 0.044458 0.043618 0.042751 0.041857 0.040936 0.039991 0.039023 0.038032 0.037021 0.035989 0.034938 0.033869 0.032782 0.031677 0.030557 0.029420 0.028269 0.027104 0.025925 0.024732 0.023528 0.022311 0.021083 0.019844 0.018595 0.017335 0.016066 0.014788 0.013501 0.012206 0.010903 0.009592 0.008274 0.006948 0.005616 0.004276 0.002930 0.001578 0.000219 -0.001146 -0.002516 -0.003891 -0.005271 -0.045892 0.046686 0.047456 0.048203 0.048925 0.049623 0.050295 0.050942 0.051562 0.052157 0.052726 0.053268 0.053785 0.054275 0.054739 0.055176 0.055587 0.055972 0.056330 0.056661 0.056965 0.057240 0.057486 0.057703 0.057889 0.058045 0.058171 0.058265 0.058328 0.058359 0.058359 0.058326 0.058262 0.058164 0.058032 0.057866 0.057663 0.057423 0.057145 0.056830 0.056477 0.056088 0.055663 0.055203 0.054706 0.054173 0.053604 0.053001 0.052365 0.051697 0.050998 0.050266 0.049502 0.048706 0.047879 0.047021 0.046134 0.045219 0.044278 0.043312 0.042323 0.041310 0.040275 0.039218 0.038140 0.037042 0.035925 0.034789 0.033635 0.032464 0.031276 0.030072 0.028852 0.027617 0.026367 0.025104 0.023827 0.022538 0.021237 0.019924 0.018599 0.017264 0.015919 0.014565 0.013201 0.011828 0.010447 0.009057 0.007659 0.006254 0.004841 0.003421 0.001993 0.000557 -0.000885 -0.002335 -0.003791 -0.005254 -0.006723 -0.008196 -0.009675 -0.011156 -0.012641 -0.014128 -0.050257 0.051026 0.051769 0.052487 0.053179 0.053846 0.054485 0.055099 0.055685 0.056244 0.056776 0.057281 0.057757 0.058205 0.058624 0.059012 0.059369 0.059695 0.059988 0.060247 0.060472 0.060661 0.060815 0.060931 0.061010 0.061051 0.061053 0.061015 0.060936 0.060815 0.060651 0.060443 0.060193 0.059901 0.059569 0.059196 0.058782 0.058328 0.057834 0.057301 0.056731 0.056124 0.055483 0.054805 0.054092 0.053343 0.052559 0.051742 0.050891 0.050011 0.049101 0.048164 0.047199 0.046210 0.045196 0.044158 0.043098 0.042015 0.040911 0.039786 0.038640 0.037473 0.036287 0.035082 0.033858 0.032616 0.031356 0.030080 0.028787 0.027478 0.026154 0.024815 0.023463 0.022097 0.020718 0.019328 0.017925 0.016512 0.015088 0.013654 0.012210 0.010756 0.009294 0.007823 0.006344 0.004856 0.003360 0.001855 0.000342 -0.001179 -0.002709 -0.004247 -0.005793 -0.007347 -0.008907 -0.010475 -0.012047 -0.013625 -0.015206 -0.016789 -0.018374 -0.019960 -0.021545 -0.023129 -0.054320 0.055079 0.055812 0.056518 0.057197 0.057848 0.058471 0.059065 0.059628 0.060161 0.060661 0.061128 0.061561 0.061957 0.062316 0.062636 0.062915 0.063152 0.063345 0.063495 0.063598 0.063653 0.063658 0.063614 0.063520 0.063376 0.063184 0.062945 0.062660 0.062328 0.061950 0.061526 0.061060 0.060553 0.060006 0.059419 0.058793 0.058127 0.057422 0.056679 0.055899 0.055085 0.054238 0.053359 0.052450 0.051513 0.050548 0.049556 0.048539 0.047497 0.046431 0.045341 0.044228 0.043093 0.041936 0.040758 0.039559 0.038338 0.037096 0.035835 0.034553 0.033252 0.031932 0.030593 0.029238 0.027865 0.026476 0.025071 0.023652 0.022218 0.020770 0.019309 0.017836 0.016351 0.014854 0.013347 0.011829 0.010301 0.008763 0.007215 0.005658 0.004092 0.002517 0.000933 -0.000661 -0.002265 -0.003878 -0.005501 -0.007133 -0.008775 -0.010426 -0.012085 -0.013751 -0.015424 -0.017101 -0.018783 -0.020467 -0.022152 -0.023837 -0.025521 -0.027201 -0.028878 -0.030550 -0.032215 -0.058243 0.059008 0.059744 0.060449 0.061122 0.061761 0.062366 0.062933 0.063462 0.063948 0.064390 0.064787 0.065136 0.065434 0.065679 0.065869 0.066002 0.066076 0.066093 0.066053 0.065957 0.065806 0.065600 0.065341 0.065029 0.064667 0.064257 0.063802 0.063302 0.062759 0.062171 0.061541 0.060870 0.060159 0.059409 0.058624 0.057805 0.056953 0.056070 0.055156 0.054212 0.053241 0.052242 0.051217 0.050166 0.049090 0.047990 0.046865 0.045716 0.044544 0.043349 0.042131 0.040891 0.039629 0.038346 0.037040 0.035713 0.034365 0.032997 0.031609 0.030201 0.028776 0.027332 0.025871 0.024393 0.022900 0.021392 0.019870 0.018333 0.016784 0.015222 0.013647 0.012061 0.010464 0.008856 0.007237 0.005608 0.003968 0.002319 0.000659 -0.001012 -0.002693 -0.004385 -0.006089 -0.007803 -0.009529 -0.011266 -0.013013 -0.014770 -0.016535 -0.018308 -0.020087 -0.021871 -0.023657 -0.025445 -0.027231 -0.029015 -0.030795 -0.032569 -0.034336 -0.036094 -0.037841 -0.039578 -0.041302 -0.062135 0.062903 0.063632 0.064318 0.064961 0.065556 0.066101 0.066592 0.067025 0.067397 0.067706 0.067950 0.068128 0.068241 0.068289 0.068272 0.068190 0.068046 0.067840 0.067575 0.067255 0.066883 0.066461 0.065988 0.065467 0.064900 0.064289 0.063635 0.062943 0.062212 0.061446 0.060645 0.059810 0.058944 0.058047 0.057120 0.056163 0.055178 0.054165 0.053125 0.052059 0.050966 0.049847 0.048703 0.047534 0.046341 0.045122 0.043879 0.042613 0.041323 0.040010 0.038674 0.037316 0.035935 0.034531 0.033106 0.031660 0.030193 0.028706 0.027200 0.025676 0.024133 0.022574 0.020999 0.019408 0.017802 0.016181 0.014547 0.012900 0.011240 0.009568 0.007883 0.006187 0.004479 0.002760 0.001030 -0.000712 -0.002466 -0.004232 -0.006011 -0.007802 -0.009606 -0.011423 -0.013253 -0.015094 -0.016948 -0.018812 -0.020685 -0.022566 -0.024452 -0.026342 -0.028234 -0.030125 -0.032012 -0.033894 -0.035768 -0.037634 -0.039488 -0.041329 -0.043157 -0.044970 -0.046768 -0.048552 -0.050322 -0.065925 0.066647 0.067311 0.067912 0.068447 0.068913 0.069308 0.069631 0.069880 0.070055 0.070155 0.070181 0.070133 0.070016 0.069833 0.069586 0.069279 0.068914 0.068493 0.068019 0.067497 0.066930 0.066320 0.065670 0.064982 0.064257 0.063497 0.062703 0.061876 0.061017 0.060126 0.059206 0.058255 0.057275 0.056267 0.055230 0.054166 0.053074 0.051955 0.050809 0.049636 0.048436 0.047211 0.045960 0.044683 0.043380 0.042053 0.040700 0.039324 0.037924 0.036500 0.035052 0.033581 0.032086 0.030570 0.029031 0.027471 0.025892 0.024292 0.022674 0.021038 0.019385 0.017715 0.016030 0.014329 0.012614 0.010884 0.009141 0.007384 0.005615 0.003832 0.002037 0.000229 -0.001592 -0.003427 -0.005274 -0.007136 -0.009012 -0.010902 -0.012807 -0.014726 -0.016660 -0.018607 -0.020568 -0.022539 -0.024521 -0.026510 -0.028505 -0.030502 -0.032499 -0.034493 -0.036481 -0.038461 -0.040430 -0.042386 -0.044328 -0.046253 -0.048160 -0.050050 -0.051922 -0.053778 -0.055618 -0.057447 -0.059267 -0.069254 0.069840 0.070349 0.070778 0.071125 0.071389 0.071569 0.071666 0.071681 0.071620 0.071485 0.071278 0.071004 0.070667 0.070272 0.069824 0.069328 0.068787 0.068204 0.067582 0.066923 0.066227 0.065496 0.064730 0.063932 0.063101 0.062237 0.061343 0.060418 0.059462 0.058477 0.057463 0.056419 0.055346 0.054245 0.053115 0.051957 0.050771 0.049556 0.048313 0.047043 0.045745 0.044420 0.043069 0.041690 0.040285 0.038854 0.037398 0.035916 0.034410 0.032878 0.031321 0.029740 0.028136 0.026510 0.024861 0.023192 0.021503 0.019795 0.018068 0.016323 0.014562 0.012784 0.010990 0.009180 0.007356 0.005517 0.003664 0.001796 -0.000086 -0.001982 -0.003892 -0.005818 -0.007759 -0.009715 -0.011687 -0.013676 -0.015681 -0.017703 -0.019741 -0.021794 -0.023861 -0.025941 -0.028031 -0.030129 -0.032232 -0.034337 -0.036441 -0.038539 -0.040629 -0.042708 -0.044773 -0.046822 -0.048852 -0.050863 -0.052853 -0.054821 -0.056769 -0.058698 -0.060611 -0.062511 -0.064403 -0.066293 -0.068187 -0.071698 0.072083 0.072376 0.072578 0.072691 0.072716 0.072658 0.072521 0.072310 0.072033 0.071695 0.071302 0.070860 0.070373 0.069844 0.069275 0.068668 0.068024 0.067345 0.066631 0.065883 0.065101 0.064287 0.063439 0.062560 0.061649 0.060707 0.059735 0.058732 0.057698 0.056634 0.055541 0.054417 0.053263 0.052079 0.050864 0.049620 0.048346 0.047042 0.045709 0.044346 0.042955 0.041535 0.040086 0.038609 0.037104 0.035572 0.034013 0.032428 0.030815 0.029177 0.027513 0.025825 0.024114 0.022380 0.020624 0.018847 0.017050 0.015234 0.013400 0.011547 0.009677 0.007791 0.005887 0.003968 0.002033 0.000082 -0.001884 -0.003867 -0.005865 -0.007881 -0.009913 -0.011963 -0.014031 -0.016117 -0.018222 -0.020345 -0.022486 -0.024643 -0.026817 -0.029004 -0.031203 -0.033410 -0.035622 -0.037836 -0.040048 -0.042252 -0.044447 -0.046628 -0.048792 -0.050937 -0.053060 -0.055160 -0.057235 -0.059286 -0.061313 -0.063319 -0.065306 -0.067279 -0.069245 -0.071209 -0.073179 -0.075161 -0.077158 -0.072973 0.073120 0.073175 0.073144 0.073036 0.072856 0.072611 0.072309 0.071955 0.071552 0.071104 0.070615 0.070087 0.069522 0.068920 0.068282 0.067608 0.066900 0.066157 0.065380 0.064570 0.063726 0.062850 0.061941 0.061000 0.060027 0.059022 0.057985 0.056916 0.055816 0.054683 0.053518 0.052321 0.051092 0.049830 0.048536 0.047210 0.045851 0.044461 0.043039 0.041585 0.040101 0.038586 0.037040 0.035465 0.033861 0.032229 0.030567 0.028877 0.027160 0.025416 0.023647 0.021853 0.020035 0.018194 0.016331 0.014447 0.012543 0.010619 0.008677 0.006715 0.004736 0.002739 0.000725 -0.001307 -0.003356 -0.005423 -0.007507 -0.009611 -0.011733 -0.013875 -0.016036 -0.018218 -0.020420 -0.022643 -0.024885 -0.027147 -0.029425 -0.031720 -0.034026 -0.036343 -0.038665 -0.040989 -0.043310 -0.045624 -0.047927 -0.050214 -0.052482 -0.054727 -0.056948 -0.059142 -0.061308 -0.063446 -0.065557 -0.067643 -0.069708 -0.071758 -0.073798 -0.075838 -0.077884 -0.079944 -0.082026 -0.084133 -0.086268 -0.072973 0.072932 0.072822 0.072648 0.072417 0.072134 0.071804 0.071428 0.071010 0.070553 0.070058 0.069524 0.068954 0.068347 0.067703 0.067024 0.066309 0.065558 0.064773 0.063953 0.063099 0.062210 0.061288 0.060331 0.059341 0.058316 0.057257 0.056164 0.055036 0.053874 0.052676 0.051444 0.050176 0.048873 0.047535 0.046161 0.044753 0.043310 0.041833 0.040322 0.038777 0.037200 0.035589 0.033947 0.032273 0.030570 0.028835 0.027071 0.025277 0.023455 0.021606 0.019731 0.017831 0.015907 0.013960 0.011990 0.009999 0.007987 0.005954 0.003902 0.001830 -0.000260 -0.002370 -0.004500 -0.006648 -0.008816 -0.011005 -0.013215 -0.015446 -0.017699 -0.019974 -0.022272 -0.024591 -0.026933 -0.029296 -0.031678 -0.034078 -0.036492 -0.038917 -0.041349 -0.043784 -0.046218 -0.048644 -0.051059 -0.053457 -0.055834 -0.058186 -0.060511 -0.062805 -0.065068 -0.067300 -0.069501 -0.071673 -0.073821 -0.075950 -0.078068 -0.080184 -0.082306 -0.084444 -0.086607 -0.088799 -0.091027 -0.093288 -0.095580 -0.072010 0.071888 0.071712 0.071487 0.071217 0.070903 0.070548 0.070154 0.069721 0.069250 0.068739 0.068190 0.067603 0.066977 0.066314 0.065612 0.064874 0.064098 0.063286 0.062437 0.061551 0.060628 0.059668 0.058671 0.057637 0.056565 0.055456 0.054309 0.053124 0.051901 0.050639 0.049339 0.048000 0.046623 0.045207 0.043754 0.042263 0.040734 0.039169 0.037568 0.035931 0.034259 0.032553 0.030813 0.029041 0.027236 0.025399 0.023531 0.021634 0.019708 0.017754 0.015773 0.013767 0.011736 0.009682 0.007604 0.005505 0.003383 0.001240 -0.000924 -0.003109 -0.005315 -0.007542 -0.009791 -0.012062 -0.014356 -0.016674 -0.019015 -0.021381 -0.023771 -0.026185 -0.028623 -0.031085 -0.033568 -0.036071 -0.038591 -0.041124 -0.043667 -0.046214 -0.048761 -0.051303 -0.053834 -0.056349 -0.058841 -0.061306 -0.063742 -0.066144 -0.068512 -0.070845 -0.073143 -0.075408 -0.077645 -0.079859 -0.082058 -0.084253 -0.086452 -0.088666 -0.090905 -0.093177 -0.095488 -0.097843 -0.100239 -0.102673 -0.105140 -0.070440 0.070312 0.070139 0.069923 0.069664 0.069365 0.069027 0.068646 0.068225 0.067764 0.067260 0.066716 0.066130 0.065503 0.064835 0.064126 0.063376 0.062586 0.061755 0.060884 0.059972 0.059019 0.058025 0.056990 0.055914 0.054797 0.053637 0.052437 0.051194 0.049909 0.048582 0.047213 0.045802 0.044350 0.042855 0.041320 0.039745 0.038130 0.036476 0.034783 0.033052 0.031284 0.029481 0.027643 0.025771 0.023865 0.021926 0.019955 0.017953 0.015922 0.013862 0.011776 0.009663 0.007525 0.005362 0.003175 0.000965 -0.001268 -0.003525 -0.005804 -0.008107 -0.010432 -0.012782 -0.015157 -0.017558 -0.019984 -0.022437 -0.024916 -0.027421 -0.029952 -0.032509 -0.035090 -0.037694 -0.040318 -0.042958 -0.045610 -0.048269 -0.050931 -0.053590 -0.056241 -0.058876 -0.061490 -0.064076 -0.066631 -0.069150 -0.071631 -0.074074 -0.076478 -0.078844 -0.081178 -0.083483 -0.085770 -0.088047 -0.090325 -0.092614 -0.094926 -0.097271 -0.099659 -0.102096 -0.104586 -0.107127 -0.109716 -0.112347 -0.115011 -0.068499 0.068415 0.068289 0.068119 0.067907 0.067650 0.067349 0.067004 0.066613 0.066178 0.065697 0.065171 0.064599 0.063982 0.063318 0.062609 0.061854 0.061054 0.060209 0.059318 0.058382 0.057401 0.056374 0.055301 0.054183 0.053019 0.051810 0.050554 0.049252 0.047904 0.046511 0.045071 0.043586 0.042056 0.040482 0.038864 0.037202 0.035499 0.033754 0.031967 0.030142 0.028279 0.026379 0.024442 0.022469 0.020461 0.018418 0.016344 0.014237 0.012101 0.009935 0.007742 0.005521 0.003274 0.001001 -0.001297 -0.003621 -0.005970 -0.008343 -0.010742 -0.013167 -0.015619 -0.018098 -0.020605 -0.023141 -0.025705 -0.028297 -0.030918 -0.033567 -0.036243 -0.038944 -0.041668 -0.044412 -0.047171 -0.049942 -0.052718 -0.055496 -0.058267 -0.061027 -0.063768 -0.066482 -0.069164 -0.071808 -0.074413 -0.076975 -0.079495 -0.081973 -0.084413 -0.086819 -0.089200 -0.091565 -0.093925 -0.096292 -0.098676 -0.101090 -0.103546 -0.106055 -0.108625 -0.111258 -0.113954 -0.116709 -0.119513 -0.122356 -0.125224 -0.066349 0.066338 0.066282 0.066181 0.066031 0.065833 0.065586 0.065288 0.064940 0.064543 0.064094 0.063594 0.063044 0.062441 0.061787 0.061082 0.060325 0.059517 0.058659 0.057750 0.056790 0.055781 0.054720 0.053610 0.052449 0.051237 0.049976 0.048663 0.047301 0.045888 0.044426 0.042915 0.041354 0.039745 0.038089 0.036385 0.034637 0.032843 0.031006 0.029127 0.027207 0.025248 0.023250 0.021212 0.019138 0.017027 0.014881 0.012701 0.010489 0.008247 0.005974 0.003672 0.001341 -0.001017 -0.003403 -0.005816 -0.008256 -0.010724 -0.013219 -0.015743 -0.018297 -0.020881 -0.023495 -0.026140 -0.028815 -0.031521 -0.034258 -0.037024 -0.039818 -0.042639 -0.045483 -0.048348 -0.051227 -0.054116 -0.057011 -0.059904 -0.062790 -0.065661 -0.068509 -0.071325 -0.074104 -0.076841 -0.079534 -0.082181 -0.084782 -0.087339 -0.089857 -0.092342 -0.094804 -0.097253 -0.099701 -0.102160 -0.104643 -0.107162 -0.109733 -0.112368 -0.115076 -0.117859 -0.120717 -0.123643 -0.126627 -0.129657 -0.132717 -0.135787 -0.064097 0.064168 0.064192 0.064166 0.064089 0.063959 0.063774 0.063533 0.063236 0.062882 0.062471 0.062003 0.061478 0.060894 0.060252 0.059553 0.058796 0.057982 0.057111 0.056184 0.055201 0.054162 0.053068 0.051918 0.050712 0.049452 0.048137 0.046766 0.045342 0.043863 0.042330 0.040745 0.039107 0.037417 0.035677 0.033888 0.032051 0.030167 0.028237 0.026264 0.024249 0.022192 0.020094 0.017956 0.015779 0.013564 0.011314 0.009029 0.006710 0.004360 0.001978 -0.000435 -0.002878 -0.005350 -0.007852 -0.010383 -0.012945 -0.015536 -0.018159 -0.020814 -0.023502 -0.026223 -0.028977 -0.031763 -0.034583 -0.037435 -0.040318 -0.043231 -0.046171 -0.049135 -0.052120 -0.055119 -0.058129 -0.061143 -0.064154 -0.067156 -0.070140 -0.073097 -0.076018 -0.078897 -0.081731 -0.084516 -0.087252 -0.089940 -0.092582 -0.095184 -0.097754 -0.100301 -0.102839 -0.105379 -0.107933 -0.110516 -0.113144 -0.115832 -0.118596 -0.121445 -0.124381 -0.127403 -0.130505 -0.133677 -0.136904 -0.140167 -0.143444 -0.146709 -0.061798 0.061952 0.062058 0.062113 0.062112 0.062053 0.061936 0.061756 0.061515 0.061209 0.060840 0.060406 0.059908 0.059346 0.058718 0.058026 0.057270 0.056450 0.055567 0.054621 0.053614 0.052546 0.051416 0.050226 0.048975 0.047664 0.046293 0.044864 0.043375 0.041828 0.040224 0.038562 0.036845 0.035074 0.033249 0.031372 0.029446 0.027471 0.025449 0.023381 0.021269 0.019114 0.016915 0.014674 0.012394 0.010074 0.007718 0.005326 0.002900 0.000440 -0.002054 -0.004580 -0.007138 -0.009727 -0.012349 -0.015003 -0.017690 -0.020411 -0.023168 -0.025959 -0.028786 -0.031648 -0.034546 -0.037478 -0.040445 -0.043444 -0.046475 -0.049535 -0.052620 -0.055725 -0.058846 -0.061977 -0.065111 -0.068242 -0.071362 -0.074461 -0.077530 -0.080560 -0.083544 -0.086479 -0.089363 -0.092194 -0.094974 -0.097708 -0.100400 -0.103060 -0.105698 -0.108327 -0.110960 -0.113612 -0.116297 -0.119035 -0.121843 -0.124736 -0.127725 -0.130814 -0.134003 -0.137286 -0.140653 -0.144086 -0.147563 -0.151056 -0.154536 -0.157970 -0.059487 0.059724 0.059910 0.060044 0.060120 0.060134 0.060084 0.059969 0.059784 0.059530 0.059204 0.058807 0.058339 0.057799 0.057187 0.056503 0.055748 0.054923 0.054027 0.053064 0.052032 0.050933 0.049767 0.048535 0.047237 0.045874 0.044447 0.042956 0.041401 0.039785 0.038107 0.036369 0.034571 0.032716 0.030806 0.028842 0.026825 0.024758 0.022642 0.020479 0.018269 0.016013 0.013712 0.011368 0.008983 0.006558 0.004095 0.001594 -0.000943 -0.003515 -0.006123 -0.008765 -0.011441 -0.014152 -0.016898 -0.019680 -0.022498 -0.025355 -0.028249 -0.031181 -0.034151 -0.037158 -0.040203 -0.043284 -0.046400 -0.049549 -0.052727 -0.055932 -0.059159 -0.062402 -0.065655 -0.068912 -0.072165 -0.075405 -0.078623 -0.081808 -0.084951 -0.088046 -0.091088 -0.094076 -0.097009 -0.099889 -0.102720 -0.105508 -0.108263 -0.110996 -0.113719 -0.116448 -0.119198 -0.121987 -0.124835 -0.127760 -0.130779 -0.133907 -0.137150 -0.140508 -0.143977 -0.147545 -0.151190 -0.154888 -0.158605 -0.162307 -0.165960 -0.169532 -0.057186 0.057503 0.057767 0.057976 0.058125 0.058211 0.058229 0.058176 0.058049 0.057846 0.057567 0.057208 0.056771 0.056255 0.055660 0.054985 0.054232 0.053401 0.052494 0.051511 0.050454 0.049323 0.048120 0.046845 0.045498 0.044082 0.042597 0.041043 0.039421 0.037734 0.035981 0.034164 0.032285 0.030346 0.028349 0.026297 0.024189 0.022029 0.019818 0.017558 0.015248 0.012890 0.010486 0.008038 0.005547 0.003014 0.000442 -0.002170 -0.004819 -0.007507 -0.010231 -0.012992 -0.015791 -0.018628 -0.021503 -0.024418 -0.027373 -0.030369 -0.033405 -0.036482 -0.039599 -0.042755 -0.045950 -0.049181 -0.052447 -0.055745 -0.059070 -0.062418 -0.065784 -0.069161 -0.072542 -0.075918 -0.079282 -0.082622 -0.085927 -0.089189 -0.092401 -0.095557 -0.098656 -0.101698 -0.104685 -0.107620 -0.110511 -0.113365 -0.116196 -0.119016 -0.121842 -0.124691 -0.127584 -0.130539 -0.133578 -0.136722 -0.139987 -0.143383 -0.146912 -0.150569 -0.154339 -0.158200 -0.162123 -0.166070 -0.170003 -0.173885 -0.177683 -0.181370 -0.054915 0.055303 0.055641 0.055920 0.056140 0.056293 0.056376 0.056385 0.056315 0.056164 0.055930 0.055612 0.055206 0.054715 0.054137 0.053473 0.052722 0.051886 0.050966 0.049963 0.048880 0.047717 0.046475 0.045155 0.043760 0.042289 0.040744 0.039125 0.037435 0.035675 0.033846 0.031949 0.029988 0.027965 0.025881 0.023738 0.021538 0.019284 0.016977 0.014618 0.012207 0.009746 0.007238 0.004683 0.002084 -0.000557 -0.003241 -0.005966 -0.008731 -0.011536 -0.014381 -0.017266 -0.020191 -0.023159 -0.026168 -0.029221 -0.032317 -0.035456 -0.038639 -0.041864 -0.045131 -0.048439 -0.051785 -0.055168 -0.058584 -0.062029 -0.065500 -0.068989 -0.072491 -0.075997 -0.079500 -0.082989 -0.086455 -0.089886 -0.093273 -0.096608 -0.099885 -0.103103 -0.106262 -0.109363 -0.112410 -0.115408 -0.118366 -0.121297 -0.124217 -0.127141 -0.130091 -0.133085 -0.136146 -0.139297 -0.142562 -0.145962 -0.149509 -0.153206 -0.157048 -0.161020 -0.165098 -0.169248 -0.173430 -0.177602 -0.181724 -0.185761 -0.189683 -0.193470 -0.052695 0.053142 0.053542 0.053887 0.054170 0.054388 0.054533 0.054600 0.054586 0.054486 0.054297 0.054018 0.053646 0.053179 0.052619 0.051966 0.051218 0.050377 0.049444 0.048421 0.047310 0.046114 0.044832 0.043467 0.042021 0.040494 0.038887 0.037204 0.035444 0.033609 0.031703 0.029726 0.027682 0.025572 0.023400 0.021166 0.018873 0.016523 0.014119 0.011658 0.009145 0.006580 0.003965 0.001303 -0.001405 -0.004159 -0.006956 -0.009797 -0.012681 -0.015607 -0.018576 -0.021589 -0.024646 -0.027749 -0.030898 -0.034092 -0.037333 -0.040620 -0.043952 -0.047328 -0.050748 -0.054208 -0.057707 -0.061241 -0.064807 -0.068400 -0.072013 -0.075641 -0.079274 -0.082905 -0.086524 -0.090120 -0.093682 -0.097199 -0.100664 -0.104070 -0.107415 -0.110699 -0.113921 -0.117086 -0.120197 -0.123264 -0.126299 -0.129321 -0.132346 -0.135395 -0.138489 -0.141653 -0.144913 -0.148297 -0.151827 -0.155521 -0.159381 -0.163404 -0.167574 -0.171866 -0.176244 -0.180664 -0.185082 -0.189454 -0.193742 -0.197915 -0.201948 -0.205833 -0.050546 0.051035 0.051485 0.051886 0.052227 0.052501 0.052704 0.052828 0.052865 0.052814 0.052670 0.052429 0.052090 0.051650 0.051108 0.050464 0.049719 0.048873 0.047927 0.046884 0.045745 0.044514 0.043192 0.041780 0.040281 0.038697 0.037028 0.035277 0.033446 0.031537 0.029553 0.027494 0.025366 0.023169 0.020907 0.018580 0.016193 0.013747 0.011242 0.008679 0.006062 0.003391 0.000668 -0.002104 -0.004924 -0.007791 -0.010705 -0.013665 -0.016670 -0.019722 -0.022820 -0.025965 -0.029159 -0.032401 -0.035693 -0.039033 -0.042423 -0.045860 -0.049345 -0.052876 -0.056449 -0.060063 -0.063715 -0.067401 -0.071116 -0.074854 -0.078608 -0.082369 -0.086131 -0.089882 -0.093611 -0.097309 -0.100964 -0.104565 -0.108108 -0.111588 -0.115004 -0.118356 -0.121645 -0.124875 -0.128056 -0.131201 -0.134327 -0.137453 -0.140601 -0.143795 -0.147061 -0.150427 -0.153925 -0.157582 -0.161415 -0.165431 -0.169627 -0.173987 -0.178487 -0.183092 -0.187752 -0.192422 -0.197053 -0.201605 -0.206042 -0.210338 -0.214481 -0.218471 -0.048476 0.048997 0.049483 0.049927 0.050316 0.050641 0.050896 0.051071 0.051158 0.051153 0.051051 0.050848 0.050540 0.050126 0.049602 0.048969 0.048226 0.047375 0.046415 0.045351 0.044184 0.042917 0.041553 0.040094 0.038541 0.036898 0.035166 0.033347 0.031444 0.029459 0.027395 0.025254 0.023040 0.020755 0.018401 0.015981 0.013498 0.010953 0.008346 0.005680 0.002957 0.000178 -0.002654 -0.005538 -0.008473 -0.011457 -0.014490 -0.017572 -0.020703 -0.023884 -0.027115 -0.030397 -0.033732 -0.037118 -0.040557 -0.044047 -0.047588 -0.051180 -0.054819 -0.058505 -0.062233 -0.066002 -0.069807 -0.073644 -0.077507 -0.081388 -0.085279 -0.089173 -0.093059 -0.096927 -0.100765 -0.104562 -0.108307 -0.111993 -0.115617 -0.119174 -0.122663 -0.126084 -0.129440 -0.132741 -0.135999 -0.139233 -0.142462 -0.145709 -0.149002 -0.152368 -0.155839 -0.159447 -0.163222 -0.167186 -0.171348 -0.175707 -0.180248 -0.184950 -0.189775 -0.194676 -0.199600 -0.204499 -0.209325 -0.214040 -0.218615 -0.223032 -0.227290 -0.231395 -0.046480 0.047031 0.047544 0.048019 0.048446 0.048814 0.049113 0.049334 0.049468 0.049505 0.049442 0.049275 0.048998 0.048608 0.048102 0.047479 0.046739 0.045882 0.044909 0.043822 0.042626 0.041323 0.039916 0.038408 0.036801 0.035097 0.033300 0.031412 0.029436 0.027374 0.025229 0.023005 0.020704 0.018329 0.015882 0.013368 0.010787 0.008141 0.005431 0.002660 -0.000171 -0.003060 -0.006004 -0.009002 -0.012053 -0.015157 -0.018313 -0.021521 -0.024782 -0.028096 -0.031465 -0.034889 -0.038368 -0.041902 -0.045491 -0.049134 -0.052830 -0.056578 -0.060374 -0.064215 -0.068100 -0.072024 -0.075982 -0.079969 -0.083978 -0.088000 -0.092028 -0.096051 -0.100060 -0.104042 -0.107987 -0.111883 -0.115721 -0.119495 -0.123201 -0.126835 -0.130396 -0.133885 -0.137313 -0.140690 -0.144035 -0.147369 -0.150718 -0.154109 -0.157574 -0.161147 -0.164861 -0.168747 -0.172832 -0.177129 -0.181638 -0.186349 -0.191241 -0.196279 -0.201417 -0.206597 -0.211767 -0.216877 -0.221883 -0.226752 -0.231460 -0.236004 -0.240386 -0.244617 -0.044551 0.045130 0.045670 0.046169 0.046624 0.047025 0.047360 0.047621 0.047795 0.047873 0.047846 0.047711 0.047463 0.047096 0.046608 0.045994 0.045256 0.044393 0.043406 0.042297 0.041071 0.039731 0.038280 0.036721 0.035059 0.033294 0.031432 0.029474 0.027423 0.025282 0.023056 0.020746 0.018357 0.015891 0.013350 0.010739 0.008059 0.005311 0.002496 -0.000383 -0.003323 -0.006323 -0.009381 -0.012496 -0.015668 -0.018894 -0.022176 -0.025514 -0.028909 -0.032362 -0.035872 -0.039441 -0.043068 -0.046754 -0.050497 -0.054296 -0.058149 -0.062054 -0.066008 -0.070007 -0.074049 -0.078128 -0.082239 -0.086376 -0.090529 -0.094692 -0.098855 -0.103007 -0.107137 -0.111234 -0.115285 -0.119282 -0.123215 -0.127077 -0.130865 -0.134574 -0.138205 -0.141766 -0.145269 -0.148730 -0.152173 -0.155625 -0.159116 -0.162680 -0.166351 -0.170166 -0.174156 -0.178352 -0.182771 -0.187417 -0.192283 -0.197353 -0.202594 -0.207959 -0.213393 -0.218837 -0.224237 -0.229545 -0.234721 -0.239738 -0.244585 -0.249262 -0.253778 -0.258148 -0.042682 0.043289 0.043854 0.044376 0.044852 0.045278 0.045642 0.045935 0.046144 0.046257 0.046264 0.046159 0.045937 0.045591 0.045119 0.044515 0.043778 0.042909 0.041908 0.040776 0.039519 0.038140 0.036644 0.035035 0.033315 0.031489 0.029559 0.027530 0.025403 0.023183 0.020874 0.018477 0.015999 0.013439 0.010804 0.008095 0.005314 0.002461 -0.000461 -0.003449 -0.006500 -0.009614 -0.012789 -0.016024 -0.019318 -0.022671 -0.026083 -0.029555 -0.033088 -0.036683 -0.040339 -0.044057 -0.047836 -0.051676 -0.055576 -0.059533 -0.063545 -0.067609 -0.071722 -0.075880 -0.080079 -0.084314 -0.088577 -0.092862 -0.097161 -0.101464 -0.105762 -0.110042 -0.114295 -0.118508 -0.122669 -0.126767 -0.130795 -0.134744 -0.138610 -0.142392 -0.146095 -0.149730 -0.153314 -0.156871 -0.160429 -0.164022 -0.167683 -0.171451 -0.175362 -0.179449 -0.183746 -0.188274 -0.193042 -0.198049 -0.203281 -0.208709 -0.214292 -0.219972 -0.225688 -0.231383 -0.237000 -0.242496 -0.247837 -0.253004 -0.257995 -0.262815 -0.267475 -0.271994 -0.040867 0.041502 0.042091 0.042634 0.043130 0.043575 0.043962 0.044279 0.044517 0.044660 0.044696 0.044619 0.044419 0.044094 0.043635 0.043040 0.042304 0.041428 0.040412 0.039257 0.037968 0.036550 0.035009 0.033347 0.031570 0.029680 0.027683 0.025581 0.023377 0.021076 0.018682 0.016198 0.013628 0.010975 0.008243 0.005434 0.002549 -0.000410 -0.003440 -0.006539 -0.009704 -0.012935 -0.016229 -0.019587 -0.023007 -0.026490 -0.030036 -0.033646 -0.037321 -0.041061 -0.044867 -0.048737 -0.052672 -0.056669 -0.060728 -0.064845 -0.069017 -0.073242 -0.077516 -0.081833 -0.086190 -0.090580 -0.094997 -0.099431 -0.103875 -0.108320 -0.112753 -0.117164 -0.121542 -0.125872 -0.130143 -0.134343 -0.138463 -0.142495 -0.146437 -0.150291 -0.154067 -0.157782 -0.161458 -0.165127 -0.168823 -0.172584 -0.176446 -0.180448 -0.184627 -0.189015 -0.193639 -0.198516 -0.203646 -0.209022 -0.214621 -0.220406 -0.226321 -0.232304 -0.238291 -0.244224 -0.250049 -0.255728 -0.261233 -0.266555 -0.271698 -0.276669 -0.281485 -0.286164 -0.039101 0.039763 0.040376 0.040940 0.041454 0.041915 0.042319 0.042656 0.042915 0.043083 0.043145 0.043092 0.042913 0.042604 0.042158 0.041570 0.040834 0.039951 0.038919 0.037740 0.036419 0.034961 0.033373 0.031658 0.029822 0.027868 0.025802 0.023626 0.021344 0.018961 0.016481 0.013907 0.011245 0.008496 0.005665 0.002755 -0.000235 -0.003302 -0.006442 -0.009654 -0.012936 -0.016286 -0.019703 -0.023186 -0.026736 -0.030352 -0.034037 -0.037789 -0.041610 -0.045499 -0.049458 -0.053484 -0.057577 -0.061734 -0.065954 -0.070233 -0.074567 -0.078954 -0.083389 -0.087867 -0.092383 -0.096929 -0.101499 -0.106085 -0.110676 -0.115263 -0.119835 -0.124380 -0.128884 -0.133333 -0.137713 -0.142011 -0.146219 -0.150330 -0.154346 -0.158272 -0.162126 -0.165930 -0.169716 -0.173519 -0.177379 -0.181334 -0.185426 -0.189690 -0.194161 -0.198871 -0.203840 -0.209078 -0.214580 -0.220330 -0.226297 -0.232431 -0.238669 -0.244944 -0.251192 -0.257354 -0.263381 -0.269240 -0.274913 -0.280397 -0.285699 -0.290831 -0.295813 -0.300663 -0.037378 0.038068 0.038704 0.039288 0.039820 0.040295 0.040712 0.041064 0.041341 0.041528 0.041612 0.041576 0.041417 0.041121 0.040686 0.040103 0.039368 0.038476 0.037428 0.036225 0.034870 0.033372 0.031736 0.029967 0.028071 0.026052 0.023915 0.021664 0.019303 0.016836 0.014268 0.011604 0.008847 0.006002 0.003071 0.000057 -0.003040 -0.006217 -0.009470 -0.012797 -0.016198 -0.019669 -0.023212 -0.026824 -0.030508 -0.034262 -0.038088 -0.041986 -0.045956 -0.049999 -0.054113 -0.058298 -0.062551 -0.066871 -0.071254 -0.075696 -0.080195 -0.084745 -0.089343 -0.093983 -0.098658 -0.103362 -0.108088 -0.112826 -0.117567 -0.122300 -0.127014 -0.131695 -0.136326 -0.140892 -0.145377 -0.149769 -0.154061 -0.158248 -0.162336 -0.166339 -0.170279 -0.174189 -0.178104 -0.182066 -0.186116 -0.190293 -0.194638 -0.199187 -0.203973 -0.209021 -0.214349 -0.219958 -0.225838 -0.231965 -0.238297 -0.244774 -0.251326 -0.257884 -0.264385 -0.270770 -0.276996 -0.283036 -0.288882 -0.294535 -0.300004 -0.305307 -0.310464 -0.315495 -0.035695 0.036413 0.037072 0.037675 0.038223 0.038712 0.039140 0.039504 0.039792 0.039995 0.040094 0.040076 0.039931 0.039647 0.039220 0.038641 0.037904 0.037003 0.035938 0.034710 0.033322 0.031782 0.030098 0.028274 0.026317 0.024232 0.022023 0.019695 0.017253 0.014701 0.012045 0.009288 0.006436 0.003492 0.000459 -0.002661 -0.005867 -0.009155 -0.012523 -0.015969 -0.019490 -0.023087 -0.026758 -0.030504 -0.034324 -0.038219 -0.042191 -0.046238 -0.050361 -0.054560 -0.058834 -0.063180 -0.067597 -0.072081 -0.076628 -0.081236 -0.085900 -0.090616 -0.095378 -0.100180 -0.105017 -0.109882 -0.114766 -0.119660 -0.124555 -0.129438 -0.134296 -0.139113 -0.143870 -0.148549 -0.153135 -0.157616 -0.161986 -0.166247 -0.170411 -0.174498 -0.178541 -0.182575 -0.186643 -0.190788 -0.195051 -0.199474 -0.204095 -0.208948 -0.214065 -0.219467 -0.225164 -0.231151 -0.237415 -0.243921 -0.250614 -0.257426 -0.264284 -0.271120 -0.277866 -0.284470 -0.290894 -0.297120 -0.303144 -0.308972 -0.314618 -0.320101 -0.325442 -0.330663 -0.034046 0.034792 0.035475 0.036097 0.036660 0.037163 0.037601 0.037972 0.038271 0.038484 0.038595 0.038590 0.038455 0.038182 0.037759 0.037183 0.036442 0.035531 0.034449 0.033195 0.031773 0.030191 0.028457 0.026578 0.024559 0.022406 0.020124 0.017718 0.015193 0.012555 0.009809 0.006959 0.004009 0.000965 -0.002172 -0.005400 -0.008717 -0.012119 -0.015604 -0.019170 -0.022816 -0.026541 -0.030344 -0.034226 -0.038187 -0.042227 -0.046347 -0.050547 -0.054827 -0.059186 -0.063621 -0.068131 -0.072713 -0.077363 -0.082078 -0.086854 -0.091685 -0.096567 -0.101494 -0.106462 -0.111464 -0.116492 -0.121538 -0.126592 -0.131644 -0.136681 -0.141685 -0.146636 -0.151514 -0.156302 -0.160983 -0.165547 -0.169994 -0.174331 -0.178577 -0.182763 -0.186925 -0.191105 -0.195348 -0.199698 -0.204197 -0.208886 -0.213802 -0.218977 -0.224440 -0.230207 -0.236281 -0.242656 -0.249307 -0.256190 -0.263239 -0.270380 -0.277540 -0.284646 -0.291634 -0.298453 -0.305077 -0.311493 -0.317701 -0.323713 -0.329544 -0.335216 -0.340751 -0.346172 -0.032430 0.033204 0.033909 0.034550 0.035128 0.035644 0.036091 0.036468 0.036773 0.036994 0.037114 0.037117 0.036990 0.036724 0.036304 0.035727 0.034982 0.034061 0.032960 0.031680 0.030224 0.028599 0.026814 0.024878 0.022795 0.020573 0.018217 0.015732 0.013124 0.010398 0.007560 0.004614 0.001567 -0.001579 -0.004823 -0.008161 -0.011590 -0.015109 -0.018714 -0.022403 -0.026177 -0.030033 -0.033971 -0.037993 -0.042098 -0.046287 -0.050559 -0.054916 -0.059355 -0.063876 -0.068476 -0.073152 -0.077902 -0.082720 -0.087604 -0.092548 -0.097548 -0.102599 -0.107695 -0.112832 -0.118001 -0.123196 -0.128409 -0.133628 -0.138841 -0.144032 -0.149180 -0.154262 -0.159258 -0.164148 -0.168918 -0.173562 -0.178086 -0.182505 -0.186846 -0.191146 -0.195446 -0.199792 -0.204231 -0.208807 -0.213563 -0.218537 -0.223764 -0.229276 -0.235097 -0.241238 -0.247699 -0.254466 -0.261508 -0.268765 -0.276166 -0.283633 -0.291089 -0.298461 -0.305685 -0.312721 -0.319548 -0.326159 -0.332559 -0.338761 -0.344786 -0.350656 -0.356393 -0.362023 -0.030843 0.031644 0.032372 0.033031 0.033624 0.034151 0.034608 0.034990 0.035299 0.035524 0.035649 0.035658 0.035537 0.035274 0.034855 0.034275 0.033523 0.032591 0.031471 0.030165 0.028673 0.027004 0.025168 0.023174 0.021027 0.018735 0.016303 0.013737 0.011044 0.008228 0.005298 0.002255 -0.000893 -0.004143 -0.007494 -0.010944 -0.014489 -0.018126 -0.021854 -0.025670 -0.029573 -0.033564 -0.037641 -0.041806 -0.046059 -0.050399 -0.054828 -0.059344 -0.063946 -0.068632 -0.073399 -0.078244 -0.083163 -0.088152 -0.093207 -0.098322 -0.103493 -0.108715 -0.113983 -0.119291 -0.124633 -0.130000 -0.135383 -0.140772 -0.146148 -0.151493 -0.156782 -0.161991 -0.167097 -0.172082 -0.176937 -0.181662 -0.186267 -0.190778 -0.195228 -0.199659 -0.204117 -0.208649 -0.213304 -0.218126 -0.223155 -0.228430 -0.233983 -0.239844 -0.246034 -0.252559 -0.259415 -0.266580 -0.274012 -0.281642 -0.289392 -0.297181 -0.304928 -0.312560 -0.320020 -0.327275 -0.334309 -0.341120 -0.347718 -0.354120 -0.360347 -0.366423 -0.372371 -0.378218 -0.029281 0.030109 0.030861 0.031538 0.032144 0.032683 0.033148 0.033535 0.033845 0.034073 0.034201 0.034213 0.034094 0.033831 0.033411 0.032826 0.032066 0.031121 0.029982 0.028648 0.027120 0.025406 0.023519 0.021465 0.019252 0.016889 0.014380 0.011732 0.008952 0.006046 0.003021 -0.000120 -0.003370 -0.006726 -0.010188 -0.013752 -0.017414 -0.021173 -0.025025 -0.028971 -0.033007 -0.037136 -0.041355 -0.045667 -0.050071 -0.054567 -0.059155 -0.063833 -0.068601 -0.073455 -0.078391 -0.083407 -0.088498 -0.093659 -0.098887 -0.104175 -0.109520 -0.114917 -0.120360 -0.125844 -0.131363 -0.136907 -0.142467 -0.148027 -0.153566 -0.159062 -0.164488 -0.169817 -0.175027 -0.180104 -0.185043 -0.189849 -0.194545 -0.199160 -0.203734 -0.208314 -0.212948 -0.217686 -0.222575 -0.227659 -0.232978 -0.238568 -0.244460 -0.250682 -0.257250 -0.264168 -0.271425 -0.278994 -0.286816 -0.294817 -0.302913 -0.311020 -0.319054 -0.326943 -0.334639 -0.342115 -0.349361 -0.356379 -0.363183 -0.369792 -0.376229 -0.382518 -0.388686 -0.394762 -0.027744 0.028598 0.029372 0.030067 0.030687 0.031236 0.031710 0.032100 0.032412 0.032640 0.032768 0.032781 0.032660 0.032396 0.031973 0.031380 0.030610 0.029650 0.028491 0.027129 0.025564 0.023806 0.021865 0.019750 0.017471 0.015035 0.012448 0.009717 0.006849 0.003851 0.000729 -0.002512 -0.005866 -0.009331 -0.012905 -0.016585 -0.020367 -0.024250 -0.028230 -0.032307 -0.036481 -0.040750 -0.045115 -0.049577 -0.054136 -0.058791 -0.063541 -0.068385 -0.073321 -0.078344 -0.083453 -0.088642 -0.093907 -0.099243 -0.104645 -0.110109 -0.115632 -0.121207 -0.126830 -0.132495 -0.138196 -0.143923 -0.149662 -0.155394 -0.161095 -0.166738 -0.172294 -0.177736 -0.183045 -0.188212 -0.193235 -0.198131 -0.202928 -0.207661 -0.212375 -0.217120 -0.221948 -0.226909 -0.232049 -0.237412 -0.243035 -0.248952 -0.255195 -0.261788 -0.268744 -0.276063 -0.283729 -0.291702 -0.299915 -0.308286 -0.316726 -0.325147 -0.333464 -0.341609 -0.349542 -0.357243 -0.364706 -0.371938 -0.378955 -0.385779 -0.392434 -0.398945 -0.405342 -0.411656 -0.026229 0.027108 0.027903 0.028617 0.029250 0.029809 0.030290 0.030685 0.030995 0.031222 0.031350 0.031360 0.031236 0.030969 0.030539 0.029938 0.029155 0.028180 0.026999 0.025608 0.024006 0.022201 0.020206 0.018030 0.015683 0.013172 0.010505 0.007690 0.004732 0.001641 -0.001579 -0.004922 -0.008381 -0.011957 -0.015646 -0.019444 -0.023349 -0.027358 -0.031469 -0.035682 -0.039995 -0.044408 -0.048923 -0.053539 -0.058255 -0.063072 -0.067988 -0.073000 -0.078106 -0.083303 -0.088585 -0.093949 -0.099390 -0.104903 -0.110484 -0.116127 -0.121830 -0.127588 -0.133396 -0.139248 -0.145137 -0.151050 -0.156970 -0.162873 -0.168732 -0.174517 -0.180196 -0.185746 -0.191152 -0.196407 -0.201520 -0.206515 -0.211424 -0.216289 -0.221158 -0.226087 -0.231126 -0.236325 -0.241732 -0.247387 -0.253326 -0.259583 -0.266187 -0.273161 -0.280514 -0.288243 -0.296323 -0.304703 -0.313307 -0.322047 -0.330829 -0.339560 -0.348156 -0.356558 -0.364731 -0.372661 -0.380347 -0.387799 -0.395037 -0.402083 -0.408963 -0.415706 -0.422341 -0.428903 -0.024736 0.025637 0.026453 0.027184 0.027831 0.028399 0.028887 0.029285 0.029595 0.029819 0.029944 0.029950 0.029822 0.029547 0.029110 0.028498 0.027701 0.026708 0.025505 0.024084 0.022444 0.020592 0.018542 0.016303 0.013887 0.011301 0.008553 0.005651 0.002603 -0.000584 -0.003904 -0.007350 -0.010917 -0.014606 -0.018411 -0.022331 -0.026361 -0.030499 -0.034744 -0.039095 -0.043551 -0.048112 -0.052779 -0.057552 -0.062430 -0.067412 -0.072496 -0.077679 -0.082958 -0.088330 -0.093788 -0.099330 -0.104950 -0.110642 -0.116404 -0.122231 -0.128119 -0.134064 -0.140063 -0.146107 -0.152188 -0.158290 -0.164390 -0.170462 -0.176475 -0.182394 -0.188191 -0.193846 -0.199346 -0.204694 -0.209905 -0.215008 -0.220042 -0.225052 -0.230093 -0.235220 -0.240486 -0.245940 -0.251628 -0.257588 -0.263854 -0.270460 -0.277436 -0.284800 -0.292559 -0.300705 -0.309204 -0.317994 -0.326990 -0.336098 -0.345218 -0.354256 -0.363130 -0.371789 -0.380206 -0.388371 -0.396285 -0.403964 -0.411429 -0.418705 -0.425819 -0.432801 -0.439685 -0.446507 -0.023267 0.024185 0.025020 0.025768 0.026428 0.027004 0.027499 0.027900 0.028209 0.028429 0.028550 0.028551 0.028416 0.028132 0.027686 0.027061 0.026248 0.025235 0.024009 0.022557 0.020878 0.018978 0.016871 0.014569 0.012082 0.009420 0.006589 0.003600 0.000459 -0.002825 -0.006246 -0.009797 -0.013475 -0.017278 -0.021203 -0.025246 -0.029404 -0.033674 -0.038056 -0.042548 -0.047150 -0.051863 -0.056686 -0.061619 -0.066661 -0.071811 -0.077066 -0.082423 -0.087877 -0.093426 -0.099064 -0.104786 -0.110586 -0.116462 -0.122408 -0.128422 -0.134500 -0.140639 -0.146833 -0.153075 -0.159351 -0.165642 -0.171921 -0.178158 -0.184318 -0.190366 -0.196277 -0.202034 -0.207631 -0.213077 -0.218395 -0.223617 -0.228788 -0.233958 -0.239186 -0.244527 -0.250035 -0.255758 -0.261739 -0.268013 -0.274617 -0.281583 -0.288940 -0.296704 -0.304879 -0.313449 -0.322372 -0.331573 -0.340962 -0.350436 -0.359891 -0.369232 -0.378384 -0.387304 -0.395969 -0.404372 -0.412522 -0.420435 -0.428135 -0.435648 -0.443003 -0.450234 -0.457377 -0.464471 -0.021819 0.022753 0.023603 0.024366 0.025039 0.025624 0.026124 0.026529 0.026835 0.027051 0.027167 0.027161 0.027018 0.026724 0.026266 0.025626 0.024796 0.023761 0.022511 0.021027 0.019308 0.017359 0.015195 0.012828 0.010269 0.007528 0.004614 0.001535 -0.001700 -0.005082 -0.008606 -0.012265 -0.016056 -0.019976 -0.024023 -0.028191 -0.032479 -0.036884 -0.041406 -0.046042 -0.050794 -0.055661 -0.060643 -0.065740 -0.070950 -0.076270 -0.081699 -0.087232 -0.092865 -0.098593 -0.104412 -0.110316 -0.116301 -0.122362 -0.128497 -0.134703 -0.140977 -0.147314 -0.153710 -0.160154 -0.166627 -0.173106 -0.179562 -0.185958 -0.192258 -0.198431 -0.204453 -0.210314 -0.216012 -0.221563 -0.226996 -0.232348 -0.237669 -0.243014 -0.248443 -0.254013 -0.259777 -0.265781 -0.272065 -0.278665 -0.285616 -0.292952 -0.300699 -0.308873 -0.317472 -0.326473 -0.335823 -0.345439 -0.355219 -0.365057 -0.374845 -0.384487 -0.393919 -0.403102 -0.412019 -0.420668 -0.429059 -0.437213 -0.445154 -0.452912 -0.460518 -0.468007 -0.475421 -0.482800 -0.020393 0.021340 0.022202 0.022977 0.023662 0.024255 0.024761 0.025168 0.025473 0.025683 0.025793 0.025780 0.025627 0.025321 0.024849 0.024193 0.023344 0.022286 0.021009 0.019493 0.017733 0.015734 0.013511 0.011078 0.008446 0.005626 0.002626 -0.000543 -0.003874 -0.007357 -0.010986 -0.014754 -0.018660 -0.022700 -0.026870 -0.031167 -0.035588 -0.040131 -0.044795 -0.049580 -0.054484 -0.059509 -0.064654 -0.069917 -0.075297 -0.080791 -0.086395 -0.092107 -0.097920 -0.103831 -0.109833 -0.115923 -0.122095 -0.128346 -0.134675 -0.141078 -0.147552 -0.154094 -0.160696 -0.167343 -0.174014 -0.180680 -0.187308 -0.193858 -0.200293 -0.206587 -0.212721 -0.218687 -0.224492 -0.230157 -0.235714 -0.241207 -0.246690 -0.252223 -0.257869 -0.263682 -0.269714 -0.276010 -0.282607 -0.289542 -0.296850 -0.304566 -0.312713 -0.321305 -0.330337 -0.339776 -0.349557 -0.359589 -0.369761 -0.379960 -0.390077 -0.400021 -0.409735 -0.419186 -0.428360 -0.437259 -0.445897 -0.454299 -0.462489 -0.470500 -0.478365 -0.486124 -0.493820 -0.501497 -0.018989 0.019945 0.020818 0.021602 0.022296 0.022898 0.023408 0.023818 0.024121 0.024325 0.024427 0.024406 0.024242 0.023923 0.023436 0.022762 0.021892 0.020809 0.019504 0.017954 0.016153 0.014103 0.011821 0.009320 0.006614 0.003712 0.000626 -0.002636 -0.006064 -0.009650 -0.013385 -0.017265 -0.021288 -0.025450 -0.029747 -0.034175 -0.038732 -0.043416 -0.048225 -0.053161 -0.058222 -0.063407 -0.068717 -0.074150 -0.079703 -0.085373 -0.091156 -0.097048 -0.103045 -0.109140 -0.115329 -0.121607 -0.127970 -0.134416 -0.140942 -0.147548 -0.154229 -0.160981 -0.167792 -0.174645 -0.181512 -0.188362 -0.195156 -0.201854 -0.208422 -0.214836 -0.221082 -0.227158 -0.233076 -0.238862 -0.244553 -0.250199 -0.255857 -0.261593 -0.267468 -0.273537 -0.279849 -0.286446 -0.293366 -0.300644 -0.308319 -0.316423 -0.324980 -0.334001 -0.343474 -0.353357 -0.363573 -0.374021 -0.384583 -0.395142 -0.405587 -0.415834 -0.425832 -0.435554 -0.444990 -0.454146 -0.463039 -0.471694 -0.480141 -0.488413 -0.496547 -0.504586 -0.512577 -0.520564 -0.017608 0.018569 0.019449 0.020240 0.020941 0.021550 0.022064 0.022476 0.022777 0.022975 0.023069 0.023039 0.022863 0.022530 0.022025 0.021332 0.020440 0.019331 0.017996 0.016411 0.014567 0.012465 0.010122 0.007553 0.004770 0.001787 -0.001388 -0.004744 -0.008271 -0.011961 -0.015806 -0.019799 -0.023942 -0.028228 -0.032654 -0.037215 -0.041911 -0.046739 -0.051698 -0.056787 -0.062007 -0.067357 -0.072835 -0.078440 -0.084168 -0.090017 -0.095982 -0.102058 -0.108239 -0.114522 -0.120900 -0.127370 -0.133928 -0.140573 -0.147303 -0.154116 -0.161009 -0.167975 -0.174998 -0.182056 -0.189119 -0.196148 -0.203102 -0.209944 -0.216643 -0.223178 -0.229539 -0.235731 -0.241769 -0.247685 -0.253519 -0.259328 -0.265176 -0.271128 -0.277244 -0.283581 -0.290182 -0.297090 -0.304340 -0.311972 -0.320022 -0.328524 -0.337501 -0.346960 -0.356882 -0.367214 -0.377869 -0.388733 -0.399685 -0.410601 -0.421373 -0.431925 -0.442211 -0.452209 -0.461912 -0.471330 -0.480484 -0.489400 -0.498112 -0.506653 -0.515066 -0.523398 -0.531696 -0.540007 -0.016253 0.017211 0.018095 0.018891 0.019596 0.020210 0.020729 0.021143 0.021441 0.021632 0.021718 0.021677 0.021489 0.021140 0.020617 0.019904 0.018987 0.017850 0.016483 0.014863 0.012975 0.010820 0.008415 0.005776 0.002916 -0.000152 -0.003417 -0.006869 -0.010496 -0.014292 -0.018247 -0.022358 -0.026622 -0.031035 -0.035592 -0.040290 -0.045127 -0.050102 -0.055213 -0.060459 -0.065841 -0.071358 -0.077007 -0.082787 -0.088694 -0.094724 -0.100873 -0.107135 -0.113504 -0.119977 -0.126548 -0.133213 -0.139971 -0.146820 -0.153758 -0.160785 -0.167895 -0.175078 -0.182314 -0.189577 -0.196831 -0.204034 -0.211145 -0.218129 -0.224958 -0.231615 -0.238097 -0.244410 -0.250575 -0.256628 -0.262616 -0.268600 -0.274650 -0.280830 -0.287201 -0.293815 -0.300715 -0.307940 -0.315531 -0.323524 -0.331959 -0.340869 -0.350276 -0.360182 -0.370561 -0.381347 -0.392442 -0.403724 -0.415063 -0.426335 -0.437435 -0.448295 -0.458873 -0.469151 -0.479126 -0.488813 -0.498234 -0.507419 -0.516402 -0.525223 -0.533926 -0.542561 -0.551179 -0.559827 -0.014927 0.015876 0.016756 0.017555 0.018263 0.018879 0.019401 0.019816 0.020112 0.020296 0.020373 0.020321 0.020119 0.019754 0.019212 0.018475 0.017532 0.016367 0.014966 0.013309 0.011377 0.009168 0.006699 0.003988 0.001050 -0.002103 -0.005460 -0.009009 -0.012740 -0.016644 -0.020712 -0.024941 -0.029330 -0.033871 -0.038563 -0.043400 -0.048381 -0.053506 -0.058771 -0.064178 -0.069726 -0.075412 -0.081236 -0.087193 -0.093281 -0.099495 -0.105830 -0.112280 -0.118840 -0.125506 -0.132273 -0.139138 -0.146100 -0.153158 -0.160310 -0.167555 -0.174886 -0.182289 -0.189739 -0.197205 -0.204646 -0.212018 -0.219284 -0.226408 -0.233368 -0.240152 -0.246759 -0.253198 -0.259497 -0.265695 -0.271847 -0.278019 -0.284283 -0.290704 -0.297340 -0.304240 -0.311446 -0.318999 -0.326937 -0.335300 -0.344130 -0.353457 -0.363304 -0.373667 -0.384510 -0.395755 -0.407292 -0.418990 -0.430716 -0.442343 -0.453773 -0.464943 -0.475817 -0.486380 -0.496633 -0.506594 -0.516289 -0.525750 -0.535014 -0.544124 -0.553128 -0.562080 -0.571030 -0.580027 -0.013627 0.014564 0.015436 0.016231 0.016940 0.017556 0.018079 0.018495 0.018788 0.018965 0.019033 0.018969 0.018752 0.018370 0.017807 0.017047 0.016077 0.014881 0.013445 0.011749 0.009771 0.007507 0.004974 0.002190 -0.000828 -0.004069 -0.007519 -0.011168 -0.015003 -0.019016 -0.023200 -0.027551 -0.032065 -0.036738 -0.041566 -0.046546 -0.051674 -0.056951 -0.062375 -0.067945 -0.073660 -0.079520 -0.085520 -0.091658 -0.097929 -0.104329 -0.110853 -0.117494 -0.124248 -0.131111 -0.138077 -0.145146 -0.152317 -0.159589 -0.166961 -0.174429 -0.181984 -0.189608 -0.197271 -0.204936 -0.212560 -0.220099 -0.227517 -0.234782 -0.241876 -0.248791 -0.255527 -0.262099 -0.268538 -0.274890 -0.281216 -0.287589 -0.294079 -0.300751 -0.307661 -0.314856 -0.322377 -0.330264 -0.338559 -0.347301 -0.356533 -0.366289 -0.376585 -0.387415 -0.398728 -0.410436 -0.422416 -0.434530 -0.446641 -0.458624 -0.470386 -0.481870 -0.493045 -0.503898 -0.514434 -0.524676 -0.534652 -0.544396 -0.553949 -0.563359 -0.572676 -0.581955 -0.591250 -0.600608 -0.012351 0.013276 0.014134 0.014920 0.015627 0.016241 0.016763 0.017179 0.017469 0.017639 0.017696 0.017620 0.017389 0.016987 0.016404 0.015618 0.014620 0.013392 0.011919 0.010183 0.008158 0.005837 0.003238 0.000381 -0.002720 -0.006049 -0.009595 -0.013344 -0.017286 -0.021411 -0.025712 -0.030186 -0.034830 -0.039637 -0.044604 -0.049728 -0.055007 -0.060439 -0.066024 -0.071760 -0.077647 -0.083681 -0.089861 -0.096182 -0.102639 -0.109228 -0.115943 -0.122779 -0.129729 -0.136791 -0.143962 -0.151239 -0.158624 -0.166115 -0.173711 -0.181407 -0.189189 -0.197034 -0.204908 -0.212769 -0.220572 -0.228276 -0.235846 -0.243254 -0.250485 -0.257535 -0.264404 -0.271114 -0.277701 -0.284216 -0.290729 -0.297313 -0.304041 -0.310974 -0.318167 -0.325664 -0.333507 -0.341737 -0.350395 -0.359525 -0.369170 -0.379364 -0.390121 -0.401425 -0.413215 -0.425388 -0.437812 -0.450343 -0.462839 -0.475178 -0.487275 -0.499077 -0.510556 -0.521703 -0.532529 -0.543058 -0.553322 -0.563358 -0.573211 -0.582930 -0.592571 -0.602191 -0.611842 -0.621573 - diff --git a/Tune_Cases/DISCON.IN b/Tune_Cases/DISCON.IN deleted file mode 100644 index a4df7c7c..00000000 --- a/Tune_Cases/DISCON.IN +++ /dev/null @@ -1,119 +0,0 @@ -! Controller parameter input file for the IEA-15-240-RWT-UMaineSemi wind turbine -! - File written using ROSCO version 2.3.0 controller tuning logic on 08/20/21 - -!------- 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 ------------------------------------------------- -2 ! F_LPFType - {1: first-order low-pass filter, 2: second-order low-pass filter}, [rad/s] (currently filters generator speed and pitch control signals -2 ! F_NotchType - Notch on the measured generator speed and/or tower fore-aft motion (for floating) {0: disable, 1: generator speed, 2: tower-top fore-aft motion, 3: generator speed and tower-top fore-aft motion} -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 with constant torque, 3: TSR tracking PI control with constant power} -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 - Pitch saturation mode {0: no pitch saturation, 1: implement pitch saturation} -0 ! SD_Mode - Shutdown mode {0: no shutdown procedure, 1: pitch to max pitch at shutdown} -2 ! Fl_Mode - Floating specific feedback mode {0: no nacelle velocity feedback, 1: nacelle velocity feedback} -0 ! Flp_Mode - Flap control mode {0: no flap control, 1: steady state flap angle, 2: Proportional flap control} - -!------- FILTERS ---------------------------------------------------------- -1.00810 ! F_LPFCornerFreq - Corner frequency (-3dB point) in the low-pass filters, [rad/s] -0.70000 ! F_LPFDamping - Damping coefficient {used only when F_FilterType = 2} [-] -3.35500 ! F_NotchCornerFreq - Natural frequency of the notch filter, [rad/s] -0.00000 0.25000 ! F_NotchBetaNumDen - Two notch damping values (numerator and denominator, resp) - determines the width and depth of the notch, [-] -0.628300000000 ! F_SSCornerFreq - Corner frequency (-3dB point) in the first order low pass filter for the setpoint smoother, [rad/s]. -0.21300 1.00000 ! F_FlCornerFreq - Natural frequency and damping in the second order low pass filter of the tower-top fore-aft motion for floating feedback control [rad/s, -]. -1.16240 1.00000 ! F_FlpCornerFreq - Corner frequency and damping in the second order low pass filter of the blade root bending moment for flap control [rad/s, -]. - -!------- BLADE PITCH CONTROL ---------------------------------------------- -30 ! PC_GS_n - Amount of gain-scheduling table entries -0.060683 0.087433 0.108570 0.126809 0.143182 0.158231 0.172273 0.185522 0.198122 0.210183 0.221780 0.232979 0.243834 0.254376 0.264646 0.274672 0.284470 0.294064 0.303472 0.312709 0.321787 0.330716 0.339507 0.348169 0.356709 0.365135 0.373452 0.381666 0.389784 0.397808 ! PC_GS_angles - Gain-schedule table: pitch angles [rad]. --3.811712 -3.407304 -3.072613 -2.791042 -2.550874 -2.343603 -2.162903 -2.003972 -1.863099 -1.737374 -1.624476 -1.522539 -1.430039 -1.345725 -1.268556 -1.197660 -1.132303 -1.071860 -1.015796 -0.963653 -0.915032 -0.869590 -0.827023 -0.787068 -0.749491 -0.714086 -0.680669 -0.649079 -0.619169 -0.590809 ! PC_GS_KP - Gain-schedule table: pitch controller kp gains [s]. --0.289550 -0.262237 -0.239633 -0.220617 -0.204397 -0.190398 -0.178194 -0.167461 -0.157947 -0.149456 -0.141831 -0.134946 -0.128699 -0.123005 -0.117793 -0.113005 -0.108591 -0.104509 -0.100723 -0.097201 -0.093917 -0.090848 -0.087973 -0.085275 -0.082737 -0.080346 -0.078089 -0.075956 -0.073936 -0.072020 ! 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 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 0.0 0.0 0.0 ! PC_GS_TF - Gain-schedule table: pitch controller tf gains (derivative filter) -1.570000000000 ! PC_MaxPit - Maximum physical pitch limit, [rad]. -0.000000000000 ! PC_MinPit - Minimum physical pitch limit, [rad]. -0.034900000000 ! PC_MaxRat - Maximum pitch rate (in absolute value) in pitch controller, [rad/s]. --0.03490000000 ! PC_MinRat - Minimum pitch rate (in absolute value) in pitch controller, [rad/s]. -0.791680000000 ! 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] - -!------- INDIVIDUAL PITCH CONTROL ----------------------------------------- -0.1 ! IPC_IntSat - Integrator saturation (maximum signal amplitude contribution to pitch from IPC), [rad] -0.0e+00 0.0 ! IPC_KI - Integral gain for the individual pitch controller: first parameter for 1P reductions, second for 2P reductions, [-] -0.0e+00 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 ------------------------------------------------ -96.55000000000 ! VS_GenEff - Generator efficiency mechanical power -> electrical power, [should match the efficiency defined in the generator properties!], [%] -19624046.66639 ! VS_ArSatTq - Above rated generator torque PI control saturation, [Nm] -4500000.000000 ! VS_MaxRat - Maximum torque rate (in absolute value) in torque controller, [Nm/s]. -21586451.33303 ! VS_MaxTq - Maximum generator torque in Region 3 (HSS side), [Nm]. -0.000000000000 ! VS_MinTq - Minimum generator (HSS side), [Nm]. -0.523600000000 ! VS_MinOMSpd - Optimal mode minimum speed, cut-in speed towards optimal mode gain path, [rad/s] -34505815.52476 ! VS_Rgn2K - Generator torque constant in Region 2 (HSS side), [Nm/(rad/s)^2] -15000000.00000 ! VS_RtPwr - Wind turbine rated power [W] -19624046.66639 ! VS_RtTq - Rated torque, [Nm]. -0.791680000000 ! VS_RefSpd - Rated generator speed [rad/s] -1 ! VS_n - Number of generator PI torque controller gains --39034030.68778 ! VS_KP - Proportional gain for generator PI torque controller [-]. (Only used in the transitional 2.5 region if VS_ControlMode =/ 2) --4588245.18720 ! VS_KI - Integral gain for generator PI torque controller [s]. (Only used in the transitional 2.5 region if VS_ControlMode =/ 2) -9.00 ! 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 --------------------------------------------- -120.000 ! WE_BladeRadius - Blade length (distance from hub center to blade tip), [m] -1 ! WE_CP_n - Amount of parameters in the Cp array -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] -1.0 ! WE_GearboxRatio - Gearbox ratio [>=1], [-] -318628138.00000 ! 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] -"/Users/nabbas/Documents/WindEnergyToolbox/ROSCO/Tune_Cases/Cp_Ct_Cq.IEA15MW.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 -60 ! WE_FOPoles_N - Number of first-order system poles used in EKF -3.00 3.27 3.53 3.80 4.07 4.33 4.60 4.87 5.14 5.40 5.67 5.94 6.20 6.47 6.74 7.00 7.27 7.54 7.80 8.07 8.34 8.60 8.87 9.14 9.41 9.67 9.94 10.21 10.47 10.74 11.22 11.69 12.17 12.64 13.12 13.59 14.07 14.54 15.02 15.49 15.97 16.44 16.92 17.39 17.87 18.35 18.82 19.30 19.77 20.25 20.72 21.20 21.67 22.15 22.62 23.10 23.57 24.05 24.52 25.00 ! WE_FOPoles_v - Wind speeds corresponding to first-order system poles [m/s] --0.02334364 -0.02542042 -0.02749720 -0.02957398 -0.03165076 -0.03372754 -0.03580432 -0.03788110 -0.03995788 -0.04203466 -0.04411143 -0.04618821 -0.04826499 -0.05034177 -0.05241855 -0.05449533 -0.05657211 -0.05864889 -0.06072567 -0.06280245 -0.06487923 -0.06695601 -0.06903278 -0.07110956 -0.07318634 -0.07526312 -0.07733990 -0.07941668 -0.08149346 -0.08119577 -0.05454346 -0.05695037 -0.06335518 -0.07173786 -0.08143862 -0.09212647 -0.10361954 -0.11576910 -0.12850182 -0.14177876 -0.15556708 -0.16981797 -0.18445675 -0.19956215 -0.21503774 -0.23089771 -0.24714044 -0.26373464 -0.28068814 -0.29797559 -0.31560008 -0.33353280 -0.35180528 -0.37035226 -0.38920331 -0.40835512 -0.42775936 -0.44742679 -0.46737873 -0.48757093 ! WE_FOPoles - First order system poles [1/s] - -!------- 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 [rad/s] -0.0 ! Y_omegaLPSlow - Corner frequency slow low pass filter, 1/60 [rad/s] -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_HPFCornerFreq - 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] - -!------- MINIMUM PITCH SATURATION ------------------------------------------- -60 ! PS_BldPitchMin_N - Number of values in minimum blade pitch lookup table (should equal number of values in PS_WindSpeeds and PS_BldPitchMin) -3.0000 3.2669 3.5338 3.8007 4.0676 4.3345 4.6014 4.8683 5.1352 5.4021 5.6690 5.9359 6.2028 6.4697 6.7366 7.0034 7.2703 7.5372 7.8041 8.0710 8.3379 8.6048 8.8717 9.1386 9.4055 9.6724 9.9393 10.2062 10.4731 10.7400 11.2153 11.6907 12.1660 12.6413 13.1167 13.5920 14.0673 14.5427 15.0180 15.4933 15.9687 16.4440 16.9193 17.3947 17.8700 18.3453 18.8207 19.2960 19.7713 20.2467 20.7220 21.1973 21.6727 22.1480 22.6233 23.0987 23.5740 24.0493 24.5247 25.0000 ! PS_WindSpeeds - Wind speeds corresponding to minimum blade pitch angles [m/s] -0.06096404 0.06096404 0.06096404 0.06096404 0.06096404 0.05989354 0.05575228 0.05107426 0.04580190 0.03987284 0.03342335 0.02657588 0.01947577 0.01221943 0.00493408 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00840069 0.02280570 0.03537141 0.04647892 0.05404517 0.06482739 0.07508321 0.08495204 0.09451935 0.10383907 0.11295080 0.12188355 0.13065966 0.13929783 0.14781427 0.15622063 0.16452836 0.17274642 0.18088282 0.18894375 0.19693548 0.20486135 0.21272286 0.22052830 0.22827982 0.23598030 0.24362922 0.25122962 0.25878539 0.26629954 0.27376630 0.28119278 0.28858074 0.29592793 0.30323465 ! PS_BldPitchMin - Minimum blade pitch angles [rad] - -!------- SHUTDOWN ----------------------------------------------------------- -0.698100000000 ! 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] - -!------- Floating ----------------------------------------------------------- --9.32022000000 ! Fl_Kp - Nacelle velocity proportional feedback gain [s] - -!------- FLAP ACTUATION ----------------------------------------------------- -0.000000000000 ! Flp_Angle - Initial or steady state flap angle [rad] -0.00000000e+00 ! Flp_Kp - Blade root bending moment proportional gain for flap control [s] -0.00000000e+00 ! Flp_Ki - Flap displacement integral gain for flap control [-] -0.174500000000 ! Flp_MaxPit - Maximum (and minimum) flap pitch angle [rad] \ No newline at end of file diff --git a/Tune_Cases/DTU10MW.yaml b/Tune_Cases/DTU10MW.yaml deleted file mode 100644 index 805a0c21..00000000 --- a/Tune_Cases/DTU10MW.yaml +++ /dev/null @@ -1,49 +0,0 @@ -# --------------------- ROSCO controller tuning input file ------------------- - # Written for use with ROSCO_Toolbox tuning procedures - # Turbine: DTU 10MW Reference Wind Turbine -# ------------------------------ OpenFAST PATH DEFINITIONS ------------------------------ -path_params: - FAST_InputFile: 'DTU_10MW_RWT.fst' # Name of *.fst file - FAST_directory: '/Users/nabbas/Documents/TurbineModels/DTU_10MW/DTU10MWRWT/Baseline' # Main OpenFAST model directory, where the *.fst lives - # Optional - rotor_performance_filename: 'Cp_Ct_Cq.DTU10MW.txt' # Filename for rotor performance text file (if it has been generated by ccblade already) - -# -------------------------------- TURBINE PARAMETERS ----------------------------------- -turbine_params: - rotor_inertia: 156348032.208 # Rotor inertia [kg m^2], {Available in Elastodyn .sum file} - rated_rotor_speed: 1.0053 # Rated rotor speed [rad/s] - v_min: 4.0 # Cut-in wind speed [m/s] - v_rated: 11.4 # Rated wind speed [m/s] - v_max: 25.0 # Cut-out wind speed [m/s], -- Does not need to be exact (JUST ASSUME FOR NOW) - max_pitch_rate: 0.1745 # Maximum blade pitch rate [rad/s] - max_torque_rate: 5000000. # Maximum torque rate [Nm/s], {~1/4 VS_RtTq/s} - rated_power: 10000000. # Rated Power [W] - bld_edgewise_freq: 4.519 # Blade edgewise first natural frequency [rad/s] - bld_flapwise_freq: 0.0 # Blade flapwise first natural frequency [rad/s] - # Optional - # TSR_operational: # None # Desired below-rated operational tip speed ratio (Cp-maximizing TSR is used if not defined) -#------------------------------- CONTROLLER PARAMETERS ---------------------------------- -controller_params: - # Controller flags - LoggingLevel: 1 # {0: write no debug files, 1: write standard output .dbg-file, 2: write standard output .dbg-file and complete avrSWAP-array .dbg2-file - F_LPFType: 1 # {1: first-order low-pass filter, 2: second-order low-pass filter}, [rad/s] (currently filters generator speed and pitch control signals) - F_NotchType: 0 # Notch on the measured generator speed {0: disable, 1: enable} - IPC_ControlMode: 0 # Turn Individual Pitch Control (IPC) for fatigue load reductions (pitch contribution) {0: off, 1: 1P reductions, 2: 1P+2P reductions} - VS_ControlMode: 2 # Generator torqe control mode in above rated conditions {0: constant torque, 1: constant power, 2: TSR tracking PI control} - PC_ControlMode: 1 # Blade pitch control mode {0: No pitch, fix to fine pitch, 1: active PI blade pitch control} - Y_ControlMode: 0 # Yaw control mode {0: no yaw control, 1: yaw rate control, 2: yaw-by-IPC} - SS_Mode: 1 # Setpoint Smoother mode {0: no setpoint smoothing, 1: introduce setpoint smoothing} - WE_Mode: 2 # Wind speed estimator mode {0: One-second low pass filtered hub height wind speed, 1: Immersion and Invariance Estimator 2: Extended Kalman Filter} - PS_Mode: 0 # Pitch saturation mode {0: no pitch saturation, 1: peak shaving, 2: Cp-maximizing pitch saturation, 3: peak shaving and Cp-maximizing pitch saturation} - SD_Mode: 0 # Shutdown mode {0: no shutdown procedure, 1: pitch to max pitch at shutdown} - Fl_Mode: 0 # Floating specific feedback mode {0: no nacelle velocity feedback, 1: nacelle velocity feedback} - Flp_Mode: 0 # Flap control mode {0: no flap control, 1: steady state flap angle, 2: Proportional flap control} - # Optional - should be defined if Fl_Mode = 1 - # twr_freq: # None # Tower natural frequency [rad/s] - # ptfm_freq: # None # Platform natural frequency [rad/s] -# Controller parameters - U_pc: [12] - zeta_pc: [0.8] # Pitch controller desired damping ratio [-] - omega_pc: [0.3] # Pitch controller desired natural frequency [rad/s] - zeta_vs: 0.7 # Torque controller desired damping ratio [-] - omega_vs: 0.2 # Torque controller desired natural frequency [rad/s] diff --git a/Tune_Cases/IEA15MW.yaml b/Tune_Cases/IEA15MW.yaml index 726fc442..673716eb 100644 --- a/Tune_Cases/IEA15MW.yaml +++ b/Tune_Cases/IEA15MW.yaml @@ -6,7 +6,7 @@ path_params: FAST_InputFile: 'IEA-15-240-RWT-UMaineSemi.fst' # Name of *.fst file FAST_directory: '../Test_Cases/IEA-15-240-RWT-UMaineSemi' # Main OpenFAST model directory, where the *.fst lives # Optional (but suggested...) - rotor_performance_filename: 'Cp_Ct_Cq.IEA15MW.txt' # Filename for rotor performance text file (if it has been generated by ccblade already) + rotor_performance_filename: '../Test_Cases/IEA-15-240-RWT-UMaineSemi/Cp_Ct_Cq.IEA15MW.txt' # Filename for rotor performance text file (if it has been generated by ccblade already) # -------------------------------- TURBINE PARAMETERS ----------------------------------- turbine_params: @@ -40,8 +40,8 @@ controller_params: Flp_Mode: 0 # Flap control mode {0: no flap control, 1: steady state flap angle, 2: Proportional flap control} # Controller parameters # U_pc: [14] - zeta_pc: 2.0 # Pitch controller desired damping ratio [-] - omega_pc: 0.3 # Pitch controller desired natural frequency [rad/s] + zeta_pc: 1.0 # Pitch controller desired damping ratio [-] + omega_pc: 0.2 # Pitch controller desired natural frequency [rad/s] zeta_vs: 0.85 # Torque controller desired damping ratio [-] omega_vs: 0.12 # Torque controller desired natural frequency [rad/s] twr_freq: 3.355 # for semi only! diff --git a/Test_Cases/IEA-15-240-RWT-UMaineSemi/ServoData/IEA15MW-UMaineSemi.yaml b/Tune_Cases/IEA15MW_FOCAL.yaml similarity index 60% rename from Test_Cases/IEA-15-240-RWT-UMaineSemi/ServoData/IEA15MW-UMaineSemi.yaml rename to Tune_Cases/IEA15MW_FOCAL.yaml index 5fc8588c..09a00dc9 100644 --- a/Test_Cases/IEA-15-240-RWT-UMaineSemi/ServoData/IEA15MW-UMaineSemi.yaml +++ b/Tune_Cases/IEA15MW_FOCAL.yaml @@ -3,26 +3,23 @@ # Turbine: IEA 15MW Reference Wind Turbine # ------------------------------ OpenFAST PATH DEFINITIONS ------------------------------ path_params: - FAST_InputFile: 'IEA-15-240-RWT_semi.fst' # Name of *.fst file - FAST_directory: '/mnt/c/Users/egaertne/Projects/IEA15MW_floating_tower/inputs/OpenFAST_UMaine' # Main OpenFAST model directory, where the *.fst lives + FAST_InputFile: 'IEA-15-240-RWT-UMaineSemi.fst' # Name of *.fst file + FAST_directory: '../Test_Cases/IEA-15-240-RWT-UMaineSemi' # Main OpenFAST model directory, where the *.fst lives # Optional (but suggested...) - rotor_performance_filename: "/mnt/c/Users/egaertne/Projects/IEA15MW_floating_tower/inputs/OpenFAST_UMaine/Cp_Ct_Cq.IEA15MW.txt" # Filename for rotor performance text file (if it has been generated by ccblade already) + rotor_performance_filename: 'Cp_Ct_Cq.IEA15MW.txt' # Filename for rotor performance text file (if it has been generated by ccblade already) # -------------------------------- TURBINE PARAMETERS ----------------------------------- turbine_params: rotor_inertia: 310619488. # Rotor inertia [kg m^2], {Available in Elastodyn .sum file} rated_rotor_speed: 0.7916813478 # Rated rotor speed [rad/s] v_min: 3. # Cut-in wind speed [m/s] - v_rated: 10.59 # Rated wind speed [m/s] + v_rated: 11.5 # Rated wind speed [m/s] v_max: 25.0 # Cut-out wind speed [m/s], -- Does not need to be exact (JUST ASSUME FOR NOW) max_pitch_rate: 0.0349 # Maximum blade pitch rate [rad/s] max_torque_rate: 4500000. # Maximum torque rate [Nm/s], {~1/4 VS_RtTq/s} - rated_power: 15000000. # Rated Power [W] - bld_edgewise_freq: 4.0324 # Blade edgewise first natural frequency [rad/s] - bld_flapwise_freq: 3.4872 # Blade flapwise first natural frequency [rad/s] - TSR_operational: 9.0 - twr_freq: 3.12 # for semi only! - ptfm_freq: 0.226 # for semi only! + rated_power: 1.4780e+07 # Rated Power [W] + TSR_operational: 7.49 + #------------------------------- CONTROLLER PARAMETERS ---------------------------------- controller_params: # Controller flags @@ -35,23 +32,23 @@ controller_params: Y_ControlMode: 0 # Yaw control mode {0: no yaw control, 1: yaw rate control, 2: yaw-by-IPC} SS_Mode: 1 # Setpoint Smoother mode {0: no setpoint smoothing, 1: introduce setpoint smoothing} WE_Mode: 2 # Wind speed estimator mode {0: One-second low pass filtered hub height wind speed, 1: Immersion and Invariance Estimator (Ortega et al.)} - PS_Mode: 3 # Pitch saturation mode {0: no pitch saturation, 1: peak shaving, 2: Cp-maximizing pitch saturation, 3: peak shaving and Cp-maximizing pitch saturation} + PS_Mode: 0 # Pitch saturation mode {0: no pitch saturation, 1: peak shaving, 2: Cp-maximizing pitch saturation, 3: peak shaving and Cp-maximizing pitch saturation} SD_Mode: 0 # Shutdown mode {0: no shutdown procedure, 1: pitch to max pitch at shutdown} - Fl_Mode: 1 + Fl_Mode: 2 # Floating specific feedback mode {0: no nacelle velocity feedback, 1: nacelle velocity feedback} Flp_Mode: 0 # Flap control mode {0: no flap control, 1: steady state flap angle, 2: Proportional flap control} # Controller parameters - zeta_pc: 1.0 # Pitch controller desired damping ratio [-] + # U_pc: [14] + zeta_pc: 1.0 # Pitch controller desired damping ratio [-] omega_pc: 0.2 # Pitch controller desired natural frequency [rad/s] zeta_vs: 0.85 # Torque controller desired damping ratio [-] omega_vs: 0.12 # Torque controller desired natural frequency [rad/s] # Optional - these can be defined, but do not need to be - max_pitch: # None # Maximum pitch angle [rad], {default = 90 degrees} - min_pitch: 0.0 # Minimum pitch angle [rad], {default = 0 degrees} + min_pitch: 0.030 # Minimum pitch angle [rad], {default = 0 degrees} vs_minspd: 0.523598775 # Minimum rotor speed [rad/s], {default = 0 rad/s} - ss_cornerfreq: # None # First order low-pass filter cornering frequency for setpoint smoother [rad/s] - ss_vsgain: # None # Torque controller setpoint smoother gain bias percentage [%, <= 1 ], {default = 100%} - ss_pcgain: # None # Pitch controller setpoint smoother gain bias percentage [%, <= 1 ], {default = 0.1%} - ps_percent: # None # Percent peak shaving [%, <= 1 ], {default = 80%} - sd_maxpit: # None # Maximum blade pitch angle to initiate shutdown [rad], {default = bld pitch at v_max} - sd_cornerfreq: # None # Cutoff Frequency for first order low-pass filter for blade pitch angle [rad/s], {default = 0.41888 ~ time constant of 15s} - flp_maxpit: # None # Maximum (and minimum) flap pitch angle [rad] + ps_percent: 1.0 # None # Percent peak shaving [%, <= 1 ], {default = 80%} + twr_freq: 3.355 # for semi only! + ptfm_freq: 0.213 # for semi only! + filter_params: + f_fl_highpassfreq: 0.01 + f_lpf_cornerfreq: 1.00810 + diff --git a/Tune_Cases/IEA15MW_MultiOmega.yaml b/Tune_Cases/IEA15MW_MultiOmega.yaml index af1809b0..20278253 100644 --- a/Tune_Cases/IEA15MW_MultiOmega.yaml +++ b/Tune_Cases/IEA15MW_MultiOmega.yaml @@ -42,6 +42,7 @@ controller_params: U_pc: [14,20] zeta_pc: [2.0,1.0] # Pitch controller desired damping ratio [-] omega_pc: [0.15,0.3] # Pitch controller desired natural frequency [rad/s] + interp_type: sigma zeta_vs: 0.85 # Torque controller desired damping ratio [-] omega_vs: 0.12 # Torque controller desired natural frequency [rad/s] twr_freq: 3.355 # for semi only! diff --git a/Tune_Cases/NREL5MW.yaml b/Tune_Cases/NREL5MW.yaml index 9ad252dc..21f5acab 100644 --- a/Tune_Cases/NREL5MW.yaml +++ b/Tune_Cases/NREL5MW.yaml @@ -6,7 +6,7 @@ path_params: FAST_InputFile: 'NREL-5MW.fst' # Name of *.fst file FAST_directory: '../Test_Cases/NREL-5MW' # Main OpenFAST model directory, where the *.fst lives # Optional - rotor_performance_filename: 'Cp_Ct_Cq.NREL5MW.txt' # Filename for rotor performance text file (if it has been generated by ccblade already) + rotor_performance_filename: '../Test_Cases/NREL-5MW/Cp_Ct_Cq.NREL5MW.txt' # Filename for rotor performance text file (if it has been generated by ccblade already) # -------------------------------- TURBINE PARAMETERS ----------------------------------- turbine_params: diff --git a/Tune_Cases/README.md b/Tune_Cases/README.md index a1fe9b52..c6d46eff 100644 --- a/Tune_Cases/README.md +++ b/Tune_Cases/README.md @@ -12,58 +12,8 @@ The basic steps are as follows 6. Enjoy the results. Possibly retune your controller. ## The .yaml File -We use a .yaml file to define the inputs to the generic controlling scripts. This .yaml file defines three different dictionaries with a number of parameters. The parameters that must be defined are listed below +We use a .yaml file to define the inputs to the generic controlling scripts. This .yaml file defines three different dictionaries with a number of parameters. The parameters that must be defined in [the documentation](https://rosco.readthedocs.io/en/latest/source/rosco_toolbox.html#the-rosco-toolbox-tuning-file) -1. path_params: -* `FAST_InputFile` - the name of the `*.fst` file -* `FAST_directory` - the directory for the `*.fst` file -* `rotor_performance_filename` - the name of the existing or desired rotor performance text file (`Cp_Ct_Cq.txt` by default). If this exists, CCBlade will not be run in `tune_ROSCO.py`. If it does not exist, you CCBlade will be run. The inputs to `turbine.py` can also be changed to force CCBlade to run or not. - -2. turbine_params: -* `rotor_inertia` - Rotor inertia (kg m^2). This is available in an Elastodyn .sum file. Run a turbine model for a few seconds without any controller if you need to. -* `rated_rotor_speed` - Rated rotor speed (rad/s). -* `v_min` - Cut-in wind speed (m/s). -* `v_rated` - Rated wind speed (m/s). -* `v_max` - Cut-out wind speed (m/s), -- Does not need to be exact (JUST ASSUME FOR NOW) -* `max_pitch_rate` - Maximum blade pitch rate (deg/s) -* `max_torque_rate` - Maximum torque rate (Nm/s) -* `rated_power` - Rated Power (W) -* `bld_edgewise_freq` - Blade edgewise first natural frequency (rad/s) - -3. controller_params: -* `LoggingLevel` - Default = 1 - {0: write no debug files, 1: write standard output .dbg-file, 2: write standard output .dbg-file and complete avrSWAP-array .dbg2-file} -* `F_LPFType` - Default = 1 - {1: first-order low-pass filter, 2: second-order low-pass filter}, (rad/s) (currently filters generator speed and pitch *control signals) -* `F_NotchType` - Default = 0 - Notch on the measured generator speed {0: disable, 1: enable} -* `IPC_ControlMode` - Default = 0 - Turn Individual Pitch Control (IPC) for fatigue load reductions (pitch contribution) {0: off, 1: 1P reductions, 2: 1P+2P *reductions} -* `VS_ControlMode` - Default = 2 - Generator torque control mode in above rated conditions {0: constant torque, 1: constant power, 2: TSR tracking PI control} -* `PC_ControlMode` - Default = 2 - Blade pitch control mode {0: No pitch, fix to fine pitch, 1: active PI blade pitch control} -* `Y_ControlMode` - Default = 0 - Yaw control mode {0: no yaw control, 1: yaw rate control, 2: yaw-by-IPC} -* `SS_Mode` - Default = 1 - Setpoint Smoother mode {0: no setpoint smoothing, 1: introduce setpoint smoothing} -* `WE_Mode` - Default = 2 - Wind speed estimator mode {0: One-second low pass filtered hub height wind speed, 1: Immersion and Invariance Estimator, 2: Extended Kalman Filter} -* `PS_Mode` - Default = 0 - Pitch saturation mode {0: no pitch saturation, 1: peak shaving, 2: Cp-maximizing pitch saturation, 3: peak shaving and Cp-maximizing pitch saturation} -* `zeta_pc` - Pitch controller desired damping ratio (-) -* `omega_pc` - Pitch controller desired natural frequency (rad/s) -* `zeta_vs` - Torque controller desired damping ratio (-) -* `omega_vs` - Torque controller desired natural frequency (rad/s) - -#### Optional Parameters -There are a few parameters that are only needed for specific controller behaviors, or to adjust behaviors to be different than the default: -1. turbine_params: -* `twr_freq` - Tower fore-aft natural frequency (rad/s), only used inf Fl_Mode = 1 -* `ptfm_freq` - Platform fore-aft natural frequency (rad/s), only used inf Fl_Mode = 1 -2. controller_params -* `zeta_flp` - Flap controller desired damping ratio, only used if Flp_Mode = 1 -* `omega_flp`- Flap controller desired natural frequency (rad/s), only used if Flp_Mode = 1 -* `max_pitch`- Maximum pitch angle (rad), {default = 90 degrees} -* `min_pitch`- Minimum pitch angle (rad), {default = 0 degrees} -* `vs_minspd`- Minimum rotor speed (rad/s), {default = 0 rad/s} -* `ss_cornerfreq`- First order low-pass filter cornering frequency for setpoint smoother (rad/s) -* `ss_vsgain`- Torque controller setpoint smoother gain bias percentage [%, <= 1 ], {default = 100%} -* `ss_pcgain`- Pitch controller setpoint smoother gain bias percentage [%, <= 1 ], {default = 0.1%} -* `ps_percent`- Percent peak shaving [%, <= 1 ], {default = 80%}, only used if PS_Mode = 1 or 3 -* `sd_maxpit`- Maximum blade pitch angle to initiate shutdown (rad), {default = bld pitch at v_max}, only used if SD_Mode = 1 -* `sd_cornerfreq`- Cutoff Frequency for first order low-pass filter for blade pitch angle rad/s, {default = 0.41888 ~ time constant of 15s}, only used if SD_Mode = 1 -* `flp_maxpit`- Maximum (and minimum) flap pitch angle (rad), only used if Flp_Mode = 2 ### The controller parameters The controller flags have some default values for the ROSCO controller implementation (provided in the previous section). This, subsequently, leaves four turbine parameters that the user must decide `zeta_pc`, `omega_pc`, `zeta_vs`, and `omega_vs`. The example .yaml scripts provided offer some insight into what these values might be for different sizes and types of turbines. Generally speaking, we desire slower responses in the the variable speed (vs) torque controller. This equates to `zeta_vs = 1` and `omega_vs = 0.3` for the NREL 5MW wind turbine. These values tend to translate fairly well to larger turbines, but decreasing `omega_vs = 0.3` may be desired. For the pitch controller, the NREL 5MW turbine was tuned such that `zeta_pc = 0.7`, and `omega_pc = 0.6` in the legacy controller. As a high level rule of thumb, increasing the desired damping to be over-damped (`zeta_pc ~ 1.0`) and the natural frequency to be much slower (`omega_pc = 0.2`) seems to produce smoother wind turbine responses in large turbines with highly flexible rotors. diff --git a/docs/index.rst b/docs/index.rst index 86a289dc..efd83481 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -24,7 +24,7 @@ The python-based toolbox primarily used for tuning the controller and writing th * Linear model analysis capability **ROSCO Controller** -The controller implementation itself. This is compiled to :code:`libdiscon.*`` file, reads the DISCON.IN file, and interfaces with OpenFAST using the Bladed-style interface. +The controller implementation itself. This is compiled to :code:`libdiscon.*` file, reads the DISCON.IN file, and interfaces with OpenFAST using the Bladed-style interface. * Fortran based * Follows Bladed-style control interface @@ -76,3 +76,5 @@ limitations under the License. source/standard_use.rst source/rosco_toolbox.rst source/rosco.rst + source/api_change.rst + source/toolbox_input.rst diff --git a/docs/source/api_change.rst b/docs/source/api_change.rst new file mode 100644 index 00000000..3b186cba --- /dev/null +++ b/docs/source/api_change.rst @@ -0,0 +1,26 @@ +.. _api_change: + +API changes between versions +============================ + +This page lists the main changes in the ROSCO API (input file) between different versions. + +The changes are tabulated according to the line number, and flag name. +The line number corresponds to the resulting line number after all changes are implemented. +Thus, be sure to implement each in order so that subsequent line numbers are correct. + + +ROSCO v2.4.1 to ROSCO `develop` +------------------------------- +Two filter parameters were added to +- change the high pass filter in the floating feedback module +- change the low pass filter of the wind speed estimator signal that is used in torque control + +====== ================= ====================================================================================================================================================================================================== +Added in ROSCO develop +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +Line Flag Name Example Value +====== ================= ====================================================================================================================================================================================================== +27 F_WECornerFreq 0.20944 ! F_WECornerFreq - Corner frequency (-3dB point) in the first order low pass filter for the wind speed estimate [rad/s]. +29 F_FlHighPassFreq 0.01000 ! F_FlHighPassFreq - Natural frequency of first-order high-pass filter for nacelle fore-aft motion [rad/s]. +====== ================= ====================================================================================================================================================================================================== diff --git a/docs/source/figures/ROSCO_toolbox.png b/docs/source/figures/ROSCO_toolbox.png new file mode 100644 index 0000000000000000000000000000000000000000..cc48b4024d41fc249ad6798d6e4a47de2eea005b GIT binary patch literal 14071 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%0A$RV(crCioNgw{$ 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 BqQw9J literal 0 HcmV?d00001 diff --git a/docs/source/rosco.rst b/docs/source/rosco.rst index bcb44e8b..cb6e75a9 100644 --- a/docs/source/rosco.rst +++ b/docs/source/rosco.rst @@ -114,6 +114,14 @@ Examples of the DISCON.IN file are found in each of the Test Cases in the ROSCO - :code:`F_FlCornerFreq` - Float Float - Corner frequency and damping ratio for the second order low pass filter of the tower-top fore-aft motion for floating feedback control [rad/s, -]. + * - + - :code:`F_WECornerFreq` + - Float + - Corner frequency (-3dB point) in the first order low pass filter for the wind speed estimate [rad/s]. + * - + - :code:`F_FlHighPassFreq` + - Float + - Natural frequency of first-order high-pass filter for nacelle fore-aft motion [rad/s].. * - - :code:`F_FlpCornerFreq` - Float Float @@ -397,4 +405,4 @@ Examples of the DISCON.IN file are found in each of the Test Cases in the ROSCO .. _OpenFAST: https://github.com/openfast/openfast -.. _yaml: https://yaml.org/ \ No newline at end of file +.. _yaml: https://yaml.org/ diff --git a/docs/source/rosco_toolbox.rst b/docs/source/rosco_toolbox.rst index 8e3a86cb..a61b3131 100644 --- a/docs/source/rosco_toolbox.rst +++ b/docs/source/rosco_toolbox.rst @@ -43,237 +43,9 @@ Tune_Cases .......... Some example tuning scripts and tuning input files are provided here. The code found in :code:`tune_ROSCO.py` can be modified by the user to easily enable tuning of their own wind turbine model. -.. _rt_tuning_yaml: - The ROSCO Toolbox Tuning File ------------------------------ -A yaml_ formatted input file is used for the standard ROSCO toolbox tuning process. This file contains the necessary inputs for the ROSCO toolbox to load an OpenFAST input file deck and tune the ROSCO controller. It contains the following inputs: - -.. list-table:: ROSCO toolbox input yaml - :header-rows: 1 - :widths: 15 15 10 10 50 - :stub-columns: 1 - - * - Primary Section - - Variable - - Required - - Type - - Description - * - :code:`path_params` - - :code:`FAST_InputFile` - - Yes - - String - - Name of the primary (\*.fst) OpenFAST input file - * - - - :code:`FAST_directory` - - Yes - - String - - Main OpenFAST model directory, where the \*.fst lives - * - - - :code:`rotor_performance_filename` - - No - - String - - Filename for rotor performance text file. If this is not specified, and an existing rotor performance file cannot be found, cc-blade will be run - * - :code:`turbine_params` - - :code:`rotor_interia` - - Yes - - Float - - Rotor inertia [kg m^2], (Available in Elastodyn .sum file) - * - - - :code:`rated_rotor_speed` - - Yes - - Float - - Rated rotor speed of the turbine [rad/s] - * - - - :code:`v_min` - - Yes - - Float - - Cut-in wind speed [m/s] - * - - - :code:`v_max` - - Yes - - Float - - Cut-out wind speed [m/s] - * - - - :code:`max_pitch_rate` - - Yes - - Float - - Maximum blade pitch rate [rad/s] - * - - - :code:`max_torque_rate` - - Yes - - Float - - Maximum generator torque rate [Nm/s] - * - - - :code:`rated_power` - - Yes - - Float - - Rated Power [W]. - * - - - :code:`bld_edgewise_freq` - - Yes - - Float - - Blade edgewise first natural frequency [rad/s]. Set this even if you are using stiff blades. It becomes the generator speed LPF bandwidth. - * - - - :code:`TSR_operational` - - No - - Float - - Desired below-rated operation tip speed ratio [-]. If this is not specified, the Cp-maximizing TSR from the Cp surface is used. - * - - - :code:`twr_freq` - - No - - Float - - Tower first fore-aft natural frequency [rad/s]. Required for floating wind turbine control. - * - - - :code:`ptfm_freq` - - No - - Float - - Platform first fore-aft natural frequency [rad/s]. Required for floating wind turbine control. - * - :code:`controller_params` - - :code:`LoggingLevel` - - Yes - - Int - - 0: write no debug files, 1: write standard output .dbg-file, 2: write standard output .dbg-file and complete avrSWAP-array .dbg2-file - * - - - :code:`F_LPFType` - - Yes - - Int - - Type of Low pass filter for the generator speed feedback signal [rad/s]. 1: first-order low-pass filter, 2: second-order low-pass filter. - * - - - :code:`F_NotchType` - - Yes - - Int - - Notch filter on generator speed and/or tower fore-aft motion, used for floating wind turbine control. 0: disable, 1: generator speed, 2: tower-top fore-aft motion, 3: generator speed and tower-top fore-aft motion - * - - - :code:`IPC_ControlMode` - - Yes - - Int - - Turn Individual Pitch Control (IPC) for fatigue load reductions (pitch contribution). 0: off, 1: 1P reductions, 2: 1P+2P reductions. - * - - - :code:`VS_ControlMode` - - Yes - - Int - - Generator torque control mode. 0: :math:`k\omega^2` below rated, constant torque above rated, 1: :math:`k\omega^2` below rated, constant power above rated, 2: TSR tracking PI control below rated, constant torque above rated, 3: TSR tracking PI control below rated, constant power above rated. - * - - - :code:`PC_ControlMode` - - Yes - - Int - - Blade pitch control mode. 0: No pitch control, fix to fine pitch, 1: active PI blade pitch control - * - - - :code:`Y_ControlMode` - - Yes - - Int - - Yaw control mode. 0: no yaw control, 1: yaw rate control, 2: yaw-by-IPC - * - - - :code:`SS_Mode` - - Yes - - Int - - Setpoint Smoother mode. 0: no set point smoothing, 1: set point smoothing - * - - - :code:`WE_Mode` - - Yes - - Int - - Wind speed estimator mode. 0: One-second low pass filtered hub height wind speed, 1: Immersion and Invariance Estimator (Ortega et al.), 2: Extended Kalman filter - * - - - :code:`PS_Mode` - - Yes - - Int - - Pitch saturation mode. 0: no pitch saturation, 1: peak shaving, 2: Cp-maximizing pitch saturation, 3: peak shaving and Cp-maximizing pitch saturation - * - - - :code:`SD_Mode` - - Yes - - Int - - Shutdown mode. 0: no shutdown procedure, 1: pitch to max pitch at shutdown. - * - - - :code:`Fl_Mode` - - Yes - - Int - - Floating feedback mode. 0: no nacelle rotational velocity feedback, 1: nacelle rotational velocity feedback - * - - - :code:`Flp_Mode` - - Yes - - Int - - Flap control mode. 0: no flap control, 1: steady state flap angle, 2: Proportional flap control - * - - - :code:`zeta_pc` - - Yes - - Float - - Pitch controller desired damping ratio [-] - * - - - :code:`omega_pc` - - Yes - - Float - - Pitch controller desired natural frequency [rad/s] - * - - - :code:`zeta_vs` - - Yes - - Float - - Torque controller desired damping ratio [-] - * - - - :code:`omega_vs` - - Yes - - Float - - Torque controller desired natural frequency [rad/s] - * - - - :code:`zeta_flp` - - No - - Float - - Flap controller desired damping ratio [-]. Required if :code:`Flp_Mode`>0 - * - - - :code:`omega_flp` - - No - - Float - - Flap controller desired natural frequency [rad/s]. Required if :code:`Flp_Mode`>0 - * - - - :code:`max_pitch` - - No - - Float - - Maximum blade pitch angle [rad]. Default is 1.57 rad (90 degrees). - * - - - :code:`min_pitch` - - No - - Float - - Minimum blade pitch angle [rad]. Default is 0 degrees. - * - - - :code:`vs_minspd` - - No - - Float - - Minimum rotor speed [rad/s]. Default is 0 rad/s. - * - - - :code:`ss_cornerfreq` - - No - - Float - - First order low-pass filter cornering frequency for setpoint smoother [rad/s]. Default is .6283 rad/s. - * - - - :code:`ss_vsgain` - - No - - Float - - Torque controller set point smoother gain bias percentage [:math:`\leq` 1]. Default is 1. - * - - - :code:`ss_pcgain` - - No - - Float - - Pitch controller set point smoother gain bias percentage [:math:`\leq` 1]. Default is 0.001. - * - - - :code:`ps_percent` - - No - - Float - - Percent peak shaving [:math:`\leq` 1]. Default is 0.8. - * - - - :code:`sd_maxpit` - - No - - Float - - Maximum blade pitch angle to initiate shutdown [rad]. Default is the blade pitch angle at :code:`v_max`. - * - - - :code:`sd_cornerfreq` - - No - - Float - - Cutoff Frequency for first order low-pass filter for blade pitch angle [rad/s]. Default is 0.41888 rad/s. - * - - - :code:`flp_maxpit` - - No - - Float - - Maximum (and minimum) flap pitch angle [rad]. Default is 0.1745 rad (10 degrees). +A yaml_ formatted input file is used for the standard ROSCO toolbox tuning process. This file contains the necessary inputs for the ROSCO toolbox to load an OpenFAST input file deck and tune the ROSCO controller. It can be found here: :ref:`rt_tuning_yaml`. .. _OpenFAST: https://github.com/openfast/openfast diff --git a/docs/source/toolbox_input.rst b/docs/source/toolbox_input.rst new file mode 100644 index 00000000..00c0114f --- /dev/null +++ b/docs/source/toolbox_input.rst @@ -0,0 +1,437 @@ + +.. toctree:: + +.. _rt_tuning_yaml: + +************************** +ROSCO_Toolbox tuning .yaml +************************** +Definition of inputs for ROSCO tuning procedure + + +/Users/dzalkind/Tools/ROSCO/ROSCO_toolbox/inputs/toolbox_schema. + + + +path_params +**************************************** + + +:code:`FAST_InputFile` : String + Name of `*.fst` file + +:code:`FAST_directory` : String + Main OpenFAST model directory, where the `*.fst` lives, relative + to ROSCO dir (if applicable) + +:code:`rotor_performance_filename` : String + Filename for rotor performance text file (if it has been generated + by ccblade already) + + + +turbine_params +**************************************** + + +:code:`rotor_inertia` : Float, kg m^2 + Rotor inertia [kg m^2], {Available in Elastodyn .sum file} + +:code:`rated_rotor_speed` : Float, rad/s + Rated rotor speed [rad/s] + + *Minimum* = 0 + +:code:`v_min` : Float, m/s + Cut-in wind speed of the wind turbine. + + *Minimum* = 0 + +:code:`v_max` : Float, m/s + Cut-out wind speed of the wind turbine. + + *Minimum* = 0 + +:code:`max_pitch_rate` : Float, rad/s + Maximum blade pitch rate [rad/s] + + *Minimum* = 0 + +:code:`max_torque_rate` : Float, Nm/s + Maximum torque rate [Nm/s], {~1/4 VS_RtTq/s} + + *Minimum* = 0 + +:code:`rated_power` : Float, W + Rated Power [W] + + *Minimum* = 0 + +:code:`bld_edgewise_freq` : Float, rad/s + Blade edgewise first natural frequency [rad/s] + + *Default* = 4.0 + + *Minimum* = 0 + +:code:`bld_flapwise_freq` : Float, rad/s + Blade flapwise first natural frequency [rad/s] + + *Default* = 0 + + *Minimum* = 0 + +:code:`TSR_operational` : Float + Optimal tip speed ratio, if 0 the optimal TSR will be determined + by the Cp surface + + *Default* = 0 + + *Minimum* = 0 + + + +controller_params +**************************************** + + +:code:`LoggingLevel` : Float + 0- write no debug files, 1- write standard output .dbg-file, 2- + write standard output .dbg-file and complete avrSWAP-array + .dbg2-file + + *Default* = 1 + + *Minimum* = 0 *Maximum* = 2 + + +:code:`F_LPFType` : Float + 1- first-order low-pass filter, 2- second-order low-pass filter, + [rad/s] (currently filters generator speed and pitch control + signals) + + *Default* = 1 + + *Minimum* = 1 *Maximum* = 2 + + +:code:`F_NotchType` : Float + Notch on the measured generator speed and/or tower fore-aft motion + (for floating) {0- disable, 1- generator speed, 2- tower-top fore- + aft motion, 3- generator speed and tower-top fore-aft motion} + + *Default* = 0 + + *Minimum* = 0 *Maximum* = 3 + + +:code:`IPC_ControlMode` : Float + Turn Individual Pitch Control (IPC) for fatigue load reductions + (pitch contribution) (0- off, 1- 1P reductions, 2- 1P+2P + reduction) + + *Default* = 0 + + *Minimum* = 0 *Maximum* = 2 + + +:code:`VS_ControlMode` : Float + Generator torque control mode in above rated conditions (0- + constant torque, 1- constant power, 2- TSR tracking PI control + with constant torque, 3- TSR tracking with constant power) + + *Default* = 2 + + *Minimum* = 0 *Maximum* = 3 + + +:code:`PC_ControlMode` : Float + Blade pitch control mode (0- No pitch, fix to fine pitch, 1- + active PI blade pitch control) + + *Default* = 1 + + *Minimum* = 0 *Maximum* = 1 + + +:code:`Y_ControlMode` : Float + Yaw control mode (0- no yaw control, 1- yaw rate control, 2- yaw- + by-IPC) + + *Default* = 0 + + *Minimum* = 0 *Maximum* = 2 + + +:code:`SS_Mode` : Float + Setpoint Smoother mode (0- no setpoint smoothing, 1- introduce + setpoint smoothing) + + *Default* = 1 + + *Minimum* = 0 *Maximum* = 2 + + +:code:`WE_Mode` : Float + Wind speed estimator mode (0- One-second low pass filtered hub + height wind speed, 1- Immersion and Invariance Estimator (Ortega + et al.) + + *Default* = 2 + + *Minimum* = 0 *Maximum* = 2 + + +:code:`PS_Mode` : Float + Pitch saturation mode (0- no pitch saturation, 1- peak shaving, 2- + Cp-maximizing pitch saturation, 3- peak shaving and Cp-maximizing + pitch saturation) + + *Default* = 3 + + *Minimum* = 0 *Maximum* = 3 + + +:code:`SD_Mode` : Float + Shutdown mode (0- no shutdown procedure, 1- pitch to max pitch at + shutdown) + + *Default* = 0 + + *Minimum* = 0 *Maximum* = 1 + + +:code:`Fl_Mode` : Float + Floating specific feedback mode (0- no nacelle velocity feedback, + 1 - nacelle velocity feedback, 2 - nacelle pitching acceleration + feedback) + + *Default* = 0 + + *Minimum* = 0 *Maximum* = 2 + + +:code:`Flp_Mode` : Float + Flap control mode (0- no flap control, 1- steady state flap angle, + 2- Proportional flap control) + + *Default* = 0 + + *Minimum* = 0 *Maximum* = 2 + + +:code:`PwC_Mode` : Float + Active Power Control Mode (0- no active power control 1- constant + active power control, 2- open loop power vs time, 3- open loop + power vs. wind speed) + + *Default* = 0 + + *Minimum* = 0 *Maximum* = 2 + + +:code:`U_pc` : Array of Floats + List of wind speeds to schedule pitch control zeta and omega + + *Default* = [12] + + *Minimum* = 0 + +:code:`zeta_pc` : Array of Floats or Float + List of pitch controller desired damping ratio at U_pc [-] + + *Default* = [1.0] + +:code:`omega_pc` : Array of Floats or Float, rad/s + List of pitch controller desired natural frequency at U_pc [rad/s] + + *Default* = [0.2] + +:code:`interp_type` : String from, ['sigma', 'linear', 'quadratic', 'cubic'] + Type of interpolation between above rated tuning values (only used + for multiple pitch controller tuning values) + + *Default* = linear + +:code:`zeta_vs` : Float + Torque controller desired damping ratio [-] + + *Default* = 1.0 + + *Minimum* = 0 + +:code:`omega_vs` : Float, rad/s + Torque controller desired natural frequency [rad/s] + + *Default* = 0.2 + + *Minimum* = 0 + +:code:`max_pitch` : Float, rad + Maximum pitch angle [rad], {default = 90 degrees} + + *Default* = 1.57 + +:code:`min_pitch` : Float, rad + Minimum pitch angle [rad], {default = 0 degrees} + + *Default* = 0 + +:code:`vs_minspd` : Float, rad/s + Minimum rotor speed [rad/s], {default = 0 rad/s} + + *Default* = 0 + +:code:`ss_vsgain` : Float + Torque controller setpoint smoother gain bias percentage [%, <= 1 + ], {default = 100%} + + *Default* = 1.0 + +:code:`ss_pcgain` : Float, rad + Pitch controller setpoint smoother gain bias percentage [%, <= 1 + ], {default = 0.1%} + + *Default* = 0.001 + +:code:`ps_percent` : Float, rad + Percent peak shaving [%, <= 1 ], {default = 80%} + + *Default* = 0.8 *Maximum* = 1 + + +:code:`sd_maxpit` : Float, rad + Maximum blade pitch angle to initiate shutdown [rad], {default = + 40 deg.} + + *Default* = 0.6981 + +:code:`flp_maxpit` : Float, rad + Maximum (and minimum) flap pitch angle [rad] + + *Default* = 0.1745 + +:code:`twr_freq` : Float, rad/s + Tower natural frequency, for floating only + + *Minimum* = 0 + +:code:`ptfm_freq` : Float, rad/s + Platform natural frequency, for floating only + + *Minimum* = 0 + +:code:`WS_GS_n` : Float + Number of wind speed breakpoints + + *Default* = 60 + + *Minimum* = 0 + +:code:`PC_GS_n` : Float + Number of pitch angle gain scheduling breakpoints + + *Default* = 30 + + *Minimum* = 0 + +:code:`Kp_float` : Float, s + Gain of floating feedback control + +:code:`tune_Fl` : Boolean + Whether to automatically tune Kp_float + + *Default* = True + +:code:`zeta_flp` : Float + Flap controller desired damping ratio [-] + + *Minimum* = 0 + +:code:`omega_flp` : Float, rad/s + Flap controller desired natural frequency [rad/s] + + *Minimum* = 0 + + + +filter_params +######################################## + + +:code:`f_lpf_cornerfreq` : Float, rad/s + Corner frequency (-3dB point) in the first order low pass filter + of the generator speed [rad/s] + + *Minimum* = 0 + +:code:`f_lpf_damping` : Float, rad/s + Damping ratio in the first order low pass filter of the generator + speed [-] + + *Minimum* = 0 + +:code:`f_we_cornerfreq` : Float, rad/s + Corner frequency (-3dB point) in the first order low pass filter + for the wind speed estimate [rad/s] + + *Default* = 0.20944 + + *Minimum* = 0 + +:code:`f_fl_highpassfreq` : Float, rad/s + Natural frequency of first-order high-pass filter for nacelle + fore-aft motion [rad/s] + + *Default* = 0.01042 + + *Minimum* = 0 + +:code:`f_ss_cornerfreq` : Float, rad/s + First order low-pass filter cornering frequency for setpoint + smoother [rad/s] + + *Default* = 0.6283 + + *Minimum* = 0 + +:code:`f_sd_cornerfreq` : Float, rad + Cutoff Frequency for first order low-pass filter for blade pitch + angle [rad/s], {default = 0.41888 ~ time constant of 15s} + + *Default* = 0.41888 + + + +linmodel_tuning +**************************************** + + +Inputs used for tuning ROSCO using linear (level 2) models + +:code:`type` : String from, ['none', 'robust', 'simulation'] + Type of level 2 based tuning - robust gain scheduling (robust) or + simulation based optimization (simulation) + + *Default* = none + +:code:`linfile_path` : String + Path to OpenFAST linearization (.lin) files, if they exist + + *Default* = none + +:code:`lintune_outpath` : String + Path for outputs from linear model based tuning + + *Default* = lintune_outfiles + +:code:`load_parallel` : Boolean + Load linearization files in parallel (True/False) + + *Default* = False + +:code:`stability_margin` : Float or Array of Floats + Desired maximum stability margin + + *Default* = 0.1 + From 6f16a9da6e2bfa05a6dd10c87f3d6306311479d3 Mon Sep 17 00:00:00 2001 From: Nikhar Abbas Date: Tue, 7 Dec 2021 14:11:47 -0700 Subject: [PATCH 002/218] update listcheck method for numpy arrays --- ROSCO_toolbox/utilities.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ROSCO_toolbox/utilities.py b/ROSCO_toolbox/utilities.py index dbc7f3cb..271d8e3d 100644 --- a/ROSCO_toolbox/utilities.py +++ b/ROSCO_toolbox/utilities.py @@ -521,11 +521,12 @@ def list_check(x, return_bool=True): y = x is_list = True elif isinstance(x, np.ndarray): - y = x if x.size == 1: is_list = False + y = float(x) else: is_list = True + y = x else: raise AttributeError('Cannot run list_check for variable of type: {}'.format(type(x))) From 50f686dd2661756c057f98ade0db1ee5b6e9ece3 Mon Sep 17 00:00:00 2001 From: dzalkind <65573423+dzalkind@users.noreply.github.com> Date: Tue, 14 Dec 2021 14:23:40 -0700 Subject: [PATCH 003/218] Open Loop Control (#98) * create rosco types yaml * Add more descriptions, add integer_c default, cleanup * updates for allocatability and shapes * python scripts to write ROSCO_types.f90 * reemove superfulous modules * use types from ROSCO registry * create rosco types yaml * Add more descriptions, add integer_c default, cleanup * updates for allocatability and shapes * python scripts to write ROSCO_types.f90 * reemove superfulous modules * use types from ROSCO registry * Saturate inputs to WSE. Needs some TLC, but seems to work * Reduce saturation limits on speed, torque * Re-organize, set saturation limits. Working at 3 m/s * Initial add of OL control to ROSCO: builds * Update DISCONs with open loop inputs * Fix file reading for OL_Filename * Add open loop control generation and file writing * Use DISCON_dict for more manageable DISCON file writing * Add open loop example, fix constant timeseries * Make open loop example generate power * Handle relative paths and calling from outside the run directory: - Some helper functions borrowed from OpenFAST, f/ext_control - Updated file writing * Clean up: versions, print statements * Fix SysFiles paths in CMakeLists * Tidy up Ext_DLL names * More Ext_DLL name tidying * Test write_registry.py * Update for OL Control * Move preprocessor lines * add zenodo DOI * Regenerated Types * fix shape * revert filepath change * give all types a size, ProcAddr size = 3 * update types * test registry in compile step * specify default shell * update write_registry path * remove default shell * Document API changes, provide OL input example * Fix example 14 (yaw input) * Add error catching to yaw control * Tidy up OL_Input Reading: error catching, generalize * More yaw control fixes, to model * Checkout develop CMakeLists for ROSCO * Update DISCON.INs for TestCases/ * Revert "Checkout develop CMakeLists for ROSCO" This reverts commit 87a491359d73806e3aaa59b4cfdc00f2838875df. * Revert windows cmake stuff to develop * Fix CMake again * Revert "Revert windows cmake stuff to develop" This reverts commit 39df122449b0e2055f2e12e3ce38a0c010c7bd91. * Make last cmake fix - hopefully Co-authored-by: Nikhar Abbas --- .github/workflows/CI_rosco-compile.yml | 29 +- Examples/Example_OL_Input.dat | 4002 +++++++++++++++++ Examples/example_14.py | 145 + README.md | 3 + ROSCO/CMakeLists.txt | 21 + ROSCO/rosco_registry/__init__.py | 0 ROSCO/rosco_registry/rosco_types.yaml | 722 +++ ROSCO/rosco_registry/write_registry.py | 73 + ROSCO/src/Constants.f90 | 15 +- ROSCO/src/ControllerBlocks.f90 | 50 +- ROSCO/src/Controllers.f90 | 47 +- ROSCO/src/DISCON.F90 | 4 +- ROSCO/src/Functions.f90 | 11 +- ROSCO/src/ROSCO_Types.f90 | 471 +- ROSCO/src/ReadSetParameters.f90 | 296 +- ROSCO/src/SysFiles/SysGnuLinux.f90 | 190 + ROSCO/src/SysFiles/SysGnuWin.f90 | 184 + ROSCO/src/SysFiles/SysIFL.f90 | 213 + ROSCO/src/SysFiles/SysIVF.f90 | 143 + ROSCO_toolbox/controller.py | 207 +- ROSCO_toolbox/inputs/toolbox_schema.yaml | 30 + ROSCO_toolbox/inputs/validation.py | 2 +- ROSCO_toolbox/ofTools/fast_io/FAST_writer.py | 86 +- ROSCO_toolbox/utilities.py | 277 +- Test_Cases/BAR_10/BAR_10_DISCON.IN | 50 +- .../DISCON-UMaineSemi.IN | 50 +- .../IEA-15-240-RWT-UMaineSemi.fst | 2 +- .../IEA-15-240-RWT-UMaineSemi_ElastoDyn.dat | 4 +- .../IEA-15-240-RWT-UMaineSemi_ServoDyn.dat | 4 +- Test_Cases/NREL-5MW/DISCON.IN | 50 +- docs/source/api_change.rst | 11 +- 31 files changed, 6823 insertions(+), 569 deletions(-) create mode 100644 Examples/Example_OL_Input.dat create mode 100644 Examples/example_14.py create mode 100644 ROSCO/rosco_registry/__init__.py create mode 100644 ROSCO/rosco_registry/rosco_types.yaml create mode 100644 ROSCO/rosco_registry/write_registry.py create mode 100644 ROSCO/src/SysFiles/SysGnuLinux.f90 create mode 100644 ROSCO/src/SysFiles/SysGnuWin.f90 create mode 100644 ROSCO/src/SysFiles/SysIFL.f90 create mode 100644 ROSCO/src/SysFiles/SysIVF.f90 diff --git a/.github/workflows/CI_rosco-compile.yml b/.github/workflows/CI_rosco-compile.yml index 42e1e8b6..c04abb8f 100644 --- a/.github/workflows/CI_rosco-compile.yml +++ b/.github/workflows/CI_rosco-compile.yml @@ -16,7 +16,7 @@ jobs: fail-fast: true matrix: os: ["ubuntu-latest", "macOS-latest", "windows-latest"] - python-version: ["3.8"] + python-version: ["3.8"] steps: - name: Checkout repository @@ -28,8 +28,21 @@ jobs: miniconda-version: "latest" channels: conda-forge, general auto-update-conda: true + python-version: 3.8 + environment-file: environment.yml - + # Install ROSCO toolbox + - name: Install ROSCO toolbox + shell: bash -l {0} + run: | + python setup.py install + + # Re-generate registry + - name: Generate Registry + shell: bash -l {0} + run: python ROSCO/rosco_registry/write_registry.py + + - name: Add dependencies windows if: true == contains( matrix.os, 'windows') shell: bash -l {0} @@ -59,15 +72,3 @@ jobs: -G "MinGW Makefiles" \ .. cmake --build . --target install - - # # Install ROSCO linux - # - name: Compile ROSCO linux - # if: false == contains( matrix.os, 'windows') - # working-directory: ${{runner.workspace}}/ROSCO/ROSCO/build - - # # Install ROSCO windows - # - name: Compile ROSCO windows - # if: true == contains( matrix.os, 'windows') - # working-directory: ${{runner.workspace}}/ROSCO/ROSCO/build - # run: cmake --build . --target install -G "MinGW Makefiles" - diff --git a/Examples/Example_OL_Input.dat b/Examples/Example_OL_Input.dat new file mode 100644 index 00000000..65ee22fd --- /dev/null +++ b/Examples/Example_OL_Input.dat @@ -0,0 +1,4002 @@ +! Time BldPitch GenTq YawRate +! (sec.) (rad.) (Nm) (Nm) +0.00000000 0.00000000 9812023.00000000 0.00000000 +0.05000000 0.00000000 9812023.00000000 0.31415783 +0.10000000 0.00000000 9812023.00000000 0.31414922 +0.15000000 0.00000000 9812023.00000000 0.31413199 +0.20000000 0.00000000 9812023.00000000 0.31410615 +0.25000000 0.00000000 9812023.00000000 0.31407171 +0.30000000 0.00000000 9812023.00000000 0.31402865 +0.35000000 0.00000000 9812023.00000000 0.31397698 +0.40000000 0.00000000 9812023.00000000 0.31391670 +0.45000000 0.00000000 9812023.00000000 0.31384782 +0.50000000 0.00000000 9812023.00000000 0.31377033 +0.55000000 0.00000000 9812023.00000000 0.31368424 +0.60000000 0.00000000 9812023.00000000 0.31358955 +0.65000000 0.00000000 9812023.00000000 0.31348627 +0.70000000 0.00000000 9812023.00000000 0.31337439 +0.75000000 0.00000000 9812023.00000000 0.31325392 +0.80000000 0.00000000 9812023.00000000 0.31312486 +0.85000000 0.00000000 9812023.00000000 0.31298721 +0.90000000 0.00000000 9812023.00000000 0.31284099 +0.95000000 0.00000000 9812023.00000000 0.31268619 +1.00000000 0.00000000 9812023.00000000 0.31252281 +1.05000000 0.00000000 9812023.00000000 0.31235087 +1.10000000 0.00000000 9812023.00000000 0.31217036 +1.15000000 0.00000000 9812023.00000000 0.31198130 +1.20000000 0.00000000 9812023.00000000 0.31178368 +1.25000000 0.00000000 9812023.00000000 0.31157752 +1.30000000 0.00000000 9812023.00000000 0.31136281 +1.35000000 0.00000000 9812023.00000000 0.31113957 +1.40000000 0.00000000 9812023.00000000 0.31090780 +1.45000000 0.00000000 9812023.00000000 0.31066750 +1.50000000 0.00000000 9812023.00000000 0.31041869 +1.55000000 0.00000000 9812023.00000000 0.31016136 +1.60000000 0.00000000 9812023.00000000 0.30989554 +1.65000000 0.00000000 9812023.00000000 0.30962121 +1.70000000 0.00000000 9812023.00000000 0.30933840 +1.75000000 0.00000000 9812023.00000000 0.30904711 +1.80000000 0.00000000 9812023.00000000 0.30874735 +1.85000000 0.00000000 9812023.00000000 0.30843912 +1.90000000 0.00000000 9812023.00000000 0.30812243 +1.95000000 0.00000000 9812023.00000000 0.30779730 +2.00000000 0.00000000 9812023.00000000 0.30746373 +2.05000000 0.00000000 9812023.00000000 0.30712173 +2.10000000 0.00000000 9812023.00000000 0.30677131 +2.15000000 0.00000000 9812023.00000000 0.30641248 +2.20000000 0.00000000 9812023.00000000 0.30604525 +2.25000000 0.00000000 9812023.00000000 0.30566962 +2.30000000 0.00000000 9812023.00000000 0.30528562 +2.35000000 0.00000000 9812023.00000000 0.30489325 +2.40000000 0.00000000 9812023.00000000 0.30449252 +2.45000000 0.00000000 9812023.00000000 0.30408345 +2.50000000 0.00000000 9812023.00000000 0.30366603 +2.55000000 0.00000000 9812023.00000000 0.30324029 +2.60000000 0.00000000 9812023.00000000 0.30280624 +2.65000000 0.00000000 9812023.00000000 0.30236388 +2.70000000 0.00000000 9812023.00000000 0.30191324 +2.75000000 0.00000000 9812023.00000000 0.30145432 +2.80000000 0.00000000 9812023.00000000 0.30098713 +2.85000000 0.00000000 9812023.00000000 0.30051170 +2.90000000 0.00000000 9812023.00000000 0.30002802 +2.95000000 0.00000000 9812023.00000000 0.29953612 +3.00000000 0.00000000 9812023.00000000 0.29903601 +3.05000000 0.00000000 9812023.00000000 0.29852770 +3.10000000 0.00000000 9812023.00000000 0.29801120 +3.15000000 0.00000000 9812023.00000000 0.29748653 +3.20000000 0.00000000 9812023.00000000 0.29695371 +3.25000000 0.00000000 9812023.00000000 0.29641275 +3.30000000 0.00000000 9812023.00000000 0.29586366 +3.35000000 0.00000000 9812023.00000000 0.29530646 +3.40000000 0.00000000 9812023.00000000 0.29474116 +3.45000000 0.00000000 9812023.00000000 0.29416779 +3.50000000 0.00000000 9812023.00000000 0.29358635 +3.55000000 0.00000000 9812023.00000000 0.29299686 +3.60000000 0.00000000 9812023.00000000 0.29239933 +3.65000000 0.00000000 9812023.00000000 0.29179379 +3.70000000 0.00000000 9812023.00000000 0.29118025 +3.75000000 0.00000000 9812023.00000000 0.29055873 +3.80000000 0.00000000 9812023.00000000 0.28992925 +3.85000000 0.00000000 9812023.00000000 0.28929181 +3.90000000 0.00000000 9812023.00000000 0.28864644 +3.95000000 0.00000000 9812023.00000000 0.28799316 +4.00000000 0.00000000 9812023.00000000 0.28733199 +4.05000000 0.00000000 9812023.00000000 0.28666293 +4.10000000 0.00000000 9812023.00000000 0.28598602 +4.15000000 0.00000000 9812023.00000000 0.28530127 +4.20000000 0.00000000 9812023.00000000 0.28460869 +4.25000000 0.00000000 9812023.00000000 0.28390831 +4.30000000 0.00000000 9812023.00000000 0.28320015 +4.35000000 0.00000000 9812023.00000000 0.28248423 +4.40000000 0.00000000 9812023.00000000 0.28176056 +4.45000000 0.00000000 9812023.00000000 0.28102917 +4.50000000 0.00000000 9812023.00000000 0.28029007 +4.55000000 0.00000000 9812023.00000000 0.27954328 +4.60000000 0.00000000 9812023.00000000 0.27878884 +4.65000000 0.00000000 9812023.00000000 0.27802675 +4.70000000 0.00000000 9812023.00000000 0.27725704 +4.75000000 0.00000000 9812023.00000000 0.27647972 +4.80000000 0.00000000 9812023.00000000 0.27569483 +4.85000000 0.00000000 9812023.00000000 0.27490238 +4.90000000 0.00000000 9812023.00000000 0.27410239 +4.95000000 0.00000000 9812023.00000000 0.27329489 +5.00000000 0.00000000 9812023.00000000 0.27247989 +5.05000000 0.00000000 9812023.00000000 0.27165743 +5.10000000 0.00000000 9812023.00000000 0.27082752 +5.15000000 0.00000000 9812023.00000000 0.26999018 +5.20000000 0.00000000 9812023.00000000 0.26914544 +5.25000000 0.00000000 9812023.00000000 0.26829332 +5.30000000 0.00000000 9812023.00000000 0.26743385 +5.35000000 0.00000000 9812023.00000000 0.26656704 +5.40000000 0.00000000 9812023.00000000 0.26569293 +5.45000000 0.00000000 9812023.00000000 0.26481153 +5.50000000 0.00000000 9812023.00000000 0.26392287 +5.55000000 0.00000000 9812023.00000000 0.26302698 +5.60000000 0.00000000 9812023.00000000 0.26212387 +5.65000000 0.00000000 9812023.00000000 0.26121358 +5.70000000 0.00000000 9812023.00000000 0.26029613 +5.75000000 0.00000000 9812023.00000000 0.25937154 +5.80000000 0.00000000 9812023.00000000 0.25843985 +5.85000000 0.00000000 9812023.00000000 0.25750106 +5.90000000 0.00000000 9812023.00000000 0.25655522 +5.95000000 0.00000000 9812023.00000000 0.25560234 +6.00000000 0.00000000 9812023.00000000 0.25464246 +6.05000000 0.00000000 9812023.00000000 0.25367559 +6.10000000 0.00000000 9812023.00000000 0.25270177 +6.15000000 0.00000000 9812023.00000000 0.25172102 +6.20000000 0.00000000 9812023.00000000 0.25073337 +6.25000000 0.00000000 9812023.00000000 0.24973885 +6.30000000 0.00000000 9812023.00000000 0.24873748 +6.35000000 0.00000000 9812023.00000000 0.24772929 +6.40000000 0.00000000 9812023.00000000 0.24671431 +6.45000000 0.00000000 9812023.00000000 0.24569256 +6.50000000 0.00000000 9812023.00000000 0.24466408 +6.55000000 0.00000000 9812023.00000000 0.24362889 +6.60000000 0.00000000 9812023.00000000 0.24258703 +6.65000000 0.00000000 9812023.00000000 0.24153851 +6.70000000 0.00000000 9812023.00000000 0.24048337 +6.75000000 0.00000000 9812023.00000000 0.23942164 +6.80000000 0.00000000 9812023.00000000 0.23835334 +6.85000000 0.00000000 9812023.00000000 0.23727851 +6.90000000 0.00000000 9812023.00000000 0.23619717 +6.95000000 0.00000000 9812023.00000000 0.23510936 +7.00000000 0.00000000 9812023.00000000 0.23401510 +7.05000000 0.00000000 9812023.00000000 0.23291443 +7.10000000 0.00000000 9812023.00000000 0.23180737 +7.15000000 0.00000000 9812023.00000000 0.23069396 +7.20000000 0.00000000 9812023.00000000 0.22957422 +7.25000000 0.00000000 9812023.00000000 0.22844819 +7.30000000 0.00000000 9812023.00000000 0.22731589 +7.35000000 0.00000000 9812023.00000000 0.22617736 +7.40000000 0.00000000 9812023.00000000 0.22503264 +7.45000000 0.00000000 9812023.00000000 0.22388174 +7.50000000 0.00000000 9812023.00000000 0.22272470 +7.55000000 0.00000000 9812023.00000000 0.22156156 +7.60000000 0.00000000 9812023.00000000 0.22039235 +7.65000000 0.00000000 9812023.00000000 0.21921709 +7.70000000 0.00000000 9812023.00000000 0.21803582 +7.75000000 0.00000000 9812023.00000000 0.21684857 +7.80000000 0.00000000 9812023.00000000 0.21565538 +7.85000000 0.00000000 9812023.00000000 0.21445628 +7.90000000 0.00000000 9812023.00000000 0.21325130 +7.95000000 0.00000000 9812023.00000000 0.21204047 +8.00000000 0.00000000 9812023.00000000 0.21082383 +8.05000000 0.00000000 9812023.00000000 0.20960141 +8.10000000 0.00000000 9812023.00000000 0.20837324 +8.15000000 0.00000000 9812023.00000000 0.20713936 +8.20000000 0.00000000 9812023.00000000 0.20589980 +8.25000000 0.00000000 9812023.00000000 0.20465460 +8.30000000 0.00000000 9812023.00000000 0.20340378 +8.35000000 0.00000000 9812023.00000000 0.20214739 +8.40000000 0.00000000 9812023.00000000 0.20088546 +8.45000000 0.00000000 9812023.00000000 0.19961802 +8.50000000 0.00000000 9812023.00000000 0.19834510 +8.55000000 0.00000000 9812023.00000000 0.19706675 +8.60000000 0.00000000 9812023.00000000 0.19578300 +8.65000000 0.00000000 9812023.00000000 0.19449388 +8.70000000 0.00000000 9812023.00000000 0.19319942 +8.75000000 0.00000000 9812023.00000000 0.19189967 +8.80000000 0.00000000 9812023.00000000 0.19059466 +8.85000000 0.00000000 9812023.00000000 0.18928443 +8.90000000 0.00000000 9812023.00000000 0.18796900 +8.95000000 0.00000000 9812023.00000000 0.18664842 +9.00000000 0.00000000 9812023.00000000 0.18532273 +9.05000000 0.00000000 9812023.00000000 0.18399195 +9.10000000 0.00000000 9812023.00000000 0.18265613 +9.15000000 0.00000000 9812023.00000000 0.18131530 +9.20000000 0.00000000 9812023.00000000 0.17996950 +9.25000000 0.00000000 9812023.00000000 0.17861877 +9.30000000 0.00000000 9812023.00000000 0.17726314 +9.35000000 0.00000000 9812023.00000000 0.17590265 +9.40000000 0.00000000 9812023.00000000 0.17453734 +9.45000000 0.00000000 9812023.00000000 0.17316724 +9.50000000 0.00000000 9812023.00000000 0.17179239 +9.55000000 0.00000000 9812023.00000000 0.17041284 +9.60000000 0.00000000 9812023.00000000 0.16902861 +9.65000000 0.00000000 9812023.00000000 0.16763975 +9.70000000 0.00000000 9812023.00000000 0.16624630 +9.75000000 0.00000000 9812023.00000000 0.16484828 +9.80000000 0.00000000 9812023.00000000 0.16344575 +9.85000000 0.00000000 9812023.00000000 0.16203873 +9.90000000 0.00000000 9812023.00000000 0.16062728 +9.95000000 0.00000000 9812023.00000000 0.15921142 +10.00000000 0.00000000 9812023.00000000 0.15779119 +10.05000000 0.00000000 9812023.00000000 0.15636664 +10.10000000 0.00000000 9812023.00000000 0.15493780 +10.15000000 0.00000000 9812023.00000000 0.15350471 +10.20000000 0.00000000 9812023.00000000 0.15206742 +10.25000000 0.00000000 9812023.00000000 0.15062596 +10.30000000 0.00000000 9812023.00000000 0.14918036 +10.35000000 0.00000000 9812023.00000000 0.14773068 +10.40000000 0.00000000 9812023.00000000 0.14627695 +10.45000000 0.00000000 9812023.00000000 0.14481921 +10.50000000 0.00000000 9812023.00000000 0.14335749 +10.55000000 0.00000000 9812023.00000000 0.14189185 +10.60000000 0.00000000 9812023.00000000 0.14042231 +10.65000000 0.00000000 9812023.00000000 0.13894893 +10.70000000 0.00000000 9812023.00000000 0.13747174 +10.75000000 0.00000000 9812023.00000000 0.13599078 +10.80000000 0.00000000 9812023.00000000 0.13450609 +10.85000000 0.00000000 9812023.00000000 0.13301771 +10.90000000 0.00000000 9812023.00000000 0.13152569 +10.95000000 0.00000000 9812023.00000000 0.13003006 +11.00000000 0.00000000 9812023.00000000 0.12853086 +11.05000000 0.00000000 9812023.00000000 0.12702814 +11.10000000 0.00000000 9812023.00000000 0.12552194 +11.15000000 0.00000000 9812023.00000000 0.12401230 +11.20000000 0.00000000 9812023.00000000 0.12249926 +11.25000000 0.00000000 9812023.00000000 0.12098286 +11.30000000 0.00000000 9812023.00000000 0.11946314 +11.35000000 0.00000000 9812023.00000000 0.11794015 +11.40000000 0.00000000 9812023.00000000 0.11641392 +11.45000000 0.00000000 9812023.00000000 0.11488450 +11.50000000 0.00000000 9812023.00000000 0.11335193 +11.55000000 0.00000000 9812023.00000000 0.11181626 +11.60000000 0.00000000 9812023.00000000 0.11027752 +11.65000000 0.00000000 9812023.00000000 0.10873576 +11.70000000 0.00000000 9812023.00000000 0.10719101 +11.75000000 0.00000000 9812023.00000000 0.10564333 +11.80000000 0.00000000 9812023.00000000 0.10409275 +11.85000000 0.00000000 9812023.00000000 0.10253932 +11.90000000 0.00000000 9812023.00000000 0.10098307 +11.95000000 0.00000000 9812023.00000000 0.09942406 +12.00000000 0.00000000 9812023.00000000 0.09786232 +12.05000000 0.00000000 9812023.00000000 0.09629790 +12.10000000 0.00000000 9812023.00000000 0.09473084 +12.15000000 0.00000000 9812023.00000000 0.09316118 +12.20000000 0.00000000 9812023.00000000 0.09158896 +12.25000000 0.00000000 9812023.00000000 0.09001424 +12.30000000 0.00000000 9812023.00000000 0.08843705 +12.35000000 0.00000000 9812023.00000000 0.08685743 +12.40000000 0.00000000 9812023.00000000 0.08527543 +12.45000000 0.00000000 9812023.00000000 0.08369110 +12.50000000 0.00000000 9812023.00000000 0.08210447 +12.55000000 0.00000000 9812023.00000000 0.08051559 +12.60000000 0.00000000 9812023.00000000 0.07892450 +12.65000000 0.00000000 9812023.00000000 0.07733125 +12.70000000 0.00000000 9812023.00000000 0.07573588 +12.75000000 0.00000000 9812023.00000000 0.07413843 +12.80000000 0.00000000 9812023.00000000 0.07253895 +12.85000000 0.00000000 9812023.00000000 0.07093748 +12.90000000 0.00000000 9812023.00000000 0.06933406 +12.95000000 0.00000000 9812023.00000000 0.06772875 +13.00000000 0.00000000 9812023.00000000 0.06612158 +13.05000000 0.00000000 9812023.00000000 0.06451259 +13.10000000 0.00000000 9812023.00000000 0.06290184 +13.15000000 0.00000000 9812023.00000000 0.06128936 +13.20000000 0.00000000 9812023.00000000 0.05967520 +13.25000000 0.00000000 9812023.00000000 0.05805941 +13.30000000 0.00000000 9812023.00000000 0.05644202 +13.35000000 0.00000000 9812023.00000000 0.05482309 +13.40000000 0.00000000 9812023.00000000 0.05320265 +13.45000000 0.00000000 9812023.00000000 0.05158076 +13.50000000 0.00000000 9812023.00000000 0.04995745 +13.55000000 0.00000000 9812023.00000000 0.04833277 +13.60000000 0.00000000 9812023.00000000 0.04670677 +13.65000000 0.00000000 9812023.00000000 0.04507949 +13.70000000 0.00000000 9812023.00000000 0.04345097 +13.75000000 0.00000000 9812023.00000000 0.04182125 +13.80000000 0.00000000 9812023.00000000 0.04019040 +13.85000000 0.00000000 9812023.00000000 0.03855844 +13.90000000 0.00000000 9812023.00000000 0.03692542 +13.95000000 0.00000000 9812023.00000000 0.03529139 +14.00000000 0.00000000 9812023.00000000 0.03365639 +14.05000000 0.00000000 9812023.00000000 0.03202048 +14.10000000 0.00000000 9812023.00000000 0.03038368 +14.15000000 0.00000000 9812023.00000000 0.02874605 +14.20000000 0.00000000 9812023.00000000 0.02710763 +14.25000000 0.00000000 9812023.00000000 0.02546847 +14.30000000 0.00000000 9812023.00000000 0.02382861 +14.35000000 0.00000000 9812023.00000000 0.02218810 +14.40000000 0.00000000 9812023.00000000 0.02054698 +14.45000000 0.00000000 9812023.00000000 0.01890529 +14.50000000 0.00000000 9812023.00000000 0.01726309 +14.55000000 0.00000000 9812023.00000000 0.01562041 +14.60000000 0.00000000 9812023.00000000 0.01397731 +14.65000000 0.00000000 9812023.00000000 0.01233382 +14.70000000 0.00000000 9812023.00000000 0.01069000 +14.75000000 0.00000000 9812023.00000000 0.00904588 +14.80000000 0.00000000 9812023.00000000 0.00740151 +14.85000000 0.00000000 9812023.00000000 0.00575694 +14.90000000 0.00000000 9812023.00000000 0.00411221 +14.95000000 0.00000000 9812023.00000000 0.00246737 +15.00000000 0.00000000 9812023.00000000 0.00082247 +15.05000000 0.00000000 9812023.00000000 -0.00082247 +15.10000000 0.00000000 9812023.00000000 -0.00246737 +15.15000000 0.00000000 9812023.00000000 -0.00411221 +15.20000000 0.00000000 9812023.00000000 -0.00575694 +15.25000000 0.00000000 9812023.00000000 -0.00740151 +15.30000000 0.00000000 9812023.00000000 -0.00904588 +15.35000000 0.00000000 9812023.00000000 -0.01069000 +15.40000000 0.00000000 9812023.00000000 -0.01233382 +15.45000000 0.00000000 9812023.00000000 -0.01397731 +15.50000000 0.00000000 9812023.00000000 -0.01562041 +15.55000000 0.00000000 9812023.00000000 -0.01726309 +15.60000000 0.00000000 9812023.00000000 -0.01890529 +15.65000000 0.00000000 9812023.00000000 -0.02054698 +15.70000000 0.00000000 9812023.00000000 -0.02218810 +15.75000000 0.00000000 9812023.00000000 -0.02382861 +15.80000000 0.00000000 9812023.00000000 -0.02546847 +15.85000000 0.00000000 9812023.00000000 -0.02710763 +15.90000000 0.00000000 9812023.00000000 -0.02874605 +15.95000000 0.00000000 9812023.00000000 -0.03038368 +16.00000000 0.00000000 9812023.00000000 -0.03202048 +16.05000000 0.00000000 9812023.00000000 -0.03365639 +16.10000000 0.00000000 9812023.00000000 -0.03529139 +16.15000000 0.00000000 9812023.00000000 -0.03692542 +16.20000000 0.00000000 9812023.00000000 -0.03855844 +16.25000000 0.00000000 9812023.00000000 -0.04019040 +16.30000000 0.00000000 9812023.00000000 -0.04182125 +16.35000000 0.00000000 9812023.00000000 -0.04345097 +16.40000000 0.00000000 9812023.00000000 -0.04507949 +16.45000000 0.00000000 9812023.00000000 -0.04670677 +16.50000000 0.00000000 9812023.00000000 -0.04833277 +16.55000000 0.00000000 9812023.00000000 -0.04995745 +16.60000000 0.00000000 9812023.00000000 -0.05158076 +16.65000000 0.00000000 9812023.00000000 -0.05320265 +16.70000000 0.00000000 9812023.00000000 -0.05482309 +16.75000000 0.00000000 9812023.00000000 -0.05644202 +16.80000000 0.00000000 9812023.00000000 -0.05805941 +16.85000000 0.00000000 9812023.00000000 -0.05967520 +16.90000000 0.00000000 9812023.00000000 -0.06128936 +16.95000000 0.00000000 9812023.00000000 -0.06290184 +17.00000000 0.00000000 9812023.00000000 -0.06451259 +17.05000000 0.00000000 9812023.00000000 -0.06612158 +17.10000000 0.00000000 9812023.00000000 -0.06772875 +17.15000000 0.00000000 9812023.00000000 -0.06933406 +17.20000000 0.00000000 9812023.00000000 -0.07093748 +17.25000000 0.00000000 9812023.00000000 -0.07253895 +17.30000000 0.00000000 9812023.00000000 -0.07413843 +17.35000000 0.00000000 9812023.00000000 -0.07573588 +17.40000000 0.00000000 9812023.00000000 -0.07733125 +17.45000000 0.00000000 9812023.00000000 -0.07892450 +17.50000000 0.00000000 9812023.00000000 -0.08051559 +17.55000000 0.00000000 9812023.00000000 -0.08210447 +17.60000000 0.00000000 9812023.00000000 -0.08369110 +17.65000000 0.00000000 9812023.00000000 -0.08527543 +17.70000000 0.00000000 9812023.00000000 -0.08685743 +17.75000000 0.00000000 9812023.00000000 -0.08843705 +17.80000000 0.00000000 9812023.00000000 -0.09001424 +17.85000000 0.00000000 9812023.00000000 -0.09158896 +17.90000000 0.00000000 9812023.00000000 -0.09316118 +17.95000000 0.00000000 9812023.00000000 -0.09473084 +18.00000000 0.00000000 9812023.00000000 -0.09629790 +18.05000000 0.00000000 9812023.00000000 -0.09786232 +18.10000000 0.00000000 9812023.00000000 -0.09942406 +18.15000000 0.00000000 9812023.00000000 -0.10098307 +18.20000000 0.00000000 9812023.00000000 -0.10253932 +18.25000000 0.00000000 9812023.00000000 -0.10409275 +18.30000000 0.00000000 9812023.00000000 -0.10564333 +18.35000000 0.00000000 9812023.00000000 -0.10719101 +18.40000000 0.00000000 9812023.00000000 -0.10873576 +18.45000000 0.00000000 9812023.00000000 -0.11027752 +18.50000000 0.00000000 9812023.00000000 -0.11181626 +18.55000000 0.00000000 9812023.00000000 -0.11335193 +18.60000000 0.00000000 9812023.00000000 -0.11488450 +18.65000000 0.00000000 9812023.00000000 -0.11641392 +18.70000000 0.00000000 9812023.00000000 -0.11794015 +18.75000000 0.00000000 9812023.00000000 -0.11946314 +18.80000000 0.00000000 9812023.00000000 -0.12098286 +18.85000000 0.00000000 9812023.00000000 -0.12249926 +18.90000000 0.00000000 9812023.00000000 -0.12401230 +18.95000000 0.00000000 9812023.00000000 -0.12552194 +19.00000000 0.00000000 9812023.00000000 -0.12702814 +19.05000000 0.00000000 9812023.00000000 -0.12853086 +19.10000000 0.00000000 9812023.00000000 -0.13003006 +19.15000000 0.00000000 9812023.00000000 -0.13152569 +19.20000000 0.00000000 9812023.00000000 -0.13301771 +19.25000000 0.00000000 9812023.00000000 -0.13450609 +19.30000000 0.00000000 9812023.00000000 -0.13599078 +19.35000000 0.00000000 9812023.00000000 -0.13747174 +19.40000000 0.00000000 9812023.00000000 -0.13894893 +19.45000000 0.00000000 9812023.00000000 -0.14042231 +19.50000000 0.00000000 9812023.00000000 -0.14189185 +19.55000000 0.00000000 9812023.00000000 -0.14335749 +19.60000000 0.00000000 9812023.00000000 -0.14481921 +19.65000000 0.00000000 9812023.00000000 -0.14627695 +19.70000000 0.00000000 9812023.00000000 -0.14773068 +19.75000000 0.00000000 9812023.00000000 -0.14918036 +19.80000000 0.00000000 9812023.00000000 -0.15062596 +19.85000000 0.00000000 9812023.00000000 -0.15206742 +19.90000000 0.00000000 9812023.00000000 -0.15350471 +19.95000000 0.00000000 9812023.00000000 -0.15493780 +20.00000000 0.00000000 9812023.00000000 -0.15636664 +20.05000000 0.00000000 9812023.00000000 -0.15779119 +20.10000000 0.00000000 9812023.00000000 -0.15921142 +20.15000000 0.00000000 9812023.00000000 -0.16062728 +20.20000000 0.00000000 9812023.00000000 -0.16203873 +20.25000000 0.00000000 9812023.00000000 -0.16344575 +20.30000000 0.00000000 9812023.00000000 -0.16484828 +20.35000000 0.00000000 9812023.00000000 -0.16624630 +20.40000000 0.00000000 9812023.00000000 -0.16763975 +20.45000000 0.00000000 9812023.00000000 -0.16902861 +20.50000000 0.00000000 9812023.00000000 -0.17041284 +20.55000000 0.00000000 9812023.00000000 -0.17179239 +20.60000000 0.00000000 9812023.00000000 -0.17316724 +20.65000000 0.00000000 9812023.00000000 -0.17453734 +20.70000000 0.00000000 9812023.00000000 -0.17590265 +20.75000000 0.00000000 9812023.00000000 -0.17726314 +20.80000000 0.00000000 9812023.00000000 -0.17861877 +20.85000000 0.00000000 9812023.00000000 -0.17996950 +20.90000000 0.00000000 9812023.00000000 -0.18131530 +20.95000000 0.00000000 9812023.00000000 -0.18265613 +21.00000000 0.00000000 9812023.00000000 -0.18399195 +21.05000000 0.00000000 9812023.00000000 -0.18532273 +21.10000000 0.00000000 9812023.00000000 -0.18664842 +21.15000000 0.00000000 9812023.00000000 -0.18796900 +21.20000000 0.00000000 9812023.00000000 -0.18928443 +21.25000000 0.00000000 9812023.00000000 -0.19059466 +21.30000000 0.00000000 9812023.00000000 -0.19189967 +21.35000000 0.00000000 9812023.00000000 -0.19319942 +21.40000000 0.00000000 9812023.00000000 -0.19449388 +21.45000000 0.00000000 9812023.00000000 -0.19578300 +21.50000000 0.00000000 9812023.00000000 -0.19706675 +21.55000000 0.00000000 9812023.00000000 -0.19834510 +21.60000000 0.00000000 9812023.00000000 -0.19961802 +21.65000000 0.00000000 9812023.00000000 -0.20088546 +21.70000000 0.00000000 9812023.00000000 -0.20214739 +21.75000000 0.00000000 9812023.00000000 -0.20340378 +21.80000000 0.00000000 9812023.00000000 -0.20465460 +21.85000000 0.00000000 9812023.00000000 -0.20589980 +21.90000000 0.00000000 9812023.00000000 -0.20713936 +21.95000000 0.00000000 9812023.00000000 -0.20837324 +22.00000000 0.00000000 9812023.00000000 -0.20960141 +22.05000000 0.00000000 9812023.00000000 -0.21082383 +22.10000000 0.00000000 9812023.00000000 -0.21204047 +22.15000000 0.00000000 9812023.00000000 -0.21325130 +22.20000000 0.00000000 9812023.00000000 -0.21445628 +22.25000000 0.00000000 9812023.00000000 -0.21565538 +22.30000000 0.00000000 9812023.00000000 -0.21684857 +22.35000000 0.00000000 9812023.00000000 -0.21803582 +22.40000000 0.00000000 9812023.00000000 -0.21921709 +22.45000000 0.00000000 9812023.00000000 -0.22039235 +22.50000000 0.00000000 9812023.00000000 -0.22156156 +22.55000000 0.00000000 9812023.00000000 -0.22272470 +22.60000000 0.00000000 9812023.00000000 -0.22388174 +22.65000000 0.00000000 9812023.00000000 -0.22503264 +22.70000000 0.00000000 9812023.00000000 -0.22617736 +22.75000000 0.00000000 9812023.00000000 -0.22731589 +22.80000000 0.00000000 9812023.00000000 -0.22844819 +22.85000000 0.00000000 9812023.00000000 -0.22957422 +22.90000000 0.00000000 9812023.00000000 -0.23069396 +22.95000000 0.00000000 9812023.00000000 -0.23180737 +23.00000000 0.00000000 9812023.00000000 -0.23291443 +23.05000000 0.00000000 9812023.00000000 -0.23401510 +23.10000000 0.00000000 9812023.00000000 -0.23510936 +23.15000000 0.00000000 9812023.00000000 -0.23619717 +23.20000000 0.00000000 9812023.00000000 -0.23727851 +23.25000000 0.00000000 9812023.00000000 -0.23835334 +23.30000000 0.00000000 9812023.00000000 -0.23942164 +23.35000000 0.00000000 9812023.00000000 -0.24048337 +23.40000000 0.00000000 9812023.00000000 -0.24153851 +23.45000000 0.00000000 9812023.00000000 -0.24258703 +23.50000000 0.00000000 9812023.00000000 -0.24362889 +23.55000000 0.00000000 9812023.00000000 -0.24466408 +23.60000000 0.00000000 9812023.00000000 -0.24569256 +23.65000000 0.00000000 9812023.00000000 -0.24671431 +23.70000000 0.00000000 9812023.00000000 -0.24772929 +23.75000000 0.00000000 9812023.00000000 -0.24873748 +23.80000000 0.00000000 9812023.00000000 -0.24973885 +23.85000000 0.00000000 9812023.00000000 -0.25073337 +23.90000000 0.00000000 9812023.00000000 -0.25172102 +23.95000000 0.00000000 9812023.00000000 -0.25270177 +24.00000000 0.00000000 9812023.00000000 -0.25367559 +24.05000000 0.00000000 9812023.00000000 -0.25464246 +24.10000000 0.00000000 9812023.00000000 -0.25560234 +24.15000000 0.00000000 9812023.00000000 -0.25655522 +24.20000000 0.00000000 9812023.00000000 -0.25750106 +24.25000000 0.00000000 9812023.00000000 -0.25843985 +24.30000000 0.00000000 9812023.00000000 -0.25937154 +24.35000000 0.00000000 9812023.00000000 -0.26029613 +24.40000000 0.00000000 9812023.00000000 -0.26121358 +24.45000000 0.00000000 9812023.00000000 -0.26212387 +24.50000000 0.00000000 9812023.00000000 -0.26302698 +24.55000000 0.00000000 9812023.00000000 -0.26392287 +24.60000000 0.00000000 9812023.00000000 -0.26481153 +24.65000000 0.00000000 9812023.00000000 -0.26569293 +24.70000000 0.00000000 9812023.00000000 -0.26656704 +24.75000000 0.00000000 9812023.00000000 -0.26743385 +24.80000000 0.00000000 9812023.00000000 -0.26829332 +24.85000000 0.00000000 9812023.00000000 -0.26914544 +24.90000000 0.00000000 9812023.00000000 -0.26999018 +24.95000000 0.00000000 9812023.00000000 -0.27082752 +25.00000000 0.00000000 9812023.00000000 -0.27165743 +25.05000000 0.00000000 9812023.00000000 -0.27247989 +25.10000000 0.00000000 9812023.00000000 -0.27329489 +25.15000000 0.00000000 9812023.00000000 -0.27410239 +25.20000000 0.00000000 9812023.00000000 -0.27490238 +25.25000000 0.00000000 9812023.00000000 -0.27569483 +25.30000000 0.00000000 9812023.00000000 -0.27647972 +25.35000000 0.00000000 9812023.00000000 -0.27725704 +25.40000000 0.00000000 9812023.00000000 -0.27802675 +25.45000000 0.00000000 9812023.00000000 -0.27878884 +25.50000000 0.00000000 9812023.00000000 -0.27954328 +25.55000000 0.00000000 9812023.00000000 -0.28029007 +25.60000000 0.00000000 9812023.00000000 -0.28102917 +25.65000000 0.00000000 9812023.00000000 -0.28176056 +25.70000000 0.00000000 9812023.00000000 -0.28248423 +25.75000000 0.00000000 9812023.00000000 -0.28320015 +25.80000000 0.00000000 9812023.00000000 -0.28390831 +25.85000000 0.00000000 9812023.00000000 -0.28460869 +25.90000000 0.00000000 9812023.00000000 -0.28530127 +25.95000000 0.00000000 9812023.00000000 -0.28598602 +26.00000000 0.00000000 9812023.00000000 -0.28666293 +26.05000000 0.00000000 9812023.00000000 -0.28733199 +26.10000000 0.00000000 9812023.00000000 -0.28799316 +26.15000000 0.00000000 9812023.00000000 -0.28864644 +26.20000000 0.00000000 9812023.00000000 -0.28929181 +26.25000000 0.00000000 9812023.00000000 -0.28992925 +26.30000000 0.00000000 9812023.00000000 -0.29055873 +26.35000000 0.00000000 9812023.00000000 -0.29118025 +26.40000000 0.00000000 9812023.00000000 -0.29179379 +26.45000000 0.00000000 9812023.00000000 -0.29239933 +26.50000000 0.00000000 9812023.00000000 -0.29299686 +26.55000000 0.00000000 9812023.00000000 -0.29358635 +26.60000000 0.00000000 9812023.00000000 -0.29416779 +26.65000000 0.00000000 9812023.00000000 -0.29474116 +26.70000000 0.00000000 9812023.00000000 -0.29530646 +26.75000000 0.00000000 9812023.00000000 -0.29586366 +26.80000000 0.00000000 9812023.00000000 -0.29641275 +26.85000000 0.00000000 9812023.00000000 -0.29695371 +26.90000000 0.00000000 9812023.00000000 -0.29748653 +26.95000000 0.00000000 9812023.00000000 -0.29801120 +27.00000000 0.00000000 9812023.00000000 -0.29852770 +27.05000000 0.00000000 9812023.00000000 -0.29903601 +27.10000000 0.00000000 9812023.00000000 -0.29953612 +27.15000000 0.00000000 9812023.00000000 -0.30002802 +27.20000000 0.00000000 9812023.00000000 -0.30051170 +27.25000000 0.00000000 9812023.00000000 -0.30098713 +27.30000000 0.00000000 9812023.00000000 -0.30145432 +27.35000000 0.00000000 9812023.00000000 -0.30191324 +27.40000000 0.00000000 9812023.00000000 -0.30236388 +27.45000000 0.00000000 9812023.00000000 -0.30280624 +27.50000000 0.00000000 9812023.00000000 -0.30324029 +27.55000000 0.00000000 9812023.00000000 -0.30366603 +27.60000000 0.00000000 9812023.00000000 -0.30408345 +27.65000000 0.00000000 9812023.00000000 -0.30449252 +27.70000000 0.00000000 9812023.00000000 -0.30489325 +27.75000000 0.00000000 9812023.00000000 -0.30528562 +27.80000000 0.00000000 9812023.00000000 -0.30566962 +27.85000000 0.00000000 9812023.00000000 -0.30604525 +27.90000000 0.00000000 9812023.00000000 -0.30641248 +27.95000000 0.00000000 9812023.00000000 -0.30677131 +28.00000000 0.00000000 9812023.00000000 -0.30712173 +28.05000000 0.00000000 9812023.00000000 -0.30746373 +28.10000000 0.00000000 9812023.00000000 -0.30779730 +28.15000000 0.00000000 9812023.00000000 -0.30812243 +28.20000000 0.00000000 9812023.00000000 -0.30843912 +28.25000000 0.00000000 9812023.00000000 -0.30874735 +28.30000000 0.00000000 9812023.00000000 -0.30904711 +28.35000000 0.00000000 9812023.00000000 -0.30933840 +28.40000000 0.00000000 9812023.00000000 -0.30962121 +28.45000000 0.00000000 9812023.00000000 -0.30989554 +28.50000000 0.00000000 9812023.00000000 -0.31016136 +28.55000000 0.00000000 9812023.00000000 -0.31041869 +28.60000000 0.00000000 9812023.00000000 -0.31066750 +28.65000000 0.00000000 9812023.00000000 -0.31090780 +28.70000000 0.00000000 9812023.00000000 -0.31113957 +28.75000000 0.00000000 9812023.00000000 -0.31136281 +28.80000000 0.00000000 9812023.00000000 -0.31157752 +28.85000000 0.00000000 9812023.00000000 -0.31178368 +28.90000000 0.00000000 9812023.00000000 -0.31198130 +28.95000000 0.00000000 9812023.00000000 -0.31217036 +29.00000000 0.00000000 9812023.00000000 -0.31235087 +29.05000000 0.00000000 9812023.00000000 -0.31252281 +29.10000000 0.00000000 9812023.00000000 -0.31268619 +29.15000000 0.00000000 9812023.00000000 -0.31284099 +29.20000000 0.00000000 9812023.00000000 -0.31298721 +29.25000000 0.00000000 9812023.00000000 -0.31312486 +29.30000000 0.00000000 9812023.00000000 -0.31325392 +29.35000000 0.00000000 9812023.00000000 -0.31337439 +29.40000000 0.00000000 9812023.00000000 -0.31348627 +29.45000000 0.00000000 9812023.00000000 -0.31358955 +29.50000000 0.00000000 9812023.00000000 -0.31368424 +29.55000000 0.00000000 9812023.00000000 -0.31377033 +29.60000000 0.00000000 9812023.00000000 -0.31384782 +29.65000000 0.00000000 9812023.00000000 -0.31391670 +29.70000000 0.00000000 9812023.00000000 -0.31397698 +29.75000000 0.00000000 9812023.00000000 -0.31402865 +29.80000000 0.00000000 9812023.00000000 -0.31407171 +29.85000000 0.00000000 9812023.00000000 -0.31410615 +29.90000000 0.00000000 9812023.00000000 -0.31413199 +29.95000000 0.00000000 9812023.00000000 -0.31414922 +30.00000000 0.00000000 9812023.00000000 -0.31415783 +30.05000000 0.00000000 9812023.00000000 -0.31415783 +30.10000000 0.00000000 9812023.00000000 -0.31414922 +30.15000000 0.00000000 9812023.00000000 -0.31413199 +30.20000000 0.00000000 9812023.00000000 -0.31410615 +30.25000000 0.00000000 9812023.00000000 -0.31407171 +30.30000000 0.00000000 9812023.00000000 -0.31402865 +30.35000000 0.00000000 9812023.00000000 -0.31397698 +30.40000000 0.00000000 9812023.00000000 -0.31391670 +30.45000000 0.00000000 9812023.00000000 -0.31384782 +30.50000000 0.00000000 9812023.00000000 -0.31377033 +30.55000000 0.00000000 9812023.00000000 -0.31368424 +30.60000000 0.00000000 9812023.00000000 -0.31358955 +30.65000000 0.00000000 9812023.00000000 -0.31348627 +30.70000000 0.00000000 9812023.00000000 -0.31337439 +30.75000000 0.00000000 9812023.00000000 -0.31325392 +30.80000000 0.00000000 9812023.00000000 -0.31312486 +30.85000000 0.00000000 9812023.00000000 -0.31298721 +30.90000000 0.00000000 9812023.00000000 -0.31284099 +30.95000000 0.00000000 9812023.00000000 -0.31268619 +31.00000000 0.00000000 9812023.00000000 -0.31252281 +31.05000000 0.00000000 9812023.00000000 -0.31235087 +31.10000000 0.00000000 9812023.00000000 -0.31217036 +31.15000000 0.00000000 9812023.00000000 -0.31198130 +31.20000000 0.00000000 9812023.00000000 -0.31178368 +31.25000000 0.00000000 9812023.00000000 -0.31157752 +31.30000000 0.00000000 9812023.00000000 -0.31136281 +31.35000000 0.00000000 9812023.00000000 -0.31113957 +31.40000000 0.00000000 9812023.00000000 -0.31090780 +31.45000000 0.00000000 9812023.00000000 -0.31066750 +31.50000000 0.00000000 9812023.00000000 -0.31041869 +31.55000000 0.00000000 9812023.00000000 -0.31016136 +31.60000000 0.00000000 9812023.00000000 -0.30989554 +31.65000000 0.00000000 9812023.00000000 -0.30962121 +31.70000000 0.00000000 9812023.00000000 -0.30933840 +31.75000000 0.00000000 9812023.00000000 -0.30904711 +31.80000000 0.00000000 9812023.00000000 -0.30874735 +31.85000000 0.00000000 9812023.00000000 -0.30843912 +31.90000000 0.00000000 9812023.00000000 -0.30812243 +31.95000000 0.00000000 9812023.00000000 -0.30779730 +32.00000000 0.00000000 9812023.00000000 -0.30746373 +32.05000000 0.00000000 9812023.00000000 -0.30712173 +32.10000000 0.00000000 9812023.00000000 -0.30677131 +32.15000000 0.00000000 9812023.00000000 -0.30641248 +32.20000000 0.00000000 9812023.00000000 -0.30604525 +32.25000000 0.00000000 9812023.00000000 -0.30566962 +32.30000000 0.00000000 9812023.00000000 -0.30528562 +32.35000000 0.00000000 9812023.00000000 -0.30489325 +32.40000000 0.00000000 9812023.00000000 -0.30449252 +32.45000000 0.00000000 9812023.00000000 -0.30408345 +32.50000000 0.00000000 9812023.00000000 -0.30366603 +32.55000000 0.00000000 9812023.00000000 -0.30324029 +32.60000000 0.00000000 9812023.00000000 -0.30280624 +32.65000000 0.00000000 9812023.00000000 -0.30236388 +32.70000000 0.00000000 9812023.00000000 -0.30191324 +32.75000000 0.00000000 9812023.00000000 -0.30145432 +32.80000000 0.00000000 9812023.00000000 -0.30098713 +32.85000000 0.00000000 9812023.00000000 -0.30051170 +32.90000000 0.00000000 9812023.00000000 -0.30002802 +32.95000000 0.00000000 9812023.00000000 -0.29953612 +33.00000000 0.00000000 9812023.00000000 -0.29903601 +33.05000000 0.00000000 9812023.00000000 -0.29852770 +33.10000000 0.00000000 9812023.00000000 -0.29801120 +33.15000000 0.00000000 9812023.00000000 -0.29748653 +33.20000000 0.00000000 9812023.00000000 -0.29695371 +33.25000000 0.00000000 9812023.00000000 -0.29641275 +33.30000000 0.00000000 9812023.00000000 -0.29586366 +33.35000000 0.00000000 9812023.00000000 -0.29530646 +33.40000000 0.00000000 9812023.00000000 -0.29474116 +33.45000000 0.00000000 9812023.00000000 -0.29416779 +33.50000000 0.00000000 9812023.00000000 -0.29358635 +33.55000000 0.00000000 9812023.00000000 -0.29299686 +33.60000000 0.00000000 9812023.00000000 -0.29239933 +33.65000000 0.00000000 9812023.00000000 -0.29179379 +33.70000000 0.00000000 9812023.00000000 -0.29118025 +33.75000000 0.00000000 9812023.00000000 -0.29055873 +33.80000000 0.00000000 9812023.00000000 -0.28992925 +33.85000000 0.00000000 9812023.00000000 -0.28929181 +33.90000000 0.00000000 9812023.00000000 -0.28864644 +33.95000000 0.00000000 9812023.00000000 -0.28799316 +34.00000000 0.00000000 9812023.00000000 -0.28733199 +34.05000000 0.00000000 9812023.00000000 -0.28666293 +34.10000000 0.00000000 9812023.00000000 -0.28598602 +34.15000000 0.00000000 9812023.00000000 -0.28530127 +34.20000000 0.00000000 9812023.00000000 -0.28460869 +34.25000000 0.00000000 9812023.00000000 -0.28390831 +34.30000000 0.00000000 9812023.00000000 -0.28320015 +34.35000000 0.00000000 9812023.00000000 -0.28248423 +34.40000000 0.00000000 9812023.00000000 -0.28176056 +34.45000000 0.00000000 9812023.00000000 -0.28102917 +34.50000000 0.00000000 9812023.00000000 -0.28029007 +34.55000000 0.00000000 9812023.00000000 -0.27954328 +34.60000000 0.00000000 9812023.00000000 -0.27878884 +34.65000000 0.00000000 9812023.00000000 -0.27802675 +34.70000000 0.00000000 9812023.00000000 -0.27725704 +34.75000000 0.00000000 9812023.00000000 -0.27647972 +34.80000000 0.00000000 9812023.00000000 -0.27569483 +34.85000000 0.00000000 9812023.00000000 -0.27490238 +34.90000000 0.00000000 9812023.00000000 -0.27410239 +34.95000000 0.00000000 9812023.00000000 -0.27329489 +35.00000000 0.00000000 9812023.00000000 -0.27247989 +35.05000000 0.00000000 9812023.00000000 -0.27165743 +35.10000000 0.00000000 9812023.00000000 -0.27082752 +35.15000000 0.00000000 9812023.00000000 -0.26999018 +35.20000000 0.00000000 9812023.00000000 -0.26914544 +35.25000000 0.00000000 9812023.00000000 -0.26829332 +35.30000000 0.00000000 9812023.00000000 -0.26743385 +35.35000000 0.00000000 9812023.00000000 -0.26656704 +35.40000000 0.00000000 9812023.00000000 -0.26569293 +35.45000000 0.00000000 9812023.00000000 -0.26481153 +35.50000000 0.00000000 9812023.00000000 -0.26392287 +35.55000000 0.00000000 9812023.00000000 -0.26302698 +35.60000000 0.00000000 9812023.00000000 -0.26212387 +35.65000000 0.00000000 9812023.00000000 -0.26121358 +35.70000000 0.00000000 9812023.00000000 -0.26029613 +35.75000000 0.00000000 9812023.00000000 -0.25937154 +35.80000000 0.00000000 9812023.00000000 -0.25843985 +35.85000000 0.00000000 9812023.00000000 -0.25750106 +35.90000000 0.00000000 9812023.00000000 -0.25655522 +35.95000000 0.00000000 9812023.00000000 -0.25560234 +36.00000000 0.00000000 9812023.00000000 -0.25464246 +36.05000000 0.00000000 9812023.00000000 -0.25367559 +36.10000000 0.00000000 9812023.00000000 -0.25270177 +36.15000000 0.00000000 9812023.00000000 -0.25172102 +36.20000000 0.00000000 9812023.00000000 -0.25073337 +36.25000000 0.00000000 9812023.00000000 -0.24973885 +36.30000000 0.00000000 9812023.00000000 -0.24873748 +36.35000000 0.00000000 9812023.00000000 -0.24772929 +36.40000000 0.00000000 9812023.00000000 -0.24671431 +36.45000000 0.00000000 9812023.00000000 -0.24569256 +36.50000000 0.00000000 9812023.00000000 -0.24466408 +36.55000000 0.00000000 9812023.00000000 -0.24362889 +36.60000000 0.00000000 9812023.00000000 -0.24258703 +36.65000000 0.00000000 9812023.00000000 -0.24153851 +36.70000000 0.00000000 9812023.00000000 -0.24048337 +36.75000000 0.00000000 9812023.00000000 -0.23942164 +36.80000000 0.00000000 9812023.00000000 -0.23835334 +36.85000000 0.00000000 9812023.00000000 -0.23727851 +36.90000000 0.00000000 9812023.00000000 -0.23619717 +36.95000000 0.00000000 9812023.00000000 -0.23510936 +37.00000000 0.00000000 9812023.00000000 -0.23401510 +37.05000000 0.00000000 9812023.00000000 -0.23291443 +37.10000000 0.00000000 9812023.00000000 -0.23180737 +37.15000000 0.00000000 9812023.00000000 -0.23069396 +37.20000000 0.00000000 9812023.00000000 -0.22957422 +37.25000000 0.00000000 9812023.00000000 -0.22844819 +37.30000000 0.00000000 9812023.00000000 -0.22731589 +37.35000000 0.00000000 9812023.00000000 -0.22617736 +37.40000000 0.00000000 9812023.00000000 -0.22503264 +37.45000000 0.00000000 9812023.00000000 -0.22388174 +37.50000000 0.00000000 9812023.00000000 -0.22272470 +37.55000000 0.00000000 9812023.00000000 -0.22156156 +37.60000000 0.00000000 9812023.00000000 -0.22039235 +37.65000000 0.00000000 9812023.00000000 -0.21921709 +37.70000000 0.00000000 9812023.00000000 -0.21803582 +37.75000000 0.00000000 9812023.00000000 -0.21684857 +37.80000000 0.00000000 9812023.00000000 -0.21565538 +37.85000000 0.00000000 9812023.00000000 -0.21445628 +37.90000000 0.00000000 9812023.00000000 -0.21325130 +37.95000000 0.00000000 9812023.00000000 -0.21204047 +38.00000000 0.00000000 9812023.00000000 -0.21082383 +38.05000000 0.00000000 9812023.00000000 -0.20960141 +38.10000000 0.00000000 9812023.00000000 -0.20837324 +38.15000000 0.00000000 9812023.00000000 -0.20713936 +38.20000000 0.00000000 9812023.00000000 -0.20589980 +38.25000000 0.00000000 9812023.00000000 -0.20465460 +38.30000000 0.00000000 9812023.00000000 -0.20340378 +38.35000000 0.00000000 9812023.00000000 -0.20214739 +38.40000000 0.00000000 9812023.00000000 -0.20088546 +38.45000000 0.00000000 9812023.00000000 -0.19961802 +38.50000000 0.00000000 9812023.00000000 -0.19834510 +38.55000000 0.00000000 9812023.00000000 -0.19706675 +38.60000000 0.00000000 9812023.00000000 -0.19578300 +38.65000000 0.00000000 9812023.00000000 -0.19449388 +38.70000000 0.00000000 9812023.00000000 -0.19319942 +38.75000000 0.00000000 9812023.00000000 -0.19189967 +38.80000000 0.00000000 9812023.00000000 -0.19059466 +38.85000000 0.00000000 9812023.00000000 -0.18928443 +38.90000000 0.00000000 9812023.00000000 -0.18796900 +38.95000000 0.00000000 9812023.00000000 -0.18664842 +39.00000000 0.00000000 9812023.00000000 -0.18532273 +39.05000000 0.00000000 9812023.00000000 -0.18399195 +39.10000000 0.00000000 9812023.00000000 -0.18265613 +39.15000000 0.00000000 9812023.00000000 -0.18131530 +39.20000000 0.00000000 9812023.00000000 -0.17996950 +39.25000000 0.00000000 9812023.00000000 -0.17861877 +39.30000000 0.00000000 9812023.00000000 -0.17726314 +39.35000000 0.00000000 9812023.00000000 -0.17590265 +39.40000000 0.00000000 9812023.00000000 -0.17453734 +39.45000000 0.00000000 9812023.00000000 -0.17316724 +39.50000000 0.00000000 9812023.00000000 -0.17179239 +39.55000000 0.00000000 9812023.00000000 -0.17041284 +39.60000000 0.00000000 9812023.00000000 -0.16902861 +39.65000000 0.00000000 9812023.00000000 -0.16763975 +39.70000000 0.00000000 9812023.00000000 -0.16624630 +39.75000000 0.00000000 9812023.00000000 -0.16484828 +39.80000000 0.00000000 9812023.00000000 -0.16344575 +39.85000000 0.00000000 9812023.00000000 -0.16203873 +39.90000000 0.00000000 9812023.00000000 -0.16062728 +39.95000000 0.00000000 9812023.00000000 -0.15921142 +40.00000000 0.00000000 9812023.00000000 -0.15779119 +40.05000000 0.00000041 9812023.00000000 -0.15636664 +40.10000000 0.00000163 9812023.00000000 -0.15493780 +40.15000000 0.00000367 9812023.00000000 -0.15350471 +40.20000000 0.00000653 9812023.00000000 -0.15206742 +40.25000000 0.00001019 9812023.00000000 -0.15062596 +40.30000000 0.00001466 9812023.00000000 -0.14918036 +40.35000000 0.00001993 9812023.00000000 -0.14773068 +40.40000000 0.00002602 9812023.00000000 -0.14627695 +40.45000000 0.00003290 9812023.00000000 -0.14481921 +40.50000000 0.00004058 9812023.00000000 -0.14335749 +40.55000000 0.00004906 9812023.00000000 -0.14189185 +40.60000000 0.00005834 9812023.00000000 -0.14042231 +40.65000000 0.00006841 9812023.00000000 -0.13894893 +40.70000000 0.00007927 9812023.00000000 -0.13747174 +40.75000000 0.00009092 9812023.00000000 -0.13599078 +40.80000000 0.00010336 9812023.00000000 -0.13450609 +40.85000000 0.00011659 9812023.00000000 -0.13301771 +40.90000000 0.00013060 9812023.00000000 -0.13152569 +40.95000000 0.00014539 9812023.00000000 -0.13003006 +41.00000000 0.00016096 9812023.00000000 -0.12853086 +41.05000000 0.00017731 9812023.00000000 -0.12702814 +41.10000000 0.00019443 9812023.00000000 -0.12552194 +41.15000000 0.00021233 9812023.00000000 -0.12401230 +41.20000000 0.00023100 9812023.00000000 -0.12249926 +41.25000000 0.00025043 9812023.00000000 -0.12098286 +41.30000000 0.00027064 9812023.00000000 -0.11946314 +41.35000000 0.00029161 9812023.00000000 -0.11794015 +41.40000000 0.00031334 9812023.00000000 -0.11641392 +41.45000000 0.00033584 9812023.00000000 -0.11488450 +41.50000000 0.00035909 9812023.00000000 -0.11335193 +41.55000000 0.00038310 9812023.00000000 -0.11181626 +41.60000000 0.00040787 9812023.00000000 -0.11027752 +41.65000000 0.00043338 9812023.00000000 -0.10873576 +41.70000000 0.00045965 9812023.00000000 -0.10719101 +41.75000000 0.00048667 9812023.00000000 -0.10564333 +41.80000000 0.00051444 9812023.00000000 -0.10409275 +41.85000000 0.00054295 9812023.00000000 -0.10253932 +41.90000000 0.00057220 9812023.00000000 -0.10098307 +41.95000000 0.00060219 9812023.00000000 -0.09942406 +42.00000000 0.00063292 9812023.00000000 -0.09786232 +42.05000000 0.00066439 9812023.00000000 -0.09629790 +42.10000000 0.00069660 9812023.00000000 -0.09473084 +42.15000000 0.00072953 9812023.00000000 -0.09316118 +42.20000000 0.00076320 9812023.00000000 -0.09158896 +42.25000000 0.00079759 9812023.00000000 -0.09001424 +42.30000000 0.00083271 9812023.00000000 -0.08843705 +42.35000000 0.00086856 9812023.00000000 -0.08685743 +42.40000000 0.00090513 9812023.00000000 -0.08527543 +42.45000000 0.00094241 9812023.00000000 -0.08369110 +42.50000000 0.00098042 9812023.00000000 -0.08210447 +42.55000000 0.00101914 9812023.00000000 -0.08051559 +42.60000000 0.00105858 9812023.00000000 -0.07892450 +42.65000000 0.00109873 9812023.00000000 -0.07733125 +42.70000000 0.00113958 9812023.00000000 -0.07573588 +42.75000000 0.00118115 9812023.00000000 -0.07413843 +42.80000000 0.00122342 9812023.00000000 -0.07253895 +42.85000000 0.00126640 9812023.00000000 -0.07093748 +42.90000000 0.00131008 9812023.00000000 -0.06933406 +42.95000000 0.00135445 9812023.00000000 -0.06772875 +43.00000000 0.00139953 9812023.00000000 -0.06612158 +43.05000000 0.00144530 9812023.00000000 -0.06451259 +43.10000000 0.00149176 9812023.00000000 -0.06290184 +43.15000000 0.00153892 9812023.00000000 -0.06128936 +43.20000000 0.00158676 9812023.00000000 -0.05967520 +43.25000000 0.00163530 9812023.00000000 -0.05805941 +43.30000000 0.00168452 9812023.00000000 -0.05644202 +43.35000000 0.00173442 9812023.00000000 -0.05482309 +43.40000000 0.00178500 9812023.00000000 -0.05320265 +43.45000000 0.00183626 9812023.00000000 -0.05158076 +43.50000000 0.00188820 9812023.00000000 -0.04995745 +43.55000000 0.00194082 9812023.00000000 -0.04833277 +43.60000000 0.00199411 9812023.00000000 -0.04670677 +43.65000000 0.00204807 9812023.00000000 -0.04507949 +43.70000000 0.00210269 9812023.00000000 -0.04345097 +43.75000000 0.00215799 9812023.00000000 -0.04182125 +43.80000000 0.00221395 9812023.00000000 -0.04019040 +43.85000000 0.00227057 9812023.00000000 -0.03855844 +43.90000000 0.00232786 9812023.00000000 -0.03692542 +43.95000000 0.00238580 9812023.00000000 -0.03529139 +44.00000000 0.00244440 9812023.00000000 -0.03365639 +44.05000000 0.00250365 9812023.00000000 -0.03202048 +44.10000000 0.00256356 9812023.00000000 -0.03038368 +44.15000000 0.00262412 9812023.00000000 -0.02874605 +44.20000000 0.00268533 9812023.00000000 -0.02710763 +44.25000000 0.00274718 9812023.00000000 -0.02546847 +44.30000000 0.00280968 9812023.00000000 -0.02382861 +44.35000000 0.00287282 9812023.00000000 -0.02218810 +44.40000000 0.00293660 9812023.00000000 -0.02054698 +44.45000000 0.00300102 9812023.00000000 -0.01890529 +44.50000000 0.00306607 9812023.00000000 -0.01726309 +44.55000000 0.00313176 9812023.00000000 -0.01562041 +44.60000000 0.00319808 9812023.00000000 -0.01397731 +44.65000000 0.00326503 9812023.00000000 -0.01233382 +44.70000000 0.00333261 9812023.00000000 -0.01069000 +44.75000000 0.00340082 9812023.00000000 -0.00904588 +44.80000000 0.00346965 9812023.00000000 -0.00740151 +44.85000000 0.00353910 9812023.00000000 -0.00575694 +44.90000000 0.00360918 9812023.00000000 -0.00411221 +44.95000000 0.00367987 9812023.00000000 -0.00246737 +45.00000000 0.00375117 9812023.00000000 -0.00082247 +45.05000000 0.00382309 9812023.00000000 0.00082247 +45.10000000 0.00389562 9812023.00000000 0.00246737 +45.15000000 0.00396876 9812023.00000000 0.00411221 +45.20000000 0.00404251 9812023.00000000 0.00575694 +45.25000000 0.00411687 9812023.00000000 0.00740151 +45.30000000 0.00419183 9812023.00000000 0.00904588 +45.35000000 0.00426739 9812023.00000000 0.01069000 +45.40000000 0.00434355 9812023.00000000 0.01233382 +45.45000000 0.00442030 9812023.00000000 0.01397731 +45.50000000 0.00449766 9812023.00000000 0.01562041 +45.55000000 0.00457560 9812023.00000000 0.01726309 +45.60000000 0.00465414 9812023.00000000 0.01890529 +45.65000000 0.00473326 9812023.00000000 0.02054698 +45.70000000 0.00481298 9812023.00000000 0.02218810 +45.75000000 0.00489328 9812023.00000000 0.02382861 +45.80000000 0.00497416 9812023.00000000 0.02546847 +45.85000000 0.00505562 9812023.00000000 0.02710763 +45.90000000 0.00513766 9812023.00000000 0.02874605 +45.95000000 0.00522028 9812023.00000000 0.03038368 +46.00000000 0.00530348 9812023.00000000 0.03202048 +46.05000000 0.00538724 9812023.00000000 0.03365639 +46.10000000 0.00547158 9812023.00000000 0.03529139 +46.15000000 0.00555649 9812023.00000000 0.03692542 +46.20000000 0.00564196 9812023.00000000 0.03855844 +46.25000000 0.00572800 9812023.00000000 0.04019040 +46.30000000 0.00581460 9812023.00000000 0.04182125 +46.35000000 0.00590176 9812023.00000000 0.04345097 +46.40000000 0.00598948 9812023.00000000 0.04507949 +46.45000000 0.00607775 9812023.00000000 0.04670677 +46.50000000 0.00616659 9812023.00000000 0.04833277 +46.55000000 0.00625597 9812023.00000000 0.04995745 +46.60000000 0.00634590 9812023.00000000 0.05158076 +46.65000000 0.00643638 9812023.00000000 0.05320265 +46.70000000 0.00652741 9812023.00000000 0.05482309 +46.75000000 0.00661899 9812023.00000000 0.05644202 +46.80000000 0.00671110 9812023.00000000 0.05805941 +46.85000000 0.00680376 9812023.00000000 0.05967520 +46.90000000 0.00689695 9812023.00000000 0.06128936 +46.95000000 0.00699068 9812023.00000000 0.06290184 +47.00000000 0.00708494 9812023.00000000 0.06451259 +47.05000000 0.00717974 9812023.00000000 0.06612158 +47.10000000 0.00727506 9812023.00000000 0.06772875 +47.15000000 0.00737091 9812023.00000000 0.06933406 +47.20000000 0.00746729 9812023.00000000 0.07093748 +47.25000000 0.00756420 9812023.00000000 0.07253895 +47.30000000 0.00766162 9812023.00000000 0.07413843 +47.35000000 0.00775956 9812023.00000000 0.07573588 +47.40000000 0.00785803 9812023.00000000 0.07733125 +47.45000000 0.00795700 9812023.00000000 0.07892450 +47.50000000 0.00805649 9812023.00000000 0.08051559 +47.55000000 0.00815650 9812023.00000000 0.08210447 +47.60000000 0.00825701 9812023.00000000 0.08369110 +47.65000000 0.00835803 9812023.00000000 0.08527543 +47.70000000 0.00845955 9812023.00000000 0.08685743 +47.75000000 0.00856158 9812023.00000000 0.08843705 +47.80000000 0.00866411 9812023.00000000 0.09001424 +47.85000000 0.00876714 9812023.00000000 0.09158896 +47.90000000 0.00887066 9812023.00000000 0.09316118 +47.95000000 0.00897469 9812023.00000000 0.09473084 +48.00000000 0.00907920 9812023.00000000 0.09629790 +48.05000000 0.00918421 9812023.00000000 0.09786232 +48.10000000 0.00928970 9812023.00000000 0.09942406 +48.15000000 0.00939568 9812023.00000000 0.10098307 +48.20000000 0.00950215 9812023.00000000 0.10253932 +48.25000000 0.00960910 9812023.00000000 0.10409275 +48.30000000 0.00971653 9812023.00000000 0.10564333 +48.35000000 0.00982443 9812023.00000000 0.10719101 +48.40000000 0.00993282 9812023.00000000 0.10873576 +48.45000000 0.01004168 9812023.00000000 0.11027752 +48.50000000 0.01015101 9812023.00000000 0.11181626 +48.55000000 0.01026082 9812023.00000000 0.11335193 +48.60000000 0.01037109 9812023.00000000 0.11488450 +48.65000000 0.01048183 9812023.00000000 0.11641392 +48.70000000 0.01059303 9812023.00000000 0.11794015 +48.75000000 0.01070469 9812023.00000000 0.11946314 +48.80000000 0.01081682 9812023.00000000 0.12098286 +48.85000000 0.01092940 9812023.00000000 0.12249926 +48.90000000 0.01104244 9812023.00000000 0.12401230 +48.95000000 0.01115594 9812023.00000000 0.12552194 +49.00000000 0.01126988 9812023.00000000 0.12702814 +49.05000000 0.01138428 9812023.00000000 0.12853086 +49.10000000 0.01149913 9812023.00000000 0.13003006 +49.15000000 0.01161442 9812023.00000000 0.13152569 +49.20000000 0.01173015 9812023.00000000 0.13301771 +49.25000000 0.01184633 9812023.00000000 0.13450609 +49.30000000 0.01196295 9812023.00000000 0.13599078 +49.35000000 0.01208000 9812023.00000000 0.13747174 +49.40000000 0.01219749 9812023.00000000 0.13894893 +49.45000000 0.01231541 9812023.00000000 0.14042231 +49.50000000 0.01243377 9812023.00000000 0.14189185 +49.55000000 0.01255256 9812023.00000000 0.14335749 +49.60000000 0.01267177 9812023.00000000 0.14481921 +49.65000000 0.01279141 9812023.00000000 0.14627695 +49.70000000 0.01291147 9812023.00000000 0.14773068 +49.75000000 0.01303195 9812023.00000000 0.14918036 +49.80000000 0.01315286 9812023.00000000 0.15062596 +49.85000000 0.01327418 9812023.00000000 0.15206742 +49.90000000 0.01339591 9812023.00000000 0.15350471 +49.95000000 0.01351806 9812023.00000000 0.15493780 +50.00000000 0.01364062 9812023.00000000 0.15636664 +50.05000000 0.01376359 9812023.00000000 0.15779119 +50.10000000 0.01388697 9812023.00000000 0.15921142 +50.15000000 0.01401075 9812023.00000000 0.16062728 +50.20000000 0.01413494 9812023.00000000 0.16203873 +50.25000000 0.01425953 9812023.00000000 0.16344575 +50.30000000 0.01438451 9812023.00000000 0.16484828 +50.35000000 0.01450989 9812023.00000000 0.16624630 +50.40000000 0.01463567 9812023.00000000 0.16763975 +50.45000000 0.01476184 9812023.00000000 0.16902861 +50.50000000 0.01488840 9812023.00000000 0.17041284 +50.55000000 0.01501535 9812023.00000000 0.17179239 +50.60000000 0.01514269 9812023.00000000 0.17316724 +50.65000000 0.01527041 9812023.00000000 0.17453734 +50.70000000 0.01539851 9812023.00000000 0.17590265 +50.75000000 0.01552700 9812023.00000000 0.17726314 +50.80000000 0.01565586 9812023.00000000 0.17861877 +50.85000000 0.01578510 9812023.00000000 0.17996950 +50.90000000 0.01591471 9812023.00000000 0.18131530 +50.95000000 0.01604470 9812023.00000000 0.18265613 +51.00000000 0.01617505 9812023.00000000 0.18399195 +51.05000000 0.01630578 9812023.00000000 0.18532273 +51.10000000 0.01643687 9812023.00000000 0.18664842 +51.15000000 0.01656832 9812023.00000000 0.18796900 +51.20000000 0.01670014 9812023.00000000 0.18928443 +51.25000000 0.01683232 9812023.00000000 0.19059466 +51.30000000 0.01696485 9812023.00000000 0.19189967 +51.35000000 0.01709774 9812023.00000000 0.19319942 +51.40000000 0.01723099 9812023.00000000 0.19449388 +51.45000000 0.01736459 9812023.00000000 0.19578300 +51.50000000 0.01749853 9812023.00000000 0.19706675 +51.55000000 0.01763283 9812023.00000000 0.19834510 +51.60000000 0.01776747 9812023.00000000 0.19961802 +51.65000000 0.01790246 9812023.00000000 0.20088546 +51.70000000 0.01803778 9812023.00000000 0.20214739 +51.75000000 0.01817345 9812023.00000000 0.20340378 +51.80000000 0.01830945 9812023.00000000 0.20465460 +51.85000000 0.01844579 9812023.00000000 0.20589980 +51.90000000 0.01858246 9812023.00000000 0.20713936 +51.95000000 0.01871947 9812023.00000000 0.20837324 +52.00000000 0.01885680 9812023.00000000 0.20960141 +52.05000000 0.01899446 9812023.00000000 0.21082383 +52.10000000 0.01913245 9812023.00000000 0.21204047 +52.15000000 0.01927076 9812023.00000000 0.21325130 +52.20000000 0.01940939 9812023.00000000 0.21445628 +52.25000000 0.01954834 9812023.00000000 0.21565538 +52.30000000 0.01968760 9812023.00000000 0.21684857 +52.35000000 0.01982719 9812023.00000000 0.21803582 +52.40000000 0.01996708 9812023.00000000 0.21921709 +52.45000000 0.02010729 9812023.00000000 0.22039235 +52.50000000 0.02024780 9812023.00000000 0.22156156 +52.55000000 0.02038862 9812023.00000000 0.22272470 +52.60000000 0.02052975 9812023.00000000 0.22388174 +52.65000000 0.02067118 9812023.00000000 0.22503264 +52.70000000 0.02081291 9812023.00000000 0.22617736 +52.75000000 0.02095494 9812023.00000000 0.22731589 +52.80000000 0.02109727 9812023.00000000 0.22844819 +52.85000000 0.02123989 9812023.00000000 0.22957422 +52.90000000 0.02138280 9812023.00000000 0.23069396 +52.95000000 0.02152600 9812023.00000000 0.23180737 +53.00000000 0.02166950 9812023.00000000 0.23291443 +53.05000000 0.02181328 9812023.00000000 0.23401510 +53.10000000 0.02195734 9812023.00000000 0.23510936 +53.15000000 0.02210168 9812023.00000000 0.23619717 +53.20000000 0.02224631 9812023.00000000 0.23727851 +53.25000000 0.02239121 9812023.00000000 0.23835334 +53.30000000 0.02253639 9812023.00000000 0.23942164 +53.35000000 0.02268185 9812023.00000000 0.24048337 +53.40000000 0.02282758 9812023.00000000 0.24153851 +53.45000000 0.02297357 9812023.00000000 0.24258703 +53.50000000 0.02311984 9812023.00000000 0.24362889 +53.55000000 0.02326637 9812023.00000000 0.24466408 +53.60000000 0.02341316 9812023.00000000 0.24569256 +53.65000000 0.02356022 9812023.00000000 0.24671431 +53.70000000 0.02370753 9812023.00000000 0.24772929 +53.75000000 0.02385511 9812023.00000000 0.24873748 +53.80000000 0.02400294 9812023.00000000 0.24973885 +53.85000000 0.02415102 9812023.00000000 0.25073337 +53.90000000 0.02429936 9812023.00000000 0.25172102 +53.95000000 0.02444794 9812023.00000000 0.25270177 +54.00000000 0.02459677 9812023.00000000 0.25367559 +54.05000000 0.02474585 9812023.00000000 0.25464246 +54.10000000 0.02489517 9812023.00000000 0.25560234 +54.15000000 0.02504474 9812023.00000000 0.25655522 +54.20000000 0.02519454 9812023.00000000 0.25750106 +54.25000000 0.02534458 9812023.00000000 0.25843985 +54.30000000 0.02549485 9812023.00000000 0.25937154 +54.35000000 0.02564536 9812023.00000000 0.26029613 +54.40000000 0.02579610 9812023.00000000 0.26121358 +54.45000000 0.02594707 9812023.00000000 0.26212387 +54.50000000 0.02609827 9812023.00000000 0.26302698 +54.55000000 0.02624969 9812023.00000000 0.26392287 +54.60000000 0.02640133 9812023.00000000 0.26481153 +54.65000000 0.02655320 9812023.00000000 0.26569293 +54.70000000 0.02670528 9812023.00000000 0.26656704 +54.75000000 0.02685758 9812023.00000000 0.26743385 +54.80000000 0.02701010 9812023.00000000 0.26829332 +54.85000000 0.02716282 9812023.00000000 0.26914544 +54.90000000 0.02731576 9812023.00000000 0.26999018 +54.95000000 0.02746891 9812023.00000000 0.27082752 +55.00000000 0.02762227 9812023.00000000 0.27165743 +55.05000000 0.02777582 9812023.00000000 0.27247989 +55.10000000 0.02792959 9812023.00000000 0.27329489 +55.15000000 0.02808355 9812023.00000000 0.27410239 +55.20000000 0.02823771 9812023.00000000 0.27490238 +55.25000000 0.02839207 9812023.00000000 0.27569483 +55.30000000 0.02854662 9812023.00000000 0.27647972 +55.35000000 0.02870136 9812023.00000000 0.27725704 +55.40000000 0.02885629 9812023.00000000 0.27802675 +55.45000000 0.02901142 9812023.00000000 0.27878884 +55.50000000 0.02916673 9812023.00000000 0.27954328 +55.55000000 0.02932222 9812023.00000000 0.28029007 +55.60000000 0.02947789 9812023.00000000 0.28102917 +55.65000000 0.02963375 9812023.00000000 0.28176056 +55.70000000 0.02978978 9812023.00000000 0.28248423 +55.75000000 0.02994599 9812023.00000000 0.28320015 +55.80000000 0.03010237 9812023.00000000 0.28390831 +55.85000000 0.03025893 9812023.00000000 0.28460869 +55.90000000 0.03041565 9812023.00000000 0.28530127 +55.95000000 0.03057254 9812023.00000000 0.28598602 +56.00000000 0.03072960 9812023.00000000 0.28666293 +56.05000000 0.03088682 9812023.00000000 0.28733199 +56.10000000 0.03104420 9812023.00000000 0.28799316 +56.15000000 0.03120175 9812023.00000000 0.28864644 +56.20000000 0.03135945 9812023.00000000 0.28929181 +56.25000000 0.03151730 9812023.00000000 0.28992925 +56.30000000 0.03167531 9812023.00000000 0.29055873 +56.35000000 0.03183347 9812023.00000000 0.29118025 +56.40000000 0.03199178 9812023.00000000 0.29179379 +56.45000000 0.03215024 9812023.00000000 0.29239933 +56.50000000 0.03230884 9812023.00000000 0.29299686 +56.55000000 0.03246759 9812023.00000000 0.29358635 +56.60000000 0.03262648 9812023.00000000 0.29416779 +56.65000000 0.03278550 9812023.00000000 0.29474116 +56.70000000 0.03294467 9812023.00000000 0.29530646 +56.75000000 0.03310396 9812023.00000000 0.29586366 +56.80000000 0.03326340 9812023.00000000 0.29641275 +56.85000000 0.03342296 9812023.00000000 0.29695371 +56.90000000 0.03358265 9812023.00000000 0.29748653 +56.95000000 0.03374247 9812023.00000000 0.29801120 +57.00000000 0.03390241 9812023.00000000 0.29852770 +57.05000000 0.03406247 9812023.00000000 0.29903601 +57.10000000 0.03422266 9812023.00000000 0.29953612 +57.15000000 0.03438297 9812023.00000000 0.30002802 +57.20000000 0.03454339 9812023.00000000 0.30051170 +57.25000000 0.03470392 9812023.00000000 0.30098713 +57.30000000 0.03486457 9812023.00000000 0.30145432 +57.35000000 0.03502533 9812023.00000000 0.30191324 +57.40000000 0.03518620 9812023.00000000 0.30236388 +57.45000000 0.03534717 9812023.00000000 0.30280624 +57.50000000 0.03550825 9812023.00000000 0.30324029 +57.55000000 0.03566943 9812023.00000000 0.30366603 +57.60000000 0.03583071 9812023.00000000 0.30408345 +57.65000000 0.03599209 9812023.00000000 0.30449252 +57.70000000 0.03615357 9812023.00000000 0.30489325 +57.75000000 0.03631514 9812023.00000000 0.30528562 +57.80000000 0.03647680 9812023.00000000 0.30566962 +57.85000000 0.03663855 9812023.00000000 0.30604525 +57.90000000 0.03680039 9812023.00000000 0.30641248 +57.95000000 0.03696232 9812023.00000000 0.30677131 +58.00000000 0.03712433 9812023.00000000 0.30712173 +58.05000000 0.03728642 9812023.00000000 0.30746373 +58.10000000 0.03744859 9812023.00000000 0.30779730 +58.15000000 0.03761084 9812023.00000000 0.30812243 +58.20000000 0.03777316 9812023.00000000 0.30843912 +58.25000000 0.03793556 9812023.00000000 0.30874735 +58.30000000 0.03809803 9812023.00000000 0.30904711 +58.35000000 0.03826057 9812023.00000000 0.30933840 +58.40000000 0.03842317 9812023.00000000 0.30962121 +58.45000000 0.03858585 9812023.00000000 0.30989554 +58.50000000 0.03874858 9812023.00000000 0.31016136 +58.55000000 0.03891138 9812023.00000000 0.31041869 +58.60000000 0.03907424 9812023.00000000 0.31066750 +58.65000000 0.03923715 9812023.00000000 0.31090780 +58.70000000 0.03940012 9812023.00000000 0.31113957 +58.75000000 0.03956314 9812023.00000000 0.31136281 +58.80000000 0.03972621 9812023.00000000 0.31157752 +58.85000000 0.03988934 9812023.00000000 0.31178368 +58.90000000 0.04005251 9812023.00000000 0.31198130 +58.95000000 0.04021572 9812023.00000000 0.31217036 +59.00000000 0.04037898 9812023.00000000 0.31235087 +59.05000000 0.04054228 9812023.00000000 0.31252281 +59.10000000 0.04070561 9812023.00000000 0.31268619 +59.15000000 0.04086899 9812023.00000000 0.31284099 +59.20000000 0.04103240 9812023.00000000 0.31298721 +59.25000000 0.04119584 9812023.00000000 0.31312486 +59.30000000 0.04135931 9812023.00000000 0.31325392 +59.35000000 0.04152281 9812023.00000000 0.31337439 +59.40000000 0.04168634 9812023.00000000 0.31348627 +59.45000000 0.04184989 9812023.00000000 0.31358955 +59.50000000 0.04201347 9812023.00000000 0.31368424 +59.55000000 0.04217706 9812023.00000000 0.31377033 +59.60000000 0.04234067 9812023.00000000 0.31384782 +59.65000000 0.04250430 9812023.00000000 0.31391670 +59.70000000 0.04266795 9812023.00000000 0.31397698 +59.75000000 0.04283161 9812023.00000000 0.31402865 +59.80000000 0.04299527 9812023.00000000 0.31407171 +59.85000000 0.04315895 9812023.00000000 0.31410615 +59.90000000 0.04332263 9812023.00000000 0.31413199 +59.95000000 0.04348631 9812023.00000000 0.31414922 +60.00000000 0.04365000 9812023.00000000 0.31415783 +60.05000000 0.04381369 9812023.00000000 0.31415783 +60.10000000 0.04397737 9812023.00000000 0.31414922 +60.15000000 0.04414105 9812023.00000000 0.31413199 +60.20000000 0.04430473 9812023.00000000 0.31410615 +60.25000000 0.04446839 9812023.00000000 0.31407171 +60.30000000 0.04463205 9812023.00000000 0.31402865 +60.35000000 0.04479570 9812023.00000000 0.31397698 +60.40000000 0.04495933 9812023.00000000 0.31391670 +60.45000000 0.04512294 9812023.00000000 0.31384782 +60.50000000 0.04528653 9812023.00000000 0.31377033 +60.55000000 0.04545011 9812023.00000000 0.31368424 +60.60000000 0.04561366 9812023.00000000 0.31358955 +60.65000000 0.04577719 9812023.00000000 0.31348627 +60.70000000 0.04594069 9812023.00000000 0.31337439 +60.75000000 0.04610416 9812023.00000000 0.31325392 +60.80000000 0.04626760 9812023.00000000 0.31312486 +60.85000000 0.04643101 9812023.00000000 0.31298721 +60.90000000 0.04659439 9812023.00000000 0.31284099 +60.95000000 0.04675772 9812023.00000000 0.31268619 +61.00000000 0.04692102 9812023.00000000 0.31252281 +61.05000000 0.04708428 9812023.00000000 0.31235087 +61.10000000 0.04724749 9812023.00000000 0.31217036 +61.15000000 0.04741066 9812023.00000000 0.31198130 +61.20000000 0.04757379 9812023.00000000 0.31178368 +61.25000000 0.04773686 9812023.00000000 0.31157752 +61.30000000 0.04789988 9812023.00000000 0.31136281 +61.35000000 0.04806285 9812023.00000000 0.31113957 +61.40000000 0.04822576 9812023.00000000 0.31090780 +61.45000000 0.04838862 9812023.00000000 0.31066750 +61.50000000 0.04855142 9812023.00000000 0.31041869 +61.55000000 0.04871415 9812023.00000000 0.31016136 +61.60000000 0.04887683 9812023.00000000 0.30989554 +61.65000000 0.04903943 9812023.00000000 0.30962121 +61.70000000 0.04920197 9812023.00000000 0.30933840 +61.75000000 0.04936444 9812023.00000000 0.30904711 +61.80000000 0.04952684 9812023.00000000 0.30874735 +61.85000000 0.04968916 9812023.00000000 0.30843912 +61.90000000 0.04985141 9812023.00000000 0.30812243 +61.95000000 0.05001358 9812023.00000000 0.30779730 +62.00000000 0.05017568 9812023.00000000 0.30746373 +62.05000000 0.05033768 9812023.00000000 0.30712173 +62.10000000 0.05049961 9812023.00000000 0.30677131 +62.15000000 0.05066145 9812023.00000000 0.30641248 +62.20000000 0.05082320 9812023.00000000 0.30604525 +62.25000000 0.05098486 9812023.00000000 0.30566962 +62.30000000 0.05114643 9812023.00000000 0.30528562 +62.35000000 0.05130791 9812023.00000000 0.30489325 +62.40000000 0.05146929 9812023.00000000 0.30449252 +62.45000000 0.05163057 9812023.00000000 0.30408345 +62.50000000 0.05179175 9812023.00000000 0.30366603 +62.55000000 0.05195283 9812023.00000000 0.30324029 +62.60000000 0.05211380 9812023.00000000 0.30280624 +62.65000000 0.05227467 9812023.00000000 0.30236388 +62.70000000 0.05243543 9812023.00000000 0.30191324 +62.75000000 0.05259608 9812023.00000000 0.30145432 +62.80000000 0.05275661 9812023.00000000 0.30098713 +62.85000000 0.05291703 9812023.00000000 0.30051170 +62.90000000 0.05307734 9812023.00000000 0.30002802 +62.95000000 0.05323753 9812023.00000000 0.29953612 +63.00000000 0.05339759 9812023.00000000 0.29903601 +63.05000000 0.05355753 9812023.00000000 0.29852770 +63.10000000 0.05371735 9812023.00000000 0.29801120 +63.15000000 0.05387704 9812023.00000000 0.29748653 +63.20000000 0.05403660 9812023.00000000 0.29695371 +63.25000000 0.05419604 9812023.00000000 0.29641275 +63.30000000 0.05435533 9812023.00000000 0.29586366 +63.35000000 0.05451450 9812023.00000000 0.29530646 +63.40000000 0.05467352 9812023.00000000 0.29474116 +63.45000000 0.05483241 9812023.00000000 0.29416779 +63.50000000 0.05499116 9812023.00000000 0.29358635 +63.55000000 0.05514976 9812023.00000000 0.29299686 +63.60000000 0.05530822 9812023.00000000 0.29239933 +63.65000000 0.05546653 9812023.00000000 0.29179379 +63.70000000 0.05562469 9812023.00000000 0.29118025 +63.75000000 0.05578270 9812023.00000000 0.29055873 +63.80000000 0.05594055 9812023.00000000 0.28992925 +63.85000000 0.05609825 9812023.00000000 0.28929181 +63.90000000 0.05625580 9812023.00000000 0.28864644 +63.95000000 0.05641318 9812023.00000000 0.28799316 +64.00000000 0.05657040 9812023.00000000 0.28733199 +64.05000000 0.05672746 9812023.00000000 0.28666293 +64.10000000 0.05688435 9812023.00000000 0.28598602 +64.15000000 0.05704107 9812023.00000000 0.28530127 +64.20000000 0.05719763 9812023.00000000 0.28460869 +64.25000000 0.05735401 9812023.00000000 0.28390831 +64.30000000 0.05751022 9812023.00000000 0.28320015 +64.35000000 0.05766625 9812023.00000000 0.28248423 +64.40000000 0.05782211 9812023.00000000 0.28176056 +64.45000000 0.05797778 9812023.00000000 0.28102917 +64.50000000 0.05813327 9812023.00000000 0.28029007 +64.55000000 0.05828858 9812023.00000000 0.27954328 +64.60000000 0.05844371 9812023.00000000 0.27878884 +64.65000000 0.05859864 9812023.00000000 0.27802675 +64.70000000 0.05875338 9812023.00000000 0.27725704 +64.75000000 0.05890793 9812023.00000000 0.27647972 +64.80000000 0.05906229 9812023.00000000 0.27569483 +64.85000000 0.05921645 9812023.00000000 0.27490238 +64.90000000 0.05937041 9812023.00000000 0.27410239 +64.95000000 0.05952418 9812023.00000000 0.27329489 +65.00000000 0.05967773 9812023.00000000 0.27247989 +65.05000000 0.05983109 9812023.00000000 0.27165743 +65.10000000 0.05998424 9812023.00000000 0.27082752 +65.15000000 0.06013718 9812023.00000000 0.26999018 +65.20000000 0.06028990 9812023.00000000 0.26914544 +65.25000000 0.06044242 9812023.00000000 0.26829332 +65.30000000 0.06059472 9812023.00000000 0.26743385 +65.35000000 0.06074680 9812023.00000000 0.26656704 +65.40000000 0.06089867 9812023.00000000 0.26569293 +65.45000000 0.06105031 9812023.00000000 0.26481153 +65.50000000 0.06120173 9812023.00000000 0.26392287 +65.55000000 0.06135293 9812023.00000000 0.26302698 +65.60000000 0.06150390 9812023.00000000 0.26212387 +65.65000000 0.06165464 9812023.00000000 0.26121358 +65.70000000 0.06180515 9812023.00000000 0.26029613 +65.75000000 0.06195542 9812023.00000000 0.25937154 +65.80000000 0.06210546 9812023.00000000 0.25843985 +65.85000000 0.06225526 9812023.00000000 0.25750106 +65.90000000 0.06240483 9812023.00000000 0.25655522 +65.95000000 0.06255415 9812023.00000000 0.25560234 +66.00000000 0.06270322 9812023.00000000 0.25464246 +66.05000000 0.06285206 9812023.00000000 0.25367559 +66.10000000 0.06300064 9812023.00000000 0.25270177 +66.15000000 0.06314898 9812023.00000000 0.25172102 +66.20000000 0.06329706 9812023.00000000 0.25073337 +66.25000000 0.06344489 9812023.00000000 0.24973885 +66.30000000 0.06359247 9812023.00000000 0.24873748 +66.35000000 0.06373978 9812023.00000000 0.24772929 +66.40000000 0.06388684 9812023.00000000 0.24671431 +66.45000000 0.06403363 9812023.00000000 0.24569256 +66.50000000 0.06418016 9812023.00000000 0.24466408 +66.55000000 0.06432643 9812023.00000000 0.24362889 +66.60000000 0.06447242 9812023.00000000 0.24258703 +66.65000000 0.06461815 9812023.00000000 0.24153851 +66.70000000 0.06476361 9812023.00000000 0.24048337 +66.75000000 0.06490879 9812023.00000000 0.23942164 +66.80000000 0.06505369 9812023.00000000 0.23835334 +66.85000000 0.06519832 9812023.00000000 0.23727851 +66.90000000 0.06534266 9812023.00000000 0.23619717 +66.95000000 0.06548672 9812023.00000000 0.23510936 +67.00000000 0.06563050 9812023.00000000 0.23401510 +67.05000000 0.06577400 9812023.00000000 0.23291443 +67.10000000 0.06591720 9812023.00000000 0.23180737 +67.15000000 0.06606011 9812023.00000000 0.23069396 +67.20000000 0.06620273 9812023.00000000 0.22957422 +67.25000000 0.06634506 9812023.00000000 0.22844819 +67.30000000 0.06648709 9812023.00000000 0.22731589 +67.35000000 0.06662882 9812023.00000000 0.22617736 +67.40000000 0.06677025 9812023.00000000 0.22503264 +67.45000000 0.06691138 9812023.00000000 0.22388174 +67.50000000 0.06705220 9812023.00000000 0.22272470 +67.55000000 0.06719271 9812023.00000000 0.22156156 +67.60000000 0.06733292 9812023.00000000 0.22039235 +67.65000000 0.06747281 9812023.00000000 0.21921709 +67.70000000 0.06761240 9812023.00000000 0.21803582 +67.75000000 0.06775166 9812023.00000000 0.21684857 +67.80000000 0.06789061 9812023.00000000 0.21565538 +67.85000000 0.06802924 9812023.00000000 0.21445628 +67.90000000 0.06816755 9812023.00000000 0.21325130 +67.95000000 0.06830554 9812023.00000000 0.21204047 +68.00000000 0.06844320 9812023.00000000 0.21082383 +68.05000000 0.06858053 9812023.00000000 0.20960141 +68.10000000 0.06871754 9812023.00000000 0.20837324 +68.15000000 0.06885421 9812023.00000000 0.20713936 +68.20000000 0.06899055 9812023.00000000 0.20589980 +68.25000000 0.06912655 9812023.00000000 0.20465460 +68.30000000 0.06926222 9812023.00000000 0.20340378 +68.35000000 0.06939754 9812023.00000000 0.20214739 +68.40000000 0.06953253 9812023.00000000 0.20088546 +68.45000000 0.06966717 9812023.00000000 0.19961802 +68.50000000 0.06980147 9812023.00000000 0.19834510 +68.55000000 0.06993541 9812023.00000000 0.19706675 +68.60000000 0.07006901 9812023.00000000 0.19578300 +68.65000000 0.07020226 9812023.00000000 0.19449388 +68.70000000 0.07033515 9812023.00000000 0.19319942 +68.75000000 0.07046768 9812023.00000000 0.19189967 +68.80000000 0.07059986 9812023.00000000 0.19059466 +68.85000000 0.07073168 9812023.00000000 0.18928443 +68.90000000 0.07086313 9812023.00000000 0.18796900 +68.95000000 0.07099422 9812023.00000000 0.18664842 +69.00000000 0.07112495 9812023.00000000 0.18532273 +69.05000000 0.07125530 9812023.00000000 0.18399195 +69.10000000 0.07138529 9812023.00000000 0.18265613 +69.15000000 0.07151490 9812023.00000000 0.18131530 +69.20000000 0.07164414 9812023.00000000 0.17996950 +69.25000000 0.07177300 9812023.00000000 0.17861877 +69.30000000 0.07190149 9812023.00000000 0.17726314 +69.35000000 0.07202959 9812023.00000000 0.17590265 +69.40000000 0.07215731 9812023.00000000 0.17453734 +69.45000000 0.07228465 9812023.00000000 0.17316724 +69.50000000 0.07241160 9812023.00000000 0.17179239 +69.55000000 0.07253816 9812023.00000000 0.17041284 +69.60000000 0.07266433 9812023.00000000 0.16902861 +69.65000000 0.07279011 9812023.00000000 0.16763975 +69.70000000 0.07291549 9812023.00000000 0.16624630 +69.75000000 0.07304047 9812023.00000000 0.16484828 +69.80000000 0.07316506 9812023.00000000 0.16344575 +69.85000000 0.07328925 9812023.00000000 0.16203873 +69.90000000 0.07341303 9812023.00000000 0.16062728 +69.95000000 0.07353641 9812023.00000000 0.15921142 +70.00000000 0.07365937 9812023.00000000 0.15779119 +70.05000000 0.07378194 9812023.00000000 0.15636664 +70.10000000 0.07390409 9812023.00000000 0.15493780 +70.15000000 0.07402582 9812023.00000000 0.15350471 +70.20000000 0.07414714 9812023.00000000 0.15206742 +70.25000000 0.07426805 9812023.00000000 0.15062596 +70.30000000 0.07438853 9812023.00000000 0.14918036 +70.35000000 0.07450859 9812023.00000000 0.14773068 +70.40000000 0.07462823 9812023.00000000 0.14627695 +70.45000000 0.07474744 9812023.00000000 0.14481921 +70.50000000 0.07486623 9812023.00000000 0.14335749 +70.55000000 0.07498459 9812023.00000000 0.14189185 +70.60000000 0.07510251 9812023.00000000 0.14042231 +70.65000000 0.07522000 9812023.00000000 0.13894893 +70.70000000 0.07533705 9812023.00000000 0.13747174 +70.75000000 0.07545367 9812023.00000000 0.13599078 +70.80000000 0.07556985 9812023.00000000 0.13450609 +70.85000000 0.07568558 9812023.00000000 0.13301771 +70.90000000 0.07580087 9812023.00000000 0.13152569 +70.95000000 0.07591572 9812023.00000000 0.13003006 +71.00000000 0.07603012 9812023.00000000 0.12853086 +71.05000000 0.07614406 9812023.00000000 0.12702814 +71.10000000 0.07625756 9812023.00000000 0.12552194 +71.15000000 0.07637060 9812023.00000000 0.12401230 +71.20000000 0.07648318 9812023.00000000 0.12249926 +71.25000000 0.07659531 9812023.00000000 0.12098286 +71.30000000 0.07670697 9812023.00000000 0.11946314 +71.35000000 0.07681817 9812023.00000000 0.11794015 +71.40000000 0.07692891 9812023.00000000 0.11641392 +71.45000000 0.07703918 9812023.00000000 0.11488450 +71.50000000 0.07714899 9812023.00000000 0.11335193 +71.55000000 0.07725832 9812023.00000000 0.11181626 +71.60000000 0.07736718 9812023.00000000 0.11027752 +71.65000000 0.07747557 9812023.00000000 0.10873576 +71.70000000 0.07758347 9812023.00000000 0.10719101 +71.75000000 0.07769090 9812023.00000000 0.10564333 +71.80000000 0.07779785 9812023.00000000 0.10409275 +71.85000000 0.07790432 9812023.00000000 0.10253932 +71.90000000 0.07801030 9812023.00000000 0.10098307 +71.95000000 0.07811579 9812023.00000000 0.09942406 +72.00000000 0.07822080 9812023.00000000 0.09786232 +72.05000000 0.07832531 9812023.00000000 0.09629790 +72.10000000 0.07842934 9812023.00000000 0.09473084 +72.15000000 0.07853286 9812023.00000000 0.09316118 +72.20000000 0.07863589 9812023.00000000 0.09158896 +72.25000000 0.07873842 9812023.00000000 0.09001424 +72.30000000 0.07884045 9812023.00000000 0.08843705 +72.35000000 0.07894197 9812023.00000000 0.08685743 +72.40000000 0.07904299 9812023.00000000 0.08527543 +72.45000000 0.07914350 9812023.00000000 0.08369110 +72.50000000 0.07924351 9812023.00000000 0.08210447 +72.55000000 0.07934300 9812023.00000000 0.08051559 +72.60000000 0.07944197 9812023.00000000 0.07892450 +72.65000000 0.07954044 9812023.00000000 0.07733125 +72.70000000 0.07963838 9812023.00000000 0.07573588 +72.75000000 0.07973580 9812023.00000000 0.07413843 +72.80000000 0.07983271 9812023.00000000 0.07253895 +72.85000000 0.07992909 9812023.00000000 0.07093748 +72.90000000 0.08002494 9812023.00000000 0.06933406 +72.95000000 0.08012026 9812023.00000000 0.06772875 +73.00000000 0.08021506 9812023.00000000 0.06612158 +73.05000000 0.08030932 9812023.00000000 0.06451259 +73.10000000 0.08040305 9812023.00000000 0.06290184 +73.15000000 0.08049624 9812023.00000000 0.06128936 +73.20000000 0.08058890 9812023.00000000 0.05967520 +73.25000000 0.08068101 9812023.00000000 0.05805941 +73.30000000 0.08077259 9812023.00000000 0.05644202 +73.35000000 0.08086362 9812023.00000000 0.05482309 +73.40000000 0.08095410 9812023.00000000 0.05320265 +73.45000000 0.08104403 9812023.00000000 0.05158076 +73.50000000 0.08113341 9812023.00000000 0.04995745 +73.55000000 0.08122225 9812023.00000000 0.04833277 +73.60000000 0.08131052 9812023.00000000 0.04670677 +73.65000000 0.08139824 9812023.00000000 0.04507949 +73.70000000 0.08148540 9812023.00000000 0.04345097 +73.75000000 0.08157200 9812023.00000000 0.04182125 +73.80000000 0.08165804 9812023.00000000 0.04019040 +73.85000000 0.08174351 9812023.00000000 0.03855844 +73.90000000 0.08182842 9812023.00000000 0.03692542 +73.95000000 0.08191276 9812023.00000000 0.03529139 +74.00000000 0.08199652 9812023.00000000 0.03365639 +74.05000000 0.08207972 9812023.00000000 0.03202048 +74.10000000 0.08216234 9812023.00000000 0.03038368 +74.15000000 0.08224438 9812023.00000000 0.02874605 +74.20000000 0.08232584 9812023.00000000 0.02710763 +74.25000000 0.08240672 9812023.00000000 0.02546847 +74.30000000 0.08248702 9812023.00000000 0.02382861 +74.35000000 0.08256674 9812023.00000000 0.02218810 +74.40000000 0.08264586 9812023.00000000 0.02054698 +74.45000000 0.08272440 9812023.00000000 0.01890529 +74.50000000 0.08280234 9812023.00000000 0.01726309 +74.55000000 0.08287970 9812023.00000000 0.01562041 +74.60000000 0.08295645 9812023.00000000 0.01397731 +74.65000000 0.08303261 9812023.00000000 0.01233382 +74.70000000 0.08310817 9812023.00000000 0.01069000 +74.75000000 0.08318313 9812023.00000000 0.00904588 +74.80000000 0.08325749 9812023.00000000 0.00740151 +74.85000000 0.08333124 9812023.00000000 0.00575694 +74.90000000 0.08340438 9812023.00000000 0.00411221 +74.95000000 0.08347691 9812023.00000000 0.00246737 +75.00000000 0.08354883 9812023.00000000 0.00082247 +75.05000000 0.08362013 9812023.00000000 -0.00082247 +75.10000000 0.08369082 9812023.00000000 -0.00246737 +75.15000000 0.08376090 9812023.00000000 -0.00411221 +75.20000000 0.08383035 9812023.00000000 -0.00575694 +75.25000000 0.08389918 9812023.00000000 -0.00740151 +75.30000000 0.08396739 9812023.00000000 -0.00904588 +75.35000000 0.08403497 9812023.00000000 -0.01069000 +75.40000000 0.08410192 9812023.00000000 -0.01233382 +75.45000000 0.08416824 9812023.00000000 -0.01397731 +75.50000000 0.08423393 9812023.00000000 -0.01562041 +75.55000000 0.08429898 9812023.00000000 -0.01726309 +75.60000000 0.08436340 9812023.00000000 -0.01890529 +75.65000000 0.08442718 9812023.00000000 -0.02054698 +75.70000000 0.08449032 9812023.00000000 -0.02218810 +75.75000000 0.08455282 9812023.00000000 -0.02382861 +75.80000000 0.08461467 9812023.00000000 -0.02546847 +75.85000000 0.08467588 9812023.00000000 -0.02710763 +75.90000000 0.08473644 9812023.00000000 -0.02874605 +75.95000000 0.08479635 9812023.00000000 -0.03038368 +76.00000000 0.08485560 9812023.00000000 -0.03202048 +76.05000000 0.08491420 9812023.00000000 -0.03365639 +76.10000000 0.08497214 9812023.00000000 -0.03529139 +76.15000000 0.08502943 9812023.00000000 -0.03692542 +76.20000000 0.08508605 9812023.00000000 -0.03855844 +76.25000000 0.08514201 9812023.00000000 -0.04019040 +76.30000000 0.08519731 9812023.00000000 -0.04182125 +76.35000000 0.08525193 9812023.00000000 -0.04345097 +76.40000000 0.08530589 9812023.00000000 -0.04507949 +76.45000000 0.08535918 9812023.00000000 -0.04670677 +76.50000000 0.08541180 9812023.00000000 -0.04833277 +76.55000000 0.08546374 9812023.00000000 -0.04995745 +76.60000000 0.08551500 9812023.00000000 -0.05158076 +76.65000000 0.08556558 9812023.00000000 -0.05320265 +76.70000000 0.08561548 9812023.00000000 -0.05482309 +76.75000000 0.08566470 9812023.00000000 -0.05644202 +76.80000000 0.08571324 9812023.00000000 -0.05805941 +76.85000000 0.08576108 9812023.00000000 -0.05967520 +76.90000000 0.08580824 9812023.00000000 -0.06128936 +76.95000000 0.08585470 9812023.00000000 -0.06290184 +77.00000000 0.08590047 9812023.00000000 -0.06451259 +77.05000000 0.08594555 9812023.00000000 -0.06612158 +77.10000000 0.08598992 9812023.00000000 -0.06772875 +77.15000000 0.08603360 9812023.00000000 -0.06933406 +77.20000000 0.08607658 9812023.00000000 -0.07093748 +77.25000000 0.08611885 9812023.00000000 -0.07253895 +77.30000000 0.08616042 9812023.00000000 -0.07413843 +77.35000000 0.08620127 9812023.00000000 -0.07573588 +77.40000000 0.08624142 9812023.00000000 -0.07733125 +77.45000000 0.08628086 9812023.00000000 -0.07892450 +77.50000000 0.08631958 9812023.00000000 -0.08051559 +77.55000000 0.08635759 9812023.00000000 -0.08210447 +77.60000000 0.08639487 9812023.00000000 -0.08369110 +77.65000000 0.08643144 9812023.00000000 -0.08527543 +77.70000000 0.08646729 9812023.00000000 -0.08685743 +77.75000000 0.08650241 9812023.00000000 -0.08843705 +77.80000000 0.08653680 9812023.00000000 -0.09001424 +77.85000000 0.08657047 9812023.00000000 -0.09158896 +77.90000000 0.08660340 9812023.00000000 -0.09316118 +77.95000000 0.08663561 9812023.00000000 -0.09473084 +78.00000000 0.08666708 9812023.00000000 -0.09629790 +78.05000000 0.08669781 9812023.00000000 -0.09786232 +78.10000000 0.08672780 9812023.00000000 -0.09942406 +78.15000000 0.08675705 9812023.00000000 -0.10098307 +78.20000000 0.08678556 9812023.00000000 -0.10253932 +78.25000000 0.08681333 9812023.00000000 -0.10409275 +78.30000000 0.08684035 9812023.00000000 -0.10564333 +78.35000000 0.08686662 9812023.00000000 -0.10719101 +78.40000000 0.08689213 9812023.00000000 -0.10873576 +78.45000000 0.08691690 9812023.00000000 -0.11027752 +78.50000000 0.08694091 9812023.00000000 -0.11181626 +78.55000000 0.08696416 9812023.00000000 -0.11335193 +78.60000000 0.08698666 9812023.00000000 -0.11488450 +78.65000000 0.08700839 9812023.00000000 -0.11641392 +78.70000000 0.08702936 9812023.00000000 -0.11794015 +78.75000000 0.08704957 9812023.00000000 -0.11946314 +78.80000000 0.08706900 9812023.00000000 -0.12098286 +78.85000000 0.08708767 9812023.00000000 -0.12249926 +78.90000000 0.08710557 9812023.00000000 -0.12401230 +78.95000000 0.08712269 9812023.00000000 -0.12552194 +79.00000000 0.08713904 9812023.00000000 -0.12702814 +79.05000000 0.08715461 9812023.00000000 -0.12853086 +79.10000000 0.08716940 9812023.00000000 -0.13003006 +79.15000000 0.08718341 9812023.00000000 -0.13152569 +79.20000000 0.08719664 9812023.00000000 -0.13301771 +79.25000000 0.08720908 9812023.00000000 -0.13450609 +79.30000000 0.08722073 9812023.00000000 -0.13599078 +79.35000000 0.08723159 9812023.00000000 -0.13747174 +79.40000000 0.08724166 9812023.00000000 -0.13894893 +79.45000000 0.08725094 9812023.00000000 -0.14042231 +79.50000000 0.08725942 9812023.00000000 -0.14189185 +79.55000000 0.08726710 9812023.00000000 -0.14335749 +79.60000000 0.08727398 9812023.00000000 -0.14481921 +79.65000000 0.08728007 9812023.00000000 -0.14627695 +79.70000000 0.08728534 9812023.00000000 -0.14773068 +79.75000000 0.08728981 9812023.00000000 -0.14918036 +79.80000000 0.08729347 9812023.00000000 -0.15062596 +79.85000000 0.08729633 9812023.00000000 -0.15206742 +79.90000000 0.08729837 9812023.00000000 -0.15350471 +79.95000000 0.08729959 9812023.00000000 -0.15493780 +80.00000000 0.08730000 9812023.00000000 -0.15636664 +80.05000000 0.08730024 9812023.00000000 -0.15779119 +80.10000000 0.08730098 9812023.00000000 -0.15921142 +80.15000000 0.08730220 9812023.00000000 -0.16062728 +80.20000000 0.08730391 9812023.00000000 -0.16203873 +80.25000000 0.08730610 9812023.00000000 -0.16344575 +80.30000000 0.08730878 9812023.00000000 -0.16484828 +80.35000000 0.08731194 9812023.00000000 -0.16624630 +80.40000000 0.08731559 9812023.00000000 -0.16763975 +80.45000000 0.08731971 9812023.00000000 -0.16902861 +80.50000000 0.08732431 9812023.00000000 -0.17041284 +80.55000000 0.08732939 9812023.00000000 -0.17179239 +80.60000000 0.08733495 9812023.00000000 -0.17316724 +80.65000000 0.08734098 9812023.00000000 -0.17453734 +80.70000000 0.08734749 9812023.00000000 -0.17590265 +80.75000000 0.08735447 9812023.00000000 -0.17726314 +80.80000000 0.08736192 9812023.00000000 -0.17861877 +80.85000000 0.08736985 9812023.00000000 -0.17996950 +80.90000000 0.08737824 9812023.00000000 -0.18131530 +80.95000000 0.08738710 9812023.00000000 -0.18265613 +81.00000000 0.08739643 9812023.00000000 -0.18399195 +81.05000000 0.08740622 9812023.00000000 -0.18532273 +81.10000000 0.08741648 9812023.00000000 -0.18664842 +81.15000000 0.08742720 9812023.00000000 -0.18796900 +81.20000000 0.08743839 9812023.00000000 -0.18928443 +81.25000000 0.08745003 9812023.00000000 -0.19059466 +81.30000000 0.08746213 9812023.00000000 -0.19189967 +81.35000000 0.08747470 9812023.00000000 -0.19319942 +81.40000000 0.08748772 9812023.00000000 -0.19449388 +81.45000000 0.08750119 9812023.00000000 -0.19578300 +81.50000000 0.08751512 9812023.00000000 -0.19706675 +81.55000000 0.08752951 9812023.00000000 -0.19834510 +81.60000000 0.08754435 9812023.00000000 -0.19961802 +81.65000000 0.08755963 9812023.00000000 -0.20088546 +81.70000000 0.08757537 9812023.00000000 -0.20214739 +81.75000000 0.08759156 9812023.00000000 -0.20340378 +81.80000000 0.08760819 9812023.00000000 -0.20465460 +81.85000000 0.08762527 9812023.00000000 -0.20589980 +81.90000000 0.08764280 9812023.00000000 -0.20713936 +81.95000000 0.08766076 9812023.00000000 -0.20837324 +82.00000000 0.08767917 9812023.00000000 -0.20960141 +82.05000000 0.08769803 9812023.00000000 -0.21082383 +82.10000000 0.08771732 9812023.00000000 -0.21204047 +82.15000000 0.08773705 9812023.00000000 -0.21325130 +82.20000000 0.08775722 9812023.00000000 -0.21445628 +82.25000000 0.08777782 9812023.00000000 -0.21565538 +82.30000000 0.08779887 9812023.00000000 -0.21684857 +82.35000000 0.08782034 9812023.00000000 -0.21803582 +82.40000000 0.08784225 9812023.00000000 -0.21921709 +82.45000000 0.08786458 9812023.00000000 -0.22039235 +82.50000000 0.08788735 9812023.00000000 -0.22156156 +82.55000000 0.08791055 9812023.00000000 -0.22272470 +82.60000000 0.08793418 9812023.00000000 -0.22388174 +82.65000000 0.08795823 9812023.00000000 -0.22503264 +82.70000000 0.08798271 9812023.00000000 -0.22617736 +82.75000000 0.08800761 9812023.00000000 -0.22731589 +82.80000000 0.08803293 9812023.00000000 -0.22844819 +82.85000000 0.08805868 9812023.00000000 -0.22957422 +82.90000000 0.08808484 9812023.00000000 -0.23069396 +82.95000000 0.08811143 9812023.00000000 -0.23180737 +83.00000000 0.08813843 9812023.00000000 -0.23291443 +83.05000000 0.08816585 9812023.00000000 -0.23401510 +83.10000000 0.08819369 9812023.00000000 -0.23510936 +83.15000000 0.08822194 9812023.00000000 -0.23619717 +83.20000000 0.08825060 9812023.00000000 -0.23727851 +83.25000000 0.08827968 9812023.00000000 -0.23835334 +83.30000000 0.08830917 9812023.00000000 -0.23942164 +83.35000000 0.08833906 9812023.00000000 -0.24048337 +83.40000000 0.08836937 9812023.00000000 -0.24153851 +83.45000000 0.08840008 9812023.00000000 -0.24258703 +83.50000000 0.08843119 9812023.00000000 -0.24362889 +83.55000000 0.08846271 9812023.00000000 -0.24466408 +83.60000000 0.08849464 9812023.00000000 -0.24569256 +83.65000000 0.08852696 9812023.00000000 -0.24671431 +83.70000000 0.08855969 9812023.00000000 -0.24772929 +83.75000000 0.08859282 9812023.00000000 -0.24873748 +83.80000000 0.08862634 9812023.00000000 -0.24973885 +83.85000000 0.08866026 9812023.00000000 -0.25073337 +83.90000000 0.08869458 9812023.00000000 -0.25172102 +83.95000000 0.08872929 9812023.00000000 -0.25270177 +84.00000000 0.08876440 9812023.00000000 -0.25367559 +84.05000000 0.08879990 9812023.00000000 -0.25464246 +84.10000000 0.08883579 9812023.00000000 -0.25560234 +84.15000000 0.08887207 9812023.00000000 -0.25655522 +84.20000000 0.08890873 9812023.00000000 -0.25750106 +84.25000000 0.08894579 9812023.00000000 -0.25843985 +84.30000000 0.08898323 9812023.00000000 -0.25937154 +84.35000000 0.08902106 9812023.00000000 -0.26029613 +84.40000000 0.08905927 9812023.00000000 -0.26121358 +84.45000000 0.08909786 9812023.00000000 -0.26212387 +84.50000000 0.08913683 9812023.00000000 -0.26302698 +84.55000000 0.08917619 9812023.00000000 -0.26392287 +84.60000000 0.08921592 9812023.00000000 -0.26481153 +84.65000000 0.08925603 9812023.00000000 -0.26569293 +84.70000000 0.08929651 9812023.00000000 -0.26656704 +84.75000000 0.08933738 9812023.00000000 -0.26743385 +84.80000000 0.08937861 9812023.00000000 -0.26829332 +84.85000000 0.08942022 9812023.00000000 -0.26914544 +84.90000000 0.08946220 9812023.00000000 -0.26999018 +84.95000000 0.08950455 9812023.00000000 -0.27082752 +85.00000000 0.08954727 9812023.00000000 -0.27165743 +85.05000000 0.08959035 9812023.00000000 -0.27247989 +85.10000000 0.08963380 9812023.00000000 -0.27329489 +85.15000000 0.08967762 9812023.00000000 -0.27410239 +85.20000000 0.08972180 9812023.00000000 -0.27490238 +85.25000000 0.08976635 9812023.00000000 -0.27569483 +85.30000000 0.08981125 9812023.00000000 -0.27647972 +85.35000000 0.08985652 9812023.00000000 -0.27725704 +85.40000000 0.08990215 9812023.00000000 -0.27802675 +85.45000000 0.08994813 9812023.00000000 -0.27878884 +85.50000000 0.08999447 9812023.00000000 -0.27954328 +85.55000000 0.09004117 9812023.00000000 -0.28029007 +85.60000000 0.09008822 9812023.00000000 -0.28102917 +85.65000000 0.09013562 9812023.00000000 -0.28176056 +85.70000000 0.09018338 9812023.00000000 -0.28248423 +85.75000000 0.09023148 9812023.00000000 -0.28320015 +85.80000000 0.09027994 9812023.00000000 -0.28390831 +85.85000000 0.09032874 9812023.00000000 -0.28460869 +85.90000000 0.09037789 9812023.00000000 -0.28530127 +85.95000000 0.09042738 9812023.00000000 -0.28598602 +86.00000000 0.09047722 9812023.00000000 -0.28666293 +86.05000000 0.09052741 9812023.00000000 -0.28733199 +86.10000000 0.09057793 9812023.00000000 -0.28799316 +86.15000000 0.09062880 9812023.00000000 -0.28864644 +86.20000000 0.09068001 9812023.00000000 -0.28929181 +86.25000000 0.09073155 9812023.00000000 -0.28992925 +86.30000000 0.09078343 9812023.00000000 -0.29055873 +86.35000000 0.09083565 9812023.00000000 -0.29118025 +86.40000000 0.09088820 9812023.00000000 -0.29179379 +86.45000000 0.09094108 9812023.00000000 -0.29239933 +86.50000000 0.09099430 9812023.00000000 -0.29299686 +86.55000000 0.09104785 9812023.00000000 -0.29358635 +86.60000000 0.09110173 9812023.00000000 -0.29416779 +86.65000000 0.09115593 9812023.00000000 -0.29474116 +86.70000000 0.09121047 9812023.00000000 -0.29530646 +86.75000000 0.09126533 9812023.00000000 -0.29586366 +86.80000000 0.09132051 9812023.00000000 -0.29641275 +86.85000000 0.09137602 9812023.00000000 -0.29695371 +86.90000000 0.09143185 9812023.00000000 -0.29748653 +86.95000000 0.09148800 9812023.00000000 -0.29801120 +87.00000000 0.09154447 9812023.00000000 -0.29852770 +87.05000000 0.09160126 9812023.00000000 -0.29903601 +87.10000000 0.09165837 9812023.00000000 -0.29953612 +87.15000000 0.09171579 9812023.00000000 -0.30002802 +87.20000000 0.09177353 9812023.00000000 -0.30051170 +87.25000000 0.09183159 9812023.00000000 -0.30098713 +87.30000000 0.09188995 9812023.00000000 -0.30145432 +87.35000000 0.09194863 9812023.00000000 -0.30191324 +87.40000000 0.09200761 9812023.00000000 -0.30236388 +87.45000000 0.09206691 9812023.00000000 -0.30280624 +87.50000000 0.09212651 9812023.00000000 -0.30324029 +87.55000000 0.09218642 9812023.00000000 -0.30366603 +87.60000000 0.09224664 9812023.00000000 -0.30408345 +87.65000000 0.09230716 9812023.00000000 -0.30449252 +87.70000000 0.09236798 9812023.00000000 -0.30489325 +87.75000000 0.09242910 9812023.00000000 -0.30528562 +87.80000000 0.09249053 9812023.00000000 -0.30566962 +87.85000000 0.09255225 9812023.00000000 -0.30604525 +87.90000000 0.09261427 9812023.00000000 -0.30641248 +87.95000000 0.09267659 9812023.00000000 -0.30677131 +88.00000000 0.09273920 9812023.00000000 -0.30712173 +88.05000000 0.09280211 9812023.00000000 -0.30746373 +88.10000000 0.09286531 9812023.00000000 -0.30779730 +88.15000000 0.09292880 9812023.00000000 -0.30812243 +88.20000000 0.09299258 9812023.00000000 -0.30843912 +88.25000000 0.09305665 9812023.00000000 -0.30874735 +88.30000000 0.09312101 9812023.00000000 -0.30904711 +88.35000000 0.09318566 9812023.00000000 -0.30933840 +88.40000000 0.09325059 9812023.00000000 -0.30962121 +88.45000000 0.09331581 9812023.00000000 -0.30989554 +88.50000000 0.09338131 9812023.00000000 -0.31016136 +88.55000000 0.09344709 9812023.00000000 -0.31041869 +88.60000000 0.09351315 9812023.00000000 -0.31066750 +88.65000000 0.09357949 9812023.00000000 -0.31090780 +88.70000000 0.09364611 9812023.00000000 -0.31113957 +88.75000000 0.09371301 9812023.00000000 -0.31136281 +88.80000000 0.09378018 9812023.00000000 -0.31157752 +88.85000000 0.09384763 9812023.00000000 -0.31178368 +88.90000000 0.09391535 9812023.00000000 -0.31198130 +88.95000000 0.09398334 9812023.00000000 -0.31217036 +89.00000000 0.09405160 9812023.00000000 -0.31235087 +89.05000000 0.09412014 9812023.00000000 -0.31252281 +89.10000000 0.09418894 9812023.00000000 -0.31268619 +89.15000000 0.09425801 9812023.00000000 -0.31284099 +89.20000000 0.09432734 9812023.00000000 -0.31298721 +89.25000000 0.09439694 9812023.00000000 -0.31312486 +89.30000000 0.09446680 9812023.00000000 -0.31325392 +89.35000000 0.09453693 9812023.00000000 -0.31337439 +89.40000000 0.09460732 9812023.00000000 -0.31348627 +89.45000000 0.09467796 9812023.00000000 -0.31358955 +89.50000000 0.09474887 9812023.00000000 -0.31368424 +89.55000000 0.09482003 9812023.00000000 -0.31377033 +89.60000000 0.09489145 9812023.00000000 -0.31384782 +89.65000000 0.09496312 9812023.00000000 -0.31391670 +89.70000000 0.09503505 9812023.00000000 -0.31397698 +89.75000000 0.09510723 9812023.00000000 -0.31402865 +89.80000000 0.09517966 9812023.00000000 -0.31407171 +89.85000000 0.09525234 9812023.00000000 -0.31410615 +89.90000000 0.09532527 9812023.00000000 -0.31413199 +89.95000000 0.09539845 9812023.00000000 -0.31414922 +90.00000000 0.09547187 9812023.00000000 -0.31415783 +90.05000000 0.09554554 9812023.00000000 -0.31415783 +90.10000000 0.09561946 9812023.00000000 -0.31414922 +90.15000000 0.09569361 9812023.00000000 -0.31413199 +90.20000000 0.09576801 9812023.00000000 -0.31410615 +90.25000000 0.09584265 9812023.00000000 -0.31407171 +90.30000000 0.09591752 9812023.00000000 -0.31402865 +90.35000000 0.09599264 9812023.00000000 -0.31397698 +90.40000000 0.09606799 9812023.00000000 -0.31391670 +90.45000000 0.09614358 9812023.00000000 -0.31384782 +90.50000000 0.09621940 9812023.00000000 -0.31377033 +90.55000000 0.09629545 9812023.00000000 -0.31368424 +90.60000000 0.09637174 9812023.00000000 -0.31358955 +90.65000000 0.09644825 9812023.00000000 -0.31348627 +90.70000000 0.09652500 9812023.00000000 -0.31337439 +90.75000000 0.09660197 9812023.00000000 -0.31325392 +90.80000000 0.09667917 9812023.00000000 -0.31312486 +90.85000000 0.09675659 9812023.00000000 -0.31298721 +90.90000000 0.09683424 9812023.00000000 -0.31284099 +90.95000000 0.09691212 9812023.00000000 -0.31268619 +91.00000000 0.09699021 9812023.00000000 -0.31252281 +91.05000000 0.09706852 9812023.00000000 -0.31235087 +91.10000000 0.09714706 9812023.00000000 -0.31217036 +91.15000000 0.09722581 9812023.00000000 -0.31198130 +91.20000000 0.09730478 9812023.00000000 -0.31178368 +91.25000000 0.09738397 9812023.00000000 -0.31157752 +91.30000000 0.09746337 9812023.00000000 -0.31136281 +91.35000000 0.09754298 9812023.00000000 -0.31113957 +91.40000000 0.09762280 9812023.00000000 -0.31090780 +91.45000000 0.09770284 9812023.00000000 -0.31066750 +91.50000000 0.09778309 9812023.00000000 -0.31041869 +91.55000000 0.09786354 9812023.00000000 -0.31016136 +91.60000000 0.09794420 9812023.00000000 -0.30989554 +91.65000000 0.09802507 9812023.00000000 -0.30962121 +91.70000000 0.09810614 9812023.00000000 -0.30933840 +91.75000000 0.09818741 9812023.00000000 -0.30904711 +91.80000000 0.09826889 9812023.00000000 -0.30874735 +91.85000000 0.09835057 9812023.00000000 -0.30843912 +91.90000000 0.09843245 9812023.00000000 -0.30812243 +91.95000000 0.09851453 9812023.00000000 -0.30779730 +92.00000000 0.09859680 9812023.00000000 -0.30746373 +92.05000000 0.09867927 9812023.00000000 -0.30712173 +92.10000000 0.09876194 9812023.00000000 -0.30677131 +92.15000000 0.09884479 9812023.00000000 -0.30641248 +92.20000000 0.09892785 9812023.00000000 -0.30604525 +92.25000000 0.09901109 9812023.00000000 -0.30566962 +92.30000000 0.09909452 9812023.00000000 -0.30528562 +92.35000000 0.09917814 9812023.00000000 -0.30489325 +92.40000000 0.09926195 9812023.00000000 -0.30449252 +92.45000000 0.09934595 9812023.00000000 -0.30408345 +92.50000000 0.09943013 9812023.00000000 -0.30366603 +92.55000000 0.09951449 9812023.00000000 -0.30324029 +92.60000000 0.09959904 9812023.00000000 -0.30280624 +92.65000000 0.09968377 9812023.00000000 -0.30236388 +92.70000000 0.09976867 9812023.00000000 -0.30191324 +92.75000000 0.09985376 9812023.00000000 -0.30145432 +92.80000000 0.09993903 9812023.00000000 -0.30098713 +92.85000000 0.10002447 9812023.00000000 -0.30051170 +92.90000000 0.10011009 9812023.00000000 -0.30002802 +92.95000000 0.10019588 9812023.00000000 -0.29953612 +93.00000000 0.10028184 9812023.00000000 -0.29903601 +93.05000000 0.10036798 9812023.00000000 -0.29852770 +93.10000000 0.10045428 9812023.00000000 -0.29801120 +93.15000000 0.10054076 9812023.00000000 -0.29748653 +93.20000000 0.10062740 9812023.00000000 -0.29695371 +93.25000000 0.10071421 9812023.00000000 -0.29641275 +93.30000000 0.10080118 9812023.00000000 -0.29586366 +93.35000000 0.10088832 9812023.00000000 -0.29530646 +93.40000000 0.10097563 9812023.00000000 -0.29474116 +93.45000000 0.10106309 9812023.00000000 -0.29416779 +93.50000000 0.10115072 9812023.00000000 -0.29358635 +93.55000000 0.10123850 9812023.00000000 -0.29299686 +93.60000000 0.10132644 9812023.00000000 -0.29239933 +93.65000000 0.10141454 9812023.00000000 -0.29179379 +93.70000000 0.10150280 9812023.00000000 -0.29118025 +93.75000000 0.10159120 9812023.00000000 -0.29055873 +93.80000000 0.10167977 9812023.00000000 -0.28992925 +93.85000000 0.10176848 9812023.00000000 -0.28929181 +93.90000000 0.10185735 9812023.00000000 -0.28864644 +93.95000000 0.10194636 9812023.00000000 -0.28799316 +94.00000000 0.10203552 9812023.00000000 -0.28733199 +94.05000000 0.10212484 9812023.00000000 -0.28666293 +94.10000000 0.10221429 9812023.00000000 -0.28598602 +94.15000000 0.10230389 9812023.00000000 -0.28530127 +94.20000000 0.10239364 9812023.00000000 -0.28460869 +94.25000000 0.10248352 9812023.00000000 -0.28390831 +94.30000000 0.10257355 9812023.00000000 -0.28320015 +94.35000000 0.10266372 9812023.00000000 -0.28248423 +94.40000000 0.10275402 9812023.00000000 -0.28176056 +94.45000000 0.10284447 9812023.00000000 -0.28102917 +94.50000000 0.10293504 9812023.00000000 -0.28029007 +94.55000000 0.10302576 9812023.00000000 -0.27954328 +94.60000000 0.10311661 9812023.00000000 -0.27878884 +94.65000000 0.10320758 9812023.00000000 -0.27802675 +94.70000000 0.10329870 9812023.00000000 -0.27725704 +94.75000000 0.10338994 9812023.00000000 -0.27647972 +94.80000000 0.10348131 9812023.00000000 -0.27569483 +94.85000000 0.10357280 9812023.00000000 -0.27490238 +94.90000000 0.10366443 9812023.00000000 -0.27410239 +94.95000000 0.10375617 9812023.00000000 -0.27329489 +95.00000000 0.10384805 9812023.00000000 -0.27247989 +95.05000000 0.10394004 9812023.00000000 -0.27165743 +95.10000000 0.10403216 9812023.00000000 -0.27082752 +95.15000000 0.10412439 9812023.00000000 -0.26999018 +95.20000000 0.10421675 9812023.00000000 -0.26914544 +95.25000000 0.10430922 9812023.00000000 -0.26829332 +95.30000000 0.10440181 9812023.00000000 -0.26743385 +95.35000000 0.10449452 9812023.00000000 -0.26656704 +95.40000000 0.10458733 9812023.00000000 -0.26569293 +95.45000000 0.10468026 9812023.00000000 -0.26481153 +95.50000000 0.10477331 9812023.00000000 -0.26392287 +95.55000000 0.10486646 9812023.00000000 -0.26302698 +95.60000000 0.10495972 9812023.00000000 -0.26212387 +95.65000000 0.10505309 9812023.00000000 -0.26121358 +95.70000000 0.10514657 9812023.00000000 -0.26029613 +95.75000000 0.10524015 9812023.00000000 -0.25937154 +95.80000000 0.10533384 9812023.00000000 -0.25843985 +95.85000000 0.10542763 9812023.00000000 -0.25750106 +95.90000000 0.10552152 9812023.00000000 -0.25655522 +95.95000000 0.10561551 9812023.00000000 -0.25560234 +96.00000000 0.10570960 9812023.00000000 -0.25464246 +96.05000000 0.10580379 9812023.00000000 -0.25367559 +96.10000000 0.10589807 9812023.00000000 -0.25270177 +96.15000000 0.10599246 9812023.00000000 -0.25172102 +96.20000000 0.10608693 9812023.00000000 -0.25073337 +96.25000000 0.10618150 9812023.00000000 -0.24973885 +96.30000000 0.10627616 9812023.00000000 -0.24873748 +96.35000000 0.10637091 9812023.00000000 -0.24772929 +96.40000000 0.10646575 9812023.00000000 -0.24671431 +96.45000000 0.10656068 9812023.00000000 -0.24569256 +96.50000000 0.10665570 9812023.00000000 -0.24466408 +96.55000000 0.10675080 9812023.00000000 -0.24362889 +96.60000000 0.10684599 9812023.00000000 -0.24258703 +96.65000000 0.10694126 9812023.00000000 -0.24153851 +96.70000000 0.10703661 9812023.00000000 -0.24048337 +96.75000000 0.10713204 9812023.00000000 -0.23942164 +96.80000000 0.10722756 9812023.00000000 -0.23835334 +96.85000000 0.10732315 9812023.00000000 -0.23727851 +96.90000000 0.10741881 9812023.00000000 -0.23619717 +96.95000000 0.10751456 9812023.00000000 -0.23510936 +97.00000000 0.10761038 9812023.00000000 -0.23401510 +97.05000000 0.10770627 9812023.00000000 -0.23291443 +97.10000000 0.10780224 9812023.00000000 -0.23180737 +97.15000000 0.10789827 9812023.00000000 -0.23069396 +97.20000000 0.10799438 9812023.00000000 -0.22957422 +97.25000000 0.10809055 9812023.00000000 -0.22844819 +97.30000000 0.10818679 9812023.00000000 -0.22731589 +97.35000000 0.10828310 9812023.00000000 -0.22617736 +97.40000000 0.10837948 9812023.00000000 -0.22503264 +97.45000000 0.10847591 9812023.00000000 -0.22388174 +97.50000000 0.10857241 9812023.00000000 -0.22272470 +97.55000000 0.10866897 9812023.00000000 -0.22156156 +97.60000000 0.10876559 9812023.00000000 -0.22039235 +97.65000000 0.10886227 9812023.00000000 -0.21921709 +97.70000000 0.10895901 9812023.00000000 -0.21803582 +97.75000000 0.10905580 9812023.00000000 -0.21684857 +97.80000000 0.10915265 9812023.00000000 -0.21565538 +97.85000000 0.10924956 9812023.00000000 -0.21445628 +97.90000000 0.10934651 9812023.00000000 -0.21325130 +97.95000000 0.10944352 9812023.00000000 -0.21204047 +98.00000000 0.10954057 9812023.00000000 -0.21082383 +98.05000000 0.10963768 9812023.00000000 -0.20960141 +98.10000000 0.10973484 9812023.00000000 -0.20837324 +98.15000000 0.10983204 9812023.00000000 -0.20713936 +98.20000000 0.10992928 9812023.00000000 -0.20589980 +98.25000000 0.11002657 9812023.00000000 -0.20465460 +98.30000000 0.11012390 9812023.00000000 -0.20340378 +98.35000000 0.11022128 9812023.00000000 -0.20214739 +98.40000000 0.11031869 9812023.00000000 -0.20088546 +98.45000000 0.11041615 9812023.00000000 -0.19961802 +98.50000000 0.11051364 9812023.00000000 -0.19834510 +98.55000000 0.11061117 9812023.00000000 -0.19706675 +98.60000000 0.11070873 9812023.00000000 -0.19578300 +98.65000000 0.11080633 9812023.00000000 -0.19449388 +98.70000000 0.11090397 9812023.00000000 -0.19319942 +98.75000000 0.11100163 9812023.00000000 -0.19189967 +98.80000000 0.11109932 9812023.00000000 -0.19059466 +98.85000000 0.11119705 9812023.00000000 -0.18928443 +98.90000000 0.11129480 9812023.00000000 -0.18796900 +98.95000000 0.11139258 9812023.00000000 -0.18664842 +99.00000000 0.11149038 9812023.00000000 -0.18532273 +99.05000000 0.11158821 9812023.00000000 -0.18399195 +99.10000000 0.11168607 9812023.00000000 -0.18265613 +99.15000000 0.11178394 9812023.00000000 -0.18131530 +99.20000000 0.11188184 9812023.00000000 -0.17996950 +99.25000000 0.11197975 9812023.00000000 -0.17861877 +99.30000000 0.11207769 9812023.00000000 -0.17726314 +99.35000000 0.11217564 9812023.00000000 -0.17590265 +99.40000000 0.11227360 9812023.00000000 -0.17453734 +99.45000000 0.11237158 9812023.00000000 -0.17316724 +99.50000000 0.11246958 9812023.00000000 -0.17179239 +99.55000000 0.11256759 9812023.00000000 -0.17041284 +99.60000000 0.11266560 9812023.00000000 -0.16902861 +99.65000000 0.11276363 9812023.00000000 -0.16763975 +99.70000000 0.11286167 9812023.00000000 -0.16624630 +99.75000000 0.11295971 9812023.00000000 -0.16484828 +99.80000000 0.11305776 9812023.00000000 -0.16344575 +99.85000000 0.11315582 9812023.00000000 -0.16203873 +99.90000000 0.11325388 9812023.00000000 -0.16062728 +99.95000000 0.11335194 9812023.00000000 -0.15921142 +100.00000000 0.11345000 9812023.00000000 -0.15779119 +100.05000000 0.11354806 9812023.00000000 -0.15636664 +100.10000000 0.11364612 9812023.00000000 -0.15493780 +100.15000000 0.11374418 9812023.00000000 -0.15350471 +100.20000000 0.11384224 9812023.00000000 -0.15206742 +100.25000000 0.11394029 9812023.00000000 -0.15062596 +100.30000000 0.11403833 9812023.00000000 -0.14918036 +100.35000000 0.11413637 9812023.00000000 -0.14773068 +100.40000000 0.11423440 9812023.00000000 -0.14627695 +100.45000000 0.11433241 9812023.00000000 -0.14481921 +100.50000000 0.11443042 9812023.00000000 -0.14335749 +100.55000000 0.11452842 9812023.00000000 -0.14189185 +100.60000000 0.11462640 9812023.00000000 -0.14042231 +100.65000000 0.11472436 9812023.00000000 -0.13894893 +100.70000000 0.11482231 9812023.00000000 -0.13747174 +100.75000000 0.11492025 9812023.00000000 -0.13599078 +100.80000000 0.11501816 9812023.00000000 -0.13450609 +100.85000000 0.11511606 9812023.00000000 -0.13301771 +100.90000000 0.11521393 9812023.00000000 -0.13152569 +100.95000000 0.11531179 9812023.00000000 -0.13003006 +101.00000000 0.11540962 9812023.00000000 -0.12853086 +101.05000000 0.11550742 9812023.00000000 -0.12702814 +101.10000000 0.11560520 9812023.00000000 -0.12552194 +101.15000000 0.11570295 9812023.00000000 -0.12401230 +101.20000000 0.11580068 9812023.00000000 -0.12249926 +101.25000000 0.11589837 9812023.00000000 -0.12098286 +101.30000000 0.11599603 9812023.00000000 -0.11946314 +101.35000000 0.11609367 9812023.00000000 -0.11794015 +101.40000000 0.11619127 9812023.00000000 -0.11641392 +101.45000000 0.11628883 9812023.00000000 -0.11488450 +101.50000000 0.11638636 9812023.00000000 -0.11335193 +101.55000000 0.11648385 9812023.00000000 -0.11181626 +101.60000000 0.11658131 9812023.00000000 -0.11027752 +101.65000000 0.11667872 9812023.00000000 -0.10873576 +101.70000000 0.11677610 9812023.00000000 -0.10719101 +101.75000000 0.11687343 9812023.00000000 -0.10564333 +101.80000000 0.11697072 9812023.00000000 -0.10409275 +101.85000000 0.11706796 9812023.00000000 -0.10253932 +101.90000000 0.11716516 9812023.00000000 -0.10098307 +101.95000000 0.11726232 9812023.00000000 -0.09942406 +102.00000000 0.11735942 9812023.00000000 -0.09786232 +102.05000000 0.11745648 9812023.00000000 -0.09629790 +102.10000000 0.11755349 9812023.00000000 -0.09473084 +102.15000000 0.11765044 9812023.00000000 -0.09316118 +102.20000000 0.11774735 9812023.00000000 -0.09158896 +102.25000000 0.11784420 9812023.00000000 -0.09001424 +102.30000000 0.11794099 9812023.00000000 -0.08843705 +102.35000000 0.11803773 9812023.00000000 -0.08685743 +102.40000000 0.11813441 9812023.00000000 -0.08527543 +102.45000000 0.11823103 9812023.00000000 -0.08369110 +102.50000000 0.11832759 9812023.00000000 -0.08210447 +102.55000000 0.11842409 9812023.00000000 -0.08051559 +102.60000000 0.11852052 9812023.00000000 -0.07892450 +102.65000000 0.11861690 9812023.00000000 -0.07733125 +102.70000000 0.11871321 9812023.00000000 -0.07573588 +102.75000000 0.11880945 9812023.00000000 -0.07413843 +102.80000000 0.11890562 9812023.00000000 -0.07253895 +102.85000000 0.11900173 9812023.00000000 -0.07093748 +102.90000000 0.11909776 9812023.00000000 -0.06933406 +102.95000000 0.11919373 9812023.00000000 -0.06772875 +103.00000000 0.11928962 9812023.00000000 -0.06612158 +103.05000000 0.11938544 9812023.00000000 -0.06451259 +103.10000000 0.11948119 9812023.00000000 -0.06290184 +103.15000000 0.11957685 9812023.00000000 -0.06128936 +103.20000000 0.11967244 9812023.00000000 -0.05967520 +103.25000000 0.11976796 9812023.00000000 -0.05805941 +103.30000000 0.11986339 9812023.00000000 -0.05644202 +103.35000000 0.11995874 9812023.00000000 -0.05482309 +103.40000000 0.12005401 9812023.00000000 -0.05320265 +103.45000000 0.12014920 9812023.00000000 -0.05158076 +103.50000000 0.12024430 9812023.00000000 -0.04995745 +103.55000000 0.12033932 9812023.00000000 -0.04833277 +103.60000000 0.12043425 9812023.00000000 -0.04670677 +103.65000000 0.12052909 9812023.00000000 -0.04507949 +103.70000000 0.12062384 9812023.00000000 -0.04345097 +103.75000000 0.12071850 9812023.00000000 -0.04182125 +103.80000000 0.12081307 9812023.00000000 -0.04019040 +103.85000000 0.12090754 9812023.00000000 -0.03855844 +103.90000000 0.12100193 9812023.00000000 -0.03692542 +103.95000000 0.12109621 9812023.00000000 -0.03529139 +104.00000000 0.12119040 9812023.00000000 -0.03365639 +104.05000000 0.12128449 9812023.00000000 -0.03202048 +104.10000000 0.12137848 9812023.00000000 -0.03038368 +104.15000000 0.12147237 9812023.00000000 -0.02874605 +104.20000000 0.12156616 9812023.00000000 -0.02710763 +104.25000000 0.12165985 9812023.00000000 -0.02546847 +104.30000000 0.12175343 9812023.00000000 -0.02382861 +104.35000000 0.12184691 9812023.00000000 -0.02218810 +104.40000000 0.12194028 9812023.00000000 -0.02054698 +104.45000000 0.12203354 9812023.00000000 -0.01890529 +104.50000000 0.12212669 9812023.00000000 -0.01726309 +104.55000000 0.12221974 9812023.00000000 -0.01562041 +104.60000000 0.12231267 9812023.00000000 -0.01397731 +104.65000000 0.12240548 9812023.00000000 -0.01233382 +104.70000000 0.12249819 9812023.00000000 -0.01069000 +104.75000000 0.12259078 9812023.00000000 -0.00904588 +104.80000000 0.12268325 9812023.00000000 -0.00740151 +104.85000000 0.12277561 9812023.00000000 -0.00575694 +104.90000000 0.12286784 9812023.00000000 -0.00411221 +104.95000000 0.12295996 9812023.00000000 -0.00246737 +105.00000000 0.12305195 9812023.00000000 -0.00082247 +105.05000000 0.12314383 9812023.00000000 0.00082247 +105.10000000 0.12323557 9812023.00000000 0.00246737 +105.15000000 0.12332720 9812023.00000000 0.00411221 +105.20000000 0.12341869 9812023.00000000 0.00575694 +105.25000000 0.12351006 9812023.00000000 0.00740151 +105.30000000 0.12360130 9812023.00000000 0.00904588 +105.35000000 0.12369242 9812023.00000000 0.01069000 +105.40000000 0.12378339 9812023.00000000 0.01233382 +105.45000000 0.12387424 9812023.00000000 0.01397731 +105.50000000 0.12396496 9812023.00000000 0.01562041 +105.55000000 0.12405553 9812023.00000000 0.01726309 +105.60000000 0.12414598 9812023.00000000 0.01890529 +105.65000000 0.12423628 9812023.00000000 0.02054698 +105.70000000 0.12432645 9812023.00000000 0.02218810 +105.75000000 0.12441648 9812023.00000000 0.02382861 +105.80000000 0.12450636 9812023.00000000 0.02546847 +105.85000000 0.12459611 9812023.00000000 0.02710763 +105.90000000 0.12468571 9812023.00000000 0.02874605 +105.95000000 0.12477516 9812023.00000000 0.03038368 +106.00000000 0.12486447 9812023.00000000 0.03202048 +106.05000000 0.12495364 9812023.00000000 0.03365639 +106.10000000 0.12504265 9812023.00000000 0.03529139 +106.15000000 0.12513152 9812023.00000000 0.03692542 +106.20000000 0.12522023 9812023.00000000 0.03855844 +106.25000000 0.12530880 9812023.00000000 0.04019040 +106.30000000 0.12539720 9812023.00000000 0.04182125 +106.35000000 0.12548546 9812023.00000000 0.04345097 +106.40000000 0.12557356 9812023.00000000 0.04507949 +106.45000000 0.12566150 9812023.00000000 0.04670677 +106.50000000 0.12574928 9812023.00000000 0.04833277 +106.55000000 0.12583691 9812023.00000000 0.04995745 +106.60000000 0.12592437 9812023.00000000 0.05158076 +106.65000000 0.12601168 9812023.00000000 0.05320265 +106.70000000 0.12609882 9812023.00000000 0.05482309 +106.75000000 0.12618579 9812023.00000000 0.05644202 +106.80000000 0.12627260 9812023.00000000 0.05805941 +106.85000000 0.12635924 9812023.00000000 0.05967520 +106.90000000 0.12644572 9812023.00000000 0.06128936 +106.95000000 0.12653202 9812023.00000000 0.06290184 +107.00000000 0.12661816 9812023.00000000 0.06451259 +107.05000000 0.12670412 9812023.00000000 0.06612158 +107.10000000 0.12678991 9812023.00000000 0.06772875 +107.15000000 0.12687553 9812023.00000000 0.06933406 +107.20000000 0.12696097 9812023.00000000 0.07093748 +107.25000000 0.12704624 9812023.00000000 0.07253895 +107.30000000 0.12713133 9812023.00000000 0.07413843 +107.35000000 0.12721623 9812023.00000000 0.07573588 +107.40000000 0.12730096 9812023.00000000 0.07733125 +107.45000000 0.12738551 9812023.00000000 0.07892450 +107.50000000 0.12746987 9812023.00000000 0.08051559 +107.55000000 0.12755405 9812023.00000000 0.08210447 +107.60000000 0.12763805 9812023.00000000 0.08369110 +107.65000000 0.12772186 9812023.00000000 0.08527543 +107.70000000 0.12780548 9812023.00000000 0.08685743 +107.75000000 0.12788891 9812023.00000000 0.08843705 +107.80000000 0.12797215 9812023.00000000 0.09001424 +107.85000000 0.12805521 9812023.00000000 0.09158896 +107.90000000 0.12813806 9812023.00000000 0.09316118 +107.95000000 0.12822073 9812023.00000000 0.09473084 +108.00000000 0.12830320 9812023.00000000 0.09629790 +108.05000000 0.12838547 9812023.00000000 0.09786232 +108.10000000 0.12846755 9812023.00000000 0.09942406 +108.15000000 0.12854943 9812023.00000000 0.10098307 +108.20000000 0.12863111 9812023.00000000 0.10253932 +108.25000000 0.12871259 9812023.00000000 0.10409275 +108.30000000 0.12879386 9812023.00000000 0.10564333 +108.35000000 0.12887493 9812023.00000000 0.10719101 +108.40000000 0.12895580 9812023.00000000 0.10873576 +108.45000000 0.12903646 9812023.00000000 0.11027752 +108.50000000 0.12911691 9812023.00000000 0.11181626 +108.55000000 0.12919716 9812023.00000000 0.11335193 +108.60000000 0.12927720 9812023.00000000 0.11488450 +108.65000000 0.12935702 9812023.00000000 0.11641392 +108.70000000 0.12943663 9812023.00000000 0.11794015 +108.75000000 0.12951603 9812023.00000000 0.11946314 +108.80000000 0.12959522 9812023.00000000 0.12098286 +108.85000000 0.12967419 9812023.00000000 0.12249926 +108.90000000 0.12975294 9812023.00000000 0.12401230 +108.95000000 0.12983148 9812023.00000000 0.12552194 +109.00000000 0.12990979 9812023.00000000 0.12702814 +109.05000000 0.12998788 9812023.00000000 0.12853086 +109.10000000 0.13006576 9812023.00000000 0.13003006 +109.15000000 0.13014341 9812023.00000000 0.13152569 +109.20000000 0.13022083 9812023.00000000 0.13301771 +109.25000000 0.13029803 9812023.00000000 0.13450609 +109.30000000 0.13037500 9812023.00000000 0.13599078 +109.35000000 0.13045175 9812023.00000000 0.13747174 +109.40000000 0.13052826 9812023.00000000 0.13894893 +109.45000000 0.13060455 9812023.00000000 0.14042231 +109.50000000 0.13068060 9812023.00000000 0.14189185 +109.55000000 0.13075642 9812023.00000000 0.14335749 +109.60000000 0.13083201 9812023.00000000 0.14481921 +109.65000000 0.13090736 9812023.00000000 0.14627695 +109.70000000 0.13098248 9812023.00000000 0.14773068 +109.75000000 0.13105735 9812023.00000000 0.14918036 +109.80000000 0.13113199 9812023.00000000 0.15062596 +109.85000000 0.13120639 9812023.00000000 0.15206742 +109.90000000 0.13128054 9812023.00000000 0.15350471 +109.95000000 0.13135446 9812023.00000000 0.15493780 +110.00000000 0.13142813 9812023.00000000 0.15636664 +110.05000000 0.13150155 9812023.00000000 0.15779119 +110.10000000 0.13157473 9812023.00000000 0.15921142 +110.15000000 0.13164766 9812023.00000000 0.16062728 +110.20000000 0.13172034 9812023.00000000 0.16203873 +110.25000000 0.13179277 9812023.00000000 0.16344575 +110.30000000 0.13186495 9812023.00000000 0.16484828 +110.35000000 0.13193688 9812023.00000000 0.16624630 +110.40000000 0.13200855 9812023.00000000 0.16763975 +110.45000000 0.13207997 9812023.00000000 0.16902861 +110.50000000 0.13215113 9812023.00000000 0.17041284 +110.55000000 0.13222204 9812023.00000000 0.17179239 +110.60000000 0.13229268 9812023.00000000 0.17316724 +110.65000000 0.13236307 9812023.00000000 0.17453734 +110.70000000 0.13243320 9812023.00000000 0.17590265 +110.75000000 0.13250306 9812023.00000000 0.17726314 +110.80000000 0.13257266 9812023.00000000 0.17861877 +110.85000000 0.13264199 9812023.00000000 0.17996950 +110.90000000 0.13271106 9812023.00000000 0.18131530 +110.95000000 0.13277986 9812023.00000000 0.18265613 +111.00000000 0.13284840 9812023.00000000 0.18399195 +111.05000000 0.13291666 9812023.00000000 0.18532273 +111.10000000 0.13298465 9812023.00000000 0.18664842 +111.15000000 0.13305237 9812023.00000000 0.18796900 +111.20000000 0.13311982 9812023.00000000 0.18928443 +111.25000000 0.13318699 9812023.00000000 0.19059466 +111.30000000 0.13325389 9812023.00000000 0.19189967 +111.35000000 0.13332051 9812023.00000000 0.19319942 +111.40000000 0.13338685 9812023.00000000 0.19449388 +111.45000000 0.13345291 9812023.00000000 0.19578300 +111.50000000 0.13351869 9812023.00000000 0.19706675 +111.55000000 0.13358419 9812023.00000000 0.19834510 +111.60000000 0.13364941 9812023.00000000 0.19961802 +111.65000000 0.13371434 9812023.00000000 0.20088546 +111.70000000 0.13377899 9812023.00000000 0.20214739 +111.75000000 0.13384335 9812023.00000000 0.20340378 +111.80000000 0.13390742 9812023.00000000 0.20465460 +111.85000000 0.13397120 9812023.00000000 0.20589980 +111.90000000 0.13403469 9812023.00000000 0.20713936 +111.95000000 0.13409789 9812023.00000000 0.20837324 +112.00000000 0.13416080 9812023.00000000 0.20960141 +112.05000000 0.13422341 9812023.00000000 0.21082383 +112.10000000 0.13428573 9812023.00000000 0.21204047 +112.15000000 0.13434775 9812023.00000000 0.21325130 +112.20000000 0.13440947 9812023.00000000 0.21445628 +112.25000000 0.13447090 9812023.00000000 0.21565538 +112.30000000 0.13453202 9812023.00000000 0.21684857 +112.35000000 0.13459284 9812023.00000000 0.21803582 +112.40000000 0.13465336 9812023.00000000 0.21921709 +112.45000000 0.13471358 9812023.00000000 0.22039235 +112.50000000 0.13477349 9812023.00000000 0.22156156 +112.55000000 0.13483309 9812023.00000000 0.22272470 +112.60000000 0.13489239 9812023.00000000 0.22388174 +112.65000000 0.13495137 9812023.00000000 0.22503264 +112.70000000 0.13501005 9812023.00000000 0.22617736 +112.75000000 0.13506841 9812023.00000000 0.22731589 +112.80000000 0.13512647 9812023.00000000 0.22844819 +112.85000000 0.13518421 9812023.00000000 0.22957422 +112.90000000 0.13524163 9812023.00000000 0.23069396 +112.95000000 0.13529874 9812023.00000000 0.23180737 +113.00000000 0.13535553 9812023.00000000 0.23291443 +113.05000000 0.13541200 9812023.00000000 0.23401510 +113.10000000 0.13546815 9812023.00000000 0.23510936 +113.15000000 0.13552398 9812023.00000000 0.23619717 +113.20000000 0.13557949 9812023.00000000 0.23727851 +113.25000000 0.13563467 9812023.00000000 0.23835334 +113.30000000 0.13568953 9812023.00000000 0.23942164 +113.35000000 0.13574407 9812023.00000000 0.24048337 +113.40000000 0.13579827 9812023.00000000 0.24153851 +113.45000000 0.13585215 9812023.00000000 0.24258703 +113.50000000 0.13590570 9812023.00000000 0.24362889 +113.55000000 0.13595892 9812023.00000000 0.24466408 +113.60000000 0.13601180 9812023.00000000 0.24569256 +113.65000000 0.13606435 9812023.00000000 0.24671431 +113.70000000 0.13611657 9812023.00000000 0.24772929 +113.75000000 0.13616845 9812023.00000000 0.24873748 +113.80000000 0.13621999 9812023.00000000 0.24973885 +113.85000000 0.13627120 9812023.00000000 0.25073337 +113.90000000 0.13632207 9812023.00000000 0.25172102 +113.95000000 0.13637259 9812023.00000000 0.25270177 +114.00000000 0.13642277 9812023.00000000 0.25367559 +114.05000000 0.13647262 9812023.00000000 0.25464246 +114.10000000 0.13652211 9812023.00000000 0.25560234 +114.15000000 0.13657126 9812023.00000000 0.25655522 +114.20000000 0.13662006 9812023.00000000 0.25750106 +114.25000000 0.13666852 9812023.00000000 0.25843985 +114.30000000 0.13671662 9812023.00000000 0.25937154 +114.35000000 0.13676438 9812023.00000000 0.26029613 +114.40000000 0.13681178 9812023.00000000 0.26121358 +114.45000000 0.13685883 9812023.00000000 0.26212387 +114.50000000 0.13690553 9812023.00000000 0.26302698 +114.55000000 0.13695187 9812023.00000000 0.26392287 +114.60000000 0.13699785 9812023.00000000 0.26481153 +114.65000000 0.13704348 9812023.00000000 0.26569293 +114.70000000 0.13708875 9812023.00000000 0.26656704 +114.75000000 0.13713365 9812023.00000000 0.26743385 +114.80000000 0.13717820 9812023.00000000 0.26829332 +114.85000000 0.13722238 9812023.00000000 0.26914544 +114.90000000 0.13726620 9812023.00000000 0.26999018 +114.95000000 0.13730965 9812023.00000000 0.27082752 +115.00000000 0.13735273 9812023.00000000 0.27165743 +115.05000000 0.13739545 9812023.00000000 0.27247989 +115.10000000 0.13743780 9812023.00000000 0.27329489 +115.15000000 0.13747978 9812023.00000000 0.27410239 +115.20000000 0.13752139 9812023.00000000 0.27490238 +115.25000000 0.13756262 9812023.00000000 0.27569483 +115.30000000 0.13760349 9812023.00000000 0.27647972 +115.35000000 0.13764397 9812023.00000000 0.27725704 +115.40000000 0.13768408 9812023.00000000 0.27802675 +115.45000000 0.13772381 9812023.00000000 0.27878884 +115.50000000 0.13776317 9812023.00000000 0.27954328 +115.55000000 0.13780214 9812023.00000000 0.28029007 +115.60000000 0.13784073 9812023.00000000 0.28102917 +115.65000000 0.13787894 9812023.00000000 0.28176056 +115.70000000 0.13791677 9812023.00000000 0.28248423 +115.75000000 0.13795421 9812023.00000000 0.28320015 +115.80000000 0.13799127 9812023.00000000 0.28390831 +115.85000000 0.13802793 9812023.00000000 0.28460869 +115.90000000 0.13806421 9812023.00000000 0.28530127 +115.95000000 0.13810010 9812023.00000000 0.28598602 +116.00000000 0.13813560 9812023.00000000 0.28666293 +116.05000000 0.13817071 9812023.00000000 0.28733199 +116.10000000 0.13820542 9812023.00000000 0.28799316 +116.15000000 0.13823974 9812023.00000000 0.28864644 +116.20000000 0.13827366 9812023.00000000 0.28929181 +116.25000000 0.13830718 9812023.00000000 0.28992925 +116.30000000 0.13834031 9812023.00000000 0.29055873 +116.35000000 0.13837304 9812023.00000000 0.29118025 +116.40000000 0.13840536 9812023.00000000 0.29179379 +116.45000000 0.13843729 9812023.00000000 0.29239933 +116.50000000 0.13846881 9812023.00000000 0.29299686 +116.55000000 0.13849992 9812023.00000000 0.29358635 +116.60000000 0.13853063 9812023.00000000 0.29416779 +116.65000000 0.13856094 9812023.00000000 0.29474116 +116.70000000 0.13859083 9812023.00000000 0.29530646 +116.75000000 0.13862032 9812023.00000000 0.29586366 +116.80000000 0.13864940 9812023.00000000 0.29641275 +116.85000000 0.13867806 9812023.00000000 0.29695371 +116.90000000 0.13870631 9812023.00000000 0.29748653 +116.95000000 0.13873415 9812023.00000000 0.29801120 +117.00000000 0.13876157 9812023.00000000 0.29852770 +117.05000000 0.13878857 9812023.00000000 0.29903601 +117.10000000 0.13881516 9812023.00000000 0.29953612 +117.15000000 0.13884132 9812023.00000000 0.30002802 +117.20000000 0.13886707 9812023.00000000 0.30051170 +117.25000000 0.13889239 9812023.00000000 0.30098713 +117.30000000 0.13891729 9812023.00000000 0.30145432 +117.35000000 0.13894177 9812023.00000000 0.30191324 +117.40000000 0.13896582 9812023.00000000 0.30236388 +117.45000000 0.13898945 9812023.00000000 0.30280624 +117.50000000 0.13901265 9812023.00000000 0.30324029 +117.55000000 0.13903542 9812023.00000000 0.30366603 +117.60000000 0.13905775 9812023.00000000 0.30408345 +117.65000000 0.13907966 9812023.00000000 0.30449252 +117.70000000 0.13910113 9812023.00000000 0.30489325 +117.75000000 0.13912218 9812023.00000000 0.30528562 +117.80000000 0.13914278 9812023.00000000 0.30566962 +117.85000000 0.13916295 9812023.00000000 0.30604525 +117.90000000 0.13918268 9812023.00000000 0.30641248 +117.95000000 0.13920197 9812023.00000000 0.30677131 +118.00000000 0.13922083 9812023.00000000 0.30712173 +118.05000000 0.13923924 9812023.00000000 0.30746373 +118.10000000 0.13925720 9812023.00000000 0.30779730 +118.15000000 0.13927473 9812023.00000000 0.30812243 +118.20000000 0.13929181 9812023.00000000 0.30843912 +118.25000000 0.13930844 9812023.00000000 0.30874735 +118.30000000 0.13932463 9812023.00000000 0.30904711 +118.35000000 0.13934037 9812023.00000000 0.30933840 +118.40000000 0.13935565 9812023.00000000 0.30962121 +118.45000000 0.13937049 9812023.00000000 0.30989554 +118.50000000 0.13938488 9812023.00000000 0.31016136 +118.55000000 0.13939881 9812023.00000000 0.31041869 +118.60000000 0.13941228 9812023.00000000 0.31066750 +118.65000000 0.13942530 9812023.00000000 0.31090780 +118.70000000 0.13943787 9812023.00000000 0.31113957 +118.75000000 0.13944997 9812023.00000000 0.31136281 +118.80000000 0.13946161 9812023.00000000 0.31157752 +118.85000000 0.13947280 9812023.00000000 0.31178368 +118.90000000 0.13948352 9812023.00000000 0.31198130 +118.95000000 0.13949378 9812023.00000000 0.31217036 +119.00000000 0.13950357 9812023.00000000 0.31235087 +119.05000000 0.13951290 9812023.00000000 0.31252281 +119.10000000 0.13952176 9812023.00000000 0.31268619 +119.15000000 0.13953015 9812023.00000000 0.31284099 +119.20000000 0.13953808 9812023.00000000 0.31298721 +119.25000000 0.13954553 9812023.00000000 0.31312486 +119.30000000 0.13955251 9812023.00000000 0.31325392 +119.35000000 0.13955902 9812023.00000000 0.31337439 +119.40000000 0.13956505 9812023.00000000 0.31348627 +119.45000000 0.13957061 9812023.00000000 0.31358955 +119.50000000 0.13957569 9812023.00000000 0.31368424 +119.55000000 0.13958029 9812023.00000000 0.31377033 +119.60000000 0.13958441 9812023.00000000 0.31384782 +119.65000000 0.13958806 9812023.00000000 0.31391670 +119.70000000 0.13959122 9812023.00000000 0.31397698 +119.75000000 0.13959390 9812023.00000000 0.31402865 +119.80000000 0.13959609 9812023.00000000 0.31407171 +119.85000000 0.13959780 9812023.00000000 0.31410615 +119.90000000 0.13959902 9812023.00000000 0.31413199 +119.95000000 0.13959976 9812023.00000000 0.31414922 +120.00000000 0.13960000 9812023.00000000 0.31415783 +120.05000000 0.13960000 9812023.00000000 0.31415783 +120.10000000 0.13960000 9812023.00000000 0.31414922 +120.15000000 0.13960000 9812023.00000000 0.31413199 +120.20000000 0.13960000 9812023.00000000 0.31410615 +120.25000000 0.13960000 9812023.00000000 0.31407171 +120.30000000 0.13960000 9812023.00000000 0.31402865 +120.35000000 0.13960000 9812023.00000000 0.31397698 +120.40000000 0.13960000 9812023.00000000 0.31391670 +120.45000000 0.13960000 9812023.00000000 0.31384782 +120.50000000 0.13960000 9812023.00000000 0.31377033 +120.55000000 0.13960000 9812023.00000000 0.31368424 +120.60000000 0.13960000 9812023.00000000 0.31358955 +120.65000000 0.13960000 9812023.00000000 0.31348627 +120.70000000 0.13960000 9812023.00000000 0.31337439 +120.75000000 0.13960000 9812023.00000000 0.31325392 +120.80000000 0.13960000 9812023.00000000 0.31312486 +120.85000000 0.13960000 9812023.00000000 0.31298721 +120.90000000 0.13960000 9812023.00000000 0.31284099 +120.95000000 0.13960000 9812023.00000000 0.31268619 +121.00000000 0.13960000 9812023.00000000 0.31252281 +121.05000000 0.13960000 9812023.00000000 0.31235087 +121.10000000 0.13960000 9812023.00000000 0.31217036 +121.15000000 0.13960000 9812023.00000000 0.31198130 +121.20000000 0.13960000 9812023.00000000 0.31178368 +121.25000000 0.13960000 9812023.00000000 0.31157752 +121.30000000 0.13960000 9812023.00000000 0.31136281 +121.35000000 0.13960000 9812023.00000000 0.31113957 +121.40000000 0.13960000 9812023.00000000 0.31090780 +121.45000000 0.13960000 9812023.00000000 0.31066750 +121.50000000 0.13960000 9812023.00000000 0.31041869 +121.55000000 0.13960000 9812023.00000000 0.31016136 +121.60000000 0.13960000 9812023.00000000 0.30989554 +121.65000000 0.13960000 9812023.00000000 0.30962121 +121.70000000 0.13960000 9812023.00000000 0.30933840 +121.75000000 0.13960000 9812023.00000000 0.30904711 +121.80000000 0.13960000 9812023.00000000 0.30874735 +121.85000000 0.13960000 9812023.00000000 0.30843912 +121.90000000 0.13960000 9812023.00000000 0.30812243 +121.95000000 0.13960000 9812023.00000000 0.30779730 +122.00000000 0.13960000 9812023.00000000 0.30746373 +122.05000000 0.13960000 9812023.00000000 0.30712173 +122.10000000 0.13960000 9812023.00000000 0.30677131 +122.15000000 0.13960000 9812023.00000000 0.30641248 +122.20000000 0.13960000 9812023.00000000 0.30604525 +122.25000000 0.13960000 9812023.00000000 0.30566962 +122.30000000 0.13960000 9812023.00000000 0.30528562 +122.35000000 0.13960000 9812023.00000000 0.30489325 +122.40000000 0.13960000 9812023.00000000 0.30449252 +122.45000000 0.13960000 9812023.00000000 0.30408345 +122.50000000 0.13960000 9812023.00000000 0.30366603 +122.55000000 0.13960000 9812023.00000000 0.30324029 +122.60000000 0.13960000 9812023.00000000 0.30280624 +122.65000000 0.13960000 9812023.00000000 0.30236388 +122.70000000 0.13960000 9812023.00000000 0.30191324 +122.75000000 0.13960000 9812023.00000000 0.30145432 +122.80000000 0.13960000 9812023.00000000 0.30098713 +122.85000000 0.13960000 9812023.00000000 0.30051170 +122.90000000 0.13960000 9812023.00000000 0.30002802 +122.95000000 0.13960000 9812023.00000000 0.29953612 +123.00000000 0.13960000 9812023.00000000 0.29903601 +123.05000000 0.13960000 9812023.00000000 0.29852770 +123.10000000 0.13960000 9812023.00000000 0.29801120 +123.15000000 0.13960000 9812023.00000000 0.29748653 +123.20000000 0.13960000 9812023.00000000 0.29695371 +123.25000000 0.13960000 9812023.00000000 0.29641275 +123.30000000 0.13960000 9812023.00000000 0.29586366 +123.35000000 0.13960000 9812023.00000000 0.29530646 +123.40000000 0.13960000 9812023.00000000 0.29474116 +123.45000000 0.13960000 9812023.00000000 0.29416779 +123.50000000 0.13960000 9812023.00000000 0.29358635 +123.55000000 0.13960000 9812023.00000000 0.29299686 +123.60000000 0.13960000 9812023.00000000 0.29239933 +123.65000000 0.13960000 9812023.00000000 0.29179379 +123.70000000 0.13960000 9812023.00000000 0.29118025 +123.75000000 0.13960000 9812023.00000000 0.29055873 +123.80000000 0.13960000 9812023.00000000 0.28992925 +123.85000000 0.13960000 9812023.00000000 0.28929181 +123.90000000 0.13960000 9812023.00000000 0.28864644 +123.95000000 0.13960000 9812023.00000000 0.28799316 +124.00000000 0.13960000 9812023.00000000 0.28733199 +124.05000000 0.13960000 9812023.00000000 0.28666293 +124.10000000 0.13960000 9812023.00000000 0.28598602 +124.15000000 0.13960000 9812023.00000000 0.28530127 +124.20000000 0.13960000 9812023.00000000 0.28460869 +124.25000000 0.13960000 9812023.00000000 0.28390831 +124.30000000 0.13960000 9812023.00000000 0.28320015 +124.35000000 0.13960000 9812023.00000000 0.28248423 +124.40000000 0.13960000 9812023.00000000 0.28176056 +124.45000000 0.13960000 9812023.00000000 0.28102917 +124.50000000 0.13960000 9812023.00000000 0.28029007 +124.55000000 0.13960000 9812023.00000000 0.27954328 +124.60000000 0.13960000 9812023.00000000 0.27878884 +124.65000000 0.13960000 9812023.00000000 0.27802675 +124.70000000 0.13960000 9812023.00000000 0.27725704 +124.75000000 0.13960000 9812023.00000000 0.27647972 +124.80000000 0.13960000 9812023.00000000 0.27569483 +124.85000000 0.13960000 9812023.00000000 0.27490238 +124.90000000 0.13960000 9812023.00000000 0.27410239 +124.95000000 0.13960000 9812023.00000000 0.27329489 +125.00000000 0.13960000 9812023.00000000 0.27247989 +125.05000000 0.13960000 9812023.00000000 0.27165743 +125.10000000 0.13960000 9812023.00000000 0.27082752 +125.15000000 0.13960000 9812023.00000000 0.26999018 +125.20000000 0.13960000 9812023.00000000 0.26914544 +125.25000000 0.13960000 9812023.00000000 0.26829332 +125.30000000 0.13960000 9812023.00000000 0.26743385 +125.35000000 0.13960000 9812023.00000000 0.26656704 +125.40000000 0.13960000 9812023.00000000 0.26569293 +125.45000000 0.13960000 9812023.00000000 0.26481153 +125.50000000 0.13960000 9812023.00000000 0.26392287 +125.55000000 0.13960000 9812023.00000000 0.26302698 +125.60000000 0.13960000 9812023.00000000 0.26212387 +125.65000000 0.13960000 9812023.00000000 0.26121358 +125.70000000 0.13960000 9812023.00000000 0.26029613 +125.75000000 0.13960000 9812023.00000000 0.25937154 +125.80000000 0.13960000 9812023.00000000 0.25843985 +125.85000000 0.13960000 9812023.00000000 0.25750106 +125.90000000 0.13960000 9812023.00000000 0.25655522 +125.95000000 0.13960000 9812023.00000000 0.25560234 +126.00000000 0.13960000 9812023.00000000 0.25464246 +126.05000000 0.13960000 9812023.00000000 0.25367559 +126.10000000 0.13960000 9812023.00000000 0.25270177 +126.15000000 0.13960000 9812023.00000000 0.25172102 +126.20000000 0.13960000 9812023.00000000 0.25073337 +126.25000000 0.13960000 9812023.00000000 0.24973885 +126.30000000 0.13960000 9812023.00000000 0.24873748 +126.35000000 0.13960000 9812023.00000000 0.24772929 +126.40000000 0.13960000 9812023.00000000 0.24671431 +126.45000000 0.13960000 9812023.00000000 0.24569256 +126.50000000 0.13960000 9812023.00000000 0.24466408 +126.55000000 0.13960000 9812023.00000000 0.24362889 +126.60000000 0.13960000 9812023.00000000 0.24258703 +126.65000000 0.13960000 9812023.00000000 0.24153851 +126.70000000 0.13960000 9812023.00000000 0.24048337 +126.75000000 0.13960000 9812023.00000000 0.23942164 +126.80000000 0.13960000 9812023.00000000 0.23835334 +126.85000000 0.13960000 9812023.00000000 0.23727851 +126.90000000 0.13960000 9812023.00000000 0.23619717 +126.95000000 0.13960000 9812023.00000000 0.23510936 +127.00000000 0.13960000 9812023.00000000 0.23401510 +127.05000000 0.13960000 9812023.00000000 0.23291443 +127.10000000 0.13960000 9812023.00000000 0.23180737 +127.15000000 0.13960000 9812023.00000000 0.23069396 +127.20000000 0.13960000 9812023.00000000 0.22957422 +127.25000000 0.13960000 9812023.00000000 0.22844819 +127.30000000 0.13960000 9812023.00000000 0.22731589 +127.35000000 0.13960000 9812023.00000000 0.22617736 +127.40000000 0.13960000 9812023.00000000 0.22503264 +127.45000000 0.13960000 9812023.00000000 0.22388174 +127.50000000 0.13960000 9812023.00000000 0.22272470 +127.55000000 0.13960000 9812023.00000000 0.22156156 +127.60000000 0.13960000 9812023.00000000 0.22039235 +127.65000000 0.13960000 9812023.00000000 0.21921709 +127.70000000 0.13960000 9812023.00000000 0.21803582 +127.75000000 0.13960000 9812023.00000000 0.21684857 +127.80000000 0.13960000 9812023.00000000 0.21565538 +127.85000000 0.13960000 9812023.00000000 0.21445628 +127.90000000 0.13960000 9812023.00000000 0.21325130 +127.95000000 0.13960000 9812023.00000000 0.21204047 +128.00000000 0.13960000 9812023.00000000 0.21082383 +128.05000000 0.13960000 9812023.00000000 0.20960141 +128.10000000 0.13960000 9812023.00000000 0.20837324 +128.15000000 0.13960000 9812023.00000000 0.20713936 +128.20000000 0.13960000 9812023.00000000 0.20589980 +128.25000000 0.13960000 9812023.00000000 0.20465460 +128.30000000 0.13960000 9812023.00000000 0.20340378 +128.35000000 0.13960000 9812023.00000000 0.20214739 +128.40000000 0.13960000 9812023.00000000 0.20088546 +128.45000000 0.13960000 9812023.00000000 0.19961802 +128.50000000 0.13960000 9812023.00000000 0.19834510 +128.55000000 0.13960000 9812023.00000000 0.19706675 +128.60000000 0.13960000 9812023.00000000 0.19578300 +128.65000000 0.13960000 9812023.00000000 0.19449388 +128.70000000 0.13960000 9812023.00000000 0.19319942 +128.75000000 0.13960000 9812023.00000000 0.19189967 +128.80000000 0.13960000 9812023.00000000 0.19059466 +128.85000000 0.13960000 9812023.00000000 0.18928443 +128.90000000 0.13960000 9812023.00000000 0.18796900 +128.95000000 0.13960000 9812023.00000000 0.18664842 +129.00000000 0.13960000 9812023.00000000 0.18532273 +129.05000000 0.13960000 9812023.00000000 0.18399195 +129.10000000 0.13960000 9812023.00000000 0.18265613 +129.15000000 0.13960000 9812023.00000000 0.18131530 +129.20000000 0.13960000 9812023.00000000 0.17996950 +129.25000000 0.13960000 9812023.00000000 0.17861877 +129.30000000 0.13960000 9812023.00000000 0.17726314 +129.35000000 0.13960000 9812023.00000000 0.17590265 +129.40000000 0.13960000 9812023.00000000 0.17453734 +129.45000000 0.13960000 9812023.00000000 0.17316724 +129.50000000 0.13960000 9812023.00000000 0.17179239 +129.55000000 0.13960000 9812023.00000000 0.17041284 +129.60000000 0.13960000 9812023.00000000 0.16902861 +129.65000000 0.13960000 9812023.00000000 0.16763975 +129.70000000 0.13960000 9812023.00000000 0.16624630 +129.75000000 0.13960000 9812023.00000000 0.16484828 +129.80000000 0.13960000 9812023.00000000 0.16344575 +129.85000000 0.13960000 9812023.00000000 0.16203873 +129.90000000 0.13960000 9812023.00000000 0.16062728 +129.95000000 0.13960000 9812023.00000000 0.15921142 +130.00000000 0.13960000 9812023.00000000 0.15779119 +130.05000000 0.13960000 9812023.00000000 0.15636664 +130.10000000 0.13960000 9812023.00000000 0.15493780 +130.15000000 0.13960000 9812023.00000000 0.15350471 +130.20000000 0.13960000 9812023.00000000 0.15206742 +130.25000000 0.13960000 9812023.00000000 0.15062596 +130.30000000 0.13960000 9812023.00000000 0.14918036 +130.35000000 0.13960000 9812023.00000000 0.14773068 +130.40000000 0.13960000 9812023.00000000 0.14627695 +130.45000000 0.13960000 9812023.00000000 0.14481921 +130.50000000 0.13960000 9812023.00000000 0.14335749 +130.55000000 0.13960000 9812023.00000000 0.14189185 +130.60000000 0.13960000 9812023.00000000 0.14042231 +130.65000000 0.13960000 9812023.00000000 0.13894893 +130.70000000 0.13960000 9812023.00000000 0.13747174 +130.75000000 0.13960000 9812023.00000000 0.13599078 +130.80000000 0.13960000 9812023.00000000 0.13450609 +130.85000000 0.13960000 9812023.00000000 0.13301771 +130.90000000 0.13960000 9812023.00000000 0.13152569 +130.95000000 0.13960000 9812023.00000000 0.13003006 +131.00000000 0.13960000 9812023.00000000 0.12853086 +131.05000000 0.13960000 9812023.00000000 0.12702814 +131.10000000 0.13960000 9812023.00000000 0.12552194 +131.15000000 0.13960000 9812023.00000000 0.12401230 +131.20000000 0.13960000 9812023.00000000 0.12249926 +131.25000000 0.13960000 9812023.00000000 0.12098286 +131.30000000 0.13960000 9812023.00000000 0.11946314 +131.35000000 0.13960000 9812023.00000000 0.11794015 +131.40000000 0.13960000 9812023.00000000 0.11641392 +131.45000000 0.13960000 9812023.00000000 0.11488450 +131.50000000 0.13960000 9812023.00000000 0.11335193 +131.55000000 0.13960000 9812023.00000000 0.11181626 +131.60000000 0.13960000 9812023.00000000 0.11027752 +131.65000000 0.13960000 9812023.00000000 0.10873576 +131.70000000 0.13960000 9812023.00000000 0.10719101 +131.75000000 0.13960000 9812023.00000000 0.10564333 +131.80000000 0.13960000 9812023.00000000 0.10409275 +131.85000000 0.13960000 9812023.00000000 0.10253932 +131.90000000 0.13960000 9812023.00000000 0.10098307 +131.95000000 0.13960000 9812023.00000000 0.09942406 +132.00000000 0.13960000 9812023.00000000 0.09786232 +132.05000000 0.13960000 9812023.00000000 0.09629790 +132.10000000 0.13960000 9812023.00000000 0.09473084 +132.15000000 0.13960000 9812023.00000000 0.09316118 +132.20000000 0.13960000 9812023.00000000 0.09158896 +132.25000000 0.13960000 9812023.00000000 0.09001424 +132.30000000 0.13960000 9812023.00000000 0.08843705 +132.35000000 0.13960000 9812023.00000000 0.08685743 +132.40000000 0.13960000 9812023.00000000 0.08527543 +132.45000000 0.13960000 9812023.00000000 0.08369110 +132.50000000 0.13960000 9812023.00000000 0.08210447 +132.55000000 0.13960000 9812023.00000000 0.08051559 +132.60000000 0.13960000 9812023.00000000 0.07892450 +132.65000000 0.13960000 9812023.00000000 0.07733125 +132.70000000 0.13960000 9812023.00000000 0.07573588 +132.75000000 0.13960000 9812023.00000000 0.07413843 +132.80000000 0.13960000 9812023.00000000 0.07253895 +132.85000000 0.13960000 9812023.00000000 0.07093748 +132.90000000 0.13960000 9812023.00000000 0.06933406 +132.95000000 0.13960000 9812023.00000000 0.06772875 +133.00000000 0.13960000 9812023.00000000 0.06612158 +133.05000000 0.13960000 9812023.00000000 0.06451259 +133.10000000 0.13960000 9812023.00000000 0.06290184 +133.15000000 0.13960000 9812023.00000000 0.06128936 +133.20000000 0.13960000 9812023.00000000 0.05967520 +133.25000000 0.13960000 9812023.00000000 0.05805941 +133.30000000 0.13960000 9812023.00000000 0.05644202 +133.35000000 0.13960000 9812023.00000000 0.05482309 +133.40000000 0.13960000 9812023.00000000 0.05320265 +133.45000000 0.13960000 9812023.00000000 0.05158076 +133.50000000 0.13960000 9812023.00000000 0.04995745 +133.55000000 0.13960000 9812023.00000000 0.04833277 +133.60000000 0.13960000 9812023.00000000 0.04670677 +133.65000000 0.13960000 9812023.00000000 0.04507949 +133.70000000 0.13960000 9812023.00000000 0.04345097 +133.75000000 0.13960000 9812023.00000000 0.04182125 +133.80000000 0.13960000 9812023.00000000 0.04019040 +133.85000000 0.13960000 9812023.00000000 0.03855844 +133.90000000 0.13960000 9812023.00000000 0.03692542 +133.95000000 0.13960000 9812023.00000000 0.03529139 +134.00000000 0.13960000 9812023.00000000 0.03365639 +134.05000000 0.13960000 9812023.00000000 0.03202048 +134.10000000 0.13960000 9812023.00000000 0.03038368 +134.15000000 0.13960000 9812023.00000000 0.02874605 +134.20000000 0.13960000 9812023.00000000 0.02710763 +134.25000000 0.13960000 9812023.00000000 0.02546847 +134.30000000 0.13960000 9812023.00000000 0.02382861 +134.35000000 0.13960000 9812023.00000000 0.02218810 +134.40000000 0.13960000 9812023.00000000 0.02054698 +134.45000000 0.13960000 9812023.00000000 0.01890529 +134.50000000 0.13960000 9812023.00000000 0.01726309 +134.55000000 0.13960000 9812023.00000000 0.01562041 +134.60000000 0.13960000 9812023.00000000 0.01397731 +134.65000000 0.13960000 9812023.00000000 0.01233382 +134.70000000 0.13960000 9812023.00000000 0.01069000 +134.75000000 0.13960000 9812023.00000000 0.00904588 +134.80000000 0.13960000 9812023.00000000 0.00740151 +134.85000000 0.13960000 9812023.00000000 0.00575694 +134.90000000 0.13960000 9812023.00000000 0.00411221 +134.95000000 0.13960000 9812023.00000000 0.00246737 +135.00000000 0.13960000 9812023.00000000 0.00082247 +135.05000000 0.13960000 9812023.00000000 -0.00082247 +135.10000000 0.13960000 9812023.00000000 -0.00246737 +135.15000000 0.13960000 9812023.00000000 -0.00411221 +135.20000000 0.13960000 9812023.00000000 -0.00575694 +135.25000000 0.13960000 9812023.00000000 -0.00740151 +135.30000000 0.13960000 9812023.00000000 -0.00904588 +135.35000000 0.13960000 9812023.00000000 -0.01069000 +135.40000000 0.13960000 9812023.00000000 -0.01233382 +135.45000000 0.13960000 9812023.00000000 -0.01397731 +135.50000000 0.13960000 9812023.00000000 -0.01562041 +135.55000000 0.13960000 9812023.00000000 -0.01726309 +135.60000000 0.13960000 9812023.00000000 -0.01890529 +135.65000000 0.13960000 9812023.00000000 -0.02054698 +135.70000000 0.13960000 9812023.00000000 -0.02218810 +135.75000000 0.13960000 9812023.00000000 -0.02382861 +135.80000000 0.13960000 9812023.00000000 -0.02546847 +135.85000000 0.13960000 9812023.00000000 -0.02710763 +135.90000000 0.13960000 9812023.00000000 -0.02874605 +135.95000000 0.13960000 9812023.00000000 -0.03038368 +136.00000000 0.13960000 9812023.00000000 -0.03202048 +136.05000000 0.13960000 9812023.00000000 -0.03365639 +136.10000000 0.13960000 9812023.00000000 -0.03529139 +136.15000000 0.13960000 9812023.00000000 -0.03692542 +136.20000000 0.13960000 9812023.00000000 -0.03855844 +136.25000000 0.13960000 9812023.00000000 -0.04019040 +136.30000000 0.13960000 9812023.00000000 -0.04182125 +136.35000000 0.13960000 9812023.00000000 -0.04345097 +136.40000000 0.13960000 9812023.00000000 -0.04507949 +136.45000000 0.13960000 9812023.00000000 -0.04670677 +136.50000000 0.13960000 9812023.00000000 -0.04833277 +136.55000000 0.13960000 9812023.00000000 -0.04995745 +136.60000000 0.13960000 9812023.00000000 -0.05158076 +136.65000000 0.13960000 9812023.00000000 -0.05320265 +136.70000000 0.13960000 9812023.00000000 -0.05482309 +136.75000000 0.13960000 9812023.00000000 -0.05644202 +136.80000000 0.13960000 9812023.00000000 -0.05805941 +136.85000000 0.13960000 9812023.00000000 -0.05967520 +136.90000000 0.13960000 9812023.00000000 -0.06128936 +136.95000000 0.13960000 9812023.00000000 -0.06290184 +137.00000000 0.13960000 9812023.00000000 -0.06451259 +137.05000000 0.13960000 9812023.00000000 -0.06612158 +137.10000000 0.13960000 9812023.00000000 -0.06772875 +137.15000000 0.13960000 9812023.00000000 -0.06933406 +137.20000000 0.13960000 9812023.00000000 -0.07093748 +137.25000000 0.13960000 9812023.00000000 -0.07253895 +137.30000000 0.13960000 9812023.00000000 -0.07413843 +137.35000000 0.13960000 9812023.00000000 -0.07573588 +137.40000000 0.13960000 9812023.00000000 -0.07733125 +137.45000000 0.13960000 9812023.00000000 -0.07892450 +137.50000000 0.13960000 9812023.00000000 -0.08051559 +137.55000000 0.13960000 9812023.00000000 -0.08210447 +137.60000000 0.13960000 9812023.00000000 -0.08369110 +137.65000000 0.13960000 9812023.00000000 -0.08527543 +137.70000000 0.13960000 9812023.00000000 -0.08685743 +137.75000000 0.13960000 9812023.00000000 -0.08843705 +137.80000000 0.13960000 9812023.00000000 -0.09001424 +137.85000000 0.13960000 9812023.00000000 -0.09158896 +137.90000000 0.13960000 9812023.00000000 -0.09316118 +137.95000000 0.13960000 9812023.00000000 -0.09473084 +138.00000000 0.13960000 9812023.00000000 -0.09629790 +138.05000000 0.13960000 9812023.00000000 -0.09786232 +138.10000000 0.13960000 9812023.00000000 -0.09942406 +138.15000000 0.13960000 9812023.00000000 -0.10098307 +138.20000000 0.13960000 9812023.00000000 -0.10253932 +138.25000000 0.13960000 9812023.00000000 -0.10409275 +138.30000000 0.13960000 9812023.00000000 -0.10564333 +138.35000000 0.13960000 9812023.00000000 -0.10719101 +138.40000000 0.13960000 9812023.00000000 -0.10873576 +138.45000000 0.13960000 9812023.00000000 -0.11027752 +138.50000000 0.13960000 9812023.00000000 -0.11181626 +138.55000000 0.13960000 9812023.00000000 -0.11335193 +138.60000000 0.13960000 9812023.00000000 -0.11488450 +138.65000000 0.13960000 9812023.00000000 -0.11641392 +138.70000000 0.13960000 9812023.00000000 -0.11794015 +138.75000000 0.13960000 9812023.00000000 -0.11946314 +138.80000000 0.13960000 9812023.00000000 -0.12098286 +138.85000000 0.13960000 9812023.00000000 -0.12249926 +138.90000000 0.13960000 9812023.00000000 -0.12401230 +138.95000000 0.13960000 9812023.00000000 -0.12552194 +139.00000000 0.13960000 9812023.00000000 -0.12702814 +139.05000000 0.13960000 9812023.00000000 -0.12853086 +139.10000000 0.13960000 9812023.00000000 -0.13003006 +139.15000000 0.13960000 9812023.00000000 -0.13152569 +139.20000000 0.13960000 9812023.00000000 -0.13301771 +139.25000000 0.13960000 9812023.00000000 -0.13450609 +139.30000000 0.13960000 9812023.00000000 -0.13599078 +139.35000000 0.13960000 9812023.00000000 -0.13747174 +139.40000000 0.13960000 9812023.00000000 -0.13894893 +139.45000000 0.13960000 9812023.00000000 -0.14042231 +139.50000000 0.13960000 9812023.00000000 -0.14189185 +139.55000000 0.13960000 9812023.00000000 -0.14335749 +139.60000000 0.13960000 9812023.00000000 -0.14481921 +139.65000000 0.13960000 9812023.00000000 -0.14627695 +139.70000000 0.13960000 9812023.00000000 -0.14773068 +139.75000000 0.13960000 9812023.00000000 -0.14918036 +139.80000000 0.13960000 9812023.00000000 -0.15062596 +139.85000000 0.13960000 9812023.00000000 -0.15206742 +139.90000000 0.13960000 9812023.00000000 -0.15350471 +139.95000000 0.13960000 9812023.00000000 -0.15493780 +140.00000000 0.13960000 9812023.00000000 -0.15636664 +140.05000000 0.13960000 9812023.00000000 -0.15779119 +140.10000000 0.13960000 9812023.00000000 -0.15921142 +140.15000000 0.13960000 9812023.00000000 -0.16062728 +140.20000000 0.13960000 9812023.00000000 -0.16203873 +140.25000000 0.13960000 9812023.00000000 -0.16344575 +140.30000000 0.13960000 9812023.00000000 -0.16484828 +140.35000000 0.13960000 9812023.00000000 -0.16624630 +140.40000000 0.13960000 9812023.00000000 -0.16763975 +140.45000000 0.13960000 9812023.00000000 -0.16902861 +140.50000000 0.13960000 9812023.00000000 -0.17041284 +140.55000000 0.13960000 9812023.00000000 -0.17179239 +140.60000000 0.13960000 9812023.00000000 -0.17316724 +140.65000000 0.13960000 9812023.00000000 -0.17453734 +140.70000000 0.13960000 9812023.00000000 -0.17590265 +140.75000000 0.13960000 9812023.00000000 -0.17726314 +140.80000000 0.13960000 9812023.00000000 -0.17861877 +140.85000000 0.13960000 9812023.00000000 -0.17996950 +140.90000000 0.13960000 9812023.00000000 -0.18131530 +140.95000000 0.13960000 9812023.00000000 -0.18265613 +141.00000000 0.13960000 9812023.00000000 -0.18399195 +141.05000000 0.13960000 9812023.00000000 -0.18532273 +141.10000000 0.13960000 9812023.00000000 -0.18664842 +141.15000000 0.13960000 9812023.00000000 -0.18796900 +141.20000000 0.13960000 9812023.00000000 -0.18928443 +141.25000000 0.13960000 9812023.00000000 -0.19059466 +141.30000000 0.13960000 9812023.00000000 -0.19189967 +141.35000000 0.13960000 9812023.00000000 -0.19319942 +141.40000000 0.13960000 9812023.00000000 -0.19449388 +141.45000000 0.13960000 9812023.00000000 -0.19578300 +141.50000000 0.13960000 9812023.00000000 -0.19706675 +141.55000000 0.13960000 9812023.00000000 -0.19834510 +141.60000000 0.13960000 9812023.00000000 -0.19961802 +141.65000000 0.13960000 9812023.00000000 -0.20088546 +141.70000000 0.13960000 9812023.00000000 -0.20214739 +141.75000000 0.13960000 9812023.00000000 -0.20340378 +141.80000000 0.13960000 9812023.00000000 -0.20465460 +141.85000000 0.13960000 9812023.00000000 -0.20589980 +141.90000000 0.13960000 9812023.00000000 -0.20713936 +141.95000000 0.13960000 9812023.00000000 -0.20837324 +142.00000000 0.13960000 9812023.00000000 -0.20960141 +142.05000000 0.13960000 9812023.00000000 -0.21082383 +142.10000000 0.13960000 9812023.00000000 -0.21204047 +142.15000000 0.13960000 9812023.00000000 -0.21325130 +142.20000000 0.13960000 9812023.00000000 -0.21445628 +142.25000000 0.13960000 9812023.00000000 -0.21565538 +142.30000000 0.13960000 9812023.00000000 -0.21684857 +142.35000000 0.13960000 9812023.00000000 -0.21803582 +142.40000000 0.13960000 9812023.00000000 -0.21921709 +142.45000000 0.13960000 9812023.00000000 -0.22039235 +142.50000000 0.13960000 9812023.00000000 -0.22156156 +142.55000000 0.13960000 9812023.00000000 -0.22272470 +142.60000000 0.13960000 9812023.00000000 -0.22388174 +142.65000000 0.13960000 9812023.00000000 -0.22503264 +142.70000000 0.13960000 9812023.00000000 -0.22617736 +142.75000000 0.13960000 9812023.00000000 -0.22731589 +142.80000000 0.13960000 9812023.00000000 -0.22844819 +142.85000000 0.13960000 9812023.00000000 -0.22957422 +142.90000000 0.13960000 9812023.00000000 -0.23069396 +142.95000000 0.13960000 9812023.00000000 -0.23180737 +143.00000000 0.13960000 9812023.00000000 -0.23291443 +143.05000000 0.13960000 9812023.00000000 -0.23401510 +143.10000000 0.13960000 9812023.00000000 -0.23510936 +143.15000000 0.13960000 9812023.00000000 -0.23619717 +143.20000000 0.13960000 9812023.00000000 -0.23727851 +143.25000000 0.13960000 9812023.00000000 -0.23835334 +143.30000000 0.13960000 9812023.00000000 -0.23942164 +143.35000000 0.13960000 9812023.00000000 -0.24048337 +143.40000000 0.13960000 9812023.00000000 -0.24153851 +143.45000000 0.13960000 9812023.00000000 -0.24258703 +143.50000000 0.13960000 9812023.00000000 -0.24362889 +143.55000000 0.13960000 9812023.00000000 -0.24466408 +143.60000000 0.13960000 9812023.00000000 -0.24569256 +143.65000000 0.13960000 9812023.00000000 -0.24671431 +143.70000000 0.13960000 9812023.00000000 -0.24772929 +143.75000000 0.13960000 9812023.00000000 -0.24873748 +143.80000000 0.13960000 9812023.00000000 -0.24973885 +143.85000000 0.13960000 9812023.00000000 -0.25073337 +143.90000000 0.13960000 9812023.00000000 -0.25172102 +143.95000000 0.13960000 9812023.00000000 -0.25270177 +144.00000000 0.13960000 9812023.00000000 -0.25367559 +144.05000000 0.13960000 9812023.00000000 -0.25464246 +144.10000000 0.13960000 9812023.00000000 -0.25560234 +144.15000000 0.13960000 9812023.00000000 -0.25655522 +144.20000000 0.13960000 9812023.00000000 -0.25750106 +144.25000000 0.13960000 9812023.00000000 -0.25843985 +144.30000000 0.13960000 9812023.00000000 -0.25937154 +144.35000000 0.13960000 9812023.00000000 -0.26029613 +144.40000000 0.13960000 9812023.00000000 -0.26121358 +144.45000000 0.13960000 9812023.00000000 -0.26212387 +144.50000000 0.13960000 9812023.00000000 -0.26302698 +144.55000000 0.13960000 9812023.00000000 -0.26392287 +144.60000000 0.13960000 9812023.00000000 -0.26481153 +144.65000000 0.13960000 9812023.00000000 -0.26569293 +144.70000000 0.13960000 9812023.00000000 -0.26656704 +144.75000000 0.13960000 9812023.00000000 -0.26743385 +144.80000000 0.13960000 9812023.00000000 -0.26829332 +144.85000000 0.13960000 9812023.00000000 -0.26914544 +144.90000000 0.13960000 9812023.00000000 -0.26999018 +144.95000000 0.13960000 9812023.00000000 -0.27082752 +145.00000000 0.13960000 9812023.00000000 -0.27165743 +145.05000000 0.13960000 9812023.00000000 -0.27247989 +145.10000000 0.13960000 9812023.00000000 -0.27329489 +145.15000000 0.13960000 9812023.00000000 -0.27410239 +145.20000000 0.13960000 9812023.00000000 -0.27490238 +145.25000000 0.13960000 9812023.00000000 -0.27569483 +145.30000000 0.13960000 9812023.00000000 -0.27647972 +145.35000000 0.13960000 9812023.00000000 -0.27725704 +145.40000000 0.13960000 9812023.00000000 -0.27802675 +145.45000000 0.13960000 9812023.00000000 -0.27878884 +145.50000000 0.13960000 9812023.00000000 -0.27954328 +145.55000000 0.13960000 9812023.00000000 -0.28029007 +145.60000000 0.13960000 9812023.00000000 -0.28102917 +145.65000000 0.13960000 9812023.00000000 -0.28176056 +145.70000000 0.13960000 9812023.00000000 -0.28248423 +145.75000000 0.13960000 9812023.00000000 -0.28320015 +145.80000000 0.13960000 9812023.00000000 -0.28390831 +145.85000000 0.13960000 9812023.00000000 -0.28460869 +145.90000000 0.13960000 9812023.00000000 -0.28530127 +145.95000000 0.13960000 9812023.00000000 -0.28598602 +146.00000000 0.13960000 9812023.00000000 -0.28666293 +146.05000000 0.13960000 9812023.00000000 -0.28733199 +146.10000000 0.13960000 9812023.00000000 -0.28799316 +146.15000000 0.13960000 9812023.00000000 -0.28864644 +146.20000000 0.13960000 9812023.00000000 -0.28929181 +146.25000000 0.13960000 9812023.00000000 -0.28992925 +146.30000000 0.13960000 9812023.00000000 -0.29055873 +146.35000000 0.13960000 9812023.00000000 -0.29118025 +146.40000000 0.13960000 9812023.00000000 -0.29179379 +146.45000000 0.13960000 9812023.00000000 -0.29239933 +146.50000000 0.13960000 9812023.00000000 -0.29299686 +146.55000000 0.13960000 9812023.00000000 -0.29358635 +146.60000000 0.13960000 9812023.00000000 -0.29416779 +146.65000000 0.13960000 9812023.00000000 -0.29474116 +146.70000000 0.13960000 9812023.00000000 -0.29530646 +146.75000000 0.13960000 9812023.00000000 -0.29586366 +146.80000000 0.13960000 9812023.00000000 -0.29641275 +146.85000000 0.13960000 9812023.00000000 -0.29695371 +146.90000000 0.13960000 9812023.00000000 -0.29748653 +146.95000000 0.13960000 9812023.00000000 -0.29801120 +147.00000000 0.13960000 9812023.00000000 -0.29852770 +147.05000000 0.13960000 9812023.00000000 -0.29903601 +147.10000000 0.13960000 9812023.00000000 -0.29953612 +147.15000000 0.13960000 9812023.00000000 -0.30002802 +147.20000000 0.13960000 9812023.00000000 -0.30051170 +147.25000000 0.13960000 9812023.00000000 -0.30098713 +147.30000000 0.13960000 9812023.00000000 -0.30145432 +147.35000000 0.13960000 9812023.00000000 -0.30191324 +147.40000000 0.13960000 9812023.00000000 -0.30236388 +147.45000000 0.13960000 9812023.00000000 -0.30280624 +147.50000000 0.13960000 9812023.00000000 -0.30324029 +147.55000000 0.13960000 9812023.00000000 -0.30366603 +147.60000000 0.13960000 9812023.00000000 -0.30408345 +147.65000000 0.13960000 9812023.00000000 -0.30449252 +147.70000000 0.13960000 9812023.00000000 -0.30489325 +147.75000000 0.13960000 9812023.00000000 -0.30528562 +147.80000000 0.13960000 9812023.00000000 -0.30566962 +147.85000000 0.13960000 9812023.00000000 -0.30604525 +147.90000000 0.13960000 9812023.00000000 -0.30641248 +147.95000000 0.13960000 9812023.00000000 -0.30677131 +148.00000000 0.13960000 9812023.00000000 -0.30712173 +148.05000000 0.13960000 9812023.00000000 -0.30746373 +148.10000000 0.13960000 9812023.00000000 -0.30779730 +148.15000000 0.13960000 9812023.00000000 -0.30812243 +148.20000000 0.13960000 9812023.00000000 -0.30843912 +148.25000000 0.13960000 9812023.00000000 -0.30874735 +148.30000000 0.13960000 9812023.00000000 -0.30904711 +148.35000000 0.13960000 9812023.00000000 -0.30933840 +148.40000000 0.13960000 9812023.00000000 -0.30962121 +148.45000000 0.13960000 9812023.00000000 -0.30989554 +148.50000000 0.13960000 9812023.00000000 -0.31016136 +148.55000000 0.13960000 9812023.00000000 -0.31041869 +148.60000000 0.13960000 9812023.00000000 -0.31066750 +148.65000000 0.13960000 9812023.00000000 -0.31090780 +148.70000000 0.13960000 9812023.00000000 -0.31113957 +148.75000000 0.13960000 9812023.00000000 -0.31136281 +148.80000000 0.13960000 9812023.00000000 -0.31157752 +148.85000000 0.13960000 9812023.00000000 -0.31178368 +148.90000000 0.13960000 9812023.00000000 -0.31198130 +148.95000000 0.13960000 9812023.00000000 -0.31217036 +149.00000000 0.13960000 9812023.00000000 -0.31235087 +149.05000000 0.13960000 9812023.00000000 -0.31252281 +149.10000000 0.13960000 9812023.00000000 -0.31268619 +149.15000000 0.13960000 9812023.00000000 -0.31284099 +149.20000000 0.13960000 9812023.00000000 -0.31298721 +149.25000000 0.13960000 9812023.00000000 -0.31312486 +149.30000000 0.13960000 9812023.00000000 -0.31325392 +149.35000000 0.13960000 9812023.00000000 -0.31337439 +149.40000000 0.13960000 9812023.00000000 -0.31348627 +149.45000000 0.13960000 9812023.00000000 -0.31358955 +149.50000000 0.13960000 9812023.00000000 -0.31368424 +149.55000000 0.13960000 9812023.00000000 -0.31377033 +149.60000000 0.13960000 9812023.00000000 -0.31384782 +149.65000000 0.13960000 9812023.00000000 -0.31391670 +149.70000000 0.13960000 9812023.00000000 -0.31397698 +149.75000000 0.13960000 9812023.00000000 -0.31402865 +149.80000000 0.13960000 9812023.00000000 -0.31407171 +149.85000000 0.13960000 9812023.00000000 -0.31410615 +149.90000000 0.13960000 9812023.00000000 -0.31413199 +149.95000000 0.13960000 9812023.00000000 -0.31414922 +150.00000000 0.13960000 9812023.00000000 -0.31415783 +150.05000000 0.13960000 9812023.00000000 -0.31415783 +150.10000000 0.13960000 9812023.00000000 -0.31414922 +150.15000000 0.13960000 9812023.00000000 -0.31413199 +150.20000000 0.13960000 9812023.00000000 -0.31410615 +150.25000000 0.13960000 9812023.00000000 -0.31407171 +150.30000000 0.13960000 9812023.00000000 -0.31402865 +150.35000000 0.13960000 9812023.00000000 -0.31397698 +150.40000000 0.13960000 9812023.00000000 -0.31391670 +150.45000000 0.13960000 9812023.00000000 -0.31384782 +150.50000000 0.13960000 9812023.00000000 -0.31377033 +150.55000000 0.13960000 9812023.00000000 -0.31368424 +150.60000000 0.13960000 9812023.00000000 -0.31358955 +150.65000000 0.13960000 9812023.00000000 -0.31348627 +150.70000000 0.13960000 9812023.00000000 -0.31337439 +150.75000000 0.13960000 9812023.00000000 -0.31325392 +150.80000000 0.13960000 9812023.00000000 -0.31312486 +150.85000000 0.13960000 9812023.00000000 -0.31298721 +150.90000000 0.13960000 9812023.00000000 -0.31284099 +150.95000000 0.13960000 9812023.00000000 -0.31268619 +151.00000000 0.13960000 9812023.00000000 -0.31252281 +151.05000000 0.13960000 9812023.00000000 -0.31235087 +151.10000000 0.13960000 9812023.00000000 -0.31217036 +151.15000000 0.13960000 9812023.00000000 -0.31198130 +151.20000000 0.13960000 9812023.00000000 -0.31178368 +151.25000000 0.13960000 9812023.00000000 -0.31157752 +151.30000000 0.13960000 9812023.00000000 -0.31136281 +151.35000000 0.13960000 9812023.00000000 -0.31113957 +151.40000000 0.13960000 9812023.00000000 -0.31090780 +151.45000000 0.13960000 9812023.00000000 -0.31066750 +151.50000000 0.13960000 9812023.00000000 -0.31041869 +151.55000000 0.13960000 9812023.00000000 -0.31016136 +151.60000000 0.13960000 9812023.00000000 -0.30989554 +151.65000000 0.13960000 9812023.00000000 -0.30962121 +151.70000000 0.13960000 9812023.00000000 -0.30933840 +151.75000000 0.13960000 9812023.00000000 -0.30904711 +151.80000000 0.13960000 9812023.00000000 -0.30874735 +151.85000000 0.13960000 9812023.00000000 -0.30843912 +151.90000000 0.13960000 9812023.00000000 -0.30812243 +151.95000000 0.13960000 9812023.00000000 -0.30779730 +152.00000000 0.13960000 9812023.00000000 -0.30746373 +152.05000000 0.13960000 9812023.00000000 -0.30712173 +152.10000000 0.13960000 9812023.00000000 -0.30677131 +152.15000000 0.13960000 9812023.00000000 -0.30641248 +152.20000000 0.13960000 9812023.00000000 -0.30604525 +152.25000000 0.13960000 9812023.00000000 -0.30566962 +152.30000000 0.13960000 9812023.00000000 -0.30528562 +152.35000000 0.13960000 9812023.00000000 -0.30489325 +152.40000000 0.13960000 9812023.00000000 -0.30449252 +152.45000000 0.13960000 9812023.00000000 -0.30408345 +152.50000000 0.13960000 9812023.00000000 -0.30366603 +152.55000000 0.13960000 9812023.00000000 -0.30324029 +152.60000000 0.13960000 9812023.00000000 -0.30280624 +152.65000000 0.13960000 9812023.00000000 -0.30236388 +152.70000000 0.13960000 9812023.00000000 -0.30191324 +152.75000000 0.13960000 9812023.00000000 -0.30145432 +152.80000000 0.13960000 9812023.00000000 -0.30098713 +152.85000000 0.13960000 9812023.00000000 -0.30051170 +152.90000000 0.13960000 9812023.00000000 -0.30002802 +152.95000000 0.13960000 9812023.00000000 -0.29953612 +153.00000000 0.13960000 9812023.00000000 -0.29903601 +153.05000000 0.13960000 9812023.00000000 -0.29852770 +153.10000000 0.13960000 9812023.00000000 -0.29801120 +153.15000000 0.13960000 9812023.00000000 -0.29748653 +153.20000000 0.13960000 9812023.00000000 -0.29695371 +153.25000000 0.13960000 9812023.00000000 -0.29641275 +153.30000000 0.13960000 9812023.00000000 -0.29586366 +153.35000000 0.13960000 9812023.00000000 -0.29530646 +153.40000000 0.13960000 9812023.00000000 -0.29474116 +153.45000000 0.13960000 9812023.00000000 -0.29416779 +153.50000000 0.13960000 9812023.00000000 -0.29358635 +153.55000000 0.13960000 9812023.00000000 -0.29299686 +153.60000000 0.13960000 9812023.00000000 -0.29239933 +153.65000000 0.13960000 9812023.00000000 -0.29179379 +153.70000000 0.13960000 9812023.00000000 -0.29118025 +153.75000000 0.13960000 9812023.00000000 -0.29055873 +153.80000000 0.13960000 9812023.00000000 -0.28992925 +153.85000000 0.13960000 9812023.00000000 -0.28929181 +153.90000000 0.13960000 9812023.00000000 -0.28864644 +153.95000000 0.13960000 9812023.00000000 -0.28799316 +154.00000000 0.13960000 9812023.00000000 -0.28733199 +154.05000000 0.13960000 9812023.00000000 -0.28666293 +154.10000000 0.13960000 9812023.00000000 -0.28598602 +154.15000000 0.13960000 9812023.00000000 -0.28530127 +154.20000000 0.13960000 9812023.00000000 -0.28460869 +154.25000000 0.13960000 9812023.00000000 -0.28390831 +154.30000000 0.13960000 9812023.00000000 -0.28320015 +154.35000000 0.13960000 9812023.00000000 -0.28248423 +154.40000000 0.13960000 9812023.00000000 -0.28176056 +154.45000000 0.13960000 9812023.00000000 -0.28102917 +154.50000000 0.13960000 9812023.00000000 -0.28029007 +154.55000000 0.13960000 9812023.00000000 -0.27954328 +154.60000000 0.13960000 9812023.00000000 -0.27878884 +154.65000000 0.13960000 9812023.00000000 -0.27802675 +154.70000000 0.13960000 9812023.00000000 -0.27725704 +154.75000000 0.13960000 9812023.00000000 -0.27647972 +154.80000000 0.13960000 9812023.00000000 -0.27569483 +154.85000000 0.13960000 9812023.00000000 -0.27490238 +154.90000000 0.13960000 9812023.00000000 -0.27410239 +154.95000000 0.13960000 9812023.00000000 -0.27329489 +155.00000000 0.13960000 9812023.00000000 -0.27247989 +155.05000000 0.13960000 9812023.00000000 -0.27165743 +155.10000000 0.13960000 9812023.00000000 -0.27082752 +155.15000000 0.13960000 9812023.00000000 -0.26999018 +155.20000000 0.13960000 9812023.00000000 -0.26914544 +155.25000000 0.13960000 9812023.00000000 -0.26829332 +155.30000000 0.13960000 9812023.00000000 -0.26743385 +155.35000000 0.13960000 9812023.00000000 -0.26656704 +155.40000000 0.13960000 9812023.00000000 -0.26569293 +155.45000000 0.13960000 9812023.00000000 -0.26481153 +155.50000000 0.13960000 9812023.00000000 -0.26392287 +155.55000000 0.13960000 9812023.00000000 -0.26302698 +155.60000000 0.13960000 9812023.00000000 -0.26212387 +155.65000000 0.13960000 9812023.00000000 -0.26121358 +155.70000000 0.13960000 9812023.00000000 -0.26029613 +155.75000000 0.13960000 9812023.00000000 -0.25937154 +155.80000000 0.13960000 9812023.00000000 -0.25843985 +155.85000000 0.13960000 9812023.00000000 -0.25750106 +155.90000000 0.13960000 9812023.00000000 -0.25655522 +155.95000000 0.13960000 9812023.00000000 -0.25560234 +156.00000000 0.13960000 9812023.00000000 -0.25464246 +156.05000000 0.13960000 9812023.00000000 -0.25367559 +156.10000000 0.13960000 9812023.00000000 -0.25270177 +156.15000000 0.13960000 9812023.00000000 -0.25172102 +156.20000000 0.13960000 9812023.00000000 -0.25073337 +156.25000000 0.13960000 9812023.00000000 -0.24973885 +156.30000000 0.13960000 9812023.00000000 -0.24873748 +156.35000000 0.13960000 9812023.00000000 -0.24772929 +156.40000000 0.13960000 9812023.00000000 -0.24671431 +156.45000000 0.13960000 9812023.00000000 -0.24569256 +156.50000000 0.13960000 9812023.00000000 -0.24466408 +156.55000000 0.13960000 9812023.00000000 -0.24362889 +156.60000000 0.13960000 9812023.00000000 -0.24258703 +156.65000000 0.13960000 9812023.00000000 -0.24153851 +156.70000000 0.13960000 9812023.00000000 -0.24048337 +156.75000000 0.13960000 9812023.00000000 -0.23942164 +156.80000000 0.13960000 9812023.00000000 -0.23835334 +156.85000000 0.13960000 9812023.00000000 -0.23727851 +156.90000000 0.13960000 9812023.00000000 -0.23619717 +156.95000000 0.13960000 9812023.00000000 -0.23510936 +157.00000000 0.13960000 9812023.00000000 -0.23401510 +157.05000000 0.13960000 9812023.00000000 -0.23291443 +157.10000000 0.13960000 9812023.00000000 -0.23180737 +157.15000000 0.13960000 9812023.00000000 -0.23069396 +157.20000000 0.13960000 9812023.00000000 -0.22957422 +157.25000000 0.13960000 9812023.00000000 -0.22844819 +157.30000000 0.13960000 9812023.00000000 -0.22731589 +157.35000000 0.13960000 9812023.00000000 -0.22617736 +157.40000000 0.13960000 9812023.00000000 -0.22503264 +157.45000000 0.13960000 9812023.00000000 -0.22388174 +157.50000000 0.13960000 9812023.00000000 -0.22272470 +157.55000000 0.13960000 9812023.00000000 -0.22156156 +157.60000000 0.13960000 9812023.00000000 -0.22039235 +157.65000000 0.13960000 9812023.00000000 -0.21921709 +157.70000000 0.13960000 9812023.00000000 -0.21803582 +157.75000000 0.13960000 9812023.00000000 -0.21684857 +157.80000000 0.13960000 9812023.00000000 -0.21565538 +157.85000000 0.13960000 9812023.00000000 -0.21445628 +157.90000000 0.13960000 9812023.00000000 -0.21325130 +157.95000000 0.13960000 9812023.00000000 -0.21204047 +158.00000000 0.13960000 9812023.00000000 -0.21082383 +158.05000000 0.13960000 9812023.00000000 -0.20960141 +158.10000000 0.13960000 9812023.00000000 -0.20837324 +158.15000000 0.13960000 9812023.00000000 -0.20713936 +158.20000000 0.13960000 9812023.00000000 -0.20589980 +158.25000000 0.13960000 9812023.00000000 -0.20465460 +158.30000000 0.13960000 9812023.00000000 -0.20340378 +158.35000000 0.13960000 9812023.00000000 -0.20214739 +158.40000000 0.13960000 9812023.00000000 -0.20088546 +158.45000000 0.13960000 9812023.00000000 -0.19961802 +158.50000000 0.13960000 9812023.00000000 -0.19834510 +158.55000000 0.13960000 9812023.00000000 -0.19706675 +158.60000000 0.13960000 9812023.00000000 -0.19578300 +158.65000000 0.13960000 9812023.00000000 -0.19449388 +158.70000000 0.13960000 9812023.00000000 -0.19319942 +158.75000000 0.13960000 9812023.00000000 -0.19189967 +158.80000000 0.13960000 9812023.00000000 -0.19059466 +158.85000000 0.13960000 9812023.00000000 -0.18928443 +158.90000000 0.13960000 9812023.00000000 -0.18796900 +158.95000000 0.13960000 9812023.00000000 -0.18664842 +159.00000000 0.13960000 9812023.00000000 -0.18532273 +159.05000000 0.13960000 9812023.00000000 -0.18399195 +159.10000000 0.13960000 9812023.00000000 -0.18265613 +159.15000000 0.13960000 9812023.00000000 -0.18131530 +159.20000000 0.13960000 9812023.00000000 -0.17996950 +159.25000000 0.13960000 9812023.00000000 -0.17861877 +159.30000000 0.13960000 9812023.00000000 -0.17726314 +159.35000000 0.13960000 9812023.00000000 -0.17590265 +159.40000000 0.13960000 9812023.00000000 -0.17453734 +159.45000000 0.13960000 9812023.00000000 -0.17316724 +159.50000000 0.13960000 9812023.00000000 -0.17179239 +159.55000000 0.13960000 9812023.00000000 -0.17041284 +159.60000000 0.13960000 9812023.00000000 -0.16902861 +159.65000000 0.13960000 9812023.00000000 -0.16763975 +159.70000000 0.13960000 9812023.00000000 -0.16624630 +159.75000000 0.13960000 9812023.00000000 -0.16484828 +159.80000000 0.13960000 9812023.00000000 -0.16344575 +159.85000000 0.13960000 9812023.00000000 -0.16203873 +159.90000000 0.13960000 9812023.00000000 -0.16062728 +159.95000000 0.13960000 9812023.00000000 -0.15921142 +160.00000000 0.13960000 9812023.00000000 -0.15779119 +160.05000000 0.13960000 9812023.00000000 -0.15636664 +160.10000000 0.13960000 9812023.00000000 -0.15493780 +160.15000000 0.13960000 9812023.00000000 -0.15350471 +160.20000000 0.13960000 9812023.00000000 -0.15206742 +160.25000000 0.13960000 9812023.00000000 -0.15062596 +160.30000000 0.13960000 9812023.00000000 -0.14918036 +160.35000000 0.13960000 9812023.00000000 -0.14773068 +160.40000000 0.13960000 9812023.00000000 -0.14627695 +160.45000000 0.13960000 9812023.00000000 -0.14481921 +160.50000000 0.13960000 9812023.00000000 -0.14335749 +160.55000000 0.13960000 9812023.00000000 -0.14189185 +160.60000000 0.13960000 9812023.00000000 -0.14042231 +160.65000000 0.13960000 9812023.00000000 -0.13894893 +160.70000000 0.13960000 9812023.00000000 -0.13747174 +160.75000000 0.13960000 9812023.00000000 -0.13599078 +160.80000000 0.13960000 9812023.00000000 -0.13450609 +160.85000000 0.13960000 9812023.00000000 -0.13301771 +160.90000000 0.13960000 9812023.00000000 -0.13152569 +160.95000000 0.13960000 9812023.00000000 -0.13003006 +161.00000000 0.13960000 9812023.00000000 -0.12853086 +161.05000000 0.13960000 9812023.00000000 -0.12702814 +161.10000000 0.13960000 9812023.00000000 -0.12552194 +161.15000000 0.13960000 9812023.00000000 -0.12401230 +161.20000000 0.13960000 9812023.00000000 -0.12249926 +161.25000000 0.13960000 9812023.00000000 -0.12098286 +161.30000000 0.13960000 9812023.00000000 -0.11946314 +161.35000000 0.13960000 9812023.00000000 -0.11794015 +161.40000000 0.13960000 9812023.00000000 -0.11641392 +161.45000000 0.13960000 9812023.00000000 -0.11488450 +161.50000000 0.13960000 9812023.00000000 -0.11335193 +161.55000000 0.13960000 9812023.00000000 -0.11181626 +161.60000000 0.13960000 9812023.00000000 -0.11027752 +161.65000000 0.13960000 9812023.00000000 -0.10873576 +161.70000000 0.13960000 9812023.00000000 -0.10719101 +161.75000000 0.13960000 9812023.00000000 -0.10564333 +161.80000000 0.13960000 9812023.00000000 -0.10409275 +161.85000000 0.13960000 9812023.00000000 -0.10253932 +161.90000000 0.13960000 9812023.00000000 -0.10098307 +161.95000000 0.13960000 9812023.00000000 -0.09942406 +162.00000000 0.13960000 9812023.00000000 -0.09786232 +162.05000000 0.13960000 9812023.00000000 -0.09629790 +162.10000000 0.13960000 9812023.00000000 -0.09473084 +162.15000000 0.13960000 9812023.00000000 -0.09316118 +162.20000000 0.13960000 9812023.00000000 -0.09158896 +162.25000000 0.13960000 9812023.00000000 -0.09001424 +162.30000000 0.13960000 9812023.00000000 -0.08843705 +162.35000000 0.13960000 9812023.00000000 -0.08685743 +162.40000000 0.13960000 9812023.00000000 -0.08527543 +162.45000000 0.13960000 9812023.00000000 -0.08369110 +162.50000000 0.13960000 9812023.00000000 -0.08210447 +162.55000000 0.13960000 9812023.00000000 -0.08051559 +162.60000000 0.13960000 9812023.00000000 -0.07892450 +162.65000000 0.13960000 9812023.00000000 -0.07733125 +162.70000000 0.13960000 9812023.00000000 -0.07573588 +162.75000000 0.13960000 9812023.00000000 -0.07413843 +162.80000000 0.13960000 9812023.00000000 -0.07253895 +162.85000000 0.13960000 9812023.00000000 -0.07093748 +162.90000000 0.13960000 9812023.00000000 -0.06933406 +162.95000000 0.13960000 9812023.00000000 -0.06772875 +163.00000000 0.13960000 9812023.00000000 -0.06612158 +163.05000000 0.13960000 9812023.00000000 -0.06451259 +163.10000000 0.13960000 9812023.00000000 -0.06290184 +163.15000000 0.13960000 9812023.00000000 -0.06128936 +163.20000000 0.13960000 9812023.00000000 -0.05967520 +163.25000000 0.13960000 9812023.00000000 -0.05805941 +163.30000000 0.13960000 9812023.00000000 -0.05644202 +163.35000000 0.13960000 9812023.00000000 -0.05482309 +163.40000000 0.13960000 9812023.00000000 -0.05320265 +163.45000000 0.13960000 9812023.00000000 -0.05158076 +163.50000000 0.13960000 9812023.00000000 -0.04995745 +163.55000000 0.13960000 9812023.00000000 -0.04833277 +163.60000000 0.13960000 9812023.00000000 -0.04670677 +163.65000000 0.13960000 9812023.00000000 -0.04507949 +163.70000000 0.13960000 9812023.00000000 -0.04345097 +163.75000000 0.13960000 9812023.00000000 -0.04182125 +163.80000000 0.13960000 9812023.00000000 -0.04019040 +163.85000000 0.13960000 9812023.00000000 -0.03855844 +163.90000000 0.13960000 9812023.00000000 -0.03692542 +163.95000000 0.13960000 9812023.00000000 -0.03529139 +164.00000000 0.13960000 9812023.00000000 -0.03365639 +164.05000000 0.13960000 9812023.00000000 -0.03202048 +164.10000000 0.13960000 9812023.00000000 -0.03038368 +164.15000000 0.13960000 9812023.00000000 -0.02874605 +164.20000000 0.13960000 9812023.00000000 -0.02710763 +164.25000000 0.13960000 9812023.00000000 -0.02546847 +164.30000000 0.13960000 9812023.00000000 -0.02382861 +164.35000000 0.13960000 9812023.00000000 -0.02218810 +164.40000000 0.13960000 9812023.00000000 -0.02054698 +164.45000000 0.13960000 9812023.00000000 -0.01890529 +164.50000000 0.13960000 9812023.00000000 -0.01726309 +164.55000000 0.13960000 9812023.00000000 -0.01562041 +164.60000000 0.13960000 9812023.00000000 -0.01397731 +164.65000000 0.13960000 9812023.00000000 -0.01233382 +164.70000000 0.13960000 9812023.00000000 -0.01069000 +164.75000000 0.13960000 9812023.00000000 -0.00904588 +164.80000000 0.13960000 9812023.00000000 -0.00740151 +164.85000000 0.13960000 9812023.00000000 -0.00575694 +164.90000000 0.13960000 9812023.00000000 -0.00411221 +164.95000000 0.13960000 9812023.00000000 -0.00246737 +165.00000000 0.13960000 9812023.00000000 -0.00082247 +165.05000000 0.13960000 9812023.00000000 0.00082247 +165.10000000 0.13960000 9812023.00000000 0.00246737 +165.15000000 0.13960000 9812023.00000000 0.00411221 +165.20000000 0.13960000 9812023.00000000 0.00575694 +165.25000000 0.13960000 9812023.00000000 0.00740151 +165.30000000 0.13960000 9812023.00000000 0.00904588 +165.35000000 0.13960000 9812023.00000000 0.01069000 +165.40000000 0.13960000 9812023.00000000 0.01233382 +165.45000000 0.13960000 9812023.00000000 0.01397731 +165.50000000 0.13960000 9812023.00000000 0.01562041 +165.55000000 0.13960000 9812023.00000000 0.01726309 +165.60000000 0.13960000 9812023.00000000 0.01890529 +165.65000000 0.13960000 9812023.00000000 0.02054698 +165.70000000 0.13960000 9812023.00000000 0.02218810 +165.75000000 0.13960000 9812023.00000000 0.02382861 +165.80000000 0.13960000 9812023.00000000 0.02546847 +165.85000000 0.13960000 9812023.00000000 0.02710763 +165.90000000 0.13960000 9812023.00000000 0.02874605 +165.95000000 0.13960000 9812023.00000000 0.03038368 +166.00000000 0.13960000 9812023.00000000 0.03202048 +166.05000000 0.13960000 9812023.00000000 0.03365639 +166.10000000 0.13960000 9812023.00000000 0.03529139 +166.15000000 0.13960000 9812023.00000000 0.03692542 +166.20000000 0.13960000 9812023.00000000 0.03855844 +166.25000000 0.13960000 9812023.00000000 0.04019040 +166.30000000 0.13960000 9812023.00000000 0.04182125 +166.35000000 0.13960000 9812023.00000000 0.04345097 +166.40000000 0.13960000 9812023.00000000 0.04507949 +166.45000000 0.13960000 9812023.00000000 0.04670677 +166.50000000 0.13960000 9812023.00000000 0.04833277 +166.55000000 0.13960000 9812023.00000000 0.04995745 +166.60000000 0.13960000 9812023.00000000 0.05158076 +166.65000000 0.13960000 9812023.00000000 0.05320265 +166.70000000 0.13960000 9812023.00000000 0.05482309 +166.75000000 0.13960000 9812023.00000000 0.05644202 +166.80000000 0.13960000 9812023.00000000 0.05805941 +166.85000000 0.13960000 9812023.00000000 0.05967520 +166.90000000 0.13960000 9812023.00000000 0.06128936 +166.95000000 0.13960000 9812023.00000000 0.06290184 +167.00000000 0.13960000 9812023.00000000 0.06451259 +167.05000000 0.13960000 9812023.00000000 0.06612158 +167.10000000 0.13960000 9812023.00000000 0.06772875 +167.15000000 0.13960000 9812023.00000000 0.06933406 +167.20000000 0.13960000 9812023.00000000 0.07093748 +167.25000000 0.13960000 9812023.00000000 0.07253895 +167.30000000 0.13960000 9812023.00000000 0.07413843 +167.35000000 0.13960000 9812023.00000000 0.07573588 +167.40000000 0.13960000 9812023.00000000 0.07733125 +167.45000000 0.13960000 9812023.00000000 0.07892450 +167.50000000 0.13960000 9812023.00000000 0.08051559 +167.55000000 0.13960000 9812023.00000000 0.08210447 +167.60000000 0.13960000 9812023.00000000 0.08369110 +167.65000000 0.13960000 9812023.00000000 0.08527543 +167.70000000 0.13960000 9812023.00000000 0.08685743 +167.75000000 0.13960000 9812023.00000000 0.08843705 +167.80000000 0.13960000 9812023.00000000 0.09001424 +167.85000000 0.13960000 9812023.00000000 0.09158896 +167.90000000 0.13960000 9812023.00000000 0.09316118 +167.95000000 0.13960000 9812023.00000000 0.09473084 +168.00000000 0.13960000 9812023.00000000 0.09629790 +168.05000000 0.13960000 9812023.00000000 0.09786232 +168.10000000 0.13960000 9812023.00000000 0.09942406 +168.15000000 0.13960000 9812023.00000000 0.10098307 +168.20000000 0.13960000 9812023.00000000 0.10253932 +168.25000000 0.13960000 9812023.00000000 0.10409275 +168.30000000 0.13960000 9812023.00000000 0.10564333 +168.35000000 0.13960000 9812023.00000000 0.10719101 +168.40000000 0.13960000 9812023.00000000 0.10873576 +168.45000000 0.13960000 9812023.00000000 0.11027752 +168.50000000 0.13960000 9812023.00000000 0.11181626 +168.55000000 0.13960000 9812023.00000000 0.11335193 +168.60000000 0.13960000 9812023.00000000 0.11488450 +168.65000000 0.13960000 9812023.00000000 0.11641392 +168.70000000 0.13960000 9812023.00000000 0.11794015 +168.75000000 0.13960000 9812023.00000000 0.11946314 +168.80000000 0.13960000 9812023.00000000 0.12098286 +168.85000000 0.13960000 9812023.00000000 0.12249926 +168.90000000 0.13960000 9812023.00000000 0.12401230 +168.95000000 0.13960000 9812023.00000000 0.12552194 +169.00000000 0.13960000 9812023.00000000 0.12702814 +169.05000000 0.13960000 9812023.00000000 0.12853086 +169.10000000 0.13960000 9812023.00000000 0.13003006 +169.15000000 0.13960000 9812023.00000000 0.13152569 +169.20000000 0.13960000 9812023.00000000 0.13301771 +169.25000000 0.13960000 9812023.00000000 0.13450609 +169.30000000 0.13960000 9812023.00000000 0.13599078 +169.35000000 0.13960000 9812023.00000000 0.13747174 +169.40000000 0.13960000 9812023.00000000 0.13894893 +169.45000000 0.13960000 9812023.00000000 0.14042231 +169.50000000 0.13960000 9812023.00000000 0.14189185 +169.55000000 0.13960000 9812023.00000000 0.14335749 +169.60000000 0.13960000 9812023.00000000 0.14481921 +169.65000000 0.13960000 9812023.00000000 0.14627695 +169.70000000 0.13960000 9812023.00000000 0.14773068 +169.75000000 0.13960000 9812023.00000000 0.14918036 +169.80000000 0.13960000 9812023.00000000 0.15062596 +169.85000000 0.13960000 9812023.00000000 0.15206742 +169.90000000 0.13960000 9812023.00000000 0.15350471 +169.95000000 0.13960000 9812023.00000000 0.15493780 +170.00000000 0.13960000 9812023.00000000 0.15636664 +170.05000000 0.13960000 9812023.00000000 0.15779119 +170.10000000 0.13960000 9812023.00000000 0.15921142 +170.15000000 0.13960000 9812023.00000000 0.16062728 +170.20000000 0.13960000 9812023.00000000 0.16203873 +170.25000000 0.13960000 9812023.00000000 0.16344575 +170.30000000 0.13960000 9812023.00000000 0.16484828 +170.35000000 0.13960000 9812023.00000000 0.16624630 +170.40000000 0.13960000 9812023.00000000 0.16763975 +170.45000000 0.13960000 9812023.00000000 0.16902861 +170.50000000 0.13960000 9812023.00000000 0.17041284 +170.55000000 0.13960000 9812023.00000000 0.17179239 +170.60000000 0.13960000 9812023.00000000 0.17316724 +170.65000000 0.13960000 9812023.00000000 0.17453734 +170.70000000 0.13960000 9812023.00000000 0.17590265 +170.75000000 0.13960000 9812023.00000000 0.17726314 +170.80000000 0.13960000 9812023.00000000 0.17861877 +170.85000000 0.13960000 9812023.00000000 0.17996950 +170.90000000 0.13960000 9812023.00000000 0.18131530 +170.95000000 0.13960000 9812023.00000000 0.18265613 +171.00000000 0.13960000 9812023.00000000 0.18399195 +171.05000000 0.13960000 9812023.00000000 0.18532273 +171.10000000 0.13960000 9812023.00000000 0.18664842 +171.15000000 0.13960000 9812023.00000000 0.18796900 +171.20000000 0.13960000 9812023.00000000 0.18928443 +171.25000000 0.13960000 9812023.00000000 0.19059466 +171.30000000 0.13960000 9812023.00000000 0.19189967 +171.35000000 0.13960000 9812023.00000000 0.19319942 +171.40000000 0.13960000 9812023.00000000 0.19449388 +171.45000000 0.13960000 9812023.00000000 0.19578300 +171.50000000 0.13960000 9812023.00000000 0.19706675 +171.55000000 0.13960000 9812023.00000000 0.19834510 +171.60000000 0.13960000 9812023.00000000 0.19961802 +171.65000000 0.13960000 9812023.00000000 0.20088546 +171.70000000 0.13960000 9812023.00000000 0.20214739 +171.75000000 0.13960000 9812023.00000000 0.20340378 +171.80000000 0.13960000 9812023.00000000 0.20465460 +171.85000000 0.13960000 9812023.00000000 0.20589980 +171.90000000 0.13960000 9812023.00000000 0.20713936 +171.95000000 0.13960000 9812023.00000000 0.20837324 +172.00000000 0.13960000 9812023.00000000 0.20960141 +172.05000000 0.13960000 9812023.00000000 0.21082383 +172.10000000 0.13960000 9812023.00000000 0.21204047 +172.15000000 0.13960000 9812023.00000000 0.21325130 +172.20000000 0.13960000 9812023.00000000 0.21445628 +172.25000000 0.13960000 9812023.00000000 0.21565538 +172.30000000 0.13960000 9812023.00000000 0.21684857 +172.35000000 0.13960000 9812023.00000000 0.21803582 +172.40000000 0.13960000 9812023.00000000 0.21921709 +172.45000000 0.13960000 9812023.00000000 0.22039235 +172.50000000 0.13960000 9812023.00000000 0.22156156 +172.55000000 0.13960000 9812023.00000000 0.22272470 +172.60000000 0.13960000 9812023.00000000 0.22388174 +172.65000000 0.13960000 9812023.00000000 0.22503264 +172.70000000 0.13960000 9812023.00000000 0.22617736 +172.75000000 0.13960000 9812023.00000000 0.22731589 +172.80000000 0.13960000 9812023.00000000 0.22844819 +172.85000000 0.13960000 9812023.00000000 0.22957422 +172.90000000 0.13960000 9812023.00000000 0.23069396 +172.95000000 0.13960000 9812023.00000000 0.23180737 +173.00000000 0.13960000 9812023.00000000 0.23291443 +173.05000000 0.13960000 9812023.00000000 0.23401510 +173.10000000 0.13960000 9812023.00000000 0.23510936 +173.15000000 0.13960000 9812023.00000000 0.23619717 +173.20000000 0.13960000 9812023.00000000 0.23727851 +173.25000000 0.13960000 9812023.00000000 0.23835334 +173.30000000 0.13960000 9812023.00000000 0.23942164 +173.35000000 0.13960000 9812023.00000000 0.24048337 +173.40000000 0.13960000 9812023.00000000 0.24153851 +173.45000000 0.13960000 9812023.00000000 0.24258703 +173.50000000 0.13960000 9812023.00000000 0.24362889 +173.55000000 0.13960000 9812023.00000000 0.24466408 +173.60000000 0.13960000 9812023.00000000 0.24569256 +173.65000000 0.13960000 9812023.00000000 0.24671431 +173.70000000 0.13960000 9812023.00000000 0.24772929 +173.75000000 0.13960000 9812023.00000000 0.24873748 +173.80000000 0.13960000 9812023.00000000 0.24973885 +173.85000000 0.13960000 9812023.00000000 0.25073337 +173.90000000 0.13960000 9812023.00000000 0.25172102 +173.95000000 0.13960000 9812023.00000000 0.25270177 +174.00000000 0.13960000 9812023.00000000 0.25367559 +174.05000000 0.13960000 9812023.00000000 0.25464246 +174.10000000 0.13960000 9812023.00000000 0.25560234 +174.15000000 0.13960000 9812023.00000000 0.25655522 +174.20000000 0.13960000 9812023.00000000 0.25750106 +174.25000000 0.13960000 9812023.00000000 0.25843985 +174.30000000 0.13960000 9812023.00000000 0.25937154 +174.35000000 0.13960000 9812023.00000000 0.26029613 +174.40000000 0.13960000 9812023.00000000 0.26121358 +174.45000000 0.13960000 9812023.00000000 0.26212387 +174.50000000 0.13960000 9812023.00000000 0.26302698 +174.55000000 0.13960000 9812023.00000000 0.26392287 +174.60000000 0.13960000 9812023.00000000 0.26481153 +174.65000000 0.13960000 9812023.00000000 0.26569293 +174.70000000 0.13960000 9812023.00000000 0.26656704 +174.75000000 0.13960000 9812023.00000000 0.26743385 +174.80000000 0.13960000 9812023.00000000 0.26829332 +174.85000000 0.13960000 9812023.00000000 0.26914544 +174.90000000 0.13960000 9812023.00000000 0.26999018 +174.95000000 0.13960000 9812023.00000000 0.27082752 +175.00000000 0.13960000 9812023.00000000 0.27165743 +175.05000000 0.13960000 9812023.00000000 0.27247989 +175.10000000 0.13960000 9812023.00000000 0.27329489 +175.15000000 0.13960000 9812023.00000000 0.27410239 +175.20000000 0.13960000 9812023.00000000 0.27490238 +175.25000000 0.13960000 9812023.00000000 0.27569483 +175.30000000 0.13960000 9812023.00000000 0.27647972 +175.35000000 0.13960000 9812023.00000000 0.27725704 +175.40000000 0.13960000 9812023.00000000 0.27802675 +175.45000000 0.13960000 9812023.00000000 0.27878884 +175.50000000 0.13960000 9812023.00000000 0.27954328 +175.55000000 0.13960000 9812023.00000000 0.28029007 +175.60000000 0.13960000 9812023.00000000 0.28102917 +175.65000000 0.13960000 9812023.00000000 0.28176056 +175.70000000 0.13960000 9812023.00000000 0.28248423 +175.75000000 0.13960000 9812023.00000000 0.28320015 +175.80000000 0.13960000 9812023.00000000 0.28390831 +175.85000000 0.13960000 9812023.00000000 0.28460869 +175.90000000 0.13960000 9812023.00000000 0.28530127 +175.95000000 0.13960000 9812023.00000000 0.28598602 +176.00000000 0.13960000 9812023.00000000 0.28666293 +176.05000000 0.13960000 9812023.00000000 0.28733199 +176.10000000 0.13960000 9812023.00000000 0.28799316 +176.15000000 0.13960000 9812023.00000000 0.28864644 +176.20000000 0.13960000 9812023.00000000 0.28929181 +176.25000000 0.13960000 9812023.00000000 0.28992925 +176.30000000 0.13960000 9812023.00000000 0.29055873 +176.35000000 0.13960000 9812023.00000000 0.29118025 +176.40000000 0.13960000 9812023.00000000 0.29179379 +176.45000000 0.13960000 9812023.00000000 0.29239933 +176.50000000 0.13960000 9812023.00000000 0.29299686 +176.55000000 0.13960000 9812023.00000000 0.29358635 +176.60000000 0.13960000 9812023.00000000 0.29416779 +176.65000000 0.13960000 9812023.00000000 0.29474116 +176.70000000 0.13960000 9812023.00000000 0.29530646 +176.75000000 0.13960000 9812023.00000000 0.29586366 +176.80000000 0.13960000 9812023.00000000 0.29641275 +176.85000000 0.13960000 9812023.00000000 0.29695371 +176.90000000 0.13960000 9812023.00000000 0.29748653 +176.95000000 0.13960000 9812023.00000000 0.29801120 +177.00000000 0.13960000 9812023.00000000 0.29852770 +177.05000000 0.13960000 9812023.00000000 0.29903601 +177.10000000 0.13960000 9812023.00000000 0.29953612 +177.15000000 0.13960000 9812023.00000000 0.30002802 +177.20000000 0.13960000 9812023.00000000 0.30051170 +177.25000000 0.13960000 9812023.00000000 0.30098713 +177.30000000 0.13960000 9812023.00000000 0.30145432 +177.35000000 0.13960000 9812023.00000000 0.30191324 +177.40000000 0.13960000 9812023.00000000 0.30236388 +177.45000000 0.13960000 9812023.00000000 0.30280624 +177.50000000 0.13960000 9812023.00000000 0.30324029 +177.55000000 0.13960000 9812023.00000000 0.30366603 +177.60000000 0.13960000 9812023.00000000 0.30408345 +177.65000000 0.13960000 9812023.00000000 0.30449252 +177.70000000 0.13960000 9812023.00000000 0.30489325 +177.75000000 0.13960000 9812023.00000000 0.30528562 +177.80000000 0.13960000 9812023.00000000 0.30566962 +177.85000000 0.13960000 9812023.00000000 0.30604525 +177.90000000 0.13960000 9812023.00000000 0.30641248 +177.95000000 0.13960000 9812023.00000000 0.30677131 +178.00000000 0.13960000 9812023.00000000 0.30712173 +178.05000000 0.13960000 9812023.00000000 0.30746373 +178.10000000 0.13960000 9812023.00000000 0.30779730 +178.15000000 0.13960000 9812023.00000000 0.30812243 +178.20000000 0.13960000 9812023.00000000 0.30843912 +178.25000000 0.13960000 9812023.00000000 0.30874735 +178.30000000 0.13960000 9812023.00000000 0.30904711 +178.35000000 0.13960000 9812023.00000000 0.30933840 +178.40000000 0.13960000 9812023.00000000 0.30962121 +178.45000000 0.13960000 9812023.00000000 0.30989554 +178.50000000 0.13960000 9812023.00000000 0.31016136 +178.55000000 0.13960000 9812023.00000000 0.31041869 +178.60000000 0.13960000 9812023.00000000 0.31066750 +178.65000000 0.13960000 9812023.00000000 0.31090780 +178.70000000 0.13960000 9812023.00000000 0.31113957 +178.75000000 0.13960000 9812023.00000000 0.31136281 +178.80000000 0.13960000 9812023.00000000 0.31157752 +178.85000000 0.13960000 9812023.00000000 0.31178368 +178.90000000 0.13960000 9812023.00000000 0.31198130 +178.95000000 0.13960000 9812023.00000000 0.31217036 +179.00000000 0.13960000 9812023.00000000 0.31235087 +179.05000000 0.13960000 9812023.00000000 0.31252281 +179.10000000 0.13960000 9812023.00000000 0.31268619 +179.15000000 0.13960000 9812023.00000000 0.31284099 +179.20000000 0.13960000 9812023.00000000 0.31298721 +179.25000000 0.13960000 9812023.00000000 0.31312486 +179.30000000 0.13960000 9812023.00000000 0.31325392 +179.35000000 0.13960000 9812023.00000000 0.31337439 +179.40000000 0.13960000 9812023.00000000 0.31348627 +179.45000000 0.13960000 9812023.00000000 0.31358955 +179.50000000 0.13960000 9812023.00000000 0.31368424 +179.55000000 0.13960000 9812023.00000000 0.31377033 +179.60000000 0.13960000 9812023.00000000 0.31384782 +179.65000000 0.13960000 9812023.00000000 0.31391670 +179.70000000 0.13960000 9812023.00000000 0.31397698 +179.75000000 0.13960000 9812023.00000000 0.31402865 +179.80000000 0.13960000 9812023.00000000 0.31407171 +179.85000000 0.13960000 9812023.00000000 0.31410615 +179.90000000 0.13960000 9812023.00000000 0.31413199 +179.95000000 0.13960000 9812023.00000000 0.31414922 +180.00000000 0.13960000 9812023.00000000 0.31415783 +180.05000000 0.13960000 9812023.00000000 0.31415783 +180.10000000 0.13960000 9812023.00000000 0.31414922 +180.15000000 0.13960000 9812023.00000000 0.31413199 +180.20000000 0.13960000 9812023.00000000 0.31410615 +180.25000000 0.13960000 9812023.00000000 0.31407171 +180.30000000 0.13960000 9812023.00000000 0.31402865 +180.35000000 0.13960000 9812023.00000000 0.31397698 +180.40000000 0.13960000 9812023.00000000 0.31391670 +180.45000000 0.13960000 9812023.00000000 0.31384782 +180.50000000 0.13960000 9812023.00000000 0.31377033 +180.55000000 0.13960000 9812023.00000000 0.31368424 +180.60000000 0.13960000 9812023.00000000 0.31358955 +180.65000000 0.13960000 9812023.00000000 0.31348627 +180.70000000 0.13960000 9812023.00000000 0.31337439 +180.75000000 0.13960000 9812023.00000000 0.31325392 +180.80000000 0.13960000 9812023.00000000 0.31312486 +180.85000000 0.13960000 9812023.00000000 0.31298721 +180.90000000 0.13960000 9812023.00000000 0.31284099 +180.95000000 0.13960000 9812023.00000000 0.31268619 +181.00000000 0.13960000 9812023.00000000 0.31252281 +181.05000000 0.13960000 9812023.00000000 0.31235087 +181.10000000 0.13960000 9812023.00000000 0.31217036 +181.15000000 0.13960000 9812023.00000000 0.31198130 +181.20000000 0.13960000 9812023.00000000 0.31178368 +181.25000000 0.13960000 9812023.00000000 0.31157752 +181.30000000 0.13960000 9812023.00000000 0.31136281 +181.35000000 0.13960000 9812023.00000000 0.31113957 +181.40000000 0.13960000 9812023.00000000 0.31090780 +181.45000000 0.13960000 9812023.00000000 0.31066750 +181.50000000 0.13960000 9812023.00000000 0.31041869 +181.55000000 0.13960000 9812023.00000000 0.31016136 +181.60000000 0.13960000 9812023.00000000 0.30989554 +181.65000000 0.13960000 9812023.00000000 0.30962121 +181.70000000 0.13960000 9812023.00000000 0.30933840 +181.75000000 0.13960000 9812023.00000000 0.30904711 +181.80000000 0.13960000 9812023.00000000 0.30874735 +181.85000000 0.13960000 9812023.00000000 0.30843912 +181.90000000 0.13960000 9812023.00000000 0.30812243 +181.95000000 0.13960000 9812023.00000000 0.30779730 +182.00000000 0.13960000 9812023.00000000 0.30746373 +182.05000000 0.13960000 9812023.00000000 0.30712173 +182.10000000 0.13960000 9812023.00000000 0.30677131 +182.15000000 0.13960000 9812023.00000000 0.30641248 +182.20000000 0.13960000 9812023.00000000 0.30604525 +182.25000000 0.13960000 9812023.00000000 0.30566962 +182.30000000 0.13960000 9812023.00000000 0.30528562 +182.35000000 0.13960000 9812023.00000000 0.30489325 +182.40000000 0.13960000 9812023.00000000 0.30449252 +182.45000000 0.13960000 9812023.00000000 0.30408345 +182.50000000 0.13960000 9812023.00000000 0.30366603 +182.55000000 0.13960000 9812023.00000000 0.30324029 +182.60000000 0.13960000 9812023.00000000 0.30280624 +182.65000000 0.13960000 9812023.00000000 0.30236388 +182.70000000 0.13960000 9812023.00000000 0.30191324 +182.75000000 0.13960000 9812023.00000000 0.30145432 +182.80000000 0.13960000 9812023.00000000 0.30098713 +182.85000000 0.13960000 9812023.00000000 0.30051170 +182.90000000 0.13960000 9812023.00000000 0.30002802 +182.95000000 0.13960000 9812023.00000000 0.29953612 +183.00000000 0.13960000 9812023.00000000 0.29903601 +183.05000000 0.13960000 9812023.00000000 0.29852770 +183.10000000 0.13960000 9812023.00000000 0.29801120 +183.15000000 0.13960000 9812023.00000000 0.29748653 +183.20000000 0.13960000 9812023.00000000 0.29695371 +183.25000000 0.13960000 9812023.00000000 0.29641275 +183.30000000 0.13960000 9812023.00000000 0.29586366 +183.35000000 0.13960000 9812023.00000000 0.29530646 +183.40000000 0.13960000 9812023.00000000 0.29474116 +183.45000000 0.13960000 9812023.00000000 0.29416779 +183.50000000 0.13960000 9812023.00000000 0.29358635 +183.55000000 0.13960000 9812023.00000000 0.29299686 +183.60000000 0.13960000 9812023.00000000 0.29239933 +183.65000000 0.13960000 9812023.00000000 0.29179379 +183.70000000 0.13960000 9812023.00000000 0.29118025 +183.75000000 0.13960000 9812023.00000000 0.29055873 +183.80000000 0.13960000 9812023.00000000 0.28992925 +183.85000000 0.13960000 9812023.00000000 0.28929181 +183.90000000 0.13960000 9812023.00000000 0.28864644 +183.95000000 0.13960000 9812023.00000000 0.28799316 +184.00000000 0.13960000 9812023.00000000 0.28733199 +184.05000000 0.13960000 9812023.00000000 0.28666293 +184.10000000 0.13960000 9812023.00000000 0.28598602 +184.15000000 0.13960000 9812023.00000000 0.28530127 +184.20000000 0.13960000 9812023.00000000 0.28460869 +184.25000000 0.13960000 9812023.00000000 0.28390831 +184.30000000 0.13960000 9812023.00000000 0.28320015 +184.35000000 0.13960000 9812023.00000000 0.28248423 +184.40000000 0.13960000 9812023.00000000 0.28176056 +184.45000000 0.13960000 9812023.00000000 0.28102917 +184.50000000 0.13960000 9812023.00000000 0.28029007 +184.55000000 0.13960000 9812023.00000000 0.27954328 +184.60000000 0.13960000 9812023.00000000 0.27878884 +184.65000000 0.13960000 9812023.00000000 0.27802675 +184.70000000 0.13960000 9812023.00000000 0.27725704 +184.75000000 0.13960000 9812023.00000000 0.27647972 +184.80000000 0.13960000 9812023.00000000 0.27569483 +184.85000000 0.13960000 9812023.00000000 0.27490238 +184.90000000 0.13960000 9812023.00000000 0.27410239 +184.95000000 0.13960000 9812023.00000000 0.27329489 +185.00000000 0.13960000 9812023.00000000 0.27247989 +185.05000000 0.13960000 9812023.00000000 0.27165743 +185.10000000 0.13960000 9812023.00000000 0.27082752 +185.15000000 0.13960000 9812023.00000000 0.26999018 +185.20000000 0.13960000 9812023.00000000 0.26914544 +185.25000000 0.13960000 9812023.00000000 0.26829332 +185.30000000 0.13960000 9812023.00000000 0.26743385 +185.35000000 0.13960000 9812023.00000000 0.26656704 +185.40000000 0.13960000 9812023.00000000 0.26569293 +185.45000000 0.13960000 9812023.00000000 0.26481153 +185.50000000 0.13960000 9812023.00000000 0.26392287 +185.55000000 0.13960000 9812023.00000000 0.26302698 +185.60000000 0.13960000 9812023.00000000 0.26212387 +185.65000000 0.13960000 9812023.00000000 0.26121358 +185.70000000 0.13960000 9812023.00000000 0.26029613 +185.75000000 0.13960000 9812023.00000000 0.25937154 +185.80000000 0.13960000 9812023.00000000 0.25843985 +185.85000000 0.13960000 9812023.00000000 0.25750106 +185.90000000 0.13960000 9812023.00000000 0.25655522 +185.95000000 0.13960000 9812023.00000000 0.25560234 +186.00000000 0.13960000 9812023.00000000 0.25464246 +186.05000000 0.13960000 9812023.00000000 0.25367559 +186.10000000 0.13960000 9812023.00000000 0.25270177 +186.15000000 0.13960000 9812023.00000000 0.25172102 +186.20000000 0.13960000 9812023.00000000 0.25073337 +186.25000000 0.13960000 9812023.00000000 0.24973885 +186.30000000 0.13960000 9812023.00000000 0.24873748 +186.35000000 0.13960000 9812023.00000000 0.24772929 +186.40000000 0.13960000 9812023.00000000 0.24671431 +186.45000000 0.13960000 9812023.00000000 0.24569256 +186.50000000 0.13960000 9812023.00000000 0.24466408 +186.55000000 0.13960000 9812023.00000000 0.24362889 +186.60000000 0.13960000 9812023.00000000 0.24258703 +186.65000000 0.13960000 9812023.00000000 0.24153851 +186.70000000 0.13960000 9812023.00000000 0.24048337 +186.75000000 0.13960000 9812023.00000000 0.23942164 +186.80000000 0.13960000 9812023.00000000 0.23835334 +186.85000000 0.13960000 9812023.00000000 0.23727851 +186.90000000 0.13960000 9812023.00000000 0.23619717 +186.95000000 0.13960000 9812023.00000000 0.23510936 +187.00000000 0.13960000 9812023.00000000 0.23401510 +187.05000000 0.13960000 9812023.00000000 0.23291443 +187.10000000 0.13960000 9812023.00000000 0.23180737 +187.15000000 0.13960000 9812023.00000000 0.23069396 +187.20000000 0.13960000 9812023.00000000 0.22957422 +187.25000000 0.13960000 9812023.00000000 0.22844819 +187.30000000 0.13960000 9812023.00000000 0.22731589 +187.35000000 0.13960000 9812023.00000000 0.22617736 +187.40000000 0.13960000 9812023.00000000 0.22503264 +187.45000000 0.13960000 9812023.00000000 0.22388174 +187.50000000 0.13960000 9812023.00000000 0.22272470 +187.55000000 0.13960000 9812023.00000000 0.22156156 +187.60000000 0.13960000 9812023.00000000 0.22039235 +187.65000000 0.13960000 9812023.00000000 0.21921709 +187.70000000 0.13960000 9812023.00000000 0.21803582 +187.75000000 0.13960000 9812023.00000000 0.21684857 +187.80000000 0.13960000 9812023.00000000 0.21565538 +187.85000000 0.13960000 9812023.00000000 0.21445628 +187.90000000 0.13960000 9812023.00000000 0.21325130 +187.95000000 0.13960000 9812023.00000000 0.21204047 +188.00000000 0.13960000 9812023.00000000 0.21082383 +188.05000000 0.13960000 9812023.00000000 0.20960141 +188.10000000 0.13960000 9812023.00000000 0.20837324 +188.15000000 0.13960000 9812023.00000000 0.20713936 +188.20000000 0.13960000 9812023.00000000 0.20589980 +188.25000000 0.13960000 9812023.00000000 0.20465460 +188.30000000 0.13960000 9812023.00000000 0.20340378 +188.35000000 0.13960000 9812023.00000000 0.20214739 +188.40000000 0.13960000 9812023.00000000 0.20088546 +188.45000000 0.13960000 9812023.00000000 0.19961802 +188.50000000 0.13960000 9812023.00000000 0.19834510 +188.55000000 0.13960000 9812023.00000000 0.19706675 +188.60000000 0.13960000 9812023.00000000 0.19578300 +188.65000000 0.13960000 9812023.00000000 0.19449388 +188.70000000 0.13960000 9812023.00000000 0.19319942 +188.75000000 0.13960000 9812023.00000000 0.19189967 +188.80000000 0.13960000 9812023.00000000 0.19059466 +188.85000000 0.13960000 9812023.00000000 0.18928443 +188.90000000 0.13960000 9812023.00000000 0.18796900 +188.95000000 0.13960000 9812023.00000000 0.18664842 +189.00000000 0.13960000 9812023.00000000 0.18532273 +189.05000000 0.13960000 9812023.00000000 0.18399195 +189.10000000 0.13960000 9812023.00000000 0.18265613 +189.15000000 0.13960000 9812023.00000000 0.18131530 +189.20000000 0.13960000 9812023.00000000 0.17996950 +189.25000000 0.13960000 9812023.00000000 0.17861877 +189.30000000 0.13960000 9812023.00000000 0.17726314 +189.35000000 0.13960000 9812023.00000000 0.17590265 +189.40000000 0.13960000 9812023.00000000 0.17453734 +189.45000000 0.13960000 9812023.00000000 0.17316724 +189.50000000 0.13960000 9812023.00000000 0.17179239 +189.55000000 0.13960000 9812023.00000000 0.17041284 +189.60000000 0.13960000 9812023.00000000 0.16902861 +189.65000000 0.13960000 9812023.00000000 0.16763975 +189.70000000 0.13960000 9812023.00000000 0.16624630 +189.75000000 0.13960000 9812023.00000000 0.16484828 +189.80000000 0.13960000 9812023.00000000 0.16344575 +189.85000000 0.13960000 9812023.00000000 0.16203873 +189.90000000 0.13960000 9812023.00000000 0.16062728 +189.95000000 0.13960000 9812023.00000000 0.15921142 +190.00000000 0.13960000 9812023.00000000 0.15779119 +190.05000000 0.13960000 9812023.00000000 0.15636664 +190.10000000 0.13960000 9812023.00000000 0.15493780 +190.15000000 0.13960000 9812023.00000000 0.15350471 +190.20000000 0.13960000 9812023.00000000 0.15206742 +190.25000000 0.13960000 9812023.00000000 0.15062596 +190.30000000 0.13960000 9812023.00000000 0.14918036 +190.35000000 0.13960000 9812023.00000000 0.14773068 +190.40000000 0.13960000 9812023.00000000 0.14627695 +190.45000000 0.13960000 9812023.00000000 0.14481921 +190.50000000 0.13960000 9812023.00000000 0.14335749 +190.55000000 0.13960000 9812023.00000000 0.14189185 +190.60000000 0.13960000 9812023.00000000 0.14042231 +190.65000000 0.13960000 9812023.00000000 0.13894893 +190.70000000 0.13960000 9812023.00000000 0.13747174 +190.75000000 0.13960000 9812023.00000000 0.13599078 +190.80000000 0.13960000 9812023.00000000 0.13450609 +190.85000000 0.13960000 9812023.00000000 0.13301771 +190.90000000 0.13960000 9812023.00000000 0.13152569 +190.95000000 0.13960000 9812023.00000000 0.13003006 +191.00000000 0.13960000 9812023.00000000 0.12853086 +191.05000000 0.13960000 9812023.00000000 0.12702814 +191.10000000 0.13960000 9812023.00000000 0.12552194 +191.15000000 0.13960000 9812023.00000000 0.12401230 +191.20000000 0.13960000 9812023.00000000 0.12249926 +191.25000000 0.13960000 9812023.00000000 0.12098286 +191.30000000 0.13960000 9812023.00000000 0.11946314 +191.35000000 0.13960000 9812023.00000000 0.11794015 +191.40000000 0.13960000 9812023.00000000 0.11641392 +191.45000000 0.13960000 9812023.00000000 0.11488450 +191.50000000 0.13960000 9812023.00000000 0.11335193 +191.55000000 0.13960000 9812023.00000000 0.11181626 +191.60000000 0.13960000 9812023.00000000 0.11027752 +191.65000000 0.13960000 9812023.00000000 0.10873576 +191.70000000 0.13960000 9812023.00000000 0.10719101 +191.75000000 0.13960000 9812023.00000000 0.10564333 +191.80000000 0.13960000 9812023.00000000 0.10409275 +191.85000000 0.13960000 9812023.00000000 0.10253932 +191.90000000 0.13960000 9812023.00000000 0.10098307 +191.95000000 0.13960000 9812023.00000000 0.09942406 +192.00000000 0.13960000 9812023.00000000 0.09786232 +192.05000000 0.13960000 9812023.00000000 0.09629790 +192.10000000 0.13960000 9812023.00000000 0.09473084 +192.15000000 0.13960000 9812023.00000000 0.09316118 +192.20000000 0.13960000 9812023.00000000 0.09158896 +192.25000000 0.13960000 9812023.00000000 0.09001424 +192.30000000 0.13960000 9812023.00000000 0.08843705 +192.35000000 0.13960000 9812023.00000000 0.08685743 +192.40000000 0.13960000 9812023.00000000 0.08527543 +192.45000000 0.13960000 9812023.00000000 0.08369110 +192.50000000 0.13960000 9812023.00000000 0.08210447 +192.55000000 0.13960000 9812023.00000000 0.08051559 +192.60000000 0.13960000 9812023.00000000 0.07892450 +192.65000000 0.13960000 9812023.00000000 0.07733125 +192.70000000 0.13960000 9812023.00000000 0.07573588 +192.75000000 0.13960000 9812023.00000000 0.07413843 +192.80000000 0.13960000 9812023.00000000 0.07253895 +192.85000000 0.13960000 9812023.00000000 0.07093748 +192.90000000 0.13960000 9812023.00000000 0.06933406 +192.95000000 0.13960000 9812023.00000000 0.06772875 +193.00000000 0.13960000 9812023.00000000 0.06612158 +193.05000000 0.13960000 9812023.00000000 0.06451259 +193.10000000 0.13960000 9812023.00000000 0.06290184 +193.15000000 0.13960000 9812023.00000000 0.06128936 +193.20000000 0.13960000 9812023.00000000 0.05967520 +193.25000000 0.13960000 9812023.00000000 0.05805941 +193.30000000 0.13960000 9812023.00000000 0.05644202 +193.35000000 0.13960000 9812023.00000000 0.05482309 +193.40000000 0.13960000 9812023.00000000 0.05320265 +193.45000000 0.13960000 9812023.00000000 0.05158076 +193.50000000 0.13960000 9812023.00000000 0.04995745 +193.55000000 0.13960000 9812023.00000000 0.04833277 +193.60000000 0.13960000 9812023.00000000 0.04670677 +193.65000000 0.13960000 9812023.00000000 0.04507949 +193.70000000 0.13960000 9812023.00000000 0.04345097 +193.75000000 0.13960000 9812023.00000000 0.04182125 +193.80000000 0.13960000 9812023.00000000 0.04019040 +193.85000000 0.13960000 9812023.00000000 0.03855844 +193.90000000 0.13960000 9812023.00000000 0.03692542 +193.95000000 0.13960000 9812023.00000000 0.03529139 +194.00000000 0.13960000 9812023.00000000 0.03365639 +194.05000000 0.13960000 9812023.00000000 0.03202048 +194.10000000 0.13960000 9812023.00000000 0.03038368 +194.15000000 0.13960000 9812023.00000000 0.02874605 +194.20000000 0.13960000 9812023.00000000 0.02710763 +194.25000000 0.13960000 9812023.00000000 0.02546847 +194.30000000 0.13960000 9812023.00000000 0.02382861 +194.35000000 0.13960000 9812023.00000000 0.02218810 +194.40000000 0.13960000 9812023.00000000 0.02054698 +194.45000000 0.13960000 9812023.00000000 0.01890529 +194.50000000 0.13960000 9812023.00000000 0.01726309 +194.55000000 0.13960000 9812023.00000000 0.01562041 +194.60000000 0.13960000 9812023.00000000 0.01397731 +194.65000000 0.13960000 9812023.00000000 0.01233382 +194.70000000 0.13960000 9812023.00000000 0.01069000 +194.75000000 0.13960000 9812023.00000000 0.00904588 +194.80000000 0.13960000 9812023.00000000 0.00740151 +194.85000000 0.13960000 9812023.00000000 0.00575694 +194.90000000 0.13960000 9812023.00000000 0.00411221 +194.95000000 0.13960000 9812023.00000000 0.00246737 +195.00000000 0.13960000 9812023.00000000 0.00082247 +195.05000000 0.13960000 9812023.00000000 -0.00082247 +195.10000000 0.13960000 9812023.00000000 -0.00246737 +195.15000000 0.13960000 9812023.00000000 -0.00411221 +195.20000000 0.13960000 9812023.00000000 -0.00575694 +195.25000000 0.13960000 9812023.00000000 -0.00740151 +195.30000000 0.13960000 9812023.00000000 -0.00904588 +195.35000000 0.13960000 9812023.00000000 -0.01069000 +195.40000000 0.13960000 9812023.00000000 -0.01233382 +195.45000000 0.13960000 9812023.00000000 -0.01397731 +195.50000000 0.13960000 9812023.00000000 -0.01562041 +195.55000000 0.13960000 9812023.00000000 -0.01726309 +195.60000000 0.13960000 9812023.00000000 -0.01890529 +195.65000000 0.13960000 9812023.00000000 -0.02054698 +195.70000000 0.13960000 9812023.00000000 -0.02218810 +195.75000000 0.13960000 9812023.00000000 -0.02382861 +195.80000000 0.13960000 9812023.00000000 -0.02546847 +195.85000000 0.13960000 9812023.00000000 -0.02710763 +195.90000000 0.13960000 9812023.00000000 -0.02874605 +195.95000000 0.13960000 9812023.00000000 -0.03038368 +196.00000000 0.13960000 9812023.00000000 -0.03202048 +196.05000000 0.13960000 9812023.00000000 -0.03365639 +196.10000000 0.13960000 9812023.00000000 -0.03529139 +196.15000000 0.13960000 9812023.00000000 -0.03692542 +196.20000000 0.13960000 9812023.00000000 -0.03855844 +196.25000000 0.13960000 9812023.00000000 -0.04019040 +196.30000000 0.13960000 9812023.00000000 -0.04182125 +196.35000000 0.13960000 9812023.00000000 -0.04345097 +196.40000000 0.13960000 9812023.00000000 -0.04507949 +196.45000000 0.13960000 9812023.00000000 -0.04670677 +196.50000000 0.13960000 9812023.00000000 -0.04833277 +196.55000000 0.13960000 9812023.00000000 -0.04995745 +196.60000000 0.13960000 9812023.00000000 -0.05158076 +196.65000000 0.13960000 9812023.00000000 -0.05320265 +196.70000000 0.13960000 9812023.00000000 -0.05482309 +196.75000000 0.13960000 9812023.00000000 -0.05644202 +196.80000000 0.13960000 9812023.00000000 -0.05805941 +196.85000000 0.13960000 9812023.00000000 -0.05967520 +196.90000000 0.13960000 9812023.00000000 -0.06128936 +196.95000000 0.13960000 9812023.00000000 -0.06290184 +197.00000000 0.13960000 9812023.00000000 -0.06451259 +197.05000000 0.13960000 9812023.00000000 -0.06612158 +197.10000000 0.13960000 9812023.00000000 -0.06772875 +197.15000000 0.13960000 9812023.00000000 -0.06933406 +197.20000000 0.13960000 9812023.00000000 -0.07093748 +197.25000000 0.13960000 9812023.00000000 -0.07253895 +197.30000000 0.13960000 9812023.00000000 -0.07413843 +197.35000000 0.13960000 9812023.00000000 -0.07573588 +197.40000000 0.13960000 9812023.00000000 -0.07733125 +197.45000000 0.13960000 9812023.00000000 -0.07892450 +197.50000000 0.13960000 9812023.00000000 -0.08051559 +197.55000000 0.13960000 9812023.00000000 -0.08210447 +197.60000000 0.13960000 9812023.00000000 -0.08369110 +197.65000000 0.13960000 9812023.00000000 -0.08527543 +197.70000000 0.13960000 9812023.00000000 -0.08685743 +197.75000000 0.13960000 9812023.00000000 -0.08843705 +197.80000000 0.13960000 9812023.00000000 -0.09001424 +197.85000000 0.13960000 9812023.00000000 -0.09158896 +197.90000000 0.13960000 9812023.00000000 -0.09316118 +197.95000000 0.13960000 9812023.00000000 -0.09473084 +198.00000000 0.13960000 9812023.00000000 -0.09629790 +198.05000000 0.13960000 9812023.00000000 -0.09786232 +198.10000000 0.13960000 9812023.00000000 -0.09942406 +198.15000000 0.13960000 9812023.00000000 -0.10098307 +198.20000000 0.13960000 9812023.00000000 -0.10253932 +198.25000000 0.13960000 9812023.00000000 -0.10409275 +198.30000000 0.13960000 9812023.00000000 -0.10564333 +198.35000000 0.13960000 9812023.00000000 -0.10719101 +198.40000000 0.13960000 9812023.00000000 -0.10873576 +198.45000000 0.13960000 9812023.00000000 -0.11027752 +198.50000000 0.13960000 9812023.00000000 -0.11181626 +198.55000000 0.13960000 9812023.00000000 -0.11335193 +198.60000000 0.13960000 9812023.00000000 -0.11488450 +198.65000000 0.13960000 9812023.00000000 -0.11641392 +198.70000000 0.13960000 9812023.00000000 -0.11794015 +198.75000000 0.13960000 9812023.00000000 -0.11946314 +198.80000000 0.13960000 9812023.00000000 -0.12098286 +198.85000000 0.13960000 9812023.00000000 -0.12249926 +198.90000000 0.13960000 9812023.00000000 -0.12401230 +198.95000000 0.13960000 9812023.00000000 -0.12552194 +199.00000000 0.13960000 9812023.00000000 -0.12702814 +199.05000000 0.13960000 9812023.00000000 -0.12853086 +199.10000000 0.13960000 9812023.00000000 -0.13003006 +199.15000000 0.13960000 9812023.00000000 -0.13152569 +199.20000000 0.13960000 9812023.00000000 -0.13301771 +199.25000000 0.13960000 9812023.00000000 -0.13450609 +199.30000000 0.13960000 9812023.00000000 -0.13599078 +199.35000000 0.13960000 9812023.00000000 -0.13747174 +199.40000000 0.13960000 9812023.00000000 -0.13894893 +199.45000000 0.13960000 9812023.00000000 -0.14042231 +199.50000000 0.13960000 9812023.00000000 -0.14189185 +199.55000000 0.13960000 9812023.00000000 -0.14335749 +199.60000000 0.13960000 9812023.00000000 -0.14481921 +199.65000000 0.13960000 9812023.00000000 -0.14627695 +199.70000000 0.13960000 9812023.00000000 -0.14773068 +199.75000000 0.13960000 9812023.00000000 -0.14918036 +199.80000000 0.13960000 9812023.00000000 -0.15062596 +199.85000000 0.13960000 9812023.00000000 -0.15206742 +199.90000000 0.13960000 9812023.00000000 -0.15350471 +199.95000000 0.13960000 9812023.00000000 -0.15493780 diff --git a/Examples/example_14.py b/Examples/example_14.py new file mode 100644 index 00000000..f125c5ce --- /dev/null +++ b/Examples/example_14.py @@ -0,0 +1,145 @@ +''' +----------- Example_14 -------------- +Load a turbine, tune a controller with open loop control commands +------------------------------------- + +In this example: + - Load a turbine from OpenFAST + - Tune a controller + - Write open loop inputs + - Run simple simulation with open loop control + +''' +# Python Modules +import yaml, os, platform +import numpy as np +import matplotlib.pyplot as plt + +# ROSCO toolbox modules +from ROSCO_toolbox import controller as ROSCO_controller +from ROSCO_toolbox import turbine as ROSCO_turbine +from ROSCO_toolbox import utilities as ROSCO_utilities +from ROSCO_toolbox.ofTools.fast_io import output_processing +from ROSCO_toolbox.inputs.validation import load_rosco_yaml +from ROSCO_toolbox.ofTools.case_gen.CaseLibrary import set_channels +from ROSCO_toolbox.ofTools.case_gen.runFAST_pywrapper import runFAST_pywrapper, runFAST_pywrapper_batch +from ROSCO_toolbox.ofTools.case_gen.CaseGen_General import CaseGen_General + + + +this_dir = os.path.dirname(os.path.abspath(__file__)) +rosco_dir = os.path.dirname(this_dir) +example_out_dir = os.path.join(this_dir,'examples_out') + +# Load yaml file (Open Loop Case) +parameter_filename = os.path.join(rosco_dir,'Tune_Cases/IEA15MW_OL.yaml') + +inps = load_rosco_yaml(parameter_filename) +path_params = inps['path_params'] +turbine_params = inps['turbine_params'] +controller_params = inps['controller_params'] + +# Set up open loop input +olc = ROSCO_controller.OpenLoopControl(t_max=300) +olc.interp_timeseries( + 'blade_pitch', + [0,40,80,120], + [0,0,0.0873,0.1396] , + 'sigma' + ) +olc.const_timeseries( + 'generator_torque', + 19624046*.5 + ) +olc.sine_timeseries('nacelle_yaw', 0.0524, 60) + +# Plot open loop timeseries +fig,ax = olc.plot_timeseries() +if False: + plt.show() +else: + fig.savefig(os.path.join(example_out_dir,'14_OL_Inputs.png')) + +# Write open loop input, get OL indices +ol_filename = os.path.join(example_out_dir,'14_OL_Input.dat') +ol_dict = olc.write_input(ol_filename) +controller_params['open_loop'] = ol_dict + + +# Instantiate turbine, controller, and file processing classes +turbine = ROSCO_turbine.Turbine(turbine_params) +controller = ROSCO_controller.Controller(controller_params) + +# Load turbine data from OpenFAST and rotor performance text file +turbine.load_from_fast(path_params['FAST_InputFile'], \ + os.path.join(this_dir,path_params['FAST_directory']), \ + dev_branch=True,rot_source='txt',\ + txt_filename=os.path.join(this_dir,path_params['FAST_directory'],path_params['rotor_performance_filename'])) + +# Tune controller +controller.tune_controller(turbine) + +# Write parameter input file +param_file = os.path.join(this_dir,'DISCON.IN') # This must be named DISCON.IN to be seen by the compiled controller binary. +ROSCO_utilities.write_DISCON(turbine,controller,param_file=param_file, txt_filename=path_params['rotor_performance_filename']) + +### Run OpenFAST using aeroelasticse tools + +# Set rosco_dll +if platform.system() == 'Windows': + rosco_dll = os.path.join(rosco_dir, 'ROSCO/build/libdiscon.dll') +elif platform.system() == 'Darwin': + rosco_dll = os.path.join(rosco_dir, 'ROSCO/build/libdiscon.dylib') +else: + rosco_dll = os.path.join(rosco_dir, 'ROSCO/build/libdiscon.so') + +case_inputs = {} +case_inputs[('ServoDyn','DLL_FileName')] = {'vals': [rosco_dll], 'group': 0} + +# Apply all discon variables as case inputs +discon_vt = ROSCO_utilities.DISCON_dict( + turbine, +controller, +txt_filename=os.path.join(this_dir,path_params['FAST_directory'],path_params['rotor_performance_filename']) +) +for discon_input in discon_vt: + case_inputs[('DISCON_in',discon_input)] = {'vals': [discon_vt[discon_input]], 'group': 0} + +# Generate cases +run_dir = os.path.join(example_out_dir,'14_OL_Sim') +if not os.path.exists(run_dir): + os.makedirs(run_dir) + +case_list, case_name_list = CaseGen_General(case_inputs, dir_matrix=run_dir, namebase='OL_Example') +channels = set_channels() + +# Run FAST cases +fastBatch = runFAST_pywrapper_batch(FAST_ver='OpenFAST',dev_branch = True) + +fastBatch.FAST_directory = os.path.realpath(os.path.join(rosco_dir,'Tune_Cases',path_params['FAST_directory'])) +fastBatch.FAST_InputFile = path_params['FAST_InputFile'] +fastBatch.channels = channels +fastBatch.FAST_runDirectory = run_dir +fastBatch.case_list = case_list +fastBatch.case_name_list = case_name_list +fastBatch.debug_level = 2 +fastBatch.FAST_exe = 'openfast' + +fastBatch.run_serial() + + +# # Define Plot cases +cases = {} +cases['Baseline'] = ['Wind1VelX', 'BldPitch1', 'GenTq', 'RotSpeed','NacYaw'] + +out_file = os.path.join(example_out_dir,'14_OL_Sim/OL_Example_0.outb') +op = output_processing.output_processing() +fastout = op.load_fast_out(out_file, tmin=0) +fig, ax = op.plot_fast_out(cases=cases,showplot=False) + +if False: + plt.show() +else: + fig[0].savefig(os.path.join(example_out_dir,'14_OL_FAST_Out.png')) + + diff --git a/README.md b/README.md index 48292682..de7a3fe7 100644 --- a/README.md +++ b/README.md @@ -32,6 +32,9 @@ Please help us better understand the ROSCO user-base and how we can improve rosc [ROSCO toolchain survey](https://forms.office.com/Pages/ResponsePage.aspx?id=fp3yoM0oVE-EQniFrufAgGWnC45k8q5Kl90RBkHijqBUN0JTNzBJT1QwMjIzNDhCWDlDTUZPWDdMWC4u) ## Referencing +To reference the ROSCO source code directly, please use the following DOI: +[![DOI](https://zenodo.org/badge/220498357.svg)](https://zenodo.org/badge/latestdoi/220498357) + If the ROSCO Toolbox played a role in your research, please cite it. This software can be cited as: diff --git a/ROSCO/CMakeLists.txt b/ROSCO/CMakeLists.txt index a6ef8217..262d232b 100644 --- a/ROSCO/CMakeLists.txt +++ b/ROSCO/CMakeLists.txt @@ -38,6 +38,27 @@ set(SOURCES src/ReadSetParameters.f90 ) +if (${CMAKE_Fortran_COMPILER_ID} STREQUAL "GNU") + if (WIN32) + set(NWTC_SYS_FILE src/SysFiles/SysGnuWin.f90) + elseif (APPLE OR UNIX OR CYGWIN) + set(NWTC_SYS_FILE src/SysFiles/SysGnuLinux.f90) + endif () +elseif (${CMAKE_Fortran_COMPILER_ID} MATCHES "^Intel") + if (APPLE OR UNIX) + set(NWTC_SYS_FILE src/SysFiles/SysIFL.f90) + elseif (WIN32) + set(NWTC_SYS_FILE src/SysFiles/SysIVF.f90) + endif (APPLE OR UNIX) +endif () + +if (NWTC_SYS_FILE) + message("-- Setting system file as: ${NWTC_SYS_FILE}") + list(APPEND SOURCES ${NWTC_SYS_FILE}) +else (NWTC_SYS_FILE) + message(FATAL_ERROR "Cannot determine system file used with NWTC_Library") +endif (NWTC_SYS_FILE) + # Library add_library(discon SHARED ${SOURCES}) diff --git a/ROSCO/rosco_registry/__init__.py b/ROSCO/rosco_registry/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/ROSCO/rosco_registry/rosco_types.yaml b/ROSCO/rosco_registry/rosco_types.yaml new file mode 100644 index 00000000..418dee80 --- /dev/null +++ b/ROSCO/rosco_registry/rosco_types.yaml @@ -0,0 +1,722 @@ +default_types: + integer: &integer + type: integer + description: + allocatable: False + equals: + size: 0 + real: &real + type: real + description: + shape: 1 # Use this if a higher-dimensional allocatable array (shape:2 --> REAL(8), DIMESION(:,:), ALLOCATABLE) + size: 0 # Use this if the type IS an array (size:3 --> REAL(8), BldPitch(3)) + allocatable: False + equals: + character: &character + type: character + description: + allocatable: False + size: 0 + equals: + logical: &logical + type: logical + description: + size: 0 + equals: + c_integer: &c_integer + type: c_integer + description: + size: 0 + equals: + c_pointer: &c_pointer + type: c_pointer + description: + size: 0 + equals: + c_funptr: &c_funptr + type: c_funptr + description: + size: 0 + equals: + c_intptr_t: &c_intptr_t + type: c_intptr_t + description: + size: 0 + equals: + + +ControlParameters: + LoggingLevel: + <<: *integer + description: 0 - write no debug files, 1 - write standard output .dbg-file, 2 - write standard output .dbg-file and complete avrSWAP-array .dbg2-file + + # Filters + F_LPFType: + <<: *integer + description: 'Low pass filter on the rotor and generator speed {1 - first-order low-pass filter, 2 - second-order low-pass filter}, [rad/s]' + F_NotchType: + <<: *integer + description: Notch on the measured generator speed {0 - disable, 1 - enable} + F_LPFCornerFreq: + <<: *real + description: Corner frequency (-3dB point) in the first-order low-pass filter, [rad/s] + F_LPFDamping: + <<: *real + description: Damping coefficient [used only when F_FilterType = 2] + F_NotchCornerFreq: + <<: *real + description: Natural frequency of the notch filter, [rad/s] + F_NotchBetaNumDen: + <<: *real + description: These two notch damping values (numerator and denominator) determines the width and depth of the notch + allocatable: True + F_SSCornerFreq: + <<: *real + description: Corner frequency (-3dB point) in the first order low pass filter for the setpoint smoother [rad/s] + F_WECornerFreq: + <<: *real + description: Corner frequency (-3dB point) in the first order low pass filter for the wind speed estimate [rad/s] + F_FlCornerFreq: + <<: *real + description: Corner frequency (-3dB point) in the second order low pass filter of the tower-top fore-aft motion for floating feedback control [rad/s]. + allocatable: True + F_FlHighPassFreq: + <<: *real + description: Natural frequency of first-roder high-pass filter for nacelle fore-aft motion [rad/s]. + F_FlpCornerFreq: + <<: *real + description: Corner frequency (-3dB point) in the second order low pass filter of the blade root bending moment for flap control [rad/s]. + allocatable: True + + # Tower fore-aft damping + FA_HPFCornerFreq: + <<: *real + description: Corner frequency (-3dB point) in the high-pass filter on the fore-aft acceleration signal [rad/s] + FA_IntSat: + <<: *real + description: Integrator saturation (maximum signal amplitude contrbution to pitch from FA damper), [rad] + FA_KI: + <<: *real + description: Integral gain for the fore-aft tower damper controller, -1 = off / >0 = on [rad s/m] + + # Individual Pitch Control + IPC_ControlMode: + <<: *integer + description: Turn Individual Pitch Control (IPC) for fatigue load reductions (pitch contribution) {0 - off, 1 - 1P reductions, 2 - 1P+2P reductions} + IPC_IntSat: + <<: *real + description: Integrator saturation (maximum signal amplitude contrbution to pitch from IPC) + IPC_KI: + <<: *real + description: Integral gain for the individual pitch controller, [-]. 8E-10 + allocatable: True + IPC_aziOffset: + <<: *real + description: Phase offset added to the azimuth angle for the individual pitch controller, [rad]. + allocatable: True + IPC_CornerFreqAct: + <<: *real + description: Corner frequency of the first-order actuators model, to induce a phase lag in the IPC signal {0 - Disable}, [rad/s] + + # Collective Pitch Controller + PC_ControlMode: + <<: *integer + description: Blade pitch control mode {0 - No pitch, fix to fine pitch, 1 - active PI blade pitch control} + PC_GS_n: + <<: *integer + description: Amount of gain-scheduling table entries + PC_GS_angles: + <<: *real + description: Gain-schedule table - pitch angles + allocatable: True + PC_GS_KP: + <<: *real + description: Gain-schedule table - pitch controller kp gains + allocatable: True + PC_GS_KI: + <<: *real + description: Gain-schedule table - pitch controller ki gains + allocatable: True + PC_GS_KD: + <<: *real + description: Gain-schedule table - pitch controller kd gains + allocatable: True + PC_GS_TF: + <<: *real + description: Gain-schedule table - pitch controller tf gains (derivative filter) + allocatable: True + PC_MaxPit: + <<: *real + description: Maximum physical pitch limit, [rad]. + PC_MinPit: + <<: *real + description: Minimum physical pitch limit, [rad]. + PC_MaxRat: + <<: *real + description: Maximum pitch rate (in absolute value) in pitch controller, [rad/s]. + PC_MinRat: + <<: *real + description: Minimum pitch rate (in absolute value) in pitch controller, [rad/s]. + PC_RefSpd: + <<: *real + description: Desired (reference) HSS speed for pitch controller, [rad/s]. + PC_FinePit: + <<: *real + description: Record 5 - Below-rated pitch angle set-point (deg) [used only with Bladed Interface] + PC_Switch: + <<: *real + description: Angle above lowest minimum pitch angle for switch [rad] + + # Generator Torque Controller + VS_ControlMode: + <<: *integer + description: Generator torque control mode in above rated conditions {0 - constant torque, 1 - constant power, 2 - TSR Tracking, 3 - TSR Tracking w/ const power} + VS_GenEff: + <<: *real + description: Generator efficiency mechanical power -> electrical power [-] + VS_ArSatTq: + <<: *real + description: Above rated generator torque PI control saturation, [Nm] -- 212900 + VS_MaxRat: + <<: *real + description: Maximum torque rate (in absolute value) in torque controller, [Nm/s]. + VS_MaxTq: + <<: *real + description: Maximum generator torque in Region 3 (HSS side), [Nm]. -- chosen to be 10% above VS_RtTq + VS_MinTq: + <<: *real + description: Minimum generator (HSS side), [Nm]. + VS_MinOMSpd: + <<: *real + description: Optimal mode minimum speed, [rad/s] + VS_Rgn2K: + <<: *real + description: Generator torque constant in Region 2 (HSS side), N-m/(rad/s)^2 + VS_RtPwr: + <<: *real + description: Wind turbine rated power [W] + VS_RtTq: + <<: *real + description: Rated torque, [Nm]. + VS_RefSpd: + <<: *real + description: Rated generator speed [rad/s] + VS_n: + <<: *integer + description: Number of controller gains + VS_KP: + <<: *real + description: Proportional gain for generator PI torque controller, used in the transitional 2.5 region + allocatable: True + VS_KI: + <<: *real + description: Integral gain for generator PI torque controller, used in the transitional 2.5 region + allocatable: True + VS_TSRopt: + <<: *real + description: Power-maximizing region 2 tip-speed ratio [rad] + + # Setpoint Smoother + SS_Mode: + <<: *integer + description: Setpoint Smoother mode {0 - no setpoint smoothing, 1 - introduce setpoint smoothing} + SS_VSGain: + <<: *real + description: Variable speed torque controller setpoint smoother gain, [-]. + SS_PCGain: + <<: *real + description: Collective pitch controller setpoint smoother gain, [-]. + + # Wind Speed Estimator + WE_Mode: + <<: *integer + description: Wind speed estimator mode {0 - One-second low pass filtered hub height wind speed, 1 - Imersion and Invariance Estimator (Ortega et al.) + WE_BladeRadius: + <<: *real + description: Blade length [m] + WE_CP_n: + <<: *integer + description: Amount of parameters in the Cp array + WE_CP: + <<: *real + description: Parameters that define the parameterized CP(\lambda) function + allocatable: True + WE_Gamma: + <<: *real + description: Adaption gain of the wind speed estimator algorithm [m/rad] + WE_GearboxRatio: + <<: *real + description: Gearbox ratio, >=1 [-] + WE_Jtot: + <<: *real + description: Total drivetrain inertia, including blades, hub and casted generator inertia to LSS [kg m^2] + WE_RhoAir: + <<: *real + description: Air density [kg m^-3] + PerfFileName: + <<: *character + description: File containing rotor performance tables (Cp,Ct,Cq) + PerfTableSize: + <<: *integer + description: Size of rotor performance tables, first number refers to number of blade pitch angles, second number referse to number of tip-speed ratios + allocatable: True + WE_FOPoles_N: + <<: *integer + description: Number of first-order system poles used in EKF + WE_FOPoles_v: + <<: *real + description: Wind speeds corresponding to first-order system poles [m/s] + allocatable: True + WE_FOPoles: + <<: *real + description: First order system poles + allocatable: True + + # Yaw Controller + Y_ControlMode: + <<: *integer + description: Yaw control mode {0 - no yaw control, 1 - yaw rate control, 2 - yaw-by-IPC} + Y_ErrThresh: + <<: *real + description: Error threshold [rad]. Turbine begins to yaw when it passes this. (104.71975512) -- 1.745329252 + Y_IPC_IntSat: + <<: *real + description: Integrator saturation (maximum signal amplitude contrbution to pitch from yaw-by-IPC) + Y_IPC_n: + <<: *integer + description: Number of controller gains (yaw-by-IPC) + Y_IPC_KP: + <<: *real + description: Yaw-by-IPC proportional controller gain Kp + allocatable: True + Y_IPC_KI: + <<: *real + description: Yaw-by-IPC integral controller gain Ki + allocatable: True + Y_IPC_omegaLP: + <<: *real + description: Low-pass filter corner frequency for the Yaw-by-IPC controller to filtering the yaw alignment error, [rad/s]. + Y_IPC_zetaLP: + <<: *real + description: Low-pass filter damping factor for the Yaw-by-IPC controller to filtering the yaw alignment error, [-]. + Y_MErrSet: + <<: *real + description: Yaw alignment error, setpoint [rad] + Y_omegaLPFast: + <<: *real + description: Corner frequency fast low pass filter, 1.0 [Hz] + Y_omegaLPSlow: + <<: *real + description: Corner frequency slow low pass filter, 1/60 [Hz] + Y_Rate: + <<: *real + description: Yaw rate [rad/s] + + # Pitch Saturation + PS_Mode: + <<: *integer + description: Pitch saturation mode {0 - no peak shaving, 1 - implement pitch saturation} + PS_BldPitchMin_N: + <<: *integer + description: Number of values in minimum blade pitch lookup table (should equal number of values in PS_WindSpeeds and PS_BldPitchMin) + PS_WindSpeeds: + <<: *real + description: Wind speeds corresponding to minimum blade pitch angles [m/s] + allocatable: True + PS_BldPitchMin: + <<: *real + description: Minimum blade pitch angles [rad] + allocatable: True + + # Shutdown + SD_Mode: + <<: *integer + description: Shutdown mode {0 - no shutdown procedure, 1 - pitch to max pitch at shutdown} + SD_MaxPit: + <<: *real + description: Maximum blade pitch angle to initiate shutdown, [rad] + SD_CornerFreq: + <<: *real + description: Cutoff Frequency for first order low-pass filter for blade pitch angle, [rad/s] + + # Floating + Fl_Mode: + <<: *integer + description: Floating specific feedback mode {0 - no nacelle velocity feedback, 1 - nacelle velocity feedback} + Fl_Kp: + <<: *real + description: Nacelle velocity proportional feedback gain [s] + + # Trailing edge flaps + Flp_Mode: + <<: *integer + description: Flap actuator mode {0 - off, 1 - fixed flap position, 2 - PI flap control} + Flp_Angle: + <<: *real + description: Fixed flap angle (degrees) + Flp_Kp: + <<: *real + description: PI flap control proportional gain + Flp_Ki: + <<: *real + description: PI flap control integral gain + Flp_MaxPit: + <<: *real + description: Maximum (and minimum) flap pitch angle [rad] + + # Open-loop Control + OL_Filename: + <<: *character + description: Input file with open loop timeseries + OL_Mode: + <<: *integer + description: Open loop control mode {0 - no open loop control, 1 - open loop control vs. time, 2 - open loop control vs. wind speed} + Ind_Breakpoint: + <<: *integer + description: The column in OL_Filename that contains the breakpoint (time if OL_Mode = 1) + Ind_BldPitch: + <<: *integer + description: The column in OL_Filename that contains the blade pitch input in rad + Ind_GenTq: + <<: *integer + description: The column in OL_Filename that contains the generator torque in Nm + Ind_YawRate: + <<: *integer + description: The column in OL_Filename that contains the generator torque in Nm + OL_Breakpoints: + <<: *real + allocatable: True + description: Open loop breakpoints in timeseries + OL_BldPitch: + <<: *real + allocatable: True + description: Open blade pitch timeseries + OL_GenTq: + <<: *real + allocatable: True + description: Open generator torque timeseries + OL_YawRate: + <<: *real + allocatable: True + description: Open yaw rate timeseries + OL_Channels: + <<: *real + allocatable: True + shape: 2 + description: Open loop channels in timeseries + + # Calculated + PC_RtTq99: + <<: *real + description: 99% of the rated torque value, using for switching between pitch and torque control, [Nm]. + VS_MaxOMTq: + <<: *real + description: Maximum torque at the end of the below-rated region 2, [Nm] + VS_MinOMTq: + <<: *real + description: Minimum torque at the beginning of the below-rated region 2, [Nm] + + +LocalVariables: + iStatus: + <<: *integer + description: + Time: + <<: *real + description: + DT: + <<: *real + description: + VS_GenPwr: + <<: *real + description: + GenSpeed: + <<: *real + description: + RotSpeed: + <<: *real + description: + Y_M: + <<: *real + description: + HorWindV: + <<: *real + description: + rootMOOP: + <<: *real + description: + size: 3 + BlPitch: + <<: *real + description: + size: 3 + Azimuth: + <<: *real + description: + NumBl: + <<: *integer + description: + FA_Acc: + <<: *real + description: Tower fore-aft acceleration [m/s^2] + NacIMU_FA_Acc: + <<: *real + description: Tower fore-aft acceleration [rad/s^2] + FA_AccHPF: + <<: *real + description: High-pass filtered fore-aft acceleration [m/s^2] + FA_AccHPFI: + <<: *real + description: Tower velocity, high-pass filtered and integrated fore-aft acceleration [m/s] + FA_PitCom: + <<: *real + description: Tower fore-aft vibration damping pitch contribution [rad] + size: 3 + RotSpeedF: + <<: *real + description: Filtered LSS (generator) speed [rad/s]. + GenSpeedF: + <<: *real + description: Filtered HSS (generator) speed [rad/s]. + GenTq: + <<: *real + description: Electrical generator torque, [Nm]. + GenTqMeas: + <<: *real + description: Measured generator torque [Nm] + GenArTq: + <<: *real + description: Electrical generator torque, for above-rated PI-control [Nm]. + GenBrTq: + <<: *real + description: Electrical generator torque, for below-rated PI-control [Nm]. + IPC_PitComF: + <<: *real + description: Commanded pitch of each blade as calculated by the individual pitch controller, F stands for low-pass filtered [rad]. + size: 3 + PC_KP: + <<: *real + description: Proportional gain for pitch controller at rated pitch (zero) [s]. + PC_KI: + <<: *real + description: Integral gain for pitch controller at rated pitch (zero) [-]. + PC_KD: + <<: *real + description: Differential gain for pitch controller at rated pitch (zero) [-]. + PC_TF: + <<: *real + description: First-order filter parameter for derivative action + PC_MaxPit: + <<: *real + description: Maximum pitch setting in pitch controller (variable) [rad]. + PC_MinPit: + <<: *real + description: Minimum pitch setting in pitch controller (variable) [rad]. + PC_PitComT: + <<: *real + description: Total command pitch based on the sum of the proportional and integral terms [rad]. + PC_PitComTF: + <<: *real + description: Filtered Total command pitch based on the sum of the proportional and integral terms [rad]. + PC_PitComT_IPC: + <<: *real + description: Total command pitch based on the sum of the proportional and integral terms, including IPC term [rad]. + size: 3 + PC_PwrErr: + <<: *real + description: Power error with respect to rated power [W] + PC_SineExcitation: + <<: *real + description: Sine contribution to pitch signal + PC_SpdErr: + <<: *real + description: Current speed error (pitch control) [rad/s]. + PC_State: + <<: *integer + description: State of the pitch control system + PitCom: + <<: *real + description: Commanded pitch of each blade the last time the controller was called [rad]. + size: 3 + SS_DelOmegaF: + <<: *real + description: Filtered setpoint shifting term defined in setpoint smoother [rad/s]. + TestType: + <<: *real + description: Test variable, no use + VS_MaxTq: + <<: *real + description: Maximum allowable generator torque [Nm]. + VS_LastGenTrq: + <<: *real + description: Commanded electrical generator torque the last time the controller was called [Nm]. + VS_LastGenPwr: + <<: *real + description: Commanded electrical generator torque the last time the controller was called [Nm]. + VS_MechGenPwr: + <<: *real + description: Mechanical power on the generator axis [W] + VS_SpdErrAr: + <<: *real + description: Current speed error for region 2.5 PI controller (generator torque control) [rad/s]. + VS_SpdErrBr: + <<: *real + description: Current speed error for region 1.5 PI controller (generator torque control) [rad/s]. + VS_SpdErr: + <<: *real + description: Current speed error for tip-speed-ratio tracking controller (generator torque control) [rad/s]. + VS_State: + <<: *integer + description: State of the torque control system + VS_Rgn3Pitch: + <<: *real + description: Pitch angle at which the state machine switches to region 3, [rad]. + WE_Vw: + <<: *real + description: Estimated wind speed [m/s] + WE_Vw_F: + <<: *real + description: Filtered estimated wind speed [m/s] + WE_VwI: + <<: *real + description: Integrated wind speed quantity for estimation [m/s] + WE_VwIdot: + <<: *real + description: Differentiated integrated wind speed quantity for estimation [m/s] + VS_LastGenTrqF: + <<: *real + description: Differentiated integrated wind speed quantity for estimation [m/s] + Y_AccErr: + <<: *real + description: Accumulated yaw error [rad]. + Y_ErrLPFFast: + <<: *real + description: Filtered yaw error by fast low pass filter [rad]. + Y_ErrLPFSlow: + <<: *real + description: Filtered yaw error by slow low pass filter [rad]. + Y_MErr: + <<: *real + description: Measured yaw error, measured + setpoint [rad]. + Y_YawEndT: + <<: *real + description: Yaw end time [s]. Indicates the time up until which yaw is active with a fixed rate + SD: + <<: *logical + description: Shutdown, .FALSE. if inactive, .TRUE. if active + Fl_PitCom: + <<: *real + description: Shutdown, .FALSE. if inactive, .TRUE. if active + NACIMU_FA_AccF: + <<: *real + FA_AccF: + <<: *real + Flp_Angle: + <<: *real + description: Flap Angle (rad) + size: 3 + +ObjectInstances: + instLPF: + <<: *integer + description: Low-pass filter instance + instSecLPF: + <<: *integer + description: Second order low-pass filter instance + instHPF: + <<: *integer + description: High-pass filter instance + instNotchSlopes: + <<: *integer + description: Notch filter slopes instance + instNotch: + <<: *integer + description: Notch filter instance + instPI: + <<: *integer + description: PI controller instance + +PerformanceData: + TSR_vec: + <<: *real + allocatable: True + description: TSR vector for performance surfaces + Beta_vec: + <<: *real + allocatable: True + description: Blade pitch vector for performance surfaces [deg] + Cp_mat: + <<: *real + allocatable: True + shape: 2 + description: Power coefficient surface + Ct_mat: + <<: *real + allocatable: True + shape: 2 + description: Thrust coefficient surface + Cq_mat: + <<: *real + allocatable: True + shape: 2 + description: Torque coefficient surface + +DebugVariables: + WE_Cp: + <<: *real + description: Cp that WSE uses to determine aerodynamic torque[-] + WE_b: + <<: *real + description: Pitch that WSE uses to determine aerodynamic torque[-] + WE_w: + <<: *real + description: Rotor Speed that WSE uses to determine aerodynamic torque[-] + WE_t: + <<: *real + description: Torque that WSE uses[-] + WE_Vm: + <<: *real + description: Mean wind speed component in WSE [m/s] + WE_Vt: + <<: *real + description: Turbulent wind speed component in WSE [m/s] + WE_lambda: + <<: *real + description: TSR in WSE [rad] + PC_PICommand: + <<: *real + description: Commanded collective pitch from pitch PI controller [rad] + +ErrorVariables: + size_avcMSG: + <<: *integer + aviFAIL: + <<: *c_integer + description: '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.' + ErrMsg: + <<: *character + description: a Fortran version of the C string argument (not considered an array here) [subtract 1 for the C null-character] + allocatable: True + +ExtDLL_Type: + + FileAddr: + <<: *c_intptr_t + description: The address of file FileName. (RETURN value from LoadLibrary ) [Windows] + FileAddrX: + <<: *c_pointer + equals: C_NULL_PTR + description: The address of file FileName. (RETURN value from dlopen ) [Linux] + ProcAddr: + <<: *c_funptr + size: 3 + equals: C_NULL_FUNPTR + description: The address of procedure ProcName. (RETURN value from GetProcAddress or dlsym) [initialized to Null for pack/unpack] + FileName: + <<: *character + description: The name of the DLL file including the full path to the current working directory. + ProcName: + <<: *character + equals: '""' + size: 3 + description: The name of the procedure in the DLL that will be called. \ No newline at end of file diff --git a/ROSCO/rosco_registry/write_registry.py b/ROSCO/rosco_registry/write_registry.py new file mode 100644 index 00000000..bc3f0188 --- /dev/null +++ b/ROSCO/rosco_registry/write_registry.py @@ -0,0 +1,73 @@ +import yaml +import ROSCO_toolbox +import os +from ROSCO_toolbox.ofTools.util.FileTools import load_yaml + +def write_registry(yfile): + reg = load_yaml(yfile) + reg.pop('default_types') + registry_fname = os.path.join(os.path.dirname(os.path.dirname(os.path.abspath(__file__))),'src','ROSCO_Types.f90') + file = open(registry_fname, 'w') + file.write('! ROSCO Registry\n') + file.write('! This file is automatically generated by write_registry.py using ROSCO v{}\n'.format(ROSCO_toolbox.__version__)) + file.write('! For any modification to the registry, please edit the rosco_types.yaml accordingly\n \n') + file.write('MODULE ROSCO_Types\n') + file.write('USE, INTRINSIC :: ISO_C_Binding\n') + file.write('IMPLICIT NONE\n') + file.write('\n') + for toptype in reg.keys(): + file.write('TYPE, PUBLIC :: {}\n'.format(toptype)) + for attype in reg[toptype].keys(): + f90type = read_type(reg[toptype][attype]) + atstr = check_size(reg[toptype], attype) + if reg[toptype][attype]['equals']: + atstr += ' = ' + reg[toptype][attype]['equals'] + file.write(' {:<25s} :: {:<25s} ! {}\n'.format(f90type, atstr, reg[toptype][attype]['description'])) + file.write('END TYPE {}\n'.format(toptype)) + file.write('\n') + file.write('END MODULE ROSCO_Types') + file.close() + +def check_size(main_attribute, sub_attribute): + size = int(main_attribute[sub_attribute]['size']) + if size == 0: + atstr = sub_attribute + else: + atstr = sub_attribute + '({})'.format(size) + return atstr + +def read_type(param): + if param['type'] == 'integer': + f90type = 'INTEGER(4)' + if param['allocatable']: + f90type += ', DIMENSION(:), ALLOCATABLE' + elif param['type'] == 'real': + f90type = 'REAL(8)' + if param['allocatable'] and param['shape'] == 1: + f90type += ', DIMENSION(:), ALLOCATABLE' + if param['allocatable'] and param['shape'] == 2: + f90type += ', DIMENSION(:,:), ALLOCATABLE' + elif param['type'] == 'character': + f90type = 'CHARACTER(1024)' + if param['allocatable']: + f90type = 'CHARACTER(:), ALLOCATABLE' + elif param['type'] == 'logical': + f90type = 'LOGICAL(1)' + elif param['type'] == 'c_integer': + f90type = 'INTEGER(C_INT)' + elif param['type'] == 'c_pointer': + f90type = 'TYPE(C_PTR)' + elif param['type'] == 'c_intptr_t': + f90type = 'INTEGER(C_INTPTR_T)' + elif param['type'] == 'c_funptr': + f90type = 'TYPE(C_FUNPTR)' + else: + raise AttributeError('{} does not have a recognizable type'.format(param['type'])) + + + return f90type + +if __name__ == '__main__': + fname = os.path.join(os.path.dirname(os.path.abspath(__file__)),'rosco_types.yaml') + write_registry(fname) + diff --git a/ROSCO/src/Constants.f90 b/ROSCO/src/Constants.f90 index 2bce3480..b867c12c 100644 --- a/ROSCO/src/Constants.f90 +++ b/ROSCO/src/Constants.f90 @@ -14,7 +14,7 @@ MODULE Constants USE, INTRINSIC :: ISO_C_Binding - Character(*), PARAMETER :: rosco_version = 'v2.4.1' ! ROSCO version + Character(*), PARAMETER :: rosco_version = 'v2.4.1' ! ROSCO version INTEGER, PARAMETER :: DbKi = C_DOUBLE !< Default kind for double floating-point numbers INTEGER, PARAMETER :: ReKi = C_FLOAT !< Default kind for single floating-point numbers INTEGER, PARAMETER :: IntKi = C_INT !< Default kind for integer numbers @@ -25,5 +25,14 @@ MODULE Constants REAL(DbKi), PARAMETER :: PI = 3.14159265359 ! Mathematical constant pi INTEGER(IntKi), PARAMETER :: NP_1 = 1 ! First rotational harmonic INTEGER(IntKi), PARAMETER :: NP_2 = 2 ! Second rotational harmonic - CHARACTER(*), PARAMETER :: NewLine = ACHAR(10) ! The delimiter for New Lines [ Windows is CHAR(13)//CHAR(10); MAC is CHAR(13); Unix is CHAR(10) {CHAR(13)=\r is a line feed, CHAR(10)=\n is a new line}] -END MODULE Constants \ No newline at end of file + + ! NWTC Constants + INTEGER(IntKi), PARAMETER :: NWTC_MAX_DLL_PROC = 3 + INTEGER(IntKi), PARAMETER :: ErrID_None = 0 !< ErrStat parameter indicating "no error" + INTEGER(IntKi), PARAMETER :: ErrID_Info = 1 !< ErrStat parameter indicating "informational message" + INTEGER(IntKi), PARAMETER :: ErrID_Warn = 2 !< ErrStat parameter indicating "warning" + INTEGER(IntKi), PARAMETER :: ErrID_Severe = 3 !< ErrStat parameter indicating "severe error"; + INTEGER(IntKi), PARAMETER :: ErrID_Fatal = 4 !< ErrStat parameter indicating "fatal error"; simulation should end + INTEGER, PARAMETER :: BITS_IN_ADDR = C_INTPTR_T*8 !< The number of bits in an address (32-bit or 64-bit). + +END MODULE Constants diff --git a/ROSCO/src/ControllerBlocks.f90 b/ROSCO/src/ControllerBlocks.f90 index 6c76e2e1..c065759a 100644 --- a/ROSCO/src/ControllerBlocks.f90 +++ b/ROSCO/src/ControllerBlocks.f90 @@ -200,20 +200,45 @@ SUBROUTINE WindSpeedEstimator(LocalVar, CntrPar, objInst, PerfData, DebugVar, Er REAL(DbKi), DIMENSION(1,1) :: S ! Innovation covariance REAL(DbKi), DIMENSION(3,1), SAVE :: K ! Kalman gain matrix REAL(DbKi) :: R_m ! Measurement noise covariance [(rad/s)^2] + + REAL(DbKi) :: WE_Inp_Pitch + REAL(DbKi) :: WE_Inp_Torque + REAL(DbKi) :: WE_Inp_Speed CHARACTER(*), PARAMETER :: RoutineName = 'WindSpeedEstimator' + + + ! Saturate inputs to WSE + IF (LocalVar%RotSpeedF < 0.25 * CntrPar%VS_MinOMSpd / CntrPar%WE_GearboxRatio) THEN + WE_Inp_Speed = 0.25 * CntrPar%VS_MinOMSpd / CntrPar%WE_GearboxRatio + ELSE + WE_Inp_Speed = LocalVar%RotSpeedF + END IF + + IF (LocalVar%BlPitch(1) < CntrPar%PC_MinPit) THEN + WE_Inp_Pitch = CntrPar%PC_MinPit + ELSE + WE_Inp_Pitch = LocalVar%BlPitch(1) + END IF + + IF (LocalVar%VS_LastGenTrqF < 0.0001 * CntrPar%VS_RtTq) THEN + WE_Inp_Torque = 0.0001 * CntrPar%VS_RtTq + ELSE + WE_Inp_Torque = LocalVar%VS_LastGenTrqF + END IF + ! ---- Debug Inputs ------ - DebugVar%WE_b = LocalVar%PC_PitComTF*R2D - DebugVar%WE_w = LocalVar%RotSpeedF - DebugVar%WE_t = LocalVar%VS_LastGenTrqF + DebugVar%WE_b = WE_Inp_Pitch + DebugVar%WE_w = WE_Inp_Speed + DebugVar%WE_t = WE_Inp_Torque ! ---- Define wind speed estimate ---- ! Inversion and Invariance Filter implementation IF (CntrPar%WE_Mode == 1) THEN ! Compute AeroDynTorque - Tau_r = AeroDynTorque(LocalVar, CntrPar, PerfData, ErrVar) + Tau_r = AeroDynTorque(LocalVar%RotSpeedF, LocalVar%BlPitch(1), LocalVar, CntrPar, PerfData, ErrVar) LocalVar%WE_VwIdot = CntrPar%WE_Gamma/CntrPar%WE_Jtot*(LocalVar%VS_LastGenTrq*CntrPar%WE_GearboxRatio - Tau_r) LocalVar%WE_VwI = LocalVar%WE_VwI + LocalVar%WE_VwIdot*LocalVar%DT @@ -231,23 +256,24 @@ SUBROUTINE WindSpeedEstimator(LocalVar, CntrPar, objInst, PerfData, DebugVar, Er 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 = max(LocalVar%RotSpeedF, EPSILON(1.0_DbKi)) + om_r = WE_Inp_Speed v_t = 0.0 v_m = LocalVar%HorWindV v_h = LocalVar%HorWindV - lambda = max(LocalVar%RotSpeed, EPSILON(1.0_DbKi)) * CntrPar%WE_BladeRadius/v_h + lambda = WE_Inp_Speed * CntrPar%WE_BladeRadius/v_h 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/)) Cp_op = 0.25 ! initialize so debug output doesn't give ***** ELSE + ! Find estimated operating Cp and system pole A_op = interp1d(CntrPar%WE_FOPoles_v,CntrPar%WE_FOPoles,v_h,ErrVar) ! TEST INTERP2D - lambda = max(LocalVar%RotSpeed, EPSILON(1.0_DbKi)) * CntrPar%WE_BladeRadius/v_h - Cp_op = interp2d(PerfData%Beta_vec,PerfData%TSR_vec,PerfData%Cp_mat, LocalVar%BlPitch(1)*R2D, lambda , ErrVar) + lambda = max(WE_Inp_Speed, EPSILON(1.0_DbKi)) * CntrPar%WE_BladeRadius/v_h + Cp_op = interp2d(PerfData%Beta_vec,PerfData%TSR_vec,PerfData%Cp_mat, WE_Inp_Pitch*R2D, lambda , ErrVar) Cp_op = max(0.0,Cp_op) ! Update Jacobian @@ -263,9 +289,9 @@ SUBROUTINE WindSpeedEstimator(LocalVar, CntrPar, objInst, PerfData, DebugVar, Er Q(3,3) = (2.0**2.0)/600.0 ! Prediction update - Tau_r = AeroDynTorque(LocalVar, CntrPar, PerfData, ErrVar) + Tau_r = AeroDynTorque(WE_Inp_Speed, WE_Inp_Pitch, LocalVar, CntrPar, PerfData, ErrVar) a = PI * v_m/(2.0*L) - dxh(1,1) = 1.0/CntrPar%WE_Jtot * (Tau_r - CntrPar%WE_GearboxRatio * LocalVar%VS_LastGenTrqF) + dxh(1,1) = 1.0/CntrPar%WE_Jtot * (Tau_r - CntrPar%WE_GearboxRatio * WE_Inp_Torque) dxh(2,1) = -a*v_t dxh(3,1) = 0.0 @@ -275,7 +301,7 @@ SUBROUTINE WindSpeedEstimator(LocalVar, CntrPar, objInst, PerfData, DebugVar, Er ! 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%RotSpeedF - om_r) + xh = xh + K*(WE_Inp_Speed - om_r) P = MATMUL(identity(3) - MATMUL(K,H),P) @@ -287,7 +313,7 @@ SUBROUTINE WindSpeedEstimator(LocalVar, CntrPar, objInst, PerfData, DebugVar, Er LocalVar%WE_Vw = v_m + v_t IF (ieee_is_nan(v_h)) THEN - om_r = LocalVar%RotSpeedF + om_r = WE_Inp_Speed v_t = 0.0 v_m = LocalVar%HorWindV v_h = LocalVar%HorWindV diff --git a/ROSCO/src/Controllers.f90 b/ROSCO/src/Controllers.f90 index 8dc83dc8..ac918868 100644 --- a/ROSCO/src/Controllers.f90 +++ b/ROSCO/src/Controllers.f90 @@ -111,6 +111,14 @@ SUBROUTINE PitchControl(avrSWAP, CntrPar, LocalVar, objInst, DebugVar, ErrVar) 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 + ! Open Loop control, use if + ! Open loop mode active Using OL blade pitch control Time > first open loop breakpoint + IF ((CntrPar%OL_Mode == 1) .AND. (CntrPar%Ind_BldPitch > 0) .AND. (LocalVar%Time >= CntrPar%OL_Breakpoints(1))) THEN + DO K = 1,LocalVar%NumBl ! Loop through all blades + LocalVar%PitCom(K) = interp1d(CntrPar%OL_Breakpoints,CntrPar%OL_BldPitch,LocalVar%Time, ErrVar) + END DO + ENDIF + ! 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 @@ -125,7 +133,7 @@ SUBROUTINE PitchControl(avrSWAP, CntrPar, LocalVar, objInst, DebugVar, ErrVar) END SUBROUTINE PitchControl !------------------------------------------------------------------------------------------------------------------------------- - SUBROUTINE VariableSpeedControl(avrSWAP, CntrPar, LocalVar, objInst) + SUBROUTINE VariableSpeedControl(avrSWAP, CntrPar, LocalVar, objInst, ErrVar) ! 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 @@ -134,12 +142,16 @@ SUBROUTINE VariableSpeedControl(avrSWAP, CntrPar, LocalVar, objInst) ! 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 + USE ROSCO_Types, ONLY : ControlParameters, LocalVariables, ObjectInstances, ErrorVariables ! Inputs REAL(ReKi), INTENT(INOUT) :: avrSWAP(*) ! The swap array, used to pass data to, and receive data from, the DLL controller. TYPE(ControlParameters), INTENT(INOUT) :: CntrPar TYPE(LocalVariables), INTENT(INOUT) :: LocalVar TYPE(ObjectInstances), INTENT(INOUT) :: objInst + TYPE(ErrorVariables), INTENT(INOUT) :: ErrVar + + CHARACTER(*), PARAMETER :: RoutineName = 'VariableSpeedControl' + ! Allocate Variables ! -------- Variable-Speed Torque Controller -------- @@ -192,25 +204,40 @@ SUBROUTINE VariableSpeedControl(avrSWAP, CntrPar, LocalVar, objInst) ! Saturate the commanded torque using the torque rate limit: LocalVar%GenTq = ratelimit(LocalVar%GenTq, LocalVar%VS_LastGenTrq, -CntrPar%VS_MaxRat, CntrPar%VS_MaxRat, LocalVar%DT) ! Saturate the command using the torque rate limit + ! Open loop torque control + IF ((CntrPar%OL_Mode == 1) .AND. (CntrPar%Ind_GenTq > 0)) THEN + LocalVar%GenTq = interp1d(CntrPar%OL_Breakpoints,CntrPar%OL_GenTq,LocalVar%Time,ErrVar) + ENDIF + ! Reset the value of LocalVar%VS_LastGenTrq to the current values: LocalVar%VS_LastGenTrq = LocalVar%GenTq LocalVar%VS_LastGenPwr = LocalVar%VS_GenPwr ! Set the command generator torque (See Appendix A of Bladed User's Guide): avrSWAP(47) = MAX(0.0_DbKi, LocalVar%VS_LastGenTrq) ! Demanded generator torque, prevent negatives. + + ! Add RoutineName to error message + IF (ErrVar%aviFAIL < 0) THEN + ErrVar%ErrMsg = RoutineName//':'//TRIM(ErrVar%ErrMsg) + ENDIF + END SUBROUTINE VariableSpeedControl !------------------------------------------------------------------------------------------------------------------------------- - SUBROUTINE YawRateControl(avrSWAP, CntrPar, LocalVar, objInst) + SUBROUTINE YawRateControl(avrSWAP, CntrPar, LocalVar, objInst, ErrVar) ! 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 + USE ROSCO_Types, ONLY : ControlParameters, LocalVariables, ObjectInstances, ErrorVariables REAL(ReKi), INTENT(INOUT) :: avrSWAP(*) ! The swap array, used to pass data to, and receive data from, the DLL controller. TYPE(ControlParameters), INTENT(INOUT) :: CntrPar TYPE(LocalVariables), INTENT(INOUT) :: LocalVar TYPE(ObjectInstances), INTENT(INOUT) :: objInst + TYPE(ErrorVariables), INTENT(INOUT) :: ErrVar + + CHARACTER(*), PARAMETER :: RoutineName = 'YawRateControl' + !.............................................................................................................................. ! Yaw control @@ -236,6 +263,18 @@ SUBROUTINE YawRateControl(avrSWAP, CntrPar, LocalVar, objInst) LocalVar%Y_AccErr = 0.0 ! " END IF END IF + + ! If using open loop yaw rate control, overwrite controlled output + ! Open loop torque control + IF ((CntrPar%OL_Mode == 1) .AND. (CntrPar%Ind_YawRate > 0)) THEN + avrSWAP(48) = interp1d(CntrPar%OL_Breakpoints,CntrPar%OL_YawRate,LocalVar%Time, ErrVar) + ENDIF + + ! Add RoutineName to error message + IF (ErrVar%aviFAIL < 0) THEN + ErrVar%ErrMsg = RoutineName//':'//TRIM(ErrVar%ErrMsg) + ENDIF + END SUBROUTINE YawRateControl !------------------------------------------------------------------------------------------------------------------------------- SUBROUTINE IPC(CntrPar, LocalVar, objInst) diff --git a/ROSCO/src/DISCON.F90 b/ROSCO/src/DISCON.F90 index 38d8aa1b..84c5820b 100644 --- a/ROSCO/src/DISCON.F90 +++ b/ROSCO/src/DISCON.F90 @@ -77,11 +77,11 @@ SUBROUTINE DISCON(avrSWAP, aviFAIL, accINFILE, avcOUTNAME, avcMSG) BIND (C, NAME CALL StateMachine(CntrPar, LocalVar) CALL SetpointSmoother(LocalVar, CntrPar, objInst) CALL ComputeVariablesSetpoints(CntrPar, LocalVar, objInst) - CALL VariableSpeedControl(avrSWAP, CntrPar, LocalVar, objInst) + CALL VariableSpeedControl(avrSWAP, CntrPar, LocalVar, objInst, ErrVar) CALL PitchControl(avrSWAP, CntrPar, LocalVar, objInst, DebugVar, ErrVar) IF (CntrPar%Y_ControlMode > 0) THEN - CALL YawRateControl(avrSWAP, CntrPar, LocalVar, objInst) + CALL YawRateControl(avrSWAP, CntrPar, LocalVar, objInst, ErrVar) END IF IF (CntrPar%Flp_Mode > 0) THEN diff --git a/ROSCO/src/Functions.f90 b/ROSCO/src/Functions.f90 index b99d1527..6b133502 100644 --- a/ROSCO/src/Functions.f90 +++ b/ROSCO/src/Functions.f90 @@ -506,7 +506,7 @@ REAL(DbKi) FUNCTION CPfunction(CP, lambda) END FUNCTION CPfunction !------------------------------------------------------------------------------------------------------------------------------- - REAL(DbKi) FUNCTION AeroDynTorque(LocalVar, CntrPar, PerfData, ErrVar) + REAL(DbKi) FUNCTION AeroDynTorque(RotSpeed, BldPitch, LocalVar, CntrPar, PerfData, ErrVar) ! 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, ErrorVariables @@ -517,6 +517,9 @@ REAL(DbKi) FUNCTION AeroDynTorque(LocalVar, CntrPar, PerfData, ErrVar) TYPE(LocalVariables), INTENT(IN) :: LocalVar TYPE(PerformanceData), INTENT(IN) :: PerfData TYPE(ErrorVariables), INTENT(INOUT) :: ErrVar + + REAL(DbKi), INTENT(IN) :: RotSpeed + REAL(DbKi), INTENT(IN) :: BldPitch ! Local REAL(DbKi) :: RotorArea @@ -527,12 +530,12 @@ REAL(DbKi) FUNCTION AeroDynTorque(LocalVar, CntrPar, PerfData, ErrVar) ! Find Torque RotorArea = PI*CntrPar%WE_BladeRadius**2 - Lambda = LocalVar%RotSpeedF*CntrPar%WE_BladeRadius/LocalVar%WE_Vw + Lambda = RotSpeed*CntrPar%WE_BladeRadius/LocalVar%WE_Vw ! Compute Cp - Cp = interp2d(PerfData%Beta_vec,PerfData%TSR_vec,PerfData%Cp_mat, LocalVar%PC_PitComT*R2D, Lambda, ErrVar) + Cp = interp2d(PerfData%Beta_vec,PerfData%TSR_vec,PerfData%Cp_mat, BldPitch*R2D, Lambda, ErrVar) - AeroDynTorque = 0.5*(CntrPar%WE_RhoAir*RotorArea)*(LocalVar%WE_Vw**3/LocalVar%RotSpeedF)*Cp + AeroDynTorque = 0.5*(CntrPar%WE_RhoAir*RotorArea)*(LocalVar%WE_Vw**3/RotSpeed)*Cp AeroDynTorque = MAX(AeroDynTorque, 0.0_DbKi) ! Add RoutineName to error message diff --git a/ROSCO/src/ROSCO_Types.f90 b/ROSCO/src/ROSCO_Types.f90 index bd4670b5..94620ffe 100644 --- a/ROSCO/src/ROSCO_Types.f90 +++ b/ROSCO/src/ROSCO_Types.f90 @@ -1,247 +1,226 @@ -! Copyright 2019 NREL - -! Licensed under the Apache License, Version 2.0 (the "License"); you may not use -! this file except in compliance with the License. You may obtain a copy of the -! License at http://www.apache.org/licenses/LICENSE-2.0 - -! Unless required by applicable law or agreed to in writing, software distributed -! under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR -! CONDITIONS OF ANY KIND, either express or implied. See the License for the -! specific language governing permissions and limitations under the License. -! ------------------------------------------------------------------------------------------- -! Define variable types - -! Types: -! ControlParameters: Parameters read from DISCON.IN -! LocalVariables: Varaibles shared by controller modules -! ObjectInstances: Instances used for recursive functions (i.e. filters) -! PerformanceData: Rotor performance surface data - -MODULE ROSCO_Types -! Define Types -USE, INTRINSIC :: ISO_C_Binding -USE Constants -IMPLICIT NONE - - -TYPE, PUBLIC :: ControlParameters - INTEGER(IntKi) :: 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(IntKi) :: F_LPFType ! {1: first-order low-pass filter, 2: second-order low-pass filter}, [rad/s] - INTEGER(IntKi) :: F_NotchType ! Notch on the measured generator speed {0: disable, 1: enable} - REAL(DbKi) :: F_LPFCornerFreq ! Corner frequency (-3dB point) in the first-order low-pass filter, [rad/s] - REAL(DbKi) :: F_LPFDamping ! Damping coefficient [used only when F_FilterType = 2] - REAL(DbKi) :: F_NotchCornerFreq ! Natural frequency of the notch filter, [rad/s] - REAL(DbKi), DIMENSION(:), ALLOCATABLE :: F_NotchBetaNumDen ! These two notch damping values (numerator and denominator) determines the width and depth of the notch - REAL(DbKi) :: F_SSCornerFreq ! Setpoint Smoother mode {0: no setpoint smoothing, 1: introduce setpoint smoothing} - REAL(DbKi) :: F_WECornerFreq ! Corner frequency (-3dB point) in the first order low pass filter for the wind speed estimate [rad/s] - REAL(DbKi), DIMENSION(:), ALLOCATABLE :: F_FlCornerFreq ! Corner frequency (-3dB point) in the second order low pass filter of the tower-top fore-aft motion for floating feedback control [rad/s]. - REAL(DbKi) :: F_FlHighPassFreq ! Natural frequency of first-roder high-pass filter for nacelle fore-aft motion [rad/s] - REAL(DbKi), DIMENSION(:), ALLOCATABLE :: F_FlpCornerFreq ! Corner frequency (-3dB point) in the second order low pass filter of the blade root bending moment for flap control [rad/s]. - - REAL(DbKi) :: FA_HPFCornerFreq ! Corner frequency (-3dB point) in the high-pass filter on the fore-aft acceleration signal [rad/s] - REAL(DbKi) :: FA_IntSat ! Integrator saturation (maximum signal amplitude contrbution to pitch from FA damper), [rad] - REAL(DbKi) :: FA_KI ! Integral gain for the fore-aft tower damper controller, -1 = off / >0 = on [rad s/m] - - INTEGER(IntKi) :: IPC_ControlMode ! Turn Individual Pitch Control (IPC) for fatigue load reductions (pitch contribution) {0: off, 1: 1P reductions, 2: 1P+2P reductions} - REAL(DbKi) :: IPC_IntSat ! Integrator saturation (maximum signal amplitude contrbution to pitch from IPC) - REAL(DbKi), DIMENSION(:), ALLOCATABLE :: IPC_KI ! Integral gain for the individual pitch controller, [-]. 8E-10 - REAL(DbKi), DIMENSION(:), ALLOCATABLE :: IPC_aziOffset ! Phase offset added to the azimuth angle for the individual pitch controller, [rad]. - REAL(DbKi) :: IPC_CornerFreqAct ! Corner frequency of the first-order actuators model, to induce a phase lag in the IPC signal {0: Disable}, [rad/s] - - INTEGER(IntKi) :: PC_ControlMode ! Blade pitch control mode {0: No pitch, fix to fine pitch, 1: active PI blade pitch control} - INTEGER(IntKi) :: PC_GS_n ! Amount of gain-scheduling table entries - REAL(DbKi), DIMENSION(:), ALLOCATABLE :: PC_GS_angles ! Gain-schedule table: pitch angles - REAL(DbKi), DIMENSION(:), ALLOCATABLE :: PC_GS_KP ! Gain-schedule table: pitch controller kp gains - REAL(DbKi), DIMENSION(:), ALLOCATABLE :: PC_GS_KI ! Gain-schedule table: pitch controller ki gains - REAL(DbKi), DIMENSION(:), ALLOCATABLE :: PC_GS_KD ! Gain-schedule table: pitch controller kd gains - REAL(DbKi), DIMENSION(:), ALLOCATABLE :: PC_GS_TF ! Gain-schedule table: pitch controller tf gains (derivative filter) - REAL(DbKi) :: PC_MaxPit ! Maximum physical pitch limit, [rad]. - REAL(DbKi) :: PC_MinPit ! Minimum physical pitch limit, [rad]. - REAL(DbKi) :: PC_MaxRat ! Maximum pitch rate (in absolute value) in pitch controller, [rad/s]. - REAL(DbKi) :: PC_MinRat ! Minimum pitch rate (in absolute value) in pitch controller, [rad/s]. - REAL(DbKi) :: PC_RefSpd ! Desired (reference) HSS speed for pitch controller, [rad/s]. - REAL(DbKi) :: PC_FinePit ! Record 5: Below-rated pitch angle set-point (deg) [used only with Bladed Interface] - REAL(DbKi) :: PC_Switch ! Angle above lowest minimum pitch angle for switch [rad] - - INTEGER(IntKi) :: VS_ControlMode ! Generator torque control mode in above rated conditions {0: constant torque, 1: constant power, 2: TSR Tracking, 3: TSR Tracking w/ const power} - REAL(DbKi) :: VS_GenEff ! Generator efficiency mechanical power -> electrical power [-] - REAL(DbKi) :: VS_ArSatTq ! Above rated generator torque PI control saturation, [Nm] -- 212900 - REAL(DbKi) :: VS_MaxRat ! Maximum torque rate (in absolute value) in torque controller, [Nm/s]. - REAL(DbKi) :: VS_MaxTq ! Maximum generator torque in Region 3 (HSS side), [Nm]. -- chosen to be 10% above VS_RtTq - REAL(DbKi) :: VS_MinTq ! Minimum generator (HSS side), [Nm]. - REAL(DbKi) :: VS_MinOMSpd ! Optimal mode minimum speed, [rad/s] - REAL(DbKi) :: VS_Rgn2K ! Generator torque constant in Region 2 (HSS side), N-m/(rad/s)^2 - REAL(DbKi) :: VS_RtPwr ! Wind turbine rated power [W] - REAL(DbKi) :: VS_RtTq ! Rated torque, [Nm]. - REAL(DbKi) :: VS_RefSpd ! Rated generator speed [rad/s] - INTEGER(IntKi) :: VS_n ! Number of controller gains - REAL(DbKi), DIMENSION(:), ALLOCATABLE :: VS_KP ! Proportional gain for generator PI torque controller, used in the transitional 2.5 region - REAL(DbKi), DIMENSION(:), ALLOCATABLE :: VS_KI ! Integral gain for generator PI torque controller, used in the transitional 2.5 region - REAL(DbKi) :: VS_TSRopt ! Power-maximizing region 2 tip-speed ratio [rad] - - INTEGER(IntKi) :: SS_Mode ! Setpoint Smoother mode {0: no setpoint smoothing, 1: introduce setpoint smoothing} - REAL(DbKi) :: SS_VSGain ! Variable speed torque controller setpoint smoother gain, [-]. - REAL(DbKi) :: SS_PCGain ! Collective pitch controller setpoint smoother gain, [-]. - - INTEGER(IntKi) :: 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(DbKi) :: WE_BladeRadius ! Blade length [m] - INTEGER(IntKi) :: WE_CP_n ! Amount of parameters in the Cp array - REAL(DbKi), DIMENSION(:), ALLOCATABLE :: WE_CP ! Parameters that define the parameterized CP(\lambda) function - REAL(DbKi) :: WE_Gamma ! Adaption gain of the wind speed estimator algorithm [m/rad] - REAL(DbKi) :: WE_GearboxRatio ! Gearbox ratio, >=1 [-] - REAL(DbKi) :: WE_Jtot ! Total drivetrain inertia, including blades, hub and casted generator inertia to LSS [kg m^2] - REAL(DbKi) :: WE_RhoAir ! Air density [kg m^-3] - CHARACTER(1024) :: PerfFileName ! File containing rotor performance tables (Cp,Ct,Cq) - INTEGER(IntKi), 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(IntKi) :: WE_FOPoles_N ! Number of first-order system poles used in EKF - REAL(DbKi), DIMENSION(:), ALLOCATABLE :: WE_FOPoles_v ! Wind speeds corresponding to first-order system poles [m/s] - REAL(DbKi), DIMENSION(:), ALLOCATABLE :: WE_FOPoles ! First order system poles - - INTEGER(IntKi) :: Y_ControlMode ! Yaw control mode {0: no yaw control, 1: yaw rate control, 2: yaw-by-IPC} - REAL(DbKi) :: Y_ErrThresh ! Error threshold [rad]. Turbine begins to yaw when it passes this. (104.71975512) -- 1.745329252 - REAL(DbKi) :: Y_IPC_IntSat ! Integrator saturation (maximum signal amplitude contrbution to pitch from yaw-by-IPC) - INTEGER(IntKi) :: Y_IPC_n ! Number of controller gains (yaw-by-IPC) - REAL(DbKi), DIMENSION(:), ALLOCATABLE :: Y_IPC_KP ! Yaw-by-IPC proportional controller gain Kp - REAL(DbKi), DIMENSION(:), ALLOCATABLE :: Y_IPC_KI ! Yaw-by-IPC integral controller gain Ki - REAL(DbKi) :: Y_IPC_omegaLP ! Low-pass filter corner frequency for the Yaw-by-IPC controller to filtering the yaw alignment error, [rad/s]. - REAL(DbKi) :: Y_IPC_zetaLP ! Low-pass filter damping factor for the Yaw-by-IPC controller to filtering the yaw alignment error, [-]. - REAL(DbKi) :: Y_MErrSet ! Yaw alignment error, setpoint [rad] - REAL(DbKi) :: Y_omegaLPFast ! Corner frequency fast low pass filter, 1.0 [Hz] - REAL(DbKi) :: Y_omegaLPSlow ! Corner frequency slow low pass filter, 1/60 [Hz] - REAL(DbKi) :: Y_Rate ! Yaw rate [rad/s] - - INTEGER(IntKi) :: PS_Mode ! Pitch saturation mode {0: no peak shaving, 1: implement pitch saturation} - INTEGER(IntKi) :: PS_BldPitchMin_N ! Number of values in minimum blade pitch lookup table (should equal number of values in PS_WindSpeeds and PS_BldPitchMin) - REAL(DbKi), DIMENSION(:), ALLOCATABLE :: PS_WindSpeeds ! Wind speeds corresponding to minimum blade pitch angles [m/s] - REAL(DbKi), DIMENSION(:), ALLOCATABLE :: PS_BldPitchMin ! Minimum blade pitch angles [rad] - - INTEGER(IntKi) :: SD_Mode ! Shutdown mode {0: no shutdown procedure, 1: pitch to max pitch at shutdown} - REAL(DbKi) :: SD_MaxPit ! Maximum blade pitch angle to initiate shutdown, [rad] - REAL(DbKi) :: SD_CornerFreq ! Cutoff Frequency for first order low-pass filter for blade pitch angle, [rad/s] - - INTEGER(IntKi) :: Fl_Mode ! Floating specific feedback mode {0: no nacelle velocity feedback, 1: nacelle velocity feedback} - REAL(DbKi) :: Fl_Kp ! Nacelle velocity proportional feedback gain [s] - - INTEGER(IntKi) :: Flp_Mode ! Flap actuator mode {0: off, 1: fixed flap position, 2: PI flap control} - REAL(DbKi) :: Flp_Angle ! Fixed flap angle (degrees) - REAL(DbKi) :: Flp_Kp ! PI flap control proportional gain - REAL(DbKi) :: Flp_Ki ! PI flap control integral gain - REAL(DbKi) :: Flp_MaxPit ! Maximum (and minimum) flap pitch angle [rad] - - REAL(DbKi) :: PC_RtTq99 ! 99% of the rated torque value, using for switching between pitch and torque control, [Nm]. - REAL(DbKi) :: VS_MaxOMTq ! Maximum torque at the end of the below-rated region 2, [Nm] - REAL(DbKi) :: VS_MinOMTq ! Minimum torque at the beginning of the below-rated region 2, [Nm] - -END TYPE ControlParameters - -TYPE, PUBLIC :: LocalVariables - ! ---------- From avrSWAP ---------- - INTEGER(IntKi) :: iStatus - REAL(DbKi) :: Time - REAL(DbKi) :: DT - REAL(DbKi) :: VS_GenPwr - REAL(DbKi) :: GenSpeed - REAL(DbKi) :: RotSpeed - REAL(DbKi) :: Y_M - REAL(DbKi) :: HorWindV - REAL(DbKi) :: rootMOOP(3) - REAL(DbKi) :: BlPitch(3) - REAL(DbKi) :: Azimuth - INTEGER(IntKi) :: NumBl - REAL(DbKi) :: FA_Acc ! Tower fore-aft acceleration [m/s^2] - REAL(DbKi) :: NacIMU_FA_Acc ! Tower fore-aft acceleration [rad/s^2] - - ! ---------- -Internal controller variables ---------- - REAL(DbKi) :: FA_AccHPF ! High-pass filtered fore-aft acceleration [m/s^2] - REAL(DbKi) :: FA_AccHPFI ! Tower velocity, high-pass filtered and integrated fore-aft acceleration [m/s] - REAL(DbKi) :: FA_PitCom(3) ! Tower fore-aft vibration damping pitch contribution [rad] - REAL(DbKi) :: RotSpeedF ! Filtered LSS (generator) speed [rad/s]. - REAL(DbKi) :: GenSpeedF ! Filtered HSS (generator) speed [rad/s]. - REAL(DbKi) :: GenTq ! Electrical generator torque, [Nm]. - REAL(DbKi) :: GenTqMeas ! Measured generator torque [Nm] - REAL(DbKi) :: GenArTq ! Electrical generator torque, for above-rated PI-control [Nm]. - REAL(DbKi) :: GenBrTq ! Electrical generator torque, for below-rated PI-control [Nm]. - REAL(DbKi) :: IPC_PitComF(3) ! Commanded pitch of each blade as calculated by the individual pitch controller, F stands for low-pass filtered [rad]. - REAL(DbKi) :: PC_KP ! Proportional gain for pitch controller at rated pitch (zero) [s]. - REAL(DbKi) :: PC_KI ! Integral gain for pitch controller at rated pitch (zero) [-]. - REAL(DbKi) :: PC_KD ! Differential gain for pitch controller at rated pitch (zero) [-]. - REAL(DbKi) :: PC_TF ! First-order filter parameter for derivative action - REAL(DbKi) :: PC_MaxPit ! Maximum pitch setting in pitch controller (variable) [rad]. - REAL(DbKi) :: PC_MinPit ! Minimum pitch setting in pitch controller (variable) [rad]. - REAL(DbKi) :: PC_PitComT ! Total command pitch based on the sum of the proportional and integral terms [rad]. - REAL(DbKi) :: PC_PitComTF ! Filtered Total command pitch based on the sum of the proportional and integral terms [rad]. - REAL(DbKi) :: PC_PitComT_IPC(3) ! Total command pitch based on the sum of the proportional and integral terms, including IPC term [rad]. - REAL(DbKi) :: PC_PwrErr ! Power error with respect to rated power [W] - REAL(DbKi) :: PC_SineExcitation ! Sine contribution to pitch signal - REAL(DbKi) :: PC_SpdErr ! Current speed error (pitch control) [rad/s]. - INTEGER(IntKi) :: PC_State ! State of the pitch control system - REAL(DbKi) :: PitCom(3) ! Commanded pitch of each blade the last time the controller was called [rad]. - REAL(DbKi) :: SS_DelOmegaF ! Filtered setpoint shifting term defined in setpoint smoother [rad/s]. - REAL(DbKi) :: TestType ! Test variable, no use - REAL(DbKi) :: VS_MaxTq ! Maximum allowable generator torque [Nm]. - REAL(DbKi) :: VS_LastGenTrq ! Commanded electrical generator torque the last time the controller was called [Nm]. - REAL(DbKi) :: VS_LastGenPwr ! Commanded electrical generator torque the last time the controller was called [Nm]. - REAL(DbKi) :: VS_MechGenPwr ! Mechanical power on the generator axis [W] - REAL(DbKi) :: VS_SpdErrAr ! Current speed error for region 2.5 PI controller (generator torque control) [rad/s]. - REAL(DbKi) :: VS_SpdErrBr ! Current speed error for region 1.5 PI controller (generator torque control) [rad/s]. - REAL(DbKi) :: VS_SpdErr ! Current speed error for tip-speed-ratio tracking controller (generator torque control) [rad/s]. - INTEGER(IntKi) :: VS_State ! State of the torque control system - REAL(DbKi) :: VS_Rgn3Pitch ! Pitch angle at which the state machine switches to region 3, [rad]. - REAL(DbKi) :: WE_Vw ! Estimated wind speed [m/s] - REAL(DbKi) :: WE_Vw_F ! Filtered estimated wind speed [m/s] - REAL(DbKi) :: WE_VwI ! Integrated wind speed quantity for estimation [m/s] - REAL(DbKi) :: WE_VwIdot ! Differentiated integrated wind speed quantity for estimation [m/s] - REAL(DbKi) :: VS_LastGenTrqF ! Differentiated integrated wind speed quantity for estimation [m/s] - REAL(DbKi) :: Y_AccErr ! Accumulated yaw error [rad]. - REAL(DbKi) :: Y_ErrLPFFast ! Filtered yaw error by fast low pass filter [rad]. - REAL(DbKi) :: Y_ErrLPFSlow ! Filtered yaw error by slow low pass filter [rad]. - REAL(DbKi) :: Y_MErr ! Measured yaw error, measured + setpoint [rad]. - REAL(DbKi) :: 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 - REAL(DbKi) :: Fl_PitCom ! Shutdown, .FALSE. if inactive, .TRUE. if active - REAL(DbKi) :: NACIMU_FA_AccF - REAL(DbKi) :: FA_AccF - REAL(DbKi) :: Flp_Angle(3) ! Flap Angle (rad) - END TYPE LocalVariables - -TYPE, PUBLIC :: ObjectInstances - INTEGER(IntKi) :: instLPF - INTEGER(IntKi) :: instSecLPF - INTEGER(IntKi) :: instHPF - INTEGER(IntKi) :: instNotchSlopes - INTEGER(IntKi) :: instNotch - INTEGER(IntKi) :: instPI -END TYPE ObjectInstances - -TYPE, PUBLIC :: PerformanceData - REAL(DbKi), DIMENSION(:), ALLOCATABLE :: TSR_vec - REAL(DbKi), DIMENSION(:), ALLOCATABLE :: Beta_vec - REAL(DbKi), DIMENSION(:,:), ALLOCATABLE :: Cp_mat - REAL(DbKi), DIMENSION(:,:), ALLOCATABLE :: Ct_mat - REAL(DbKi), DIMENSION(:,:), ALLOCATABLE :: Cq_mat -END TYPE PerformanceData - -TYPE, PUBLIC :: DebugVariables -! Variables used for debug purposes - REAL(DbKi) :: WE_Cp ! Cp that WSE uses to determine aerodynamic torque[-] - REAL(DbKi) :: WE_b ! Pitch that WSE uses to determine aerodynamic torque[-] - REAL(DbKi) :: WE_w ! Rotor Speed that WSE uses to determine aerodynamic torque[-] - REAL(DbKi) :: WE_t ! Torque that WSE uses[-] - REAL(DbKi) :: WE_Vm ! Mean wind speed component in WSE [m/s] - REAL(DbKi) :: WE_Vt ! Turbulent wind speed component in WSE [m/s] - REAL(DbKi) :: WE_lambda ! TSR in WSE [rad] - ! - REAL(DbKi) :: PC_PICommand - -END TYPE DebugVariables - -TYPE, PUBLIC :: ErrorVariables - ! Error Catching - INTEGER(IntKi) :: size_avcMSG - INTEGER(C_INT) :: 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. - ! CHARACTER(:), ALLOCATABLE :: ErrMsg ! a Fortran version of the C string argument (not considered an array here) [subtract 1 for the C null-character] - CHARACTER(:), ALLOCATABLE :: ErrMsg ! a Fortran version of the C string argument (not considered an array here) [subtract 1 for the C null-character] -END TYPE ErrorVariables - +! ROSCO Registry +! This file is automatically generated by write_registry.py using ROSCO v2.4.1 +! For any modification to the registry, please edit the rosco_types.yaml accordingly + +MODULE ROSCO_Types +USE, INTRINSIC :: ISO_C_Binding +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 ! Low pass filter on the rotor and generator speed {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(8) :: F_LPFCornerFreq ! Corner frequency (-3dB point) in the first-order low-pass filter, [rad/s] + REAL(8) :: F_LPFDamping ! Damping coefficient [used only when F_FilterType = 2] + REAL(8) :: F_NotchCornerFreq ! Natural frequency of the notch filter, [rad/s] + REAL(8), DIMENSION(:), ALLOCATABLE :: F_NotchBetaNumDen ! These two notch damping values (numerator and denominator) determines the width and depth of the notch + REAL(8) :: F_SSCornerFreq ! Corner frequency (-3dB point) in the first order low pass filter for the setpoint smoother [rad/s] + REAL(8) :: F_WECornerFreq ! Corner frequency (-3dB point) in the first order low pass filter for the wind speed estimate [rad/s] + REAL(8), DIMENSION(:), ALLOCATABLE :: F_FlCornerFreq ! Corner frequency (-3dB point) in the second order low pass filter of the tower-top fore-aft motion for floating feedback control [rad/s]. + REAL(8) :: F_FlHighPassFreq ! Natural frequency of first-roder high-pass filter for nacelle fore-aft motion [rad/s]. + REAL(8), DIMENSION(:), ALLOCATABLE :: F_FlpCornerFreq ! Corner frequency (-3dB point) in the second order low pass filter of the blade root bending moment for flap control [rad/s]. + REAL(8) :: FA_HPFCornerFreq ! Corner frequency (-3dB point) in the high-pass filter on the fore-aft acceleration signal [rad/s] + REAL(8) :: FA_IntSat ! Integrator saturation (maximum signal amplitude contrbution to pitch from FA damper), [rad] + REAL(8) :: 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} + REAL(8) :: IPC_IntSat ! Integrator saturation (maximum signal amplitude contrbution to pitch from IPC) + REAL(8), DIMENSION(:), ALLOCATABLE :: IPC_KI ! Integral gain for the individual pitch controller, [-]. 8E-10 + REAL(8), DIMENSION(:), ALLOCATABLE :: IPC_aziOffset ! Phase offset added to the azimuth angle for the individual pitch controller, [rad]. + REAL(8) :: 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(8), DIMENSION(:), ALLOCATABLE :: PC_GS_angles ! Gain-schedule table - pitch angles + REAL(8), DIMENSION(:), ALLOCATABLE :: PC_GS_KP ! Gain-schedule table - pitch controller kp gains + REAL(8), DIMENSION(:), ALLOCATABLE :: PC_GS_KI ! Gain-schedule table - pitch controller ki gains + REAL(8), DIMENSION(:), ALLOCATABLE :: PC_GS_KD ! Gain-schedule table - pitch controller kd gains + REAL(8), DIMENSION(:), ALLOCATABLE :: PC_GS_TF ! Gain-schedule table - pitch controller tf gains (derivative filter) + REAL(8) :: PC_MaxPit ! Maximum physical pitch limit, [rad]. + REAL(8) :: PC_MinPit ! Minimum physical pitch limit, [rad]. + REAL(8) :: PC_MaxRat ! Maximum pitch rate (in absolute value) in pitch controller, [rad/s]. + REAL(8) :: PC_MinRat ! Minimum pitch rate (in absolute value) in pitch controller, [rad/s]. + REAL(8) :: PC_RefSpd ! Desired (reference) HSS speed for pitch controller, [rad/s]. + REAL(8) :: PC_FinePit ! Record 5 - Below-rated pitch angle set-point (deg) [used only with Bladed Interface] + REAL(8) :: 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, 2 - TSR Tracking, 3 - TSR Tracking w/ const power} + REAL(8) :: VS_GenEff ! Generator efficiency mechanical power -> electrical power [-] + REAL(8) :: VS_ArSatTq ! Above rated generator torque PI control saturation, [Nm] -- 212900 + REAL(8) :: VS_MaxRat ! Maximum torque rate (in absolute value) in torque controller, [Nm/s]. + REAL(8) :: VS_MaxTq ! Maximum generator torque in Region 3 (HSS side), [Nm]. -- chosen to be 10% above VS_RtTq + REAL(8) :: VS_MinTq ! Minimum generator (HSS side), [Nm]. + REAL(8) :: VS_MinOMSpd ! Optimal mode minimum speed, [rad/s] + REAL(8) :: VS_Rgn2K ! Generator torque constant in Region 2 (HSS side), N-m/(rad/s)^2 + REAL(8) :: VS_RtPwr ! Wind turbine rated power [W] + REAL(8) :: VS_RtTq ! Rated torque, [Nm]. + REAL(8) :: VS_RefSpd ! Rated generator speed [rad/s] + INTEGER(4) :: VS_n ! Number of controller gains + REAL(8), DIMENSION(:), ALLOCATABLE :: VS_KP ! Proportional gain for generator PI torque controller, used in the transitional 2.5 region + REAL(8), DIMENSION(:), ALLOCATABLE :: VS_KI ! Integral gain for generator PI torque controller, used in the transitional 2.5 region + REAL(8) :: 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(8) :: SS_VSGain ! Variable speed torque controller setpoint smoother gain, [-]. + REAL(8) :: 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(8) :: WE_BladeRadius ! Blade length [m] + INTEGER(4) :: WE_CP_n ! Amount of parameters in the Cp array + REAL(8), DIMENSION(:), ALLOCATABLE :: WE_CP ! Parameters that define the parameterized CP(\lambda) function + REAL(8) :: WE_Gamma ! Adaption gain of the wind speed estimator algorithm [m/rad] + REAL(8) :: WE_GearboxRatio ! Gearbox ratio, >=1 [-] + REAL(8) :: WE_Jtot ! Total drivetrain inertia, including blades, hub and casted generator inertia to LSS [kg m^2] + REAL(8) :: WE_RhoAir ! Air density [kg m^-3] + 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(8), DIMENSION(:), ALLOCATABLE :: WE_FOPoles_v ! Wind speeds corresponding to first-order system poles [m/s] + REAL(8), 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(8) :: Y_ErrThresh ! Error threshold [rad]. Turbine begins to yaw when it passes this. (104.71975512) -- 1.745329252 + REAL(8) :: 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) + REAL(8), DIMENSION(:), ALLOCATABLE :: Y_IPC_KP ! Yaw-by-IPC proportional controller gain Kp + REAL(8), DIMENSION(:), ALLOCATABLE :: Y_IPC_KI ! Yaw-by-IPC integral controller gain Ki + REAL(8) :: Y_IPC_omegaLP ! Low-pass filter corner frequency for the Yaw-by-IPC controller to filtering the yaw alignment error, [rad/s]. + REAL(8) :: Y_IPC_zetaLP ! Low-pass filter damping factor for the Yaw-by-IPC controller to filtering the yaw alignment error, [-]. + REAL(8) :: Y_MErrSet ! Yaw alignment error, setpoint [rad] + REAL(8) :: Y_omegaLPFast ! Corner frequency fast low pass filter, 1.0 [Hz] + REAL(8) :: Y_omegaLPSlow ! Corner frequency slow low pass filter, 1/60 [Hz] + REAL(8) :: Y_Rate ! Yaw rate [rad/s] + INTEGER(4) :: PS_Mode ! Pitch saturation mode {0 - no peak shaving, 1 - implement pitch saturation} + 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(8), DIMENSION(:), ALLOCATABLE :: PS_WindSpeeds ! Wind speeds corresponding to minimum blade pitch angles [m/s] + REAL(8), 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(8) :: SD_MaxPit ! Maximum blade pitch angle to initiate shutdown, [rad] + REAL(8) :: SD_CornerFreq ! Cutoff Frequency for first order low-pass filter for blade pitch angle, [rad/s] + INTEGER(4) :: Fl_Mode ! Floating specific feedback mode {0 - no nacelle velocity feedback, 1 - nacelle velocity feedback} + REAL(8) :: Fl_Kp ! Nacelle velocity proportional feedback gain [s] + INTEGER(4) :: Flp_Mode ! Flap actuator mode {0 - off, 1 - fixed flap position, 2 - PI flap control} + REAL(8) :: Flp_Angle ! Fixed flap angle (degrees) + REAL(8) :: Flp_Kp ! PI flap control proportional gain + REAL(8) :: Flp_Ki ! PI flap control integral gain + REAL(8) :: Flp_MaxPit ! Maximum (and minimum) flap pitch angle [rad] + CHARACTER(1024) :: OL_Filename ! Input file with open loop timeseries + INTEGER(4) :: OL_Mode ! Open loop control mode {0 - no open loop control, 1 - open loop control vs. time, 2 - open loop control vs. wind speed} + INTEGER(4) :: Ind_Breakpoint ! The column in OL_Filename that contains the breakpoint (time if OL_Mode = 1) + INTEGER(4) :: Ind_BldPitch ! The column in OL_Filename that contains the blade pitch input in rad + INTEGER(4) :: Ind_GenTq ! The column in OL_Filename that contains the generator torque in Nm + INTEGER(4) :: Ind_YawRate ! The column in OL_Filename that contains the generator torque in Nm + REAL(8), DIMENSION(:), ALLOCATABLE :: OL_Breakpoints ! Open loop breakpoints in timeseries + REAL(8), DIMENSION(:), ALLOCATABLE :: OL_BldPitch ! Open blade pitch timeseries + REAL(8), DIMENSION(:), ALLOCATABLE :: OL_GenTq ! Open generator torque timeseries + REAL(8), DIMENSION(:), ALLOCATABLE :: OL_YawRate ! Open yaw rate timeseries + REAL(8), DIMENSION(:,:), ALLOCATABLE :: OL_Channels ! Open loop channels in timeseries + REAL(8) :: PC_RtTq99 ! 99% of the rated torque value, using for switching between pitch and torque control, [Nm]. + REAL(8) :: VS_MaxOMTq ! Maximum torque at the end of the below-rated region 2, [Nm] + REAL(8) :: VS_MinOMTq ! Minimum torque at the beginning of the below-rated region 2, [Nm] +END TYPE ControlParameters + +TYPE, PUBLIC :: LocalVariables + INTEGER(4) :: iStatus ! None + REAL(8) :: Time ! None + REAL(8) :: DT ! None + REAL(8) :: VS_GenPwr ! None + REAL(8) :: GenSpeed ! None + REAL(8) :: RotSpeed ! None + REAL(8) :: Y_M ! None + REAL(8) :: HorWindV ! None + REAL(8) :: rootMOOP(3) ! None + REAL(8) :: BlPitch(3) ! None + REAL(8) :: Azimuth ! None + INTEGER(4) :: NumBl ! None + REAL(8) :: FA_Acc ! Tower fore-aft acceleration [m/s^2] + REAL(8) :: NacIMU_FA_Acc ! Tower fore-aft acceleration [rad/s^2] + REAL(8) :: FA_AccHPF ! High-pass filtered fore-aft acceleration [m/s^2] + REAL(8) :: FA_AccHPFI ! Tower velocity, high-pass filtered and integrated fore-aft acceleration [m/s] + REAL(8) :: FA_PitCom(3) ! Tower fore-aft vibration damping pitch contribution [rad] + REAL(8) :: RotSpeedF ! Filtered LSS (generator) speed [rad/s]. + REAL(8) :: GenSpeedF ! Filtered HSS (generator) speed [rad/s]. + REAL(8) :: GenTq ! Electrical generator torque, [Nm]. + REAL(8) :: GenTqMeas ! Measured generator torque [Nm] + REAL(8) :: GenArTq ! Electrical generator torque, for above-rated PI-control [Nm]. + REAL(8) :: GenBrTq ! Electrical generator torque, for below-rated PI-control [Nm]. + REAL(8) :: IPC_PitComF(3) ! Commanded pitch of each blade as calculated by the individual pitch controller, F stands for low-pass filtered [rad]. + REAL(8) :: PC_KP ! Proportional gain for pitch controller at rated pitch (zero) [s]. + REAL(8) :: PC_KI ! Integral gain for pitch controller at rated pitch (zero) [-]. + REAL(8) :: PC_KD ! Differential gain for pitch controller at rated pitch (zero) [-]. + REAL(8) :: PC_TF ! First-order filter parameter for derivative action + REAL(8) :: PC_MaxPit ! Maximum pitch setting in pitch controller (variable) [rad]. + REAL(8) :: PC_MinPit ! Minimum pitch setting in pitch controller (variable) [rad]. + REAL(8) :: PC_PitComT ! Total command pitch based on the sum of the proportional and integral terms [rad]. + REAL(8) :: PC_PitComTF ! Filtered Total command pitch based on the sum of the proportional and integral terms [rad]. + REAL(8) :: PC_PitComT_IPC(3) ! Total command pitch based on the sum of the proportional and integral terms, including IPC term [rad]. + REAL(8) :: PC_PwrErr ! Power error with respect to rated power [W] + REAL(8) :: PC_SineExcitation ! Sine contribution to pitch signal + REAL(8) :: PC_SpdErr ! Current speed error (pitch control) [rad/s]. + INTEGER(4) :: PC_State ! State of the pitch control system + REAL(8) :: PitCom(3) ! Commanded pitch of each blade the last time the controller was called [rad]. + REAL(8) :: SS_DelOmegaF ! Filtered setpoint shifting term defined in setpoint smoother [rad/s]. + REAL(8) :: TestType ! Test variable, no use + REAL(8) :: VS_MaxTq ! Maximum allowable generator torque [Nm]. + REAL(8) :: VS_LastGenTrq ! Commanded electrical generator torque the last time the controller was called [Nm]. + REAL(8) :: VS_LastGenPwr ! Commanded electrical generator torque the last time the controller was called [Nm]. + REAL(8) :: VS_MechGenPwr ! Mechanical power on the generator axis [W] + REAL(8) :: VS_SpdErrAr ! Current speed error for region 2.5 PI controller (generator torque control) [rad/s]. + REAL(8) :: VS_SpdErrBr ! Current speed error for region 1.5 PI controller (generator torque control) [rad/s]. + REAL(8) :: 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(8) :: VS_Rgn3Pitch ! Pitch angle at which the state machine switches to region 3, [rad]. + REAL(8) :: WE_Vw ! Estimated wind speed [m/s] + REAL(8) :: WE_Vw_F ! Filtered estimated wind speed [m/s] + REAL(8) :: WE_VwI ! Integrated wind speed quantity for estimation [m/s] + REAL(8) :: WE_VwIdot ! Differentiated integrated wind speed quantity for estimation [m/s] + REAL(8) :: VS_LastGenTrqF ! Differentiated integrated wind speed quantity for estimation [m/s] + REAL(8) :: Y_AccErr ! Accumulated yaw error [rad]. + REAL(8) :: Y_ErrLPFFast ! Filtered yaw error by fast low pass filter [rad]. + REAL(8) :: Y_ErrLPFSlow ! Filtered yaw error by slow low pass filter [rad]. + REAL(8) :: Y_MErr ! Measured yaw error, measured + setpoint [rad]. + REAL(8) :: 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 + REAL(8) :: Fl_PitCom ! Shutdown, .FALSE. if inactive, .TRUE. if active + REAL(8) :: NACIMU_FA_AccF ! None + REAL(8) :: FA_AccF ! None + REAL(8) :: Flp_Angle(3) ! Flap Angle (rad) +END TYPE LocalVariables + +TYPE, PUBLIC :: ObjectInstances + INTEGER(4) :: instLPF ! Low-pass filter instance + INTEGER(4) :: instSecLPF ! Second order low-pass filter instance + INTEGER(4) :: instHPF ! High-pass filter instance + INTEGER(4) :: instNotchSlopes ! Notch filter slopes instance + INTEGER(4) :: instNotch ! Notch filter instance + INTEGER(4) :: instPI ! PI controller instance +END TYPE ObjectInstances + +TYPE, PUBLIC :: PerformanceData + REAL(8), DIMENSION(:), ALLOCATABLE :: TSR_vec ! TSR vector for performance surfaces + REAL(8), DIMENSION(:), ALLOCATABLE :: Beta_vec ! Blade pitch vector for performance surfaces [deg] + REAL(8), DIMENSION(:,:), ALLOCATABLE :: Cp_mat ! Power coefficient surface + REAL(8), DIMENSION(:,:), ALLOCATABLE :: Ct_mat ! Thrust coefficient surface + REAL(8), DIMENSION(:,:), ALLOCATABLE :: Cq_mat ! Torque coefficient surface +END TYPE PerformanceData + +TYPE, PUBLIC :: DebugVariables + REAL(8) :: WE_Cp ! Cp that WSE uses to determine aerodynamic torque[-] + REAL(8) :: WE_b ! Pitch that WSE uses to determine aerodynamic torque[-] + REAL(8) :: WE_w ! Rotor Speed that WSE uses to determine aerodynamic torque[-] + REAL(8) :: WE_t ! Torque that WSE uses[-] + REAL(8) :: WE_Vm ! Mean wind speed component in WSE [m/s] + REAL(8) :: WE_Vt ! Turbulent wind speed component in WSE [m/s] + REAL(8) :: WE_lambda ! TSR in WSE [rad] + REAL(8) :: PC_PICommand ! Commanded collective pitch from pitch PI controller [rad] +END TYPE DebugVariables + +TYPE, PUBLIC :: ErrorVariables + INTEGER(4) :: size_avcMSG ! None + INTEGER(C_INT) :: 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. + CHARACTER(:), ALLOCATABLE :: ErrMsg ! a Fortran version of the C string argument (not considered an array here) [subtract 1 for the C null-character] +END TYPE ErrorVariables + +TYPE, PUBLIC :: ExtDLL_Type + INTEGER(C_INTPTR_T) :: FileAddr ! The address of file FileName. (RETURN value from LoadLibrary ) [Windows] + TYPE(C_PTR) :: FileAddrX = C_NULL_PTR ! The address of file FileName. (RETURN value from dlopen ) [Linux] + TYPE(C_FUNPTR) :: ProcAddr(3) = C_NULL_FUNPTR ! The address of procedure ProcName. (RETURN value from GetProcAddress or dlsym) [initialized to Null for pack/unpack] + CHARACTER(1024) :: FileName ! The name of the DLL file including the full path to the current working directory. + CHARACTER(1024) :: ProcName(3) = "" ! The name of the procedure in the DLL that will be called. +END TYPE ExtDLL_Type + END MODULE ROSCO_Types \ No newline at end of file diff --git a/ROSCO/src/ReadSetParameters.f90 b/ROSCO/src/ReadSetParameters.f90 index b9c61531..846bfc8d 100644 --- a/ROSCO/src/ReadSetParameters.f90 +++ b/ROSCO/src/ReadSetParameters.f90 @@ -17,6 +17,7 @@ MODULE ReadSetParameters USE Constants USE Functions + USE SysSubs IMPLICIT NONE @@ -86,7 +87,7 @@ SUBROUTINE SetParameters(avrSWAP, accINFILE, size_avcMSG, CntrPar, LocalVar, obj REAL(ReKi), INTENT(INOUT) :: avrSWAP(*) ! The swap array, used to pass data to, and receive data from, the DLL controller. CHARACTER(C_CHAR), INTENT(IN ) :: accINFILE(NINT(avrSWAP(50))) ! The name of the parameter input file - INTEGER(4), INTENT(IN ) :: size_avcMSG + INTEGER(IntKi), INTENT(IN ) :: size_avcMSG TYPE(ControlParameters), INTENT(INOUT) :: CntrPar TYPE(LocalVariables), INTENT(INOUT) :: LocalVar TYPE(ObjectInstances), INTENT(INOUT) :: objInst @@ -94,7 +95,7 @@ SUBROUTINE SetParameters(avrSWAP, accINFILE, size_avcMSG, CntrPar, LocalVar, obj TYPE(ErrorVariables), INTENT(INOUT) :: ErrVar - INTEGER(4) :: K ! Index used for looping through blades. + INTEGER(IntKi) :: K ! Index used for looping through blades. CHARACTER(*), PARAMETER :: RoutineName = 'SetParameters' @@ -191,18 +192,26 @@ SUBROUTINE ReadControlParameterFileSub(CntrPar, accINFILE, accINFILE_size,ErrVar USE, INTRINSIC :: ISO_C_Binding USE ROSCO_Types, ONLY : ControlParameters, ErrorVariables - INTEGER(IntKi) :: accINFILE_size ! size of DISCON input filename + INTEGER(IntKi) :: accINFILE_size ! size of DISCON input filename CHARACTER(accINFILE_size), INTENT(IN ) :: accINFILE(accINFILE_size) ! DISCON input filename - INTEGER(IntKi), PARAMETER :: UnControllerParameters = 89 ! Unit number to open file + INTEGER(IntKi), PARAMETER :: UnControllerParameters = 89 ! Unit number to open file TYPE(ControlParameters), INTENT(INOUT) :: CntrPar ! Control parameter type TYPE(ErrorVariables), INTENT(INOUT) :: ErrVar ! Control parameter type - INTEGER(IntKi) :: CurLine + INTEGER(IntKi) :: CurLine + + CHARACTER(1024) :: OL_String ! Open description loop string + INTEGER(IntKi) :: OL_Count ! Number of open loop channels + + CHARACTER(1024) :: PriPath ! Path name of the primary DISCON file + CHARACTER(*), PARAMETER :: RoutineName = 'ReadControlParameterFileSub' CurLine = 1 - + + ! Get primary path of DISCON.IN file (accINFILE(1) here) + CALL GetPath( accINFILE(1), PriPath ) ! Input files will be relative to the path where the primary input file is located. OPEN(unit=UnControllerParameters, file=accINFILE(1), status='old', action='read') @@ -232,6 +241,8 @@ SUBROUTINE ReadControlParameterFileSub(CntrPar, accINFILE, accINFILE_size,ErrVar CALL ParseInput(UnControllerParameters,CurLine,'SD_Mode',accINFILE(1),CntrPar%SD_Mode,ErrVar) CALL ParseInput(UnControllerParameters,CurLine,'FL_Mode',accINFILE(1),CntrPar%FL_Mode,ErrVar) CALL ParseInput(UnControllerParameters,CurLine,'Flp_Mode',accINFILE(1),CntrPar%Flp_Mode,ErrVar) + CALL ParseInput(UnControllerParameters,CurLine,'OL_Mode',accINFILE(1),CntrPar%OL_Mode,ErrVar) + CALL ReadEmptyLine(UnControllerParameters,CurLine) !----------------- FILTER CONSTANTS --------------------- @@ -305,7 +316,7 @@ SUBROUTINE ReadControlParameterFileSub(CntrPar, accINFILE, accINFILE_size,ErrVar CALL ParseInput(UnControllerParameters,CurLine,'WE_GearboxRatio',accINFILE(1),CntrPar%WE_GearboxRatio,ErrVar) CALL ParseInput(UnControllerParameters,CurLine,'WE_Jtot',accINFILE(1),CntrPar%WE_Jtot,ErrVar) CALL ParseInput(UnControllerParameters,CurLine,'WE_RhoAir',accINFILE(1),CntrPar%WE_RhoAir,ErrVar) - CALL ParseInput(UnControllerParameters,CurLine,'PerfFileName',accINFILE(1),CntrPar%PerfFileName,ErrVar) + CALL ParseInput(UnControllerParameters,CurLine,'PerfFileName',accINFILE(1),CntrPar%PerfFileName,ErrVar) CALL ParseAry(UnControllerParameters, CurLine, 'PerfTableSize', CntrPar%PerfTableSize, 2, accINFILE(1), ErrVar ) CALL ParseInput(UnControllerParameters,CurLine,'WE_FOPoles_N',accINFILE(1),CntrPar%WE_FOPoles_N,ErrVar) CALL ParseAry(UnControllerParameters, CurLine, 'WE_FOPoles_v', CntrPar%WE_FOPoles_v, CntrPar%WE_FOPoles_N, accINFILE(1), ErrVar ) @@ -359,6 +370,60 @@ SUBROUTINE ReadControlParameterFileSub(CntrPar, accINFILE, accINFILE_size,ErrVar CALL ParseInput(UnControllerParameters,CurLine,'Flp_Kp',accINFILE(1),CntrPar%Flp_Kp,ErrVar) CALL ParseInput(UnControllerParameters,CurLine,'Flp_Ki',accINFILE(1),CntrPar%Flp_Ki,ErrVar) CALL ParseInput(UnControllerParameters,CurLine,'Flp_MaxPit',accINFILE(1),CntrPar%Flp_MaxPit,ErrVar) + CALL ReadEmptyLine(UnControllerParameters,CurLine) + + !------------ Open loop input ------------ + CALL ReadEmptyLine(UnControllerParameters,CurLine) + CALL ParseInput(UnControllerParameters,CurLine,'OL_Filename',accINFILE(1),CntrPar%OL_Filename,ErrVar) + CALL ParseInput(UnControllerParameters,CurLine,'Ind_Breakpoint',accINFILE(1),CntrPar%Ind_Breakpoint,ErrVar) + CALL ParseInput(UnControllerParameters,CurLine,'Ind_BldPitch',accINFILE(1),CntrPar%Ind_BldPitch,ErrVar) + CALL ParseInput(UnControllerParameters,CurLine,'Ind_GenTq',accINFILE(1),CntrPar%Ind_GenTq,ErrVar) + CALL ParseInput(UnControllerParameters,CurLine,'Ind_YawRate',accINFILE(1),CntrPar%Ind_YawRate,ErrVar) + + ! Fix Paths (add relative paths if called from another dir) + IF (PathIsRelative(CntrPar%PerfFileName)) CntrPar%PerfFileName = TRIM(PriPath)//TRIM(CntrPar%PerfFileName) + IF (PathIsRelative(CntrPar%OL_Filename)) CntrPar%OL_Filename = TRIM(PriPath)//TRIM(CntrPar%OL_Filename) + + ! Read open loop input, if desired + IF (CntrPar%OL_Mode == 1) THEN + OL_String = '' ! Display string + OL_Count = 0 + IF (CntrPar%Ind_BldPitch > 0) THEN + OL_String = TRIM(OL_String)//' BldPitch ' + OL_Count = OL_Count + 1 + ENDIF + + IF (CntrPar%Ind_GenTq > 0) THEN + OL_String = TRIM(OL_String)//' GenTq ' + OL_Count = OL_Count + 1 + ENDIF + + IF (CntrPar%Ind_YawRate > 0) THEN + OL_String = TRIM(OL_String)//' YawRate ' + OL_Count = OL_Count + 1 + ENDIF + + PRINT *, 'ROSCO: Implementing open loop control for'//TRIM(OL_String) + CALL Read_OL_Input(CntrPar%OL_Filename,110_IntKi,OL_Count,CntrPar%OL_Channels, ErrVar) + + CntrPar%OL_Breakpoints = CntrPar%OL_Channels(:,CntrPar%Ind_Breakpoint) + + IF (CntrPar%Ind_BldPitch > 0) THEN + CntrPar%OL_BldPitch = CntrPar%OL_Channels(:,CntrPar%Ind_BldPitch) + ENDIF + + IF (CntrPar%Ind_GenTq > 0) THEN + CntrPar%OL_GenTq = CntrPar%OL_Channels(:,CntrPar%Ind_GenTq) + ENDIF + + IF (CntrPar%Ind_YawRate > 0) THEN + CntrPar%OL_YawRate = CntrPar%OL_Channels(:,CntrPar%Ind_YawRate) + ENDIF + END IF + + ! Debugging outputs (echo someday) + ! write(400,*) CntrPar%OL_YawRate + ! END OF INPUT FILE ! Close Input File @@ -871,6 +936,17 @@ SUBROUTINE CheckInputs(LocalVar, CntrPar, avrSWAP, ErrVar, size_avcMSG) ErrVar%ErrMsg = 'F_NotchType and F_NotchCornerFreq must be specified for Fl_Mode greater than zero.' ENDIF ENDIF + + ! --- Open loop control --- + IF (((CntrPar%Ind_Breakpoint) < 0) .OR. & + (CntrPar%Ind_BldPitch < 0) .OR. & + (CntrPar%Ind_GenTq < 0) .OR. & + (CntrPar%Ind_YawRate < 0)) THEN + ErrVar%aviFAIL = -1 + ErrVar%ErrMsg = 'All open loop control indices must be greater than zero' + ENDIF + + ! Abort if the user has not requested a pitch angle actuator (See Appendix A ! of Bladed User's Guide): @@ -1488,5 +1564,211 @@ SUBROUTINE GetWords ( Line, Words, NumWords ) RETURN END SUBROUTINE GetWords +!======================================================================= +!> Let's parse the path name from the name of the given file. +!! We'll count everything before (and including) the last "\" or "/". +SUBROUTINE GetPath ( GivenFil, PathName ) + + ! Argument declarations. + + CHARACTER(*), INTENT(IN) :: GivenFil !< The name of the given file. + CHARACTER(*), INTENT(OUT) :: PathName !< The path name of the given file (based solely on the GivenFil text string). + + + ! Local declarations. + + INTEGER :: I ! DO index for character position. + + + ! Look for path separators + + I = INDEX( GivenFil, '\', BACK=.TRUE. ) + I = MAX( I, INDEX( GivenFil, '/', BACK=.TRUE. ) ) + + IF ( I == 0 ) THEN + ! we don't have a path specified, return '.' + PathName = '.'//PathSep + ELSE + PathName = GivenFil(:I) + END IF + + + RETURN + END SUBROUTINE GetPath +!======================================================================= +!> This routine determines if the given file name is absolute or relative. +!! We will consider an absolute path one that satisfies one of the +!! following four criteria: +!! 1. It contains ":/" +!! 2. It contains ":\" +!! 3. It starts with "/" +!! 4. It starts with "\" +!! +!! All others are considered relative. + FUNCTION PathIsRelative ( GivenFil ) + + ! Argument declarations. + + CHARACTER(*), INTENT(IN) :: GivenFil !< The name of the given file. + LOGICAL :: PathIsRelative !< The function return value + + + + ! Determine if file name begins with an absolute path name or if it is relative + ! note that Doxygen has serious issues if you use the single quote instead of + ! double quote characters in the strings below: + + PathIsRelative = .FALSE. + + IF ( ( INDEX( GivenFil, ":/") == 0 ) .AND. ( INDEX( GivenFil, ":\") == 0 ) ) THEN ! No drive is specified (by ":\" or ":/") + + IF ( INDEX( "/\", GivenFil(1:1) ) == 0 ) THEN ! The file name doesn't start with "\" or "/" + + PathIsRelative = .TRUE. + + END IF + + END IF + + RETURN + END FUNCTION PathIsRelative +!======================================================================= +! ------------------------------------------------------ + ! Read Open Loop Control Inputs + ! + ! Timeseries or lookup tables of the form + ! index (time or wind speed) channel_1 \t channel_2 \t channel_3 ... + ! This could be used to read any group of data of unspecified length ... +SUBROUTINE Read_OL_Input(OL_InputFileName, Unit_OL_Input, NumChannels, Channels, ErrVar) + + USE ROSCO_Types, ONLY : ErrorVariables + + CHARACTER(1024), INTENT(IN) :: OL_InputFileName ! DISCON input filename + INTEGER(IntKi), INTENT(IN) :: Unit_OL_Input + INTEGER(IntKi), INTENT(IN) :: NumChannels ! Number of open loop channels being defined + ! REAL(DbKi), INTENT(OUT), DIMENSION(:), ALLOCATABLE :: Breakpoints ! Breakpoints of open loop Channels + REAL(DbKi), INTENT(OUT), DIMENSION(:,:), ALLOCATABLE :: Channels ! Open loop channels + TYPE(ErrorVariables), INTENT(INOUT) :: ErrVar ! Current line of input + + + LOGICAL :: FileExists + INTEGER :: IOS ! I/O status of OPEN. + CHARACTER(1024) :: Line ! Temp variable for reading whole line from file + INTEGER(IntKi) :: NumComments + INTEGER(IntKi) :: NumDataLines + INTEGER(IntKi) :: NumCols + REAL(DbKi) :: TmpData(NumChannels+1) ! Temp variable for reading all columns from a line + CHARACTER(15) :: NumString + + INTEGER(IntKi) :: I,J + + CHARACTER(*), PARAMETER :: RoutineName = 'ReadControlParameterFileSub' + + NumCols = NumChannels + 1 + + !------------------------------------------------------------------------------------------------- + ! Read from input file, borrowed (read: copied) from (Open)FAST team...thanks! + !------------------------------------------------------------------------------------------------- + + !------------------------------------------------------------------------------------------------- + ! Open the file for reading + !------------------------------------------------------------------------------------------------- + + INQUIRE (FILE = OL_InputFileName, EXIST = FileExists) + + IF ( .NOT. FileExists) THEN + ErrVar%aviFAIL = -1 + ErrVar%ErrMsg = TRIM(OL_InputFileName)// ' does not exist' + + ELSE + + OPEN( Unit_OL_Input, FILE=TRIM(OL_InputFileName), STATUS='OLD', FORM='FORMATTED', IOSTAT=IOS, ACTION='READ' ) + + IF (IOS /= 0) THEN + ErrVar%aviFAIL = -1 + ErrVar%ErrMsg = 'Cannot open '//TRIM(OL_InputFileName) + + ELSE + ! Do all the stuff! + + !------------------------------------------------------------------------------------------------- + ! Find the number of comment lines + !------------------------------------------------------------------------------------------------- + + LINE = '!' ! Initialize the line for the DO WHILE LOOP + NumComments = -1 ! the last line we read is not a comment, so we'll initialize this to -1 instead of 0 + + DO WHILE ( (INDEX( LINE, '!' ) > 0) .OR. (INDEX( LINE, '#' ) > 0) .OR. (INDEX( LINE, '%' ) > 0) ) ! Lines containing "!" are treated as comment lines + NumComments = NumComments + 1 + + READ(Unit_OL_Input,'( A )',IOSTAT=IOS) LINE + + ! NWTC_IO has some error catching here that we'll skip for now + + END DO !WHILE + + !------------------------------------------------------------------------------------------------- + ! Find the number of data lines + !------------------------------------------------------------------------------------------------- + + NumDataLines = 0 + + READ(LINE,*,IOSTAT=IOS) ( TmpData(I), I=1,NumCols ) ! this line was read when we were figuring out the comment lines; let's make sure it contains + + DO WHILE (IOS == 0) ! read the rest of the file (until an error occurs) + NumDataLines = NumDataLines + 1 + + READ(Unit_OL_Input,*,IOSTAT=IOS) ( TmpData(I), I=1,NumCols ) + + END DO !WHILE + + + IF (NumDataLines < 1) THEN + WRITE (NumString,'(I11)') NumComments + ErrVar%aviFAIL = -1 + ErrVar%ErrMsg = 'Error: '//TRIM(NumString)//' comment lines were found in the uniform wind file, '// & + 'but the first data line does not contain the proper format.' + CLOSE(Unit_OL_Input) + END IF + + !------------------------------------------------------------------------------------------------- + ! Allocate arrays for the uniform wind data + !------------------------------------------------------------------------------------------------- + ALLOCATE(Channels(NumDataLines,NumChannels)) + + !------------------------------------------------------------------------------------------------- + ! Rewind the file (to the beginning) and skip the comment lines + !------------------------------------------------------------------------------------------------- + + REWIND( Unit_OL_Input ) + + DO I=1,NumComments + READ(Unit_OL_Input,'( A )',IOSTAT=IOS) LINE + END DO !I + + + !------------------------------------------------------------------------------------------------- + ! Read the data arrays + !------------------------------------------------------------------------------------------------- + + DO I=1,NumDataLines + + READ(Unit_OL_Input,*,IOSTAT=IOS) ( TmpData(J), J=1,NumCols ) + + IF (IOS > 0) THEN + CLOSE(Unit_OL_Input) + END IF + + Channels(I,:) = TmpData + + END DO !I + END IF + END IF + + IF (ErrVar%aviFAIL < 0) THEN + ErrVar%ErrMsg = RoutineName//':'//TRIM(ErrVar%ErrMsg) + ENDIF + +END SUBROUTINE Read_OL_Input END MODULE ReadSetParameters diff --git a/ROSCO/src/SysFiles/SysGnuLinux.f90 b/ROSCO/src/SysFiles/SysGnuLinux.f90 new file mode 100644 index 00000000..f83606bd --- /dev/null +++ b/ROSCO/src/SysFiles/SysGnuLinux.f90 @@ -0,0 +1,190 @@ +!********************************************************************************************************************************** +! LICENSING +! Copyright (C) 2021 National Renewable Energy Laboratory +! +! This file is part of ROSCO. +! +! Licensed under the Apache License, Version 2.0 (the "License"); +! you may not use this file except in compliance with the License. +! You may obtain a copy of the License at +! +! http://www.apache.org/licenses/LICENSE-2.0 +! +! Unless required by applicable law or agreed to in writing, software +! distributed under the License is distributed on an "AS IS" BASIS, +! WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +! See the License for the specific language governing permissions and +! limitations under the License. +!********************************************************************************************************************************** +MODULE SysSubs + + USE ROSCO_Types + USE Constants + + + IMPLICIT NONE + + +! This module contains routines with system-specific logic and references, including all references to the console unit, CU. +! It also contains standard (but not system-specific) routines it uses. +! SysGnuLinux.f90 is specifically for the GNU Fortran (gfortran) compiler on Linux and macOS. + + INTEGER, PARAMETER :: ConRecL = 120 ! The record length for console output. + INTEGER, PARAMETER :: CU = 6 ! The I/O unit for the console. Unit 6 causes ADAMS to crash. + INTEGER, PARAMETER :: MaxWrScrLen = 98 ! The maximum number of characters allowed to be written to a line in WrScr + LOGICAL, PARAMETER :: KBInputOK = .TRUE. ! A flag to tell the program that keyboard input is allowed in the environment. + CHARACTER(*), PARAMETER :: NewLine = ACHAR(10) ! The delimiter for New Lines [ Windows is CHAR(13)//CHAR(10); MAC is CHAR(13); Unix is CHAR(10) {CHAR(13)=\r is a line feed, CHAR(10)=\n is a new line}] + CHARACTER(*), PARAMETER :: OS_Desc = 'GNU Fortran for Linux' ! Description of the language/OS + CHARACTER( 1), PARAMETER :: PathSep = '/' ! The path separator. + CHARACTER( 1), PARAMETER :: SwChar = '-' ! The switch character for command-line options. + CHARACTER(11), PARAMETER :: UnfForm = 'UNFORMATTED' ! The string to specify unformatted I/O files. + + + CONTAINS +!================================================================================================================= + SUBROUTINE LoadDynamicLib ( DLL, ErrStat, ErrMsg ) + + ! This SUBROUTINE is used to dynamically load a DLL. + + TYPE (ExtDLL_Type), INTENT(INOUT) :: DLL ! The DLL to be loaded. + INTEGER(IntKi), INTENT( OUT) :: ErrStat ! Error status of the operation + CHARACTER(*), INTENT( OUT) :: ErrMsg ! Error message if ErrStat /= ErrID_None + + + !bjj: these are values I found on the web; I have no idea if they actually work... + !bjj: hopefully we can find them pre-defined in a header somewhere + INTEGER(C_INT), PARAMETER :: RTLD_LAZY=1 ! "Perform lazy binding. Only resolve symbols as the code that references them is executed. If the symbol is never referenced, then it is never resolved. (Lazy binding is only performed for function references; references to variables are always immediately bound when the library is loaded.) " + INTEGER(C_INT), PARAMETER :: RTLD_NOW=2 ! "If this value is specified, or the environment variable LD_BIND_NOW is set to a nonempty string, all undefined symbols in the library are resolved before dlopen() returns. If this cannot be done, an error is returned." + INTEGER(C_INT), PARAMETER :: RTLD_GLOBAL=256 ! "The symbols defined by this library will be made available for symbol resolution of subsequently loaded libraries" + INTEGER(C_INT), PARAMETER :: RTLD_LOCAL=0 ! "This is the converse of RTLD_GLOBAL, and the default if neither flag is specified. Symbols defined in this library are not made available to resolve references in subsequently loaded libraries." + + INTERFACE !linux API routines + !bjj see http://linux.die.net/man/3/dlopen + ! and https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man3/dlopen.3.html + + FUNCTION dlOpen(filename,mode) BIND(C,NAME="dlopen") + ! void *dlopen(const char *filename, int mode); + USE ISO_C_BINDING + IMPLICIT NONE + TYPE(C_PTR) :: dlOpen + CHARACTER(C_CHAR), INTENT(IN) :: filename(*) + INTEGER(C_INT), VALUE :: mode + END FUNCTION + + END INTERFACE + + ErrStat = 0 + ErrMsg = '' + + ! Load the DLL and get the file address: + + DLL%FileAddrX = dlOpen( TRIM(DLL%FileName)//C_NULL_CHAR, RTLD_LAZY ) !the "C_NULL_CHAR" converts the Fortran string to a C-type string (i.e., adds //CHAR(0) to the end) + + IF( .NOT. C_ASSOCIATED(DLL%FileAddrX) ) THEN + ErrStat = -1 + WRITE(ErrMsg,'(I2)') BITS_IN_ADDR + ErrMsg = 'The dynamic library '//TRIM(DLL%FileName)//' could not be loaded. Check that the file '// & + 'exists in the specified location and that it is compiled for '//TRIM(ErrMsg)//'-bit applications.' + RETURN + END IF + + ! Get the procedure address: + + CALL LoadDynamicLibProc ( DLL, ErrStat, ErrMsg ) + + RETURN + END SUBROUTINE LoadDynamicLib + !======================================================================= + SUBROUTINE LoadDynamicLibProc ( DLL, ErrStat, ErrMsg ) + + ! This SUBROUTINE is used to dynamically load a procedure from a DLL. + + TYPE (ExtDLL_Type), INTENT(INOUT) :: DLL ! The DLL to be loaded. + INTEGER(IntKi), INTENT( OUT) :: ErrStat ! Error status of the operation + CHARACTER(*), INTENT( OUT) :: ErrMsg ! Error message if ErrStat /= ErrID_None + INTEGER(IntKi) :: i + + + INTERFACE !linux API routines + + !bjj see http://linux.die.net/man/3/dlsym + ! and https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man3/dlsym.3.html + + FUNCTION dlSym(handle,name) BIND(C,NAME="dlsym") + ! void *dlsym(void *handle, const char *name); + USE ISO_C_BINDING + IMPLICIT NONE + TYPE(C_FUNPTR) :: dlSym ! A function pointer + TYPE(C_PTR), VALUE :: handle + CHARACTER(C_CHAR), INTENT(IN) :: name(*) + END FUNCTION + + END INTERFACE + + ErrStat = ErrID_None + ErrMsg = '' + + do i=1,NWTC_MAX_DLL_PROC + if ( len_trim( DLL%ProcName(i) ) > 0 ) then + + DLL%ProcAddr(i) = dlSym( DLL%FileAddrX, TRIM(DLL%ProcName(i))//C_NULL_CHAR ) !the "C_NULL_CHAR" converts the Fortran string to a C-type string (i.e., adds //CHAR(0) to the end) + + IF(.NOT. C_ASSOCIATED(DLL%ProcAddr(i))) THEN + ErrStat = ErrID_Fatal + ErrMsg = 'The procedure '//TRIM(DLL%ProcName(i))//' in file '//TRIM(DLL%FileName)//' could not be loaded.' + RETURN + END IF + + end if + end do + + RETURN + END SUBROUTINE LoadDynamicLibProc + !======================================================================= + SUBROUTINE FreeDynamicLib ( DLL, ErrStat, ErrMsg ) + + ! This SUBROUTINE is used to free a dynamically loaded DLL (loaded in LoadDynamicLib). + + TYPE (ExtDLL_Type), INTENT(INOUT) :: DLL ! The DLL to be freed. + INTEGER(IntKi), INTENT( OUT) :: ErrStat ! Error status of the operation + CHARACTER(*), INTENT( OUT) :: ErrMsg ! Error message if ErrStat /= ErrID_None + INTEGER(C_INT) :: Success ! Whether or not the call to dlClose was successful + INTEGER(C_INT), PARAMETER :: TRUE = 0 + + !bjj: note that this is not tested. + + INTERFACE !linux API routine + !bjj see http://linux.die.net/man/3/dlclose + ! and https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man3/dlclose.3.html + + FUNCTION dlClose(handle) BIND(C,NAME="dlclose") + ! int dlclose(void *handle); + USE ISO_C_BINDING + IMPLICIT NONE + INTEGER(C_INT) :: dlClose + TYPE(C_PTR), VALUE :: handle + END FUNCTION + + END INTERFACE + + ! Close the library: + + IF( .NOT. C_ASSOCIATED(DLL%FileAddrX) ) RETURN + Success = dlClose( DLL%FileAddrX ) !The function dlclose() returns 0 on success, and nonzero on error. + + IF ( Success /= TRUE ) THEN !bjj: note that this is not the same as LOGICAL .TRUE. + ErrStat = ErrID_Fatal + ErrMsg = 'The dynamic library could not be freed.' + RETURN + ELSE + ErrStat = ErrID_None + ErrMsg = '' + DLL%FileAddrX = C_NULL_PTR + END IF + + + RETURN + END SUBROUTINE FreeDynamicLib + !======================================================================= + +END MODULE SysSubs \ No newline at end of file diff --git a/ROSCO/src/SysFiles/SysGnuWin.f90 b/ROSCO/src/SysFiles/SysGnuWin.f90 new file mode 100644 index 00000000..bd3ef396 --- /dev/null +++ b/ROSCO/src/SysFiles/SysGnuWin.f90 @@ -0,0 +1,184 @@ +!********************************************************************************************************************************** +! LICENSING +! Copyright (C) 2021 National Renewable Energy Laboratory +! +! This file is part of ROSCO. +! +! Licensed under the Apache License, Version 2.0 (the "License"); +! you may not use this file except in compliance with the License. +! You may obtain a copy of the License at +! +! http://www.apache.org/licenses/LICENSE-2.0 +! +! Unless required by applicable law or agreed to in writing, software +! distributed under the License is distributed on an "AS IS" BASIS, +! WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +! See the License for the specific language governing permissions and +! limitations under the License. +!********************************************************************************************************************************** +MODULE SysSubs + + USE ROSCO_Types + USE Constants + + + IMPLICIT NONE + + + + + +! This module contains routines with system-specific logic and references, including all references to the console unit, CU. +! It also contains standard (but not system-specific) routines it uses. +! SysGnuLinux.f90 is specifically for the GNU Fortran (gfortran) compiler on Linux and macOS. + + INTEGER, PARAMETER :: ConRecL = 120 ! The record length for console output. + INTEGER, PARAMETER :: CU = 6 ! The I/O unit for the console. Unit 6 causes ADAMS to crash. + INTEGER, PARAMETER :: MaxWrScrLen = 98 ! The maximum number of characters allowed to be written to a line in WrScr + LOGICAL, PARAMETER :: KBInputOK = .TRUE. ! A flag to tell the program that keyboard input is allowed in the environment. + CHARACTER(*), PARAMETER :: NewLine = ACHAR(10) ! The delimiter for New Lines [ Windows is CHAR(13)//CHAR(10); MAC is CHAR(13); Unix is CHAR(10) {CHAR(13)=\r is a line feed, CHAR(10)=\n is a new line}] + CHARACTER(*), PARAMETER :: OS_Desc = 'GNU Fortran for Windows' ! Description of the language/OS + CHARACTER( 1), PARAMETER :: PathSep = '\' ! The path separator. + CHARACTER( 1), PARAMETER :: SwChar = '/' ! The switch character for command-line options. + CHARACTER(11), PARAMETER :: UnfForm = 'UNFORMATTED' ! The string to specify unformatted I/O files. + + + CONTAINS +!======================================================================= + SUBROUTINE LoadDynamicLib ( DLL, ErrStat, ErrMsg ) + + ! This SUBROUTINE is used to dynamically load a DLL. + + TYPE (ExtDLL_Type), INTENT(INOUT) :: DLL ! The DLL to be loaded. + INTEGER(IntKi), INTENT( OUT) :: ErrStat ! Error status of the operation + CHARACTER(*), INTENT( OUT) :: ErrMsg ! Error message if ErrStat /= ErrID_None + + INTERFACE ! Definitions of Windows API routines + + !........................... + !bjj: I have been unable to find a solution that works with both IVF and gfortran... + !bjj: note that "Intel Fortran does not support use of STDCALL with BIND(C) at this time" + ! See this link: http://software.intel.com/en-us/articles/replacing-intel-fortran-attributes-with-c-interoperability-features + !bjj: Until this is fixed, Intel uses kernel32.f90 definitions instead of the interface below: + !........................... + + FUNCTION LoadLibrary(lpFileName) BIND(C,NAME='LoadLibraryA') + USE, INTRINSIC :: ISO_C_BINDING + IMPLICIT NONE + !GCC$ ATTRIBUTES STDCALL :: LoadLibrary + INTEGER(C_INTPTR_T) :: LoadLibrary + CHARACTER(KIND=C_CHAR) :: lpFileName(*) + END FUNCTION LoadLibrary + + END INTERFACE + + ErrStat = ErrID_None + ErrMsg = '' + + ! Load the DLL and get the file address: + DLL%FileAddr = LoadLibrary( TRIM(DLL%FileName)//C_NULL_CHAR ) !the "C_NULL_CHAR" converts the Fortran string to a C-type string (i.e., adds //CHAR(0) to the end) + IF ( DLL%FileAddr == INT(0,C_INTPTR_T) ) THEN + ErrStat = ErrID_Fatal + WRITE(ErrMsg,'(I2)') BITS_IN_ADDR + ErrMsg = 'The dynamic library '//TRIM(DLL%FileName)//' could not be loaded. Check that the file '// & + 'exists in the specified location and that it is compiled for '//TRIM(ErrMsg)//'-bit applications.' + RETURN + END IF + + ! Get the procedure address: + CALL LoadDynamicLibProc ( DLL, ErrStat, ErrMsg ) + + RETURN + END SUBROUTINE LoadDynamicLib + !======================================================================= + SUBROUTINE LoadDynamicLibProc ( DLL, ErrStat, ErrMsg ) + + ! This SUBROUTINE is used to dynamically load a procedure in a DLL. + + TYPE (ExtDLL_Type), INTENT(INOUT) :: DLL ! The DLL to be loaded. + INTEGER(IntKi), INTENT( OUT) :: ErrStat ! Error status of the operation + CHARACTER(*), INTENT( OUT) :: ErrMsg ! Error message if ErrStat /= ErrID_None + INTEGER(IntKi) :: i + + INTERFACE ! Definitions of Windows API routines + + !........................... + !bjj: I have been unable to find a solution that works with both IVF and gfortran... + !bjj: note that "Intel Fortran does not support use of STDCALL with BIND(C) at this time" + ! See this link: http://software.intel.com/en-us/articles/replacing-intel-fortran-attributes-with-c-interoperability-features + !bjj: Until this is fixed, Intel uses kernel32.f90 definitions instead of the interface below: + !........................... + + FUNCTION GetProcAddress(hModule, lpProcName) BIND(C, NAME='GetProcAddress') + USE, INTRINSIC :: ISO_C_BINDING + IMPLICIT NONE + !GCC$ ATTRIBUTES STDCALL :: GetProcAddress + TYPE(C_FUNPTR) :: GetProcAddress + INTEGER(C_INTPTR_T),VALUE :: hModule + CHARACTER(KIND=C_CHAR) :: lpProcName(*) + END FUNCTION GetProcAddress + + END INTERFACE + + ErrStat = ErrID_None + ErrMsg = '' + + ! Get the procedure addresses: + do i=1,NWTC_MAX_DLL_PROC + if ( len_trim( DLL%ProcName(i) ) > 0 ) then + DLL%ProcAddr(i) = GetProcAddress( DLL%FileAddr, TRIM(DLL%ProcName(i))//C_NULL_CHAR ) !the "C_NULL_CHAR" converts the Fortran string to a C-type string (i.e., adds //CHAR(0) to the end) + IF(.NOT. C_ASSOCIATED(DLL%ProcAddr(i))) THEN + ErrStat = ErrID_Fatal + i - 1 + ErrMsg = 'The procedure '//TRIM(DLL%ProcName(i))//' in file '//TRIM(DLL%FileName)//' could not be loaded.' + RETURN + END IF + end if + end do + + RETURN + END SUBROUTINE LoadDynamicLibProc + !======================================================================= + SUBROUTINE FreeDynamicLib ( DLL, ErrStat, ErrMsg ) + + ! This SUBROUTINE is used to free a dynamically loaded DLL (loaded in LoadDynamicLib). + + TYPE (ExtDLL_Type), INTENT(INOUT) :: DLL ! The DLL to be freed. + INTEGER(IntKi), INTENT( OUT) :: ErrStat ! Error status of the operation + CHARACTER(*), INTENT( OUT) :: ErrMsg ! Error message if ErrStat /= ErrID_None + + ! Local variable: + INTEGER(C_INT) :: Success ! Whether or not the call to FreeLibrary was successful + INTEGER(C_INT), PARAMETER :: FALSE = 0 + + INTERFACE ! Definitions of Windows API routines + + FUNCTION FreeLibrary(hLibModule) BIND(C, NAME='FreeLibrary') + USE, INTRINSIC :: ISO_C_BINDING + IMPLICIT NONE + !GCC$ ATTRIBUTES STDCALL :: FreeLibrary + INTEGER(C_INT) :: FreeLibrary ! BOOL + INTEGER(C_INTPTR_T),VALUE :: hLibModule ! HMODULE hLibModule + END FUNCTION + + END INTERFACE + + ! Free the DLL: + IF ( DLL%FileAddr == INT(0,C_INTPTR_T) ) RETURN + + Success = FreeLibrary( DLL%FileAddr ) !If the function succeeds, the return value is nonzero. If the function fails, the return value is zero. + + IF ( Success == FALSE ) THEN !BJJ: note that this isn't the same as the Fortran LOGICAL .FALSE. + ErrStat = ErrID_Fatal + ErrMsg = 'The dynamic library could not be freed.' + RETURN + ELSE + ErrStat = ErrID_None + ErrMsg = '' + DLL%FileAddr = INT(0,C_INTPTR_T) + END IF + + RETURN + END SUBROUTINE FreeDynamicLib + !======================================================================= + +END MODULE SysSubs \ No newline at end of file diff --git a/ROSCO/src/SysFiles/SysIFL.f90 b/ROSCO/src/SysFiles/SysIFL.f90 new file mode 100644 index 00000000..46a591a9 --- /dev/null +++ b/ROSCO/src/SysFiles/SysIFL.f90 @@ -0,0 +1,213 @@ +!********************************************************************************************************************************** +! LICENSING +! Copyright (C) 2021 National Renewable Energy Laboratory +! +! This file is part of ROSCO. +! +! Licensed under the Apache License, Version 2.0 (the "License"); +! you may not use this file except in compliance with the License. +! You may obtain a copy of the License at +! +! http://www.apache.org/licenses/LICENSE-2.0 +! +! Unless required by applicable law or agreed to in writing, software +! distributed under the License is distributed on an "AS IS" BASIS, +! WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +! See the License for the specific language governing permissions and +! limitations under the License. +!********************************************************************************************************************************** +MODULE SysSubs + + USE ROSCO_Types + USE Constants + + + IMPLICIT NONE + + + INTEGER, PARAMETER :: ConRecL = 120 ! The record length for console output. + INTEGER, PARAMETER :: CU = 6 ! The I/O unit for the console. Unit 6 causes ADAMS to crash. + INTEGER, PARAMETER :: MaxWrScrLen = 98 ! The maximum number of characters allowed to be written to a line in WrScr + LOGICAL, PARAMETER :: KBInputOK = .TRUE. ! A flag to tell the program that keyboard input is allowed in the environment. + CHARACTER(*), PARAMETER :: NewLine = ACHAR(10) ! The delimiter for New Lines [ Windows is CHAR(13)//CHAR(10); MAC is CHAR(13); Unix is CHAR(10) {CHAR(13)=\r is a line feed, CHAR(10)=\n is a new line}] + CHARACTER(*), PARAMETER :: OS_Desc = 'Intel Fortran for Linux' ! Description of the language/OS + CHARACTER( 1), PARAMETER :: PathSep = '/' ! The path separator. + CHARACTER( 1), PARAMETER :: SwChar = '-' ! The switch character for command-line options. + CHARACTER(11), PARAMETER :: UnfForm = 'UNFORMATTED' ! The string to specify unformatted I/O files. + + + +! This module contains routines with system-specific logic and references, including all references to the console unit, CU. +! It also contains standard (but not system-specific) routines it uses. +! SysGnuLinux.f90 is specifically for the GNU Fortran (gfortran) compiler on Linux and macOS. + + CONTAINS +!======================================================================= + SUBROUTINE LoadDynamicLib ( DLL, ErrStat, ErrMsg ) + + ! This SUBROUTINE is used to dynamically load a DLL. + + TYPE (ExtDLL_Type), INTENT(INOUT) :: DLL ! The DLL to be loaded. + INTEGER(IntKi), INTENT( OUT) :: ErrStat ! Error status of the operation + CHARACTER(*), INTENT( OUT) :: ErrMsg ! Error message if ErrStat /= ErrID_None + +#ifdef USE_DLL_INTERFACE + + !bjj: these are values I found on the web; I have no idea if they actually work... + !bjj: hopefully we can find them pre-defined in a header somewhere + INTEGER(C_INT), PARAMETER :: RTLD_LAZY=1 ! "Perform lazy binding. Only resolve symbols as the code that references them is executed. If the symbol is never referenced, then it is never resolved. (Lazy binding is only performed for function references; references to variables are always immediately bound when the library is loaded.) " + INTEGER(C_INT), PARAMETER :: RTLD_NOW=2 ! "If this value is specified, or the environment variable LD_BIND_NOW is set to a nonempty string, all undefined symbols in the library are resolved before dlopen() returns. If this cannot be done, an error is returned." + INTEGER(C_INT), PARAMETER :: RTLD_GLOBAL=256 ! "The symbols defined by this library will be made available for symbol resolution of subsequently loaded libraries" + INTEGER(C_INT), PARAMETER :: RTLD_LOCAL=0 ! "This is the converse of RTLD_GLOBAL, and the default if neither flag is specified. Symbols defined in this library are not made available to resolve references in subsequently loaded libraries." + + INTERFACE !linux API routines + !bjj see http://linux.die.net/man/3/dlopen + ! and https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man3/dlopen.3.html + + FUNCTION dlOpen(filename,mode) BIND(C,NAME="dlopen") + ! void *dlopen(const char *filename, int mode); + USE ISO_C_BINDING + IMPLICIT NONE + TYPE(C_PTR) :: dlOpen + CHARACTER(C_CHAR), INTENT(IN) :: filename(*) + INTEGER(C_INT), VALUE :: mode + END FUNCTION + + END INTERFACE + + ErrStat = ErrID_None + ErrMsg = '' + + ! Load the DLL and get the file address: + + DLL%FileAddrX = dlOpen( TRIM(DLL%FileName)//C_NULL_CHAR, RTLD_LAZY ) !the "C_NULL_CHAR" converts the Fortran string to a C-type string (i.e., adds //CHAR(0) to the end) + + IF( .NOT. C_ASSOCIATED(DLL%FileAddrX) ) THEN + ErrStat = ErrID_Fatal + WRITE(ErrMsg,'(I2)') BITS_IN_ADDR + ErrMsg = 'The dynamic library '//TRIM(DLL%FileName)//' could not be loaded. Check that the file '// & + 'exists in the specified location and that it is compiled for '//TRIM(ErrMsg)//'-bit applications.' + RETURN + END IF + + ! Get the procedure address: + + CALL LoadDynamicLibProc ( DLL, ErrStat, ErrMsg ) +#else + + ErrStat = ErrID_Fatal + ErrMsg = ' LoadDynamicLib: Not compiled with -DUSE_DLL_INTERFACE for '//TRIM(OS_Desc) + +#endif + + RETURN + END SUBROUTINE LoadDynamicLib + !======================================================================= + SUBROUTINE LoadDynamicLibProc ( DLL, ErrStat, ErrMsg ) + + ! This SUBROUTINE is used to dynamically load a procedure from a DLL. + + TYPE (ExtDLL_Type), INTENT(INOUT) :: DLL ! The DLL to be loaded. + INTEGER(IntKi), INTENT( OUT) :: ErrStat ! Error status of the operation + CHARACTER(*), INTENT( OUT) :: ErrMsg ! Error message if ErrStat /= ErrID_None + INTEGER(IntKi) :: i + +#ifdef USE_DLL_INTERFACE + + INTERFACE !linux API routines + + !bjj see http://linux.die.net/man/3/dlsym + ! and https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man3/dlsym.3.html + + FUNCTION dlSym(handle,name) BIND(C,NAME="dlsym") + ! void *dlsym(void *handle, const char *name); + USE ISO_C_BINDING + IMPLICIT NONE + TYPE(C_FUNPTR) :: dlSym ! A function pointer + TYPE(C_PTR), VALUE :: handle + CHARACTER(C_CHAR), INTENT(IN) :: name(*) + END FUNCTION + + END INTERFACE + + ErrStat = ErrID_None + ErrMsg = '' + + do i=1,NWTC_MAX_DLL_PROC + if ( len_trim( DLL%ProcName(i) ) > 0 ) then + + DLL%ProcAddr(i) = dlSym( DLL%FileAddrX, TRIM(DLL%ProcName(i))//C_NULL_CHAR ) !the "C_NULL_CHAR" converts the Fortran string to a C-type string (i.e., adds //CHAR(0) to the end) + + IF(.NOT. C_ASSOCIATED(DLL%ProcAddr(i))) THEN + ErrStat = ErrID_Fatal + i - 1 + ErrMsg = 'The procedure '//TRIM(DLL%ProcName(i))//' in file '//TRIM(DLL%FileName)//' could not be loaded.' + RETURN + END IF + + end if + end do + +#else + + ErrStat = ErrID_Fatal + ErrMsg = ' LoadDynamicLibProc: Not compiled with -DUSE_DLL_INTERFACE for '//TRIM(OS_Desc) + +#endif + + RETURN + END SUBROUTINE LoadDynamicLibProc + !======================================================================= + SUBROUTINE FreeDynamicLib ( DLL, ErrStat, ErrMsg ) + + ! This SUBROUTINE is used to free a dynamically loaded DLL (loaded in LoadDynamicLib). + + TYPE (ExtDLL_Type), INTENT(INOUT) :: DLL ! The DLL to be freed. + INTEGER(IntKi), INTENT( OUT) :: ErrStat ! Error status of the operation + CHARACTER(*), INTENT( OUT) :: ErrMsg ! Error message if ErrStat /= ErrID_None + INTEGER(C_INT) :: Success ! Whether or not the call to dlClose was successful + INTEGER(C_INT), PARAMETER :: TRUE = 0 + +#ifdef USE_DLL_INTERFACE + !bjj: note that this is not tested. + + INTERFACE !linux API routine + !bjj see http://linux.die.net/man/3/dlclose + ! and https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man3/dlclose.3.html + + FUNCTION dlClose(handle) BIND(C,NAME="dlclose") + ! int dlclose(void *handle); + USE ISO_C_BINDING + IMPLICIT NONE + INTEGER(C_INT) :: dlClose + TYPE(C_PTR), VALUE :: handle + END FUNCTION + + END INTERFACE + + ! Close the library: + + IF( .NOT. C_ASSOCIATED(DLL%FileAddrX) ) RETURN + Success = dlClose( DLL%FileAddrX ) !The function dlclose() returns 0 on success, and nonzero on error. + + IF ( Success /= TRUE ) THEN !bjj: note that this is not the same as LOGICAL .TRUE. + ErrStat = ErrID_Fatal + ErrMsg = 'The dynamic library could not be freed.' + RETURN + ELSE + ErrStat = ErrID_None + ErrMsg = '' + DLL%FileAddrX = C_NULL_PTR + END IF + +#else + + ErrStat = ErrID_Fatal + ErrMsg = ' FreeDynamicLib: Not compiled with -DUSE_DLL_INTERFACE for '//TRIM(OS_Desc) + +#endif + + RETURN + END SUBROUTINE FreeDynamicLib + !======================================================================= + +END MODULE SysSubs \ No newline at end of file diff --git a/ROSCO/src/SysFiles/SysIVF.f90 b/ROSCO/src/SysFiles/SysIVF.f90 new file mode 100644 index 00000000..dc29db54 --- /dev/null +++ b/ROSCO/src/SysFiles/SysIVF.f90 @@ -0,0 +1,143 @@ +!********************************************************************************************************************************** +! LICENSING +! Copyright (C) 2021 National Renewable Energy Laboratory +! +! This file is part of ROSCO. +! +! Licensed under the Apache License, Version 2.0 (the "License"); +! you may not use this file except in compliance with the License. +! You may obtain a copy of the License at +! +! http://www.apache.org/licenses/LICENSE-2.0 +! +! Unless required by applicable law or agreed to in writing, software +! distributed under the License is distributed on an "AS IS" BASIS, +! WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +! See the License for the specific language governing permissions and +! limitations under the License. +!********************************************************************************************************************************** +MODULE SysSubs + + USE ROSCO_Types + USE Constants + + + IMPLICIT NONE + + INTEGER, PARAMETER :: ConRecL = 120 ! The record length for console output. + INTEGER, PARAMETER :: CU = 7 ! The I/O unit for the console. Unit 6 causes ADAMS to crash. + INTEGER, PARAMETER :: MaxWrScrLen = 98 ! The maximum number of characters allowed to be written to a line in WrScr + LOGICAL, PARAMETER :: KBInputOK = .TRUE. ! A flag to tell the program that keyboard input is allowed in the environment. + CHARACTER(*), PARAMETER :: NewLine = ACHAR(10) ! The delimiter for New Lines [ Windows is CHAR(13)//CHAR(10); MAC is CHAR(13); Unix is CHAR(10) {CHAR(13)=\r is a line feed, CHAR(10)=\n is a new line}] + CHARACTER(*), PARAMETER :: OS_Desc = 'Intel Visual Fortran for Windows'! Description of the language/OS + CHARACTER( 1), PARAMETER :: PathSep = '\' ! The path separator. + CHARACTER( 1), PARAMETER :: SwChar = '/' ! The switch character for command-line options. + CHARACTER(11), PARAMETER :: UnfForm = 'BINARY' ! The string to specify unformatted I/O files. (used in OpenUOutFile and OpenUInpFile [see TurbSim's .bin files]) + +! This module contains routines with system-specific logic and references, including all references to the console unit, CU. +! It also contains standard (but not system-specific) routines it uses. +! SysGnuLinux.f90 is specifically for the GNU Fortran (gfortran) compiler on Linux and macOS. + + CONTAINS +!======================================================================= +!> This subroutine is used to dynamically load a DLL, using operating-system API routines to do so. + SUBROUTINE LoadDynamicLib ( DLL, ErrStat, ErrMsg ) + + USE IFWINTY, ONLY : HANDLE + USE kernel32, ONLY : LoadLibrary + + TYPE (ExtDLL_Type), INTENT(INOUT) :: DLL !< The DLL to be loaded. + INTEGER(IntKi), INTENT( OUT) :: ErrStat !< Error status of the operation + CHARACTER(*), INTENT( OUT) :: ErrMsg !< Error message if ErrStat /= ErrID_None + INTEGER(HANDLE) :: FileAddr ! The address of file FileName. (RETURN value from LoadLibrary in kernel32.f90) + + ErrStat = ErrID_None + ErrMsg = '' + + ! Load the DLL and get the file address: + FileAddr = LoadLibrary( TRIM(DLL%FileName)//C_NULL_CHAR ) !the "C_NULL_CHAR" converts the Fortran string to a C-type string (i.e., adds //CHAR(0) to the end) + DLL%FileAddr = TRANSFER(FileAddr, DLL%FileAddr) !convert INTEGER(HANDLE) to INTEGER(C_INTPTR_T) [used only for compatibility with gfortran] + + IF ( DLL%FileAddr == INT(0,C_INTPTR_T) ) THEN + ErrStat = ErrID_Fatal + WRITE(ErrMsg,'(I2)') BITS_IN_ADDR + ErrMsg = 'The dynamic library '//TRIM(DLL%FileName)//' could not be loaded. Check that the file '// & + 'exists in the specified location and that it is compiled for '//TRIM(ErrMsg)//'-bit applications.' + RETURN + END IF + + ! Get the procedure address: + CALL LoadDynamicLibProc ( DLL, ErrStat, ErrMsg ) + + RETURN + END SUBROUTINE LoadDynamicLib + !======================================================================= + SUBROUTINE LoadDynamicLibProc ( DLL, ErrStat, ErrMsg ) + + ! This subroutine is used to dynamically load a procedure in a DLL, using operating-system API routines to do so. + + USE IFWINTY, ONLY : LPVOID + USE kernel32, ONLY : GetProcAddress + + TYPE (ExtDLL_Type), INTENT(INOUT) :: DLL !< The DLL to be loaded. + INTEGER(IntKi), INTENT( OUT) :: ErrStat !< Error status of the operation + CHARACTER(*), INTENT( OUT) :: ErrMsg !< Error message if ErrStat /= ErrID_None + INTEGER(LPVOID) :: ProcAddr ! The address of procedure ProcName. (RETURN value from GetProcAddress in kernel32.f90) + INTEGER(IntKi) :: i + + ErrStat = ErrID_None + ErrMsg = '' + + ! Get the procedure addresses: + do i=1,NWTC_MAX_DLL_PROC + if ( len_trim( DLL%ProcName(i) ) > 0 ) then + + ProcAddr = GetProcAddress( DLL%FileAddr, TRIM(DLL%ProcName(i))//C_NULL_CHAR ) !the "C_NULL_CHAR" converts the Fortran string to a C-type string (i.e., adds //CHAR(0) to the end) + DLL%ProcAddr(i) = TRANSFER(ProcAddr, DLL%ProcAddr(i)) !convert INTEGER(LPVOID) to INTEGER(C_FUNPTR) [used only for compatibility with gfortran] + + IF(.NOT. C_ASSOCIATED(DLL%ProcAddr(i))) THEN + ErrStat = ErrID_Fatal + i - 1 + ErrMsg = 'The procedure '//TRIM(DLL%ProcName(i))//' in file '//TRIM(DLL%FileName)//' could not be loaded.' + RETURN + END IF + + end if + end do + + RETURN + END SUBROUTINE LoadDynamicLibProc + !======================================================================= + SUBROUTINE FreeDynamicLib ( DLL, ErrStat, ErrMsg ) + ! This subroutine is used to free a dynamically loaded DLL (loaded in LoadDynamicLib (syssubs::loaddynamiclib)), using operating-system API routines to do so. + + USE IFWINTY, ONLY : BOOL, HANDLE, FALSE !, LPVOID + USE kernel32, ONLY : FreeLibrary + + TYPE (ExtDLL_Type), INTENT(INOUT) :: DLL !< The DLL to be freed. + INTEGER(IntKi), INTENT( OUT) :: ErrStat !< Error status of the operation + CHARACTER(*), INTENT( OUT) :: ErrMsg !< Error message if ErrStat /= ErrID_None + INTEGER(HANDLE) :: FileAddr ! The address of file FileName. (RETURN value from LoadLibrary in kernel32.f90) + INTEGER(BOOL) :: Success ! Whether or not the call to FreeLibrary was successful + + IF ( DLL%FileAddr == INT(0,C_INTPTR_T) ) RETURN + + FileAddr = TRANSFER(DLL%FileAddr, FileAddr) !convert INTEGER(C_INTPTR_T) to INTEGER(HANDLE) [used only for compatibility with gfortran] + + ! Free the DLL: + Success = FreeLibrary( FileAddr ) !If the function succeeds, the return value is nonzero. If the function fails, the return value is zero. + + IF ( Success == FALSE ) THEN !BJJ: note that this is the Windows BOOL type so FALSE isn't the same as the Fortran LOGICAL .FALSE. + ErrStat = ErrID_Fatal + ErrMsg = 'The dynamic library could not be freed.' + RETURN + ELSE + ErrStat = ErrID_None + ErrMsg = '' + DLL%FileAddr = INT(0,C_INTPTR_T) + END IF + + RETURN + END SUBROUTINE FreeDynamicLib + !======================================================================= + +END MODULE SysSubs \ No newline at end of file diff --git a/ROSCO_toolbox/controller.py b/ROSCO_toolbox/controller.py index 6db497b0..eb8e3af6 100644 --- a/ROSCO_toolbox/controller.py +++ b/ROSCO_toolbox/controller.py @@ -10,7 +10,7 @@ # specific language governing permissions and limitations under the License. import numpy as np -import sys +import sys, os import datetime from scipy import interpolate, gradient, integrate from ROSCO_toolbox.utilities import list_check @@ -123,6 +123,25 @@ def __init__(self, controller_params): self.f_ss_cornerfreq = controller_params['filter_params']['f_ss_cornerfreq'] self.f_sd_cornerfreq = controller_params['filter_params']['f_sd_cornerfreq'] + # Open loop parameters: set up and error catching + self.OL_Mode = int(controller_params['open_loop']['flag']) + self.OL_Filename = controller_params['open_loop']['filename'] + self.OL_Ind_Breakpoint = self.OL_Ind_BldPitch = self.OL_Ind_GenTq = self.OL_Ind_YawRate = 0 + + if self.OL_Mode: + ol_params = controller_params['open_loop'] + + + self.OL_Ind_Breakpoint = ol_params['OL_Ind_Breakpoint'] + self.OL_Ind_BldPitch = ol_params['OL_Ind_BldPitch'] + self.OL_Ind_GenTq = ol_params['OL_Ind_GenTq'] + self.OL_Ind_YawRate = ol_params['OL_Ind_YawRate'] + + # Check that file exists because we won't write it + if not os.path.exists(self.OL_Filename): + raise Exception(f'Open-loop control set up, but the open loop file {self.OL_Filename} does not exist') + + # Save controller_params for later (direct passthrough) self.controller_params = controller_params @@ -603,6 +622,190 @@ def second_order_PI(self,zeta,om_n,A,B,linearize=False,v=None): self.Kp = 1/B * (2*zeta*om_n + A) self.Ki = om_n**2/B +class OpenLoopControl(object): + ''' + Open loop controls for + - blade_pitch + - generator_torque + - nacelle_yaw and nacelle_yaw_rate + + Please see Examples/example_14.py for an example on how to use this class. + + ''' + + def __init__(self, **kwargs): + self.dt = 0.05 + self.t_max = 200 + + # Optional population class attributes from key word arguments + for (k, w) in kwargs.items(): + try: + setattr(self, k, w) + except: + pass + + self.ol_timeseries = {} + self.ol_timeseries['time'] = np.arange(0,self.t_max,self.dt) + + self.allowed_controls = ['blade_pitch','generator_torque','nacelle_yaw','nacelle_yaw_rate'] + + + def const_timeseries(self,control,value): + self.ol_timeseries[control] = value * np.ones(len(self.ol_timeseries['time'])) + + + def interp_timeseries(self,control,breakpoints,values,method='sigma'): + + # Error checking + if not list_check(breakpoints) or len(breakpoints) == 1: + raise Exception('Open loop breakpoints are not a list with length greater than 1') + + if not list_check(values) or len(values) == 1: + raise Exception('Open loop values are not a list with length greater than 1') + + if len(breakpoints) != len(values): + raise Exception('Open loop breakpoints and values do not have the same length') + + if control not in self.allowed_controls: + raise Exception(f'Open loop control of {control} is not allowed') + + else: + # Finally interpolate + if method == 'sigma': + self.ol_timeseries[control] = multi_sigma(self.ol_timeseries['time'],breakpoints,values) + + elif method == 'linear': + interp_fcn = interpolate.interp1d(breakpoints,values,fill_value=values[-1],bounds_error=False) + self.ol_timeseries[control] = interp_fcn(self.ol_timeseries['time']) + + elif method == 'cubic': + interp_fcn = interpolate.interp1d(breakpoints,values,kind='cubic',fill_value=values[-1],bounds_error=False) + self.ol_timeseries[control] = interp_fcn(self.ol_timeseries['time']) + + else: + raise Exception(f'Open loop interpolation method {method} not supported') + + if control == 'nacelle_yaw': + self.compute_yaw_rate() + + + def sine_timeseries(self,control,amplitude,period): + + if period <= 0: + raise Exception('Open loop sine input period is <= 0') + + if control not in self.allowed_controls: + raise Exception(f'Open loop control of {control} is not allowed') + else: + self.ol_timeseries[control] = amplitude * np.sin(2 * np.pi * self.ol_timeseries['time'] / period) + + if control == 'nacelle_yaw': + self.compute_yaw_rate() + + def compute_yaw_rate(self): + self.ol_timeseries['nacelle_yaw_rate'] = np.concatenate(([0],np.diff(self.ol_timeseries['nacelle_yaw'])))/self.dt + + def plot_timeseries(self): + ''' + Debugging script for showing open loop timeseries + ''' + import matplotlib.pyplot as plt + fig, ax = plt.subplots(len(self.ol_timeseries)-1,1) + i_ax = -1 + for ol_input in self.ol_timeseries: + if ol_input != 'time': + i_ax += 1 + if len(self.ol_timeseries)-1 == 1: + ax.plot(self.ol_timeseries['time'],self.ol_timeseries[ol_input]) + ax.set_ylabel(ol_input) + else: + ax[i_ax].plot(self.ol_timeseries['time'],self.ol_timeseries[ol_input]) + ax[i_ax].set_ylabel(ol_input) + return fig, ax + + def write_input(self,ol_filename): + ''' + Write open loop control input + Return open_loop dict for control params + ''' + + ol_timeseries = self.ol_timeseries + + OL_Ind_Breakpoint = 1 + OL_Ind_BldPitch = OL_Ind_GenTq = OL_Ind_YawRate = 0 + + self.OL_Ind_Breakpoint = 1 + ol_index_counter = 2 # start input index at 2 + + if 'time' in ol_timeseries: + ol_control_array = ol_timeseries['time'] + + else: + raise Exception('WARNING: no time index for open loop control. This is only index currently supported') + + if 'blade_pitch' in ol_timeseries: + OL_Ind_BldPitch = ol_index_counter + ol_index_counter += 1 + + ol_control_array = np.c_[ol_control_array,ol_timeseries['blade_pitch']] + + if 'generator_torque' in ol_timeseries: + OL_Ind_GenTq = ol_index_counter + ol_index_counter += 1 + + ol_control_array = np.c_[ol_control_array,ol_timeseries['generator_torque']] + + if 'nacelle_yaw_rate' in ol_timeseries: + OL_Ind_YawRate = ol_index_counter + ol_index_counter += 1 + + ol_control_array = np.c_[ol_control_array,ol_timeseries['nacelle_yaw_rate']] + + if 'nacelle_yaw' in ol_timeseries and 'nacelle_yaw_rate' not in ol_timeseries: + raise Exception('nacelle_yaw is in ol_timeseries and nacelle_yaw_rate is not. ROSCO can only command yaw rate. Use compute_yaw_rate() to convert.') + + # Open file + if not os.path.exists(os.path.dirname(os.path.abspath(ol_filename))): + os.makedirs(os.path.dirname(os.path.abspath(ol_filename))) + + with open(ol_filename,'w') as f: + # Write header + header_line = '!\tTime' + unit_line = '!\t(sec.)' + if OL_Ind_BldPitch: + header_line += '\t\tBldPitch' + unit_line += '\t\t(rad.)' + + if OL_Ind_GenTq: + header_line += '\t\tGenTq' + unit_line += '\t\t(Nm)' + + if OL_Ind_YawRate: + header_line += '\t\tYawRate' + unit_line += '\t\t(rad/s)' + + header_line += '\n' + unit_line += '\n' + + f.write(header_line) + f.write(unit_line) + + # Write lines + for ol_line in ol_control_array: + line = ''.join(['{:<10.8f}\t'.format(val) for val in ol_line]) + '\n' + f.write(line) + + # Output open_loop dict for control params + open_loop = {} + open_loop['flag'] = True + open_loop['filename'] = ol_filename + open_loop['OL_Ind_Breakpoint'] = OL_Ind_Breakpoint + open_loop['OL_Ind_BldPitch'] = OL_Ind_BldPitch + open_loop['OL_Ind_GenTq'] = OL_Ind_GenTq + open_loop['OL_Ind_YawRate'] = OL_Ind_YawRate + + return open_loop + # helper functions @@ -660,7 +863,7 @@ def multi_sigma(xx,x_bp,y_bp): # add first and last values to beginning and end yy[xxx_bp[-1]] = y_bp[-1] + yy[xx>=x_bp[-1]] = y_bp[-1] if False: # debug plot import matplotlib.pyplot as plt diff --git a/ROSCO_toolbox/inputs/toolbox_schema.yaml b/ROSCO_toolbox/inputs/toolbox_schema.yaml index 7f9adb76..160310fa 100644 --- a/ROSCO_toolbox/inputs/toolbox_schema.yaml +++ b/ROSCO_toolbox/inputs/toolbox_schema.yaml @@ -339,6 +339,36 @@ properties: type: number default: 0.41888 unit: rad + open_loop: + type: object + default: {} + properties: + flag: + description: Flag to use open loop control + type: boolean + default: False + filename: + description: Filename of open loop input that ROSCO reads + type: string + default: unused + OL_Ind_Breakpoint: + description: Index (column, 1-indexed) of breakpoint (time) in open loop index + type: number + default: 1 + OL_Ind_BldPitch: + description: Index (column, 1-indexed) of breakpoint (time) in open loop index + type: number + default: 0 + OL_Ind_GenTq: + description: Index (column, 1-indexed) of breakpoint (time) in open loop index + type: number + default: 0 + OL_Ind_YawRate: + description: Index (column, 1-indexed) of breakpoint (time) in open loop index + type: number + default: 0 + + linmodel_tuning: type: object diff --git a/ROSCO_toolbox/inputs/validation.py b/ROSCO_toolbox/inputs/validation.py index 67437488..8b64e7ac 100644 --- a/ROSCO_toolbox/inputs/validation.py +++ b/ROSCO_toolbox/inputs/validation.py @@ -1,5 +1,5 @@ import os -from wisdem.inputs import load_yaml, write_yaml, validate_without_defaults, validate_with_defaults, simple_types +from wisdem.inputs import validate_with_defaults schema_dir = os.path.dirname(os.path.abspath(__file__)) diff --git a/ROSCO_toolbox/ofTools/fast_io/FAST_writer.py b/ROSCO_toolbox/ofTools/fast_io/FAST_writer.py index 0a1b5957..55630e38 100644 --- a/ROSCO_toolbox/ofTools/fast_io/FAST_writer.py +++ b/ROSCO_toolbox/ofTools/fast_io/FAST_writer.py @@ -1327,78 +1327,12 @@ def write_DISCON_in(self): # Fill controller and turbine objects for ROSCO # - controller controller = type('', (), {})() - controller.pc_gain_schedule = type('', (), {})() - controller.vs_gain_schedule = type('', (), {})() - controller.LoggingLevel = self.fst_vt['DISCON_in']['LoggingLevel'] - controller.F_LPFType = int(self.fst_vt['DISCON_in']['F_LPFType']) - controller.F_NotchType = int(self.fst_vt['DISCON_in']['F_NotchType']) - controller.IPC_ControlMode = int(self.fst_vt['DISCON_in']['IPC_ControlMode']) - controller.VS_ControlMode = int(self.fst_vt['DISCON_in']['VS_ControlMode']) - controller.PC_ControlMode = int(self.fst_vt['DISCON_in']['PC_ControlMode']) - controller.Y_ControlMode = int(self.fst_vt['DISCON_in']['Y_ControlMode']) - controller.SS_Mode = int(self.fst_vt['DISCON_in']['SS_Mode']) - controller.WE_Mode = int(self.fst_vt['DISCON_in']['WE_Mode']) - controller.PS_Mode = int(self.fst_vt['DISCON_in']['PS_Mode']) - controller.SD_Mode = int(self.fst_vt['DISCON_in']['SD_Mode']) - controller.Fl_Mode = int(self.fst_vt['DISCON_in']['Fl_Mode']) - controller.Flp_Mode = int(self.fst_vt['DISCON_in']['Flp_Mode']) - controller.F_LPFDamping = self.fst_vt['DISCON_in']['F_LPFDamping'] - controller.pitch_op_pc = self.fst_vt['DISCON_in']['PC_GS_angles'] - controller.pc_gain_schedule.Kp = self.fst_vt['DISCON_in']['PC_GS_KP'] - controller.pc_gain_schedule.Ki = self.fst_vt['DISCON_in']['PC_GS_KI'] - if 'IPC_KI' in self.fst_vt['DISCON_in'].keys(): - controller.Ki_ipc1p = self.fst_vt['DISCON_in']['IPC_KI'][0] - else: - controller.Ki_ipc1p = 0. - controller.max_pitch = self.fst_vt['DISCON_in']['PC_MaxPit'] - controller.min_pitch = self.fst_vt['DISCON_in']['PC_MinPit'] - controller.vs_minspd = self.fst_vt['DISCON_in']['VS_MinOMSpd'] - controller.vs_rgn2K = self.fst_vt['DISCON_in']['VS_Rgn2K'] - controller.vs_refspd = self.fst_vt['DISCON_in']['VS_RefSpd'] - controller.vs_gain_schedule.Kp = self.fst_vt['DISCON_in']['VS_KP'] - controller.vs_gain_schedule.Ki = self.fst_vt['DISCON_in']['VS_KI'] - controller.TSR_operational = self.fst_vt['DISCON_in']['VS_TSRopt'] - controller.ss_vsgain = self.fst_vt['DISCON_in']['SS_VSGain'] - controller.ss_pcgain = self.fst_vt['DISCON_in']['SS_PCGain'] - controller.v = self.fst_vt['DISCON_in']['WE_FOPoles_v'] - controller.A = self.fst_vt['DISCON_in']['WE_FOPoles'] - # controller.ps_wind_speeds = self.fst_vt['DISCON_in']['ps_wind_speeds'] - controller.ps_min_bld_pitch = self.fst_vt['DISCON_in']['PS_BldPitchMin'] - controller.sd_maxpit = self.fst_vt['DISCON_in']['SD_MaxPit'] - controller.Kp_float = self.fst_vt['DISCON_in']['Fl_Kp'] - controller.Kp_flap = self.fst_vt['DISCON_in']['Flp_Kp'] - controller.Ki_flap = self.fst_vt['DISCON_in']['Flp_Ki'] - controller.flp_angle = self.fst_vt['DISCON_in']['Flp_Angle'] - controller.flp_maxpit = self.fst_vt['DISCON_in']['Flp_MaxPit'] - - controller.f_lpf_cornerfreq = self.fst_vt['DISCON_in']['F_LPFCornerFreq'] - controller.f_ss_cornerfreq = self.fst_vt['DISCON_in']['F_SSCornerFreq'] - controller.f_we_cornerfreq = self.fst_vt['DISCON_in']['F_WECornerFreq'] - controller.f_fl_highpassfreq = self.fst_vt['DISCON_in']['F_FlHighPassFreq'] - controller.f_sd_cornerfreq = self.fst_vt['DISCON_in']['SD_CornerFreq'] turbine = type('', (), {})() turbine.Cp = type('', (), {})() turbine.Ct = type('', (), {})() turbine.Cq = type('', (), {})() - turbine.rotor_radius = self.fst_vt['DISCON_in']['WE_BladeRadius'] turbine.v_rated = self.fst_vt['DISCON_in']['v_rated'] - turbine.bld_flapwise_freq = self.fst_vt['DISCON_in']['F_FlpCornerFreq'][0] * 3. - turbine.bld_edgewise_freq = self.fst_vt['DISCON_in']['F_LPFCornerFreq'] * 4. - controller.twr_freq = self.fst_vt['DISCON_in']['F_NotchCornerFreq'] - controller.ptfm_freq = self.fst_vt['DISCON_in']['F_FlCornerFreq'][0] - turbine.max_pitch_rate = self.fst_vt['DISCON_in']['PC_MaxRat'] - turbine.min_pitch_rate = self.fst_vt['DISCON_in']['PC_MinRat'] - turbine.max_torque_rate = self.fst_vt['DISCON_in']['VS_MaxRat'] - turbine.rated_rotor_speed = self.fst_vt['DISCON_in']['PC_RefSpd'] / self.fst_vt['DISCON_in']['WE_GearboxRatio'] - turbine.rated_power = self.fst_vt['DISCON_in']['VS_RtPwr'] - turbine.rated_torque = self.fst_vt['DISCON_in']['VS_RtTq'] - turbine.max_torque = self.fst_vt['DISCON_in']['VS_MaxTq'] - turbine.TSR_operational = self.fst_vt['DISCON_in']['VS_TSRopt'] - turbine.rho = self.fst_vt['DISCON_in']['WE_RhoAir'] - turbine.Ng = self.fst_vt['DISCON_in']['WE_GearboxRatio'] - turbine.GenEff = self.fst_vt['ServoDyn']['GenEff'] - turbine.J = self.fst_vt['DISCON_in']['WE_Jtot'] turbine.Cp = self.fst_vt['DISCON_in']['Cp'] turbine.Ct = self.fst_vt['DISCON_in']['Ct'] turbine.Cq = self.fst_vt['DISCON_in']['Cq'] @@ -1407,12 +1341,6 @@ def write_DISCON_in(self): turbine.Cq_table = self.fst_vt['DISCON_in']['Cq_table'] turbine.pitch_initial_rad = self.fst_vt['DISCON_in']['Cp_pitch_initial_rad'] turbine.TSR_initial = self.fst_vt['DISCON_in']['Cp_TSR_initial'] - turbine.Cp.pitch_initial_rad = self.fst_vt['DISCON_in']['Cp_pitch_initial_rad'] - turbine.Cp.TSR_initial = self.fst_vt['DISCON_in']['Cp_TSR_initial'] - turbine.Ct.pitch_initial_rad = self.fst_vt['DISCON_in']['Cp_pitch_initial_rad'] - turbine.Ct.TSR_initial = self.fst_vt['DISCON_in']['Cp_TSR_initial'] - turbine.Cq.pitch_initial_rad = self.fst_vt['DISCON_in']['Cp_pitch_initial_rad'] - turbine.Cq.TSR_initial = self.fst_vt['DISCON_in']['Cp_TSR_initial'] turbine.TurbineName = self.fst_vt['description'] # Define DISCON infile paths @@ -1421,8 +1349,18 @@ def write_DISCON_in(self): self.fst_vt['DISCON_in']['PerfFileName'] = self.FAST_namingOut + '_Cp_Ct_Cq.txt' # Write DISCON input files - write_rotor_performance(turbine, txt_filename=os.path.join(self.FAST_runDirectory, self.fst_vt['DISCON_in']['PerfFileName'])) - write_DISCON(turbine,controller,param_file=discon_in_file, txt_filename=self.fst_vt['DISCON_in']['PerfFileName']) + write_rotor_performance( + turbine, + txt_filename=os.path.join(self.FAST_runDirectory, self.fst_vt['DISCON_in']['PerfFileName']) + ) + + write_DISCON( + turbine, + controller, + param_file=discon_in_file, + txt_filename=self.fst_vt['DISCON_in']['PerfFileName'], + rosco_vt=self.fst_vt['DISCON_in'] + ) def write_HydroDyn(self): diff --git a/ROSCO_toolbox/utilities.py b/ROSCO_toolbox/utilities.py index 271d8e3d..d5aa0982 100644 --- a/ROSCO_toolbox/utilities.py +++ b/ROSCO_toolbox/utilities.py @@ -36,7 +36,7 @@ rpm2RadSec = 2.0*(np.pi)/60.0 RadSec2rpm = 60/(2.0 * np.pi) -def write_DISCON(turbine, controller, param_file='DISCON.IN', txt_filename='Cp_Ct_Cq.txt'): +def write_DISCON(turbine, controller, param_file='DISCON.IN', txt_filename='Cp_Ct_Cq.txt', rosco_vt = {}): """ Print the controller parameters to the DISCON.IN input file for the generic controller @@ -51,6 +51,11 @@ def write_DISCON(turbine, controller, param_file='DISCON.IN', txt_filename='Cp_C txt_filename: str, optional filename of rotor performance file """ + + # Get ROSCO var tree if not provided + if not rosco_vt: + rosco_vt = DISCON_dict(turbine, controller, txt_filename) + print('Writing new controller parameter file parameter file: %s.' % param_file) # Should be obvious what's going on here... file = open(param_file,'w') @@ -58,129 +63,141 @@ def write_DISCON(turbine, controller, param_file='DISCON.IN', txt_filename='Cp_C file.write('! - File written using ROSCO version {} controller tuning logic on {}\n'.format(ROSCO_toolbox.__version__, now.strftime('%m/%d/%y'))) file.write('\n') file.write('!------- DEBUG ------------------------------------------------------------\n') - file.write('{0:<12d} ! LoggingLevel - {{0: write no debug files, 1: write standard output .dbg-file, 2: write standard output .dbg-file and complete avrSWAP-array .dbg2-file}}\n'.format(int(controller.LoggingLevel))) + file.write('{0:<12d} ! LoggingLevel - {{0: write no debug files, 1: write standard output .dbg-file, 2: write standard output .dbg-file and complete avrSWAP-array .dbg2-file}}\n'.format(int(rosco_vt['LoggingLevel']))) file.write('\n') file.write('!------- CONTROLLER FLAGS -------------------------------------------------\n') - file.write('{0:<12d} ! F_LPFType - {{1: first-order low-pass filter, 2: second-order low-pass filter}}, [rad/s] (currently filters generator speed and pitch control signals\n'.format(int(controller.F_LPFType))) - file.write('{0:<12d} ! F_NotchType - Notch on the measured generator speed and/or tower fore-aft motion (for floating) {{0: disable, 1: generator speed, 2: tower-top fore-aft motion, 3: generator speed and tower-top fore-aft motion}}\n'.format(int(controller.F_NotchType))) - file.write('{0:<12d} ! IPC_ControlMode - Turn Individual Pitch Control (IPC) for fatigue load reductions (pitch contribution) {{0: off, 1: 1P reductions, 2: 1P+2P reductions}}\n'.format(int(controller.IPC_ControlMode))) - file.write('{0:<12d} ! VS_ControlMode - Generator torque control mode in above rated conditions {{0: constant torque, 1: constant power, 2: TSR tracking PI control with constant torque, 3: TSR tracking PI control with constant power}}\n'.format(int(controller.VS_ControlMode))) - file.write('{0:<12d} ! PC_ControlMode - Blade pitch control mode {{0: No pitch, fix to fine pitch, 1: active PI blade pitch control}}\n'.format(int(controller.PC_ControlMode))) - file.write('{0:<12d} ! Y_ControlMode - Yaw control mode {{0: no yaw control, 1: yaw rate control, 2: yaw-by-IPC}}\n'.format(int(controller.Y_ControlMode))) - file.write('{0:<12d} ! SS_Mode - Setpoint Smoother mode {{0: no setpoint smoothing, 1: introduce setpoint smoothing}}\n'.format(int(controller.SS_Mode))) - file.write('{0:<12d} ! 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}}\n'.format(int(controller.WE_Mode))) - file.write('{0:<12d} ! PS_Mode - Pitch saturation mode {{0: no pitch saturation, 1: implement pitch saturation}}\n'.format(int(controller.PS_Mode > 0))) - file.write('{0:<12d} ! SD_Mode - Shutdown mode {{0: no shutdown procedure, 1: pitch to max pitch at shutdown}}\n'.format(int(controller.SD_Mode))) - file.write('{0:<12d} ! Fl_Mode - Floating specific feedback mode {{0: no nacelle velocity feedback, 1: feed back translational velocity, 2: feed back rotational veloicty}}\n'.format(int(controller.Fl_Mode))) - file.write('{0:<12d} ! Flp_Mode - Flap control mode {{0: no flap control, 1: steady state flap angle, 2: Proportional flap control}}\n'.format(int(controller.Flp_Mode))) + file.write('{0:<12d} ! F_LPFType - {{1: first-order low-pass filter, 2: second-order low-pass filter}}, [rad/s] (currently filters generator speed and pitch control signals\n'.format(int(rosco_vt['F_LPFType']))) + file.write('{0:<12d} ! F_NotchType - Notch on the measured generator speed and/or tower fore-aft motion (for floating) {{0: disable, 1: generator speed, 2: tower-top fore-aft motion, 3: generator speed and tower-top fore-aft motion}}\n'.format(int(rosco_vt['F_NotchType']))) + file.write('{0:<12d} ! IPC_ControlMode - Turn Individual Pitch Control (IPC) for fatigue load reductions (pitch contribution) {{0: off, 1: 1P reductions, 2: 1P+2P reductions}}\n'.format(int(rosco_vt['IPC_ControlMode']))) + file.write('{0:<12d} ! VS_ControlMode - Generator torque control mode in above rated conditions {{0: constant torque, 1: constant power, 2: TSR tracking PI control with constant torque, 3: TSR tracking PI control with constant power}}\n'.format(int(rosco_vt['VS_ControlMode']))) + file.write('{0:<12d} ! PC_ControlMode - Blade pitch control mode {{0: No pitch, fix to fine pitch, 1: active PI blade pitch control}}\n'.format(int(rosco_vt['PC_ControlMode']))) + file.write('{0:<12d} ! Y_ControlMode - Yaw control mode {{0: no yaw control, 1: yaw rate control, 2: yaw-by-IPC}}\n'.format(int(rosco_vt['Y_ControlMode']))) + file.write('{0:<12d} ! SS_Mode - Setpoint Smoother mode {{0: no setpoint smoothing, 1: introduce setpoint smoothing}}\n'.format(int(rosco_vt['SS_Mode']))) + file.write('{0:<12d} ! 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}}\n'.format(int(rosco_vt['WE_Mode']))) + file.write('{0:<12d} ! PS_Mode - Pitch saturation mode {{0: no pitch saturation, 1: implement pitch saturation}}\n'.format(int(rosco_vt['PS_Mode']))) + file.write('{0:<12d} ! SD_Mode - Shutdown mode {{0: no shutdown procedure, 1: pitch to max pitch at shutdown}}\n'.format(int(rosco_vt['SD_Mode']))) + file.write('{0:<12d} ! Fl_Mode - Floating specific feedback mode {{0: no nacelle velocity feedback, 1: feed back translational velocity, 2: feed back rotational veloicty}}\n'.format(int(rosco_vt['Fl_Mode']))) + file.write('{0:<12d} ! Flp_Mode - Flap control mode {{0: no flap control, 1: steady state flap angle, 2: Proportional flap control}}\n'.format(int(rosco_vt['Flp_Mode']))) + file.write('{0:<12d} ! OL_Mode - Open loop control mode {{0: no open loop control, 1: open loop control vs. time, 2: open loop control vs. wind speed}}\n'.format(int(rosco_vt['OL_Mode']))) file.write('\n') file.write('!------- FILTERS ----------------------------------------------------------\n') - file.write('{:<13.5f} ! F_LPFCornerFreq - Corner frequency (-3dB point) in the low-pass filters, [rad/s]\n'.format(controller.f_lpf_cornerfreq)) - file.write('{:<13.5f} ! F_LPFDamping - Damping coefficient {{used only when F_FilterType = 2}} [-]\n'.format(controller.F_LPFDamping)) - file.write('{:<13.5f} ! F_NotchCornerFreq - Natural frequency of the notch filter, [rad/s]\n'.format(controller.twr_freq)) - file.write('{:<10.5f}{:<9.5f} ! F_NotchBetaNumDen - Two notch damping values (numerator and denominator, resp) - determines the width and depth of the notch, [-]\n'.format(0.0,0.25)) - file.write('{:<13.5f} ! F_SSCornerFreq - Corner frequency (-3dB point) in the first order low pass filter for the setpoint smoother, [rad/s].\n'.format(controller.f_ss_cornerfreq)) - file.write('{:<13.5f} ! F_WECornerFreq - Corner frequency (-3dB point) in the first order low pass filter for the wind speed estimate [rad/s].\n'.format(controller.f_we_cornerfreq)) - file.write('{:<10.5f}{:<9.5f} ! F_FlCornerFreq - Natural frequency and damping in the second order low pass filter of the tower-top fore-aft motion for floating feedback control [rad/s, -].\n'.format(controller.ptfm_freq, 1.0)) - file.write('{:<13.5f} ! F_FlHighPassFreq - Natural frequency of first-order high-pass filter for nacelle fore-aft motion [rad/s].\n'.format(controller.f_fl_highpassfreq)) - file.write('{:<10.5f}{:<9.5f} ! F_FlpCornerFreq - Corner frequency and damping in the second order low pass filter of the blade root bending moment for flap control [rad/s, -].\n'.format(turbine.bld_flapwise_freq*1/3, 1.0)) + file.write('{:<13.5f} ! F_LPFCornerFreq - Corner frequency (-3dB point) in the low-pass filters, [rad/s]\n'.format(rosco_vt['F_LPFCornerFreq'])) + file.write('{:<13.5f} ! F_LPFDamping - Damping coefficient {{used only when F_FilterType = 2}} [-]\n'.format(rosco_vt['F_LPFDamping'])) + file.write('{:<13.5f} ! F_NotchCornerFreq - Natural frequency of the notch filter, [rad/s]\n'.format(rosco_vt['F_NotchCornerFreq'])) + file.write('{} ! F_NotchBetaNumDen - Two notch damping values (numerator and denominator, resp) - determines the width and depth of the notch, [-]\n'.format(''.join('{:<4.6f} '.format(rosco_vt['F_NotchBetaNumDen'][i]) for i in range(len(rosco_vt['F_NotchBetaNumDen']))))) + file.write('{:<13.5f} ! F_SSCornerFreq - Corner frequency (-3dB point) in the first order low pass filter for the setpoint smoother, [rad/s].\n'.format(rosco_vt['F_SSCornerFreq'])) + file.write('{:<13.5f} ! F_WECornerFreq - Corner frequency (-3dB point) in the first order low pass filter for the wind speed estimate [rad/s].\n'.format(rosco_vt['F_WECornerFreq'])) + file.write('{} ! F_FlCornerFreq - Natural frequency and damping in the second order low pass filter of the tower-top fore-aft motion for floating feedback control [rad/s, -].\n'.format(''.join('{:<4.6f} '.format(rosco_vt['F_FlCornerFreq'][i]) for i in range(len(rosco_vt['F_FlCornerFreq']))))) + file.write('{:<13.5f} ! F_FlHighPassFreq - Natural frequency of first-order high-pass filter for nacelle fore-aft motion [rad/s].\n'.format(rosco_vt['F_FlHighPassFreq'])) + file.write('{} ! F_FlpCornerFreq - Corner frequency and damping in the second order low pass filter of the blade root bending moment for flap control [rad/s, -].\n'.format(''.join('{:<4.6f} '.format(rosco_vt['F_FlpCornerFreq'][i]) for i in range(len(rosco_vt['F_FlpCornerFreq']))))) file.write('\n') file.write('!------- BLADE PITCH CONTROL ----------------------------------------------\n') - file.write('{:<11d} ! PC_GS_n - Amount of gain-scheduling table entries\n'.format(len(controller.pitch_op_pc))) - file.write('{} ! PC_GS_angles - Gain-schedule table: pitch angles [rad].\n'.format(''.join('{:<4.6f} '.format(controller.pitch_op_pc[i]) for i in range(len(controller.pitch_op_pc))))) - file.write('{} ! PC_GS_KP - Gain-schedule table: pitch controller kp gains [s].\n'.format(''.join('{:<4.6f} '.format(controller.pc_gain_schedule.Kp[i]) for i in range(len(controller.pc_gain_schedule.Kp))))) - file.write('{} ! PC_GS_KI - Gain-schedule table: pitch controller ki gains [-].\n'.format(''.join('{:<4.6f} '.format(controller.pc_gain_schedule.Ki[i]) for i in range(len(controller.pc_gain_schedule.Ki))))) - file.write('{} ! PC_GS_KD - Gain-schedule table: pitch controller kd gains\n'.format(''.join('{:<1.1f} '.format(0.0) for i in range(len(controller.pc_gain_schedule.Ki))))) - file.write('{} ! PC_GS_TF - Gain-schedule table: pitch controller tf gains (derivative filter)\n'.format(''.join('{:<1.1f} '.format(0.0) for i in range(len(controller.pc_gain_schedule.Ki))))) - file.write('{:<014.5f} ! PC_MaxPit - Maximum physical pitch limit, [rad].\n'.format(controller.max_pitch)) - file.write('{:<014.5f} ! PC_MinPit - Minimum physical pitch limit, [rad].\n'.format(controller.min_pitch)) - file.write('{:<014.5f} ! PC_MaxRat - Maximum pitch rate (in absolute value) in pitch controller, [rad/s].\n'.format(turbine.max_pitch_rate)) - file.write('{:<014.5f} ! PC_MinRat - Minimum pitch rate (in absolute value) in pitch controller, [rad/s].\n'.format(turbine.min_pitch_rate)) - file.write('{:<014.5f} ! PC_RefSpd - Desired (reference) HSS speed for pitch controller, [rad/s].\n'.format(turbine.rated_rotor_speed*turbine.Ng)) - file.write('{:<014.5f} ! PC_FinePit - Record 5: Below-rated pitch angle set-point, [rad]\n'.format(controller.min_pitch)) - file.write('{:<014.5f} ! PC_Switch - Angle above lowest minimum pitch angle for switch, [rad]\n'.format(1 * deg2rad)) + file.write('{:<11d} ! PC_GS_n - Amount of gain-scheduling table entries\n'.format(int(rosco_vt['PC_GS_n']))) + file.write('{} ! PC_GS_angles - Gain-schedule table: pitch angles [rad].\n'.format(''.join('{:<4.6f} '.format(rosco_vt['PC_GS_angles'][i]) for i in range(len(rosco_vt['PC_GS_angles']))))) + file.write('{} ! PC_GS_KP - Gain-schedule table: pitch controller kp gains [s].\n'.format(''.join('{:<4.6f} '.format(rosco_vt['PC_GS_KP'][i]) for i in range(len(rosco_vt['PC_GS_KP']))))) + file.write('{} ! PC_GS_KI - Gain-schedule table: pitch controller ki gains [-].\n'.format(''.join('{:<4.6f} '.format(rosco_vt['PC_GS_KI'][i]) for i in range(len(rosco_vt['PC_GS_KI']))))) + file.write('{} ! PC_GS_KD - Gain-schedule table: pitch controller kd gains\n'.format(''.join('{:<4.6f} '.format(rosco_vt['PC_GS_KD'][i]) for i in range(len(rosco_vt['PC_GS_KD']))))) + file.write('{} ! PC_GS_TF - Gain-schedule table: pitch controller tf gains (derivative filter)\n'.format(''.join('{:<4.6f} '.format(rosco_vt['PC_GS_TF'][i]) for i in range(len(rosco_vt['PC_GS_TF']))))) + file.write('{:<014.5f} ! PC_MaxPit - Maximum physical pitch limit, [rad].\n'.format(rosco_vt['PC_MaxPit'])) + file.write('{:<014.5f} ! PC_MinPit - Minimum physical pitch limit, [rad].\n'.format(rosco_vt['PC_MinPit'])) + file.write('{:<014.5f} ! PC_MaxRat - Maximum pitch rate (in absolute value) in pitch controller, [rad/s].\n'.format(rosco_vt['PC_MaxRat'])) + file.write('{:<014.5f} ! PC_MinRat - Minimum pitch rate (in absolute value) in pitch controller, [rad/s].\n'.format(rosco_vt['PC_MinRat'])) + file.write('{:<014.5f} ! PC_RefSpd - Desired (reference) HSS speed for pitch controller, [rad/s].\n'.format(rosco_vt['PC_RefSpd'])) + file.write('{:<014.5f} ! PC_FinePit - Record 5: Below-rated pitch angle set-point, [rad]\n'.format(rosco_vt['PC_FinePit'])) + file.write('{:<014.5f} ! PC_Switch - Angle above lowest minimum pitch angle for switch, [rad]\n'.format(rosco_vt['PC_Switch'])) file.write('\n') file.write('!------- INDIVIDUAL PITCH CONTROL -----------------------------------------\n') - file.write('{:<13.1f} ! IPC_IntSat - Integrator saturation (maximum signal amplitude contribution to pitch from IPC), [rad]\n'.format(0.087266)) # Hardcode to 5 degrees - file.write('{:<13.1e} {:<6.1f}! IPC_KI - Integral gain for the individual pitch controller: first parameter for 1P reductions, second for 2P reductions, [-]\n'.format(controller.Ki_ipc1p,0.0)) - file.write('{:<13.1e} {:<6.1f}! IPC_aziOffset - Phase offset added to the azimuth angle for the individual pitch controller, [rad]. \n'.format(0.0,0.0)) - file.write('{:<13.1f} ! IPC_CornerFreqAct - Corner frequency of the first-order actuators model, to induce a phase lag in the IPC signal {{0: Disable}}, [rad/s]\n'.format(0.0)) + file.write('{:<13.1f} ! IPC_IntSat - Integrator saturation (maximum signal amplitude contribution to pitch from IPC), [rad]\n'.format(rosco_vt['IPC_IntSat'])) # Hardcode to 5 degrees + file.write('{} ! IPC_KI - Integral gain for the individual pitch controller: first parameter for 1P reductions, second for 2P reductions, [-]\n'.format(''.join('{:<4.6f} '.format(rosco_vt['IPC_KI'][i]) for i in range(len(rosco_vt['IPC_KI']))))) + file.write('{} ! IPC_aziOffset - Phase offset added to the azimuth angle for the individual pitch controller, [rad]. \n'.format(''.join('{:<4.6f} '.format(rosco_vt['IPC_aziOffset'][i]) for i in range(len(rosco_vt['IPC_aziOffset']))))) + file.write('{:<13.1f} ! IPC_CornerFreqAct - Corner frequency of the first-order actuators model, to induce a phase lag in the IPC signal {{0: Disable}}, [rad/s]\n'.format(rosco_vt['IPC_CornerFreqAct'])) file.write('\n') file.write('!------- VS TORQUE CONTROL ------------------------------------------------\n') - file.write('{:<014.5f} ! VS_GenEff - Generator efficiency mechanical power -> electrical power, [should match the efficiency defined in the generator properties!], [%]\n'.format(turbine.GenEff)) - file.write('{:<014.5f} ! VS_ArSatTq - Above rated generator torque PI control saturation, [Nm]\n'.format(turbine.rated_torque)) - file.write('{:<014.5f} ! VS_MaxRat - Maximum torque rate (in absolute value) in torque controller, [Nm/s].\n'.format(turbine.max_torque_rate)) - file.write('{:<014.5f} ! VS_MaxTq - Maximum generator torque in Region 3 (HSS side), [Nm].\n'.format(turbine.max_torque)) - file.write('{:<014.5f} ! VS_MinTq - Minimum generator torque (HSS side), [Nm].\n'.format(0.0)) - file.write('{:<014.5f} ! VS_MinOMSpd - Minimum generator speed [rad/s]\n'.format(controller.vs_minspd * turbine.Ng)) - file.write('{:<014.5f} ! VS_Rgn2K - Generator torque constant in Region 2 (HSS side), [Nm/(rad/s)^2]\n'.format(controller.vs_rgn2K)) - file.write('{:<014.5f} ! VS_RtPwr - Wind turbine rated power [W]\n'.format(turbine.rated_power)) - file.write('{:<014.5f} ! VS_RtTq - Rated torque, [Nm].\n'.format(turbine.rated_torque)) - file.write('{:<014.5f} ! VS_RefSpd - Rated generator speed [rad/s]\n'.format(controller.vs_refspd)) - file.write('{:<11d} ! VS_n - Number of generator PI torque controller gains\n'.format(1)) - file.write('{:<014.5f} ! VS_KP - Proportional gain for generator PI torque controller [-]. (Only used in the transitional 2.5 region if VS_ControlMode =/ 2)\n'.format(controller.vs_gain_schedule.Kp[-1])) - file.write('{:<014.5f} ! VS_KI - Integral gain for generator PI torque controller [s]. (Only used in the transitional 2.5 region if VS_ControlMode =/ 2)\n'.format(controller.vs_gain_schedule.Ki[-1])) - file.write('{:<13.2f} ! VS_TSRopt - Power-maximizing region 2 tip-speed-ratio [rad].\n'.format(turbine.TSR_operational)) + file.write('{:<014.5f} ! VS_GenEff - Generator efficiency mechanical power -> electrical power, [should match the efficiency defined in the generator properties!], [%]\n'.format(rosco_vt['VS_GenEff'])) + file.write('{:<014.5f} ! VS_ArSatTq - Above rated generator torque PI control saturation, [Nm]\n'.format(rosco_vt['VS_ArSatTq'])) + file.write('{:<014.5f} ! VS_MaxRat - Maximum torque rate (in absolute value) in torque controller, [Nm/s].\n'.format(rosco_vt['VS_MaxRat'])) + file.write('{:<014.5f} ! VS_MaxTq - Maximum generator torque in Region 3 (HSS side), [Nm].\n'.format(rosco_vt['VS_MaxTq'])) + file.write('{:<014.5f} ! VS_MinTq - Minimum generator torque (HSS side), [Nm].\n'.format(rosco_vt['VS_MinTq'])) + file.write('{:<014.5f} ! VS_MinOMSpd - Minimum generator speed [rad/s]\n'.format(rosco_vt['VS_MinOMSpd'])) + file.write('{:<014.5f} ! VS_Rgn2K - Generator torque constant in Region 2 (HSS side), [Nm/(rad/s)^2]\n'.format(rosco_vt['VS_Rgn2K'])) + file.write('{:<014.5f} ! VS_RtPwr - Wind turbine rated power [W]\n'.format(rosco_vt['VS_RtPwr'])) + file.write('{:<014.5f} ! VS_RtTq - Rated torque, [Nm].\n'.format(rosco_vt['VS_RtTq'])) + file.write('{:<014.5f} ! VS_RefSpd - Rated generator speed [rad/s]\n'.format(rosco_vt['VS_RefSpd'])) + file.write('{:<11d} ! VS_n - Number of generator PI torque controller gains\n'.format(int(rosco_vt['VS_n']))) + file.write('{:<014.5f} ! VS_KP - Proportional gain for generator PI torque controller [-]. (Only used in the transitional 2.5 region if VS_ControlMode =/ 2)\n'.format(rosco_vt['VS_KP'])) + file.write('{:<014.5f} ! VS_KI - Integral gain for generator PI torque controller [s]. (Only used in the transitional 2.5 region if VS_ControlMode =/ 2)\n'.format(rosco_vt['VS_KI'])) + file.write('{:<13.2f} ! VS_TSRopt - Power-maximizing region 2 tip-speed-ratio [rad].\n'.format(rosco_vt['VS_TSRopt'])) file.write('\n') file.write('!------- SETPOINT SMOOTHER ---------------------------------------------\n') - file.write('{:<13.5f} ! SS_VSGain - Variable speed torque controller setpoint smoother gain, [-].\n'.format(controller.ss_vsgain)) - file.write('{:<13.5f} ! SS_PCGain - Collective pitch controller setpoint smoother gain, [-].\n'.format(controller.ss_pcgain)) + file.write('{:<13.5f} ! SS_VSGain - Variable speed torque controller setpoint smoother gain, [-].\n'.format(rosco_vt['SS_VSGain'])) + file.write('{:<13.5f} ! SS_PCGain - Collective pitch controller setpoint smoother gain, [-].\n'.format(rosco_vt['SS_PCGain'])) file.write('\n') file.write('!------- WIND SPEED ESTIMATOR ---------------------------------------------\n') - file.write('{:<13.3f} ! WE_BladeRadius - Blade length (distance from hub center to blade tip), [m]\n'.format(turbine.rotor_radius)) - file.write('{:<11d} ! WE_CP_n - Amount of parameters in the Cp array\n'.format(1)) - file.write('{} ! WE_CP - Parameters that define the parameterized CP(lambda) function\n'.format(''.join('{:<2.1f} '.format(0.0) for i in range(1)))) - file.write('{:<13.1f} ! WE_Gamma - Adaption gain of the wind speed estimator algorithm [m/rad]\n'.format(0.0)) - file.write('{:<13.1f} ! WE_GearboxRatio - Gearbox ratio [>=1], [-]\n'.format(turbine.Ng)) - file.write('{:<014.5f} ! WE_Jtot - Total drivetrain inertia, including blades, hub and casted generator inertia to LSS, [kg m^2]\n'.format(turbine.J)) - file.write('{:<13.3f} ! WE_RhoAir - Air density, [kg m^-3]\n'.format(turbine.rho)) - file.write( '"{}" ! PerfFileName - File containing rotor performance tables (Cp,Ct,Cq)\n'.format(txt_filename)) - file.write('{:<7d} {:<10d} ! PerfTableSize - Size of rotor performance tables, first number refers to number of blade pitch angles, second number referse to number of tip-speed ratios\n'.format(len(turbine.Cp.pitch_initial_rad),len(turbine.Cp.TSR_initial))) - file.write('{:<11d} ! WE_FOPoles_N - Number of first-order system poles used in EKF\n'.format(len(controller.A))) - file.write('{} ! WE_FOPoles_v - Wind speeds corresponding to first-order system poles [m/s]\n'.format(''.join('{:<4.4f} '.format(controller.v[i]) for i in range(len(controller.v))))) - file.write('{} ! WE_FOPoles - First order system poles [1/s]\n'.format(''.join('{:<10.8f} '.format(controller.A[i]) for i in range(len(controller.A))))) + file.write('{:<13.3f} ! WE_BladeRadius - Blade length (distance from hub center to blade tip), [m]\n'.format(rosco_vt['WE_BladeRadius'])) + file.write('{:<11d} ! WE_CP_n - Amount of parameters in the Cp array\n'.format(int(rosco_vt['WE_CP_n']))) + file.write('{} ! WE_CP - Parameters that define the parameterized CP(lambda) function\n'.format(rosco_vt['WE_CP'])) + file.write('{:<13.1f} ! WE_Gamma - Adaption gain of the wind speed estimator algorithm [m/rad]\n'.format(rosco_vt['WE_Gamma'])) + file.write('{:<13.1f} ! WE_GearboxRatio - Gearbox ratio [>=1], [-]\n'.format(rosco_vt['WE_GearboxRatio'])) + file.write('{:<014.5f} ! WE_Jtot - Total drivetrain inertia, including blades, hub and casted generator inertia to LSS, [kg m^2]\n'.format(rosco_vt['WE_Jtot'])) + file.write('{:<13.3f} ! WE_RhoAir - Air density, [kg m^-3]\n'.format(rosco_vt['WE_RhoAir'])) + file.write( '"{}" ! PerfFileName - File containing rotor performance tables (Cp,Ct,Cq) (absolute path or relative to this file)\n'.format(rosco_vt['PerfFileName'])) + file.write('{:<7d} {:<10d} ! PerfTableSize - Size of rotor performance tables, first number refers to number of blade pitch angles, second number referse to number of tip-speed ratios\n'.format(int(rosco_vt['PerfTableSize'][0]),int(rosco_vt['PerfTableSize'][1]))) + file.write('{:<11d} ! WE_FOPoles_N - Number of first-order system poles used in EKF\n'.format(int(rosco_vt['WE_FOPoles_N']))) + file.write('{} ! WE_FOPoles_v - Wind speeds corresponding to first-order system poles [m/s]\n'.format(''.join('{:<4.4f} '.format(rosco_vt['WE_FOPoles_v'][i]) for i in range(len(rosco_vt['WE_FOPoles_v']))))) + file.write('{} ! WE_FOPoles - First order system poles [1/s]\n'.format(''.join('{:<10.8f} '.format(rosco_vt['WE_FOPoles'][i]) for i in range(len(rosco_vt['WE_FOPoles']))))) file.write('\n') file.write('!------- YAW CONTROL ------------------------------------------------------\n') - file.write('{:<13.1f} ! Y_ErrThresh - Yaw error threshold. Turbine begins to yaw when it passes this. [rad^2 s]\n'.format(0.0)) - file.write('{:<13.1f} ! Y_IPC_IntSat - Integrator saturation (maximum signal amplitude contribution to pitch from yaw-by-IPC), [rad]\n'.format(0.0)) - file.write('{:<11d} ! Y_IPC_n - Number of controller gains (yaw-by-IPC)\n'.format(1)) - file.write('{:<13.1f} ! Y_IPC_KP - Yaw-by-IPC proportional controller gain Kp\n'.format(0.0)) - file.write('{:<13.1f} ! Y_IPC_KI - Yaw-by-IPC integral controller gain Ki\n'.format(0.0)) - file.write('{:<13.1f} ! Y_IPC_omegaLP - Low-pass filter corner frequency for the Yaw-by-IPC controller to filtering the yaw alignment error, [rad/s].\n'.format(0.0)) - file.write('{:<13.1f} ! Y_IPC_zetaLP - Low-pass filter damping factor for the Yaw-by-IPC controller to filtering the yaw alignment error, [-].\n'.format(0.0)) - file.write('{:<13.1f} ! Y_MErrSet - Yaw alignment error, set point [rad]\n'.format(0.0)) - file.write('{:<13.1f} ! Y_omegaLPFast - Corner frequency fast low pass filter, 1.0 [rad/s]\n'.format(0.0)) - file.write('{:<13.1f} ! Y_omegaLPSlow - Corner frequency slow low pass filter, 1/60 [rad/s]\n'.format(0.0)) - file.write('{:<13.1f} ! Y_Rate - Yaw rate [rad/s]\n'.format(0.0)) + file.write('{:<13.5f} ! Y_ErrThresh - Yaw error threshold. Turbine begins to yaw when it passes this. [rad^2 s]\n'.format(rosco_vt['Y_ErrThresh'])) + file.write('{:<13.5f} ! Y_IPC_IntSat - Integrator saturation (maximum signal amplitude contribution to pitch from yaw-by-IPC), [rad]\n'.format(rosco_vt['Y_IPC_IntSat'])) + file.write('{:<11d} ! Y_IPC_n - Number of controller gains (yaw-by-IPC)\n'.format(int(rosco_vt['Y_IPC_n']))) + file.write('{:<13.5f} ! Y_IPC_KP - Yaw-by-IPC proportional controller gain Kp\n'.format(rosco_vt['Y_IPC_KP'])) + file.write('{:<13.5f} ! Y_IPC_KI - Yaw-by-IPC integral controller gain Ki\n'.format(rosco_vt['Y_IPC_KI'])) + file.write('{:<13.5f} ! Y_IPC_omegaLP - Low-pass filter corner frequency for the Yaw-by-IPC controller to filtering the yaw alignment error, [rad/s].\n'.format(rosco_vt['Y_IPC_omegaLP'])) + file.write('{:<13.5f} ! Y_IPC_zetaLP - Low-pass filter damping factor for the Yaw-by-IPC controller to filtering the yaw alignment error, [-].\n'.format(rosco_vt['Y_IPC_zetaLP'])) + file.write('{:<13.5f} ! Y_MErrSet - Yaw alignment error, set point [rad]\n'.format(rosco_vt['Y_MErrSet'])) + file.write('{:<13.5f} ! Y_omegaLPFast - Corner frequency fast low pass filter, 1.0 [rad/s]\n'.format(rosco_vt['Y_omegaLPFast'])) + file.write('{:<13.5f} ! Y_omegaLPSlow - Corner frequency slow low pass filter, 1/60 [rad/s]\n'.format(rosco_vt['Y_omegaLPSlow'])) + file.write('{:<13.5f} ! Y_Rate - Yaw rate [rad/s]\n'.format(rosco_vt['Y_Rate'])) file.write('\n') file.write('!------- TOWER FORE-AFT DAMPING -------------------------------------------\n') - file.write('{:<11d} ! FA_KI - Integral gain for the fore-aft tower damper controller, -1 = off / >0 = on [rad s/m] - !NJA - Make this a flag\n'.format(-1)) - file.write('{:<13.1f} ! FA_HPFCornerFreq - Corner frequency (-3dB point) in the high-pass filter on the fore-aft acceleration signal [rad/s]\n'.format(0.0)) - file.write('{:<13.1f} ! FA_IntSat - Integrator saturation (maximum signal amplitude contribution to pitch from FA damper), [rad]\n'.format(0.0)) + file.write('{:<11d} ! FA_KI - Integral gain for the fore-aft tower damper controller, -1 = off / >0 = on [rad s/m] - !NJA - Make this a flag\n'.format(int(rosco_vt['FA_KI'] ))) + file.write('{:<13.1f} ! FA_HPFCornerFreq - Corner frequency (-3dB point) in the high-pass filter on the fore-aft acceleration signal [rad/s]\n'.format(rosco_vt['FA_HPFCornerFreq'] )) + file.write('{:<13.1f} ! FA_IntSat - Integrator saturation (maximum signal amplitude contribution to pitch from FA damper), [rad]\n'.format(rosco_vt['FA_IntSat'] )) file.write('\n') file.write('!------- MINIMUM PITCH SATURATION -------------------------------------------\n') - file.write('{:<11d} ! PS_BldPitchMin_N - Number of values in minimum blade pitch lookup table (should equal number of values in PS_WindSpeeds and PS_BldPitchMin)\n'.format(len(controller.ps_min_bld_pitch))) - file.write('{} ! PS_WindSpeeds - Wind speeds corresponding to minimum blade pitch angles [m/s]\n'.format(''.join('{:<4.4f} '.format(controller.v[i]) for i in range(len(controller.v))))) - file.write('{} ! PS_BldPitchMin - Minimum blade pitch angles [rad]\n'.format(''.join('{:<10.8f} '.format(controller.ps_min_bld_pitch[i]) for i in range(len(controller.ps_min_bld_pitch))))) + file.write('{:<11d} ! PS_BldPitchMin_N - Number of values in minimum blade pitch lookup table (should equal number of values in PS_WindSpeeds and PS_BldPitchMin)\n'.format(int(rosco_vt['PS_BldPitchMin_N']))) + file.write('{} ! PS_WindSpeeds - Wind speeds corresponding to minimum blade pitch angles [m/s]\n'.format(''.join('{:<4.4f} '.format(rosco_vt['PS_WindSpeeds'][i]) for i in range(len(rosco_vt['PS_WindSpeeds']))))) + file.write('{} ! PS_BldPitchMin - Minimum blade pitch angles [rad]\n'.format(''.join('{:<10.8f} '.format(rosco_vt['PS_BldPitchMin'][i]) for i in range(len(rosco_vt['PS_BldPitchMin']))))) file.write('\n') file.write('!------- SHUTDOWN -----------------------------------------------------------\n') - file.write('{:<014.5f} ! SD_MaxPit - Maximum blade pitch angle to initiate shutdown, [rad]\n'.format(controller.sd_maxpit)) - file.write('{:<014.5f} ! SD_CornerFreq - Cutoff Frequency for first order low-pass filter for blade pitch angle, [rad/s]\n'.format(controller.f_sd_cornerfreq)) + file.write('{:<014.5f} ! SD_MaxPit - Maximum blade pitch angle to initiate shutdown, [rad]\n'.format(rosco_vt['SD_MaxPit'])) + file.write('{:<014.5f} ! SD_CornerFreq - Cutoff Frequency for first order low-pass filter for blade pitch angle, [rad/s]\n'.format(rosco_vt['SD_CornerFreq'])) file.write('\n') file.write('!------- Floating -----------------------------------------------------------\n') - if controller.Fl_Mode == 2: + if rosco_vt['Fl_Mode'] == 2: floatstr = 'pitching' else: floatstr = 'velocity' - file.write('{:<014.5f} ! Fl_Kp - Nacelle {} proportional feedback gain [s]\n'.format(controller.Kp_float, floatstr)) + file.write('{:<014.5f} ! Fl_Kp - Nacelle {} proportional feedback gain [s]\n'.format(rosco_vt['Fl_Kp'], floatstr)) file.write('\n') file.write('!------- FLAP ACTUATION -----------------------------------------------------\n') - file.write('{:<014.5f} ! Flp_Angle - Initial or steady state flap angle [rad]\n'.format(controller.flp_angle)) - file.write('{:<014.8e} ! Flp_Kp - Blade root bending moment proportional gain for flap control [s]\n'.format(controller.Kp_flap[-1])) - file.write('{:<014.8e} ! Flp_Ki - Flap displacement integral gain for flap control [-]\n'.format(controller.Ki_flap[-1])) - file.write('{:<014.5f} ! Flp_MaxPit - Maximum (and minimum) flap pitch angle [rad]'.format(controller.flp_maxpit)) + file.write('{:<014.5f} ! Flp_Angle - Initial or steady state flap angle [rad]\n'.format(rosco_vt['Flp_Angle'])) + file.write('{:<014.8e} ! Flp_Kp - Blade root bending moment proportional gain for flap control [s]\n'.format(rosco_vt['Flp_Kp'])) + file.write('{:<014.8e} ! Flp_Ki - Flap displacement integral gain for flap control [-]\n'.format(rosco_vt['Flp_Ki'])) + file.write('{:<014.5f} ! Flp_MaxPit - Maximum (and minimum) flap pitch angle [rad]\n'.format(rosco_vt['Flp_MaxPit'])) + file.write('\n') + file.write('!------- Open Loop Control -----------------------------------------------------\n') + file.write('"{}" ! OL_Filename - Input file with open loop timeseries (absolute path or relative to this file)\n'.format(rosco_vt['OL_Filename'])) + file.write('{0:<12d} ! Ind_Breakpoint - The column in OL_Filename that contains the breakpoint (time if OL_Mode = 1)\n'.format(int(rosco_vt['Ind_Breakpoint']))) + file.write('{0:<12d} ! Ind_BldPitch - The column in OL_Filename that contains the blade pitch input in rad\n'.format(int(rosco_vt['Ind_BldPitch']))) + file.write('{0:<12d} ! Ind_GenTq - The column in OL_Filename that contains the generator torque in Nm\n'.format(int(rosco_vt['Ind_GenTq']))) + file.write('{0:<12d} ! Ind_YawRate - The column in OL_Filename that contains the generator torque in Nm\n'.format(int(rosco_vt['Ind_YawRate']))) file.close() + + # Write Open loop input + if rosco_vt['OL_Mode'] and hasattr(controller, 'OpenLoop'): + write_ol_control(controller) def read_DISCON(DISCON_filename): ''' @@ -217,15 +234,6 @@ def read_DISCON(DISCON_filename): value = value[1:-1] else: value = float(value) - # Some checks for variables that are generally passed as lists - if param.lower() == 'vs_kp': - value = [value] - if param.lower() == 'vs_ki': - value = [value] - if param.lower() == 'flp_kp': - value = [value] - if param.lower() == 'flp_ki': - value = [value] DISCON_in[param] = value return DISCON_in @@ -352,20 +360,21 @@ def DISCON_dict(turbine, controller, txt_filename=None): ''' DISCON_dict = {} # ------- DEBUG ------- - DISCON_dict['LoggingLevel'] = controller.LoggingLevel + DISCON_dict['LoggingLevel'] = int(controller.LoggingLevel) # ------- CONTROLLER FLAGS ------- - DISCON_dict['F_LPFType'] = controller.F_LPFType - DISCON_dict['F_NotchType'] = controller.F_NotchType - DISCON_dict['IPC_ControlMode'] = controller.IPC_ControlMode - DISCON_dict['VS_ControlMode'] = controller.VS_ControlMode - DISCON_dict['PC_ControlMode'] = controller.PC_ControlMode - DISCON_dict['Y_ControlMode'] = controller.Y_ControlMode - DISCON_dict['SS_Mode'] = controller.SS_Mode - DISCON_dict['WE_Mode'] = controller.WE_Mode - DISCON_dict['PS_Mode'] = controller.PS_Mode - DISCON_dict['SD_Mode'] = controller.SD_Mode - DISCON_dict['Fl_Mode'] = controller.Fl_Mode - DISCON_dict['Flp_Mode'] = controller.Flp_Mode + DISCON_dict['F_LPFType'] = int(controller.F_LPFType) + DISCON_dict['F_NotchType'] = int(controller.F_NotchType) + DISCON_dict['IPC_ControlMode'] = int(controller.IPC_ControlMode) + DISCON_dict['VS_ControlMode'] = int(controller.VS_ControlMode) + DISCON_dict['PC_ControlMode'] = int(controller.PC_ControlMode) + DISCON_dict['Y_ControlMode'] = int(controller.Y_ControlMode) + DISCON_dict['SS_Mode'] = int(controller.SS_Mode) + DISCON_dict['WE_Mode'] = int(controller.WE_Mode) + DISCON_dict['PS_Mode'] = int(controller.PS_Mode > 0) + DISCON_dict['SD_Mode'] = int(controller.SD_Mode) + DISCON_dict['Fl_Mode'] = int(controller.Fl_Mode) + DISCON_dict['Flp_Mode'] = int(controller.Flp_Mode) + DISCON_dict['OL_Mode'] = int(controller.OL_Mode) # ------- FILTERS ------- DISCON_dict['F_LPFCornerFreq'] = turbine.bld_edgewise_freq * 1/4 DISCON_dict['F_LPFDamping'] = controller.F_LPFDamping @@ -391,8 +400,8 @@ def DISCON_dict(turbine, controller, txt_filename=None): DISCON_dict['PC_FinePit'] = controller.min_pitch DISCON_dict['PC_Switch'] = 1 * deg2rad # ------- INDIVIDUAL PITCH CONTROL ------- - DISCON_dict['IPC_IntSat'] = 0.0 - DISCON_dict['IPC_KI'] = [0.0, 0.0] + DISCON_dict['IPC_IntSat'] = 0.087266 + DISCON_dict['IPC_KI'] = [controller.Ki_ipc1p, 0.0] DISCON_dict['IPC_aziOffset'] = [0.0, 0.0] DISCON_dict['IPC_CornerFreqAct'] = 0.0 # ------- VS TORQUE CONTROL ------- @@ -401,14 +410,14 @@ def DISCON_dict(turbine, controller, txt_filename=None): DISCON_dict['VS_MaxRat'] = turbine.max_torque_rate DISCON_dict['VS_MaxTq'] = turbine.max_torque DISCON_dict['VS_MinTq'] = 0.0 - DISCON_dict['VS_MinOMSpd'] = controller.vs_minspd + DISCON_dict['VS_MinOMSpd'] = controller.vs_minspd * turbine.Ng DISCON_dict['VS_Rgn2K'] = controller.vs_rgn2K DISCON_dict['VS_RtPwr'] = turbine.rated_power DISCON_dict['VS_RtTq'] = turbine.rated_torque DISCON_dict['VS_RefSpd'] = controller.vs_refspd DISCON_dict['VS_n'] = 1 - DISCON_dict['VS_KP'] = [controller.vs_gain_schedule.Kp[-1]] - DISCON_dict['VS_KI'] = [controller.vs_gain_schedule.Ki[-1]] + DISCON_dict['VS_KP'] = controller.vs_gain_schedule.Kp[-1] + DISCON_dict['VS_KI'] = controller.vs_gain_schedule.Ki[-1] DISCON_dict['VS_TSRopt'] = turbine.TSR_operational # ------- SETPOINT SMOOTHER ------- DISCON_dict['SS_VSGain'] = controller.ss_vsgain @@ -416,7 +425,7 @@ def DISCON_dict(turbine, controller, txt_filename=None): # ------- WIND SPEED ESTIMATOR ------- DISCON_dict['WE_BladeRadius'] = turbine.rotor_radius DISCON_dict['WE_CP_n'] = 1 - DISCON_dict['WE_CP'] = [0.0 for i in range(4)] + DISCON_dict['WE_CP'] = 0 DISCON_dict['WE_Gamma'] = 0.0 DISCON_dict['WE_GearboxRatio'] = turbine.Ng DISCON_dict['WE_Jtot'] = turbine.J @@ -427,20 +436,20 @@ def DISCON_dict(turbine, controller, txt_filename=None): DISCON_dict['WE_FOPoles_v'] = controller.v DISCON_dict['WE_FOPoles'] = controller.A # ------- YAW CONTROL ------- - DISCON_dict['Y_ErrThresh'] = 0.0 + DISCON_dict['Y_ErrThresh'] = 0.1396 DISCON_dict['Y_IPC_IntSat'] = 0.0 DISCON_dict['Y_IPC_n'] = 1 DISCON_dict['Y_IPC_KP'] = 0.0 DISCON_dict['Y_IPC_KI'] = 0.0 - DISCON_dict['Y_IPC_omegaLP'] = 0.0 - DISCON_dict['Y_IPC_zetaLP'] = 0.0 + DISCON_dict['Y_IPC_omegaLP'] = 0.2094 + DISCON_dict['Y_IPC_zetaLP'] = 1 DISCON_dict['Y_MErrSet'] = 0.0 - DISCON_dict['Y_omegaLPFast'] = 0.0 - DISCON_dict['Y_omegaLPSlow'] = 0.0 - DISCON_dict['Y_Rate'] = 0.0 + DISCON_dict['Y_omegaLPFast'] = 0.2094 + DISCON_dict['Y_omegaLPSlow'] = 0.1047 + DISCON_dict['Y_Rate'] = 0.0052 # ------- TOWER FORE-AFT DAMPING ------- - DISCON_dict['JA'] = -1 - DISCON_dict['FA_HPF_CornerFreq'] = 0.0 + DISCON_dict['FA_KI'] = -1 + DISCON_dict['FA_HPFCornerFreq'] = 0.0 DISCON_dict['FA_IntSat'] = 0.0 # ------- MINIMUM PITCH SATURATION ------- DISCON_dict['PS_BldPitchMin_N'] = len(controller.ps_min_bld_pitch) @@ -453,9 +462,15 @@ def DISCON_dict(turbine, controller, txt_filename=None): DISCON_dict['Fl_Kp'] = controller.Kp_float # ------- FLAP ACTUATION ------- DISCON_dict['Flp_Angle'] = controller.flp_angle - DISCON_dict['Flp_Kp'] = [controller.Kp_flap[-1]] - DISCON_dict['Flp_Ki'] = [controller.Ki_flap[-1]] + DISCON_dict['Flp_Kp'] = controller.Kp_flap[-1] + DISCON_dict['Flp_Ki'] = controller.Ki_flap[-1] DISCON_dict['Flp_MaxPit'] = controller.flp_maxpit + # ------- Open Loop Control ------- + DISCON_dict['OL_Filename'] = controller.OL_Filename + DISCON_dict['Ind_Breakpoint'] = controller.OL_Ind_Breakpoint + DISCON_dict['Ind_BldPitch'] = controller.OL_Ind_BldPitch + DISCON_dict['Ind_GenTq'] = controller.OL_Ind_GenTq + DISCON_dict['Ind_YawRate'] = controller.OL_Ind_YawRate return DISCON_dict diff --git a/Test_Cases/BAR_10/BAR_10_DISCON.IN b/Test_Cases/BAR_10/BAR_10_DISCON.IN index 04c4cf1f..34d0f1dc 100644 --- a/Test_Cases/BAR_10/BAR_10_DISCON.IN +++ b/Test_Cases/BAR_10/BAR_10_DISCON.IN @@ -1,5 +1,5 @@ ! Controller parameter input file for the BAR_10 wind turbine -! - File written using ROSCO version 2.4.1 controller tuning logic on 11/11/21 +! - File written using ROSCO version 2.4.1 controller tuning logic on 12/13/21 !------- 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} @@ -17,25 +17,26 @@ 0 ! SD_Mode - Shutdown mode {0: no shutdown procedure, 1: pitch to max pitch at shutdown} 0 ! Fl_Mode - Floating specific feedback mode {0: no nacelle velocity feedback, 1: feed back translational velocity, 2: feed back rotational veloicty} 2 ! Flp_Mode - Flap control mode {0: no flap control, 1: steady state flap angle, 2: Proportional flap control} +0 ! OL_Mode - Open loop control mode {0: no open loop control, 1: open loop control vs. time, 2: open loop control vs. wind speed} !------- FILTERS ---------------------------------------------------------- 0.81771 ! F_LPFCornerFreq - Corner frequency (-3dB point) in the low-pass filters, [rad/s] 0.70000 ! F_LPFDamping - Damping coefficient {used only when F_FilterType = 2} [-] 0.00000 ! F_NotchCornerFreq - Natural frequency of the notch filter, [rad/s] -0.00000 0.25000 ! F_NotchBetaNumDen - Two notch damping values (numerator and denominator, resp) - determines the width and depth of the notch, [-] +0.000000 0.250000 ! F_NotchBetaNumDen - Two notch damping values (numerator and denominator, resp) - determines the width and depth of the notch, [-] 0.62830 ! F_SSCornerFreq - Corner frequency (-3dB point) in the first order low pass filter for the setpoint smoother, [rad/s]. 0.20944 ! F_WECornerFreq - Corner frequency (-3dB point) in the first order low pass filter for the wind speed estimate [rad/s]. -0.00000 1.00000 ! F_FlCornerFreq - Natural frequency and damping in the second order low pass filter of the tower-top fore-aft motion for floating feedback control [rad/s, -]. +0.000000 1.000000 ! F_FlCornerFreq - Natural frequency and damping in the second order low pass filter of the tower-top fore-aft motion for floating feedback control [rad/s, -]. 0.01042 ! F_FlHighPassFreq - Natural frequency of first-order high-pass filter for nacelle fore-aft motion [rad/s]. -0.87200 1.00000 ! F_FlpCornerFreq - Corner frequency and damping in the second order low pass filter of the blade root bending moment for flap control [rad/s, -]. +0.872003 1.000000 ! F_FlpCornerFreq - Corner frequency and damping in the second order low pass filter of the blade root bending moment for flap control [rad/s, -]. !------- BLADE PITCH CONTROL ---------------------------------------------- 30 ! PC_GS_n - Amount of gain-scheduling table entries 0.055571 0.084171 0.107141 0.126263 0.144146 0.160539 0.176153 0.190873 0.205230 0.218766 0.232200 0.244952 0.257566 0.269958 0.281962 0.293941 0.305512 0.316846 0.328160 0.339075 0.349883 0.360682 0.371115 0.381477 0.391841 0.401895 0.411830 0.421766 0.431531 0.441117 ! PC_GS_angles - Gain-schedule table: pitch angles [rad]. -0.017860 -0.014810 -0.012465 -0.010606 -0.009097 -0.007846 -0.006793 -0.005894 -0.005118 -0.004442 -0.003846 -0.003318 -0.002847 -0.002423 -0.002041 -0.001694 -0.001377 -0.001088 -0.000822 -0.000576 -0.000349 -0.000139 0.000057 0.000240 0.000411 0.000571 0.000721 0.000862 0.000995 0.001121 ! PC_GS_KP - Gain-schedule table: pitch controller kp gains [s]. -0.000729 -0.000634 -0.000561 -0.000503 -0.000455 -0.000416 -0.000383 -0.000355 -0.000331 -0.000310 -0.000291 -0.000275 -0.000260 -0.000247 -0.000235 -0.000224 -0.000214 -0.000205 -0.000197 -0.000189 -0.000182 -0.000175 -0.000169 -0.000164 -0.000158 -0.000153 -0.000149 -0.000144 -0.000140 -0.000136 ! 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 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 0.0 0.0 0.0 ! PC_GS_TF - Gain-schedule table: pitch controller tf gains (derivative filter) +0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 ! PC_GS_KD - Gain-schedule table: pitch controller kd gains +0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 ! PC_GS_TF - Gain-schedule table: pitch controller tf gains (derivative filter) 1.570000000000 ! PC_MaxPit - Maximum physical pitch limit, [rad]. -0.02142000000 ! PC_MinPit - Minimum physical pitch limit, [rad]. 2.000000000000 ! PC_MaxRat - Maximum pitch rate (in absolute value) in pitch controller, [rad/s]. @@ -46,8 +47,8 @@ !------- INDIVIDUAL PITCH CONTROL ----------------------------------------- 0.1 ! IPC_IntSat - Integrator saturation (maximum signal amplitude contribution to pitch from IPC), [rad] -0.0e+00 0.0 ! IPC_KI - Integral gain for the individual pitch controller: first parameter for 1P reductions, second for 2P reductions, [-] -0.0e+00 0.0 ! IPC_aziOffset - Phase offset added to the azimuth angle for the individual pitch controller, [rad]. +0.000000 0.000000 ! IPC_KI - Integral gain for the individual pitch controller: first parameter for 1P reductions, second for 2P reductions, [-] +0.000000 0.000000 ! 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 ------------------------------------------------ @@ -73,29 +74,29 @@ !------- WIND SPEED ESTIMATOR --------------------------------------------- 102.996 ! WE_BladeRadius - Blade length (distance from hub center to blade tip), [m] 1 ! WE_CP_n - Amount of parameters in the Cp array -0.0 ! WE_CP - Parameters that define the parameterized CP(lambda) function +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], [-] 311169343.31448 ! 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.BAR_10.txt" ! PerfFileName - File containing rotor performance tables (Cp,Ct,Cq) +"Cp_Ct_Cq.BAR_10.txt" ! PerfFileName - File containing rotor performance tables (Cp,Ct,Cq) (absolute path or relative to this file) 20 20 ! PerfTableSize - Size of rotor performance tables, first number refers to number of blade pitch angles, second number referse to number of tip-speed ratios 60 ! WE_FOPoles_N - Number of first-order system poles used in EKF 3.0000 3.1818 3.3637 3.5455 3.7274 3.9092 4.0911 4.2729 4.4548 4.6366 4.8185 5.0003 5.1822 5.3640 5.5459 5.7277 5.9096 6.0914 6.2732 6.4551 6.6369 6.8188 7.0006 7.1825 7.3643 7.5462 7.7280 7.9099 8.0917 8.2736 8.8311 9.3887 9.9462 10.5038 11.0613 11.6188 12.1764 12.7339 13.2915 13.8490 14.4066 14.9641 15.5217 16.0792 16.6368 17.1943 17.7519 18.3094 18.8670 19.4245 19.9821 20.5396 21.0972 21.6547 22.2123 22.7698 23.3274 23.8849 24.4425 25.0000 ! WE_FOPoles_v - Wind speeds corresponding to first-order system poles [m/s] -0.01032222 -0.01094791 -0.01157359 -0.01219928 -0.01282497 -0.01345066 -0.01407634 -0.01470203 -0.01532772 -0.01595341 -0.01657910 -0.01720478 -0.01783047 -0.01845616 -0.01908185 -0.01970753 -0.02033322 -0.02095891 -0.02158460 -0.02221029 -0.02283597 -0.02346166 -0.02408735 -0.02471304 -0.02533872 -0.02596441 -0.02659010 -0.02721579 -0.02784148 -0.03155938 -0.02064411 -0.02523568 -0.03115136 -0.03804402 -0.04536814 -0.05319900 -0.06143614 -0.07007492 -0.07905118 -0.08848838 -0.09813189 -0.10826896 -0.11875987 -0.12946050 -0.14060876 -0.15206714 -0.16389528 -0.17579675 -0.18819749 -0.20120021 -0.21421783 -0.22701846 -0.24079660 -0.25500830 -0.26920997 -0.28368131 -0.29815345 -0.31266837 -0.32821652 -0.34409134 ! WE_FOPoles - First order system poles [1/s] !------- 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] +0.13960 ! Y_ErrThresh - Yaw error threshold. Turbine begins to yaw when it passes this. [rad^2 s] +0.00000 ! 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 [rad/s] -0.0 ! Y_omegaLPSlow - Corner frequency slow low pass filter, 1/60 [rad/s] -0.0 ! Y_Rate - Yaw rate [rad/s] +0.00000 ! Y_IPC_KP - Yaw-by-IPC proportional controller gain Kp +0.00000 ! Y_IPC_KI - Yaw-by-IPC integral controller gain Ki +0.20940 ! Y_IPC_omegaLP - Low-pass filter corner frequency for the Yaw-by-IPC controller to filtering the yaw alignment error, [rad/s]. +1.00000 ! 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] +0.20940 ! Y_omegaLPFast - Corner frequency fast low pass filter, 1.0 [rad/s] +0.10470 ! Y_omegaLPSlow - Corner frequency slow low pass filter, 1/60 [rad/s] +0.00520 ! 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 @@ -118,4 +119,11 @@ 0.000000000000 ! Flp_Angle - Initial or steady state flap angle [rad] 7.83530248e-08 ! Flp_Kp - Blade root bending moment proportional gain for flap control [s] 1.63131797e-09 ! Flp_Ki - Flap displacement integral gain for flap control [-] -0.174500000000 ! Flp_MaxPit - Maximum (and minimum) flap pitch angle [rad] \ No newline at end of file +0.174500000000 ! Flp_MaxPit - Maximum (and minimum) flap pitch angle [rad] + +!------- Open Loop Control ----------------------------------------------------- +"unused" ! OL_Filename - Input file with open loop timeseries (absolute path or relative to this file) +0 ! Ind_Breakpoint - The column in OL_Filename that contains the breakpoint (time if OL_Mode = 1) +0 ! Ind_BldPitch - The column in OL_Filename that contains the blade pitch input in rad +0 ! Ind_GenTq - The column in OL_Filename that contains the generator torque in Nm +0 ! Ind_YawRate - The column in OL_Filename that contains the generator torque in Nm diff --git a/Test_Cases/IEA-15-240-RWT-UMaineSemi/DISCON-UMaineSemi.IN b/Test_Cases/IEA-15-240-RWT-UMaineSemi/DISCON-UMaineSemi.IN index 438fc42a..112d17ca 100644 --- a/Test_Cases/IEA-15-240-RWT-UMaineSemi/DISCON-UMaineSemi.IN +++ b/Test_Cases/IEA-15-240-RWT-UMaineSemi/DISCON-UMaineSemi.IN @@ -1,5 +1,5 @@ ! Controller parameter input file for the IEA-15-240-RWT-UMaineSemi wind turbine -! - File written using ROSCO version 2.4.1 controller tuning logic on 11/11/21 +! - File written using ROSCO version 2.4.1 controller tuning logic on 12/13/21 !------- 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} @@ -17,25 +17,26 @@ 0 ! SD_Mode - Shutdown mode {0: no shutdown procedure, 1: pitch to max pitch at shutdown} 2 ! Fl_Mode - Floating specific feedback mode {0: no nacelle velocity feedback, 1: feed back translational velocity, 2: feed back rotational veloicty} 0 ! Flp_Mode - Flap control mode {0: no flap control, 1: steady state flap angle, 2: Proportional flap control} +0 ! OL_Mode - Open loop control mode {0: no open loop control, 1: open loop control vs. time, 2: open loop control vs. wind speed} !------- FILTERS ---------------------------------------------------------- 1.00810 ! F_LPFCornerFreq - Corner frequency (-3dB point) in the low-pass filters, [rad/s] 0.70000 ! F_LPFDamping - Damping coefficient {used only when F_FilterType = 2} [-] 3.35500 ! F_NotchCornerFreq - Natural frequency of the notch filter, [rad/s] -0.00000 0.25000 ! F_NotchBetaNumDen - Two notch damping values (numerator and denominator, resp) - determines the width and depth of the notch, [-] +0.000000 0.250000 ! F_NotchBetaNumDen - Two notch damping values (numerator and denominator, resp) - determines the width and depth of the notch, [-] 0.62830 ! F_SSCornerFreq - Corner frequency (-3dB point) in the first order low pass filter for the setpoint smoother, [rad/s]. 0.20944 ! F_WECornerFreq - Corner frequency (-3dB point) in the first order low pass filter for the wind speed estimate [rad/s]. -0.21300 1.00000 ! F_FlCornerFreq - Natural frequency and damping in the second order low pass filter of the tower-top fore-aft motion for floating feedback control [rad/s, -]. +0.213000 1.000000 ! F_FlCornerFreq - Natural frequency and damping in the second order low pass filter of the tower-top fore-aft motion for floating feedback control [rad/s, -]. 0.01042 ! F_FlHighPassFreq - Natural frequency of first-order high-pass filter for nacelle fore-aft motion [rad/s]. -1.16240 1.00000 ! F_FlpCornerFreq - Corner frequency and damping in the second order low pass filter of the blade root bending moment for flap control [rad/s, -]. +1.162400 1.000000 ! F_FlpCornerFreq - Corner frequency and damping in the second order low pass filter of the blade root bending moment for flap control [rad/s, -]. !------- BLADE PITCH CONTROL ---------------------------------------------- 30 ! PC_GS_n - Amount of gain-scheduling table entries 0.060198 0.087134 0.108448 0.126859 0.143398 0.158602 0.172796 0.186189 0.198928 0.211120 0.222850 0.234173 0.245147 0.255807 0.266195 0.276325 0.286231 0.295933 0.305445 0.314779 0.323952 0.332975 0.341858 0.350608 0.359236 0.367748 0.376149 0.384447 0.392644 0.400744 ! PC_GS_angles - Gain-schedule table: pitch angles [rad]. -1.269046 -1.104681 -0.968551 -0.853956 -0.756161 -0.671723 -0.598081 -0.533289 -0.475842 -0.424558 -0.378496 -0.336896 -0.299141 -0.264721 -0.233212 -0.204261 -0.177567 -0.152878 -0.129975 -0.108671 -0.088804 -0.070234 -0.052838 -0.036508 -0.021148 -0.006676 0.006985 0.019900 0.032129 0.043725 ! PC_GS_KP - Gain-schedule table: pitch controller kp gains [s]. -0.131850 -0.119461 -0.109200 -0.100563 -0.093191 -0.086827 -0.081276 -0.076393 -0.072063 -0.068197 -0.064725 -0.061590 -0.058744 -0.056150 -0.053775 -0.051593 -0.049581 -0.047720 -0.045993 -0.044388 -0.042890 -0.041490 -0.040179 -0.038948 -0.037791 -0.036700 -0.035670 -0.034697 -0.033775 -0.032901 ! 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 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 0.0 0.0 0.0 ! PC_GS_TF - Gain-schedule table: pitch controller tf gains (derivative filter) +0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 ! PC_GS_KD - Gain-schedule table: pitch controller kd gains +0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 ! PC_GS_TF - Gain-schedule table: pitch controller tf gains (derivative filter) 1.570000000000 ! PC_MaxPit - Maximum physical pitch limit, [rad]. 0.000000000000 ! PC_MinPit - Minimum physical pitch limit, [rad]. 0.034900000000 ! PC_MaxRat - Maximum pitch rate (in absolute value) in pitch controller, [rad/s]. @@ -46,8 +47,8 @@ !------- INDIVIDUAL PITCH CONTROL ----------------------------------------- 0.1 ! IPC_IntSat - Integrator saturation (maximum signal amplitude contribution to pitch from IPC), [rad] -0.0e+00 0.0 ! IPC_KI - Integral gain for the individual pitch controller: first parameter for 1P reductions, second for 2P reductions, [-] -0.0e+00 0.0 ! IPC_aziOffset - Phase offset added to the azimuth angle for the individual pitch controller, [rad]. +0.000000 0.000000 ! IPC_KI - Integral gain for the individual pitch controller: first parameter for 1P reductions, second for 2P reductions, [-] +0.000000 0.000000 ! 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 ------------------------------------------------ @@ -73,29 +74,29 @@ !------- WIND SPEED ESTIMATOR --------------------------------------------- 120.000 ! WE_BladeRadius - Blade length (distance from hub center to blade tip), [m] 1 ! WE_CP_n - Amount of parameters in the Cp array -0.0 ! WE_CP - Parameters that define the parameterized CP(lambda) function +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] 1.0 ! WE_GearboxRatio - Gearbox ratio [>=1], [-] 318628138.00000 ! 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.IEA15MW.txt" ! PerfFileName - File containing rotor performance tables (Cp,Ct,Cq) +"Cp_Ct_Cq.IEA15MW.txt" ! PerfFileName - File containing rotor performance tables (Cp,Ct,Cq) (absolute path or relative to this file) 104 72 ! PerfTableSize - Size of rotor performance tables, first number refers to number of blade pitch angles, second number referse to number of tip-speed ratios 60 ! WE_FOPoles_N - Number of first-order system poles used in EKF 3.0000 3.2669 3.5338 3.8007 4.0676 4.3345 4.6014 4.8683 5.1352 5.4021 5.6690 5.9359 6.2028 6.4697 6.7366 7.0034 7.2703 7.5372 7.8041 8.0710 8.3379 8.6048 8.8717 9.1386 9.4055 9.6724 9.9393 10.2062 10.4731 10.7400 11.2153 11.6907 12.1660 12.6413 13.1167 13.5920 14.0673 14.5427 15.0180 15.4933 15.9687 16.4440 16.9193 17.3947 17.8700 18.3453 18.8207 19.2960 19.7713 20.2467 20.7220 21.1973 21.6727 22.1480 22.6233 23.0987 23.5740 24.0493 24.5247 25.0000 ! WE_FOPoles_v - Wind speeds corresponding to first-order system poles [m/s] -0.02366483 -0.02577018 -0.02787553 -0.02998089 -0.03208624 -0.03419159 -0.03629695 -0.03840230 -0.04050765 -0.04261301 -0.04471836 -0.04682371 -0.04892907 -0.05103442 -0.05313977 -0.05524513 -0.05735048 -0.05945583 -0.06156119 -0.06366654 -0.06577189 -0.06787725 -0.06998260 -0.07208795 -0.07419331 -0.07629866 -0.07840401 -0.08050937 -0.08261472 -0.07921295 -0.05363855 -0.05601196 -0.06228621 -0.07050010 -0.08000290 -0.09048156 -0.10174863 -0.11365942 -0.12615707 -0.13917960 -0.15270665 -0.16669562 -0.18106141 -0.19588503 -0.21106595 -0.22664340 -0.24258187 -0.25886648 -0.27550565 -0.29248186 -0.30978187 -0.32738614 -0.34531736 -0.36353035 -0.38202289 -0.40082810 -0.41987220 -0.43918834 -0.45876266 -0.47857910 ! WE_FOPoles - First order system poles [1/s] !------- 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] +0.13960 ! Y_ErrThresh - Yaw error threshold. Turbine begins to yaw when it passes this. [rad^2 s] +0.00000 ! 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 [rad/s] -0.0 ! Y_omegaLPSlow - Corner frequency slow low pass filter, 1/60 [rad/s] -0.0 ! Y_Rate - Yaw rate [rad/s] +0.00000 ! Y_IPC_KP - Yaw-by-IPC proportional controller gain Kp +0.00000 ! Y_IPC_KI - Yaw-by-IPC integral controller gain Ki +0.20940 ! Y_IPC_omegaLP - Low-pass filter corner frequency for the Yaw-by-IPC controller to filtering the yaw alignment error, [rad/s]. +1.00000 ! 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] +0.20940 ! Y_omegaLPFast - Corner frequency fast low pass filter, 1.0 [rad/s] +0.10470 ! Y_omegaLPSlow - Corner frequency slow low pass filter, 1/60 [rad/s] +0.00520 ! 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 @@ -118,4 +119,11 @@ 0.000000000000 ! Flp_Angle - Initial or steady state flap angle [rad] 0.00000000e+00 ! Flp_Kp - Blade root bending moment proportional gain for flap control [s] 0.00000000e+00 ! Flp_Ki - Flap displacement integral gain for flap control [-] -0.174500000000 ! Flp_MaxPit - Maximum (and minimum) flap pitch angle [rad] \ No newline at end of file +0.174500000000 ! Flp_MaxPit - Maximum (and minimum) flap pitch angle [rad] + +!------- Open Loop Control ----------------------------------------------------- +"unused" ! OL_Filename - Input file with open loop timeseries (absolute path or relative to this file) +0 ! Ind_Breakpoint - The column in OL_Filename that contains the breakpoint (time if OL_Mode = 1) +0 ! Ind_BldPitch - The column in OL_Filename that contains the blade pitch input in rad +0 ! Ind_GenTq - The column in OL_Filename that contains the generator torque in Nm +0 ! Ind_YawRate - The column in OL_Filename that contains the generator torque in Nm diff --git a/Test_Cases/IEA-15-240-RWT-UMaineSemi/IEA-15-240-RWT-UMaineSemi.fst b/Test_Cases/IEA-15-240-RWT-UMaineSemi/IEA-15-240-RWT-UMaineSemi.fst index 7bcc3adf..79b2306c 100644 --- a/Test_Cases/IEA-15-240-RWT-UMaineSemi/IEA-15-240-RWT-UMaineSemi.fst +++ b/Test_Cases/IEA-15-240-RWT-UMaineSemi/IEA-15-240-RWT-UMaineSemi.fst @@ -3,7 +3,7 @@ IEA 15 MW offshore reference model on UMaine VolturnUS-S semi-submersible floati ---------------------- SIMULATION CONTROL -------------------------------------- False Echo - Echo input data to .ech (flag) "FATAL" AbortLevel - Error level when simulation should abort (string) {"WARNING", "SEVERE", "FATAL"} -150.0 TMax - Total run time (s) +300.0 TMax - Total run time (s) 0.025 DT - Integration time step (s) 2 InterpOrder - Interpolation order for input/output time history (-) {1=linear, 2=quadratic} 0 NumCrctn - Number of correction iterations (-) {0=explicit calculation, i.e., no corrections} diff --git a/Test_Cases/IEA-15-240-RWT-UMaineSemi/IEA-15-240-RWT-UMaineSemi_ElastoDyn.dat b/Test_Cases/IEA-15-240-RWT-UMaineSemi/IEA-15-240-RWT-UMaineSemi_ElastoDyn.dat index 30146386..b1b00ab1 100644 --- a/Test_Cases/IEA-15-240-RWT-UMaineSemi/IEA-15-240-RWT-UMaineSemi_ElastoDyn.dat +++ b/Test_Cases/IEA-15-240-RWT-UMaineSemi/IEA-15-240-RWT-UMaineSemi_ElastoDyn.dat @@ -13,7 +13,7 @@ True EdgeDOF - First edgewise blade mode DOF (flag) False TeetDOF - Rotor-teeter DOF (flag) [unused for 3 blades] False DrTrDOF - Drivetrain rotational-flexibility DOF (flag) True GenDOF - Generator DOF (flag) -False YawDOF - Yaw DOF (flag) +True YawDOF - Yaw DOF (flag) True TwFADOF1 - First fore-aft tower bending-mode DOF (flag) True TwFADOF2 - Second fore-aft tower bending-mode DOF (flag) True TwSSDOF1 - First side-to-side tower bending-mode DOF (flag) @@ -32,7 +32,7 @@ True PtfmYDOF - Platform yaw rotation DOF (flag) 1. BlPitch(3) - Blade 3 initial pitch (degrees) [unused for 2 blades] 0 TeetDefl - Initial or fixed teeter angle (degrees) [unused for 3 blades] 0 Azimuth - Initial azimuth angle for blade 1 (degrees) - 6. RotSpeed - Initial or fixed rotor speed (rpm) + 5. RotSpeed - Initial or fixed rotor speed (rpm) 0 NacYaw - Initial or fixed nacelle-yaw angle (degrees) 0 TTDspFA - Initial fore-aft tower-top displacement (meters) 0 TTDspSS - Initial side-to-side tower-top displacement (meters) diff --git a/Test_Cases/IEA-15-240-RWT-UMaineSemi/IEA-15-240-RWT-UMaineSemi_ServoDyn.dat b/Test_Cases/IEA-15-240-RWT-UMaineSemi/IEA-15-240-RWT-UMaineSemi_ServoDyn.dat index ba0cc386..cb9f1cc9 100644 --- a/Test_Cases/IEA-15-240-RWT-UMaineSemi/IEA-15-240-RWT-UMaineSemi_ServoDyn.dat +++ b/Test_Cases/IEA-15-240-RWT-UMaineSemi/IEA-15-240-RWT-UMaineSemi_ServoDyn.dat @@ -49,8 +49,8 @@ True GenTiStp - Method to stop the generator {T: timed usin 0.6 HSSBrDT - Time for HSS-brake to reach full deployment once initiated (sec) [used only when HSSBrMode=1] 28116.2 HSSBrTqF - Fully deployed HSS-brake torque (N-m) ---------------------- NACELLE-YAW CONTROL ------------------------------------- -0 YCMode - Yaw control mode {0: none, 3: user-defined from routine UserYawCont, 4: user-defined from Simulink/Labview, 5: user-defined from Bladed-style DLL} (switch) -9999.9 TYCOn - Time to enable active yaw control (s) [unused when YCMode=0] +5 YCMode - Yaw control mode {0: none, 3: user-defined from routine UserYawCont, 4: user-defined from Simulink/Labview, 5: user-defined from Bladed-style DLL} (switch) +0 TYCOn - Time to enable active yaw control (s) [unused when YCMode=0] 0.0 YawNeut - Neutral yaw position--yaw spring force is zero at this yaw (degrees) 4.6273E+10 YawSpr - Nacelle-yaw spring constant (N-m/rad) 3.9088E+07 YawDamp - Nacelle-yaw damping constant (N-m/(rad/s)) diff --git a/Test_Cases/NREL-5MW/DISCON.IN b/Test_Cases/NREL-5MW/DISCON.IN index 9391f4b1..c8050fcf 100644 --- a/Test_Cases/NREL-5MW/DISCON.IN +++ b/Test_Cases/NREL-5MW/DISCON.IN @@ -1,5 +1,5 @@ ! Controller parameter input file for the NREL-5MW wind turbine -! - File written using ROSCO version 2.4.1 controller tuning logic on 11/11/21 +! - File written using ROSCO version 2.4.1 controller tuning logic on 12/13/21 !------- 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} @@ -17,25 +17,26 @@ 0 ! SD_Mode - Shutdown mode {0: no shutdown procedure, 1: pitch to max pitch at shutdown} 0 ! Fl_Mode - Floating specific feedback mode {0: no nacelle velocity feedback, 1: feed back translational velocity, 2: feed back rotational veloicty} 0 ! Flp_Mode - Flap control mode {0: no flap control, 1: steady state flap angle, 2: Proportional flap control} +0 ! OL_Mode - Open loop control mode {0: no open loop control, 1: open loop control vs. time, 2: open loop control vs. wind speed} !------- FILTERS ---------------------------------------------------------- 1.57080 ! F_LPFCornerFreq - Corner frequency (-3dB point) in the low-pass filters, [rad/s] 0.00000 ! F_LPFDamping - Damping coefficient {used only when F_FilterType = 2} [-] 0.00000 ! F_NotchCornerFreq - Natural frequency of the notch filter, [rad/s] -0.00000 0.25000 ! F_NotchBetaNumDen - Two notch damping values (numerator and denominator, resp) - determines the width and depth of the notch, [-] +0.000000 0.250000 ! F_NotchBetaNumDen - Two notch damping values (numerator and denominator, resp) - determines the width and depth of the notch, [-] 0.62830 ! F_SSCornerFreq - Corner frequency (-3dB point) in the first order low pass filter for the setpoint smoother, [rad/s]. 0.20944 ! F_WECornerFreq - Corner frequency (-3dB point) in the first order low pass filter for the wind speed estimate [rad/s]. -0.00000 1.00000 ! F_FlCornerFreq - Natural frequency and damping in the second order low pass filter of the tower-top fore-aft motion for floating feedback control [rad/s, -]. +0.000000 1.000000 ! F_FlCornerFreq - Natural frequency and damping in the second order low pass filter of the tower-top fore-aft motion for floating feedback control [rad/s, -]. 0.01042 ! F_FlHighPassFreq - Natural frequency of first-order high-pass filter for nacelle fore-aft motion [rad/s]. -0.00000 1.00000 ! F_FlpCornerFreq - Corner frequency and damping in the second order low pass filter of the blade root bending moment for flap control [rad/s, -]. +0.000000 1.000000 ! F_FlpCornerFreq - Corner frequency and damping in the second order low pass filter of the blade root bending moment for flap control [rad/s, -]. !------- BLADE PITCH CONTROL ---------------------------------------------- 30 ! PC_GS_n - Amount of gain-scheduling table entries 0.057184 0.084679 0.106097 0.124429 0.140845 0.155934 0.170053 0.183401 0.196139 0.208359 0.220146 0.231564 0.242647 0.253450 0.263988 0.274301 0.284401 0.294305 0.304033 0.313597 0.323005 0.332262 0.341382 0.350374 0.359244 0.367996 0.376635 0.385162 0.393584 0.401904 ! PC_GS_angles - Gain-schedule table: pitch angles [rad]. -0.020690 -0.018186 -0.016154 -0.014472 -0.013057 -0.011849 -0.010807 -0.009899 -0.009100 -0.008391 -0.007759 -0.007192 -0.006679 -0.006214 -0.005790 -0.005402 -0.005045 -0.004716 -0.004412 -0.004130 -0.003868 -0.003623 -0.003395 -0.003181 -0.002980 -0.002791 -0.002613 -0.002445 -0.002286 -0.002135 ! PC_GS_KP - Gain-schedule table: pitch controller kp gains [s]. -0.008383 -0.007511 -0.006803 -0.006217 -0.005724 -0.005303 -0.004940 -0.004624 -0.004345 -0.004099 -0.003878 -0.003681 -0.003502 -0.003340 -0.003192 -0.003057 -0.002933 -0.002818 -0.002712 -0.002614 -0.002523 -0.002438 -0.002358 -0.002283 -0.002213 -0.002147 -0.002085 -0.002027 -0.001971 -0.001919 ! 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 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 0.0 0.0 0.0 ! PC_GS_TF - Gain-schedule table: pitch controller tf gains (derivative filter) +0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 ! PC_GS_KD - Gain-schedule table: pitch controller kd gains +0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 ! PC_GS_TF - Gain-schedule table: pitch controller tf gains (derivative filter) 1.570000000000 ! PC_MaxPit - Maximum physical pitch limit, [rad]. 0.004490000000 ! PC_MinPit - Minimum physical pitch limit, [rad]. 0.174500000000 ! PC_MaxRat - Maximum pitch rate (in absolute value) in pitch controller, [rad/s]. @@ -46,8 +47,8 @@ !------- INDIVIDUAL PITCH CONTROL ----------------------------------------- 0.1 ! IPC_IntSat - Integrator saturation (maximum signal amplitude contribution to pitch from IPC), [rad] -0.0e+00 0.0 ! IPC_KI - Integral gain for the individual pitch controller: first parameter for 1P reductions, second for 2P reductions, [-] -0.0e+00 0.0 ! IPC_aziOffset - Phase offset added to the azimuth angle for the individual pitch controller, [rad]. +0.000000 0.000000 ! IPC_KI - Integral gain for the individual pitch controller: first parameter for 1P reductions, second for 2P reductions, [-] +0.000000 0.000000 ! 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 ------------------------------------------------ @@ -73,29 +74,29 @@ !------- WIND SPEED ESTIMATOR --------------------------------------------- 63.000 ! WE_BladeRadius - Blade length (distance from hub center to blade tip), [m] 1 ! WE_CP_n - Amount of parameters in the Cp array -0.0 ! WE_CP - Parameters that define the parameterized CP(lambda) function +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] 97.0 ! WE_GearboxRatio - Gearbox ratio [>=1], [-] 43702538.05700 ! 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) +"Cp_Ct_Cq.NREL5MW.txt" ! PerfFileName - File containing rotor performance tables (Cp,Ct,Cq) (absolute path or relative to this file) 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 60 ! WE_FOPoles_N - Number of first-order system poles used in EKF 3.0000 3.2897 3.5793 3.8690 4.1586 4.4483 4.7379 5.0276 5.3172 5.6069 5.8966 6.1862 6.4759 6.7655 7.0552 7.3448 7.6345 7.9241 8.2138 8.5034 8.7931 9.0828 9.3724 9.6621 9.9517 10.2414 10.5310 10.8207 11.1103 11.4000 11.8533 12.3067 12.7600 13.2133 13.6667 14.1200 14.5733 15.0267 15.4800 15.9333 16.3867 16.8400 17.2933 17.7467 18.2000 18.6533 19.1067 19.5600 20.0133 20.4667 20.9200 21.3733 21.8267 22.2800 22.7333 23.1867 23.6400 24.0933 24.5467 25.0000 ! WE_FOPoles_v - Wind speeds corresponding to first-order system poles [m/s] -0.01595686 -0.01749752 -0.01903818 -0.02057884 -0.02211950 -0.02366017 -0.02520083 -0.02674149 -0.02828215 -0.02982281 -0.03136348 -0.03290414 -0.03444480 -0.03598546 -0.03752613 -0.03906679 -0.04060745 -0.04214811 -0.04368877 -0.04522944 -0.04677010 -0.04831076 -0.04985142 -0.05139208 -0.05293275 -0.05447341 -0.05801792 -0.06143926 -0.06457372 -0.06037223 0.02081964 0.01321781 0.00260088 -0.00946527 -0.02243222 -0.03602280 -0.05018905 -0.06471244 -0.07962397 -0.09509370 -0.11064413 -0.12676985 -0.14280724 -0.15953654 -0.17597588 -0.19315019 -0.21019460 -0.22763723 -0.24561537 -0.26323269 -0.28154954 -0.30021563 -0.31850528 -0.33751960 -0.35713765 -0.37607197 -0.39558204 -0.41576810 -0.43645174 -0.46925015 ! WE_FOPoles - First order system poles [1/s] !------- 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] +0.13960 ! Y_ErrThresh - Yaw error threshold. Turbine begins to yaw when it passes this. [rad^2 s] +0.00000 ! 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 [rad/s] -0.0 ! Y_omegaLPSlow - Corner frequency slow low pass filter, 1/60 [rad/s] -0.0 ! Y_Rate - Yaw rate [rad/s] +0.00000 ! Y_IPC_KP - Yaw-by-IPC proportional controller gain Kp +0.00000 ! Y_IPC_KI - Yaw-by-IPC integral controller gain Ki +0.20940 ! Y_IPC_omegaLP - Low-pass filter corner frequency for the Yaw-by-IPC controller to filtering the yaw alignment error, [rad/s]. +1.00000 ! 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] +0.20940 ! Y_omegaLPFast - Corner frequency fast low pass filter, 1.0 [rad/s] +0.10470 ! Y_omegaLPSlow - Corner frequency slow low pass filter, 1/60 [rad/s] +0.00520 ! 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 @@ -118,4 +119,11 @@ 0.000000000000 ! Flp_Angle - Initial or steady state flap angle [rad] 0.00000000e+00 ! Flp_Kp - Blade root bending moment proportional gain for flap control [s] 0.00000000e+00 ! Flp_Ki - Flap displacement integral gain for flap control [-] -0.174500000000 ! Flp_MaxPit - Maximum (and minimum) flap pitch angle [rad] \ No newline at end of file +0.174500000000 ! Flp_MaxPit - Maximum (and minimum) flap pitch angle [rad] + +!------- Open Loop Control ----------------------------------------------------- +"unused" ! OL_Filename - Input file with open loop timeseries (absolute path or relative to this file) +0 ! Ind_Breakpoint - The column in OL_Filename that contains the breakpoint (time if OL_Mode = 1) +0 ! Ind_BldPitch - The column in OL_Filename that contains the blade pitch input in rad +0 ! Ind_GenTq - The column in OL_Filename that contains the generator torque in Nm +0 ! Ind_YawRate - The column in OL_Filename that contains the generator torque in Nm diff --git a/docs/source/api_change.rst b/docs/source/api_change.rst index 3b186cba..a4d0416b 100644 --- a/docs/source/api_change.rst +++ b/docs/source/api_change.rst @@ -16,11 +16,20 @@ Two filter parameters were added to - change the high pass filter in the floating feedback module - change the low pass filter of the wind speed estimator signal that is used in torque control +Open loop contro inputs, users must specify: +- The open loop input filename, an example can be found in Examples/Example_OL_Input.dat +- Indices (columns) of values specified in OL_Filename + ====== ================= ====================================================================================================================================================================================================== Added in ROSCO develop ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Line Flag Name Example Value ====== ================= ====================================================================================================================================================================================================== 27 F_WECornerFreq 0.20944 ! F_WECornerFreq - Corner frequency (-3dB point) in the first order low pass filter for the wind speed estimate [rad/s]. -29 F_FlHighPassFreq 0.01000 ! F_FlHighPassFreq - Natural frequency of first-order high-pass filter for nacelle fore-aft motion [rad/s]. +29 F_FlHighPassFreq 0.01000 ! F_FlHighPassFreq - Natural frequency of first-order high-pass filter for nacelle fore-aft motion [rad/s]. +125 OL_Filename "14_OL_Input.dat" ! OL_Filename - Input file with open loop timeseries (absolute path or relative to this file) +126 Ind_Breakpoint 1 ! Ind_Breakpoint - The column in OL_Filename that contains the breakpoint (time if OL_Mode = 1) +127 Ind_BldPitch 2 ! Ind_BldPitch - The column in OL_Filename that contains the blade pitch input in rad +128 Ind_GenTq 3 ! Ind_GenTq - The column in OL_Filename that contains the generator torque in Nm +129 Ind_YawRate 4 ! Ind_YawRate - The column in OL_Filename that contains the generator torque in Nm ====== ================= ====================================================================================================================================================================================================== From 337ecf68c018d697b04afcea38da82e24a201935 Mon Sep 17 00:00:00 2001 From: Nikhar Abbas Date: Fri, 17 Dec 2021 10:20:09 -0700 Subject: [PATCH 004/218] Convert WE saved variables to WE type --- ROSCO/src/ControllerBlocks.f90 | 81 ++++++++++++++++------------------ 1 file changed, 37 insertions(+), 44 deletions(-) diff --git a/ROSCO/src/ControllerBlocks.f90 b/ROSCO/src/ControllerBlocks.f90 index c065759a..aca14ae0 100644 --- a/ROSCO/src/ControllerBlocks.f90 +++ b/ROSCO/src/ControllerBlocks.f90 @@ -175,10 +175,6 @@ SUBROUTINE WindSpeedEstimator(LocalVar, CntrPar, objInst, PerfData, DebugVar, Er REAL(DbKi) :: 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(DbKi), SAVE :: om_r ! Estimated rotor speed [rad/s] - REAL(DbKi), SAVE :: v_t ! Estimated wind speed, turbulent component [m/s] - REAL(DbKi), SAVE :: v_m ! Estimated wind speed, 10-minute averaged [m/s] - REAL(DbKi), SAVE :: v_h ! Combined estimated wind speed [m/s] REAL(DbKi) :: L ! Turbulent length scale parameter [m] REAL(DbKi) :: Ti ! Turbulent intensity, [-] ! REAL(DbKi), DIMENSION(3,3) :: I @@ -192,13 +188,10 @@ SUBROUTINE WindSpeedEstimator(LocalVar, CntrPar, objInst, PerfData, DebugVar, Er ! - Covariance matrices REAL(DbKi), DIMENSION(3,3) :: F ! First order system jacobian - REAL(DbKi), DIMENSION(3,3), SAVE :: P ! Covariance estiamte REAL(DbKi), DIMENSION(1,3) :: H ! Output equation jacobian - REAL(DbKi), DIMENSION(3,1), SAVE :: xh ! Estimated state matrix REAL(DbKi), DIMENSION(3,1) :: dxh ! Estimated state matrix deviation from previous timestep REAL(DbKi), DIMENSION(3,3) :: Q ! Process noise covariance matrix REAL(DbKi), DIMENSION(1,1) :: S ! Innovation covariance - REAL(DbKi), DIMENSION(3,1), SAVE :: K ! Kalman gain matrix REAL(DbKi) :: R_m ! Measurement noise covariance [(rad/s)^2] REAL(DbKi) :: WE_Inp_Pitch @@ -256,75 +249,75 @@ SUBROUTINE WindSpeedEstimator(LocalVar, CntrPar, objInst, PerfData, DebugVar, Er 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 = WE_Inp_Speed - v_t = 0.0 - v_m = LocalVar%HorWindV - v_h = LocalVar%HorWindV - lambda = WE_Inp_Speed * CntrPar%WE_BladeRadius/v_h - 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/)) + LocalVar%WE%om_r = WE_Inp_Speed + LocalVar%WE%v_t = 0.0 + LocalVar%WE%v_m = LocalVar%HorWindV + LocalVar%WE%v_h = LocalVar%HorWindV + lambda = WE_Inp_Speed * CntrPar%WE_BladeRadius/LocalVar%WE%v_h + LocalVar%WE%xh = RESHAPE((/LocalVar%WE%om_r, LocalVar%WE%v_t, LocalVar%WE%v_m/),(/3,1/)) + LocalVar%WE%P = RESHAPE((/0.01, 0.0, 0.0, 0.0, 0.01, 0.0, 0.0, 0.0, 1.0/),(/3,3/)) + LocalVar%WE%K = RESHAPE((/0.0,0.0,0.0/),(/3,1/)) Cp_op = 0.25 ! initialize so debug output doesn't give ***** ELSE ! Find estimated operating Cp and system pole - A_op = interp1d(CntrPar%WE_FOPoles_v,CntrPar%WE_FOPoles,v_h,ErrVar) + A_op = interp1d(CntrPar%WE_FOPoles_v,CntrPar%WE_FOPoles,LocalVar%WE%v_h,ErrVar) ! TEST INTERP2D - lambda = max(WE_Inp_Speed, EPSILON(1.0_DbKi)) * CntrPar%WE_BladeRadius/v_h + lambda = max(WE_Inp_Speed, EPSILON(1.0_DbKi)) * CntrPar%WE_BladeRadius/LocalVar%WE%v_h Cp_op = interp2d(PerfData%Beta_vec,PerfData%TSR_vec,PerfData%Cp_mat, WE_Inp_Pitch*R2D, lambda , ErrVar) 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 * 1/om_r * 3.0 * Cp_op * v_h**2.0 - F(1,3) = 1.0/(2.0*CntrPar%WE_Jtot) * CntrPar%WE_RhoAir * PI *CntrPar%WE_BladeRadius**2.0 * 1/om_r * 3.0 * Cp_op * v_h**2.0 - F(2,2) = - PI * v_m/(2.0*L) - F(2,3) = - PI * v_t/(2.0*L) + F(1,2) = 1.0/(2.0*CntrPar%WE_Jtot) * CntrPar%WE_RhoAir * PI *CntrPar%WE_BladeRadius**2.0 * 1/LocalVar%WE%om_r * 3.0 * Cp_op * LocalVar%WE%v_h**2.0 + F(1,3) = 1.0/(2.0*CntrPar%WE_Jtot) * CntrPar%WE_RhoAir * PI *CntrPar%WE_BladeRadius**2.0 * 1/LocalVar%WE%om_r * 3.0 * Cp_op * LocalVar%WE%v_h**2.0 + F(2,2) = - PI * LocalVar%WE%v_m/(2.0*L) + F(2,3) = - PI * LocalVar%WE%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(2,2) =(PI * (LocalVar%WE%v_m**3.0) * (Ti**2.0)) / L Q(3,3) = (2.0**2.0)/600.0 ! Prediction update Tau_r = AeroDynTorque(WE_Inp_Speed, WE_Inp_Pitch, LocalVar, CntrPar, PerfData, ErrVar) - a = PI * v_m/(2.0*L) + a = PI * LocalVar%WE%v_m/(2.0*L) dxh(1,1) = 1.0/CntrPar%WE_Jtot * (Tau_r - CntrPar%WE_GearboxRatio * WE_Inp_Torque) - dxh(2,1) = -a*v_t + dxh(2,1) = -a*LocalVar%WE%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))) + LocalVar%WE%xh = LocalVar%WE%xh + LocalVar%DT * dxh ! state update + LocalVar%WE%P = LocalVar%WE%P + LocalVar%DT*(MATMUL(F,LocalVar%WE%P) + MATMUL(LocalVar%WE%P,TRANSPOSE(F)) + Q - MATMUL(LocalVar%WE%K * R_m, TRANSPOSE(LocalVar%WE%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*(WE_Inp_Speed - om_r) - P = MATMUL(identity(3) - MATMUL(K,H),P) + S = MATMUL(H,MATMUL(LocalVar%WE%P,TRANSPOSE(H))) + R_m ! NJA: (H*T*H') \approx 0 + LocalVar%WE%K = MATMUL(LocalVar%WE%P,TRANSPOSE(H))/S(1,1) + LocalVar%WE%xh = LocalVar%WE%xh + LocalVar%WE%K*(WE_Inp_Speed - LocalVar%WE%om_r) + LocalVar%WE%P = MATMUL(identity(3) - MATMUL(LocalVar%WE%K,H),LocalVar%WE%P) ! Wind Speed Estimate - om_r = max(xh(1,1), EPSILON(1.0_DbKi)) - v_t = xh(2,1) - v_m = xh(3,1) - v_h = v_t + v_m - LocalVar%WE_Vw = v_m + v_t - - IF (ieee_is_nan(v_h)) THEN - om_r = WE_Inp_Speed - v_t = 0.0 - v_m = LocalVar%HorWindV - v_h = LocalVar%HorWindV - LocalVar%WE_Vw = v_m + v_t + LocalVar%WE%om_r = max(LocalVar%WE%xh(1,1), EPSILON(1.0_DbKi)) + LocalVar%WE%v_t = LocalVar%WE%xh(2,1) + LocalVar%WE%v_m = LocalVar%WE%xh(3,1) + LocalVar%WE%v_h = LocalVar%WE%v_t + LocalVar%WE%v_m + LocalVar%WE_Vw = LocalVar%WE%v_m + LocalVar%WE%v_t + + IF (ieee_is_nan(LocalVar%WE%v_h)) THEN + LocalVar%WE%om_r = WE_Inp_Speed + LocalVar%WE%v_t = 0.0 + LocalVar%WE%v_m = LocalVar%HorWindV + LocalVar%WE%v_h = LocalVar%HorWindV + LocalVar%WE_Vw = LocalVar%WE%v_m + LocalVar%WE%v_t ENDIF ENDIF ! Debug Outputs DebugVar%WE_Cp = Cp_op - DebugVar%WE_Vm = v_m - DebugVar%WE_Vt = v_t + DebugVar%WE_Vm = LocalVar%WE%v_m + DebugVar%WE_Vt = LocalVar%WE%v_t DebugVar%WE_lambda = lambda ELSE ! Filter wind speed at hub height as directly passed from OpenFAST From ab4654564bb9ed059114d8770da0ebd51cb88fd2 Mon Sep 17 00:00:00 2001 From: Nikhar Abbas Date: Fri, 17 Dec 2021 10:37:06 -0700 Subject: [PATCH 005/218] Put restart flag in localvars --- ROSCO/src/ControllerBlocks.f90 | 6 +++--- ROSCO/src/Controllers.f90 | 32 +++++++++++++++---------------- ROSCO/src/Filters.f90 | 34 ++++++++++++++++----------------- ROSCO/src/ReadSetParameters.f90 | 6 ++++++ 4 files changed, 42 insertions(+), 36 deletions(-) diff --git a/ROSCO/src/ControllerBlocks.f90 b/ROSCO/src/ControllerBlocks.f90 index aca14ae0..04dc3ebb 100644 --- a/ROSCO/src/ControllerBlocks.f90 +++ b/ROSCO/src/ControllerBlocks.f90 @@ -321,7 +321,7 @@ SUBROUTINE WindSpeedEstimator(LocalVar, CntrPar, objInst, PerfData, DebugVar, Er DebugVar%WE_lambda = lambda ELSE ! Filter wind speed at hub height as directly passed from OpenFAST - LocalVar%WE_Vw = LPFilter(LocalVar%HorWindV, LocalVar%DT, CntrPar%F_WECornerFreq, LocalVar%iStatus, .FALSE., objInst%instLPF) + LocalVar%WE_Vw = LPFilter(LocalVar%HorWindV, LocalVar%DT, CntrPar%F_WECornerFreq, LocalVar%iStatus, LocalVar%restart, objInst%instLPF) ENDIF ! Add RoutineName to error message @@ -351,7 +351,7 @@ SUBROUTINE SetpointSmoother(LocalVar, CntrPar, objInst) DelOmega = ((LocalVar%PC_PitComT - LocalVar%PC_MinPit)/0.524) * CntrPar%SS_VSGain - ((CntrPar%VS_RtPwr - LocalVar%VS_LastGenPwr))/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) + LocalVar%SS_DelOmegaF = LPFilter(DelOmega, LocalVar%DT, CntrPar%F_SSCornerFreq, LocalVar%iStatus, LocalVar%restart, objInst%instLPF) ELSE LocalVar%SS_DelOmegaF = 0 ! No setpoint smoothing ENDIF @@ -404,7 +404,7 @@ REAL(DbKi) FUNCTION Shutdown(LocalVar, CntrPar, objInst) ! See if we should shutdown IF (.NOT. LocalVar%SD ) THEN ! Filter pitch signal - SD_BlPitchF = LPFilter(LocalVar%PC_PitComT, LocalVar%DT, CntrPar%SD_CornerFreq, LocalVar%iStatus, .FALSE., objInst%instLPF) + SD_BlPitchF = LPFilter(LocalVar%PC_PitComT, LocalVar%DT, CntrPar%SD_CornerFreq, LocalVar%iStatus, LocalVar%restart, objInst%instLPF) ! Go into shutdown if above max pit IF (SD_BlPitchF > CntrPar%SD_MaxPit) THEN diff --git a/ROSCO/src/Controllers.f90 b/ROSCO/src/Controllers.f90 index ac918868..7ceaa909 100644 --- a/ROSCO/src/Controllers.f90 +++ b/ROSCO/src/Controllers.f90 @@ -59,9 +59,9 @@ SUBROUTINE PitchControl(avrSWAP, CntrPar, LocalVar, objInst, DebugVar, ErrVar) ! 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_MaxPit, 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), LocalVar%restart, objInst%instPI) ELSE - LocalVar%PC_PitComT = PIController(LocalVar%PC_SpdErr, LocalVar%PC_KP, LocalVar%PC_KI, LocalVar%PC_MinPit, LocalVar%PC_MaxPit, LocalVar%DT, LocalVar%BlPitch(1), .FALSE., objInst%instPI) + LocalVar%PC_PitComT = PIController(LocalVar%PC_SpdErr, LocalVar%PC_KP, LocalVar%PC_KI, LocalVar%PC_MinPit, LocalVar%PC_MaxPit, LocalVar%DT, LocalVar%BlPitch(1), LocalVar%restart, objInst%instPI) END IF DebugVar%PC_PICommand = LocalVar%PC_PitComT ! Find individual pitch control contribution @@ -171,14 +171,14 @@ SUBROUTINE VariableSpeedControl(avrSWAP, CntrPar, LocalVar, objInst, ErrVar) END IF ! PI controller - LocalVar%GenTq = PIController(LocalVar%VS_SpdErr, CntrPar%VS_KP(1), CntrPar%VS_KI(1), CntrPar%VS_MinTq, LocalVar%VS_MaxTq, LocalVar%DT, LocalVar%VS_LastGenTrq, .FALSE., objInst%instPI) + LocalVar%GenTq = PIController(LocalVar%VS_SpdErr, CntrPar%VS_KP(1), CntrPar%VS_KI(1), CntrPar%VS_MinTq, LocalVar%VS_MaxTq, LocalVar%DT, LocalVar%VS_LastGenTrq, LocalVar%restart, objInst%instPI) LocalVar%GenTq = saturate(LocalVar%GenTq, CntrPar%VS_MinTq, LocalVar%VS_MaxTq) ! 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_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) + 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, LocalVar%restart, 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, LocalVar%restart, objInst%instPI) ! The action IF (LocalVar%VS_State == 1) THEN ! Region 1.5 @@ -315,8 +315,8 @@ SUBROUTINE IPC(CntrPar, LocalVar, objInst) ! High-pass filter the MBC yaw component and filter yaw alignment error, and compute the yaw-by-IPC contribution IF (CntrPar%Y_ControlMode == 2) THEN - Y_MErrF = SecLPFilter(LocalVar%Y_MErr, LocalVar%DT, CntrPar%Y_IPC_omegaLP, CntrPar%Y_IPC_zetaLP, LocalVar%iStatus, .FALSE., objInst%instSecLPF) - Y_MErrF_IPC = PIController(Y_MErrF, CntrPar%Y_IPC_KP(1), CntrPar%Y_IPC_KI(1), -CntrPar%Y_IPC_IntSat, CntrPar%Y_IPC_IntSat, LocalVar%DT, 0.0_DbKi, .FALSE., objInst%instPI) + Y_MErrF = SecLPFilter(LocalVar%Y_MErr, LocalVar%DT, CntrPar%Y_IPC_omegaLP, CntrPar%Y_IPC_zetaLP, LocalVar%iStatus, LocalVar%restart, objInst%instSecLPF) + Y_MErrF_IPC = PIController(Y_MErrF, CntrPar%Y_IPC_KP(1), CntrPar%Y_IPC_KI(1), -CntrPar%Y_IPC_IntSat, CntrPar%Y_IPC_IntSat, LocalVar%DT, 0.0_DbKi, LocalVar%restart, objInst%instPI) ELSE axisYawF_1P = axisYaw_1P Y_MErrF = 0.0 @@ -356,7 +356,7 @@ SUBROUTINE IPC(CntrPar, LocalVar, objInst) ! Optionally filter the resulting signal to induce a phase delay IF (CntrPar%IPC_CornerFreqAct > 0.0) THEN - PitComIPCF(K) = LPFilter(PitComIPC(K), LocalVar%DT, CntrPar%IPC_CornerFreqAct, LocalVar%iStatus, .FALSE., objInst%instLPF) + PitComIPCF(K) = LPFilter(PitComIPC(K), LocalVar%DT, CntrPar%IPC_CornerFreqAct, LocalVar%iStatus, LocalVar%restart, objInst%instLPF) ELSE PitComIPCF(K) = PitComIPC(K) END IF @@ -378,7 +378,7 @@ SUBROUTINE ForeAftDamping(CntrPar, LocalVar, objInst) TYPE(ObjectInstances), INTENT(INOUT) :: objInst ! Body - LocalVar%FA_AccHPFI = PIController(LocalVar%FA_AccHPF, 0.0_DbKi, CntrPar%FA_KI, -CntrPar%FA_IntSat, CntrPar%FA_IntSat, LocalVar%DT, 0.0_DbKi, .FALSE., objInst%instPI) + LocalVar%FA_AccHPFI = PIController(LocalVar%FA_AccHPF, 0.0_DbKi, CntrPar%FA_KI, -CntrPar%FA_IntSat, CntrPar%FA_IntSat, LocalVar%DT, 0.0_DbKi, LocalVar%restart, objInst%instPI) ! Store the fore-aft pitch contribution to LocalVar data type DO K = 1,LocalVar%NumBl @@ -403,8 +403,8 @@ REAL(DbKi) FUNCTION FloatingFeedback(LocalVar, CntrPar, objInst) REAL(DbKi) :: NacIMU_FA_vel ! Tower fore-aft pitching velocity [rad/s] ! Calculate floating contribution to pitch command - FA_vel = PIController(LocalVar%FA_AccF, 0.0_DbKi, 1.0_DbKi, -100.0_DbKi , 100.0_DbKi ,LocalVar%DT, 0.0_DbKi, .FALSE., objInst%instPI) ! NJA: should never reach saturation limits.... - NacIMU_FA_vel = PIController(LocalVar%NacIMU_FA_AccF, 0.0_DbKi, 1.0_DbKi, -100.0_DbKi , 100.0_DbKi ,LocalVar%DT, 0.0_DbKi, .FALSE., objInst%instPI) ! NJA: should never reach saturation limits.... + FA_vel = PIController(LocalVar%FA_AccF, 0.0_DbKi, 1.0_DbKi, -100.0_DbKi , 100.0_DbKi ,LocalVar%DT, 0.0_DbKi, LocalVar%restart, objInst%instPI) ! NJA: should never reach saturation limits.... + NacIMU_FA_vel = PIController(LocalVar%NacIMU_FA_AccF, 0.0_DbKi, 1.0_DbKi, -100.0_DbKi , 100.0_DbKi ,LocalVar%DT, 0.0_DbKi, LocalVar%restart, objInst%instPI) ! NJA: should never reach saturation limits.... if (CntrPar%Fl_Mode == 1) THEN FloatingFeedback = (0.0_DbKi - FA_vel) * CntrPar%Fl_Kp !* LocalVar%PC_KP/maxval(CntrPar%PC_GS_KP) ELSEIF (CntrPar%Fl_Mode == 2) THEN @@ -443,9 +443,9 @@ SUBROUTINE FlapControl(avrSWAP, CntrPar, LocalVar, objInst) LocalVar%Flp_Angle(2) = CntrPar%Flp_Angle LocalVar%Flp_Angle(3) = CntrPar%Flp_Angle ! Initialize filter - RootMOOP_F(1) = SecLPFilter(LocalVar%rootMOOP(1),LocalVar%DT, CntrPar%F_FlpCornerFreq(1), CntrPar%F_FlpCornerFreq(2), LocalVar%iStatus, .FALSE.,objInst%instSecLPF) - RootMOOP_F(2) = SecLPFilter(LocalVar%rootMOOP(2),LocalVar%DT, CntrPar%F_FlpCornerFreq(1), CntrPar%F_FlpCornerFreq(2), LocalVar%iStatus, .FALSE.,objInst%instSecLPF) - RootMOOP_F(3) = SecLPFilter(LocalVar%rootMOOP(3),LocalVar%DT, CntrPar%F_FlpCornerFreq(1), CntrPar%F_FlpCornerFreq(2), LocalVar%iStatus, .FALSE.,objInst%instSecLPF) + RootMOOP_F(1) = SecLPFilter(LocalVar%rootMOOP(1),LocalVar%DT, CntrPar%F_FlpCornerFreq(1), CntrPar%F_FlpCornerFreq(2), LocalVar%iStatus, LocalVar%restart,objInst%instSecLPF) + RootMOOP_F(2) = SecLPFilter(LocalVar%rootMOOP(2),LocalVar%DT, CntrPar%F_FlpCornerFreq(1), CntrPar%F_FlpCornerFreq(2), LocalVar%iStatus, LocalVar%restart,objInst%instSecLPF) + RootMOOP_F(3) = SecLPFilter(LocalVar%rootMOOP(3),LocalVar%DT, CntrPar%F_FlpCornerFreq(1), CntrPar%F_FlpCornerFreq(2), LocalVar%iStatus, LocalVar%restart,objInst%instSecLPF) ! Initialize controller IF (CntrPar%Flp_Mode == 2) THEN LocalVar%Flp_Angle(K) = PIIController(RootMyb_VelErr(K), 0 - LocalVar%Flp_Angle(K), CntrPar%Flp_Kp, CntrPar%Flp_Ki, 0.05, -CntrPar%Flp_MaxPit , CntrPar%Flp_MaxPit , LocalVar%DT, 0.0, .TRUE., objInst%instPI) @@ -461,14 +461,14 @@ SUBROUTINE FlapControl(avrSWAP, CntrPar, LocalVar, objInst) ELSEIF (CntrPar%Flp_Mode == 2) THEN DO K = 1,LocalVar%NumBl ! LPF Blade root bending moment - RootMOOP_F(K) = SecLPFilter(LocalVar%rootMOOP(K),LocalVar%DT, CntrPar%F_FlpCornerFreq(1), CntrPar%F_FlpCornerFreq(2), LocalVar%iStatus, .FALSE.,objInst%instSecLPF) + RootMOOP_F(K) = SecLPFilter(LocalVar%rootMOOP(K),LocalVar%DT, CntrPar%F_FlpCornerFreq(1), CntrPar%F_FlpCornerFreq(2), LocalVar%iStatus, LocalVar%restart,objInst%instSecLPF) ! Find derivative and derivative error of blade root bending moment RootMyb_Vel(K) = (RootMOOP_F(K) - RootMyb_Last(K))/LocalVar%DT RootMyb_VelErr(K) = 0 - RootMyb_Vel(K) ! Find flap angle command - includes an integral term to encourage zero flap angle - LocalVar%Flp_Angle(K) = PIIController(RootMyb_VelErr(K), 0 - LocalVar%Flp_Angle(K), CntrPar%Flp_Kp, CntrPar%Flp_Ki, REAL(0.05,DbKi), -CntrPar%Flp_MaxPit , CntrPar%Flp_MaxPit , LocalVar%DT, 0.0, .FALSE., objInst%instPI) + LocalVar%Flp_Angle(K) = PIIController(RootMyb_VelErr(K), 0 - LocalVar%Flp_Angle(K), CntrPar%Flp_Kp, CntrPar%Flp_Ki, REAL(0.05,DbKi), -CntrPar%Flp_MaxPit , CntrPar%Flp_MaxPit , LocalVar%DT, 0.0, LocalVar%restart, objInst%instPI) ! Saturation Limits LocalVar%Flp_Angle(K) = saturate(LocalVar%Flp_Angle(K), -CntrPar%Flp_MaxPit, CntrPar%Flp_MaxPit) diff --git a/ROSCO/src/Filters.f90 b/ROSCO/src/Filters.f90 index 7cfc43e5..0589c7b5 100644 --- a/ROSCO/src/Filters.f90 +++ b/ROSCO/src/Filters.f90 @@ -267,11 +267,11 @@ SUBROUTINE PreFilterMeasuredSignals(CntrPar, LocalVar, objInst, ErrVar) ! Filter the HSS (generator) and LSS (rotor) speed measurement: ! Apply Low-Pass Filter (choice between first- and second-order low-pass filter) IF (CntrPar%F_LPFType == 1) THEN - LocalVar%GenSpeedF = LPFilter(LocalVar%GenSpeed, LocalVar%DT, CntrPar%F_LPFCornerFreq, LocalVar%iStatus, .FALSE., objInst%instLPF) - LocalVar%RotSpeedF = LPFilter(LocalVar%RotSpeed, LocalVar%DT, CntrPar%F_LPFCornerFreq, LocalVar%iStatus, .FALSE., objInst%instLPF) + LocalVar%GenSpeedF = LPFilter(LocalVar%GenSpeed, LocalVar%DT, CntrPar%F_LPFCornerFreq, LocalVar%iStatus, LocalVar%restart, objInst%instLPF) + LocalVar%RotSpeedF = LPFilter(LocalVar%RotSpeed, LocalVar%DT, CntrPar%F_LPFCornerFreq, LocalVar%iStatus, LocalVar%restart, objInst%instLPF) ELSEIF (CntrPar%F_LPFType == 2) THEN - LocalVar%GenSpeedF = SecLPFilter(LocalVar%GenSpeed, LocalVar%DT, CntrPar%F_LPFCornerFreq, CntrPar%F_LPFDamping, LocalVar%iStatus, .FALSE., objInst%instSecLPF) ! Second-order low-pass filter on generator speed - LocalVar%RotSpeedF = SecLPFilter(LocalVar%RotSpeed, LocalVar%DT, CntrPar%F_LPFCornerFreq, CntrPar%F_LPFDamping, LocalVar%iStatus, .FALSE., objInst%instSecLPF) ! Second-order low-pass filter on generator speed + LocalVar%GenSpeedF = SecLPFilter(LocalVar%GenSpeed, LocalVar%DT, CntrPar%F_LPFCornerFreq, CntrPar%F_LPFDamping, LocalVar%iStatus, LocalVar%restart, objInst%instSecLPF) ! Second-order low-pass filter on generator speed + LocalVar%RotSpeedF = SecLPFilter(LocalVar%RotSpeed, LocalVar%DT, CntrPar%F_LPFCornerFreq, CntrPar%F_LPFDamping, LocalVar%iStatus, LocalVar%restart, objInst%instSecLPF) ! Second-order low-pass filter on generator speed ELSE IF (LocalVar%iStatus ==0) THEN print *, 'No generator speed low-pass filter is selected in ROSCO (F_LPFType=0)' @@ -281,37 +281,37 @@ SUBROUTINE PreFilterMeasuredSignals(CntrPar, LocalVar, objInst, ErrVar) ENDIF ! Apply Notch Fitler IF (CntrPar%F_NotchType == 1 .OR. CntrPar%F_NotchType == 3) THEN - LocalVar%GenSpeedF = NotchFilter(LocalVar%GenSpeedF, LocalVar%DT, CntrPar%F_NotchCornerFreq, CntrPar%F_NotchBetaNumDen(1), CntrPar%F_NotchBetaNumDen(2), LocalVar%iStatus, .FALSE., objInst%instNotch) + LocalVar%GenSpeedF = NotchFilter(LocalVar%GenSpeedF, LocalVar%DT, CntrPar%F_NotchCornerFreq, CntrPar%F_NotchBetaNumDen(1), CntrPar%F_NotchBetaNumDen(2), LocalVar%iStatus, LocalVar%restart, objInst%instNotch) ENDIF ! Filtering the tower fore-aft acceleration signal IF (CntrPar%Fl_Mode > 0) THEN ! Force to start at 0 IF (LocalVar%iStatus == 0) THEN - LocalVar%NacIMU_FA_AccF = SecLPFilter(REAL(0.,DbKi), LocalVar%DT, CntrPar%F_FlCornerFreq(1), CntrPar%F_FlCornerFreq(2), LocalVar%iStatus, .FALSE., objInst%instSecLPF) ! Fixed Damping - LocalVar%FA_AccF = SecLPFilter(REAL(0.,DbKi), LocalVar%DT, CntrPar%F_FlCornerFreq(1), CntrPar%F_FlCornerFreq(2), LocalVar%iStatus, .FALSE., objInst%instSecLPF) ! Fixed Damping + LocalVar%NacIMU_FA_AccF = SecLPFilter(REAL(0.,DbKi), LocalVar%DT, CntrPar%F_FlCornerFreq(1), CntrPar%F_FlCornerFreq(2), LocalVar%iStatus, LocalVar%restart, objInst%instSecLPF) ! Fixed Damping + LocalVar%FA_AccF = SecLPFilter(REAL(0.,DbKi), LocalVar%DT, CntrPar%F_FlCornerFreq(1), CntrPar%F_FlCornerFreq(2), LocalVar%iStatus, LocalVar%restart, objInst%instSecLPF) ! Fixed Damping ELSE - LocalVar%NacIMU_FA_AccF = SecLPFilter(LocalVar%NacIMU_FA_Acc, LocalVar%DT, CntrPar%F_FlCornerFreq(1), CntrPar%F_FlCornerFreq(2), LocalVar%iStatus, .FALSE., objInst%instSecLPF) ! Fixed Damping - LocalVar%FA_AccF = SecLPFilter(LocalVar%FA_Acc, LocalVar%DT, CntrPar%F_FlCornerFreq(1), CntrPar%F_FlCornerFreq(2), LocalVar%iStatus, .FALSE., objInst%instSecLPF) ! Fixed Damping + LocalVar%NacIMU_FA_AccF = SecLPFilter(LocalVar%NacIMU_FA_Acc, LocalVar%DT, CntrPar%F_FlCornerFreq(1), CntrPar%F_FlCornerFreq(2), LocalVar%iStatus, LocalVar%restart, objInst%instSecLPF) ! Fixed Damping + LocalVar%FA_AccF = SecLPFilter(LocalVar%FA_Acc, LocalVar%DT, CntrPar%F_FlCornerFreq(1), CntrPar%F_FlCornerFreq(2), LocalVar%iStatus, LocalVar%restart, objInst%instSecLPF) ! Fixed Damping ENDIF - LocalVar%NacIMU_FA_AccF = HPFilter(LocalVar%NacIMU_FA_AccF, LocalVar%DT, CntrPar%F_FlHighPassFreq, LocalVar%iStatus, .FALSE., objInst%instHPF) - LocalVar%FA_AccF = HPFilter(LocalVar%FA_AccF, LocalVar%DT, CntrPar%F_FlHighPassFreq, LocalVar%iStatus, .FALSE., objInst%instHPF) + LocalVar%NacIMU_FA_AccF = HPFilter(LocalVar%NacIMU_FA_AccF, LocalVar%DT, CntrPar%F_FlHighPassFreq, LocalVar%iStatus, LocalVar%restart, objInst%instHPF) + LocalVar%FA_AccF = HPFilter(LocalVar%FA_AccF, LocalVar%DT, CntrPar%F_FlHighPassFreq, LocalVar%iStatus, LocalVar%restart, objInst%instHPF) IF (CntrPar%F_NotchType >= 2) THEN - LocalVar%NACIMU_FA_AccF = NotchFilter(LocalVar%NacIMU_FA_AccF, LocalVar%DT, CntrPar%F_NotchCornerFreq, CntrPar%F_NotchBetaNumDen(1), CntrPar%F_NotchBetaNumDen(2), LocalVar%iStatus, .FALSE., objInst%instNotch) ! Fixed Damping - LocalVar%FA_AccF = NotchFilter(LocalVar%FA_AccF, LocalVar%DT, CntrPar%F_NotchCornerFreq, CntrPar%F_NotchBetaNumDen(1), CntrPar%F_NotchBetaNumDen(2), LocalVar%iStatus, .FALSE., objInst%instNotch) ! Fixed Damping + LocalVar%NACIMU_FA_AccF = NotchFilter(LocalVar%NacIMU_FA_AccF, LocalVar%DT, CntrPar%F_NotchCornerFreq, CntrPar%F_NotchBetaNumDen(1), CntrPar%F_NotchBetaNumDen(2), LocalVar%iStatus, LocalVar%restart, objInst%instNotch) ! Fixed Damping + LocalVar%FA_AccF = NotchFilter(LocalVar%FA_AccF, LocalVar%DT, CntrPar%F_NotchCornerFreq, CntrPar%F_NotchBetaNumDen(1), CntrPar%F_NotchBetaNumDen(2), LocalVar%iStatus, LocalVar%restart, objInst%instNotch) ! Fixed Damping ENDIF ENDIF - LocalVar%FA_AccHPF = HPFilter(LocalVar%FA_Acc, LocalVar%DT, CntrPar%FA_HPFCornerFreq, LocalVar%iStatus, .FALSE., objInst%instHPF) + LocalVar%FA_AccHPF = HPFilter(LocalVar%FA_Acc, LocalVar%DT, CntrPar%FA_HPFCornerFreq, LocalVar%iStatus, LocalVar%restart, objInst%instHPF) ! Filter Wind Speed Estimator Signal - LocalVar%We_Vw_F = LPFilter(LocalVar%WE_Vw, LocalVar%DT, CntrPar%F_WECornerFreq, LocalVar%iStatus,.FALSE.,objInst%instLPF) ! 30 second time constant + LocalVar%We_Vw_F = LPFilter(LocalVar%WE_Vw, LocalVar%DT, CntrPar%F_WECornerFreq, LocalVar%iStatus,LocalVar%restart,objInst%instLPF) ! 30 second time constant ! Control commands (used by WSE, mostly) - LocalVar%VS_LastGenTrqF = SecLPFilter(LocalVar%VS_LastGenTrq, LocalVar%DT, CntrPar%F_LPFCornerFreq, 0.7_DbKi, LocalVar%iStatus, .FALSE., objInst%instSecLPF) - LocalVar%PC_PitComTF = SecLPFilter(LocalVar%PC_PitComT, LocalVar%DT, CntrPar%F_LPFCornerFreq*0.25, 0.7_DbKi, LocalVar%iStatus, .FALSE., objInst%instSecLPF) + LocalVar%VS_LastGenTrqF = SecLPFilter(LocalVar%VS_LastGenTrq, LocalVar%DT, CntrPar%F_LPFCornerFreq, 0.7_DbKi, LocalVar%iStatus, LocalVar%restart, objInst%instSecLPF) + LocalVar%PC_PitComTF = SecLPFilter(LocalVar%PC_PitComT, LocalVar%DT, CntrPar%F_LPFCornerFreq*0.25, 0.7_DbKi, LocalVar%iStatus, LocalVar%restart, objInst%instSecLPF) END SUBROUTINE PreFilterMeasuredSignals END MODULE Filters diff --git a/ROSCO/src/ReadSetParameters.f90 b/ROSCO/src/ReadSetParameters.f90 index 846bfc8d..1b03967a 100644 --- a/ROSCO/src/ReadSetParameters.f90 +++ b/ROSCO/src/ReadSetParameters.f90 @@ -77,6 +77,12 @@ SUBROUTINE ReadAvrSWAP(avrSWAP, LocalVar) LocalVar%BlPitch(3) = LocalVar%PitCom(3) ENDIF + IF (LocalVar%iStatus == 0) THEN + LocalVar%restart = .True. + ELSE + LocalVar%restart = .False. + ENDIF + END SUBROUTINE ReadAvrSWAP ! ----------------------------------------------------------------------------------- ! Define parameters for control actions From 9d675478704b9d7318910621f1a16014bf9958a1 Mon Sep 17 00:00:00 2001 From: Nikhar Abbas Date: Fri, 17 Dec 2021 10:48:00 -0700 Subject: [PATCH 006/218] Use saved filter params from LocalVar --- ROSCO/src/ControllerBlocks.f90 | 6 +- ROSCO/src/Controllers.f90 | 20 +-- ROSCO/src/Filters.f90 | 288 ++++++++++++++------------------- 3 files changed, 136 insertions(+), 178 deletions(-) diff --git a/ROSCO/src/ControllerBlocks.f90 b/ROSCO/src/ControllerBlocks.f90 index 04dc3ebb..b8031706 100644 --- a/ROSCO/src/ControllerBlocks.f90 +++ b/ROSCO/src/ControllerBlocks.f90 @@ -321,7 +321,7 @@ SUBROUTINE WindSpeedEstimator(LocalVar, CntrPar, objInst, PerfData, DebugVar, Er DebugVar%WE_lambda = lambda ELSE ! Filter wind speed at hub height as directly passed from OpenFAST - LocalVar%WE_Vw = LPFilter(LocalVar%HorWindV, LocalVar%DT, CntrPar%F_WECornerFreq, LocalVar%iStatus, LocalVar%restart, objInst%instLPF) + LocalVar%WE_Vw = LPFilter(LocalVar%HorWindV, LocalVar%DT, CntrPar%F_WECornerFreq, LocalVar%FP, LocalVar%iStatus, LocalVar%restart, objInst%instLPF) ENDIF ! Add RoutineName to error message @@ -351,7 +351,7 @@ SUBROUTINE SetpointSmoother(LocalVar, CntrPar, objInst) DelOmega = ((LocalVar%PC_PitComT - LocalVar%PC_MinPit)/0.524) * CntrPar%SS_VSGain - ((CntrPar%VS_RtPwr - LocalVar%VS_LastGenPwr))/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, LocalVar%restart, objInst%instLPF) + LocalVar%SS_DelOmegaF = LPFilter(DelOmega, LocalVar%DT, CntrPar%F_SSCornerFreq, LocalVar%FP, LocalVar%iStatus, LocalVar%restart, objInst%instLPF) ELSE LocalVar%SS_DelOmegaF = 0 ! No setpoint smoothing ENDIF @@ -404,7 +404,7 @@ REAL(DbKi) FUNCTION Shutdown(LocalVar, CntrPar, objInst) ! See if we should shutdown IF (.NOT. LocalVar%SD ) THEN ! Filter pitch signal - SD_BlPitchF = LPFilter(LocalVar%PC_PitComT, LocalVar%DT, CntrPar%SD_CornerFreq, LocalVar%iStatus, LocalVar%restart, objInst%instLPF) + SD_BlPitchF = LPFilter(LocalVar%PC_PitComT, LocalVar%DT, CntrPar%SD_CornerFreq, LocalVar%FP, LocalVar%iStatus, LocalVar%restart, objInst%instLPF) ! Go into shutdown if above max pit IF (SD_BlPitchF > CntrPar%SD_MaxPit) THEN diff --git a/ROSCO/src/Controllers.f90 b/ROSCO/src/Controllers.f90 index 7ceaa909..73b0f951 100644 --- a/ROSCO/src/Controllers.f90 +++ b/ROSCO/src/Controllers.f90 @@ -248,8 +248,8 @@ SUBROUTINE YawRateControl(avrSWAP, CntrPar, LocalVar, objInst, ErrVar) IF (LocalVar%Time >= LocalVar%Y_YawEndT) THEN ! Check if the turbine is currently yawing avrSWAP(48) = 0.0 ! Set yaw rate to zero - LocalVar%Y_ErrLPFFast = LPFilter(LocalVar%Y_MErr, LocalVar%DT, CntrPar%Y_omegaLPFast, LocalVar%iStatus, .FALSE., objInst%instLPF) ! Fast low pass filtered yaw error with a frequency of 1 - LocalVar%Y_ErrLPFSlow = LPFilter(LocalVar%Y_MErr, LocalVar%DT, CntrPar%Y_omegaLPSlow, LocalVar%iStatus, .FALSE., objInst%instLPF) ! Slow low pass filtered yaw error with a frequency of 1/60 + LocalVar%Y_ErrLPFFast = LPFilter(LocalVar%Y_MErr, LocalVar%DT, CntrPar%Y_omegaLPFast, LocalVar%FP, LocalVar%iStatus, .FALSE., objInst%instLPF) ! Fast low pass filtered yaw error with a frequency of 1 + LocalVar%Y_ErrLPFSlow = LPFilter(LocalVar%Y_MErr, LocalVar%DT, CntrPar%Y_omegaLPSlow, LocalVar%FP, LocalVar%iStatus, .FALSE., objInst%instLPF) ! Slow low pass filtered yaw error with a frequency of 1/60 LocalVar%Y_AccErr = LocalVar%Y_AccErr + LocalVar%DT*SIGN(LocalVar%Y_ErrLPFFast**2, LocalVar%Y_ErrLPFFast) ! Integral of the fast low pass filtered yaw error @@ -258,8 +258,8 @@ SUBROUTINE YawRateControl(avrSWAP, CntrPar, LocalVar, objInst, ErrVar) END IF ELSE avrSWAP(48) = SIGN(CntrPar%Y_Rate, LocalVar%Y_MErr) ! Set yaw rate to predefined yaw rate, the sign of the error is copied to the rate - LocalVar%Y_ErrLPFFast = LPFilter(LocalVar%Y_MErr, LocalVar%DT, CntrPar%Y_omegaLPFast, LocalVar%iStatus, .TRUE., objInst%instLPF) ! Fast low pass filtered yaw error with a frequency of 1 - LocalVar%Y_ErrLPFSlow = LPFilter(LocalVar%Y_MErr, LocalVar%DT, CntrPar%Y_omegaLPSlow, LocalVar%iStatus, .TRUE., objInst%instLPF) ! Slow low pass filtered yaw error with a frequency of 1/60 + LocalVar%Y_ErrLPFFast = LPFilter(LocalVar%Y_MErr, LocalVar%DT, CntrPar%Y_omegaLPFast, LocalVar%FP, LocalVar%iStatus, .TRUE., objInst%instLPF) ! Fast low pass filtered yaw error with a frequency of 1 + LocalVar%Y_ErrLPFSlow = LPFilter(LocalVar%Y_MErr, LocalVar%DT, CntrPar%Y_omegaLPSlow, LocalVar%FP, LocalVar%iStatus, .TRUE., objInst%instLPF) ! Slow low pass filtered yaw error with a frequency of 1/60 LocalVar%Y_AccErr = 0.0 ! " END IF END IF @@ -315,7 +315,7 @@ SUBROUTINE IPC(CntrPar, LocalVar, objInst) ! High-pass filter the MBC yaw component and filter yaw alignment error, and compute the yaw-by-IPC contribution IF (CntrPar%Y_ControlMode == 2) THEN - Y_MErrF = SecLPFilter(LocalVar%Y_MErr, LocalVar%DT, CntrPar%Y_IPC_omegaLP, CntrPar%Y_IPC_zetaLP, LocalVar%iStatus, LocalVar%restart, objInst%instSecLPF) + Y_MErrF = SecLPFilter(LocalVar%Y_MErr, LocalVar%DT, CntrPar%Y_IPC_omegaLP, CntrPar%Y_IPC_zetaLP, LocalVar%FP, LocalVar%iStatus, LocalVar%restart, objInst%instSecLPF) Y_MErrF_IPC = PIController(Y_MErrF, CntrPar%Y_IPC_KP(1), CntrPar%Y_IPC_KI(1), -CntrPar%Y_IPC_IntSat, CntrPar%Y_IPC_IntSat, LocalVar%DT, 0.0_DbKi, LocalVar%restart, objInst%instPI) ELSE axisYawF_1P = axisYaw_1P @@ -356,7 +356,7 @@ SUBROUTINE IPC(CntrPar, LocalVar, objInst) ! Optionally filter the resulting signal to induce a phase delay IF (CntrPar%IPC_CornerFreqAct > 0.0) THEN - PitComIPCF(K) = LPFilter(PitComIPC(K), LocalVar%DT, CntrPar%IPC_CornerFreqAct, LocalVar%iStatus, LocalVar%restart, objInst%instLPF) + PitComIPCF(K) = LPFilter(PitComIPC(K), LocalVar%DT, CntrPar%IPC_CornerFreqAct, LocalVar%FP, LocalVar%iStatus, LocalVar%restart, objInst%instLPF) ELSE PitComIPCF(K) = PitComIPC(K) END IF @@ -443,9 +443,9 @@ SUBROUTINE FlapControl(avrSWAP, CntrPar, LocalVar, objInst) LocalVar%Flp_Angle(2) = CntrPar%Flp_Angle LocalVar%Flp_Angle(3) = CntrPar%Flp_Angle ! Initialize filter - RootMOOP_F(1) = SecLPFilter(LocalVar%rootMOOP(1),LocalVar%DT, CntrPar%F_FlpCornerFreq(1), CntrPar%F_FlpCornerFreq(2), LocalVar%iStatus, LocalVar%restart,objInst%instSecLPF) - RootMOOP_F(2) = SecLPFilter(LocalVar%rootMOOP(2),LocalVar%DT, CntrPar%F_FlpCornerFreq(1), CntrPar%F_FlpCornerFreq(2), LocalVar%iStatus, LocalVar%restart,objInst%instSecLPF) - RootMOOP_F(3) = SecLPFilter(LocalVar%rootMOOP(3),LocalVar%DT, CntrPar%F_FlpCornerFreq(1), CntrPar%F_FlpCornerFreq(2), LocalVar%iStatus, LocalVar%restart,objInst%instSecLPF) + RootMOOP_F(1) = SecLPFilter(LocalVar%rootMOOP(1),LocalVar%DT, CntrPar%F_FlpCornerFreq(1), CntrPar%F_FlpCornerFreq(2), LocalVar%FP, LocalVar%iStatus, LocalVar%restart,objInst%instSecLPF) + RootMOOP_F(2) = SecLPFilter(LocalVar%rootMOOP(2),LocalVar%DT, CntrPar%F_FlpCornerFreq(1), CntrPar%F_FlpCornerFreq(2), LocalVar%FP, LocalVar%iStatus, LocalVar%restart,objInst%instSecLPF) + RootMOOP_F(3) = SecLPFilter(LocalVar%rootMOOP(3),LocalVar%DT, CntrPar%F_FlpCornerFreq(1), CntrPar%F_FlpCornerFreq(2), LocalVar%FP, LocalVar%iStatus, LocalVar%restart,objInst%instSecLPF) ! Initialize controller IF (CntrPar%Flp_Mode == 2) THEN LocalVar%Flp_Angle(K) = PIIController(RootMyb_VelErr(K), 0 - LocalVar%Flp_Angle(K), CntrPar%Flp_Kp, CntrPar%Flp_Ki, 0.05, -CntrPar%Flp_MaxPit , CntrPar%Flp_MaxPit , LocalVar%DT, 0.0, .TRUE., objInst%instPI) @@ -461,7 +461,7 @@ SUBROUTINE FlapControl(avrSWAP, CntrPar, LocalVar, objInst) ELSEIF (CntrPar%Flp_Mode == 2) THEN DO K = 1,LocalVar%NumBl ! LPF Blade root bending moment - RootMOOP_F(K) = SecLPFilter(LocalVar%rootMOOP(K),LocalVar%DT, CntrPar%F_FlpCornerFreq(1), CntrPar%F_FlpCornerFreq(2), LocalVar%iStatus, LocalVar%restart,objInst%instSecLPF) + RootMOOP_F(K) = SecLPFilter(LocalVar%rootMOOP(K),LocalVar%DT, CntrPar%F_FlpCornerFreq(1), CntrPar%F_FlpCornerFreq(2), LocalVar%FP, LocalVar%iStatus, LocalVar%restart,objInst%instSecLPF) ! Find derivative and derivative error of blade root bending moment RootMyb_Vel(K) = (RootMOOP_F(K) - RootMyb_Last(K))/LocalVar%DT diff --git a/ROSCO/src/Filters.f90 b/ROSCO/src/Filters.f90 index 0589c7b5..1987906f 100644 --- a/ROSCO/src/Filters.f90 +++ b/ROSCO/src/Filters.f90 @@ -26,225 +26,195 @@ MODULE Filters CONTAINS !------------------------------------------------------------------------------------------------------------------------------- - REAL(DbKi) FUNCTION LPFilter(InputSignal, DT, CornerFreq, iStatus, reset, inst) + REAL FUNCTION LPFilter(InputSignal, DT, CornerFreq, FP, iStatus, reset, inst) ! Discrete time Low-Pass Filter of the form: ! Continuous Time Form: H(s) = CornerFreq/(1 + CornerFreq) ! Discrete Time Form: H(z) = (b1z + b0) / (a1*z + a0) ! - REAL(DbKi), INTENT(IN) :: InputSignal - REAL(DbKi), INTENT(IN) :: DT ! time step [s] - REAL(DbKi), INTENT(IN) :: CornerFreq ! corner frequency [rad/s] - INTEGER(IntKi), 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(IntKi), 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. + USE ROSCO_Types, ONLY : FilterParameters + TYPE(FilterParameters), INTENT(INOUT) :: FP + + REAL(8), INTENT(IN) :: InputSignal + REAL(8), INTENT(IN) :: DT ! time step [s] + REAL(8), INTENT(IN) :: CornerFreq ! corner frequency [rad/s] + INTEGER(4), 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(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 - REAL(DbKi), DIMENSION(99), SAVE :: a1 ! Denominator coefficient 1 - REAL(DbKi), DIMENSION(99), SAVE :: a0 ! Denominator coefficient 0 - REAL(DbKi), DIMENSION(99), SAVE :: b1 ! Numerator coefficient 1 - REAL(DbKi), DIMENSION(99), SAVE :: b0 ! Numerator coefficient 0 - - REAL(DbKi), DIMENSION(99), SAVE :: InputSignalLast ! Input signal the last time this filter was called. Supports 99 separate instances. - REAL(DbKi), DIMENSION(99), SAVE :: OutputSignalLast ! Output signal the last time this filter was called. Supports 99 separate instances. - ! Initialization IF ((iStatus == 0) .OR. reset) THEN - OutputSignalLast(inst) = InputSignal - InputSignalLast(inst) = InputSignal - a1(inst) = 2 + CornerFreq*DT - a0(inst) = CornerFreq*DT - 2 - b1(inst) = CornerFreq*DT - b0(inst) = CornerFreq*DT + FP%lpf1_OutputSignalLast(inst) = InputSignal + FP%lpf1_InputSignalLast(inst) = InputSignal + FP%lpf1_a1(inst) = 2 + CornerFreq*DT + FP%lpf1_a0(inst) = CornerFreq*DT - 2 + FP%lpf1_b1(inst) = CornerFreq*DT + FP%lpf1_b0(inst) = CornerFreq*DT ENDIF ! Define coefficients ! Filter - LPFilter = 1.0/a1(inst) * (-a0(inst)*OutputSignalLast(inst) + b1(inst)*InputSignal + b0(inst)*InputSignalLast(inst)) + LPFilter = 1.0/FP%lpf1_a1(inst) * (-FP%lpf1_a0(inst)*FP%lpf1_OutputSignalLast(inst) + FP%lpf1_b1(inst)*InputSignal + FP%lpf1_b0(inst)*FP%lpf1_InputSignalLast(inst)) ! Save signals for next time step - InputSignalLast(inst) = InputSignal - OutputSignalLast(inst) = LPFilter + FP%lpf1_InputSignalLast(inst) = InputSignal + FP%lpf1_OutputSignalLast(inst) = LPFilter inst = inst + 1 END FUNCTION LPFilter !------------------------------------------------------------------------------------------------------------------------------- - REAL(DbKi) FUNCTION SecLPFilter(InputSignal, DT, CornerFreq, Damp, iStatus, reset, inst) + REAL FUNCTION SecLPFilter(InputSignal, DT, CornerFreq, Damp, FP, iStatus, reset, inst) ! Discrete time Low-Pass Filter of the form: ! Continuous Time Form: H(s) = CornerFreq^2/(s^2 + 2*CornerFreq*Damp*s + CornerFreq^2) ! Discrete Time From: H(z) = (b2*z^2 + b1*z + b0) / (a2*z^2 + a1*z + a0) - REAL(DbKi), INTENT(IN) :: InputSignal - REAL(DbKi), INTENT(IN) :: DT ! time step [s] - REAL(DbKi), INTENT(IN) :: CornerFreq ! corner frequency [rad/s] - REAL(DbKi), INTENT(IN) :: Damp ! Dampening constant - INTEGER(IntKi), 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(IntKi), 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. + USE ROSCO_Types, ONLY : FilterParameters + TYPE(FilterParameters), INTENT(INOUT) :: FP + REAL(8), INTENT(IN) :: InputSignal + REAL(8), INTENT(IN) :: DT ! time step [s] + REAL(8), INTENT(IN) :: CornerFreq ! corner frequency [rad/s] + REAL(8), INTENT(IN) :: Damp ! Dampening constant + INTEGER(4), 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(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 - REAL(DbKi), DIMENSION(99), SAVE :: a2 ! Denominator coefficient 2 - REAL(DbKi), DIMENSION(99), SAVE :: a1 ! Denominator coefficient 1 - REAL(DbKi), DIMENSION(99), SAVE :: a0 ! Denominator coefficient 0 - REAL(DbKi), DIMENSION(99), SAVE :: b2 ! Numerator coefficient 2 - REAL(DbKi), DIMENSION(99), SAVE :: b1 ! Numerator coefficient 1 - REAL(DbKi), DIMENSION(99), SAVE :: b0 ! Numerator coefficient 0 - REAL(DbKi), DIMENSION(99), SAVE :: InputSignalLast1 ! Input signal the last time this filter was called. Supports 99 separate instances. - REAL(DbKi), DIMENSION(99), SAVE :: InputSignalLast2 ! Input signal the next to last time this filter was called. Supports 99 separate instances. - REAL(DbKi), DIMENSION(99), SAVE :: OutputSignalLast1 ! Output signal the last time this filter was called. Supports 99 separate instances. - REAL(DbKi), DIMENSION(99), SAVE :: OutputSignalLast2 ! Output signal the next to last time this filter was called. Supports 99 separate instances. - ! Initialization IF ((iStatus == 0) .OR. reset ) THEN - OutputSignalLast1(inst) = InputSignal - OutputSignalLast2(inst) = InputSignal - InputSignalLast1(inst) = InputSignal - InputSignalLast2(inst) = InputSignal + FP%lpf2_OutputSignalLast1(inst) = InputSignal + FP%lpf2_OutputSignalLast2(inst) = InputSignal + FP%lpf2_InputSignalLast1(inst) = InputSignal + FP%lpf2_InputSignalLast2(inst) = InputSignal ! Coefficients - a2(inst) = DT**2.0*CornerFreq**2.0 + 4.0 + 4.0*Damp*CornerFreq*DT - a1(inst) = 2.0*DT**2.0*CornerFreq**2.0 - 8.0 - a0(inst) = DT**2.0*CornerFreq**2.0 + 4.0 - 4.0*Damp*CornerFreq*DT - b2(inst) = DT**2.0*CornerFreq**2.0 - b1(inst) = 2.0*DT**2.0*CornerFreq**2.0 - b0(inst) = DT**2.0*CornerFreq**2.0 + FP%lpf2_a2(inst) = DT**2.0*CornerFreq**2.0 + 4.0 + 4.0*Damp*CornerFreq*DT + FP%lpf2_a1(inst) = 2.0*DT**2.0*CornerFreq**2.0 - 8.0 + FP%lpf2_a0(inst) = DT**2.0*CornerFreq**2.0 + 4.0 - 4.0*Damp*CornerFreq*DT + FP%lpf2_b2(inst) = DT**2.0*CornerFreq**2.0 + FP%lpf2_b1(inst) = 2.0*DT**2.0*CornerFreq**2.0 + FP%lpf2_b0(inst) = DT**2.0*CornerFreq**2.0 ENDIF ! Filter - SecLPFilter = 1.0/a2(inst) * (b2(inst)*InputSignal + b1(inst)*InputSignalLast1(inst) + b0(inst)*InputSignalLast2(inst) - a1(inst)*OutputSignalLast1(inst) - a0(inst)*OutputSignalLast2(inst)) - - ! 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) ) + SecLPFilter = 1.0/FP%lpf2_a2(inst) * (FP%lpf2_b2(inst)*InputSignal + FP%lpf2_b1(inst)*FP%lpf2_InputSignalLast1(inst) + FP%lpf2_b0(inst)*FP%lpf2_InputSignalLast2(inst) - FP%lpf2_a1(inst)*FP%lpf2_OutputSignalLast1(inst) - FP%lpf2_a0(inst)*FP%lpf2_OutputSignalLast2(inst)) ! Save signals for next time step - InputSignalLast2(inst) = InputSignalLast1(inst) - InputSignalLast1(inst) = InputSignal - OutputSignalLast2(inst) = OutputSignalLast1(inst) - OutputSignalLast1(inst) = SecLPFilter + FP%lpf2_InputSignalLast2(inst) = FP%lpf2_InputSignalLast1(inst) + FP%lpf2_InputSignalLast1(inst) = InputSignal + FP%lpf2_OutputSignalLast2(inst) = FP%lpf2_OutputSignalLast1(inst) + FP%lpf2_OutputSignalLast1(inst) = SecLPFilter inst = inst + 1 END FUNCTION SecLPFilter !------------------------------------------------------------------------------------------------------------------------------- - REAL(DbKi) FUNCTION HPFilter( InputSignal, DT, CornerFreq, iStatus, reset, inst) + REAL FUNCTION HPFilter( InputSignal, DT, CornerFreq, FP, iStatus, reset, inst) ! Discrete time High-Pass Filter + USE ROSCO_Types, ONLY : FilterParameters + TYPE(FilterParameters), INTENT(INOUT) :: FP - REAL(DbKi), INTENT(IN) :: InputSignal - REAL(DbKi), INTENT(IN) :: DT ! time step [s] - REAL(DbKi), INTENT(IN) :: CornerFreq ! corner frequency [rad/s] + REAL(8), INTENT(IN) :: InputSignal + REAL(8), INTENT(IN) :: DT ! time step [s] + REAL(8), INTENT(IN) :: CornerFreq ! corner frequency [rad/s] 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 - REAL(DbKi) :: K ! Constant gain - REAL(DbKi), DIMENSION(99), SAVE :: InputSignalLast ! Input signal the last time this filter was called. Supports 99 separate instances. - REAL(DbKi), DIMENSION(99), SAVE :: OutputSignalLast ! Output signal the last time this filter was called. Supports 99 separate instances. + REAL(8) :: K ! Constant gain ! Initialization IF ((iStatus == 0) .OR. reset) THEN - OutputSignalLast(inst) = InputSignal - InputSignalLast(inst) = InputSignal + FP%hpf_OutputSignalLast(inst) = InputSignal + FP%hpf_InputSignalLast(inst) = InputSignal ENDIF K = 2.0 / DT ! Body - HPFilter = K/(CornerFreq + K)*InputSignal - K/(CornerFreq + K)*InputSignalLast(inst) - (CornerFreq - K)/(CornerFreq + K)*OutputSignalLast(inst) + HPFilter = K/(CornerFreq + K)*InputSignal - K/(CornerFreq + K)*FP%hpf_InputSignalLast(inst) - (CornerFreq - K)/(CornerFreq + K)*FP%hpf_OutputSignalLast(inst) ! Save signals for next time step - InputSignalLast(inst) = InputSignal - OutputSignalLast(inst) = HPFilter + FP%HPF_InputSignalLast(inst) = InputSignal + FP%HPF_OutputSignalLast(inst) = HPFilter inst = inst + 1 END FUNCTION HPFilter !------------------------------------------------------------------------------------------------------------------------------- - REAL(DbKi) FUNCTION NotchFilterSlopes(InputSignal, DT, CornerFreq, Damp, iStatus, reset, inst) + REAL FUNCTION NotchFilterSlopes(InputSignal, DT, CornerFreq, Damp, FP, iStatus, reset, inst) ! Discrete time inverted Notch Filter with descending slopes, G = CornerFreq*s/(Damp*s^2+CornerFreq*s+Damp*CornerFreq^2) + USE ROSCO_Types, ONLY : FilterParameters + TYPE(FilterParameters), INTENT(INOUT) :: FP - REAL(DbKi), INTENT(IN) :: InputSignal - REAL(DbKi), INTENT(IN) :: DT ! time step [s] - REAL(DbKi), INTENT(IN) :: CornerFreq ! corner frequency [rad/s] - REAL(DbKi), INTENT(IN) :: Damp ! Dampening constant + REAL(8), INTENT(IN) :: InputSignal + REAL(8), INTENT(IN) :: DT ! time step [s] + REAL(8), INTENT(IN) :: CornerFreq ! corner frequency [rad/s] + REAL(8), INTENT(IN) :: Damp ! Dampening constant 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 - REAL(DbKi), DIMENSION(99), SAVE :: b2, b0, a2, a1, a0 ! Input signal the last time this filter was called. Supports 99 separate instances. - REAL(DbKi), DIMENSION(99), SAVE :: InputSignalLast1 ! Input signal the last time this filter was called. Supports 99 separate instances. - REAL(DbKi), DIMENSION(99), SAVE :: InputSignalLast2 ! Input signal the next to last time this filter was called. Supports 99 separate instances. - REAL(DbKi), DIMENSION(99), SAVE :: OutputSignalLast1 ! Output signal the last time this filter was called. Supports 99 separate instances. - REAL(DbKi), DIMENSION(99), SAVE :: OutputSignalLast2 ! Output signal the next to last time this filter was called. Supports 99 separate instances. - + ! Initialization IF ((iStatus == 0) .OR. reset) THEN - OutputSignalLast1(inst) = InputSignal - OutputSignalLast2(inst) = InputSignal - InputSignalLast1(inst) = InputSignal - InputSignalLast2(inst) = InputSignal - b2(inst) = 2.0 * DT * CornerFreq - b0(inst) = -b2(inst) - a2(inst) = Damp*DT**2.0*CornerFreq**2.0 + 2.0*DT*CornerFreq + 4.0*Damp - a1(inst) = 2.0*Damp*DT**2.0*CornerFreq**2.0 - 8.0*Damp - a0(inst) = Damp*DT**2.0*CornerFreq**2.0 - 2*DT*CornerFreq + 4.0*Damp + FP%nfs_OutputSignalLast1(inst) = InputSignal + FP%nfs_OutputSignalLast2(inst) = InputSignal + FP%nfs_InputSignalLast1(inst) = InputSignal + FP%nfs_InputSignalLast2(inst) = InputSignal + FP%nfs_b2(inst) = 2.0 * DT * CornerFreq + FP%nfs_b0(inst) = -FP%nfs_b2(inst) + FP%nfs_a2(inst) = Damp*DT**2.0*CornerFreq**2.0 + 2.0*DT*CornerFreq + 4.0*Damp + FP%nfs_a1(inst) = 2.0*Damp*DT**2.0*CornerFreq**2.0 - 8.0*Damp + FP%nfs_a0(inst) = Damp*DT**2.0*CornerFreq**2.0 - 2*DT*CornerFreq + 4.0*Damp ENDIF - NotchFilterSlopes = 1.0/a2(inst) * (b2(inst)*InputSignal + b0(inst)*InputSignalLast2(inst) & - - a1(inst)*OutputSignalLast1(inst) - a0(inst)*OutputSignalLast2(inst)) - ! 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) ) + NotchFilterSlopes = 1.0/FP%nfs_a2(inst) * (FP%nfs_b2(inst)*InputSignal + FP%nfs_b0(inst)*FP%nfs_InputSignalLast2(inst) & + - FP%nfs_a1(inst)*FP%nfs_OutputSignalLast1(inst) - FP%nfs_a0(inst)*FP%nfs_OutputSignalLast2(inst)) ! 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 - OutputSignalLast1(inst) = NotchFilterSlopes + FP%nfs_InputSignalLast2(inst) = FP%nfs_InputSignalLast1(inst) + FP%nfs_InputSignalLast1(inst) = InputSignal !Save input signal for next time step + FP%nfs_OutputSignalLast2(inst) = FP%nfs_OutputSignalLast1(inst) !Save input signal for next time step + FP%nfs_OutputSignalLast1(inst) = NotchFilterSlopes inst = inst + 1 END FUNCTION NotchFilterSlopes !------------------------------------------------------------------------------------------------------------------------------- - REAL(DbKi) FUNCTION NotchFilter(InputSignal, DT, omega, betaNum, betaDen, iStatus, reset, inst) + REAL FUNCTION NotchFilter(InputSignal, DT, omega, betaNum, betaDen, FP, iStatus, reset, inst) ! Discrete time Notch Filter ! Continuous Time Form: G(s) = (s^2 + 2*omega*betaNum*s + omega^2)/(s^2 + 2*omega*betaDen*s + omega^2) ! Discrete Time Form: H(z) = (b2*z^2 +b1*z^2 + b0*z)/((z^2 +a1*z^2 + a0*z)) - - REAL(DbKi), INTENT(IN) :: InputSignal - REAL(DbKi), INTENT(IN) :: DT ! time step [s] - REAL(DbKi), INTENT(IN) :: omega ! corner frequency [rad/s] - REAL(DbKi), INTENT(IN) :: betaNum ! Dampening constant in numerator of filter transfer function - REAL(DbKi), INTENT(IN) :: betaDen ! Dampening constant in denominator of filter transfer function + USE ROSCO_Types, ONLY : FilterParameters + TYPE(FilterParameters), INTENT(INOUT) :: FP + + REAL(8), INTENT(IN) :: InputSignal + REAL(8), INTENT(IN) :: DT ! time step [s] + REAL(8), INTENT(IN) :: omega ! corner frequency [rad/s] + REAL(8), INTENT(IN) :: betaNum ! Dampening constant in numerator of filter transfer function + REAL(8), INTENT(IN) :: betaDen ! Dampening constant in denominator of filter transfer function 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 - REAL(DbKi), DIMENSION(99), SAVE :: K, b2, b1, b0, a1, a0 ! Constant gain - REAL(DbKi), DIMENSION(99), SAVE :: InputSignalLast1 ! Input signal the last time this filter was called. Supports 99 separate instances. - REAL(DbKi), DIMENSION(99), SAVE :: InputSignalLast2 ! Input signal the next to last time this filter was called. Supports 99 separate instances. - REAL(DbKi), DIMENSION(99), SAVE :: OutputSignalLast1 ! Output signal the last time this filter was called. Supports 99 separate instances. - REAL(DbKi), DIMENSION(99), SAVE :: OutputSignalLast2 ! Output signal the next to last time this filter was called. Supports 99 separate instances. + REAL(8) :: K ! Constant gain ! Initialization + K = 2.0/DT IF ((iStatus == 0) .OR. reset) THEN - OutputSignalLast1(inst) = InputSignal - OutputSignalLast2(inst) = InputSignal - InputSignalLast1(inst) = InputSignal - InputSignalLast2(inst) = InputSignal - K(inst) = 2.0/DT - b2(inst) = (K(inst)**2.0 + 2.0*omega*BetaNum*K(inst) + omega**2.0)/(K(inst)**2.0 + 2.0*omega*BetaDen*K(inst) + omega**2.0) - b1(inst) = (2.0*omega**2.0 - 2.0*K(inst)**2.0) / (K(inst)**2.0 + 2.0*omega*BetaDen*K(inst) + omega**2.0); - b0(inst) = (K(inst)**2.0 - 2.0*omega*BetaNum*K(inst) + omega**2.0) / (K(inst)**2.0 + 2.0*omega*BetaDen*K(inst) + omega**2.0) - a1(inst) = (2.0*omega**2.0 - 2.0*K(inst)**2.0) / (K(inst)**2.0 + 2.0*omega*BetaDen*K(inst) + omega**2.0) - a0(inst) = (K(inst)**2.0 - 2.0*omega*BetaDen*K(inst) + omega**2.0)/ (K(inst)**2.0 + 2.0*omega*BetaDen*K(inst) + omega**2.0) + FP%nf_OutputSignalLast1(inst) = InputSignal + FP%nf_OutputSignalLast2(inst) = InputSignal + FP%nf_InputSignalLast1(inst) = InputSignal + FP%nf_InputSignalLast2(inst) = InputSignal + FP%nf_b2(inst) = (K**2.0 + 2.0*omega*BetaNum*K + omega**2.0)/(K**2.0 + 2.0*omega*BetaDen*K + omega**2.0) + FP%nf_b1(inst) = (2.0*omega**2.0 - 2.0*K**2.0) / (K**2.0 + 2.0*omega*BetaDen*K + omega**2.0); + FP%nf_b0(inst) = (K**2.0 - 2.0*omega*BetaNum*K + omega**2.0) / (K**2.0 + 2.0*omega*BetaDen*K + omega**2.0) + FP%nf_a1(inst) = (2.0*omega**2.0 - 2.0*K**2.0) / (K**2.0 + 2.0*omega*BetaDen*K + omega**2.0) + FP%nf_a0(inst) = (K**2.0 - 2.0*omega*BetaDen*K + omega**2.0)/ (K**2.0 + 2.0*omega*BetaDen*K + omega**2.0) ENDIF ! Body - NotchFilter = b2(inst)*InputSignal + b1(inst)*InputSignalLast1(inst) + b0(inst)*InputSignalLast2(inst) - a1(inst)*OutputSignalLast1(inst) - a0(inst)*OutputSignalLast2(inst) + NotchFilter = FP%nf_b2(inst)*InputSignal + FP%nf_b1(inst)*FP%nf_InputSignalLast1(inst) + FP%nf_b0(inst)*FP%nf_InputSignalLast2(inst) - FP%nf_a1(inst)*FP%nf_OutputSignalLast1(inst) - FP%nf_a0(inst)*FP%nf_OutputSignalLast2(inst) ! 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 - OutputSignalLast1(inst) = NotchFilter + FP%nf_InputSignalLast2(inst) = FP%nf_InputSignalLast1(inst) + FP%nf_InputSignalLast1(inst) = InputSignal ! Save input signal for next time step + FP%nf_OutputSignalLast2(inst) = FP%nf_OutputSignalLast1(inst) ! Save input signal for next time step + FP%nf_OutputSignalLast1(inst) = NotchFilter inst = inst + 1 END FUNCTION NotchFilter @@ -254,64 +224,52 @@ SUBROUTINE PreFilterMeasuredSignals(CntrPar, LocalVar, objInst, ErrVar) USE ROSCO_Types, ONLY : ControlParameters, LocalVariables, ObjectInstances, ErrorVariables - TYPE(ControlParameters), INTENT(INOUT) :: CntrPar - TYPE(LocalVariables), INTENT(INOUT) :: LocalVar - TYPE(ObjectInstances), INTENT(INOUT) :: objInst - TYPE(ErrorVariables), INTENT(INOUT) :: ErrVar + TYPE(ControlParameters), INTENT(INOUT) :: CntrPar + TYPE(LocalVariables), INTENT(INOUT) :: LocalVar + TYPE(ObjectInstances), INTENT(INOUT) :: objInst + TYPE(ErrorVariables), INTENT(INOUT) :: ErrVar ! If there's an error, don't even try to run IF (ErrVar%aviFAIL < 0) THEN RETURN ENDIF - ! Filter the HSS (generator) and LSS (rotor) speed measurement: ! Apply Low-Pass Filter (choice between first- and second-order low-pass filter) IF (CntrPar%F_LPFType == 1) THEN - LocalVar%GenSpeedF = LPFilter(LocalVar%GenSpeed, LocalVar%DT, CntrPar%F_LPFCornerFreq, LocalVar%iStatus, LocalVar%restart, objInst%instLPF) - LocalVar%RotSpeedF = LPFilter(LocalVar%RotSpeed, LocalVar%DT, CntrPar%F_LPFCornerFreq, LocalVar%iStatus, LocalVar%restart, objInst%instLPF) + LocalVar%GenSpeedF = LPFilter(LocalVar%GenSpeed, LocalVar%DT, CntrPar%F_LPFCornerFreq, LocalVar%FP, LocalVar%iStatus, LocalVar%restart, objInst%instLPF) + LocalVar%RotSpeedF = LPFilter(LocalVar%RotSpeed, LocalVar%DT, CntrPar%F_LPFCornerFreq, LocalVar%FP, LocalVar%iStatus, LocalVar%restart, objInst%instLPF) ELSEIF (CntrPar%F_LPFType == 2) THEN - LocalVar%GenSpeedF = SecLPFilter(LocalVar%GenSpeed, LocalVar%DT, CntrPar%F_LPFCornerFreq, CntrPar%F_LPFDamping, LocalVar%iStatus, LocalVar%restart, objInst%instSecLPF) ! Second-order low-pass filter on generator speed - LocalVar%RotSpeedF = SecLPFilter(LocalVar%RotSpeed, LocalVar%DT, CntrPar%F_LPFCornerFreq, CntrPar%F_LPFDamping, LocalVar%iStatus, LocalVar%restart, objInst%instSecLPF) ! Second-order low-pass filter on generator speed - ELSE - IF (LocalVar%iStatus ==0) THEN - print *, 'No generator speed low-pass filter is selected in ROSCO (F_LPFType=0)' - ENDIF - LocalVar%GenSpeedF = LocalVar%GenSpeed - LocalVar%RotSpeedF = LocalVar%RotSpeed + LocalVar%GenSpeedF = SecLPFilter(LocalVar%GenSpeed, LocalVar%DT, CntrPar%F_LPFCornerFreq, CntrPar%F_LPFDamping, LocalVar%FP, LocalVar%iStatus, LocalVar%restart, objInst%instSecLPF) ! Second-order low-pass filter on generator speed + LocalVar%RotSpeedF = SecLPFilter(LocalVar%RotSpeed, LocalVar%DT, CntrPar%F_LPFCornerFreq, CntrPar%F_LPFDamping, LocalVar%FP, LocalVar%iStatus, LocalVar%restart, objInst%instSecLPF) ! Second-order low-pass filter on generator speed ENDIF ! Apply Notch Fitler IF (CntrPar%F_NotchType == 1 .OR. CntrPar%F_NotchType == 3) THEN - LocalVar%GenSpeedF = NotchFilter(LocalVar%GenSpeedF, LocalVar%DT, CntrPar%F_NotchCornerFreq, CntrPar%F_NotchBetaNumDen(1), CntrPar%F_NotchBetaNumDen(2), LocalVar%iStatus, LocalVar%restart, objInst%instNotch) + LocalVar%GenSpeedF = NotchFilter(LocalVar%GenSpeedF, LocalVar%DT, CntrPar%F_NotchCornerFreq, CntrPar%F_NotchBetaNumDen(1), CntrPar%F_NotchBetaNumDen(2), LocalVar%FP, LocalVar%iStatus, LocalVar%restart, objInst%instNotch) ENDIF ! Filtering the tower fore-aft acceleration signal - IF (CntrPar%Fl_Mode > 0) THEN + IF (CntrPar%Fl_Mode == 1) THEN ! Force to start at 0 - IF (LocalVar%iStatus == 0) THEN - LocalVar%NacIMU_FA_AccF = SecLPFilter(REAL(0.,DbKi), LocalVar%DT, CntrPar%F_FlCornerFreq(1), CntrPar%F_FlCornerFreq(2), LocalVar%iStatus, LocalVar%restart, objInst%instSecLPF) ! Fixed Damping - LocalVar%FA_AccF = SecLPFilter(REAL(0.,DbKi), LocalVar%DT, CntrPar%F_FlCornerFreq(1), CntrPar%F_FlCornerFreq(2), LocalVar%iStatus, LocalVar%restart, objInst%instSecLPF) ! Fixed Damping - ELSE - LocalVar%NacIMU_FA_AccF = SecLPFilter(LocalVar%NacIMU_FA_Acc, LocalVar%DT, CntrPar%F_FlCornerFreq(1), CntrPar%F_FlCornerFreq(2), LocalVar%iStatus, LocalVar%restart, objInst%instSecLPF) ! Fixed Damping - LocalVar%FA_AccF = SecLPFilter(LocalVar%FA_Acc, LocalVar%DT, CntrPar%F_FlCornerFreq(1), CntrPar%F_FlCornerFreq(2), LocalVar%iStatus, LocalVar%restart, objInst%instSecLPF) ! Fixed Damping - ENDIF - LocalVar%NacIMU_FA_AccF = HPFilter(LocalVar%NacIMU_FA_AccF, LocalVar%DT, CntrPar%F_FlHighPassFreq, LocalVar%iStatus, LocalVar%restart, objInst%instHPF) - LocalVar%FA_AccF = HPFilter(LocalVar%FA_AccF, LocalVar%DT, CntrPar%F_FlHighPassFreq, LocalVar%iStatus, LocalVar%restart, objInst%instHPF) + LocalVar%NacIMU_FA_AccF = SecLPFilter(LocalVar%NacIMU_FA_Acc, LocalVar%DT, CntrPar%F_FlCornerFreq(1), CntrPar%F_FlCornerFreq(2), LocalVar%FP, LocalVar%iStatus, LocalVar%restart, objInst%instSecLPF) ! Fixed Damping + LocalVar%FA_AccF = SecLPFilter(LocalVar%FA_Acc, LocalVar%DT, CntrPar%F_FlCornerFreq(1), CntrPar%F_FlCornerFreq(2), LocalVar%FP, LocalVar%iStatus, LocalVar%restart, objInst%instSecLPF) ! Fixed Damping + LocalVar%NacIMU_FA_AccF = HPFilter(LocalVar%NacIMU_FA_AccF, LocalVar%DT, 0.0167, LocalVar%FP, LocalVar%iStatus, LocalVar%restart, objInst%instHPF) + LocalVar%FA_AccF = HPFilter(LocalVar%FA_AccF, LocalVar%DT, 0.0167, LocalVar%FP, LocalVar%iStatus, LocalVar%restart, objInst%instHPF) IF (CntrPar%F_NotchType >= 2) THEN - LocalVar%NACIMU_FA_AccF = NotchFilter(LocalVar%NacIMU_FA_AccF, LocalVar%DT, CntrPar%F_NotchCornerFreq, CntrPar%F_NotchBetaNumDen(1), CntrPar%F_NotchBetaNumDen(2), LocalVar%iStatus, LocalVar%restart, objInst%instNotch) ! Fixed Damping - LocalVar%FA_AccF = NotchFilter(LocalVar%FA_AccF, LocalVar%DT, CntrPar%F_NotchCornerFreq, CntrPar%F_NotchBetaNumDen(1), CntrPar%F_NotchBetaNumDen(2), LocalVar%iStatus, LocalVar%restart, objInst%instNotch) ! Fixed Damping + LocalVar%NACIMU_FA_AccF = NotchFilter(LocalVar%NacIMU_FA_AccF, LocalVar%DT, CntrPar%F_NotchCornerFreq, CntrPar%F_NotchBetaNumDen(1), CntrPar%F_NotchBetaNumDen(2), LocalVar%FP, LocalVar%iStatus, LocalVar%restart, objInst%instNotch) ! Fixed Damping + LocalVar%FA_AccF = NotchFilter(LocalVar%FA_AccF, LocalVar%DT, CntrPar%F_NotchCornerFreq, CntrPar%F_NotchBetaNumDen(1), CntrPar%F_NotchBetaNumDen(2), LocalVar%FP, LocalVar%iStatus, LocalVar%restart, objInst%instNotch) ! Fixed Damping ENDIF ENDIF - LocalVar%FA_AccHPF = HPFilter(LocalVar%FA_Acc, LocalVar%DT, CntrPar%FA_HPFCornerFreq, LocalVar%iStatus, LocalVar%restart, objInst%instHPF) + LocalVar%FA_AccHPF = HPFilter(LocalVar%FA_Acc, LocalVar%DT, CntrPar%FA_HPFCornerFreq, LocalVar%FP, LocalVar%iStatus, LocalVar%restart, objInst%instHPF) ! Filter Wind Speed Estimator Signal - LocalVar%We_Vw_F = LPFilter(LocalVar%WE_Vw, LocalVar%DT, CntrPar%F_WECornerFreq, LocalVar%iStatus,LocalVar%restart,objInst%instLPF) ! 30 second time constant + LocalVar%We_Vw_F = LPFilter(LocalVar%WE_Vw, LocalVar%DT, 0.209, LocalVar%FP, LocalVar%iStatus, LocalVar%restart, objInst%instLPF) ! 30 second time constant ! Control commands (used by WSE, mostly) - LocalVar%VS_LastGenTrqF = SecLPFilter(LocalVar%VS_LastGenTrq, LocalVar%DT, CntrPar%F_LPFCornerFreq, 0.7_DbKi, LocalVar%iStatus, LocalVar%restart, objInst%instSecLPF) - LocalVar%PC_PitComTF = SecLPFilter(LocalVar%PC_PitComT, LocalVar%DT, CntrPar%F_LPFCornerFreq*0.25, 0.7_DbKi, LocalVar%iStatus, LocalVar%restart, objInst%instSecLPF) + LocalVar%VS_LastGenTrqF = SecLPFilter(LocalVar%VS_LastGenTrq, LocalVar%DT, CntrPar%F_LPFCornerFreq, 0.7, LocalVar%FP, LocalVar%iStatus, LocalVar%restart, objInst%instSecLPF) + LocalVar%PC_PitComTF = SecLPFilter(LocalVar%PC_PitComT, LocalVar%DT, CntrPar%F_LPFCornerFreq*0.25, 0.7, LocalVar%FP, LocalVar%iStatus, LocalVar%restart, objInst%instSecLPF) END SUBROUTINE PreFilterMeasuredSignals -END MODULE Filters + END MODULE Filters \ No newline at end of file From ed81a233671ae7c340d1a25f14c694369383d035 Mon Sep 17 00:00:00 2001 From: Nikhar Abbas Date: Fri, 17 Dec 2021 10:49:31 -0700 Subject: [PATCH 007/218] save pitcomt last --- ROSCO/src/Controllers.f90 | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/ROSCO/src/Controllers.f90 b/ROSCO/src/Controllers.f90 index 73b0f951..29e11841 100644 --- a/ROSCO/src/Controllers.f90 +++ b/ROSCO/src/Controllers.f90 @@ -39,7 +39,6 @@ SUBROUTINE PitchControl(avrSWAP, CntrPar, LocalVar, objInst, DebugVar, ErrVar) ! Allocate Variables: INTEGER(IntKi) :: K ! Index used for looping through blades. - REAL(DbKi), Save :: PitComT_Last CHARACTER(*), PARAMETER :: RoutineName = 'PitchControl' @@ -100,8 +99,8 @@ SUBROUTINE PitchControl(avrSWAP, CntrPar, LocalVar, objInst, DebugVar, ErrVar) ! Saturate collective pitch commands: LocalVar%PC_PitComT = saturate(LocalVar%PC_PitComT, LocalVar%PC_MinPit, CntrPar%PC_MaxPit) ! Saturate the overall command using the pitch angle limits - LocalVar%PC_PitComT = ratelimit(LocalVar%PC_PitComT, PitComT_Last, CntrPar%PC_MinRat, CntrPar%PC_MaxRat, LocalVar%DT) ! Saturate the overall command of blade K using the pitch rate limit - PitComT_Last = LocalVar%PC_PitComT + LocalVar%PC_PitComT = ratelimit(LocalVar%PC_PitComT, LocalVar%PC_PitComT_Last, CntrPar%PC_MinRat, CntrPar%PC_MaxRat, LocalVar%DT) ! Saturate the overall command of blade K using the pitch rate limit + LocalVar%PC_PitComT_Last = LocalVar%PC_PitComT ! Combine and saturate all individual pitch commands: ! Filter to emulate pitch actuator From 3bbaf86a82646e5580de849f0df318357a13ad77 Mon Sep 17 00:00:00 2001 From: Nikhar Abbas Date: Fri, 17 Dec 2021 10:53:03 -0700 Subject: [PATCH 008/218] Move IPC saved variables to localvars --- ROSCO/src/Controllers.f90 | 40 +++++++++++++++++++-------------------- 1 file changed, 19 insertions(+), 21 deletions(-) diff --git a/ROSCO/src/Controllers.f90 b/ROSCO/src/Controllers.f90 index 29e11841..d6ded5d1 100644 --- a/ROSCO/src/Controllers.f90 +++ b/ROSCO/src/Controllers.f90 @@ -291,9 +291,7 @@ SUBROUTINE IPC(CntrPar, LocalVar, objInst) REAL(DbKi) :: PitComIPC(3), PitComIPCF(3), PitComIPC_1P(3), PitComIPC_2P(3) INTEGER(IntKi) :: K ! Integer used to loop through turbine blades REAL(DbKi) :: axisTilt_1P, axisYaw_1P, axisYawF_1P ! Direct axis and quadrature axis outputted by Coleman transform, 1P - REAL(DbKi), SAVE :: IntAxisTilt_1P, IntAxisYaw_1P ! Integral of the direct axis and quadrature axis, 1P REAL(DbKi) :: axisTilt_2P, axisYaw_2P, axisYawF_2P ! Direct axis and quadrature axis outputted by Coleman transform, 1P - REAL(DbKi), SAVE :: IntAxisTilt_2P, IntAxisYaw_2P ! Integral of the direct axis and quadrature axis, 1P REAL(DbKi) :: IntAxisYawIPC_1P ! IPC contribution with yaw-by-IPC component REAL(DbKi) :: Y_MErrF, Y_MErrF_IPC ! Unfiltered and filtered yaw alignment error [rad] @@ -302,10 +300,10 @@ SUBROUTINE IPC(CntrPar, LocalVar, objInst) ! Initialization ! Set integrals to be 0 in the first time step IF (LocalVar%iStatus==0) THEN - IntAxisTilt_1P = 0.0 - IntAxisYaw_1P = 0.0 - IntAxisTilt_2P = 0.0 - IntAxisYaw_2P = 0.0 + LocalVar%IPC_IntAxisTilt_1P = 0.0 + LocalVar%IPC_IntAxisYaw_1P = 0.0 + LocalVar%IPC_IntAxisTilt_2P = 0.0 + LocalVar%IPC_IntAxisYaw_2P = 0.0 END IF ! Pass rootMOOPs through the Coleman transform to get the tilt and yaw moment axis @@ -324,30 +322,30 @@ SUBROUTINE IPC(CntrPar, LocalVar, objInst) ! Integrate the signal and multiply with the IPC gain IF ((CntrPar%IPC_ControlMode >= 1) .AND. (CntrPar%Y_ControlMode /= 2)) THEN - IntAxisTilt_1P = IntAxisTilt_1P + LocalVar%DT * CntrPar%IPC_KI(1) * axisTilt_1P - IntAxisYaw_1P = IntAxisYaw_1P + LocalVar%DT * CntrPar%IPC_KI(1) * axisYawF_1P - IntAxisTilt_1P = saturate(IntAxisTilt_1P, -CntrPar%IPC_IntSat, CntrPar%IPC_IntSat) - IntAxisYaw_1P = saturate(IntAxisYaw_1P, -CntrPar%IPC_IntSat, CntrPar%IPC_IntSat) + LocalVar%IPC_IntAxisTilt_1P = LocalVar%IPC_IntAxisTilt_1P + LocalVar%DT * CntrPar%IPC_KI(1) * axisTilt_1P + LocalVar%IPC_IntAxisYaw_1P = LocalVar%IPC_IntAxisYaw_1P + LocalVar%DT * CntrPar%IPC_KI(1) * axisYawF_1P + LocalVar%IPC_IntAxisTilt_1P = saturate(LocalVar%IPC_IntAxisTilt_1P, -CntrPar%IPC_IntSat, CntrPar%IPC_IntSat) + LocalVar%IPC_IntAxisYaw_1P = saturate(LocalVar%IPC_IntAxisYaw_1P, -CntrPar%IPC_IntSat, CntrPar%IPC_IntSat) IF (CntrPar%IPC_ControlMode >= 2) THEN - IntAxisTilt_2P = IntAxisTilt_2P + LocalVar%DT * CntrPar%IPC_KI(2) * axisTilt_2P - IntAxisYaw_2P = IntAxisYaw_2P + LocalVar%DT * CntrPar%IPC_KI(2) * axisYawF_2P - IntAxisTilt_2P = saturate(IntAxisTilt_2P, -CntrPar%IPC_IntSat, CntrPar%IPC_IntSat) - IntAxisYaw_2P = saturate(IntAxisYaw_2P, -CntrPar%IPC_IntSat, CntrPar%IPC_IntSat) + LocalVar%IPC_IntAxisTilt_2P = LocalVar%IPC_IntAxisTilt_2P + LocalVar%DT * CntrPar%IPC_KI(2) * axisTilt_2P + LocalVar%IPC_IntAxisYaw_2P = LocalVar%IPC_IntAxisYaw_2P + LocalVar%DT * CntrPar%IPC_KI(2) * axisYawF_2P + LocalVar%IPC_IntAxisTilt_2P = saturate(LocalVar%IPC_IntAxisTilt_2P, -CntrPar%IPC_IntSat, CntrPar%IPC_IntSat) + LocalVar%IPC_IntAxisYaw_2P = saturate(LocalVar%IPC_IntAxisYaw_2P, -CntrPar%IPC_IntSat, CntrPar%IPC_IntSat) END IF ELSE - IntAxisTilt_1P = 0.0 - IntAxisYaw_1P = 0.0 - IntAxisTilt_2P = 0.0 - IntAxisYaw_2P = 0.0 + LocalVar%IPC_IntAxisTilt_1P = 0.0 + LocalVar%IPC_IntAxisYaw_1P = 0.0 + LocalVar%IPC_IntAxisTilt_2P = 0.0 + LocalVar%IPC_IntAxisYaw_2P = 0.0 END IF ! Add the yaw-by-IPC contribution - IntAxisYawIPC_1P = IntAxisYaw_1P + Y_MErrF_IPC + IntAxisYawIPC_1P = LocalVar%IPC_IntAxisYaw_1P + Y_MErrF_IPC ! Pass direct and quadrature axis through the inverse Coleman transform to get the commanded pitch angles - CALL ColemanTransformInverse(IntAxisTilt_1P, IntAxisYawIPC_1P, LocalVar%Azimuth, NP_1, CntrPar%IPC_aziOffset(1), PitComIPC_1P) - CALL ColemanTransformInverse(IntAxisTilt_2P, IntAxisYaw_2P, LocalVar%Azimuth, NP_2, CntrPar%IPC_aziOffset(2), PitComIPC_2P) + CALL ColemanTransformInverse(LocalVar%IPC_IntAxisTilt_1P, IntAxisYawIPC_1P, LocalVar%Azimuth, NP_1, CntrPar%IPC_aziOffset(1), PitComIPC_1P) + CALL ColemanTransformInverse(LocalVar%IPC_IntAxisTilt_2P, LocalVar%IPC_IntAxisYaw_2P, LocalVar%Azimuth, NP_2, CntrPar%IPC_aziOffset(2), PitComIPC_2P) ! Sum nP IPC contributions and store to LocalVar data type DO K = 1,LocalVar%NumBl From 30e98d6705bc950e624def9f5011950a27d5c02e Mon Sep 17 00:00:00 2001 From: Nikhar Abbas Date: Fri, 17 Dec 2021 11:00:32 -0700 Subject: [PATCH 009/218] Saved pi controller variables to localvar --- ROSCO/src/Controllers.f90 | 24 ++++----- ROSCO/src/Functions.f90 | 107 ++++++++++++++++++-------------------- 2 files changed, 63 insertions(+), 68 deletions(-) diff --git a/ROSCO/src/Controllers.f90 b/ROSCO/src/Controllers.f90 index d6ded5d1..1d962b70 100644 --- a/ROSCO/src/Controllers.f90 +++ b/ROSCO/src/Controllers.f90 @@ -58,9 +58,9 @@ SUBROUTINE PitchControl(avrSWAP, CntrPar, LocalVar, objInst, DebugVar, ErrVar) ! 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_MaxPit, LocalVar%DT, LocalVar%PitCom(1), LocalVar%restart, 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), LocalVar%piP, LocalVar%restart, objInst%instPI) ELSE - LocalVar%PC_PitComT = PIController(LocalVar%PC_SpdErr, LocalVar%PC_KP, LocalVar%PC_KI, LocalVar%PC_MinPit, LocalVar%PC_MaxPit, LocalVar%DT, LocalVar%BlPitch(1), LocalVar%restart, objInst%instPI) + LocalVar%PC_PitComT = PIController(LocalVar%PC_SpdErr, LocalVar%PC_KP, LocalVar%PC_KI, LocalVar%PC_MinPit, LocalVar%PC_MaxPit, LocalVar%DT, LocalVar%BlPitch(1), LocalVar%piP, LocalVar%restart, objInst%instPI) END IF DebugVar%PC_PICommand = LocalVar%PC_PitComT ! Find individual pitch control contribution @@ -170,14 +170,14 @@ SUBROUTINE VariableSpeedControl(avrSWAP, CntrPar, LocalVar, objInst, ErrVar) END IF ! PI controller - LocalVar%GenTq = PIController(LocalVar%VS_SpdErr, CntrPar%VS_KP(1), CntrPar%VS_KI(1), CntrPar%VS_MinTq, LocalVar%VS_MaxTq, LocalVar%DT, LocalVar%VS_LastGenTrq, LocalVar%restart, objInst%instPI) + LocalVar%GenTq = PIController(LocalVar%VS_SpdErr, CntrPar%VS_KP(1), CntrPar%VS_KI(1), CntrPar%VS_MinTq, LocalVar%VS_MaxTq, LocalVar%DT, LocalVar%VS_LastGenTrq, LocalVar%piP, LocalVar%restart, objInst%instPI) LocalVar%GenTq = saturate(LocalVar%GenTq, CntrPar%VS_MinTq, LocalVar%VS_MaxTq) ! 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_MaxOMTq, LocalVar%restart, 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, LocalVar%restart, 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, LocalVar%piP, LocalVar%restart, 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, LocalVar%piP, LocalVar%restart, objInst%instPI) ! The action IF (LocalVar%VS_State == 1) THEN ! Region 1.5 @@ -313,7 +313,7 @@ SUBROUTINE IPC(CntrPar, LocalVar, objInst) ! High-pass filter the MBC yaw component and filter yaw alignment error, and compute the yaw-by-IPC contribution IF (CntrPar%Y_ControlMode == 2) THEN Y_MErrF = SecLPFilter(LocalVar%Y_MErr, LocalVar%DT, CntrPar%Y_IPC_omegaLP, CntrPar%Y_IPC_zetaLP, LocalVar%FP, LocalVar%iStatus, LocalVar%restart, objInst%instSecLPF) - Y_MErrF_IPC = PIController(Y_MErrF, CntrPar%Y_IPC_KP(1), CntrPar%Y_IPC_KI(1), -CntrPar%Y_IPC_IntSat, CntrPar%Y_IPC_IntSat, LocalVar%DT, 0.0_DbKi, LocalVar%restart, objInst%instPI) + Y_MErrF_IPC = PIController(Y_MErrF, CntrPar%Y_IPC_KP(1), CntrPar%Y_IPC_KI(1), -CntrPar%Y_IPC_IntSat, CntrPar%Y_IPC_IntSat, LocalVar%DT, 0.0_DbKi, LocalVar%piP, LocalVar%restart, objInst%instPI) ELSE axisYawF_1P = axisYaw_1P Y_MErrF = 0.0 @@ -375,7 +375,7 @@ SUBROUTINE ForeAftDamping(CntrPar, LocalVar, objInst) TYPE(ObjectInstances), INTENT(INOUT) :: objInst ! Body - LocalVar%FA_AccHPFI = PIController(LocalVar%FA_AccHPF, 0.0_DbKi, CntrPar%FA_KI, -CntrPar%FA_IntSat, CntrPar%FA_IntSat, LocalVar%DT, 0.0_DbKi, LocalVar%restart, objInst%instPI) + LocalVar%FA_AccHPFI = PIController(LocalVar%FA_AccHPF, 0.0_DbKi, CntrPar%FA_KI, -CntrPar%FA_IntSat, CntrPar%FA_IntSat, LocalVar%DT, 0.0_DbKi, LocalVar%piP, LocalVar%restart, objInst%instPI) ! Store the fore-aft pitch contribution to LocalVar data type DO K = 1,LocalVar%NumBl @@ -393,15 +393,15 @@ REAL(DbKi) FUNCTION FloatingFeedback(LocalVar, CntrPar, objInst) IMPLICIT NONE ! Inputs TYPE(ControlParameters), INTENT(IN) :: CntrPar - TYPE(LocalVariables), INTENT(IN) :: LocalVar + TYPE(LocalVariables), INTENT(INOUT) :: LocalVar TYPE(ObjectInstances), INTENT(INOUT) :: objInst ! Allocate Variables REAL(DbKi) :: FA_vel ! Tower fore-aft velocity [m/s] REAL(DbKi) :: NacIMU_FA_vel ! Tower fore-aft pitching velocity [rad/s] ! Calculate floating contribution to pitch command - FA_vel = PIController(LocalVar%FA_AccF, 0.0_DbKi, 1.0_DbKi, -100.0_DbKi , 100.0_DbKi ,LocalVar%DT, 0.0_DbKi, LocalVar%restart, objInst%instPI) ! NJA: should never reach saturation limits.... - NacIMU_FA_vel = PIController(LocalVar%NacIMU_FA_AccF, 0.0_DbKi, 1.0_DbKi, -100.0_DbKi , 100.0_DbKi ,LocalVar%DT, 0.0_DbKi, LocalVar%restart, objInst%instPI) ! NJA: should never reach saturation limits.... + FA_vel = PIController(LocalVar%FA_AccF, 0.0_DbKi, 1.0_DbKi, -100.0_DbKi , 100.0_DbKi ,LocalVar%DT, 0.0_DbKi, LocalVar%piP, LocalVar%restart, objInst%instPI) ! NJA: should never reach saturation limits.... + NacIMU_FA_vel = PIController(LocalVar%NacIMU_FA_AccF, 0.0_DbKi, 1.0_DbKi, -100.0_DbKi , 100.0_DbKi ,LocalVar%DT, 0.0_DbKi, LocalVar%piP, LocalVar%restart, objInst%instPI) ! NJA: should never reach saturation limits.... if (CntrPar%Fl_Mode == 1) THEN FloatingFeedback = (0.0_DbKi - FA_vel) * CntrPar%Fl_Kp !* LocalVar%PC_KP/maxval(CntrPar%PC_GS_KP) ELSEIF (CntrPar%Fl_Mode == 2) THEN @@ -445,7 +445,7 @@ SUBROUTINE FlapControl(avrSWAP, CntrPar, LocalVar, objInst) RootMOOP_F(3) = SecLPFilter(LocalVar%rootMOOP(3),LocalVar%DT, CntrPar%F_FlpCornerFreq(1), CntrPar%F_FlpCornerFreq(2), LocalVar%FP, LocalVar%iStatus, LocalVar%restart,objInst%instSecLPF) ! Initialize controller IF (CntrPar%Flp_Mode == 2) THEN - LocalVar%Flp_Angle(K) = PIIController(RootMyb_VelErr(K), 0 - LocalVar%Flp_Angle(K), CntrPar%Flp_Kp, CntrPar%Flp_Ki, 0.05, -CntrPar%Flp_MaxPit , CntrPar%Flp_MaxPit , LocalVar%DT, 0.0, .TRUE., objInst%instPI) + LocalVar%Flp_Angle(K) = PIIController(RootMyb_VelErr(K), 0 - LocalVar%Flp_Angle(K), CntrPar%Flp_Kp, CntrPar%Flp_Ki, 0.05, -CntrPar%Flp_MaxPit , CntrPar%Flp_MaxPit , LocalVar%DT, 0.0, LocalVar%piP, LocalVar%restart, objInst%instPI) ENDIF ! Steady flap angle @@ -465,7 +465,7 @@ SUBROUTINE FlapControl(avrSWAP, CntrPar, LocalVar, objInst) RootMyb_VelErr(K) = 0 - RootMyb_Vel(K) ! Find flap angle command - includes an integral term to encourage zero flap angle - LocalVar%Flp_Angle(K) = PIIController(RootMyb_VelErr(K), 0 - LocalVar%Flp_Angle(K), CntrPar%Flp_Kp, CntrPar%Flp_Ki, REAL(0.05,DbKi), -CntrPar%Flp_MaxPit , CntrPar%Flp_MaxPit , LocalVar%DT, 0.0, LocalVar%restart, objInst%instPI) + LocalVar%Flp_Angle(K) = PIIController(RootMyb_VelErr(K), 0 - LocalVar%Flp_Angle(K), CntrPar%Flp_Kp, CntrPar%Flp_Ki, REAL(0.05,DbKi), -CntrPar%Flp_MaxPit , CntrPar%Flp_MaxPit , LocalVar%DT, 0.0, LocalVar%piP, LocalVar%restart, objInst%instPI) ! Saturation Limits LocalVar%Flp_Angle(K) = saturate(LocalVar%Flp_Angle(K), -CntrPar%Flp_MaxPit, CntrPar%Flp_MaxPit) diff --git a/ROSCO/src/Functions.f90 b/ROSCO/src/Functions.f90 index 6b133502..53338f46 100644 --- a/ROSCO/src/Functions.f90 +++ b/ROSCO/src/Functions.f90 @@ -67,92 +67,87 @@ REAL(DbKi) FUNCTION ratelimit(inputSignal, inputSignalPrev, minRate, maxRate, DT END FUNCTION ratelimit !------------------------------------------------------------------------------------------------------------------------------- - REAL(DbKi) FUNCTION PIController(error, kp, ki, minValue, maxValue, DT, I0, reset, inst) + REAL FUNCTION PIController(error, kp, ki, minValue, maxValue, DT, I0, piP, reset, inst) + USE ROSCO_Types, ONLY : piParams + ! PI controller, with output saturation IMPLICIT NONE ! Allocate Inputs - REAL(DbKi), INTENT(IN) :: error - REAL(DbKi), INTENT(IN) :: kp - REAL(DbKi), INTENT(IN) :: ki - REAL(DbKi), INTENT(IN) :: minValue - REAL(DbKi), INTENT(IN) :: maxValue - REAL(DbKi), INTENT(IN) :: DT - INTEGER(IntKi), INTENT(INOUT) :: inst - REAL(DbKi), INTENT(IN) :: I0 - LOGICAL, INTENT(IN) :: reset + REAL(8), INTENT(IN) :: error + REAL(8), INTENT(IN) :: kp + REAL(8), INTENT(IN) :: ki + REAL(8), INTENT(IN) :: minValue + REAL(8), INTENT(IN) :: maxValue + REAL(8), INTENT(IN) :: DT + INTEGER(4), INTENT(INOUT) :: inst + REAL(8), INTENT(IN) :: I0 + TYPE(piParams), INTENT(INOUT) :: piP + LOGICAL, INTENT(IN) :: reset ! Allocate local variables - INTEGER(IntKi) :: i ! Counter for making arrays - REAL(DbKi) :: PTerm ! Proportional term - REAL(DbKi), DIMENSION(99), SAVE :: ITerm = (/ (real(9999.9), i = 1,99) /) ! Integral term, current. - REAL(DbKi), DIMENSION(99), SAVE :: ITermLast = (/ (real(9999.9), i = 1,99) /) ! Integral term, the last time this controller was called. Supports 99 separate instances. - INTEGER(IntKi), DIMENSION(99), SAVE :: FirstCall = (/ (1, i=1,99) /) ! First call of this function? - + INTEGER(4) :: i ! Counter for making arrays + REAL(8) :: PTerm ! Proportional term + ! Initialize persistent variables/arrays, and set inital condition for integrator term - IF ((FirstCall(inst) == 1) .OR. reset) THEN - ITerm(inst) = I0 - ITermLast(inst) = I0 + IF (reset) THEN + piP%ITerm(inst) = I0 + piP%ITermLast(inst) = I0 - FirstCall(inst) = 0 PIController = I0 ELSE PTerm = kp*error - ITerm(inst) = ITerm(inst) + DT*ki*error - ITerm(inst) = saturate(ITerm(inst), minValue, maxValue) - PIController = saturate(PTerm + ITerm(inst), minValue, maxValue) + piP%ITerm(inst) = piP%ITerm(inst) + DT*ki*error + piP%ITerm(inst) = saturate(piP%ITerm(inst), minValue, maxValue) + PIController = saturate(PTerm + piP%ITerm(inst), minValue, maxValue) - ITermLast(inst) = ITerm(inst) + piP%ITermLast(inst) = piP%ITerm(inst) END IF inst = inst + 1 END FUNCTION PIController !------------------------------------------------------------------------------------------------------------------------------- - REAL(DbKi) FUNCTION PIIController(error, error2, kp, ki, ki2, minValue, maxValue, DT, I0, reset, inst) + REAL(8) FUNCTION PIIController(error, error2, kp, ki, ki2, minValue, maxValue, DT, I0, piP, reset, inst) ! PI controller, with output saturation. ! Added error2 term for additional integral control input - + USE ROSCO_Types, ONLY : piParams + IMPLICIT NONE ! Allocate Inputs - REAL(DbKi), INTENT(IN) :: error - REAL(DbKi), INTENT(IN) :: error2 - REAL(DbKi), INTENT(IN) :: kp - REAL(DbKi), INTENT(IN) :: ki2 - REAL(DbKi), INTENT(IN) :: ki - REAL(DbKi), INTENT(IN) :: minValue - REAL(DbKi), INTENT(IN) :: maxValue - REAL(DbKi), INTENT(IN) :: DT - INTEGER(IntKi), INTENT(INOUT) :: inst - REAL(DbKi), INTENT(IN) :: I0 + REAL(8), INTENT(IN) :: error + REAL(8), INTENT(IN) :: error2 + REAL(8), INTENT(IN) :: kp + REAL(8), INTENT(IN) :: ki2 + REAL(8), INTENT(IN) :: ki + REAL(8), INTENT(IN) :: minValue + REAL(8), INTENT(IN) :: maxValue + REAL(8), INTENT(IN) :: DT + INTEGER(4), INTENT(INOUT) :: inst + REAL(8), INTENT(IN) :: I0 + TYPE(piParams), INTENT(INOUT) :: piP LOGICAL, INTENT(IN) :: reset ! Allocate local variables - INTEGER(IntKi) :: i ! Counter for making arrays - REAL(DbKi) :: PTerm ! Proportional term - REAL(DbKi), DIMENSION(99), SAVE :: ITerm = (/ (real(9999.9), i = 1,99) /) ! Integral term, current. - REAL(DbKi), DIMENSION(99), SAVE :: ITermLast = (/ (real(9999.9), i = 1,99) /) ! Integral term, the last time this controller was called. Supports 99 separate instances. - REAL(DbKi), DIMENSION(99), SAVE :: ITerm2 = (/ (real(9999.9), i = 1,99) /) ! Second Integral term, current. - REAL(DbKi), DIMENSION(99), SAVE :: ITermLast2 = (/ (real(9999.9), i = 1,99) /) ! Second Integral term, the last time this controller was called. Supports 99 separate instances. - INTEGER(IntKi), DIMENSION(99), SAVE :: FirstCall = (/ (1, i=1,99) /) ! First call of this function? - + INTEGER(4) :: i ! Counter for making arrays + REAL(8) :: PTerm ! Proportional term + ! Initialize persistent variables/arrays, and set inital condition for integrator term - IF ((FirstCall(inst) == 1) .OR. reset) THEN - ITerm(inst) = I0 - ITermLast(inst) = I0 - ITerm2(inst) = I0 - ITermLast2(inst) = I0 + IF (reset) THEN + piP%ITerm(inst) = I0 + piP%ITermLast(inst) = I0 + piP%ITerm2(inst) = I0 + piP%ITermLast2(inst) = I0 - FirstCall(inst) = 0 PIIController = I0 ELSE PTerm = kp*error - ITerm(inst) = ITerm(inst) + DT*ki*error - ITerm2(inst) = ITerm2(inst) + DT*ki2*error2 - ITerm(inst) = saturate(ITerm(inst), minValue, maxValue) - ITerm2(inst) = saturate(ITerm2(inst), minValue, maxValue) - PIIController = PTerm + ITerm(inst) + ITerm2(inst) + piP%ITerm(inst) = piP%ITerm(inst) + DT*ki*error + piP%ITerm2(inst) = piP%ITerm2(inst) + DT*ki2*error2 + piP%ITerm(inst) = saturate(piP%ITerm(inst), minValue, maxValue) + piP%ITerm2(inst) = saturate(piP%ITerm2(inst), minValue, maxValue) + PIIController = PTerm + piP%ITerm(inst) + piP%ITerm2(inst) PIIController = saturate(PIIController, minValue, maxValue) - ITermLast(inst) = ITerm(inst) + piP%ITermLast(inst) = piP%ITerm(inst) END IF inst = inst + 1 From 38dff08aa1cec088efb7634ab377967a6236dba1 Mon Sep 17 00:00:00 2001 From: Nikhar Abbas Date: Fri, 17 Dec 2021 13:20:54 -0700 Subject: [PATCH 010/218] Save RootMyb_Last to localvar --- ROSCO/src/Controllers.f90 | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/ROSCO/src/Controllers.f90 b/ROSCO/src/Controllers.f90 index 1d962b70..629aadd1 100644 --- a/ROSCO/src/Controllers.f90 +++ b/ROSCO/src/Controllers.f90 @@ -426,15 +426,14 @@ SUBROUTINE FlapControl(avrSWAP, CntrPar, LocalVar, objInst) INTEGER(IntKi) :: K REAL(DbKi) :: rootMOOP_F(3) REAL(DbKi) :: RootMyb_Vel(3) - REAL(DbKi), SAVE :: RootMyb_Last(3) REAL(DbKi) :: RootMyb_VelErr(3) ! Flap control IF (CntrPar%Flp_Mode >= 1) THEN IF ((LocalVar%iStatus == 0) .AND. (CntrPar%Flp_Mode >= 1)) THEN - RootMyb_Last(1) = 0 - LocalVar%rootMOOP(1) - RootMyb_Last(2) = 0 - LocalVar%rootMOOP(2) - RootMyb_Last(3) = 0 - LocalVar%rootMOOP(3) + LocalVar%RootMyb_Last(1) = 0 - LocalVar%rootMOOP(1) + LocalVar%RootMyb_Last(2) = 0 - LocalVar%rootMOOP(2) + LocalVar%RootMyb_Last(3) = 0 - LocalVar%rootMOOP(3) ! Initial Flap angle LocalVar%Flp_Angle(1) = CntrPar%Flp_Angle LocalVar%Flp_Angle(2) = CntrPar%Flp_Angle @@ -461,7 +460,7 @@ SUBROUTINE FlapControl(avrSWAP, CntrPar, LocalVar, objInst) RootMOOP_F(K) = SecLPFilter(LocalVar%rootMOOP(K),LocalVar%DT, CntrPar%F_FlpCornerFreq(1), CntrPar%F_FlpCornerFreq(2), LocalVar%FP, LocalVar%iStatus, LocalVar%restart,objInst%instSecLPF) ! Find derivative and derivative error of blade root bending moment - RootMyb_Vel(K) = (RootMOOP_F(K) - RootMyb_Last(K))/LocalVar%DT + RootMyb_Vel(K) = (RootMOOP_F(K) - LocalVar%RootMyb_Last(K))/LocalVar%DT RootMyb_VelErr(K) = 0 - RootMyb_Vel(K) ! Find flap angle command - includes an integral term to encourage zero flap angle @@ -470,7 +469,7 @@ SUBROUTINE FlapControl(avrSWAP, CntrPar, LocalVar, objInst) LocalVar%Flp_Angle(K) = saturate(LocalVar%Flp_Angle(K), -CntrPar%Flp_MaxPit, CntrPar%Flp_MaxPit) ! Save some data for next iteration - RootMyb_Last(K) = RootMOOP_F(K) + LocalVar%RootMyb_Last(K) = RootMOOP_F(K) END DO ENDIF From fc1c9ecdcf1b0ef076a22576f4d5ecda3cbb7abf Mon Sep 17 00:00:00 2001 From: Nikhar Abbas Date: Fri, 17 Dec 2021 13:21:34 -0700 Subject: [PATCH 011/218] ROSCO_IO - initial commit. Include restart and debug functions --- ROSCO/src/ROSCO_IO.f90 | 498 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 498 insertions(+) create mode 100644 ROSCO/src/ROSCO_IO.f90 diff --git a/ROSCO/src/ROSCO_IO.f90 b/ROSCO/src/ROSCO_IO.f90 new file mode 100644 index 00000000..8bc50901 --- /dev/null +++ b/ROSCO/src/ROSCO_IO.f90 @@ -0,0 +1,498 @@ +! Copyright 2019 NREL + +! Licensed under the Apache License, Version 2.0 (the "License"); you may not use +! this file except in compliance with the License. You may obtain a copy of the +! License at http://www.apache.org/licenses/LICENSE-2.0 + +! Unless required by applicable law or agreed to in writing, software distributed +! under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR +! CONDITIONS OF ANY KIND, either express or implied. See the License for the +! specific language governing permissions and limitations under the License. +! ------------------------------------------------------------------------------------------- +! This handles all of ROSCO's input/output files ~WITH THE EXCPETION~ of reading the primary +! input files. The DISCON.IN and Cp_Ct_Cq.txt files are handed in ReadSetParameters.f90 + +MODULE ROSCO_IO + USE, INTRINSIC :: ISO_C_Binding + USE ROSCO_Types + USE ReadSetParameters + IMPLICIT NONE +CONTAINS + SUBROUTINE WriteRestartFile(LocalVar, CntrPar, objInst, RootName, size_avcOUTNAME) + USE ROSCO_Types, ONLY : LocalVariables, ObjectInstances, ControlParameters + + TYPE(LocalVariables), INTENT(IN) :: LocalVar + TYPE(ControlParameters), INTENT(INOUT) :: CntrPar + TYPE(ObjectInstances), INTENT(INOUT) :: objInst + INTEGER(4), INTENT(IN) :: size_avcOUTNAME + CHARACTER(size_avcOUTNAME-1), INTENT(IN) :: RootName + + INTEGER(4), PARAMETER :: Un = 87 ! I/O unit for pack/unpack (checkpoint & restart) + INTEGER(4) :: I ! Generic index. + CHARACTER(128) :: InFile ! Input checkpoint file + INTEGER(4) :: ErrStat + CHARACTER(128) :: ErrMsg + CHARACTER(128) :: n_t_global ! timestep number as a string + + WRITE(n_t_global, '(I0.0)' ), NINT(LocalVar%Time/LocalVar%DT) + InFile = RootName(1:size_avcOUTNAME-5)//TRIM( n_t_global )//'.RO.chkp' + OPEN(unit=Un, FILE=TRIM(InFile), STATUS='UNKNOWN', FORM='UNFORMATTED' , ACCESS='STREAM', IOSTAT=ErrStat, ACTION='WRITE' ) + + IF ( ErrStat /= 0 ) THEN + ErrMsg = 'Cannot open file "'//TRIM( InFile )//'". Another program may have locked it for writing.' + + ELSE + ! From AVR SWAP + WRITE( Un, IOSTAT=ErrStat) LocalVar%iStatus + WRITE( Un, IOSTAT=ErrStat) LocalVar%Time + WRITE( Un, IOSTAT=ErrStat) LocalVar%DT + WRITE( Un, IOSTAT=ErrStat) LocalVar%VS_GenPwr + WRITE( Un, IOSTAT=ErrStat) LocalVar%GenSpeed + WRITE( Un, IOSTAT=ErrStat) LocalVar%RotSpeed + WRITE( Un, IOSTAT=ErrStat) LocalVar%Y_M + WRITE( Un, IOSTAT=ErrStat) LocalVar%HorWindV + WRITE( Un, IOSTAT=ErrStat) LocalVar%rootMOOP(1) + WRITE( Un, IOSTAT=ErrStat) LocalVar%rootMOOP(2) + WRITE( Un, IOSTAT=ErrStat) LocalVar%rootMOOP(3) + WRITE( Un, IOSTAT=ErrStat) LocalVar%BlPitch(1) + WRITE( Un, IOSTAT=ErrStat) LocalVar%BlPitch(2) + WRITE( Un, IOSTAT=ErrStat) LocalVar%BlPitch(3) + WRITE( Un, IOSTAT=ErrStat) LocalVar%Azimuth + WRITE( Un, IOSTAT=ErrStat) LocalVar%NumBl + WRITE( Un, IOSTAT=ErrStat) LocalVar%FA_Acc + WRITE( Un, IOSTAT=ErrStat) LocalVar%NacIMU_FA_Acc + ! Internal Control Variables + WRITE( Un, IOSTAT=ErrStat) LocalVar%FA_AccHPF + WRITE( Un, IOSTAT=ErrStat) LocalVar%FA_AccHPFI + WRITE( Un, IOSTAT=ErrStat) LocalVar%FA_PitCom(1) + WRITE( Un, IOSTAT=ErrStat) LocalVar%FA_PitCom(2) + WRITE( Un, IOSTAT=ErrStat) LocalVar%FA_PitCom(3) + WRITE( Un, IOSTAT=ErrStat) LocalVar%RotSpeedF + WRITE( Un, IOSTAT=ErrStat) LocalVar%GenSpeedF + WRITE( Un, IOSTAT=ErrStat) LocalVar%GenTq + WRITE( Un, IOSTAT=ErrStat) LocalVar%GenTqMeas + WRITE( Un, IOSTAT=ErrStat) LocalVar%GenArTq + WRITE( Un, IOSTAT=ErrStat) LocalVar%GenBrTq + WRITE( Un, IOSTAT=ErrStat) LocalVar%IPC_PitComF(1) + WRITE( Un, IOSTAT=ErrStat) LocalVar%IPC_PitComF(2) + WRITE( Un, IOSTAT=ErrStat) LocalVar%IPC_PitComF(3) + WRITE( Un, IOSTAT=ErrStat) LocalVar%IPC_IntAxisTilt_1P + WRITE( Un, IOSTAT=ErrStat) LocalVar%IPC_IntAxisYaw_1P + WRITE( Un, IOSTAT=ErrStat) LocalVar%IPC_IntAxisTilt_2P + WRITE( Un, IOSTAT=ErrStat) LocalVar%IPC_IntAxisYaw_2P + WRITE( Un, IOSTAT=ErrStat) LocalVar%PC_KP + WRITE( Un, IOSTAT=ErrStat) LocalVar%PC_KI + WRITE( Un, IOSTAT=ErrStat) LocalVar%PC_KD + WRITE( Un, IOSTAT=ErrStat) LocalVar%PC_TF + WRITE( Un, IOSTAT=ErrStat) LocalVar%PC_MaxPit + WRITE( Un, IOSTAT=ErrStat) LocalVar%PC_MinPit + WRITE( Un, IOSTAT=ErrStat) LocalVar%PC_PitComT + WRITE( Un, IOSTAT=ErrStat) LocalVar%PC_PitComT_Last + WRITE( Un, IOSTAT=ErrStat) LocalVar%PC_PitComTF + WRITE( Un, IOSTAT=ErrStat) LocalVar%PC_PitComT_IPC(1) + WRITE( Un, IOSTAT=ErrStat) LocalVar%PC_PitComT_IPC(2) + WRITE( Un, IOSTAT=ErrStat) LocalVar%PC_PitComT_IPC(3) + WRITE( Un, IOSTAT=ErrStat) LocalVar%PC_PwrErr + WRITE( Un, IOSTAT=ErrStat) LocalVar%PC_SpdErr + WRITE( Un, IOSTAT=ErrStat) LocalVar%PC_State + WRITE( Un, IOSTAT=ErrStat) LocalVar%PitCom(1) + WRITE( Un, IOSTAT=ErrStat) LocalVar%PitCom(2) + WRITE( Un, IOSTAT=ErrStat) LocalVar%PitCom(3) + WRITE( Un, IOSTAT=ErrStat) LocalVar%SS_DelOmegaF + WRITE( Un, IOSTAT=ErrStat) LocalVar%TestType + WRITE( Un, IOSTAT=ErrStat) LocalVar%VS_MaxTq + WRITE( Un, IOSTAT=ErrStat) LocalVar%VS_LastGenTrq + WRITE( Un, IOSTAT=ErrStat) LocalVar%VS_LastGenPwr + WRITE( Un, IOSTAT=ErrStat) LocalVar%VS_MechGenPwr + WRITE( Un, IOSTAT=ErrStat) LocalVar%VS_SpdErrAr + WRITE( Un, IOSTAT=ErrStat) LocalVar%VS_SpdErrBr + WRITE( Un, IOSTAT=ErrStat) LocalVar%VS_SpdErr + WRITE( Un, IOSTAT=ErrStat) LocalVar%VS_State + WRITE( Un, IOSTAT=ErrStat) LocalVar%VS_Rgn3Pitch + WRITE( Un, IOSTAT=ErrStat) LocalVar%WE_Vw + WRITE( Un, IOSTAT=ErrStat) LocalVar%WE_Vw_F + WRITE( Un, IOSTAT=ErrStat) LocalVar%WE_VwI + WRITE( Un, IOSTAT=ErrStat) LocalVar%WE_VwIdot + WRITE( Un, IOSTAT=ErrStat) LocalVar%VS_LastGenTrqF + WRITE( Un, IOSTAT=ErrStat) LocalVar%Y_AccErr + WRITE( Un, IOSTAT=ErrStat) LocalVar%Y_ErrLPFFast + WRITE( Un, IOSTAT=ErrStat) LocalVar%Y_ErrLPFSlow + WRITE( Un, IOSTAT=ErrStat) LocalVar%Y_MErr + WRITE( Un, IOSTAT=ErrStat) LocalVar%Y_YawEndT + WRITE( Un, IOSTAT=ErrStat) LocalVar%SD + WRITE( Un, IOSTAT=ErrStat) LocalVar%Fl_PitCom + WRITE( Un, IOSTAT=ErrStat) LocalVar%NACIMU_FA_AccF + WRITE( Un, IOSTAT=ErrStat) LocalVar%FA_AccF + WRITE( Un, IOSTAT=ErrStat) LocalVar%Flp_Angle(1) + WRITE( Un, IOSTAT=ErrStat) LocalVar%Flp_Angle(2) + WRITE( Un, IOSTAT=ErrStat) LocalVar%Flp_Angle(3) + WRITE( Un, IOSTAT=ErrStat) LocalVar%RootMyb_Last(1) + WRITE( Un, IOSTAT=ErrStat) LocalVar%RootMyb_Last(2) + WRITE( Un, IOSTAT=ErrStat) LocalVar%RootMyb_Last(3) + WRITE( Un, IOSTAT=ErrStat) LocalVar%ACC_INFILE_SIZE + WRITE( Un, IOSTAT=ErrStat) LocalVar%ACC_INFILE + WRITE( Un, IOSTAT=ErrStat) LocalVar%restart + + WRITE( Un, IOSTAT=ErrStat) LocalVar%WE%om_r + WRITE( Un, IOSTAT=ErrStat) LocalVar%WE%v_t + WRITE( Un, IOSTAT=ErrStat) LocalVar%WE%v_m + WRITE( Un, IOSTAT=ErrStat) LocalVar%WE%v_h + WRITE( Un, IOSTAT=ErrStat) LocalVar%WE%P + WRITE( Un, IOSTAT=ErrStat) LocalVar%WE%xh + WRITE( Un, IOSTAT=ErrStat) LocalVar%WE%K + + WRITE( Un, IOSTAT=ErrStat) objInst%instLPF + WRITE( Un, IOSTAT=ErrStat) objInst%instSecLPF + WRITE( Un, IOSTAT=ErrStat) objInst%instHPF + WRITE( Un, IOSTAT=ErrStat) objInst%instNotchSlopes + WRITE( Un, IOSTAT=ErrStat) objInst%instNotch + WRITE( Un, IOSTAT=ErrStat) objInst%instPI + + WRITE( Un, IOSTAT=ErrStat) LocalVar%FP%lpf1_a1 + WRITE( Un, IOSTAT=ErrStat) LocalVar%FP%lpf1_a0 + WRITE( Un, IOSTAT=ErrStat) LocalVar%FP%lpf1_b1 + WRITE( Un, IOSTAT=ErrStat) LocalVar%FP%lpf1_b0 + WRITE( Un, IOSTAT=ErrStat) LocalVar%FP%lpf1_InputSignalLast + WRITE( Un, IOSTAT=ErrStat) LocalVar%FP%lpf1_OutputSignalLast + WRITE( Un, IOSTAT=ErrStat) LocalVar%FP%lpf2_a2 + WRITE( Un, IOSTAT=ErrStat) LocalVar%FP%lpf2_a1 + WRITE( Un, IOSTAT=ErrStat) LocalVar%FP%lpf2_a0 + WRITE( Un, IOSTAT=ErrStat) LocalVar%FP%lpf2_b2 + WRITE( Un, IOSTAT=ErrStat) LocalVar%FP%lpf2_b1 + WRITE( Un, IOSTAT=ErrStat) LocalVar%FP%lpf2_b0 + WRITE( Un, IOSTAT=ErrStat) LocalVar%FP%lpf2_InputSignalLast2 + WRITE( Un, IOSTAT=ErrStat) LocalVar%FP%lpf2_OutputSignalLast2 + WRITE( Un, IOSTAT=ErrStat) LocalVar%FP%lpf2_InputSignalLast1 + WRITE( Un, IOSTAT=ErrStat) LocalVar%FP%lpf2_OutputSignalLast1 + WRITE( un, IOSTAT=ErrStat) LocalVar%FP%hpf_InputSignalLast + WRITE( un, IOSTAT=ErrStat) LocalVar%FP%hpf_OutputSignalLast + WRITE( un, IOSTAT=ErrStat) LocalVar%FP%nfs_OutputSignalLast1 + WRITE( un, IOSTAT=ErrStat) LocalVar%FP%nfs_OutputSignalLast2 + WRITE( un, IOSTAT=ErrStat) LocalVar%FP%nfs_InputSignalLast1 + WRITE( un, IOSTAT=ErrStat) LocalVar%FP%nfs_InputSignalLast2 + WRITE( un, IOSTAT=ErrStat) LocalVar%FP%nfs_b2 + WRITE( un, IOSTAT=ErrStat) LocalVar%FP%nfs_b0 + WRITE( un, IOSTAT=ErrStat) LocalVar%FP%nfs_a2 + WRITE( un, IOSTAT=ErrStat) LocalVar%FP%nfs_a1 + WRITE( un, IOSTAT=ErrStat) LocalVar%FP%nfs_a0 + WRITE( un, IOSTAT=ErrStat) LocalVar%FP%nf_OutputSignalLast1 + WRITE( un, IOSTAT=ErrStat) LocalVar%FP%nf_OutputSignalLast2 + WRITE( un, IOSTAT=ErrStat) LocalVar%FP%nf_InputSignalLast1 + WRITE( un, IOSTAT=ErrStat) LocalVar%FP%nf_InputSignalLast2 + WRITE( un, IOSTAT=ErrStat) LocalVar%FP%nf_b2 + WRITE( un, IOSTAT=ErrStat) LocalVar%FP%nf_b1 + WRITE( un, IOSTAT=ErrStat) LocalVar%FP%nf_b0 + WRITE( un, IOSTAT=ErrStat) LocalVar%FP%nf_a1 + WRITE( un, IOSTAT=ErrStat) LocalVar%FP%nf_a0 + + WRITE( Un, IOSTAT=ErrStat) LocalVar%piP%ITerm + WRITE( Un, IOSTAT=ErrStat) LocalVar%piP%ITermLast + WRITE( Un, IOSTAT=ErrStat) LocalVar%piP%ITerm2 + WRITE( Un, IOSTAT=ErrStat) LocalVar%piP%ITermLast2 + + CLOSE ( Un ) + + ENDIF + + END SUBROUTINE WriteRestartFile + + SUBROUTINE ReadRestartFile(avrSWAP, LocalVar, CntrPar, objInst, PerfData, RootName, size_avcOUTNAME, ErrVar) + USE ROSCO_Types, ONLY : LocalVariables, ControlParameters, ObjectInstances, PerformanceData, ErrorVariables + + TYPE(LocalVariables), INTENT(INOUT) :: LocalVar + TYPE(ControlParameters), INTENT(INOUT) :: CntrPar + TYPE(ObjectInstances), INTENT(INOUT) :: objInst + TYPE(PerformanceData), INTENT(INOUT) :: PerfData + TYPE(ErrorVariables), INTENT(INOUT) :: ErrVar + + + REAL(C_FLOAT), INTENT(IN) :: avrSWAP(*) + INTEGER(4), INTENT(IN) :: size_avcOUTNAME + CHARACTER(size_avcOUTNAME-1), INTENT(IN) :: RootName + + INTEGER(4), PARAMETER :: Un = 87 ! I/O unit for pack/unpack (checkpoint & restart) + INTEGER(4) :: I ! Generic index. + INTEGER(4) :: ErrStat + CHARACTER(128) :: ErrMsg + CHARACTER(128) :: n_t_global ! timestep number as a string + CHARACTER(128) :: InFile ! Name of ROSCO checkpoint file + + WRITE(n_t_global, '(I0.0)' ), NINT(avrSWAP(2)/avrSWAP(3)) + InFile = RootName(1:size_avcOUTNAME-5)//TRIM( n_t_global )//'.RO.chkp' + OPEN(unit=Un, FILE=TRIM(InFile), STATUS='UNKNOWN', FORM='UNFORMATTED' , ACCESS='STREAM', IOSTAT=ErrStat, ACTION='READ' ) + + IF ( ErrStat /= 0 ) THEN + ErrMsg = 'Cannot open file "'//TRIM( InFile )//'". Another program may have locked it for writing.' + + ELSE + ! From AVR SWAP + READ( Un, IOSTAT=ErrStat) LocalVar%iStatus + READ( Un, IOSTAT=ErrStat) LocalVar%Time + READ( Un, IOSTAT=ErrStat) LocalVar%DT + READ( Un, IOSTAT=ErrStat) LocalVar%VS_GenPwr + READ( Un, IOSTAT=ErrStat) LocalVar%GenSpeed + READ( Un, IOSTAT=ErrStat) LocalVar%RotSpeed + READ( Un, IOSTAT=ErrStat) LocalVar%Y_M + READ( Un, IOSTAT=ErrStat) LocalVar%HorWindV + READ( Un, IOSTAT=ErrStat) LocalVar%rootMOOP(1) + READ( Un, IOSTAT=ErrStat) LocalVar%rootMOOP(2) + READ( Un, IOSTAT=ErrStat) LocalVar%rootMOOP(3) + READ( Un, IOSTAT=ErrStat) LocalVar%BlPitch(1) + READ( Un, IOSTAT=ErrStat) LocalVar%BlPitch(2) + READ( Un, IOSTAT=ErrStat) LocalVar%BlPitch(3) + READ( Un, IOSTAT=ErrStat) LocalVar%Azimuth + READ( Un, IOSTAT=ErrStat) LocalVar%NumBl + READ( Un, IOSTAT=ErrStat) LocalVar%FA_Acc + READ( Un, IOSTAT=ErrStat) LocalVar%NacIMU_FA_Acc + ! Internal Control Variables + READ( Un, IOSTAT=ErrStat) LocalVar%FA_AccHPF + READ( Un, IOSTAT=ErrStat) LocalVar%FA_AccHPFI + READ( Un, IOSTAT=ErrStat) LocalVar%FA_PitCom(1) + READ( Un, IOSTAT=ErrStat) LocalVar%FA_PitCom(2) + READ( Un, IOSTAT=ErrStat) LocalVar%FA_PitCom(3) + READ( Un, IOSTAT=ErrStat) LocalVar%RotSpeedF + READ( Un, IOSTAT=ErrStat) LocalVar%GenSpeedF + READ( Un, IOSTAT=ErrStat) LocalVar%GenTq + READ( Un, IOSTAT=ErrStat) LocalVar%GenTqMeas + READ( Un, IOSTAT=ErrStat) LocalVar%GenArTq + READ( Un, IOSTAT=ErrStat) LocalVar%GenBrTq + READ( Un, IOSTAT=ErrStat) LocalVar%IPC_PitComF(1) + READ( Un, IOSTAT=ErrStat) LocalVar%IPC_PitComF(2) + READ( Un, IOSTAT=ErrStat) LocalVar%IPC_PitComF(3) + READ( Un, IOSTAT=ErrStat) LocalVar%IPC_IntAxisTilt_1P + READ( Un, IOSTAT=ErrStat) LocalVar%IPC_IntAxisYaw_1P + READ( Un, IOSTAT=ErrStat) LocalVar%IPC_IntAxisTilt_2P + READ( Un, IOSTAT=ErrStat) LocalVar%IPC_IntAxisYaw_2P + READ( Un, IOSTAT=ErrStat) LocalVar%PC_KP + READ( Un, IOSTAT=ErrStat) LocalVar%PC_KI + READ( Un, IOSTAT=ErrStat) LocalVar%PC_KD + READ( Un, IOSTAT=ErrStat) LocalVar%PC_TF + READ( Un, IOSTAT=ErrStat) LocalVar%PC_MaxPit + READ( Un, IOSTAT=ErrStat) LocalVar%PC_MinPit + READ( Un, IOSTAT=ErrStat) LocalVar%PC_PitComT + READ( Un, IOSTAT=ErrStat) LocalVar%PC_PitComT_Last + READ( Un, IOSTAT=ErrStat) LocalVar%PC_PitComTF + READ( Un, IOSTAT=ErrStat) LocalVar%PC_PitComT_IPC(1) + READ( Un, IOSTAT=ErrStat) LocalVar%PC_PitComT_IPC(2) + READ( Un, IOSTAT=ErrStat) LocalVar%PC_PitComT_IPC(3) + READ( Un, IOSTAT=ErrStat) LocalVar%PC_PwrErr + READ( Un, IOSTAT=ErrStat) LocalVar%PC_SpdErr + READ( Un, IOSTAT=ErrStat) LocalVar%PC_State + READ( Un, IOSTAT=ErrStat) LocalVar%PitCom(1) + READ( Un, IOSTAT=ErrStat) LocalVar%PitCom(2) + READ( Un, IOSTAT=ErrStat) LocalVar%PitCom(3) + READ( Un, IOSTAT=ErrStat) LocalVar%SS_DelOmegaF + READ( Un, IOSTAT=ErrStat) LocalVar%TestType + READ( Un, IOSTAT=ErrStat) LocalVar%VS_MaxTq + READ( Un, IOSTAT=ErrStat) LocalVar%VS_LastGenTrq + READ( Un, IOSTAT=ErrStat) LocalVar%VS_LastGenPwr + READ( Un, IOSTAT=ErrStat) LocalVar%VS_MechGenPwr + READ( Un, IOSTAT=ErrStat) LocalVar%VS_SpdErrAr + READ( Un, IOSTAT=ErrStat) LocalVar%VS_SpdErrBr + READ( Un, IOSTAT=ErrStat) LocalVar%VS_SpdErr + READ( Un, IOSTAT=ErrStat) LocalVar%VS_State + READ( Un, IOSTAT=ErrStat) LocalVar%VS_Rgn3Pitch + READ( Un, IOSTAT=ErrStat) LocalVar%WE_Vw + READ( Un, IOSTAT=ErrStat) LocalVar%WE_Vw_F + READ( Un, IOSTAT=ErrStat) LocalVar%WE_VwI + READ( Un, IOSTAT=ErrStat) LocalVar%WE_VwIdot + READ( Un, IOSTAT=ErrStat) LocalVar%VS_LastGenTrqF + READ( Un, IOSTAT=ErrStat) LocalVar%Y_AccErr + READ( Un, IOSTAT=ErrStat) LocalVar%Y_ErrLPFFast + READ( Un, IOSTAT=ErrStat) LocalVar%Y_ErrLPFSlow + READ( Un, IOSTAT=ErrStat) LocalVar%Y_MErr + READ( Un, IOSTAT=ErrStat) LocalVar%Y_YawEndT + READ( Un, IOSTAT=ErrStat) LocalVar%SD + READ( Un, IOSTAT=ErrStat) LocalVar%Fl_PitCom + READ( Un, IOSTAT=ErrStat) LocalVar%NACIMU_FA_AccF + READ( Un, IOSTAT=ErrStat) LocalVar%FA_AccF + READ( Un, IOSTAT=ErrStat) LocalVar%Flp_Angle(1) + READ( Un, IOSTAT=ErrStat) LocalVar%Flp_Angle(2) + READ( Un, IOSTAT=ErrStat) LocalVar%Flp_Angle(3) + READ( Un, IOSTAT=ErrStat) LocalVar%RootMyb_Last(1) + READ( Un, IOSTAT=ErrStat) LocalVar%RootMyb_Last(2) + READ( Un, IOSTAT=ErrStat) LocalVar%RootMyb_Last(3) + READ( Un, IOSTAT=ErrStat) LocalVar%ACC_INFILE_SIZE + ALLOCATE(LocalVar%ACC_INFILE(LocalVar%ACC_INFILE_SIZE)) + READ( Un, IOSTAT=ErrStat) LocalVar%ACC_INFILE + READ( Un, IOSTAT=ErrStat) LocalVar%restart + + READ( Un, IOSTAT=ErrStat) LocalVar%WE%om_r + READ( Un, IOSTAT=ErrStat) LocalVar%WE%v_t + READ( Un, IOSTAT=ErrStat) LocalVar%WE%v_m + READ( Un, IOSTAT=ErrStat) LocalVar%WE%v_h + READ( Un, IOSTAT=ErrStat) LocalVar%WE%P + READ( Un, IOSTAT=ErrStat) LocalVar%WE%xh + READ( Un, IOSTAT=ErrStat) LocalVar%WE%K + + READ( Un, IOSTAT=ErrStat) objInst%instLPF + READ( Un, IOSTAT=ErrStat) objInst%instSecLPF + READ( Un, IOSTAT=ErrStat) objInst%instHPF + READ( Un, IOSTAT=ErrStat) objInst%instNotchSlopes + READ( Un, IOSTAT=ErrStat) objInst%instNotch + READ( Un, IOSTAT=ErrStat) objInst%instPI + + READ( Un, IOSTAT=ErrStat) LocalVar%FP%lpf1_a1 + READ( Un, IOSTAT=ErrStat) LocalVar%FP%lpf1_a0 + READ( Un, IOSTAT=ErrStat) LocalVar%FP%lpf1_b1 + READ( Un, IOSTAT=ErrStat) LocalVar%FP%lpf1_b0 + READ( Un, IOSTAT=ErrStat) LocalVar%FP%lpf1_InputSignalLast + READ( Un, IOSTAT=ErrStat) LocalVar%FP%lpf1_OutputSignalLast + READ( Un, IOSTAT=ErrStat) LocalVar%FP%lpf2_a2 + READ( Un, IOSTAT=ErrStat) LocalVar%FP%lpf2_a1 + READ( Un, IOSTAT=ErrStat) LocalVar%FP%lpf2_a0 + READ( Un, IOSTAT=ErrStat) LocalVar%FP%lpf2_b2 + READ( Un, IOSTAT=ErrStat) LocalVar%FP%lpf2_b1 + READ( Un, IOSTAT=ErrStat) LocalVar%FP%lpf2_b0 + READ( Un, IOSTAT=ErrStat) LocalVar%FP%lpf2_InputSignalLast2 + READ( Un, IOSTAT=ErrStat) LocalVar%FP%lpf2_OutputSignalLast2 + READ( Un, IOSTAT=ErrStat) LocalVar%FP%lpf2_InputSignalLast1 + READ( Un, IOSTAT=ErrStat) LocalVar%FP%lpf2_OutputSignalLast1 + READ( un, IOSTAT=ErrStat) LocalVar%FP%hpf_InputSignalLast + READ( un, IOSTAT=ErrStat) LocalVar%FP%hpf_OutputSignalLast + READ( un, IOSTAT=ErrStat) LocalVar%FP%nfs_OutputSignalLast1 + READ( un, IOSTAT=ErrStat) LocalVar%FP%nfs_OutputSignalLast2 + READ( un, IOSTAT=ErrStat) LocalVar%FP%nfs_InputSignalLast1 + READ( un, IOSTAT=ErrStat) LocalVar%FP%nfs_InputSignalLast2 + READ( un, IOSTAT=ErrStat) LocalVar%FP%nfs_b2 + READ( un, IOSTAT=ErrStat) LocalVar%FP%nfs_b0 + READ( un, IOSTAT=ErrStat) LocalVar%FP%nfs_a2 + READ( un, IOSTAT=ErrStat) LocalVar%FP%nfs_a1 + READ( un, IOSTAT=ErrStat) LocalVar%FP%nfs_a0 + READ( un, IOSTAT=ErrStat) LocalVar%FP%nf_OutputSignalLast1 + READ( un, IOSTAT=ErrStat) LocalVar%FP%nf_OutputSignalLast2 + READ( un, IOSTAT=ErrStat) LocalVar%FP%nf_InputSignalLast1 + READ( un, IOSTAT=ErrStat) LocalVar%FP%nf_InputSignalLast2 + READ( un, IOSTAT=ErrStat) LocalVar%FP%nf_b2 + READ( un, IOSTAT=ErrStat) LocalVar%FP%nf_b1 + READ( un, IOSTAT=ErrStat) LocalVar%FP%nf_b0 + READ( un, IOSTAT=ErrStat) LocalVar%FP%nf_a1 + READ( un, IOSTAT=ErrStat) LocalVar%FP%nf_a0 + + READ( Un, IOSTAT=ErrStat) LocalVar%piP%ITerm + READ( Un, IOSTAT=ErrStat) LocalVar%piP%ITermLast + READ( Un, IOSTAT=ErrStat) LocalVar%piP%ITerm2 + READ( Un, IOSTAT=ErrStat) LocalVar%piP%ITermLast2 + + CLOSE ( Un ) + ENDIF + + ! Read Parameter files + CALL ReadControlParameterFileSub(CntrPar, LocalVar%ACC_INFILE, LocalVar%ACC_INFILE_SIZE, ErrVar) + IF (CntrPar%WE_Mode > 0) THEN + CALL READCpFile(CntrPar, PerfData, ErrVar) + ENDIF + + END SUBROUTINE ReadRestartFile + +!------------------------------------------------------------------------------------------------------------------------------- + SUBROUTINE Debug(LocalVar, CntrPar, DebugVar, avrSWAP, RootName, size_avcOUTNAME) + ! Debug routine, defines what gets printed to DEBUG.dbg if LoggingLevel = 1 + + USE, INTRINSIC :: ISO_C_Binding + USE ROSCO_Types, ONLY : LocalVariables, ControlParameters, DebugVariables + + IMPLICIT NONE + + TYPE(ControlParameters), INTENT(IN) :: CntrPar + TYPE(LocalVariables), INTENT(IN) :: LocalVar + TYPE(DebugVariables), INTENT(IN) :: DebugVar + + INTEGER(IntKi), INTENT(IN) :: size_avcOUTNAME + INTEGER(IntKi) :: I , nDebugOuts ! Generic index. + CHARACTER(1), PARAMETER :: Tab = CHAR(9) ! The tab character. + CHARACTER(29), PARAMETER :: FmtDat = "(F10.3,TR5,99(ES10.3E2,TR5:))" ! The format of the debugging data + INTEGER(IntKi), PARAMETER :: UnDb = 85 ! I/O unit for the debugging information + INTEGER(IntKi), PARAMETER :: UnDb2 = 86 ! I/O unit for the debugging information, avrSWAP + REAL(ReKi), 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] + CHARACTER(200) :: Version ! git version of ROSCO + CHARACTER(10) :: DebugOutStr1, DebugOutStr2, DebugOutStr3, DebugOutStr4, DebugOutStr5, & + DebugOutStr6, DebugOutStr7, DebugOutStr8, DebugOutStr9, DebugOutStr10, & + DebugOutStr11, DebugOutStr12, DebugOutStr13, DebugOutStr14, DebugOutStr15, & + DebugOutStr16, DebugOutStr17, DebugOutStr18, DebugOutStr19, DebugOutStr20 + CHARACTER(10) :: DebugOutUni1, DebugOutUni2, DebugOutUni3, DebugOutUni4, DebugOutUni5, & + DebugOutUni6, DebugOutUni7, DebugOutUni8, DebugOutUni9, DebugOutUni10, & + DebugOutUni11, DebugOutUni12, DebugOutUni13, DebugOutUni14, DebugOutUni15, & + DebugOutUni16, DebugOutUni17, DebugOutUni18, DebugOutUni19, DebugOutUni20 + CHARACTER(10), ALLOCATABLE :: DebugOutStrings(:), DebugOutUnits(:) + REAL(DbKi), ALLOCATABLE :: DebugOutData(:) + + ! Set up Debug Strings and Data + ! Note that Debug strings have 10 character limit + nDebugOuts = 18 + ALLOCATE(DebugOutData(nDebugOuts)) + ! Header Unit Variable + ! Filters + DebugOutStr1 = 'FA_AccF'; DebugOutUni1 = '(rad/s^2)'; DebugOutData(1) = LocalVar%NacIMU_FA_AccF + DebugOutStr2 = 'FA_AccR'; DebugOutUni2 = '(rad/s^2)'; DebugOutData(2) = LocalVar%NacIMU_FA_Acc + DebugOutStr3 = 'RotSpeed'; DebugOutUni3 = '(rad/s)'; DebugOutData(3) = LocalVar%RotSpeed + DebugOutStr4 = 'RotSpeedF'; DebugOutUni4 = '(rad/s)'; DebugOutData(4) = LocalVar%RotSpeedF + DebugOutStr5 = 'GenSpeed'; DebugOutUni5 = '(rad/s)'; DebugOutData(5) = LocalVar%GenSpeed + DebugOutStr6 = 'GenSpeedF'; DebugOutUni6 = '(rad/s)'; DebugOutData(6) = LocalVar%GenSpeedF + ! Floating + DebugOutStr7 = 'FA_Acc'; DebugOutUni7 = '(m/s^2)'; DebugOutData(7) = LocalVar%FA_Acc + DebugOutStr8 = 'Fl_Pitcom'; DebugOutUni8 = '(rad)'; DebugOutData(8) = LocalVar%Fl_Pitcom + DebugOutStr9 = 'PC_MinPit'; DebugOutUni9 = '(rad)'; DebugOutData(9) = LocalVar%PC_MinPit + DebugOutStr10 = 'SS_dOmF'; DebugOutUni10 = '(rad/s)'; DebugOutData(10) = LocalVar%SS_DelOmegaF + ! WSE + DebugOutStr11 = 'WE_Vw'; DebugOutUni11 = '(m/s)'; DebugOutData(11) = LocalVar%WE_Vw + DebugOutStr12 = 'WE_b'; DebugOutUni12 = '(deg)'; DebugOutData(12) = DebugVar%WE_b + DebugOutStr13 = 'WE_t'; DebugOutUni13 = '(Nm)'; DebugOutData(13) = DebugVar%WE_t + DebugOutStr14 = 'WE_w'; DebugOutUni14 = '(rad/s)'; DebugOutData(14) = DebugVar%WE_w + DebugOutStr15 = 'WE_Vm'; DebugOutUni15 = '(m/s)'; DebugOutData(15) = DebugVar%WE_Vm + DebugOutStr16 = 'WE_Vt'; DebugOutUni16 = '(m/s)'; DebugOutData(16) = DebugVar%WE_Vt + DebugOutStr17 = 'WE_lambda'; DebugOutUni17 = '(-)'; DebugOutData(17) = DebugVar%WE_lambda + DebugOutStr18 = 'WE_Cp'; DebugOutUni18 = '(-)'; DebugOutData(18) = DebugVar%WE_Cp + + Allocate(DebugOutStrings(nDebugOuts)) + Allocate(DebugOutUnits(nDebugOuts)) + DebugOutStrings = [CHARACTER(10) :: DebugOutStr1, DebugOutStr2, DebugOutStr3, DebugOutStr4, & + DebugOutStr5, DebugOutStr6, DebugOutStr7, DebugOutStr8, & + DebugOutStr9, DebugOutStr10, DebugOutStr11, DebugOutStr12, & + DebugOutStr13, DebugOutStr14, DebugOutStr15, DebugOutStr16, & + DebugOutStr17, DebugOutStr18] + DebugOutUnits = [CHARACTER(10) :: DebugOutUni1, DebugOutUni2, DebugOutUni3, DebugOutUni4, & + DebugOutUni5, DebugOutUni6, DebugOutUni7, DebugOutUni8, & + DebugOutUni9, DebugOutUni10, DebugOutUni11, DebugOutUni12, & + DebugOutUni13, DebugOutUni14, DebugOutUni15, DebugOutUni1, & + DebugOutUni17, DebugOutUni18] + + ! Initialize debug file + IF ((LocalVar%iStatus == 0) .OR. (LocalVar%iStatus == -8)) THEN ! .TRUE. if we're on the first call to the DLL + ! If we're debugging, open the debug file and write the header: + ! Note that the headers will be Truncated to 10 characters!! + IF (CntrPar%LoggingLevel > 0) THEN + OPEN(unit=UnDb, FILE=RootName(1:size_avcOUTNAME-5)//'RO.dbg') + WRITE (UnDb,*) 'Generated on '//CurDate()//' at '//CurTime()//' using ROSCO-'//TRIM(rosco_version) + WRITE (UnDb,'(99(a10,TR5:))') 'Time', DebugOutStrings + WRITE (UnDb,'(99(a10,TR5:))') '(sec)', DebugOutUnits + END IF + + IF (CntrPar%LoggingLevel > 1) THEN + OPEN(unit=UnDb2, FILE=RootName(1:size_avcOUTNAME-5)//'RO.dbg2') + 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_DbKi) == 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') + END IF + + ENDIF + + ! Write debug files + IF (CntrPar%LoggingLevel > 0) THEN + WRITE (UnDb,FmtDat) LocalVar%Time, DebugOutData + END IF + + IF (CntrPar%LoggingLevel > 1) THEN + WRITE (UnDb2,FmtDat) LocalVar%Time, avrSWAP(1:85) + END IF + + END SUBROUTINE Debug + +END MODULE ROSCO_IO \ No newline at end of file From 2025565b368317ccf346dbdbea52254f50648c76 Mon Sep 17 00:00:00 2001 From: Nikhar Abbas Date: Fri, 17 Dec 2021 13:21:44 -0700 Subject: [PATCH 012/218] Use ROSCO IO and call restart functions --- ROSCO/src/DISCON.F90 | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/ROSCO/src/DISCON.F90 b/ROSCO/src/DISCON.F90 index 84c5820b..1f3b9550 100644 --- a/ROSCO/src/DISCON.F90 +++ b/ROSCO/src/DISCON.F90 @@ -25,6 +25,7 @@ SUBROUTINE DISCON(avrSWAP, aviFAIL, accINFILE, avcOUTNAME, avcMSG) BIND (C, NAME USE :: Constants USE :: Filters USE :: Functions +USE :: ROSCO_IO IMPLICIT NONE ! Enable .dll export @@ -62,6 +63,12 @@ SUBROUTINE DISCON(avrSWAP, aviFAIL, accINFILE, avcOUTNAME, avcMSG) BIND (C, NAME !------------------------------------------------------------------------------------------------------------------------------ ! Main control calculations !------------------------------------------------------------------------------------------------------------------------------ + +! Check for restart +IF ( (NINT(avrSWAP(1)) == -9) .AND. (aviFAIL >= 0)) THEN ! Read restart files + CALL ReadRestartFile(avrSWAP, LocalVar, CntrPar, objInst, PerfData, RootName, SIZE(avcOUTNAME), ErrVar) +END IF + ! Read avrSWAP array into derived types/variables CALL ReadAvrSWAP(avrSWAP, LocalVar) @@ -71,12 +78,11 @@ SUBROUTINE DISCON(avrSWAP, aviFAIL, accINFILE, avcOUTNAME, avcMSG) BIND (C, NAME ! Filter signals CALL PreFilterMeasuredSignals(CntrPar, LocalVar, objInst, ErrVar) -IF ((LocalVar%iStatus >= 0) .AND. (ErrVar%aviFAIL >= 0)) THEN ! Only compute control calculations if no error has occurred and we are not on the last time step +IF (((LocalVar%iStatus >= 0) .OR. (LocalVar%iStatus <= -9)) .AND. (ErrVar%aviFAIL >= 0)) THEN ! Only compute control calculations if no error has occurred and we are not on the last time step CALL WindSpeedEstimator(LocalVar, CntrPar, objInst, PerfData, DebugVar, ErrVar) CALL ComputeVariablesSetpoints(CntrPar, LocalVar, objInst) CALL StateMachine(CntrPar, LocalVar) CALL SetpointSmoother(LocalVar, CntrPar, objInst) - CALL ComputeVariablesSetpoints(CntrPar, LocalVar, objInst) CALL VariableSpeedControl(avrSWAP, CntrPar, LocalVar, objInst, ErrVar) CALL PitchControl(avrSWAP, CntrPar, LocalVar, objInst, DebugVar, ErrVar) @@ -91,7 +97,12 @@ SUBROUTINE DISCON(avrSWAP, aviFAIL, accINFILE, avcOUTNAME, avcMSG) BIND (C, NAME IF (CntrPar%LoggingLevel > 0) THEN CALL Debug(LocalVar, CntrPar, DebugVar, avrSWAP, RootName, SIZE(avcOUTNAME)) END IF -END IF + +ELSEIF ((LocalVar%iStatus == -8) .AND. (ErrVar%aviFAIL >= 0)) THEN ! Write restart files + CALL WriteRestartFile(LocalVar, CntrPar, objInst, RootName, SIZE(avcOUTNAME)) + CALL Debug(LocalVar, CntrPar, DebugVar, avrSWAP, RootName, SIZE(avcOUTNAME)) + +ENDIF ! Add RoutineName to error message IF (ErrVar%aviFAIL < 0) THEN From 915922aa7429fdb05a91f115479c0738a84c5ac6 Mon Sep 17 00:00:00 2001 From: Nikhar Abbas Date: Fri, 17 Dec 2021 13:21:56 -0700 Subject: [PATCH 013/218] Remove debug from function.f90 --- ROSCO/src/Functions.f90 | 110 ---------------------------------------- 1 file changed, 110 deletions(-) diff --git a/ROSCO/src/Functions.f90 b/ROSCO/src/Functions.f90 index 53338f46..18bb27df 100644 --- a/ROSCO/src/Functions.f90 +++ b/ROSCO/src/Functions.f90 @@ -540,116 +540,6 @@ REAL(DbKi) FUNCTION AeroDynTorque(RotSpeed, BldPitch, LocalVar, CntrPar, PerfDat END FUNCTION AeroDynTorque -!------------------------------------------------------------------------------------------------------------------------------- - SUBROUTINE Debug(LocalVar, CntrPar, DebugVar, avrSWAP, RootName, size_avcOUTNAME) - ! Debug routine, defines what gets printed to DEBUG.dbg if LoggingLevel = 1 - - USE, INTRINSIC :: ISO_C_Binding - USE ROSCO_Types, ONLY : LocalVariables, ControlParameters, DebugVariables - - IMPLICIT NONE - - TYPE(ControlParameters), INTENT(IN) :: CntrPar - TYPE(LocalVariables), INTENT(IN) :: LocalVar - TYPE(DebugVariables), INTENT(IN) :: DebugVar - - INTEGER(IntKi), INTENT(IN) :: size_avcOUTNAME - INTEGER(IntKi) :: I , nDebugOuts ! Generic index. - CHARACTER(1), PARAMETER :: Tab = CHAR(9) ! The tab character. - CHARACTER(29), PARAMETER :: FmtDat = "(F10.3,TR5,99(ES10.3E2,TR5:))" ! The format of the debugging data - INTEGER(IntKi), PARAMETER :: UnDb = 85 ! I/O unit for the debugging information - INTEGER(IntKi), PARAMETER :: UnDb2 = 86 ! I/O unit for the debugging information, avrSWAP - REAL(ReKi), 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] - CHARACTER(200) :: Version ! git version of ROSCO - CHARACTER(10) :: DebugOutStr1, DebugOutStr2, DebugOutStr3, DebugOutStr4, DebugOutStr5, & - DebugOutStr6, DebugOutStr7, DebugOutStr8, DebugOutStr9, DebugOutStr10, & - DebugOutStr11, DebugOutStr12, DebugOutStr13, DebugOutStr14, DebugOutStr15, & - DebugOutStr16, DebugOutStr17, DebugOutStr18, DebugOutStr19, DebugOutStr20 - CHARACTER(10) :: DebugOutUni1, DebugOutUni2, DebugOutUni3, DebugOutUni4, DebugOutUni5, & - DebugOutUni6, DebugOutUni7, DebugOutUni8, DebugOutUni9, DebugOutUni10, & - DebugOutUni11, DebugOutUni12, DebugOutUni13, DebugOutUni14, DebugOutUni15, & - DebugOutUni16, DebugOutUni17, DebugOutUni18, DebugOutUni19, DebugOutUni20 - CHARACTER(10), ALLOCATABLE :: DebugOutStrings(:), DebugOutUnits(:) - REAL(DbKi), ALLOCATABLE :: DebugOutData(:) - - ! Set up Debug Strings and Data - ! Note that Debug strings have 10 character limit - nDebugOuts = 18 - ALLOCATE(DebugOutData(nDebugOuts)) - ! Header Unit Variable - ! Filters - DebugOutStr1 = 'FA_AccF'; DebugOutUni1 = '(rad/s^2)'; DebugOutData(1) = LocalVar%NacIMU_FA_AccF - DebugOutStr2 = 'FA_AccR'; DebugOutUni2 = '(rad/s^2)'; DebugOutData(2) = LocalVar%NacIMU_FA_Acc - DebugOutStr3 = 'RotSpeed'; DebugOutUni3 = '(rad/s)'; DebugOutData(3) = LocalVar%RotSpeed - DebugOutStr4 = 'RotSpeedF'; DebugOutUni4 = '(rad/s)'; DebugOutData(4) = LocalVar%RotSpeedF - DebugOutStr5 = 'GenSpeed'; DebugOutUni5 = '(rad/s)'; DebugOutData(5) = LocalVar%GenSpeed - DebugOutStr6 = 'GenSpeedF'; DebugOutUni6 = '(rad/s)'; DebugOutData(6) = LocalVar%GenSpeedF - ! Floating - DebugOutStr7 = 'FA_Acc'; DebugOutUni7 = '(m/s^2)'; DebugOutData(7) = LocalVar%FA_Acc - DebugOutStr8 = 'Fl_Pitcom'; DebugOutUni8 = '(rad)'; DebugOutData(8) = LocalVar%Fl_Pitcom - DebugOutStr9 = 'PC_MinPit'; DebugOutUni9 = '(rad)'; DebugOutData(9) = LocalVar%PC_MinPit - DebugOutStr10 = 'SS_dOmF'; DebugOutUni10 = '(rad/s)'; DebugOutData(10) = LocalVar%SS_DelOmegaF - ! WSE - DebugOutStr11 = 'WE_Vw'; DebugOutUni11 = '(m/s)'; DebugOutData(11) = LocalVar%WE_Vw - DebugOutStr12 = 'WE_b'; DebugOutUni12 = '(deg)'; DebugOutData(12) = DebugVar%WE_b - DebugOutStr13 = 'WE_t'; DebugOutUni13 = '(Nm)'; DebugOutData(13) = DebugVar%WE_t - DebugOutStr14 = 'WE_w'; DebugOutUni14 = '(rad/s)'; DebugOutData(14) = DebugVar%WE_w - DebugOutStr15 = 'WE_Vm'; DebugOutUni15 = '(m/s)'; DebugOutData(15) = DebugVar%WE_Vm - DebugOutStr16 = 'WE_Vt'; DebugOutUni16 = '(m/s)'; DebugOutData(16) = DebugVar%WE_Vt - DebugOutStr17 = 'WE_lambda'; DebugOutUni17 = '(-)'; DebugOutData(17) = DebugVar%WE_lambda - DebugOutStr18 = 'WE_Cp'; DebugOutUni18 = '(-)'; DebugOutData(18) = DebugVar%WE_Cp - - Allocate(DebugOutStrings(nDebugOuts)) - Allocate(DebugOutUnits(nDebugOuts)) - DebugOutStrings = [CHARACTER(10) :: DebugOutStr1, DebugOutStr2, DebugOutStr3, DebugOutStr4, & - DebugOutStr5, DebugOutStr6, DebugOutStr7, DebugOutStr8, & - DebugOutStr9, DebugOutStr10, DebugOutStr11, DebugOutStr12, & - DebugOutStr13, DebugOutStr14, DebugOutStr15, DebugOutStr16, & - DebugOutStr17, DebugOutStr18] - DebugOutUnits = [CHARACTER(10) :: DebugOutUni1, DebugOutUni2, DebugOutUni3, DebugOutUni4, & - DebugOutUni5, DebugOutUni6, DebugOutUni7, DebugOutUni8, & - DebugOutUni9, DebugOutUni10, DebugOutUni11, DebugOutUni12, & - DebugOutUni13, DebugOutUni14, DebugOutUni15, DebugOutUni1, & - DebugOutUni17, DebugOutUni18] - - ! 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: - ! Note that the headers will be Truncated to 10 characters!! - IF (CntrPar%LoggingLevel > 0) THEN - OPEN(unit=UnDb, FILE=RootName(1:size_avcOUTNAME-5)//'RO.dbg') - WRITE (UnDb,*) 'Generated on '//CurDate()//' at '//CurTime()//' using ROSCO-'//TRIM(rosco_version) - WRITE (UnDb,'(99(a10,TR5:))') 'Time', DebugOutStrings - WRITE (UnDb,'(99(a10,TR5:))') '(sec)', DebugOutUnits - END IF - - IF (CntrPar%LoggingLevel > 1) THEN - OPEN(unit=UnDb2, FILE=RootName(1:size_avcOUTNAME-5)//'RO.dbg2') - 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_DbKi) == 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') - END IF - - ENDIF - - ! Write debug files - IF (CntrPar%LoggingLevel > 0) THEN - WRITE (UnDb,FmtDat) LocalVar%Time, DebugOutData - END IF - - IF (CntrPar%LoggingLevel > 1) THEN - WRITE (UnDb2,FmtDat) LocalVar%Time, avrSWAP(1:85) - END IF - - END SUBROUTINE Debug - !------------------------------------------------------------------------------------------------------------------------------- ! Copied from NWTC_IO.f90 From 680034402805c6d89f7ad5a4c00c0ff25e9972aa Mon Sep 17 00:00:00 2001 From: Nikhar Abbas Date: Fri, 17 Dec 2021 13:22:17 -0700 Subject: [PATCH 014/218] Save ACC Infile info --- ROSCO/src/ReadSetParameters.f90 | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/ROSCO/src/ReadSetParameters.f90 b/ROSCO/src/ReadSetParameters.f90 index 1b03967a..af90de9e 100644 --- a/ROSCO/src/ReadSetParameters.f90 +++ b/ROSCO/src/ReadSetParameters.f90 @@ -82,7 +82,7 @@ SUBROUTINE ReadAvrSWAP(avrSWAP, LocalVar) ELSE LocalVar%restart = .False. ENDIF - + END SUBROUTINE ReadAvrSWAP ! ----------------------------------------------------------------------------------- ! Define parameters for control actions @@ -147,7 +147,12 @@ SUBROUTINE SetParameters(avrSWAP, accINFILE, size_avcMSG, CntrPar, LocalVar, obj 'Developed in collaboration: National Renewable Energy Laboratory '//NEW_LINE('A')// & ' Delft University of Technology, The Netherlands '//NEW_LINE('A')// & '------------------------------------------------------------------------------' + ! Specifically save accINFILE info (DISCON.IN) + LocalVar%ACC_INFILE_SIZE = NINT(avrSWAP(50)) + Allocate(LocalVar%ACC_INFILE(LocalVar%ACC_INFILE_SIZE)) + LocalVar%ACC_INFILE = accINFILE + ! Read Control Parameter File CALL ReadControlParameterFileSub(CntrPar, accINFILE, NINT(avrSWAP(50)),ErrVar) ! If there's been an file reading error, don't continue ! Add RoutineName to error message From 92e27bb929c0823d9805349eaabf855a2c02918a Mon Sep 17 00:00:00 2001 From: Nikhar Abbas Date: Fri, 17 Dec 2021 14:24:27 -0700 Subject: [PATCH 015/218] update for restart capabilities --- ROSCO/rosco_registry/rosco_types.yaml | 281 +++++++++++++++++++++++-- ROSCO/rosco_registry/write_registry.py | 33 ++- ROSCO/src/ROSCO_Types.f90 | 95 +++++++-- 3 files changed, 364 insertions(+), 45 deletions(-) diff --git a/ROSCO/rosco_registry/rosco_types.yaml b/ROSCO/rosco_registry/rosco_types.yaml index 418dee80..9257db0d 100644 --- a/ROSCO/rosco_registry/rosco_types.yaml +++ b/ROSCO/rosco_registry/rosco_types.yaml @@ -8,7 +8,7 @@ default_types: real: &real type: real description: - shape: 1 # Use this if a higher-dimensional allocatable array (shape:2 --> REAL(8), DIMESION(:,:), ALLOCATABLE) + dimension: # Use this if a higher-dimensional allocatable array (dimension:(:,:) --> REAL(8), DIMESION(:,:), ALLOCATABLE) size: 0 # Use this if the type IS an array (size:3 --> REAL(8), BldPitch(3)) allocatable: False equals: @@ -17,6 +17,8 @@ default_types: description: allocatable: False size: 0 + length: + dimension: equals: logical: &logical type: logical @@ -43,6 +45,12 @@ default_types: description: size: 0 equals: + type: &derived_type + type: derived_type + id: + equals: + description: + ControlParameters: @@ -256,6 +264,7 @@ ControlParameters: PerfFileName: <<: *character description: File containing rotor performance tables (Cp,Ct,Cq) + length: 1024 PerfTableSize: <<: *integer description: Size of rotor performance tables, first number refers to number of blade pitch angles, second number referse to number of tip-speed ratios @@ -368,6 +377,7 @@ ControlParameters: OL_Filename: <<: *character description: Input file with open loop timeseries + length: 1024 OL_Mode: <<: *integer description: Open loop control mode {0 - no open loop control, 1 - open loop control vs. time, 2 - open loop control vs. wind speed} @@ -402,7 +412,7 @@ ControlParameters: OL_Channels: <<: *real allocatable: True - shape: 2 + dimension: (:,:) description: Open loop channels in timeseries # Calculated @@ -416,46 +426,235 @@ ControlParameters: <<: *real description: Minimum torque at the beginning of the below-rated region 2, [Nm] +WE: + om_r: + <<: *real + description: Estimated rotor speed [rad/s] + v_t: + <<: *real + description: Estimated wind speed, turbulent component [m/s] + v_m: + <<: *real + description: Estimated wind speed, 10-minute averaged [m/s] + v_h: + <<: *real + description: Combined estimated wind speed [m/s] + P: + <<: *real + dimension: (3,3) + description: Covariance estiamte + xh: + <<: *real + dimension: (3,1) + description: Estimated state matrix + K: + <<: *real + dimension: (3,1) + description: Kalman gain matrix + +FilterParameters: + lpf1_a1: + <<: *real + dimension: (99) + description: First order filter - Denominator coefficient 1 + lpf1_a0: + <<: *real + dimension: (99) + description: First order filter - Denominator coefficient 0 + lpf1_b1: + <<: *real + dimension: (99) + description: First order filter - Numerator coefficient 1 + lpf1_b0: + <<: *real + dimension: (99) + description: First order filter - Numerator coefficient 0 + lpf1_InputSignalLast: + <<: *real + dimension: (99) + description: First order filter - Previous input + lpf1_OutputSignalLast: + <<: *real + dimension: (99) + description: First order filter - Previous output + lpf2_a2: + <<: *real + dimension: (99) + description: Second order filter - Denominator coefficient 2 + lpf2_a1: + <<: *real + dimension: (99) + description: Second order filter - Denominator coefficient 1 + lpf2_a0: + <<: *real + dimension: (99) + description: Second order filter - Denominator coefficient 0 + lpf2_b2: + <<: *real + dimension: (99) + description: Second order filter - Numerator coefficient 2 + lpf2_b1: + <<: *real + dimension: (99) + description: Second order filter - Numerator coefficient 1 + lpf2_b0: + <<: *real + dimension: (99) + description: Second order filter - Numerator coefficient 0 + lpf2_InputSignalLast2: + <<: *real + dimension: (99) + description: Second order filter - Previous input 2 + lpf2_OutputSignalLast2: + <<: *real + dimension: (99) + description: Second order filter - Previous output 2 + lpf2_InputSignalLast1: + <<: *real + dimension: (99) + description: Second order filter - Previous input 1 + lpf2_OutputSignalLast1: + <<: *real + dimension: (99) + description: Second order filter - Previous output 1 + hpf_InputSignalLast: + <<: *real + dimension: (99) + description: High pass filter - Previous output 1 + hpf_OutputSignalLast: + <<: *real + dimension: (99) + description: High pass filter - Previous output 1 + nfs_OutputSignalLast1: + <<: *real + dimension: (99) + description: Notch filter slopes previous output 1 + nfs_OutputSignalLast2: + <<: *real + dimension: (99) + description: Notch filter slopes previous output 2 + nfs_InputSignalLast1: + <<: *real + dimension: (99) + description: Notch filter slopes previous input 1 + nfs_InputSignalLast2: + <<: *real + dimension: (99) + description: Notch filter slopes previous input 1 + nfs_b2: + <<: *real + dimension: (99) + description: Notch filter slopes numerator coefficient 2 + nfs_b0: + <<: *real + dimension: (99) + description: Notch filter slopes numerator coefficient 0 + nfs_a2: + <<: *real + dimension: (99) + description: Notch filter slopes denominator coefficient 2 + nfs_a1: + <<: *real + dimension: (99) + description: Notch filter slopes denominator coefficient 1 + nfs_a0: + <<: *real + dimension: (99) + description: Notch filter slopes denominator coefficient 0 + nf_OutputSignalLast1: + <<: *real + dimension: (99) + description: Notch filter previous output 1 + nf_OutputSignalLast2: + <<: *real + dimension: (99) + description: Notch filter previous output 2 + nf_InputSignalLast1: + <<: *real + dimension: (99) + description: Notch filter previous input 1 + nf_InputSignalLast2: + <<: *real + dimension: (99) + description: Notch filter previous input 2 + nf_b2: + <<: *real + dimension: (99) + description: Notch filter numerator coefficient 2 + nf_b1: + <<: *real + dimension: (99) + description: Notch filter numerator coefficient 1 + nf_b0: + <<: *real + dimension: (99) + description: Notch filter numerator coefficient 0 + nf_a1: + <<: *real + dimension: (99) + description: Notch filter denominator coefficient 1 + nf_a0: + <<: *real + dimension: (99) + description: Notch filter denominator coefficient 0 + +piParams: + ITerm: + <<: *real + dimension: (99) + description: Integrator term + ITermLast: + <<: *real + dimension: (99) + description: Previous integrator term + ITerm2: + <<: *real + dimension: (99) + description: Integrator term - second integrator + ITermLast2: + <<: *real + dimension: (99) + description: Previous integrator term - second integrator LocalVariables: iStatus: <<: *integer - description: + description: Initialization status Time: <<: *real - description: + description: Time [s] DT: <<: *real - description: + description: Time step [s] VS_GenPwr: <<: *real - description: + description: Generator power [W] GenSpeed: <<: *real - description: + description: Generator speed (HSS) [rad/s] RotSpeed: <<: *real - description: + description: Rotor speed (LSS) [rad/s] Y_M: <<: *real - description: + description: Yaw direction [rad] HorWindV: <<: *real - description: + description: Hub height wind speed m/s rootMOOP: <<: *real - description: + description: Blade root bending moment [Nm] size: 3 BlPitch: <<: *real - description: + description: Blade pitch [rad] size: 3 Azimuth: <<: *real - description: + description: Rotor aziumuth angle [rad] NumBl: <<: *integer - description: + description: Number of blades [-] FA_Acc: <<: *real description: Tower fore-aft acceleration [m/s^2] @@ -515,6 +714,9 @@ LocalVariables: PC_PitComT: <<: *real description: Total command pitch based on the sum of the proportional and integral terms [rad]. + PC_PitComT_Last: + <<: *real + description: Last total command pitch based on the sum of the proportional and integral terms [rad]. PC_PitComTF: <<: *real description: Filtered Total command pitch based on the sum of the proportional and integral terms [rad]. @@ -525,12 +727,21 @@ LocalVariables: PC_PwrErr: <<: *real description: Power error with respect to rated power [W] - PC_SineExcitation: - <<: *real - description: Sine contribution to pitch signal PC_SpdErr: <<: *real description: Current speed error (pitch control) [rad/s]. + IPC_IntAxisTilt_1P: + <<: *real + description: Integral of the direct axis, 1P + IPC_IntAxisYaw_1P: + <<: *real + description: Integral of quadrature, 1P + IPC_IntAxisTilt_2P: + <<: *real + description: Integral of the direct axis, 2P + IPC_IntAxisYaw_2P: + <<: *real + description: Integral of quadrature, 2P PC_State: <<: *integer description: State of the pitch control system @@ -615,6 +826,33 @@ LocalVariables: <<: *real description: Flap Angle (rad) size: 3 + RootMyb_Last: + <<: *real + description: Last blade root bending moment (Nm) + size: 3 + ACC_INFILE_SIZE: + <<: *integer + description: Length of parameter input filename + ACC_INFILE: + <<: *character + description: Parameter input filename + dimension: (:) + allocatable: True + restart: + <<: *logical + description: Restart flag + WE: + <<: *derived_type + id: WE + description: Wind speed estimator parameters derived type + FP: + <<: *derived_type + id: FilterParameters + description: Filter parameters derived type + piP: + <<: *derived_type + id: piParams + description: PI parameters derived type ObjectInstances: instLPF: @@ -648,17 +886,17 @@ PerformanceData: Cp_mat: <<: *real allocatable: True - shape: 2 + dimension: (:,:) description: Power coefficient surface Ct_mat: <<: *real allocatable: True - shape: 2 + dimension: (:,:) description: Thrust coefficient surface Cq_mat: <<: *real allocatable: True - shape: 2 + dimension: (:,:) description: Torque coefficient surface DebugVariables: @@ -699,7 +937,6 @@ ErrorVariables: allocatable: True ExtDLL_Type: - FileAddr: <<: *c_intptr_t description: The address of file FileName. (RETURN value from LoadLibrary ) [Windows] @@ -714,9 +951,11 @@ ExtDLL_Type: description: The address of procedure ProcName. (RETURN value from GetProcAddress or dlsym) [initialized to Null for pack/unpack] FileName: <<: *character + length: 1024 description: The name of the DLL file including the full path to the current working directory. ProcName: <<: *character equals: '""' size: 3 + length: 1024 description: The name of the procedure in the DLL that will be called. \ No newline at end of file diff --git a/ROSCO/rosco_registry/write_registry.py b/ROSCO/rosco_registry/write_registry.py index bc3f0188..03fc8b03 100644 --- a/ROSCO/rosco_registry/write_registry.py +++ b/ROSCO/rosco_registry/write_registry.py @@ -29,11 +29,14 @@ def write_registry(yfile): file.close() def check_size(main_attribute, sub_attribute): - size = int(main_attribute[sub_attribute]['size']) - if size == 0: + if main_attribute[sub_attribute]['type'] == 'derived_type': atstr = sub_attribute else: - atstr = sub_attribute + '({})'.format(size) + size = int(main_attribute[sub_attribute]['size']) + if size == 0: + atstr = sub_attribute + else: + atstr = sub_attribute + '({})'.format(size) return atstr def read_type(param): @@ -43,16 +46,24 @@ def read_type(param): f90type += ', DIMENSION(:), ALLOCATABLE' elif param['type'] == 'real': f90type = 'REAL(8)' - if param['allocatable'] and param['shape'] == 1: - f90type += ', DIMENSION(:), ALLOCATABLE' - if param['allocatable'] and param['shape'] == 2: - f90type += ', DIMENSION(:,:), ALLOCATABLE' + if param['allocatable']: + if param['dimension']: + f90type += ', DIMENSION{}, ALLOCATABLE'.format(param['dimension']) + else: + f90type += ', DIMENSION(:), ALLOCATABLE' + elif param['dimension']: + f90type += ', DIMENSION{}'.format(param['dimension']) elif param['type'] == 'character': - f90type = 'CHARACTER(1024)' + f90type = 'CHARACTER' + if param['length']: + f90type += '({})'.format(param['length']) if param['allocatable']: - f90type = 'CHARACTER(:), ALLOCATABLE' + if param['dimension']: + f90type += ', DIMENSION{}, ALLOCATABLE'.format(param['dimension']) + else: + f90type = 'CHARACTER(:), ALLOCATABLE' elif param['type'] == 'logical': - f90type = 'LOGICAL(1)' + f90type = 'LOGICAL' elif param['type'] == 'c_integer': f90type = 'INTEGER(C_INT)' elif param['type'] == 'c_pointer': @@ -61,6 +72,8 @@ def read_type(param): f90type = 'INTEGER(C_INTPTR_T)' elif param['type'] == 'c_funptr': f90type = 'TYPE(C_FUNPTR)' + elif param['type'] == 'derived_type': + f90type = 'TYPE({})'.format(param['id']) else: raise AttributeError('{} does not have a recognizable type'.format(param['type'])) diff --git a/ROSCO/src/ROSCO_Types.f90 b/ROSCO/src/ROSCO_Types.f90 index 94620ffe..fa505a35 100644 --- a/ROSCO/src/ROSCO_Types.f90 +++ b/ROSCO/src/ROSCO_Types.f90 @@ -114,19 +114,75 @@ MODULE ROSCO_Types REAL(8) :: VS_MinOMTq ! Minimum torque at the beginning of the below-rated region 2, [Nm] END TYPE ControlParameters +TYPE, PUBLIC :: WE + REAL(8) :: om_r ! Estimated rotor speed [rad/s] + REAL(8) :: v_t ! Estimated wind speed, turbulent component [m/s] + REAL(8) :: v_m ! Estimated wind speed, 10-minute averaged [m/s] + REAL(8) :: v_h ! Combined estimated wind speed [m/s] + REAL(8), DIMENSION(3,3) :: P ! Covariance estiamte + REAL(8), DIMENSION(3,1) :: xh ! Estimated state matrix + REAL(8), DIMENSION(3,1) :: K ! Kalman gain matrix +END TYPE WE + +TYPE, PUBLIC :: FilterParameters + REAL(8), DIMENSION(99) :: lpf1_a1 ! First order filter - Denominator coefficient 1 + REAL(8), DIMENSION(99) :: lpf1_a0 ! First order filter - Denominator coefficient 0 + REAL(8), DIMENSION(99) :: lpf1_b1 ! First order filter - Numerator coefficient 1 + REAL(8), DIMENSION(99) :: lpf1_b0 ! First order filter - Numerator coefficient 0 + REAL(8), DIMENSION(99) :: lpf1_InputSignalLast ! First order filter - Previous input + REAL(8), DIMENSION(99) :: lpf1_OutputSignalLast ! First order filter - Previous output + REAL(8), DIMENSION(99) :: lpf2_a2 ! Second order filter - Denominator coefficient 2 + REAL(8), DIMENSION(99) :: lpf2_a1 ! Second order filter - Denominator coefficient 1 + REAL(8), DIMENSION(99) :: lpf2_a0 ! Second order filter - Denominator coefficient 0 + REAL(8), DIMENSION(99) :: lpf2_b2 ! Second order filter - Numerator coefficient 2 + REAL(8), DIMENSION(99) :: lpf2_b1 ! Second order filter - Numerator coefficient 1 + REAL(8), DIMENSION(99) :: lpf2_b0 ! Second order filter - Numerator coefficient 0 + REAL(8), DIMENSION(99) :: lpf2_InputSignalLast2 ! Second order filter - Previous input 2 + REAL(8), DIMENSION(99) :: lpf2_OutputSignalLast2 ! Second order filter - Previous output 2 + REAL(8), DIMENSION(99) :: lpf2_InputSignalLast1 ! Second order filter - Previous input 1 + REAL(8), DIMENSION(99) :: lpf2_OutputSignalLast1 ! Second order filter - Previous output 1 + REAL(8), DIMENSION(99) :: hpf_InputSignalLast ! High pass filter - Previous output 1 + REAL(8), DIMENSION(99) :: hpf_OutputSignalLast ! High pass filter - Previous output 1 + REAL(8), DIMENSION(99) :: nfs_OutputSignalLast1 ! Notch filter slopes previous output 1 + REAL(8), DIMENSION(99) :: nfs_OutputSignalLast2 ! Notch filter slopes previous output 2 + REAL(8), DIMENSION(99) :: nfs_InputSignalLast1 ! Notch filter slopes previous input 1 + REAL(8), DIMENSION(99) :: nfs_InputSignalLast2 ! Notch filter slopes previous input 1 + REAL(8), DIMENSION(99) :: nfs_b2 ! Notch filter slopes numerator coefficient 2 + REAL(8), DIMENSION(99) :: nfs_b0 ! Notch filter slopes numerator coefficient 0 + REAL(8), DIMENSION(99) :: nfs_a2 ! Notch filter slopes denominator coefficient 2 + REAL(8), DIMENSION(99) :: nfs_a1 ! Notch filter slopes denominator coefficient 1 + REAL(8), DIMENSION(99) :: nfs_a0 ! Notch filter slopes denominator coefficient 0 + REAL(8), DIMENSION(99) :: nf_OutputSignalLast1 ! Notch filter previous output 1 + REAL(8), DIMENSION(99) :: nf_OutputSignalLast2 ! Notch filter previous output 2 + REAL(8), DIMENSION(99) :: nf_InputSignalLast1 ! Notch filter previous input 1 + REAL(8), DIMENSION(99) :: nf_InputSignalLast2 ! Notch filter previous input 2 + REAL(8), DIMENSION(99) :: nf_b2 ! Notch filter numerator coefficient 2 + REAL(8), DIMENSION(99) :: nf_b1 ! Notch filter numerator coefficient 1 + REAL(8), DIMENSION(99) :: nf_b0 ! Notch filter numerator coefficient 0 + REAL(8), DIMENSION(99) :: nf_a1 ! Notch filter denominator coefficient 1 + REAL(8), DIMENSION(99) :: nf_a0 ! Notch filter denominator coefficient 0 +END TYPE FilterParameters + +TYPE, PUBLIC :: piParams + REAL(8), DIMENSION(99) :: ITerm ! Integrator term + REAL(8), DIMENSION(99) :: ITermLast ! Previous integrator term + REAL(8), DIMENSION(99) :: ITerm2 ! Integrator term - second integrator + REAL(8), DIMENSION(99) :: ITermLast2 ! Previous integrator term - second integrator +END TYPE piParams + TYPE, PUBLIC :: LocalVariables - INTEGER(4) :: iStatus ! None - REAL(8) :: Time ! None - REAL(8) :: DT ! None - REAL(8) :: VS_GenPwr ! None - REAL(8) :: GenSpeed ! None - REAL(8) :: RotSpeed ! None - REAL(8) :: Y_M ! None - REAL(8) :: HorWindV ! None - REAL(8) :: rootMOOP(3) ! None - REAL(8) :: BlPitch(3) ! None - REAL(8) :: Azimuth ! None - INTEGER(4) :: NumBl ! None + INTEGER(4) :: iStatus ! Initialization status + REAL(8) :: Time ! Time [s] + REAL(8) :: DT ! Time step [s] + REAL(8) :: VS_GenPwr ! Generator power [W] + REAL(8) :: GenSpeed ! Generator speed (HSS) [rad/s] + REAL(8) :: RotSpeed ! Rotor speed (LSS) [rad/s] + REAL(8) :: Y_M ! Yaw direction [rad] + REAL(8) :: HorWindV ! Hub height wind speed m/s + REAL(8) :: rootMOOP(3) ! Blade root bending moment [Nm] + REAL(8) :: BlPitch(3) ! Blade pitch [rad] + REAL(8) :: Azimuth ! Rotor aziumuth angle [rad] + INTEGER(4) :: NumBl ! Number of blades [-] REAL(8) :: FA_Acc ! Tower fore-aft acceleration [m/s^2] REAL(8) :: NacIMU_FA_Acc ! Tower fore-aft acceleration [rad/s^2] REAL(8) :: FA_AccHPF ! High-pass filtered fore-aft acceleration [m/s^2] @@ -146,11 +202,15 @@ MODULE ROSCO_Types REAL(8) :: PC_MaxPit ! Maximum pitch setting in pitch controller (variable) [rad]. REAL(8) :: PC_MinPit ! Minimum pitch setting in pitch controller (variable) [rad]. REAL(8) :: PC_PitComT ! Total command pitch based on the sum of the proportional and integral terms [rad]. + REAL(8) :: PC_PitComT_Last ! Last total command pitch based on the sum of the proportional and integral terms [rad]. REAL(8) :: PC_PitComTF ! Filtered Total command pitch based on the sum of the proportional and integral terms [rad]. REAL(8) :: PC_PitComT_IPC(3) ! Total command pitch based on the sum of the proportional and integral terms, including IPC term [rad]. REAL(8) :: PC_PwrErr ! Power error with respect to rated power [W] - REAL(8) :: PC_SineExcitation ! Sine contribution to pitch signal REAL(8) :: PC_SpdErr ! Current speed error (pitch control) [rad/s]. + REAL(8) :: IPC_IntAxisTilt_1P ! Integral of the direct axis, 1P + REAL(8) :: IPC_IntAxisYaw_1P ! Integral of quadrature, 1P + REAL(8) :: IPC_IntAxisTilt_2P ! Integral of the direct axis, 2P + REAL(8) :: IPC_IntAxisYaw_2P ! Integral of quadrature, 2P INTEGER(4) :: PC_State ! State of the pitch control system REAL(8) :: PitCom(3) ! Commanded pitch of each blade the last time the controller was called [rad]. REAL(8) :: SS_DelOmegaF ! Filtered setpoint shifting term defined in setpoint smoother [rad/s]. @@ -174,11 +234,18 @@ MODULE ROSCO_Types REAL(8) :: Y_ErrLPFSlow ! Filtered yaw error by slow low pass filter [rad]. REAL(8) :: Y_MErr ! Measured yaw error, measured + setpoint [rad]. REAL(8) :: 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 + LOGICAL :: SD ! Shutdown, .FALSE. if inactive, .TRUE. if active REAL(8) :: Fl_PitCom ! Shutdown, .FALSE. if inactive, .TRUE. if active REAL(8) :: NACIMU_FA_AccF ! None REAL(8) :: FA_AccF ! None REAL(8) :: Flp_Angle(3) ! Flap Angle (rad) + REAL(8) :: RootMyb_Last(3) ! Last blade root bending moment (Nm) + INTEGER(4) :: ACC_INFILE_SIZE ! Length of parameter input filename + CHARACTER, DIMENSION(:), ALLOCATABLE :: ACC_INFILE ! Parameter input filename + LOGICAL :: restart ! Restart flag + TYPE(WE) :: WE ! Wind speed estimator parameters derived type + TYPE(FilterParameters) :: FP ! Filter parameters derived type + TYPE(piParams) :: piP ! PI parameters derived type END TYPE LocalVariables TYPE, PUBLIC :: ObjectInstances From 3ff38007f0c2a96c739a1ecfba0295cd92881383 Mon Sep 17 00:00:00 2001 From: Nikhar Abbas Date: Tue, 21 Dec 2021 08:43:36 -0700 Subject: [PATCH 016/218] add rosco_io with restart and debug functions --- ROSCO/CMakeLists.txt | 1 + ROSCO/rosco_registry/rosco_types.yaml | 8 +- ROSCO/rosco_registry/write_registry.py | 242 ++++++++++++++++++++++++- 3 files changed, 243 insertions(+), 8 deletions(-) diff --git a/ROSCO/CMakeLists.txt b/ROSCO/CMakeLists.txt index 262d232b..c9ad7aa3 100644 --- a/ROSCO/CMakeLists.txt +++ b/ROSCO/CMakeLists.txt @@ -36,6 +36,7 @@ set(SOURCES src/Filters.f90 src/Functions.f90 src/ReadSetParameters.f90 + src/ROSCO_IO.f90 ) if (${CMAKE_Fortran_COMPILER_ID} STREQUAL "GNU") diff --git a/ROSCO/rosco_registry/rosco_types.yaml b/ROSCO/rosco_registry/rosco_types.yaml index 9257db0d..13ebd35b 100644 --- a/ROSCO/rosco_registry/rosco_types.yaml +++ b/ROSCO/rosco_registry/rosco_types.yaml @@ -902,16 +902,16 @@ PerformanceData: DebugVariables: WE_Cp: <<: *real - description: Cp that WSE uses to determine aerodynamic torque[-] + description: Cp that WSE uses to determine aerodynamic torque [-] WE_b: <<: *real - description: Pitch that WSE uses to determine aerodynamic torque[-] + description: Pitch that WSE uses to determine aerodynamic torque [-] WE_w: <<: *real - description: Rotor Speed that WSE uses to determine aerodynamic torque[-] + description: Rotor Speed that WSE uses to determine aerodynamic torque [-] WE_t: <<: *real - description: Torque that WSE uses[-] + description: Torque that WSE uses [-] WE_Vm: <<: *real description: Mean wind speed component in WSE [m/s] diff --git a/ROSCO/rosco_registry/write_registry.py b/ROSCO/rosco_registry/write_registry.py index 03fc8b03..380a26be 100644 --- a/ROSCO/rosco_registry/write_registry.py +++ b/ROSCO/rosco_registry/write_registry.py @@ -3,7 +3,11 @@ import os from ROSCO_toolbox.ofTools.util.FileTools import load_yaml -def write_registry(yfile): +def generate(yfile): + write_types(yfile) + write_roscoio(yfile) + +def write_types(yfile): reg = load_yaml(yfile) reg.pop('default_types') registry_fname = os.path.join(os.path.dirname(os.path.dirname(os.path.abspath(__file__))),'src','ROSCO_Types.f90') @@ -13,6 +17,7 @@ def write_registry(yfile): file.write('! For any modification to the registry, please edit the rosco_types.yaml accordingly\n \n') file.write('MODULE ROSCO_Types\n') file.write('USE, INTRINSIC :: ISO_C_Binding\n') + file.write('USE Constants\n') file.write('IMPLICIT NONE\n') file.write('\n') for toptype in reg.keys(): @@ -28,6 +33,235 @@ def write_registry(yfile): file.write('END MODULE ROSCO_Types') file.close() +def write_roscoio(yfile): + reg = load_yaml(yfile) + reg.pop('default_types') + registry_fname = os.path.join(os.path.dirname(os.path.dirname(os.path.abspath(__file__))),'src','ROSCO_IO.f90') + file = open(registry_fname, 'w') + file.write('! ROSCO IO\n') + file.write('! This file is automatically generated by write_registry.py using ROSCO v{}\n'.format(ROSCO_toolbox.__version__)) + file.write('! For any modification to the registry, please edit the rosco_types.yaml accordingly\n \n') + file.write('MODULE ROSCO_IO\n') + file.write(' USE, INTRINSIC :: ISO_C_Binding\n') + file.write(' USE ROSCO_Types\n') + file.write(' USE ReadSetParameters\n') + file.write(' USE Constants\n') + file.write('IMPLICIT NONE\n\n') + file.write('CONTAINS\n\n') + file.write('SUBROUTINE WriteRestartFile(LocalVar, CntrPar, objInst, RootName, size_avcOUTNAME)\n') + file.write(" TYPE(LocalVariables), INTENT(IN) :: LocalVar\n") + file.write(" TYPE(ControlParameters), INTENT(INOUT) :: CntrPar\n") + file.write(" TYPE(ObjectInstances), INTENT(INOUT) :: objInst\n") + file.write(" INTEGER(IntKi), INTENT(IN) :: size_avcOUTNAME\n") + file.write(" CHARACTER(size_avcOUTNAME-1), INTENT(IN) :: RootName \n") + file.write(" \n") + file.write(" INTEGER(IntKi), PARAMETER :: Un = 87 ! I/O unit for pack/unpack (checkpoint & restart)\n") + file.write(" INTEGER(IntKi) :: I ! Generic index.\n") + file.write(" CHARACTER(128) :: InFile ! Input checkpoint file\n") + file.write(" INTEGER(IntKi) :: ErrStat\n") + file.write(" CHARACTER(128) :: ErrMsg \n") + file.write(" CHARACTER(128) :: n_t_global ! timestep number as a string\n") + file.write("\n") + file.write(" WRITE(n_t_global, '(I0.0)' ), NINT(LocalVar%Time/LocalVar%DT)\n") + file.write(" InFile = RootName(1:size_avcOUTNAME-5)//TRIM( n_t_global )//'.RO.chkp'\n") + file.write(" OPEN(unit=Un, FILE=TRIM(InFile), STATUS='UNKNOWN', FORM='UNFORMATTED' , ACCESS='STREAM', IOSTAT=ErrStat, ACTION='WRITE' )\n") + file.write("\n") + file.write(" IF ( ErrStat /= 0 ) THEN\n") + file.write(" ErrMsg = 'Cannot open file "'//TRIM( InFile )//'". Another program may have locked it for writing.'\n") + file.write("\n") + file.write(" ELSE\n") + for var in reg['LocalVariables']: + if reg['LocalVariables'][var]['type'] == 'derived_type': + for dvar in reg[reg['LocalVariables'][var]['id']]: + file.write(' WRITE( Un, IOSTAT=ErrStat) LocalVar%{}%{}\n'.format(var,dvar)) + elif reg['LocalVariables'][var]['size'] > 0: + for i in range(reg['LocalVariables'][var]['size']): + file.write(' WRITE( Un, IOSTAT=ErrStat) LocalVar%{}({})\n'.format(var, i+1)) + else: + file.write(' WRITE( Un, IOSTAT=ErrStat) LocalVar%{}\n'.format(var)) + for var in reg['ObjectInstances']: + file.write(' WRITE( Un, IOSTAT=ErrStat) objInst%{}\n'.format(var)) + file.write(' Close ( Un )\n') + file.write(' ENDIF\n') + file.write('END SUBROUTINE WriteRestartFile\n') + file.write('\n \n') + file.write('SUBROUTINE ReadRestartFile(avrSWAP, LocalVar, CntrPar, objInst, PerfData, RootName, size_avcOUTNAME, ErrVar)\n') + # file.write(' USE ROSCO_Types, ONLY: LocalVariables, ControlParameters, ObjectInstances, PerformanceData, ErrorVariables\n') + file.write(" TYPE(LocalVariables), INTENT(INOUT) :: LocalVar\n") + file.write(" TYPE(ControlParameters), INTENT(INOUT) :: CntrPar\n") + file.write(" TYPE(ObjectInstances), INTENT(INOUT) :: objInst\n") + file.write(" TYPE(PerformanceData), INTENT(INOUT) :: PerfData\n") + file.write(" TYPE(ErrorVariables), INTENT(INOUT) :: ErrVar\n") + file.write(" REAL(C_FLOAT), INTENT(IN) :: avrSWAP(*)\n") + file.write(" INTEGER(IntKi), INTENT(IN) :: size_avcOUTNAME\n") + file.write(" CHARACTER(size_avcOUTNAME-1), INTENT(IN) :: RootName \n") + file.write(" \n") + file.write(" INTEGER(IntKi), PARAMETER :: Un = 87 ! I/O unit for pack/unpack (checkpoint & restart)\n") + file.write(" INTEGER(IntKi) :: I ! Generic index.\n") + file.write(" CHARACTER(128) :: InFile ! Input checkpoint file\n") + file.write(" INTEGER(IntKi) :: ErrStat\n") + file.write(" CHARACTER(128) :: ErrMsg \n") + file.write(" CHARACTER(128) :: n_t_global ! timestep number as a string\n") + file.write("\n") + file.write(" WRITE(n_t_global, '(I0.0)' ), NINT(avrSWAP(2)/avrSWAP(3))\n") + file.write(" InFile = RootName(1:size_avcOUTNAME-5)//TRIM( n_t_global )//'.RO.chkp'\n") + file.write(" OPEN(unit=Un, FILE=TRIM(InFile), STATUS='UNKNOWN', FORM='UNFORMATTED' , ACCESS='STREAM', IOSTAT=ErrStat, ACTION='READ' )\n") + file.write("\n") + file.write(" IF ( ErrStat /= 0 ) THEN\n") + file.write(" ErrMsg = 'Cannot open file "'//TRIM( InFile )//'". Another program may have locked it for writing.'\n") + file.write("\n") + file.write(" ELSE\n") + for var in reg['LocalVariables']: + if reg['LocalVariables'][var]['type'] == 'derived_type': + for dvar in reg[reg['LocalVariables'][var]['id']]: + file.write(' READ( Un, IOSTAT=ErrStat) LocalVar%{}%{}\n'.format(var, dvar)) + elif reg['LocalVariables'][var]['size'] > 0: + for i in range(reg['LocalVariables'][var]['size']): + file.write(' READ( Un, IOSTAT=ErrStat) LocalVar%{}({})\n'.format(var, i+1)) + else: + file.write(' READ( Un, IOSTAT=ErrStat) LocalVar%{}\n'.format(var)) + if var == 'ACC_INFILE_SIZE': + file.write(' ALLOCATE(LocalVar%ACC_INFILE(LocalVar%ACC_INFILE_SIZE))\n') + for var in reg['ObjectInstances']: + file.write(' READ( Un, IOSTAT=ErrStat) objInst%{}\n'.format(var)) + file.write(' Close ( Un )\n') + file.write(' ENDIF\n') + file.write(' ! Read Parameter files\n') + file.write(' CALL ReadControlParameterFileSub(CntrPar, LocalVar%ACC_INFILE, LocalVar%ACC_INFILE_SIZE, ErrVar)\n') + file.write(' IF (CntrPar%WE_Mode > 0) THEN\n') + file.write(' CALL READCpFile(CntrPar, PerfData, ErrVar)\n') + file.write(' ENDIF\n') + file.write('END SUBROUTINE ReadRestartFile\n') + file.write('\n \n') + file.write('SUBROUTINE Debug(LocalVar, CntrPar, DebugVar, avrSWAP, RootName, size_avcOUTNAME)\n') + file.write('! Debug routine, defines what gets printed to DEBUG.dbg if LoggingLevel = 1\n') + file.write('\n') + file.write(' TYPE(ControlParameters), INTENT(IN) :: CntrPar\n') + file.write(' TYPE(LocalVariables), INTENT(IN) :: LocalVar\n') + file.write(' TYPE(DebugVariables), INTENT(IN) :: DebugVar\n') + file.write('\n') + file.write(' INTEGER(IntKi), INTENT(IN) :: size_avcOUTNAME\n') + file.write(' INTEGER(IntKi) :: I , nDebugOuts, nLocalVars ! Generic index.\n') + file.write(' CHARACTER(1), PARAMETER :: Tab = CHAR(9) ! The tab character.\n') + file.write(' CHARACTER(29), PARAMETER :: FmtDat = "(F20.5,TR5,99(ES20.5E2,TR5:))" ! The format of the debugging data\n') + file.write(' INTEGER(IntKi), PARAMETER :: UnDb = 85 ! I/O unit for the debugging information\n') + file.write(' INTEGER(IntKi), PARAMETER :: UnDb2 = 86 ! I/O unit for the debugging information, avrSWAP\n') + file.write(' INTEGER(IntKi), PARAMETER :: UnDb3 = 87 ! I/O unit for the debugging information, avrSWAP\n') + file.write(' REAL(ReKi), INTENT(INOUT) :: avrSWAP(*) ! The swap array, used to pass data to, and receive data from, the DLL controller.\n') + file.write(' 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]\n') + file.write(' CHARACTER(200) :: Version ! git version of ROSCO\n') + file.write(' CHARACTER(15), ALLOCATABLE :: DebugOutStrings(:), DebugOutUnits(:)\n') + file.write(' REAL(DbKi), ALLOCATABLE :: DebugOutData(:)\n \n') + file.write(' CHARACTER(15), ALLOCATABLE :: LocalVarOutStrings(:)\n') + file.write(' REAL(DbKi), ALLOCATABLE :: LocalVarOutData(:)\n \n') + file.write(' nDebugOuts = {}\n'.format(len(reg['DebugVariables'].keys()))) + file.write(' Allocate(DebugOutData(nDebugOuts))\n') + file.write(' Allocate(DebugOutStrings(nDebugOuts))\n') + file.write(' Allocate(DebugOutUnits(nDebugOuts))\n') + dbg_strings = [] + dbg_units = [] + for dbg_idx, dbgvar in enumerate(reg['DebugVariables']): + dbg_strings.append(dbgvar) + desc = reg['DebugVariables'][dbgvar]['description'] + dbg_units.append(desc[desc.find('['):desc.find(']')+1]) + file.write(' DebugOutData({}) = DebugVar%{}\n'.format(dbg_idx+1,dbgvar)) + file.write(' DebugOutStrings = [CHARACTER(15) :: ') + counter = 0 + for string in dbg_strings: + counter += 1 + if counter == len(dbg_strings): + file.write(" '{}'".format(string)) + else: + file.write(" '{}',".format(string)) + if (counter % 5 == 0): + file.write(' & \n ') + file.write(']\n') + file.write(' DebugOutUnits = [CHARACTER(15) :: ') + counter = 0 + for unit in dbg_units: + counter += 1 + if counter == len(dbg_units): + file.write(" '{}'".format(unit)) + else: + file.write(" '{}',".format(unit)) + if (counter % 5 == 0): + file.write(' & \n ') + file.write(']\n') + lv_strings = [] + for lv_idx, localvar in enumerate(reg['LocalVariables']): + if reg['LocalVariables'][localvar]['type'] in ['integer', 'real']: + lv_strings.append(localvar) + file.write(' nLocalVars = {}\n'.format(len(lv_strings))) + file.write(' Allocate(LocalVarOutData(nLocalVars))\n') + file.write(' Allocate(LocalVarOutStrings(nLocalVars))\n') + for lv_idx, localvar in enumerate(reg['LocalVariables']): + if reg['LocalVariables'][localvar]['type'] in ['integer', 'real']: + if reg['LocalVariables'][localvar]['size'] > 0: + file.write(' LocalVarOutData({}) = LocalVar%{}(1)\n'.format(lv_idx+1, localvar)) + else: + file.write(' LocalVarOutData({}) = LocalVar%{}\n'.format(lv_idx+1, localvar)) + file.write(' LocalVarOutStrings = [CHARACTER(15) :: ') + counter = 0 + for string in lv_strings: + counter += 1 + if counter == len(lv_strings): + file.write(" '{}'".format(string)) + else: + file.write(" '{}',".format(string)) + if (counter % 5 == 0): + file.write(' & \n ') + file.write(']\n') + + file.write(" ! Initialize debug file\n") + file.write(" IF ((LocalVar%iStatus == 0) .OR. (LocalVar%iStatus == -9)) THEN ! .TRUE. if we're on the first call to the DLL\n") + file.write(" ! If we're debugging, open the debug file and write the header:\n") + file.write(" ! Note that the headers will be Truncated to 10 characters!!\n") + file.write(" IF (CntrPar%LoggingLevel > 0) THEN\n") + file.write(" OPEN(unit=UnDb, FILE=RootName(1: size_avcOUTNAME-5)//'RO.dbg')\n") + file.write(" WRITE(UnDb, *) 'Generated on '//CurDate()//' at '//CurTime()//' using ROSCO-'//TRIM(rosco_version)\n") + file.write(" WRITE(UnDb, '(99(a20,TR5:))') 'Time', DebugOutStrings\n") + file.write(" WRITE(UnDb, '(99(a20,TR5:))') '(sec)', DebugOutUnits\n") + file.write(" END IF\n") + file.write("\n") + file.write(" IF (CntrPar%LoggingLevel > 1) THEN\n") + file.write(" OPEN(unit=UnDb2, FILE=RootName(1: size_avcOUTNAME-5)//'RO.dbg2')\n") + file.write(" WRITE(UnDb2, *) 'Generated on '//CurDate()//' at '//CurTime()//' using ROSCO-'//TRIM(rosco_version)\n") + file.write(" WRITE(UnDb2, '(99(a20,TR5:))') 'Time', LocalVarOutStrings\n") + file.write(" WRITE(UnDb2, '(99(a20,TR5:))')\n") + file.write(" END IF\n") + file.write("\n") + file.write(" IF (CntrPar%LoggingLevel > 2) THEN\n") + file.write(" OPEN(unit=UnDb3, FILE=RootName(1: size_avcOUTNAME-5)//'RO.dbg3')\n") + file.write(" WRITE(UnDb3,'(/////)')\n") + file.write(" WRITE(UnDb3,'"+'(A,85("'+"'//Tab//'"+'AvrSWAP("'+',I2,")"'+"))') 'LocalVar%Time ', (i,i=1, 85)\n") + file.write(" WRITE(UnDb3,'"+'(A,85("'+"'//Tab//'"+'(-)"'+"))') '(s)'"+'\n') + file.write(" END IF\n") + file.write(" ELSE\n") + file.write(" ! Print simulation status, every 10 seconds\n") + file.write(" IF (MODULO(LocalVar%Time, 10.0_DbKi) == 0) THEN\n") + file.write(" WRITE(*, 100) LocalVar%GenSpeedF*RPS2RPM, LocalVar%BlPitch(1)*R2D, avrSWAP(15)/1000.0, LocalVar%WE_Vw\n") + file.write(" 100 FORMAT('Generator speed: ', f6.1, ' RPM, Pitch angle: ', f5.1, ' deg, Power: ', f7.1, ' kW, Est. wind Speed: ', f5.1, ' m/s')\n") + file.write(" END IF\n") + file.write("\n") + file.write(" ! Write debug files\n") + file.write(" IF(CntrPar%LoggingLevel > 0) THEN\n") + file.write(" WRITE (UnDb, FmtDat) LocalVar%Time, DebugOutData\n") + file.write(" END IF\n") + file.write("\n") + file.write(" IF(CntrPar%LoggingLevel > 1) THEN\n") + file.write(" WRITE (UnDb2, FmtDat) LocalVar%Time, LocalVarOutData\n") + file.write(" END IF\n") + file.write("\n") + file.write(" IF(CntrPar%LoggingLevel > 2) THEN\n") + file.write(" WRITE (UnDb3, FmtDat) LocalVar%Time, avrSWAP(1: 85)\n") + file.write(" END IF\n") + file.write(" END IF\n") + file.write("\n") + file.write("END SUBROUTINE Debug\n") + file.write("\n") + file.write("END MODULE ROSCO_IO") + file.close() + def check_size(main_attribute, sub_attribute): if main_attribute[sub_attribute]['type'] == 'derived_type': atstr = sub_attribute @@ -41,11 +275,11 @@ def check_size(main_attribute, sub_attribute): def read_type(param): if param['type'] == 'integer': - f90type = 'INTEGER(4)' + f90type = 'INTEGER(IntKi)' if param['allocatable']: f90type += ', DIMENSION(:), ALLOCATABLE' elif param['type'] == 'real': - f90type = 'REAL(8)' + f90type = 'REAL(DbKi)' if param['allocatable']: if param['dimension']: f90type += ', DIMENSION{}, ALLOCATABLE'.format(param['dimension']) @@ -82,5 +316,5 @@ def read_type(param): if __name__ == '__main__': fname = os.path.join(os.path.dirname(os.path.abspath(__file__)),'rosco_types.yaml') - write_registry(fname) + generate(fname) From 15eb73d80566976bff35450d91a8b868acf86f27 Mon Sep 17 00:00:00 2001 From: Nikhar Abbas Date: Tue, 21 Dec 2021 08:44:41 -0700 Subject: [PATCH 017/218] cleanup debug call --- ROSCO/src/DISCON.F90 | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/ROSCO/src/DISCON.F90 b/ROSCO/src/DISCON.F90 index 1f3b9550..cf9b2c41 100644 --- a/ROSCO/src/DISCON.F90 +++ b/ROSCO/src/DISCON.F90 @@ -93,17 +93,13 @@ SUBROUTINE DISCON(avrSWAP, aviFAIL, accINFILE, avcOUTNAME, avcMSG) BIND (C, NAME IF (CntrPar%Flp_Mode > 0) THEN CALL FlapControl(avrSWAP, CntrPar, LocalVar, objInst) END IF - - IF (CntrPar%LoggingLevel > 0) THEN - CALL Debug(LocalVar, CntrPar, DebugVar, avrSWAP, RootName, SIZE(avcOUTNAME)) - END IF ELSEIF ((LocalVar%iStatus == -8) .AND. (ErrVar%aviFAIL >= 0)) THEN ! Write restart files - CALL WriteRestartFile(LocalVar, CntrPar, objInst, RootName, SIZE(avcOUTNAME)) - CALL Debug(LocalVar, CntrPar, DebugVar, avrSWAP, RootName, SIZE(avcOUTNAME)) - + CALL WriteRestartFile(LocalVar, CntrPar, objInst, RootName, SIZE(avcOUTNAME)) ENDIF +CALL Debug(LocalVar, CntrPar, DebugVar, avrSWAP, RootName, SIZE(avcOUTNAME)) + ! Add RoutineName to error message IF (ErrVar%aviFAIL < 0) THEN ErrVar%ErrMsg = RoutineName//':'//TRIM(ErrVar%ErrMsg) @@ -113,7 +109,6 @@ SUBROUTINE DISCON(avrSWAP, aviFAIL, accINFILE, avcOUTNAME, avcMSG) BIND (C, NAME avcMSG = TRANSFER(ErrMsg//C_NULL_CHAR, avcMSG, LEN(ErrMsg)+1) avcMSG = TRANSFER(ErrMsg//C_NULL_CHAR, avcMSG, SIZE(avcMSG)) aviFAIL = ErrVar%aviFAIL - ErrVar%ErrMsg = '' RETURN From 5e2eb07b6b6647213e003f16e63cfdcdebd8dcd5 Mon Sep 17 00:00:00 2001 From: Nikhar Abbas Date: Tue, 21 Dec 2021 08:45:05 -0700 Subject: [PATCH 018/218] use registry generate types and IO --- ROSCO/src/ROSCO_IO.f90 | 977 ++++++++++++++++++++------------------ ROSCO/src/ROSCO_Types.f90 | 479 +++++++++---------- 2 files changed, 745 insertions(+), 711 deletions(-) diff --git a/ROSCO/src/ROSCO_IO.f90 b/ROSCO/src/ROSCO_IO.f90 index 8bc50901..98510c21 100644 --- a/ROSCO/src/ROSCO_IO.f90 +++ b/ROSCO/src/ROSCO_IO.f90 @@ -1,498 +1,531 @@ -! Copyright 2019 NREL - -! Licensed under the Apache License, Version 2.0 (the "License"); you may not use -! this file except in compliance with the License. You may obtain a copy of the -! License at http://www.apache.org/licenses/LICENSE-2.0 - -! Unless required by applicable law or agreed to in writing, software distributed -! under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR -! CONDITIONS OF ANY KIND, either express or implied. See the License for the -! specific language governing permissions and limitations under the License. -! ------------------------------------------------------------------------------------------- -! This handles all of ROSCO's input/output files ~WITH THE EXCPETION~ of reading the primary -! input files. The DISCON.IN and Cp_Ct_Cq.txt files are handed in ReadSetParameters.f90 - +! ROSCO IO +! This file is automatically generated by write_registry.py using ROSCO v2.4.1 +! For any modification to the registry, please edit the rosco_types.yaml accordingly + MODULE ROSCO_IO USE, INTRINSIC :: ISO_C_Binding USE ROSCO_Types USE ReadSetParameters - IMPLICIT NONE -CONTAINS - SUBROUTINE WriteRestartFile(LocalVar, CntrPar, objInst, RootName, size_avcOUTNAME) - USE ROSCO_Types, ONLY : LocalVariables, ObjectInstances, ControlParameters - - TYPE(LocalVariables), INTENT(IN) :: LocalVar - TYPE(ControlParameters), INTENT(INOUT) :: CntrPar - TYPE(ObjectInstances), INTENT(INOUT) :: objInst - INTEGER(4), INTENT(IN) :: size_avcOUTNAME - CHARACTER(size_avcOUTNAME-1), INTENT(IN) :: RootName - - INTEGER(4), PARAMETER :: Un = 87 ! I/O unit for pack/unpack (checkpoint & restart) - INTEGER(4) :: I ! Generic index. - CHARACTER(128) :: InFile ! Input checkpoint file - INTEGER(4) :: ErrStat - CHARACTER(128) :: ErrMsg - CHARACTER(128) :: n_t_global ! timestep number as a string - - WRITE(n_t_global, '(I0.0)' ), NINT(LocalVar%Time/LocalVar%DT) - InFile = RootName(1:size_avcOUTNAME-5)//TRIM( n_t_global )//'.RO.chkp' - OPEN(unit=Un, FILE=TRIM(InFile), STATUS='UNKNOWN', FORM='UNFORMATTED' , ACCESS='STREAM', IOSTAT=ErrStat, ACTION='WRITE' ) - - IF ( ErrStat /= 0 ) THEN - ErrMsg = 'Cannot open file "'//TRIM( InFile )//'". Another program may have locked it for writing.' - - ELSE - ! From AVR SWAP - WRITE( Un, IOSTAT=ErrStat) LocalVar%iStatus - WRITE( Un, IOSTAT=ErrStat) LocalVar%Time - WRITE( Un, IOSTAT=ErrStat) LocalVar%DT - WRITE( Un, IOSTAT=ErrStat) LocalVar%VS_GenPwr - WRITE( Un, IOSTAT=ErrStat) LocalVar%GenSpeed - WRITE( Un, IOSTAT=ErrStat) LocalVar%RotSpeed - WRITE( Un, IOSTAT=ErrStat) LocalVar%Y_M - WRITE( Un, IOSTAT=ErrStat) LocalVar%HorWindV - WRITE( Un, IOSTAT=ErrStat) LocalVar%rootMOOP(1) - WRITE( Un, IOSTAT=ErrStat) LocalVar%rootMOOP(2) - WRITE( Un, IOSTAT=ErrStat) LocalVar%rootMOOP(3) - WRITE( Un, IOSTAT=ErrStat) LocalVar%BlPitch(1) - WRITE( Un, IOSTAT=ErrStat) LocalVar%BlPitch(2) - WRITE( Un, IOSTAT=ErrStat) LocalVar%BlPitch(3) - WRITE( Un, IOSTAT=ErrStat) LocalVar%Azimuth - WRITE( Un, IOSTAT=ErrStat) LocalVar%NumBl - WRITE( Un, IOSTAT=ErrStat) LocalVar%FA_Acc - WRITE( Un, IOSTAT=ErrStat) LocalVar%NacIMU_FA_Acc - ! Internal Control Variables - WRITE( Un, IOSTAT=ErrStat) LocalVar%FA_AccHPF - WRITE( Un, IOSTAT=ErrStat) LocalVar%FA_AccHPFI - WRITE( Un, IOSTAT=ErrStat) LocalVar%FA_PitCom(1) - WRITE( Un, IOSTAT=ErrStat) LocalVar%FA_PitCom(2) - WRITE( Un, IOSTAT=ErrStat) LocalVar%FA_PitCom(3) - WRITE( Un, IOSTAT=ErrStat) LocalVar%RotSpeedF - WRITE( Un, IOSTAT=ErrStat) LocalVar%GenSpeedF - WRITE( Un, IOSTAT=ErrStat) LocalVar%GenTq - WRITE( Un, IOSTAT=ErrStat) LocalVar%GenTqMeas - WRITE( Un, IOSTAT=ErrStat) LocalVar%GenArTq - WRITE( Un, IOSTAT=ErrStat) LocalVar%GenBrTq - WRITE( Un, IOSTAT=ErrStat) LocalVar%IPC_PitComF(1) - WRITE( Un, IOSTAT=ErrStat) LocalVar%IPC_PitComF(2) - WRITE( Un, IOSTAT=ErrStat) LocalVar%IPC_PitComF(3) - WRITE( Un, IOSTAT=ErrStat) LocalVar%IPC_IntAxisTilt_1P - WRITE( Un, IOSTAT=ErrStat) LocalVar%IPC_IntAxisYaw_1P - WRITE( Un, IOSTAT=ErrStat) LocalVar%IPC_IntAxisTilt_2P - WRITE( Un, IOSTAT=ErrStat) LocalVar%IPC_IntAxisYaw_2P - WRITE( Un, IOSTAT=ErrStat) LocalVar%PC_KP - WRITE( Un, IOSTAT=ErrStat) LocalVar%PC_KI - WRITE( Un, IOSTAT=ErrStat) LocalVar%PC_KD - WRITE( Un, IOSTAT=ErrStat) LocalVar%PC_TF - WRITE( Un, IOSTAT=ErrStat) LocalVar%PC_MaxPit - WRITE( Un, IOSTAT=ErrStat) LocalVar%PC_MinPit - WRITE( Un, IOSTAT=ErrStat) LocalVar%PC_PitComT - WRITE( Un, IOSTAT=ErrStat) LocalVar%PC_PitComT_Last - WRITE( Un, IOSTAT=ErrStat) LocalVar%PC_PitComTF - WRITE( Un, IOSTAT=ErrStat) LocalVar%PC_PitComT_IPC(1) - WRITE( Un, IOSTAT=ErrStat) LocalVar%PC_PitComT_IPC(2) - WRITE( Un, IOSTAT=ErrStat) LocalVar%PC_PitComT_IPC(3) - WRITE( Un, IOSTAT=ErrStat) LocalVar%PC_PwrErr - WRITE( Un, IOSTAT=ErrStat) LocalVar%PC_SpdErr - WRITE( Un, IOSTAT=ErrStat) LocalVar%PC_State - WRITE( Un, IOSTAT=ErrStat) LocalVar%PitCom(1) - WRITE( Un, IOSTAT=ErrStat) LocalVar%PitCom(2) - WRITE( Un, IOSTAT=ErrStat) LocalVar%PitCom(3) - WRITE( Un, IOSTAT=ErrStat) LocalVar%SS_DelOmegaF - WRITE( Un, IOSTAT=ErrStat) LocalVar%TestType - WRITE( Un, IOSTAT=ErrStat) LocalVar%VS_MaxTq - WRITE( Un, IOSTAT=ErrStat) LocalVar%VS_LastGenTrq - WRITE( Un, IOSTAT=ErrStat) LocalVar%VS_LastGenPwr - WRITE( Un, IOSTAT=ErrStat) LocalVar%VS_MechGenPwr - WRITE( Un, IOSTAT=ErrStat) LocalVar%VS_SpdErrAr - WRITE( Un, IOSTAT=ErrStat) LocalVar%VS_SpdErrBr - WRITE( Un, IOSTAT=ErrStat) LocalVar%VS_SpdErr - WRITE( Un, IOSTAT=ErrStat) LocalVar%VS_State - WRITE( Un, IOSTAT=ErrStat) LocalVar%VS_Rgn3Pitch - WRITE( Un, IOSTAT=ErrStat) LocalVar%WE_Vw - WRITE( Un, IOSTAT=ErrStat) LocalVar%WE_Vw_F - WRITE( Un, IOSTAT=ErrStat) LocalVar%WE_VwI - WRITE( Un, IOSTAT=ErrStat) LocalVar%WE_VwIdot - WRITE( Un, IOSTAT=ErrStat) LocalVar%VS_LastGenTrqF - WRITE( Un, IOSTAT=ErrStat) LocalVar%Y_AccErr - WRITE( Un, IOSTAT=ErrStat) LocalVar%Y_ErrLPFFast - WRITE( Un, IOSTAT=ErrStat) LocalVar%Y_ErrLPFSlow - WRITE( Un, IOSTAT=ErrStat) LocalVar%Y_MErr - WRITE( Un, IOSTAT=ErrStat) LocalVar%Y_YawEndT - WRITE( Un, IOSTAT=ErrStat) LocalVar%SD - WRITE( Un, IOSTAT=ErrStat) LocalVar%Fl_PitCom - WRITE( Un, IOSTAT=ErrStat) LocalVar%NACIMU_FA_AccF - WRITE( Un, IOSTAT=ErrStat) LocalVar%FA_AccF - WRITE( Un, IOSTAT=ErrStat) LocalVar%Flp_Angle(1) - WRITE( Un, IOSTAT=ErrStat) LocalVar%Flp_Angle(2) - WRITE( Un, IOSTAT=ErrStat) LocalVar%Flp_Angle(3) - WRITE( Un, IOSTAT=ErrStat) LocalVar%RootMyb_Last(1) - WRITE( Un, IOSTAT=ErrStat) LocalVar%RootMyb_Last(2) - WRITE( Un, IOSTAT=ErrStat) LocalVar%RootMyb_Last(3) - WRITE( Un, IOSTAT=ErrStat) LocalVar%ACC_INFILE_SIZE - WRITE( Un, IOSTAT=ErrStat) LocalVar%ACC_INFILE - WRITE( Un, IOSTAT=ErrStat) LocalVar%restart - - WRITE( Un, IOSTAT=ErrStat) LocalVar%WE%om_r - WRITE( Un, IOSTAT=ErrStat) LocalVar%WE%v_t - WRITE( Un, IOSTAT=ErrStat) LocalVar%WE%v_m - WRITE( Un, IOSTAT=ErrStat) LocalVar%WE%v_h - WRITE( Un, IOSTAT=ErrStat) LocalVar%WE%P - WRITE( Un, IOSTAT=ErrStat) LocalVar%WE%xh - WRITE( Un, IOSTAT=ErrStat) LocalVar%WE%K + USE Constants +IMPLICIT NONE - WRITE( Un, IOSTAT=ErrStat) objInst%instLPF - WRITE( Un, IOSTAT=ErrStat) objInst%instSecLPF - WRITE( Un, IOSTAT=ErrStat) objInst%instHPF - WRITE( Un, IOSTAT=ErrStat) objInst%instNotchSlopes - WRITE( Un, IOSTAT=ErrStat) objInst%instNotch - WRITE( Un, IOSTAT=ErrStat) objInst%instPI - - WRITE( Un, IOSTAT=ErrStat) LocalVar%FP%lpf1_a1 - WRITE( Un, IOSTAT=ErrStat) LocalVar%FP%lpf1_a0 - WRITE( Un, IOSTAT=ErrStat) LocalVar%FP%lpf1_b1 - WRITE( Un, IOSTAT=ErrStat) LocalVar%FP%lpf1_b0 - WRITE( Un, IOSTAT=ErrStat) LocalVar%FP%lpf1_InputSignalLast - WRITE( Un, IOSTAT=ErrStat) LocalVar%FP%lpf1_OutputSignalLast - WRITE( Un, IOSTAT=ErrStat) LocalVar%FP%lpf2_a2 - WRITE( Un, IOSTAT=ErrStat) LocalVar%FP%lpf2_a1 - WRITE( Un, IOSTAT=ErrStat) LocalVar%FP%lpf2_a0 - WRITE( Un, IOSTAT=ErrStat) LocalVar%FP%lpf2_b2 - WRITE( Un, IOSTAT=ErrStat) LocalVar%FP%lpf2_b1 - WRITE( Un, IOSTAT=ErrStat) LocalVar%FP%lpf2_b0 - WRITE( Un, IOSTAT=ErrStat) LocalVar%FP%lpf2_InputSignalLast2 - WRITE( Un, IOSTAT=ErrStat) LocalVar%FP%lpf2_OutputSignalLast2 - WRITE( Un, IOSTAT=ErrStat) LocalVar%FP%lpf2_InputSignalLast1 - WRITE( Un, IOSTAT=ErrStat) LocalVar%FP%lpf2_OutputSignalLast1 - WRITE( un, IOSTAT=ErrStat) LocalVar%FP%hpf_InputSignalLast - WRITE( un, IOSTAT=ErrStat) LocalVar%FP%hpf_OutputSignalLast - WRITE( un, IOSTAT=ErrStat) LocalVar%FP%nfs_OutputSignalLast1 - WRITE( un, IOSTAT=ErrStat) LocalVar%FP%nfs_OutputSignalLast2 - WRITE( un, IOSTAT=ErrStat) LocalVar%FP%nfs_InputSignalLast1 - WRITE( un, IOSTAT=ErrStat) LocalVar%FP%nfs_InputSignalLast2 - WRITE( un, IOSTAT=ErrStat) LocalVar%FP%nfs_b2 - WRITE( un, IOSTAT=ErrStat) LocalVar%FP%nfs_b0 - WRITE( un, IOSTAT=ErrStat) LocalVar%FP%nfs_a2 - WRITE( un, IOSTAT=ErrStat) LocalVar%FP%nfs_a1 - WRITE( un, IOSTAT=ErrStat) LocalVar%FP%nfs_a0 - WRITE( un, IOSTAT=ErrStat) LocalVar%FP%nf_OutputSignalLast1 - WRITE( un, IOSTAT=ErrStat) LocalVar%FP%nf_OutputSignalLast2 - WRITE( un, IOSTAT=ErrStat) LocalVar%FP%nf_InputSignalLast1 - WRITE( un, IOSTAT=ErrStat) LocalVar%FP%nf_InputSignalLast2 - WRITE( un, IOSTAT=ErrStat) LocalVar%FP%nf_b2 - WRITE( un, IOSTAT=ErrStat) LocalVar%FP%nf_b1 - WRITE( un, IOSTAT=ErrStat) LocalVar%FP%nf_b0 - WRITE( un, IOSTAT=ErrStat) LocalVar%FP%nf_a1 - WRITE( un, IOSTAT=ErrStat) LocalVar%FP%nf_a0 - - WRITE( Un, IOSTAT=ErrStat) LocalVar%piP%ITerm - WRITE( Un, IOSTAT=ErrStat) LocalVar%piP%ITermLast - WRITE( Un, IOSTAT=ErrStat) LocalVar%piP%ITerm2 - WRITE( Un, IOSTAT=ErrStat) LocalVar%piP%ITermLast2 - - CLOSE ( Un ) - - ENDIF - - END SUBROUTINE WriteRestartFile - - SUBROUTINE ReadRestartFile(avrSWAP, LocalVar, CntrPar, objInst, PerfData, RootName, size_avcOUTNAME, ErrVar) - USE ROSCO_Types, ONLY : LocalVariables, ControlParameters, ObjectInstances, PerformanceData, ErrorVariables - - TYPE(LocalVariables), INTENT(INOUT) :: LocalVar - TYPE(ControlParameters), INTENT(INOUT) :: CntrPar - TYPE(ObjectInstances), INTENT(INOUT) :: objInst - TYPE(PerformanceData), INTENT(INOUT) :: PerfData - TYPE(ErrorVariables), INTENT(INOUT) :: ErrVar +CONTAINS +SUBROUTINE WriteRestartFile(LocalVar, CntrPar, objInst, RootName, size_avcOUTNAME) + TYPE(LocalVariables), INTENT(IN) :: LocalVar + TYPE(ControlParameters), INTENT(INOUT) :: CntrPar + TYPE(ObjectInstances), INTENT(INOUT) :: objInst + INTEGER(IntKi), INTENT(IN) :: size_avcOUTNAME + CHARACTER(size_avcOUTNAME-1), INTENT(IN) :: RootName + + INTEGER(IntKi), PARAMETER :: Un = 87 ! I/O unit for pack/unpack (checkpoint & restart) + INTEGER(IntKi) :: I ! Generic index. + CHARACTER(128) :: InFile ! Input checkpoint file + INTEGER(IntKi) :: ErrStat + CHARACTER(128) :: ErrMsg + CHARACTER(128) :: n_t_global ! timestep number as a string - REAL(C_FLOAT), INTENT(IN) :: avrSWAP(*) - INTEGER(4), INTENT(IN) :: size_avcOUTNAME - CHARACTER(size_avcOUTNAME-1), INTENT(IN) :: RootName - - INTEGER(4), PARAMETER :: Un = 87 ! I/O unit for pack/unpack (checkpoint & restart) - INTEGER(4) :: I ! Generic index. - INTEGER(4) :: ErrStat - CHARACTER(128) :: ErrMsg - CHARACTER(128) :: n_t_global ! timestep number as a string - CHARACTER(128) :: InFile ! Name of ROSCO checkpoint file + WRITE(n_t_global, '(I0.0)' ), NINT(LocalVar%Time/LocalVar%DT) + InFile = RootName(1:size_avcOUTNAME-5)//TRIM( n_t_global )//'.RO.chkp' + OPEN(unit=Un, FILE=TRIM(InFile), STATUS='UNKNOWN', FORM='UNFORMATTED' , ACCESS='STREAM', IOSTAT=ErrStat, ACTION='WRITE' ) - WRITE(n_t_global, '(I0.0)' ), NINT(avrSWAP(2)/avrSWAP(3)) - InFile = RootName(1:size_avcOUTNAME-5)//TRIM( n_t_global )//'.RO.chkp' - OPEN(unit=Un, FILE=TRIM(InFile), STATUS='UNKNOWN', FORM='UNFORMATTED' , ACCESS='STREAM', IOSTAT=ErrStat, ACTION='READ' ) + IF ( ErrStat /= 0 ) THEN + ErrMsg = 'Cannot open file //TRIM( InFile )//. Another program may have locked it for writing.' - IF ( ErrStat /= 0 ) THEN - ErrMsg = 'Cannot open file "'//TRIM( InFile )//'". Another program may have locked it for writing.' - - ELSE - ! From AVR SWAP - READ( Un, IOSTAT=ErrStat) LocalVar%iStatus - READ( Un, IOSTAT=ErrStat) LocalVar%Time - READ( Un, IOSTAT=ErrStat) LocalVar%DT - READ( Un, IOSTAT=ErrStat) LocalVar%VS_GenPwr - READ( Un, IOSTAT=ErrStat) LocalVar%GenSpeed - READ( Un, IOSTAT=ErrStat) LocalVar%RotSpeed - READ( Un, IOSTAT=ErrStat) LocalVar%Y_M - READ( Un, IOSTAT=ErrStat) LocalVar%HorWindV - READ( Un, IOSTAT=ErrStat) LocalVar%rootMOOP(1) - READ( Un, IOSTAT=ErrStat) LocalVar%rootMOOP(2) - READ( Un, IOSTAT=ErrStat) LocalVar%rootMOOP(3) - READ( Un, IOSTAT=ErrStat) LocalVar%BlPitch(1) - READ( Un, IOSTAT=ErrStat) LocalVar%BlPitch(2) - READ( Un, IOSTAT=ErrStat) LocalVar%BlPitch(3) - READ( Un, IOSTAT=ErrStat) LocalVar%Azimuth - READ( Un, IOSTAT=ErrStat) LocalVar%NumBl - READ( Un, IOSTAT=ErrStat) LocalVar%FA_Acc - READ( Un, IOSTAT=ErrStat) LocalVar%NacIMU_FA_Acc - ! Internal Control Variables - READ( Un, IOSTAT=ErrStat) LocalVar%FA_AccHPF - READ( Un, IOSTAT=ErrStat) LocalVar%FA_AccHPFI - READ( Un, IOSTAT=ErrStat) LocalVar%FA_PitCom(1) - READ( Un, IOSTAT=ErrStat) LocalVar%FA_PitCom(2) - READ( Un, IOSTAT=ErrStat) LocalVar%FA_PitCom(3) - READ( Un, IOSTAT=ErrStat) LocalVar%RotSpeedF - READ( Un, IOSTAT=ErrStat) LocalVar%GenSpeedF - READ( Un, IOSTAT=ErrStat) LocalVar%GenTq - READ( Un, IOSTAT=ErrStat) LocalVar%GenTqMeas - READ( Un, IOSTAT=ErrStat) LocalVar%GenArTq - READ( Un, IOSTAT=ErrStat) LocalVar%GenBrTq - READ( Un, IOSTAT=ErrStat) LocalVar%IPC_PitComF(1) - READ( Un, IOSTAT=ErrStat) LocalVar%IPC_PitComF(2) - READ( Un, IOSTAT=ErrStat) LocalVar%IPC_PitComF(3) - READ( Un, IOSTAT=ErrStat) LocalVar%IPC_IntAxisTilt_1P - READ( Un, IOSTAT=ErrStat) LocalVar%IPC_IntAxisYaw_1P - READ( Un, IOSTAT=ErrStat) LocalVar%IPC_IntAxisTilt_2P - READ( Un, IOSTAT=ErrStat) LocalVar%IPC_IntAxisYaw_2P - READ( Un, IOSTAT=ErrStat) LocalVar%PC_KP - READ( Un, IOSTAT=ErrStat) LocalVar%PC_KI - READ( Un, IOSTAT=ErrStat) LocalVar%PC_KD - READ( Un, IOSTAT=ErrStat) LocalVar%PC_TF - READ( Un, IOSTAT=ErrStat) LocalVar%PC_MaxPit - READ( Un, IOSTAT=ErrStat) LocalVar%PC_MinPit - READ( Un, IOSTAT=ErrStat) LocalVar%PC_PitComT - READ( Un, IOSTAT=ErrStat) LocalVar%PC_PitComT_Last - READ( Un, IOSTAT=ErrStat) LocalVar%PC_PitComTF - READ( Un, IOSTAT=ErrStat) LocalVar%PC_PitComT_IPC(1) - READ( Un, IOSTAT=ErrStat) LocalVar%PC_PitComT_IPC(2) - READ( Un, IOSTAT=ErrStat) LocalVar%PC_PitComT_IPC(3) - READ( Un, IOSTAT=ErrStat) LocalVar%PC_PwrErr - READ( Un, IOSTAT=ErrStat) LocalVar%PC_SpdErr - READ( Un, IOSTAT=ErrStat) LocalVar%PC_State - READ( Un, IOSTAT=ErrStat) LocalVar%PitCom(1) - READ( Un, IOSTAT=ErrStat) LocalVar%PitCom(2) - READ( Un, IOSTAT=ErrStat) LocalVar%PitCom(3) - READ( Un, IOSTAT=ErrStat) LocalVar%SS_DelOmegaF - READ( Un, IOSTAT=ErrStat) LocalVar%TestType - READ( Un, IOSTAT=ErrStat) LocalVar%VS_MaxTq - READ( Un, IOSTAT=ErrStat) LocalVar%VS_LastGenTrq - READ( Un, IOSTAT=ErrStat) LocalVar%VS_LastGenPwr - READ( Un, IOSTAT=ErrStat) LocalVar%VS_MechGenPwr - READ( Un, IOSTAT=ErrStat) LocalVar%VS_SpdErrAr - READ( Un, IOSTAT=ErrStat) LocalVar%VS_SpdErrBr - READ( Un, IOSTAT=ErrStat) LocalVar%VS_SpdErr - READ( Un, IOSTAT=ErrStat) LocalVar%VS_State - READ( Un, IOSTAT=ErrStat) LocalVar%VS_Rgn3Pitch - READ( Un, IOSTAT=ErrStat) LocalVar%WE_Vw - READ( Un, IOSTAT=ErrStat) LocalVar%WE_Vw_F - READ( Un, IOSTAT=ErrStat) LocalVar%WE_VwI - READ( Un, IOSTAT=ErrStat) LocalVar%WE_VwIdot - READ( Un, IOSTAT=ErrStat) LocalVar%VS_LastGenTrqF - READ( Un, IOSTAT=ErrStat) LocalVar%Y_AccErr - READ( Un, IOSTAT=ErrStat) LocalVar%Y_ErrLPFFast - READ( Un, IOSTAT=ErrStat) LocalVar%Y_ErrLPFSlow - READ( Un, IOSTAT=ErrStat) LocalVar%Y_MErr - READ( Un, IOSTAT=ErrStat) LocalVar%Y_YawEndT - READ( Un, IOSTAT=ErrStat) LocalVar%SD - READ( Un, IOSTAT=ErrStat) LocalVar%Fl_PitCom - READ( Un, IOSTAT=ErrStat) LocalVar%NACIMU_FA_AccF - READ( Un, IOSTAT=ErrStat) LocalVar%FA_AccF - READ( Un, IOSTAT=ErrStat) LocalVar%Flp_Angle(1) - READ( Un, IOSTAT=ErrStat) LocalVar%Flp_Angle(2) - READ( Un, IOSTAT=ErrStat) LocalVar%Flp_Angle(3) - READ( Un, IOSTAT=ErrStat) LocalVar%RootMyb_Last(1) - READ( Un, IOSTAT=ErrStat) LocalVar%RootMyb_Last(2) - READ( Un, IOSTAT=ErrStat) LocalVar%RootMyb_Last(3) - READ( Un, IOSTAT=ErrStat) LocalVar%ACC_INFILE_SIZE - ALLOCATE(LocalVar%ACC_INFILE(LocalVar%ACC_INFILE_SIZE)) - READ( Un, IOSTAT=ErrStat) LocalVar%ACC_INFILE - READ( Un, IOSTAT=ErrStat) LocalVar%restart + ELSE + WRITE( Un, IOSTAT=ErrStat) LocalVar%iStatus + WRITE( Un, IOSTAT=ErrStat) LocalVar%Time + WRITE( Un, IOSTAT=ErrStat) LocalVar%DT + WRITE( Un, IOSTAT=ErrStat) LocalVar%VS_GenPwr + WRITE( Un, IOSTAT=ErrStat) LocalVar%GenSpeed + WRITE( Un, IOSTAT=ErrStat) LocalVar%RotSpeed + WRITE( Un, IOSTAT=ErrStat) LocalVar%Y_M + WRITE( Un, IOSTAT=ErrStat) LocalVar%HorWindV + WRITE( Un, IOSTAT=ErrStat) LocalVar%rootMOOP(1) + WRITE( Un, IOSTAT=ErrStat) LocalVar%rootMOOP(2) + WRITE( Un, IOSTAT=ErrStat) LocalVar%rootMOOP(3) + WRITE( Un, IOSTAT=ErrStat) LocalVar%BlPitch(1) + WRITE( Un, IOSTAT=ErrStat) LocalVar%BlPitch(2) + WRITE( Un, IOSTAT=ErrStat) LocalVar%BlPitch(3) + WRITE( Un, IOSTAT=ErrStat) LocalVar%Azimuth + WRITE( Un, IOSTAT=ErrStat) LocalVar%NumBl + WRITE( Un, IOSTAT=ErrStat) LocalVar%FA_Acc + WRITE( Un, IOSTAT=ErrStat) LocalVar%NacIMU_FA_Acc + WRITE( Un, IOSTAT=ErrStat) LocalVar%FA_AccHPF + WRITE( Un, IOSTAT=ErrStat) LocalVar%FA_AccHPFI + WRITE( Un, IOSTAT=ErrStat) LocalVar%FA_PitCom(1) + WRITE( Un, IOSTAT=ErrStat) LocalVar%FA_PitCom(2) + WRITE( Un, IOSTAT=ErrStat) LocalVar%FA_PitCom(3) + WRITE( Un, IOSTAT=ErrStat) LocalVar%RotSpeedF + WRITE( Un, IOSTAT=ErrStat) LocalVar%GenSpeedF + WRITE( Un, IOSTAT=ErrStat) LocalVar%GenTq + WRITE( Un, IOSTAT=ErrStat) LocalVar%GenTqMeas + WRITE( Un, IOSTAT=ErrStat) LocalVar%GenArTq + WRITE( Un, IOSTAT=ErrStat) LocalVar%GenBrTq + WRITE( Un, IOSTAT=ErrStat) LocalVar%IPC_PitComF(1) + WRITE( Un, IOSTAT=ErrStat) LocalVar%IPC_PitComF(2) + WRITE( Un, IOSTAT=ErrStat) LocalVar%IPC_PitComF(3) + WRITE( Un, IOSTAT=ErrStat) LocalVar%PC_KP + WRITE( Un, IOSTAT=ErrStat) LocalVar%PC_KI + WRITE( Un, IOSTAT=ErrStat) LocalVar%PC_KD + WRITE( Un, IOSTAT=ErrStat) LocalVar%PC_TF + WRITE( Un, IOSTAT=ErrStat) LocalVar%PC_MaxPit + WRITE( Un, IOSTAT=ErrStat) LocalVar%PC_MinPit + WRITE( Un, IOSTAT=ErrStat) LocalVar%PC_PitComT + WRITE( Un, IOSTAT=ErrStat) LocalVar%PC_PitComT_Last + WRITE( Un, IOSTAT=ErrStat) LocalVar%PC_PitComTF + WRITE( Un, IOSTAT=ErrStat) LocalVar%PC_PitComT_IPC(1) + WRITE( Un, IOSTAT=ErrStat) LocalVar%PC_PitComT_IPC(2) + WRITE( Un, IOSTAT=ErrStat) LocalVar%PC_PitComT_IPC(3) + WRITE( Un, IOSTAT=ErrStat) LocalVar%PC_PwrErr + WRITE( Un, IOSTAT=ErrStat) LocalVar%PC_SpdErr + WRITE( Un, IOSTAT=ErrStat) LocalVar%IPC_IntAxisTilt_1P + WRITE( Un, IOSTAT=ErrStat) LocalVar%IPC_IntAxisYaw_1P + WRITE( Un, IOSTAT=ErrStat) LocalVar%IPC_IntAxisTilt_2P + WRITE( Un, IOSTAT=ErrStat) LocalVar%IPC_IntAxisYaw_2P + WRITE( Un, IOSTAT=ErrStat) LocalVar%PC_State + WRITE( Un, IOSTAT=ErrStat) LocalVar%PitCom(1) + WRITE( Un, IOSTAT=ErrStat) LocalVar%PitCom(2) + WRITE( Un, IOSTAT=ErrStat) LocalVar%PitCom(3) + WRITE( Un, IOSTAT=ErrStat) LocalVar%SS_DelOmegaF + WRITE( Un, IOSTAT=ErrStat) LocalVar%TestType + WRITE( Un, IOSTAT=ErrStat) LocalVar%VS_MaxTq + WRITE( Un, IOSTAT=ErrStat) LocalVar%VS_LastGenTrq + WRITE( Un, IOSTAT=ErrStat) LocalVar%VS_LastGenPwr + WRITE( Un, IOSTAT=ErrStat) LocalVar%VS_MechGenPwr + WRITE( Un, IOSTAT=ErrStat) LocalVar%VS_SpdErrAr + WRITE( Un, IOSTAT=ErrStat) LocalVar%VS_SpdErrBr + WRITE( Un, IOSTAT=ErrStat) LocalVar%VS_SpdErr + WRITE( Un, IOSTAT=ErrStat) LocalVar%VS_State + WRITE( Un, IOSTAT=ErrStat) LocalVar%VS_Rgn3Pitch + WRITE( Un, IOSTAT=ErrStat) LocalVar%WE_Vw + WRITE( Un, IOSTAT=ErrStat) LocalVar%WE_Vw_F + WRITE( Un, IOSTAT=ErrStat) LocalVar%WE_VwI + WRITE( Un, IOSTAT=ErrStat) LocalVar%WE_VwIdot + WRITE( Un, IOSTAT=ErrStat) LocalVar%VS_LastGenTrqF + WRITE( Un, IOSTAT=ErrStat) LocalVar%Y_AccErr + WRITE( Un, IOSTAT=ErrStat) LocalVar%Y_ErrLPFFast + WRITE( Un, IOSTAT=ErrStat) LocalVar%Y_ErrLPFSlow + WRITE( Un, IOSTAT=ErrStat) LocalVar%Y_MErr + WRITE( Un, IOSTAT=ErrStat) LocalVar%Y_YawEndT + WRITE( Un, IOSTAT=ErrStat) LocalVar%SD + WRITE( Un, IOSTAT=ErrStat) LocalVar%Fl_PitCom + WRITE( Un, IOSTAT=ErrStat) LocalVar%NACIMU_FA_AccF + WRITE( Un, IOSTAT=ErrStat) LocalVar%FA_AccF + WRITE( Un, IOSTAT=ErrStat) LocalVar%Flp_Angle(1) + WRITE( Un, IOSTAT=ErrStat) LocalVar%Flp_Angle(2) + WRITE( Un, IOSTAT=ErrStat) LocalVar%Flp_Angle(3) + WRITE( Un, IOSTAT=ErrStat) LocalVar%RootMyb_Last(1) + WRITE( Un, IOSTAT=ErrStat) LocalVar%RootMyb_Last(2) + WRITE( Un, IOSTAT=ErrStat) LocalVar%RootMyb_Last(3) + WRITE( Un, IOSTAT=ErrStat) LocalVar%ACC_INFILE_SIZE + WRITE( Un, IOSTAT=ErrStat) LocalVar%ACC_INFILE + WRITE( Un, IOSTAT=ErrStat) LocalVar%restart + WRITE( Un, IOSTAT=ErrStat) LocalVar%WE%om_r + WRITE( Un, IOSTAT=ErrStat) LocalVar%WE%v_t + WRITE( Un, IOSTAT=ErrStat) LocalVar%WE%v_m + WRITE( Un, IOSTAT=ErrStat) LocalVar%WE%v_h + WRITE( Un, IOSTAT=ErrStat) LocalVar%WE%P + WRITE( Un, IOSTAT=ErrStat) LocalVar%WE%xh + WRITE( Un, IOSTAT=ErrStat) LocalVar%WE%K + WRITE( Un, IOSTAT=ErrStat) LocalVar%FP%lpf1_a1 + WRITE( Un, IOSTAT=ErrStat) LocalVar%FP%lpf1_a0 + WRITE( Un, IOSTAT=ErrStat) LocalVar%FP%lpf1_b1 + WRITE( Un, IOSTAT=ErrStat) LocalVar%FP%lpf1_b0 + WRITE( Un, IOSTAT=ErrStat) LocalVar%FP%lpf1_InputSignalLast + WRITE( Un, IOSTAT=ErrStat) LocalVar%FP%lpf1_OutputSignalLast + WRITE( Un, IOSTAT=ErrStat) LocalVar%FP%lpf2_a2 + WRITE( Un, IOSTAT=ErrStat) LocalVar%FP%lpf2_a1 + WRITE( Un, IOSTAT=ErrStat) LocalVar%FP%lpf2_a0 + WRITE( Un, IOSTAT=ErrStat) LocalVar%FP%lpf2_b2 + WRITE( Un, IOSTAT=ErrStat) LocalVar%FP%lpf2_b1 + WRITE( Un, IOSTAT=ErrStat) LocalVar%FP%lpf2_b0 + WRITE( Un, IOSTAT=ErrStat) LocalVar%FP%lpf2_InputSignalLast2 + WRITE( Un, IOSTAT=ErrStat) LocalVar%FP%lpf2_OutputSignalLast2 + WRITE( Un, IOSTAT=ErrStat) LocalVar%FP%lpf2_InputSignalLast1 + WRITE( Un, IOSTAT=ErrStat) LocalVar%FP%lpf2_OutputSignalLast1 + WRITE( Un, IOSTAT=ErrStat) LocalVar%FP%hpf_InputSignalLast + WRITE( Un, IOSTAT=ErrStat) LocalVar%FP%hpf_OutputSignalLast + WRITE( Un, IOSTAT=ErrStat) LocalVar%FP%nfs_OutputSignalLast1 + WRITE( Un, IOSTAT=ErrStat) LocalVar%FP%nfs_OutputSignalLast2 + WRITE( Un, IOSTAT=ErrStat) LocalVar%FP%nfs_InputSignalLast1 + WRITE( Un, IOSTAT=ErrStat) LocalVar%FP%nfs_InputSignalLast2 + WRITE( Un, IOSTAT=ErrStat) LocalVar%FP%nfs_b2 + WRITE( Un, IOSTAT=ErrStat) LocalVar%FP%nfs_b0 + WRITE( Un, IOSTAT=ErrStat) LocalVar%FP%nfs_a2 + WRITE( Un, IOSTAT=ErrStat) LocalVar%FP%nfs_a1 + WRITE( Un, IOSTAT=ErrStat) LocalVar%FP%nfs_a0 + WRITE( Un, IOSTAT=ErrStat) LocalVar%FP%nf_OutputSignalLast1 + WRITE( Un, IOSTAT=ErrStat) LocalVar%FP%nf_OutputSignalLast2 + WRITE( Un, IOSTAT=ErrStat) LocalVar%FP%nf_InputSignalLast1 + WRITE( Un, IOSTAT=ErrStat) LocalVar%FP%nf_InputSignalLast2 + WRITE( Un, IOSTAT=ErrStat) LocalVar%FP%nf_b2 + WRITE( Un, IOSTAT=ErrStat) LocalVar%FP%nf_b1 + WRITE( Un, IOSTAT=ErrStat) LocalVar%FP%nf_b0 + WRITE( Un, IOSTAT=ErrStat) LocalVar%FP%nf_a1 + WRITE( Un, IOSTAT=ErrStat) LocalVar%FP%nf_a0 + WRITE( Un, IOSTAT=ErrStat) LocalVar%piP%ITerm + WRITE( Un, IOSTAT=ErrStat) LocalVar%piP%ITermLast + WRITE( Un, IOSTAT=ErrStat) LocalVar%piP%ITerm2 + WRITE( Un, IOSTAT=ErrStat) LocalVar%piP%ITermLast2 + WRITE( Un, IOSTAT=ErrStat) objInst%instLPF + WRITE( Un, IOSTAT=ErrStat) objInst%instSecLPF + WRITE( Un, IOSTAT=ErrStat) objInst%instHPF + WRITE( Un, IOSTAT=ErrStat) objInst%instNotchSlopes + WRITE( Un, IOSTAT=ErrStat) objInst%instNotch + WRITE( Un, IOSTAT=ErrStat) objInst%instPI + Close ( Un ) + ENDIF +END SUBROUTINE WriteRestartFile - READ( Un, IOSTAT=ErrStat) LocalVar%WE%om_r - READ( Un, IOSTAT=ErrStat) LocalVar%WE%v_t - READ( Un, IOSTAT=ErrStat) LocalVar%WE%v_m - READ( Un, IOSTAT=ErrStat) LocalVar%WE%v_h - READ( Un, IOSTAT=ErrStat) LocalVar%WE%P - READ( Un, IOSTAT=ErrStat) LocalVar%WE%xh - READ( Un, IOSTAT=ErrStat) LocalVar%WE%K + +SUBROUTINE ReadRestartFile(avrSWAP, LocalVar, CntrPar, objInst, PerfData, RootName, size_avcOUTNAME, ErrVar) + TYPE(LocalVariables), INTENT(INOUT) :: LocalVar + TYPE(ControlParameters), INTENT(INOUT) :: CntrPar + TYPE(ObjectInstances), INTENT(INOUT) :: objInst + TYPE(PerformanceData), INTENT(INOUT) :: PerfData + TYPE(ErrorVariables), INTENT(INOUT) :: ErrVar + REAL(C_FLOAT), INTENT(IN) :: avrSWAP(*) + INTEGER(IntKi), INTENT(IN) :: size_avcOUTNAME + CHARACTER(size_avcOUTNAME-1), INTENT(IN) :: RootName + + INTEGER(IntKi), PARAMETER :: Un = 87 ! I/O unit for pack/unpack (checkpoint & restart) + INTEGER(IntKi) :: I ! Generic index. + CHARACTER(128) :: InFile ! Input checkpoint file + INTEGER(IntKi) :: ErrStat + CHARACTER(128) :: ErrMsg + CHARACTER(128) :: n_t_global ! timestep number as a string - READ( Un, IOSTAT=ErrStat) objInst%instLPF - READ( Un, IOSTAT=ErrStat) objInst%instSecLPF - READ( Un, IOSTAT=ErrStat) objInst%instHPF - READ( Un, IOSTAT=ErrStat) objInst%instNotchSlopes - READ( Un, IOSTAT=ErrStat) objInst%instNotch - READ( Un, IOSTAT=ErrStat) objInst%instPI + WRITE(n_t_global, '(I0.0)' ), NINT(avrSWAP(2)/avrSWAP(3)) + InFile = RootName(1:size_avcOUTNAME-5)//TRIM( n_t_global )//'.RO.chkp' + OPEN(unit=Un, FILE=TRIM(InFile), STATUS='UNKNOWN', FORM='UNFORMATTED' , ACCESS='STREAM', IOSTAT=ErrStat, ACTION='READ' ) - READ( Un, IOSTAT=ErrStat) LocalVar%FP%lpf1_a1 - READ( Un, IOSTAT=ErrStat) LocalVar%FP%lpf1_a0 - READ( Un, IOSTAT=ErrStat) LocalVar%FP%lpf1_b1 - READ( Un, IOSTAT=ErrStat) LocalVar%FP%lpf1_b0 - READ( Un, IOSTAT=ErrStat) LocalVar%FP%lpf1_InputSignalLast - READ( Un, IOSTAT=ErrStat) LocalVar%FP%lpf1_OutputSignalLast - READ( Un, IOSTAT=ErrStat) LocalVar%FP%lpf2_a2 - READ( Un, IOSTAT=ErrStat) LocalVar%FP%lpf2_a1 - READ( Un, IOSTAT=ErrStat) LocalVar%FP%lpf2_a0 - READ( Un, IOSTAT=ErrStat) LocalVar%FP%lpf2_b2 - READ( Un, IOSTAT=ErrStat) LocalVar%FP%lpf2_b1 - READ( Un, IOSTAT=ErrStat) LocalVar%FP%lpf2_b0 - READ( Un, IOSTAT=ErrStat) LocalVar%FP%lpf2_InputSignalLast2 - READ( Un, IOSTAT=ErrStat) LocalVar%FP%lpf2_OutputSignalLast2 - READ( Un, IOSTAT=ErrStat) LocalVar%FP%lpf2_InputSignalLast1 - READ( Un, IOSTAT=ErrStat) LocalVar%FP%lpf2_OutputSignalLast1 - READ( un, IOSTAT=ErrStat) LocalVar%FP%hpf_InputSignalLast - READ( un, IOSTAT=ErrStat) LocalVar%FP%hpf_OutputSignalLast - READ( un, IOSTAT=ErrStat) LocalVar%FP%nfs_OutputSignalLast1 - READ( un, IOSTAT=ErrStat) LocalVar%FP%nfs_OutputSignalLast2 - READ( un, IOSTAT=ErrStat) LocalVar%FP%nfs_InputSignalLast1 - READ( un, IOSTAT=ErrStat) LocalVar%FP%nfs_InputSignalLast2 - READ( un, IOSTAT=ErrStat) LocalVar%FP%nfs_b2 - READ( un, IOSTAT=ErrStat) LocalVar%FP%nfs_b0 - READ( un, IOSTAT=ErrStat) LocalVar%FP%nfs_a2 - READ( un, IOSTAT=ErrStat) LocalVar%FP%nfs_a1 - READ( un, IOSTAT=ErrStat) LocalVar%FP%nfs_a0 - READ( un, IOSTAT=ErrStat) LocalVar%FP%nf_OutputSignalLast1 - READ( un, IOSTAT=ErrStat) LocalVar%FP%nf_OutputSignalLast2 - READ( un, IOSTAT=ErrStat) LocalVar%FP%nf_InputSignalLast1 - READ( un, IOSTAT=ErrStat) LocalVar%FP%nf_InputSignalLast2 - READ( un, IOSTAT=ErrStat) LocalVar%FP%nf_b2 - READ( un, IOSTAT=ErrStat) LocalVar%FP%nf_b1 - READ( un, IOSTAT=ErrStat) LocalVar%FP%nf_b0 - READ( un, IOSTAT=ErrStat) LocalVar%FP%nf_a1 - READ( un, IOSTAT=ErrStat) LocalVar%FP%nf_a0 + IF ( ErrStat /= 0 ) THEN + ErrMsg = 'Cannot open file //TRIM( InFile )//. Another program may have locked it for writing.' - READ( Un, IOSTAT=ErrStat) LocalVar%piP%ITerm - READ( Un, IOSTAT=ErrStat) LocalVar%piP%ITermLast - READ( Un, IOSTAT=ErrStat) LocalVar%piP%ITerm2 - READ( Un, IOSTAT=ErrStat) LocalVar%piP%ITermLast2 + ELSE + READ( Un, IOSTAT=ErrStat) LocalVar%iStatus + READ( Un, IOSTAT=ErrStat) LocalVar%Time + READ( Un, IOSTAT=ErrStat) LocalVar%DT + READ( Un, IOSTAT=ErrStat) LocalVar%VS_GenPwr + READ( Un, IOSTAT=ErrStat) LocalVar%GenSpeed + READ( Un, IOSTAT=ErrStat) LocalVar%RotSpeed + READ( Un, IOSTAT=ErrStat) LocalVar%Y_M + READ( Un, IOSTAT=ErrStat) LocalVar%HorWindV + READ( Un, IOSTAT=ErrStat) LocalVar%rootMOOP(1) + READ( Un, IOSTAT=ErrStat) LocalVar%rootMOOP(2) + READ( Un, IOSTAT=ErrStat) LocalVar%rootMOOP(3) + READ( Un, IOSTAT=ErrStat) LocalVar%BlPitch(1) + READ( Un, IOSTAT=ErrStat) LocalVar%BlPitch(2) + READ( Un, IOSTAT=ErrStat) LocalVar%BlPitch(3) + READ( Un, IOSTAT=ErrStat) LocalVar%Azimuth + READ( Un, IOSTAT=ErrStat) LocalVar%NumBl + READ( Un, IOSTAT=ErrStat) LocalVar%FA_Acc + READ( Un, IOSTAT=ErrStat) LocalVar%NacIMU_FA_Acc + READ( Un, IOSTAT=ErrStat) LocalVar%FA_AccHPF + READ( Un, IOSTAT=ErrStat) LocalVar%FA_AccHPFI + READ( Un, IOSTAT=ErrStat) LocalVar%FA_PitCom(1) + READ( Un, IOSTAT=ErrStat) LocalVar%FA_PitCom(2) + READ( Un, IOSTAT=ErrStat) LocalVar%FA_PitCom(3) + READ( Un, IOSTAT=ErrStat) LocalVar%RotSpeedF + READ( Un, IOSTAT=ErrStat) LocalVar%GenSpeedF + READ( Un, IOSTAT=ErrStat) LocalVar%GenTq + READ( Un, IOSTAT=ErrStat) LocalVar%GenTqMeas + READ( Un, IOSTAT=ErrStat) LocalVar%GenArTq + READ( Un, IOSTAT=ErrStat) LocalVar%GenBrTq + READ( Un, IOSTAT=ErrStat) LocalVar%IPC_PitComF(1) + READ( Un, IOSTAT=ErrStat) LocalVar%IPC_PitComF(2) + READ( Un, IOSTAT=ErrStat) LocalVar%IPC_PitComF(3) + READ( Un, IOSTAT=ErrStat) LocalVar%PC_KP + READ( Un, IOSTAT=ErrStat) LocalVar%PC_KI + READ( Un, IOSTAT=ErrStat) LocalVar%PC_KD + READ( Un, IOSTAT=ErrStat) LocalVar%PC_TF + READ( Un, IOSTAT=ErrStat) LocalVar%PC_MaxPit + READ( Un, IOSTAT=ErrStat) LocalVar%PC_MinPit + READ( Un, IOSTAT=ErrStat) LocalVar%PC_PitComT + READ( Un, IOSTAT=ErrStat) LocalVar%PC_PitComT_Last + READ( Un, IOSTAT=ErrStat) LocalVar%PC_PitComTF + READ( Un, IOSTAT=ErrStat) LocalVar%PC_PitComT_IPC(1) + READ( Un, IOSTAT=ErrStat) LocalVar%PC_PitComT_IPC(2) + READ( Un, IOSTAT=ErrStat) LocalVar%PC_PitComT_IPC(3) + READ( Un, IOSTAT=ErrStat) LocalVar%PC_PwrErr + READ( Un, IOSTAT=ErrStat) LocalVar%PC_SpdErr + READ( Un, IOSTAT=ErrStat) LocalVar%IPC_IntAxisTilt_1P + READ( Un, IOSTAT=ErrStat) LocalVar%IPC_IntAxisYaw_1P + READ( Un, IOSTAT=ErrStat) LocalVar%IPC_IntAxisTilt_2P + READ( Un, IOSTAT=ErrStat) LocalVar%IPC_IntAxisYaw_2P + READ( Un, IOSTAT=ErrStat) LocalVar%PC_State + READ( Un, IOSTAT=ErrStat) LocalVar%PitCom(1) + READ( Un, IOSTAT=ErrStat) LocalVar%PitCom(2) + READ( Un, IOSTAT=ErrStat) LocalVar%PitCom(3) + READ( Un, IOSTAT=ErrStat) LocalVar%SS_DelOmegaF + READ( Un, IOSTAT=ErrStat) LocalVar%TestType + READ( Un, IOSTAT=ErrStat) LocalVar%VS_MaxTq + READ( Un, IOSTAT=ErrStat) LocalVar%VS_LastGenTrq + READ( Un, IOSTAT=ErrStat) LocalVar%VS_LastGenPwr + READ( Un, IOSTAT=ErrStat) LocalVar%VS_MechGenPwr + READ( Un, IOSTAT=ErrStat) LocalVar%VS_SpdErrAr + READ( Un, IOSTAT=ErrStat) LocalVar%VS_SpdErrBr + READ( Un, IOSTAT=ErrStat) LocalVar%VS_SpdErr + READ( Un, IOSTAT=ErrStat) LocalVar%VS_State + READ( Un, IOSTAT=ErrStat) LocalVar%VS_Rgn3Pitch + READ( Un, IOSTAT=ErrStat) LocalVar%WE_Vw + READ( Un, IOSTAT=ErrStat) LocalVar%WE_Vw_F + READ( Un, IOSTAT=ErrStat) LocalVar%WE_VwI + READ( Un, IOSTAT=ErrStat) LocalVar%WE_VwIdot + READ( Un, IOSTAT=ErrStat) LocalVar%VS_LastGenTrqF + READ( Un, IOSTAT=ErrStat) LocalVar%Y_AccErr + READ( Un, IOSTAT=ErrStat) LocalVar%Y_ErrLPFFast + READ( Un, IOSTAT=ErrStat) LocalVar%Y_ErrLPFSlow + READ( Un, IOSTAT=ErrStat) LocalVar%Y_MErr + READ( Un, IOSTAT=ErrStat) LocalVar%Y_YawEndT + READ( Un, IOSTAT=ErrStat) LocalVar%SD + READ( Un, IOSTAT=ErrStat) LocalVar%Fl_PitCom + READ( Un, IOSTAT=ErrStat) LocalVar%NACIMU_FA_AccF + READ( Un, IOSTAT=ErrStat) LocalVar%FA_AccF + READ( Un, IOSTAT=ErrStat) LocalVar%Flp_Angle(1) + READ( Un, IOSTAT=ErrStat) LocalVar%Flp_Angle(2) + READ( Un, IOSTAT=ErrStat) LocalVar%Flp_Angle(3) + READ( Un, IOSTAT=ErrStat) LocalVar%RootMyb_Last(1) + READ( Un, IOSTAT=ErrStat) LocalVar%RootMyb_Last(2) + READ( Un, IOSTAT=ErrStat) LocalVar%RootMyb_Last(3) + READ( Un, IOSTAT=ErrStat) LocalVar%ACC_INFILE_SIZE + ALLOCATE(LocalVar%ACC_INFILE(LocalVar%ACC_INFILE_SIZE)) + READ( Un, IOSTAT=ErrStat) LocalVar%ACC_INFILE + READ( Un, IOSTAT=ErrStat) LocalVar%restart + READ( Un, IOSTAT=ErrStat) LocalVar%WE%om_r + READ( Un, IOSTAT=ErrStat) LocalVar%WE%v_t + READ( Un, IOSTAT=ErrStat) LocalVar%WE%v_m + READ( Un, IOSTAT=ErrStat) LocalVar%WE%v_h + READ( Un, IOSTAT=ErrStat) LocalVar%WE%P + READ( Un, IOSTAT=ErrStat) LocalVar%WE%xh + READ( Un, IOSTAT=ErrStat) LocalVar%WE%K + READ( Un, IOSTAT=ErrStat) LocalVar%FP%lpf1_a1 + READ( Un, IOSTAT=ErrStat) LocalVar%FP%lpf1_a0 + READ( Un, IOSTAT=ErrStat) LocalVar%FP%lpf1_b1 + READ( Un, IOSTAT=ErrStat) LocalVar%FP%lpf1_b0 + READ( Un, IOSTAT=ErrStat) LocalVar%FP%lpf1_InputSignalLast + READ( Un, IOSTAT=ErrStat) LocalVar%FP%lpf1_OutputSignalLast + READ( Un, IOSTAT=ErrStat) LocalVar%FP%lpf2_a2 + READ( Un, IOSTAT=ErrStat) LocalVar%FP%lpf2_a1 + READ( Un, IOSTAT=ErrStat) LocalVar%FP%lpf2_a0 + READ( Un, IOSTAT=ErrStat) LocalVar%FP%lpf2_b2 + READ( Un, IOSTAT=ErrStat) LocalVar%FP%lpf2_b1 + READ( Un, IOSTAT=ErrStat) LocalVar%FP%lpf2_b0 + READ( Un, IOSTAT=ErrStat) LocalVar%FP%lpf2_InputSignalLast2 + READ( Un, IOSTAT=ErrStat) LocalVar%FP%lpf2_OutputSignalLast2 + READ( Un, IOSTAT=ErrStat) LocalVar%FP%lpf2_InputSignalLast1 + READ( Un, IOSTAT=ErrStat) LocalVar%FP%lpf2_OutputSignalLast1 + READ( Un, IOSTAT=ErrStat) LocalVar%FP%hpf_InputSignalLast + READ( Un, IOSTAT=ErrStat) LocalVar%FP%hpf_OutputSignalLast + READ( Un, IOSTAT=ErrStat) LocalVar%FP%nfs_OutputSignalLast1 + READ( Un, IOSTAT=ErrStat) LocalVar%FP%nfs_OutputSignalLast2 + READ( Un, IOSTAT=ErrStat) LocalVar%FP%nfs_InputSignalLast1 + READ( Un, IOSTAT=ErrStat) LocalVar%FP%nfs_InputSignalLast2 + READ( Un, IOSTAT=ErrStat) LocalVar%FP%nfs_b2 + READ( Un, IOSTAT=ErrStat) LocalVar%FP%nfs_b0 + READ( Un, IOSTAT=ErrStat) LocalVar%FP%nfs_a2 + READ( Un, IOSTAT=ErrStat) LocalVar%FP%nfs_a1 + READ( Un, IOSTAT=ErrStat) LocalVar%FP%nfs_a0 + READ( Un, IOSTAT=ErrStat) LocalVar%FP%nf_OutputSignalLast1 + READ( Un, IOSTAT=ErrStat) LocalVar%FP%nf_OutputSignalLast2 + READ( Un, IOSTAT=ErrStat) LocalVar%FP%nf_InputSignalLast1 + READ( Un, IOSTAT=ErrStat) LocalVar%FP%nf_InputSignalLast2 + READ( Un, IOSTAT=ErrStat) LocalVar%FP%nf_b2 + READ( Un, IOSTAT=ErrStat) LocalVar%FP%nf_b1 + READ( Un, IOSTAT=ErrStat) LocalVar%FP%nf_b0 + READ( Un, IOSTAT=ErrStat) LocalVar%FP%nf_a1 + READ( Un, IOSTAT=ErrStat) LocalVar%FP%nf_a0 + READ( Un, IOSTAT=ErrStat) LocalVar%piP%ITerm + READ( Un, IOSTAT=ErrStat) LocalVar%piP%ITermLast + READ( Un, IOSTAT=ErrStat) LocalVar%piP%ITerm2 + READ( Un, IOSTAT=ErrStat) LocalVar%piP%ITermLast2 + READ( Un, IOSTAT=ErrStat) objInst%instLPF + READ( Un, IOSTAT=ErrStat) objInst%instSecLPF + READ( Un, IOSTAT=ErrStat) objInst%instHPF + READ( Un, IOSTAT=ErrStat) objInst%instNotchSlopes + READ( Un, IOSTAT=ErrStat) objInst%instNotch + READ( Un, IOSTAT=ErrStat) objInst%instPI + Close ( Un ) + ENDIF + ! Read Parameter files + CALL ReadControlParameterFileSub(CntrPar, LocalVar%ACC_INFILE, LocalVar%ACC_INFILE_SIZE, ErrVar) + IF (CntrPar%WE_Mode > 0) THEN + CALL READCpFile(CntrPar, PerfData, ErrVar) + ENDIF +END SUBROUTINE ReadRestartFile - CLOSE ( Un ) - ENDIF + +SUBROUTINE Debug(LocalVar, CntrPar, DebugVar, avrSWAP, RootName, size_avcOUTNAME) +! Debug routine, defines what gets printed to DEBUG.dbg if LoggingLevel = 1 - ! Read Parameter files - CALL ReadControlParameterFileSub(CntrPar, LocalVar%ACC_INFILE, LocalVar%ACC_INFILE_SIZE, ErrVar) - IF (CntrPar%WE_Mode > 0) THEN - CALL READCpFile(CntrPar, PerfData, ErrVar) - ENDIF - - END SUBROUTINE ReadRestartFile + TYPE(ControlParameters), INTENT(IN) :: CntrPar + TYPE(LocalVariables), INTENT(IN) :: LocalVar + TYPE(DebugVariables), INTENT(IN) :: DebugVar -!------------------------------------------------------------------------------------------------------------------------------- - SUBROUTINE Debug(LocalVar, CntrPar, DebugVar, avrSWAP, RootName, size_avcOUTNAME) - ! Debug routine, defines what gets printed to DEBUG.dbg if LoggingLevel = 1 - - USE, INTRINSIC :: ISO_C_Binding - USE ROSCO_Types, ONLY : LocalVariables, ControlParameters, DebugVariables - - IMPLICIT NONE - - TYPE(ControlParameters), INTENT(IN) :: CntrPar - TYPE(LocalVariables), INTENT(IN) :: LocalVar - TYPE(DebugVariables), INTENT(IN) :: DebugVar - - INTEGER(IntKi), INTENT(IN) :: size_avcOUTNAME - INTEGER(IntKi) :: I , nDebugOuts ! Generic index. - CHARACTER(1), PARAMETER :: Tab = CHAR(9) ! The tab character. - CHARACTER(29), PARAMETER :: FmtDat = "(F10.3,TR5,99(ES10.3E2,TR5:))" ! The format of the debugging data - INTEGER(IntKi), PARAMETER :: UnDb = 85 ! I/O unit for the debugging information - INTEGER(IntKi), PARAMETER :: UnDb2 = 86 ! I/O unit for the debugging information, avrSWAP - REAL(ReKi), 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] - CHARACTER(200) :: Version ! git version of ROSCO - CHARACTER(10) :: DebugOutStr1, DebugOutStr2, DebugOutStr3, DebugOutStr4, DebugOutStr5, & - DebugOutStr6, DebugOutStr7, DebugOutStr8, DebugOutStr9, DebugOutStr10, & - DebugOutStr11, DebugOutStr12, DebugOutStr13, DebugOutStr14, DebugOutStr15, & - DebugOutStr16, DebugOutStr17, DebugOutStr18, DebugOutStr19, DebugOutStr20 - CHARACTER(10) :: DebugOutUni1, DebugOutUni2, DebugOutUni3, DebugOutUni4, DebugOutUni5, & - DebugOutUni6, DebugOutUni7, DebugOutUni8, DebugOutUni9, DebugOutUni10, & - DebugOutUni11, DebugOutUni12, DebugOutUni13, DebugOutUni14, DebugOutUni15, & - DebugOutUni16, DebugOutUni17, DebugOutUni18, DebugOutUni19, DebugOutUni20 - CHARACTER(10), ALLOCATABLE :: DebugOutStrings(:), DebugOutUnits(:) - REAL(DbKi), ALLOCATABLE :: DebugOutData(:) + INTEGER(IntKi), INTENT(IN) :: size_avcOUTNAME + INTEGER(IntKi) :: I , nDebugOuts, nLocalVars ! Generic index. + CHARACTER(1), PARAMETER :: Tab = CHAR(9) ! The tab character. + CHARACTER(29), PARAMETER :: FmtDat = "(F20.5,TR5,99(ES20.5E2,TR5:))" ! The format of the debugging data + INTEGER(IntKi), PARAMETER :: UnDb = 85 ! I/O unit for the debugging information + INTEGER(IntKi), PARAMETER :: UnDb2 = 86 ! I/O unit for the debugging information, avrSWAP + INTEGER(IntKi), PARAMETER :: UnDb3 = 87 ! I/O unit for the debugging information, avrSWAP + REAL(ReKi), 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] + CHARACTER(200) :: Version ! git version of ROSCO + CHARACTER(15), ALLOCATABLE :: DebugOutStrings(:), DebugOutUnits(:) + REAL(DbKi), ALLOCATABLE :: DebugOutData(:) + + CHARACTER(15), ALLOCATABLE :: LocalVarOutStrings(:) + REAL(DbKi), ALLOCATABLE :: LocalVarOutData(:) + + nDebugOuts = 8 + Allocate(DebugOutData(nDebugOuts)) + Allocate(DebugOutStrings(nDebugOuts)) + Allocate(DebugOutUnits(nDebugOuts)) + DebugOutData(1) = DebugVar%WE_Cp + DebugOutData(2) = DebugVar%WE_b + DebugOutData(3) = DebugVar%WE_w + DebugOutData(4) = DebugVar%WE_t + DebugOutData(5) = DebugVar%WE_Vm + DebugOutData(6) = DebugVar%WE_Vt + DebugOutData(7) = DebugVar%WE_lambda + DebugOutData(8) = DebugVar%PC_PICommand + DebugOutStrings = [CHARACTER(15) :: 'WE_Cp', 'WE_b', 'WE_w', 'WE_t', 'WE_Vm', & + 'WE_Vt', 'WE_lambda', 'PC_PICommand'] + DebugOutUnits = [CHARACTER(15) :: '[-]', '[-]', '[-]', '[-]', '[m/s]', & + '[m/s]', '[rad]', '[rad]'] + nLocalVars = 69 + Allocate(LocalVarOutData(nLocalVars)) + Allocate(LocalVarOutStrings(nLocalVars)) + LocalVarOutData(1) = LocalVar%iStatus + LocalVarOutData(2) = LocalVar%Time + LocalVarOutData(3) = LocalVar%DT + LocalVarOutData(4) = LocalVar%VS_GenPwr + LocalVarOutData(5) = LocalVar%GenSpeed + LocalVarOutData(6) = LocalVar%RotSpeed + LocalVarOutData(7) = LocalVar%Y_M + LocalVarOutData(8) = LocalVar%HorWindV + LocalVarOutData(9) = LocalVar%rootMOOP(1) + LocalVarOutData(10) = LocalVar%BlPitch(1) + LocalVarOutData(11) = LocalVar%Azimuth + LocalVarOutData(12) = LocalVar%NumBl + LocalVarOutData(13) = LocalVar%FA_Acc + LocalVarOutData(14) = LocalVar%NacIMU_FA_Acc + LocalVarOutData(15) = LocalVar%FA_AccHPF + LocalVarOutData(16) = LocalVar%FA_AccHPFI + LocalVarOutData(17) = LocalVar%FA_PitCom(1) + LocalVarOutData(18) = LocalVar%RotSpeedF + LocalVarOutData(19) = LocalVar%GenSpeedF + LocalVarOutData(20) = LocalVar%GenTq + LocalVarOutData(21) = LocalVar%GenTqMeas + LocalVarOutData(22) = LocalVar%GenArTq + LocalVarOutData(23) = LocalVar%GenBrTq + LocalVarOutData(24) = LocalVar%IPC_PitComF(1) + LocalVarOutData(25) = LocalVar%PC_KP + LocalVarOutData(26) = LocalVar%PC_KI + LocalVarOutData(27) = LocalVar%PC_KD + LocalVarOutData(28) = LocalVar%PC_TF + LocalVarOutData(29) = LocalVar%PC_MaxPit + LocalVarOutData(30) = LocalVar%PC_MinPit + LocalVarOutData(31) = LocalVar%PC_PitComT + LocalVarOutData(32) = LocalVar%PC_PitComT_Last + LocalVarOutData(33) = LocalVar%PC_PitComTF + LocalVarOutData(34) = LocalVar%PC_PitComT_IPC(1) + LocalVarOutData(35) = LocalVar%PC_PwrErr + LocalVarOutData(36) = LocalVar%PC_SpdErr + LocalVarOutData(37) = LocalVar%IPC_IntAxisTilt_1P + LocalVarOutData(38) = LocalVar%IPC_IntAxisYaw_1P + LocalVarOutData(39) = LocalVar%IPC_IntAxisTilt_2P + LocalVarOutData(40) = LocalVar%IPC_IntAxisYaw_2P + LocalVarOutData(41) = LocalVar%PC_State + LocalVarOutData(42) = LocalVar%PitCom(1) + LocalVarOutData(43) = LocalVar%SS_DelOmegaF + LocalVarOutData(44) = LocalVar%TestType + LocalVarOutData(45) = LocalVar%VS_MaxTq + LocalVarOutData(46) = LocalVar%VS_LastGenTrq + LocalVarOutData(47) = LocalVar%VS_LastGenPwr + LocalVarOutData(48) = LocalVar%VS_MechGenPwr + LocalVarOutData(49) = LocalVar%VS_SpdErrAr + LocalVarOutData(50) = LocalVar%VS_SpdErrBr + LocalVarOutData(51) = LocalVar%VS_SpdErr + LocalVarOutData(52) = LocalVar%VS_State + LocalVarOutData(53) = LocalVar%VS_Rgn3Pitch + LocalVarOutData(54) = LocalVar%WE_Vw + LocalVarOutData(55) = LocalVar%WE_Vw_F + LocalVarOutData(56) = LocalVar%WE_VwI + LocalVarOutData(57) = LocalVar%WE_VwIdot + LocalVarOutData(58) = LocalVar%VS_LastGenTrqF + LocalVarOutData(59) = LocalVar%Y_AccErr + LocalVarOutData(60) = LocalVar%Y_ErrLPFFast + LocalVarOutData(61) = LocalVar%Y_ErrLPFSlow + LocalVarOutData(62) = LocalVar%Y_MErr + LocalVarOutData(63) = LocalVar%Y_YawEndT + LocalVarOutData(65) = LocalVar%Fl_PitCom + LocalVarOutData(66) = LocalVar%NACIMU_FA_AccF + LocalVarOutData(67) = LocalVar%FA_AccF + LocalVarOutData(68) = LocalVar%Flp_Angle(1) + LocalVarOutData(69) = LocalVar%RootMyb_Last(1) + LocalVarOutData(70) = LocalVar%ACC_INFILE_SIZE + LocalVarOutStrings = [CHARACTER(15) :: 'iStatus', 'Time', 'DT', 'VS_GenPwr', 'GenSpeed', & + 'RotSpeed', 'Y_M', 'HorWindV', 'rootMOOP', 'BlPitch', & + 'Azimuth', 'NumBl', 'FA_Acc', 'NacIMU_FA_Acc', 'FA_AccHPF', & + 'FA_AccHPFI', 'FA_PitCom', 'RotSpeedF', 'GenSpeedF', 'GenTq', & + 'GenTqMeas', 'GenArTq', 'GenBrTq', 'IPC_PitComF', 'PC_KP', & + 'PC_KI', 'PC_KD', 'PC_TF', 'PC_MaxPit', 'PC_MinPit', & + 'PC_PitComT', 'PC_PitComT_Last', 'PC_PitComTF', 'PC_PitComT_IPC', 'PC_PwrErr', & + 'PC_SpdErr', 'IPC_IntAxisTilt_1P', 'IPC_IntAxisYaw_1P', 'IPC_IntAxisTilt_2P', 'IPC_IntAxisYaw_2P', & + 'PC_State', 'PitCom', 'SS_DelOmegaF', 'TestType', 'VS_MaxTq', & + 'VS_LastGenTrq', 'VS_LastGenPwr', 'VS_MechGenPwr', 'VS_SpdErrAr', 'VS_SpdErrBr', & + 'VS_SpdErr', 'VS_State', 'VS_Rgn3Pitch', 'WE_Vw', 'WE_Vw_F', & + 'WE_VwI', 'WE_VwIdot', 'VS_LastGenTrqF', 'Y_AccErr', 'Y_ErrLPFFast', & + 'Y_ErrLPFSlow', 'Y_MErr', 'Y_YawEndT', 'Fl_PitCom', 'NACIMU_FA_AccF', & + 'FA_AccF', 'Flp_Angle', 'RootMyb_Last', 'ACC_INFILE_SIZE'] + ! Initialize debug file + IF ((LocalVar%iStatus == 0) .OR. (LocalVar%iStatus == -9)) THEN ! .TRUE. if we're on the first call to the DLL + ! If we're debugging, open the debug file and write the header: + ! Note that the headers will be Truncated to 10 characters!! + IF (CntrPar%LoggingLevel > 0) THEN + OPEN(unit=UnDb, FILE=RootName(1: size_avcOUTNAME-5)//'RO.dbg') + WRITE(UnDb, *) 'Generated on '//CurDate()//' at '//CurTime()//' using ROSCO-'//TRIM(rosco_version) + WRITE(UnDb, '(99(a20,TR5:))') 'Time', DebugOutStrings + WRITE(UnDb, '(99(a20,TR5:))') '(sec)', DebugOutUnits + END IF - ! Set up Debug Strings and Data - ! Note that Debug strings have 10 character limit - nDebugOuts = 18 - ALLOCATE(DebugOutData(nDebugOuts)) - ! Header Unit Variable - ! Filters - DebugOutStr1 = 'FA_AccF'; DebugOutUni1 = '(rad/s^2)'; DebugOutData(1) = LocalVar%NacIMU_FA_AccF - DebugOutStr2 = 'FA_AccR'; DebugOutUni2 = '(rad/s^2)'; DebugOutData(2) = LocalVar%NacIMU_FA_Acc - DebugOutStr3 = 'RotSpeed'; DebugOutUni3 = '(rad/s)'; DebugOutData(3) = LocalVar%RotSpeed - DebugOutStr4 = 'RotSpeedF'; DebugOutUni4 = '(rad/s)'; DebugOutData(4) = LocalVar%RotSpeedF - DebugOutStr5 = 'GenSpeed'; DebugOutUni5 = '(rad/s)'; DebugOutData(5) = LocalVar%GenSpeed - DebugOutStr6 = 'GenSpeedF'; DebugOutUni6 = '(rad/s)'; DebugOutData(6) = LocalVar%GenSpeedF - ! Floating - DebugOutStr7 = 'FA_Acc'; DebugOutUni7 = '(m/s^2)'; DebugOutData(7) = LocalVar%FA_Acc - DebugOutStr8 = 'Fl_Pitcom'; DebugOutUni8 = '(rad)'; DebugOutData(8) = LocalVar%Fl_Pitcom - DebugOutStr9 = 'PC_MinPit'; DebugOutUni9 = '(rad)'; DebugOutData(9) = LocalVar%PC_MinPit - DebugOutStr10 = 'SS_dOmF'; DebugOutUni10 = '(rad/s)'; DebugOutData(10) = LocalVar%SS_DelOmegaF - ! WSE - DebugOutStr11 = 'WE_Vw'; DebugOutUni11 = '(m/s)'; DebugOutData(11) = LocalVar%WE_Vw - DebugOutStr12 = 'WE_b'; DebugOutUni12 = '(deg)'; DebugOutData(12) = DebugVar%WE_b - DebugOutStr13 = 'WE_t'; DebugOutUni13 = '(Nm)'; DebugOutData(13) = DebugVar%WE_t - DebugOutStr14 = 'WE_w'; DebugOutUni14 = '(rad/s)'; DebugOutData(14) = DebugVar%WE_w - DebugOutStr15 = 'WE_Vm'; DebugOutUni15 = '(m/s)'; DebugOutData(15) = DebugVar%WE_Vm - DebugOutStr16 = 'WE_Vt'; DebugOutUni16 = '(m/s)'; DebugOutData(16) = DebugVar%WE_Vt - DebugOutStr17 = 'WE_lambda'; DebugOutUni17 = '(-)'; DebugOutData(17) = DebugVar%WE_lambda - DebugOutStr18 = 'WE_Cp'; DebugOutUni18 = '(-)'; DebugOutData(18) = DebugVar%WE_Cp + IF (CntrPar%LoggingLevel > 1) THEN + OPEN(unit=UnDb2, FILE=RootName(1: size_avcOUTNAME-5)//'RO.dbg2') + WRITE(UnDb2, *) 'Generated on '//CurDate()//' at '//CurTime()//' using ROSCO-'//TRIM(rosco_version) + WRITE(UnDb2, '(99(a20,TR5:))') 'Time', LocalVarOutStrings + WRITE(UnDb2, '(99(a20,TR5:))') + END IF - Allocate(DebugOutStrings(nDebugOuts)) - Allocate(DebugOutUnits(nDebugOuts)) - DebugOutStrings = [CHARACTER(10) :: DebugOutStr1, DebugOutStr2, DebugOutStr3, DebugOutStr4, & - DebugOutStr5, DebugOutStr6, DebugOutStr7, DebugOutStr8, & - DebugOutStr9, DebugOutStr10, DebugOutStr11, DebugOutStr12, & - DebugOutStr13, DebugOutStr14, DebugOutStr15, DebugOutStr16, & - DebugOutStr17, DebugOutStr18] - DebugOutUnits = [CHARACTER(10) :: DebugOutUni1, DebugOutUni2, DebugOutUni3, DebugOutUni4, & - DebugOutUni5, DebugOutUni6, DebugOutUni7, DebugOutUni8, & - DebugOutUni9, DebugOutUni10, DebugOutUni11, DebugOutUni12, & - DebugOutUni13, DebugOutUni14, DebugOutUni15, DebugOutUni1, & - DebugOutUni17, DebugOutUni18] - - ! Initialize debug file - IF ((LocalVar%iStatus == 0) .OR. (LocalVar%iStatus == -8)) THEN ! .TRUE. if we're on the first call to the DLL - ! If we're debugging, open the debug file and write the header: - ! Note that the headers will be Truncated to 10 characters!! - IF (CntrPar%LoggingLevel > 0) THEN - OPEN(unit=UnDb, FILE=RootName(1:size_avcOUTNAME-5)//'RO.dbg') - WRITE (UnDb,*) 'Generated on '//CurDate()//' at '//CurTime()//' using ROSCO-'//TRIM(rosco_version) - WRITE (UnDb,'(99(a10,TR5:))') 'Time', DebugOutStrings - WRITE (UnDb,'(99(a10,TR5:))') '(sec)', DebugOutUnits - END IF - - IF (CntrPar%LoggingLevel > 1) THEN - OPEN(unit=UnDb2, FILE=RootName(1:size_avcOUTNAME-5)//'RO.dbg2') - 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_DbKi) == 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') - END IF - - ENDIF + IF (CntrPar%LoggingLevel > 2) THEN + OPEN(unit=UnDb3, FILE=RootName(1: size_avcOUTNAME-5)//'RO.dbg3') + WRITE(UnDb3,'(/////)') + WRITE(UnDb3,'(A,85("'//Tab//'AvrSWAP(",I2,")"))') 'LocalVar%Time ', (i,i=1, 85) + WRITE(UnDb3,'(A,85("'//Tab//'(-)"))') '(s)' + END IF + ELSE + ! Print simulation status, every 10 seconds + IF (MODULO(LocalVar%Time, 10.0_DbKi) == 0) THEN + WRITE(*, 100) LocalVar%GenSpeedF*RPS2RPM, LocalVar%BlPitch(1)*R2D, avrSWAP(15)/1000.0, LocalVar%WE_Vw + 100 FORMAT('Generator speed: ', f6.1, ' RPM, Pitch angle: ', f5.1, ' deg, Power: ', f7.1, ' kW, Est. wind Speed: ', f5.1, ' m/s') + END IF ! Write debug files - IF (CntrPar%LoggingLevel > 0) THEN - WRITE (UnDb,FmtDat) LocalVar%Time, DebugOutData + IF(CntrPar%LoggingLevel > 0) THEN + WRITE (UnDb, FmtDat) LocalVar%Time, DebugOutData END IF - IF (CntrPar%LoggingLevel > 1) THEN - WRITE (UnDb2,FmtDat) LocalVar%Time, avrSWAP(1:85) + IF(CntrPar%LoggingLevel > 1) THEN + WRITE (UnDb2, FmtDat) LocalVar%Time, LocalVarOutData + END IF + + IF(CntrPar%LoggingLevel > 2) THEN + WRITE (UnDb3, FmtDat) LocalVar%Time, avrSWAP(1: 85) END IF + END IF - END SUBROUTINE Debug +END SUBROUTINE Debug END MODULE ROSCO_IO \ No newline at end of file diff --git a/ROSCO/src/ROSCO_Types.f90 b/ROSCO/src/ROSCO_Types.f90 index fa505a35..80b0c50f 100644 --- a/ROSCO/src/ROSCO_Types.f90 +++ b/ROSCO/src/ROSCO_Types.f90 @@ -4,243 +4,244 @@ MODULE ROSCO_Types USE, INTRINSIC :: ISO_C_Binding +USE Constants 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 ! Low pass filter on the rotor and generator speed {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(8) :: F_LPFCornerFreq ! Corner frequency (-3dB point) in the first-order low-pass filter, [rad/s] - REAL(8) :: F_LPFDamping ! Damping coefficient [used only when F_FilterType = 2] - REAL(8) :: F_NotchCornerFreq ! Natural frequency of the notch filter, [rad/s] - REAL(8), DIMENSION(:), ALLOCATABLE :: F_NotchBetaNumDen ! These two notch damping values (numerator and denominator) determines the width and depth of the notch - REAL(8) :: F_SSCornerFreq ! Corner frequency (-3dB point) in the first order low pass filter for the setpoint smoother [rad/s] - REAL(8) :: F_WECornerFreq ! Corner frequency (-3dB point) in the first order low pass filter for the wind speed estimate [rad/s] - REAL(8), DIMENSION(:), ALLOCATABLE :: F_FlCornerFreq ! Corner frequency (-3dB point) in the second order low pass filter of the tower-top fore-aft motion for floating feedback control [rad/s]. - REAL(8) :: F_FlHighPassFreq ! Natural frequency of first-roder high-pass filter for nacelle fore-aft motion [rad/s]. - REAL(8), DIMENSION(:), ALLOCATABLE :: F_FlpCornerFreq ! Corner frequency (-3dB point) in the second order low pass filter of the blade root bending moment for flap control [rad/s]. - REAL(8) :: FA_HPFCornerFreq ! Corner frequency (-3dB point) in the high-pass filter on the fore-aft acceleration signal [rad/s] - REAL(8) :: FA_IntSat ! Integrator saturation (maximum signal amplitude contrbution to pitch from FA damper), [rad] - REAL(8) :: 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} - REAL(8) :: IPC_IntSat ! Integrator saturation (maximum signal amplitude contrbution to pitch from IPC) - REAL(8), DIMENSION(:), ALLOCATABLE :: IPC_KI ! Integral gain for the individual pitch controller, [-]. 8E-10 - REAL(8), DIMENSION(:), ALLOCATABLE :: IPC_aziOffset ! Phase offset added to the azimuth angle for the individual pitch controller, [rad]. - REAL(8) :: 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(8), DIMENSION(:), ALLOCATABLE :: PC_GS_angles ! Gain-schedule table - pitch angles - REAL(8), DIMENSION(:), ALLOCATABLE :: PC_GS_KP ! Gain-schedule table - pitch controller kp gains - REAL(8), DIMENSION(:), ALLOCATABLE :: PC_GS_KI ! Gain-schedule table - pitch controller ki gains - REAL(8), DIMENSION(:), ALLOCATABLE :: PC_GS_KD ! Gain-schedule table - pitch controller kd gains - REAL(8), DIMENSION(:), ALLOCATABLE :: PC_GS_TF ! Gain-schedule table - pitch controller tf gains (derivative filter) - REAL(8) :: PC_MaxPit ! Maximum physical pitch limit, [rad]. - REAL(8) :: PC_MinPit ! Minimum physical pitch limit, [rad]. - REAL(8) :: PC_MaxRat ! Maximum pitch rate (in absolute value) in pitch controller, [rad/s]. - REAL(8) :: PC_MinRat ! Minimum pitch rate (in absolute value) in pitch controller, [rad/s]. - REAL(8) :: PC_RefSpd ! Desired (reference) HSS speed for pitch controller, [rad/s]. - REAL(8) :: PC_FinePit ! Record 5 - Below-rated pitch angle set-point (deg) [used only with Bladed Interface] - REAL(8) :: 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, 2 - TSR Tracking, 3 - TSR Tracking w/ const power} - REAL(8) :: VS_GenEff ! Generator efficiency mechanical power -> electrical power [-] - REAL(8) :: VS_ArSatTq ! Above rated generator torque PI control saturation, [Nm] -- 212900 - REAL(8) :: VS_MaxRat ! Maximum torque rate (in absolute value) in torque controller, [Nm/s]. - REAL(8) :: VS_MaxTq ! Maximum generator torque in Region 3 (HSS side), [Nm]. -- chosen to be 10% above VS_RtTq - REAL(8) :: VS_MinTq ! Minimum generator (HSS side), [Nm]. - REAL(8) :: VS_MinOMSpd ! Optimal mode minimum speed, [rad/s] - REAL(8) :: VS_Rgn2K ! Generator torque constant in Region 2 (HSS side), N-m/(rad/s)^2 - REAL(8) :: VS_RtPwr ! Wind turbine rated power [W] - REAL(8) :: VS_RtTq ! Rated torque, [Nm]. - REAL(8) :: VS_RefSpd ! Rated generator speed [rad/s] - INTEGER(4) :: VS_n ! Number of controller gains - REAL(8), DIMENSION(:), ALLOCATABLE :: VS_KP ! Proportional gain for generator PI torque controller, used in the transitional 2.5 region - REAL(8), DIMENSION(:), ALLOCATABLE :: VS_KI ! Integral gain for generator PI torque controller, used in the transitional 2.5 region - REAL(8) :: 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(8) :: SS_VSGain ! Variable speed torque controller setpoint smoother gain, [-]. - REAL(8) :: 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(8) :: WE_BladeRadius ! Blade length [m] - INTEGER(4) :: WE_CP_n ! Amount of parameters in the Cp array - REAL(8), DIMENSION(:), ALLOCATABLE :: WE_CP ! Parameters that define the parameterized CP(\lambda) function - REAL(8) :: WE_Gamma ! Adaption gain of the wind speed estimator algorithm [m/rad] - REAL(8) :: WE_GearboxRatio ! Gearbox ratio, >=1 [-] - REAL(8) :: WE_Jtot ! Total drivetrain inertia, including blades, hub and casted generator inertia to LSS [kg m^2] - REAL(8) :: WE_RhoAir ! Air density [kg m^-3] + INTEGER(IntKi) :: 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(IntKi) :: F_LPFType ! Low pass filter on the rotor and generator speed {1 - first-order low-pass filter, 2 - second-order low-pass filter}, [rad/s] + INTEGER(IntKi) :: F_NotchType ! Notch on the measured generator speed {0 - disable, 1 - enable} + REAL(DbKi) :: F_LPFCornerFreq ! Corner frequency (-3dB point) in the first-order low-pass filter, [rad/s] + REAL(DbKi) :: F_LPFDamping ! Damping coefficient [used only when F_FilterType = 2] + REAL(DbKi) :: F_NotchCornerFreq ! Natural frequency of the notch filter, [rad/s] + REAL(DbKi), DIMENSION(:), ALLOCATABLE :: F_NotchBetaNumDen ! These two notch damping values (numerator and denominator) determines the width and depth of the notch + REAL(DbKi) :: F_SSCornerFreq ! Corner frequency (-3dB point) in the first order low pass filter for the setpoint smoother [rad/s] + REAL(DbKi) :: F_WECornerFreq ! Corner frequency (-3dB point) in the first order low pass filter for the wind speed estimate [rad/s] + REAL(DbKi), DIMENSION(:), ALLOCATABLE :: F_FlCornerFreq ! Corner frequency (-3dB point) in the second order low pass filter of the tower-top fore-aft motion for floating feedback control [rad/s]. + REAL(DbKi) :: F_FlHighPassFreq ! Natural frequency of first-roder high-pass filter for nacelle fore-aft motion [rad/s]. + REAL(DbKi), DIMENSION(:), ALLOCATABLE :: F_FlpCornerFreq ! Corner frequency (-3dB point) in the second order low pass filter of the blade root bending moment for flap control [rad/s]. + REAL(DbKi) :: FA_HPFCornerFreq ! Corner frequency (-3dB point) in the high-pass filter on the fore-aft acceleration signal [rad/s] + REAL(DbKi) :: FA_IntSat ! Integrator saturation (maximum signal amplitude contrbution to pitch from FA damper), [rad] + REAL(DbKi) :: FA_KI ! Integral gain for the fore-aft tower damper controller, -1 = off / >0 = on [rad s/m] + INTEGER(IntKi) :: IPC_ControlMode ! Turn Individual Pitch Control (IPC) for fatigue load reductions (pitch contribution) {0 - off, 1 - 1P reductions, 2 - 1P+2P reductions} + REAL(DbKi) :: IPC_IntSat ! Integrator saturation (maximum signal amplitude contrbution to pitch from IPC) + REAL(DbKi), DIMENSION(:), ALLOCATABLE :: IPC_KI ! Integral gain for the individual pitch controller, [-]. 8E-10 + REAL(DbKi), DIMENSION(:), ALLOCATABLE :: IPC_aziOffset ! Phase offset added to the azimuth angle for the individual pitch controller, [rad]. + REAL(DbKi) :: IPC_CornerFreqAct ! Corner frequency of the first-order actuators model, to induce a phase lag in the IPC signal {0 - Disable}, [rad/s] + INTEGER(IntKi) :: PC_ControlMode ! Blade pitch control mode {0 - No pitch, fix to fine pitch, 1 - active PI blade pitch control} + INTEGER(IntKi) :: PC_GS_n ! Amount of gain-scheduling table entries + REAL(DbKi), DIMENSION(:), ALLOCATABLE :: PC_GS_angles ! Gain-schedule table - pitch angles + REAL(DbKi), DIMENSION(:), ALLOCATABLE :: PC_GS_KP ! Gain-schedule table - pitch controller kp gains + REAL(DbKi), DIMENSION(:), ALLOCATABLE :: PC_GS_KI ! Gain-schedule table - pitch controller ki gains + REAL(DbKi), DIMENSION(:), ALLOCATABLE :: PC_GS_KD ! Gain-schedule table - pitch controller kd gains + REAL(DbKi), DIMENSION(:), ALLOCATABLE :: PC_GS_TF ! Gain-schedule table - pitch controller tf gains (derivative filter) + REAL(DbKi) :: PC_MaxPit ! Maximum physical pitch limit, [rad]. + REAL(DbKi) :: PC_MinPit ! Minimum physical pitch limit, [rad]. + REAL(DbKi) :: PC_MaxRat ! Maximum pitch rate (in absolute value) in pitch controller, [rad/s]. + REAL(DbKi) :: PC_MinRat ! Minimum pitch rate (in absolute value) in pitch controller, [rad/s]. + REAL(DbKi) :: PC_RefSpd ! Desired (reference) HSS speed for pitch controller, [rad/s]. + REAL(DbKi) :: PC_FinePit ! Record 5 - Below-rated pitch angle set-point (deg) [used only with Bladed Interface] + REAL(DbKi) :: PC_Switch ! Angle above lowest minimum pitch angle for switch [rad] + INTEGER(IntKi) :: VS_ControlMode ! Generator torque control mode in above rated conditions {0 - constant torque, 1 - constant power, 2 - TSR Tracking, 3 - TSR Tracking w/ const power} + REAL(DbKi) :: VS_GenEff ! Generator efficiency mechanical power -> electrical power [-] + REAL(DbKi) :: VS_ArSatTq ! Above rated generator torque PI control saturation, [Nm] -- 212900 + REAL(DbKi) :: VS_MaxRat ! Maximum torque rate (in absolute value) in torque controller, [Nm/s]. + REAL(DbKi) :: VS_MaxTq ! Maximum generator torque in Region 3 (HSS side), [Nm]. -- chosen to be 10% above VS_RtTq + REAL(DbKi) :: VS_MinTq ! Minimum generator (HSS side), [Nm]. + REAL(DbKi) :: VS_MinOMSpd ! Optimal mode minimum speed, [rad/s] + REAL(DbKi) :: VS_Rgn2K ! Generator torque constant in Region 2 (HSS side), N-m/(rad/s)^2 + REAL(DbKi) :: VS_RtPwr ! Wind turbine rated power [W] + REAL(DbKi) :: VS_RtTq ! Rated torque, [Nm]. + REAL(DbKi) :: VS_RefSpd ! Rated generator speed [rad/s] + INTEGER(IntKi) :: VS_n ! Number of controller gains + REAL(DbKi), DIMENSION(:), ALLOCATABLE :: VS_KP ! Proportional gain for generator PI torque controller, used in the transitional 2.5 region + REAL(DbKi), DIMENSION(:), ALLOCATABLE :: VS_KI ! Integral gain for generator PI torque controller, used in the transitional 2.5 region + REAL(DbKi) :: VS_TSRopt ! Power-maximizing region 2 tip-speed ratio [rad] + INTEGER(IntKi) :: SS_Mode ! Setpoint Smoother mode {0 - no setpoint smoothing, 1 - introduce setpoint smoothing} + REAL(DbKi) :: SS_VSGain ! Variable speed torque controller setpoint smoother gain, [-]. + REAL(DbKi) :: SS_PCGain ! Collective pitch controller setpoint smoother gain, [-]. + INTEGER(IntKi) :: 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(DbKi) :: WE_BladeRadius ! Blade length [m] + INTEGER(IntKi) :: WE_CP_n ! Amount of parameters in the Cp array + REAL(DbKi), DIMENSION(:), ALLOCATABLE :: WE_CP ! Parameters that define the parameterized CP(\lambda) function + REAL(DbKi) :: WE_Gamma ! Adaption gain of the wind speed estimator algorithm [m/rad] + REAL(DbKi) :: WE_GearboxRatio ! Gearbox ratio, >=1 [-] + REAL(DbKi) :: WE_Jtot ! Total drivetrain inertia, including blades, hub and casted generator inertia to LSS [kg m^2] + REAL(DbKi) :: WE_RhoAir ! Air density [kg m^-3] 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(8), DIMENSION(:), ALLOCATABLE :: WE_FOPoles_v ! Wind speeds corresponding to first-order system poles [m/s] - REAL(8), 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(8) :: Y_ErrThresh ! Error threshold [rad]. Turbine begins to yaw when it passes this. (104.71975512) -- 1.745329252 - REAL(8) :: 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) - REAL(8), DIMENSION(:), ALLOCATABLE :: Y_IPC_KP ! Yaw-by-IPC proportional controller gain Kp - REAL(8), DIMENSION(:), ALLOCATABLE :: Y_IPC_KI ! Yaw-by-IPC integral controller gain Ki - REAL(8) :: Y_IPC_omegaLP ! Low-pass filter corner frequency for the Yaw-by-IPC controller to filtering the yaw alignment error, [rad/s]. - REAL(8) :: Y_IPC_zetaLP ! Low-pass filter damping factor for the Yaw-by-IPC controller to filtering the yaw alignment error, [-]. - REAL(8) :: Y_MErrSet ! Yaw alignment error, setpoint [rad] - REAL(8) :: Y_omegaLPFast ! Corner frequency fast low pass filter, 1.0 [Hz] - REAL(8) :: Y_omegaLPSlow ! Corner frequency slow low pass filter, 1/60 [Hz] - REAL(8) :: Y_Rate ! Yaw rate [rad/s] - INTEGER(4) :: PS_Mode ! Pitch saturation mode {0 - no peak shaving, 1 - implement pitch saturation} - 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(8), DIMENSION(:), ALLOCATABLE :: PS_WindSpeeds ! Wind speeds corresponding to minimum blade pitch angles [m/s] - REAL(8), 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(8) :: SD_MaxPit ! Maximum blade pitch angle to initiate shutdown, [rad] - REAL(8) :: SD_CornerFreq ! Cutoff Frequency for first order low-pass filter for blade pitch angle, [rad/s] - INTEGER(4) :: Fl_Mode ! Floating specific feedback mode {0 - no nacelle velocity feedback, 1 - nacelle velocity feedback} - REAL(8) :: Fl_Kp ! Nacelle velocity proportional feedback gain [s] - INTEGER(4) :: Flp_Mode ! Flap actuator mode {0 - off, 1 - fixed flap position, 2 - PI flap control} - REAL(8) :: Flp_Angle ! Fixed flap angle (degrees) - REAL(8) :: Flp_Kp ! PI flap control proportional gain - REAL(8) :: Flp_Ki ! PI flap control integral gain - REAL(8) :: Flp_MaxPit ! Maximum (and minimum) flap pitch angle [rad] + INTEGER(IntKi), 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(IntKi) :: WE_FOPoles_N ! Number of first-order system poles used in EKF + REAL(DbKi), DIMENSION(:), ALLOCATABLE :: WE_FOPoles_v ! Wind speeds corresponding to first-order system poles [m/s] + REAL(DbKi), DIMENSION(:), ALLOCATABLE :: WE_FOPoles ! First order system poles + INTEGER(IntKi) :: Y_ControlMode ! Yaw control mode {0 - no yaw control, 1 - yaw rate control, 2 - yaw-by-IPC} + REAL(DbKi) :: Y_ErrThresh ! Error threshold [rad]. Turbine begins to yaw when it passes this. (104.71975512) -- 1.745329252 + REAL(DbKi) :: Y_IPC_IntSat ! Integrator saturation (maximum signal amplitude contrbution to pitch from yaw-by-IPC) + INTEGER(IntKi) :: Y_IPC_n ! Number of controller gains (yaw-by-IPC) + REAL(DbKi), DIMENSION(:), ALLOCATABLE :: Y_IPC_KP ! Yaw-by-IPC proportional controller gain Kp + REAL(DbKi), DIMENSION(:), ALLOCATABLE :: Y_IPC_KI ! Yaw-by-IPC integral controller gain Ki + REAL(DbKi) :: Y_IPC_omegaLP ! Low-pass filter corner frequency for the Yaw-by-IPC controller to filtering the yaw alignment error, [rad/s]. + REAL(DbKi) :: Y_IPC_zetaLP ! Low-pass filter damping factor for the Yaw-by-IPC controller to filtering the yaw alignment error, [-]. + REAL(DbKi) :: Y_MErrSet ! Yaw alignment error, setpoint [rad] + REAL(DbKi) :: Y_omegaLPFast ! Corner frequency fast low pass filter, 1.0 [Hz] + REAL(DbKi) :: Y_omegaLPSlow ! Corner frequency slow low pass filter, 1/60 [Hz] + REAL(DbKi) :: Y_Rate ! Yaw rate [rad/s] + INTEGER(IntKi) :: PS_Mode ! Pitch saturation mode {0 - no peak shaving, 1 - implement pitch saturation} + INTEGER(IntKi) :: PS_BldPitchMin_N ! Number of values in minimum blade pitch lookup table (should equal number of values in PS_WindSpeeds and PS_BldPitchMin) + REAL(DbKi), DIMENSION(:), ALLOCATABLE :: PS_WindSpeeds ! Wind speeds corresponding to minimum blade pitch angles [m/s] + REAL(DbKi), DIMENSION(:), ALLOCATABLE :: PS_BldPitchMin ! Minimum blade pitch angles [rad] + INTEGER(IntKi) :: SD_Mode ! Shutdown mode {0 - no shutdown procedure, 1 - pitch to max pitch at shutdown} + REAL(DbKi) :: SD_MaxPit ! Maximum blade pitch angle to initiate shutdown, [rad] + REAL(DbKi) :: SD_CornerFreq ! Cutoff Frequency for first order low-pass filter for blade pitch angle, [rad/s] + INTEGER(IntKi) :: Fl_Mode ! Floating specific feedback mode {0 - no nacelle velocity feedback, 1 - nacelle velocity feedback} + REAL(DbKi) :: Fl_Kp ! Nacelle velocity proportional feedback gain [s] + INTEGER(IntKi) :: Flp_Mode ! Flap actuator mode {0 - off, 1 - fixed flap position, 2 - PI flap control} + REAL(DbKi) :: Flp_Angle ! Fixed flap angle (degrees) + REAL(DbKi) :: Flp_Kp ! PI flap control proportional gain + REAL(DbKi) :: Flp_Ki ! PI flap control integral gain + REAL(DbKi) :: Flp_MaxPit ! Maximum (and minimum) flap pitch angle [rad] CHARACTER(1024) :: OL_Filename ! Input file with open loop timeseries - INTEGER(4) :: OL_Mode ! Open loop control mode {0 - no open loop control, 1 - open loop control vs. time, 2 - open loop control vs. wind speed} - INTEGER(4) :: Ind_Breakpoint ! The column in OL_Filename that contains the breakpoint (time if OL_Mode = 1) - INTEGER(4) :: Ind_BldPitch ! The column in OL_Filename that contains the blade pitch input in rad - INTEGER(4) :: Ind_GenTq ! The column in OL_Filename that contains the generator torque in Nm - INTEGER(4) :: Ind_YawRate ! The column in OL_Filename that contains the generator torque in Nm - REAL(8), DIMENSION(:), ALLOCATABLE :: OL_Breakpoints ! Open loop breakpoints in timeseries - REAL(8), DIMENSION(:), ALLOCATABLE :: OL_BldPitch ! Open blade pitch timeseries - REAL(8), DIMENSION(:), ALLOCATABLE :: OL_GenTq ! Open generator torque timeseries - REAL(8), DIMENSION(:), ALLOCATABLE :: OL_YawRate ! Open yaw rate timeseries - REAL(8), DIMENSION(:,:), ALLOCATABLE :: OL_Channels ! Open loop channels in timeseries - REAL(8) :: PC_RtTq99 ! 99% of the rated torque value, using for switching between pitch and torque control, [Nm]. - REAL(8) :: VS_MaxOMTq ! Maximum torque at the end of the below-rated region 2, [Nm] - REAL(8) :: VS_MinOMTq ! Minimum torque at the beginning of the below-rated region 2, [Nm] + INTEGER(IntKi) :: OL_Mode ! Open loop control mode {0 - no open loop control, 1 - open loop control vs. time, 2 - open loop control vs. wind speed} + INTEGER(IntKi) :: Ind_Breakpoint ! The column in OL_Filename that contains the breakpoint (time if OL_Mode = 1) + INTEGER(IntKi) :: Ind_BldPitch ! The column in OL_Filename that contains the blade pitch input in rad + INTEGER(IntKi) :: Ind_GenTq ! The column in OL_Filename that contains the generator torque in Nm + INTEGER(IntKi) :: Ind_YawRate ! The column in OL_Filename that contains the generator torque in Nm + REAL(DbKi), DIMENSION(:), ALLOCATABLE :: OL_Breakpoints ! Open loop breakpoints in timeseries + REAL(DbKi), DIMENSION(:), ALLOCATABLE :: OL_BldPitch ! Open blade pitch timeseries + REAL(DbKi), DIMENSION(:), ALLOCATABLE :: OL_GenTq ! Open generator torque timeseries + REAL(DbKi), DIMENSION(:), ALLOCATABLE :: OL_YawRate ! Open yaw rate timeseries + REAL(DbKi), DIMENSION(:,:), ALLOCATABLE :: OL_Channels ! Open loop channels in timeseries + REAL(DbKi) :: PC_RtTq99 ! 99% of the rated torque value, using for switching between pitch and torque control, [Nm]. + REAL(DbKi) :: VS_MaxOMTq ! Maximum torque at the end of the below-rated region 2, [Nm] + REAL(DbKi) :: VS_MinOMTq ! Minimum torque at the beginning of the below-rated region 2, [Nm] END TYPE ControlParameters TYPE, PUBLIC :: WE - REAL(8) :: om_r ! Estimated rotor speed [rad/s] - REAL(8) :: v_t ! Estimated wind speed, turbulent component [m/s] - REAL(8) :: v_m ! Estimated wind speed, 10-minute averaged [m/s] - REAL(8) :: v_h ! Combined estimated wind speed [m/s] - REAL(8), DIMENSION(3,3) :: P ! Covariance estiamte - REAL(8), DIMENSION(3,1) :: xh ! Estimated state matrix - REAL(8), DIMENSION(3,1) :: K ! Kalman gain matrix + REAL(DbKi) :: om_r ! Estimated rotor speed [rad/s] + REAL(DbKi) :: v_t ! Estimated wind speed, turbulent component [m/s] + REAL(DbKi) :: v_m ! Estimated wind speed, 10-minute averaged [m/s] + REAL(DbKi) :: v_h ! Combined estimated wind speed [m/s] + REAL(DbKi), DIMENSION(3,3) :: P ! Covariance estiamte + REAL(DbKi), DIMENSION(3,1) :: xh ! Estimated state matrix + REAL(DbKi), DIMENSION(3,1) :: K ! Kalman gain matrix END TYPE WE TYPE, PUBLIC :: FilterParameters - REAL(8), DIMENSION(99) :: lpf1_a1 ! First order filter - Denominator coefficient 1 - REAL(8), DIMENSION(99) :: lpf1_a0 ! First order filter - Denominator coefficient 0 - REAL(8), DIMENSION(99) :: lpf1_b1 ! First order filter - Numerator coefficient 1 - REAL(8), DIMENSION(99) :: lpf1_b0 ! First order filter - Numerator coefficient 0 - REAL(8), DIMENSION(99) :: lpf1_InputSignalLast ! First order filter - Previous input - REAL(8), DIMENSION(99) :: lpf1_OutputSignalLast ! First order filter - Previous output - REAL(8), DIMENSION(99) :: lpf2_a2 ! Second order filter - Denominator coefficient 2 - REAL(8), DIMENSION(99) :: lpf2_a1 ! Second order filter - Denominator coefficient 1 - REAL(8), DIMENSION(99) :: lpf2_a0 ! Second order filter - Denominator coefficient 0 - REAL(8), DIMENSION(99) :: lpf2_b2 ! Second order filter - Numerator coefficient 2 - REAL(8), DIMENSION(99) :: lpf2_b1 ! Second order filter - Numerator coefficient 1 - REAL(8), DIMENSION(99) :: lpf2_b0 ! Second order filter - Numerator coefficient 0 - REAL(8), DIMENSION(99) :: lpf2_InputSignalLast2 ! Second order filter - Previous input 2 - REAL(8), DIMENSION(99) :: lpf2_OutputSignalLast2 ! Second order filter - Previous output 2 - REAL(8), DIMENSION(99) :: lpf2_InputSignalLast1 ! Second order filter - Previous input 1 - REAL(8), DIMENSION(99) :: lpf2_OutputSignalLast1 ! Second order filter - Previous output 1 - REAL(8), DIMENSION(99) :: hpf_InputSignalLast ! High pass filter - Previous output 1 - REAL(8), DIMENSION(99) :: hpf_OutputSignalLast ! High pass filter - Previous output 1 - REAL(8), DIMENSION(99) :: nfs_OutputSignalLast1 ! Notch filter slopes previous output 1 - REAL(8), DIMENSION(99) :: nfs_OutputSignalLast2 ! Notch filter slopes previous output 2 - REAL(8), DIMENSION(99) :: nfs_InputSignalLast1 ! Notch filter slopes previous input 1 - REAL(8), DIMENSION(99) :: nfs_InputSignalLast2 ! Notch filter slopes previous input 1 - REAL(8), DIMENSION(99) :: nfs_b2 ! Notch filter slopes numerator coefficient 2 - REAL(8), DIMENSION(99) :: nfs_b0 ! Notch filter slopes numerator coefficient 0 - REAL(8), DIMENSION(99) :: nfs_a2 ! Notch filter slopes denominator coefficient 2 - REAL(8), DIMENSION(99) :: nfs_a1 ! Notch filter slopes denominator coefficient 1 - REAL(8), DIMENSION(99) :: nfs_a0 ! Notch filter slopes denominator coefficient 0 - REAL(8), DIMENSION(99) :: nf_OutputSignalLast1 ! Notch filter previous output 1 - REAL(8), DIMENSION(99) :: nf_OutputSignalLast2 ! Notch filter previous output 2 - REAL(8), DIMENSION(99) :: nf_InputSignalLast1 ! Notch filter previous input 1 - REAL(8), DIMENSION(99) :: nf_InputSignalLast2 ! Notch filter previous input 2 - REAL(8), DIMENSION(99) :: nf_b2 ! Notch filter numerator coefficient 2 - REAL(8), DIMENSION(99) :: nf_b1 ! Notch filter numerator coefficient 1 - REAL(8), DIMENSION(99) :: nf_b0 ! Notch filter numerator coefficient 0 - REAL(8), DIMENSION(99) :: nf_a1 ! Notch filter denominator coefficient 1 - REAL(8), DIMENSION(99) :: nf_a0 ! Notch filter denominator coefficient 0 + REAL(DbKi), DIMENSION(99) :: lpf1_a1 ! First order filter - Denominator coefficient 1 + REAL(DbKi), DIMENSION(99) :: lpf1_a0 ! First order filter - Denominator coefficient 0 + REAL(DbKi), DIMENSION(99) :: lpf1_b1 ! First order filter - Numerator coefficient 1 + REAL(DbKi), DIMENSION(99) :: lpf1_b0 ! First order filter - Numerator coefficient 0 + REAL(DbKi), DIMENSION(99) :: lpf1_InputSignalLast ! First order filter - Previous input + REAL(DbKi), DIMENSION(99) :: lpf1_OutputSignalLast ! First order filter - Previous output + REAL(DbKi), DIMENSION(99) :: lpf2_a2 ! Second order filter - Denominator coefficient 2 + REAL(DbKi), DIMENSION(99) :: lpf2_a1 ! Second order filter - Denominator coefficient 1 + REAL(DbKi), DIMENSION(99) :: lpf2_a0 ! Second order filter - Denominator coefficient 0 + REAL(DbKi), DIMENSION(99) :: lpf2_b2 ! Second order filter - Numerator coefficient 2 + REAL(DbKi), DIMENSION(99) :: lpf2_b1 ! Second order filter - Numerator coefficient 1 + REAL(DbKi), DIMENSION(99) :: lpf2_b0 ! Second order filter - Numerator coefficient 0 + REAL(DbKi), DIMENSION(99) :: lpf2_InputSignalLast2 ! Second order filter - Previous input 2 + REAL(DbKi), DIMENSION(99) :: lpf2_OutputSignalLast2 ! Second order filter - Previous output 2 + REAL(DbKi), DIMENSION(99) :: lpf2_InputSignalLast1 ! Second order filter - Previous input 1 + REAL(DbKi), DIMENSION(99) :: lpf2_OutputSignalLast1 ! Second order filter - Previous output 1 + REAL(DbKi), DIMENSION(99) :: hpf_InputSignalLast ! High pass filter - Previous output 1 + REAL(DbKi), DIMENSION(99) :: hpf_OutputSignalLast ! High pass filter - Previous output 1 + REAL(DbKi), DIMENSION(99) :: nfs_OutputSignalLast1 ! Notch filter slopes previous output 1 + REAL(DbKi), DIMENSION(99) :: nfs_OutputSignalLast2 ! Notch filter slopes previous output 2 + REAL(DbKi), DIMENSION(99) :: nfs_InputSignalLast1 ! Notch filter slopes previous input 1 + REAL(DbKi), DIMENSION(99) :: nfs_InputSignalLast2 ! Notch filter slopes previous input 1 + REAL(DbKi), DIMENSION(99) :: nfs_b2 ! Notch filter slopes numerator coefficient 2 + REAL(DbKi), DIMENSION(99) :: nfs_b0 ! Notch filter slopes numerator coefficient 0 + REAL(DbKi), DIMENSION(99) :: nfs_a2 ! Notch filter slopes denominator coefficient 2 + REAL(DbKi), DIMENSION(99) :: nfs_a1 ! Notch filter slopes denominator coefficient 1 + REAL(DbKi), DIMENSION(99) :: nfs_a0 ! Notch filter slopes denominator coefficient 0 + REAL(DbKi), DIMENSION(99) :: nf_OutputSignalLast1 ! Notch filter previous output 1 + REAL(DbKi), DIMENSION(99) :: nf_OutputSignalLast2 ! Notch filter previous output 2 + REAL(DbKi), DIMENSION(99) :: nf_InputSignalLast1 ! Notch filter previous input 1 + REAL(DbKi), DIMENSION(99) :: nf_InputSignalLast2 ! Notch filter previous input 2 + REAL(DbKi), DIMENSION(99) :: nf_b2 ! Notch filter numerator coefficient 2 + REAL(DbKi), DIMENSION(99) :: nf_b1 ! Notch filter numerator coefficient 1 + REAL(DbKi), DIMENSION(99) :: nf_b0 ! Notch filter numerator coefficient 0 + REAL(DbKi), DIMENSION(99) :: nf_a1 ! Notch filter denominator coefficient 1 + REAL(DbKi), DIMENSION(99) :: nf_a0 ! Notch filter denominator coefficient 0 END TYPE FilterParameters TYPE, PUBLIC :: piParams - REAL(8), DIMENSION(99) :: ITerm ! Integrator term - REAL(8), DIMENSION(99) :: ITermLast ! Previous integrator term - REAL(8), DIMENSION(99) :: ITerm2 ! Integrator term - second integrator - REAL(8), DIMENSION(99) :: ITermLast2 ! Previous integrator term - second integrator + REAL(DbKi), DIMENSION(99) :: ITerm ! Integrator term + REAL(DbKi), DIMENSION(99) :: ITermLast ! Previous integrator term + REAL(DbKi), DIMENSION(99) :: ITerm2 ! Integrator term - second integrator + REAL(DbKi), DIMENSION(99) :: ITermLast2 ! Previous integrator term - second integrator END TYPE piParams TYPE, PUBLIC :: LocalVariables - INTEGER(4) :: iStatus ! Initialization status - REAL(8) :: Time ! Time [s] - REAL(8) :: DT ! Time step [s] - REAL(8) :: VS_GenPwr ! Generator power [W] - REAL(8) :: GenSpeed ! Generator speed (HSS) [rad/s] - REAL(8) :: RotSpeed ! Rotor speed (LSS) [rad/s] - REAL(8) :: Y_M ! Yaw direction [rad] - REAL(8) :: HorWindV ! Hub height wind speed m/s - REAL(8) :: rootMOOP(3) ! Blade root bending moment [Nm] - REAL(8) :: BlPitch(3) ! Blade pitch [rad] - REAL(8) :: Azimuth ! Rotor aziumuth angle [rad] - INTEGER(4) :: NumBl ! Number of blades [-] - REAL(8) :: FA_Acc ! Tower fore-aft acceleration [m/s^2] - REAL(8) :: NacIMU_FA_Acc ! Tower fore-aft acceleration [rad/s^2] - REAL(8) :: FA_AccHPF ! High-pass filtered fore-aft acceleration [m/s^2] - REAL(8) :: FA_AccHPFI ! Tower velocity, high-pass filtered and integrated fore-aft acceleration [m/s] - REAL(8) :: FA_PitCom(3) ! Tower fore-aft vibration damping pitch contribution [rad] - REAL(8) :: RotSpeedF ! Filtered LSS (generator) speed [rad/s]. - REAL(8) :: GenSpeedF ! Filtered HSS (generator) speed [rad/s]. - REAL(8) :: GenTq ! Electrical generator torque, [Nm]. - REAL(8) :: GenTqMeas ! Measured generator torque [Nm] - REAL(8) :: GenArTq ! Electrical generator torque, for above-rated PI-control [Nm]. - REAL(8) :: GenBrTq ! Electrical generator torque, for below-rated PI-control [Nm]. - REAL(8) :: IPC_PitComF(3) ! Commanded pitch of each blade as calculated by the individual pitch controller, F stands for low-pass filtered [rad]. - REAL(8) :: PC_KP ! Proportional gain for pitch controller at rated pitch (zero) [s]. - REAL(8) :: PC_KI ! Integral gain for pitch controller at rated pitch (zero) [-]. - REAL(8) :: PC_KD ! Differential gain for pitch controller at rated pitch (zero) [-]. - REAL(8) :: PC_TF ! First-order filter parameter for derivative action - REAL(8) :: PC_MaxPit ! Maximum pitch setting in pitch controller (variable) [rad]. - REAL(8) :: PC_MinPit ! Minimum pitch setting in pitch controller (variable) [rad]. - REAL(8) :: PC_PitComT ! Total command pitch based on the sum of the proportional and integral terms [rad]. - REAL(8) :: PC_PitComT_Last ! Last total command pitch based on the sum of the proportional and integral terms [rad]. - REAL(8) :: PC_PitComTF ! Filtered Total command pitch based on the sum of the proportional and integral terms [rad]. - REAL(8) :: PC_PitComT_IPC(3) ! Total command pitch based on the sum of the proportional and integral terms, including IPC term [rad]. - REAL(8) :: PC_PwrErr ! Power error with respect to rated power [W] - REAL(8) :: PC_SpdErr ! Current speed error (pitch control) [rad/s]. - REAL(8) :: IPC_IntAxisTilt_1P ! Integral of the direct axis, 1P - REAL(8) :: IPC_IntAxisYaw_1P ! Integral of quadrature, 1P - REAL(8) :: IPC_IntAxisTilt_2P ! Integral of the direct axis, 2P - REAL(8) :: IPC_IntAxisYaw_2P ! Integral of quadrature, 2P - INTEGER(4) :: PC_State ! State of the pitch control system - REAL(8) :: PitCom(3) ! Commanded pitch of each blade the last time the controller was called [rad]. - REAL(8) :: SS_DelOmegaF ! Filtered setpoint shifting term defined in setpoint smoother [rad/s]. - REAL(8) :: TestType ! Test variable, no use - REAL(8) :: VS_MaxTq ! Maximum allowable generator torque [Nm]. - REAL(8) :: VS_LastGenTrq ! Commanded electrical generator torque the last time the controller was called [Nm]. - REAL(8) :: VS_LastGenPwr ! Commanded electrical generator torque the last time the controller was called [Nm]. - REAL(8) :: VS_MechGenPwr ! Mechanical power on the generator axis [W] - REAL(8) :: VS_SpdErrAr ! Current speed error for region 2.5 PI controller (generator torque control) [rad/s]. - REAL(8) :: VS_SpdErrBr ! Current speed error for region 1.5 PI controller (generator torque control) [rad/s]. - REAL(8) :: 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(8) :: VS_Rgn3Pitch ! Pitch angle at which the state machine switches to region 3, [rad]. - REAL(8) :: WE_Vw ! Estimated wind speed [m/s] - REAL(8) :: WE_Vw_F ! Filtered estimated wind speed [m/s] - REAL(8) :: WE_VwI ! Integrated wind speed quantity for estimation [m/s] - REAL(8) :: WE_VwIdot ! Differentiated integrated wind speed quantity for estimation [m/s] - REAL(8) :: VS_LastGenTrqF ! Differentiated integrated wind speed quantity for estimation [m/s] - REAL(8) :: Y_AccErr ! Accumulated yaw error [rad]. - REAL(8) :: Y_ErrLPFFast ! Filtered yaw error by fast low pass filter [rad]. - REAL(8) :: Y_ErrLPFSlow ! Filtered yaw error by slow low pass filter [rad]. - REAL(8) :: Y_MErr ! Measured yaw error, measured + setpoint [rad]. - REAL(8) :: Y_YawEndT ! Yaw end time [s]. Indicates the time up until which yaw is active with a fixed rate + INTEGER(IntKi) :: iStatus ! Initialization status + REAL(DbKi) :: Time ! Time [s] + REAL(DbKi) :: DT ! Time step [s] + REAL(DbKi) :: VS_GenPwr ! Generator power [W] + REAL(DbKi) :: GenSpeed ! Generator speed (HSS) [rad/s] + REAL(DbKi) :: RotSpeed ! Rotor speed (LSS) [rad/s] + REAL(DbKi) :: Y_M ! Yaw direction [rad] + REAL(DbKi) :: HorWindV ! Hub height wind speed m/s + REAL(DbKi) :: rootMOOP(3) ! Blade root bending moment [Nm] + REAL(DbKi) :: BlPitch(3) ! Blade pitch [rad] + REAL(DbKi) :: Azimuth ! Rotor aziumuth angle [rad] + INTEGER(IntKi) :: NumBl ! Number of blades [-] + REAL(DbKi) :: FA_Acc ! Tower fore-aft acceleration [m/s^2] + REAL(DbKi) :: NacIMU_FA_Acc ! Tower fore-aft acceleration [rad/s^2] + REAL(DbKi) :: FA_AccHPF ! High-pass filtered fore-aft acceleration [m/s^2] + REAL(DbKi) :: FA_AccHPFI ! Tower velocity, high-pass filtered and integrated fore-aft acceleration [m/s] + REAL(DbKi) :: FA_PitCom(3) ! Tower fore-aft vibration damping pitch contribution [rad] + REAL(DbKi) :: RotSpeedF ! Filtered LSS (generator) speed [rad/s]. + REAL(DbKi) :: GenSpeedF ! Filtered HSS (generator) speed [rad/s]. + REAL(DbKi) :: GenTq ! Electrical generator torque, [Nm]. + REAL(DbKi) :: GenTqMeas ! Measured generator torque [Nm] + REAL(DbKi) :: GenArTq ! Electrical generator torque, for above-rated PI-control [Nm]. + REAL(DbKi) :: GenBrTq ! Electrical generator torque, for below-rated PI-control [Nm]. + REAL(DbKi) :: IPC_PitComF(3) ! Commanded pitch of each blade as calculated by the individual pitch controller, F stands for low-pass filtered [rad]. + REAL(DbKi) :: PC_KP ! Proportional gain for pitch controller at rated pitch (zero) [s]. + REAL(DbKi) :: PC_KI ! Integral gain for pitch controller at rated pitch (zero) [-]. + REAL(DbKi) :: PC_KD ! Differential gain for pitch controller at rated pitch (zero) [-]. + REAL(DbKi) :: PC_TF ! First-order filter parameter for derivative action + REAL(DbKi) :: PC_MaxPit ! Maximum pitch setting in pitch controller (variable) [rad]. + REAL(DbKi) :: PC_MinPit ! Minimum pitch setting in pitch controller (variable) [rad]. + REAL(DbKi) :: PC_PitComT ! Total command pitch based on the sum of the proportional and integral terms [rad]. + REAL(DbKi) :: PC_PitComT_Last ! Last total command pitch based on the sum of the proportional and integral terms [rad]. + REAL(DbKi) :: PC_PitComTF ! Filtered Total command pitch based on the sum of the proportional and integral terms [rad]. + REAL(DbKi) :: PC_PitComT_IPC(3) ! Total command pitch based on the sum of the proportional and integral terms, including IPC term [rad]. + REAL(DbKi) :: PC_PwrErr ! Power error with respect to rated power [W] + REAL(DbKi) :: PC_SpdErr ! Current speed error (pitch control) [rad/s]. + REAL(DbKi) :: IPC_IntAxisTilt_1P ! Integral of the direct axis, 1P + REAL(DbKi) :: IPC_IntAxisYaw_1P ! Integral of quadrature, 1P + REAL(DbKi) :: IPC_IntAxisTilt_2P ! Integral of the direct axis, 2P + REAL(DbKi) :: IPC_IntAxisYaw_2P ! Integral of quadrature, 2P + INTEGER(IntKi) :: PC_State ! State of the pitch control system + REAL(DbKi) :: PitCom(3) ! Commanded pitch of each blade the last time the controller was called [rad]. + REAL(DbKi) :: SS_DelOmegaF ! Filtered setpoint shifting term defined in setpoint smoother [rad/s]. + REAL(DbKi) :: TestType ! Test variable, no use + REAL(DbKi) :: VS_MaxTq ! Maximum allowable generator torque [Nm]. + REAL(DbKi) :: VS_LastGenTrq ! Commanded electrical generator torque the last time the controller was called [Nm]. + REAL(DbKi) :: VS_LastGenPwr ! Commanded electrical generator torque the last time the controller was called [Nm]. + REAL(DbKi) :: VS_MechGenPwr ! Mechanical power on the generator axis [W] + REAL(DbKi) :: VS_SpdErrAr ! Current speed error for region 2.5 PI controller (generator torque control) [rad/s]. + REAL(DbKi) :: VS_SpdErrBr ! Current speed error for region 1.5 PI controller (generator torque control) [rad/s]. + REAL(DbKi) :: VS_SpdErr ! Current speed error for tip-speed-ratio tracking controller (generator torque control) [rad/s]. + INTEGER(IntKi) :: VS_State ! State of the torque control system + REAL(DbKi) :: VS_Rgn3Pitch ! Pitch angle at which the state machine switches to region 3, [rad]. + REAL(DbKi) :: WE_Vw ! Estimated wind speed [m/s] + REAL(DbKi) :: WE_Vw_F ! Filtered estimated wind speed [m/s] + REAL(DbKi) :: WE_VwI ! Integrated wind speed quantity for estimation [m/s] + REAL(DbKi) :: WE_VwIdot ! Differentiated integrated wind speed quantity for estimation [m/s] + REAL(DbKi) :: VS_LastGenTrqF ! Differentiated integrated wind speed quantity for estimation [m/s] + REAL(DbKi) :: Y_AccErr ! Accumulated yaw error [rad]. + REAL(DbKi) :: Y_ErrLPFFast ! Filtered yaw error by fast low pass filter [rad]. + REAL(DbKi) :: Y_ErrLPFSlow ! Filtered yaw error by slow low pass filter [rad]. + REAL(DbKi) :: Y_MErr ! Measured yaw error, measured + setpoint [rad]. + REAL(DbKi) :: Y_YawEndT ! Yaw end time [s]. Indicates the time up until which yaw is active with a fixed rate LOGICAL :: SD ! Shutdown, .FALSE. if inactive, .TRUE. if active - REAL(8) :: Fl_PitCom ! Shutdown, .FALSE. if inactive, .TRUE. if active - REAL(8) :: NACIMU_FA_AccF ! None - REAL(8) :: FA_AccF ! None - REAL(8) :: Flp_Angle(3) ! Flap Angle (rad) - REAL(8) :: RootMyb_Last(3) ! Last blade root bending moment (Nm) - INTEGER(4) :: ACC_INFILE_SIZE ! Length of parameter input filename + REAL(DbKi) :: Fl_PitCom ! Shutdown, .FALSE. if inactive, .TRUE. if active + REAL(DbKi) :: NACIMU_FA_AccF ! None + REAL(DbKi) :: FA_AccF ! None + REAL(DbKi) :: Flp_Angle(3) ! Flap Angle (rad) + REAL(DbKi) :: RootMyb_Last(3) ! Last blade root bending moment (Nm) + INTEGER(IntKi) :: ACC_INFILE_SIZE ! Length of parameter input filename CHARACTER, DIMENSION(:), ALLOCATABLE :: ACC_INFILE ! Parameter input filename LOGICAL :: restart ! Restart flag TYPE(WE) :: WE ! Wind speed estimator parameters derived type @@ -249,35 +250,35 @@ MODULE ROSCO_Types END TYPE LocalVariables TYPE, PUBLIC :: ObjectInstances - INTEGER(4) :: instLPF ! Low-pass filter instance - INTEGER(4) :: instSecLPF ! Second order low-pass filter instance - INTEGER(4) :: instHPF ! High-pass filter instance - INTEGER(4) :: instNotchSlopes ! Notch filter slopes instance - INTEGER(4) :: instNotch ! Notch filter instance - INTEGER(4) :: instPI ! PI controller instance + INTEGER(IntKi) :: instLPF ! Low-pass filter instance + INTEGER(IntKi) :: instSecLPF ! Second order low-pass filter instance + INTEGER(IntKi) :: instHPF ! High-pass filter instance + INTEGER(IntKi) :: instNotchSlopes ! Notch filter slopes instance + INTEGER(IntKi) :: instNotch ! Notch filter instance + INTEGER(IntKi) :: instPI ! PI controller instance END TYPE ObjectInstances TYPE, PUBLIC :: PerformanceData - REAL(8), DIMENSION(:), ALLOCATABLE :: TSR_vec ! TSR vector for performance surfaces - REAL(8), DIMENSION(:), ALLOCATABLE :: Beta_vec ! Blade pitch vector for performance surfaces [deg] - REAL(8), DIMENSION(:,:), ALLOCATABLE :: Cp_mat ! Power coefficient surface - REAL(8), DIMENSION(:,:), ALLOCATABLE :: Ct_mat ! Thrust coefficient surface - REAL(8), DIMENSION(:,:), ALLOCATABLE :: Cq_mat ! Torque coefficient surface + REAL(DbKi), DIMENSION(:), ALLOCATABLE :: TSR_vec ! TSR vector for performance surfaces + REAL(DbKi), DIMENSION(:), ALLOCATABLE :: Beta_vec ! Blade pitch vector for performance surfaces [deg] + REAL(DbKi), DIMENSION(:,:), ALLOCATABLE :: Cp_mat ! Power coefficient surface + REAL(DbKi), DIMENSION(:,:), ALLOCATABLE :: Ct_mat ! Thrust coefficient surface + REAL(DbKi), DIMENSION(:,:), ALLOCATABLE :: Cq_mat ! Torque coefficient surface END TYPE PerformanceData TYPE, PUBLIC :: DebugVariables - REAL(8) :: WE_Cp ! Cp that WSE uses to determine aerodynamic torque[-] - REAL(8) :: WE_b ! Pitch that WSE uses to determine aerodynamic torque[-] - REAL(8) :: WE_w ! Rotor Speed that WSE uses to determine aerodynamic torque[-] - REAL(8) :: WE_t ! Torque that WSE uses[-] - REAL(8) :: WE_Vm ! Mean wind speed component in WSE [m/s] - REAL(8) :: WE_Vt ! Turbulent wind speed component in WSE [m/s] - REAL(8) :: WE_lambda ! TSR in WSE [rad] - REAL(8) :: PC_PICommand ! Commanded collective pitch from pitch PI controller [rad] + REAL(DbKi) :: WE_Cp ! Cp that WSE uses to determine aerodynamic torque [-] + REAL(DbKi) :: WE_b ! Pitch that WSE uses to determine aerodynamic torque [-] + REAL(DbKi) :: WE_w ! Rotor Speed that WSE uses to determine aerodynamic torque [-] + REAL(DbKi) :: WE_t ! Torque that WSE uses [-] + REAL(DbKi) :: WE_Vm ! Mean wind speed component in WSE [m/s] + REAL(DbKi) :: WE_Vt ! Turbulent wind speed component in WSE [m/s] + REAL(DbKi) :: WE_lambda ! TSR in WSE [rad] + REAL(DbKi) :: PC_PICommand ! Commanded collective pitch from pitch PI controller [rad] END TYPE DebugVariables TYPE, PUBLIC :: ErrorVariables - INTEGER(4) :: size_avcMSG ! None + INTEGER(IntKi) :: size_avcMSG ! None INTEGER(C_INT) :: 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. CHARACTER(:), ALLOCATABLE :: ErrMsg ! a Fortran version of the C string argument (not considered an array here) [subtract 1 for the C null-character] END TYPE ErrorVariables From 24fa6b7e2421c6e827dc9f443bc6704188314565 Mon Sep 17 00:00:00 2001 From: Nikhar Abbas Date: Tue, 21 Dec 2021 11:23:27 -0700 Subject: [PATCH 019/218] delete DFController --- ROSCO/src/Functions.f90 | 30 ------------------------------ 1 file changed, 30 deletions(-) diff --git a/ROSCO/src/Functions.f90 b/ROSCO/src/Functions.f90 index 18bb27df..d0361ac7 100644 --- a/ROSCO/src/Functions.f90 +++ b/ROSCO/src/Functions.f90 @@ -410,36 +410,6 @@ FUNCTION identity(n) RESULT(A) END FUNCTION identity -!------------------------------------------------------------------------------------------------------------------------------- - REAL(DbKi) FUNCTION DFController(error, Kd, Tf, DT, inst) - ! DF controller, with output saturation - - IMPLICIT NONE - ! Inputs - REAL(DbKi), INTENT(IN) :: error - REAL(DbKi), INTENT(IN) :: kd - REAL(DbKi), INTENT(IN) :: tf - REAL(DbKi), INTENT(IN) :: DT - INTEGER(IntKi), INTENT(IN) :: inst - ! Local - REAL(DbKi) :: B ! - INTEGER(IntKi) :: i ! Counter for making arrays - REAL(DbKi), DIMENSION(99), SAVE :: errorLast = (/ (0, i=1,99) /) ! - REAL(DbKi), DIMENSION(99), SAVE :: DFControllerLast = (/ (0, i=1,99) /) ! - INTEGER(IntKi), DIMENSION(99), SAVE :: FirstCall = (/ (1, i=1,99) /) ! First call of this function? - - ! Initialize persistent variables/arrays, and set inital condition for integrator term - ! IF (FirstCall(inst) == 1) THEN - ! FirstCall(inst) = 0 - ! END IF - - B = 2.0/DT - DFController = (Kd*B)/(B*Tf+1.0)*error - (Kd*B)/(B*Tf+1.0)*errorLast(inst) - (1.0-B*Tf)/(B*Tf+1.0)*DFControllerLast(inst) - - errorLast(inst) = error - DFControllerLast(inst) = DFController - END FUNCTION DFController - !------------------------------------------------------------------------------------------------------------------------------- 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 From 9149b126a8c6bd86b2152f16872b14cd1c574179 Mon Sep 17 00:00:00 2001 From: Nikhar Abbas Date: Tue, 21 Dec 2021 11:43:18 -0700 Subject: [PATCH 020/218] fix timestep mismatch --- ROSCO/src/DISCON.F90 | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/ROSCO/src/DISCON.F90 b/ROSCO/src/DISCON.F90 index cf9b2c41..e7446688 100644 --- a/ROSCO/src/DISCON.F90 +++ b/ROSCO/src/DISCON.F90 @@ -78,7 +78,11 @@ SUBROUTINE DISCON(avrSWAP, aviFAIL, accINFILE, avcOUTNAME, avcMSG) BIND (C, NAME ! Filter signals CALL PreFilterMeasuredSignals(CntrPar, LocalVar, objInst, ErrVar) -IF (((LocalVar%iStatus >= 0) .OR. (LocalVar%iStatus <= -9)) .AND. (ErrVar%aviFAIL >= 0)) THEN ! Only compute control calculations if no error has occurred and we are not on the last time step +IF (((LocalVar%iStatus >= 0) .OR. (LocalVar%iStatus <= -8)) .AND. (ErrVar%aviFAIL >= 0)) THEN ! Only compute control calculations if no error has occurred and we are not on the last time step + IF ((LocalVar%iStatus == -8) .AND. (ErrVar%aviFAIL >= 0)) THEN ! Write restart files + CALL WriteRestartFile(LocalVar, CntrPar, objInst, RootName, SIZE(avcOUTNAME)) + ENDIF + CALL WindSpeedEstimator(LocalVar, CntrPar, objInst, PerfData, DebugVar, ErrVar) CALL ComputeVariablesSetpoints(CntrPar, LocalVar, objInst) CALL StateMachine(CntrPar, LocalVar) @@ -94,9 +98,8 @@ SUBROUTINE DISCON(avrSWAP, aviFAIL, accINFILE, avcOUTNAME, avcMSG) BIND (C, NAME CALL FlapControl(avrSWAP, CntrPar, LocalVar, objInst) END IF -ELSEIF ((LocalVar%iStatus == -8) .AND. (ErrVar%aviFAIL >= 0)) THEN ! Write restart files - CALL WriteRestartFile(LocalVar, CntrPar, objInst, RootName, SIZE(avcOUTNAME)) -ENDIF + +END IF CALL Debug(LocalVar, CntrPar, DebugVar, avrSWAP, RootName, SIZE(avcOUTNAME)) From 3c9c89d6cd75f51fbec638b6e7da4d546a552048 Mon Sep 17 00:00:00 2001 From: Nikhar Abbas Date: Tue, 21 Dec 2021 11:43:30 -0700 Subject: [PATCH 021/218] remove unnecessaray istatus check --- ROSCO/src/Controllers.f90 | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/ROSCO/src/Controllers.f90 b/ROSCO/src/Controllers.f90 index 629aadd1..05b99692 100644 --- a/ROSCO/src/Controllers.f90 +++ b/ROSCO/src/Controllers.f90 @@ -57,11 +57,7 @@ SUBROUTINE PitchControl(avrSWAP, CntrPar, LocalVar, objInst, DebugVar, ErrVar) LocalVar%PC_TF = interp1d(CntrPar%PC_GS_angles, CntrPar%PC_GS_TF, LocalVar%PC_PitComTF, ErrVar) ! TF gains (derivative filter) !NJA - need to clarify ! 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_MaxPit, LocalVar%DT, LocalVar%PitCom(1), LocalVar%piP, LocalVar%restart, objInst%instPI) - ELSE - LocalVar%PC_PitComT = PIController(LocalVar%PC_SpdErr, LocalVar%PC_KP, LocalVar%PC_KI, LocalVar%PC_MinPit, LocalVar%PC_MaxPit, LocalVar%DT, LocalVar%BlPitch(1), LocalVar%piP, LocalVar%restart, objInst%instPI) - END IF + LocalVar%PC_PitComT = PIController(LocalVar%PC_SpdErr, LocalVar%PC_KP, LocalVar%PC_KI, LocalVar%PC_MinPit, LocalVar%PC_MaxPit, LocalVar%DT, LocalVar%BlPitch(1), LocalVar%piP, LocalVar%restart, objInst%instPI) DebugVar%PC_PICommand = LocalVar%PC_PitComT ! Find individual pitch control contribution IF ((CntrPar%IPC_ControlMode >= 1) .OR. (CntrPar%Y_ControlMode == 2)) THEN From 492348c9eebb3d7f46b7445eea10d8da06343c4f Mon Sep 17 00:00:00 2001 From: Nikhar Abbas Date: Tue, 21 Dec 2021 11:46:26 -0700 Subject: [PATCH 022/218] close files --- ROSCO_toolbox/ofTools/fast_io/FAST_reader.py | 1 + ROSCO_toolbox/ofTools/util/FileTools.py | 1 + 2 files changed, 2 insertions(+) diff --git a/ROSCO_toolbox/ofTools/fast_io/FAST_reader.py b/ROSCO_toolbox/ofTools/fast_io/FAST_reader.py index 9297464e..18a220fa 100644 --- a/ROSCO_toolbox/ofTools/fast_io/FAST_reader.py +++ b/ROSCO_toolbox/ofTools/fast_io/FAST_reader.py @@ -2239,6 +2239,7 @@ def read_MoorDyn(self): channel_list = channels.split(',') self.set_outlist(self.fst_vt['outlist']['MoorDyn'], channel_list) data = f.readline() + f.close() class InputReader_FAST7(InputReader_Common): diff --git a/ROSCO_toolbox/ofTools/util/FileTools.py b/ROSCO_toolbox/ofTools/util/FileTools.py index b66ac522..2262f10e 100644 --- a/ROSCO_toolbox/ofTools/util/FileTools.py +++ b/ROSCO_toolbox/ofTools/util/FileTools.py @@ -127,6 +127,7 @@ def save_yaml(outdir, fname, data_out): yaml.width = float("inf") yaml.indent(mapping=4, sequence=6, offset=3) yaml.dump(data_out, f) + f.close() def select_cases(cases, var_sel, val_sel): From 7897a83412ca005ee95e31c26879042d7124460c Mon Sep 17 00:00:00 2001 From: Nikhar Abbas Date: Tue, 21 Dec 2021 11:51:03 -0700 Subject: [PATCH 023/218] add reg test for restart --- ROSCO_testing/regtest.py | 124 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 124 insertions(+) create mode 100644 ROSCO_testing/regtest.py diff --git a/ROSCO_testing/regtest.py b/ROSCO_testing/regtest.py new file mode 100644 index 00000000..12b89310 --- /dev/null +++ b/ROSCO_testing/regtest.py @@ -0,0 +1,124 @@ +''' +Regression testing for ROSCO + +Tests: + restart +''' + +import os +import platform +import unittest +import numpy as np + +# Python Modules +import os +import platform +from shutil import copyfile + +# ROSCO toolbox modules +from ROSCO_toolbox.inputs.validation import load_rosco_yaml +from ROSCO_toolbox.ofTools.fast_io import output_processing +from ROSCO_toolbox.ofTools.case_gen.CaseLibrary import set_channels +from ROSCO_toolbox.ofTools.case_gen.CaseGen_General import CaseGen_General +from ROSCO_toolbox.ofTools.fast_io.FAST_writer import InputReader_OpenFAST, InputWriter_OpenFAST +from ROSCO_toolbox.utilities import run_openfast + + +class RegressionTesting(unittest.TestCase): + def test_restart(self): + this_dir = os.path.dirname(os.path.abspath(__file__)) + rosco_dir = os.path.dirname(this_dir) + test_out_dir = os.path.join(this_dir, 'test_out') + + # Load yaml file (Open Loop Case) + parameter_filename = os.path.join(rosco_dir, 'Tune_Cases/IEA15MW.yaml') + + inps = load_rosco_yaml(parameter_filename) + path_params = inps['path_params'] + turbine_params = inps['turbine_params'] + controller_params = inps['controller_params'] + + # Set rosco_dll + if platform.system() == 'Windows': + rosco_dll = os.path.join(rosco_dir, 'ROSCO/build/libdiscon.dll') + elif platform.system() == 'Darwin': + rosco_dll = os.path.join(rosco_dir, 'ROSCO/build/libdiscon.dylib') + else: + rosco_dll = os.path.join(rosco_dir, 'ROSCO/build/libdiscon.so') + + case_inputs = {} + case_inputs[('Fst', 'TMax')] = {'vals': [3.], 'group': 0} + case_inputs[('ServoDyn', 'DLL_FileName')] = {'vals': [rosco_dll], 'group': 0} + case_inputs[('Fst', 'ChkptTime')] = {'vals': [1.], 'group': 1} + case_inputs[('Fst', 'OutFileFmt')] = {'vals': [2], 'group': 1} + case_inputs[('DISCON_in', 'LoggingLevel')] = {'vals': [2], 'group': 1} + + # Generate cases + run_dir = os.path.join(test_out_dir, 'restart') + if not os.path.exists(run_dir): + os.makedirs(run_dir) + + case_list, case_name_list = CaseGen_General(case_inputs, dir_matrix=run_dir, namebase='iea15_restart') + channels = set_channels() + + # write files + reader = InputReader_OpenFAST() + writer = InputWriter_OpenFAST() + reader.FAST_InputFile = path_params['FAST_InputFile'] + reader.FAST_directory = os.path.realpath(os.path.join( rosco_dir, 'Tune_Cases', path_params['FAST_directory'])) + reader.execute() + writer.fst_vt = reader.fst_vt + writer.FAST_runDirectory = test_out_dir + for case, case_name in zip(case_list, case_name_list): + writer.FAST_namingOut = case_name + writer.update(fst_update=case) + writer.update_outlist(channels) + writer.execute() + + # Run first case + fastcall = '/Users/nabbas/.conda/envs/rosco-env/bin/openfast' + run_openfast( + test_out_dir, + fastcall=fastcall, + fastfile=writer.FAST_InputFileOut, + chdir=True + ) + copyfile(os.path.join(test_out_dir, writer.FAST_InputFileOut[:-3]+'outb'), + os.path.join(test_out_dir, 'orig.outb') ) + # copyfile(os.path.join(test_out_dir, writer.FAST_InputFileOut[:-3]+'RO.dbg'), + # os.path.join(test_out_dir, 'orig.dbg') ) + + # run restart case + run_openfast( + test_out_dir, + fastcall=fastcall, + fastfile=writer.FAST_InputFileOut[:-3]+'40', + chdir=True, + restart=True + ) + copyfile(os.path.join(test_out_dir, writer.FAST_InputFileOut[:-3]+'outb'), + os.path.join(test_out_dir, 'restart.outb')) + # copyfile(os.path.join(test_out_dir, writer.FAST_InputFileOut[:-3]+'RO.dbg'), + # os.path.join(test_out_dir, 'restart.dbg')) + + output_files = [os.path.join(test_out_dir, 'orig.outb'), + os.path.join(test_out_dir, 'restart.outb')] + op = output_processing.output_processing() + fastout = op.load_fast_out(output_files, tmin=0) + + if False: # Plotting for debug + import matplotlib.pyplot as plt + cases = {} + cases['Baseline'] = ['Wind1VelX', 'BldPitch1', 'GenTq', 'RotSpeed', 'NacYaw'] + fig, ax = op.plot_fast_out(cases=cases, showplot=False) + plt.show() + + self.check_relative_error(fastout[1]['GenPwr'], fastout[0]['GenPwr'], 1e-3) + + def check_relative_error(self, meas, real, tol): + '''check relative error''' + error = np.linalg.norm(meas - real) / np.linalg.norm(real) + self.assertTrue(error<=tol) + +if __name__ == "__main__": + unittest.main() From 969beb64540e70e394a14d438d13904c55a465f8 Mon Sep 17 00:00:00 2001 From: Nikhar Abbas Date: Tue, 21 Dec 2021 11:51:19 -0700 Subject: [PATCH 024/218] add restart option to run_openfast --- ROSCO_toolbox/utilities.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/ROSCO_toolbox/utilities.py b/ROSCO_toolbox/utilities.py index d5aa0982..4eeac653 100644 --- a/ROSCO_toolbox/utilities.py +++ b/ROSCO_toolbox/utilities.py @@ -475,7 +475,7 @@ def DISCON_dict(turbine, controller, txt_filename=None): return DISCON_dict -def run_openfast(fast_dir, fastcall='openfast', fastfile=None, chdir=True): +def run_openfast(fast_dir, fastcall='openfast', fastfile=None, chdir=True, restart=False): ''' Runs a openfast openfast simulation. @@ -509,7 +509,10 @@ def run_openfast(fast_dir, fastcall='openfast', fastfile=None, chdir=True): print('Running OpenFAST simulation for {} through the ROSCO toolbox...'.format(fastfile)) # os.system('{} {}'.format(fastcall, os.path.join(fastfile))) - subprocess.run([fastcall, os.path.join(fastfile)], check=True, cwd=cwd) + if restart: + subprocess.run([fastcall,'-restart', os.path.join(fastfile)], check=True, cwd=cwd) + else: + subprocess.run([fastcall, os.path.join(fastfile)], check=True, cwd=cwd) print('OpenFAST simulation complete.') From ace827ded8f3e6d95ba244cc255dc99ec93e1012 Mon Sep 17 00:00:00 2001 From: Nikhar Abbas Date: Tue, 21 Dec 2021 11:53:45 -0700 Subject: [PATCH 025/218] add testing to CI, ignore generate files --- .github/workflows/CI_rosco-pytools.yml | 1 + .gitignore | 1 + 2 files changed, 2 insertions(+) diff --git a/.github/workflows/CI_rosco-pytools.yml b/.github/workflows/CI_rosco-pytools.yml index 77a029ab..47357e84 100644 --- a/.github/workflows/CI_rosco-pytools.yml +++ b/.github/workflows/CI_rosco-pytools.yml @@ -160,3 +160,4 @@ jobs: run: | cd ROSCO_testing python ROSCO_testing.py + python regtest.py diff --git a/.gitignore b/.gitignore index 524a244a..be2ed050 100644 --- a/.gitignore +++ b/.gitignore @@ -11,6 +11,7 @@ Source/Release/ *build* Makefile */install/* +*test_out* # Archive Scripts/CompileDISCONHereCopyRun\.cmd From 134776701dbfd39d595b5c9929a081c3fd30f27a Mon Sep 17 00:00:00 2001 From: Nikhar Abbas Date: Tue, 21 Dec 2021 12:14:41 -0700 Subject: [PATCH 026/218] fix fastcall --- ROSCO_testing/regtest.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ROSCO_testing/regtest.py b/ROSCO_testing/regtest.py index 12b89310..a0a56fbb 100644 --- a/ROSCO_testing/regtest.py +++ b/ROSCO_testing/regtest.py @@ -76,7 +76,7 @@ def test_restart(self): writer.execute() # Run first case - fastcall = '/Users/nabbas/.conda/envs/rosco-env/bin/openfast' + fastcall = 'openfast' run_openfast( test_out_dir, fastcall=fastcall, From 67ada2968632fdc111b09b6167f201c56ef1d2fe Mon Sep 17 00:00:00 2001 From: Nikhar Abbas Date: Tue, 21 Dec 2021 12:21:31 -0700 Subject: [PATCH 027/218] remove extra commas --- ROSCO/rosco_registry/write_registry.py | 4 ++-- ROSCO/src/ROSCO_IO.f90 | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/ROSCO/rosco_registry/write_registry.py b/ROSCO/rosco_registry/write_registry.py index 380a26be..f3f37ad4 100644 --- a/ROSCO/rosco_registry/write_registry.py +++ b/ROSCO/rosco_registry/write_registry.py @@ -62,7 +62,7 @@ def write_roscoio(yfile): file.write(" CHARACTER(128) :: ErrMsg \n") file.write(" CHARACTER(128) :: n_t_global ! timestep number as a string\n") file.write("\n") - file.write(" WRITE(n_t_global, '(I0.0)' ), NINT(LocalVar%Time/LocalVar%DT)\n") + file.write(" WRITE(n_t_global, '(I0.0)' ) NINT(LocalVar%Time/LocalVar%DT)\n") file.write(" InFile = RootName(1:size_avcOUTNAME-5)//TRIM( n_t_global )//'.RO.chkp'\n") file.write(" OPEN(unit=Un, FILE=TRIM(InFile), STATUS='UNKNOWN', FORM='UNFORMATTED' , ACCESS='STREAM', IOSTAT=ErrStat, ACTION='WRITE' )\n") file.write("\n") @@ -103,7 +103,7 @@ def write_roscoio(yfile): file.write(" CHARACTER(128) :: ErrMsg \n") file.write(" CHARACTER(128) :: n_t_global ! timestep number as a string\n") file.write("\n") - file.write(" WRITE(n_t_global, '(I0.0)' ), NINT(avrSWAP(2)/avrSWAP(3))\n") + file.write(" WRITE(n_t_global, '(I0.0)' ) NINT(avrSWAP(2)/avrSWAP(3))\n") file.write(" InFile = RootName(1:size_avcOUTNAME-5)//TRIM( n_t_global )//'.RO.chkp'\n") file.write(" OPEN(unit=Un, FILE=TRIM(InFile), STATUS='UNKNOWN', FORM='UNFORMATTED' , ACCESS='STREAM', IOSTAT=ErrStat, ACTION='READ' )\n") file.write("\n") diff --git a/ROSCO/src/ROSCO_IO.f90 b/ROSCO/src/ROSCO_IO.f90 index 98510c21..71f253ca 100644 --- a/ROSCO/src/ROSCO_IO.f90 +++ b/ROSCO/src/ROSCO_IO.f90 @@ -25,7 +25,7 @@ SUBROUTINE WriteRestartFile(LocalVar, CntrPar, objInst, RootName, size_avcOUTNAM CHARACTER(128) :: ErrMsg CHARACTER(128) :: n_t_global ! timestep number as a string - WRITE(n_t_global, '(I0.0)' ), NINT(LocalVar%Time/LocalVar%DT) + WRITE(n_t_global, '(I0.0)' ) NINT(LocalVar%Time/LocalVar%DT) InFile = RootName(1:size_avcOUTNAME-5)//TRIM( n_t_global )//'.RO.chkp' OPEN(unit=Un, FILE=TRIM(InFile), STATUS='UNKNOWN', FORM='UNFORMATTED' , ACCESS='STREAM', IOSTAT=ErrStat, ACTION='WRITE' ) @@ -196,7 +196,7 @@ SUBROUTINE ReadRestartFile(avrSWAP, LocalVar, CntrPar, objInst, PerfData, RootNa CHARACTER(128) :: ErrMsg CHARACTER(128) :: n_t_global ! timestep number as a string - WRITE(n_t_global, '(I0.0)' ), NINT(avrSWAP(2)/avrSWAP(3)) + WRITE(n_t_global, '(I0.0)' ) NINT(avrSWAP(2)/avrSWAP(3)) InFile = RootName(1:size_avcOUTNAME-5)//TRIM( n_t_global )//'.RO.chkp' OPEN(unit=Un, FILE=TRIM(InFile), STATUS='UNKNOWN', FORM='UNFORMATTED' , ACCESS='STREAM', IOSTAT=ErrStat, ACTION='READ' ) From 4c3154491523bcd542133ca2bce5803cdc94523f Mon Sep 17 00:00:00 2001 From: Nikhar Abbas Date: Tue, 21 Dec 2021 12:46:31 -0700 Subject: [PATCH 028/218] specify gfortran-10 --- .github/workflows/CI_rosco-pytools.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/CI_rosco-pytools.yml b/.github/workflows/CI_rosco-pytools.yml index 47357e84..dc881260 100644 --- a/.github/workflows/CI_rosco-pytools.yml +++ b/.github/workflows/CI_rosco-pytools.yml @@ -5,7 +5,7 @@ on: [push, pull_request] # Specify FORTRAN compiler env: - FC: gfortran + FC: gfortran-10 # A workflow run is made up of one or more jobs that can run sequentially or in parallel jobs: From 6f295563832413e96347acd82716f9aadac6d46c Mon Sep 17 00:00:00 2001 From: Nikhar Abbas Date: Tue, 21 Dec 2021 13:47:55 -0700 Subject: [PATCH 029/218] testing flag cleanup --- setup.py | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/setup.py b/setup.py index 716f9fbb..2b4517f2 100644 --- a/setup.py +++ b/setup.py @@ -84,25 +84,26 @@ def build_extension(self, ext): localdir = os.path.join(this_directory, 'ROSCO','install') os.makedirs(localdir, exist_ok=True) - cmake_args = ['-DBUILD_SHARED_LIBS=OFF'] - cmake_args += ['-DCMAKE_Fortran_FLAGS=-ffree-line-length-0'] - cmake_args += ['-DCMAKE_INSTALL_PREFIX={}'.format(localdir)] - - if platform.system() == 'Windows': - if "gfortran" in os.environ["FC"].lower(): - cmake_args += ['-G', 'MinGW Makefiles'] - elif self.compiler.compiler_type == 'msvc': - cmake_args += ['-DCMAKE_GENERATOR_PLATFORM=x64'] - else: - raise ValueError("Unable to find the system's Fortran compiler.") + # cmake_args = ['-DBUILD_SHARED_LIBS=OFF'] + # cmake_args += ['-DCMAKE_Fortran_FLAGS=-ffree-line-length-0'] + # cmake_args += ['-DCMAKE_INSTALL_PREFIX={}'.format(localdir)] + + # if platform.system() == 'Windows': + # if "gfortran" in os.environ["FC"].lower(): + # cmake_args += ['-G', 'MinGW Makefiles'] + # elif self.compiler.compiler_type == 'msvc': + # cmake_args += ['-DCMAKE_GENERATOR_PLATFORM=x64'] + # else: + # raise ValueError("Unable to find the system's Fortran compiler.") self.build_temp = os.path.join( os.path.dirname( os.path.realpath(__file__) ), 'ROSCO', 'build') os.makedirs(localdir, exist_ok=True) # Need fresh build directory for CMake os.makedirs(self.build_temp, exist_ok=True) - self.spawn(['cmake', '-S', ext.sourcedir, '-B', self.build_temp] + cmake_args) - self.spawn(['cmake', '--build', self.build_temp, '--target', 'install', '--config', 'Release']) + # self.spawn(['cmake', '-S', ext.sourcedir, '-B', self.build_temp] + cmake_args) + self.spawn(['cmake', '-B', self.build_temp, os.path.join(this_directory, 'ROSCO')]) + self.spawn(['cmake', '--build', self.build_temp, '--target', 'install']) From 3e432063d4412e16d2fa7dc32ab906b7f2f9b1e9 Mon Sep 17 00:00:00 2001 From: dzalkind Date: Tue, 21 Dec 2021 14:29:05 -0700 Subject: [PATCH 030/218] Use lv_strings to generate debug output --- ROSCO/rosco_registry/write_registry.py | 11 +++++------ ROSCO/src/ROSCO_IO.f90 | 12 ++++++------ 2 files changed, 11 insertions(+), 12 deletions(-) diff --git a/ROSCO/rosco_registry/write_registry.py b/ROSCO/rosco_registry/write_registry.py index f3f37ad4..ba786dd3 100644 --- a/ROSCO/rosco_registry/write_registry.py +++ b/ROSCO/rosco_registry/write_registry.py @@ -194,12 +194,11 @@ def write_roscoio(yfile): file.write(' nLocalVars = {}\n'.format(len(lv_strings))) file.write(' Allocate(LocalVarOutData(nLocalVars))\n') file.write(' Allocate(LocalVarOutStrings(nLocalVars))\n') - for lv_idx, localvar in enumerate(reg['LocalVariables']): - if reg['LocalVariables'][localvar]['type'] in ['integer', 'real']: - if reg['LocalVariables'][localvar]['size'] > 0: - file.write(' LocalVarOutData({}) = LocalVar%{}(1)\n'.format(lv_idx+1, localvar)) - else: - file.write(' LocalVarOutData({}) = LocalVar%{}\n'.format(lv_idx+1, localvar)) + for lv_idx, localvar in enumerate(lv_strings): + if reg['LocalVariables'][localvar]['size'] > 0: + file.write(' LocalVarOutData({}) = LocalVar%{}(1)\n'.format(lv_idx+1, localvar)) + else: + file.write(' LocalVarOutData({}) = LocalVar%{}\n'.format(lv_idx+1, localvar)) file.write(' LocalVarOutStrings = [CHARACTER(15) :: ') counter = 0 for string in lv_strings: diff --git a/ROSCO/src/ROSCO_IO.f90 b/ROSCO/src/ROSCO_IO.f90 index 71f253ca..cbc9e91b 100644 --- a/ROSCO/src/ROSCO_IO.f90 +++ b/ROSCO/src/ROSCO_IO.f90 @@ -461,12 +461,12 @@ SUBROUTINE Debug(LocalVar, CntrPar, DebugVar, avrSWAP, RootName, size_avcOUTNAME LocalVarOutData(61) = LocalVar%Y_ErrLPFSlow LocalVarOutData(62) = LocalVar%Y_MErr LocalVarOutData(63) = LocalVar%Y_YawEndT - LocalVarOutData(65) = LocalVar%Fl_PitCom - LocalVarOutData(66) = LocalVar%NACIMU_FA_AccF - LocalVarOutData(67) = LocalVar%FA_AccF - LocalVarOutData(68) = LocalVar%Flp_Angle(1) - LocalVarOutData(69) = LocalVar%RootMyb_Last(1) - LocalVarOutData(70) = LocalVar%ACC_INFILE_SIZE + LocalVarOutData(64) = LocalVar%Fl_PitCom + LocalVarOutData(65) = LocalVar%NACIMU_FA_AccF + LocalVarOutData(66) = LocalVar%FA_AccF + LocalVarOutData(67) = LocalVar%Flp_Angle(1) + LocalVarOutData(68) = LocalVar%RootMyb_Last(1) + LocalVarOutData(69) = LocalVar%ACC_INFILE_SIZE LocalVarOutStrings = [CHARACTER(15) :: 'iStatus', 'Time', 'DT', 'VS_GenPwr', 'GenSpeed', & 'RotSpeed', 'Y_M', 'HorWindV', 'rootMOOP', 'BlPitch', & 'Azimuth', 'NumBl', 'FA_Acc', 'NacIMU_FA_Acc', 'FA_AccHPF', & From b1607e0d103bff7f93b3a43851490d979f211b2e Mon Sep 17 00:00:00 2001 From: Nikhar Abbas Date: Tue, 21 Dec 2021 15:07:02 -0700 Subject: [PATCH 031/218] Revert "testing flag cleanup" This reverts commit 6f295563832413e96347acd82716f9aadac6d46c. --- setup.py | 27 +++++++++++++-------------- 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/setup.py b/setup.py index 2b4517f2..716f9fbb 100644 --- a/setup.py +++ b/setup.py @@ -84,26 +84,25 @@ def build_extension(self, ext): localdir = os.path.join(this_directory, 'ROSCO','install') os.makedirs(localdir, exist_ok=True) - # cmake_args = ['-DBUILD_SHARED_LIBS=OFF'] - # cmake_args += ['-DCMAKE_Fortran_FLAGS=-ffree-line-length-0'] - # cmake_args += ['-DCMAKE_INSTALL_PREFIX={}'.format(localdir)] - - # if platform.system() == 'Windows': - # if "gfortran" in os.environ["FC"].lower(): - # cmake_args += ['-G', 'MinGW Makefiles'] - # elif self.compiler.compiler_type == 'msvc': - # cmake_args += ['-DCMAKE_GENERATOR_PLATFORM=x64'] - # else: - # raise ValueError("Unable to find the system's Fortran compiler.") + cmake_args = ['-DBUILD_SHARED_LIBS=OFF'] + cmake_args += ['-DCMAKE_Fortran_FLAGS=-ffree-line-length-0'] + cmake_args += ['-DCMAKE_INSTALL_PREFIX={}'.format(localdir)] + + if platform.system() == 'Windows': + if "gfortran" in os.environ["FC"].lower(): + cmake_args += ['-G', 'MinGW Makefiles'] + elif self.compiler.compiler_type == 'msvc': + cmake_args += ['-DCMAKE_GENERATOR_PLATFORM=x64'] + else: + raise ValueError("Unable to find the system's Fortran compiler.") self.build_temp = os.path.join( os.path.dirname( os.path.realpath(__file__) ), 'ROSCO', 'build') os.makedirs(localdir, exist_ok=True) # Need fresh build directory for CMake os.makedirs(self.build_temp, exist_ok=True) - # self.spawn(['cmake', '-S', ext.sourcedir, '-B', self.build_temp] + cmake_args) - self.spawn(['cmake', '-B', self.build_temp, os.path.join(this_directory, 'ROSCO')]) - self.spawn(['cmake', '--build', self.build_temp, '--target', 'install']) + self.spawn(['cmake', '-S', ext.sourcedir, '-B', self.build_temp] + cmake_args) + self.spawn(['cmake', '--build', self.build_temp, '--target', 'install', '--config', 'Release']) From 24e5daf9e9f09c82b93b8d3938f9b4d4431f2ac6 Mon Sep 17 00:00:00 2001 From: Nikhar Abbas Date: Tue, 21 Dec 2021 15:22:05 -0700 Subject: [PATCH 032/218] Revert "specify gfortran-10" This reverts commit 4c3154491523bcd542133ca2bce5803cdc94523f. --- .github/workflows/CI_rosco-pytools.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/CI_rosco-pytools.yml b/.github/workflows/CI_rosco-pytools.yml index dc881260..47357e84 100644 --- a/.github/workflows/CI_rosco-pytools.yml +++ b/.github/workflows/CI_rosco-pytools.yml @@ -5,7 +5,7 @@ on: [push, pull_request] # Specify FORTRAN compiler env: - FC: gfortran-10 + FC: gfortran # A workflow run is made up of one or more jobs that can run sequentially or in parallel jobs: From 76caca3aca235f378798c5d91878d03e1fee544c Mon Sep 17 00:00:00 2001 From: Nikhar Abbas Date: Tue, 21 Dec 2021 15:34:35 -0700 Subject: [PATCH 033/218] minor cleanup --- ROSCO/rosco_registry/write_registry.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/ROSCO/rosco_registry/write_registry.py b/ROSCO/rosco_registry/write_registry.py index ba786dd3..fd43e899 100644 --- a/ROSCO/rosco_registry/write_registry.py +++ b/ROSCO/rosco_registry/write_registry.py @@ -86,7 +86,6 @@ def write_roscoio(yfile): file.write('END SUBROUTINE WriteRestartFile\n') file.write('\n \n') file.write('SUBROUTINE ReadRestartFile(avrSWAP, LocalVar, CntrPar, objInst, PerfData, RootName, size_avcOUTNAME, ErrVar)\n') - # file.write(' USE ROSCO_Types, ONLY: LocalVariables, ControlParameters, ObjectInstances, PerformanceData, ErrorVariables\n') file.write(" TYPE(LocalVariables), INTENT(INOUT) :: LocalVar\n") file.write(" TYPE(ControlParameters), INTENT(INOUT) :: CntrPar\n") file.write(" TYPE(ObjectInstances), INTENT(INOUT) :: objInst\n") @@ -213,8 +212,6 @@ def write_roscoio(yfile): file.write(" ! Initialize debug file\n") file.write(" IF ((LocalVar%iStatus == 0) .OR. (LocalVar%iStatus == -9)) THEN ! .TRUE. if we're on the first call to the DLL\n") - file.write(" ! If we're debugging, open the debug file and write the header:\n") - file.write(" ! Note that the headers will be Truncated to 10 characters!!\n") file.write(" IF (CntrPar%LoggingLevel > 0) THEN\n") file.write(" OPEN(unit=UnDb, FILE=RootName(1: size_avcOUTNAME-5)//'RO.dbg')\n") file.write(" WRITE(UnDb, *) 'Generated on '//CurDate()//' at '//CurTime()//' using ROSCO-'//TRIM(rosco_version)\n") From 4b6041a7c339ab58a535e92a99e4836fdea363a0 Mon Sep 17 00:00:00 2001 From: Nikhar Abbas Date: Wed, 22 Dec 2021 07:39:55 -0700 Subject: [PATCH 034/218] Use kind from constants --- ROSCO/src/Filters.f90 | 72 ++++++++++++++++++++--------------------- ROSCO/src/Functions.f90 | 48 +++++++++++++-------------- 2 files changed, 60 insertions(+), 60 deletions(-) diff --git a/ROSCO/src/Filters.f90 b/ROSCO/src/Filters.f90 index 1987906f..1e79701c 100644 --- a/ROSCO/src/Filters.f90 +++ b/ROSCO/src/Filters.f90 @@ -26,7 +26,7 @@ MODULE Filters CONTAINS !------------------------------------------------------------------------------------------------------------------------------- - REAL FUNCTION LPFilter(InputSignal, DT, CornerFreq, FP, iStatus, reset, inst) + REAL(DbKi) FUNCTION LPFilter(InputSignal, DT, CornerFreq, FP, iStatus, reset, inst) ! Discrete time Low-Pass Filter of the form: ! Continuous Time Form: H(s) = CornerFreq/(1 + CornerFreq) ! Discrete Time Form: H(z) = (b1z + b0) / (a1*z + a0) @@ -34,11 +34,11 @@ REAL FUNCTION LPFilter(InputSignal, DT, CornerFreq, FP, iStatus, reset, inst) USE ROSCO_Types, ONLY : FilterParameters TYPE(FilterParameters), INTENT(INOUT) :: FP - REAL(8), INTENT(IN) :: InputSignal - REAL(8), INTENT(IN) :: DT ! time step [s] - REAL(8), INTENT(IN) :: CornerFreq ! corner frequency [rad/s] - INTEGER(4), 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(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. + REAL(DbKi), INTENT(IN) :: InputSignal + REAL(DbKi), INTENT(IN) :: DT ! time step [s] + REAL(DbKi), INTENT(IN) :: CornerFreq ! corner frequency [rad/s] + INTEGER(IntKi), 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(IntKi), 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 ! Initialization @@ -63,18 +63,18 @@ REAL FUNCTION LPFilter(InputSignal, DT, CornerFreq, FP, iStatus, reset, inst) END FUNCTION LPFilter !------------------------------------------------------------------------------------------------------------------------------- - REAL FUNCTION SecLPFilter(InputSignal, DT, CornerFreq, Damp, FP, iStatus, reset, inst) + REAL(DbKi) FUNCTION SecLPFilter(InputSignal, DT, CornerFreq, Damp, FP, iStatus, reset, inst) ! Discrete time Low-Pass Filter of the form: ! Continuous Time Form: H(s) = CornerFreq^2/(s^2 + 2*CornerFreq*Damp*s + CornerFreq^2) ! Discrete Time From: H(z) = (b2*z^2 + b1*z + b0) / (a2*z^2 + a1*z + a0) USE ROSCO_Types, ONLY : FilterParameters TYPE(FilterParameters), INTENT(INOUT) :: FP - REAL(8), INTENT(IN) :: InputSignal - REAL(8), INTENT(IN) :: DT ! time step [s] - REAL(8), INTENT(IN) :: CornerFreq ! corner frequency [rad/s] - REAL(8), INTENT(IN) :: Damp ! Dampening constant - INTEGER(4), 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(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. + REAL(DbKi), INTENT(IN) :: InputSignal + REAL(DbKi), INTENT(IN) :: DT ! time step [s] + REAL(DbKi), INTENT(IN) :: CornerFreq ! corner frequency [rad/s] + REAL(DbKi), INTENT(IN) :: Damp ! Dampening constant + INTEGER(IntKi), 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(IntKi), 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 ! Initialization @@ -106,19 +106,19 @@ REAL FUNCTION SecLPFilter(InputSignal, DT, CornerFreq, Damp, FP, iStatus, reset, END FUNCTION SecLPFilter !------------------------------------------------------------------------------------------------------------------------------- - REAL FUNCTION HPFilter( InputSignal, DT, CornerFreq, FP, iStatus, reset, inst) + REAL(DbKi) FUNCTION HPFilter( InputSignal, DT, CornerFreq, FP, iStatus, reset, inst) ! Discrete time High-Pass Filter USE ROSCO_Types, ONLY : FilterParameters TYPE(FilterParameters), INTENT(INOUT) :: FP - REAL(8), INTENT(IN) :: InputSignal - REAL(8), INTENT(IN) :: DT ! time step [s] - REAL(8), INTENT(IN) :: CornerFreq ! corner frequency [rad/s] - 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. + REAL(DbKi), INTENT(IN) :: InputSignal + REAL(DbKi), INTENT(IN) :: DT ! time step [s] + REAL(DbKi), INTENT(IN) :: CornerFreq ! corner frequency [rad/s] + INTEGER(IntKi), 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(IntKi), 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 - REAL(8) :: K ! Constant gain + REAL(DbKi) :: K ! Constant gain ! Initialization IF ((iStatus == 0) .OR. reset) THEN @@ -137,17 +137,17 @@ REAL FUNCTION HPFilter( InputSignal, DT, CornerFreq, FP, iStatus, reset, inst) END FUNCTION HPFilter !------------------------------------------------------------------------------------------------------------------------------- - REAL FUNCTION NotchFilterSlopes(InputSignal, DT, CornerFreq, Damp, FP, iStatus, reset, inst) + REAL(DbKi) FUNCTION NotchFilterSlopes(InputSignal, DT, CornerFreq, Damp, FP, iStatus, reset, inst) ! Discrete time inverted Notch Filter with descending slopes, G = CornerFreq*s/(Damp*s^2+CornerFreq*s+Damp*CornerFreq^2) USE ROSCO_Types, ONLY : FilterParameters TYPE(FilterParameters), INTENT(INOUT) :: FP - REAL(8), INTENT(IN) :: InputSignal - REAL(8), INTENT(IN) :: DT ! time step [s] - REAL(8), INTENT(IN) :: CornerFreq ! corner frequency [rad/s] - REAL(8), INTENT(IN) :: Damp ! Dampening constant - 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. + REAL(DbKi), INTENT(IN) :: InputSignal + REAL(DbKi), INTENT(IN) :: DT ! time step [s] + REAL(DbKi), INTENT(IN) :: CornerFreq ! corner frequency [rad/s] + REAL(DbKi), INTENT(IN) :: Damp ! Dampening constant + INTEGER(IntKi), 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(IntKi), 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 ! Initialization @@ -175,23 +175,23 @@ REAL FUNCTION NotchFilterSlopes(InputSignal, DT, CornerFreq, Damp, FP, iStatus, END FUNCTION NotchFilterSlopes !------------------------------------------------------------------------------------------------------------------------------- - REAL FUNCTION NotchFilter(InputSignal, DT, omega, betaNum, betaDen, FP, iStatus, reset, inst) + REAL(DbKi) FUNCTION NotchFilter(InputSignal, DT, omega, betaNum, betaDen, FP, iStatus, reset, inst) ! Discrete time Notch Filter ! Continuous Time Form: G(s) = (s^2 + 2*omega*betaNum*s + omega^2)/(s^2 + 2*omega*betaDen*s + omega^2) ! Discrete Time Form: H(z) = (b2*z^2 +b1*z^2 + b0*z)/((z^2 +a1*z^2 + a0*z)) USE ROSCO_Types, ONLY : FilterParameters TYPE(FilterParameters), INTENT(INOUT) :: FP - REAL(8), INTENT(IN) :: InputSignal - REAL(8), INTENT(IN) :: DT ! time step [s] - REAL(8), INTENT(IN) :: omega ! corner frequency [rad/s] - REAL(8), INTENT(IN) :: betaNum ! Dampening constant in numerator of filter transfer function - REAL(8), INTENT(IN) :: betaDen ! Dampening constant in denominator of filter transfer function - 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. + REAL(DbKi), INTENT(IN) :: InputSignal + REAL(DbKi), INTENT(IN) :: DT ! time step [s] + REAL(DbKi), INTENT(IN) :: omega ! corner frequency [rad/s] + REAL(DbKi), INTENT(IN) :: betaNum ! Dampening constant in numerator of filter transfer function + REAL(DbKi), INTENT(IN) :: betaDen ! Dampening constant in denominator of filter transfer function + INTEGER(IntKi), 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(IntKi), 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 - REAL(8) :: K ! Constant gain + REAL(DbKi) :: K ! Constant gain ! Initialization K = 2.0/DT diff --git a/ROSCO/src/Functions.f90 b/ROSCO/src/Functions.f90 index d0361ac7..754206a2 100644 --- a/ROSCO/src/Functions.f90 +++ b/ROSCO/src/Functions.f90 @@ -67,26 +67,26 @@ REAL(DbKi) FUNCTION ratelimit(inputSignal, inputSignalPrev, minRate, maxRate, DT END FUNCTION ratelimit !------------------------------------------------------------------------------------------------------------------------------- - REAL FUNCTION PIController(error, kp, ki, minValue, maxValue, DT, I0, piP, reset, inst) + REAL(DbKi) FUNCTION PIController(error, kp, ki, minValue, maxValue, DT, I0, piP, reset, inst) USE ROSCO_Types, ONLY : piParams ! PI controller, with output saturation IMPLICIT NONE ! Allocate Inputs - REAL(8), INTENT(IN) :: error - REAL(8), INTENT(IN) :: kp - REAL(8), INTENT(IN) :: ki - REAL(8), INTENT(IN) :: minValue - REAL(8), INTENT(IN) :: maxValue - REAL(8), INTENT(IN) :: DT - INTEGER(4), INTENT(INOUT) :: inst - REAL(8), INTENT(IN) :: I0 + REAL(DbKi), INTENT(IN) :: error + REAL(DbKi), INTENT(IN) :: kp + REAL(DbKi), INTENT(IN) :: ki + REAL(DbKi), INTENT(IN) :: minValue + REAL(DbKi), INTENT(IN) :: maxValue + REAL(DbKi), INTENT(IN) :: DT + INTEGER(IntKi), INTENT(INOUT) :: inst + REAL(DbKi), INTENT(IN) :: I0 TYPE(piParams), INTENT(INOUT) :: piP LOGICAL, INTENT(IN) :: reset ! Allocate local variables - INTEGER(4) :: i ! Counter for making arrays - REAL(8) :: PTerm ! Proportional term + INTEGER(IntKi) :: i ! Counter for making arrays + REAL(DbKi) :: PTerm ! Proportional term ! Initialize persistent variables/arrays, and set inital condition for integrator term IF (reset) THEN @@ -107,28 +107,28 @@ REAL FUNCTION PIController(error, kp, ki, minValue, maxValue, DT, I0, piP, reset END FUNCTION PIController !------------------------------------------------------------------------------------------------------------------------------- - REAL(8) FUNCTION PIIController(error, error2, kp, ki, ki2, minValue, maxValue, DT, I0, piP, reset, inst) + REAL(DbKi) FUNCTION PIIController(error, error2, kp, ki, ki2, minValue, maxValue, DT, I0, piP, reset, inst) ! PI controller, with output saturation. ! Added error2 term for additional integral control input USE ROSCO_Types, ONLY : piParams IMPLICIT NONE ! Allocate Inputs - REAL(8), INTENT(IN) :: error - REAL(8), INTENT(IN) :: error2 - REAL(8), INTENT(IN) :: kp - REAL(8), INTENT(IN) :: ki2 - REAL(8), INTENT(IN) :: ki - REAL(8), INTENT(IN) :: minValue - REAL(8), INTENT(IN) :: maxValue - REAL(8), INTENT(IN) :: DT - INTEGER(4), INTENT(INOUT) :: inst - REAL(8), INTENT(IN) :: I0 + REAL(DbKi), INTENT(IN) :: error + REAL(DbKi), INTENT(IN) :: error2 + REAL(DbKi), INTENT(IN) :: kp + REAL(DbKi), INTENT(IN) :: ki2 + REAL(DbKi), INTENT(IN) :: ki + REAL(DbKi), INTENT(IN) :: minValue + REAL(DbKi), INTENT(IN) :: maxValue + REAL(DbKi), INTENT(IN) :: DT + INTEGER(IntKi), INTENT(INOUT) :: inst + REAL(DbKi), INTENT(IN) :: I0 TYPE(piParams), INTENT(INOUT) :: piP LOGICAL, INTENT(IN) :: reset ! Allocate local variables - INTEGER(4) :: i ! Counter for making arrays - REAL(8) :: PTerm ! Proportional term + INTEGER(IntKi) :: i ! Counter for making arrays + REAL(DbKi) :: PTerm ! Proportional term ! Initialize persistent variables/arrays, and set inital condition for integrator term IF (reset) THEN From 878b1437dee16d05a7a945c795c04d4975b51d10 Mon Sep 17 00:00:00 2001 From: Nikhar Abbas Date: Wed, 22 Dec 2021 07:53:37 -0700 Subject: [PATCH 035/218] Add some comments for clarity --- ROSCO/rosco_registry/write_registry.py | 46 ++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/ROSCO/rosco_registry/write_registry.py b/ROSCO/rosco_registry/write_registry.py index fd43e899..d1957748 100644 --- a/ROSCO/rosco_registry/write_registry.py +++ b/ROSCO/rosco_registry/write_registry.py @@ -4,14 +4,27 @@ from ROSCO_toolbox.ofTools.util.FileTools import load_yaml def generate(yfile): + ''' + Generates full registry and ROSCO I/O files + ''' write_types(yfile) write_roscoio(yfile) def write_types(yfile): + ''' + Writes ROSCO_types.f90 + -- All additions to the types should be added to rosco_types.yaml! + + Parameters: + ----------- + yfile: string + path to rosco_types.yaml + ''' reg = load_yaml(yfile) reg.pop('default_types') registry_fname = os.path.join(os.path.dirname(os.path.dirname(os.path.abspath(__file__))),'src','ROSCO_Types.f90') file = open(registry_fname, 'w') + # Header file.write('! ROSCO Registry\n') file.write('! This file is automatically generated by write_registry.py using ROSCO v{}\n'.format(ROSCO_toolbox.__version__)) file.write('! For any modification to the registry, please edit the rosco_types.yaml accordingly\n \n') @@ -20,6 +33,7 @@ def write_types(yfile): file.write('USE Constants\n') file.write('IMPLICIT NONE\n') file.write('\n') + # Loop Types for toptype in reg.keys(): file.write('TYPE, PUBLIC :: {}\n'.format(toptype)) for attype in reg[toptype].keys(): @@ -34,6 +48,15 @@ def write_types(yfile): file.close() def write_roscoio(yfile): + ''' + Writes ROSCO_IO.f90 + -- All additions to the types should be added to rosco_types.yaml! + + Parameters: + ----------- + yfile: string + path to rosco_types.yaml + ''' reg = load_yaml(yfile) reg.pop('default_types') registry_fname = os.path.join(os.path.dirname(os.path.dirname(os.path.abspath(__file__))),'src','ROSCO_IO.f90') @@ -48,6 +71,9 @@ def write_roscoio(yfile): file.write(' USE Constants\n') file.write('IMPLICIT NONE\n\n') file.write('CONTAINS\n\n') + # ------------------------------------------------ + # ------------ WriteRestartFile ------------------ + # ------------------------------------------------ file.write('SUBROUTINE WriteRestartFile(LocalVar, CntrPar, objInst, RootName, size_avcOUTNAME)\n') file.write(" TYPE(LocalVariables), INTENT(IN) :: LocalVar\n") file.write(" TYPE(ControlParameters), INTENT(INOUT) :: CntrPar\n") @@ -70,6 +96,8 @@ def write_roscoio(yfile): file.write(" ErrMsg = 'Cannot open file "'//TRIM( InFile )//'". Another program may have locked it for writing.'\n") file.write("\n") file.write(" ELSE\n") + + # Loop Variable Tree for var in reg['LocalVariables']: if reg['LocalVariables'][var]['type'] == 'derived_type': for dvar in reg[reg['LocalVariables'][var]['id']]: @@ -85,6 +113,9 @@ def write_roscoio(yfile): file.write(' ENDIF\n') file.write('END SUBROUTINE WriteRestartFile\n') file.write('\n \n') + # ------------------------------------------------ + # ------------ ReadRestartFile ------------------ + # ------------------------------------------------ file.write('SUBROUTINE ReadRestartFile(avrSWAP, LocalVar, CntrPar, objInst, PerfData, RootName, size_avcOUTNAME, ErrVar)\n') file.write(" TYPE(LocalVariables), INTENT(INOUT) :: LocalVar\n") file.write(" TYPE(ControlParameters), INTENT(INOUT) :: CntrPar\n") @@ -110,6 +141,8 @@ def write_roscoio(yfile): file.write(" ErrMsg = 'Cannot open file "'//TRIM( InFile )//'". Another program may have locked it for writing.'\n") file.write("\n") file.write(" ELSE\n") + + # Loop Variable Tree for var in reg['LocalVariables']: if reg['LocalVariables'][var]['type'] == 'derived_type': for dvar in reg[reg['LocalVariables'][var]['id']]: @@ -132,6 +165,9 @@ def write_roscoio(yfile): file.write(' ENDIF\n') file.write('END SUBROUTINE ReadRestartFile\n') file.write('\n \n') + # ------------------------------------------------ + # ------------------ Debug ----------------------- + # ------------------------------------------------ file.write('SUBROUTINE Debug(LocalVar, CntrPar, DebugVar, avrSWAP, RootName, size_avcOUTNAME)\n') file.write('! Debug routine, defines what gets printed to DEBUG.dbg if LoggingLevel = 1\n') file.write('\n') @@ -159,6 +195,8 @@ def write_roscoio(yfile): file.write(' Allocate(DebugOutUnits(nDebugOuts))\n') dbg_strings = [] dbg_units = [] + + # Print Debug variables for dbg_idx, dbgvar in enumerate(reg['DebugVariables']): dbg_strings.append(dbgvar) desc = reg['DebugVariables'][dbgvar]['description'] @@ -186,6 +224,9 @@ def write_roscoio(yfile): if (counter % 5 == 0): file.write(' & \n ') file.write(']\n') + + # Print Local Variables + # -- Always prints blade(1) for multi-bladed inputss (e.g. BldPitch(1)) lv_strings = [] for lv_idx, localvar in enumerate(reg['LocalVariables']): if reg['LocalVariables'][localvar]['type'] in ['integer', 'real']: @@ -210,8 +251,11 @@ def write_roscoio(yfile): file.write(' & \n ') file.write(']\n') + # Debug file initialization + # -- iStatus = 0 on first call, iStatus = -9 in restart file.write(" ! Initialize debug file\n") file.write(" IF ((LocalVar%iStatus == 0) .OR. (LocalVar%iStatus == -9)) THEN ! .TRUE. if we're on the first call to the DLL\n") + # Standar debug file.write(" IF (CntrPar%LoggingLevel > 0) THEN\n") file.write(" OPEN(unit=UnDb, FILE=RootName(1: size_avcOUTNAME-5)//'RO.dbg')\n") file.write(" WRITE(UnDb, *) 'Generated on '//CurDate()//' at '//CurTime()//' using ROSCO-'//TRIM(rosco_version)\n") @@ -219,6 +263,7 @@ def write_roscoio(yfile): file.write(" WRITE(UnDb, '(99(a20,TR5:))') '(sec)', DebugOutUnits\n") file.write(" END IF\n") file.write("\n") + # LocalVar debug file.write(" IF (CntrPar%LoggingLevel > 1) THEN\n") file.write(" OPEN(unit=UnDb2, FILE=RootName(1: size_avcOUTNAME-5)//'RO.dbg2')\n") file.write(" WRITE(UnDb2, *) 'Generated on '//CurDate()//' at '//CurTime()//' using ROSCO-'//TRIM(rosco_version)\n") @@ -226,6 +271,7 @@ def write_roscoio(yfile): file.write(" WRITE(UnDb2, '(99(a20,TR5:))')\n") file.write(" END IF\n") file.write("\n") + # avrSWAP debug file.write(" IF (CntrPar%LoggingLevel > 2) THEN\n") file.write(" OPEN(unit=UnDb3, FILE=RootName(1: size_avcOUTNAME-5)//'RO.dbg3')\n") file.write(" WRITE(UnDb3,'(/////)')\n") From 59519a1bd25ca67eedaf7c675a84552fb3893fc7 Mon Sep 17 00:00:00 2001 From: Nikhar Abbas Date: Wed, 22 Dec 2021 07:55:26 -0700 Subject: [PATCH 036/218] put debug in if statements --- ROSCO/src/DISCON.F90 | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ROSCO/src/DISCON.F90 b/ROSCO/src/DISCON.F90 index e7446688..ecafed9f 100644 --- a/ROSCO/src/DISCON.F90 +++ b/ROSCO/src/DISCON.F90 @@ -67,6 +67,7 @@ SUBROUTINE DISCON(avrSWAP, aviFAIL, accINFILE, avcOUTNAME, avcMSG) BIND (C, NAME ! Check for restart IF ( (NINT(avrSWAP(1)) == -9) .AND. (aviFAIL >= 0)) THEN ! Read restart files CALL ReadRestartFile(avrSWAP, LocalVar, CntrPar, objInst, PerfData, RootName, SIZE(avcOUTNAME), ErrVar) + CALL Debug(LocalVar, CntrPar, DebugVar, avrSWAP, RootName, SIZE(avcOUTNAME)) END IF ! Read avrSWAP array into derived types/variables @@ -98,10 +99,10 @@ SUBROUTINE DISCON(avrSWAP, aviFAIL, accINFILE, avcOUTNAME, avcMSG) BIND (C, NAME CALL FlapControl(avrSWAP, CntrPar, LocalVar, objInst) END IF + CALL Debug(LocalVar, CntrPar, DebugVar, avrSWAP, RootName, SIZE(avcOUTNAME)) END IF -CALL Debug(LocalVar, CntrPar, DebugVar, avrSWAP, RootName, SIZE(avcOUTNAME)) ! Add RoutineName to error message IF (ErrVar%aviFAIL < 0) THEN From 874971305628e6d5e9e7db99c0b048912f10a984 Mon Sep 17 00:00:00 2001 From: Nikhar Abbas Date: Wed, 22 Dec 2021 07:55:37 -0700 Subject: [PATCH 037/218] separate reg tests from oother tests --- .github/workflows/CI_rosco-pytools.yml | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/.github/workflows/CI_rosco-pytools.yml b/.github/workflows/CI_rosco-pytools.yml index 47357e84..ad8b8e12 100644 --- a/.github/workflows/CI_rosco-pytools.yml +++ b/.github/workflows/CI_rosco-pytools.yml @@ -155,9 +155,13 @@ jobs: run: | conda install openfast==3.0.0 - # Run Testing - - name: Run testing + # Run ROSCO Testing + - name: Run ROSCO testing run: | cd ROSCO_testing python ROSCO_testing.py + + # Regression testing + - name: Run regression testing + run: | python regtest.py From b5ac62de1f92e4cdeff32b77f17bee3090bc15be Mon Sep 17 00:00:00 2001 From: Nikhar Abbas Date: Wed, 22 Dec 2021 08:01:07 -0700 Subject: [PATCH 038/218] Fl_Mode>0 --- ROSCO/src/Filters.f90 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ROSCO/src/Filters.f90 b/ROSCO/src/Filters.f90 index 1e79701c..edc19045 100644 --- a/ROSCO/src/Filters.f90 +++ b/ROSCO/src/Filters.f90 @@ -248,7 +248,7 @@ SUBROUTINE PreFilterMeasuredSignals(CntrPar, LocalVar, objInst, ErrVar) ENDIF ! Filtering the tower fore-aft acceleration signal - IF (CntrPar%Fl_Mode == 1) THEN + IF (CntrPar%Fl_Mode > 0) THEN ! Force to start at 0 LocalVar%NacIMU_FA_AccF = SecLPFilter(LocalVar%NacIMU_FA_Acc, LocalVar%DT, CntrPar%F_FlCornerFreq(1), CntrPar%F_FlCornerFreq(2), LocalVar%FP, LocalVar%iStatus, LocalVar%restart, objInst%instSecLPF) ! Fixed Damping LocalVar%FA_AccF = SecLPFilter(LocalVar%FA_Acc, LocalVar%DT, CntrPar%F_FlCornerFreq(1), CntrPar%F_FlCornerFreq(2), LocalVar%FP, LocalVar%iStatus, LocalVar%restart, objInst%instSecLPF) ! Fixed Damping From 3fdbdad60a1914bea43315819dbbf2d82c757a88 Mon Sep 17 00:00:00 2001 From: Nikhar Abbas Date: Wed, 22 Dec 2021 08:02:48 -0700 Subject: [PATCH 039/218] Remove hard coded values --- ROSCO/src/Filters.f90 | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/ROSCO/src/Filters.f90 b/ROSCO/src/Filters.f90 index edc19045..1b00968b 100644 --- a/ROSCO/src/Filters.f90 +++ b/ROSCO/src/Filters.f90 @@ -252,8 +252,8 @@ SUBROUTINE PreFilterMeasuredSignals(CntrPar, LocalVar, objInst, ErrVar) ! Force to start at 0 LocalVar%NacIMU_FA_AccF = SecLPFilter(LocalVar%NacIMU_FA_Acc, LocalVar%DT, CntrPar%F_FlCornerFreq(1), CntrPar%F_FlCornerFreq(2), LocalVar%FP, LocalVar%iStatus, LocalVar%restart, objInst%instSecLPF) ! Fixed Damping LocalVar%FA_AccF = SecLPFilter(LocalVar%FA_Acc, LocalVar%DT, CntrPar%F_FlCornerFreq(1), CntrPar%F_FlCornerFreq(2), LocalVar%FP, LocalVar%iStatus, LocalVar%restart, objInst%instSecLPF) ! Fixed Damping - LocalVar%NacIMU_FA_AccF = HPFilter(LocalVar%NacIMU_FA_AccF, LocalVar%DT, 0.0167, LocalVar%FP, LocalVar%iStatus, LocalVar%restart, objInst%instHPF) - LocalVar%FA_AccF = HPFilter(LocalVar%FA_AccF, LocalVar%DT, 0.0167, LocalVar%FP, LocalVar%iStatus, LocalVar%restart, objInst%instHPF) + LocalVar%NacIMU_FA_AccF = HPFilter(LocalVar%NacIMU_FA_AccF, LocalVar%DT, CntrPar%F_FlHighPassFreq, LocalVar%FP, LocalVar%iStatus, LocalVar%restart, objInst%instHPF) + LocalVar%FA_AccF = HPFilter(LocalVar%FA_AccF, LocalVar%DT, CntrPar%F_FlHighPassFreq, LocalVar%FP, LocalVar%iStatus, LocalVar%restart, objInst%instHPF) IF (CntrPar%F_NotchType >= 2) THEN LocalVar%NACIMU_FA_AccF = NotchFilter(LocalVar%NacIMU_FA_AccF, LocalVar%DT, CntrPar%F_NotchCornerFreq, CntrPar%F_NotchBetaNumDen(1), CntrPar%F_NotchBetaNumDen(2), LocalVar%FP, LocalVar%iStatus, LocalVar%restart, objInst%instNotch) ! Fixed Damping @@ -264,12 +264,12 @@ SUBROUTINE PreFilterMeasuredSignals(CntrPar, LocalVar, objInst, ErrVar) LocalVar%FA_AccHPF = HPFilter(LocalVar%FA_Acc, LocalVar%DT, CntrPar%FA_HPFCornerFreq, LocalVar%FP, LocalVar%iStatus, LocalVar%restart, objInst%instHPF) ! Filter Wind Speed Estimator Signal - LocalVar%We_Vw_F = LPFilter(LocalVar%WE_Vw, LocalVar%DT, 0.209, LocalVar%FP, LocalVar%iStatus, LocalVar%restart, objInst%instLPF) ! 30 second time constant + LocalVar%We_Vw_F = LPFilter(LocalVar%WE_Vw, LocalVar%DT,CntrPar%F_WECornerFreq, LocalVar%FP, LocalVar%iStatus, LocalVar%restart, objInst%instLPF) ! 30 second time constant ! Control commands (used by WSE, mostly) - LocalVar%VS_LastGenTrqF = SecLPFilter(LocalVar%VS_LastGenTrq, LocalVar%DT, CntrPar%F_LPFCornerFreq, 0.7, LocalVar%FP, LocalVar%iStatus, LocalVar%restart, objInst%instSecLPF) - LocalVar%PC_PitComTF = SecLPFilter(LocalVar%PC_PitComT, LocalVar%DT, CntrPar%F_LPFCornerFreq*0.25, 0.7, LocalVar%FP, LocalVar%iStatus, LocalVar%restart, objInst%instSecLPF) + LocalVar%VS_LastGenTrqF = SecLPFilter(LocalVar%VS_LastGenTrq, LocalVar%DT, CntrPar%F_LPFCornerFreq, 0.7_DbKi, LocalVar%FP, LocalVar%iStatus, LocalVar%restart, objInst%instSecLPF) + LocalVar%PC_PitComTF = SecLPFilter(LocalVar%PC_PitComT, LocalVar%DT, CntrPar%F_LPFCornerFreq*0.25, 0.7_DbKi, LocalVar%FP, LocalVar%iStatus, LocalVar%restart, objInst%instSecLPF) END SUBROUTINE PreFilterMeasuredSignals END MODULE Filters \ No newline at end of file From 52492d3ec9432e306c927dac2e3666ac4c7a2bf1 Mon Sep 17 00:00:00 2001 From: Nikhar Abbas Date: Wed, 22 Dec 2021 08:20:25 -0700 Subject: [PATCH 040/218] Add filtered signals and WE_Vw to debug varrs --- ROSCO/rosco_registry/rosco_types.yaml | 18 +++++++++++++++++- ROSCO/src/ControllerBlocks.f90 | 2 +- ROSCO/src/DISCON.F90 | 2 +- ROSCO/src/Filters.f90 | 10 ++++++++-- ROSCO/src/ROSCO_IO.f90 | 19 ++++++++++++------- ROSCO/src/ROSCO_Types.f90 | 5 +++++ 6 files changed, 44 insertions(+), 12 deletions(-) diff --git a/ROSCO/rosco_registry/rosco_types.yaml b/ROSCO/rosco_registry/rosco_types.yaml index 13ebd35b..400ea83c 100644 --- a/ROSCO/rosco_registry/rosco_types.yaml +++ b/ROSCO/rosco_registry/rosco_types.yaml @@ -918,12 +918,28 @@ DebugVariables: WE_Vt: <<: *real description: Turbulent wind speed component in WSE [m/s] + WE_Vw: + <<: *real + description: Estimated wind speed in WSE [m/s] WE_lambda: <<: *real description: TSR in WSE [rad] PC_PICommand: <<: *real - description: Commanded collective pitch from pitch PI controller [rad] + description: Commanded collective pitch from pitch PI controller [rad] + GenSpeedF: + <<: *real + description: Filtered generator speed [rad/s] + RotSpeedF: + <<: *real + description: Filtered rotor speed [rad/s] + NacIMU_FA_AccF: + <<: *real + description: Filtered NacIMU_FA_Acc [rad/s] + FA_AccF: + <<: *real + description: Filtered FA_Acc [m/s] + ErrorVariables: size_avcMSG: diff --git a/ROSCO/src/ControllerBlocks.f90 b/ROSCO/src/ControllerBlocks.f90 index b8031706..a025f0ca 100644 --- a/ROSCO/src/ControllerBlocks.f90 +++ b/ROSCO/src/ControllerBlocks.f90 @@ -323,7 +323,7 @@ SUBROUTINE WindSpeedEstimator(LocalVar, CntrPar, objInst, PerfData, DebugVar, Er ! Filter wind speed at hub height as directly passed from OpenFAST LocalVar%WE_Vw = LPFilter(LocalVar%HorWindV, LocalVar%DT, CntrPar%F_WECornerFreq, LocalVar%FP, LocalVar%iStatus, LocalVar%restart, objInst%instLPF) ENDIF - + DebugVar%WE_Vw = LocalVar%WE_Vw ! Add RoutineName to error message IF (ErrVar%aviFAIL < 0) THEN ErrVar%ErrMsg = RoutineName//':'//TRIM(ErrVar%ErrMsg) diff --git a/ROSCO/src/DISCON.F90 b/ROSCO/src/DISCON.F90 index ecafed9f..07c0ad38 100644 --- a/ROSCO/src/DISCON.F90 +++ b/ROSCO/src/DISCON.F90 @@ -77,7 +77,7 @@ SUBROUTINE DISCON(avrSWAP, aviFAIL, accINFILE, avcOUTNAME, avcMSG) BIND (C, NAME CALL SetParameters(avrSWAP, accINFILE, SIZE(avcMSG), CntrPar, LocalVar, objInst, PerfData, ErrVar) ! Filter signals -CALL PreFilterMeasuredSignals(CntrPar, LocalVar, objInst, ErrVar) +CALL PreFilterMeasuredSignals(CntrPar, LocalVar, DebugVar, objInst, ErrVar) IF (((LocalVar%iStatus >= 0) .OR. (LocalVar%iStatus <= -8)) .AND. (ErrVar%aviFAIL >= 0)) THEN ! Only compute control calculations if no error has occurred and we are not on the last time step IF ((LocalVar%iStatus == -8) .AND. (ErrVar%aviFAIL >= 0)) THEN ! Write restart files diff --git a/ROSCO/src/Filters.f90 b/ROSCO/src/Filters.f90 index 1b00968b..e2a99f94 100644 --- a/ROSCO/src/Filters.f90 +++ b/ROSCO/src/Filters.f90 @@ -219,13 +219,14 @@ REAL(DbKi) FUNCTION NotchFilter(InputSignal, DT, omega, betaNum, betaDen, FP, iS END FUNCTION NotchFilter !------------------------------------------------------------------------------------------------------------------------------- - SUBROUTINE PreFilterMeasuredSignals(CntrPar, LocalVar, objInst, ErrVar) + SUBROUTINE PreFilterMeasuredSignals(CntrPar, LocalVar, DebugVar, objInst, ErrVar) ! Prefilter measured wind turbine signals to separate the filtering from the actual control actions - USE ROSCO_Types, ONLY : ControlParameters, LocalVariables, ObjectInstances, ErrorVariables + USE ROSCO_Types, ONLY : ControlParameters, LocalVariables, DebugVariables, ObjectInstances, ErrorVariables TYPE(ControlParameters), INTENT(INOUT) :: CntrPar TYPE(LocalVariables), INTENT(INOUT) :: LocalVar + TYPE(DebugVariables), INTENT(INOUT) :: DebugVar TYPE(ObjectInstances), INTENT(INOUT) :: objInst TYPE(ErrorVariables), INTENT(INOUT) :: ErrVar @@ -271,5 +272,10 @@ SUBROUTINE PreFilterMeasuredSignals(CntrPar, LocalVar, objInst, ErrVar) LocalVar%VS_LastGenTrqF = SecLPFilter(LocalVar%VS_LastGenTrq, LocalVar%DT, CntrPar%F_LPFCornerFreq, 0.7_DbKi, LocalVar%FP, LocalVar%iStatus, LocalVar%restart, objInst%instSecLPF) LocalVar%PC_PitComTF = SecLPFilter(LocalVar%PC_PitComT, LocalVar%DT, CntrPar%F_LPFCornerFreq*0.25, 0.7_DbKi, LocalVar%FP, LocalVar%iStatus, LocalVar%restart, objInst%instSecLPF) + ! Debug Variables + DebugVar%GenSpeedF = LocalVar%GenSpeedF + DebugVar%RotSpeedF = LocalVar%RotSpeedF + DebugVar%NacIMU_FA_AccF = LocalVar%NacIMU_FA_AccF + DebugVar%FA_AccF = LocalVar%FA_AccF END SUBROUTINE PreFilterMeasuredSignals END MODULE Filters \ No newline at end of file diff --git a/ROSCO/src/ROSCO_IO.f90 b/ROSCO/src/ROSCO_IO.f90 index cbc9e91b..ce7ab4d5 100644 --- a/ROSCO/src/ROSCO_IO.f90 +++ b/ROSCO/src/ROSCO_IO.f90 @@ -379,7 +379,7 @@ SUBROUTINE Debug(LocalVar, CntrPar, DebugVar, avrSWAP, RootName, size_avcOUTNAME CHARACTER(15), ALLOCATABLE :: LocalVarOutStrings(:) REAL(DbKi), ALLOCATABLE :: LocalVarOutData(:) - nDebugOuts = 8 + nDebugOuts = 13 Allocate(DebugOutData(nDebugOuts)) Allocate(DebugOutStrings(nDebugOuts)) Allocate(DebugOutUnits(nDebugOuts)) @@ -389,12 +389,19 @@ SUBROUTINE Debug(LocalVar, CntrPar, DebugVar, avrSWAP, RootName, size_avcOUTNAME DebugOutData(4) = DebugVar%WE_t DebugOutData(5) = DebugVar%WE_Vm DebugOutData(6) = DebugVar%WE_Vt - DebugOutData(7) = DebugVar%WE_lambda - DebugOutData(8) = DebugVar%PC_PICommand + DebugOutData(7) = DebugVar%WE_Vw + DebugOutData(8) = DebugVar%WE_lambda + DebugOutData(9) = DebugVar%PC_PICommand + DebugOutData(10) = DebugVar%GenSpeedF + DebugOutData(11) = DebugVar%RotSpeedF + DebugOutData(12) = DebugVar%NacIMU_FA_AccF + DebugOutData(13) = DebugVar%FA_AccF DebugOutStrings = [CHARACTER(15) :: 'WE_Cp', 'WE_b', 'WE_w', 'WE_t', 'WE_Vm', & - 'WE_Vt', 'WE_lambda', 'PC_PICommand'] + 'WE_Vt', 'WE_Vw', 'WE_lambda', 'PC_PICommand', 'GenSpeedF', & + 'RotSpeedF', 'NacIMU_FA_AccF', 'FA_AccF'] DebugOutUnits = [CHARACTER(15) :: '[-]', '[-]', '[-]', '[-]', '[m/s]', & - '[m/s]', '[rad]', '[rad]'] + '[m/s]', '[m/s]', '[rad]', '[rad]', '[rad/s]', & + '[rad/s]', '[rad/s]', '[m/s]'] nLocalVars = 69 Allocate(LocalVarOutData(nLocalVars)) Allocate(LocalVarOutStrings(nLocalVars)) @@ -483,8 +490,6 @@ SUBROUTINE Debug(LocalVar, CntrPar, DebugVar, avrSWAP, RootName, size_avcOUTNAME 'FA_AccF', 'Flp_Angle', 'RootMyb_Last', 'ACC_INFILE_SIZE'] ! Initialize debug file IF ((LocalVar%iStatus == 0) .OR. (LocalVar%iStatus == -9)) THEN ! .TRUE. if we're on the first call to the DLL - ! If we're debugging, open the debug file and write the header: - ! Note that the headers will be Truncated to 10 characters!! IF (CntrPar%LoggingLevel > 0) THEN OPEN(unit=UnDb, FILE=RootName(1: size_avcOUTNAME-5)//'RO.dbg') WRITE(UnDb, *) 'Generated on '//CurDate()//' at '//CurTime()//' using ROSCO-'//TRIM(rosco_version) diff --git a/ROSCO/src/ROSCO_Types.f90 b/ROSCO/src/ROSCO_Types.f90 index 80b0c50f..2cb3c088 100644 --- a/ROSCO/src/ROSCO_Types.f90 +++ b/ROSCO/src/ROSCO_Types.f90 @@ -273,8 +273,13 @@ MODULE ROSCO_Types REAL(DbKi) :: WE_t ! Torque that WSE uses [-] REAL(DbKi) :: WE_Vm ! Mean wind speed component in WSE [m/s] REAL(DbKi) :: WE_Vt ! Turbulent wind speed component in WSE [m/s] + REAL(DbKi) :: WE_Vw ! Estimated wind speed in WSE [m/s] REAL(DbKi) :: WE_lambda ! TSR in WSE [rad] REAL(DbKi) :: PC_PICommand ! Commanded collective pitch from pitch PI controller [rad] + REAL(DbKi) :: GenSpeedF ! Filtered generator speed [rad/s] + REAL(DbKi) :: RotSpeedF ! Filtered rotor speed [rad/s] + REAL(DbKi) :: NacIMU_FA_AccF ! Filtered NacIMU_FA_Acc [rad/s] + REAL(DbKi) :: FA_AccF ! Filtered FA_Acc [m/s] END TYPE DebugVariables TYPE, PUBLIC :: ErrorVariables From 7cb1151cca30709fa5a7ea906f2e09d2570a4f3a Mon Sep 17 00:00:00 2001 From: Nikhar Abbas Date: Wed, 22 Dec 2021 08:21:43 -0700 Subject: [PATCH 041/218] cd for regtest --- .github/workflows/CI_rosco-pytools.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/CI_rosco-pytools.yml b/.github/workflows/CI_rosco-pytools.yml index ad8b8e12..0d399512 100644 --- a/.github/workflows/CI_rosco-pytools.yml +++ b/.github/workflows/CI_rosco-pytools.yml @@ -164,4 +164,5 @@ jobs: # Regression testing - name: Run regression testing run: | + cd ROSCO_testing python regtest.py From a2d6de45afe47a22512ba0287c63f6fe076b8c95 Mon Sep 17 00:00:00 2001 From: Nikhar Abbas Date: Wed, 22 Dec 2021 10:08:52 -0700 Subject: [PATCH 042/218] Check logging level before calling debug --- ROSCO/src/DISCON.F90 | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/ROSCO/src/DISCON.F90 b/ROSCO/src/DISCON.F90 index 07c0ad38..ef8e46d6 100644 --- a/ROSCO/src/DISCON.F90 +++ b/ROSCO/src/DISCON.F90 @@ -67,7 +67,9 @@ SUBROUTINE DISCON(avrSWAP, aviFAIL, accINFILE, avcOUTNAME, avcMSG) BIND (C, NAME ! Check for restart IF ( (NINT(avrSWAP(1)) == -9) .AND. (aviFAIL >= 0)) THEN ! Read restart files CALL ReadRestartFile(avrSWAP, LocalVar, CntrPar, objInst, PerfData, RootName, SIZE(avcOUTNAME), ErrVar) - CALL Debug(LocalVar, CntrPar, DebugVar, avrSWAP, RootName, SIZE(avcOUTNAME)) + IF ( CntrPar%LoggingLevel > 0 ) THEN + CALL Debug(LocalVar, CntrPar, DebugVar, avrSWAP, RootName, SIZE(avcOUTNAME)) + END IF END IF ! Read avrSWAP array into derived types/variables @@ -98,9 +100,11 @@ SUBROUTINE DISCON(avrSWAP, aviFAIL, accINFILE, avcOUTNAME, avcMSG) BIND (C, NAME IF (CntrPar%Flp_Mode > 0) THEN CALL FlapControl(avrSWAP, CntrPar, LocalVar, objInst) END IF - - CALL Debug(LocalVar, CntrPar, DebugVar, avrSWAP, RootName, SIZE(avcOUTNAME)) - + + IF ( CntrPar%LoggingLevel > 0 ) THEN + CALL Debug(LocalVar, CntrPar, DebugVar, avrSWAP, RootName, SIZE(avcOUTNAME)) + END IF + END IF From 2ab7de67c7f6f869d5001a8dcee9bf40180371d3 Mon Sep 17 00:00:00 2001 From: Nikhar Abbas Date: Wed, 22 Dec 2021 12:48:06 -0700 Subject: [PATCH 043/218] add fl_pitcom and pc_minpit to debugvars --- ROSCO/rosco_registry/rosco_types.yaml | 6 ++++++ ROSCO/src/Controllers.f90 | 3 ++- ROSCO/src/ROSCO_IO.f90 | 10 +++++++--- ROSCO/src/ROSCO_Types.f90 | 2 ++ 4 files changed, 17 insertions(+), 4 deletions(-) diff --git a/ROSCO/rosco_registry/rosco_types.yaml b/ROSCO/rosco_registry/rosco_types.yaml index 400ea83c..2bd1e4f0 100644 --- a/ROSCO/rosco_registry/rosco_types.yaml +++ b/ROSCO/rosco_registry/rosco_types.yaml @@ -939,6 +939,12 @@ DebugVariables: FA_AccF: <<: *real description: Filtered FA_Acc [m/s] + Fl_PitCom: + <<: *real + description: Floating contribution to the pitch command [rad] + PC_MinPit: + <<: *real + description: Minimum blade pitch angle [rad] ErrorVariables: diff --git a/ROSCO/src/Controllers.f90 b/ROSCO/src/Controllers.f90 index 05b99692..21e5fce8 100644 --- a/ROSCO/src/Controllers.f90 +++ b/ROSCO/src/Controllers.f90 @@ -80,11 +80,12 @@ SUBROUTINE PitchControl(avrSWAP, CntrPar, LocalVar, objInst, DebugVar, ErrVar) ELSE LocalVar%PC_MinPit = CntrPar%PC_FinePit ENDIF - + DebugVar%PC_MinPit = LocalVar%PC_MinPit ! FloatingFeedback IF (CntrPar%Fl_Mode > 0) THEN LocalVar%Fl_PitCom = FloatingFeedback(LocalVar, CntrPar, objInst) + DebugVar%FL_PitCom = LocalVar%Fl_PitCom LocalVar%PC_PitComT = LocalVar%PC_PitComT + LocalVar%Fl_PitCom ENDIF diff --git a/ROSCO/src/ROSCO_IO.f90 b/ROSCO/src/ROSCO_IO.f90 index ce7ab4d5..10dd30ab 100644 --- a/ROSCO/src/ROSCO_IO.f90 +++ b/ROSCO/src/ROSCO_IO.f90 @@ -379,7 +379,7 @@ SUBROUTINE Debug(LocalVar, CntrPar, DebugVar, avrSWAP, RootName, size_avcOUTNAME CHARACTER(15), ALLOCATABLE :: LocalVarOutStrings(:) REAL(DbKi), ALLOCATABLE :: LocalVarOutData(:) - nDebugOuts = 13 + nDebugOuts = 15 Allocate(DebugOutData(nDebugOuts)) Allocate(DebugOutStrings(nDebugOuts)) Allocate(DebugOutUnits(nDebugOuts)) @@ -396,12 +396,16 @@ SUBROUTINE Debug(LocalVar, CntrPar, DebugVar, avrSWAP, RootName, size_avcOUTNAME DebugOutData(11) = DebugVar%RotSpeedF DebugOutData(12) = DebugVar%NacIMU_FA_AccF DebugOutData(13) = DebugVar%FA_AccF + DebugOutData(14) = DebugVar%Fl_PitCom + DebugOutData(15) = DebugVar%PC_MinPit DebugOutStrings = [CHARACTER(15) :: 'WE_Cp', 'WE_b', 'WE_w', 'WE_t', 'WE_Vm', & 'WE_Vt', 'WE_Vw', 'WE_lambda', 'PC_PICommand', 'GenSpeedF', & - 'RotSpeedF', 'NacIMU_FA_AccF', 'FA_AccF'] + 'RotSpeedF', 'NacIMU_FA_AccF', 'FA_AccF', 'Fl_PitCom', 'PC_MinPit' & + ] DebugOutUnits = [CHARACTER(15) :: '[-]', '[-]', '[-]', '[-]', '[m/s]', & '[m/s]', '[m/s]', '[rad]', '[rad]', '[rad/s]', & - '[rad/s]', '[rad/s]', '[m/s]'] + '[rad/s]', '[rad/s]', '[m/s]', '[rad]', '[rad]' & + ] nLocalVars = 69 Allocate(LocalVarOutData(nLocalVars)) Allocate(LocalVarOutStrings(nLocalVars)) diff --git a/ROSCO/src/ROSCO_Types.f90 b/ROSCO/src/ROSCO_Types.f90 index 2cb3c088..857091ba 100644 --- a/ROSCO/src/ROSCO_Types.f90 +++ b/ROSCO/src/ROSCO_Types.f90 @@ -280,6 +280,8 @@ MODULE ROSCO_Types REAL(DbKi) :: RotSpeedF ! Filtered rotor speed [rad/s] REAL(DbKi) :: NacIMU_FA_AccF ! Filtered NacIMU_FA_Acc [rad/s] REAL(DbKi) :: FA_AccF ! Filtered FA_Acc [m/s] + REAL(DbKi) :: Fl_PitCom ! Floating contribution to the pitch command [rad] + REAL(DbKi) :: PC_MinPit ! Minimum blade pitch angle [rad] END TYPE DebugVariables TYPE, PUBLIC :: ErrorVariables From 1f68bd52896413f7f1aa39dd89f4a4f9dc4421ae Mon Sep 17 00:00:00 2001 From: dzalkind Date: Wed, 22 Dec 2021 16:03:16 -0700 Subject: [PATCH 044/218] Turn runFAST into a class --- ROSCO_toolbox/ofTools/case_gen/run_FAST.py | 282 +++++++++++---------- 1 file changed, 150 insertions(+), 132 deletions(-) diff --git a/ROSCO_toolbox/ofTools/case_gen/run_FAST.py b/ROSCO_toolbox/ofTools/case_gen/run_FAST.py index 26cc8a22..36a005cf 100644 --- a/ROSCO_toolbox/ofTools/case_gen/run_FAST.py +++ b/ROSCO_toolbox/ofTools/case_gen/run_FAST.py @@ -7,7 +7,7 @@ from ROSCO_toolbox.ofTools.case_gen.runFAST_pywrapper import runFAST_pywrapper, runFAST_pywrapper_batch from ROSCO_toolbox.ofTools.case_gen.CaseGen_IEC import CaseGen_IEC from ROSCO_toolbox.ofTools.case_gen.CaseGen_General import CaseGen_General -from ROSCO_toolbox.ofTools.case_gen.CaseLibrary import power_curve, set_channels, find_max_group, sweep_rated_torque, load_tuning_yaml, simp_step +from ROSCO_toolbox.ofTools.case_gen.CaseLibrary import power_curve, set_channels, find_max_group, sweep_rated_torque, load_tuning_yaml, simp_step, steps from wisdem.commonse.mpi_tools import MPI import sys, os, platform import numpy as np @@ -20,174 +20,192 @@ # Globals this_dir = os.path.dirname(os.path.abspath(__file__)) tune_case_dir = os.path.realpath(os.path.join(this_dir,'../../../Tune_Cases')) +rosco_dir = os.path.realpath(os.path.join(this_dir,'../../..')) +class run_FAST_ROSCO(): -def run_FAST(tuning_yaml,wind_case_fcn,control_sweep_fcn,save_dir,n_cores=1): - # set up run directory - if control_sweep_fcn: - sweep_name = control_sweep_fcn.__name__ - else: - sweep_name = 'base' + def __init__(self): - turbine_name = os.path.split(tuning_yaml)[-1].split('.')[0] - run_dir = os.path.join(save_dir,turbine_name,wind_case_fcn.__name__,sweep_name) + # Set default parameters + self.tuning_yaml = os.path.join(tune_case_dir,'IEA15MW.yaml') + self.wind_case_fcn = power_curve + self.wind_case_opts = {} + self.control_sweep_fcn = None + self.save_dir = os.path.join(rosco_dir,'outputs') + self.n_cores = 1 - - # Start with tuning yaml definition of controller - if not os.path.isabs(tuning_yaml): - tuning_yaml = os.path.join(tune_case_dir,tuning_yaml) - - - # Load yaml file - inps = load_rosco_yaml(tuning_yaml) - path_params = inps['path_params'] - turbine_params = inps['turbine_params'] - controller_params = inps['controller_params'] - - # Instantiate turbine, controller, and file processing classes - turbine = ROSCO_turbine.Turbine(turbine_params) - controller = ROSCO_controller.Controller(controller_params) - - # Load turbine data from OpenFAST and rotor performance text file - cp_filename = os.path.join(tune_case_dir,path_params['FAST_directory'],path_params['rotor_performance_filename']) - turbine.load_from_fast(path_params['FAST_InputFile'], \ - os.path.join(tune_case_dir,path_params['FAST_directory']), \ - dev_branch=True,rot_source='txt',\ - txt_filename=cp_filename) - - # tune base controller defined by the yaml - controller.tune_controller(turbine) - - # Apply all discon variables as case inputs - discon_vt = ROSCO_utilities.DISCON_dict(turbine, controller, txt_filename=cp_filename) - control_base_case = {} - for discon_input in discon_vt: - control_base_case[('DISCON_in',discon_input)] = {'vals': [discon_vt[discon_input]], 'group': 0} - - # Set up wind case - case_inputs = wind_case_fcn(run_dir) - case_inputs.update(control_base_case) - - # Specify rosco controller dylib - rosco_dll = '/Users/dzalkind/Tools/ROSCO/ROSCO/build/libdiscon.dylib' #'/Users/dzalkind/Tools/ROSCO_toolbox/ROSCO/build/libdiscon.dylib' - - if not rosco_dll: # use WEIS ROSCO - run_dir1 = os.path.dirname( os.path.dirname( os.path.dirname( os.path.realpath(__file__) ) ) ) + os.sep - if platform.system() == 'Windows': - rosco_dll = os.path.join(run_dir1, 'local/lib/libdiscon.dll') - elif platform.system() == 'Darwin': - rosco_dll = os.path.join(run_dir1, 'local/lib/libdiscon.dylib') + def run_FAST(self): + # set up run directory + if self.control_sweep_fcn: + sweep_name = self.control_sweep_fcn.__name__ else: - rosco_dll = os.path.join(run_dir1, 'local/lib/libdiscon.so') - - case_inputs[('ServoDyn','DLL_FileName')] = {'vals': [rosco_dll], 'group': 0} + sweep_name = 'base' - # Sweep control parameter - if control_sweep_fcn: - case_inputs_control = control_sweep_fcn(tuning_yaml,find_max_group(case_inputs)+1) - sweep_name = control_sweep_fcn.__name__ - case_inputs.update(case_inputs_control) - else: - sweep_name = 'base' + turbine_name = os.path.split(self.tuning_yaml)[-1].split('.')[0] + run_dir = os.path.join(self.save_dir,turbine_name,self.wind_case_fcn.__name__,sweep_name) - - # Generate cases - case_list, case_name_list = CaseGen_General(case_inputs, dir_matrix=run_dir, namebase=turbine_name) - channels = set_channels() - - # Management of parallelization, leave in for now - if MPI: - from wisdem.commonse.mpi_tools import map_comm_heirarchical, subprocessor_loop, subprocessor_stop - n_OF_runs = len(case_list) - - available_cores = MPI.COMM_WORLD.Get_size() - n_parallel_OFruns = np.min([available_cores - 1, n_OF_runs]) - comm_map_down, comm_map_up, color_map = map_comm_heirarchical(1, n_parallel_OFruns) - sys.stdout.flush() + # Start with tuning yaml definition of controller + if not os.path.isabs(self.tuning_yaml): + self.tuning_yaml = os.path.join(tune_case_dir,self.tuning_yaml) + + + # Load yaml file + inps = load_rosco_yaml(self.tuning_yaml) + path_params = inps['path_params'] + turbine_params = inps['turbine_params'] + controller_params = inps['controller_params'] + + # Instantiate turbine, controller, and file processing classes + turbine = ROSCO_turbine.Turbine(turbine_params) + controller = ROSCO_controller.Controller(controller_params) + + # Load turbine data from OpenFAST and rotor performance text file + cp_filename = os.path.join(tune_case_dir,path_params['rotor_performance_filename']) + turbine.load_from_fast(path_params['FAST_InputFile'], \ + os.path.join(tune_case_dir,path_params['FAST_directory']), \ + dev_branch=True,rot_source='txt',\ + txt_filename=cp_filename) + + # tune base controller defined by the yaml + controller.tune_controller(turbine) + + # Apply all discon variables as case inputs + discon_vt = ROSCO_utilities.DISCON_dict(turbine, controller, txt_filename=cp_filename) + control_base_case = {} + for discon_input in discon_vt: + control_base_case[('DISCON_in',discon_input)] = {'vals': [discon_vt[discon_input]], 'group': 0} + + # Set up wind case + case_inputs = self.wind_case_fcn(run_dir) + case_inputs.update(control_base_case) + + # Specify rosco controller dylib + rosco_dll = '/Users/dzalkind/Tools/ROSCO/ROSCO/build/libdiscon.dylib' #'/Users/dzalkind/Tools/ROSCO_toolbox/ROSCO/build/libdiscon.dylib' + + if not rosco_dll: # use WEIS ROSCO + run_dir1 = os.path.dirname( os.path.dirname( os.path.dirname( os.path.realpath(__file__) ) ) ) + os.sep + if platform.system() == 'Windows': + rosco_dll = os.path.join(run_dir1, 'local/lib/libdiscon.dll') + elif platform.system() == 'Darwin': + rosco_dll = os.path.join(run_dir1, 'local/lib/libdiscon.dylib') + else: + rosco_dll = os.path.join(run_dir1, 'local/lib/libdiscon.so') + case_inputs[('ServoDyn','DLL_FileName')] = {'vals': [rosco_dll], 'group': 0} - # Parallel file generation with MPI - if MPI: - comm = MPI.COMM_WORLD - rank = comm.Get_rank() - else: - rank = 0 - if rank == 0: + # Sweep control parameter + if self.control_sweep_fcn: + case_inputs_control = self.control_sweep_fcn(self.tuning_yaml,find_max_group(case_inputs)+1) + sweep_name = self.control_sweep_fcn.__name__ + case_inputs.update(case_inputs_control) + else: + sweep_name = 'base' - # Run FAST cases - fastBatch = runFAST_pywrapper_batch(FAST_ver='OpenFAST',dev_branch = True) - # Select Turbine Model - model_dir = os.path.join(os.path.dirname( os.path.dirname( os.path.realpath(__file__) ) ), '01_aeroelasticse/OpenFAST_models') - - # FAST_directory (relative to Tune_Dir/) - fastBatch.FAST_directory = os.path.realpath(os.path.join(tune_case_dir,path_params['FAST_directory'])) - fastBatch.FAST_InputFile = path_params['FAST_InputFile'] - fastBatch.channels = channels - fastBatch.FAST_runDirectory = run_dir - fastBatch.case_list = case_list - fastBatch.case_name_list = case_name_list - fastBatch.debug_level = 2 - fastBatch.FAST_exe = 'openfast' + + # Generate cases + case_list, case_name_list = CaseGen_General(case_inputs, dir_matrix=run_dir, namebase=turbine_name) + channels = set_channels() + + # Management of parallelization, leave in for now + if MPI: + from wisdem.commonse.mpi_tools import map_comm_heirarchical, subprocessor_loop, subprocessor_stop + n_OF_runs = len(case_list) + + available_cores = MPI.COMM_WORLD.Get_size() + n_parallel_OFruns = np.min([available_cores - 1, n_OF_runs]) + comm_map_down, comm_map_up, color_map = map_comm_heirarchical(1, n_parallel_OFruns) + sys.stdout.flush() + + # Parallel file generation with MPI if MPI: - fastBatch.run_mpi(comm_map_down) + comm = MPI.COMM_WORLD + rank = comm.Get_rank() else: - if n_cores == 1: - fastBatch.run_serial() + rank = 0 + if rank == 0: + + # Run FAST cases + fastBatch = runFAST_pywrapper_batch(FAST_ver='OpenFAST',dev_branch = True) + + # Select Turbine Model + model_dir = os.path.join(os.path.dirname( os.path.dirname( os.path.realpath(__file__) ) ), '01_aeroelasticse/OpenFAST_models') + + # FAST_directory (relative to Tune_Dir/) + fastBatch.FAST_directory = os.path.realpath(os.path.join(tune_case_dir,path_params['FAST_directory'])) + fastBatch.FAST_InputFile = path_params['FAST_InputFile'] + fastBatch.channels = channels + fastBatch.FAST_runDirectory = run_dir + fastBatch.case_list = case_list + fastBatch.case_name_list = case_name_list + fastBatch.debug_level = 2 + fastBatch.FAST_exe = 'openfast' + + if MPI: + fastBatch.run_mpi(comm_map_down) else: - fastBatch.run_multi(cores=n_cores) + if self.n_cores == 1: + fastBatch.run_serial() + else: + fastBatch.run_multi(cores=self.n_cores) - if MPI: - sys.stdout.flush() - if rank in comm_map_up.keys(): - subprocessor_loop(comm_map_up) + if MPI: + sys.stdout.flush() + if rank in comm_map_up.keys(): + subprocessor_loop(comm_map_up) + sys.stdout.flush() + + # Close signal to subprocessors + if rank == 0 and MPI: + subprocessor_stop(comm_map_down) sys.stdout.flush() - - # Close signal to subprocessors - if rank == 0 and MPI: - subprocessor_stop(comm_map_down) - sys.stdout.flush() if __name__ == "__main__": # Simulation config - sim_config = 6 - n_cores = 8 + sim_config = 1 + + r = run_FAST_ROSCO() + + wind_case_opts = {} if sim_config == 1: # FOCAL single wind speed testing - tuning_yaml = '/Users/dzalkind/Tools/ROSCO/Tune_Cases/IEA15MW_FOCAL.yaml' - wind_case = simp_step - sweep_mode = None - save_dir = '/Users/dzalkind/Projects/FOCAL/torque_274' + r.tuning_yaml = os.path.join(tune_case_dir,'IEA15MW.yaml') + r.wind_case = simp_step + r.sweep_mode = None + r.save_dir = '/Users/dzalkind/Tools/ROSCO/outputs' elif sim_config == 6: # FOCAL rated wind speed tuning - tuning_yaml = '/Users/dzalkind/Tools/ROSCO/Tune_Cases/IEA15MW_FOCAL.yaml' - wind_case = power_curve - sweep_mode = sweep_rated_torque - save_dir = '/Users/dzalkind/Projects/FOCAL/drop_torque' - - else: - raise Exception('This simulation configuration is not supported.') + r.tuning_yaml = os.path.join(tune_case_dir,'IEA15MW_FOCAL.yaml') + r.wind_case = power_curve + r.sweep_mode = sweep_rated_torque + r.save_dir = '/Users/dzalkind/Projects/FOCAL/drop_torque' + elif sim_config == 7: + # FOCAL rated wind speed tuning + r.tuning_yaml = os.path.join(tune_case_dir,'IEA15MW.yaml') + r.wind_case = steps + r.wind_case_opts = { + 'times': [200,300,400,500], + 'winds': [6,10,14,18] + } + r.sweep_mode = None + r.save_dir = '/Users/dzalkind/Tools/ROSCO/outputs' + else: + raise Exception('This simulation configuration is not supported.') - run_FAST(tuning_yaml,wind_case,sweep_mode,save_dir,n_cores=n_cores) - # # Options: simp, pwr_curve - # test_type = 'pwr_curve' + r.run_FAST() - # save_dir_list = [os.path.join(res_dir,tm,os.path.basename(dl).split('.')[0],test_type) \ - # for tm, dl in zip(turbine_mods,discon_list)] - # for tm, co, sd in zip(turbine_mods,discon_list,save_dir_list): - # run_Simp(tm,co,sd,n_cores=8) From 1b0b1c3b5a3e48ee619b2b232e5b32ac78c2769c Mon Sep 17 00:00:00 2001 From: dzalkind Date: Wed, 22 Dec 2021 16:04:10 -0700 Subject: [PATCH 045/218] Refactor/simplify CaseLibrary --- .gitignore | 3 + ROSCO_toolbox/ofTools/case_gen/CaseLibrary.py | 160 +++--------------- ROSCO_toolbox/ofTools/case_gen/run_FAST.py | 14 +- 3 files changed, 33 insertions(+), 144 deletions(-) diff --git a/.gitignore b/.gitignore index be2ed050..4bf20edd 100644 --- a/.gitignore +++ b/.gitignore @@ -84,3 +84,6 @@ ROSCO_testing/results/ *.autosave *.mat +# OpenFAST outputs +outputs/ + diff --git a/ROSCO_toolbox/ofTools/case_gen/CaseLibrary.py b/ROSCO_toolbox/ofTools/case_gen/CaseLibrary.py index 04746f82..9b3b93ba 100644 --- a/ROSCO_toolbox/ofTools/case_gen/CaseLibrary.py +++ b/ROSCO_toolbox/ofTools/case_gen/CaseLibrary.py @@ -66,21 +66,12 @@ def load_tuning_yaml(tuning_yaml): # ############################################################################################## -def power_curve(run_dir): - # Constant wind speed, multiple wind speeds, define below - - # Runtime - T_max = 400. - - # Run conditions - U = np.arange(4,14.5,.5).tolist() - U = np.linspace(9.5,12,num=16) - +def base_op_case(): case_inputs = {} - # simulation settings - case_inputs[("Fst","TMax")] = {'vals':[T_max], 'group':0} + case_inputs[("Fst","OutFileFmt")] = {'vals':[3], 'group':0} + # DOFs if False: case_inputs[("ElastoDyn","YawDOF")] = {'vals':['True'], 'group':0} @@ -100,9 +91,6 @@ def power_curve(run_dir): case_inputs[("ElastoDyn","PtfmRDOF")] = {'vals':['False'], 'group':0} case_inputs[("ElastoDyn","PtfmYDOF")] = {'vals':['False'], 'group':0} - # wind inflow - case_inputs[("InflowWind","WindType")] = {'vals':[1], 'group':0} - case_inputs[("InflowWind","HWindSpeed")] = {'vals':U, 'group':1} # Stop Generator from Turning Off case_inputs[('ServoDyn', 'GenTiStr')] = {'vals': ['True'], 'group': 0} @@ -130,24 +118,28 @@ def power_curve(run_dir): return case_inputs - # # Controller - # if rosco_dll: - # # Need to update this to ROSCO with power control!!! - # case_inputs[("ServoDyn","DLL_FileName")] = {'vals':[rosco_dll], 'group':0} +def power_curve(run_dir,**wind_case_opts): + # Constant wind speed, multiple wind speeds, define below - # # Control (DISCON) Inputs - # discon_vt = ROSCO_utilities.read_DISCON(discon_file) - # for discon_input in discon_vt: - # case_inputs[('DISCON_in',discon_input)] = {'vals': [discon_vt[discon_input]], 'group': 0} + # Runtime + T_max = 400. - # from weis.aeroelasticse.CaseGen_General import CaseGen_General - # case_list, case_name_list = CaseGen_General(case_inputs, dir_matrix=runDir, namebase=namebase) + # Run conditions + U = np.arange(4,14.5,.5).tolist() + U = np.linspace(9.5,12,num=16) - # channels = set_channels() - return case_list, case_name_list, channels + case_inputs = base_op_case() + # simulation settings + case_inputs[("Fst","TMax")] = {'vals':[T_max], 'group':0} + + # wind inflow + case_inputs[("InflowWind","WindType")] = {'vals':[1], 'group':0} + case_inputs[("InflowWind","HWindSpeed")] = {'vals':U, 'group':1} + + return case_inputs -def simp_step(run_dir): +def simp_step(run_dir,**wind_case_opts): # Set up cases for FIW-JIP project # 3.x in controller tuning register @@ -176,60 +168,17 @@ def simp_step(run_dir): step_wind_files.append(hh_step.filename) - case_inputs = {} + case_inputs = base_op_case() # simulation settings case_inputs[("Fst","TMax")] = {'vals':[T_max], 'group':0} case_inputs[("Fst","OutFileFmt")] = {'vals':[2], 'group':0} # case_inputs[("Fst","DT")] = {'vals':[1/80], 'group':0} - - # DOFs - # case_inputs[("ElastoDyn","YawDOF")] = {'vals':['True'], 'group':0} - # case_inputs[("ElastoDyn","FlapDOF1")] = {'vals':['False'], 'group':0} - # case_inputs[("ElastoDyn","FlapDOF2")] = {'vals':['False'], 'group':0} - # case_inputs[("ElastoDyn","EdgeDOF")] = {'vals':['False'], 'group':0} - # case_inputs[("ElastoDyn","DrTrDOF")] = {'vals':['False'], 'group':0} - # case_inputs[("ElastoDyn","GenDOF")] = {'vals':['True'], 'group':0} - # case_inputs[("ElastoDyn","TwFADOF1")] = {'vals':['False'], 'group':0} - # case_inputs[("ElastoDyn","TwFADOF2")] = {'vals':['False'], 'group':0} - # case_inputs[("ElastoDyn","TwSSDOF1")] = {'vals':['False'], 'group':0} - # case_inputs[("ElastoDyn","TwSSDOF2")] = {'vals':['False'], 'group':0} - # case_inputs[("ElastoDyn","PtfmSgDOF")] = {'vals':['False'], 'group':0} - # case_inputs[("ElastoDyn","PtfmHvDOF")] = {'vals':['False'], 'group':0} - # case_inputs[("ElastoDyn","PtfmPDOF")] = {'vals':['False'], 'group':0} - # case_inputs[("ElastoDyn","PtfmSwDOF")] = {'vals':['False'], 'group':0} - # case_inputs[("ElastoDyn","PtfmRDOF")] = {'vals':['False'], 'group':0} - # case_inputs[("ElastoDyn","PtfmYDOF")] = {'vals':['False'], 'group':0} # wind inflow case_inputs[("InflowWind","WindType")] = {'vals':[2], 'group':0} case_inputs[("InflowWind","Filename_Uni")] = {'vals':step_wind_files, 'group':1} - # Stop Generator from Turning Off - case_inputs[('ServoDyn', 'GenTiStr')] = {'vals': ['True'], 'group': 0} - case_inputs[('ServoDyn', 'GenTiStp')] = {'vals': ['True'], 'group': 0} - case_inputs[('ServoDyn', 'SpdGenOn')] = {'vals': [0.], 'group': 0} - case_inputs[('ServoDyn', 'TimGenOn')] = {'vals': [0.], 'group': 0} - case_inputs[('ServoDyn', 'GenModel')] = {'vals': [1], 'group': 0} - - - # AeroDyn - case_inputs[("AeroDyn15", "WakeMod")] = {'vals': [1], 'group': 0} - case_inputs[("AeroDyn15", "AFAeroMod")] = {'vals': [2], 'group': 0} - case_inputs[("AeroDyn15", "TwrPotent")] = {'vals': [0], 'group': 0} - case_inputs[("AeroDyn15", "TwrShadow")] = {'vals': ['False'], 'group': 0} - case_inputs[("AeroDyn15", "TwrAero")] = {'vals': ['False'], 'group': 0} - case_inputs[("AeroDyn15", "SkewMod")] = {'vals': [1], 'group': 0} - case_inputs[("AeroDyn15", "TipLoss")] = {'vals': ['True'], 'group': 0} - case_inputs[("AeroDyn15", "HubLoss")] = {'vals': ['True'], 'group': 0} - case_inputs[("AeroDyn15", "TanInd")] = {'vals': ['True'], 'group': 0} - case_inputs[("AeroDyn15", "AIDrag")] = {'vals': ['True'], 'group': 0} - case_inputs[("AeroDyn15", "TIDrag")] = {'vals': ['True'], 'group': 0} - case_inputs[("AeroDyn15", "IndToler")] = {'vals': [1.e-5], 'group': 0} - case_inputs[("AeroDyn15", "MaxIter")] = {'vals': [5000], 'group': 0} - case_inputs[("AeroDyn15", "UseBlCm")] = {'vals': ['True'], 'group': 0} - - # # Tune Floating Feedback Gain # if tune == 'fl_gain': @@ -295,7 +244,7 @@ def simp_step(run_dir): return case_inputs -def steps(discon_file,runDir, namebase,rosco_dll=''): +def single_steps(discon_file,runDir, namebase,rosco_dll=''): # Set up cases for FIW-JIP project # 3.x in controller tuning register @@ -331,76 +280,13 @@ def steps(discon_file,runDir, namebase,rosco_dll=''): step_wind_files.append(hh_step.filename) - case_inputs = {} - # simulation settings - case_inputs[("Fst","TMax")] = {'vals':[T_max], 'group':0} - case_inputs[("Fst","OutFileFmt")] = {'vals':[2], 'group':0} + case_inputs = base_op_case() - # DOFs - if True: - case_inputs[("ElastoDyn","YawDOF")] = {'vals':['False'], 'group':0} - case_inputs[("ElastoDyn","FlapDOF1")] = {'vals':['False'], 'group':0} - case_inputs[("ElastoDyn","FlapDOF2")] = {'vals':['False'], 'group':0} - case_inputs[("ElastoDyn","EdgeDOF")] = {'vals':['False'], 'group':0} - case_inputs[("ElastoDyn","DrTrDOF")] = {'vals':['False'], 'group':0} - case_inputs[("ElastoDyn","GenDOF")] = {'vals':['True'], 'group':0} - case_inputs[("ElastoDyn","TwFADOF1")] = {'vals':['False'], 'group':0} - case_inputs[("ElastoDyn","TwFADOF2")] = {'vals':['False'], 'group':0} - case_inputs[("ElastoDyn","TwSSDOF1")] = {'vals':['False'], 'group':0} - case_inputs[("ElastoDyn","TwSSDOF2")] = {'vals':['False'], 'group':0} - case_inputs[("ElastoDyn","PtfmSgDOF")] = {'vals':['False'], 'group':0} - case_inputs[("ElastoDyn","PtfmHvDOF")] = {'vals':['False'], 'group':0} - case_inputs[("ElastoDyn","PtfmPDOF")] = {'vals':['False'], 'group':0} - case_inputs[("ElastoDyn","PtfmSwDOF")] = {'vals':['False'], 'group':0} - case_inputs[("ElastoDyn","PtfmRDOF")] = {'vals':['False'], 'group':0} - case_inputs[("ElastoDyn","PtfmYDOF")] = {'vals':['False'], 'group':0} - # wind inflow case_inputs[("InflowWind","WindType")] = {'vals':[2], 'group':0} case_inputs[("InflowWind","Filename")] = {'vals':step_wind_files, 'group':1} - # Stop Generator from Turning Off - case_inputs[('ServoDyn', 'GenTiStr')] = {'vals': ['True'], 'group': 0} - case_inputs[('ServoDyn', 'GenTiStp')] = {'vals': ['True'], 'group': 0} - case_inputs[('ServoDyn', 'SpdGenOn')] = {'vals': [0.], 'group': 0} - case_inputs[('ServoDyn', 'TimGenOn')] = {'vals': [0.], 'group': 0} - case_inputs[('ServoDyn', 'GenModel')] = {'vals': [1], 'group': 0} - - - # AeroDyn - case_inputs[("AeroDyn15", "WakeMod")] = {'vals': [1], 'group': 0} - case_inputs[("AeroDyn15", "AFAeroMod")] = {'vals': [2], 'group': 0} - case_inputs[("AeroDyn15", "TwrPotent")] = {'vals': [0], 'group': 0} - case_inputs[("AeroDyn15", "TwrShadow")] = {'vals': ['False'], 'group': 0} - case_inputs[("AeroDyn15", "TwrAero")] = {'vals': ['False'], 'group': 0} - case_inputs[("AeroDyn15", "SkewMod")] = {'vals': [1], 'group': 0} - case_inputs[("AeroDyn15", "TipLoss")] = {'vals': ['True'], 'group': 0} - case_inputs[("AeroDyn15", "HubLoss")] = {'vals': ['True'], 'group': 0} - case_inputs[("AeroDyn15", "TanInd")] = {'vals': ['True'], 'group': 0} - case_inputs[("AeroDyn15", "AIDrag")] = {'vals': ['True'], 'group': 0} - case_inputs[("AeroDyn15", "TIDrag")] = {'vals': ['True'], 'group': 0} - case_inputs[("AeroDyn15", "IndToler")] = {'vals': [1.e-5], 'group': 0} - case_inputs[("AeroDyn15", "MaxIter")] = {'vals': [5000], 'group': 0} - case_inputs[("AeroDyn15", "UseBlCm")] = {'vals': ['True'], 'group': 0} - - # Controller - if rosco_dll: - # Need to update this to ROSCO with power control!!! - case_inputs[("ServoDyn","DLL_FileName")] = {'vals':[rosco_dll], 'group':0} - - # Control (DISCON) Inputs - discon_vt = ROSCO_utilities.read_DISCON(discon_file) - for discon_input in discon_vt: - case_inputs[('DISCON_in',discon_input)] = {'vals': [discon_vt[discon_input]], 'group': 0} - - from weis.aeroelasticse.CaseGen_General import CaseGen_General - case_list, case_name_list = CaseGen_General(case_inputs, dir_matrix=runDir, namebase=namebase) - - channels = set_channels() - - return case_list, case_name_list, channels - def sweep_pc_mode(cont_yaml,omega=np.linspace(.05,.35,8,endpoint=True).tolist(),zeta=[1.5],group=2): diff --git a/ROSCO_toolbox/ofTools/case_gen/run_FAST.py b/ROSCO_toolbox/ofTools/case_gen/run_FAST.py index 36a005cf..1bf93e9b 100644 --- a/ROSCO_toolbox/ofTools/case_gen/run_FAST.py +++ b/ROSCO_toolbox/ofTools/case_gen/run_FAST.py @@ -7,7 +7,7 @@ from ROSCO_toolbox.ofTools.case_gen.runFAST_pywrapper import runFAST_pywrapper, runFAST_pywrapper_batch from ROSCO_toolbox.ofTools.case_gen.CaseGen_IEC import CaseGen_IEC from ROSCO_toolbox.ofTools.case_gen.CaseGen_General import CaseGen_General -from ROSCO_toolbox.ofTools.case_gen.CaseLibrary import power_curve, set_channels, find_max_group, sweep_rated_torque, load_tuning_yaml, simp_step, steps +from ROSCO_toolbox.ofTools.case_gen import CaseLibrary as cl from wisdem.commonse.mpi_tools import MPI import sys, os, platform import numpy as np @@ -28,7 +28,7 @@ def __init__(self): # Set default parameters self.tuning_yaml = os.path.join(tune_case_dir,'IEA15MW.yaml') - self.wind_case_fcn = power_curve + self.wind_case_fcn = cl.power_curve self.wind_case_opts = {} self.control_sweep_fcn = None self.save_dir = os.path.join(rosco_dir,'outputs') @@ -96,7 +96,7 @@ def run_FAST(self): # Sweep control parameter if self.control_sweep_fcn: - case_inputs_control = self.control_sweep_fcn(self.tuning_yaml,find_max_group(case_inputs)+1) + case_inputs_control = self.control_sweep_fcn(self.tuning_yaml,cl.find_max_group(case_inputs)+1) sweep_name = self.control_sweep_fcn.__name__ case_inputs.update(case_inputs_control) else: @@ -106,7 +106,7 @@ def run_FAST(self): # Generate cases case_list, case_name_list = CaseGen_General(case_inputs, dir_matrix=run_dir, namebase=turbine_name) - channels = set_channels() + channels = cl.set_channels() # Management of parallelization, leave in for now if MPI: @@ -175,7 +175,7 @@ def run_FAST(self): if sim_config == 1: # FOCAL single wind speed testing r.tuning_yaml = os.path.join(tune_case_dir,'IEA15MW.yaml') - r.wind_case = simp_step + r.wind_case = cl.simp_step r.sweep_mode = None r.save_dir = '/Users/dzalkind/Tools/ROSCO/outputs' @@ -184,14 +184,14 @@ def run_FAST(self): # FOCAL rated wind speed tuning r.tuning_yaml = os.path.join(tune_case_dir,'IEA15MW_FOCAL.yaml') r.wind_case = power_curve - r.sweep_mode = sweep_rated_torque + r.sweep_mode = cl.sweep_rated_torque r.save_dir = '/Users/dzalkind/Projects/FOCAL/drop_torque' elif sim_config == 7: # FOCAL rated wind speed tuning r.tuning_yaml = os.path.join(tune_case_dir,'IEA15MW.yaml') - r.wind_case = steps + r.wind_case = cl.steps r.wind_case_opts = { 'times': [200,300,400,500], 'winds': [6,10,14,18] From 6c1e4dbf1bd18bd48fe48aadf49638fb110b8e3c Mon Sep 17 00:00:00 2001 From: "Nikhar J. Abbas" <40865984+nikhar-abbas@users.noreply.github.com> Date: Mon, 3 Jan 2022 11:09:39 -0700 Subject: [PATCH 046/218] Restart & registry (#99) * Convert WE saved variables to WE type * Put restart flag in localvars * Use saved filter params from LocalVar * save pitcomt last * Move IPC saved variables to localvars * Saved pi controller variables to localvar * Save RootMyb_Last to localvar * ROSCO_IO - initial commit. Include restart and debug functions * Use ROSCO IO and call restart functions * Remove debug from function.f90 * Save ACC Infile info * update for restart capabilities * add rosco_io with restart and debug functions * cleanup debug call * use registry generate types and IO * delete DFController * fix timestep mismatch * remove unnecessaray istatus check * close files * add reg test for restart * add restart option to run_openfast * add testing to CI, ignore generate files * fix fastcall * remove extra commas * specify gfortran-10 * testing flag cleanup * Use lv_strings to generate debug output * Revert "testing flag cleanup" This reverts commit 6f295563832413e96347acd82716f9aadac6d46c. * Revert "specify gfortran-10" This reverts commit 4c3154491523bcd542133ca2bce5803cdc94523f. * minor cleanup * Use kind from constants * Add some comments for clarity * put debug in if statements * separate reg tests from oother tests * Fl_Mode>0 * Remove hard coded values * Add filtered signals and WE_Vw to debug varrs * cd for regtest * Check logging level before calling debug * add fl_pitcom and pc_minpit to debugvars Co-authored-by: dzalkind --- .github/workflows/CI_rosco-pytools.yml | 10 +- .gitignore | 1 + ROSCO/CMakeLists.txt | 1 + ROSCO/rosco_registry/rosco_types.yaml | 313 ++++++++++- ROSCO/rosco_registry/write_registry.py | 317 ++++++++++- ROSCO/src/ControllerBlocks.f90 | 89 ++- ROSCO/src/Controllers.f90 | 105 ++-- ROSCO/src/DISCON.F90 | 26 +- ROSCO/src/Filters.f90 | 262 ++++----- ROSCO/src/Functions.f90 | 219 ++------ ROSCO/src/ROSCO_IO.f90 | 540 +++++++++++++++++++ ROSCO/src/ROSCO_Types.f90 | 449 ++++++++------- ROSCO/src/ReadSetParameters.f90 | 11 + ROSCO_testing/regtest.py | 124 +++++ ROSCO_toolbox/ofTools/fast_io/FAST_reader.py | 1 + ROSCO_toolbox/ofTools/util/FileTools.py | 1 + ROSCO_toolbox/utilities.py | 7 +- 17 files changed, 1804 insertions(+), 672 deletions(-) create mode 100644 ROSCO/src/ROSCO_IO.f90 create mode 100644 ROSCO_testing/regtest.py diff --git a/.github/workflows/CI_rosco-pytools.yml b/.github/workflows/CI_rosco-pytools.yml index 77a029ab..0d399512 100644 --- a/.github/workflows/CI_rosco-pytools.yml +++ b/.github/workflows/CI_rosco-pytools.yml @@ -155,8 +155,14 @@ jobs: run: | conda install openfast==3.0.0 - # Run Testing - - name: Run testing + # Run ROSCO Testing + - name: Run ROSCO testing run: | cd ROSCO_testing python ROSCO_testing.py + + # Regression testing + - name: Run regression testing + run: | + cd ROSCO_testing + python regtest.py diff --git a/.gitignore b/.gitignore index 524a244a..be2ed050 100644 --- a/.gitignore +++ b/.gitignore @@ -11,6 +11,7 @@ Source/Release/ *build* Makefile */install/* +*test_out* # Archive Scripts/CompileDISCONHereCopyRun\.cmd diff --git a/ROSCO/CMakeLists.txt b/ROSCO/CMakeLists.txt index 262d232b..c9ad7aa3 100644 --- a/ROSCO/CMakeLists.txt +++ b/ROSCO/CMakeLists.txt @@ -36,6 +36,7 @@ set(SOURCES src/Filters.f90 src/Functions.f90 src/ReadSetParameters.f90 + src/ROSCO_IO.f90 ) if (${CMAKE_Fortran_COMPILER_ID} STREQUAL "GNU") diff --git a/ROSCO/rosco_registry/rosco_types.yaml b/ROSCO/rosco_registry/rosco_types.yaml index 418dee80..2bd1e4f0 100644 --- a/ROSCO/rosco_registry/rosco_types.yaml +++ b/ROSCO/rosco_registry/rosco_types.yaml @@ -8,7 +8,7 @@ default_types: real: &real type: real description: - shape: 1 # Use this if a higher-dimensional allocatable array (shape:2 --> REAL(8), DIMESION(:,:), ALLOCATABLE) + dimension: # Use this if a higher-dimensional allocatable array (dimension:(:,:) --> REAL(8), DIMESION(:,:), ALLOCATABLE) size: 0 # Use this if the type IS an array (size:3 --> REAL(8), BldPitch(3)) allocatable: False equals: @@ -17,6 +17,8 @@ default_types: description: allocatable: False size: 0 + length: + dimension: equals: logical: &logical type: logical @@ -43,6 +45,12 @@ default_types: description: size: 0 equals: + type: &derived_type + type: derived_type + id: + equals: + description: + ControlParameters: @@ -256,6 +264,7 @@ ControlParameters: PerfFileName: <<: *character description: File containing rotor performance tables (Cp,Ct,Cq) + length: 1024 PerfTableSize: <<: *integer description: Size of rotor performance tables, first number refers to number of blade pitch angles, second number referse to number of tip-speed ratios @@ -368,6 +377,7 @@ ControlParameters: OL_Filename: <<: *character description: Input file with open loop timeseries + length: 1024 OL_Mode: <<: *integer description: Open loop control mode {0 - no open loop control, 1 - open loop control vs. time, 2 - open loop control vs. wind speed} @@ -402,7 +412,7 @@ ControlParameters: OL_Channels: <<: *real allocatable: True - shape: 2 + dimension: (:,:) description: Open loop channels in timeseries # Calculated @@ -416,46 +426,235 @@ ControlParameters: <<: *real description: Minimum torque at the beginning of the below-rated region 2, [Nm] +WE: + om_r: + <<: *real + description: Estimated rotor speed [rad/s] + v_t: + <<: *real + description: Estimated wind speed, turbulent component [m/s] + v_m: + <<: *real + description: Estimated wind speed, 10-minute averaged [m/s] + v_h: + <<: *real + description: Combined estimated wind speed [m/s] + P: + <<: *real + dimension: (3,3) + description: Covariance estiamte + xh: + <<: *real + dimension: (3,1) + description: Estimated state matrix + K: + <<: *real + dimension: (3,1) + description: Kalman gain matrix + +FilterParameters: + lpf1_a1: + <<: *real + dimension: (99) + description: First order filter - Denominator coefficient 1 + lpf1_a0: + <<: *real + dimension: (99) + description: First order filter - Denominator coefficient 0 + lpf1_b1: + <<: *real + dimension: (99) + description: First order filter - Numerator coefficient 1 + lpf1_b0: + <<: *real + dimension: (99) + description: First order filter - Numerator coefficient 0 + lpf1_InputSignalLast: + <<: *real + dimension: (99) + description: First order filter - Previous input + lpf1_OutputSignalLast: + <<: *real + dimension: (99) + description: First order filter - Previous output + lpf2_a2: + <<: *real + dimension: (99) + description: Second order filter - Denominator coefficient 2 + lpf2_a1: + <<: *real + dimension: (99) + description: Second order filter - Denominator coefficient 1 + lpf2_a0: + <<: *real + dimension: (99) + description: Second order filter - Denominator coefficient 0 + lpf2_b2: + <<: *real + dimension: (99) + description: Second order filter - Numerator coefficient 2 + lpf2_b1: + <<: *real + dimension: (99) + description: Second order filter - Numerator coefficient 1 + lpf2_b0: + <<: *real + dimension: (99) + description: Second order filter - Numerator coefficient 0 + lpf2_InputSignalLast2: + <<: *real + dimension: (99) + description: Second order filter - Previous input 2 + lpf2_OutputSignalLast2: + <<: *real + dimension: (99) + description: Second order filter - Previous output 2 + lpf2_InputSignalLast1: + <<: *real + dimension: (99) + description: Second order filter - Previous input 1 + lpf2_OutputSignalLast1: + <<: *real + dimension: (99) + description: Second order filter - Previous output 1 + hpf_InputSignalLast: + <<: *real + dimension: (99) + description: High pass filter - Previous output 1 + hpf_OutputSignalLast: + <<: *real + dimension: (99) + description: High pass filter - Previous output 1 + nfs_OutputSignalLast1: + <<: *real + dimension: (99) + description: Notch filter slopes previous output 1 + nfs_OutputSignalLast2: + <<: *real + dimension: (99) + description: Notch filter slopes previous output 2 + nfs_InputSignalLast1: + <<: *real + dimension: (99) + description: Notch filter slopes previous input 1 + nfs_InputSignalLast2: + <<: *real + dimension: (99) + description: Notch filter slopes previous input 1 + nfs_b2: + <<: *real + dimension: (99) + description: Notch filter slopes numerator coefficient 2 + nfs_b0: + <<: *real + dimension: (99) + description: Notch filter slopes numerator coefficient 0 + nfs_a2: + <<: *real + dimension: (99) + description: Notch filter slopes denominator coefficient 2 + nfs_a1: + <<: *real + dimension: (99) + description: Notch filter slopes denominator coefficient 1 + nfs_a0: + <<: *real + dimension: (99) + description: Notch filter slopes denominator coefficient 0 + nf_OutputSignalLast1: + <<: *real + dimension: (99) + description: Notch filter previous output 1 + nf_OutputSignalLast2: + <<: *real + dimension: (99) + description: Notch filter previous output 2 + nf_InputSignalLast1: + <<: *real + dimension: (99) + description: Notch filter previous input 1 + nf_InputSignalLast2: + <<: *real + dimension: (99) + description: Notch filter previous input 2 + nf_b2: + <<: *real + dimension: (99) + description: Notch filter numerator coefficient 2 + nf_b1: + <<: *real + dimension: (99) + description: Notch filter numerator coefficient 1 + nf_b0: + <<: *real + dimension: (99) + description: Notch filter numerator coefficient 0 + nf_a1: + <<: *real + dimension: (99) + description: Notch filter denominator coefficient 1 + nf_a0: + <<: *real + dimension: (99) + description: Notch filter denominator coefficient 0 + +piParams: + ITerm: + <<: *real + dimension: (99) + description: Integrator term + ITermLast: + <<: *real + dimension: (99) + description: Previous integrator term + ITerm2: + <<: *real + dimension: (99) + description: Integrator term - second integrator + ITermLast2: + <<: *real + dimension: (99) + description: Previous integrator term - second integrator LocalVariables: iStatus: <<: *integer - description: + description: Initialization status Time: <<: *real - description: + description: Time [s] DT: <<: *real - description: + description: Time step [s] VS_GenPwr: <<: *real - description: + description: Generator power [W] GenSpeed: <<: *real - description: + description: Generator speed (HSS) [rad/s] RotSpeed: <<: *real - description: + description: Rotor speed (LSS) [rad/s] Y_M: <<: *real - description: + description: Yaw direction [rad] HorWindV: <<: *real - description: + description: Hub height wind speed m/s rootMOOP: <<: *real - description: + description: Blade root bending moment [Nm] size: 3 BlPitch: <<: *real - description: + description: Blade pitch [rad] size: 3 Azimuth: <<: *real - description: + description: Rotor aziumuth angle [rad] NumBl: <<: *integer - description: + description: Number of blades [-] FA_Acc: <<: *real description: Tower fore-aft acceleration [m/s^2] @@ -515,6 +714,9 @@ LocalVariables: PC_PitComT: <<: *real description: Total command pitch based on the sum of the proportional and integral terms [rad]. + PC_PitComT_Last: + <<: *real + description: Last total command pitch based on the sum of the proportional and integral terms [rad]. PC_PitComTF: <<: *real description: Filtered Total command pitch based on the sum of the proportional and integral terms [rad]. @@ -525,12 +727,21 @@ LocalVariables: PC_PwrErr: <<: *real description: Power error with respect to rated power [W] - PC_SineExcitation: - <<: *real - description: Sine contribution to pitch signal PC_SpdErr: <<: *real description: Current speed error (pitch control) [rad/s]. + IPC_IntAxisTilt_1P: + <<: *real + description: Integral of the direct axis, 1P + IPC_IntAxisYaw_1P: + <<: *real + description: Integral of quadrature, 1P + IPC_IntAxisTilt_2P: + <<: *real + description: Integral of the direct axis, 2P + IPC_IntAxisYaw_2P: + <<: *real + description: Integral of quadrature, 2P PC_State: <<: *integer description: State of the pitch control system @@ -615,6 +826,33 @@ LocalVariables: <<: *real description: Flap Angle (rad) size: 3 + RootMyb_Last: + <<: *real + description: Last blade root bending moment (Nm) + size: 3 + ACC_INFILE_SIZE: + <<: *integer + description: Length of parameter input filename + ACC_INFILE: + <<: *character + description: Parameter input filename + dimension: (:) + allocatable: True + restart: + <<: *logical + description: Restart flag + WE: + <<: *derived_type + id: WE + description: Wind speed estimator parameters derived type + FP: + <<: *derived_type + id: FilterParameters + description: Filter parameters derived type + piP: + <<: *derived_type + id: piParams + description: PI parameters derived type ObjectInstances: instLPF: @@ -648,44 +886,66 @@ PerformanceData: Cp_mat: <<: *real allocatable: True - shape: 2 + dimension: (:,:) description: Power coefficient surface Ct_mat: <<: *real allocatable: True - shape: 2 + dimension: (:,:) description: Thrust coefficient surface Cq_mat: <<: *real allocatable: True - shape: 2 + dimension: (:,:) description: Torque coefficient surface DebugVariables: WE_Cp: <<: *real - description: Cp that WSE uses to determine aerodynamic torque[-] + description: Cp that WSE uses to determine aerodynamic torque [-] WE_b: <<: *real - description: Pitch that WSE uses to determine aerodynamic torque[-] + description: Pitch that WSE uses to determine aerodynamic torque [-] WE_w: <<: *real - description: Rotor Speed that WSE uses to determine aerodynamic torque[-] + description: Rotor Speed that WSE uses to determine aerodynamic torque [-] WE_t: <<: *real - description: Torque that WSE uses[-] + description: Torque that WSE uses [-] WE_Vm: <<: *real description: Mean wind speed component in WSE [m/s] WE_Vt: <<: *real description: Turbulent wind speed component in WSE [m/s] + WE_Vw: + <<: *real + description: Estimated wind speed in WSE [m/s] WE_lambda: <<: *real description: TSR in WSE [rad] PC_PICommand: <<: *real - description: Commanded collective pitch from pitch PI controller [rad] + description: Commanded collective pitch from pitch PI controller [rad] + GenSpeedF: + <<: *real + description: Filtered generator speed [rad/s] + RotSpeedF: + <<: *real + description: Filtered rotor speed [rad/s] + NacIMU_FA_AccF: + <<: *real + description: Filtered NacIMU_FA_Acc [rad/s] + FA_AccF: + <<: *real + description: Filtered FA_Acc [m/s] + Fl_PitCom: + <<: *real + description: Floating contribution to the pitch command [rad] + PC_MinPit: + <<: *real + description: Minimum blade pitch angle [rad] + ErrorVariables: size_avcMSG: @@ -699,7 +959,6 @@ ErrorVariables: allocatable: True ExtDLL_Type: - FileAddr: <<: *c_intptr_t description: The address of file FileName. (RETURN value from LoadLibrary ) [Windows] @@ -714,9 +973,11 @@ ExtDLL_Type: description: The address of procedure ProcName. (RETURN value from GetProcAddress or dlsym) [initialized to Null for pack/unpack] FileName: <<: *character + length: 1024 description: The name of the DLL file including the full path to the current working directory. ProcName: <<: *character equals: '""' size: 3 + length: 1024 description: The name of the procedure in the DLL that will be called. \ No newline at end of file diff --git a/ROSCO/rosco_registry/write_registry.py b/ROSCO/rosco_registry/write_registry.py index bc3f0188..d1957748 100644 --- a/ROSCO/rosco_registry/write_registry.py +++ b/ROSCO/rosco_registry/write_registry.py @@ -3,18 +3,37 @@ import os from ROSCO_toolbox.ofTools.util.FileTools import load_yaml -def write_registry(yfile): +def generate(yfile): + ''' + Generates full registry and ROSCO I/O files + ''' + write_types(yfile) + write_roscoio(yfile) + +def write_types(yfile): + ''' + Writes ROSCO_types.f90 + -- All additions to the types should be added to rosco_types.yaml! + + Parameters: + ----------- + yfile: string + path to rosco_types.yaml + ''' reg = load_yaml(yfile) reg.pop('default_types') registry_fname = os.path.join(os.path.dirname(os.path.dirname(os.path.abspath(__file__))),'src','ROSCO_Types.f90') file = open(registry_fname, 'w') + # Header file.write('! ROSCO Registry\n') file.write('! This file is automatically generated by write_registry.py using ROSCO v{}\n'.format(ROSCO_toolbox.__version__)) file.write('! For any modification to the registry, please edit the rosco_types.yaml accordingly\n \n') file.write('MODULE ROSCO_Types\n') file.write('USE, INTRINSIC :: ISO_C_Binding\n') + file.write('USE Constants\n') file.write('IMPLICIT NONE\n') file.write('\n') + # Loop Types for toptype in reg.keys(): file.write('TYPE, PUBLIC :: {}\n'.format(toptype)) for attype in reg[toptype].keys(): @@ -28,31 +47,299 @@ def write_registry(yfile): file.write('END MODULE ROSCO_Types') file.close() +def write_roscoio(yfile): + ''' + Writes ROSCO_IO.f90 + -- All additions to the types should be added to rosco_types.yaml! + + Parameters: + ----------- + yfile: string + path to rosco_types.yaml + ''' + reg = load_yaml(yfile) + reg.pop('default_types') + registry_fname = os.path.join(os.path.dirname(os.path.dirname(os.path.abspath(__file__))),'src','ROSCO_IO.f90') + file = open(registry_fname, 'w') + file.write('! ROSCO IO\n') + file.write('! This file is automatically generated by write_registry.py using ROSCO v{}\n'.format(ROSCO_toolbox.__version__)) + file.write('! For any modification to the registry, please edit the rosco_types.yaml accordingly\n \n') + file.write('MODULE ROSCO_IO\n') + file.write(' USE, INTRINSIC :: ISO_C_Binding\n') + file.write(' USE ROSCO_Types\n') + file.write(' USE ReadSetParameters\n') + file.write(' USE Constants\n') + file.write('IMPLICIT NONE\n\n') + file.write('CONTAINS\n\n') + # ------------------------------------------------ + # ------------ WriteRestartFile ------------------ + # ------------------------------------------------ + file.write('SUBROUTINE WriteRestartFile(LocalVar, CntrPar, objInst, RootName, size_avcOUTNAME)\n') + file.write(" TYPE(LocalVariables), INTENT(IN) :: LocalVar\n") + file.write(" TYPE(ControlParameters), INTENT(INOUT) :: CntrPar\n") + file.write(" TYPE(ObjectInstances), INTENT(INOUT) :: objInst\n") + file.write(" INTEGER(IntKi), INTENT(IN) :: size_avcOUTNAME\n") + file.write(" CHARACTER(size_avcOUTNAME-1), INTENT(IN) :: RootName \n") + file.write(" \n") + file.write(" INTEGER(IntKi), PARAMETER :: Un = 87 ! I/O unit for pack/unpack (checkpoint & restart)\n") + file.write(" INTEGER(IntKi) :: I ! Generic index.\n") + file.write(" CHARACTER(128) :: InFile ! Input checkpoint file\n") + file.write(" INTEGER(IntKi) :: ErrStat\n") + file.write(" CHARACTER(128) :: ErrMsg \n") + file.write(" CHARACTER(128) :: n_t_global ! timestep number as a string\n") + file.write("\n") + file.write(" WRITE(n_t_global, '(I0.0)' ) NINT(LocalVar%Time/LocalVar%DT)\n") + file.write(" InFile = RootName(1:size_avcOUTNAME-5)//TRIM( n_t_global )//'.RO.chkp'\n") + file.write(" OPEN(unit=Un, FILE=TRIM(InFile), STATUS='UNKNOWN', FORM='UNFORMATTED' , ACCESS='STREAM', IOSTAT=ErrStat, ACTION='WRITE' )\n") + file.write("\n") + file.write(" IF ( ErrStat /= 0 ) THEN\n") + file.write(" ErrMsg = 'Cannot open file "'//TRIM( InFile )//'". Another program may have locked it for writing.'\n") + file.write("\n") + file.write(" ELSE\n") + + # Loop Variable Tree + for var in reg['LocalVariables']: + if reg['LocalVariables'][var]['type'] == 'derived_type': + for dvar in reg[reg['LocalVariables'][var]['id']]: + file.write(' WRITE( Un, IOSTAT=ErrStat) LocalVar%{}%{}\n'.format(var,dvar)) + elif reg['LocalVariables'][var]['size'] > 0: + for i in range(reg['LocalVariables'][var]['size']): + file.write(' WRITE( Un, IOSTAT=ErrStat) LocalVar%{}({})\n'.format(var, i+1)) + else: + file.write(' WRITE( Un, IOSTAT=ErrStat) LocalVar%{}\n'.format(var)) + for var in reg['ObjectInstances']: + file.write(' WRITE( Un, IOSTAT=ErrStat) objInst%{}\n'.format(var)) + file.write(' Close ( Un )\n') + file.write(' ENDIF\n') + file.write('END SUBROUTINE WriteRestartFile\n') + file.write('\n \n') + # ------------------------------------------------ + # ------------ ReadRestartFile ------------------ + # ------------------------------------------------ + file.write('SUBROUTINE ReadRestartFile(avrSWAP, LocalVar, CntrPar, objInst, PerfData, RootName, size_avcOUTNAME, ErrVar)\n') + file.write(" TYPE(LocalVariables), INTENT(INOUT) :: LocalVar\n") + file.write(" TYPE(ControlParameters), INTENT(INOUT) :: CntrPar\n") + file.write(" TYPE(ObjectInstances), INTENT(INOUT) :: objInst\n") + file.write(" TYPE(PerformanceData), INTENT(INOUT) :: PerfData\n") + file.write(" TYPE(ErrorVariables), INTENT(INOUT) :: ErrVar\n") + file.write(" REAL(C_FLOAT), INTENT(IN) :: avrSWAP(*)\n") + file.write(" INTEGER(IntKi), INTENT(IN) :: size_avcOUTNAME\n") + file.write(" CHARACTER(size_avcOUTNAME-1), INTENT(IN) :: RootName \n") + file.write(" \n") + file.write(" INTEGER(IntKi), PARAMETER :: Un = 87 ! I/O unit for pack/unpack (checkpoint & restart)\n") + file.write(" INTEGER(IntKi) :: I ! Generic index.\n") + file.write(" CHARACTER(128) :: InFile ! Input checkpoint file\n") + file.write(" INTEGER(IntKi) :: ErrStat\n") + file.write(" CHARACTER(128) :: ErrMsg \n") + file.write(" CHARACTER(128) :: n_t_global ! timestep number as a string\n") + file.write("\n") + file.write(" WRITE(n_t_global, '(I0.0)' ) NINT(avrSWAP(2)/avrSWAP(3))\n") + file.write(" InFile = RootName(1:size_avcOUTNAME-5)//TRIM( n_t_global )//'.RO.chkp'\n") + file.write(" OPEN(unit=Un, FILE=TRIM(InFile), STATUS='UNKNOWN', FORM='UNFORMATTED' , ACCESS='STREAM', IOSTAT=ErrStat, ACTION='READ' )\n") + file.write("\n") + file.write(" IF ( ErrStat /= 0 ) THEN\n") + file.write(" ErrMsg = 'Cannot open file "'//TRIM( InFile )//'". Another program may have locked it for writing.'\n") + file.write("\n") + file.write(" ELSE\n") + + # Loop Variable Tree + for var in reg['LocalVariables']: + if reg['LocalVariables'][var]['type'] == 'derived_type': + for dvar in reg[reg['LocalVariables'][var]['id']]: + file.write(' READ( Un, IOSTAT=ErrStat) LocalVar%{}%{}\n'.format(var, dvar)) + elif reg['LocalVariables'][var]['size'] > 0: + for i in range(reg['LocalVariables'][var]['size']): + file.write(' READ( Un, IOSTAT=ErrStat) LocalVar%{}({})\n'.format(var, i+1)) + else: + file.write(' READ( Un, IOSTAT=ErrStat) LocalVar%{}\n'.format(var)) + if var == 'ACC_INFILE_SIZE': + file.write(' ALLOCATE(LocalVar%ACC_INFILE(LocalVar%ACC_INFILE_SIZE))\n') + for var in reg['ObjectInstances']: + file.write(' READ( Un, IOSTAT=ErrStat) objInst%{}\n'.format(var)) + file.write(' Close ( Un )\n') + file.write(' ENDIF\n') + file.write(' ! Read Parameter files\n') + file.write(' CALL ReadControlParameterFileSub(CntrPar, LocalVar%ACC_INFILE, LocalVar%ACC_INFILE_SIZE, ErrVar)\n') + file.write(' IF (CntrPar%WE_Mode > 0) THEN\n') + file.write(' CALL READCpFile(CntrPar, PerfData, ErrVar)\n') + file.write(' ENDIF\n') + file.write('END SUBROUTINE ReadRestartFile\n') + file.write('\n \n') + # ------------------------------------------------ + # ------------------ Debug ----------------------- + # ------------------------------------------------ + file.write('SUBROUTINE Debug(LocalVar, CntrPar, DebugVar, avrSWAP, RootName, size_avcOUTNAME)\n') + file.write('! Debug routine, defines what gets printed to DEBUG.dbg if LoggingLevel = 1\n') + file.write('\n') + file.write(' TYPE(ControlParameters), INTENT(IN) :: CntrPar\n') + file.write(' TYPE(LocalVariables), INTENT(IN) :: LocalVar\n') + file.write(' TYPE(DebugVariables), INTENT(IN) :: DebugVar\n') + file.write('\n') + file.write(' INTEGER(IntKi), INTENT(IN) :: size_avcOUTNAME\n') + file.write(' INTEGER(IntKi) :: I , nDebugOuts, nLocalVars ! Generic index.\n') + file.write(' CHARACTER(1), PARAMETER :: Tab = CHAR(9) ! The tab character.\n') + file.write(' CHARACTER(29), PARAMETER :: FmtDat = "(F20.5,TR5,99(ES20.5E2,TR5:))" ! The format of the debugging data\n') + file.write(' INTEGER(IntKi), PARAMETER :: UnDb = 85 ! I/O unit for the debugging information\n') + file.write(' INTEGER(IntKi), PARAMETER :: UnDb2 = 86 ! I/O unit for the debugging information, avrSWAP\n') + file.write(' INTEGER(IntKi), PARAMETER :: UnDb3 = 87 ! I/O unit for the debugging information, avrSWAP\n') + file.write(' REAL(ReKi), INTENT(INOUT) :: avrSWAP(*) ! The swap array, used to pass data to, and receive data from, the DLL controller.\n') + file.write(' 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]\n') + file.write(' CHARACTER(200) :: Version ! git version of ROSCO\n') + file.write(' CHARACTER(15), ALLOCATABLE :: DebugOutStrings(:), DebugOutUnits(:)\n') + file.write(' REAL(DbKi), ALLOCATABLE :: DebugOutData(:)\n \n') + file.write(' CHARACTER(15), ALLOCATABLE :: LocalVarOutStrings(:)\n') + file.write(' REAL(DbKi), ALLOCATABLE :: LocalVarOutData(:)\n \n') + file.write(' nDebugOuts = {}\n'.format(len(reg['DebugVariables'].keys()))) + file.write(' Allocate(DebugOutData(nDebugOuts))\n') + file.write(' Allocate(DebugOutStrings(nDebugOuts))\n') + file.write(' Allocate(DebugOutUnits(nDebugOuts))\n') + dbg_strings = [] + dbg_units = [] + + # Print Debug variables + for dbg_idx, dbgvar in enumerate(reg['DebugVariables']): + dbg_strings.append(dbgvar) + desc = reg['DebugVariables'][dbgvar]['description'] + dbg_units.append(desc[desc.find('['):desc.find(']')+1]) + file.write(' DebugOutData({}) = DebugVar%{}\n'.format(dbg_idx+1,dbgvar)) + file.write(' DebugOutStrings = [CHARACTER(15) :: ') + counter = 0 + for string in dbg_strings: + counter += 1 + if counter == len(dbg_strings): + file.write(" '{}'".format(string)) + else: + file.write(" '{}',".format(string)) + if (counter % 5 == 0): + file.write(' & \n ') + file.write(']\n') + file.write(' DebugOutUnits = [CHARACTER(15) :: ') + counter = 0 + for unit in dbg_units: + counter += 1 + if counter == len(dbg_units): + file.write(" '{}'".format(unit)) + else: + file.write(" '{}',".format(unit)) + if (counter % 5 == 0): + file.write(' & \n ') + file.write(']\n') + + # Print Local Variables + # -- Always prints blade(1) for multi-bladed inputss (e.g. BldPitch(1)) + lv_strings = [] + for lv_idx, localvar in enumerate(reg['LocalVariables']): + if reg['LocalVariables'][localvar]['type'] in ['integer', 'real']: + lv_strings.append(localvar) + file.write(' nLocalVars = {}\n'.format(len(lv_strings))) + file.write(' Allocate(LocalVarOutData(nLocalVars))\n') + file.write(' Allocate(LocalVarOutStrings(nLocalVars))\n') + for lv_idx, localvar in enumerate(lv_strings): + if reg['LocalVariables'][localvar]['size'] > 0: + file.write(' LocalVarOutData({}) = LocalVar%{}(1)\n'.format(lv_idx+1, localvar)) + else: + file.write(' LocalVarOutData({}) = LocalVar%{}\n'.format(lv_idx+1, localvar)) + file.write(' LocalVarOutStrings = [CHARACTER(15) :: ') + counter = 0 + for string in lv_strings: + counter += 1 + if counter == len(lv_strings): + file.write(" '{}'".format(string)) + else: + file.write(" '{}',".format(string)) + if (counter % 5 == 0): + file.write(' & \n ') + file.write(']\n') + + # Debug file initialization + # -- iStatus = 0 on first call, iStatus = -9 in restart + file.write(" ! Initialize debug file\n") + file.write(" IF ((LocalVar%iStatus == 0) .OR. (LocalVar%iStatus == -9)) THEN ! .TRUE. if we're on the first call to the DLL\n") + # Standar debug + file.write(" IF (CntrPar%LoggingLevel > 0) THEN\n") + file.write(" OPEN(unit=UnDb, FILE=RootName(1: size_avcOUTNAME-5)//'RO.dbg')\n") + file.write(" WRITE(UnDb, *) 'Generated on '//CurDate()//' at '//CurTime()//' using ROSCO-'//TRIM(rosco_version)\n") + file.write(" WRITE(UnDb, '(99(a20,TR5:))') 'Time', DebugOutStrings\n") + file.write(" WRITE(UnDb, '(99(a20,TR5:))') '(sec)', DebugOutUnits\n") + file.write(" END IF\n") + file.write("\n") + # LocalVar debug + file.write(" IF (CntrPar%LoggingLevel > 1) THEN\n") + file.write(" OPEN(unit=UnDb2, FILE=RootName(1: size_avcOUTNAME-5)//'RO.dbg2')\n") + file.write(" WRITE(UnDb2, *) 'Generated on '//CurDate()//' at '//CurTime()//' using ROSCO-'//TRIM(rosco_version)\n") + file.write(" WRITE(UnDb2, '(99(a20,TR5:))') 'Time', LocalVarOutStrings\n") + file.write(" WRITE(UnDb2, '(99(a20,TR5:))')\n") + file.write(" END IF\n") + file.write("\n") + # avrSWAP debug + file.write(" IF (CntrPar%LoggingLevel > 2) THEN\n") + file.write(" OPEN(unit=UnDb3, FILE=RootName(1: size_avcOUTNAME-5)//'RO.dbg3')\n") + file.write(" WRITE(UnDb3,'(/////)')\n") + file.write(" WRITE(UnDb3,'"+'(A,85("'+"'//Tab//'"+'AvrSWAP("'+',I2,")"'+"))') 'LocalVar%Time ', (i,i=1, 85)\n") + file.write(" WRITE(UnDb3,'"+'(A,85("'+"'//Tab//'"+'(-)"'+"))') '(s)'"+'\n') + file.write(" END IF\n") + file.write(" ELSE\n") + file.write(" ! Print simulation status, every 10 seconds\n") + file.write(" IF (MODULO(LocalVar%Time, 10.0_DbKi) == 0) THEN\n") + file.write(" WRITE(*, 100) LocalVar%GenSpeedF*RPS2RPM, LocalVar%BlPitch(1)*R2D, avrSWAP(15)/1000.0, LocalVar%WE_Vw\n") + file.write(" 100 FORMAT('Generator speed: ', f6.1, ' RPM, Pitch angle: ', f5.1, ' deg, Power: ', f7.1, ' kW, Est. wind Speed: ', f5.1, ' m/s')\n") + file.write(" END IF\n") + file.write("\n") + file.write(" ! Write debug files\n") + file.write(" IF(CntrPar%LoggingLevel > 0) THEN\n") + file.write(" WRITE (UnDb, FmtDat) LocalVar%Time, DebugOutData\n") + file.write(" END IF\n") + file.write("\n") + file.write(" IF(CntrPar%LoggingLevel > 1) THEN\n") + file.write(" WRITE (UnDb2, FmtDat) LocalVar%Time, LocalVarOutData\n") + file.write(" END IF\n") + file.write("\n") + file.write(" IF(CntrPar%LoggingLevel > 2) THEN\n") + file.write(" WRITE (UnDb3, FmtDat) LocalVar%Time, avrSWAP(1: 85)\n") + file.write(" END IF\n") + file.write(" END IF\n") + file.write("\n") + file.write("END SUBROUTINE Debug\n") + file.write("\n") + file.write("END MODULE ROSCO_IO") + file.close() + def check_size(main_attribute, sub_attribute): - size = int(main_attribute[sub_attribute]['size']) - if size == 0: + if main_attribute[sub_attribute]['type'] == 'derived_type': atstr = sub_attribute else: - atstr = sub_attribute + '({})'.format(size) + size = int(main_attribute[sub_attribute]['size']) + if size == 0: + atstr = sub_attribute + else: + atstr = sub_attribute + '({})'.format(size) return atstr def read_type(param): if param['type'] == 'integer': - f90type = 'INTEGER(4)' + f90type = 'INTEGER(IntKi)' if param['allocatable']: f90type += ', DIMENSION(:), ALLOCATABLE' elif param['type'] == 'real': - f90type = 'REAL(8)' - if param['allocatable'] and param['shape'] == 1: - f90type += ', DIMENSION(:), ALLOCATABLE' - if param['allocatable'] and param['shape'] == 2: - f90type += ', DIMENSION(:,:), ALLOCATABLE' + f90type = 'REAL(DbKi)' + if param['allocatable']: + if param['dimension']: + f90type += ', DIMENSION{}, ALLOCATABLE'.format(param['dimension']) + else: + f90type += ', DIMENSION(:), ALLOCATABLE' + elif param['dimension']: + f90type += ', DIMENSION{}'.format(param['dimension']) elif param['type'] == 'character': - f90type = 'CHARACTER(1024)' + f90type = 'CHARACTER' + if param['length']: + f90type += '({})'.format(param['length']) if param['allocatable']: - f90type = 'CHARACTER(:), ALLOCATABLE' + if param['dimension']: + f90type += ', DIMENSION{}, ALLOCATABLE'.format(param['dimension']) + else: + f90type = 'CHARACTER(:), ALLOCATABLE' elif param['type'] == 'logical': - f90type = 'LOGICAL(1)' + f90type = 'LOGICAL' elif param['type'] == 'c_integer': f90type = 'INTEGER(C_INT)' elif param['type'] == 'c_pointer': @@ -61,6 +348,8 @@ def read_type(param): f90type = 'INTEGER(C_INTPTR_T)' elif param['type'] == 'c_funptr': f90type = 'TYPE(C_FUNPTR)' + elif param['type'] == 'derived_type': + f90type = 'TYPE({})'.format(param['id']) else: raise AttributeError('{} does not have a recognizable type'.format(param['type'])) @@ -69,5 +358,5 @@ def read_type(param): if __name__ == '__main__': fname = os.path.join(os.path.dirname(os.path.abspath(__file__)),'rosco_types.yaml') - write_registry(fname) + generate(fname) diff --git a/ROSCO/src/ControllerBlocks.f90 b/ROSCO/src/ControllerBlocks.f90 index c065759a..a025f0ca 100644 --- a/ROSCO/src/ControllerBlocks.f90 +++ b/ROSCO/src/ControllerBlocks.f90 @@ -175,10 +175,6 @@ SUBROUTINE WindSpeedEstimator(LocalVar, CntrPar, objInst, PerfData, DebugVar, Er REAL(DbKi) :: 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(DbKi), SAVE :: om_r ! Estimated rotor speed [rad/s] - REAL(DbKi), SAVE :: v_t ! Estimated wind speed, turbulent component [m/s] - REAL(DbKi), SAVE :: v_m ! Estimated wind speed, 10-minute averaged [m/s] - REAL(DbKi), SAVE :: v_h ! Combined estimated wind speed [m/s] REAL(DbKi) :: L ! Turbulent length scale parameter [m] REAL(DbKi) :: Ti ! Turbulent intensity, [-] ! REAL(DbKi), DIMENSION(3,3) :: I @@ -192,13 +188,10 @@ SUBROUTINE WindSpeedEstimator(LocalVar, CntrPar, objInst, PerfData, DebugVar, Er ! - Covariance matrices REAL(DbKi), DIMENSION(3,3) :: F ! First order system jacobian - REAL(DbKi), DIMENSION(3,3), SAVE :: P ! Covariance estiamte REAL(DbKi), DIMENSION(1,3) :: H ! Output equation jacobian - REAL(DbKi), DIMENSION(3,1), SAVE :: xh ! Estimated state matrix REAL(DbKi), DIMENSION(3,1) :: dxh ! Estimated state matrix deviation from previous timestep REAL(DbKi), DIMENSION(3,3) :: Q ! Process noise covariance matrix REAL(DbKi), DIMENSION(1,1) :: S ! Innovation covariance - REAL(DbKi), DIMENSION(3,1), SAVE :: K ! Kalman gain matrix REAL(DbKi) :: R_m ! Measurement noise covariance [(rad/s)^2] REAL(DbKi) :: WE_Inp_Pitch @@ -256,81 +249,81 @@ SUBROUTINE WindSpeedEstimator(LocalVar, CntrPar, objInst, PerfData, DebugVar, Er 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 = WE_Inp_Speed - v_t = 0.0 - v_m = LocalVar%HorWindV - v_h = LocalVar%HorWindV - lambda = WE_Inp_Speed * CntrPar%WE_BladeRadius/v_h - 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/)) + LocalVar%WE%om_r = WE_Inp_Speed + LocalVar%WE%v_t = 0.0 + LocalVar%WE%v_m = LocalVar%HorWindV + LocalVar%WE%v_h = LocalVar%HorWindV + lambda = WE_Inp_Speed * CntrPar%WE_BladeRadius/LocalVar%WE%v_h + LocalVar%WE%xh = RESHAPE((/LocalVar%WE%om_r, LocalVar%WE%v_t, LocalVar%WE%v_m/),(/3,1/)) + LocalVar%WE%P = RESHAPE((/0.01, 0.0, 0.0, 0.0, 0.01, 0.0, 0.0, 0.0, 1.0/),(/3,3/)) + LocalVar%WE%K = RESHAPE((/0.0,0.0,0.0/),(/3,1/)) Cp_op = 0.25 ! initialize so debug output doesn't give ***** ELSE ! Find estimated operating Cp and system pole - A_op = interp1d(CntrPar%WE_FOPoles_v,CntrPar%WE_FOPoles,v_h,ErrVar) + A_op = interp1d(CntrPar%WE_FOPoles_v,CntrPar%WE_FOPoles,LocalVar%WE%v_h,ErrVar) ! TEST INTERP2D - lambda = max(WE_Inp_Speed, EPSILON(1.0_DbKi)) * CntrPar%WE_BladeRadius/v_h + lambda = max(WE_Inp_Speed, EPSILON(1.0_DbKi)) * CntrPar%WE_BladeRadius/LocalVar%WE%v_h Cp_op = interp2d(PerfData%Beta_vec,PerfData%TSR_vec,PerfData%Cp_mat, WE_Inp_Pitch*R2D, lambda , ErrVar) 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 * 1/om_r * 3.0 * Cp_op * v_h**2.0 - F(1,3) = 1.0/(2.0*CntrPar%WE_Jtot) * CntrPar%WE_RhoAir * PI *CntrPar%WE_BladeRadius**2.0 * 1/om_r * 3.0 * Cp_op * v_h**2.0 - F(2,2) = - PI * v_m/(2.0*L) - F(2,3) = - PI * v_t/(2.0*L) + F(1,2) = 1.0/(2.0*CntrPar%WE_Jtot) * CntrPar%WE_RhoAir * PI *CntrPar%WE_BladeRadius**2.0 * 1/LocalVar%WE%om_r * 3.0 * Cp_op * LocalVar%WE%v_h**2.0 + F(1,3) = 1.0/(2.0*CntrPar%WE_Jtot) * CntrPar%WE_RhoAir * PI *CntrPar%WE_BladeRadius**2.0 * 1/LocalVar%WE%om_r * 3.0 * Cp_op * LocalVar%WE%v_h**2.0 + F(2,2) = - PI * LocalVar%WE%v_m/(2.0*L) + F(2,3) = - PI * LocalVar%WE%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(2,2) =(PI * (LocalVar%WE%v_m**3.0) * (Ti**2.0)) / L Q(3,3) = (2.0**2.0)/600.0 ! Prediction update Tau_r = AeroDynTorque(WE_Inp_Speed, WE_Inp_Pitch, LocalVar, CntrPar, PerfData, ErrVar) - a = PI * v_m/(2.0*L) + a = PI * LocalVar%WE%v_m/(2.0*L) dxh(1,1) = 1.0/CntrPar%WE_Jtot * (Tau_r - CntrPar%WE_GearboxRatio * WE_Inp_Torque) - dxh(2,1) = -a*v_t + dxh(2,1) = -a*LocalVar%WE%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))) + LocalVar%WE%xh = LocalVar%WE%xh + LocalVar%DT * dxh ! state update + LocalVar%WE%P = LocalVar%WE%P + LocalVar%DT*(MATMUL(F,LocalVar%WE%P) + MATMUL(LocalVar%WE%P,TRANSPOSE(F)) + Q - MATMUL(LocalVar%WE%K * R_m, TRANSPOSE(LocalVar%WE%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*(WE_Inp_Speed - om_r) - P = MATMUL(identity(3) - MATMUL(K,H),P) + S = MATMUL(H,MATMUL(LocalVar%WE%P,TRANSPOSE(H))) + R_m ! NJA: (H*T*H') \approx 0 + LocalVar%WE%K = MATMUL(LocalVar%WE%P,TRANSPOSE(H))/S(1,1) + LocalVar%WE%xh = LocalVar%WE%xh + LocalVar%WE%K*(WE_Inp_Speed - LocalVar%WE%om_r) + LocalVar%WE%P = MATMUL(identity(3) - MATMUL(LocalVar%WE%K,H),LocalVar%WE%P) ! Wind Speed Estimate - om_r = max(xh(1,1), EPSILON(1.0_DbKi)) - v_t = xh(2,1) - v_m = xh(3,1) - v_h = v_t + v_m - LocalVar%WE_Vw = v_m + v_t - - IF (ieee_is_nan(v_h)) THEN - om_r = WE_Inp_Speed - v_t = 0.0 - v_m = LocalVar%HorWindV - v_h = LocalVar%HorWindV - LocalVar%WE_Vw = v_m + v_t + LocalVar%WE%om_r = max(LocalVar%WE%xh(1,1), EPSILON(1.0_DbKi)) + LocalVar%WE%v_t = LocalVar%WE%xh(2,1) + LocalVar%WE%v_m = LocalVar%WE%xh(3,1) + LocalVar%WE%v_h = LocalVar%WE%v_t + LocalVar%WE%v_m + LocalVar%WE_Vw = LocalVar%WE%v_m + LocalVar%WE%v_t + + IF (ieee_is_nan(LocalVar%WE%v_h)) THEN + LocalVar%WE%om_r = WE_Inp_Speed + LocalVar%WE%v_t = 0.0 + LocalVar%WE%v_m = LocalVar%HorWindV + LocalVar%WE%v_h = LocalVar%HorWindV + LocalVar%WE_Vw = LocalVar%WE%v_m + LocalVar%WE%v_t ENDIF ENDIF ! Debug Outputs DebugVar%WE_Cp = Cp_op - DebugVar%WE_Vm = v_m - DebugVar%WE_Vt = v_t + DebugVar%WE_Vm = LocalVar%WE%v_m + DebugVar%WE_Vt = LocalVar%WE%v_t DebugVar%WE_lambda = lambda ELSE ! Filter wind speed at hub height as directly passed from OpenFAST - LocalVar%WE_Vw = LPFilter(LocalVar%HorWindV, LocalVar%DT, CntrPar%F_WECornerFreq, LocalVar%iStatus, .FALSE., objInst%instLPF) + LocalVar%WE_Vw = LPFilter(LocalVar%HorWindV, LocalVar%DT, CntrPar%F_WECornerFreq, LocalVar%FP, LocalVar%iStatus, LocalVar%restart, objInst%instLPF) ENDIF - + DebugVar%WE_Vw = LocalVar%WE_Vw ! Add RoutineName to error message IF (ErrVar%aviFAIL < 0) THEN ErrVar%ErrMsg = RoutineName//':'//TRIM(ErrVar%ErrMsg) @@ -358,7 +351,7 @@ SUBROUTINE SetpointSmoother(LocalVar, CntrPar, objInst) DelOmega = ((LocalVar%PC_PitComT - LocalVar%PC_MinPit)/0.524) * CntrPar%SS_VSGain - ((CntrPar%VS_RtPwr - LocalVar%VS_LastGenPwr))/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) + LocalVar%SS_DelOmegaF = LPFilter(DelOmega, LocalVar%DT, CntrPar%F_SSCornerFreq, LocalVar%FP, LocalVar%iStatus, LocalVar%restart, objInst%instLPF) ELSE LocalVar%SS_DelOmegaF = 0 ! No setpoint smoothing ENDIF @@ -411,7 +404,7 @@ REAL(DbKi) FUNCTION Shutdown(LocalVar, CntrPar, objInst) ! See if we should shutdown IF (.NOT. LocalVar%SD ) THEN ! Filter pitch signal - SD_BlPitchF = LPFilter(LocalVar%PC_PitComT, LocalVar%DT, CntrPar%SD_CornerFreq, LocalVar%iStatus, .FALSE., objInst%instLPF) + SD_BlPitchF = LPFilter(LocalVar%PC_PitComT, LocalVar%DT, CntrPar%SD_CornerFreq, LocalVar%FP, LocalVar%iStatus, LocalVar%restart, objInst%instLPF) ! Go into shutdown if above max pit IF (SD_BlPitchF > CntrPar%SD_MaxPit) THEN diff --git a/ROSCO/src/Controllers.f90 b/ROSCO/src/Controllers.f90 index ac918868..21e5fce8 100644 --- a/ROSCO/src/Controllers.f90 +++ b/ROSCO/src/Controllers.f90 @@ -39,7 +39,6 @@ SUBROUTINE PitchControl(avrSWAP, CntrPar, LocalVar, objInst, DebugVar, ErrVar) ! Allocate Variables: INTEGER(IntKi) :: K ! Index used for looping through blades. - REAL(DbKi), Save :: PitComT_Last CHARACTER(*), PARAMETER :: RoutineName = 'PitchControl' @@ -58,11 +57,7 @@ SUBROUTINE PitchControl(avrSWAP, CntrPar, LocalVar, objInst, DebugVar, ErrVar) LocalVar%PC_TF = interp1d(CntrPar%PC_GS_angles, CntrPar%PC_GS_TF, LocalVar%PC_PitComTF, ErrVar) ! TF gains (derivative filter) !NJA - need to clarify ! 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_MaxPit, LocalVar%DT, LocalVar%PitCom(1), .TRUE., objInst%instPI) - ELSE - LocalVar%PC_PitComT = PIController(LocalVar%PC_SpdErr, LocalVar%PC_KP, LocalVar%PC_KI, LocalVar%PC_MinPit, LocalVar%PC_MaxPit, LocalVar%DT, LocalVar%BlPitch(1), .FALSE., objInst%instPI) - END IF + LocalVar%PC_PitComT = PIController(LocalVar%PC_SpdErr, LocalVar%PC_KP, LocalVar%PC_KI, LocalVar%PC_MinPit, LocalVar%PC_MaxPit, LocalVar%DT, LocalVar%BlPitch(1), LocalVar%piP, LocalVar%restart, objInst%instPI) DebugVar%PC_PICommand = LocalVar%PC_PitComT ! Find individual pitch control contribution IF ((CntrPar%IPC_ControlMode >= 1) .OR. (CntrPar%Y_ControlMode == 2)) THEN @@ -85,11 +80,12 @@ SUBROUTINE PitchControl(avrSWAP, CntrPar, LocalVar, objInst, DebugVar, ErrVar) ELSE LocalVar%PC_MinPit = CntrPar%PC_FinePit ENDIF - + DebugVar%PC_MinPit = LocalVar%PC_MinPit ! FloatingFeedback IF (CntrPar%Fl_Mode > 0) THEN LocalVar%Fl_PitCom = FloatingFeedback(LocalVar, CntrPar, objInst) + DebugVar%FL_PitCom = LocalVar%Fl_PitCom LocalVar%PC_PitComT = LocalVar%PC_PitComT + LocalVar%Fl_PitCom ENDIF @@ -100,8 +96,8 @@ SUBROUTINE PitchControl(avrSWAP, CntrPar, LocalVar, objInst, DebugVar, ErrVar) ! Saturate collective pitch commands: LocalVar%PC_PitComT = saturate(LocalVar%PC_PitComT, LocalVar%PC_MinPit, CntrPar%PC_MaxPit) ! Saturate the overall command using the pitch angle limits - LocalVar%PC_PitComT = ratelimit(LocalVar%PC_PitComT, PitComT_Last, CntrPar%PC_MinRat, CntrPar%PC_MaxRat, LocalVar%DT) ! Saturate the overall command of blade K using the pitch rate limit - PitComT_Last = LocalVar%PC_PitComT + LocalVar%PC_PitComT = ratelimit(LocalVar%PC_PitComT, LocalVar%PC_PitComT_Last, CntrPar%PC_MinRat, CntrPar%PC_MaxRat, LocalVar%DT) ! Saturate the overall command of blade K using the pitch rate limit + LocalVar%PC_PitComT_Last = LocalVar%PC_PitComT ! Combine and saturate all individual pitch commands: ! Filter to emulate pitch actuator @@ -171,14 +167,14 @@ SUBROUTINE VariableSpeedControl(avrSWAP, CntrPar, LocalVar, objInst, ErrVar) END IF ! PI controller - LocalVar%GenTq = PIController(LocalVar%VS_SpdErr, CntrPar%VS_KP(1), CntrPar%VS_KI(1), CntrPar%VS_MinTq, LocalVar%VS_MaxTq, LocalVar%DT, LocalVar%VS_LastGenTrq, .FALSE., objInst%instPI) + LocalVar%GenTq = PIController(LocalVar%VS_SpdErr, CntrPar%VS_KP(1), CntrPar%VS_KI(1), CntrPar%VS_MinTq, LocalVar%VS_MaxTq, LocalVar%DT, LocalVar%VS_LastGenTrq, LocalVar%piP, LocalVar%restart, objInst%instPI) LocalVar%GenTq = saturate(LocalVar%GenTq, CntrPar%VS_MinTq, LocalVar%VS_MaxTq) ! 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_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) + 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, LocalVar%piP, LocalVar%restart, 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, LocalVar%piP, LocalVar%restart, objInst%instPI) ! The action IF (LocalVar%VS_State == 1) THEN ! Region 1.5 @@ -248,8 +244,8 @@ SUBROUTINE YawRateControl(avrSWAP, CntrPar, LocalVar, objInst, ErrVar) IF (LocalVar%Time >= LocalVar%Y_YawEndT) THEN ! Check if the turbine is currently yawing avrSWAP(48) = 0.0 ! Set yaw rate to zero - LocalVar%Y_ErrLPFFast = LPFilter(LocalVar%Y_MErr, LocalVar%DT, CntrPar%Y_omegaLPFast, LocalVar%iStatus, .FALSE., objInst%instLPF) ! Fast low pass filtered yaw error with a frequency of 1 - LocalVar%Y_ErrLPFSlow = LPFilter(LocalVar%Y_MErr, LocalVar%DT, CntrPar%Y_omegaLPSlow, LocalVar%iStatus, .FALSE., objInst%instLPF) ! Slow low pass filtered yaw error with a frequency of 1/60 + LocalVar%Y_ErrLPFFast = LPFilter(LocalVar%Y_MErr, LocalVar%DT, CntrPar%Y_omegaLPFast, LocalVar%FP, LocalVar%iStatus, .FALSE., objInst%instLPF) ! Fast low pass filtered yaw error with a frequency of 1 + LocalVar%Y_ErrLPFSlow = LPFilter(LocalVar%Y_MErr, LocalVar%DT, CntrPar%Y_omegaLPSlow, LocalVar%FP, LocalVar%iStatus, .FALSE., objInst%instLPF) ! Slow low pass filtered yaw error with a frequency of 1/60 LocalVar%Y_AccErr = LocalVar%Y_AccErr + LocalVar%DT*SIGN(LocalVar%Y_ErrLPFFast**2, LocalVar%Y_ErrLPFFast) ! Integral of the fast low pass filtered yaw error @@ -258,8 +254,8 @@ SUBROUTINE YawRateControl(avrSWAP, CntrPar, LocalVar, objInst, ErrVar) END IF ELSE avrSWAP(48) = SIGN(CntrPar%Y_Rate, LocalVar%Y_MErr) ! Set yaw rate to predefined yaw rate, the sign of the error is copied to the rate - LocalVar%Y_ErrLPFFast = LPFilter(LocalVar%Y_MErr, LocalVar%DT, CntrPar%Y_omegaLPFast, LocalVar%iStatus, .TRUE., objInst%instLPF) ! Fast low pass filtered yaw error with a frequency of 1 - LocalVar%Y_ErrLPFSlow = LPFilter(LocalVar%Y_MErr, LocalVar%DT, CntrPar%Y_omegaLPSlow, LocalVar%iStatus, .TRUE., objInst%instLPF) ! Slow low pass filtered yaw error with a frequency of 1/60 + LocalVar%Y_ErrLPFFast = LPFilter(LocalVar%Y_MErr, LocalVar%DT, CntrPar%Y_omegaLPFast, LocalVar%FP, LocalVar%iStatus, .TRUE., objInst%instLPF) ! Fast low pass filtered yaw error with a frequency of 1 + LocalVar%Y_ErrLPFSlow = LPFilter(LocalVar%Y_MErr, LocalVar%DT, CntrPar%Y_omegaLPSlow, LocalVar%FP, LocalVar%iStatus, .TRUE., objInst%instLPF) ! Slow low pass filtered yaw error with a frequency of 1/60 LocalVar%Y_AccErr = 0.0 ! " END IF END IF @@ -292,9 +288,7 @@ SUBROUTINE IPC(CntrPar, LocalVar, objInst) REAL(DbKi) :: PitComIPC(3), PitComIPCF(3), PitComIPC_1P(3), PitComIPC_2P(3) INTEGER(IntKi) :: K ! Integer used to loop through turbine blades REAL(DbKi) :: axisTilt_1P, axisYaw_1P, axisYawF_1P ! Direct axis and quadrature axis outputted by Coleman transform, 1P - REAL(DbKi), SAVE :: IntAxisTilt_1P, IntAxisYaw_1P ! Integral of the direct axis and quadrature axis, 1P REAL(DbKi) :: axisTilt_2P, axisYaw_2P, axisYawF_2P ! Direct axis and quadrature axis outputted by Coleman transform, 1P - REAL(DbKi), SAVE :: IntAxisTilt_2P, IntAxisYaw_2P ! Integral of the direct axis and quadrature axis, 1P REAL(DbKi) :: IntAxisYawIPC_1P ! IPC contribution with yaw-by-IPC component REAL(DbKi) :: Y_MErrF, Y_MErrF_IPC ! Unfiltered and filtered yaw alignment error [rad] @@ -303,10 +297,10 @@ SUBROUTINE IPC(CntrPar, LocalVar, objInst) ! Initialization ! Set integrals to be 0 in the first time step IF (LocalVar%iStatus==0) THEN - IntAxisTilt_1P = 0.0 - IntAxisYaw_1P = 0.0 - IntAxisTilt_2P = 0.0 - IntAxisYaw_2P = 0.0 + LocalVar%IPC_IntAxisTilt_1P = 0.0 + LocalVar%IPC_IntAxisYaw_1P = 0.0 + LocalVar%IPC_IntAxisTilt_2P = 0.0 + LocalVar%IPC_IntAxisYaw_2P = 0.0 END IF ! Pass rootMOOPs through the Coleman transform to get the tilt and yaw moment axis @@ -315,8 +309,8 @@ SUBROUTINE IPC(CntrPar, LocalVar, objInst) ! High-pass filter the MBC yaw component and filter yaw alignment error, and compute the yaw-by-IPC contribution IF (CntrPar%Y_ControlMode == 2) THEN - Y_MErrF = SecLPFilter(LocalVar%Y_MErr, LocalVar%DT, CntrPar%Y_IPC_omegaLP, CntrPar%Y_IPC_zetaLP, LocalVar%iStatus, .FALSE., objInst%instSecLPF) - Y_MErrF_IPC = PIController(Y_MErrF, CntrPar%Y_IPC_KP(1), CntrPar%Y_IPC_KI(1), -CntrPar%Y_IPC_IntSat, CntrPar%Y_IPC_IntSat, LocalVar%DT, 0.0_DbKi, .FALSE., objInst%instPI) + Y_MErrF = SecLPFilter(LocalVar%Y_MErr, LocalVar%DT, CntrPar%Y_IPC_omegaLP, CntrPar%Y_IPC_zetaLP, LocalVar%FP, LocalVar%iStatus, LocalVar%restart, objInst%instSecLPF) + Y_MErrF_IPC = PIController(Y_MErrF, CntrPar%Y_IPC_KP(1), CntrPar%Y_IPC_KI(1), -CntrPar%Y_IPC_IntSat, CntrPar%Y_IPC_IntSat, LocalVar%DT, 0.0_DbKi, LocalVar%piP, LocalVar%restart, objInst%instPI) ELSE axisYawF_1P = axisYaw_1P Y_MErrF = 0.0 @@ -325,30 +319,30 @@ SUBROUTINE IPC(CntrPar, LocalVar, objInst) ! Integrate the signal and multiply with the IPC gain IF ((CntrPar%IPC_ControlMode >= 1) .AND. (CntrPar%Y_ControlMode /= 2)) THEN - IntAxisTilt_1P = IntAxisTilt_1P + LocalVar%DT * CntrPar%IPC_KI(1) * axisTilt_1P - IntAxisYaw_1P = IntAxisYaw_1P + LocalVar%DT * CntrPar%IPC_KI(1) * axisYawF_1P - IntAxisTilt_1P = saturate(IntAxisTilt_1P, -CntrPar%IPC_IntSat, CntrPar%IPC_IntSat) - IntAxisYaw_1P = saturate(IntAxisYaw_1P, -CntrPar%IPC_IntSat, CntrPar%IPC_IntSat) + LocalVar%IPC_IntAxisTilt_1P = LocalVar%IPC_IntAxisTilt_1P + LocalVar%DT * CntrPar%IPC_KI(1) * axisTilt_1P + LocalVar%IPC_IntAxisYaw_1P = LocalVar%IPC_IntAxisYaw_1P + LocalVar%DT * CntrPar%IPC_KI(1) * axisYawF_1P + LocalVar%IPC_IntAxisTilt_1P = saturate(LocalVar%IPC_IntAxisTilt_1P, -CntrPar%IPC_IntSat, CntrPar%IPC_IntSat) + LocalVar%IPC_IntAxisYaw_1P = saturate(LocalVar%IPC_IntAxisYaw_1P, -CntrPar%IPC_IntSat, CntrPar%IPC_IntSat) IF (CntrPar%IPC_ControlMode >= 2) THEN - IntAxisTilt_2P = IntAxisTilt_2P + LocalVar%DT * CntrPar%IPC_KI(2) * axisTilt_2P - IntAxisYaw_2P = IntAxisYaw_2P + LocalVar%DT * CntrPar%IPC_KI(2) * axisYawF_2P - IntAxisTilt_2P = saturate(IntAxisTilt_2P, -CntrPar%IPC_IntSat, CntrPar%IPC_IntSat) - IntAxisYaw_2P = saturate(IntAxisYaw_2P, -CntrPar%IPC_IntSat, CntrPar%IPC_IntSat) + LocalVar%IPC_IntAxisTilt_2P = LocalVar%IPC_IntAxisTilt_2P + LocalVar%DT * CntrPar%IPC_KI(2) * axisTilt_2P + LocalVar%IPC_IntAxisYaw_2P = LocalVar%IPC_IntAxisYaw_2P + LocalVar%DT * CntrPar%IPC_KI(2) * axisYawF_2P + LocalVar%IPC_IntAxisTilt_2P = saturate(LocalVar%IPC_IntAxisTilt_2P, -CntrPar%IPC_IntSat, CntrPar%IPC_IntSat) + LocalVar%IPC_IntAxisYaw_2P = saturate(LocalVar%IPC_IntAxisYaw_2P, -CntrPar%IPC_IntSat, CntrPar%IPC_IntSat) END IF ELSE - IntAxisTilt_1P = 0.0 - IntAxisYaw_1P = 0.0 - IntAxisTilt_2P = 0.0 - IntAxisYaw_2P = 0.0 + LocalVar%IPC_IntAxisTilt_1P = 0.0 + LocalVar%IPC_IntAxisYaw_1P = 0.0 + LocalVar%IPC_IntAxisTilt_2P = 0.0 + LocalVar%IPC_IntAxisYaw_2P = 0.0 END IF ! Add the yaw-by-IPC contribution - IntAxisYawIPC_1P = IntAxisYaw_1P + Y_MErrF_IPC + IntAxisYawIPC_1P = LocalVar%IPC_IntAxisYaw_1P + Y_MErrF_IPC ! Pass direct and quadrature axis through the inverse Coleman transform to get the commanded pitch angles - CALL ColemanTransformInverse(IntAxisTilt_1P, IntAxisYawIPC_1P, LocalVar%Azimuth, NP_1, CntrPar%IPC_aziOffset(1), PitComIPC_1P) - CALL ColemanTransformInverse(IntAxisTilt_2P, IntAxisYaw_2P, LocalVar%Azimuth, NP_2, CntrPar%IPC_aziOffset(2), PitComIPC_2P) + CALL ColemanTransformInverse(LocalVar%IPC_IntAxisTilt_1P, IntAxisYawIPC_1P, LocalVar%Azimuth, NP_1, CntrPar%IPC_aziOffset(1), PitComIPC_1P) + CALL ColemanTransformInverse(LocalVar%IPC_IntAxisTilt_2P, LocalVar%IPC_IntAxisYaw_2P, LocalVar%Azimuth, NP_2, CntrPar%IPC_aziOffset(2), PitComIPC_2P) ! Sum nP IPC contributions and store to LocalVar data type DO K = 1,LocalVar%NumBl @@ -356,7 +350,7 @@ SUBROUTINE IPC(CntrPar, LocalVar, objInst) ! Optionally filter the resulting signal to induce a phase delay IF (CntrPar%IPC_CornerFreqAct > 0.0) THEN - PitComIPCF(K) = LPFilter(PitComIPC(K), LocalVar%DT, CntrPar%IPC_CornerFreqAct, LocalVar%iStatus, .FALSE., objInst%instLPF) + PitComIPCF(K) = LPFilter(PitComIPC(K), LocalVar%DT, CntrPar%IPC_CornerFreqAct, LocalVar%FP, LocalVar%iStatus, LocalVar%restart, objInst%instLPF) ELSE PitComIPCF(K) = PitComIPC(K) END IF @@ -378,7 +372,7 @@ SUBROUTINE ForeAftDamping(CntrPar, LocalVar, objInst) TYPE(ObjectInstances), INTENT(INOUT) :: objInst ! Body - LocalVar%FA_AccHPFI = PIController(LocalVar%FA_AccHPF, 0.0_DbKi, CntrPar%FA_KI, -CntrPar%FA_IntSat, CntrPar%FA_IntSat, LocalVar%DT, 0.0_DbKi, .FALSE., objInst%instPI) + LocalVar%FA_AccHPFI = PIController(LocalVar%FA_AccHPF, 0.0_DbKi, CntrPar%FA_KI, -CntrPar%FA_IntSat, CntrPar%FA_IntSat, LocalVar%DT, 0.0_DbKi, LocalVar%piP, LocalVar%restart, objInst%instPI) ! Store the fore-aft pitch contribution to LocalVar data type DO K = 1,LocalVar%NumBl @@ -396,15 +390,15 @@ REAL(DbKi) FUNCTION FloatingFeedback(LocalVar, CntrPar, objInst) IMPLICIT NONE ! Inputs TYPE(ControlParameters), INTENT(IN) :: CntrPar - TYPE(LocalVariables), INTENT(IN) :: LocalVar + TYPE(LocalVariables), INTENT(INOUT) :: LocalVar TYPE(ObjectInstances), INTENT(INOUT) :: objInst ! Allocate Variables REAL(DbKi) :: FA_vel ! Tower fore-aft velocity [m/s] REAL(DbKi) :: NacIMU_FA_vel ! Tower fore-aft pitching velocity [rad/s] ! Calculate floating contribution to pitch command - FA_vel = PIController(LocalVar%FA_AccF, 0.0_DbKi, 1.0_DbKi, -100.0_DbKi , 100.0_DbKi ,LocalVar%DT, 0.0_DbKi, .FALSE., objInst%instPI) ! NJA: should never reach saturation limits.... - NacIMU_FA_vel = PIController(LocalVar%NacIMU_FA_AccF, 0.0_DbKi, 1.0_DbKi, -100.0_DbKi , 100.0_DbKi ,LocalVar%DT, 0.0_DbKi, .FALSE., objInst%instPI) ! NJA: should never reach saturation limits.... + FA_vel = PIController(LocalVar%FA_AccF, 0.0_DbKi, 1.0_DbKi, -100.0_DbKi , 100.0_DbKi ,LocalVar%DT, 0.0_DbKi, LocalVar%piP, LocalVar%restart, objInst%instPI) ! NJA: should never reach saturation limits.... + NacIMU_FA_vel = PIController(LocalVar%NacIMU_FA_AccF, 0.0_DbKi, 1.0_DbKi, -100.0_DbKi , 100.0_DbKi ,LocalVar%DT, 0.0_DbKi, LocalVar%piP, LocalVar%restart, objInst%instPI) ! NJA: should never reach saturation limits.... if (CntrPar%Fl_Mode == 1) THEN FloatingFeedback = (0.0_DbKi - FA_vel) * CntrPar%Fl_Kp !* LocalVar%PC_KP/maxval(CntrPar%PC_GS_KP) ELSEIF (CntrPar%Fl_Mode == 2) THEN @@ -429,26 +423,25 @@ SUBROUTINE FlapControl(avrSWAP, CntrPar, LocalVar, objInst) INTEGER(IntKi) :: K REAL(DbKi) :: rootMOOP_F(3) REAL(DbKi) :: RootMyb_Vel(3) - REAL(DbKi), SAVE :: RootMyb_Last(3) REAL(DbKi) :: RootMyb_VelErr(3) ! Flap control IF (CntrPar%Flp_Mode >= 1) THEN IF ((LocalVar%iStatus == 0) .AND. (CntrPar%Flp_Mode >= 1)) THEN - RootMyb_Last(1) = 0 - LocalVar%rootMOOP(1) - RootMyb_Last(2) = 0 - LocalVar%rootMOOP(2) - RootMyb_Last(3) = 0 - LocalVar%rootMOOP(3) + LocalVar%RootMyb_Last(1) = 0 - LocalVar%rootMOOP(1) + LocalVar%RootMyb_Last(2) = 0 - LocalVar%rootMOOP(2) + LocalVar%RootMyb_Last(3) = 0 - LocalVar%rootMOOP(3) ! Initial Flap angle LocalVar%Flp_Angle(1) = CntrPar%Flp_Angle LocalVar%Flp_Angle(2) = CntrPar%Flp_Angle LocalVar%Flp_Angle(3) = CntrPar%Flp_Angle ! Initialize filter - RootMOOP_F(1) = SecLPFilter(LocalVar%rootMOOP(1),LocalVar%DT, CntrPar%F_FlpCornerFreq(1), CntrPar%F_FlpCornerFreq(2), LocalVar%iStatus, .FALSE.,objInst%instSecLPF) - RootMOOP_F(2) = SecLPFilter(LocalVar%rootMOOP(2),LocalVar%DT, CntrPar%F_FlpCornerFreq(1), CntrPar%F_FlpCornerFreq(2), LocalVar%iStatus, .FALSE.,objInst%instSecLPF) - RootMOOP_F(3) = SecLPFilter(LocalVar%rootMOOP(3),LocalVar%DT, CntrPar%F_FlpCornerFreq(1), CntrPar%F_FlpCornerFreq(2), LocalVar%iStatus, .FALSE.,objInst%instSecLPF) + RootMOOP_F(1) = SecLPFilter(LocalVar%rootMOOP(1),LocalVar%DT, CntrPar%F_FlpCornerFreq(1), CntrPar%F_FlpCornerFreq(2), LocalVar%FP, LocalVar%iStatus, LocalVar%restart,objInst%instSecLPF) + RootMOOP_F(2) = SecLPFilter(LocalVar%rootMOOP(2),LocalVar%DT, CntrPar%F_FlpCornerFreq(1), CntrPar%F_FlpCornerFreq(2), LocalVar%FP, LocalVar%iStatus, LocalVar%restart,objInst%instSecLPF) + RootMOOP_F(3) = SecLPFilter(LocalVar%rootMOOP(3),LocalVar%DT, CntrPar%F_FlpCornerFreq(1), CntrPar%F_FlpCornerFreq(2), LocalVar%FP, LocalVar%iStatus, LocalVar%restart,objInst%instSecLPF) ! Initialize controller IF (CntrPar%Flp_Mode == 2) THEN - LocalVar%Flp_Angle(K) = PIIController(RootMyb_VelErr(K), 0 - LocalVar%Flp_Angle(K), CntrPar%Flp_Kp, CntrPar%Flp_Ki, 0.05, -CntrPar%Flp_MaxPit , CntrPar%Flp_MaxPit , LocalVar%DT, 0.0, .TRUE., objInst%instPI) + LocalVar%Flp_Angle(K) = PIIController(RootMyb_VelErr(K), 0 - LocalVar%Flp_Angle(K), CntrPar%Flp_Kp, CntrPar%Flp_Ki, 0.05, -CntrPar%Flp_MaxPit , CntrPar%Flp_MaxPit , LocalVar%DT, 0.0, LocalVar%piP, LocalVar%restart, objInst%instPI) ENDIF ! Steady flap angle @@ -461,19 +454,19 @@ SUBROUTINE FlapControl(avrSWAP, CntrPar, LocalVar, objInst) ELSEIF (CntrPar%Flp_Mode == 2) THEN DO K = 1,LocalVar%NumBl ! LPF Blade root bending moment - RootMOOP_F(K) = SecLPFilter(LocalVar%rootMOOP(K),LocalVar%DT, CntrPar%F_FlpCornerFreq(1), CntrPar%F_FlpCornerFreq(2), LocalVar%iStatus, .FALSE.,objInst%instSecLPF) + RootMOOP_F(K) = SecLPFilter(LocalVar%rootMOOP(K),LocalVar%DT, CntrPar%F_FlpCornerFreq(1), CntrPar%F_FlpCornerFreq(2), LocalVar%FP, LocalVar%iStatus, LocalVar%restart,objInst%instSecLPF) ! Find derivative and derivative error of blade root bending moment - RootMyb_Vel(K) = (RootMOOP_F(K) - RootMyb_Last(K))/LocalVar%DT + RootMyb_Vel(K) = (RootMOOP_F(K) - LocalVar%RootMyb_Last(K))/LocalVar%DT RootMyb_VelErr(K) = 0 - RootMyb_Vel(K) ! Find flap angle command - includes an integral term to encourage zero flap angle - LocalVar%Flp_Angle(K) = PIIController(RootMyb_VelErr(K), 0 - LocalVar%Flp_Angle(K), CntrPar%Flp_Kp, CntrPar%Flp_Ki, REAL(0.05,DbKi), -CntrPar%Flp_MaxPit , CntrPar%Flp_MaxPit , LocalVar%DT, 0.0, .FALSE., objInst%instPI) + LocalVar%Flp_Angle(K) = PIIController(RootMyb_VelErr(K), 0 - LocalVar%Flp_Angle(K), CntrPar%Flp_Kp, CntrPar%Flp_Ki, REAL(0.05,DbKi), -CntrPar%Flp_MaxPit , CntrPar%Flp_MaxPit , LocalVar%DT, 0.0, LocalVar%piP, LocalVar%restart, objInst%instPI) ! Saturation Limits LocalVar%Flp_Angle(K) = saturate(LocalVar%Flp_Angle(K), -CntrPar%Flp_MaxPit, CntrPar%Flp_MaxPit) ! Save some data for next iteration - RootMyb_Last(K) = RootMOOP_F(K) + LocalVar%RootMyb_Last(K) = RootMOOP_F(K) END DO ENDIF diff --git a/ROSCO/src/DISCON.F90 b/ROSCO/src/DISCON.F90 index 84c5820b..ef8e46d6 100644 --- a/ROSCO/src/DISCON.F90 +++ b/ROSCO/src/DISCON.F90 @@ -25,6 +25,7 @@ SUBROUTINE DISCON(avrSWAP, aviFAIL, accINFILE, avcOUTNAME, avcMSG) BIND (C, NAME USE :: Constants USE :: Filters USE :: Functions +USE :: ROSCO_IO IMPLICIT NONE ! Enable .dll export @@ -62,6 +63,15 @@ SUBROUTINE DISCON(avrSWAP, aviFAIL, accINFILE, avcOUTNAME, avcMSG) BIND (C, NAME !------------------------------------------------------------------------------------------------------------------------------ ! Main control calculations !------------------------------------------------------------------------------------------------------------------------------ + +! Check for restart +IF ( (NINT(avrSWAP(1)) == -9) .AND. (aviFAIL >= 0)) THEN ! Read restart files + CALL ReadRestartFile(avrSWAP, LocalVar, CntrPar, objInst, PerfData, RootName, SIZE(avcOUTNAME), ErrVar) + IF ( CntrPar%LoggingLevel > 0 ) THEN + CALL Debug(LocalVar, CntrPar, DebugVar, avrSWAP, RootName, SIZE(avcOUTNAME)) + END IF +END IF + ! Read avrSWAP array into derived types/variables CALL ReadAvrSWAP(avrSWAP, LocalVar) @@ -69,14 +79,17 @@ SUBROUTINE DISCON(avrSWAP, aviFAIL, accINFILE, avcOUTNAME, avcMSG) BIND (C, NAME CALL SetParameters(avrSWAP, accINFILE, SIZE(avcMSG), CntrPar, LocalVar, objInst, PerfData, ErrVar) ! Filter signals -CALL PreFilterMeasuredSignals(CntrPar, LocalVar, objInst, ErrVar) +CALL PreFilterMeasuredSignals(CntrPar, LocalVar, DebugVar, objInst, ErrVar) -IF ((LocalVar%iStatus >= 0) .AND. (ErrVar%aviFAIL >= 0)) THEN ! Only compute control calculations if no error has occurred and we are not on the last time step +IF (((LocalVar%iStatus >= 0) .OR. (LocalVar%iStatus <= -8)) .AND. (ErrVar%aviFAIL >= 0)) THEN ! Only compute control calculations if no error has occurred and we are not on the last time step + IF ((LocalVar%iStatus == -8) .AND. (ErrVar%aviFAIL >= 0)) THEN ! Write restart files + CALL WriteRestartFile(LocalVar, CntrPar, objInst, RootName, SIZE(avcOUTNAME)) + ENDIF + CALL WindSpeedEstimator(LocalVar, CntrPar, objInst, PerfData, DebugVar, ErrVar) CALL ComputeVariablesSetpoints(CntrPar, LocalVar, objInst) CALL StateMachine(CntrPar, LocalVar) CALL SetpointSmoother(LocalVar, CntrPar, objInst) - CALL ComputeVariablesSetpoints(CntrPar, LocalVar, objInst) CALL VariableSpeedControl(avrSWAP, CntrPar, LocalVar, objInst, ErrVar) CALL PitchControl(avrSWAP, CntrPar, LocalVar, objInst, DebugVar, ErrVar) @@ -88,11 +101,13 @@ SUBROUTINE DISCON(avrSWAP, aviFAIL, accINFILE, avcOUTNAME, avcMSG) BIND (C, NAME CALL FlapControl(avrSWAP, CntrPar, LocalVar, objInst) END IF - IF (CntrPar%LoggingLevel > 0) THEN + IF ( CntrPar%LoggingLevel > 0 ) THEN CALL Debug(LocalVar, CntrPar, DebugVar, avrSWAP, RootName, SIZE(avcOUTNAME)) - END IF + END IF + END IF + ! Add RoutineName to error message IF (ErrVar%aviFAIL < 0) THEN ErrVar%ErrMsg = RoutineName//':'//TRIM(ErrVar%ErrMsg) @@ -102,7 +117,6 @@ SUBROUTINE DISCON(avrSWAP, aviFAIL, accINFILE, avcOUTNAME, avcMSG) BIND (C, NAME avcMSG = TRANSFER(ErrMsg//C_NULL_CHAR, avcMSG, LEN(ErrMsg)+1) avcMSG = TRANSFER(ErrMsg//C_NULL_CHAR, avcMSG, SIZE(avcMSG)) aviFAIL = ErrVar%aviFAIL - ErrVar%ErrMsg = '' RETURN diff --git a/ROSCO/src/Filters.f90 b/ROSCO/src/Filters.f90 index 7cfc43e5..e2a99f94 100644 --- a/ROSCO/src/Filters.f90 +++ b/ROSCO/src/Filters.f90 @@ -26,11 +26,14 @@ MODULE Filters CONTAINS !------------------------------------------------------------------------------------------------------------------------------- - REAL(DbKi) FUNCTION LPFilter(InputSignal, DT, CornerFreq, iStatus, reset, inst) + REAL(DbKi) FUNCTION LPFilter(InputSignal, DT, CornerFreq, FP, iStatus, reset, inst) ! Discrete time Low-Pass Filter of the form: ! Continuous Time Form: H(s) = CornerFreq/(1 + CornerFreq) ! Discrete Time Form: H(z) = (b1z + b0) / (a1*z + a0) ! + USE ROSCO_Types, ONLY : FilterParameters + TYPE(FilterParameters), INTENT(INOUT) :: FP + REAL(DbKi), INTENT(IN) :: InputSignal REAL(DbKi), INTENT(IN) :: DT ! time step [s] REAL(DbKi), INTENT(IN) :: CornerFreq ! corner frequency [rad/s] @@ -38,41 +41,34 @@ REAL(DbKi) FUNCTION LPFilter(InputSignal, DT, CornerFreq, iStatus, reset, inst) INTEGER(IntKi), 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 - REAL(DbKi), DIMENSION(99), SAVE :: a1 ! Denominator coefficient 1 - REAL(DbKi), DIMENSION(99), SAVE :: a0 ! Denominator coefficient 0 - REAL(DbKi), DIMENSION(99), SAVE :: b1 ! Numerator coefficient 1 - REAL(DbKi), DIMENSION(99), SAVE :: b0 ! Numerator coefficient 0 - - REAL(DbKi), DIMENSION(99), SAVE :: InputSignalLast ! Input signal the last time this filter was called. Supports 99 separate instances. - REAL(DbKi), DIMENSION(99), SAVE :: OutputSignalLast ! Output signal the last time this filter was called. Supports 99 separate instances. - ! Initialization IF ((iStatus == 0) .OR. reset) THEN - OutputSignalLast(inst) = InputSignal - InputSignalLast(inst) = InputSignal - a1(inst) = 2 + CornerFreq*DT - a0(inst) = CornerFreq*DT - 2 - b1(inst) = CornerFreq*DT - b0(inst) = CornerFreq*DT + FP%lpf1_OutputSignalLast(inst) = InputSignal + FP%lpf1_InputSignalLast(inst) = InputSignal + FP%lpf1_a1(inst) = 2 + CornerFreq*DT + FP%lpf1_a0(inst) = CornerFreq*DT - 2 + FP%lpf1_b1(inst) = CornerFreq*DT + FP%lpf1_b0(inst) = CornerFreq*DT ENDIF ! Define coefficients ! Filter - LPFilter = 1.0/a1(inst) * (-a0(inst)*OutputSignalLast(inst) + b1(inst)*InputSignal + b0(inst)*InputSignalLast(inst)) + LPFilter = 1.0/FP%lpf1_a1(inst) * (-FP%lpf1_a0(inst)*FP%lpf1_OutputSignalLast(inst) + FP%lpf1_b1(inst)*InputSignal + FP%lpf1_b0(inst)*FP%lpf1_InputSignalLast(inst)) ! Save signals for next time step - InputSignalLast(inst) = InputSignal - OutputSignalLast(inst) = LPFilter + FP%lpf1_InputSignalLast(inst) = InputSignal + FP%lpf1_OutputSignalLast(inst) = LPFilter inst = inst + 1 END FUNCTION LPFilter !------------------------------------------------------------------------------------------------------------------------------- - REAL(DbKi) FUNCTION SecLPFilter(InputSignal, DT, CornerFreq, Damp, iStatus, reset, inst) + REAL(DbKi) FUNCTION SecLPFilter(InputSignal, DT, CornerFreq, Damp, FP, iStatus, reset, inst) ! Discrete time Low-Pass Filter of the form: ! Continuous Time Form: H(s) = CornerFreq^2/(s^2 + 2*CornerFreq*Damp*s + CornerFreq^2) ! Discrete Time From: H(z) = (b2*z^2 + b1*z + b0) / (a2*z^2 + a1*z + a0) + USE ROSCO_Types, ONLY : FilterParameters + TYPE(FilterParameters), INTENT(INOUT) :: FP REAL(DbKi), INTENT(IN) :: InputSignal REAL(DbKi), INTENT(IN) :: DT ! time step [s] REAL(DbKi), INTENT(IN) :: CornerFreq ! corner frequency [rad/s] @@ -81,237 +77,205 @@ REAL(DbKi) FUNCTION SecLPFilter(InputSignal, DT, CornerFreq, Damp, iStatus, rese INTEGER(IntKi), 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 - REAL(DbKi), DIMENSION(99), SAVE :: a2 ! Denominator coefficient 2 - REAL(DbKi), DIMENSION(99), SAVE :: a1 ! Denominator coefficient 1 - REAL(DbKi), DIMENSION(99), SAVE :: a0 ! Denominator coefficient 0 - REAL(DbKi), DIMENSION(99), SAVE :: b2 ! Numerator coefficient 2 - REAL(DbKi), DIMENSION(99), SAVE :: b1 ! Numerator coefficient 1 - REAL(DbKi), DIMENSION(99), SAVE :: b0 ! Numerator coefficient 0 - REAL(DbKi), DIMENSION(99), SAVE :: InputSignalLast1 ! Input signal the last time this filter was called. Supports 99 separate instances. - REAL(DbKi), DIMENSION(99), SAVE :: InputSignalLast2 ! Input signal the next to last time this filter was called. Supports 99 separate instances. - REAL(DbKi), DIMENSION(99), SAVE :: OutputSignalLast1 ! Output signal the last time this filter was called. Supports 99 separate instances. - REAL(DbKi), DIMENSION(99), SAVE :: OutputSignalLast2 ! Output signal the next to last time this filter was called. Supports 99 separate instances. - ! Initialization IF ((iStatus == 0) .OR. reset ) THEN - OutputSignalLast1(inst) = InputSignal - OutputSignalLast2(inst) = InputSignal - InputSignalLast1(inst) = InputSignal - InputSignalLast2(inst) = InputSignal + FP%lpf2_OutputSignalLast1(inst) = InputSignal + FP%lpf2_OutputSignalLast2(inst) = InputSignal + FP%lpf2_InputSignalLast1(inst) = InputSignal + FP%lpf2_InputSignalLast2(inst) = InputSignal ! Coefficients - a2(inst) = DT**2.0*CornerFreq**2.0 + 4.0 + 4.0*Damp*CornerFreq*DT - a1(inst) = 2.0*DT**2.0*CornerFreq**2.0 - 8.0 - a0(inst) = DT**2.0*CornerFreq**2.0 + 4.0 - 4.0*Damp*CornerFreq*DT - b2(inst) = DT**2.0*CornerFreq**2.0 - b1(inst) = 2.0*DT**2.0*CornerFreq**2.0 - b0(inst) = DT**2.0*CornerFreq**2.0 + FP%lpf2_a2(inst) = DT**2.0*CornerFreq**2.0 + 4.0 + 4.0*Damp*CornerFreq*DT + FP%lpf2_a1(inst) = 2.0*DT**2.0*CornerFreq**2.0 - 8.0 + FP%lpf2_a0(inst) = DT**2.0*CornerFreq**2.0 + 4.0 - 4.0*Damp*CornerFreq*DT + FP%lpf2_b2(inst) = DT**2.0*CornerFreq**2.0 + FP%lpf2_b1(inst) = 2.0*DT**2.0*CornerFreq**2.0 + FP%lpf2_b0(inst) = DT**2.0*CornerFreq**2.0 ENDIF ! Filter - SecLPFilter = 1.0/a2(inst) * (b2(inst)*InputSignal + b1(inst)*InputSignalLast1(inst) + b0(inst)*InputSignalLast2(inst) - a1(inst)*OutputSignalLast1(inst) - a0(inst)*OutputSignalLast2(inst)) - - ! 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) ) + SecLPFilter = 1.0/FP%lpf2_a2(inst) * (FP%lpf2_b2(inst)*InputSignal + FP%lpf2_b1(inst)*FP%lpf2_InputSignalLast1(inst) + FP%lpf2_b0(inst)*FP%lpf2_InputSignalLast2(inst) - FP%lpf2_a1(inst)*FP%lpf2_OutputSignalLast1(inst) - FP%lpf2_a0(inst)*FP%lpf2_OutputSignalLast2(inst)) ! Save signals for next time step - InputSignalLast2(inst) = InputSignalLast1(inst) - InputSignalLast1(inst) = InputSignal - OutputSignalLast2(inst) = OutputSignalLast1(inst) - OutputSignalLast1(inst) = SecLPFilter + FP%lpf2_InputSignalLast2(inst) = FP%lpf2_InputSignalLast1(inst) + FP%lpf2_InputSignalLast1(inst) = InputSignal + FP%lpf2_OutputSignalLast2(inst) = FP%lpf2_OutputSignalLast1(inst) + FP%lpf2_OutputSignalLast1(inst) = SecLPFilter inst = inst + 1 END FUNCTION SecLPFilter !------------------------------------------------------------------------------------------------------------------------------- - REAL(DbKi) FUNCTION HPFilter( InputSignal, DT, CornerFreq, iStatus, reset, inst) + REAL(DbKi) FUNCTION HPFilter( InputSignal, DT, CornerFreq, FP, iStatus, reset, inst) ! Discrete time High-Pass Filter + USE ROSCO_Types, ONLY : FilterParameters + TYPE(FilterParameters), INTENT(INOUT) :: FP REAL(DbKi), INTENT(IN) :: InputSignal REAL(DbKi), INTENT(IN) :: DT ! time step [s] REAL(DbKi), INTENT(IN) :: CornerFreq ! corner frequency [rad/s] - 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. + INTEGER(IntKi), 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(IntKi), 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 - REAL(DbKi) :: K ! Constant gain - REAL(DbKi), DIMENSION(99), SAVE :: InputSignalLast ! Input signal the last time this filter was called. Supports 99 separate instances. - REAL(DbKi), DIMENSION(99), SAVE :: OutputSignalLast ! Output signal the last time this filter was called. Supports 99 separate instances. + REAL(DbKi) :: K ! Constant gain ! Initialization IF ((iStatus == 0) .OR. reset) THEN - OutputSignalLast(inst) = InputSignal - InputSignalLast(inst) = InputSignal + FP%hpf_OutputSignalLast(inst) = InputSignal + FP%hpf_InputSignalLast(inst) = InputSignal ENDIF K = 2.0 / DT ! Body - HPFilter = K/(CornerFreq + K)*InputSignal - K/(CornerFreq + K)*InputSignalLast(inst) - (CornerFreq - K)/(CornerFreq + K)*OutputSignalLast(inst) + HPFilter = K/(CornerFreq + K)*InputSignal - K/(CornerFreq + K)*FP%hpf_InputSignalLast(inst) - (CornerFreq - K)/(CornerFreq + K)*FP%hpf_OutputSignalLast(inst) ! Save signals for next time step - InputSignalLast(inst) = InputSignal - OutputSignalLast(inst) = HPFilter + FP%HPF_InputSignalLast(inst) = InputSignal + FP%HPF_OutputSignalLast(inst) = HPFilter inst = inst + 1 END FUNCTION HPFilter !------------------------------------------------------------------------------------------------------------------------------- - REAL(DbKi) FUNCTION NotchFilterSlopes(InputSignal, DT, CornerFreq, Damp, iStatus, reset, inst) + REAL(DbKi) FUNCTION NotchFilterSlopes(InputSignal, DT, CornerFreq, Damp, FP, iStatus, reset, inst) ! Discrete time inverted Notch Filter with descending slopes, G = CornerFreq*s/(Damp*s^2+CornerFreq*s+Damp*CornerFreq^2) + USE ROSCO_Types, ONLY : FilterParameters + TYPE(FilterParameters), INTENT(INOUT) :: FP REAL(DbKi), INTENT(IN) :: InputSignal REAL(DbKi), INTENT(IN) :: DT ! time step [s] REAL(DbKi), INTENT(IN) :: CornerFreq ! corner frequency [rad/s] REAL(DbKi), INTENT(IN) :: Damp ! Dampening constant - 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. + INTEGER(IntKi), 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(IntKi), 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 - REAL(DbKi), DIMENSION(99), SAVE :: b2, b0, a2, a1, a0 ! Input signal the last time this filter was called. Supports 99 separate instances. - REAL(DbKi), DIMENSION(99), SAVE :: InputSignalLast1 ! Input signal the last time this filter was called. Supports 99 separate instances. - REAL(DbKi), DIMENSION(99), SAVE :: InputSignalLast2 ! Input signal the next to last time this filter was called. Supports 99 separate instances. - REAL(DbKi), DIMENSION(99), SAVE :: OutputSignalLast1 ! Output signal the last time this filter was called. Supports 99 separate instances. - REAL(DbKi), DIMENSION(99), SAVE :: OutputSignalLast2 ! Output signal the next to last time this filter was called. Supports 99 separate instances. - + ! Initialization IF ((iStatus == 0) .OR. reset) THEN - OutputSignalLast1(inst) = InputSignal - OutputSignalLast2(inst) = InputSignal - InputSignalLast1(inst) = InputSignal - InputSignalLast2(inst) = InputSignal - b2(inst) = 2.0 * DT * CornerFreq - b0(inst) = -b2(inst) - a2(inst) = Damp*DT**2.0*CornerFreq**2.0 + 2.0*DT*CornerFreq + 4.0*Damp - a1(inst) = 2.0*Damp*DT**2.0*CornerFreq**2.0 - 8.0*Damp - a0(inst) = Damp*DT**2.0*CornerFreq**2.0 - 2*DT*CornerFreq + 4.0*Damp + FP%nfs_OutputSignalLast1(inst) = InputSignal + FP%nfs_OutputSignalLast2(inst) = InputSignal + FP%nfs_InputSignalLast1(inst) = InputSignal + FP%nfs_InputSignalLast2(inst) = InputSignal + FP%nfs_b2(inst) = 2.0 * DT * CornerFreq + FP%nfs_b0(inst) = -FP%nfs_b2(inst) + FP%nfs_a2(inst) = Damp*DT**2.0*CornerFreq**2.0 + 2.0*DT*CornerFreq + 4.0*Damp + FP%nfs_a1(inst) = 2.0*Damp*DT**2.0*CornerFreq**2.0 - 8.0*Damp + FP%nfs_a0(inst) = Damp*DT**2.0*CornerFreq**2.0 - 2*DT*CornerFreq + 4.0*Damp ENDIF - NotchFilterSlopes = 1.0/a2(inst) * (b2(inst)*InputSignal + b0(inst)*InputSignalLast2(inst) & - - a1(inst)*OutputSignalLast1(inst) - a0(inst)*OutputSignalLast2(inst)) - ! 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) ) + NotchFilterSlopes = 1.0/FP%nfs_a2(inst) * (FP%nfs_b2(inst)*InputSignal + FP%nfs_b0(inst)*FP%nfs_InputSignalLast2(inst) & + - FP%nfs_a1(inst)*FP%nfs_OutputSignalLast1(inst) - FP%nfs_a0(inst)*FP%nfs_OutputSignalLast2(inst)) ! 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 - OutputSignalLast1(inst) = NotchFilterSlopes + FP%nfs_InputSignalLast2(inst) = FP%nfs_InputSignalLast1(inst) + FP%nfs_InputSignalLast1(inst) = InputSignal !Save input signal for next time step + FP%nfs_OutputSignalLast2(inst) = FP%nfs_OutputSignalLast1(inst) !Save input signal for next time step + FP%nfs_OutputSignalLast1(inst) = NotchFilterSlopes inst = inst + 1 END FUNCTION NotchFilterSlopes !------------------------------------------------------------------------------------------------------------------------------- - REAL(DbKi) FUNCTION NotchFilter(InputSignal, DT, omega, betaNum, betaDen, iStatus, reset, inst) + REAL(DbKi) FUNCTION NotchFilter(InputSignal, DT, omega, betaNum, betaDen, FP, iStatus, reset, inst) ! Discrete time Notch Filter ! Continuous Time Form: G(s) = (s^2 + 2*omega*betaNum*s + omega^2)/(s^2 + 2*omega*betaDen*s + omega^2) ! Discrete Time Form: H(z) = (b2*z^2 +b1*z^2 + b0*z)/((z^2 +a1*z^2 + a0*z)) + USE ROSCO_Types, ONLY : FilterParameters + TYPE(FilterParameters), INTENT(INOUT) :: FP REAL(DbKi), INTENT(IN) :: InputSignal REAL(DbKi), INTENT(IN) :: DT ! time step [s] REAL(DbKi), INTENT(IN) :: omega ! corner frequency [rad/s] REAL(DbKi), INTENT(IN) :: betaNum ! Dampening constant in numerator of filter transfer function REAL(DbKi), INTENT(IN) :: betaDen ! Dampening constant in denominator of filter transfer function - 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. + INTEGER(IntKi), 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(IntKi), 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 - REAL(DbKi), DIMENSION(99), SAVE :: K, b2, b1, b0, a1, a0 ! Constant gain - REAL(DbKi), DIMENSION(99), SAVE :: InputSignalLast1 ! Input signal the last time this filter was called. Supports 99 separate instances. - REAL(DbKi), DIMENSION(99), SAVE :: InputSignalLast2 ! Input signal the next to last time this filter was called. Supports 99 separate instances. - REAL(DbKi), DIMENSION(99), SAVE :: OutputSignalLast1 ! Output signal the last time this filter was called. Supports 99 separate instances. - REAL(DbKi), DIMENSION(99), SAVE :: OutputSignalLast2 ! Output signal the next to last time this filter was called. Supports 99 separate instances. + REAL(DbKi) :: K ! Constant gain ! Initialization + K = 2.0/DT IF ((iStatus == 0) .OR. reset) THEN - OutputSignalLast1(inst) = InputSignal - OutputSignalLast2(inst) = InputSignal - InputSignalLast1(inst) = InputSignal - InputSignalLast2(inst) = InputSignal - K(inst) = 2.0/DT - b2(inst) = (K(inst)**2.0 + 2.0*omega*BetaNum*K(inst) + omega**2.0)/(K(inst)**2.0 + 2.0*omega*BetaDen*K(inst) + omega**2.0) - b1(inst) = (2.0*omega**2.0 - 2.0*K(inst)**2.0) / (K(inst)**2.0 + 2.0*omega*BetaDen*K(inst) + omega**2.0); - b0(inst) = (K(inst)**2.0 - 2.0*omega*BetaNum*K(inst) + omega**2.0) / (K(inst)**2.0 + 2.0*omega*BetaDen*K(inst) + omega**2.0) - a1(inst) = (2.0*omega**2.0 - 2.0*K(inst)**2.0) / (K(inst)**2.0 + 2.0*omega*BetaDen*K(inst) + omega**2.0) - a0(inst) = (K(inst)**2.0 - 2.0*omega*BetaDen*K(inst) + omega**2.0)/ (K(inst)**2.0 + 2.0*omega*BetaDen*K(inst) + omega**2.0) + FP%nf_OutputSignalLast1(inst) = InputSignal + FP%nf_OutputSignalLast2(inst) = InputSignal + FP%nf_InputSignalLast1(inst) = InputSignal + FP%nf_InputSignalLast2(inst) = InputSignal + FP%nf_b2(inst) = (K**2.0 + 2.0*omega*BetaNum*K + omega**2.0)/(K**2.0 + 2.0*omega*BetaDen*K + omega**2.0) + FP%nf_b1(inst) = (2.0*omega**2.0 - 2.0*K**2.0) / (K**2.0 + 2.0*omega*BetaDen*K + omega**2.0); + FP%nf_b0(inst) = (K**2.0 - 2.0*omega*BetaNum*K + omega**2.0) / (K**2.0 + 2.0*omega*BetaDen*K + omega**2.0) + FP%nf_a1(inst) = (2.0*omega**2.0 - 2.0*K**2.0) / (K**2.0 + 2.0*omega*BetaDen*K + omega**2.0) + FP%nf_a0(inst) = (K**2.0 - 2.0*omega*BetaDen*K + omega**2.0)/ (K**2.0 + 2.0*omega*BetaDen*K + omega**2.0) ENDIF ! Body - NotchFilter = b2(inst)*InputSignal + b1(inst)*InputSignalLast1(inst) + b0(inst)*InputSignalLast2(inst) - a1(inst)*OutputSignalLast1(inst) - a0(inst)*OutputSignalLast2(inst) + NotchFilter = FP%nf_b2(inst)*InputSignal + FP%nf_b1(inst)*FP%nf_InputSignalLast1(inst) + FP%nf_b0(inst)*FP%nf_InputSignalLast2(inst) - FP%nf_a1(inst)*FP%nf_OutputSignalLast1(inst) - FP%nf_a0(inst)*FP%nf_OutputSignalLast2(inst) ! 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 - OutputSignalLast1(inst) = NotchFilter + FP%nf_InputSignalLast2(inst) = FP%nf_InputSignalLast1(inst) + FP%nf_InputSignalLast1(inst) = InputSignal ! Save input signal for next time step + FP%nf_OutputSignalLast2(inst) = FP%nf_OutputSignalLast1(inst) ! Save input signal for next time step + FP%nf_OutputSignalLast1(inst) = NotchFilter inst = inst + 1 END FUNCTION NotchFilter !------------------------------------------------------------------------------------------------------------------------------- - SUBROUTINE PreFilterMeasuredSignals(CntrPar, LocalVar, objInst, ErrVar) + SUBROUTINE PreFilterMeasuredSignals(CntrPar, LocalVar, DebugVar, objInst, ErrVar) ! Prefilter measured wind turbine signals to separate the filtering from the actual control actions - USE ROSCO_Types, ONLY : ControlParameters, LocalVariables, ObjectInstances, ErrorVariables + USE ROSCO_Types, ONLY : ControlParameters, LocalVariables, DebugVariables, ObjectInstances, ErrorVariables - TYPE(ControlParameters), INTENT(INOUT) :: CntrPar - TYPE(LocalVariables), INTENT(INOUT) :: LocalVar - TYPE(ObjectInstances), INTENT(INOUT) :: objInst - TYPE(ErrorVariables), INTENT(INOUT) :: ErrVar + TYPE(ControlParameters), INTENT(INOUT) :: CntrPar + TYPE(LocalVariables), INTENT(INOUT) :: LocalVar + TYPE(DebugVariables), INTENT(INOUT) :: DebugVar + TYPE(ObjectInstances), INTENT(INOUT) :: objInst + TYPE(ErrorVariables), INTENT(INOUT) :: ErrVar ! If there's an error, don't even try to run IF (ErrVar%aviFAIL < 0) THEN RETURN ENDIF - ! Filter the HSS (generator) and LSS (rotor) speed measurement: ! Apply Low-Pass Filter (choice between first- and second-order low-pass filter) IF (CntrPar%F_LPFType == 1) THEN - LocalVar%GenSpeedF = LPFilter(LocalVar%GenSpeed, LocalVar%DT, CntrPar%F_LPFCornerFreq, LocalVar%iStatus, .FALSE., objInst%instLPF) - LocalVar%RotSpeedF = LPFilter(LocalVar%RotSpeed, LocalVar%DT, CntrPar%F_LPFCornerFreq, LocalVar%iStatus, .FALSE., objInst%instLPF) + LocalVar%GenSpeedF = LPFilter(LocalVar%GenSpeed, LocalVar%DT, CntrPar%F_LPFCornerFreq, LocalVar%FP, LocalVar%iStatus, LocalVar%restart, objInst%instLPF) + LocalVar%RotSpeedF = LPFilter(LocalVar%RotSpeed, LocalVar%DT, CntrPar%F_LPFCornerFreq, LocalVar%FP, LocalVar%iStatus, LocalVar%restart, objInst%instLPF) ELSEIF (CntrPar%F_LPFType == 2) THEN - LocalVar%GenSpeedF = SecLPFilter(LocalVar%GenSpeed, LocalVar%DT, CntrPar%F_LPFCornerFreq, CntrPar%F_LPFDamping, LocalVar%iStatus, .FALSE., objInst%instSecLPF) ! Second-order low-pass filter on generator speed - LocalVar%RotSpeedF = SecLPFilter(LocalVar%RotSpeed, LocalVar%DT, CntrPar%F_LPFCornerFreq, CntrPar%F_LPFDamping, LocalVar%iStatus, .FALSE., objInst%instSecLPF) ! Second-order low-pass filter on generator speed - ELSE - IF (LocalVar%iStatus ==0) THEN - print *, 'No generator speed low-pass filter is selected in ROSCO (F_LPFType=0)' - ENDIF - LocalVar%GenSpeedF = LocalVar%GenSpeed - LocalVar%RotSpeedF = LocalVar%RotSpeed + LocalVar%GenSpeedF = SecLPFilter(LocalVar%GenSpeed, LocalVar%DT, CntrPar%F_LPFCornerFreq, CntrPar%F_LPFDamping, LocalVar%FP, LocalVar%iStatus, LocalVar%restart, objInst%instSecLPF) ! Second-order low-pass filter on generator speed + LocalVar%RotSpeedF = SecLPFilter(LocalVar%RotSpeed, LocalVar%DT, CntrPar%F_LPFCornerFreq, CntrPar%F_LPFDamping, LocalVar%FP, LocalVar%iStatus, LocalVar%restart, objInst%instSecLPF) ! Second-order low-pass filter on generator speed ENDIF ! Apply Notch Fitler IF (CntrPar%F_NotchType == 1 .OR. CntrPar%F_NotchType == 3) THEN - LocalVar%GenSpeedF = NotchFilter(LocalVar%GenSpeedF, LocalVar%DT, CntrPar%F_NotchCornerFreq, CntrPar%F_NotchBetaNumDen(1), CntrPar%F_NotchBetaNumDen(2), LocalVar%iStatus, .FALSE., objInst%instNotch) + LocalVar%GenSpeedF = NotchFilter(LocalVar%GenSpeedF, LocalVar%DT, CntrPar%F_NotchCornerFreq, CntrPar%F_NotchBetaNumDen(1), CntrPar%F_NotchBetaNumDen(2), LocalVar%FP, LocalVar%iStatus, LocalVar%restart, objInst%instNotch) ENDIF ! Filtering the tower fore-aft acceleration signal IF (CntrPar%Fl_Mode > 0) THEN ! Force to start at 0 - IF (LocalVar%iStatus == 0) THEN - LocalVar%NacIMU_FA_AccF = SecLPFilter(REAL(0.,DbKi), LocalVar%DT, CntrPar%F_FlCornerFreq(1), CntrPar%F_FlCornerFreq(2), LocalVar%iStatus, .FALSE., objInst%instSecLPF) ! Fixed Damping - LocalVar%FA_AccF = SecLPFilter(REAL(0.,DbKi), LocalVar%DT, CntrPar%F_FlCornerFreq(1), CntrPar%F_FlCornerFreq(2), LocalVar%iStatus, .FALSE., objInst%instSecLPF) ! Fixed Damping - ELSE - LocalVar%NacIMU_FA_AccF = SecLPFilter(LocalVar%NacIMU_FA_Acc, LocalVar%DT, CntrPar%F_FlCornerFreq(1), CntrPar%F_FlCornerFreq(2), LocalVar%iStatus, .FALSE., objInst%instSecLPF) ! Fixed Damping - LocalVar%FA_AccF = SecLPFilter(LocalVar%FA_Acc, LocalVar%DT, CntrPar%F_FlCornerFreq(1), CntrPar%F_FlCornerFreq(2), LocalVar%iStatus, .FALSE., objInst%instSecLPF) ! Fixed Damping - ENDIF - LocalVar%NacIMU_FA_AccF = HPFilter(LocalVar%NacIMU_FA_AccF, LocalVar%DT, CntrPar%F_FlHighPassFreq, LocalVar%iStatus, .FALSE., objInst%instHPF) - LocalVar%FA_AccF = HPFilter(LocalVar%FA_AccF, LocalVar%DT, CntrPar%F_FlHighPassFreq, LocalVar%iStatus, .FALSE., objInst%instHPF) + LocalVar%NacIMU_FA_AccF = SecLPFilter(LocalVar%NacIMU_FA_Acc, LocalVar%DT, CntrPar%F_FlCornerFreq(1), CntrPar%F_FlCornerFreq(2), LocalVar%FP, LocalVar%iStatus, LocalVar%restart, objInst%instSecLPF) ! Fixed Damping + LocalVar%FA_AccF = SecLPFilter(LocalVar%FA_Acc, LocalVar%DT, CntrPar%F_FlCornerFreq(1), CntrPar%F_FlCornerFreq(2), LocalVar%FP, LocalVar%iStatus, LocalVar%restart, objInst%instSecLPF) ! Fixed Damping + LocalVar%NacIMU_FA_AccF = HPFilter(LocalVar%NacIMU_FA_AccF, LocalVar%DT, CntrPar%F_FlHighPassFreq, LocalVar%FP, LocalVar%iStatus, LocalVar%restart, objInst%instHPF) + LocalVar%FA_AccF = HPFilter(LocalVar%FA_AccF, LocalVar%DT, CntrPar%F_FlHighPassFreq, LocalVar%FP, LocalVar%iStatus, LocalVar%restart, objInst%instHPF) IF (CntrPar%F_NotchType >= 2) THEN - LocalVar%NACIMU_FA_AccF = NotchFilter(LocalVar%NacIMU_FA_AccF, LocalVar%DT, CntrPar%F_NotchCornerFreq, CntrPar%F_NotchBetaNumDen(1), CntrPar%F_NotchBetaNumDen(2), LocalVar%iStatus, .FALSE., objInst%instNotch) ! Fixed Damping - LocalVar%FA_AccF = NotchFilter(LocalVar%FA_AccF, LocalVar%DT, CntrPar%F_NotchCornerFreq, CntrPar%F_NotchBetaNumDen(1), CntrPar%F_NotchBetaNumDen(2), LocalVar%iStatus, .FALSE., objInst%instNotch) ! Fixed Damping + LocalVar%NACIMU_FA_AccF = NotchFilter(LocalVar%NacIMU_FA_AccF, LocalVar%DT, CntrPar%F_NotchCornerFreq, CntrPar%F_NotchBetaNumDen(1), CntrPar%F_NotchBetaNumDen(2), LocalVar%FP, LocalVar%iStatus, LocalVar%restart, objInst%instNotch) ! Fixed Damping + LocalVar%FA_AccF = NotchFilter(LocalVar%FA_AccF, LocalVar%DT, CntrPar%F_NotchCornerFreq, CntrPar%F_NotchBetaNumDen(1), CntrPar%F_NotchBetaNumDen(2), LocalVar%FP, LocalVar%iStatus, LocalVar%restart, objInst%instNotch) ! Fixed Damping ENDIF ENDIF - LocalVar%FA_AccHPF = HPFilter(LocalVar%FA_Acc, LocalVar%DT, CntrPar%FA_HPFCornerFreq, LocalVar%iStatus, .FALSE., objInst%instHPF) + LocalVar%FA_AccHPF = HPFilter(LocalVar%FA_Acc, LocalVar%DT, CntrPar%FA_HPFCornerFreq, LocalVar%FP, LocalVar%iStatus, LocalVar%restart, objInst%instHPF) ! Filter Wind Speed Estimator Signal - LocalVar%We_Vw_F = LPFilter(LocalVar%WE_Vw, LocalVar%DT, CntrPar%F_WECornerFreq, LocalVar%iStatus,.FALSE.,objInst%instLPF) ! 30 second time constant + LocalVar%We_Vw_F = LPFilter(LocalVar%WE_Vw, LocalVar%DT,CntrPar%F_WECornerFreq, LocalVar%FP, LocalVar%iStatus, LocalVar%restart, objInst%instLPF) ! 30 second time constant ! Control commands (used by WSE, mostly) - LocalVar%VS_LastGenTrqF = SecLPFilter(LocalVar%VS_LastGenTrq, LocalVar%DT, CntrPar%F_LPFCornerFreq, 0.7_DbKi, LocalVar%iStatus, .FALSE., objInst%instSecLPF) - LocalVar%PC_PitComTF = SecLPFilter(LocalVar%PC_PitComT, LocalVar%DT, CntrPar%F_LPFCornerFreq*0.25, 0.7_DbKi, LocalVar%iStatus, .FALSE., objInst%instSecLPF) - + LocalVar%VS_LastGenTrqF = SecLPFilter(LocalVar%VS_LastGenTrq, LocalVar%DT, CntrPar%F_LPFCornerFreq, 0.7_DbKi, LocalVar%FP, LocalVar%iStatus, LocalVar%restart, objInst%instSecLPF) + LocalVar%PC_PitComTF = SecLPFilter(LocalVar%PC_PitComT, LocalVar%DT, CntrPar%F_LPFCornerFreq*0.25, 0.7_DbKi, LocalVar%FP, LocalVar%iStatus, LocalVar%restart, objInst%instSecLPF) + + ! Debug Variables + DebugVar%GenSpeedF = LocalVar%GenSpeedF + DebugVar%RotSpeedF = LocalVar%RotSpeedF + DebugVar%NacIMU_FA_AccF = LocalVar%NacIMU_FA_AccF + DebugVar%FA_AccF = LocalVar%FA_AccF END SUBROUTINE PreFilterMeasuredSignals -END MODULE Filters + END MODULE Filters \ No newline at end of file diff --git a/ROSCO/src/Functions.f90 b/ROSCO/src/Functions.f90 index 6b133502..754206a2 100644 --- a/ROSCO/src/Functions.f90 +++ b/ROSCO/src/Functions.f90 @@ -67,51 +67,51 @@ REAL(DbKi) FUNCTION ratelimit(inputSignal, inputSignalPrev, minRate, maxRate, DT END FUNCTION ratelimit !------------------------------------------------------------------------------------------------------------------------------- - REAL(DbKi) FUNCTION PIController(error, kp, ki, minValue, maxValue, DT, I0, reset, inst) + REAL(DbKi) FUNCTION PIController(error, kp, ki, minValue, maxValue, DT, I0, piP, reset, inst) + USE ROSCO_Types, ONLY : piParams + ! PI controller, with output saturation IMPLICIT NONE ! Allocate Inputs - REAL(DbKi), INTENT(IN) :: error - REAL(DbKi), INTENT(IN) :: kp - REAL(DbKi), INTENT(IN) :: ki - REAL(DbKi), INTENT(IN) :: minValue - REAL(DbKi), INTENT(IN) :: maxValue - REAL(DbKi), INTENT(IN) :: DT - INTEGER(IntKi), INTENT(INOUT) :: inst - REAL(DbKi), INTENT(IN) :: I0 - LOGICAL, INTENT(IN) :: reset + REAL(DbKi), INTENT(IN) :: error + REAL(DbKi), INTENT(IN) :: kp + REAL(DbKi), INTENT(IN) :: ki + REAL(DbKi), INTENT(IN) :: minValue + REAL(DbKi), INTENT(IN) :: maxValue + REAL(DbKi), INTENT(IN) :: DT + INTEGER(IntKi), INTENT(INOUT) :: inst + REAL(DbKi), INTENT(IN) :: I0 + TYPE(piParams), INTENT(INOUT) :: piP + LOGICAL, INTENT(IN) :: reset ! Allocate local variables INTEGER(IntKi) :: i ! Counter for making arrays REAL(DbKi) :: PTerm ! Proportional term - REAL(DbKi), DIMENSION(99), SAVE :: ITerm = (/ (real(9999.9), i = 1,99) /) ! Integral term, current. - REAL(DbKi), DIMENSION(99), SAVE :: ITermLast = (/ (real(9999.9), i = 1,99) /) ! Integral term, the last time this controller was called. Supports 99 separate instances. - INTEGER(IntKi), DIMENSION(99), SAVE :: FirstCall = (/ (1, i=1,99) /) ! First call of this function? - + ! Initialize persistent variables/arrays, and set inital condition for integrator term - IF ((FirstCall(inst) == 1) .OR. reset) THEN - ITerm(inst) = I0 - ITermLast(inst) = I0 + IF (reset) THEN + piP%ITerm(inst) = I0 + piP%ITermLast(inst) = I0 - FirstCall(inst) = 0 PIController = I0 ELSE PTerm = kp*error - ITerm(inst) = ITerm(inst) + DT*ki*error - ITerm(inst) = saturate(ITerm(inst), minValue, maxValue) - PIController = saturate(PTerm + ITerm(inst), minValue, maxValue) + piP%ITerm(inst) = piP%ITerm(inst) + DT*ki*error + piP%ITerm(inst) = saturate(piP%ITerm(inst), minValue, maxValue) + PIController = saturate(PTerm + piP%ITerm(inst), minValue, maxValue) - ITermLast(inst) = ITerm(inst) + piP%ITermLast(inst) = piP%ITerm(inst) END IF inst = inst + 1 END FUNCTION PIController !------------------------------------------------------------------------------------------------------------------------------- - REAL(DbKi) FUNCTION PIIController(error, error2, kp, ki, ki2, minValue, maxValue, DT, I0, reset, inst) + REAL(DbKi) FUNCTION PIIController(error, error2, kp, ki, ki2, minValue, maxValue, DT, I0, piP, reset, inst) ! PI controller, with output saturation. ! Added error2 term for additional integral control input - + USE ROSCO_Types, ONLY : piParams + IMPLICIT NONE ! Allocate Inputs REAL(DbKi), INTENT(IN) :: error @@ -124,35 +124,30 @@ REAL(DbKi) FUNCTION PIIController(error, error2, kp, ki, ki2, minValue, maxValue REAL(DbKi), INTENT(IN) :: DT INTEGER(IntKi), INTENT(INOUT) :: inst REAL(DbKi), INTENT(IN) :: I0 + TYPE(piParams), INTENT(INOUT) :: piP LOGICAL, INTENT(IN) :: reset ! Allocate local variables INTEGER(IntKi) :: i ! Counter for making arrays REAL(DbKi) :: PTerm ! Proportional term - REAL(DbKi), DIMENSION(99), SAVE :: ITerm = (/ (real(9999.9), i = 1,99) /) ! Integral term, current. - REAL(DbKi), DIMENSION(99), SAVE :: ITermLast = (/ (real(9999.9), i = 1,99) /) ! Integral term, the last time this controller was called. Supports 99 separate instances. - REAL(DbKi), DIMENSION(99), SAVE :: ITerm2 = (/ (real(9999.9), i = 1,99) /) ! Second Integral term, current. - REAL(DbKi), DIMENSION(99), SAVE :: ITermLast2 = (/ (real(9999.9), i = 1,99) /) ! Second Integral term, the last time this controller was called. Supports 99 separate instances. - INTEGER(IntKi), DIMENSION(99), SAVE :: FirstCall = (/ (1, i=1,99) /) ! First call of this function? - + ! Initialize persistent variables/arrays, and set inital condition for integrator term - IF ((FirstCall(inst) == 1) .OR. reset) THEN - ITerm(inst) = I0 - ITermLast(inst) = I0 - ITerm2(inst) = I0 - ITermLast2(inst) = I0 + IF (reset) THEN + piP%ITerm(inst) = I0 + piP%ITermLast(inst) = I0 + piP%ITerm2(inst) = I0 + piP%ITermLast2(inst) = I0 - FirstCall(inst) = 0 PIIController = I0 ELSE PTerm = kp*error - ITerm(inst) = ITerm(inst) + DT*ki*error - ITerm2(inst) = ITerm2(inst) + DT*ki2*error2 - ITerm(inst) = saturate(ITerm(inst), minValue, maxValue) - ITerm2(inst) = saturate(ITerm2(inst), minValue, maxValue) - PIIController = PTerm + ITerm(inst) + ITerm2(inst) + piP%ITerm(inst) = piP%ITerm(inst) + DT*ki*error + piP%ITerm2(inst) = piP%ITerm2(inst) + DT*ki2*error2 + piP%ITerm(inst) = saturate(piP%ITerm(inst), minValue, maxValue) + piP%ITerm2(inst) = saturate(piP%ITerm2(inst), minValue, maxValue) + PIIController = PTerm + piP%ITerm(inst) + piP%ITerm2(inst) PIIController = saturate(PIIController, minValue, maxValue) - ITermLast(inst) = ITerm(inst) + piP%ITermLast(inst) = piP%ITerm(inst) END IF inst = inst + 1 @@ -415,36 +410,6 @@ FUNCTION identity(n) RESULT(A) END FUNCTION identity -!------------------------------------------------------------------------------------------------------------------------------- - REAL(DbKi) FUNCTION DFController(error, Kd, Tf, DT, inst) - ! DF controller, with output saturation - - IMPLICIT NONE - ! Inputs - REAL(DbKi), INTENT(IN) :: error - REAL(DbKi), INTENT(IN) :: kd - REAL(DbKi), INTENT(IN) :: tf - REAL(DbKi), INTENT(IN) :: DT - INTEGER(IntKi), INTENT(IN) :: inst - ! Local - REAL(DbKi) :: B ! - INTEGER(IntKi) :: i ! Counter for making arrays - REAL(DbKi), DIMENSION(99), SAVE :: errorLast = (/ (0, i=1,99) /) ! - REAL(DbKi), DIMENSION(99), SAVE :: DFControllerLast = (/ (0, i=1,99) /) ! - INTEGER(IntKi), DIMENSION(99), SAVE :: FirstCall = (/ (1, i=1,99) /) ! First call of this function? - - ! Initialize persistent variables/arrays, and set inital condition for integrator term - ! IF (FirstCall(inst) == 1) THEN - ! FirstCall(inst) = 0 - ! END IF - - B = 2.0/DT - DFController = (Kd*B)/(B*Tf+1.0)*error - (Kd*B)/(B*Tf+1.0)*errorLast(inst) - (1.0-B*Tf)/(B*Tf+1.0)*DFControllerLast(inst) - - errorLast(inst) = error - DFControllerLast(inst) = DFController - END FUNCTION DFController - !------------------------------------------------------------------------------------------------------------------------------- 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 @@ -545,116 +510,6 @@ REAL(DbKi) FUNCTION AeroDynTorque(RotSpeed, BldPitch, LocalVar, CntrPar, PerfDat END FUNCTION AeroDynTorque -!------------------------------------------------------------------------------------------------------------------------------- - SUBROUTINE Debug(LocalVar, CntrPar, DebugVar, avrSWAP, RootName, size_avcOUTNAME) - ! Debug routine, defines what gets printed to DEBUG.dbg if LoggingLevel = 1 - - USE, INTRINSIC :: ISO_C_Binding - USE ROSCO_Types, ONLY : LocalVariables, ControlParameters, DebugVariables - - IMPLICIT NONE - - TYPE(ControlParameters), INTENT(IN) :: CntrPar - TYPE(LocalVariables), INTENT(IN) :: LocalVar - TYPE(DebugVariables), INTENT(IN) :: DebugVar - - INTEGER(IntKi), INTENT(IN) :: size_avcOUTNAME - INTEGER(IntKi) :: I , nDebugOuts ! Generic index. - CHARACTER(1), PARAMETER :: Tab = CHAR(9) ! The tab character. - CHARACTER(29), PARAMETER :: FmtDat = "(F10.3,TR5,99(ES10.3E2,TR5:))" ! The format of the debugging data - INTEGER(IntKi), PARAMETER :: UnDb = 85 ! I/O unit for the debugging information - INTEGER(IntKi), PARAMETER :: UnDb2 = 86 ! I/O unit for the debugging information, avrSWAP - REAL(ReKi), 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] - CHARACTER(200) :: Version ! git version of ROSCO - CHARACTER(10) :: DebugOutStr1, DebugOutStr2, DebugOutStr3, DebugOutStr4, DebugOutStr5, & - DebugOutStr6, DebugOutStr7, DebugOutStr8, DebugOutStr9, DebugOutStr10, & - DebugOutStr11, DebugOutStr12, DebugOutStr13, DebugOutStr14, DebugOutStr15, & - DebugOutStr16, DebugOutStr17, DebugOutStr18, DebugOutStr19, DebugOutStr20 - CHARACTER(10) :: DebugOutUni1, DebugOutUni2, DebugOutUni3, DebugOutUni4, DebugOutUni5, & - DebugOutUni6, DebugOutUni7, DebugOutUni8, DebugOutUni9, DebugOutUni10, & - DebugOutUni11, DebugOutUni12, DebugOutUni13, DebugOutUni14, DebugOutUni15, & - DebugOutUni16, DebugOutUni17, DebugOutUni18, DebugOutUni19, DebugOutUni20 - CHARACTER(10), ALLOCATABLE :: DebugOutStrings(:), DebugOutUnits(:) - REAL(DbKi), ALLOCATABLE :: DebugOutData(:) - - ! Set up Debug Strings and Data - ! Note that Debug strings have 10 character limit - nDebugOuts = 18 - ALLOCATE(DebugOutData(nDebugOuts)) - ! Header Unit Variable - ! Filters - DebugOutStr1 = 'FA_AccF'; DebugOutUni1 = '(rad/s^2)'; DebugOutData(1) = LocalVar%NacIMU_FA_AccF - DebugOutStr2 = 'FA_AccR'; DebugOutUni2 = '(rad/s^2)'; DebugOutData(2) = LocalVar%NacIMU_FA_Acc - DebugOutStr3 = 'RotSpeed'; DebugOutUni3 = '(rad/s)'; DebugOutData(3) = LocalVar%RotSpeed - DebugOutStr4 = 'RotSpeedF'; DebugOutUni4 = '(rad/s)'; DebugOutData(4) = LocalVar%RotSpeedF - DebugOutStr5 = 'GenSpeed'; DebugOutUni5 = '(rad/s)'; DebugOutData(5) = LocalVar%GenSpeed - DebugOutStr6 = 'GenSpeedF'; DebugOutUni6 = '(rad/s)'; DebugOutData(6) = LocalVar%GenSpeedF - ! Floating - DebugOutStr7 = 'FA_Acc'; DebugOutUni7 = '(m/s^2)'; DebugOutData(7) = LocalVar%FA_Acc - DebugOutStr8 = 'Fl_Pitcom'; DebugOutUni8 = '(rad)'; DebugOutData(8) = LocalVar%Fl_Pitcom - DebugOutStr9 = 'PC_MinPit'; DebugOutUni9 = '(rad)'; DebugOutData(9) = LocalVar%PC_MinPit - DebugOutStr10 = 'SS_dOmF'; DebugOutUni10 = '(rad/s)'; DebugOutData(10) = LocalVar%SS_DelOmegaF - ! WSE - DebugOutStr11 = 'WE_Vw'; DebugOutUni11 = '(m/s)'; DebugOutData(11) = LocalVar%WE_Vw - DebugOutStr12 = 'WE_b'; DebugOutUni12 = '(deg)'; DebugOutData(12) = DebugVar%WE_b - DebugOutStr13 = 'WE_t'; DebugOutUni13 = '(Nm)'; DebugOutData(13) = DebugVar%WE_t - DebugOutStr14 = 'WE_w'; DebugOutUni14 = '(rad/s)'; DebugOutData(14) = DebugVar%WE_w - DebugOutStr15 = 'WE_Vm'; DebugOutUni15 = '(m/s)'; DebugOutData(15) = DebugVar%WE_Vm - DebugOutStr16 = 'WE_Vt'; DebugOutUni16 = '(m/s)'; DebugOutData(16) = DebugVar%WE_Vt - DebugOutStr17 = 'WE_lambda'; DebugOutUni17 = '(-)'; DebugOutData(17) = DebugVar%WE_lambda - DebugOutStr18 = 'WE_Cp'; DebugOutUni18 = '(-)'; DebugOutData(18) = DebugVar%WE_Cp - - Allocate(DebugOutStrings(nDebugOuts)) - Allocate(DebugOutUnits(nDebugOuts)) - DebugOutStrings = [CHARACTER(10) :: DebugOutStr1, DebugOutStr2, DebugOutStr3, DebugOutStr4, & - DebugOutStr5, DebugOutStr6, DebugOutStr7, DebugOutStr8, & - DebugOutStr9, DebugOutStr10, DebugOutStr11, DebugOutStr12, & - DebugOutStr13, DebugOutStr14, DebugOutStr15, DebugOutStr16, & - DebugOutStr17, DebugOutStr18] - DebugOutUnits = [CHARACTER(10) :: DebugOutUni1, DebugOutUni2, DebugOutUni3, DebugOutUni4, & - DebugOutUni5, DebugOutUni6, DebugOutUni7, DebugOutUni8, & - DebugOutUni9, DebugOutUni10, DebugOutUni11, DebugOutUni12, & - DebugOutUni13, DebugOutUni14, DebugOutUni15, DebugOutUni1, & - DebugOutUni17, DebugOutUni18] - - ! 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: - ! Note that the headers will be Truncated to 10 characters!! - IF (CntrPar%LoggingLevel > 0) THEN - OPEN(unit=UnDb, FILE=RootName(1:size_avcOUTNAME-5)//'RO.dbg') - WRITE (UnDb,*) 'Generated on '//CurDate()//' at '//CurTime()//' using ROSCO-'//TRIM(rosco_version) - WRITE (UnDb,'(99(a10,TR5:))') 'Time', DebugOutStrings - WRITE (UnDb,'(99(a10,TR5:))') '(sec)', DebugOutUnits - END IF - - IF (CntrPar%LoggingLevel > 1) THEN - OPEN(unit=UnDb2, FILE=RootName(1:size_avcOUTNAME-5)//'RO.dbg2') - 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_DbKi) == 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') - END IF - - ENDIF - - ! Write debug files - IF (CntrPar%LoggingLevel > 0) THEN - WRITE (UnDb,FmtDat) LocalVar%Time, DebugOutData - END IF - - IF (CntrPar%LoggingLevel > 1) THEN - WRITE (UnDb2,FmtDat) LocalVar%Time, avrSWAP(1:85) - END IF - - END SUBROUTINE Debug - !------------------------------------------------------------------------------------------------------------------------------- ! Copied from NWTC_IO.f90 diff --git a/ROSCO/src/ROSCO_IO.f90 b/ROSCO/src/ROSCO_IO.f90 new file mode 100644 index 00000000..10dd30ab --- /dev/null +++ b/ROSCO/src/ROSCO_IO.f90 @@ -0,0 +1,540 @@ +! ROSCO IO +! This file is automatically generated by write_registry.py using ROSCO v2.4.1 +! For any modification to the registry, please edit the rosco_types.yaml accordingly + +MODULE ROSCO_IO + USE, INTRINSIC :: ISO_C_Binding + USE ROSCO_Types + USE ReadSetParameters + USE Constants +IMPLICIT NONE + +CONTAINS + +SUBROUTINE WriteRestartFile(LocalVar, CntrPar, objInst, RootName, size_avcOUTNAME) + TYPE(LocalVariables), INTENT(IN) :: LocalVar + TYPE(ControlParameters), INTENT(INOUT) :: CntrPar + TYPE(ObjectInstances), INTENT(INOUT) :: objInst + INTEGER(IntKi), INTENT(IN) :: size_avcOUTNAME + CHARACTER(size_avcOUTNAME-1), INTENT(IN) :: RootName + + INTEGER(IntKi), PARAMETER :: Un = 87 ! I/O unit for pack/unpack (checkpoint & restart) + INTEGER(IntKi) :: I ! Generic index. + CHARACTER(128) :: InFile ! Input checkpoint file + INTEGER(IntKi) :: ErrStat + CHARACTER(128) :: ErrMsg + CHARACTER(128) :: n_t_global ! timestep number as a string + + WRITE(n_t_global, '(I0.0)' ) NINT(LocalVar%Time/LocalVar%DT) + InFile = RootName(1:size_avcOUTNAME-5)//TRIM( n_t_global )//'.RO.chkp' + OPEN(unit=Un, FILE=TRIM(InFile), STATUS='UNKNOWN', FORM='UNFORMATTED' , ACCESS='STREAM', IOSTAT=ErrStat, ACTION='WRITE' ) + + IF ( ErrStat /= 0 ) THEN + ErrMsg = 'Cannot open file //TRIM( InFile )//. Another program may have locked it for writing.' + + ELSE + WRITE( Un, IOSTAT=ErrStat) LocalVar%iStatus + WRITE( Un, IOSTAT=ErrStat) LocalVar%Time + WRITE( Un, IOSTAT=ErrStat) LocalVar%DT + WRITE( Un, IOSTAT=ErrStat) LocalVar%VS_GenPwr + WRITE( Un, IOSTAT=ErrStat) LocalVar%GenSpeed + WRITE( Un, IOSTAT=ErrStat) LocalVar%RotSpeed + WRITE( Un, IOSTAT=ErrStat) LocalVar%Y_M + WRITE( Un, IOSTAT=ErrStat) LocalVar%HorWindV + WRITE( Un, IOSTAT=ErrStat) LocalVar%rootMOOP(1) + WRITE( Un, IOSTAT=ErrStat) LocalVar%rootMOOP(2) + WRITE( Un, IOSTAT=ErrStat) LocalVar%rootMOOP(3) + WRITE( Un, IOSTAT=ErrStat) LocalVar%BlPitch(1) + WRITE( Un, IOSTAT=ErrStat) LocalVar%BlPitch(2) + WRITE( Un, IOSTAT=ErrStat) LocalVar%BlPitch(3) + WRITE( Un, IOSTAT=ErrStat) LocalVar%Azimuth + WRITE( Un, IOSTAT=ErrStat) LocalVar%NumBl + WRITE( Un, IOSTAT=ErrStat) LocalVar%FA_Acc + WRITE( Un, IOSTAT=ErrStat) LocalVar%NacIMU_FA_Acc + WRITE( Un, IOSTAT=ErrStat) LocalVar%FA_AccHPF + WRITE( Un, IOSTAT=ErrStat) LocalVar%FA_AccHPFI + WRITE( Un, IOSTAT=ErrStat) LocalVar%FA_PitCom(1) + WRITE( Un, IOSTAT=ErrStat) LocalVar%FA_PitCom(2) + WRITE( Un, IOSTAT=ErrStat) LocalVar%FA_PitCom(3) + WRITE( Un, IOSTAT=ErrStat) LocalVar%RotSpeedF + WRITE( Un, IOSTAT=ErrStat) LocalVar%GenSpeedF + WRITE( Un, IOSTAT=ErrStat) LocalVar%GenTq + WRITE( Un, IOSTAT=ErrStat) LocalVar%GenTqMeas + WRITE( Un, IOSTAT=ErrStat) LocalVar%GenArTq + WRITE( Un, IOSTAT=ErrStat) LocalVar%GenBrTq + WRITE( Un, IOSTAT=ErrStat) LocalVar%IPC_PitComF(1) + WRITE( Un, IOSTAT=ErrStat) LocalVar%IPC_PitComF(2) + WRITE( Un, IOSTAT=ErrStat) LocalVar%IPC_PitComF(3) + WRITE( Un, IOSTAT=ErrStat) LocalVar%PC_KP + WRITE( Un, IOSTAT=ErrStat) LocalVar%PC_KI + WRITE( Un, IOSTAT=ErrStat) LocalVar%PC_KD + WRITE( Un, IOSTAT=ErrStat) LocalVar%PC_TF + WRITE( Un, IOSTAT=ErrStat) LocalVar%PC_MaxPit + WRITE( Un, IOSTAT=ErrStat) LocalVar%PC_MinPit + WRITE( Un, IOSTAT=ErrStat) LocalVar%PC_PitComT + WRITE( Un, IOSTAT=ErrStat) LocalVar%PC_PitComT_Last + WRITE( Un, IOSTAT=ErrStat) LocalVar%PC_PitComTF + WRITE( Un, IOSTAT=ErrStat) LocalVar%PC_PitComT_IPC(1) + WRITE( Un, IOSTAT=ErrStat) LocalVar%PC_PitComT_IPC(2) + WRITE( Un, IOSTAT=ErrStat) LocalVar%PC_PitComT_IPC(3) + WRITE( Un, IOSTAT=ErrStat) LocalVar%PC_PwrErr + WRITE( Un, IOSTAT=ErrStat) LocalVar%PC_SpdErr + WRITE( Un, IOSTAT=ErrStat) LocalVar%IPC_IntAxisTilt_1P + WRITE( Un, IOSTAT=ErrStat) LocalVar%IPC_IntAxisYaw_1P + WRITE( Un, IOSTAT=ErrStat) LocalVar%IPC_IntAxisTilt_2P + WRITE( Un, IOSTAT=ErrStat) LocalVar%IPC_IntAxisYaw_2P + WRITE( Un, IOSTAT=ErrStat) LocalVar%PC_State + WRITE( Un, IOSTAT=ErrStat) LocalVar%PitCom(1) + WRITE( Un, IOSTAT=ErrStat) LocalVar%PitCom(2) + WRITE( Un, IOSTAT=ErrStat) LocalVar%PitCom(3) + WRITE( Un, IOSTAT=ErrStat) LocalVar%SS_DelOmegaF + WRITE( Un, IOSTAT=ErrStat) LocalVar%TestType + WRITE( Un, IOSTAT=ErrStat) LocalVar%VS_MaxTq + WRITE( Un, IOSTAT=ErrStat) LocalVar%VS_LastGenTrq + WRITE( Un, IOSTAT=ErrStat) LocalVar%VS_LastGenPwr + WRITE( Un, IOSTAT=ErrStat) LocalVar%VS_MechGenPwr + WRITE( Un, IOSTAT=ErrStat) LocalVar%VS_SpdErrAr + WRITE( Un, IOSTAT=ErrStat) LocalVar%VS_SpdErrBr + WRITE( Un, IOSTAT=ErrStat) LocalVar%VS_SpdErr + WRITE( Un, IOSTAT=ErrStat) LocalVar%VS_State + WRITE( Un, IOSTAT=ErrStat) LocalVar%VS_Rgn3Pitch + WRITE( Un, IOSTAT=ErrStat) LocalVar%WE_Vw + WRITE( Un, IOSTAT=ErrStat) LocalVar%WE_Vw_F + WRITE( Un, IOSTAT=ErrStat) LocalVar%WE_VwI + WRITE( Un, IOSTAT=ErrStat) LocalVar%WE_VwIdot + WRITE( Un, IOSTAT=ErrStat) LocalVar%VS_LastGenTrqF + WRITE( Un, IOSTAT=ErrStat) LocalVar%Y_AccErr + WRITE( Un, IOSTAT=ErrStat) LocalVar%Y_ErrLPFFast + WRITE( Un, IOSTAT=ErrStat) LocalVar%Y_ErrLPFSlow + WRITE( Un, IOSTAT=ErrStat) LocalVar%Y_MErr + WRITE( Un, IOSTAT=ErrStat) LocalVar%Y_YawEndT + WRITE( Un, IOSTAT=ErrStat) LocalVar%SD + WRITE( Un, IOSTAT=ErrStat) LocalVar%Fl_PitCom + WRITE( Un, IOSTAT=ErrStat) LocalVar%NACIMU_FA_AccF + WRITE( Un, IOSTAT=ErrStat) LocalVar%FA_AccF + WRITE( Un, IOSTAT=ErrStat) LocalVar%Flp_Angle(1) + WRITE( Un, IOSTAT=ErrStat) LocalVar%Flp_Angle(2) + WRITE( Un, IOSTAT=ErrStat) LocalVar%Flp_Angle(3) + WRITE( Un, IOSTAT=ErrStat) LocalVar%RootMyb_Last(1) + WRITE( Un, IOSTAT=ErrStat) LocalVar%RootMyb_Last(2) + WRITE( Un, IOSTAT=ErrStat) LocalVar%RootMyb_Last(3) + WRITE( Un, IOSTAT=ErrStat) LocalVar%ACC_INFILE_SIZE + WRITE( Un, IOSTAT=ErrStat) LocalVar%ACC_INFILE + WRITE( Un, IOSTAT=ErrStat) LocalVar%restart + WRITE( Un, IOSTAT=ErrStat) LocalVar%WE%om_r + WRITE( Un, IOSTAT=ErrStat) LocalVar%WE%v_t + WRITE( Un, IOSTAT=ErrStat) LocalVar%WE%v_m + WRITE( Un, IOSTAT=ErrStat) LocalVar%WE%v_h + WRITE( Un, IOSTAT=ErrStat) LocalVar%WE%P + WRITE( Un, IOSTAT=ErrStat) LocalVar%WE%xh + WRITE( Un, IOSTAT=ErrStat) LocalVar%WE%K + WRITE( Un, IOSTAT=ErrStat) LocalVar%FP%lpf1_a1 + WRITE( Un, IOSTAT=ErrStat) LocalVar%FP%lpf1_a0 + WRITE( Un, IOSTAT=ErrStat) LocalVar%FP%lpf1_b1 + WRITE( Un, IOSTAT=ErrStat) LocalVar%FP%lpf1_b0 + WRITE( Un, IOSTAT=ErrStat) LocalVar%FP%lpf1_InputSignalLast + WRITE( Un, IOSTAT=ErrStat) LocalVar%FP%lpf1_OutputSignalLast + WRITE( Un, IOSTAT=ErrStat) LocalVar%FP%lpf2_a2 + WRITE( Un, IOSTAT=ErrStat) LocalVar%FP%lpf2_a1 + WRITE( Un, IOSTAT=ErrStat) LocalVar%FP%lpf2_a0 + WRITE( Un, IOSTAT=ErrStat) LocalVar%FP%lpf2_b2 + WRITE( Un, IOSTAT=ErrStat) LocalVar%FP%lpf2_b1 + WRITE( Un, IOSTAT=ErrStat) LocalVar%FP%lpf2_b0 + WRITE( Un, IOSTAT=ErrStat) LocalVar%FP%lpf2_InputSignalLast2 + WRITE( Un, IOSTAT=ErrStat) LocalVar%FP%lpf2_OutputSignalLast2 + WRITE( Un, IOSTAT=ErrStat) LocalVar%FP%lpf2_InputSignalLast1 + WRITE( Un, IOSTAT=ErrStat) LocalVar%FP%lpf2_OutputSignalLast1 + WRITE( Un, IOSTAT=ErrStat) LocalVar%FP%hpf_InputSignalLast + WRITE( Un, IOSTAT=ErrStat) LocalVar%FP%hpf_OutputSignalLast + WRITE( Un, IOSTAT=ErrStat) LocalVar%FP%nfs_OutputSignalLast1 + WRITE( Un, IOSTAT=ErrStat) LocalVar%FP%nfs_OutputSignalLast2 + WRITE( Un, IOSTAT=ErrStat) LocalVar%FP%nfs_InputSignalLast1 + WRITE( Un, IOSTAT=ErrStat) LocalVar%FP%nfs_InputSignalLast2 + WRITE( Un, IOSTAT=ErrStat) LocalVar%FP%nfs_b2 + WRITE( Un, IOSTAT=ErrStat) LocalVar%FP%nfs_b0 + WRITE( Un, IOSTAT=ErrStat) LocalVar%FP%nfs_a2 + WRITE( Un, IOSTAT=ErrStat) LocalVar%FP%nfs_a1 + WRITE( Un, IOSTAT=ErrStat) LocalVar%FP%nfs_a0 + WRITE( Un, IOSTAT=ErrStat) LocalVar%FP%nf_OutputSignalLast1 + WRITE( Un, IOSTAT=ErrStat) LocalVar%FP%nf_OutputSignalLast2 + WRITE( Un, IOSTAT=ErrStat) LocalVar%FP%nf_InputSignalLast1 + WRITE( Un, IOSTAT=ErrStat) LocalVar%FP%nf_InputSignalLast2 + WRITE( Un, IOSTAT=ErrStat) LocalVar%FP%nf_b2 + WRITE( Un, IOSTAT=ErrStat) LocalVar%FP%nf_b1 + WRITE( Un, IOSTAT=ErrStat) LocalVar%FP%nf_b0 + WRITE( Un, IOSTAT=ErrStat) LocalVar%FP%nf_a1 + WRITE( Un, IOSTAT=ErrStat) LocalVar%FP%nf_a0 + WRITE( Un, IOSTAT=ErrStat) LocalVar%piP%ITerm + WRITE( Un, IOSTAT=ErrStat) LocalVar%piP%ITermLast + WRITE( Un, IOSTAT=ErrStat) LocalVar%piP%ITerm2 + WRITE( Un, IOSTAT=ErrStat) LocalVar%piP%ITermLast2 + WRITE( Un, IOSTAT=ErrStat) objInst%instLPF + WRITE( Un, IOSTAT=ErrStat) objInst%instSecLPF + WRITE( Un, IOSTAT=ErrStat) objInst%instHPF + WRITE( Un, IOSTAT=ErrStat) objInst%instNotchSlopes + WRITE( Un, IOSTAT=ErrStat) objInst%instNotch + WRITE( Un, IOSTAT=ErrStat) objInst%instPI + Close ( Un ) + ENDIF +END SUBROUTINE WriteRestartFile + + +SUBROUTINE ReadRestartFile(avrSWAP, LocalVar, CntrPar, objInst, PerfData, RootName, size_avcOUTNAME, ErrVar) + TYPE(LocalVariables), INTENT(INOUT) :: LocalVar + TYPE(ControlParameters), INTENT(INOUT) :: CntrPar + TYPE(ObjectInstances), INTENT(INOUT) :: objInst + TYPE(PerformanceData), INTENT(INOUT) :: PerfData + TYPE(ErrorVariables), INTENT(INOUT) :: ErrVar + REAL(C_FLOAT), INTENT(IN) :: avrSWAP(*) + INTEGER(IntKi), INTENT(IN) :: size_avcOUTNAME + CHARACTER(size_avcOUTNAME-1), INTENT(IN) :: RootName + + INTEGER(IntKi), PARAMETER :: Un = 87 ! I/O unit for pack/unpack (checkpoint & restart) + INTEGER(IntKi) :: I ! Generic index. + CHARACTER(128) :: InFile ! Input checkpoint file + INTEGER(IntKi) :: ErrStat + CHARACTER(128) :: ErrMsg + CHARACTER(128) :: n_t_global ! timestep number as a string + + WRITE(n_t_global, '(I0.0)' ) NINT(avrSWAP(2)/avrSWAP(3)) + InFile = RootName(1:size_avcOUTNAME-5)//TRIM( n_t_global )//'.RO.chkp' + OPEN(unit=Un, FILE=TRIM(InFile), STATUS='UNKNOWN', FORM='UNFORMATTED' , ACCESS='STREAM', IOSTAT=ErrStat, ACTION='READ' ) + + IF ( ErrStat /= 0 ) THEN + ErrMsg = 'Cannot open file //TRIM( InFile )//. Another program may have locked it for writing.' + + ELSE + READ( Un, IOSTAT=ErrStat) LocalVar%iStatus + READ( Un, IOSTAT=ErrStat) LocalVar%Time + READ( Un, IOSTAT=ErrStat) LocalVar%DT + READ( Un, IOSTAT=ErrStat) LocalVar%VS_GenPwr + READ( Un, IOSTAT=ErrStat) LocalVar%GenSpeed + READ( Un, IOSTAT=ErrStat) LocalVar%RotSpeed + READ( Un, IOSTAT=ErrStat) LocalVar%Y_M + READ( Un, IOSTAT=ErrStat) LocalVar%HorWindV + READ( Un, IOSTAT=ErrStat) LocalVar%rootMOOP(1) + READ( Un, IOSTAT=ErrStat) LocalVar%rootMOOP(2) + READ( Un, IOSTAT=ErrStat) LocalVar%rootMOOP(3) + READ( Un, IOSTAT=ErrStat) LocalVar%BlPitch(1) + READ( Un, IOSTAT=ErrStat) LocalVar%BlPitch(2) + READ( Un, IOSTAT=ErrStat) LocalVar%BlPitch(3) + READ( Un, IOSTAT=ErrStat) LocalVar%Azimuth + READ( Un, IOSTAT=ErrStat) LocalVar%NumBl + READ( Un, IOSTAT=ErrStat) LocalVar%FA_Acc + READ( Un, IOSTAT=ErrStat) LocalVar%NacIMU_FA_Acc + READ( Un, IOSTAT=ErrStat) LocalVar%FA_AccHPF + READ( Un, IOSTAT=ErrStat) LocalVar%FA_AccHPFI + READ( Un, IOSTAT=ErrStat) LocalVar%FA_PitCom(1) + READ( Un, IOSTAT=ErrStat) LocalVar%FA_PitCom(2) + READ( Un, IOSTAT=ErrStat) LocalVar%FA_PitCom(3) + READ( Un, IOSTAT=ErrStat) LocalVar%RotSpeedF + READ( Un, IOSTAT=ErrStat) LocalVar%GenSpeedF + READ( Un, IOSTAT=ErrStat) LocalVar%GenTq + READ( Un, IOSTAT=ErrStat) LocalVar%GenTqMeas + READ( Un, IOSTAT=ErrStat) LocalVar%GenArTq + READ( Un, IOSTAT=ErrStat) LocalVar%GenBrTq + READ( Un, IOSTAT=ErrStat) LocalVar%IPC_PitComF(1) + READ( Un, IOSTAT=ErrStat) LocalVar%IPC_PitComF(2) + READ( Un, IOSTAT=ErrStat) LocalVar%IPC_PitComF(3) + READ( Un, IOSTAT=ErrStat) LocalVar%PC_KP + READ( Un, IOSTAT=ErrStat) LocalVar%PC_KI + READ( Un, IOSTAT=ErrStat) LocalVar%PC_KD + READ( Un, IOSTAT=ErrStat) LocalVar%PC_TF + READ( Un, IOSTAT=ErrStat) LocalVar%PC_MaxPit + READ( Un, IOSTAT=ErrStat) LocalVar%PC_MinPit + READ( Un, IOSTAT=ErrStat) LocalVar%PC_PitComT + READ( Un, IOSTAT=ErrStat) LocalVar%PC_PitComT_Last + READ( Un, IOSTAT=ErrStat) LocalVar%PC_PitComTF + READ( Un, IOSTAT=ErrStat) LocalVar%PC_PitComT_IPC(1) + READ( Un, IOSTAT=ErrStat) LocalVar%PC_PitComT_IPC(2) + READ( Un, IOSTAT=ErrStat) LocalVar%PC_PitComT_IPC(3) + READ( Un, IOSTAT=ErrStat) LocalVar%PC_PwrErr + READ( Un, IOSTAT=ErrStat) LocalVar%PC_SpdErr + READ( Un, IOSTAT=ErrStat) LocalVar%IPC_IntAxisTilt_1P + READ( Un, IOSTAT=ErrStat) LocalVar%IPC_IntAxisYaw_1P + READ( Un, IOSTAT=ErrStat) LocalVar%IPC_IntAxisTilt_2P + READ( Un, IOSTAT=ErrStat) LocalVar%IPC_IntAxisYaw_2P + READ( Un, IOSTAT=ErrStat) LocalVar%PC_State + READ( Un, IOSTAT=ErrStat) LocalVar%PitCom(1) + READ( Un, IOSTAT=ErrStat) LocalVar%PitCom(2) + READ( Un, IOSTAT=ErrStat) LocalVar%PitCom(3) + READ( Un, IOSTAT=ErrStat) LocalVar%SS_DelOmegaF + READ( Un, IOSTAT=ErrStat) LocalVar%TestType + READ( Un, IOSTAT=ErrStat) LocalVar%VS_MaxTq + READ( Un, IOSTAT=ErrStat) LocalVar%VS_LastGenTrq + READ( Un, IOSTAT=ErrStat) LocalVar%VS_LastGenPwr + READ( Un, IOSTAT=ErrStat) LocalVar%VS_MechGenPwr + READ( Un, IOSTAT=ErrStat) LocalVar%VS_SpdErrAr + READ( Un, IOSTAT=ErrStat) LocalVar%VS_SpdErrBr + READ( Un, IOSTAT=ErrStat) LocalVar%VS_SpdErr + READ( Un, IOSTAT=ErrStat) LocalVar%VS_State + READ( Un, IOSTAT=ErrStat) LocalVar%VS_Rgn3Pitch + READ( Un, IOSTAT=ErrStat) LocalVar%WE_Vw + READ( Un, IOSTAT=ErrStat) LocalVar%WE_Vw_F + READ( Un, IOSTAT=ErrStat) LocalVar%WE_VwI + READ( Un, IOSTAT=ErrStat) LocalVar%WE_VwIdot + READ( Un, IOSTAT=ErrStat) LocalVar%VS_LastGenTrqF + READ( Un, IOSTAT=ErrStat) LocalVar%Y_AccErr + READ( Un, IOSTAT=ErrStat) LocalVar%Y_ErrLPFFast + READ( Un, IOSTAT=ErrStat) LocalVar%Y_ErrLPFSlow + READ( Un, IOSTAT=ErrStat) LocalVar%Y_MErr + READ( Un, IOSTAT=ErrStat) LocalVar%Y_YawEndT + READ( Un, IOSTAT=ErrStat) LocalVar%SD + READ( Un, IOSTAT=ErrStat) LocalVar%Fl_PitCom + READ( Un, IOSTAT=ErrStat) LocalVar%NACIMU_FA_AccF + READ( Un, IOSTAT=ErrStat) LocalVar%FA_AccF + READ( Un, IOSTAT=ErrStat) LocalVar%Flp_Angle(1) + READ( Un, IOSTAT=ErrStat) LocalVar%Flp_Angle(2) + READ( Un, IOSTAT=ErrStat) LocalVar%Flp_Angle(3) + READ( Un, IOSTAT=ErrStat) LocalVar%RootMyb_Last(1) + READ( Un, IOSTAT=ErrStat) LocalVar%RootMyb_Last(2) + READ( Un, IOSTAT=ErrStat) LocalVar%RootMyb_Last(3) + READ( Un, IOSTAT=ErrStat) LocalVar%ACC_INFILE_SIZE + ALLOCATE(LocalVar%ACC_INFILE(LocalVar%ACC_INFILE_SIZE)) + READ( Un, IOSTAT=ErrStat) LocalVar%ACC_INFILE + READ( Un, IOSTAT=ErrStat) LocalVar%restart + READ( Un, IOSTAT=ErrStat) LocalVar%WE%om_r + READ( Un, IOSTAT=ErrStat) LocalVar%WE%v_t + READ( Un, IOSTAT=ErrStat) LocalVar%WE%v_m + READ( Un, IOSTAT=ErrStat) LocalVar%WE%v_h + READ( Un, IOSTAT=ErrStat) LocalVar%WE%P + READ( Un, IOSTAT=ErrStat) LocalVar%WE%xh + READ( Un, IOSTAT=ErrStat) LocalVar%WE%K + READ( Un, IOSTAT=ErrStat) LocalVar%FP%lpf1_a1 + READ( Un, IOSTAT=ErrStat) LocalVar%FP%lpf1_a0 + READ( Un, IOSTAT=ErrStat) LocalVar%FP%lpf1_b1 + READ( Un, IOSTAT=ErrStat) LocalVar%FP%lpf1_b0 + READ( Un, IOSTAT=ErrStat) LocalVar%FP%lpf1_InputSignalLast + READ( Un, IOSTAT=ErrStat) LocalVar%FP%lpf1_OutputSignalLast + READ( Un, IOSTAT=ErrStat) LocalVar%FP%lpf2_a2 + READ( Un, IOSTAT=ErrStat) LocalVar%FP%lpf2_a1 + READ( Un, IOSTAT=ErrStat) LocalVar%FP%lpf2_a0 + READ( Un, IOSTAT=ErrStat) LocalVar%FP%lpf2_b2 + READ( Un, IOSTAT=ErrStat) LocalVar%FP%lpf2_b1 + READ( Un, IOSTAT=ErrStat) LocalVar%FP%lpf2_b0 + READ( Un, IOSTAT=ErrStat) LocalVar%FP%lpf2_InputSignalLast2 + READ( Un, IOSTAT=ErrStat) LocalVar%FP%lpf2_OutputSignalLast2 + READ( Un, IOSTAT=ErrStat) LocalVar%FP%lpf2_InputSignalLast1 + READ( Un, IOSTAT=ErrStat) LocalVar%FP%lpf2_OutputSignalLast1 + READ( Un, IOSTAT=ErrStat) LocalVar%FP%hpf_InputSignalLast + READ( Un, IOSTAT=ErrStat) LocalVar%FP%hpf_OutputSignalLast + READ( Un, IOSTAT=ErrStat) LocalVar%FP%nfs_OutputSignalLast1 + READ( Un, IOSTAT=ErrStat) LocalVar%FP%nfs_OutputSignalLast2 + READ( Un, IOSTAT=ErrStat) LocalVar%FP%nfs_InputSignalLast1 + READ( Un, IOSTAT=ErrStat) LocalVar%FP%nfs_InputSignalLast2 + READ( Un, IOSTAT=ErrStat) LocalVar%FP%nfs_b2 + READ( Un, IOSTAT=ErrStat) LocalVar%FP%nfs_b0 + READ( Un, IOSTAT=ErrStat) LocalVar%FP%nfs_a2 + READ( Un, IOSTAT=ErrStat) LocalVar%FP%nfs_a1 + READ( Un, IOSTAT=ErrStat) LocalVar%FP%nfs_a0 + READ( Un, IOSTAT=ErrStat) LocalVar%FP%nf_OutputSignalLast1 + READ( Un, IOSTAT=ErrStat) LocalVar%FP%nf_OutputSignalLast2 + READ( Un, IOSTAT=ErrStat) LocalVar%FP%nf_InputSignalLast1 + READ( Un, IOSTAT=ErrStat) LocalVar%FP%nf_InputSignalLast2 + READ( Un, IOSTAT=ErrStat) LocalVar%FP%nf_b2 + READ( Un, IOSTAT=ErrStat) LocalVar%FP%nf_b1 + READ( Un, IOSTAT=ErrStat) LocalVar%FP%nf_b0 + READ( Un, IOSTAT=ErrStat) LocalVar%FP%nf_a1 + READ( Un, IOSTAT=ErrStat) LocalVar%FP%nf_a0 + READ( Un, IOSTAT=ErrStat) LocalVar%piP%ITerm + READ( Un, IOSTAT=ErrStat) LocalVar%piP%ITermLast + READ( Un, IOSTAT=ErrStat) LocalVar%piP%ITerm2 + READ( Un, IOSTAT=ErrStat) LocalVar%piP%ITermLast2 + READ( Un, IOSTAT=ErrStat) objInst%instLPF + READ( Un, IOSTAT=ErrStat) objInst%instSecLPF + READ( Un, IOSTAT=ErrStat) objInst%instHPF + READ( Un, IOSTAT=ErrStat) objInst%instNotchSlopes + READ( Un, IOSTAT=ErrStat) objInst%instNotch + READ( Un, IOSTAT=ErrStat) objInst%instPI + Close ( Un ) + ENDIF + ! Read Parameter files + CALL ReadControlParameterFileSub(CntrPar, LocalVar%ACC_INFILE, LocalVar%ACC_INFILE_SIZE, ErrVar) + IF (CntrPar%WE_Mode > 0) THEN + CALL READCpFile(CntrPar, PerfData, ErrVar) + ENDIF +END SUBROUTINE ReadRestartFile + + +SUBROUTINE Debug(LocalVar, CntrPar, DebugVar, avrSWAP, RootName, size_avcOUTNAME) +! Debug routine, defines what gets printed to DEBUG.dbg if LoggingLevel = 1 + + TYPE(ControlParameters), INTENT(IN) :: CntrPar + TYPE(LocalVariables), INTENT(IN) :: LocalVar + TYPE(DebugVariables), INTENT(IN) :: DebugVar + + INTEGER(IntKi), INTENT(IN) :: size_avcOUTNAME + INTEGER(IntKi) :: I , nDebugOuts, nLocalVars ! Generic index. + CHARACTER(1), PARAMETER :: Tab = CHAR(9) ! The tab character. + CHARACTER(29), PARAMETER :: FmtDat = "(F20.5,TR5,99(ES20.5E2,TR5:))" ! The format of the debugging data + INTEGER(IntKi), PARAMETER :: UnDb = 85 ! I/O unit for the debugging information + INTEGER(IntKi), PARAMETER :: UnDb2 = 86 ! I/O unit for the debugging information, avrSWAP + INTEGER(IntKi), PARAMETER :: UnDb3 = 87 ! I/O unit for the debugging information, avrSWAP + REAL(ReKi), 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] + CHARACTER(200) :: Version ! git version of ROSCO + CHARACTER(15), ALLOCATABLE :: DebugOutStrings(:), DebugOutUnits(:) + REAL(DbKi), ALLOCATABLE :: DebugOutData(:) + + CHARACTER(15), ALLOCATABLE :: LocalVarOutStrings(:) + REAL(DbKi), ALLOCATABLE :: LocalVarOutData(:) + + nDebugOuts = 15 + Allocate(DebugOutData(nDebugOuts)) + Allocate(DebugOutStrings(nDebugOuts)) + Allocate(DebugOutUnits(nDebugOuts)) + DebugOutData(1) = DebugVar%WE_Cp + DebugOutData(2) = DebugVar%WE_b + DebugOutData(3) = DebugVar%WE_w + DebugOutData(4) = DebugVar%WE_t + DebugOutData(5) = DebugVar%WE_Vm + DebugOutData(6) = DebugVar%WE_Vt + DebugOutData(7) = DebugVar%WE_Vw + DebugOutData(8) = DebugVar%WE_lambda + DebugOutData(9) = DebugVar%PC_PICommand + DebugOutData(10) = DebugVar%GenSpeedF + DebugOutData(11) = DebugVar%RotSpeedF + DebugOutData(12) = DebugVar%NacIMU_FA_AccF + DebugOutData(13) = DebugVar%FA_AccF + DebugOutData(14) = DebugVar%Fl_PitCom + DebugOutData(15) = DebugVar%PC_MinPit + DebugOutStrings = [CHARACTER(15) :: 'WE_Cp', 'WE_b', 'WE_w', 'WE_t', 'WE_Vm', & + 'WE_Vt', 'WE_Vw', 'WE_lambda', 'PC_PICommand', 'GenSpeedF', & + 'RotSpeedF', 'NacIMU_FA_AccF', 'FA_AccF', 'Fl_PitCom', 'PC_MinPit' & + ] + DebugOutUnits = [CHARACTER(15) :: '[-]', '[-]', '[-]', '[-]', '[m/s]', & + '[m/s]', '[m/s]', '[rad]', '[rad]', '[rad/s]', & + '[rad/s]', '[rad/s]', '[m/s]', '[rad]', '[rad]' & + ] + nLocalVars = 69 + Allocate(LocalVarOutData(nLocalVars)) + Allocate(LocalVarOutStrings(nLocalVars)) + LocalVarOutData(1) = LocalVar%iStatus + LocalVarOutData(2) = LocalVar%Time + LocalVarOutData(3) = LocalVar%DT + LocalVarOutData(4) = LocalVar%VS_GenPwr + LocalVarOutData(5) = LocalVar%GenSpeed + LocalVarOutData(6) = LocalVar%RotSpeed + LocalVarOutData(7) = LocalVar%Y_M + LocalVarOutData(8) = LocalVar%HorWindV + LocalVarOutData(9) = LocalVar%rootMOOP(1) + LocalVarOutData(10) = LocalVar%BlPitch(1) + LocalVarOutData(11) = LocalVar%Azimuth + LocalVarOutData(12) = LocalVar%NumBl + LocalVarOutData(13) = LocalVar%FA_Acc + LocalVarOutData(14) = LocalVar%NacIMU_FA_Acc + LocalVarOutData(15) = LocalVar%FA_AccHPF + LocalVarOutData(16) = LocalVar%FA_AccHPFI + LocalVarOutData(17) = LocalVar%FA_PitCom(1) + LocalVarOutData(18) = LocalVar%RotSpeedF + LocalVarOutData(19) = LocalVar%GenSpeedF + LocalVarOutData(20) = LocalVar%GenTq + LocalVarOutData(21) = LocalVar%GenTqMeas + LocalVarOutData(22) = LocalVar%GenArTq + LocalVarOutData(23) = LocalVar%GenBrTq + LocalVarOutData(24) = LocalVar%IPC_PitComF(1) + LocalVarOutData(25) = LocalVar%PC_KP + LocalVarOutData(26) = LocalVar%PC_KI + LocalVarOutData(27) = LocalVar%PC_KD + LocalVarOutData(28) = LocalVar%PC_TF + LocalVarOutData(29) = LocalVar%PC_MaxPit + LocalVarOutData(30) = LocalVar%PC_MinPit + LocalVarOutData(31) = LocalVar%PC_PitComT + LocalVarOutData(32) = LocalVar%PC_PitComT_Last + LocalVarOutData(33) = LocalVar%PC_PitComTF + LocalVarOutData(34) = LocalVar%PC_PitComT_IPC(1) + LocalVarOutData(35) = LocalVar%PC_PwrErr + LocalVarOutData(36) = LocalVar%PC_SpdErr + LocalVarOutData(37) = LocalVar%IPC_IntAxisTilt_1P + LocalVarOutData(38) = LocalVar%IPC_IntAxisYaw_1P + LocalVarOutData(39) = LocalVar%IPC_IntAxisTilt_2P + LocalVarOutData(40) = LocalVar%IPC_IntAxisYaw_2P + LocalVarOutData(41) = LocalVar%PC_State + LocalVarOutData(42) = LocalVar%PitCom(1) + LocalVarOutData(43) = LocalVar%SS_DelOmegaF + LocalVarOutData(44) = LocalVar%TestType + LocalVarOutData(45) = LocalVar%VS_MaxTq + LocalVarOutData(46) = LocalVar%VS_LastGenTrq + LocalVarOutData(47) = LocalVar%VS_LastGenPwr + LocalVarOutData(48) = LocalVar%VS_MechGenPwr + LocalVarOutData(49) = LocalVar%VS_SpdErrAr + LocalVarOutData(50) = LocalVar%VS_SpdErrBr + LocalVarOutData(51) = LocalVar%VS_SpdErr + LocalVarOutData(52) = LocalVar%VS_State + LocalVarOutData(53) = LocalVar%VS_Rgn3Pitch + LocalVarOutData(54) = LocalVar%WE_Vw + LocalVarOutData(55) = LocalVar%WE_Vw_F + LocalVarOutData(56) = LocalVar%WE_VwI + LocalVarOutData(57) = LocalVar%WE_VwIdot + LocalVarOutData(58) = LocalVar%VS_LastGenTrqF + LocalVarOutData(59) = LocalVar%Y_AccErr + LocalVarOutData(60) = LocalVar%Y_ErrLPFFast + LocalVarOutData(61) = LocalVar%Y_ErrLPFSlow + LocalVarOutData(62) = LocalVar%Y_MErr + LocalVarOutData(63) = LocalVar%Y_YawEndT + LocalVarOutData(64) = LocalVar%Fl_PitCom + LocalVarOutData(65) = LocalVar%NACIMU_FA_AccF + LocalVarOutData(66) = LocalVar%FA_AccF + LocalVarOutData(67) = LocalVar%Flp_Angle(1) + LocalVarOutData(68) = LocalVar%RootMyb_Last(1) + LocalVarOutData(69) = LocalVar%ACC_INFILE_SIZE + LocalVarOutStrings = [CHARACTER(15) :: 'iStatus', 'Time', 'DT', 'VS_GenPwr', 'GenSpeed', & + 'RotSpeed', 'Y_M', 'HorWindV', 'rootMOOP', 'BlPitch', & + 'Azimuth', 'NumBl', 'FA_Acc', 'NacIMU_FA_Acc', 'FA_AccHPF', & + 'FA_AccHPFI', 'FA_PitCom', 'RotSpeedF', 'GenSpeedF', 'GenTq', & + 'GenTqMeas', 'GenArTq', 'GenBrTq', 'IPC_PitComF', 'PC_KP', & + 'PC_KI', 'PC_KD', 'PC_TF', 'PC_MaxPit', 'PC_MinPit', & + 'PC_PitComT', 'PC_PitComT_Last', 'PC_PitComTF', 'PC_PitComT_IPC', 'PC_PwrErr', & + 'PC_SpdErr', 'IPC_IntAxisTilt_1P', 'IPC_IntAxisYaw_1P', 'IPC_IntAxisTilt_2P', 'IPC_IntAxisYaw_2P', & + 'PC_State', 'PitCom', 'SS_DelOmegaF', 'TestType', 'VS_MaxTq', & + 'VS_LastGenTrq', 'VS_LastGenPwr', 'VS_MechGenPwr', 'VS_SpdErrAr', 'VS_SpdErrBr', & + 'VS_SpdErr', 'VS_State', 'VS_Rgn3Pitch', 'WE_Vw', 'WE_Vw_F', & + 'WE_VwI', 'WE_VwIdot', 'VS_LastGenTrqF', 'Y_AccErr', 'Y_ErrLPFFast', & + 'Y_ErrLPFSlow', 'Y_MErr', 'Y_YawEndT', 'Fl_PitCom', 'NACIMU_FA_AccF', & + 'FA_AccF', 'Flp_Angle', 'RootMyb_Last', 'ACC_INFILE_SIZE'] + ! Initialize debug file + IF ((LocalVar%iStatus == 0) .OR. (LocalVar%iStatus == -9)) THEN ! .TRUE. if we're on the first call to the DLL + IF (CntrPar%LoggingLevel > 0) THEN + OPEN(unit=UnDb, FILE=RootName(1: size_avcOUTNAME-5)//'RO.dbg') + WRITE(UnDb, *) 'Generated on '//CurDate()//' at '//CurTime()//' using ROSCO-'//TRIM(rosco_version) + WRITE(UnDb, '(99(a20,TR5:))') 'Time', DebugOutStrings + WRITE(UnDb, '(99(a20,TR5:))') '(sec)', DebugOutUnits + END IF + + IF (CntrPar%LoggingLevel > 1) THEN + OPEN(unit=UnDb2, FILE=RootName(1: size_avcOUTNAME-5)//'RO.dbg2') + WRITE(UnDb2, *) 'Generated on '//CurDate()//' at '//CurTime()//' using ROSCO-'//TRIM(rosco_version) + WRITE(UnDb2, '(99(a20,TR5:))') 'Time', LocalVarOutStrings + WRITE(UnDb2, '(99(a20,TR5:))') + END IF + + IF (CntrPar%LoggingLevel > 2) THEN + OPEN(unit=UnDb3, FILE=RootName(1: size_avcOUTNAME-5)//'RO.dbg3') + WRITE(UnDb3,'(/////)') + WRITE(UnDb3,'(A,85("'//Tab//'AvrSWAP(",I2,")"))') 'LocalVar%Time ', (i,i=1, 85) + WRITE(UnDb3,'(A,85("'//Tab//'(-)"))') '(s)' + END IF + ELSE + ! Print simulation status, every 10 seconds + IF (MODULO(LocalVar%Time, 10.0_DbKi) == 0) THEN + WRITE(*, 100) LocalVar%GenSpeedF*RPS2RPM, LocalVar%BlPitch(1)*R2D, avrSWAP(15)/1000.0, LocalVar%WE_Vw + 100 FORMAT('Generator speed: ', f6.1, ' RPM, Pitch angle: ', f5.1, ' deg, Power: ', f7.1, ' kW, Est. wind Speed: ', f5.1, ' m/s') + END IF + + ! Write debug files + IF(CntrPar%LoggingLevel > 0) THEN + WRITE (UnDb, FmtDat) LocalVar%Time, DebugOutData + END IF + + IF(CntrPar%LoggingLevel > 1) THEN + WRITE (UnDb2, FmtDat) LocalVar%Time, LocalVarOutData + END IF + + IF(CntrPar%LoggingLevel > 2) THEN + WRITE (UnDb3, FmtDat) LocalVar%Time, avrSWAP(1: 85) + END IF + END IF + +END SUBROUTINE Debug + +END MODULE ROSCO_IO \ No newline at end of file diff --git a/ROSCO/src/ROSCO_Types.f90 b/ROSCO/src/ROSCO_Types.f90 index 94620ffe..857091ba 100644 --- a/ROSCO/src/ROSCO_Types.f90 +++ b/ROSCO/src/ROSCO_Types.f90 @@ -4,213 +4,288 @@ MODULE ROSCO_Types USE, INTRINSIC :: ISO_C_Binding +USE Constants 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 ! Low pass filter on the rotor and generator speed {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(8) :: F_LPFCornerFreq ! Corner frequency (-3dB point) in the first-order low-pass filter, [rad/s] - REAL(8) :: F_LPFDamping ! Damping coefficient [used only when F_FilterType = 2] - REAL(8) :: F_NotchCornerFreq ! Natural frequency of the notch filter, [rad/s] - REAL(8), DIMENSION(:), ALLOCATABLE :: F_NotchBetaNumDen ! These two notch damping values (numerator and denominator) determines the width and depth of the notch - REAL(8) :: F_SSCornerFreq ! Corner frequency (-3dB point) in the first order low pass filter for the setpoint smoother [rad/s] - REAL(8) :: F_WECornerFreq ! Corner frequency (-3dB point) in the first order low pass filter for the wind speed estimate [rad/s] - REAL(8), DIMENSION(:), ALLOCATABLE :: F_FlCornerFreq ! Corner frequency (-3dB point) in the second order low pass filter of the tower-top fore-aft motion for floating feedback control [rad/s]. - REAL(8) :: F_FlHighPassFreq ! Natural frequency of first-roder high-pass filter for nacelle fore-aft motion [rad/s]. - REAL(8), DIMENSION(:), ALLOCATABLE :: F_FlpCornerFreq ! Corner frequency (-3dB point) in the second order low pass filter of the blade root bending moment for flap control [rad/s]. - REAL(8) :: FA_HPFCornerFreq ! Corner frequency (-3dB point) in the high-pass filter on the fore-aft acceleration signal [rad/s] - REAL(8) :: FA_IntSat ! Integrator saturation (maximum signal amplitude contrbution to pitch from FA damper), [rad] - REAL(8) :: 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} - REAL(8) :: IPC_IntSat ! Integrator saturation (maximum signal amplitude contrbution to pitch from IPC) - REAL(8), DIMENSION(:), ALLOCATABLE :: IPC_KI ! Integral gain for the individual pitch controller, [-]. 8E-10 - REAL(8), DIMENSION(:), ALLOCATABLE :: IPC_aziOffset ! Phase offset added to the azimuth angle for the individual pitch controller, [rad]. - REAL(8) :: 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(8), DIMENSION(:), ALLOCATABLE :: PC_GS_angles ! Gain-schedule table - pitch angles - REAL(8), DIMENSION(:), ALLOCATABLE :: PC_GS_KP ! Gain-schedule table - pitch controller kp gains - REAL(8), DIMENSION(:), ALLOCATABLE :: PC_GS_KI ! Gain-schedule table - pitch controller ki gains - REAL(8), DIMENSION(:), ALLOCATABLE :: PC_GS_KD ! Gain-schedule table - pitch controller kd gains - REAL(8), DIMENSION(:), ALLOCATABLE :: PC_GS_TF ! Gain-schedule table - pitch controller tf gains (derivative filter) - REAL(8) :: PC_MaxPit ! Maximum physical pitch limit, [rad]. - REAL(8) :: PC_MinPit ! Minimum physical pitch limit, [rad]. - REAL(8) :: PC_MaxRat ! Maximum pitch rate (in absolute value) in pitch controller, [rad/s]. - REAL(8) :: PC_MinRat ! Minimum pitch rate (in absolute value) in pitch controller, [rad/s]. - REAL(8) :: PC_RefSpd ! Desired (reference) HSS speed for pitch controller, [rad/s]. - REAL(8) :: PC_FinePit ! Record 5 - Below-rated pitch angle set-point (deg) [used only with Bladed Interface] - REAL(8) :: 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, 2 - TSR Tracking, 3 - TSR Tracking w/ const power} - REAL(8) :: VS_GenEff ! Generator efficiency mechanical power -> electrical power [-] - REAL(8) :: VS_ArSatTq ! Above rated generator torque PI control saturation, [Nm] -- 212900 - REAL(8) :: VS_MaxRat ! Maximum torque rate (in absolute value) in torque controller, [Nm/s]. - REAL(8) :: VS_MaxTq ! Maximum generator torque in Region 3 (HSS side), [Nm]. -- chosen to be 10% above VS_RtTq - REAL(8) :: VS_MinTq ! Minimum generator (HSS side), [Nm]. - REAL(8) :: VS_MinOMSpd ! Optimal mode minimum speed, [rad/s] - REAL(8) :: VS_Rgn2K ! Generator torque constant in Region 2 (HSS side), N-m/(rad/s)^2 - REAL(8) :: VS_RtPwr ! Wind turbine rated power [W] - REAL(8) :: VS_RtTq ! Rated torque, [Nm]. - REAL(8) :: VS_RefSpd ! Rated generator speed [rad/s] - INTEGER(4) :: VS_n ! Number of controller gains - REAL(8), DIMENSION(:), ALLOCATABLE :: VS_KP ! Proportional gain for generator PI torque controller, used in the transitional 2.5 region - REAL(8), DIMENSION(:), ALLOCATABLE :: VS_KI ! Integral gain for generator PI torque controller, used in the transitional 2.5 region - REAL(8) :: 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(8) :: SS_VSGain ! Variable speed torque controller setpoint smoother gain, [-]. - REAL(8) :: 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(8) :: WE_BladeRadius ! Blade length [m] - INTEGER(4) :: WE_CP_n ! Amount of parameters in the Cp array - REAL(8), DIMENSION(:), ALLOCATABLE :: WE_CP ! Parameters that define the parameterized CP(\lambda) function - REAL(8) :: WE_Gamma ! Adaption gain of the wind speed estimator algorithm [m/rad] - REAL(8) :: WE_GearboxRatio ! Gearbox ratio, >=1 [-] - REAL(8) :: WE_Jtot ! Total drivetrain inertia, including blades, hub and casted generator inertia to LSS [kg m^2] - REAL(8) :: WE_RhoAir ! Air density [kg m^-3] + INTEGER(IntKi) :: 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(IntKi) :: F_LPFType ! Low pass filter on the rotor and generator speed {1 - first-order low-pass filter, 2 - second-order low-pass filter}, [rad/s] + INTEGER(IntKi) :: F_NotchType ! Notch on the measured generator speed {0 - disable, 1 - enable} + REAL(DbKi) :: F_LPFCornerFreq ! Corner frequency (-3dB point) in the first-order low-pass filter, [rad/s] + REAL(DbKi) :: F_LPFDamping ! Damping coefficient [used only when F_FilterType = 2] + REAL(DbKi) :: F_NotchCornerFreq ! Natural frequency of the notch filter, [rad/s] + REAL(DbKi), DIMENSION(:), ALLOCATABLE :: F_NotchBetaNumDen ! These two notch damping values (numerator and denominator) determines the width and depth of the notch + REAL(DbKi) :: F_SSCornerFreq ! Corner frequency (-3dB point) in the first order low pass filter for the setpoint smoother [rad/s] + REAL(DbKi) :: F_WECornerFreq ! Corner frequency (-3dB point) in the first order low pass filter for the wind speed estimate [rad/s] + REAL(DbKi), DIMENSION(:), ALLOCATABLE :: F_FlCornerFreq ! Corner frequency (-3dB point) in the second order low pass filter of the tower-top fore-aft motion for floating feedback control [rad/s]. + REAL(DbKi) :: F_FlHighPassFreq ! Natural frequency of first-roder high-pass filter for nacelle fore-aft motion [rad/s]. + REAL(DbKi), DIMENSION(:), ALLOCATABLE :: F_FlpCornerFreq ! Corner frequency (-3dB point) in the second order low pass filter of the blade root bending moment for flap control [rad/s]. + REAL(DbKi) :: FA_HPFCornerFreq ! Corner frequency (-3dB point) in the high-pass filter on the fore-aft acceleration signal [rad/s] + REAL(DbKi) :: FA_IntSat ! Integrator saturation (maximum signal amplitude contrbution to pitch from FA damper), [rad] + REAL(DbKi) :: FA_KI ! Integral gain for the fore-aft tower damper controller, -1 = off / >0 = on [rad s/m] + INTEGER(IntKi) :: IPC_ControlMode ! Turn Individual Pitch Control (IPC) for fatigue load reductions (pitch contribution) {0 - off, 1 - 1P reductions, 2 - 1P+2P reductions} + REAL(DbKi) :: IPC_IntSat ! Integrator saturation (maximum signal amplitude contrbution to pitch from IPC) + REAL(DbKi), DIMENSION(:), ALLOCATABLE :: IPC_KI ! Integral gain for the individual pitch controller, [-]. 8E-10 + REAL(DbKi), DIMENSION(:), ALLOCATABLE :: IPC_aziOffset ! Phase offset added to the azimuth angle for the individual pitch controller, [rad]. + REAL(DbKi) :: IPC_CornerFreqAct ! Corner frequency of the first-order actuators model, to induce a phase lag in the IPC signal {0 - Disable}, [rad/s] + INTEGER(IntKi) :: PC_ControlMode ! Blade pitch control mode {0 - No pitch, fix to fine pitch, 1 - active PI blade pitch control} + INTEGER(IntKi) :: PC_GS_n ! Amount of gain-scheduling table entries + REAL(DbKi), DIMENSION(:), ALLOCATABLE :: PC_GS_angles ! Gain-schedule table - pitch angles + REAL(DbKi), DIMENSION(:), ALLOCATABLE :: PC_GS_KP ! Gain-schedule table - pitch controller kp gains + REAL(DbKi), DIMENSION(:), ALLOCATABLE :: PC_GS_KI ! Gain-schedule table - pitch controller ki gains + REAL(DbKi), DIMENSION(:), ALLOCATABLE :: PC_GS_KD ! Gain-schedule table - pitch controller kd gains + REAL(DbKi), DIMENSION(:), ALLOCATABLE :: PC_GS_TF ! Gain-schedule table - pitch controller tf gains (derivative filter) + REAL(DbKi) :: PC_MaxPit ! Maximum physical pitch limit, [rad]. + REAL(DbKi) :: PC_MinPit ! Minimum physical pitch limit, [rad]. + REAL(DbKi) :: PC_MaxRat ! Maximum pitch rate (in absolute value) in pitch controller, [rad/s]. + REAL(DbKi) :: PC_MinRat ! Minimum pitch rate (in absolute value) in pitch controller, [rad/s]. + REAL(DbKi) :: PC_RefSpd ! Desired (reference) HSS speed for pitch controller, [rad/s]. + REAL(DbKi) :: PC_FinePit ! Record 5 - Below-rated pitch angle set-point (deg) [used only with Bladed Interface] + REAL(DbKi) :: PC_Switch ! Angle above lowest minimum pitch angle for switch [rad] + INTEGER(IntKi) :: VS_ControlMode ! Generator torque control mode in above rated conditions {0 - constant torque, 1 - constant power, 2 - TSR Tracking, 3 - TSR Tracking w/ const power} + REAL(DbKi) :: VS_GenEff ! Generator efficiency mechanical power -> electrical power [-] + REAL(DbKi) :: VS_ArSatTq ! Above rated generator torque PI control saturation, [Nm] -- 212900 + REAL(DbKi) :: VS_MaxRat ! Maximum torque rate (in absolute value) in torque controller, [Nm/s]. + REAL(DbKi) :: VS_MaxTq ! Maximum generator torque in Region 3 (HSS side), [Nm]. -- chosen to be 10% above VS_RtTq + REAL(DbKi) :: VS_MinTq ! Minimum generator (HSS side), [Nm]. + REAL(DbKi) :: VS_MinOMSpd ! Optimal mode minimum speed, [rad/s] + REAL(DbKi) :: VS_Rgn2K ! Generator torque constant in Region 2 (HSS side), N-m/(rad/s)^2 + REAL(DbKi) :: VS_RtPwr ! Wind turbine rated power [W] + REAL(DbKi) :: VS_RtTq ! Rated torque, [Nm]. + REAL(DbKi) :: VS_RefSpd ! Rated generator speed [rad/s] + INTEGER(IntKi) :: VS_n ! Number of controller gains + REAL(DbKi), DIMENSION(:), ALLOCATABLE :: VS_KP ! Proportional gain for generator PI torque controller, used in the transitional 2.5 region + REAL(DbKi), DIMENSION(:), ALLOCATABLE :: VS_KI ! Integral gain for generator PI torque controller, used in the transitional 2.5 region + REAL(DbKi) :: VS_TSRopt ! Power-maximizing region 2 tip-speed ratio [rad] + INTEGER(IntKi) :: SS_Mode ! Setpoint Smoother mode {0 - no setpoint smoothing, 1 - introduce setpoint smoothing} + REAL(DbKi) :: SS_VSGain ! Variable speed torque controller setpoint smoother gain, [-]. + REAL(DbKi) :: SS_PCGain ! Collective pitch controller setpoint smoother gain, [-]. + INTEGER(IntKi) :: 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(DbKi) :: WE_BladeRadius ! Blade length [m] + INTEGER(IntKi) :: WE_CP_n ! Amount of parameters in the Cp array + REAL(DbKi), DIMENSION(:), ALLOCATABLE :: WE_CP ! Parameters that define the parameterized CP(\lambda) function + REAL(DbKi) :: WE_Gamma ! Adaption gain of the wind speed estimator algorithm [m/rad] + REAL(DbKi) :: WE_GearboxRatio ! Gearbox ratio, >=1 [-] + REAL(DbKi) :: WE_Jtot ! Total drivetrain inertia, including blades, hub and casted generator inertia to LSS [kg m^2] + REAL(DbKi) :: WE_RhoAir ! Air density [kg m^-3] 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(8), DIMENSION(:), ALLOCATABLE :: WE_FOPoles_v ! Wind speeds corresponding to first-order system poles [m/s] - REAL(8), 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(8) :: Y_ErrThresh ! Error threshold [rad]. Turbine begins to yaw when it passes this. (104.71975512) -- 1.745329252 - REAL(8) :: 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) - REAL(8), DIMENSION(:), ALLOCATABLE :: Y_IPC_KP ! Yaw-by-IPC proportional controller gain Kp - REAL(8), DIMENSION(:), ALLOCATABLE :: Y_IPC_KI ! Yaw-by-IPC integral controller gain Ki - REAL(8) :: Y_IPC_omegaLP ! Low-pass filter corner frequency for the Yaw-by-IPC controller to filtering the yaw alignment error, [rad/s]. - REAL(8) :: Y_IPC_zetaLP ! Low-pass filter damping factor for the Yaw-by-IPC controller to filtering the yaw alignment error, [-]. - REAL(8) :: Y_MErrSet ! Yaw alignment error, setpoint [rad] - REAL(8) :: Y_omegaLPFast ! Corner frequency fast low pass filter, 1.0 [Hz] - REAL(8) :: Y_omegaLPSlow ! Corner frequency slow low pass filter, 1/60 [Hz] - REAL(8) :: Y_Rate ! Yaw rate [rad/s] - INTEGER(4) :: PS_Mode ! Pitch saturation mode {0 - no peak shaving, 1 - implement pitch saturation} - 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(8), DIMENSION(:), ALLOCATABLE :: PS_WindSpeeds ! Wind speeds corresponding to minimum blade pitch angles [m/s] - REAL(8), 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(8) :: SD_MaxPit ! Maximum blade pitch angle to initiate shutdown, [rad] - REAL(8) :: SD_CornerFreq ! Cutoff Frequency for first order low-pass filter for blade pitch angle, [rad/s] - INTEGER(4) :: Fl_Mode ! Floating specific feedback mode {0 - no nacelle velocity feedback, 1 - nacelle velocity feedback} - REAL(8) :: Fl_Kp ! Nacelle velocity proportional feedback gain [s] - INTEGER(4) :: Flp_Mode ! Flap actuator mode {0 - off, 1 - fixed flap position, 2 - PI flap control} - REAL(8) :: Flp_Angle ! Fixed flap angle (degrees) - REAL(8) :: Flp_Kp ! PI flap control proportional gain - REAL(8) :: Flp_Ki ! PI flap control integral gain - REAL(8) :: Flp_MaxPit ! Maximum (and minimum) flap pitch angle [rad] + INTEGER(IntKi), 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(IntKi) :: WE_FOPoles_N ! Number of first-order system poles used in EKF + REAL(DbKi), DIMENSION(:), ALLOCATABLE :: WE_FOPoles_v ! Wind speeds corresponding to first-order system poles [m/s] + REAL(DbKi), DIMENSION(:), ALLOCATABLE :: WE_FOPoles ! First order system poles + INTEGER(IntKi) :: Y_ControlMode ! Yaw control mode {0 - no yaw control, 1 - yaw rate control, 2 - yaw-by-IPC} + REAL(DbKi) :: Y_ErrThresh ! Error threshold [rad]. Turbine begins to yaw when it passes this. (104.71975512) -- 1.745329252 + REAL(DbKi) :: Y_IPC_IntSat ! Integrator saturation (maximum signal amplitude contrbution to pitch from yaw-by-IPC) + INTEGER(IntKi) :: Y_IPC_n ! Number of controller gains (yaw-by-IPC) + REAL(DbKi), DIMENSION(:), ALLOCATABLE :: Y_IPC_KP ! Yaw-by-IPC proportional controller gain Kp + REAL(DbKi), DIMENSION(:), ALLOCATABLE :: Y_IPC_KI ! Yaw-by-IPC integral controller gain Ki + REAL(DbKi) :: Y_IPC_omegaLP ! Low-pass filter corner frequency for the Yaw-by-IPC controller to filtering the yaw alignment error, [rad/s]. + REAL(DbKi) :: Y_IPC_zetaLP ! Low-pass filter damping factor for the Yaw-by-IPC controller to filtering the yaw alignment error, [-]. + REAL(DbKi) :: Y_MErrSet ! Yaw alignment error, setpoint [rad] + REAL(DbKi) :: Y_omegaLPFast ! Corner frequency fast low pass filter, 1.0 [Hz] + REAL(DbKi) :: Y_omegaLPSlow ! Corner frequency slow low pass filter, 1/60 [Hz] + REAL(DbKi) :: Y_Rate ! Yaw rate [rad/s] + INTEGER(IntKi) :: PS_Mode ! Pitch saturation mode {0 - no peak shaving, 1 - implement pitch saturation} + INTEGER(IntKi) :: PS_BldPitchMin_N ! Number of values in minimum blade pitch lookup table (should equal number of values in PS_WindSpeeds and PS_BldPitchMin) + REAL(DbKi), DIMENSION(:), ALLOCATABLE :: PS_WindSpeeds ! Wind speeds corresponding to minimum blade pitch angles [m/s] + REAL(DbKi), DIMENSION(:), ALLOCATABLE :: PS_BldPitchMin ! Minimum blade pitch angles [rad] + INTEGER(IntKi) :: SD_Mode ! Shutdown mode {0 - no shutdown procedure, 1 - pitch to max pitch at shutdown} + REAL(DbKi) :: SD_MaxPit ! Maximum blade pitch angle to initiate shutdown, [rad] + REAL(DbKi) :: SD_CornerFreq ! Cutoff Frequency for first order low-pass filter for blade pitch angle, [rad/s] + INTEGER(IntKi) :: Fl_Mode ! Floating specific feedback mode {0 - no nacelle velocity feedback, 1 - nacelle velocity feedback} + REAL(DbKi) :: Fl_Kp ! Nacelle velocity proportional feedback gain [s] + INTEGER(IntKi) :: Flp_Mode ! Flap actuator mode {0 - off, 1 - fixed flap position, 2 - PI flap control} + REAL(DbKi) :: Flp_Angle ! Fixed flap angle (degrees) + REAL(DbKi) :: Flp_Kp ! PI flap control proportional gain + REAL(DbKi) :: Flp_Ki ! PI flap control integral gain + REAL(DbKi) :: Flp_MaxPit ! Maximum (and minimum) flap pitch angle [rad] CHARACTER(1024) :: OL_Filename ! Input file with open loop timeseries - INTEGER(4) :: OL_Mode ! Open loop control mode {0 - no open loop control, 1 - open loop control vs. time, 2 - open loop control vs. wind speed} - INTEGER(4) :: Ind_Breakpoint ! The column in OL_Filename that contains the breakpoint (time if OL_Mode = 1) - INTEGER(4) :: Ind_BldPitch ! The column in OL_Filename that contains the blade pitch input in rad - INTEGER(4) :: Ind_GenTq ! The column in OL_Filename that contains the generator torque in Nm - INTEGER(4) :: Ind_YawRate ! The column in OL_Filename that contains the generator torque in Nm - REAL(8), DIMENSION(:), ALLOCATABLE :: OL_Breakpoints ! Open loop breakpoints in timeseries - REAL(8), DIMENSION(:), ALLOCATABLE :: OL_BldPitch ! Open blade pitch timeseries - REAL(8), DIMENSION(:), ALLOCATABLE :: OL_GenTq ! Open generator torque timeseries - REAL(8), DIMENSION(:), ALLOCATABLE :: OL_YawRate ! Open yaw rate timeseries - REAL(8), DIMENSION(:,:), ALLOCATABLE :: OL_Channels ! Open loop channels in timeseries - REAL(8) :: PC_RtTq99 ! 99% of the rated torque value, using for switching between pitch and torque control, [Nm]. - REAL(8) :: VS_MaxOMTq ! Maximum torque at the end of the below-rated region 2, [Nm] - REAL(8) :: VS_MinOMTq ! Minimum torque at the beginning of the below-rated region 2, [Nm] + INTEGER(IntKi) :: OL_Mode ! Open loop control mode {0 - no open loop control, 1 - open loop control vs. time, 2 - open loop control vs. wind speed} + INTEGER(IntKi) :: Ind_Breakpoint ! The column in OL_Filename that contains the breakpoint (time if OL_Mode = 1) + INTEGER(IntKi) :: Ind_BldPitch ! The column in OL_Filename that contains the blade pitch input in rad + INTEGER(IntKi) :: Ind_GenTq ! The column in OL_Filename that contains the generator torque in Nm + INTEGER(IntKi) :: Ind_YawRate ! The column in OL_Filename that contains the generator torque in Nm + REAL(DbKi), DIMENSION(:), ALLOCATABLE :: OL_Breakpoints ! Open loop breakpoints in timeseries + REAL(DbKi), DIMENSION(:), ALLOCATABLE :: OL_BldPitch ! Open blade pitch timeseries + REAL(DbKi), DIMENSION(:), ALLOCATABLE :: OL_GenTq ! Open generator torque timeseries + REAL(DbKi), DIMENSION(:), ALLOCATABLE :: OL_YawRate ! Open yaw rate timeseries + REAL(DbKi), DIMENSION(:,:), ALLOCATABLE :: OL_Channels ! Open loop channels in timeseries + REAL(DbKi) :: PC_RtTq99 ! 99% of the rated torque value, using for switching between pitch and torque control, [Nm]. + REAL(DbKi) :: VS_MaxOMTq ! Maximum torque at the end of the below-rated region 2, [Nm] + REAL(DbKi) :: VS_MinOMTq ! Minimum torque at the beginning of the below-rated region 2, [Nm] END TYPE ControlParameters +TYPE, PUBLIC :: WE + REAL(DbKi) :: om_r ! Estimated rotor speed [rad/s] + REAL(DbKi) :: v_t ! Estimated wind speed, turbulent component [m/s] + REAL(DbKi) :: v_m ! Estimated wind speed, 10-minute averaged [m/s] + REAL(DbKi) :: v_h ! Combined estimated wind speed [m/s] + REAL(DbKi), DIMENSION(3,3) :: P ! Covariance estiamte + REAL(DbKi), DIMENSION(3,1) :: xh ! Estimated state matrix + REAL(DbKi), DIMENSION(3,1) :: K ! Kalman gain matrix +END TYPE WE + +TYPE, PUBLIC :: FilterParameters + REAL(DbKi), DIMENSION(99) :: lpf1_a1 ! First order filter - Denominator coefficient 1 + REAL(DbKi), DIMENSION(99) :: lpf1_a0 ! First order filter - Denominator coefficient 0 + REAL(DbKi), DIMENSION(99) :: lpf1_b1 ! First order filter - Numerator coefficient 1 + REAL(DbKi), DIMENSION(99) :: lpf1_b0 ! First order filter - Numerator coefficient 0 + REAL(DbKi), DIMENSION(99) :: lpf1_InputSignalLast ! First order filter - Previous input + REAL(DbKi), DIMENSION(99) :: lpf1_OutputSignalLast ! First order filter - Previous output + REAL(DbKi), DIMENSION(99) :: lpf2_a2 ! Second order filter - Denominator coefficient 2 + REAL(DbKi), DIMENSION(99) :: lpf2_a1 ! Second order filter - Denominator coefficient 1 + REAL(DbKi), DIMENSION(99) :: lpf2_a0 ! Second order filter - Denominator coefficient 0 + REAL(DbKi), DIMENSION(99) :: lpf2_b2 ! Second order filter - Numerator coefficient 2 + REAL(DbKi), DIMENSION(99) :: lpf2_b1 ! Second order filter - Numerator coefficient 1 + REAL(DbKi), DIMENSION(99) :: lpf2_b0 ! Second order filter - Numerator coefficient 0 + REAL(DbKi), DIMENSION(99) :: lpf2_InputSignalLast2 ! Second order filter - Previous input 2 + REAL(DbKi), DIMENSION(99) :: lpf2_OutputSignalLast2 ! Second order filter - Previous output 2 + REAL(DbKi), DIMENSION(99) :: lpf2_InputSignalLast1 ! Second order filter - Previous input 1 + REAL(DbKi), DIMENSION(99) :: lpf2_OutputSignalLast1 ! Second order filter - Previous output 1 + REAL(DbKi), DIMENSION(99) :: hpf_InputSignalLast ! High pass filter - Previous output 1 + REAL(DbKi), DIMENSION(99) :: hpf_OutputSignalLast ! High pass filter - Previous output 1 + REAL(DbKi), DIMENSION(99) :: nfs_OutputSignalLast1 ! Notch filter slopes previous output 1 + REAL(DbKi), DIMENSION(99) :: nfs_OutputSignalLast2 ! Notch filter slopes previous output 2 + REAL(DbKi), DIMENSION(99) :: nfs_InputSignalLast1 ! Notch filter slopes previous input 1 + REAL(DbKi), DIMENSION(99) :: nfs_InputSignalLast2 ! Notch filter slopes previous input 1 + REAL(DbKi), DIMENSION(99) :: nfs_b2 ! Notch filter slopes numerator coefficient 2 + REAL(DbKi), DIMENSION(99) :: nfs_b0 ! Notch filter slopes numerator coefficient 0 + REAL(DbKi), DIMENSION(99) :: nfs_a2 ! Notch filter slopes denominator coefficient 2 + REAL(DbKi), DIMENSION(99) :: nfs_a1 ! Notch filter slopes denominator coefficient 1 + REAL(DbKi), DIMENSION(99) :: nfs_a0 ! Notch filter slopes denominator coefficient 0 + REAL(DbKi), DIMENSION(99) :: nf_OutputSignalLast1 ! Notch filter previous output 1 + REAL(DbKi), DIMENSION(99) :: nf_OutputSignalLast2 ! Notch filter previous output 2 + REAL(DbKi), DIMENSION(99) :: nf_InputSignalLast1 ! Notch filter previous input 1 + REAL(DbKi), DIMENSION(99) :: nf_InputSignalLast2 ! Notch filter previous input 2 + REAL(DbKi), DIMENSION(99) :: nf_b2 ! Notch filter numerator coefficient 2 + REAL(DbKi), DIMENSION(99) :: nf_b1 ! Notch filter numerator coefficient 1 + REAL(DbKi), DIMENSION(99) :: nf_b0 ! Notch filter numerator coefficient 0 + REAL(DbKi), DIMENSION(99) :: nf_a1 ! Notch filter denominator coefficient 1 + REAL(DbKi), DIMENSION(99) :: nf_a0 ! Notch filter denominator coefficient 0 +END TYPE FilterParameters + +TYPE, PUBLIC :: piParams + REAL(DbKi), DIMENSION(99) :: ITerm ! Integrator term + REAL(DbKi), DIMENSION(99) :: ITermLast ! Previous integrator term + REAL(DbKi), DIMENSION(99) :: ITerm2 ! Integrator term - second integrator + REAL(DbKi), DIMENSION(99) :: ITermLast2 ! Previous integrator term - second integrator +END TYPE piParams + TYPE, PUBLIC :: LocalVariables - INTEGER(4) :: iStatus ! None - REAL(8) :: Time ! None - REAL(8) :: DT ! None - REAL(8) :: VS_GenPwr ! None - REAL(8) :: GenSpeed ! None - REAL(8) :: RotSpeed ! None - REAL(8) :: Y_M ! None - REAL(8) :: HorWindV ! None - REAL(8) :: rootMOOP(3) ! None - REAL(8) :: BlPitch(3) ! None - REAL(8) :: Azimuth ! None - INTEGER(4) :: NumBl ! None - REAL(8) :: FA_Acc ! Tower fore-aft acceleration [m/s^2] - REAL(8) :: NacIMU_FA_Acc ! Tower fore-aft acceleration [rad/s^2] - REAL(8) :: FA_AccHPF ! High-pass filtered fore-aft acceleration [m/s^2] - REAL(8) :: FA_AccHPFI ! Tower velocity, high-pass filtered and integrated fore-aft acceleration [m/s] - REAL(8) :: FA_PitCom(3) ! Tower fore-aft vibration damping pitch contribution [rad] - REAL(8) :: RotSpeedF ! Filtered LSS (generator) speed [rad/s]. - REAL(8) :: GenSpeedF ! Filtered HSS (generator) speed [rad/s]. - REAL(8) :: GenTq ! Electrical generator torque, [Nm]. - REAL(8) :: GenTqMeas ! Measured generator torque [Nm] - REAL(8) :: GenArTq ! Electrical generator torque, for above-rated PI-control [Nm]. - REAL(8) :: GenBrTq ! Electrical generator torque, for below-rated PI-control [Nm]. - REAL(8) :: IPC_PitComF(3) ! Commanded pitch of each blade as calculated by the individual pitch controller, F stands for low-pass filtered [rad]. - REAL(8) :: PC_KP ! Proportional gain for pitch controller at rated pitch (zero) [s]. - REAL(8) :: PC_KI ! Integral gain for pitch controller at rated pitch (zero) [-]. - REAL(8) :: PC_KD ! Differential gain for pitch controller at rated pitch (zero) [-]. - REAL(8) :: PC_TF ! First-order filter parameter for derivative action - REAL(8) :: PC_MaxPit ! Maximum pitch setting in pitch controller (variable) [rad]. - REAL(8) :: PC_MinPit ! Minimum pitch setting in pitch controller (variable) [rad]. - REAL(8) :: PC_PitComT ! Total command pitch based on the sum of the proportional and integral terms [rad]. - REAL(8) :: PC_PitComTF ! Filtered Total command pitch based on the sum of the proportional and integral terms [rad]. - REAL(8) :: PC_PitComT_IPC(3) ! Total command pitch based on the sum of the proportional and integral terms, including IPC term [rad]. - REAL(8) :: PC_PwrErr ! Power error with respect to rated power [W] - REAL(8) :: PC_SineExcitation ! Sine contribution to pitch signal - REAL(8) :: PC_SpdErr ! Current speed error (pitch control) [rad/s]. - INTEGER(4) :: PC_State ! State of the pitch control system - REAL(8) :: PitCom(3) ! Commanded pitch of each blade the last time the controller was called [rad]. - REAL(8) :: SS_DelOmegaF ! Filtered setpoint shifting term defined in setpoint smoother [rad/s]. - REAL(8) :: TestType ! Test variable, no use - REAL(8) :: VS_MaxTq ! Maximum allowable generator torque [Nm]. - REAL(8) :: VS_LastGenTrq ! Commanded electrical generator torque the last time the controller was called [Nm]. - REAL(8) :: VS_LastGenPwr ! Commanded electrical generator torque the last time the controller was called [Nm]. - REAL(8) :: VS_MechGenPwr ! Mechanical power on the generator axis [W] - REAL(8) :: VS_SpdErrAr ! Current speed error for region 2.5 PI controller (generator torque control) [rad/s]. - REAL(8) :: VS_SpdErrBr ! Current speed error for region 1.5 PI controller (generator torque control) [rad/s]. - REAL(8) :: 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(8) :: VS_Rgn3Pitch ! Pitch angle at which the state machine switches to region 3, [rad]. - REAL(8) :: WE_Vw ! Estimated wind speed [m/s] - REAL(8) :: WE_Vw_F ! Filtered estimated wind speed [m/s] - REAL(8) :: WE_VwI ! Integrated wind speed quantity for estimation [m/s] - REAL(8) :: WE_VwIdot ! Differentiated integrated wind speed quantity for estimation [m/s] - REAL(8) :: VS_LastGenTrqF ! Differentiated integrated wind speed quantity for estimation [m/s] - REAL(8) :: Y_AccErr ! Accumulated yaw error [rad]. - REAL(8) :: Y_ErrLPFFast ! Filtered yaw error by fast low pass filter [rad]. - REAL(8) :: Y_ErrLPFSlow ! Filtered yaw error by slow low pass filter [rad]. - REAL(8) :: Y_MErr ! Measured yaw error, measured + setpoint [rad]. - REAL(8) :: 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 - REAL(8) :: Fl_PitCom ! Shutdown, .FALSE. if inactive, .TRUE. if active - REAL(8) :: NACIMU_FA_AccF ! None - REAL(8) :: FA_AccF ! None - REAL(8) :: Flp_Angle(3) ! Flap Angle (rad) + INTEGER(IntKi) :: iStatus ! Initialization status + REAL(DbKi) :: Time ! Time [s] + REAL(DbKi) :: DT ! Time step [s] + REAL(DbKi) :: VS_GenPwr ! Generator power [W] + REAL(DbKi) :: GenSpeed ! Generator speed (HSS) [rad/s] + REAL(DbKi) :: RotSpeed ! Rotor speed (LSS) [rad/s] + REAL(DbKi) :: Y_M ! Yaw direction [rad] + REAL(DbKi) :: HorWindV ! Hub height wind speed m/s + REAL(DbKi) :: rootMOOP(3) ! Blade root bending moment [Nm] + REAL(DbKi) :: BlPitch(3) ! Blade pitch [rad] + REAL(DbKi) :: Azimuth ! Rotor aziumuth angle [rad] + INTEGER(IntKi) :: NumBl ! Number of blades [-] + REAL(DbKi) :: FA_Acc ! Tower fore-aft acceleration [m/s^2] + REAL(DbKi) :: NacIMU_FA_Acc ! Tower fore-aft acceleration [rad/s^2] + REAL(DbKi) :: FA_AccHPF ! High-pass filtered fore-aft acceleration [m/s^2] + REAL(DbKi) :: FA_AccHPFI ! Tower velocity, high-pass filtered and integrated fore-aft acceleration [m/s] + REAL(DbKi) :: FA_PitCom(3) ! Tower fore-aft vibration damping pitch contribution [rad] + REAL(DbKi) :: RotSpeedF ! Filtered LSS (generator) speed [rad/s]. + REAL(DbKi) :: GenSpeedF ! Filtered HSS (generator) speed [rad/s]. + REAL(DbKi) :: GenTq ! Electrical generator torque, [Nm]. + REAL(DbKi) :: GenTqMeas ! Measured generator torque [Nm] + REAL(DbKi) :: GenArTq ! Electrical generator torque, for above-rated PI-control [Nm]. + REAL(DbKi) :: GenBrTq ! Electrical generator torque, for below-rated PI-control [Nm]. + REAL(DbKi) :: IPC_PitComF(3) ! Commanded pitch of each blade as calculated by the individual pitch controller, F stands for low-pass filtered [rad]. + REAL(DbKi) :: PC_KP ! Proportional gain for pitch controller at rated pitch (zero) [s]. + REAL(DbKi) :: PC_KI ! Integral gain for pitch controller at rated pitch (zero) [-]. + REAL(DbKi) :: PC_KD ! Differential gain for pitch controller at rated pitch (zero) [-]. + REAL(DbKi) :: PC_TF ! First-order filter parameter for derivative action + REAL(DbKi) :: PC_MaxPit ! Maximum pitch setting in pitch controller (variable) [rad]. + REAL(DbKi) :: PC_MinPit ! Minimum pitch setting in pitch controller (variable) [rad]. + REAL(DbKi) :: PC_PitComT ! Total command pitch based on the sum of the proportional and integral terms [rad]. + REAL(DbKi) :: PC_PitComT_Last ! Last total command pitch based on the sum of the proportional and integral terms [rad]. + REAL(DbKi) :: PC_PitComTF ! Filtered Total command pitch based on the sum of the proportional and integral terms [rad]. + REAL(DbKi) :: PC_PitComT_IPC(3) ! Total command pitch based on the sum of the proportional and integral terms, including IPC term [rad]. + REAL(DbKi) :: PC_PwrErr ! Power error with respect to rated power [W] + REAL(DbKi) :: PC_SpdErr ! Current speed error (pitch control) [rad/s]. + REAL(DbKi) :: IPC_IntAxisTilt_1P ! Integral of the direct axis, 1P + REAL(DbKi) :: IPC_IntAxisYaw_1P ! Integral of quadrature, 1P + REAL(DbKi) :: IPC_IntAxisTilt_2P ! Integral of the direct axis, 2P + REAL(DbKi) :: IPC_IntAxisYaw_2P ! Integral of quadrature, 2P + INTEGER(IntKi) :: PC_State ! State of the pitch control system + REAL(DbKi) :: PitCom(3) ! Commanded pitch of each blade the last time the controller was called [rad]. + REAL(DbKi) :: SS_DelOmegaF ! Filtered setpoint shifting term defined in setpoint smoother [rad/s]. + REAL(DbKi) :: TestType ! Test variable, no use + REAL(DbKi) :: VS_MaxTq ! Maximum allowable generator torque [Nm]. + REAL(DbKi) :: VS_LastGenTrq ! Commanded electrical generator torque the last time the controller was called [Nm]. + REAL(DbKi) :: VS_LastGenPwr ! Commanded electrical generator torque the last time the controller was called [Nm]. + REAL(DbKi) :: VS_MechGenPwr ! Mechanical power on the generator axis [W] + REAL(DbKi) :: VS_SpdErrAr ! Current speed error for region 2.5 PI controller (generator torque control) [rad/s]. + REAL(DbKi) :: VS_SpdErrBr ! Current speed error for region 1.5 PI controller (generator torque control) [rad/s]. + REAL(DbKi) :: VS_SpdErr ! Current speed error for tip-speed-ratio tracking controller (generator torque control) [rad/s]. + INTEGER(IntKi) :: VS_State ! State of the torque control system + REAL(DbKi) :: VS_Rgn3Pitch ! Pitch angle at which the state machine switches to region 3, [rad]. + REAL(DbKi) :: WE_Vw ! Estimated wind speed [m/s] + REAL(DbKi) :: WE_Vw_F ! Filtered estimated wind speed [m/s] + REAL(DbKi) :: WE_VwI ! Integrated wind speed quantity for estimation [m/s] + REAL(DbKi) :: WE_VwIdot ! Differentiated integrated wind speed quantity for estimation [m/s] + REAL(DbKi) :: VS_LastGenTrqF ! Differentiated integrated wind speed quantity for estimation [m/s] + REAL(DbKi) :: Y_AccErr ! Accumulated yaw error [rad]. + REAL(DbKi) :: Y_ErrLPFFast ! Filtered yaw error by fast low pass filter [rad]. + REAL(DbKi) :: Y_ErrLPFSlow ! Filtered yaw error by slow low pass filter [rad]. + REAL(DbKi) :: Y_MErr ! Measured yaw error, measured + setpoint [rad]. + REAL(DbKi) :: Y_YawEndT ! Yaw end time [s]. Indicates the time up until which yaw is active with a fixed rate + LOGICAL :: SD ! Shutdown, .FALSE. if inactive, .TRUE. if active + REAL(DbKi) :: Fl_PitCom ! Shutdown, .FALSE. if inactive, .TRUE. if active + REAL(DbKi) :: NACIMU_FA_AccF ! None + REAL(DbKi) :: FA_AccF ! None + REAL(DbKi) :: Flp_Angle(3) ! Flap Angle (rad) + REAL(DbKi) :: RootMyb_Last(3) ! Last blade root bending moment (Nm) + INTEGER(IntKi) :: ACC_INFILE_SIZE ! Length of parameter input filename + CHARACTER, DIMENSION(:), ALLOCATABLE :: ACC_INFILE ! Parameter input filename + LOGICAL :: restart ! Restart flag + TYPE(WE) :: WE ! Wind speed estimator parameters derived type + TYPE(FilterParameters) :: FP ! Filter parameters derived type + TYPE(piParams) :: piP ! PI parameters derived type END TYPE LocalVariables TYPE, PUBLIC :: ObjectInstances - INTEGER(4) :: instLPF ! Low-pass filter instance - INTEGER(4) :: instSecLPF ! Second order low-pass filter instance - INTEGER(4) :: instHPF ! High-pass filter instance - INTEGER(4) :: instNotchSlopes ! Notch filter slopes instance - INTEGER(4) :: instNotch ! Notch filter instance - INTEGER(4) :: instPI ! PI controller instance + INTEGER(IntKi) :: instLPF ! Low-pass filter instance + INTEGER(IntKi) :: instSecLPF ! Second order low-pass filter instance + INTEGER(IntKi) :: instHPF ! High-pass filter instance + INTEGER(IntKi) :: instNotchSlopes ! Notch filter slopes instance + INTEGER(IntKi) :: instNotch ! Notch filter instance + INTEGER(IntKi) :: instPI ! PI controller instance END TYPE ObjectInstances TYPE, PUBLIC :: PerformanceData - REAL(8), DIMENSION(:), ALLOCATABLE :: TSR_vec ! TSR vector for performance surfaces - REAL(8), DIMENSION(:), ALLOCATABLE :: Beta_vec ! Blade pitch vector for performance surfaces [deg] - REAL(8), DIMENSION(:,:), ALLOCATABLE :: Cp_mat ! Power coefficient surface - REAL(8), DIMENSION(:,:), ALLOCATABLE :: Ct_mat ! Thrust coefficient surface - REAL(8), DIMENSION(:,:), ALLOCATABLE :: Cq_mat ! Torque coefficient surface + REAL(DbKi), DIMENSION(:), ALLOCATABLE :: TSR_vec ! TSR vector for performance surfaces + REAL(DbKi), DIMENSION(:), ALLOCATABLE :: Beta_vec ! Blade pitch vector for performance surfaces [deg] + REAL(DbKi), DIMENSION(:,:), ALLOCATABLE :: Cp_mat ! Power coefficient surface + REAL(DbKi), DIMENSION(:,:), ALLOCATABLE :: Ct_mat ! Thrust coefficient surface + REAL(DbKi), DIMENSION(:,:), ALLOCATABLE :: Cq_mat ! Torque coefficient surface END TYPE PerformanceData TYPE, PUBLIC :: DebugVariables - REAL(8) :: WE_Cp ! Cp that WSE uses to determine aerodynamic torque[-] - REAL(8) :: WE_b ! Pitch that WSE uses to determine aerodynamic torque[-] - REAL(8) :: WE_w ! Rotor Speed that WSE uses to determine aerodynamic torque[-] - REAL(8) :: WE_t ! Torque that WSE uses[-] - REAL(8) :: WE_Vm ! Mean wind speed component in WSE [m/s] - REAL(8) :: WE_Vt ! Turbulent wind speed component in WSE [m/s] - REAL(8) :: WE_lambda ! TSR in WSE [rad] - REAL(8) :: PC_PICommand ! Commanded collective pitch from pitch PI controller [rad] + REAL(DbKi) :: WE_Cp ! Cp that WSE uses to determine aerodynamic torque [-] + REAL(DbKi) :: WE_b ! Pitch that WSE uses to determine aerodynamic torque [-] + REAL(DbKi) :: WE_w ! Rotor Speed that WSE uses to determine aerodynamic torque [-] + REAL(DbKi) :: WE_t ! Torque that WSE uses [-] + REAL(DbKi) :: WE_Vm ! Mean wind speed component in WSE [m/s] + REAL(DbKi) :: WE_Vt ! Turbulent wind speed component in WSE [m/s] + REAL(DbKi) :: WE_Vw ! Estimated wind speed in WSE [m/s] + REAL(DbKi) :: WE_lambda ! TSR in WSE [rad] + REAL(DbKi) :: PC_PICommand ! Commanded collective pitch from pitch PI controller [rad] + REAL(DbKi) :: GenSpeedF ! Filtered generator speed [rad/s] + REAL(DbKi) :: RotSpeedF ! Filtered rotor speed [rad/s] + REAL(DbKi) :: NacIMU_FA_AccF ! Filtered NacIMU_FA_Acc [rad/s] + REAL(DbKi) :: FA_AccF ! Filtered FA_Acc [m/s] + REAL(DbKi) :: Fl_PitCom ! Floating contribution to the pitch command [rad] + REAL(DbKi) :: PC_MinPit ! Minimum blade pitch angle [rad] END TYPE DebugVariables TYPE, PUBLIC :: ErrorVariables - INTEGER(4) :: size_avcMSG ! None + INTEGER(IntKi) :: size_avcMSG ! None INTEGER(C_INT) :: 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. CHARACTER(:), ALLOCATABLE :: ErrMsg ! a Fortran version of the C string argument (not considered an array here) [subtract 1 for the C null-character] END TYPE ErrorVariables diff --git a/ROSCO/src/ReadSetParameters.f90 b/ROSCO/src/ReadSetParameters.f90 index 846bfc8d..af90de9e 100644 --- a/ROSCO/src/ReadSetParameters.f90 +++ b/ROSCO/src/ReadSetParameters.f90 @@ -77,6 +77,12 @@ SUBROUTINE ReadAvrSWAP(avrSWAP, LocalVar) LocalVar%BlPitch(3) = LocalVar%PitCom(3) ENDIF + IF (LocalVar%iStatus == 0) THEN + LocalVar%restart = .True. + ELSE + LocalVar%restart = .False. + ENDIF + END SUBROUTINE ReadAvrSWAP ! ----------------------------------------------------------------------------------- ! Define parameters for control actions @@ -141,7 +147,12 @@ SUBROUTINE SetParameters(avrSWAP, accINFILE, size_avcMSG, CntrPar, LocalVar, obj 'Developed in collaboration: National Renewable Energy Laboratory '//NEW_LINE('A')// & ' Delft University of Technology, The Netherlands '//NEW_LINE('A')// & '------------------------------------------------------------------------------' + ! Specifically save accINFILE info (DISCON.IN) + LocalVar%ACC_INFILE_SIZE = NINT(avrSWAP(50)) + Allocate(LocalVar%ACC_INFILE(LocalVar%ACC_INFILE_SIZE)) + LocalVar%ACC_INFILE = accINFILE + ! Read Control Parameter File CALL ReadControlParameterFileSub(CntrPar, accINFILE, NINT(avrSWAP(50)),ErrVar) ! If there's been an file reading error, don't continue ! Add RoutineName to error message diff --git a/ROSCO_testing/regtest.py b/ROSCO_testing/regtest.py new file mode 100644 index 00000000..a0a56fbb --- /dev/null +++ b/ROSCO_testing/regtest.py @@ -0,0 +1,124 @@ +''' +Regression testing for ROSCO + +Tests: + restart +''' + +import os +import platform +import unittest +import numpy as np + +# Python Modules +import os +import platform +from shutil import copyfile + +# ROSCO toolbox modules +from ROSCO_toolbox.inputs.validation import load_rosco_yaml +from ROSCO_toolbox.ofTools.fast_io import output_processing +from ROSCO_toolbox.ofTools.case_gen.CaseLibrary import set_channels +from ROSCO_toolbox.ofTools.case_gen.CaseGen_General import CaseGen_General +from ROSCO_toolbox.ofTools.fast_io.FAST_writer import InputReader_OpenFAST, InputWriter_OpenFAST +from ROSCO_toolbox.utilities import run_openfast + + +class RegressionTesting(unittest.TestCase): + def test_restart(self): + this_dir = os.path.dirname(os.path.abspath(__file__)) + rosco_dir = os.path.dirname(this_dir) + test_out_dir = os.path.join(this_dir, 'test_out') + + # Load yaml file (Open Loop Case) + parameter_filename = os.path.join(rosco_dir, 'Tune_Cases/IEA15MW.yaml') + + inps = load_rosco_yaml(parameter_filename) + path_params = inps['path_params'] + turbine_params = inps['turbine_params'] + controller_params = inps['controller_params'] + + # Set rosco_dll + if platform.system() == 'Windows': + rosco_dll = os.path.join(rosco_dir, 'ROSCO/build/libdiscon.dll') + elif platform.system() == 'Darwin': + rosco_dll = os.path.join(rosco_dir, 'ROSCO/build/libdiscon.dylib') + else: + rosco_dll = os.path.join(rosco_dir, 'ROSCO/build/libdiscon.so') + + case_inputs = {} + case_inputs[('Fst', 'TMax')] = {'vals': [3.], 'group': 0} + case_inputs[('ServoDyn', 'DLL_FileName')] = {'vals': [rosco_dll], 'group': 0} + case_inputs[('Fst', 'ChkptTime')] = {'vals': [1.], 'group': 1} + case_inputs[('Fst', 'OutFileFmt')] = {'vals': [2], 'group': 1} + case_inputs[('DISCON_in', 'LoggingLevel')] = {'vals': [2], 'group': 1} + + # Generate cases + run_dir = os.path.join(test_out_dir, 'restart') + if not os.path.exists(run_dir): + os.makedirs(run_dir) + + case_list, case_name_list = CaseGen_General(case_inputs, dir_matrix=run_dir, namebase='iea15_restart') + channels = set_channels() + + # write files + reader = InputReader_OpenFAST() + writer = InputWriter_OpenFAST() + reader.FAST_InputFile = path_params['FAST_InputFile'] + reader.FAST_directory = os.path.realpath(os.path.join( rosco_dir, 'Tune_Cases', path_params['FAST_directory'])) + reader.execute() + writer.fst_vt = reader.fst_vt + writer.FAST_runDirectory = test_out_dir + for case, case_name in zip(case_list, case_name_list): + writer.FAST_namingOut = case_name + writer.update(fst_update=case) + writer.update_outlist(channels) + writer.execute() + + # Run first case + fastcall = 'openfast' + run_openfast( + test_out_dir, + fastcall=fastcall, + fastfile=writer.FAST_InputFileOut, + chdir=True + ) + copyfile(os.path.join(test_out_dir, writer.FAST_InputFileOut[:-3]+'outb'), + os.path.join(test_out_dir, 'orig.outb') ) + # copyfile(os.path.join(test_out_dir, writer.FAST_InputFileOut[:-3]+'RO.dbg'), + # os.path.join(test_out_dir, 'orig.dbg') ) + + # run restart case + run_openfast( + test_out_dir, + fastcall=fastcall, + fastfile=writer.FAST_InputFileOut[:-3]+'40', + chdir=True, + restart=True + ) + copyfile(os.path.join(test_out_dir, writer.FAST_InputFileOut[:-3]+'outb'), + os.path.join(test_out_dir, 'restart.outb')) + # copyfile(os.path.join(test_out_dir, writer.FAST_InputFileOut[:-3]+'RO.dbg'), + # os.path.join(test_out_dir, 'restart.dbg')) + + output_files = [os.path.join(test_out_dir, 'orig.outb'), + os.path.join(test_out_dir, 'restart.outb')] + op = output_processing.output_processing() + fastout = op.load_fast_out(output_files, tmin=0) + + if False: # Plotting for debug + import matplotlib.pyplot as plt + cases = {} + cases['Baseline'] = ['Wind1VelX', 'BldPitch1', 'GenTq', 'RotSpeed', 'NacYaw'] + fig, ax = op.plot_fast_out(cases=cases, showplot=False) + plt.show() + + self.check_relative_error(fastout[1]['GenPwr'], fastout[0]['GenPwr'], 1e-3) + + def check_relative_error(self, meas, real, tol): + '''check relative error''' + error = np.linalg.norm(meas - real) / np.linalg.norm(real) + self.assertTrue(error<=tol) + +if __name__ == "__main__": + unittest.main() diff --git a/ROSCO_toolbox/ofTools/fast_io/FAST_reader.py b/ROSCO_toolbox/ofTools/fast_io/FAST_reader.py index 9297464e..18a220fa 100644 --- a/ROSCO_toolbox/ofTools/fast_io/FAST_reader.py +++ b/ROSCO_toolbox/ofTools/fast_io/FAST_reader.py @@ -2239,6 +2239,7 @@ def read_MoorDyn(self): channel_list = channels.split(',') self.set_outlist(self.fst_vt['outlist']['MoorDyn'], channel_list) data = f.readline() + f.close() class InputReader_FAST7(InputReader_Common): diff --git a/ROSCO_toolbox/ofTools/util/FileTools.py b/ROSCO_toolbox/ofTools/util/FileTools.py index b66ac522..2262f10e 100644 --- a/ROSCO_toolbox/ofTools/util/FileTools.py +++ b/ROSCO_toolbox/ofTools/util/FileTools.py @@ -127,6 +127,7 @@ def save_yaml(outdir, fname, data_out): yaml.width = float("inf") yaml.indent(mapping=4, sequence=6, offset=3) yaml.dump(data_out, f) + f.close() def select_cases(cases, var_sel, val_sel): diff --git a/ROSCO_toolbox/utilities.py b/ROSCO_toolbox/utilities.py index d5aa0982..4eeac653 100644 --- a/ROSCO_toolbox/utilities.py +++ b/ROSCO_toolbox/utilities.py @@ -475,7 +475,7 @@ def DISCON_dict(turbine, controller, txt_filename=None): return DISCON_dict -def run_openfast(fast_dir, fastcall='openfast', fastfile=None, chdir=True): +def run_openfast(fast_dir, fastcall='openfast', fastfile=None, chdir=True, restart=False): ''' Runs a openfast openfast simulation. @@ -509,7 +509,10 @@ def run_openfast(fast_dir, fastcall='openfast', fastfile=None, chdir=True): print('Running OpenFAST simulation for {} through the ROSCO toolbox...'.format(fastfile)) # os.system('{} {}'.format(fastcall, os.path.join(fastfile))) - subprocess.run([fastcall, os.path.join(fastfile)], check=True, cwd=cwd) + if restart: + subprocess.run([fastcall,'-restart', os.path.join(fastfile)], check=True, cwd=cwd) + else: + subprocess.run([fastcall, os.path.join(fastfile)], check=True, cwd=cwd) print('OpenFAST simulation complete.') From 7fec13b6f4e58df8663afcbcc0553aa624d8fd86 Mon Sep 17 00:00:00 2001 From: dzalkind Date: Wed, 5 Jan 2022 10:15:59 -0700 Subject: [PATCH 047/218] Implement initial pitch actuator --- ROSCO/rosco_registry/rosco_types.yaml | 11 ++++++++++ ROSCO/src/Controllers.f90 | 20 ++++++++++++++++-- ROSCO/src/ROSCO_Types.f90 | 3 +++ ROSCO/src/ReadSetParameters.f90 | 26 ++++++++++++++++++++++++ ROSCO_toolbox/controller.py | 5 +++++ ROSCO_toolbox/inputs/toolbox_schema.yaml | 17 ++++++++++++++++ ROSCO_toolbox/utilities.py | 9 ++++++++ Tune_Cases/IEA15MW.yaml | 6 +++++- 8 files changed, 94 insertions(+), 3 deletions(-) diff --git a/ROSCO/rosco_registry/rosco_types.yaml b/ROSCO/rosco_registry/rosco_types.yaml index 2bd1e4f0..31fa05dc 100644 --- a/ROSCO/rosco_registry/rosco_types.yaml +++ b/ROSCO/rosco_registry/rosco_types.yaml @@ -414,6 +414,17 @@ ControlParameters: allocatable: True dimension: (:,:) description: Open loop channels in timeseries + + # Pitch actuator + PA_Mode: + <<: *integer + description: Pitch actuator mode {0 - not used, 1 - first order filter, 2 - second order filter} + PA_CornerFreq: + <<: *real + description: Pitch actuator bandwidth/cut-off frequency [rad/s] + PA_Damping: + <<: *real + description: Pitch actuator damping ratio [-, unused if PA_Mode = 1] # Calculated PC_RtTq99: diff --git a/ROSCO/src/Controllers.f90 b/ROSCO/src/Controllers.f90 index 21e5fce8..c357f12b 100644 --- a/ROSCO/src/Controllers.f90 +++ b/ROSCO/src/Controllers.f90 @@ -100,11 +100,9 @@ SUBROUTINE PitchControl(avrSWAP, CntrPar, LocalVar, objInst, DebugVar, ErrVar) LocalVar%PC_PitComT_Last = LocalVar%PC_PitComT ! Combine and saturate all individual pitch commands: - ! Filter to emulate pitch actuator DO K = 1,LocalVar%NumBl ! Loop through all blades, add IPC contribution and limit pitch rate LocalVar%PitCom(K) = LocalVar%PC_PitComT + LocalVar%IPC_PitComF(K) + LocalVar%FA_PitCom(K) LocalVar%PitCom(K) = saturate(LocalVar%PitCom(K), LocalVar%PC_MinPit, CntrPar%PC_MaxPit) ! Saturate the overall command using the pitch angle limits - 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 ! Open Loop control, use if @@ -115,6 +113,24 @@ SUBROUTINE PitchControl(avrSWAP, CntrPar, LocalVar, objInst, DebugVar, ErrVar) END DO ENDIF + ! Place pitch actuator here, so it can be used with or without open-loop + IF (CntrPar%PA_Mode > 0) THEN + DO K = 1,LocalVar%NumBl ! Loop through all blades, add IPC contribution and limit pitch rate + IF (CntrPar%PA_Mode == 1) THEN + LocalVar%PitCom(K) = LPFilter(LocalVar%PitCom(K), LocalVar%DT, CntrPar%PA_CornerFreq, LocalVar%FP, LocalVar%iStatus, LocalVar%restart, objInst%instLPF) + ELSE IF (CntrPar%PA_Mode == 2) THEN + LocalVar%PitCom(K) = SecLPFilter(LocalVar%PitCom(K),LocalVar%DT,CntrPar%PA_CornerFreq,CntrPar%PA_Damping,LocalVar%FP,LocalVar%iStatus,LocalVar%restart,objInst%instSecLPF) + END IF + + END DO + END IF + + ! Saturate the pitch command using the overall (hardware) limit + LocalVar%PitCom(K) = saturate(LocalVar%PitCom(K), LocalVar%PC_MinPit, CntrPar%PC_MaxPit) + ! Saturate the overall command of blade K using the pitch rate limit + 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 + + ! 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 diff --git a/ROSCO/src/ROSCO_Types.f90 b/ROSCO/src/ROSCO_Types.f90 index 857091ba..deca7e89 100644 --- a/ROSCO/src/ROSCO_Types.f90 +++ b/ROSCO/src/ROSCO_Types.f90 @@ -110,6 +110,9 @@ MODULE ROSCO_Types REAL(DbKi), DIMENSION(:), ALLOCATABLE :: OL_GenTq ! Open generator torque timeseries REAL(DbKi), DIMENSION(:), ALLOCATABLE :: OL_YawRate ! Open yaw rate timeseries REAL(DbKi), DIMENSION(:,:), ALLOCATABLE :: OL_Channels ! Open loop channels in timeseries + INTEGER(IntKi) :: PA_Mode ! Pitch actuator mode {0 - not used, 1 - first order filter, 2 - second order filter} + REAL(DbKi) :: PA_CornerFreq ! Pitch actuator bandwidth/cut-off frequency [rad/s] + REAL(DbKi) :: PA_Damping ! Pitch actuator bandwidth/cut-off frequency [rad/s] REAL(DbKi) :: PC_RtTq99 ! 99% of the rated torque value, using for switching between pitch and torque control, [Nm]. REAL(DbKi) :: VS_MaxOMTq ! Maximum torque at the end of the below-rated region 2, [Nm] REAL(DbKi) :: VS_MinOMTq ! Minimum torque at the beginning of the below-rated region 2, [Nm] diff --git a/ROSCO/src/ReadSetParameters.f90 b/ROSCO/src/ReadSetParameters.f90 index af90de9e..443b4d89 100644 --- a/ROSCO/src/ReadSetParameters.f90 +++ b/ROSCO/src/ReadSetParameters.f90 @@ -253,6 +253,7 @@ SUBROUTINE ReadControlParameterFileSub(CntrPar, accINFILE, accINFILE_size,ErrVar CALL ParseInput(UnControllerParameters,CurLine,'FL_Mode',accINFILE(1),CntrPar%FL_Mode,ErrVar) CALL ParseInput(UnControllerParameters,CurLine,'Flp_Mode',accINFILE(1),CntrPar%Flp_Mode,ErrVar) CALL ParseInput(UnControllerParameters,CurLine,'OL_Mode',accINFILE(1),CntrPar%OL_Mode,ErrVar) + CALL ParseInput(UnControllerParameters,CurLine,'PA_Mode',accINFILE(1),CntrPar%PA_Mode,ErrVar) CALL ReadEmptyLine(UnControllerParameters,CurLine) @@ -390,6 +391,15 @@ SUBROUTINE ReadControlParameterFileSub(CntrPar, accINFILE, accINFILE_size,ErrVar CALL ParseInput(UnControllerParameters,CurLine,'Ind_BldPitch',accINFILE(1),CntrPar%Ind_BldPitch,ErrVar) CALL ParseInput(UnControllerParameters,CurLine,'Ind_GenTq',accINFILE(1),CntrPar%Ind_GenTq,ErrVar) CALL ParseInput(UnControllerParameters,CurLine,'Ind_YawRate',accINFILE(1),CntrPar%Ind_YawRate,ErrVar) + CALL ReadEmptyLine(UnControllerParameters,CurLine) + + !------------ Pitch Actuator Inputs ------------ + CALL ReadEmptyLine(UnControllerParameters,CurLine) + CALL ParseInput(UnControllerParameters,CurLine,'PA_CornerFreq',accINFILE(1),CntrPar%PA_CornerFreq,ErrVar) + CALL ParseInput(UnControllerParameters,CurLine,'PA_Damping',accINFILE(1),CntrPar%PA_Damping,ErrVar) + + PRINT *, "PA_CornerFreq:", CntrPar%PA_CornerFreq + PRINT *, "PA_Damping:", CntrPar%PA_Damping ! Fix Paths (add relative paths if called from another dir) IF (PathIsRelative(CntrPar%PerfFileName)) CntrPar%PerfFileName = TRIM(PriPath)//TRIM(CntrPar%PerfFileName) @@ -956,6 +966,22 @@ SUBROUTINE CheckInputs(LocalVar, CntrPar, avrSWAP, ErrVar, size_avcMSG) ErrVar%aviFAIL = -1 ErrVar%ErrMsg = 'All open loop control indices must be greater than zero' ENDIF + + ! --- Pitch Actuator --- + IF (CntrPar%PA_Mode > 0) THEN + IF ((CntrPar%PA_Mode < 0) .OR. (CntrPar%PA_Mode < 2)) THEN + ErrVar%aviFAIL = -1 + ErrVar%ErrMsg = 'PA_Mode must be 0, 1, or 2' + END IF + IF (CntrPar%PA_CornerFreq < 0) THEN + ErrVar%aviFAIL = -1 + ErrVar%ErrMsg = 'PA_CornerFreq must be greater than 0' + END IF + IF (CntrPar%PA_Damping < 0) THEN + ErrVar%aviFAIL = -1 + ErrVar%ErrMsg = 'PA_Damping must be greater than 0' + END IF + END IF diff --git a/ROSCO_toolbox/controller.py b/ROSCO_toolbox/controller.py index eb8e3af6..86b3c77b 100644 --- a/ROSCO_toolbox/controller.py +++ b/ROSCO_toolbox/controller.py @@ -142,6 +142,11 @@ def __init__(self, controller_params): raise Exception(f'Open-loop control set up, but the open loop file {self.OL_Filename} does not exist') + # Pitch actuator parameters + self.PA_Mode = controller_params['PA_Mode'] + self.PA_CornerFreq = controller_params['PA_CornerFreq'] + self.PA_Damping = controller_params['PA_Damping'] + # Save controller_params for later (direct passthrough) self.controller_params = controller_params diff --git a/ROSCO_toolbox/inputs/toolbox_schema.yaml b/ROSCO_toolbox/inputs/toolbox_schema.yaml index 160310fa..1d618b1c 100644 --- a/ROSCO_toolbox/inputs/toolbox_schema.yaml +++ b/ROSCO_toolbox/inputs/toolbox_schema.yaml @@ -179,6 +179,12 @@ properties: maximum: 2 default: 0 description: Active Power Control Mode (0- no active power control 1- constant active power control, 2- open loop power vs time, 3- open loop power vs. wind speed) + PA_Mode: + type: number + minimum: 0 + maximum: 2 + default: 0 + description: Pitch actuator mode {0 - not used, 1 - first order filter, 2 - second order filter} U_pc: type: array description: List of wind speeds to schedule pitch control zeta and omega @@ -367,6 +373,17 @@ properties: description: Index (column, 1-indexed) of breakpoint (time) in open loop index type: number default: 0 + PA_CornerFreq: + type: number + description: Pitch actuator natural frequency [rad/s] + unit: rad/s + default: 3.14 + minimum: 0 + PA_Damping: + type: number + description: Pitch actuator damping ratio [-] + default: 0.707 + minimum: 0 diff --git a/ROSCO_toolbox/utilities.py b/ROSCO_toolbox/utilities.py index 4eeac653..17159069 100644 --- a/ROSCO_toolbox/utilities.py +++ b/ROSCO_toolbox/utilities.py @@ -79,6 +79,7 @@ def write_DISCON(turbine, controller, param_file='DISCON.IN', txt_filename='Cp_C file.write('{0:<12d} ! Fl_Mode - Floating specific feedback mode {{0: no nacelle velocity feedback, 1: feed back translational velocity, 2: feed back rotational veloicty}}\n'.format(int(rosco_vt['Fl_Mode']))) file.write('{0:<12d} ! Flp_Mode - Flap control mode {{0: no flap control, 1: steady state flap angle, 2: Proportional flap control}}\n'.format(int(rosco_vt['Flp_Mode']))) file.write('{0:<12d} ! OL_Mode - Open loop control mode {{0: no open loop control, 1: open loop control vs. time, 2: open loop control vs. wind speed}}\n'.format(int(rosco_vt['OL_Mode']))) + file.write('{0:<12d} ! PA_Mode - Pitch actuator mode {{0 - not used, 1 - first order filter, 2 - second order filter}}\n'.format(int(rosco_vt['PA_Mode']))) file.write('\n') file.write('!------- FILTERS ----------------------------------------------------------\n') file.write('{:<13.5f} ! F_LPFCornerFreq - Corner frequency (-3dB point) in the low-pass filters, [rad/s]\n'.format(rosco_vt['F_LPFCornerFreq'])) @@ -193,6 +194,10 @@ def write_DISCON(turbine, controller, param_file='DISCON.IN', txt_filename='Cp_C file.write('{0:<12d} ! Ind_BldPitch - The column in OL_Filename that contains the blade pitch input in rad\n'.format(int(rosco_vt['Ind_BldPitch']))) file.write('{0:<12d} ! Ind_GenTq - The column in OL_Filename that contains the generator torque in Nm\n'.format(int(rosco_vt['Ind_GenTq']))) file.write('{0:<12d} ! Ind_YawRate - The column in OL_Filename that contains the generator torque in Nm\n'.format(int(rosco_vt['Ind_YawRate']))) + file.write('\n') + file.write('!------- Pitch Actuator Model -----------------------------------------------------\n') + file.write('{:<014.5f} ! PA_CornerFreq - Pitch actuator bandwidth/cut-off frequency [rad/s]\n'.format(rosco_vt['PA_CornerFreq'])) + file.write('{:<014.5f} ! PA_Damping - Pitch actuator damping ratio [-, unused if PA_Mode = 1]\n'.format(rosco_vt['PA_Damping'])) file.close() # Write Open loop input @@ -471,6 +476,10 @@ def DISCON_dict(turbine, controller, txt_filename=None): DISCON_dict['Ind_BldPitch'] = controller.OL_Ind_BldPitch DISCON_dict['Ind_GenTq'] = controller.OL_Ind_GenTq DISCON_dict['Ind_YawRate'] = controller.OL_Ind_YawRate + # ------- Pitch Actuator ------- + DISCON_dict['PA_Mode'] = controller.PA_Mode + DISCON_dict['PA_CornerFreq'] = controller.PA_CornerFreq + DISCON_dict['PA_Damping'] = controller.PA_Damping return DISCON_dict diff --git a/Tune_Cases/IEA15MW.yaml b/Tune_Cases/IEA15MW.yaml index 673716eb..1290ffc2 100644 --- a/Tune_Cases/IEA15MW.yaml +++ b/Tune_Cases/IEA15MW.yaml @@ -25,7 +25,7 @@ turbine_params: #------------------------------- CONTROLLER PARAMETERS ---------------------------------- controller_params: # Controller flags - LoggingLevel: 1 # {0: write no debug files, 1: write standard output .dbg-file, 2: write standard output .dbg-file and complete avrSWAP-array .dbg2-file + LoggingLevel: 2 # {0: write no debug files, 1: write standard output .dbg-file, 2: write standard output .dbg-file and complete avrSWAP-array .dbg2-file F_LPFType: 2 # {1: first-order low-pass filter, 2: second-order low-pass filter}, [rad/s] (currently filters generator speed and pitch control signals) F_NotchType: 0 # Notch on the measured generator speed {0: disable, 1: enable} IPC_ControlMode: 0 # Turn Individual Pitch Control (IPC) for fatigue load reductions (pitch contribution) {0: off, 1: 1P reductions, 2: 1P+2P reductions} @@ -38,6 +38,7 @@ controller_params: SD_Mode: 0 # Shutdown mode {0: no shutdown procedure, 1: pitch to max pitch at shutdown} Fl_Mode: 2 # Floating specific feedback mode {0: no nacelle velocity feedback, 1: nacelle velocity feedback} Flp_Mode: 0 # Flap control mode {0: no flap control, 1: steady state flap angle, 2: Proportional flap control} + PA_Mode: 2 # Pitch actuator mode {0 - not used, 1 - first order filter, 2 - second order filter} # Controller parameters # U_pc: [14] zeta_pc: 1.0 # Pitch controller desired damping ratio [-] @@ -50,3 +51,6 @@ controller_params: min_pitch: 0.0 # Minimum pitch angle [rad], {default = 0 degrees} vs_minspd: 0.523598775 # Minimum rotor speed [rad/s], {default = 0 rad/s} ps_percent: 0.8 # Percent peak shaving [%, <= 1 ], {default = 80%} + PA_CornerFreq: 3.14 # Pitch actuator natural frequency [rad/s] + PA_Damping: 0.125 # Pitch actuator natural frequency [rad/s] + From a034086f51135156ef4337f49c7a6170362f81a1 Mon Sep 17 00:00:00 2001 From: dzalkind Date: Wed, 5 Jan 2022 10:16:13 -0700 Subject: [PATCH 048/218] Set up steps case --- ROSCO_toolbox/ofTools/case_gen/CaseLibrary.py | 307 +++++++++++------- ROSCO_toolbox/ofTools/case_gen/run_FAST.py | 41 ++- 2 files changed, 216 insertions(+), 132 deletions(-) diff --git a/ROSCO_toolbox/ofTools/case_gen/CaseLibrary.py b/ROSCO_toolbox/ofTools/case_gen/CaseLibrary.py index 9b3b93ba..9f1dc8f0 100644 --- a/ROSCO_toolbox/ofTools/case_gen/CaseLibrary.py +++ b/ROSCO_toolbox/ofTools/case_gen/CaseLibrary.py @@ -3,7 +3,7 @@ from ROSCO_toolbox.ofTools.case_gen.CaseGen_General import CaseGen_General from ROSCO_toolbox.ofTools.case_gen.CaseGen_IEC import CaseGen_IEC -from ROSCO_toolbox.ofTools.case_gen.HH_WindFile import HH_StepFile +from ROSCO_toolbox.ofTools.case_gen.HH_WindFile import HH_StepFile, HH_WindFile # ROSCO from ROSCO_toolbox import controller as ROSCO_controller @@ -118,15 +118,18 @@ def base_op_case(): return case_inputs -def power_curve(run_dir,**wind_case_opts): +def power_curve(**wind_case_opts): # Constant wind speed, multiple wind speeds, define below # Runtime T_max = 400. - # Run conditions - U = np.arange(4,14.5,.5).tolist() - U = np.linspace(9.5,12,num=16) + if 'U' in wind_case_opts: + U = wind_case_opts['U'] + else: # default + # Run conditions + U = np.arange(4,14.5,.5).tolist() + U = np.linspace(9.5,12,num=16) case_inputs = base_op_case() @@ -139,7 +142,7 @@ def power_curve(run_dir,**wind_case_opts): return case_inputs -def simp_step(run_dir,**wind_case_opts): +def simp_step(**wind_case_opts): # Set up cases for FIW-JIP project # 3.x in controller tuning register @@ -178,72 +181,8 @@ def simp_step(run_dir,**wind_case_opts): case_inputs[("InflowWind","WindType")] = {'vals':[2], 'group':0} case_inputs[("InflowWind","Filename_Uni")] = {'vals':step_wind_files, 'group':1} - - - # # Tune Floating Feedback Gain - # if tune == 'fl_gain': - # case_inputs[('DISCON_in','Fl_Kp')] = {'vals': np.linspace(0,-18,6,endpoint=True).tolist(), 'group': 2} - - # elif tune == 'fl_phase': - # case_inputs[('DISCON_in','Fl_Kp')] = {'vals': 8*[-25], 'group': 2} - # case_inputs[('DISCON_in','F_FlCornerFreq')] = {'vals': 8*[0.300], 'group': 2} - # case_inputs[('DISCON_in','F_FlHighPassFreq')] = {'vals':[0.001,0.005,0.010,0.020,0.030,0.042,0.060,0.100], 'group': 2} - # case_inputs[('meta','Fl_Phase')] = {'vals':8*[-50],'group':2} - - # elif tune == 'pc_mode': - # # define omega, zeta - # omega = np.linspace(.05,.25,8,endpoint=True).tolist() - # zeta = np.linspace(1,3,3,endpoint=True).tolist() - - # control_case_inputs = sweep_pc_mode(omega,zeta) - # case_inputs.update(control_case_inputs) - - - # elif tune == 'ps_perc': - # # Set sweep limits here - # ps_perc = np.linspace(.75,1,num=8,endpoint=True).tolist() - - # # load default params - # weis_dir = os.path.dirname(os.path.dirname(os.path.dirname(__file__))) - # control_param_yaml = os.path.join(weis_dir,'examples/OpenFAST_models/CT15MW-spar/ServoData/IEA15MW-CT-spar.yaml') - # inps = yaml.safe_load(open(control_param_yaml)) - # path_params = inps['path_params'] - # turbine_params = inps['turbine_params'] - # controller_params = inps['controller_params'] - - # # make default controller, turbine objects for ROSCO_toolbox - # turbine = ROSCO_turbine.Turbine(turbine_params) - # turbine.load_from_fast( path_params['FAST_InputFile'],path_params['FAST_directory'], dev_branch=True) - - # controller = ROSCO_controller.Controller(controller_params) - - # # tune default controller - # controller.tune_controller(turbine) - - # # Loop through and make min pitch tables - # ps_ws = [] - # ps_mp = [] - # m_ps = [] # flattened (omega,zeta) pairs - # for p in ps_perc: - # controller.ps_percent = p - # controller.tune_controller(turbine) - # m_ps.append(controller.ps_min_bld_pitch) - - # # add control gains to case_list - # case_inputs[('meta','ps_perc')] = {'vals': ps_perc, 'group': 2} - # case_inputs[('DISCON_in', 'PS_BldPitchMin')] = {'vals': m_ps, 'group': 2} - - # elif tune == 'max_tq': - # case_inputs[('DISCON_in','VS_MaxTq')] = {'vals': [19624046.66639, 1.5*19624046.66639], 'group': 3} - - # elif tune == 'yaw': - # case_inputs[('ElastoDyn','NacYaw')] = {'vals': [-10,0,10], 'group': 3} - - - return case_inputs - def single_steps(discon_file,runDir, namebase,rosco_dll=''): # Set up cases for FIW-JIP project # 3.x in controller tuning register @@ -284,62 +223,81 @@ def single_steps(discon_file,runDir, namebase,rosco_dll=''): # wind inflow case_inputs[("InflowWind","WindType")] = {'vals':[2], 'group':0} - case_inputs[("InflowWind","Filename")] = {'vals':step_wind_files, 'group':1} + case_inputs[("InflowWind","Filename_Uni")] = {'vals':step_wind_files, 'group':1} +def steps(**wind_case_opts): + # Muliple steps in same simulation at time, wind breakpoints, this function adds zero-order hold, 100 seconds to end + if 'tt' in wind_case_opts and 'U' in wind_case_opts: + tt = wind_case_opts['tt'] + U = wind_case_opts['U'] + else: + raise Exception('You must define tt and U in **wind_case_opts dict to use steps() fcn') -def sweep_pc_mode(cont_yaml,omega=np.linspace(.05,.35,8,endpoint=True).tolist(),zeta=[1.5],group=2): - + if 'dt' in wind_case_opts: + dt = wind_case_opts['dt'] + else: + dt = 0.05 + + if 'U_0' in wind_case_opts: + U_0 = wind_case_opts['U_0'] + else: + U_0 = U[0] + + if 'T_max' in wind_case_opts: + T_max = wind_case_opts['T_max'] + else: + T_max = tt[-1] + 100 + + if len(tt) != len(U): + raise Exception('steps: len(tt) and len(U) must be the same') + + + # Make Default step wind object + hh_wind = HH_WindFile() + hh_wind.t_max = T_max + hh_wind.filename = os.path.join(wind_case_opts['run_dir'],'steps.hh') + + # Step Wind Setup + hh_wind.time = [0] + hh_wind.wind_speed = [U_0] + for t, u in zip(tt,U): + hh_wind.time.append(t-dt) + hh_wind.wind_speed.append(hh_wind.wind_speed[-1]) + + hh_wind.time.append(t) + hh_wind.wind_speed.append(u) + + hh_wind.wind_dir = [0] * len(hh_wind.time) + hh_wind.vert_speed = [0] * len(hh_wind.time) + hh_wind.horiz_shear = [0] * len(hh_wind.time) + hh_wind.vert_shear = [0] * len(hh_wind.time) + hh_wind.linv_shear = [0] * len(hh_wind.time) + hh_wind.gust_speed = [0] * len(hh_wind.time) - inps = yaml.safe_load(open(cont_yaml)) - path_params = inps['path_params'] - turbine_params = inps['turbine_params'] - controller_params = inps['controller_params'] + if False: + hh_wind.plot() - # make default controller, turbine objects for ROSCO_toolbox - turbine = ROSCO_turbine.Turbine(turbine_params) - turbine.load_from_fast( path_params['FAST_InputFile'],path_params['FAST_directory'], dev_branch=True) - - controller = ROSCO_controller.Controller(controller_params) - - # tune default controller - controller.tune_controller(turbine) - - # check if inputs are lists - if not isinstance(omega,list): - omega = [omega] - if not isinstance(zeta,list): - zeta = [zeta] - - # Loop through and make PI gains - pc_kp = [] - pc_ki = [] - m_omega = [] # flattened (omega,zeta) pairs - m_zeta = [] # flattened (omega,zeta) pairs - for o in omega: - for z in zeta: - controller.omega_pc = o - controller.zeta_pc = z - controller.tune_controller(turbine) - pc_kp.append(controller.pc_gain_schedule.Kp.tolist()) - pc_ki.append(controller.pc_gain_schedule.Ki.tolist()) - m_omega.append(o) - m_zeta.append(z) - - # add control gains to case_list - case_inputs = {} - case_inputs[('meta','omega')] = {'vals': m_omega, 'group': group} - case_inputs[('meta','zeta')] = {'vals': m_zeta, 'group': group} - case_inputs[('DISCON_in', 'PC_GS_KP')] = {'vals': pc_kp, 'group': group} - case_inputs[('DISCON_in', 'PC_GS_KI')] = {'vals': pc_ki, 'group': group} + hh_wind.write() + case_inputs = base_op_case() + + case_inputs[("Fst","TMax")] = {'vals':[T_max], 'group':0} + + + # wind inflow + case_inputs[("InflowWind","WindType")] = {'vals':[2], 'group':0} + case_inputs[("InflowWind","Filename_Uni")] = {'vals':[hh_wind.filename], 'group':0} return case_inputs -# Control sweep functions -# function(controller,turbine,start_group) +############################################################################################## +# +# Control sweep cases +# +############################################################################################## -def sweep_rated_torque(tuning_yaml,start_group): +def sweep_rated_torque(start_group, **control_sweep_opts): # Sweep multiplier of original rated torque multipliers = np.linspace(1,1.5,5) @@ -386,7 +344,124 @@ def sweep_rated_torque(tuning_yaml,start_group): case_inputs_control[('DISCON_in',discon_input)] = {'vals': discon_array[discon_input], 'group': start_group} return case_inputs_control + +def sweep_pitch_act(start_group, **control_sweep_opts): + if 'act_bw' in control_sweep_opts: + act_bw = control_sweep_opts['act_bw'] + else: + raise Exception('Define act_bw to sweep or program something else.') + + case_inputs_control = {} + case_inputs_control[('DISCON_in','PA_CornerFreq')] = {'vals': act_bw.tolist(), 'group': start_group} + + return case_inputs_control +# def sweep_pc_mode(cont_yaml,omega=np.linspace(.05,.35,8,endpoint=True).tolist(),zeta=[1.5],group=2): + + +# inps = yaml.safe_load(open(cont_yaml)) +# path_params = inps['path_params'] +# turbine_params = inps['turbine_params'] +# controller_params = inps['controller_params'] + +# # make default controller, turbine objects for ROSCO_toolbox +# turbine = ROSCO_turbine.Turbine(turbine_params) +# turbine.load_from_fast( path_params['FAST_InputFile'],path_params['FAST_directory'], dev_branch=True) + +# controller = ROSCO_controller.Controller(controller_params) + +# # tune default controller +# controller.tune_controller(turbine) + +# # check if inputs are lists +# if not isinstance(omega,list): +# omega = [omega] +# if not isinstance(zeta,list): +# zeta = [zeta] + +# # Loop through and make PI gains +# pc_kp = [] +# pc_ki = [] +# m_omega = [] # flattened (omega,zeta) pairs +# m_zeta = [] # flattened (omega,zeta) pairs +# for o in omega: +# for z in zeta: +# controller.omega_pc = o +# controller.zeta_pc = z +# controller.tune_controller(turbine) +# pc_kp.append(controller.pc_gain_schedule.Kp.tolist()) +# pc_ki.append(controller.pc_gain_schedule.Ki.tolist()) +# m_omega.append(o) +# m_zeta.append(z) + +# # add control gains to case_list +# case_inputs = {} +# case_inputs[('meta','omega')] = {'vals': m_omega, 'group': group} +# case_inputs[('meta','zeta')] = {'vals': m_zeta, 'group': group} +# case_inputs[('DISCON_in', 'PC_GS_KP')] = {'vals': pc_kp, 'group': group} +# case_inputs[('DISCON_in', 'PC_GS_KI')] = {'vals': pc_ki, 'group': group} + +# return case_inputs + + ## Old sweep functions + # # Tune Floating Feedback Gain + # if tune == 'fl_gain': + # case_inputs[('DISCON_in','Fl_Kp')] = {'vals': np.linspace(0,-18,6,endpoint=True).tolist(), 'group': 2} + + # elif tune == 'fl_phase': + # case_inputs[('DISCON_in','Fl_Kp')] = {'vals': 8*[-25], 'group': 2} + # case_inputs[('DISCON_in','F_FlCornerFreq')] = {'vals': 8*[0.300], 'group': 2} + # case_inputs[('DISCON_in','F_FlHighPassFreq')] = {'vals':[0.001,0.005,0.010,0.020,0.030,0.042,0.060,0.100], 'group': 2} + # case_inputs[('meta','Fl_Phase')] = {'vals':8*[-50],'group':2} + + # elif tune == 'pc_mode': + # # define omega, zeta + # omega = np.linspace(.05,.25,8,endpoint=True).tolist() + # zeta = np.linspace(1,3,3,endpoint=True).tolist() + + # control_case_inputs = sweep_pc_mode(omega,zeta) + # case_inputs.update(control_case_inputs) + + + # elif tune == 'ps_perc': + # # Set sweep limits here + # ps_perc = np.linspace(.75,1,num=8,endpoint=True).tolist() + + # # load default params + # weis_dir = os.path.dirname(os.path.dirname(os.path.dirname(__file__))) + # control_param_yaml = os.path.join(weis_dir,'examples/OpenFAST_models/CT15MW-spar/ServoData/IEA15MW-CT-spar.yaml') + # inps = yaml.safe_load(open(control_param_yaml)) + # path_params = inps['path_params'] + # turbine_params = inps['turbine_params'] + # controller_params = inps['controller_params'] + + # # make default controller, turbine objects for ROSCO_toolbox + # turbine = ROSCO_turbine.Turbine(turbine_params) + # turbine.load_from_fast( path_params['FAST_InputFile'],path_params['FAST_directory'], dev_branch=True) + + # controller = ROSCO_controller.Controller(controller_params) + + # # tune default controller + # controller.tune_controller(turbine) + + # # Loop through and make min pitch tables + # ps_ws = [] + # ps_mp = [] + # m_ps = [] # flattened (omega,zeta) pairs + # for p in ps_perc: + # controller.ps_percent = p + # controller.tune_controller(turbine) + # m_ps.append(controller.ps_min_bld_pitch) + + # # add control gains to case_list + # case_inputs[('meta','ps_perc')] = {'vals': ps_perc, 'group': 2} + # case_inputs[('DISCON_in', 'PS_BldPitchMin')] = {'vals': m_ps, 'group': 2} + + # elif tune == 'max_tq': + # case_inputs[('DISCON_in','VS_MaxTq')] = {'vals': [19624046.66639, 1.5*19624046.66639], 'group': 3} + + # elif tune == 'yaw': + # case_inputs[('ElastoDyn','NacYaw')] = {'vals': [-10,0,10], 'group': 3} diff --git a/ROSCO_toolbox/ofTools/case_gen/run_FAST.py b/ROSCO_toolbox/ofTools/case_gen/run_FAST.py index 1bf93e9b..4de3ed2c 100644 --- a/ROSCO_toolbox/ofTools/case_gen/run_FAST.py +++ b/ROSCO_toolbox/ofTools/case_gen/run_FAST.py @@ -30,6 +30,7 @@ def __init__(self): self.tuning_yaml = os.path.join(tune_case_dir,'IEA15MW.yaml') self.wind_case_fcn = cl.power_curve self.wind_case_opts = {} + self.control_sweep_opts = {} self.control_sweep_fcn = None self.save_dir = os.path.join(rosco_dir,'outputs') self.n_cores = 1 @@ -77,7 +78,8 @@ def run_FAST(self): control_base_case[('DISCON_in',discon_input)] = {'vals': [discon_vt[discon_input]], 'group': 0} # Set up wind case - case_inputs = self.wind_case_fcn(run_dir) + self.wind_case_opts['run_dir'] = run_dir + case_inputs = self.wind_case_fcn(**self.wind_case_opts) case_inputs.update(control_base_case) # Specify rosco controller dylib @@ -96,13 +98,13 @@ def run_FAST(self): # Sweep control parameter if self.control_sweep_fcn: - case_inputs_control = self.control_sweep_fcn(self.tuning_yaml,cl.find_max_group(case_inputs)+1) + self.control_sweep_opts['tuning_yaml'] = self.tuning_yaml + case_inputs_control = self.control_sweep_fcn(cl.find_max_group(case_inputs)+1, **self.control_sweep_opts) sweep_name = self.control_sweep_fcn.__name__ case_inputs.update(case_inputs_control) else: sweep_name = 'base' - # Generate cases case_list, case_name_list = CaseGen_General(case_inputs, dir_matrix=run_dir, namebase=turbine_name) @@ -166,7 +168,7 @@ def run_FAST(self): if __name__ == "__main__": # Simulation config - sim_config = 1 + sim_config = 7 r = run_FAST_ROSCO() @@ -175,29 +177,36 @@ def run_FAST(self): if sim_config == 1: # FOCAL single wind speed testing r.tuning_yaml = os.path.join(tune_case_dir,'IEA15MW.yaml') - r.wind_case = cl.simp_step + r.wind_case_fcn = cl.simp_step r.sweep_mode = None r.save_dir = '/Users/dzalkind/Tools/ROSCO/outputs' elif sim_config == 6: # FOCAL rated wind speed tuning - r.tuning_yaml = os.path.join(tune_case_dir,'IEA15MW_FOCAL.yaml') - r.wind_case = power_curve - r.sweep_mode = cl.sweep_rated_torque - r.save_dir = '/Users/dzalkind/Projects/FOCAL/drop_torque' + r.tuning_yaml = os.path.join(tune_case_dir,'IEA15MW_FOCAL.yaml') + r.wind_case_fcn = power_curve + r.sweep_mode = cl.sweep_rated_torque + r.save_dir = '/Users/dzalkind/Projects/FOCAL/drop_torque' elif sim_config == 7: # FOCAL rated wind speed tuning - r.tuning_yaml = os.path.join(tune_case_dir,'IEA15MW.yaml') - r.wind_case = cl.steps - r.wind_case_opts = { - 'times': [200,300,400,500], - 'winds': [6,10,14,18] + r.tuning_yaml = os.path.join(tune_case_dir,'IEA15MW.yaml') + r.wind_case_fcn = cl.steps + r.wind_case_opts = { + 'tt': [100,200], + 'U': [16,18], + 'U_0': 13 } - r.sweep_mode = None - r.save_dir = '/Users/dzalkind/Tools/ROSCO/outputs' + r.sweep_mode = None + r.save_dir = '/Users/dzalkind/Tools/ROSCO/outputs' + r.control_sweep_fcn = cl.sweep_pitch_act + r.control_sweep_opts = { + 'act_bw': np.array([0.25,0.5,1,10]) * np.pi * 2 + } + + r.n_cores = 4 else: raise Exception('This simulation configuration is not supported.') From 93dceb7edc37e981af4de9e57560355631060a02 Mon Sep 17 00:00:00 2001 From: dzalkind <65573423+dzalkind@users.noreply.github.com> Date: Wed, 5 Jan 2022 10:46:19 -0700 Subject: [PATCH 049/218] Break up if statement in open loop pitch (#100) * Break up if statement in open loop pitch * Make torque and yaw consistent with pitch: can start after some time --- ROSCO/src/Controllers.f90 | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/ROSCO/src/Controllers.f90 b/ROSCO/src/Controllers.f90 index 21e5fce8..443350bf 100644 --- a/ROSCO/src/Controllers.f90 +++ b/ROSCO/src/Controllers.f90 @@ -108,11 +108,13 @@ SUBROUTINE PitchControl(avrSWAP, CntrPar, LocalVar, objInst, DebugVar, ErrVar) END DO ! Open Loop control, use if - ! Open loop mode active Using OL blade pitch control Time > first open loop breakpoint - IF ((CntrPar%OL_Mode == 1) .AND. (CntrPar%Ind_BldPitch > 0) .AND. (LocalVar%Time >= CntrPar%OL_Breakpoints(1))) THEN - DO K = 1,LocalVar%NumBl ! Loop through all blades - LocalVar%PitCom(K) = interp1d(CntrPar%OL_Breakpoints,CntrPar%OL_BldPitch,LocalVar%Time, ErrVar) - END DO + ! Open loop mode active Using OL blade pitch control + IF ((CntrPar%OL_Mode == 1) .AND. (CntrPar%Ind_BldPitch > 0)) THEN + IF (LocalVar%Time >= CntrPar%OL_Breakpoints(1)) THEN ! Time > first open loop breakpoint + DO K = 1,LocalVar%NumBl ! Loop through all blades + LocalVar%PitCom(K) = interp1d(CntrPar%OL_Breakpoints,CntrPar%OL_BldPitch,LocalVar%Time, ErrVar) + END DO + ENDIF ENDIF ! Command the pitch demanded from the last @@ -202,7 +204,9 @@ SUBROUTINE VariableSpeedControl(avrSWAP, CntrPar, LocalVar, objInst, ErrVar) ! Open loop torque control IF ((CntrPar%OL_Mode == 1) .AND. (CntrPar%Ind_GenTq > 0)) THEN - LocalVar%GenTq = interp1d(CntrPar%OL_Breakpoints,CntrPar%OL_GenTq,LocalVar%Time,ErrVar) + IF (LocalVar%Time >= CntrPar%OL_Breakpoints(1)) THEN + LocalVar%GenTq = interp1d(CntrPar%OL_Breakpoints,CntrPar%OL_GenTq,LocalVar%Time,ErrVar) + ENDIF ENDIF ! Reset the value of LocalVar%VS_LastGenTrq to the current values: @@ -263,7 +267,9 @@ SUBROUTINE YawRateControl(avrSWAP, CntrPar, LocalVar, objInst, ErrVar) ! If using open loop yaw rate control, overwrite controlled output ! Open loop torque control IF ((CntrPar%OL_Mode == 1) .AND. (CntrPar%Ind_YawRate > 0)) THEN - avrSWAP(48) = interp1d(CntrPar%OL_Breakpoints,CntrPar%OL_YawRate,LocalVar%Time, ErrVar) + IF (LocalVar%Time >= CntrPar%OL_Breakpoints(1)) THEN + avrSWAP(48) = interp1d(CntrPar%OL_Breakpoints,CntrPar%OL_YawRate,LocalVar%Time, ErrVar) + ENDIF ENDIF ! Add RoutineName to error message From 5d5a9ba8217d73c6e0f363fbd8f26e331df67bec Mon Sep 17 00:00:00 2001 From: Nikhar Abbas Date: Thu, 6 Jan 2022 11:56:01 -0700 Subject: [PATCH 050/218] add bld edgewise freq to robust dict_inputs --- ROSCO_toolbox/linear/robust_scheduling.py | 1 + 1 file changed, 1 insertion(+) diff --git a/ROSCO_toolbox/linear/robust_scheduling.py b/ROSCO_toolbox/linear/robust_scheduling.py index 2ef2ba5b..dae86c5b 100644 --- a/ROSCO_toolbox/linear/robust_scheduling.py +++ b/ROSCO_toolbox/linear/robust_scheduling.py @@ -66,6 +66,7 @@ def setup(self): self.turbine.Ct_table = np.squeeze(dict_inputs['Ct_table']) self.turbine.Cq_table = np.squeeze(dict_inputs['Cq_table']) self.turbine.pitch_initial_rad = dict_inputs['pitch_vector'] + self.turbine.bld_edgewise_freq = float(dict_inputs['edge_freq']) self.turbine.TSR_initial = dict_inputs['tsr_vector'] RotorPerformance = ROSCO_turbine.RotorPerformance self.turbine.Cp = RotorPerformance( From 3d696e66b341e39cca6c5a1934e7822111d38a5c Mon Sep 17 00:00:00 2001 From: dzalkind Date: Fri, 7 Jan 2022 12:11:43 -0700 Subject: [PATCH 051/218] Add actuator variable --- ROSCO/rosco_registry/rosco_types.yaml | 4 ++ ROSCO/src/Controllers.f90 | 39 +++++++------- ROSCO/src/ROSCO_IO.f90 | 76 +++++++++++++++------------ ROSCO/src/ROSCO_Types.f90 | 3 +- 4 files changed, 69 insertions(+), 53 deletions(-) diff --git a/ROSCO/rosco_registry/rosco_types.yaml b/ROSCO/rosco_registry/rosco_types.yaml index 31fa05dc..c98d0d6e 100644 --- a/ROSCO/rosco_registry/rosco_types.yaml +++ b/ROSCO/rosco_registry/rosco_types.yaml @@ -760,6 +760,10 @@ LocalVariables: <<: *real description: Commanded pitch of each blade the last time the controller was called [rad]. size: 3 + PitComAct: + <<: *real + description: Actuated pitch of each blade the last time the controller was called [rad]. + size: 3 SS_DelOmegaF: <<: *real description: Filtered setpoint shifting term defined in setpoint smoother [rad/s]. diff --git a/ROSCO/src/Controllers.f90 b/ROSCO/src/Controllers.f90 index c357f12b..3941c991 100644 --- a/ROSCO/src/Controllers.f90 +++ b/ROSCO/src/Controllers.f90 @@ -99,7 +99,7 @@ SUBROUTINE PitchControl(avrSWAP, CntrPar, LocalVar, objInst, DebugVar, ErrVar) LocalVar%PC_PitComT = ratelimit(LocalVar%PC_PitComT, LocalVar%PC_PitComT_Last, CntrPar%PC_MinRat, CntrPar%PC_MaxRat, LocalVar%DT) ! Saturate the overall command of blade K using the pitch rate limit LocalVar%PC_PitComT_Last = LocalVar%PC_PitComT - ! Combine and saturate all individual pitch commands: + ! Combine and saturate all individual pitch commands in software DO K = 1,LocalVar%NumBl ! Loop through all blades, add IPC contribution and limit pitch rate LocalVar%PitCom(K) = LocalVar%PC_PitComT + LocalVar%IPC_PitComF(K) + LocalVar%FA_PitCom(K) LocalVar%PitCom(K) = saturate(LocalVar%PitCom(K), LocalVar%PC_MinPit, CntrPar%PC_MaxPit) ! Saturate the overall command using the pitch angle limits @@ -114,29 +114,32 @@ SUBROUTINE PitchControl(avrSWAP, CntrPar, LocalVar, objInst, DebugVar, ErrVar) ENDIF ! Place pitch actuator here, so it can be used with or without open-loop - IF (CntrPar%PA_Mode > 0) THEN - DO K = 1,LocalVar%NumBl ! Loop through all blades, add IPC contribution and limit pitch rate + DO K = 1,LocalVar%NumBl ! Loop through all blades, add IPC contribution and limit pitch rate + IF (CntrPar%PA_Mode > 0) THEN IF (CntrPar%PA_Mode == 1) THEN - LocalVar%PitCom(K) = LPFilter(LocalVar%PitCom(K), LocalVar%DT, CntrPar%PA_CornerFreq, LocalVar%FP, LocalVar%iStatus, LocalVar%restart, objInst%instLPF) + LocalVar%PitComAct(K) = LPFilter(LocalVar%PitCom(K), LocalVar%DT, CntrPar%PA_CornerFreq, LocalVar%FP, LocalVar%iStatus, LocalVar%restart, objInst%instLPF) ELSE IF (CntrPar%PA_Mode == 2) THEN - LocalVar%PitCom(K) = SecLPFilter(LocalVar%PitCom(K),LocalVar%DT,CntrPar%PA_CornerFreq,CntrPar%PA_Damping,LocalVar%FP,LocalVar%iStatus,LocalVar%restart,objInst%instSecLPF) - END IF - - END DO - END IF - - ! Saturate the pitch command using the overall (hardware) limit - LocalVar%PitCom(K) = saturate(LocalVar%PitCom(K), LocalVar%PC_MinPit, CntrPar%PC_MaxPit) - ! Saturate the overall command of blade K using the pitch rate limit - 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 + LocalVar%PitComAct(K) = SecLPFilter(LocalVar%PitCom(K),LocalVar%DT,CntrPar%PA_CornerFreq,CntrPar%PA_Damping,LocalVar%FP,LocalVar%iStatus,LocalVar%restart,objInst%instSecLPF) + END IF + ELSE + LocalVar%PitComAct(K) = LocalVar%PitCom(K) + ENDIF + END DO + ! Hardware saturation: using CntrPar%PC_MinPit + DO K = 1,LocalVar%NumBl ! Loop through all blades, add IPC contribution and limit pitch rate + ! Saturate the pitch command using the overall (hardware) limit + LocalVar%PitComAct(K) = saturate(LocalVar%PitComAct(K), LocalVar%PC_MinPit, CntrPar%PC_MaxPit) + ! Saturate the overall command of blade K using the pitch rate limit + LocalVar%PitComAct(K) = ratelimit(LocalVar%PitComAct(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 - avrSWAP(43) = LocalVar%PitCom(2) ! " - avrSWAP(44) = LocalVar%PitCom(3) ! " - avrSWAP(45) = LocalVar%PitCom(1) ! Use the command angle of blade 1 if using collective pitch + avrSWAP(42) = LocalVar%PitComAct(1) ! Use the command angles of all blades if using individual pitch + avrSWAP(43) = LocalVar%PitComAct(2) ! " + avrSWAP(44) = LocalVar%PitComAct(3) ! " + avrSWAP(45) = LocalVar%PitComAct(1) ! Use the command angle of blade 1 if using collective pitch ! Add RoutineName to error message IF (ErrVar%aviFAIL < 0) THEN diff --git a/ROSCO/src/ROSCO_IO.f90 b/ROSCO/src/ROSCO_IO.f90 index 10dd30ab..1bda92d4 100644 --- a/ROSCO/src/ROSCO_IO.f90 +++ b/ROSCO/src/ROSCO_IO.f90 @@ -87,6 +87,9 @@ SUBROUTINE WriteRestartFile(LocalVar, CntrPar, objInst, RootName, size_avcOUTNAM WRITE( Un, IOSTAT=ErrStat) LocalVar%PitCom(1) WRITE( Un, IOSTAT=ErrStat) LocalVar%PitCom(2) WRITE( Un, IOSTAT=ErrStat) LocalVar%PitCom(3) + WRITE( Un, IOSTAT=ErrStat) LocalVar%PitComAct(1) + WRITE( Un, IOSTAT=ErrStat) LocalVar%PitComAct(2) + WRITE( Un, IOSTAT=ErrStat) LocalVar%PitComAct(3) WRITE( Un, IOSTAT=ErrStat) LocalVar%SS_DelOmegaF WRITE( Un, IOSTAT=ErrStat) LocalVar%TestType WRITE( Un, IOSTAT=ErrStat) LocalVar%VS_MaxTq @@ -258,6 +261,9 @@ SUBROUTINE ReadRestartFile(avrSWAP, LocalVar, CntrPar, objInst, PerfData, RootNa READ( Un, IOSTAT=ErrStat) LocalVar%PitCom(1) READ( Un, IOSTAT=ErrStat) LocalVar%PitCom(2) READ( Un, IOSTAT=ErrStat) LocalVar%PitCom(3) + READ( Un, IOSTAT=ErrStat) LocalVar%PitComAct(1) + READ( Un, IOSTAT=ErrStat) LocalVar%PitComAct(2) + READ( Un, IOSTAT=ErrStat) LocalVar%PitComAct(3) READ( Un, IOSTAT=ErrStat) LocalVar%SS_DelOmegaF READ( Un, IOSTAT=ErrStat) LocalVar%TestType READ( Un, IOSTAT=ErrStat) LocalVar%VS_MaxTq @@ -406,7 +412,7 @@ SUBROUTINE Debug(LocalVar, CntrPar, DebugVar, avrSWAP, RootName, size_avcOUTNAME '[m/s]', '[m/s]', '[rad]', '[rad]', '[rad/s]', & '[rad/s]', '[rad/s]', '[m/s]', '[rad]', '[rad]' & ] - nLocalVars = 69 + nLocalVars = 70 Allocate(LocalVarOutData(nLocalVars)) Allocate(LocalVarOutStrings(nLocalVars)) LocalVarOutData(1) = LocalVar%iStatus @@ -451,33 +457,34 @@ SUBROUTINE Debug(LocalVar, CntrPar, DebugVar, avrSWAP, RootName, size_avcOUTNAME LocalVarOutData(40) = LocalVar%IPC_IntAxisYaw_2P LocalVarOutData(41) = LocalVar%PC_State LocalVarOutData(42) = LocalVar%PitCom(1) - LocalVarOutData(43) = LocalVar%SS_DelOmegaF - LocalVarOutData(44) = LocalVar%TestType - LocalVarOutData(45) = LocalVar%VS_MaxTq - LocalVarOutData(46) = LocalVar%VS_LastGenTrq - LocalVarOutData(47) = LocalVar%VS_LastGenPwr - LocalVarOutData(48) = LocalVar%VS_MechGenPwr - LocalVarOutData(49) = LocalVar%VS_SpdErrAr - LocalVarOutData(50) = LocalVar%VS_SpdErrBr - LocalVarOutData(51) = LocalVar%VS_SpdErr - LocalVarOutData(52) = LocalVar%VS_State - LocalVarOutData(53) = LocalVar%VS_Rgn3Pitch - LocalVarOutData(54) = LocalVar%WE_Vw - LocalVarOutData(55) = LocalVar%WE_Vw_F - LocalVarOutData(56) = LocalVar%WE_VwI - LocalVarOutData(57) = LocalVar%WE_VwIdot - LocalVarOutData(58) = LocalVar%VS_LastGenTrqF - LocalVarOutData(59) = LocalVar%Y_AccErr - LocalVarOutData(60) = LocalVar%Y_ErrLPFFast - LocalVarOutData(61) = LocalVar%Y_ErrLPFSlow - LocalVarOutData(62) = LocalVar%Y_MErr - LocalVarOutData(63) = LocalVar%Y_YawEndT - LocalVarOutData(64) = LocalVar%Fl_PitCom - LocalVarOutData(65) = LocalVar%NACIMU_FA_AccF - LocalVarOutData(66) = LocalVar%FA_AccF - LocalVarOutData(67) = LocalVar%Flp_Angle(1) - LocalVarOutData(68) = LocalVar%RootMyb_Last(1) - LocalVarOutData(69) = LocalVar%ACC_INFILE_SIZE + LocalVarOutData(43) = LocalVar%PitComAct(1) + LocalVarOutData(44) = LocalVar%SS_DelOmegaF + LocalVarOutData(45) = LocalVar%TestType + LocalVarOutData(46) = LocalVar%VS_MaxTq + LocalVarOutData(47) = LocalVar%VS_LastGenTrq + LocalVarOutData(48) = LocalVar%VS_LastGenPwr + LocalVarOutData(49) = LocalVar%VS_MechGenPwr + LocalVarOutData(50) = LocalVar%VS_SpdErrAr + LocalVarOutData(51) = LocalVar%VS_SpdErrBr + LocalVarOutData(52) = LocalVar%VS_SpdErr + LocalVarOutData(53) = LocalVar%VS_State + LocalVarOutData(54) = LocalVar%VS_Rgn3Pitch + LocalVarOutData(55) = LocalVar%WE_Vw + LocalVarOutData(56) = LocalVar%WE_Vw_F + LocalVarOutData(57) = LocalVar%WE_VwI + LocalVarOutData(58) = LocalVar%WE_VwIdot + LocalVarOutData(59) = LocalVar%VS_LastGenTrqF + LocalVarOutData(60) = LocalVar%Y_AccErr + LocalVarOutData(61) = LocalVar%Y_ErrLPFFast + LocalVarOutData(62) = LocalVar%Y_ErrLPFSlow + LocalVarOutData(63) = LocalVar%Y_MErr + LocalVarOutData(64) = LocalVar%Y_YawEndT + LocalVarOutData(65) = LocalVar%Fl_PitCom + LocalVarOutData(66) = LocalVar%NACIMU_FA_AccF + LocalVarOutData(67) = LocalVar%FA_AccF + LocalVarOutData(68) = LocalVar%Flp_Angle(1) + LocalVarOutData(69) = LocalVar%RootMyb_Last(1) + LocalVarOutData(70) = LocalVar%ACC_INFILE_SIZE LocalVarOutStrings = [CHARACTER(15) :: 'iStatus', 'Time', 'DT', 'VS_GenPwr', 'GenSpeed', & 'RotSpeed', 'Y_M', 'HorWindV', 'rootMOOP', 'BlPitch', & 'Azimuth', 'NumBl', 'FA_Acc', 'NacIMU_FA_Acc', 'FA_AccHPF', & @@ -486,12 +493,13 @@ SUBROUTINE Debug(LocalVar, CntrPar, DebugVar, avrSWAP, RootName, size_avcOUTNAME 'PC_KI', 'PC_KD', 'PC_TF', 'PC_MaxPit', 'PC_MinPit', & 'PC_PitComT', 'PC_PitComT_Last', 'PC_PitComTF', 'PC_PitComT_IPC', 'PC_PwrErr', & 'PC_SpdErr', 'IPC_IntAxisTilt_1P', 'IPC_IntAxisYaw_1P', 'IPC_IntAxisTilt_2P', 'IPC_IntAxisYaw_2P', & - 'PC_State', 'PitCom', 'SS_DelOmegaF', 'TestType', 'VS_MaxTq', & - 'VS_LastGenTrq', 'VS_LastGenPwr', 'VS_MechGenPwr', 'VS_SpdErrAr', 'VS_SpdErrBr', & - 'VS_SpdErr', 'VS_State', 'VS_Rgn3Pitch', 'WE_Vw', 'WE_Vw_F', & - 'WE_VwI', 'WE_VwIdot', 'VS_LastGenTrqF', 'Y_AccErr', 'Y_ErrLPFFast', & - 'Y_ErrLPFSlow', 'Y_MErr', 'Y_YawEndT', 'Fl_PitCom', 'NACIMU_FA_AccF', & - 'FA_AccF', 'Flp_Angle', 'RootMyb_Last', 'ACC_INFILE_SIZE'] + 'PC_State', 'PitCom', 'PitComAct', 'SS_DelOmegaF', 'TestType', & + 'VS_MaxTq', 'VS_LastGenTrq', 'VS_LastGenPwr', 'VS_MechGenPwr', 'VS_SpdErrAr', & + 'VS_SpdErrBr', 'VS_SpdErr', 'VS_State', 'VS_Rgn3Pitch', 'WE_Vw', & + 'WE_Vw_F', 'WE_VwI', 'WE_VwIdot', 'VS_LastGenTrqF', 'Y_AccErr', & + 'Y_ErrLPFFast', 'Y_ErrLPFSlow', 'Y_MErr', 'Y_YawEndT', 'Fl_PitCom', & + 'NACIMU_FA_AccF', 'FA_AccF', 'Flp_Angle', 'RootMyb_Last', 'ACC_INFILE_SIZE' & + ] ! Initialize debug file IF ((LocalVar%iStatus == 0) .OR. (LocalVar%iStatus == -9)) THEN ! .TRUE. if we're on the first call to the DLL IF (CntrPar%LoggingLevel > 0) THEN diff --git a/ROSCO/src/ROSCO_Types.f90 b/ROSCO/src/ROSCO_Types.f90 index deca7e89..9da599b3 100644 --- a/ROSCO/src/ROSCO_Types.f90 +++ b/ROSCO/src/ROSCO_Types.f90 @@ -112,7 +112,7 @@ MODULE ROSCO_Types REAL(DbKi), DIMENSION(:,:), ALLOCATABLE :: OL_Channels ! Open loop channels in timeseries INTEGER(IntKi) :: PA_Mode ! Pitch actuator mode {0 - not used, 1 - first order filter, 2 - second order filter} REAL(DbKi) :: PA_CornerFreq ! Pitch actuator bandwidth/cut-off frequency [rad/s] - REAL(DbKi) :: PA_Damping ! Pitch actuator bandwidth/cut-off frequency [rad/s] + REAL(DbKi) :: PA_Damping ! Pitch actuator damping ratio [-, unused if PA_Mode = 1] REAL(DbKi) :: PC_RtTq99 ! 99% of the rated torque value, using for switching between pitch and torque control, [Nm]. REAL(DbKi) :: VS_MaxOMTq ! Maximum torque at the end of the below-rated region 2, [Nm] REAL(DbKi) :: VS_MinOMTq ! Minimum torque at the beginning of the below-rated region 2, [Nm] @@ -217,6 +217,7 @@ MODULE ROSCO_Types REAL(DbKi) :: IPC_IntAxisYaw_2P ! Integral of quadrature, 2P INTEGER(IntKi) :: PC_State ! State of the pitch control system REAL(DbKi) :: PitCom(3) ! Commanded pitch of each blade the last time the controller was called [rad]. + REAL(DbKi) :: PitComAct(3) ! Actuated pitch of each blade the last time the controller was called [rad]. REAL(DbKi) :: SS_DelOmegaF ! Filtered setpoint shifting term defined in setpoint smoother [rad/s]. REAL(DbKi) :: TestType ! Test variable, no use REAL(DbKi) :: VS_MaxTq ! Maximum allowable generator torque [Nm]. From 7042b4902f5ed374cc46c24a671f88fa30c52c12 Mon Sep 17 00:00:00 2001 From: dzalkind Date: Fri, 7 Jan 2022 12:12:03 -0700 Subject: [PATCH 052/218] Print first time step in debug outs --- ROSCO/src/ROSCO_IO.f90 | 33 +++++++++++++++++---------------- ROSCO_toolbox/utilities.py | 2 +- 2 files changed, 18 insertions(+), 17 deletions(-) diff --git a/ROSCO/src/ROSCO_IO.f90 b/ROSCO/src/ROSCO_IO.f90 index 1bda92d4..6d5ab230 100644 --- a/ROSCO/src/ROSCO_IO.f90 +++ b/ROSCO/src/ROSCO_IO.f90 @@ -522,27 +522,28 @@ SUBROUTINE Debug(LocalVar, CntrPar, DebugVar, avrSWAP, RootName, size_avcOUTNAME WRITE(UnDb3,'(A,85("'//Tab//'AvrSWAP(",I2,")"))') 'LocalVar%Time ', (i,i=1, 85) WRITE(UnDb3,'(A,85("'//Tab//'(-)"))') '(s)' END IF - ELSE - ! Print simulation status, every 10 seconds - IF (MODULO(LocalVar%Time, 10.0_DbKi) == 0) THEN - WRITE(*, 100) LocalVar%GenSpeedF*RPS2RPM, LocalVar%BlPitch(1)*R2D, avrSWAP(15)/1000.0, LocalVar%WE_Vw - 100 FORMAT('Generator speed: ', f6.1, ' RPM, Pitch angle: ', f5.1, ' deg, Power: ', f7.1, ' kW, Est. wind Speed: ', f5.1, ' m/s') - END IF + END IF - ! Write debug files - IF(CntrPar%LoggingLevel > 0) THEN - WRITE (UnDb, FmtDat) LocalVar%Time, DebugOutData - END IF + ! Print simulation status, every 10 seconds + IF (MODULO(LocalVar%Time, 10.0_DbKi) == 0) THEN + WRITE(*, 100) LocalVar%GenSpeedF*RPS2RPM, LocalVar%BlPitch(1)*R2D, avrSWAP(15)/1000.0, LocalVar%WE_Vw + 100 FORMAT('Generator speed: ', f6.1, ' RPM, Pitch angle: ', f5.1, ' deg, Power: ', f7.1, ' kW, Est. wind Speed: ', f5.1, ' m/s') + END IF - IF(CntrPar%LoggingLevel > 1) THEN - WRITE (UnDb2, FmtDat) LocalVar%Time, LocalVarOutData - END IF + ! Write debug files + IF(CntrPar%LoggingLevel > 0) THEN + WRITE (UnDb, FmtDat) LocalVar%Time, DebugOutData + END IF - IF(CntrPar%LoggingLevel > 2) THEN - WRITE (UnDb3, FmtDat) LocalVar%Time, avrSWAP(1: 85) - END IF + IF(CntrPar%LoggingLevel > 1) THEN + WRITE (UnDb2, FmtDat) LocalVar%Time, LocalVarOutData END IF + IF(CntrPar%LoggingLevel > 2) THEN + WRITE (UnDb3, FmtDat) LocalVar%Time, avrSWAP(1: 85) + END IF + + END SUBROUTINE Debug END MODULE ROSCO_IO \ No newline at end of file diff --git a/ROSCO_toolbox/utilities.py b/ROSCO_toolbox/utilities.py index 17159069..0f90798a 100644 --- a/ROSCO_toolbox/utilities.py +++ b/ROSCO_toolbox/utilities.py @@ -63,7 +63,7 @@ def write_DISCON(turbine, controller, param_file='DISCON.IN', txt_filename='Cp_C file.write('! - File written using ROSCO version {} controller tuning logic on {}\n'.format(ROSCO_toolbox.__version__, now.strftime('%m/%d/%y'))) file.write('\n') file.write('!------- DEBUG ------------------------------------------------------------\n') - file.write('{0:<12d} ! LoggingLevel - {{0: write no debug files, 1: write standard output .dbg-file, 2: write standard output .dbg-file and complete avrSWAP-array .dbg2-file}}\n'.format(int(rosco_vt['LoggingLevel']))) + file.write('{0:<12d} ! LoggingLevel - {{0: write no debug files, 1: write standard output .dbg-file, 2: LoggingLevel 1 + ROSCO LocalVars (.dbg2) 3: LoggingLevel 2 + complete avrSWAP-array (.dbg3)}}\n'.format(int(rosco_vt['LoggingLevel']))) file.write('\n') file.write('!------- CONTROLLER FLAGS -------------------------------------------------\n') file.write('{0:<12d} ! F_LPFType - {{1: first-order low-pass filter, 2: second-order low-pass filter}}, [rad/s] (currently filters generator speed and pitch control signals\n'.format(int(rosco_vt['F_LPFType']))) From 8c7949eab8d03d86c0b6dd6b0f296d1c4d42d5d9 Mon Sep 17 00:00:00 2001 From: dzalkind Date: Fri, 7 Jan 2022 12:12:19 -0700 Subject: [PATCH 053/218] Fix FOCAL yaml --- Tune_Cases/IEA15MW_FOCAL.yaml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Tune_Cases/IEA15MW_FOCAL.yaml b/Tune_Cases/IEA15MW_FOCAL.yaml index 09a00dc9..06a36cf8 100644 --- a/Tune_Cases/IEA15MW_FOCAL.yaml +++ b/Tune_Cases/IEA15MW_FOCAL.yaml @@ -19,7 +19,8 @@ turbine_params: max_torque_rate: 4500000. # Maximum torque rate [Nm/s], {~1/4 VS_RtTq/s} rated_power: 1.4780e+07 # Rated Power [W] TSR_operational: 7.49 - + bld_edgewise_freq: 4.0324 # Blade edgewise first natural frequency [rad/s] + bld_flapwise_freq: 3.4872 # Blade flapwise first natural frequency [rad/s] #------------------------------- CONTROLLER PARAMETERS ---------------------------------- controller_params: # Controller flags From 1a0e59a0daee4814ef1f0dec331e526f2d2be05c Mon Sep 17 00:00:00 2001 From: dzalkind Date: Fri, 7 Jan 2022 12:14:18 -0700 Subject: [PATCH 054/218] Set actuator to 0.25 Hz bandwidth --- Tune_Cases/IEA15MW.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Tune_Cases/IEA15MW.yaml b/Tune_Cases/IEA15MW.yaml index 1290ffc2..7eaf1d8d 100644 --- a/Tune_Cases/IEA15MW.yaml +++ b/Tune_Cases/IEA15MW.yaml @@ -51,6 +51,6 @@ controller_params: min_pitch: 0.0 # Minimum pitch angle [rad], {default = 0 degrees} vs_minspd: 0.523598775 # Minimum rotor speed [rad/s], {default = 0 rad/s} ps_percent: 0.8 # Percent peak shaving [%, <= 1 ], {default = 80%} - PA_CornerFreq: 3.14 # Pitch actuator natural frequency [rad/s] - PA_Damping: 0.125 # Pitch actuator natural frequency [rad/s] + PA_CornerFreq: 1.5708 # Pitch actuator natural frequency [rad/s] + PA_Damping: 0.707 # Pitch actuator natural frequency [rad/s] From 41e0dc6e28947c21720889881bec3455f2b8d145 Mon Sep 17 00:00:00 2001 From: "Nikhar J. Abbas" <40865984+nikhar-abbas@users.noreply.github.com> Date: Fri, 14 Jan 2022 11:15:06 -0700 Subject: [PATCH 055/218] Fix ccrotor inputs (#104) * remove interpolation of blade chord and twist * rename aerodynblade inputs * Update surface and DISCON.INs * Fix performance table paths --- ROSCO_toolbox/turbine.py | 9 +- Test_Cases/BAR_10/BAR_10_DISCON.IN | 32 +- Test_Cases/BAR_10/Cp_Ct_Cq.BAR_10.txt | 152 +++++---- .../Cp_Ct_Cq.IEA15MW.txt | 308 +++++------------- .../DISCON-UMaineSemi.IN | 20 +- Test_Cases/NREL-5MW/Cp_Ct_Cq.NREL5MW.txt | 234 +++++-------- Test_Cases/NREL-5MW/DISCON.IN | 26 +- 7 files changed, 295 insertions(+), 486 deletions(-) diff --git a/ROSCO_toolbox/turbine.py b/ROSCO_toolbox/turbine.py index 80fe0357..17e38d29 100644 --- a/ROSCO_toolbox/turbine.py +++ b/ROSCO_toolbox/turbine.py @@ -506,16 +506,11 @@ def load_blade_info(self): # Create CC-Blade Rotor r0 = np.array(self.fast.fst_vt['AeroDynBlade']['BlSpn']) - chord0 = np.array(self.fast.fst_vt['AeroDynBlade']['BlChord']) - theta0 = np.array(self.fast.fst_vt['AeroDynBlade']['BlTwist']) + chord = np.array(self.fast.fst_vt['AeroDynBlade']['BlChord']) + theta = np.array(self.fast.fst_vt['AeroDynBlade']['BlTwist']) # -- Adjust for Aerodyn15 r = r0 + self.Rhub - chord_intfun = interpolate.interp1d(r0,chord0, bounds_error=None, fill_value='extrapolate', kind='zero') - chord = chord_intfun(r) - theta_intfun = interpolate.interp1d(r0,theta0, bounds_error=None, fill_value='extrapolate', kind='zero') - theta = theta_intfun(r) af_idx = np.array(self.fast.fst_vt['AeroDynBlade']['BlAFID']).astype(int) - 1 #Reset to 0 index - AFNames = self.fast.fst_vt['AeroDyn15']['AFNames'] # Read OpenFAST Airfoil data, assumes AeroDyn > v15.03 and associated polars > v1.01 af_dict = {} diff --git a/Test_Cases/BAR_10/BAR_10_DISCON.IN b/Test_Cases/BAR_10/BAR_10_DISCON.IN index 34d0f1dc..2fa3256d 100644 --- a/Test_Cases/BAR_10/BAR_10_DISCON.IN +++ b/Test_Cases/BAR_10/BAR_10_DISCON.IN @@ -1,5 +1,5 @@ ! Controller parameter input file for the BAR_10 wind turbine -! - File written using ROSCO version 2.4.1 controller tuning logic on 12/13/21 +! - File written using ROSCO version 2.4.1 controller tuning logic on 01/10/22 !------- 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} @@ -32,17 +32,17 @@ !------- BLADE PITCH CONTROL ---------------------------------------------- 30 ! PC_GS_n - Amount of gain-scheduling table entries -0.055571 0.084171 0.107141 0.126263 0.144146 0.160539 0.176153 0.190873 0.205230 0.218766 0.232200 0.244952 0.257566 0.269958 0.281962 0.293941 0.305512 0.316846 0.328160 0.339075 0.349883 0.360682 0.371115 0.381477 0.391841 0.401895 0.411830 0.421766 0.431531 0.441117 ! PC_GS_angles - Gain-schedule table: pitch angles [rad]. --0.017860 -0.014810 -0.012465 -0.010606 -0.009097 -0.007846 -0.006793 -0.005894 -0.005118 -0.004442 -0.003846 -0.003318 -0.002847 -0.002423 -0.002041 -0.001694 -0.001377 -0.001088 -0.000822 -0.000576 -0.000349 -0.000139 0.000057 0.000240 0.000411 0.000571 0.000721 0.000862 0.000995 0.001121 ! PC_GS_KP - Gain-schedule table: pitch controller kp gains [s]. --0.000729 -0.000634 -0.000561 -0.000503 -0.000455 -0.000416 -0.000383 -0.000355 -0.000331 -0.000310 -0.000291 -0.000275 -0.000260 -0.000247 -0.000235 -0.000224 -0.000214 -0.000205 -0.000197 -0.000189 -0.000182 -0.000175 -0.000169 -0.000164 -0.000158 -0.000153 -0.000149 -0.000144 -0.000140 -0.000136 ! PC_GS_KI - Gain-schedule table: pitch controller ki gains [-]. +0.058151 0.086071 0.108294 0.127695 0.145312 0.161684 0.177138 0.191883 0.206005 0.219667 0.232902 0.245786 0.258342 0.270636 0.282644 0.294436 0.306016 0.317379 0.328565 0.339581 0.350420 0.361098 0.371631 0.382023 0.392279 0.402388 0.412365 0.422219 0.427606 0.427606 ! PC_GS_angles - Gain-schedule table: pitch angles [rad]. +-0.017176 -0.014316 -0.012097 -0.010326 -0.008879 -0.007675 -0.006658 -0.005786 -0.005032 -0.004372 -0.003790 -0.003274 -0.002811 -0.002396 -0.002020 -0.001678 -0.001366 -0.001080 -0.000817 -0.000575 -0.000350 -0.000142 0.000052 0.000233 0.000403 0.000562 0.000711 0.000851 0.000983 0.001108 ! PC_GS_KP - Gain-schedule table: pitch controller kp gains [s]. +-0.000707 -0.000618 -0.000549 -0.000493 -0.000448 -0.000410 -0.000379 -0.000351 -0.000328 -0.000307 -0.000289 -0.000273 -0.000259 -0.000246 -0.000234 -0.000223 -0.000213 -0.000205 -0.000196 -0.000189 -0.000182 -0.000175 -0.000169 -0.000164 -0.000158 -0.000153 -0.000149 -0.000144 -0.000140 -0.000136 ! PC_GS_KI - Gain-schedule table: pitch controller ki gains [-]. 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 ! PC_GS_KD - Gain-schedule table: pitch controller kd gains 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 ! PC_GS_TF - Gain-schedule table: pitch controller tf gains (derivative filter) 1.570000000000 ! PC_MaxPit - Maximum physical pitch limit, [rad]. --0.02142000000 ! PC_MinPit - Minimum physical pitch limit, [rad]. +-0.00848000000 ! PC_MinPit - Minimum physical pitch limit, [rad]. 2.000000000000 ! PC_MaxRat - Maximum pitch rate (in absolute value) in pitch controller, [rad/s]. -2.00000000000 ! PC_MinRat - Minimum pitch rate (in absolute value) in pitch controller, [rad/s]. 79.85313000000 ! PC_RefSpd - Desired (reference) HSS speed for pitch controller, [rad/s]. --0.02142000000 ! PC_FinePit - Record 5: Below-rated pitch angle set-point, [rad] +-0.00848000000 ! PC_FinePit - Record 5: Below-rated pitch angle set-point, [rad] 0.017450000000 ! PC_Switch - Angle above lowest minimum pitch angle for switch, [rad] !------- INDIVIDUAL PITCH CONTROL ----------------------------------------- @@ -57,15 +57,15 @@ 4500000.000000 ! VS_MaxRat - Maximum torque rate (in absolute value) in torque controller, [Nm/s]. 70282.09458000 ! VS_MaxTq - Maximum generator torque in Region 3 (HSS side), [Nm]. 0.000000000000 ! VS_MinTq - Minimum generator torque (HSS side), [Nm]. -27.13407000000 ! VS_MinOMSpd - Minimum generator speed [rad/s] -13.36109000000 ! VS_Rgn2K - Generator torque constant in Region 2 (HSS side), [Nm/(rad/s)^2] +28.43741000000 ! VS_MinOMSpd - Minimum generator speed [rad/s] +11.47915000000 ! VS_Rgn2K - Generator torque constant in Region 2 (HSS side), [Nm/(rad/s)^2] 5000000.000000 ! VS_RtPwr - Wind turbine rated power [W] 63892.81326000 ! VS_RtTq - Rated torque, [Nm]. -74.83178000000 ! VS_RefSpd - Rated generator speed [rad/s] +78.42620000000 ! VS_RefSpd - Rated generator speed [rad/s] 1 ! VS_n - Number of generator PI torque controller gains --2398.24047000 ! VS_KP - Proportional gain for generator PI torque controller [-]. (Only used in the transitional 2.5 region if VS_ControlMode =/ 2) +-2489.55876000 ! VS_KP - Proportional gain for generator PI torque controller [-]. (Only used in the transitional 2.5 region if VS_ControlMode =/ 2) -332.357190000 ! VS_KI - Integral gain for generator PI torque controller [s]. (Only used in the transitional 2.5 region if VS_ControlMode =/ 2) -9.63 ! VS_TSRopt - Power-maximizing region 2 tip-speed-ratio [rad]. +10.09 ! VS_TSRopt - Power-maximizing region 2 tip-speed-ratio [rad]. !------- SETPOINT SMOOTHER --------------------------------------------- 1.00000 ! SS_VSGain - Variable speed torque controller setpoint smoother gain, [-]. @@ -80,10 +80,10 @@ 311169343.31448 ! 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.BAR_10.txt" ! PerfFileName - File containing rotor performance tables (Cp,Ct,Cq) (absolute path or relative to this file) -20 20 ! PerfTableSize - Size of rotor performance tables, first number refers to number of blade pitch angles, second number referse to number of tip-speed ratios +60 26 ! PerfTableSize - Size of rotor performance tables, first number refers to number of blade pitch angles, second number referse to number of tip-speed ratios 60 ! WE_FOPoles_N - Number of first-order system poles used in EKF 3.0000 3.1818 3.3637 3.5455 3.7274 3.9092 4.0911 4.2729 4.4548 4.6366 4.8185 5.0003 5.1822 5.3640 5.5459 5.7277 5.9096 6.0914 6.2732 6.4551 6.6369 6.8188 7.0006 7.1825 7.3643 7.5462 7.7280 7.9099 8.0917 8.2736 8.8311 9.3887 9.9462 10.5038 11.0613 11.6188 12.1764 12.7339 13.2915 13.8490 14.4066 14.9641 15.5217 16.0792 16.6368 17.1943 17.7519 18.3094 18.8670 19.4245 19.9821 20.5396 21.0972 21.6547 22.2123 22.7698 23.3274 23.8849 24.4425 25.0000 ! WE_FOPoles_v - Wind speeds corresponding to first-order system poles [m/s] --0.01032222 -0.01094791 -0.01157359 -0.01219928 -0.01282497 -0.01345066 -0.01407634 -0.01470203 -0.01532772 -0.01595341 -0.01657910 -0.01720478 -0.01783047 -0.01845616 -0.01908185 -0.01970753 -0.02033322 -0.02095891 -0.02158460 -0.02221029 -0.02283597 -0.02346166 -0.02408735 -0.02471304 -0.02533872 -0.02596441 -0.02659010 -0.02721579 -0.02784148 -0.03155938 -0.02064411 -0.02523568 -0.03115136 -0.03804402 -0.04536814 -0.05319900 -0.06143614 -0.07007492 -0.07905118 -0.08848838 -0.09813189 -0.10826896 -0.11875987 -0.12946050 -0.14060876 -0.15206714 -0.16389528 -0.17579675 -0.18819749 -0.20120021 -0.21421783 -0.22701846 -0.24079660 -0.25500830 -0.26920997 -0.28368131 -0.29815345 -0.31266837 -0.32821652 -0.34409134 ! WE_FOPoles - First order system poles [1/s] +-0.00930355 -0.00986749 -0.01043143 -0.01099537 -0.01155931 -0.01212325 -0.01268719 -0.01325113 -0.01381507 -0.01437901 -0.01494295 -0.01550689 -0.01607083 -0.01663477 -0.01719871 -0.01776265 -0.01832660 -0.01889054 -0.01945448 -0.02001842 -0.02058236 -0.02114630 -0.02171024 -0.02227418 -0.02283812 -0.02340206 -0.02396600 -0.02452994 -0.02509388 -0.02378668 -0.02055906 -0.02540616 -0.03157456 -0.03847811 -0.04594039 -0.05387885 -0.06224973 -0.07101381 -0.08016014 -0.08968119 -0.09953310 -0.10976101 -0.12027022 -0.13117036 -0.14237174 -0.15382291 -0.16569250 -0.17782277 -0.19010243 -0.20286690 -0.21593100 -0.22917975 -0.24254384 -0.25634706 -0.27051024 -0.28483356 -0.29926740 -0.31383257 -0.32390530 -0.32818196 ! WE_FOPoles - First order system poles [1/s] !------- YAW CONTROL ------------------------------------------------------ 0.13960 ! Y_ErrThresh - Yaw error threshold. Turbine begins to yaw when it passes this. [rad^2 s] @@ -106,7 +106,7 @@ !------- MINIMUM PITCH SATURATION ------------------------------------------- 60 ! PS_BldPitchMin_N - Number of values in minimum blade pitch lookup table (should equal number of values in PS_WindSpeeds and PS_BldPitchMin) 3.0000 3.1818 3.3637 3.5455 3.7274 3.9092 4.0911 4.2729 4.4548 4.6366 4.8185 5.0003 5.1822 5.3640 5.5459 5.7277 5.9096 6.0914 6.2732 6.4551 6.6369 6.8188 7.0006 7.1825 7.3643 7.5462 7.7280 7.9099 8.0917 8.2736 8.8311 9.3887 9.9462 10.5038 11.0613 11.6188 12.1764 12.7339 13.2915 13.8490 14.4066 14.9641 15.5217 16.0792 16.6368 17.1943 17.7519 18.3094 18.8670 19.4245 19.9821 20.5396 21.0972 21.6547 22.2123 22.7698 23.3274 23.8849 24.4425 25.0000 ! PS_WindSpeeds - Wind speeds corresponding to minimum blade pitch angles [m/s] --0.02141940 -0.02141940 -0.02141940 -0.02141940 -0.02141940 -0.02141940 -0.02141940 -0.02141940 -0.02141940 -0.02141940 -0.02141940 -0.02141940 -0.02141940 -0.02141940 -0.02141940 -0.02141940 -0.02141940 -0.02141940 -0.02141940 -0.02141940 -0.02141940 -0.02141940 -0.02141940 -0.02141940 -0.02141940 -0.02141940 -0.01349065 -0.00174581 0.00921197 0.02613785 0.04179544 0.05575344 0.06942849 0.08245003 0.09513051 0.10763870 0.11969799 0.13168444 0.14346758 0.15502659 0.16653493 0.17783846 0.18901433 0.20015094 0.21108168 0.22191520 0.23270619 0.24332255 0.25385964 0.26435863 0.27473970 0.28503565 0.29529709 0.30541422 0.31541604 0.32537159 0.33522814 0.34495680 0.35464470 0.36428596 ! PS_BldPitchMin - Minimum blade pitch angles [rad] +-0.00847513 -0.00847513 -0.00847513 -0.00847513 -0.00847513 -0.00847513 -0.00847513 -0.00847513 -0.00847513 -0.00847513 -0.00847513 -0.00847513 -0.00847513 -0.00847513 -0.00847513 -0.00847513 -0.00847513 -0.00847513 -0.00847513 -0.00847513 -0.00847513 -0.00847513 -0.00847513 -0.00847513 -0.00560450 0.00578436 0.01574908 0.02460700 0.03258023 0.04139231 0.05578330 0.06941523 0.08249524 0.09521167 0.10760688 0.11975984 0.13170370 0.14345063 0.15504026 0.16648113 0.17777406 0.18894394 0.19999720 0.21092988 0.22175246 0.23247333 0.24309607 0.25362106 0.26404779 0.27438497 0.28463234 0.29479186 0.30486583 0.31485208 0.32475300 0.33457222 0.34430939 0.35396385 0.36353560 0.37302533 ! PS_BldPitchMin - Minimum blade pitch angles [rad] !------- SHUTDOWN ----------------------------------------------------------- 0.698100000000 ! SD_MaxPit - Maximum blade pitch angle to initiate shutdown, [rad] @@ -117,8 +117,8 @@ !------- FLAP ACTUATION ----------------------------------------------------- 0.000000000000 ! Flp_Angle - Initial or steady state flap angle [rad] -7.83530248e-08 ! Flp_Kp - Blade root bending moment proportional gain for flap control [s] -1.63131797e-09 ! Flp_Ki - Flap displacement integral gain for flap control [-] +7.49315208e-08 ! Flp_Kp - Blade root bending moment proportional gain for flap control [s] +1.56008191e-09 ! Flp_Ki - Flap displacement integral gain for flap control [-] 0.174500000000 ! Flp_MaxPit - Maximum (and minimum) flap pitch angle [rad] !------- Open Loop Control ----------------------------------------------------- diff --git a/Test_Cases/BAR_10/Cp_Ct_Cq.BAR_10.txt b/Test_Cases/BAR_10/Cp_Ct_Cq.BAR_10.txt index e7ef6e65..9745e85c 100644 --- a/Test_Cases/BAR_10/Cp_Ct_Cq.BAR_10.txt +++ b/Test_Cases/BAR_10/Cp_Ct_Cq.BAR_10.txt @@ -1,81 +1,99 @@ -# ----- Rotor performance tables for the Generated with AeroElasticSE FAST driver wind turbine ----- -# ------------ Written on Sep-28-20 using the ROSCO toolbox ------------ +# ----- Rotor performance tables for the BAR_10 wind turbine ----- +# ------------ Written on Jan-10-22 using the ROSCO toolbox ------------ -# Pitch angle vector, 20 entries - x axis (matrix columns) (deg) --5.0 -3.158 -1.316 0.5263 2.368 4.211 6.053 7.895 9.737 11.58 13.42 15.26 17.11 18.95 20.79 22.63 24.47 26.32 28.16 30.0 -# TSR vector, 20 entries - y axis (matrix rows) (-) -2.0 2.526 3.053 3.579 4.105 4.632 5.158 5.684 6.211 6.737 7.263 7.789 8.316 8.842 9.368 9.895 10.42 10.95 11.47 12.0 +# Pitch angle vector, 60 entries - x axis (matrix columns) (deg) +-5.0 -4.5 -4.0 -3.5 -3.0 -2.5 -2.0 -1.5 -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, 26 entries - y axis (matrix rows) (-) +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 # Wind speed vector - z axis (m/s) -8.332 +8.274 # Power coefficient -0.018997 0.022892 0.026769 0.030629 0.034489 0.038376 0.042201 0.045870 0.049512 0.053331 0.057305 0.061047 0.063907 0.065226 0.064706 0.062474 0.058863 0.054172 0.048656 0.042477 -0.039532 0.046037 0.052579 0.058992 0.064924 0.070726 0.076839 0.083176 0.088927 0.092940 0.094292 0.092720 0.088648 0.082679 0.075276 0.066773 0.057408 0.047383 0.036864 0.025901 -0.070343 0.080179 0.088978 0.097674 0.106897 0.116142 0.123735 0.128041 0.128210 0.124380 0.117377 0.108055 0.096982 0.084558 0.071082 0.056831 0.041995 0.026597 0.010580 -0.006146 -0.110837 0.123010 0.135777 0.148821 0.159736 0.166187 0.167194 0.162873 0.154133 0.142159 0.127805 0.111581 0.093917 0.075166 0.055621 0.035391 0.014359 -0.007626 -0.030690 -0.053978 -0.159261 0.176788 0.193063 0.204502 0.209365 0.207500 0.199435 0.186413 0.169861 0.150576 0.129143 0.106038 0.081672 0.056399 0.030163 0.002777 -0.026051 -0.056387 -0.086606 -0.113428 -0.217538 0.236733 0.248949 0.253255 0.249820 0.239179 0.222746 0.202141 0.178254 0.151729 0.123112 0.092938 0.061517 0.028791 -0.005552 -0.041913 -0.080391 -0.118981 -0.153208 -0.181068 -0.277080 0.291279 0.296726 0.293543 0.282047 0.263518 0.239803 0.212019 0.180829 0.146946 0.110901 0.073110 0.033569 -0.008132 -0.052450 -0.099698 -0.148177 -0.192326 -0.228445 -0.256500 -0.328119 0.336865 0.336361 0.326466 0.307883 0.282652 0.252178 0.217284 0.178718 0.137103 0.092986 0.046525 -0.002671 -0.055118 -0.111352 -0.170618 -0.227377 -0.274924 -0.312077 -0.338357 -0.368305 0.373812 0.368845 0.353404 0.329132 0.297966 0.260940 0.218865 0.172494 0.122512 0.069333 0.012775 -0.047721 -0.112808 -0.182719 -0.253773 -0.316574 -0.366593 -0.402895 -0.426600 -0.397795 0.402803 0.395197 0.375858 0.347051 0.310374 0.266781 0.217170 0.162399 0.103164 0.039685 -0.028495 -0.102082 -0.181806 -0.266579 -0.347974 -0.415516 -0.466169 -0.501201 -0.523586 -0.416430 0.424480 0.416486 0.394930 0.362391 0.320389 0.270029 0.212398 0.148478 0.078961 0.003797 -0.077668 -0.166278 -0.262570 -0.362555 -0.452582 -0.523174 -0.574316 -0.609260 -0.631069 -0.424968 0.439235 0.433486 0.411197 0.375535 0.328283 0.270868 0.204637 0.130736 0.049743 -0.038616 -0.135155 -0.240853 -0.355425 -0.469991 -0.566593 -0.640196 -0.693275 -0.728145 -0.750242 -0.426864 0.446939 0.446484 0.424915 0.386693 0.334220 0.269420 0.193959 0.109097 0.015314 -0.087864 -0.201392 -0.326313 -0.460411 -0.587617 -0.690664 -0.768760 -0.823698 -0.858504 -0.882131 -0.421429 0.447946 0.455436 0.436189 0.395993 0.338341 0.265777 0.180354 0.083447 -0.024548 -0.144276 -0.276842 -0.423081 -0.576800 -0.715350 -0.826836 -0.909517 -0.966035 -1.000976 -1.028804 -0.409021 0.443541 0.460095 0.445040 0.403559 0.340743 0.259981 0.163771 0.053645 -0.070084 -0.208202 -0.361977 -0.531245 -0.703411 -0.855193 -0.975842 -1.062890 -1.120957 -1.156506 -1.192238 -0.393100 0.433416 0.459957 0.451464 0.409452 0.341476 0.252033 0.144136 0.019529 -0.121547 -0.280010 -0.457171 -0.649714 -0.841473 -1.008675 -1.138103 -1.229599 -1.288442 -1.326852 -1.374188 -0.374055 0.419031 0.454540 0.455359 0.413694 0.340568 0.241905 0.121356 -0.019075 -0.179204 -0.360077 -0.562365 -0.778558 -0.993432 -1.176204 -1.313948 -1.409391 -1.469691 -1.513767 -1.575649 -0.351953 0.402213 0.444780 0.456520 0.416276 0.338023 0.229550 0.095325 -0.062351 -0.243337 -0.448683 -0.676156 -0.920010 -1.159411 -1.357508 -1.503584 -1.603235 -1.666196 -1.718315 -1.797585 -0.327018 0.383380 0.431839 0.454600 0.417164 0.333820 0.214912 0.065929 -0.110495 -0.314236 -0.545785 -0.799075 -1.075831 -1.339722 -1.553449 -1.707933 -1.811682 -1.879066 -1.941483 -2.041065 -0.299562 0.362976 0.416736 0.449210 0.416289 0.327920 0.197927 0.033042 -0.163711 -0.392127 -0.649836 -0.934196 -1.246034 -1.534696 -1.763841 -1.927068 -2.035797 -2.109081 -2.184511 -2.306937 +0.019142 0.020201 0.021256 0.022309 0.023359 0.024406 0.025450 0.026491 0.027530 0.028567 0.029602 0.030635 0.031665 0.032693 0.033717 0.034736 0.035749 0.036758 0.037763 0.038765 0.039765 0.040763 0.041762 0.042764 0.043770 0.044781 0.045796 0.046817 0.047840 0.048864 0.049888 0.050912 0.051933 0.052950 0.053959 0.054956 0.055933 0.056886 0.057805 0.058684 0.059516 0.060291 0.061002 0.061640 0.062197 0.062666 0.063041 0.063313 0.063481 0.063539 0.063486 0.063319 0.063037 0.062641 0.062132 0.061514 0.060788 0.059961 0.059036 0.058021 +0.038413 0.040109 0.041802 0.043489 0.045169 0.046838 0.048496 0.050142 0.051779 0.053405 0.055024 0.056636 0.058246 0.059855 0.061464 0.063072 0.064679 0.066284 0.067885 0.069486 0.071087 0.072687 0.074282 0.075864 0.077425 0.078954 0.080441 0.081876 0.083246 0.084537 0.085736 0.086824 0.087787 0.088612 0.089288 0.089803 0.090151 0.090325 0.090322 0.090144 0.089789 0.089259 0.088557 0.087687 0.086657 0.085472 0.084144 0.082680 0.081090 0.079383 0.077569 0.075654 0.073647 0.071554 0.069380 0.067132 0.064815 0.062433 0.059991 0.057492 +0.066314 0.068802 0.071269 0.073717 0.076151 0.078570 0.080975 0.083363 0.085734 0.088092 0.090443 0.092792 0.095142 0.097487 0.099820 0.102127 0.104393 0.106608 0.108755 0.110818 0.112776 0.114606 0.116280 0.117776 0.119071 0.120145 0.120983 0.121576 0.121915 0.122000 0.121828 0.121404 0.120730 0.119810 0.118651 0.117263 0.115657 0.113848 0.111849 0.109676 0.107342 0.104859 0.102239 0.099493 0.096629 0.093657 0.090583 0.087415 0.084157 0.080818 0.077402 0.073916 0.070364 0.066749 0.063076 0.059348 0.055567 0.051737 0.047859 0.043935 +0.103120 0.106487 0.109814 0.113112 0.116397 0.119673 0.122941 0.126188 0.129402 0.132567 0.135667 0.138681 0.141586 0.144351 0.146942 0.149323 0.151458 0.153318 0.154877 0.156117 0.157022 0.157586 0.157804 0.157676 0.157206 0.156398 0.155260 0.153802 0.152038 0.149983 0.147655 0.145075 0.142264 0.139240 0.136020 0.132620 0.129054 0.125334 0.121469 0.117469 0.113343 0.109099 0.104746 0.100291 0.095741 0.091103 0.086382 0.081583 0.076710 0.071767 0.066758 0.061685 0.056552 0.051360 0.046111 0.040805 0.035440 0.030017 0.024534 0.018990 +0.148146 0.152491 0.156791 0.161033 0.165199 0.169267 0.173203 0.176969 0.180519 0.183807 0.186790 0.189431 0.191699 0.193568 0.195018 0.196036 0.196613 0.196749 0.196445 0.195709 0.194550 0.192979 0.191011 0.188665 0.185961 0.182926 0.179585 0.175962 0.172078 0.167955 0.163612 0.159066 0.154330 0.149416 0.144335 0.139097 0.133711 0.128188 0.122534 0.116759 0.110869 0.104872 0.098775 0.092582 0.086300 0.079932 0.073483 0.066956 0.060352 0.053673 0.046919 0.040089 0.033180 0.026192 0.019122 0.011969 0.004732 -0.002589 -0.009990 -0.017461 +0.200103 0.205196 0.210079 0.214696 0.218995 0.222929 0.226458 0.229545 0.232162 0.234281 0.235884 0.236957 0.237500 0.237513 0.237002 0.235973 0.234438 0.232416 0.229923 0.226982 0.223616 0.219853 0.215727 0.211264 0.206491 0.201434 0.196114 0.190551 0.184758 0.178749 0.172534 0.166124 0.159529 0.152760 0.145826 0.138736 0.131500 0.124126 0.116623 0.108997 0.101255 0.093403 0.085445 0.077384 0.069223 0.060963 0.052604 0.044144 0.035581 0.026911 0.018134 0.009244 0.000240 -0.008879 -0.018114 -0.027456 -0.036895 -0.046411 -0.055983 -0.065581 +0.254483 0.259314 0.263677 0.267536 0.270860 0.273619 0.275792 0.277365 0.278332 0.278693 0.278451 0.277613 0.276187 0.274183 0.271616 0.268506 0.264880 0.260769 0.256207 0.251229 0.245866 0.240150 0.234105 0.227755 0.221116 0.214204 0.207029 0.199604 0.191940 0.184049 0.175942 0.167630 0.159123 0.150431 0.141565 0.132533 0.123344 0.114006 0.104526 0.094908 0.085156 0.075274 0.065261 0.055116 0.044838 0.034422 0.023865 0.013163 0.002311 -0.008693 -0.019853 -0.031169 -0.042635 -0.054238 -0.065960 -0.077771 -0.089635 -0.101502 -0.113308 -0.124981 +0.304515 0.308387 0.311648 0.314273 0.316245 0.317561 0.318217 0.318206 0.317524 0.316171 0.314157 0.311496 0.308209 0.304320 0.299862 0.294875 0.289396 0.283459 0.277097 0.270338 0.263206 0.255722 0.247900 0.239754 0.231295 0.222536 0.213489 0.204167 0.194581 0.184743 0.174666 0.164359 0.153835 0.143105 0.132177 0.121061 0.109764 0.098290 0.086643 0.074824 0.062832 0.050666 0.038320 0.025790 0.013071 0.000158 -0.012953 -0.026266 -0.039786 -0.053511 -0.067434 -0.081537 -0.095793 -0.110163 -0.124595 -0.139015 -0.153336 -0.167464 -0.181309 -0.194785 +0.346287 0.349319 0.351651 0.353267 0.354151 0.354292 0.353680 0.352315 0.350205 0.347364 0.343815 0.339586 0.334713 0.329237 0.323196 0.316628 0.309566 0.302038 0.294069 0.285676 0.276874 0.267675 0.258092 0.248137 0.237825 0.227170 0.216186 0.204885 0.193282 0.181389 0.169220 0.156788 0.144102 0.131174 0.118011 0.104619 0.091001 0.077158 0.063088 0.048789 0.034256 0.019482 0.004462 -0.010809 -0.026338 -0.042129 -0.058187 -0.074514 -0.091101 -0.107930 -0.124968 -0.142168 -0.159460 -0.176755 -0.193941 -0.210899 -0.227513 -0.243674 -0.259281 -0.274251 +0.378636 0.381475 0.383464 0.384590 0.384844 0.384224 0.382736 0.380395 0.377223 0.373252 0.368522 0.363077 0.356961 0.350213 0.342869 0.334956 0.326500 0.317519 0.308029 0.298043 0.287576 0.276644 0.265262 0.253446 0.241213 0.228579 0.215558 0.202168 0.188422 0.174336 0.159923 0.145195 0.130162 0.114831 0.099207 0.083291 0.067084 0.050581 0.033778 0.016669 -0.000754 -0.018497 -0.036566 -0.054969 -0.073713 -0.092802 -0.112231 -0.131983 -0.152026 -0.172309 -0.192752 -0.213252 -0.233677 -0.253882 -0.273717 -0.293041 -0.311727 -0.329661 -0.346756 -0.362954 +0.401217 0.404713 0.407171 0.408512 0.408753 0.407928 0.406073 0.403230 0.399449 0.394782 0.389277 0.382982 0.375936 0.368173 0.359722 0.350608 0.340852 0.330469 0.319477 0.307895 0.295742 0.283037 0.269800 0.256049 0.241803 0.227080 0.211900 0.196280 0.180236 0.163784 0.146936 0.129705 0.112095 0.094112 0.075756 0.057027 0.037920 0.018427 -0.001457 -0.021742 -0.042435 -0.063544 -0.085079 -0.107047 -0.129450 -0.152278 -0.175503 -0.199078 -0.222923 -0.246926 -0.270946 -0.294812 -0.318340 -0.341349 -0.363666 -0.385136 -0.405623 -0.425016 -0.443242 -0.460298 +0.414688 0.419268 0.422781 0.425113 0.426149 0.425840 0.424261 0.421496 0.417621 0.412702 0.406798 0.399958 0.392223 0.383632 0.374214 0.363994 0.352995 0.341240 0.328754 0.315561 0.301685 0.287150 0.271979 0.256194 0.239820 0.222877 0.205388 0.187370 0.168844 0.149822 0.130318 0.110338 0.089886 0.068965 0.047573 0.025704 0.003351 -0.019496 -0.042844 -0.066705 -0.091086 -0.116001 -0.141456 -0.167453 -0.193974 -0.220982 -0.248408 -0.276146 -0.304047 -0.331934 -0.359591 -0.386790 -0.413304 -0.438908 -0.463386 -0.486591 -0.508466 -0.528938 -0.548203 -0.566126 +0.419962 0.426008 0.430980 0.434716 0.437150 0.438159 0.437627 0.435580 0.432139 0.427402 0.421449 0.414346 0.406146 0.396895 0.386630 0.375384 0.363193 0.350088 0.336104 0.321270 0.305618 0.289177 0.271976 0.254043 0.235406 0.216090 0.196119 0.175514 0.154293 0.132468 0.110050 0.087046 0.063457 0.039282 0.014515 -0.010852 -0.036830 -0.063428 -0.090658 -0.118531 -0.147059 -0.176254 -0.206113 -0.236614 -0.267708 -0.299308 -0.331277 -0.363433 -0.395552 -0.427369 -0.458589 -0.488898 -0.518012 -0.545750 -0.571981 -0.596857 -0.620264 -0.642291 -0.662730 -0.681584 +0.418937 0.426104 0.432554 0.438028 0.442226 0.444977 0.446137 0.445522 0.443115 0.439035 0.433408 0.426335 0.417893 0.408148 0.397154 0.384965 0.371629 0.357192 0.341696 0.325182 0.307689 0.289253 0.269912 0.249700 0.228647 0.206784 0.184137 0.160726 0.136570 0.111680 0.086068 0.059736 0.032685 0.004909 -0.023602 -0.052858 -0.082870 -0.113651 -0.145214 -0.177573 -0.210740 -0.244713 -0.279466 -0.314940 -0.351030 -0.387565 -0.424327 -0.461035 -0.497342 -0.532846 -0.567224 -0.600171 -0.631758 -0.661824 -0.690364 -0.717127 -0.742175 -0.765750 -0.787548 -0.807944 +0.412973 0.421335 0.428977 0.435906 0.441950 0.446725 0.449886 0.451222 0.450461 0.447578 0.442711 0.435994 0.427556 0.417500 0.405911 0.392867 0.378436 0.362679 0.345652 0.327409 0.307999 0.287469 0.265863 0.243222 0.219583 0.194979 0.169436 0.142977 0.115621 0.087383 0.058268 0.028280 -0.002587 -0.034342 -0.066996 -0.100561 -0.135050 -0.170478 -0.206859 -0.244207 -0.282523 -0.321778 -0.361906 -0.402778 -0.444192 -0.485872 -0.527447 -0.568478 -0.608540 -0.647490 -0.685175 -0.721360 -0.755761 -0.788253 -0.819135 -0.848111 -0.875570 -0.901180 -0.924669 -0.946149 +0.402182 0.412091 0.421267 0.429662 0.437246 0.443936 0.449279 0.452772 0.454084 0.452928 0.449268 0.443305 0.435166 0.425013 0.412980 0.399178 0.383702 0.366636 0.348054 0.328025 0.306613 0.283875 0.259866 0.234632 0.208216 0.180654 0.151975 0.122206 0.091367 0.059470 0.026522 -0.007482 -0.042548 -0.078687 -0.115911 -0.154235 -0.193672 -0.234237 -0.275947 -0.318806 -0.362783 -0.407802 -0.453711 -0.500259 -0.547070 -0.593693 -0.639680 -0.685047 -0.729443 -0.772458 -0.813606 -0.853035 -0.890529 -0.926372 -0.960293 -0.991932 -1.021404 -1.048543 -1.073274 -1.095687 +0.386948 0.398573 0.409537 0.419690 0.428983 0.437358 0.444729 0.450542 0.454130 0.455031 0.453031 0.448176 0.440686 0.430697 0.418395 0.403944 0.387479 0.369115 0.348950 0.327074 0.303565 0.278496 0.251930 0.223922 0.194519 0.163764 0.131691 0.098330 0.063700 0.027813 -0.009329 -0.047732 -0.087404 -0.128358 -0.170605 -0.214161 -0.259042 -0.305261 -0.352825 -0.401703 -0.451804 -0.502942 -0.554770 -0.606809 -0.658664 -0.710520 -0.761863 -0.812138 -0.860849 -0.908018 -0.953431 -0.997089 -1.038427 -1.077351 -1.113862 -1.147764 -1.179223 -1.208055 -1.234133 -1.257397 +0.368688 0.381723 0.394255 0.406237 0.417401 0.427605 0.436779 0.444759 0.450803 0.454050 0.454001 0.450609 0.444033 0.434502 0.422147 0.407179 0.389793 0.370146 0.348369 0.324576 0.298868 0.271331 0.242040 0.211059 0.178445 0.144246 0.108503 0.071246 0.032496 -0.007738 -0.049456 -0.092666 -0.137375 -0.183596 -0.231342 -0.280628 -0.331466 -0.383856 -0.437765 -0.493078 -0.549534 -0.606650 -0.664008 -0.722036 -0.780135 -0.837775 -0.894407 -0.949938 -1.004195 -1.056579 -1.106458 -1.153922 -1.198597 -1.240682 -1.279998 -1.316428 -1.349868 -1.380251 -1.407448 -1.431411 +0.347775 0.362431 0.376445 0.389887 0.402778 0.414881 0.425950 0.435886 0.444291 0.450057 0.452289 0.450622 0.445242 0.436358 0.424188 0.408869 0.390644 0.369734 0.346315 0.320534 0.292514 0.262360 0.230162 0.195996 0.159930 0.122019 0.082311 0.040836 -0.002384 -0.047344 -0.094042 -0.142486 -0.192683 -0.244646 -0.298385 -0.353906 -0.411198 -0.470213 -0.530789 -0.592517 -0.654827 -0.718427 -0.782745 -0.847355 -0.911657 -0.975715 -1.039189 -1.101044 -1.160591 -1.217647 -1.271901 -1.323398 -1.371878 -1.417206 -1.459319 -1.498124 -1.533468 -1.565268 -1.593476 -1.618144 +0.324083 0.340598 0.356330 0.371352 0.385740 0.399528 0.412486 0.424322 0.434859 0.443221 0.447913 0.448320 0.444311 0.436306 0.424450 0.408965 0.390010 0.367868 0.342778 0.314930 0.284476 0.251546 0.216247 0.178671 0.138898 0.096993 0.053007 0.006972 -0.041090 -0.091171 -0.143272 -0.197396 -0.253552 -0.311744 -0.371965 -0.434187 -0.498327 -0.564114 -0.630848 -0.699126 -0.768930 -0.839797 -0.911021 -0.983031 -1.055443 -1.126978 -1.196856 -1.264436 -1.329480 -1.391642 -1.450637 -1.506277 -1.558472 -1.607084 -1.651986 -1.693107 -1.730318 -1.763568 -1.792901 -1.818466 +0.297744 0.316364 0.334039 0.350834 0.366828 0.382117 0.396728 0.410422 0.422889 0.433639 0.440998 0.443690 0.441376 0.434303 0.422964 0.407396 0.387842 0.364514 0.337729 0.307731 0.274716 0.238842 0.200238 0.159015 0.115268 0.069068 0.020473 -0.030480 -0.083771 -0.139389 -0.197332 -0.257601 -0.320190 -0.385077 -0.452207 -0.521429 -0.592133 -0.664139 -0.738599 -0.814721 -0.891917 -0.970768 -1.051179 -1.131835 -1.211857 -1.290374 -1.366989 -1.440909 -1.511693 -1.579037 -1.642779 -1.702704 -1.758667 -1.810599 -1.858371 -1.901920 -1.941128 -1.975946 -2.006485 -2.033038 +0.268812 0.289693 0.309526 0.328317 0.346141 0.363074 0.379251 0.394600 0.408865 0.421642 0.431574 0.436746 0.436378 0.430529 0.419647 0.404168 0.384070 0.359623 0.331124 0.298896 0.263188 0.224192 0.182070 0.136952 0.088947 0.038139 -0.015409 -0.071658 -0.130582 -0.192168 -0.256406 -0.323277 -0.392740 -0.464704 -0.538894 -0.614267 -0.692229 -0.772352 -0.854607 -0.938824 -1.025894 -1.114482 -1.203622 -1.292480 -1.380582 -1.466812 -1.550354 -1.630625 -1.707298 -1.780037 -1.848643 -1.912978 -1.972908 -2.028372 -2.079207 -2.125271 -2.166483 -2.202905 -2.234767 -2.262478 +0.237754 0.260885 0.282926 0.303875 0.323698 0.342444 0.360233 0.377216 0.393176 0.407800 0.419925 0.427544 0.429282 0.424892 0.414676 0.399198 0.378665 0.353128 0.322912 0.288376 0.249837 0.207538 0.161674 0.112400 0.059843 0.004098 -0.054765 -0.116700 -0.181677 -0.249670 -0.320642 -0.394530 -0.471198 -0.550071 -0.630277 -0.713807 -0.799967 -0.888135 -0.980050 -1.075052 -1.171785 -1.269579 -1.367981 -1.465935 -1.562345 -1.656266 -1.746969 -1.833867 -1.916604 -1.994951 -2.068716 -2.137771 -2.201933 -2.261042 -2.314954 -2.363563 -2.406870 -2.445034 -2.478378 -2.507438 +0.204811 0.230269 0.254546 0.277622 0.299576 0.320317 0.339876 0.358449 0.376045 0.392390 0.406541 0.416323 0.420152 0.417299 0.408009 0.392561 0.371570 0.344976 0.313030 0.276112 0.234605 0.188814 0.138976 0.085275 0.027858 -0.033167 -0.097719 -0.165746 -0.237198 -0.312017 -0.390114 -0.471292 -0.554544 -0.640001 -0.728591 -0.820179 -0.915022 -1.014559 -1.117185 -1.222118 -1.328926 -1.436961 -1.545016 -1.652081 -1.757103 -1.859039 -1.957128 -2.050926 -2.140111 -2.224467 -2.303726 -2.377672 -2.446137 -2.508974 -2.566060 -2.617340 -2.662891 -2.702948 -2.737933 -2.768523 +0.170553 0.197991 0.224504 0.249821 0.273813 0.296635 0.318155 0.338450 0.357696 0.375666 0.391628 0.403438 0.409160 0.407835 0.399481 0.384313 0.362741 0.335117 0.301411 0.262043 0.217430 0.167953 0.113900 0.055490 -0.007107 -0.073767 -0.144397 -0.218919 -0.297246 -0.379259 -0.464693 -0.551870 -0.642659 -0.736382 -0.832974 -0.934678 -1.041277 -1.151469 -1.264569 -1.380575 -1.498187 -1.616540 -1.734610 -1.851224 -1.965130 -2.075383 -2.181300 -2.282483 -2.378531 -2.469136 -2.554037 -2.633026 -2.705948 -2.772665 -2.833082 -2.887193 -2.935137 -2.977226 -3.014008 -3.046339 +0.135299 0.164678 0.193099 0.220480 0.246677 0.271455 0.294968 0.317159 0.338130 0.357787 0.375497 0.389088 0.396580 0.396571 0.389149 0.374322 0.352262 0.323478 0.288006 0.246099 0.198246 0.144885 0.086368 0.022957 -0.045153 -0.117815 -0.194906 -0.276305 -0.361854 -0.451220 -0.542285 -0.637737 -0.736362 -0.838178 -0.946479 -1.059781 -1.177113 -1.298625 -1.423449 -1.550628 -1.679329 -1.808571 -1.937068 -2.063568 -2.186828 -2.305938 -2.420185 -2.529068 -2.632210 -2.729297 -2.820061 -2.904306 -2.981883 -3.052671 -3.116593 -3.173687 -3.224166 -3.268435 -3.307203 -3.341531 # Thrust coefficient -0.073449 0.073247 0.073056 0.072895 0.072802 0.072821 0.073056 0.073634 0.074611 0.075966 0.077578 0.079099 0.079933 0.079452 0.077343 0.073685 0.068779 0.062900 0.056296 0.049158 -0.098107 0.098607 0.099289 0.100297 0.101847 0.104019 0.106773 0.109853 0.112557 0.113863 0.112841 0.109167 0.103187 0.095451 0.086413 0.076426 0.065752 0.054579 0.043079 0.031317 -0.131849 0.134021 0.137042 0.140977 0.145712 0.150589 0.154187 0.155008 0.152093 0.145446 0.135826 0.124053 0.110712 0.096274 0.081031 0.065267 0.049184 0.032831 0.016191 -0.000790 -0.176971 0.182593 0.189400 0.196608 0.202105 0.203772 0.200477 0.192111 0.179554 0.164003 0.146323 0.127126 0.106866 0.085911 0.064572 0.042985 0.021092 -0.001204 -0.023919 -0.046005 -0.235985 0.245890 0.254874 0.259612 0.258350 0.250608 0.236858 0.218469 0.196898 0.173032 0.147555 0.120994 0.093789 0.066312 0.038567 0.010430 -0.018288 -0.047434 -0.075175 -0.098921 -0.309280 0.319555 0.323208 0.319176 0.307433 0.288689 0.264612 0.236921 0.206616 0.174482 0.141146 0.107188 0.072940 0.038391 0.003331 -0.032482 -0.068849 -0.103466 -0.132936 -0.156089 -0.390368 0.393329 0.387163 0.372232 0.349173 0.319741 0.285993 0.249168 0.210101 0.169648 0.128402 0.086775 0.044796 0.002203 -0.041269 -0.085600 -0.128528 -0.165753 -0.194995 -0.216676 -0.469906 0.462428 0.445377 0.419087 0.384993 0.345577 0.302363 0.256361 0.208525 0.159565 0.110004 0.060007 0.009342 -0.042283 -0.095080 -0.147493 -0.194751 -0.232561 -0.260632 -0.278876 -0.544018 0.526192 0.498161 0.460782 0.416490 0.367426 0.314748 0.259508 0.202595 0.144676 0.086134 0.026901 -0.033337 -0.094907 -0.157321 -0.216420 -0.265881 -0.303192 -0.328281 -0.341851 -0.612222 0.584715 0.546281 0.498739 0.444841 0.386198 0.323920 0.259103 0.192633 0.125148 0.056881 -0.012405 -0.083075 -0.155357 -0.226892 -0.290944 -0.341143 -0.376116 -0.397816 -0.406639 -0.674042 0.638541 0.590865 0.534100 0.470834 0.402462 0.330246 0.255385 0.178819 0.101138 0.022392 -0.057757 -0.139711 -0.223064 -0.302825 -0.370013 -0.419078 -0.451695 -0.470534 -0.473622 -0.730152 0.688327 0.632909 0.567536 0.494883 0.416494 0.333930 0.248547 0.161342 0.072789 -0.017198 -0.109020 -0.203063 -0.297417 -0.384108 -0.452144 -0.500031 -0.531477 -0.546429 -0.542723 -0.783633 0.734460 0.672905 0.599363 0.517181 0.428467 0.335161 0.238789 0.140342 0.040221 -0.061776 -0.166080 -0.272845 -0.377788 -0.469127 -0.537618 -0.585583 -0.615336 -0.625131 -0.613796 -0.835122 0.777564 0.710979 0.629685 0.537874 0.438568 0.334126 0.226252 0.115938 0.003532 -0.111242 -0.228845 -0.348714 -0.463005 -0.557396 -0.627888 -0.675772 -0.702934 -0.706353 -0.687509 -0.885004 0.818985 0.747037 0.658567 0.557121 0.446964 0.330976 0.211047 0.088221 -0.037195 -0.165519 -0.297223 -0.430053 -0.551559 -0.650343 -0.723130 -0.770409 -0.794155 -0.790077 -0.764504 -0.935011 0.858785 0.780840 0.686088 0.575059 0.453791 0.325821 0.193263 0.057265 -0.081888 -0.224545 -0.370997 -0.515243 -0.644319 -0.748878 -0.823218 -0.869539 -0.888288 -0.876987 -0.845274 -0.985513 0.897723 0.812228 0.712284 0.591793 0.459160 0.318747 0.172969 0.023131 -0.130494 -0.288269 -0.449565 -0.603962 -0.743086 -0.852819 -0.927881 -0.972352 -0.985734 -0.967675 -0.929812 -1.036727 0.936845 0.841968 0.737136 0.607409 0.463160 0.309819 0.150225 -0.014127 -0.182970 -0.356548 -0.531098 -0.697868 -0.847410 -0.961398 -1.036830 -1.079177 -1.087021 -1.062160 -1.018156 -1.088829 0.976460 0.870789 0.760539 0.621968 0.465853 0.299092 0.125083 -0.054471 -0.239285 -0.428960 -0.615723 -0.798116 -0.957074 -1.074920 -1.150385 -1.189894 -1.192403 -1.160363 -1.110468 -1.141927 1.016690 0.899233 0.782360 0.635503 0.467287 0.286615 0.097583 -0.097871 -0.299348 -0.503687 -0.705802 -0.904215 -1.071809 -1.192724 -1.268118 -1.304813 -1.301848 -1.262502 -1.206680 +0.073657 0.073613 0.073566 0.073519 0.073471 0.073421 0.073372 0.073323 0.073276 0.073229 0.073186 0.073146 0.073111 0.073082 0.073060 0.073049 0.073050 0.073063 0.073092 0.073138 0.073203 0.073288 0.073395 0.073526 0.073681 0.073862 0.074070 0.074306 0.074568 0.074857 0.075168 0.075500 0.075848 0.076206 0.076569 0.076929 0.077281 0.077617 0.077930 0.078211 0.078452 0.078642 0.078774 0.078840 0.078833 0.078747 0.078577 0.078316 0.077964 0.077516 0.076971 0.076327 0.075580 0.074732 0.073783 0.072738 0.071598 0.070368 0.069054 0.067662 +0.097072 0.097172 0.097281 0.097399 0.097532 0.097681 0.097849 0.098041 0.098258 0.098503 0.098781 0.099093 0.099443 0.099831 0.100260 0.100732 0.101248 0.101806 0.102405 0.103040 0.103704 0.104391 0.105092 0.105798 0.106500 0.107185 0.107841 0.108456 0.109013 0.109498 0.109897 0.110195 0.110380 0.110441 0.110369 0.110156 0.109795 0.109280 0.108609 0.107781 0.106793 0.105645 0.104341 0.102885 0.101283 0.099542 0.097672 0.095682 0.093583 0.091383 0.089089 0.086709 0.084252 0.081722 0.079126 0.076468 0.073753 0.070984 0.068168 0.065307 +0.128516 0.129001 0.129534 0.130119 0.130760 0.131460 0.132222 0.133049 0.133941 0.134896 0.135908 0.136970 0.138072 0.139203 0.140350 0.141497 0.142628 0.143724 0.144763 0.145726 0.146590 0.147334 0.147936 0.148376 0.148636 0.148699 0.148553 0.148189 0.147597 0.146774 0.145716 0.144424 0.142901 0.141151 0.139181 0.137001 0.134623 0.132061 0.129330 0.126443 0.123413 0.120254 0.116978 0.113594 0.110112 0.106539 0.102884 0.099152 0.095352 0.091487 0.087564 0.083586 0.079560 0.075489 0.071376 0.067225 0.063040 0.058822 0.054575 0.050300 +0.170253 0.171546 0.172929 0.174396 0.175939 0.177545 0.179198 0.180881 0.182571 0.184242 0.185866 0.187415 0.188859 0.190170 0.191316 0.192268 0.192999 0.193485 0.193700 0.193625 0.193246 0.192551 0.191535 0.190197 0.188539 0.186565 0.184282 0.181701 0.178835 0.175700 0.172317 0.168706 0.164888 0.160881 0.156703 0.152370 0.147897 0.143297 0.138580 0.133756 0.128833 0.123818 0.118720 0.113545 0.108300 0.102991 0.097623 0.092203 0.086735 0.081223 0.075671 0.070082 0.064460 0.058808 0.053126 0.047419 0.041687 0.035931 0.030153 0.024355 +0.224411 0.226711 0.229035 0.231348 0.233613 0.235790 0.237838 0.239717 0.241388 0.242814 0.243958 0.244787 0.245272 0.245386 0.245107 0.244421 0.243318 0.241798 0.239863 0.237516 0.234767 0.231628 0.228117 0.224252 0.220056 0.215555 0.210778 0.205751 0.200498 0.195042 0.189403 0.183596 0.177638 0.171539 0.165311 0.158963 0.152504 0.145944 0.139291 0.132553 0.125738 0.118853 0.111906 0.104901 0.097845 0.090742 0.083597 0.076413 0.069195 0.061945 0.054666 0.047360 0.040028 0.032672 0.025294 0.017896 0.010478 0.003047 -0.004391 -0.011825 +0.290356 0.293078 0.295588 0.297835 0.299770 0.301350 0.302537 0.303295 0.303595 0.303411 0.302728 0.301532 0.299821 0.297598 0.294869 0.291643 0.287934 0.283758 0.279135 0.274093 0.268661 0.262872 0.256762 0.250361 0.243697 0.236797 0.229684 0.222378 0.214894 0.207245 0.199442 0.191498 0.183423 0.175227 0.166922 0.158516 0.150019 0.141439 0.132785 0.124063 0.115281 0.106444 0.097558 0.088630 0.079662 0.070659 0.061625 0.052561 0.043469 0.034352 0.025211 0.016047 0.006864 -0.002337 -0.011550 -0.020765 -0.029968 -0.039138 -0.048252 -0.057281 +0.363655 0.365532 0.366915 0.367769 0.368068 0.367785 0.366904 0.365418 0.363327 0.360639 0.357360 0.353499 0.349069 0.344086 0.338573 0.332554 0.326062 0.319134 0.311810 0.304130 0.296127 0.287835 0.279280 0.270490 0.261482 0.252274 0.242878 0.233308 0.223576 0.213695 0.203677 0.193532 0.183272 0.172907 0.162447 0.151900 0.141277 0.130585 0.119833 0.109025 0.098170 0.087271 0.076334 0.065363 0.054360 0.043328 0.032267 0.021181 0.010072 -0.001060 -0.012211 -0.023376 -0.034545 -0.045702 -0.056824 -0.067885 -0.078849 -0.089670 -0.100294 -0.110663 +0.438328 0.438195 0.437385 0.435889 0.433709 0.430856 0.427341 0.423172 0.418354 0.412897 0.406817 0.400135 0.392876 0.385074 0.376768 0.368006 0.358833 0.349288 0.339408 0.329226 0.318771 0.308063 0.297121 0.285959 0.274592 0.263033 0.251297 0.239396 0.227345 0.215155 0.202837 0.190404 0.177867 0.165234 0.152518 0.139728 0.126872 0.113958 0.100992 0.087981 0.074929 0.061841 0.048718 0.035562 0.022377 0.009164 -0.004074 -0.017335 -0.030614 -0.043906 -0.057196 -0.070465 -0.083684 -0.096817 -0.109816 -0.122618 -0.135153 -0.147345 -0.159127 -0.170438 +0.509935 0.507265 0.503873 0.499770 0.494961 0.489448 0.483232 0.476320 0.468725 0.460471 0.451586 0.442109 0.432088 0.421575 0.410619 0.399262 0.387543 0.375494 0.363143 0.350511 0.337615 0.324472 0.311094 0.297499 0.283702 0.269717 0.255558 0.241241 0.226777 0.212179 0.197460 0.182633 0.167709 0.152700 0.137615 0.122464 0.107253 0.091989 0.076679 0.061326 0.045934 0.030505 0.015042 -0.000452 -0.015974 -0.031521 -0.047088 -0.062670 -0.078252 -0.093812 -0.109317 -0.124725 -0.139974 -0.154991 -0.169687 -0.183970 -0.197753 -0.210961 -0.223528 -0.235404 +0.576599 0.571570 0.565775 0.559210 0.551871 0.543765 0.534901 0.525303 0.515001 0.504040 0.492471 0.480351 0.467734 0.454666 0.441190 0.427337 0.413137 0.398613 0.383783 0.368664 0.353271 0.337621 0.321733 0.305623 0.289307 0.272802 0.256123 0.239284 0.222301 0.205186 0.187954 0.170618 0.153189 0.135678 0.118095 0.100447 0.082742 0.064986 0.047182 0.029335 0.011449 -0.006475 -0.024431 -0.042417 -0.060429 -0.078463 -0.096505 -0.114534 -0.132517 -0.150407 -0.168138 -0.185624 -0.202764 -0.219446 -0.235561 -0.251010 -0.265709 -0.279588 -0.292602 -0.304723 +0.638012 0.630990 0.623123 0.614352 0.604691 0.594170 0.582828 0.570714 0.557888 0.544415 0.530356 0.515766 0.500691 0.485168 0.469230 0.452904 0.436213 0.419173 0.401804 0.384125 0.366157 0.347919 0.329432 0.310713 0.291781 0.272652 0.253344 0.233872 0.214252 0.194499 0.174628 0.154653 0.134584 0.114433 0.094210 0.073922 0.053576 0.033177 0.012728 -0.007766 -0.028301 -0.048875 -0.069484 -0.090123 -0.110785 -0.131452 -0.152093 -0.172664 -0.193097 -0.213303 -0.233171 -0.252574 -0.271377 -0.289451 -0.306680 -0.322964 -0.338222 -0.352386 -0.365424 -0.377374 +0.694713 0.685734 0.675960 0.665306 0.653686 0.641073 0.627546 0.613192 0.598095 0.582326 0.565945 0.549003 0.531541 0.513597 0.495198 0.476370 0.457135 0.437516 0.417538 0.397224 0.376598 0.355684 0.334501 0.313071 0.291413 0.269546 0.247489 0.225259 0.202874 0.180352 0.157708 0.134955 0.112107 0.089175 0.066167 0.043091 0.019952 -0.003245 -0.026496 -0.049798 -0.073146 -0.096537 -0.119967 -0.143424 -0.166884 -0.190309 -0.213638 -0.236785 -0.259638 -0.282061 -0.303898 -0.324984 -0.345162 -0.364279 -0.382188 -0.398804 -0.414128 -0.428135 -0.441075 -0.452854 +0.747593 0.736644 0.724963 0.712456 0.699092 0.684799 0.669502 0.653241 0.636124 0.618240 0.599659 0.580440 0.560629 0.540266 0.519382 0.498008 0.476175 0.453914 0.431254 0.408225 0.384853 0.361162 0.337178 0.312923 0.288421 0.263692 0.238759 0.213642 0.188361 0.162933 0.137377 0.111707 0.085936 0.060075 0.034132 0.008112 -0.017980 -0.044138 -0.070359 -0.096638 -0.122972 -0.149356 -0.175773 -0.202197 -0.228579 -0.254846 -0.280890 -0.306577 -0.331741 -0.356190 -0.379712 -0.402082 -0.423105 -0.442688 -0.460775 -0.477591 -0.493078 -0.507373 -0.520324 -0.531955 +0.798131 0.784752 0.770949 0.756597 0.741531 0.725658 0.708887 0.691072 0.672206 0.652393 0.631734 0.610308 0.588176 0.565390 0.541996 0.518036 0.493552 0.468583 0.443164 0.417330 0.391111 0.364539 0.337641 0.310444 0.282975 0.255260 0.227321 0.199184 0.170870 0.142398 0.113788 0.085055 0.056212 0.027266 -0.001774 -0.030903 -0.060115 -0.089406 -0.118771 -0.148205 -0.177702 -0.207245 -0.236802 -0.266317 -0.295701 -0.324827 -0.353532 -0.381610 -0.408806 -0.434822 -0.459446 -0.482484 -0.504117 -0.524272 -0.543018 -0.560178 -0.575850 -0.590341 -0.603398 -0.615393 +0.847538 0.831504 0.815160 0.798560 0.781639 0.764168 0.745921 0.726739 0.706401 0.684881 0.662296 0.638748 0.614334 0.589132 0.563208 0.536623 0.509433 0.481685 0.453426 0.424695 0.395530 0.365968 0.336041 0.305783 0.275222 0.244390 0.213313 0.182018 0.150529 0.118870 0.087058 0.055110 0.023034 -0.009159 -0.041464 -0.073874 -0.106382 -0.138982 -0.171670 -0.204436 -0.237266 -0.270122 -0.302939 -0.335614 -0.367992 -0.399868 -0.430962 -0.460944 -0.489520 -0.516681 -0.542413 -0.566603 -0.589076 -0.609774 -0.629075 -0.646757 -0.663243 -0.678292 -0.691690 -0.703545 +0.896142 0.877414 0.858494 0.839413 0.820200 0.800836 0.781031 0.760428 0.738748 0.715739 0.691381 0.665833 0.639200 0.611602 0.583141 0.553899 0.523950 0.493357 0.462174 0.430453 0.398239 0.365576 0.332504 0.299059 0.265279 0.231196 0.196842 0.162248 0.127441 0.092444 0.057275 0.021949 -0.013525 -0.049138 -0.084882 -0.120748 -0.156729 -0.192818 -0.229005 -0.265274 -0.301585 -0.337861 -0.373979 -0.409742 -0.444858 -0.478983 -0.511798 -0.543473 -0.573819 -0.602585 -0.629429 -0.654595 -0.677992 -0.699949 -0.720313 -0.738827 -0.755660 -0.770726 -0.783966 -0.795444 +0.944283 0.922773 0.901220 0.879613 0.857977 0.836320 0.814614 0.792481 0.769412 0.744994 0.719031 0.691579 0.662825 0.632884 0.601891 0.569969 0.537213 0.503706 0.469518 0.434712 0.399345 0.363468 0.327129 0.290372 0.253238 0.215767 0.177995 0.139956 0.101679 0.063188 0.024499 -0.014374 -0.053418 -0.092624 -0.131982 -0.171482 -0.211113 -0.250866 -0.290719 -0.330626 -0.370496 -0.410172 -0.449370 -0.487704 -0.524897 -0.561282 -0.596523 -0.630250 -0.662133 -0.692367 -0.720855 -0.747732 -0.772581 -0.795399 -0.816292 -0.835155 -0.852209 -0.867339 -0.880429 -0.891358 +0.992742 0.968142 0.943687 0.919415 0.895248 0.871165 0.847168 0.823165 0.798608 0.772801 0.745304 0.716059 0.685232 0.653017 0.619527 0.584912 0.549307 0.512822 0.475547 0.437562 0.398935 0.359728 0.319998 0.279798 0.239174 0.198174 0.156838 0.115203 0.073299 0.031149 -0.011228 -0.053818 -0.096606 -0.139581 -0.182729 -0.226037 -0.269489 -0.313058 -0.356685 -0.400258 -0.443541 -0.486116 -0.527664 -0.568740 -0.608918 -0.647847 -0.685169 -0.720998 -0.755325 -0.787780 -0.817913 -0.845923 -0.871590 -0.895183 -0.916655 -0.935997 -0.953184 -0.968180 -0.980826 -0.990942 +1.041849 1.014076 0.986489 0.959190 0.932246 0.905584 0.879129 0.852869 0.826546 0.799289 0.770324 0.739346 0.706509 0.672029 0.636084 0.598786 0.560300 0.520777 0.480335 0.439074 0.397078 0.354423 0.311175 0.267397 0.223145 0.178470 0.133420 0.088032 0.042339 -0.003635 -0.049871 -0.096350 -0.143056 -0.189973 -0.237083 -0.284360 -0.331763 -0.379218 -0.426557 -0.473399 -0.519228 -0.564845 -0.609839 -0.653936 -0.696721 -0.738454 -0.779011 -0.817669 -0.853976 -0.887940 -0.919409 -0.948555 -0.975280 -0.999584 -1.021525 -1.041121 -1.058288 -1.072938 -1.084923 -1.094072 +1.091714 1.060689 1.029881 0.999399 0.969350 0.939809 0.910712 0.881957 0.853481 0.824627 0.794164 0.761562 0.726722 0.690005 0.651581 0.611620 0.570237 0.527623 0.483936 0.439303 0.393828 0.347604 0.300710 0.253218 0.205194 0.156697 0.107779 0.058479 0.008831 -0.041136 -0.091400 -0.141941 -0.192736 -0.243761 -0.294977 -0.346324 -0.397693 -0.448805 -0.498978 -0.548831 -0.598479 -0.647576 -0.695589 -0.743084 -0.789898 -0.835109 -0.878224 -0.918906 -0.957117 -0.992729 -1.025649 -1.055855 -1.083411 -1.108333 -1.130630 -1.150329 -1.167345 -1.181564 -1.192839 -1.200994 +1.142397 1.108062 1.073943 1.040174 1.006876 0.974166 0.942129 0.910694 0.879747 0.848962 0.816975 0.782748 0.746002 0.706983 0.666094 0.623427 0.579145 0.533397 0.486392 0.438292 0.389229 0.339314 0.288642 0.237298 0.185358 0.132888 0.079944 0.026570 -0.027197 -0.081326 -0.135789 -0.190560 -0.245601 -0.300859 -0.356250 -0.411599 -0.466292 -0.520125 -0.574291 -0.628087 -0.681068 -0.733892 -0.786635 -0.838324 -0.888386 -0.936308 -0.981977 -1.024944 -1.065027 -1.102142 -1.136321 -1.167538 -1.195822 -1.221261 -1.243869 -1.263663 -1.280527 -1.294281 -1.304747 -1.311770 +1.193760 1.156172 1.118694 1.081550 1.044907 1.008894 0.973675 0.939292 0.905660 0.872560 0.838847 0.802979 0.764368 0.723116 0.679630 0.634258 0.587032 0.538123 0.487732 0.436074 0.383314 0.329586 0.275004 0.219669 0.163666 0.107070 0.049941 -0.007670 -0.065722 -0.124180 -0.183007 -0.242152 -0.301546 -0.361072 -0.420437 -0.478605 -0.536888 -0.594958 -0.652810 -0.710350 -0.768517 -0.826286 -0.882974 -0.938084 -0.991454 -1.042405 -1.090513 -1.135520 -1.177364 -1.215950 -1.251291 -1.283448 -1.312476 -1.338480 -1.361446 -1.381299 -1.397892 -1.411057 -1.420621 -1.426417 +1.245259 1.204718 1.164068 1.123540 1.083471 1.044064 1.005499 0.967971 0.931438 0.895762 0.859981 0.822349 0.781858 0.738400 0.692337 0.644119 0.593925 0.541809 0.487979 0.432676 0.376110 0.318447 0.259824 0.200356 0.140142 0.079265 0.017793 -0.044219 -0.106722 -0.169667 -0.232990 -0.296602 -0.360343 -0.423647 -0.485603 -0.548159 -0.610619 -0.672435 -0.735232 -0.798556 -0.861328 -0.923150 -0.983845 -1.042781 -1.099326 -1.152990 -1.203457 -1.250484 -1.293994 -1.334006 -1.370559 -1.403741 -1.433583 -1.460120 -1.483338 -1.503148 -1.519403 -1.531922 -1.540510 -1.544982 +1.296518 1.253180 1.209596 1.166004 1.122566 1.079710 1.037715 0.996854 0.957238 0.918764 0.880665 0.841015 0.798558 0.752837 0.704240 0.653093 0.599841 0.544470 0.487145 0.428116 0.367640 0.305921 0.243123 0.179380 0.114806 0.049494 -0.016481 -0.083054 -0.150160 -0.217718 -0.285616 -0.353645 -0.420823 -0.487205 -0.553730 -0.620217 -0.686855 -0.754995 -0.823302 -0.891208 -0.958500 -1.024858 -1.089514 -1.151937 -1.211589 -1.267946 -1.320678 -1.369684 -1.414936 -1.456486 -1.494332 -1.528507 -1.559072 -1.586075 -1.609498 -1.629236 -1.645118 -1.656931 -1.664447 -1.667467 +1.346651 1.301222 1.254940 1.208375 1.161965 1.115792 1.070335 1.026037 0.983184 0.941726 0.901059 0.859188 0.814585 0.766517 0.715295 0.661262 0.604794 0.546122 0.485236 0.422409 0.357922 0.292026 0.224920 0.156761 0.087678 0.017775 -0.052861 -0.124142 -0.195969 -0.268207 -0.340589 -0.411508 -0.482651 -0.553452 -0.623796 -0.695640 -0.768819 -0.842227 -0.915364 -0.988395 -1.060418 -1.130972 -1.199519 -1.265451 -1.328115 -1.387106 -1.442183 -1.493301 -1.540393 -1.583455 -1.622515 -1.657632 -1.688894 -1.716352 -1.739975 -1.759621 -1.775078 -1.786098 -1.792429 -1.793877 +1.395233 1.347927 1.299596 1.250514 1.201115 1.152029 1.103301 1.055542 1.009322 0.964752 0.921348 0.877010 0.830104 0.779507 0.725573 0.668601 0.608877 0.546765 0.482268 0.415562 0.346968 0.276779 0.205233 0.132516 0.058773 -0.015874 -0.091311 -0.167415 -0.244024 -0.320816 -0.395765 -0.471386 -0.546521 -0.621199 -0.698271 -0.776416 -0.854776 -0.933551 -1.012154 -1.089959 -1.166528 -1.241366 -1.313773 -1.383137 -1.448871 -1.510631 -1.568173 -1.621391 -1.670261 -1.714798 -1.755051 -1.791108 -1.823076 -1.851003 -1.874817 -1.894330 -1.909294 -1.919426 -1.924470 -1.924244 # Torque coefficient -0.009548 0.011505 0.013453 0.015394 0.017334 0.019287 0.021210 0.023054 0.024884 0.026803 0.028800 0.030682 0.032119 0.032782 0.032520 0.031399 0.029583 0.027226 0.024454 0.021348 -0.015729 0.018317 0.020920 0.023472 0.025832 0.028140 0.030573 0.033094 0.035382 0.036979 0.037517 0.036892 0.035271 0.032897 0.029951 0.026568 0.022842 0.018853 0.014667 0.010305 -0.023162 0.026401 0.029299 0.032162 0.035199 0.038243 0.040743 0.042161 0.042217 0.040956 0.038650 0.035580 0.031934 0.027843 0.023406 0.018713 0.013828 0.008758 0.003484 -0.002024 -0.031129 0.034548 0.038134 0.041797 0.044863 0.046675 0.046957 0.045744 0.043289 0.039926 0.035895 0.031338 0.026377 0.021111 0.015622 0.009940 0.004033 -0.002142 -0.008620 -0.015160 -0.038995 0.043286 0.047271 0.050072 0.051263 0.050806 0.048832 0.045643 0.041590 0.036868 0.031621 0.025963 0.019997 0.013809 0.007386 0.000680 -0.006379 -0.013806 -0.021205 -0.027773 -0.047211 0.051377 0.054028 0.054963 0.054217 0.051908 0.048342 0.043870 0.038686 0.032929 0.026718 0.020170 0.013351 0.006248 -0.001205 -0.009096 -0.017447 -0.025822 -0.033250 -0.039296 -0.053997 0.056765 0.057826 0.057206 0.054965 0.051354 0.046733 0.041318 0.035240 0.028637 0.021612 0.014248 0.006542 -0.001585 -0.010221 -0.019429 -0.028877 -0.037480 -0.044519 -0.049987 -0.058023 0.059570 0.059481 0.057731 0.054445 0.049983 0.044594 0.038424 0.031604 0.024245 0.016443 0.008227 -0.000472 -0.009747 -0.019691 -0.030171 -0.040208 -0.048616 -0.055186 -0.059834 -0.059610 0.060501 0.059697 0.057198 0.053270 0.048226 0.042233 0.035423 0.027918 0.019828 0.011221 0.002068 -0.007724 -0.018258 -0.029573 -0.041073 -0.051237 -0.059333 -0.065208 -0.069045 -0.059353 0.060100 0.058965 0.056080 0.051782 0.046309 0.039805 0.032403 0.024231 0.015393 0.005921 -0.004252 -0.015231 -0.027126 -0.039775 -0.051919 -0.061997 -0.069555 -0.074782 -0.078122 -0.057631 0.058745 0.057639 0.054656 0.050152 0.044340 0.037370 0.029394 0.020548 0.010928 0.000525 -0.010749 -0.023012 -0.036338 -0.050175 -0.062634 -0.072404 -0.079481 -0.084317 -0.087336 -0.054839 0.056680 0.055938 0.053062 0.048460 0.042362 0.034953 0.026407 0.016870 0.006419 -0.004983 -0.017441 -0.031080 -0.045865 -0.060649 -0.073114 -0.082612 -0.089462 -0.093962 -0.096813 -0.051597 0.054024 0.053969 0.051362 0.046741 0.040399 0.032566 0.023445 0.013187 0.001851 -0.010621 -0.024343 -0.039443 -0.055652 -0.071028 -0.083484 -0.092924 -0.099565 -0.103772 -0.106628 -0.047908 0.050923 0.051774 0.049586 0.045017 0.038463 0.030214 0.020503 0.009486 -0.002791 -0.016401 -0.031471 -0.048096 -0.065571 -0.081321 -0.093995 -0.103394 -0.109819 -0.113791 -0.116955 -0.043885 0.047589 0.049365 0.047750 0.043299 0.036560 0.027894 0.017572 0.005756 -0.007520 -0.022339 -0.038838 -0.056999 -0.075471 -0.091757 -0.104702 -0.114041 -0.120271 -0.124086 -0.127920 -0.039934 0.044029 0.046725 0.045863 0.041595 0.034689 0.025603 0.014642 0.001984 -0.012348 -0.028445 -0.046442 -0.066002 -0.085482 -0.102468 -0.115616 -0.124911 -0.130888 -0.134790 -0.139599 -0.036080 0.040418 0.043843 0.043922 0.039903 0.032850 0.023333 0.011706 -0.001840 -0.017285 -0.034732 -0.054243 -0.075097 -0.095822 -0.113452 -0.126738 -0.135944 -0.141760 -0.146012 -0.151981 -0.032316 0.036931 0.040839 0.041917 0.038222 0.031037 0.021077 0.008753 -0.005725 -0.022343 -0.041197 -0.062084 -0.084474 -0.106455 -0.124644 -0.138057 -0.147207 -0.152988 -0.157773 -0.165052 -0.028649 0.033587 0.037832 0.039826 0.036546 0.029245 0.018828 0.005776 -0.009680 -0.027529 -0.047814 -0.070004 -0.094250 -0.117369 -0.136093 -0.149626 -0.158715 -0.164619 -0.170087 -0.178811 -0.025093 0.030404 0.034908 0.037628 0.034870 0.027468 0.016579 0.002768 -0.013713 -0.032846 -0.054433 -0.078252 -0.104373 -0.128553 -0.147747 -0.161419 -0.170527 -0.176666 -0.182984 -0.193239 +0.009595 0.010125 0.010654 0.011182 0.011708 0.012233 0.012756 0.013278 0.013799 0.014318 0.014837 0.015355 0.015871 0.016386 0.016900 0.017410 0.017918 0.018424 0.018928 0.019430 0.019931 0.020431 0.020932 0.021434 0.021939 0.022445 0.022954 0.023465 0.023978 0.024492 0.025005 0.025518 0.026030 0.026540 0.027046 0.027545 0.028035 0.028512 0.028973 0.029414 0.029831 0.030219 0.030575 0.030895 0.031174 0.031410 0.031597 0.031734 0.031818 0.031847 0.031820 0.031737 0.031595 0.031397 0.031142 0.030832 0.030468 0.030054 0.029590 0.029081 +0.015403 0.016083 0.016761 0.017438 0.018112 0.018781 0.019446 0.020106 0.020762 0.021414 0.022063 0.022710 0.023355 0.024000 0.024646 0.025290 0.025935 0.026578 0.027220 0.027862 0.028504 0.029146 0.029785 0.030420 0.031046 0.031659 0.032255 0.032830 0.033380 0.033898 0.034378 0.034814 0.035201 0.035531 0.035802 0.036009 0.036148 0.036218 0.036217 0.036146 0.036003 0.035791 0.035509 0.035161 0.034747 0.034272 0.033740 0.033153 0.032515 0.031831 0.031103 0.030336 0.029531 0.028692 0.027820 0.026918 0.025989 0.025034 0.024055 0.023053 +0.022159 0.022990 0.023814 0.024632 0.025446 0.026254 0.027058 0.027855 0.028648 0.029436 0.030221 0.031006 0.031791 0.032575 0.033355 0.034125 0.034883 0.035623 0.036340 0.037030 0.037684 0.038295 0.038855 0.039355 0.039787 0.040146 0.040426 0.040624 0.040738 0.040766 0.040709 0.040567 0.040342 0.040034 0.039647 0.039183 0.038647 0.038042 0.037374 0.036648 0.035868 0.035038 0.034163 0.033245 0.032288 0.031295 0.030268 0.029209 0.028121 0.027005 0.025864 0.024699 0.023512 0.022304 0.021077 0.019831 0.018568 0.017288 0.015992 0.014681 +0.029535 0.030499 0.031452 0.032397 0.033337 0.034276 0.035212 0.036142 0.037062 0.037969 0.038857 0.039720 0.040552 0.041344 0.042086 0.042768 0.043379 0.043912 0.044359 0.044714 0.044973 0.045134 0.045197 0.045160 0.045026 0.044794 0.044468 0.044051 0.043545 0.042957 0.042290 0.041551 0.040746 0.039880 0.038958 0.037984 0.036963 0.035897 0.034790 0.033644 0.032463 0.031247 0.030001 0.028725 0.027421 0.026093 0.024741 0.023366 0.021971 0.020555 0.019120 0.017667 0.016197 0.014710 0.013207 0.011687 0.010150 0.008597 0.007027 0.005439 +0.037127 0.038216 0.039293 0.040357 0.041401 0.042420 0.043406 0.044350 0.045240 0.046064 0.046812 0.047473 0.048042 0.048510 0.048873 0.049129 0.049273 0.049307 0.049231 0.049047 0.048756 0.048363 0.047869 0.047281 0.046604 0.045843 0.045006 0.044098 0.043125 0.042091 0.041003 0.039864 0.038677 0.037445 0.036172 0.034859 0.033509 0.032125 0.030708 0.029261 0.027785 0.026282 0.024754 0.023202 0.021628 0.020032 0.018416 0.016780 0.015125 0.013451 0.011758 0.010047 0.008315 0.006564 0.004792 0.003000 0.001186 -0.000649 -0.002504 -0.004376 +0.044576 0.045711 0.046798 0.047827 0.048784 0.049661 0.050447 0.051135 0.051718 0.052190 0.052547 0.052786 0.052907 0.052910 0.052796 0.052566 0.052225 0.051774 0.051219 0.050564 0.049814 0.048976 0.048056 0.047062 0.045999 0.044872 0.043687 0.042448 0.041158 0.039819 0.038435 0.037007 0.035538 0.034030 0.032485 0.030906 0.029294 0.027651 0.025979 0.024281 0.022556 0.020807 0.019034 0.017238 0.015420 0.013580 0.011718 0.009834 0.007926 0.005995 0.004040 0.002059 0.000054 -0.001978 -0.004035 -0.006116 -0.008219 -0.010339 -0.012471 -0.014609 +0.051021 0.051990 0.052864 0.053638 0.054304 0.054857 0.055293 0.055608 0.055802 0.055875 0.055826 0.055658 0.055372 0.054970 0.054456 0.053832 0.053105 0.052281 0.051366 0.050368 0.049293 0.048147 0.046935 0.045662 0.044331 0.042945 0.041507 0.040018 0.038482 0.036900 0.035274 0.033608 0.031902 0.030160 0.028382 0.026571 0.024729 0.022857 0.020956 0.019028 0.017073 0.015091 0.013084 0.011050 0.008990 0.006901 0.004785 0.002639 0.000463 -0.001743 -0.003980 -0.006249 -0.008548 -0.010874 -0.013224 -0.015592 -0.017971 -0.020350 -0.022717 -0.025057 +0.055502 0.056207 0.056802 0.057280 0.057640 0.057879 0.057999 0.057997 0.057873 0.057626 0.057259 0.056774 0.056175 0.055466 0.054654 0.053745 0.052746 0.051664 0.050504 0.049272 0.047973 0.046608 0.045183 0.043698 0.042156 0.040560 0.038911 0.037212 0.035465 0.033672 0.031835 0.029956 0.028038 0.026083 0.024091 0.022065 0.020006 0.017915 0.015792 0.013638 0.011452 0.009235 0.006984 0.004701 0.002382 0.000029 -0.002361 -0.004787 -0.007252 -0.009753 -0.012291 -0.014861 -0.017459 -0.020079 -0.022709 -0.025337 -0.027947 -0.030522 -0.033046 -0.035502 +0.057855 0.058362 0.058752 0.059022 0.059169 0.059193 0.059091 0.058863 0.058510 0.058035 0.057442 0.056736 0.055922 0.055007 0.053998 0.052900 0.051720 0.050463 0.049131 0.047729 0.046258 0.044721 0.043120 0.041457 0.039734 0.037954 0.036119 0.034231 0.032292 0.030305 0.028272 0.026195 0.024076 0.021916 0.019717 0.017479 0.015204 0.012891 0.010540 0.008151 0.005723 0.003255 0.000745 -0.001806 -0.004400 -0.007039 -0.009722 -0.012449 -0.015221 -0.018032 -0.020879 -0.023752 -0.026642 -0.029531 -0.032402 -0.035236 -0.038011 -0.040711 -0.043319 -0.045820 +0.058394 0.058832 0.059139 0.059312 0.059351 0.059256 0.059026 0.058665 0.058176 0.057564 0.056834 0.055994 0.055051 0.054011 0.052878 0.051658 0.050353 0.048968 0.047505 0.045965 0.044351 0.042665 0.040909 0.039087 0.037200 0.035252 0.033244 0.031179 0.029059 0.026886 0.024664 0.022392 0.020074 0.017710 0.015300 0.012845 0.010346 0.007801 0.005209 0.002571 -0.000116 -0.002853 -0.005639 -0.008477 -0.011368 -0.014312 -0.017309 -0.020355 -0.023446 -0.026574 -0.029727 -0.032888 -0.036038 -0.039154 -0.042213 -0.045193 -0.048075 -0.050841 -0.053477 -0.055975 +0.057457 0.057957 0.058309 0.058501 0.058536 0.058418 0.058152 0.057745 0.057204 0.056535 0.055747 0.054845 0.053836 0.052725 0.051514 0.050209 0.048812 0.047325 0.045751 0.044092 0.042352 0.040533 0.038637 0.036668 0.034628 0.032519 0.030345 0.028108 0.025811 0.023455 0.021042 0.018575 0.016053 0.013477 0.010849 0.008167 0.005430 0.002639 -0.000209 -0.003114 -0.006077 -0.009100 -0.012184 -0.015330 -0.018538 -0.021807 -0.025133 -0.028509 -0.031924 -0.035361 -0.038801 -0.042219 -0.045588 -0.048883 -0.052079 -0.055154 -0.058088 -0.060865 -0.063475 -0.065917 +0.055427 0.056039 0.056508 0.056820 0.056959 0.056917 0.056706 0.056337 0.055819 0.055161 0.054372 0.053458 0.052424 0.051276 0.050017 0.048651 0.047181 0.045610 0.043941 0.042178 0.040323 0.038380 0.036352 0.034243 0.032054 0.029790 0.027452 0.025044 0.022567 0.020025 0.017418 0.014748 0.012014 0.009218 0.006359 0.003436 0.000448 -0.002606 -0.005727 -0.008916 -0.012175 -0.015505 -0.018907 -0.022382 -0.025926 -0.029536 -0.033202 -0.036909 -0.040639 -0.044366 -0.048063 -0.051698 -0.055242 -0.058664 -0.061936 -0.065037 -0.067961 -0.070697 -0.073272 -0.075668 +0.052623 0.053381 0.054004 0.054472 0.054777 0.054904 0.054837 0.054580 0.054149 0.053556 0.052810 0.051920 0.050892 0.049733 0.048447 0.047038 0.045510 0.043868 0.042116 0.040257 0.038296 0.036235 0.034080 0.031833 0.029498 0.027077 0.024575 0.021993 0.019334 0.016599 0.013790 0.010907 0.007951 0.004922 0.001819 -0.001360 -0.004615 -0.007948 -0.011360 -0.014853 -0.018427 -0.022086 -0.025827 -0.029649 -0.033545 -0.037505 -0.041511 -0.045540 -0.049565 -0.053552 -0.057464 -0.061261 -0.064910 -0.068385 -0.071672 -0.074789 -0.077722 -0.080482 -0.083044 -0.085406 +0.049407 0.050252 0.051013 0.051659 0.052154 0.052478 0.052615 0.052542 0.052258 0.051777 0.051114 0.050280 0.049284 0.048135 0.046838 0.045401 0.043828 0.042125 0.040298 0.038350 0.036287 0.034113 0.031832 0.029448 0.026965 0.024387 0.021716 0.018955 0.016106 0.013171 0.010150 0.007045 0.003855 0.000579 -0.002784 -0.006234 -0.009773 -0.013403 -0.017126 -0.020942 -0.024853 -0.028860 -0.032959 -0.037142 -0.041398 -0.045707 -0.050043 -0.054372 -0.058654 -0.062841 -0.066895 -0.070781 -0.074506 -0.078052 -0.081418 -0.084574 -0.087528 -0.090308 -0.092879 -0.095284 +0.045998 0.046929 0.047781 0.048552 0.049225 0.049757 0.050109 0.050258 0.050173 0.049852 0.049310 0.048562 0.047622 0.046502 0.045211 0.043759 0.042151 0.040396 0.038500 0.036468 0.034306 0.032019 0.029612 0.027091 0.024458 0.021717 0.018872 0.015925 0.012878 0.009733 0.006490 0.003150 -0.000288 -0.003825 -0.007462 -0.011201 -0.015042 -0.018988 -0.023040 -0.027200 -0.031468 -0.035840 -0.040310 -0.044862 -0.049475 -0.054118 -0.058748 -0.063318 -0.067781 -0.072119 -0.076316 -0.080347 -0.084179 -0.087798 -0.091237 -0.094465 -0.097523 -0.100376 -0.102992 -0.105384 +0.042438 0.043484 0.044452 0.045338 0.046138 0.046844 0.047408 0.047777 0.047915 0.047793 0.047407 0.046778 0.045919 0.044847 0.043578 0.042121 0.040488 0.038687 0.036727 0.034613 0.032354 0.029955 0.027421 0.024758 0.021971 0.019063 0.016036 0.012895 0.009641 0.006275 0.002799 -0.000789 -0.004490 -0.008303 -0.012231 -0.016275 -0.020436 -0.024717 -0.029118 -0.033640 -0.038281 -0.043031 -0.047876 -0.052787 -0.057727 -0.062647 -0.067499 -0.072286 -0.076971 -0.081510 -0.085852 -0.090012 -0.093969 -0.097751 -0.101330 -0.104669 -0.107779 -0.110642 -0.113252 -0.115617 +0.038789 0.039955 0.041054 0.042072 0.043003 0.043843 0.044581 0.045164 0.045524 0.045614 0.045414 0.044927 0.044176 0.043175 0.041942 0.040493 0.038843 0.037002 0.034980 0.032787 0.030431 0.027918 0.025254 0.022447 0.019499 0.016416 0.013201 0.009857 0.006386 0.002788 -0.000935 -0.004785 -0.008762 -0.012867 -0.017102 -0.021468 -0.025967 -0.030601 -0.035369 -0.040268 -0.045291 -0.050417 -0.055612 -0.060829 -0.066027 -0.071226 -0.076372 -0.081412 -0.086295 -0.091024 -0.095576 -0.099952 -0.104096 -0.107998 -0.111658 -0.115057 -0.118210 -0.121101 -0.123715 -0.126047 +0.035199 0.036443 0.037640 0.038784 0.039850 0.040824 0.041700 0.042461 0.043038 0.043348 0.043344 0.043020 0.042392 0.041482 0.040303 0.038874 0.037214 0.035338 0.033259 0.030988 0.028533 0.025904 0.023108 0.020150 0.017036 0.013771 0.010359 0.006802 0.003102 -0.000739 -0.004722 -0.008847 -0.013115 -0.017528 -0.022086 -0.026792 -0.031645 -0.036647 -0.041794 -0.047074 -0.052464 -0.057917 -0.063393 -0.068933 -0.074480 -0.079983 -0.085390 -0.090691 -0.095871 -0.100872 -0.105634 -0.110166 -0.114431 -0.118449 -0.122202 -0.125680 -0.128873 -0.131773 -0.134370 -0.136658 +0.031693 0.033029 0.034306 0.035531 0.036706 0.037809 0.038817 0.039723 0.040489 0.041014 0.041218 0.041066 0.040575 0.039766 0.038657 0.037261 0.035600 0.033694 0.031560 0.029211 0.026657 0.023909 0.020975 0.017861 0.014575 0.011120 0.007501 0.003721 -0.000217 -0.004314 -0.008570 -0.012985 -0.017559 -0.022295 -0.027192 -0.032252 -0.037473 -0.042851 -0.048371 -0.053997 -0.059675 -0.065471 -0.071332 -0.077220 -0.083080 -0.088918 -0.094702 -0.100339 -0.105766 -0.110966 -0.115910 -0.120603 -0.125021 -0.129152 -0.132989 -0.136526 -0.139747 -0.142645 -0.145215 -0.147463 +0.028250 0.029690 0.031061 0.032370 0.033625 0.034826 0.035956 0.036988 0.037906 0.038635 0.039044 0.039080 0.038730 0.038032 0.036999 0.035649 0.033997 0.032067 0.029880 0.027452 0.024797 0.021927 0.018850 0.015575 0.012108 0.008455 0.004621 0.000608 -0.003582 -0.007947 -0.012489 -0.017207 -0.022102 -0.027174 -0.032424 -0.037848 -0.043439 -0.049173 -0.054990 -0.060942 -0.067027 -0.073204 -0.079413 -0.085690 -0.092002 -0.098237 -0.104329 -0.110219 -0.115889 -0.121308 -0.126450 -0.131300 -0.135850 -0.140088 -0.144002 -0.147586 -0.150830 -0.153728 -0.156285 -0.158514 +0.024873 0.026428 0.027905 0.029308 0.030644 0.031921 0.033141 0.034285 0.035327 0.036225 0.036840 0.037064 0.036871 0.036280 0.035333 0.034033 0.032399 0.030450 0.028213 0.025707 0.022949 0.019952 0.016727 0.013284 0.009629 0.005770 0.001710 -0.002546 -0.006998 -0.011644 -0.016485 -0.021519 -0.026748 -0.032168 -0.037776 -0.043559 -0.049465 -0.055480 -0.061700 -0.068059 -0.074508 -0.081095 -0.087812 -0.094550 -0.101235 -0.107794 -0.114194 -0.120369 -0.126282 -0.131908 -0.137233 -0.142238 -0.146913 -0.151252 -0.155242 -0.158880 -0.162156 -0.165064 -0.167615 -0.169834 +0.021557 0.023232 0.024823 0.026330 0.027759 0.029117 0.030414 0.031645 0.032789 0.033814 0.034610 0.035025 0.034995 0.034526 0.033654 0.032412 0.030801 0.028840 0.026555 0.023970 0.021106 0.017979 0.014601 0.010983 0.007133 0.003059 -0.001236 -0.005747 -0.010472 -0.015411 -0.020563 -0.025925 -0.031496 -0.037267 -0.043217 -0.049261 -0.055514 -0.061939 -0.068536 -0.075289 -0.082272 -0.089376 -0.096525 -0.103651 -0.110716 -0.117631 -0.124331 -0.130769 -0.136917 -0.142751 -0.148253 -0.153412 -0.158218 -0.162666 -0.166743 -0.170437 -0.173742 -0.176663 -0.179218 -0.181440 +0.018333 0.020117 0.021817 0.023432 0.024961 0.026406 0.027778 0.029087 0.030318 0.031446 0.032381 0.032968 0.033102 0.032764 0.031976 0.030783 0.029199 0.027230 0.024900 0.022237 0.019265 0.016003 0.012467 0.008667 0.004615 0.000316 -0.004223 -0.008999 -0.014009 -0.019252 -0.024725 -0.030423 -0.036334 -0.042416 -0.048601 -0.055042 -0.061686 -0.068485 -0.075573 -0.082898 -0.090357 -0.097898 -0.105486 -0.113040 -0.120474 -0.127716 -0.134710 -0.141411 -0.147791 -0.153833 -0.159521 -0.164846 -0.169793 -0.174351 -0.178508 -0.182256 -0.185596 -0.188539 -0.191110 -0.193351 +0.015208 0.017099 0.018901 0.020615 0.022245 0.023785 0.025237 0.026617 0.027923 0.029137 0.030188 0.030914 0.031198 0.030986 0.030297 0.029150 0.027591 0.025616 0.023244 0.020503 0.017421 0.014020 0.010320 0.006332 0.002069 -0.002463 -0.007256 -0.012307 -0.017613 -0.023169 -0.028968 -0.034996 -0.041178 -0.047523 -0.054101 -0.060902 -0.067945 -0.075336 -0.082956 -0.090748 -0.098679 -0.106701 -0.114725 -0.122675 -0.130474 -0.138043 -0.145326 -0.152291 -0.158914 -0.165178 -0.171063 -0.176554 -0.181638 -0.186304 -0.190543 -0.194350 -0.197733 -0.200707 -0.203305 -0.205577 +0.012212 0.014177 0.016075 0.017888 0.019606 0.021240 0.022781 0.024234 0.025612 0.026899 0.028042 0.028887 0.029297 0.029202 0.028604 0.027518 0.025973 0.023995 0.021582 0.018763 0.015569 0.012026 0.008156 0.003973 -0.000509 -0.005282 -0.010339 -0.015675 -0.021284 -0.027156 -0.033273 -0.039516 -0.046016 -0.052727 -0.059643 -0.066926 -0.074559 -0.082449 -0.090547 -0.098853 -0.107275 -0.115749 -0.124203 -0.132553 -0.140709 -0.148604 -0.156188 -0.163433 -0.170310 -0.176797 -0.182877 -0.188533 -0.193754 -0.198531 -0.202857 -0.206732 -0.210165 -0.213178 -0.215812 -0.218127 +0.009354 0.011385 0.013350 0.015243 0.017054 0.018767 0.020392 0.021926 0.023376 0.024735 0.025960 0.026899 0.027417 0.027417 0.026903 0.025878 0.024353 0.022363 0.019911 0.017014 0.013706 0.010016 0.005971 0.001587 -0.003122 -0.008145 -0.013475 -0.019102 -0.025016 -0.031195 -0.037490 -0.044089 -0.050908 -0.057947 -0.065434 -0.073267 -0.081378 -0.089779 -0.098409 -0.107201 -0.116099 -0.125034 -0.133917 -0.142663 -0.151184 -0.159419 -0.167317 -0.174844 -0.181975 -0.188687 -0.194962 -0.200786 -0.206149 -0.211043 -0.215462 -0.219409 -0.222899 -0.225960 -0.228640 -0.231013 diff --git a/Test_Cases/IEA-15-240-RWT-UMaineSemi/Cp_Ct_Cq.IEA15MW.txt b/Test_Cases/IEA-15-240-RWT-UMaineSemi/Cp_Ct_Cq.IEA15MW.txt index 6079859d..43749722 100644 --- a/Test_Cases/IEA-15-240-RWT-UMaineSemi/Cp_Ct_Cq.IEA15MW.txt +++ b/Test_Cases/IEA-15-240-RWT-UMaineSemi/Cp_Ct_Cq.IEA15MW.txt @@ -1,237 +1,99 @@ -# ----- Rotor performance tables for the IEA-15-240-RWT wind turbine ----- -# ------------ Written on Feb-25-20 using the ROSCO toolbox ------------ +# ----- Rotor performance tables for the IEA-15-240-RWT-UMaineSemi wind turbine ----- +# ------------ Written on Jan-10-22 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 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 +# Pitch angle vector, 60 entries - x axis (matrix columns) (deg) +-5.0 -4.5 -4.0 -3.5 -3.0 -2.5 -2.0 -1.5 -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, 26 entries - y axis (matrix rows) (-) +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 # Wind speed vector - z axis (m/s) -10.59 +10.74 # Power coefficient -0.061055 0.062543 0.064025 0.065501 0.066971 0.068433 0.069887 0.071331 0.072766 0.074190 0.075602 0.077001 0.078386 0.079755 0.081109 0.082445 0.083762 0.085060 0.086337 0.087591 0.088822 0.090029 0.091210 0.092363 0.093488 0.094584 0.095649 0.096681 0.097681 0.098646 0.099575 0.100466 0.101320 0.102134 0.102908 0.103640 0.104329 0.104974 0.105574 0.106128 0.106636 0.107096 0.107508 0.107871 0.108184 0.108447 0.108660 0.108821 0.108931 0.108989 0.108995 0.108949 0.108851 0.108700 0.108497 0.108242 0.107936 0.107578 0.107168 0.106708 0.106198 0.105639 0.105031 0.104375 0.103672 0.102924 0.102130 0.101292 0.100412 0.099489 0.098526 0.097524 0.096482 0.095404 0.094289 0.093138 0.091954 0.090736 0.089487 0.088206 0.086895 0.085556 0.084188 0.082793 0.081372 0.079925 0.078454 0.076959 0.075441 0.073900 0.072338 0.070755 0.069152 0.067530 0.065888 0.064228 0.062550 0.060855 0.059143 0.057415 0.055671 0.053911 0.052135 0.050345 -0.079021 0.080768 0.082502 0.084223 0.085928 0.087617 0.089288 0.090940 0.092572 0.094182 0.095769 0.097330 0.098866 0.100374 0.101853 0.103301 0.104718 0.106100 0.107447 0.108757 0.110029 0.111261 0.112452 0.113600 0.114703 0.115760 0.116770 0.117731 0.118642 0.119502 0.120308 0.121060 0.121757 0.122398 0.122981 0.123506 0.123971 0.124376 0.124721 0.125004 0.125224 0.125382 0.125477 0.125509 0.125477 0.125382 0.125223 0.125000 0.124714 0.124365 0.123953 0.123480 0.122946 0.122351 0.121697 0.120985 0.120216 0.119390 0.118510 0.117577 0.116591 0.115555 0.114469 0.113336 0.112155 0.110930 0.109661 0.108350 0.106997 0.105605 0.104175 0.102708 0.101205 0.099667 0.098097 0.096494 0.094861 0.093197 0.091505 0.089785 0.088038 0.086265 0.084467 0.082645 0.080800 0.078932 0.077043 0.075132 0.073201 0.071250 0.069280 0.067291 0.065283 0.063258 0.061215 0.059154 0.057077 0.054984 0.052875 0.050750 0.048609 0.046454 0.044284 0.042100 -0.099328 0.101314 0.103276 0.105212 0.107121 0.109000 0.110848 0.112664 0.114445 0.116190 0.117896 0.119563 0.121188 0.122768 0.124303 0.125791 0.127229 0.128616 0.129950 0.131230 0.132452 0.133616 0.134721 0.135763 0.136742 0.137657 0.138505 0.139286 0.139998 0.140641 0.141211 0.141710 0.142136 0.142487 0.142764 0.142965 0.143090 0.143140 0.143112 0.143009 0.142829 0.142572 0.142241 0.141834 0.141352 0.140797 0.140170 0.139471 0.138703 0.137866 0.136961 0.135992 0.134958 0.133862 0.132705 0.131490 0.130217 0.128889 0.127507 0.126073 0.124589 0.123056 0.121477 0.119853 0.118185 0.116475 0.114725 0.112936 0.111110 0.109247 0.107350 0.105420 0.103457 0.101464 0.099441 0.097389 0.095310 0.093204 0.091073 0.088917 0.086737 0.084534 0.082308 0.080061 0.077792 0.075502 0.073193 0.070863 0.068514 0.066145 0.063758 0.061353 0.058929 0.056488 0.054029 0.051553 0.049060 0.046551 0.044026 0.041485 0.038930 0.036359 0.033775 0.031177 -0.121736 0.123921 0.126068 0.128173 0.130235 0.132251 0.134219 0.136137 0.138002 0.139813 0.141567 0.143263 0.144897 0.146467 0.147972 0.149410 0.150778 0.152074 0.153297 0.154444 0.155514 0.156505 0.157416 0.158245 0.158990 0.159650 0.160224 0.160710 0.161108 0.161417 0.161637 0.161765 0.161804 0.161751 0.161609 0.161376 0.161053 0.160642 0.160143 0.159556 0.158885 0.158129 0.157290 0.156371 0.155373 0.154298 0.153147 0.151924 0.150629 0.149266 0.147835 0.146340 0.144782 0.143164 0.141487 0.139754 0.137967 0.136127 0.134237 0.132299 0.130315 0.128286 0.126214 0.124101 0.121948 0.119758 0.117531 0.115269 0.112974 0.110646 0.108288 0.105900 0.103483 0.101039 0.098568 0.096072 0.093550 0.091004 0.088434 0.085842 0.083226 0.080588 0.077929 0.075248 0.072546 0.069822 0.067079 0.064315 0.061531 0.058728 0.055905 0.053063 0.050203 0.047324 0.044427 0.041513 0.038581 0.035633 0.032668 0.029688 0.026693 0.023684 0.020661 0.017625 -0.145936 0.148266 0.150539 0.152750 0.154898 0.156981 0.158994 0.160937 0.162806 0.164599 0.166314 0.167947 0.169497 0.170961 0.172338 0.173624 0.174818 0.175919 0.176923 0.177829 0.178636 0.179342 0.179945 0.180445 0.180840 0.181130 0.181315 0.181393 0.181365 0.181232 0.180993 0.180650 0.180204 0.179656 0.179006 0.178258 0.177412 0.176472 0.175437 0.174312 0.173098 0.171798 0.170414 0.168948 0.167404 0.165783 0.164088 0.162322 0.160487 0.158586 0.156621 0.154595 0.152509 0.150367 0.148171 0.145922 0.143624 0.141277 0.138885 0.136448 0.133970 0.131451 0.128894 0.126299 0.123669 0.121006 0.118309 0.115582 0.112824 0.110037 0.107222 0.104379 0.101510 0.098615 0.095694 0.092749 0.089778 0.086784 0.083766 0.080724 0.077659 0.074571 0.071460 0.068327 0.065172 0.061994 0.058795 0.055574 0.052332 0.049069 0.045785 0.042480 0.039156 0.035812 0.032449 0.029068 0.025670 0.022254 0.018822 0.015376 0.011916 0.008442 0.004958 0.001463 -0.171567 0.173971 0.176294 0.178534 0.180688 0.182752 0.184724 0.186601 0.188381 0.190060 0.191636 0.193107 0.194470 0.195723 0.196863 0.197889 0.198798 0.199590 0.200262 0.200813 0.201242 0.201549 0.201734 0.201797 0.201737 0.201556 0.201255 0.200833 0.200295 0.199639 0.198870 0.197987 0.196995 0.195895 0.194691 0.193383 0.191977 0.190473 0.188876 0.187188 0.185413 0.183552 0.181610 0.179588 0.177491 0.175320 0.173080 0.170771 0.168398 0.165963 0.163469 0.160917 0.158311 0.155653 0.152945 0.150189 0.147389 0.144544 0.141658 0.138733 0.135769 0.132770 0.129735 0.126666 0.123565 0.120433 0.117271 0.114079 0.110858 0.107609 0.104333 0.101029 0.097699 0.094342 0.090958 0.087549 0.084114 0.080653 0.077168 0.073656 0.070120 0.066559 0.062973 0.059362 0.055726 0.052066 0.048382 0.044674 0.040943 0.037188 0.033412 0.029613 0.025793 0.021954 0.018095 0.014218 0.010324 0.006415 0.002491 -0.001445 -0.005393 -0.009349 -0.013313 -0.017283 -0.198214 0.200608 0.202896 0.205074 0.207140 0.209091 0.210924 0.212635 0.214222 0.215683 0.217013 0.218212 0.219278 0.220207 0.220999 0.221652 0.222166 0.222541 0.222775 0.222870 0.222826 0.222643 0.222324 0.221869 0.221281 0.220561 0.219712 0.218735 0.217635 0.216413 0.215073 0.213618 0.212051 0.210376 0.208596 0.206715 0.204735 0.202661 0.200495 0.198242 0.195904 0.193485 0.190987 0.188415 0.185770 0.183057 0.180279 0.177437 0.174535 0.171576 0.168563 0.165497 0.162381 0.159218 0.156010 0.152758 0.149465 0.146132 0.142761 0.139353 0.135910 0.132433 0.128923 0.125381 0.121808 0.118203 0.114569 0.110905 0.107211 0.103488 0.099736 0.095956 0.092146 0.088308 0.084442 0.080547 0.076624 0.072672 0.068691 0.064683 0.060646 0.056580 0.052487 0.048365 0.044216 0.040040 0.035838 0.031609 0.027355 0.023077 0.018776 0.014453 0.010109 0.005746 0.001364 -0.003034 -0.007446 -0.011871 -0.016307 -0.020751 -0.025202 -0.029657 -0.034114 -0.038570 -0.225421 0.227711 0.229866 0.231884 0.233761 0.235495 0.237082 0.238519 0.239805 0.240937 0.241913 0.242732 0.243394 0.243898 0.244244 0.244432 0.244463 0.244338 0.244059 0.243628 0.243046 0.242316 0.241440 0.240421 0.239262 0.237966 0.236538 0.234981 0.233298 0.231493 0.229570 0.227534 0.225388 0.223135 0.220781 0.218327 0.215779 0.213140 0.210413 0.207602 0.204711 0.201743 0.198701 0.195589 0.192410 0.189167 0.185863 0.182501 0.179084 0.175613 0.172092 0.168523 0.164909 0.161250 0.157549 0.153807 0.150027 0.146209 0.142355 0.138465 0.134542 0.130584 0.126593 0.122569 0.118512 0.114424 0.110303 0.106150 0.101966 0.097749 0.093500 0.089219 0.084906 0.080561 0.076183 0.071773 0.067330 0.062855 0.058347 0.053807 0.049234 0.044630 0.039995 0.035328 0.030632 0.025907 0.021153 0.016373 0.011566 0.006736 0.001882 -0.002993 -0.007887 -0.012799 -0.017727 -0.022667 -0.027618 -0.032578 -0.037543 -0.042511 -0.047479 -0.052444 -0.057403 -0.062354 -0.252694 0.254777 0.256696 0.258447 0.260030 0.261440 0.262676 0.263736 0.264621 0.265329 0.265860 0.266215 0.266394 0.266399 0.266231 0.265893 0.265385 0.264712 0.263875 0.262877 0.261723 0.260415 0.258958 0.257355 0.255612 0.253731 0.251719 0.249578 0.247313 0.244929 0.242430 0.239820 0.237102 0.234282 0.231364 0.228350 0.225245 0.222054 0.218779 0.215425 0.211995 0.208492 0.204921 0.201283 0.197583 0.193824 0.190007 0.186136 0.182213 0.178241 0.174221 0.170157 0.166048 0.161898 0.157708 0.153478 0.149210 0.144904 0.140562 0.136183 0.131769 0.127318 0.122832 0.118310 0.113753 0.109160 0.104531 0.099867 0.095166 0.090428 0.085654 0.080843 0.075995 0.071110 0.066188 0.061228 0.056232 0.051198 0.046128 0.041022 0.035881 0.030704 0.025493 0.020250 0.014975 0.009669 0.004334 -0.001029 -0.006416 -0.011828 -0.017261 -0.022714 -0.028183 -0.033666 -0.039161 -0.044664 -0.050172 -0.055683 -0.061192 -0.066698 -0.072195 -0.077681 -0.083152 -0.088605 -0.279510 0.281285 0.282867 0.284255 0.285448 0.286446 0.287248 0.287854 0.288266 0.288484 0.288511 0.288347 0.287996 0.287459 0.286740 0.285842 0.284768 0.283523 0.282109 0.280533 0.278798 0.276909 0.274871 0.272689 0.270368 0.267912 0.265325 0.262613 0.259780 0.256831 0.253769 0.250600 0.247327 0.243955 0.240488 0.236930 0.233285 0.229557 0.225750 0.221868 0.217913 0.213891 0.209803 0.205652 0.201443 0.197177 0.192857 0.188486 0.184065 0.179597 0.175083 0.170525 0.165924 0.161282 0.156598 0.151874 0.147110 0.142307 0.137463 0.132580 0.127658 0.122695 0.117693 0.112651 0.107568 0.102445 0.097280 0.092074 0.086827 0.081537 0.076206 0.070832 0.065416 0.059957 0.054457 0.048914 0.043329 0.037704 0.032038 0.026332 0.020587 0.014805 0.008986 0.003133 -0.002753 -0.008671 -0.014617 -0.020591 -0.026589 -0.032608 -0.038647 -0.044701 -0.050768 -0.056844 -0.062926 -0.069011 -0.075094 -0.081171 -0.087240 -0.093295 -0.099333 -0.105349 -0.111339 -0.117299 -0.305369 0.306752 0.307920 0.308874 0.309614 0.310142 0.310457 0.310564 0.310462 0.310156 0.309648 0.308940 0.308037 0.306942 0.305660 0.304195 0.302553 0.300737 0.298755 0.296610 0.294307 0.291853 0.289251 0.286507 0.283626 0.280612 0.277471 0.274206 0.270823 0.267327 0.263721 0.260011 0.256200 0.252294 0.248296 0.244210 0.240041 0.235792 0.231468 0.227071 0.222605 0.218075 0.213481 0.208828 0.204119 0.199354 0.194538 0.189671 0.184755 0.179792 0.174783 0.169729 0.164630 0.159487 0.154299 0.149067 0.143792 0.138472 0.133109 0.127700 0.122247 0.116748 0.111204 0.105614 0.099978 0.094295 0.088564 0.082786 0.076960 0.071086 0.065164 0.059194 0.053175 0.047109 0.040995 0.034833 0.028626 0.022373 0.016076 0.009735 0.003353 -0.003069 -0.009528 -0.016024 -0.022553 -0.029114 -0.035702 -0.042316 -0.048951 -0.055605 -0.062273 -0.068953 -0.075640 -0.082330 -0.089019 -0.095702 -0.102376 -0.109035 -0.115675 -0.122291 -0.128878 -0.135431 -0.141946 -0.148416 -0.329851 0.330793 0.331505 0.331987 0.332242 0.332272 0.332079 0.331667 0.331040 0.330200 0.329151 0.327899 0.326449 0.324805 0.322973 0.320959 0.318768 0.316405 0.313876 0.311186 0.308341 0.305344 0.302202 0.298919 0.295500 0.291951 0.288276 0.284481 0.280569 0.276545 0.272415 0.268182 0.263852 0.259428 0.254915 0.250318 0.245639 0.240884 0.236055 0.231157 0.226191 0.221163 0.216073 0.210925 0.205720 0.200461 0.195150 0.189787 0.184374 0.178911 0.173399 0.167837 0.162227 0.156568 0.150860 0.145103 0.139296 0.133439 0.127532 0.121574 0.115564 0.109502 0.103388 0.097221 0.091001 0.084726 0.078398 0.072014 0.065576 0.059083 0.052535 0.045932 0.039275 0.032564 0.025801 0.018985 0.012118 0.005201 -0.001763 -0.008773 -0.015827 -0.022923 -0.030058 -0.037230 -0.044434 -0.051667 -0.058927 -0.066209 -0.073509 -0.080822 -0.088145 -0.095473 -0.102801 -0.110124 -0.117438 -0.124737 -0.132016 -0.139270 -0.146492 -0.153678 -0.160822 -0.167918 -0.174960 -0.181942 -0.352642 0.353127 0.353370 0.353372 0.353139 0.352672 0.351976 0.351054 0.349913 0.348556 0.346989 0.345217 0.343247 0.341085 0.338735 0.336203 0.333494 0.330615 0.327569 0.324363 0.321002 0.317490 0.313834 0.310038 0.306106 0.302045 0.297859 0.293554 0.289133 0.284602 0.279966 0.275229 0.270397 0.265472 0.260461 0.255367 0.250193 0.244944 0.239622 0.234232 0.228776 0.223256 0.217675 0.212034 0.206336 0.200582 0.194772 0.188907 0.182987 0.177013 0.170985 0.164902 0.158764 0.152571 0.146323 0.140018 0.133657 0.127238 0.120762 0.114227 0.107632 0.100978 0.094263 0.087487 0.080649 0.073750 0.066788 0.059764 0.052677 0.045528 0.038317 0.031045 0.023712 0.016319 0.008868 0.001360 -0.006204 -0.013821 -0.021489 -0.029206 -0.036968 -0.044773 -0.052617 -0.060496 -0.068406 -0.076343 -0.084302 -0.092279 -0.100269 -0.108267 -0.116268 -0.124265 -0.132255 -0.140230 -0.148186 -0.156116 -0.164013 -0.171873 -0.179689 -0.187453 -0.195160 -0.202804 -0.210377 -0.217875 -0.373512 0.373554 0.373345 0.372890 0.372192 0.371256 0.370088 0.368692 0.367074 0.365240 0.363195 0.360946 0.358498 0.355856 0.353026 0.350013 0.346823 0.343461 0.339932 0.336241 0.332394 0.328396 0.324252 0.319968 0.315549 0.310999 0.306325 0.301531 0.296622 0.291604 0.286481 0.281258 0.275940 0.270531 0.265036 0.259458 0.253801 0.248069 0.242263 0.236388 0.230446 0.224438 0.218367 0.212233 0.206038 0.199782 0.193465 0.187087 0.180649 0.174150 0.167589 0.160966 0.154281 0.147533 0.140721 0.133845 0.126903 0.119895 0.112820 0.105677 0.098466 0.091186 0.083836 0.076417 0.068927 0.061366 0.053734 0.046032 0.038259 0.030416 0.022503 0.014523 0.006475 -0.001639 -0.009817 -0.018057 -0.026355 -0.034711 -0.043120 -0.051580 -0.060085 -0.068633 -0.077218 -0.085837 -0.094483 -0.103152 -0.111839 -0.120538 -0.129244 -0.137949 -0.146650 -0.155338 -0.164009 -0.172654 -0.181268 -0.189843 -0.198373 -0.206851 -0.215269 -0.223621 -0.231898 -0.240095 -0.248204 -0.256218 -0.392299 0.391944 0.391332 0.390469 0.389359 0.388008 0.386421 0.384606 0.382566 0.380308 0.377837 0.375159 0.372278 0.369201 0.365933 0.362480 0.358845 0.355036 0.351057 0.346914 0.342612 0.338156 0.333553 0.328807 0.323925 0.318911 0.313770 0.308510 0.303134 0.297648 0.292056 0.286365 0.280577 0.274698 0.268732 0.262682 0.256551 0.250343 0.244060 0.237705 0.231279 0.224783 0.218219 0.211587 0.204887 0.198120 0.191284 0.184379 0.177406 0.170363 0.163250 0.156066 0.148810 0.141481 0.134079 0.126602 0.119050 0.111422 0.103717 0.095933 0.088072 0.080131 0.072111 0.064011 0.055831 0.047571 0.039231 0.030811 0.022312 0.013735 0.005080 -0.003650 -0.012453 -0.021328 -0.030272 -0.039282 -0.048355 -0.057487 -0.066674 -0.075912 -0.085195 -0.094519 -0.103878 -0.113266 -0.122679 -0.132109 -0.141551 -0.150998 -0.160444 -0.169882 -0.179304 -0.188704 -0.198075 -0.207408 -0.216696 -0.225932 -0.235108 -0.244215 -0.253247 -0.262194 -0.271049 -0.279805 -0.288454 -0.296988 -0.408905 0.408230 0.407291 0.406094 0.404646 0.402951 0.401016 0.398847 0.396447 0.393824 0.390982 0.387927 0.384664 0.381199 0.377537 0.373684 0.369645 0.365426 0.361032 0.356469 0.351743 0.346860 0.341826 0.336645 0.331325 0.325870 0.320287 0.314581 0.308758 0.302823 0.296781 0.290637 0.284394 0.278058 0.271632 0.265120 0.258523 0.251846 0.245089 0.238255 0.231344 0.224356 0.217292 0.210152 0.202936 0.195642 0.188271 0.180822 0.173293 0.165684 0.157995 0.150224 0.142370 0.134432 0.126410 0.118302 0.110108 0.101826 0.093456 0.084997 0.076449 0.067811 0.059083 0.050264 0.041355 0.032355 0.023265 0.014087 0.004820 -0.004533 -0.013970 -0.023490 -0.033090 -0.042767 -0.052518 -0.062338 -0.072223 -0.082168 -0.092169 -0.102220 -0.112315 -0.122447 -0.132612 -0.142801 -0.153010 -0.163230 -0.173454 -0.183676 -0.193887 -0.204080 -0.214247 -0.224380 -0.234470 -0.244510 -0.254490 -0.264401 -0.274236 -0.283986 -0.293641 -0.303193 -0.312635 -0.321957 -0.331151 -0.340210 -0.423269 0.422378 0.421211 0.419776 0.418078 0.416123 0.413917 0.411466 0.408775 0.405850 0.402697 0.399321 0.395728 0.391924 0.387914 0.383705 0.379302 0.374711 0.369939 0.364991 0.359874 0.354593 0.349156 0.343567 0.337835 0.331964 0.325961 0.319831 0.313581 0.307216 0.300740 0.294158 0.287474 0.280693 0.273817 0.266850 0.259793 0.252649 0.245418 0.238101 0.230698 0.223208 0.215633 0.207971 0.200221 0.192383 0.184456 0.176440 0.168332 0.160132 0.151840 0.143454 0.134972 0.126395 0.117721 0.108949 0.100078 0.091107 0.082037 0.072865 0.063592 0.054218 0.044741 0.035163 0.025483 0.015702 0.005821 -0.004158 -0.014234 -0.024405 -0.034668 -0.045020 -0.055458 -0.065978 -0.076574 -0.087243 -0.097978 -0.108774 -0.119624 -0.130523 -0.141463 -0.152438 -0.163440 -0.174462 -0.185496 -0.196535 -0.207570 -0.218593 -0.229595 -0.240568 -0.251502 -0.262389 -0.273219 -0.283983 -0.294672 -0.305275 -0.315784 -0.326188 -0.336479 -0.346648 -0.356684 -0.366580 -0.376328 -0.385919 -0.435338 0.434362 0.433088 0.431524 0.429677 0.427554 0.425163 0.422511 0.419602 0.416445 0.413044 0.409407 0.405539 0.401448 0.397139 0.392618 0.387894 0.382971 0.377857 0.372558 0.367082 0.361435 0.355624 0.349656 0.343537 0.337275 0.330875 0.324344 0.317686 0.310908 0.304014 0.297009 0.289896 0.282679 0.275360 0.267941 0.260424 0.252810 0.245098 0.237289 0.229382 0.221378 0.213275 0.205072 0.196769 0.188366 0.179860 0.171251 0.162538 0.153719 0.144795 0.135763 0.126622 0.117372 0.108012 0.098541 0.088957 0.079261 0.069452 0.059528 0.049491 0.039339 0.029073 0.018693 0.008200 -0.002404 -0.013119 -0.023943 -0.034872 -0.045903 -0.057034 -0.068261 -0.079578 -0.090980 -0.102462 -0.114018 -0.125641 -0.137324 -0.149060 -0.160842 -0.172662 -0.184512 -0.196385 -0.208271 -0.220162 -0.232048 -0.243922 -0.255773 -0.267592 -0.279369 -0.291095 -0.302758 -0.314349 -0.325857 -0.337273 -0.348585 -0.359783 -0.370857 -0.381797 -0.392593 -0.403235 -0.413715 -0.424025 -0.434157 -0.445129 0.444164 0.442902 0.441337 0.439458 0.437273 0.434793 0.432026 0.428980 0.425663 0.422083 0.418248 0.414164 0.409839 0.405280 0.400496 0.395493 0.390279 0.384862 0.379249 0.373448 0.367467 0.361313 0.354993 0.348516 0.341887 0.335113 0.328200 0.321154 0.313979 0.306680 0.299262 0.291727 0.284078 0.276317 0.268445 0.260463 0.252370 0.244167 0.235853 0.227428 0.218890 0.210240 0.201476 0.192598 0.183604 0.174493 0.165265 0.155918 0.146450 0.136862 0.127152 0.117319 0.107362 0.097280 0.087073 0.076739 0.066279 0.055691 0.044975 0.034132 0.023161 0.012062 0.000838 -0.010512 -0.021984 -0.033577 -0.045288 -0.057113 -0.069049 -0.081091 -0.093233 -0.105470 -0.117796 -0.130203 -0.142685 -0.155233 -0.167841 -0.180499 -0.193201 -0.205936 -0.218696 -0.231472 -0.244254 -0.257033 -0.269798 -0.282539 -0.295247 -0.307910 -0.320517 -0.333057 -0.345520 -0.357894 -0.370167 -0.382329 -0.394368 -0.406272 -0.418031 -0.429634 -0.441071 -0.452332 -0.463408 -0.474292 -0.484975 -0.452699 0.451866 0.450705 0.449224 0.447425 0.445298 0.442836 0.440051 0.436955 0.433558 0.429871 0.425904 0.421665 0.417163 0.412408 0.407408 0.402173 0.396711 0.391031 0.385142 0.379052 0.372769 0.366303 0.359661 0.352850 0.345877 0.338749 0.331472 0.324052 0.316493 0.308799 0.300974 0.293020 0.284940 0.276733 0.268401 0.259943 0.251361 0.242652 0.233816 0.224854 0.215764 0.206545 0.197196 0.187717 0.178107 0.168363 0.158486 0.148475 0.138327 0.128043 0.117621 0.107060 0.096360 0.085519 0.074538 0.063415 0.052149 0.040742 0.029192 0.017500 0.005666 -0.006309 -0.018422 -0.030673 -0.043057 -0.055573 -0.068216 -0.080982 -0.093865 -0.106860 -0.119961 -0.133159 -0.146448 -0.159820 -0.173267 -0.186780 -0.200350 -0.213969 -0.227626 -0.241312 -0.255017 -0.268730 -0.282441 -0.296140 -0.309815 -0.323455 -0.337047 -0.350582 -0.364046 -0.377427 -0.390714 -0.403894 -0.416954 -0.429882 -0.442666 -0.455295 -0.467756 -0.480038 -0.492130 -0.504024 -0.515710 -0.527181 -0.538428 -0.458025 0.457477 0.456561 0.455275 0.453633 0.451645 0.449310 0.446616 0.443567 0.440177 0.436462 0.432435 0.428106 0.423488 0.418593 0.413430 0.408010 0.402344 0.396442 0.390314 0.383970 0.377418 0.370669 0.363729 0.356607 0.349311 0.341847 0.334221 0.326438 0.318503 0.310419 0.302189 0.293815 0.285298 0.276638 0.267835 0.258890 0.249802 0.240570 0.231195 0.221675 0.212010 0.202198 0.192240 0.182133 0.171878 0.161473 0.150917 0.140209 0.129348 0.118333 0.107164 0.095839 0.084358 0.072720 0.060924 0.048971 0.036860 0.024590 0.012162 -0.000423 -0.013164 -0.026060 -0.039107 -0.052304 -0.065646 -0.079129 -0.092749 -0.106499 -0.120374 -0.134365 -0.148466 -0.162667 -0.176961 -0.191339 -0.205791 -0.220308 -0.234880 -0.249497 -0.264147 -0.278820 -0.293506 -0.308192 -0.322867 -0.337519 -0.352136 -0.366704 -0.381213 -0.395648 -0.409997 -0.424246 -0.438382 -0.452391 -0.466261 -0.479978 -0.493528 -0.506900 -0.520080 -0.533058 -0.545824 -0.558366 -0.570677 -0.582750 -0.594576 -0.461213 0.461022 0.460463 0.459514 0.458160 0.456405 0.454266 0.451751 0.448852 0.445567 0.441910 0.437899 0.433551 0.428881 0.423902 0.418628 0.413072 0.407247 0.401163 0.394834 0.388268 0.381478 0.374471 0.367258 0.359846 0.352244 0.344458 0.336494 0.328357 0.320051 0.311579 0.302942 0.294142 0.285179 0.276055 0.266768 0.257320 0.247709 0.237936 0.227999 0.217899 0.207635 0.197206 0.186611 0.175849 0.164920 0.153822 0.142554 0.131116 0.119508 0.107727 0.095774 0.083647 0.071346 0.058871 0.046221 0.033395 0.020395 0.007219 -0.006131 -0.019654 -0.033348 -0.047210 -0.061238 -0.075426 -0.089772 -0.104268 -0.118910 -0.133689 -0.148598 -0.163629 -0.178773 -0.194021 -0.209362 -0.224787 -0.240286 -0.255848 -0.271461 -0.287114 -0.302797 -0.318495 -0.334199 -0.349894 -0.365567 -0.381207 -0.396799 -0.412330 -0.427785 -0.443151 -0.458414 -0.473558 -0.488570 -0.503434 -0.518138 -0.532665 -0.547003 -0.561139 -0.575058 -0.588751 -0.602207 -0.615416 -0.628369 -0.641061 -0.653484 -0.462485 0.462684 0.462523 0.461975 0.461018 0.459627 0.457792 0.455529 0.452855 0.449766 0.446261 0.442350 0.438056 0.433398 0.428396 0.423065 0.417421 0.411479 0.405254 0.398758 0.392003 0.385001 0.377762 0.370297 0.362614 0.354721 0.346625 0.338331 0.329845 0.321169 0.312305 0.303255 0.294020 0.284601 0.274998 0.265212 0.255243 0.245091 0.234756 0.224236 0.213533 0.202645 0.191571 0.180311 0.168864 0.157230 0.145407 0.133395 0.121194 0.108801 0.096218 0.083443 0.070475 0.057315 0.043961 0.030413 0.016672 0.002737 -0.011389 -0.025707 -0.040214 -0.054907 -0.069782 -0.084836 -0.100063 -0.115458 -0.131013 -0.146722 -0.162576 -0.178565 -0.194680 -0.210911 -0.227248 -0.243679 -0.260194 -0.276782 -0.293429 -0.310125 -0.326856 -0.343610 -0.360373 -0.377132 -0.393874 -0.410583 -0.427246 -0.443848 -0.460374 -0.476809 -0.493137 -0.509343 -0.525412 -0.541327 -0.557073 -0.572635 -0.587998 -0.603146 -0.618066 -0.632746 -0.647174 -0.661340 -0.675234 -0.688850 -0.702179 -0.715220 -0.461965 0.462638 0.462927 0.462822 0.462300 0.461342 0.459923 0.458025 0.455652 0.452825 0.449550 0.445827 0.441664 0.437088 0.432123 0.426788 0.421105 0.415091 0.408763 0.402134 0.395220 0.388034 0.380586 0.372889 0.364950 0.356778 0.348381 0.339762 0.330927 0.321877 0.312615 0.303143 0.293463 0.283574 0.273479 0.263177 0.252669 0.241956 0.231036 0.219911 0.208578 0.197040 0.185293 0.173339 0.161177 0.148806 0.136225 0.123435 0.110434 0.097221 0.083797 0.070161 0.056312 0.042250 0.027975 0.013486 -0.001215 -0.016129 -0.031252 -0.046584 -0.062121 -0.077860 -0.093796 -0.109924 -0.126237 -0.142728 -0.159390 -0.176212 -0.193186 -0.210300 -0.227544 -0.244907 -0.262378 -0.279944 -0.297592 -0.315312 -0.333088 -0.350908 -0.368759 -0.386625 -0.404493 -0.422347 -0.440173 -0.457956 -0.475679 -0.493327 -0.510883 -0.528331 -0.545654 -0.562836 -0.579859 -0.596706 -0.613361 -0.629808 -0.646030 -0.662012 -0.677740 -0.693203 -0.708388 -0.723285 -0.737886 -0.752185 -0.766175 -0.779855 -0.459668 0.460943 0.461787 0.462193 0.462159 0.461672 0.460712 0.459259 0.457293 0.454809 0.451827 0.448359 0.444409 0.439987 0.435122 0.429841 0.424168 0.418124 0.411730 0.405003 0.397960 0.390614 0.382979 0.375066 0.366885 0.358444 0.349750 0.340808 0.331621 0.322192 0.312525 0.302621 0.292482 0.282110 0.271506 0.260670 0.249604 0.238307 0.226781 0.215024 0.203037 0.190820 0.178372 0.165694 0.152784 0.139643 0.126271 0.112666 0.098829 0.084758 0.070454 0.055916 0.041144 0.026138 0.010898 -0.004577 -0.020284 -0.036222 -0.052390 -0.068783 -0.085398 -0.102231 -0.119276 -0.136526 -0.153973 -0.171609 -0.189423 -0.207406 -0.225546 -0.243832 -0.262252 -0.280793 -0.299443 -0.318188 -0.337016 -0.355911 -0.374860 -0.393849 -0.412861 -0.431882 -0.450896 -0.469886 -0.488837 -0.507732 -0.526553 -0.545284 -0.563906 -0.582403 -0.600754 -0.618943 -0.636951 -0.654761 -0.672353 -0.689711 -0.706818 -0.723660 -0.740221 -0.756490 -0.772455 -0.788107 -0.803438 -0.818444 -0.833120 -0.847465 -0.455675 0.457621 0.459122 0.460153 0.460689 0.460732 0.460276 0.459304 0.457802 0.455753 0.453143 0.449992 0.446315 0.442122 0.437425 0.432254 0.426641 0.420612 0.414191 0.407398 0.400253 0.392771 0.384968 0.376855 0.368443 0.359739 0.350750 0.341482 0.331939 0.322125 0.312043 0.301696 0.291086 0.280215 0.269084 0.257696 0.246050 0.234148 0.221990 0.209576 0.196908 0.183983 0.170804 0.157370 0.143681 0.129737 0.115537 0.101081 0.086370 0.071402 0.056178 0.040697 0.024959 0.008965 -0.007286 -0.023792 -0.040551 -0.057562 -0.074821 -0.092325 -0.110067 -0.128044 -0.146246 -0.164667 -0.183297 -0.202125 -0.221141 -0.240332 -0.259686 -0.279191 -0.298834 -0.318600 -0.338476 -0.358448 -0.378500 -0.398617 -0.418784 -0.438985 -0.459203 -0.479422 -0.499625 -0.519794 -0.539911 -0.559958 -0.579917 -0.599769 -0.619495 -0.639075 -0.658489 -0.677719 -0.696745 -0.715546 -0.734105 -0.752403 -0.770423 -0.788150 -0.805570 -0.822670 -0.839441 -0.855873 -0.871960 -0.887699 -0.903088 -0.918124 -0.450148 0.452785 0.454985 0.456711 0.457919 0.458583 0.458696 0.458258 0.457257 0.455684 0.453525 0.450767 0.447423 0.443514 0.439052 0.434052 0.428551 0.422581 0.416170 0.409345 0.402125 0.394531 0.386576 0.378276 0.369640 0.360676 0.351393 0.341797 0.331892 0.321685 0.311178 0.300375 0.289279 0.277893 0.266218 0.254257 0.242010 0.229479 0.216664 0.203567 0.190188 0.176528 0.162587 0.148365 0.133862 0.119079 0.104016 0.088672 0.073047 0.057142 0.040956 0.024489 0.007741 -0.009286 -0.026593 -0.044177 -0.062037 -0.080169 -0.098569 -0.117232 -0.136152 -0.155321 -0.174732 -0.194374 -0.214235 -0.234305 -0.254571 -0.275019 -0.295637 -0.316409 -0.337323 -0.358363 -0.379513 -0.400758 -0.422082 -0.443468 -0.464900 -0.486359 -0.507829 -0.529291 -0.550726 -0.572116 -0.593442 -0.614684 -0.635821 -0.656833 -0.677700 -0.698401 -0.718914 -0.739219 -0.759295 -0.779120 -0.798676 -0.817943 -0.836904 -0.855545 -0.873850 -0.891809 -0.909412 -0.926651 -0.943523 -0.960024 -0.976154 -0.991912 -0.443216 0.446580 0.449502 0.451944 0.453873 0.455239 0.456012 0.456176 0.455732 0.454676 0.453003 0.450704 0.447764 0.444194 0.440019 0.435253 0.429918 0.424052 0.417691 0.410865 0.403597 0.395910 0.387820 0.379342 0.370488 0.361267 0.351688 0.341760 0.331488 0.320878 0.309935 0.298663 0.287066 0.275148 0.262909 0.250354 0.237483 0.224298 0.210802 0.196994 0.182876 0.168449 0.153714 0.138671 0.123321 0.107664 0.091699 0.075428 0.058851 0.041966 0.024775 0.007279 -0.010524 -0.028631 -0.047041 -0.065753 -0.084762 -0.104064 -0.123656 -0.143529 -0.163677 -0.184090 -0.204759 -0.225672 -0.246815 -0.268177 -0.289742 -0.311498 -0.333428 -0.355519 -0.377753 -0.400116 -0.422589 -0.445157 -0.467802 -0.490505 -0.513249 -0.536014 -0.558782 -0.581533 -0.604246 -0.626903 -0.649480 -0.671959 -0.694316 -0.716529 -0.738577 -0.760436 -0.782084 -0.803500 -0.824659 -0.845541 -0.866125 -0.886391 -0.906324 -0.925907 -0.945127 -0.963974 -0.982438 -1.000515 -1.018201 -1.035494 -1.052396 -1.068906 -0.435031 0.439102 0.442772 0.445970 0.448637 0.450741 0.452236 0.453085 0.453270 0.452789 0.451643 0.449833 0.447354 0.444189 0.440352 0.435869 0.430756 0.425043 0.418771 0.411975 0.404684 0.396923 0.388711 0.380064 0.370996 0.361519 0.351643 0.341378 0.330731 0.319709 0.308318 0.296564 0.284450 0.271980 0.259158 0.245987 0.232469 0.218606 0.204400 0.189854 0.174968 0.159744 0.144182 0.128284 0.112050 0.095481 0.078578 0.061340 0.043767 0.025861 0.007622 -0.010950 -0.029854 -0.049088 -0.068650 -0.088538 -0.108747 -0.129271 -0.150105 -0.171240 -0.192667 -0.214376 -0.236354 -0.258588 -0.281065 -0.303769 -0.326686 -0.349800 -0.373095 -0.396554 -0.420160 -0.443896 -0.467743 -0.491684 -0.515699 -0.539769 -0.563874 -0.587994 -0.612108 -0.636195 -0.660234 -0.684202 -0.708076 -0.731835 -0.755454 -0.778910 -0.802178 -0.825235 -0.848056 -0.870618 -0.892896 -0.914867 -0.936512 -0.957810 -0.978745 -0.999302 -1.019467 -1.039232 -1.058589 -1.077535 -1.096067 -1.114186 -1.131891 -1.149186 -0.425910 0.430545 0.434903 0.438856 0.442306 0.445172 0.447417 0.449000 0.449886 0.450051 0.449491 0.448210 0.446219 0.443513 0.440073 0.435919 0.431076 0.425564 0.419420 0.412686 0.405396 0.397579 0.389256 0.380447 0.371170 0.361437 0.351262 0.340655 0.329626 0.318182 0.306331 0.294079 0.281431 0.268392 0.254965 0.241156 0.226966 0.212400 0.197458 0.182144 0.166459 0.150405 0.133984 0.117195 0.100042 0.082523 0.064640 0.046394 0.027785 0.008814 -0.010519 -0.030213 -0.050266 -0.070676 -0.091441 -0.112555 -0.134014 -0.155812 -0.177940 -0.200389 -0.223148 -0.246204 -0.269543 -0.293152 -0.317013 -0.341113 -0.365433 -0.389958 -0.414669 -0.439549 -0.464579 -0.489740 -0.515014 -0.540379 -0.565815 -0.591303 -0.616820 -0.642344 -0.667854 -0.693326 -0.718737 -0.744064 -0.769282 -0.794366 -0.819291 -0.844031 -0.868561 -0.892855 -0.916887 -0.940632 -0.964064 -0.987161 -1.009900 -1.032263 -1.054233 -1.075795 -1.096938 -1.117653 -1.137937 -1.157785 -1.177198 -1.196175 -1.214720 -1.232835 -0.416190 0.421231 0.426116 0.430730 0.434934 0.438601 0.441632 0.443974 0.445598 0.446473 0.446567 0.445874 0.444408 0.442185 0.439194 0.435420 0.430888 0.425622 0.419646 0.413005 0.405739 0.397881 0.389460 0.380498 0.371014 0.361026 0.350549 0.339595 0.328175 0.316298 0.303974 0.291208 0.278009 0.264381 0.250330 0.235859 0.220974 0.205677 0.189971 0.173859 0.157344 0.140428 0.123112 0.105397 0.087286 0.068778 0.049876 0.030580 0.010890 -0.009192 -0.029665 -0.050528 -0.071779 -0.093415 -0.115433 -0.137826 -0.160588 -0.183711 -0.207186 -0.231002 -0.255145 -0.279602 -0.304355 -0.329390 -0.354691 -0.380238 -0.406016 -0.432005 -0.458186 -0.484540 -0.511048 -0.537688 -0.564440 -0.591283 -0.618194 -0.645151 -0.672132 -0.699112 -0.726068 -0.752974 -0.779807 -0.806541 -0.833148 -0.859603 -0.885878 -0.911947 -0.937781 -0.963353 -0.988636 -1.013601 -1.038225 -1.062482 -1.086351 -1.109813 -1.132851 -1.155453 -1.177608 -1.199309 -1.220554 -1.241341 -1.261669 -1.281541 -1.300961 -1.319933 -0.406042 0.411407 0.416695 0.421823 0.426667 0.431084 0.434924 0.438071 0.440460 0.442073 0.442879 0.442839 0.441954 0.440244 0.437728 0.434385 0.430206 0.425220 0.419452 0.412935 0.405715 0.397835 0.389327 0.380218 0.370533 0.360290 0.349507 0.338200 0.326380 0.314059 0.301248 0.287954 0.274186 0.259949 0.245251 0.230095 0.214488 0.198434 0.181935 0.164995 0.147618 0.129805 0.111558 0.092881 0.073773 0.054236 0.034273 0.013883 -0.006932 -0.028171 -0.049832 -0.071913 -0.094413 -0.117326 -0.140648 -0.164372 -0.188490 -0.212993 -0.237869 -0.263105 -0.288686 -0.314596 -0.340818 -0.367334 -0.394127 -0.421178 -0.448467 -0.475975 -0.503681 -0.531565 -0.559605 -0.587779 -0.616065 -0.644439 -0.672879 -0.701359 -0.729856 -0.758344 -0.786798 -0.815190 -0.843495 -0.871684 -0.899729 -0.927602 -0.955273 -0.982714 -1.009895 -1.036787 -1.063359 -1.089585 -1.115438 -1.140892 -1.165928 -1.190525 -1.214668 -1.238345 -1.261548 -1.284272 -1.306515 -1.328277 -1.349558 -1.370363 -1.390695 -1.410562 -0.395539 0.401202 0.406821 0.412362 0.417725 0.422773 0.427360 0.431321 0.434525 0.436901 0.438443 0.439112 0.438869 0.437723 0.435702 0.432815 0.429035 0.424365 0.418837 0.412475 0.405327 0.397442 0.388859 0.379612 0.369728 0.359230 0.348138 0.336471 0.324243 0.311467 0.298154 0.284315 0.269959 0.255093 0.239725 0.223861 0.207507 0.190667 0.173345 0.155546 0.137273 0.118528 0.099315 0.079636 0.059492 0.038885 0.017817 -0.003711 -0.025697 -0.048140 -0.071038 -0.094388 -0.118186 -0.142429 -0.167108 -0.192216 -0.217745 -0.243681 -0.270013 -0.296723 -0.323797 -0.351215 -0.378960 -0.407013 -0.435355 -0.463964 -0.492821 -0.521904 -0.551192 -0.580661 -0.610289 -0.640053 -0.669928 -0.699890 -0.729913 -0.759972 -0.790040 -0.820090 -0.850094 -0.880024 -0.909851 -0.939545 -0.969077 -0.998416 -1.027530 -1.056389 -1.084960 -1.113214 -1.141118 -1.168644 -1.195765 -1.222456 -1.248695 -1.274464 -1.299749 -1.324539 -1.348829 -1.372614 -1.395894 -1.418669 -1.440942 -1.462718 -1.484003 -1.504805 -0.384710 0.390673 0.396602 0.402487 0.408281 0.413862 0.419082 0.423790 0.427812 0.431005 0.433302 0.434702 0.435156 0.434630 0.433144 0.430730 0.427377 0.423061 0.417800 0.411627 0.404575 0.396704 0.388059 0.378681 0.368601 0.357848 0.346444 0.334411 0.321764 0.308520 0.294692 0.280291 0.265328 0.249813 0.233752 0.217154 0.200025 0.182371 0.164196 0.145505 0.126302 0.106590 0.086373 0.065653 0.044432 0.022712 0.000496 -0.022216 -0.045421 -0.069116 -0.093301 -0.117971 -0.143121 -0.168745 -0.194835 -0.221383 -0.248376 -0.275801 -0.303643 -0.331883 -0.360504 -0.389487 -0.418812 -0.448458 -0.478405 -0.508630 -0.539113 -0.569828 -0.600754 -0.631867 -0.663141 -0.694552 -0.726074 -0.757680 -0.789343 -0.821036 -0.852730 -0.884396 -0.916005 -0.947526 -0.978928 -1.010179 -1.041247 -1.072100 -1.102705 -1.133027 -1.163035 -1.192694 -1.221972 -1.250840 -1.279269 -1.307235 -1.334717 -1.361697 -1.388163 -1.414106 -1.439522 -1.464408 -1.488764 -1.512593 -1.535899 -1.558688 -1.580966 -1.602743 -0.373541 0.379840 0.386085 0.392293 0.398451 0.404488 0.410260 0.415611 0.420382 0.424395 0.427500 0.429645 0.430818 0.430966 0.430065 0.428148 0.425238 0.421308 0.416347 0.410386 0.403459 0.395620 0.386927 0.377425 0.367154 0.356145 0.344426 0.332019 0.318944 0.305220 0.290861 0.275881 0.260292 0.244104 0.227328 0.209970 0.192039 0.173540 0.154481 0.134865 0.114697 0.093982 0.072722 0.050921 0.028581 0.005705 -0.017706 -0.041648 -0.066119 -0.091118 -0.116640 -0.142681 -0.169236 -0.196296 -0.223853 -0.251895 -0.280408 -0.309378 -0.338785 -0.368611 -0.398837 -0.429442 -0.460403 -0.491701 -0.523311 -0.555211 -0.587376 -0.619784 -0.652407 -0.685222 -0.718201 -0.751318 -0.784545 -0.817853 -0.851214 -0.884598 -0.917975 -0.951313 -0.984582 -1.017747 -1.050777 -1.083637 -1.116294 -1.148711 -1.180854 -1.212688 -1.244177 -1.275286 -1.305981 -1.336232 -1.366011 -1.395294 -1.424059 -1.452291 -1.479979 -1.507116 -1.533699 -1.559728 -1.585202 -1.610127 -1.634507 -1.658350 -1.681664 -1.704460 -0.362012 0.368686 0.375281 0.381819 0.388315 0.394745 0.401001 0.406925 0.412353 0.417121 0.421045 0.423978 0.425880 0.426727 0.426462 0.425084 0.422632 0.419105 0.414476 0.408753 0.401976 0.394191 0.385463 0.375847 0.365388 0.354122 0.342083 0.329295 0.315782 0.301564 0.286659 0.271082 0.254847 0.237966 0.220448 0.202304 0.183543 0.164170 0.144194 0.123619 0.102450 0.080693 0.058351 0.035428 0.011926 -0.012152 -0.036802 -0.062022 -0.087810 -0.114162 -0.141074 -0.168540 -0.196554 -0.225105 -0.254183 -0.283775 -0.313865 -0.344435 -0.375466 -0.406935 -0.438824 -0.471108 -0.503765 -0.536773 -0.570106 -0.603739 -0.637649 -0.671808 -0.706189 -0.740766 -0.775510 -0.810393 -0.845384 -0.880454 -0.915572 -0.950705 -0.985823 -1.020890 -1.055874 -1.090740 -1.125452 -1.159975 -1.194271 -1.228303 -1.262035 -1.295428 -1.328445 -1.361049 -1.393206 -1.424884 -1.456056 -1.486697 -1.516787 -1.546313 -1.575266 -1.603640 -1.631433 -1.658647 -1.685283 -1.711347 -1.736845 -1.761785 -1.786179 -1.810037 -0.350104 0.357191 0.364175 0.371077 0.377918 0.384704 0.391387 0.397824 0.403847 0.409284 0.413970 0.417711 0.420375 0.421927 0.422331 0.421538 0.419572 0.416462 0.412188 0.406731 0.400127 0.392416 0.383667 0.373945 0.363302 0.351780 0.339415 0.326239 0.312278 0.297553 0.282086 0.265894 0.248992 0.231393 0.213110 0.194153 0.174531 0.154254 0.133327 0.111758 0.089552 0.066714 0.043249 0.019161 -0.005546 -0.030870 -0.056808 -0.083355 -0.110510 -0.138268 -0.166623 -0.195568 -0.225095 -0.255194 -0.285850 -0.317049 -0.348773 -0.381000 -0.413711 -0.446883 -0.480492 -0.514516 -0.548929 -0.583706 -0.618823 -0.654252 -0.689966 -0.725938 -0.762139 -0.798539 -0.835110 -0.871819 -0.908636 -0.945528 -0.982462 -1.019405 -1.056322 -1.093176 -1.129933 -1.166556 -1.203006 -1.239245 -1.275234 -1.310933 -1.346304 -1.381305 -1.415898 -1.450044 -1.483708 -1.516858 -1.549466 -1.581509 -1.612968 -1.643832 -1.674093 -1.703749 -1.732797 -1.761240 -1.789082 -1.816330 -1.842990 -1.869074 -1.894592 -1.919557 -0.337802 0.345339 0.352748 0.360050 0.367264 0.374409 0.381476 0.388374 0.394939 0.400990 0.406354 0.410861 0.414313 0.416594 0.417674 0.417506 0.416064 0.413388 0.409483 0.404320 0.397907 0.390294 0.381540 0.371720 0.360896 0.349117 0.336423 0.322851 0.308430 0.293185 0.277139 0.260313 0.242722 0.224383 0.205308 0.185510 0.164999 0.143784 0.121873 0.099274 0.075992 0.052035 0.027406 0.002110 -0.023849 -0.050466 -0.077740 -0.105665 -0.134238 -0.163453 -0.193305 -0.223785 -0.254882 -0.286584 -0.318876 -0.351739 -0.385154 -0.419098 -0.453548 -0.488481 -0.523872 -0.559696 -0.595925 -0.632535 -0.669497 -0.706784 -0.744365 -0.782213 -0.820296 -0.858583 -0.897042 -0.935640 -0.974345 -1.013121 -1.051933 -1.090745 -1.129521 -1.168222 -1.206811 -1.245247 -1.283491 -1.321502 -1.359238 -1.396657 -1.433718 -1.470378 -1.506595 -1.542331 -1.577548 -1.612215 -1.646305 -1.679795 -1.712669 -1.744916 -1.776532 -1.807514 -1.837863 -1.867582 -1.896676 -1.925152 -1.953022 -1.980294 -2.006983 -2.033102 -0.325095 0.333115 0.340984 0.348721 0.356343 0.363871 0.371311 0.378627 0.385684 0.392303 0.398294 0.403490 0.407704 0.410743 0.412512 0.412984 0.412109 0.409892 0.406368 0.401517 0.395321 0.387824 0.379080 0.369172 0.358170 0.346133 0.333106 0.319129 0.304236 0.288457 0.271816 0.254336 0.236035 0.216931 0.197038 0.176370 0.154938 0.132753 0.109823 0.086157 0.061762 0.036643 0.010808 -0.015740 -0.042996 -0.070955 -0.099613 -0.128967 -0.159011 -0.189738 -0.221142 -0.253212 -0.285936 -0.319299 -0.353284 -0.387870 -0.423035 -0.458754 -0.495005 -0.531760 -0.568993 -0.606679 -0.644788 -0.683292 -0.722163 -0.761371 -0.800884 -0.840671 -0.880699 -0.920937 -0.961348 -1.001900 -1.042555 -1.083277 -1.124030 -1.164774 -1.205470 -1.246078 -1.286557 -1.326866 -1.366962 -1.406800 -1.446339 -1.485532 -1.524335 -1.562704 -1.600596 -1.637969 -1.674788 -1.711020 -1.746638 -1.781622 -1.815957 -1.849635 -1.882652 -1.915008 -1.946705 -1.977746 -2.008139 -2.037893 -2.067018 -2.095526 -2.123433 -2.150753 -0.311970 0.320507 0.328870 0.337074 0.345138 0.353079 0.360909 0.368619 0.376129 0.383269 0.389848 0.395677 0.400588 0.404378 0.406864 0.407983 0.407699 0.405978 0.402851 0.398323 0.392368 0.385003 0.376285 0.366299 0.355124 0.342827 0.329462 0.315072 0.299697 0.283368 0.266114 0.247960 0.228927 0.209033 0.188295 0.166727 0.144343 0.121154 0.097170 0.072399 0.046850 0.020529 -0.006556 -0.034402 -0.063001 -0.092350 -0.122445 -0.153279 -0.184847 -0.217142 -0.250153 -0.283870 -0.318278 -0.353361 -0.389097 -0.425465 -0.462440 -0.499996 -0.538107 -0.576746 -0.615885 -0.655496 -0.695548 -0.736012 -0.776856 -0.818049 -0.859558 -0.901350 -0.943390 -0.985642 -1.028072 -1.070641 -1.113311 -1.156044 -1.198800 -1.241539 -1.284217 -1.326794 -1.369225 -1.411466 -1.453471 -1.495196 -1.536592 -1.577614 -1.618213 -1.658344 -1.697960 -1.737021 -1.775490 -1.813335 -1.850529 -1.887055 -1.922899 -1.958057 -1.992524 -2.026303 -2.059395 -2.091808 -2.123548 -2.154627 -2.185057 -2.214850 -2.244023 -2.272593 -0.298424 0.307504 0.316390 0.325095 0.333631 0.342017 0.350265 0.358374 0.366305 0.373927 0.381054 0.387481 0.393031 0.397521 0.400736 0.402518 0.402837 0.401644 0.398936 0.394744 0.389046 0.381829 0.373156 0.363100 0.351756 0.339199 0.325490 0.310679 0.294808 0.277915 0.260031 0.241182 0.221392 0.200683 0.179072 0.156575 0.133206 0.108978 0.083903 0.057989 0.031245 0.003680 -0.024700 -0.053888 -0.083880 -0.114669 -0.146251 -0.178618 -0.211766 -0.245683 -0.280359 -0.315781 -0.351932 -0.388793 -0.426340 -0.464550 -0.503396 -0.542850 -0.582884 -0.623470 -0.664579 -0.706179 -0.748239 -0.790727 -0.833611 -0.876856 -0.920427 -0.964290 -1.008407 -1.052742 -1.097255 -1.141907 -1.186659 -1.231468 -1.276292 -1.321089 -1.365813 -1.410421 -1.454865 -1.499099 -1.543074 -1.586742 -1.630054 -1.672960 -1.715409 -1.757354 -1.798748 -1.839547 -1.879716 -1.919223 -1.958044 -1.996161 -2.033565 -2.070252 -2.106219 -2.141470 -2.176008 -2.209842 -2.242980 -2.275433 -2.307216 -2.338344 -2.368833 -2.398702 -0.284455 0.294099 0.303536 0.312770 0.321810 0.330670 0.339363 0.347891 0.356236 0.364310 0.371944 0.378938 0.385090 0.390222 0.394134 0.396603 0.397531 0.396887 0.394630 0.390786 0.385353 0.378306 0.369689 0.359574 0.348065 0.335247 0.321188 0.305947 0.289569 0.272096 0.253562 0.233997 0.213427 0.191876 0.169363 0.145905 0.121519 0.096218 0.070013 0.042917 0.014938 -0.013915 -0.043635 -0.074214 -0.105647 -0.137927 -0.171048 -0.205003 -0.239785 -0.275381 -0.311779 -0.348965 -0.386918 -0.425616 -0.465036 -0.505148 -0.545927 -0.587342 -0.629364 -0.671961 -0.715104 -0.758759 -0.802893 -0.847473 -0.892463 -0.937827 -0.983529 -1.029530 -1.075793 -1.122276 -1.168940 -1.215743 -1.262642 -1.309594 -1.356552 -1.403473 -1.450308 -1.497010 -1.543530 -1.589818 -1.635824 -1.681495 -1.726781 -1.771627 -1.815982 -1.859796 -1.903019 -1.945609 -1.987529 -2.028750 -2.069247 -2.109007 -2.148022 -2.186289 -2.223808 -2.260582 -2.296617 -2.331922 -2.366508 -2.400388 -2.433575 -2.466088 -2.497943 -2.529162 -0.270078 0.280290 0.290298 0.300088 0.309660 0.319023 0.328190 0.337162 0.345929 0.354436 0.362547 0.370074 0.376800 0.382533 0.387091 0.390241 0.391797 0.391708 0.389927 0.386448 0.381290 0.374431 0.365882 0.355720 0.344050 0.330969 0.316556 0.300874 0.283975 0.265906 0.246703 0.226401 0.205027 0.182607 0.159162 0.134712 0.109274 0.082863 0.055492 0.027173 -0.002084 -0.032269 -0.063375 -0.095393 -0.128316 -0.162139 -0.196853 -0.232451 -0.268923 -0.306256 -0.344435 -0.383443 -0.423258 -0.463855 -0.505207 -0.547286 -0.590060 -0.633500 -0.677574 -0.722249 -0.767492 -0.813269 -0.859545 -0.906284 -0.953448 -1.001000 -1.048900 -1.097109 -1.145586 -1.194287 -1.243171 -1.292193 -1.341308 -1.390469 -1.439629 -1.488739 -1.537750 -1.586612 -1.635272 -1.683677 -1.731775 -1.779510 -1.826828 -1.873673 -1.919990 -1.965726 -2.010833 -2.055267 -2.098991 -2.141977 -2.184204 -2.225660 -2.266338 -2.306238 -2.345361 -2.383711 -2.421295 -2.458124 -2.494210 -2.529567 -2.564211 -2.598160 -2.631434 -2.664055 -0.255334 0.266090 0.276675 0.287041 0.297171 0.307065 0.316732 0.326173 0.335382 0.344321 0.352886 0.360911 0.368184 0.374494 0.379650 0.383444 0.385641 0.386114 0.384826 0.381735 0.376865 0.370203 0.361735 0.351536 0.339708 0.326364 0.311590 0.295458 0.278025 0.259343 0.239452 0.218389 0.196185 0.172868 0.148462 0.122988 0.096464 0.068906 0.040329 0.010746 -0.019832 -0.051395 -0.083933 -0.117439 -0.151904 -0.187322 -0.223683 -0.260980 -0.299199 -0.338326 -0.378346 -0.419237 -0.460975 -0.503532 -0.546880 -0.590987 -0.635821 -0.681351 -0.727543 -0.774362 -0.821774 -0.869742 -0.918228 -0.967195 -1.016603 -1.066412 -1.116581 -1.167068 -1.217828 -1.268817 -1.319991 -1.371301 -1.422701 -1.474140 -1.525569 -1.576937 -1.628191 -1.679278 -1.730143 -1.780730 -1.830982 -1.880842 -1.930252 -1.979154 -2.027491 -2.075206 -2.122252 -2.168583 -2.214166 -2.258971 -2.302981 -2.346187 -2.388583 -2.430169 -2.470949 -2.510929 -2.550116 -2.588522 -2.626161 -2.663048 -2.699201 -2.734639 -2.769384 -2.803460 -0.240273 0.251530 0.262674 0.273624 0.284333 0.294783 0.304976 0.314912 0.324583 0.333964 0.342971 0.351470 0.359265 0.366127 0.371852 0.376243 0.379066 0.380116 0.379329 0.376650 0.372078 0.365619 0.357245 0.347019 0.335039 0.321429 0.306288 0.289695 0.271715 0.252402 0.231802 0.209956 0.186897 0.162655 0.137257 0.110725 0.083079 0.054337 0.024514 -0.006374 -0.038317 -0.071303 -0.105323 -0.140366 -0.176425 -0.213491 -0.251556 -0.290607 -0.330631 -0.371613 -0.413533 -0.456367 -0.500090 -0.544670 -0.590076 -0.636276 -0.683237 -0.730924 -0.779301 -0.828333 -0.877981 -0.928208 -0.978975 -1.030240 -1.081963 -1.134101 -1.186609 -1.239444 -1.292560 -1.345908 -1.399442 -1.453112 -1.506866 -1.560654 -1.614422 -1.668116 -1.721681 -1.775060 -1.828195 -1.881028 -1.933499 -1.985546 -2.037110 -2.088129 -2.138542 -2.188294 -2.237335 -2.285620 -2.333115 -2.379795 -2.425644 -2.470655 -2.514824 -2.558152 -2.600645 -2.642308 -2.683152 -2.723190 -2.762436 -2.800907 -2.838623 -2.875604 -2.911875 -2.947459 -0.224920 0.236659 0.248320 0.259842 0.271141 0.282168 0.292912 0.303365 0.313521 0.323361 0.332812 0.341767 0.350056 0.357448 0.363722 0.368672 0.372086 0.373723 0.373441 0.371188 0.366930 0.360678 0.352414 0.342167 0.330039 0.316162 0.300648 0.283583 0.265041 0.245079 0.223750 0.201096 0.177156 0.151960 0.125538 0.097914 0.069111 0.039146 0.008038 -0.024199 -0.057552 -0.092008 -0.127557 -0.164189 -0.201894 -0.240664 -0.280487 -0.321350 -0.363239 -0.406135 -0.450016 -0.494856 -0.540625 -0.587292 -0.634822 -0.683181 -0.732334 -0.782245 -0.832876 -0.884189 -0.936145 -0.988702 -1.041820 -1.095455 -1.149565 -1.204103 -1.259023 -1.314279 -1.369822 -1.425603 -1.481569 -1.537669 -1.593851 -1.650058 -1.706235 -1.762325 -1.818269 -1.874009 -1.929482 -1.984627 -2.039380 -2.093679 -2.147458 -2.200654 -2.253204 -2.305051 -2.356143 -2.406438 -2.455903 -2.504515 -2.552260 -2.599132 -2.645130 -2.690257 -2.734518 -2.777921 -2.820478 -2.862202 -2.903111 -2.943221 -2.982555 -3.021134 -3.058985 -3.096133 -0.209268 0.221506 0.233656 0.245712 0.257595 0.269213 0.280528 0.291523 0.302185 0.312503 0.322409 0.331811 0.340572 0.348473 0.355277 0.360764 0.364724 0.366934 0.367166 0.365348 0.361419 0.355386 0.347238 0.336978 0.324706 0.310561 0.294666 0.277119 0.257999 0.237371 0.215291 0.191806 0.166956 0.140777 0.113299 0.084549 0.054551 0.023325 -0.009111 -0.042740 -0.077548 -0.113522 -0.150650 -0.188922 -0.228328 -0.268856 -0.310494 -0.353229 -0.397042 -0.441913 -0.487817 -0.534724 -0.582604 -0.631421 -0.681140 -0.731726 -0.783140 -0.835344 -0.888298 -0.941963 -0.996297 -1.051256 -1.106797 -1.162875 -1.219444 -1.276456 -1.333862 -1.391613 -1.449657 -1.507942 -1.566415 -1.625019 -1.683700 -1.742398 -1.801056 -1.859613 -1.918007 -1.976176 -2.034055 -2.091579 -2.148681 -2.205295 -2.261352 -2.316787 -2.371534 -2.425534 -2.478737 -2.531101 -2.582593 -2.633194 -2.682893 -2.731685 -2.779571 -2.826553 -2.872639 -2.917839 -2.962166 -3.005633 -3.048260 -3.090066 -3.131074 -3.171307 -3.210794 -3.249562 -0.193319 0.206067 0.218715 0.231269 0.243706 0.255916 0.267818 0.279375 0.290564 0.301379 0.311755 0.321607 0.330824 0.339215 0.346530 0.352534 0.357011 0.359759 0.360510 0.359131 0.355548 0.349743 0.341715 0.331450 0.319038 0.304622 0.288339 0.270298 0.250585 0.229272 0.206419 0.182078 0.156292 0.129099 0.100532 0.070621 0.039390 0.006863 -0.026942 -0.062008 -0.098317 -0.135858 -0.174616 -0.214580 -0.255740 -0.298083 -0.341595 -0.386260 -0.432058 -0.478965 -0.526954 -0.575993 -0.626048 -0.677082 -0.729057 -0.781937 -0.835680 -0.890247 -0.945596 -1.001685 -1.058469 -1.115903 -1.173941 -1.232536 -1.291638 -1.351198 -1.411165 -1.471485 -1.532105 -1.592970 -1.654023 -1.715206 -1.776459 -1.837723 -1.898934 -1.960029 -2.020945 -2.081613 -2.141967 -2.201937 -2.261455 -2.320450 -2.378850 -2.436585 -2.493590 -2.549805 -2.605178 -2.659669 -2.713249 -2.765899 -2.817611 -2.868382 -2.918214 -2.967110 -3.015080 -3.062135 -3.108289 -3.153557 -3.197960 -3.241518 -3.284257 -3.326201 -3.367381 -3.407827 -0.177107 0.190340 0.203500 0.216550 0.229498 0.242279 0.254776 0.266913 0.278650 0.289981 0.300843 0.311154 0.320818 0.329680 0.337489 0.343997 0.348969 0.352214 0.353479 0.352543 0.349314 0.343749 0.335843 0.325579 0.313031 0.298342 0.281665 0.263118 0.242796 0.220778 0.197130 0.171907 0.145156 0.116918 0.087230 0.056121 0.023620 -0.010249 -0.045467 -0.082013 -0.119872 -0.159028 -0.199467 -0.241178 -0.284148 -0.328363 -0.373807 -0.420462 -0.468305 -0.517311 -0.567449 -0.618684 -0.670980 -0.724297 -0.778597 -0.833840 -0.889983 -0.946984 -1.004800 -1.063385 -1.122692 -1.182676 -1.243285 -1.304472 -1.366183 -1.428367 -1.490970 -1.553936 -1.617208 -1.680728 -1.744437 -1.808274 -1.872175 -1.936078 -1.999916 -2.063624 -2.127132 -2.190371 -2.253270 -2.315757 -2.377758 -2.439199 -2.500006 -2.560107 -2.619432 -2.677923 -2.735527 -2.792207 -2.847934 -2.902694 -2.956480 -3.009291 -3.061128 -3.111999 -3.161912 -3.210881 -3.258920 -3.306048 -3.352285 -3.397654 -3.442181 -3.485894 -3.528825 -3.571007 -0.160698 0.174347 0.188005 0.201567 0.215009 0.228320 0.241401 0.254130 0.266434 0.278299 0.289665 0.300448 0.310560 0.319880 0.328166 0.335162 0.340613 0.344325 0.346076 0.345586 0.342716 0.337401 0.329620 0.319365 0.306684 0.291719 0.274639 0.255573 0.234627 0.211885 0.187418 0.161287 0.133542 0.104229 0.073384 0.041042 0.007232 -0.028022 -0.064695 -0.102768 -0.142224 -0.183046 -0.225219 -0.268730 -0.313566 -0.359711 -0.407146 -0.455853 -0.505804 -0.556972 -0.609323 -0.662819 -0.717422 -0.773091 -0.829785 -0.887461 -0.946075 -1.005583 -1.065939 -1.127094 -1.189000 -1.251607 -1.314864 -1.378719 -1.443116 -1.508001 -1.573317 -1.639005 -1.705007 -1.771260 -1.837702 -1.904268 -1.970894 -2.037512 -2.104052 -2.170446 -2.236620 -2.302503 -2.368018 -2.433091 -2.497644 -2.561599 -2.624879 -2.687409 -2.749119 -2.809948 -2.869846 -2.928775 -2.986712 -3.043645 -3.099566 -3.154478 -3.208383 -3.261288 -3.313206 -3.364148 -3.414133 -3.463179 -3.511309 -3.558548 -3.604923 -3.650465 -3.695207 -3.739183 -0.144165 0.158144 0.172243 0.186313 0.200259 0.214067 0.227701 0.241023 0.253908 0.266326 0.278212 0.289482 0.300048 0.309813 0.318565 0.326033 0.331952 0.336108 0.338313 0.338262 0.335756 0.330697 0.323048 0.312804 0.299992 0.284749 0.267257 0.247661 0.226073 0.202586 0.177278 0.150212 0.121445 0.091023 0.058988 0.025375 -0.009785 -0.046464 -0.084637 -0.124284 -0.165386 -0.207924 -0.251885 -0.297252 -0.344010 -0.392144 -0.441631 -0.492450 -0.544573 -0.597967 -0.652596 -0.708420 -0.765399 -0.823488 -0.882646 -0.942827 -1.003985 -1.066073 -1.129042 -1.192842 -1.257423 -1.322731 -1.388713 -1.455312 -1.522473 -1.590137 -1.658245 -1.726734 -1.795543 -1.864607 -1.933860 -2.003235 -2.072662 -2.142071 -2.211390 -2.280545 -2.349460 -2.418059 -2.486263 -2.553993 -2.621167 -2.687705 -2.753525 -2.818550 -2.882709 -2.945940 -3.008194 -3.069438 -3.129648 -3.188816 -3.246937 -3.304012 -3.360046 -3.415048 -3.469031 -3.522009 -3.574000 -3.625025 -3.675109 -3.724278 -3.772561 -3.819991 -3.866604 -3.912436 -0.127544 0.141800 0.156255 0.170791 0.185248 0.199551 0.213696 0.227592 0.241068 0.254054 0.266476 0.278248 0.289279 0.299486 0.308692 0.316618 0.322993 0.327578 0.330201 0.330575 0.328435 0.323636 0.316126 0.305895 0.292952 0.277429 0.259517 0.239376 0.217130 0.192878 0.166704 0.138677 0.108856 0.077294 0.044032 0.009110 -0.027439 -0.065586 -0.105304 -0.146573 -0.189369 -0.233677 -0.279478 -0.326757 -0.375497 -0.425678 -0.477279 -0.530274 -0.584631 -0.640316 -0.697289 -0.755509 -0.814932 -0.875512 -0.937206 -0.999964 -1.063739 -1.128482 -1.194140 -1.260662 -1.327994 -1.396080 -1.464865 -1.534288 -1.604292 -1.674814 -1.745793 -1.817163 -1.888859 -1.960813 -2.032956 -2.105218 -2.177525 -2.249803 -2.321977 -2.393970 -2.465701 -2.537091 -2.608058 -2.678516 -2.748383 -2.817573 -2.886001 -2.953588 -3.020260 -3.085959 -3.150635 -3.214257 -3.276806 -3.338273 -3.398657 -3.457959 -3.516187 -3.573349 -3.629459 -3.684534 -3.738593 -3.791659 -3.843758 -3.894918 -3.945171 -3.994551 -4.043096 -4.090844 -0.110835 0.125361 0.140104 0.155027 0.169972 0.184780 0.199415 0.213848 0.227910 0.241476 0.254450 0.266739 0.278249 0.288899 0.298549 0.306923 0.313744 0.318744 0.321757 0.322532 0.320752 0.316216 0.308853 0.298634 0.285562 0.269754 0.251415 0.230716 0.207793 0.182755 0.155690 0.126674 0.095770 0.063033 0.028510 -0.007760 -0.045739 -0.085398 -0.126708 -0.169645 -0.214188 -0.260317 -0.308014 -0.357261 -0.408041 -0.460331 -0.514107 -0.569340 -0.625997 -0.684039 -0.743424 -0.804107 -0.866044 -0.929188 -0.993489 -1.058898 -1.125366 -1.192838 -1.261263 -1.330584 -1.400745 -1.471689 -1.543355 -1.615682 -1.688609 -1.762070 -1.836000 -1.910332 -1.984996 -2.059921 -2.135034 -2.210262 -2.285529 -2.360755 -2.435863 -2.510771 -2.585395 -2.659652 -2.733455 -2.806716 -2.879347 -2.951258 -3.022363 -3.092579 -3.161833 -3.230065 -3.297229 -3.363296 -3.428249 -3.492082 -3.554794 -3.616389 -3.676873 -3.736259 -3.794561 -3.851796 -3.907986 -3.963156 -4.017332 -4.070545 -4.122830 -4.174222 -4.224761 -4.274489 -0.094016 0.108832 0.123844 0.139074 0.154441 0.169751 0.184880 0.199811 0.214436 0.228588 0.242128 0.254948 0.266949 0.278050 0.288137 0.296950 0.304202 0.309609 0.312993 0.314140 0.312709 0.308438 0.301226 0.291018 0.277817 0.261723 0.242946 0.221675 0.198058 0.172211 0.144231 0.114198 0.082180 0.048234 0.012412 -0.025244 -0.064695 -0.105910 -0.148857 -0.193513 -0.239853 -0.287857 -0.337506 -0.388780 -0.441658 -0.496118 -0.552132 -0.609668 -0.668690 -0.729155 -0.791020 -0.854238 -0.918760 -0.984538 -1.051521 -1.119657 -1.188892 -1.259172 -1.330440 -1.402639 -1.475709 -1.549589 -1.624218 -1.699530 -1.775461 -1.851943 -1.928907 -2.006281 -2.083995 -2.161972 -2.240138 -2.318414 -2.396720 -2.474975 -2.553096 -2.630998 -2.708592 -2.785792 -2.862507 -2.938644 -3.014112 -3.088817 -3.162669 -3.235583 -3.307486 -3.378319 -3.448038 -3.516617 -3.584042 -3.650308 -3.715414 -3.779367 -3.842174 -3.903849 -3.964406 -4.023866 -4.082251 -4.139587 -4.195904 -4.251235 -4.305614 -4.359082 -4.411679 -4.463450 -0.077060 0.092199 0.107490 0.122989 0.138694 0.154463 0.170094 0.185506 0.200656 0.215387 0.229504 0.242869 0.255375 0.266935 0.277455 0.286703 0.294373 0.300177 0.303917 0.305405 0.304307 0.300303 0.293242 0.283045 0.269715 0.253330 0.234107 0.212250 0.187920 0.161243 0.132321 0.101242 0.068078 0.032890 -0.004268 -0.043351 -0.084317 -0.127132 -0.171765 -0.218188 -0.266378 -0.316311 -0.367968 -0.421327 -0.476365 -0.533057 -0.591372 -0.651276 -0.712729 -0.775686 -0.840100 -0.905922 -0.973103 -1.041589 -1.111328 -1.182265 -1.254345 -1.327510 -1.401701 -1.476858 -1.552917 -1.629816 -1.707489 -1.785868 -1.864886 -1.944471 -2.024551 -2.105052 -2.185898 -2.267011 -2.348311 -2.429717 -2.511146 -2.592510 -2.673725 -2.754699 -2.835343 -2.915564 -2.995267 -3.074356 -3.152734 -3.230305 -3.306974 -3.382657 -3.457279 -3.530781 -3.603125 -3.674284 -3.744249 -3.813015 -3.880584 -3.946962 -4.012159 -4.076188 -4.139066 -4.200816 -4.261461 -4.321028 -4.379551 -4.437062 -4.493601 -4.549208 -4.603927 -4.657806 -0.059953 0.075439 0.091035 0.106802 0.122785 0.138935 0.155051 0.170952 0.186588 0.201874 0.216572 0.230495 0.243518 0.255550 0.266502 0.276179 0.284259 0.290453 0.294538 0.296339 0.295550 0.291812 0.284899 0.274714 0.261252 0.244573 0.224893 0.202436 0.177374 0.149843 0.119955 0.087801 0.053457 0.016992 -0.021540 -0.062090 -0.104614 -0.149075 -0.195441 -0.243683 -0.293775 -0.345693 -0.399415 -0.454918 -0.512177 -0.571163 -0.631845 -0.694183 -0.758134 -0.823651 -0.890685 -0.959184 -1.029095 -1.100364 -1.172935 -1.246752 -1.321755 -1.397884 -1.475077 -1.553272 -1.632402 -1.712402 -1.793201 -1.874732 -1.956920 -2.039692 -2.122973 -2.206685 -2.290747 -2.375080 -2.459599 -2.544218 -2.628851 -2.713408 -2.797797 -2.881926 -2.965699 -3.049019 -3.131788 -3.213905 -3.295268 -3.375778 -3.455337 -3.533859 -3.611269 -3.687512 -3.762549 -3.836360 -3.908934 -3.980270 -4.050369 -4.119241 -4.186894 -4.253345 -4.318611 -4.382717 -4.445687 -4.507552 -4.568345 -4.628103 -4.686867 -4.744679 -4.801586 -4.857638 -0.042710 0.058532 0.074461 0.090516 0.106758 0.123209 0.139755 0.156149 0.172256 0.188058 0.203331 0.217821 0.231373 0.243888 0.255278 0.265377 0.273862 0.280434 0.284855 0.286951 0.286445 0.282961 0.276194 0.266024 0.252426 0.235448 0.215301 0.192228 0.166415 0.138008 0.107126 0.073866 0.038312 0.000532 -0.039412 -0.081470 -0.125595 -0.171749 -0.219898 -0.270009 -0.322056 -0.376015 -0.431860 -0.489568 -0.549109 -0.610455 -0.673567 -0.738405 -0.804923 -0.873070 -0.942795 -1.014044 -1.086760 -1.160888 -1.236368 -1.313142 -1.391147 -1.470321 -1.550598 -1.631913 -1.714197 -1.797380 -1.881391 -1.966156 -2.051600 -2.137645 -2.224212 -2.311219 -2.398584 -2.486222 -2.574044 -2.661961 -2.749883 -2.837715 -2.925362 -3.012727 -3.099710 -3.186210 -3.272122 -3.357344 -3.441769 -3.525292 -3.607814 -3.689247 -3.769518 -3.848572 -3.926375 -4.002907 -4.078161 -4.152137 -4.224837 -4.296270 -4.366449 -4.435389 -4.503112 -4.569640 -4.635003 -4.699232 -4.762362 -4.824433 -4.885487 -4.945571 -5.004732 -5.063025 -0.025385 0.041479 0.057750 0.074116 0.090628 0.107336 0.124229 0.141091 0.157675 0.173954 0.189780 0.204841 0.218934 0.231943 0.243778 0.254294 0.263184 0.270124 0.274870 0.277243 0.276999 0.273748 0.267124 0.256971 0.243233 0.225950 0.205326 0.181622 0.155038 0.125731 0.093828 0.059433 0.022633 -0.016496 -0.057892 -0.101499 -0.147271 -0.195165 -0.245145 -0.297178 -0.351235 -0.407291 -0.465319 -0.525291 -0.587179 -0.650947 -0.716557 -0.783963 -0.853116 -0.923965 -0.996453 -1.070525 -1.146122 -1.223185 -1.301653 -1.381463 -1.462550 -1.544850 -1.628293 -1.712812 -1.798334 -1.884786 -1.972093 -2.060179 -2.148964 -2.238368 -2.328307 -2.418697 -2.509451 -2.600479 -2.691691 -2.782992 -2.874288 -2.965480 -3.056468 -3.147152 -3.237427 -3.327187 -3.416324 -3.504728 -3.592291 -3.678903 -3.764462 -3.848880 -3.932084 -4.014022 -4.094662 -4.173989 -4.251995 -4.328682 -4.404053 -4.478119 -4.550892 -4.622391 -4.692637 -4.761657 -4.829480 -4.896141 -4.961676 -5.026127 -5.089540 -5.151962 -5.213446 -5.274046 -0.008057 0.024311 0.040889 0.057588 0.074388 0.091348 0.108514 0.125783 0.142845 0.159584 0.175924 0.191552 0.206196 0.219709 0.231998 0.242931 0.252220 0.259520 0.264586 0.267222 0.267211 0.264174 0.257690 0.247553 0.233670 0.216076 0.194964 0.170613 0.143238 0.113007 0.080055 0.044494 0.006416 -0.034101 -0.076988 -0.122188 -0.169650 -0.219332 -0.271194 -0.325201 -0.381325 -0.439535 -0.499805 -0.562104 -0.626401 -0.692657 -0.760831 -0.830874 -0.902733 -0.976355 -1.051680 -1.128650 -1.207205 -1.287281 -1.368815 -1.451741 -1.535993 -1.621501 -1.708194 -1.796000 -1.884845 -1.974651 -2.065341 -2.156835 -2.249048 -2.341898 -2.435298 -2.529158 -2.623388 -2.717895 -2.812584 -2.907355 -3.002111 -3.096749 -3.191164 -3.285251 -3.378901 -3.472002 -3.564444 -3.656111 -3.746889 -3.836666 -3.925338 -4.012815 -4.099026 -4.183923 -4.267474 -4.349668 -4.430500 -4.509970 -4.588084 -4.664853 -4.740291 -4.814419 -4.887259 -4.958839 -5.029192 -5.098352 -5.166361 -5.233261 -5.299101 -5.363930 -5.427805 -5.490782 --0.009205 0.007095 0.023890 0.040916 0.058026 0.075250 0.092656 0.110247 0.127763 0.144962 0.161775 0.177954 0.193154 0.207181 0.219934 0.231285 0.240969 0.248622 0.253999 0.256888 0.257088 0.254240 0.247893 0.237766 0.223733 0.205822 0.184211 0.159197 0.131009 0.099830 0.065801 0.029042 -0.010349 -0.052290 -0.096709 -0.143544 -0.192744 -0.244261 -0.298056 -0.354092 -0.412337 -0.472760 -0.535332 -0.600021 -0.666791 -0.735602 -0.806408 -0.879156 -0.953794 -1.030261 -1.108498 -1.188442 -1.270031 -1.353199 -1.437879 -1.524004 -1.611502 -1.700302 -1.790330 -1.881509 -1.973763 -2.067011 -2.161171 -2.256160 -2.351891 -2.448276 -2.545224 -2.642644 -2.740439 -2.838513 -2.936766 -3.035097 -3.133400 -3.231571 -3.329499 -3.427073 -3.524182 -3.620709 -3.716537 -3.811546 -3.905619 -3.998638 -4.090499 -4.181111 -4.270405 -4.358334 -4.444873 -4.530009 -4.613739 -4.696066 -4.776995 -4.856540 -4.934715 -5.011542 -5.087047 -5.161258 -5.234210 -5.305940 -5.376492 -5.445910 -5.514246 -5.581553 -5.647887 -5.713311 --0.026356 -0.010096 0.006799 0.024095 0.041527 0.059034 0.076680 0.094521 0.112430 0.130092 0.147351 0.164048 0.179804 0.194354 0.207579 0.219354 0.229428 0.237432 0.243109 0.246242 0.246635 0.243953 0.237731 0.227608 0.213419 0.195184 0.173063 0.147368 0.118348 0.086194 0.051060 0.013071 -0.027669 -0.071071 -0.117063 -0.165578 -0.216561 -0.269964 -0.325743 -0.383861 -0.444284 -0.506980 -0.571916 -0.639057 -0.708366 -0.779799 -0.853304 -0.928830 -1.006317 -1.085703 -1.166927 -1.249923 -1.334625 -1.420965 -1.508873 -1.598278 -1.689107 -1.781283 -1.874731 -1.969371 -2.065121 -2.161898 -2.259617 -2.358191 -2.457528 -2.557538 -2.658125 -2.759194 -2.860644 -2.962376 -3.064283 -3.166262 -3.268202 -3.369992 -3.471520 -3.572669 -3.673322 -3.773358 -3.872654 -3.971088 -4.068534 -4.164875 -4.260002 -4.353826 -4.446279 -4.537318 -4.626920 -4.715073 -4.801778 -4.887035 -4.970854 -5.053247 -5.134231 -5.213830 -5.292071 -5.368984 -5.444606 -5.518977 -5.592142 -5.664149 -5.735052 -5.804906 -5.873772 -5.941714 --0.043365 -0.027210 -0.010317 0.007145 0.024881 0.042687 0.060588 0.078649 0.096864 0.114969 0.132670 0.149841 0.166143 0.181223 0.194929 0.207131 0.217593 0.225949 0.231918 0.235283 0.235852 0.233316 0.227201 0.217073 0.202724 0.184158 0.161515 0.135123 0.105247 0.072094 0.035826 -0.003425 -0.045549 -0.090453 -0.138059 -0.188298 -0.241112 -0.296449 -0.354266 -0.414521 -0.477180 -0.542208 -0.609570 -0.679228 -0.751142 -0.825263 -0.901539 -0.979912 -1.060322 -1.142703 -1.226990 -1.313116 -1.401010 -1.490603 -1.581822 -1.674591 -1.768834 -1.864474 -1.961428 -2.059616 -2.158951 -2.259347 -2.360715 -2.462963 -2.565998 -2.669723 -2.774041 -2.878850 -2.984047 -3.089526 -3.195179 -3.300895 -3.406561 -3.512061 -3.617276 -3.722087 -3.826370 -3.930000 -4.032850 -4.134789 -4.235691 -4.335433 -4.433905 -4.531019 -4.626709 -4.720935 -4.813676 -4.904925 -4.994679 -5.082943 -5.169725 -5.255041 -5.338909 -5.421352 -5.502401 -5.582089 -5.660453 -5.737536 -5.813386 -5.888054 -5.961595 -6.034068 -6.105537 -6.176069 --0.060201 -0.044216 -0.027397 -0.009884 0.008087 0.026199 0.044370 0.062653 0.081099 0.099593 0.117737 0.135346 0.152171 0.167783 0.181979 0.194614 0.205465 0.214169 0.220421 0.224012 0.224743 0.222329 0.216300 0.206160 0.191646 0.172740 0.149563 0.122455 0.091703 0.057525 0.020092 -0.020454 -0.063999 -0.110443 -0.159705 -0.211713 -0.266405 -0.323729 -0.383635 -0.446084 -0.511038 -0.578458 -0.648308 -0.720549 -0.795134 -0.872012 -0.951129 -1.032422 -1.115829 -1.201280 -1.288708 -1.378043 -1.469211 -1.562139 -1.656751 -1.752969 -1.850713 -1.949902 -2.050452 -2.152276 -2.255285 -2.359390 -2.464498 -2.570513 -2.677337 -2.784870 -2.893010 -3.001652 -3.110687 -3.220006 -3.329497 -3.439042 -3.548525 -3.657824 -3.766817 -3.875378 -3.983379 -4.090689 -4.197176 -4.302705 -4.407144 -4.510367 -4.612264 -4.712747 -4.811753 -4.909245 -5.005205 -5.099626 -5.192507 -5.283854 -5.373676 -5.461989 -5.548814 -5.634177 -5.718108 -5.800643 -5.881823 -5.961691 -6.040299 -6.117700 -6.193951 -6.269116 -6.343261 -6.416456 --0.076805 -0.061087 -0.044401 -0.026926 -0.008831 0.009562 0.028014 0.046533 0.065175 0.083976 0.102552 0.120579 0.137890 0.154031 0.168722 0.181796 0.193039 0.202089 0.208617 0.212428 0.213307 0.210991 0.205026 0.194867 0.180182 0.160926 0.137202 0.109361 0.077710 0.042479 0.003852 -0.038023 -0.083025 -0.131050 -0.182011 -0.235833 -0.292452 -0.351812 -0.413864 -0.478563 -0.545869 -0.615744 -0.688146 -0.763034 -0.840358 -0.920064 -1.002092 -1.086379 -1.172857 -1.261456 -1.352104 -1.444727 -1.539250 -1.635596 -1.733686 -1.833439 -1.934771 -2.037598 -2.141832 -2.247382 -2.354157 -2.462063 -2.571002 -2.680876 -2.791582 -2.903017 -3.015072 -3.127640 -3.240608 -3.353861 -3.467281 -3.580748 -3.694140 -3.807330 -3.920191 -4.032591 -4.144398 -4.255476 -4.365686 -4.474889 -4.582947 -4.689734 -4.795137 -4.899069 -5.001472 -5.102310 -5.201569 -5.299241 -5.395327 -5.489833 -5.582772 -5.674159 -5.764017 -5.852374 -5.939262 -6.024719 -6.108787 -6.191515 -6.272954 -6.353161 -6.432197 -6.510128 -6.587022 -6.662954 --0.093091 -0.077786 -0.061304 -0.043930 -0.025822 -0.007223 0.011513 0.030280 0.049119 0.068142 0.087110 0.105554 0.123306 0.139964 0.155156 0.168675 0.180313 0.189704 0.196505 0.200527 0.201542 0.199306 0.193382 0.183191 0.168329 0.148712 0.124428 0.095836 0.063262 0.026952 -0.012900 -0.056138 -0.102634 -0.152280 -0.204984 -0.260667 -0.319263 -0.380712 -0.444962 -0.511968 -0.581687 -0.654078 -0.729097 -0.806699 -0.886830 -0.969434 -1.054446 -1.141801 -1.231427 -1.323251 -1.417197 -1.513191 -1.611152 -1.711000 -1.812654 -1.916029 -2.021037 -2.127591 -2.235598 -2.344966 -2.455599 -2.567398 -2.680262 -2.794089 -2.908771 -3.024201 -3.140268 -3.256857 -3.373851 -3.491132 -3.608576 -3.726059 -3.843452 -3.960625 -4.077446 -4.193776 -4.309479 -4.424412 -4.538432 -4.651394 -4.763157 -4.873590 -4.982580 -5.090044 -5.195925 -5.300191 -5.402828 -5.503831 -5.603201 -5.700946 -5.797079 -5.891617 -5.984585 -6.076011 -6.165932 -6.254386 -6.341419 -6.427080 -6.511425 -6.594513 -6.676408 -6.757179 -6.836899 -6.915643 --0.108967 -0.094249 -0.078083 -0.060868 -0.042828 -0.024134 -0.005141 0.013885 0.032933 0.052128 0.071416 0.090273 0.108431 0.125581 0.141276 0.155246 0.167282 0.177010 0.184084 0.188308 0.189447 0.187272 0.181365 0.171131 0.156083 0.136093 0.111236 0.081874 0.048354 0.010938 -0.030171 -0.074807 -0.122835 -0.174143 -0.228633 -0.286225 -0.346846 -0.410437 -0.476941 -0.546313 -0.618506 -0.693476 -0.771177 -0.851559 -0.934567 -1.020139 -1.108210 -1.198707 -1.291558 -1.386686 -1.484012 -1.583457 -1.684940 -1.788376 -1.893680 -2.000764 -2.109538 -2.219909 -2.331782 -2.445060 -2.559644 -2.675430 -2.792313 -2.910187 -3.028942 -3.148463 -3.268636 -3.389341 -3.510458 -3.631862 -3.753426 -3.875019 -3.996508 -4.117758 -4.238630 -4.358983 -4.478672 -4.597550 -4.715468 -4.832275 -4.947827 -5.061990 -5.174652 -5.285730 -5.395172 -5.502948 -5.609045 -5.713460 -5.816195 -5.917258 -6.016663 -6.114430 -6.210585 -6.305159 -6.398189 -6.489716 -6.579789 -6.668460 -6.755787 -6.841832 -6.926662 -7.010349 -7.092969 -7.174602 --0.124358 -0.110391 -0.094695 -0.077718 -0.059803 -0.041124 -0.021944 -0.002661 0.016608 0.035967 0.055486 0.074734 0.093280 0.110883 0.127077 0.141505 0.153942 0.164006 0.171349 0.175767 0.177021 0.174890 0.168979 0.158682 0.143439 0.123065 0.097622 0.067470 0.032980 -0.005571 -0.047967 -0.094036 -0.143635 -0.196646 -0.252968 -0.312515 -0.375213 -0.440998 -0.509814 -0.581609 -0.656337 -0.733949 -0.814398 -0.897630 -0.983585 -1.072198 -1.163400 -1.257116 -1.353270 -1.451781 -1.552568 -1.655549 -1.760638 -1.867749 -1.976791 -2.087674 -2.200303 -2.314583 -2.430414 -2.547695 -2.666323 -2.786191 -2.907190 -3.029208 -3.152130 -3.275840 -3.400216 -3.525135 -3.650471 -3.776095 -3.901875 -4.027674 -4.153355 -4.278776 -4.403794 -4.528261 -4.652028 -4.774941 -4.896846 -5.017587 -5.137014 -5.254992 -5.371410 -5.486186 -5.599273 -5.710641 -5.820282 -5.928191 -6.034371 -6.138833 -6.241590 -6.342666 -6.442087 -6.539886 -6.636102 -6.730781 -6.823971 -6.915728 -7.006113 -7.095191 -7.183033 -7.269713 -7.355310 -7.439910 --0.139228 -0.126131 -0.111075 -0.094454 -0.076725 -0.058138 -0.038880 -0.019362 0.000134 0.019669 0.039346 0.058935 0.077863 0.095876 0.112558 0.127446 0.140287 0.150690 0.158299 0.162902 0.164260 0.162160 0.156225 0.145844 0.130395 0.109625 0.083580 0.052619 0.017136 -0.022578 -0.066295 -0.113832 -0.165041 -0.219798 -0.277996 -0.339547 -0.404373 -0.472407 -0.543590 -0.617869 -0.695193 -0.775513 -0.858777 -0.944926 -1.033898 -1.125626 -1.220035 -1.317047 -1.416582 -1.518558 -1.622889 -1.729489 -1.838271 -1.949143 -2.062012 -2.176784 -2.293360 -2.411641 -2.531523 -2.652903 -2.775671 -2.899717 -3.024927 -3.151186 -3.278375 -3.406370 -3.535047 -3.664278 -3.793932 -3.923874 -4.053967 -4.184069 -4.314038 -4.443726 -4.572985 -4.701660 -4.829597 -4.956637 -5.082619 -5.207381 -5.330771 -5.452651 -5.572910 -5.691471 -5.808287 -5.923333 -6.036600 -6.148086 -6.257794 -6.365736 -6.471927 -6.576391 -6.679157 -6.780260 -6.879742 -6.977650 -7.074035 -7.168957 -7.262478 -7.354667 -7.445598 -7.535348 -7.624002 -7.711647 --0.153576 -0.141412 -0.127145 -0.111036 -0.093573 -0.075135 -0.055908 -0.036218 -0.016494 0.003229 0.023029 0.042880 0.062184 0.080568 0.097716 0.113065 0.126313 0.137056 0.144928 0.149708 0.151164 0.149080 0.143099 0.132613 0.116946 0.095769 0.069107 0.037317 0.000814 -0.040091 -0.085161 -0.134203 -0.187062 -0.243606 -0.303727 -0.367331 -0.434337 -0.504674 -0.578282 -0.655105 -0.735089 -0.818181 -0.904326 -0.993463 -1.085525 -1.180440 -1.278132 -1.378518 -1.481515 -1.587037 -1.694995 -1.805301 -1.917862 -2.032583 -2.149370 -2.268121 -2.388737 -2.511112 -2.635141 -2.760714 -2.887719 -3.016040 -3.145560 -3.276159 -3.407712 -3.540092 -3.673170 -3.806812 -3.940883 -4.075241 -4.209746 -4.344250 -4.478604 -4.612656 -4.746251 -4.879230 -5.011432 -5.142690 -5.272840 -5.401713 -5.529154 -5.655023 -5.779210 -5.901642 -6.022274 -6.141083 -6.258062 -6.373209 -6.486528 -6.598032 -6.707738 -6.815672 -6.921864 -7.026352 -7.129179 -7.230395 -7.330055 -7.428219 -7.524955 -7.620334 -7.714433 -7.807333 -7.899122 -7.989891 --0.167423 -0.156214 -0.142836 -0.127402 -0.110324 -0.092094 -0.072980 -0.053217 -0.033283 -0.013366 0.006561 0.026585 0.046241 0.064970 0.082551 0.098360 0.112016 0.123103 0.131233 0.136184 0.137729 0.135648 0.129600 0.118985 0.103088 0.081491 0.054198 0.021558 -0.015989 -0.058116 -0.104572 -0.155155 -0.209703 -0.268080 -0.330170 -0.395876 -0.465114 -0.537810 -0.613901 -0.693328 -0.776035 -0.861966 -0.951062 -1.043256 -1.138480 -1.236659 -1.337710 -1.441549 -1.548088 -1.657239 -1.768909 -1.883006 -1.999434 -2.118095 -2.238889 -2.361713 -2.486462 -2.613027 -2.741298 -2.871161 -3.002500 -3.135195 -3.269124 -3.404161 -3.540179 -3.677044 -3.814623 -3.952777 -4.091365 -4.230241 -4.369257 -4.508261 -4.647100 -4.785614 -4.923642 -5.061021 -5.197581 -5.333153 -5.467562 -5.600637 -5.732218 -5.862164 -5.990369 -6.116759 -6.241294 -6.363953 -6.484730 -6.603622 -6.720637 -6.835786 -6.949090 -7.060576 -7.170275 -7.278229 -7.384482 -7.489087 -7.592101 -7.693588 -7.793619 -7.892267 -7.989614 -8.085744 -8.180748 -8.274722 --0.180802 -0.170540 -0.158102 -0.143479 -0.126940 -0.108997 -0.090055 -0.070330 -0.050231 -0.030122 -0.010053 0.010075 0.030030 0.049095 0.067064 0.083325 0.097393 0.108825 0.117209 0.122327 0.123954 0.121861 0.115725 0.104961 0.088817 0.066787 0.038847 0.005336 -0.033281 -0.076659 -0.124534 -0.176696 -0.232975 -0.293227 -0.357333 -0.425191 -0.496714 -0.571826 -0.650459 -0.732552 -0.818047 -0.906883 -0.998997 -1.094321 -1.192781 -1.294298 -1.398786 -1.506158 -1.616321 -1.729185 -1.844653 -1.962628 -2.083013 -2.205704 -2.330597 -2.457587 -2.586563 -2.717414 -2.850024 -2.984275 -3.120047 -3.257215 -3.395653 -3.535230 -3.675813 -3.817265 -3.959447 -4.102214 -4.245420 -4.388914 -4.532543 -4.676149 -4.819571 -4.962646 -5.105207 -5.247082 -5.388097 -5.528075 -5.666838 -5.804207 -5.940018 -6.074132 -6.206442 -6.336880 -6.465406 -6.592004 -6.716665 -6.839389 -6.960183 -7.079063 -7.196049 -7.311170 -7.424460 -7.535961 -7.645721 -7.753796 -7.860246 -7.965137 -8.068543 -8.170542 -8.271217 -8.370658 -8.468959 -8.566219 --0.193765 -0.184413 -0.172929 -0.159209 -0.143365 -0.125824 -0.107109 -0.087512 -0.067335 -0.047044 -0.026822 -0.006621 0.013556 0.032948 0.051260 0.067958 0.082438 0.094218 0.102853 0.108135 0.109834 0.107718 0.101473 0.090538 0.074129 0.051654 0.023050 -0.011353 -0.051066 -0.095725 -0.145054 -0.198833 -0.256883 -0.319055 -0.385225 -0.455286 -0.529148 -0.606732 -0.687967 -0.772789 -0.861135 -0.952944 -1.048147 -1.146673 -1.248443 -1.353374 -1.461379 -1.572364 -1.686235 -1.802895 -1.922248 -2.044190 -2.168621 -2.295433 -2.424520 -2.555770 -2.689069 -2.824302 -2.961349 -3.100088 -3.240392 -3.382134 -3.525182 -3.669401 -3.814652 -3.960794 -4.107680 -4.255163 -4.403090 -4.551306 -4.699649 -4.847958 -4.996065 -5.143801 -5.290993 -5.437462 -5.583030 -5.727511 -5.870720 -6.012475 -6.152609 -6.290981 -6.427488 -6.562063 -6.694671 -6.825295 -6.953928 -7.080571 -7.205232 -7.327928 -7.448680 -7.567520 -7.684484 -7.799616 -7.912967 -8.024594 -8.134562 -8.242939 -8.349802 -8.455233 -8.559319 -8.662152 -8.763832 -8.864462 +0.007251 0.008302 0.009366 0.010442 0.011532 0.012636 0.013754 0.014885 0.016030 0.017189 0.018361 0.019546 0.020743 0.021952 0.023171 0.024400 0.025639 0.026885 0.028138 0.029398 0.030661 0.031929 0.033197 0.034466 0.035734 0.036998 0.038256 0.039507 0.040747 0.041975 0.043187 0.044380 0.045550 0.046695 0.047810 0.048892 0.049936 0.050939 0.051897 0.052806 0.053662 0.054462 0.055201 0.055876 0.056484 0.057021 0.057483 0.057868 0.058172 0.058394 0.058531 0.058582 0.058546 0.058421 0.058209 0.057909 0.057521 0.057046 0.056485 0.055839 +0.019436 0.021443 0.023469 0.025510 0.027566 0.029636 0.031716 0.033805 0.035901 0.038002 0.040106 0.042211 0.044314 0.046412 0.048503 0.050585 0.052654 0.054706 0.056737 0.058743 0.060719 0.062658 0.064557 0.066407 0.068203 0.069938 0.071605 0.073198 0.074711 0.076136 0.077467 0.078698 0.079822 0.080834 0.081726 0.082495 0.083134 0.083639 0.084008 0.084237 0.084324 0.084268 0.084069 0.083726 0.083239 0.082610 0.081840 0.080933 0.079890 0.078716 0.077416 0.075994 0.074455 0.072805 0.071049 0.069193 0.067242 0.065200 0.063073 0.060866 +0.040873 0.044129 0.047384 0.050635 0.053880 0.057115 0.060337 0.063542 0.066726 0.069884 0.073010 0.076098 0.079139 0.082126 0.085049 0.087899 0.090666 0.093340 0.095911 0.098368 0.100701 0.102899 0.104952 0.106849 0.108582 0.110139 0.111511 0.112690 0.113669 0.114441 0.115001 0.115345 0.115469 0.115371 0.115051 0.114509 0.113747 0.112767 0.111576 0.110178 0.108583 0.106797 0.104831 0.102693 0.100393 0.097941 0.095345 0.092615 0.089759 0.086785 0.083701 0.080514 0.077230 0.073856 0.070398 0.066860 0.063247 0.059563 0.055811 0.051994 +0.071922 0.076589 0.081223 0.085816 0.090360 0.094847 0.099264 0.103600 0.107843 0.111977 0.115989 0.119865 0.123588 0.127145 0.130519 0.133695 0.136658 0.139392 0.141883 0.144115 0.146076 0.147754 0.149137 0.150216 0.150984 0.151432 0.151558 0.151359 0.150835 0.149990 0.148829 0.147361 0.145596 0.143548 0.141230 0.138655 0.135840 0.132798 0.129545 0.126096 0.122463 0.118661 0.114703 0.110599 0.106360 0.101997 0.097519 0.092933 0.088247 0.083467 0.078597 0.073641 0.068602 0.063484 0.058288 0.053017 0.047675 0.042264 0.036788 0.031250 +0.112210 0.118375 0.124428 0.130352 0.136127 0.141734 0.147153 0.152363 0.157342 0.162070 0.166524 0.170684 0.174528 0.178034 0.181184 0.183957 0.186337 0.188308 0.189854 0.190964 0.191631 0.191849 0.191617 0.190940 0.189824 0.188282 0.186328 0.183979 0.181256 0.178178 0.174767 0.171044 0.167032 0.162751 0.158221 0.153463 0.148494 0.143332 0.137993 0.132492 0.126842 0.121056 0.115143 0.109111 0.102966 0.096714 0.090358 0.083901 0.077345 0.070692 0.063943 0.057100 0.050165 0.043140 0.036027 0.028832 0.021558 0.014213 0.006806 -0.000653 +0.160744 0.168267 0.175535 0.182519 0.189193 0.195526 0.201491 0.207058 0.212200 0.216888 0.221097 0.224801 0.227976 0.230601 0.232657 0.234131 0.235015 0.235308 0.235013 0.234140 0.232702 0.230717 0.228208 0.225199 0.221720 0.217797 0.213461 0.208740 0.203662 0.198255 0.192545 0.186558 0.180317 0.173846 0.167165 0.160292 0.153244 0.146035 0.138678 0.131180 0.123550 0.115792 0.107909 0.099902 0.091772 0.083520 0.075145 0.066647 0.058026 0.049283 0.040419 0.031438 0.022347 0.013152 0.003863 -0.005508 -0.014946 -0.024435 -0.033958 -0.043493 +0.215508 0.224004 0.232038 0.239576 0.246580 0.253015 0.258847 0.264043 0.268572 0.272406 0.275521 0.277901 0.279539 0.280432 0.280586 0.280014 0.278731 0.276761 0.274129 0.270868 0.267014 0.262602 0.257668 0.252249 0.246378 0.240090 0.233418 0.226394 0.219048 0.211410 0.203506 0.195359 0.186993 0.178425 0.169673 0.160749 0.151662 0.142418 0.133020 0.123469 0.113764 0.103906 0.093892 0.083719 0.073386 0.062891 0.052235 0.041419 0.030445 0.019320 0.008053 -0.003345 -0.014861 -0.026477 -0.038173 -0.049925 -0.061710 -0.073498 -0.085261 -0.096968 +0.273409 0.282253 0.290382 0.297755 0.304333 0.310083 0.314975 0.318988 0.322107 0.324326 0.325649 0.326087 0.325656 0.324378 0.322281 0.319398 0.315769 0.311437 0.306444 0.300831 0.294638 0.287905 0.280671 0.272974 0.264850 0.256336 0.247466 0.238272 0.228784 0.219029 0.209029 0.198805 0.188372 0.177741 0.166917 0.155902 0.144698 0.133303 0.121714 0.109928 0.097940 0.085748 0.073347 0.060735 0.047912 0.034879 0.021640 0.008203 -0.005422 -0.019220 -0.033172 -0.047256 -0.061446 -0.075711 -0.090018 -0.104333 -0.118617 -0.132829 -0.146928 -0.160869 +0.329940 0.338368 0.345825 0.352282 0.357721 0.362133 0.365512 0.367860 0.369187 0.369512 0.368855 0.367240 0.364705 0.361291 0.357044 0.352010 0.346232 0.339754 0.332617 0.324863 0.316536 0.307675 0.298322 0.288517 0.278299 0.267705 0.256768 0.245519 0.233983 0.222182 0.210130 0.197837 0.185307 0.172540 0.159535 0.146288 0.132794 0.119048 0.105043 0.090773 0.076235 0.061423 0.046337 0.030977 0.015346 -0.000546 -0.016689 -0.033063 -0.049648 -0.066415 -0.083330 -0.100357 -0.117454 -0.134579 -0.151684 -0.168719 -0.185632 -0.202369 -0.218873 -0.235087 +0.378913 0.386425 0.392827 0.398114 0.402281 0.405323 0.407245 0.408065 0.407807 0.406488 0.404144 0.400819 0.396553 0.391386 0.385362 0.378526 0.370919 0.362586 0.353572 0.343921 0.333678 0.322889 0.311600 0.299852 0.287685 0.275134 0.262231 0.249001 0.235460 0.221618 0.207478 0.193039 0.178297 0.163247 0.147882 0.132194 0.116177 0.099822 0.083123 0.066076 0.048675 0.030921 0.012815 -0.005635 -0.024416 -0.043509 -0.062889 -0.082523 -0.102373 -0.122393 -0.142536 -0.162749 -0.182976 -0.203160 -0.223236 -0.243141 -0.262804 -0.282158 -0.301131 -0.319656 +0.414137 0.420923 0.426640 0.431255 0.434735 0.437070 0.438252 0.438283 0.437168 0.434917 0.431569 0.427154 0.421719 0.415304 0.407950 0.399707 0.390623 0.380747 0.370132 0.358830 0.346894 0.334376 0.321325 0.307784 0.293792 0.279381 0.264573 0.249380 0.233806 0.217850 0.201507 0.184770 0.167634 0.150088 0.132125 0.113737 0.094914 0.075652 0.055943 0.035785 0.015178 -0.005873 -0.027358 -0.049257 -0.071544 -0.094185 -0.117134 -0.140342 -0.163753 -0.187307 -0.210939 -0.234582 -0.258162 -0.281605 -0.304829 -0.327753 -0.350292 -0.372363 -0.393882 -0.414772 +0.433494 0.439913 0.445408 0.449981 0.453612 0.456238 0.457766 0.458083 0.457122 0.454892 0.451418 0.446691 0.440746 0.433649 0.425459 0.416235 0.406045 0.394952 0.383025 0.370328 0.356925 0.342872 0.328219 0.313011 0.297279 0.281045 0.264317 0.247096 0.229380 0.211163 0.192438 0.173198 0.153433 0.133136 0.112299 0.090913 0.068972 0.046470 0.023405 -0.000222 -0.024405 -0.049127 -0.074363 -0.100080 -0.126232 -0.152762 -0.179610 -0.206707 -0.233981 -0.261356 -0.288748 -0.316072 -0.343237 -0.370149 -0.396710 -0.422818 -0.448374 -0.473280 -0.497442 -0.520782 +0.436275 0.443439 0.449825 0.455382 0.460056 0.463687 0.466253 0.467690 0.467887 0.466707 0.463986 0.459763 0.454086 0.446952 0.438469 0.428731 0.417833 0.405869 0.392926 0.379087 0.364422 0.348995 0.332858 0.316050 0.298591 0.280490 0.261751 0.242373 0.222351 0.201680 0.180355 0.158368 0.135712 0.112379 0.088363 0.063658 0.038258 0.012161 -0.014631 -0.042108 -0.070251 -0.099029 -0.128399 -0.158304 -0.188679 -0.219448 -0.250533 -0.281847 -0.313300 -0.344796 -0.376234 -0.407508 -0.438507 -0.469117 -0.499220 -0.528696 -0.557428 -0.585307 -0.612238 -0.638143 +0.424080 0.432796 0.440891 0.448259 0.454815 0.460468 0.465074 0.468426 0.470360 0.470803 0.469685 0.466824 0.462112 0.455670 0.447500 0.437748 0.426558 0.414065 0.400386 0.385624 0.369866 0.353182 0.335620 0.317209 0.297965 0.277897 0.257011 0.235307 0.212785 0.189441 0.165271 0.140271 0.114436 0.087761 0.060240 0.031870 0.002647 -0.027424 -0.058332 -0.090055 -0.122556 -0.155785 -0.189675 -0.224147 -0.259116 -0.294489 -0.330166 -0.366042 -0.402007 -0.437945 -0.473733 -0.509244 -0.544346 -0.578902 -0.612770 -0.645814 -0.677901 -0.708917 -0.738770 -0.767393 +0.403225 0.412963 0.422321 0.431343 0.440019 0.448056 0.455114 0.460971 0.465482 0.468314 0.469256 0.468275 0.465301 0.460143 0.452924 0.443693 0.432637 0.419947 0.405791 0.390300 0.373578 0.355699 0.336709 0.316641 0.295516 0.273351 0.250155 0.225937 0.200697 0.174439 0.147161 0.118863 0.089543 0.059197 0.027824 -0.004579 -0.038007 -0.072450 -0.107881 -0.144260 -0.181531 -0.219615 -0.258423 -0.297856 -0.337808 -0.378166 -0.418810 -0.459614 -0.500446 -0.541166 -0.581631 -0.621689 -0.661181 -0.699946 -0.737821 -0.774649 -0.810291 -0.844635 -0.877597 -0.909133 +0.378667 0.389585 0.400003 0.409990 0.419627 0.429004 0.438155 0.446714 0.453992 0.459653 0.463410 0.464879 0.463981 0.460736 0.454979 0.446815 0.436339 0.423789 0.409399 0.393343 0.375743 0.356685 0.336229 0.314423 0.291301 0.266889 0.241205 0.214263 0.186074 0.156644 0.125979 0.094080 0.060950 0.026586 -0.009009 -0.045832 -0.083872 -0.123102 -0.163480 -0.204942 -0.247402 -0.290759 -0.334900 -0.379707 -0.425051 -0.470797 -0.516804 -0.562923 -0.608998 -0.654865 -0.700354 -0.745285 -0.789472 -0.832727 -0.874863 -0.915713 -0.955135 -0.993026 -1.029325 -1.064008 +0.350359 0.362876 0.374771 0.386099 0.396930 0.407354 0.417478 0.427417 0.437099 0.445720 0.452466 0.456948 0.458747 0.457715 0.453923 0.447265 0.437825 0.425762 0.411368 0.394878 0.376451 0.356206 0.334231 0.310593 0.285343 0.258521 0.230155 0.200270 0.168885 0.136012 0.101662 0.065842 0.028556 -0.010194 -0.050401 -0.092055 -0.135131 -0.179584 -0.225348 -0.272328 -0.320412 -0.369476 -0.419385 -0.469998 -0.521164 -0.572724 -0.624514 -0.676359 -0.728077 -0.779475 -0.830353 -0.880500 -0.929702 -0.977741 -1.024413 -1.069544 -1.112999 -1.154693 -1.194592 -1.232690 +0.318190 0.332607 0.346332 0.359371 0.371772 0.383615 0.394998 0.406044 0.416885 0.427526 0.437225 0.444841 0.449740 0.451498 0.449954 0.445204 0.437173 0.425950 0.411769 0.394958 0.375746 0.354299 0.330742 0.305167 0.277648 0.248240 0.216989 0.183928 0.149085 0.112482 0.074133 0.034051 -0.007756 -0.051282 -0.096514 -0.143429 -0.191983 -0.242109 -0.293708 -0.346657 -0.400817 -0.456043 -0.512175 -0.569049 -0.626491 -0.684315 -0.742331 -0.800334 -0.858113 -0.915444 -0.972094 -1.027818 -1.082370 -1.135505 -1.187008 -1.236703 -1.284474 -1.330263 -1.374056 -1.415869 +0.282822 0.298942 0.314588 0.329613 0.343918 0.357530 0.370530 0.383029 0.395163 0.407061 0.418674 0.429175 0.437283 0.442162 0.443350 0.440756 0.434457 0.424362 0.410621 0.393606 0.373648 0.350980 0.325771 0.298148 0.268209 0.236032 0.201678 0.165194 0.126618 0.085980 0.043300 -0.001403 -0.048118 -0.096831 -0.147520 -0.200143 -0.254635 -0.310895 -0.368793 -0.428177 -0.488887 -0.550750 -0.613585 -0.677200 -0.741394 -0.805954 -0.870659 -0.935273 -0.999552 -1.063236 -1.126057 -1.187734 -1.247986 -1.306549 -1.363197 -1.417769 -1.470173 -1.520378 -1.568390 -1.614248 +0.244861 0.262731 0.280050 0.296905 0.313269 0.328944 0.343892 0.358185 0.371942 0.385299 0.398346 0.410862 0.421836 0.429927 0.434161 0.434083 0.429698 0.420989 0.407920 0.390830 0.370170 0.346257 0.319321 0.289528 0.257011 0.221869 0.184184 0.144016 0.101416 0.056420 0.009059 -0.040646 -0.092674 -0.147004 -0.203600 -0.262396 -0.323297 -0.386167 -0.450843 -0.517152 -0.584905 -0.653905 -0.723943 -0.794801 -0.866246 -0.938036 -1.009914 -1.081611 -1.152846 -1.223322 -1.292729 -1.360751 -1.427073 -1.491412 -1.553547 -1.613337 -1.670720 -1.725689 -1.778272 -1.828529 +0.204978 0.224212 0.243295 0.261926 0.280083 0.297837 0.314978 0.331373 0.347072 0.362189 0.376832 0.390981 0.404146 0.415110 0.422494 0.425222 0.422989 0.415840 0.403651 0.386629 0.365310 0.340129 0.311383 0.279294 0.244029 0.205717 0.164458 0.120331 0.073398 0.023706 -0.028706 -0.083809 -0.141575 -0.201972 -0.264940 -0.330388 -0.398183 -0.468153 -0.540109 -0.613851 -0.689163 -0.765822 -0.843589 -0.922213 -1.001430 -1.080963 -1.160518 -1.239790 -1.318456 -1.396179 -1.472606 -1.547381 -1.620157 -1.690644 -1.758633 -1.824012 -1.886748 -1.946856 -2.004386 -2.059420 +0.164551 0.184593 0.204712 0.224954 0.244978 0.264574 0.283811 0.302507 0.320432 0.337604 0.354104 0.369965 0.384950 0.398261 0.408505 0.414191 0.414375 0.408923 0.397797 0.380994 0.359066 0.332586 0.301946 0.267425 0.229233 0.187531 0.142443 0.094067 0.042477 -0.012265 -0.070114 -0.131032 -0.194981 -0.261908 -0.331731 -0.404323 -0.479509 -0.557090 -0.636848 -0.718554 -0.801965 -0.886827 -0.972868 -1.059803 -1.147334 -1.235143 -1.322900 -1.410256 -1.496848 -1.582290 -1.666187 -1.748139 -1.827775 -1.904803 -1.979040 -2.050406 -2.118894 -2.184539 -2.247415 -2.307624 +0.123406 0.144468 0.165506 0.186668 0.208120 0.229617 0.250782 0.271623 0.291942 0.311426 0.330045 0.347817 0.364619 0.379908 0.392577 0.401098 0.403851 0.400301 0.390360 0.373912 0.351426 0.323619 0.290990 0.253893 0.212584 0.167262 0.118076 0.065145 0.008560 -0.051605 -0.115295 -0.182460 -0.253050 -0.326990 -0.404164 -0.484403 -0.567499 -0.653221 -0.741323 -0.831547 -0.923619 -1.017248 -1.112130 -1.207943 -1.304348 -1.400989 -1.497491 -1.593462 -1.688490 -1.782143 -1.873974 -1.963544 -2.050464 -2.134454 -2.215360 -2.293136 -2.367797 -2.439399 -2.508038 -2.573839 +0.081919 0.103634 0.125711 0.147921 0.170327 0.193145 0.216226 0.239077 0.261618 0.283569 0.304542 0.324445 0.343187 0.360356 0.375127 0.386081 0.391476 0.389982 0.381325 0.365364 0.342377 0.313209 0.278492 0.238664 0.194038 0.144852 0.091286 0.033481 -0.028452 -0.094428 -0.164378 -0.238241 -0.315948 -0.397396 -0.482428 -0.570837 -0.662379 -0.756794 -0.853805 -0.953122 -1.054435 -1.157420 -1.261731 -1.367008 -1.472870 -1.578917 -1.684728 -1.789862 -1.893856 -1.996225 -2.096473 -2.194120 -2.288771 -2.380165 -2.468189 -2.552820 -2.634096 -2.712096 -2.786934 -2.858762 +0.041584 0.062923 0.085346 0.108540 0.132094 0.155946 0.180334 0.205136 0.229751 0.254023 0.277509 0.299754 0.320600 0.339700 0.356398 0.369494 0.377301 0.377960 0.370718 0.355330 0.331902 0.301333 0.264422 0.221699 0.173544 0.120239 0.061998 -0.001012 -0.068663 -0.140851 -0.217497 -0.298524 -0.383839 -0.473303 -0.566719 -0.663837 -0.764382 -0.868062 -0.974568 -1.083573 -1.194731 -1.307677 -1.422028 -1.537377 -1.653298 -1.769346 -1.885048 -1.999911 -2.113418 -2.225027 -2.334189 -2.440393 -2.543243 -2.642514 -2.738124 -2.830078 -2.918432 -3.003286 -3.084779 -3.163089 +0.003397 0.023610 0.045453 0.068758 0.093229 0.118304 0.143805 0.169965 0.196595 0.222991 0.248906 0.273657 0.296781 0.317923 0.336522 0.351561 0.361457 0.364282 0.358550 0.343798 0.319976 0.287966 0.248745 0.202955 0.151048 0.093358 0.030135 -0.038426 -0.112176 -0.190995 -0.274788 -0.363461 -0.456888 -0.554892 -0.657231 -0.763616 -0.873742 -0.987280 -1.103887 -1.223197 -1.344823 -1.468360 -1.593379 -1.719428 -1.846033 -1.972695 -2.098890 -2.224068 -2.347652 -2.469041 -2.587633 -2.702891 -2.814435 -2.922076 -3.025765 -3.125528 -3.221441 -3.313625 -3.402247 -3.487511 # Thrust coefficient -0.123429 0.123924 0.124425 0.124929 0.125436 0.125945 0.126455 0.126966 0.127475 0.127984 0.128489 0.128991 0.129489 0.129980 0.130464 0.130941 0.131408 0.131864 0.132309 0.132742 0.133160 0.133564 0.133951 0.134321 0.134672 0.135004 0.135315 0.135604 0.135869 0.136110 0.136325 0.136514 0.136674 0.136806 0.136906 0.136976 0.137012 0.137014 0.136982 0.136914 0.136809 0.136666 0.136485 0.136265 0.136005 0.135704 0.135362 0.134979 0.134555 0.134088 0.133579 0.133027 0.132432 0.131795 0.131114 0.130391 0.129625 0.128816 0.127964 0.127071 0.126136 0.125159 0.124142 0.123084 0.121987 0.120852 0.119678 0.118468 0.117221 0.115939 0.114623 0.113274 0.111892 0.110479 0.109035 0.107562 0.106061 0.104532 0.102976 0.101394 0.099787 0.098156 0.096502 0.094825 0.093126 0.091406 0.089666 0.087907 0.086129 0.084333 0.082520 0.080690 0.078845 0.076984 0.075109 0.073221 0.071319 0.069404 0.067477 0.065539 0.063590 0.061631 0.059661 0.057682 -0.144266 0.144902 0.145537 0.146170 0.146799 0.147424 0.148043 0.148655 0.149258 0.149851 0.150432 0.151001 0.151555 0.152094 0.152616 0.153119 0.153602 0.154064 0.154503 0.154917 0.155305 0.155667 0.155999 0.156301 0.156571 0.156808 0.157009 0.157175 0.157302 0.157390 0.157438 0.157444 0.157406 0.157324 0.157197 0.157023 0.156802 0.156532 0.156213 0.155845 0.155426 0.154956 0.154435 0.153862 0.153237 0.152560 0.151830 0.151048 0.150213 0.149326 0.148388 0.147397 0.146356 0.145264 0.144122 0.142931 0.141693 0.140407 0.139075 0.137697 0.136276 0.134813 0.133308 0.131762 0.130178 0.128556 0.126897 0.125203 0.123474 0.121712 0.119918 0.118094 0.116239 0.114356 0.112445 0.110507 0.108543 0.106555 0.104543 0.102508 0.100452 0.098375 0.096278 0.094161 0.092027 0.089875 0.087706 0.085521 0.083322 0.081107 0.078879 0.076638 0.074384 0.072118 0.069840 0.067551 0.065252 0.062943 0.060624 0.058296 0.055960 0.053615 0.051264 0.048906 -0.167635 0.168386 0.169129 0.169860 0.170579 0.171283 0.171971 0.172641 0.173292 0.173921 0.174528 0.175109 0.175664 0.176191 0.176687 0.177151 0.177581 0.177975 0.178331 0.178648 0.178923 0.179155 0.179342 0.179482 0.179574 0.179616 0.179605 0.179542 0.179424 0.179251 0.179020 0.178731 0.178383 0.177975 0.177507 0.176977 0.176385 0.175730 0.175012 0.174232 0.173388 0.172481 0.171511 0.170479 0.169384 0.168228 0.167011 0.165734 0.164398 0.163004 0.161554 0.160048 0.158488 0.156877 0.155214 0.153501 0.151741 0.149934 0.148083 0.146187 0.144250 0.142272 0.140255 0.138200 0.136108 0.133982 0.131821 0.129629 0.127405 0.125151 0.122869 0.120559 0.118223 0.115863 0.113478 0.111070 0.108641 0.106191 0.103721 0.101232 0.098726 0.096202 0.093662 0.091106 0.088536 0.085951 0.083353 0.080741 0.078117 0.075481 0.072834 0.070176 0.067507 0.064829 0.062141 0.059445 0.056741 0.054029 0.051310 0.048585 0.045855 0.043120 0.040380 0.037638 -0.193367 0.194197 0.195006 0.195792 0.196553 0.197287 0.197992 0.198665 0.199305 0.199909 0.200474 0.200999 0.201482 0.201919 0.202309 0.202650 0.202939 0.203174 0.203353 0.203474 0.203535 0.203535 0.203470 0.203341 0.203144 0.202880 0.202545 0.202140 0.201663 0.201113 0.200490 0.199792 0.199020 0.198172 0.197250 0.196252 0.195180 0.194033 0.192813 0.191519 0.190154 0.188717 0.187211 0.185637 0.183996 0.182290 0.180521 0.178691 0.176800 0.174852 0.172847 0.170789 0.168677 0.166516 0.164305 0.162047 0.159743 0.157396 0.155007 0.152577 0.150109 0.147603 0.145062 0.142487 0.139880 0.137241 0.134573 0.131877 0.129155 0.126406 0.123634 0.120838 0.118021 0.115183 0.112325 0.109448 0.106554 0.103642 0.100714 0.097771 0.094812 0.091839 0.088852 0.085852 0.082840 0.079815 0.076779 0.073732 0.070674 0.067607 0.064530 0.061445 0.058352 0.055252 0.052144 0.049031 0.045913 0.042790 0.039664 0.036535 0.033404 0.030272 0.027141 0.024011 -0.221268 0.222125 0.222948 0.223732 0.224475 0.225175 0.225828 0.226433 0.226985 0.227484 0.227925 0.228306 0.228625 0.228879 0.229065 0.229181 0.229226 0.229196 0.229089 0.228904 0.228639 0.228293 0.227862 0.227348 0.226747 0.226060 0.225286 0.224423 0.223473 0.222434 0.221308 0.220093 0.218792 0.217405 0.215933 0.214377 0.212738 0.211020 0.209222 0.207347 0.205398 0.203376 0.201283 0.199122 0.196895 0.194604 0.192251 0.189838 0.187367 0.184841 0.182261 0.179630 0.176950 0.174222 0.171450 0.168634 0.165777 0.162880 0.159946 0.156976 0.153972 0.150936 0.147869 0.144772 0.141649 0.138499 0.135324 0.132126 0.128906 0.125664 0.122402 0.119121 0.115822 0.112506 0.109172 0.105823 0.102458 0.099079 0.095685 0.092278 0.088858 0.085426 0.081981 0.078526 0.075060 0.071583 0.068098 0.064603 0.061100 0.057589 0.054072 0.050548 0.047019 0.043486 0.039949 0.036409 0.032868 0.029326 0.025785 0.022246 0.018710 0.015180 0.011655 0.008139 -0.251110 0.251931 0.252697 0.253405 0.254053 0.254636 0.255153 0.255599 0.255971 0.256267 0.256484 0.256618 0.256668 0.256629 0.256501 0.256281 0.255966 0.255555 0.255046 0.254438 0.253729 0.252919 0.252007 0.250993 0.249876 0.248657 0.247337 0.245915 0.244394 0.242775 0.241058 0.239246 0.237341 0.235344 0.233259 0.231088 0.228832 0.226495 0.224080 0.221588 0.219022 0.216385 0.213680 0.210908 0.208073 0.205177 0.202222 0.199211 0.196147 0.193031 0.189866 0.186655 0.183399 0.180101 0.176762 0.173386 0.169974 0.166528 0.163049 0.159540 0.156002 0.152436 0.148845 0.145230 0.141591 0.137930 0.134248 0.130547 0.126826 0.123088 0.119332 0.115559 0.111771 0.107967 0.104148 0.100316 0.096470 0.092611 0.088739 0.084856 0.080962 0.077057 0.073141 0.069216 0.065283 0.061340 0.057391 0.053434 0.049472 0.045505 0.041533 0.037559 0.033583 0.029606 0.025630 0.021657 0.017688 0.013724 0.009767 0.005819 0.001881 -0.002044 -0.005954 -0.009847 -0.282623 0.283322 0.283945 0.284487 0.284944 0.285313 0.285591 0.285773 0.285858 0.285841 0.285720 0.285492 0.285155 0.284707 0.284146 0.283470 0.282678 0.281769 0.280743 0.279599 0.278337 0.276959 0.275465 0.273855 0.272132 0.270296 0.268351 0.266297 0.264138 0.261877 0.259515 0.257056 0.254502 0.251857 0.249124 0.246306 0.243405 0.240425 0.237369 0.234239 0.231038 0.227771 0.224438 0.221044 0.217591 0.214081 0.210519 0.206905 0.203243 0.199536 0.195785 0.191993 0.188162 0.184295 0.180393 0.176459 0.172494 0.168499 0.164478 0.160430 0.156358 0.152263 0.148145 0.144007 0.139849 0.135672 0.131477 0.127264 0.123034 0.118789 0.114528 0.110252 0.105962 0.101658 0.097341 0.093011 0.088669 0.084316 0.079951 0.075576 0.071191 0.066796 0.062393 0.057983 0.053565 0.049142 0.044714 0.040282 0.035848 0.031413 0.026978 0.022545 0.018117 0.013693 0.009277 0.004870 0.000474 -0.003908 -0.008275 -0.012625 -0.016954 -0.021261 -0.025543 -0.029798 -0.315479 0.315959 0.316335 0.316604 0.316761 0.316803 0.316727 0.316529 0.316207 0.315758 0.315179 0.314471 0.313630 0.312656 0.311548 0.310307 0.308932 0.307425 0.305785 0.304015 0.302116 0.300090 0.297939 0.295667 0.293275 0.290768 0.288147 0.285416 0.282580 0.279641 0.276602 0.273468 0.270241 0.266926 0.263525 0.260042 0.256481 0.252844 0.249136 0.245359 0.241517 0.237613 0.233650 0.229631 0.225559 0.221436 0.217266 0.213051 0.208794 0.204497 0.200162 0.195792 0.191388 0.186952 0.182487 0.177994 0.173475 0.168931 0.164363 0.159773 0.155162 0.150531 0.145880 0.141211 0.136524 0.131820 0.127099 0.122363 0.117611 0.112845 0.108064 0.103270 0.098462 0.093642 0.088809 0.083964 0.079109 0.074243 0.069367 0.064482 0.059589 0.054689 0.049784 0.044873 0.039959 0.035044 0.030127 0.025212 0.020300 0.015393 0.010492 0.005600 0.000718 -0.004150 -0.009003 -0.013838 -0.018654 -0.023446 -0.028213 -0.032951 -0.037659 -0.042333 -0.046970 -0.051567 -0.349307 0.349453 0.349466 0.349343 0.349080 0.348675 0.348125 0.347427 0.346581 0.345585 0.344438 0.343141 0.341693 0.340095 0.338348 0.336455 0.334415 0.332233 0.329910 0.327450 0.324855 0.322129 0.319275 0.316297 0.313200 0.309987 0.306662 0.303230 0.299693 0.296057 0.292325 0.288500 0.284588 0.280592 0.276515 0.272362 0.268135 0.263839 0.259478 0.255053 0.250570 0.246031 0.241438 0.236796 0.232107 0.227373 0.222597 0.217783 0.212931 0.208044 0.203125 0.198175 0.193196 0.188190 0.183159 0.178103 0.173024 0.167924 0.162803 0.157662 0.152502 0.147323 0.142127 0.136914 0.131685 0.126439 0.121178 0.115902 0.110611 0.105306 0.099988 0.094657 0.089313 0.083957 0.078591 0.073214 0.067828 0.062433 0.057031 0.051623 0.046210 0.040793 0.035374 0.029955 0.024538 0.019123 0.013714 0.008312 0.002920 -0.002461 -0.007828 -0.013178 -0.018508 -0.023816 -0.029100 -0.034355 -0.039580 -0.044770 -0.049924 -0.055037 -0.060107 -0.065129 -0.070102 -0.075021 -0.383695 0.383386 0.382915 0.382281 0.381481 0.380514 0.379379 0.378076 0.376604 0.374964 0.373157 0.371186 0.369051 0.366756 0.364302 0.361694 0.358934 0.356026 0.352974 0.349782 0.346455 0.342998 0.339414 0.335708 0.331885 0.327950 0.323906 0.319759 0.315513 0.311172 0.306740 0.302222 0.297621 0.292942 0.288189 0.283365 0.278475 0.273521 0.268508 0.263438 0.258315 0.253142 0.247921 0.242657 0.237351 0.232006 0.226624 0.221208 0.215759 0.210281 0.204774 0.199241 0.193682 0.188099 0.182494 0.176868 0.171220 0.165553 0.159866 0.154161 0.148438 0.142698 0.136941 0.131167 0.125378 0.119573 0.113753 0.107919 0.102072 0.096211 0.090337 0.084452 0.078556 0.072650 0.066735 0.060812 0.054882 0.048946 0.043006 0.037064 0.031121 0.025179 0.019240 0.013307 0.007380 0.001463 -0.004442 -0.010332 -0.016205 -0.022057 -0.027887 -0.033690 -0.039463 -0.045204 -0.050909 -0.056574 -0.062196 -0.067771 -0.073296 -0.078768 -0.084181 -0.089533 -0.094820 -0.100038 -0.418231 0.417352 0.416287 0.415035 0.413596 0.411971 0.410160 0.408166 0.405989 0.403633 0.401100 0.398393 0.395516 0.392472 0.389267 0.385903 0.382387 0.378723 0.374916 0.370972 0.366895 0.362691 0.358365 0.353921 0.349365 0.344702 0.339936 0.335072 0.330114 0.325068 0.319937 0.314726 0.309439 0.304079 0.298652 0.293159 0.287606 0.281996 0.276332 0.270617 0.264854 0.259047 0.253198 0.247310 0.241385 0.235427 0.229436 0.223415 0.217366 0.211290 0.205189 0.199065 0.192917 0.186748 0.180558 0.174347 0.168117 0.161868 0.155601 0.149316 0.143013 0.136694 0.130359 0.124008 0.117642 0.111261 0.104867 0.098459 0.092038 0.085606 0.079162 0.072709 0.066247 0.059776 0.053300 0.046818 0.040332 0.033845 0.027359 0.020874 0.014394 0.007920 0.001455 -0.004998 -0.011437 -0.017858 -0.024259 -0.030637 -0.036988 -0.043309 -0.049597 -0.055846 -0.062055 -0.068219 -0.074334 -0.080396 -0.086402 -0.092347 -0.098228 -0.104039 -0.109776 -0.115436 -0.121014 -0.126506 -0.452546 0.450999 0.449248 0.447293 0.445136 0.442780 0.440228 0.437481 0.434545 0.431422 0.428117 0.424634 0.420979 0.417157 0.413174 0.409035 0.404747 0.400314 0.395743 0.391038 0.386206 0.381252 0.376182 0.371000 0.365711 0.360321 0.354834 0.349255 0.343588 0.337839 0.332011 0.326108 0.320136 0.314097 0.307995 0.301835 0.295619 0.289352 0.283037 0.276676 0.270273 0.263830 0.257350 0.250836 0.244289 0.237712 0.231107 0.224475 0.217817 0.211135 0.204430 0.197702 0.190953 0.184184 0.177394 0.170585 0.163757 0.156912 0.150048 0.143167 0.136270 0.129357 0.122428 0.115484 0.108526 0.101554 0.094569 0.087572 0.080564 0.073545 0.066518 0.059482 0.052440 0.045394 0.038344 0.031292 0.024242 0.017194 0.010152 0.003117 -0.003907 -0.010918 -0.017913 -0.024888 -0.031841 -0.038768 -0.045665 -0.052528 -0.059353 -0.066137 -0.072875 -0.079564 -0.086198 -0.092774 -0.099288 -0.105734 -0.112108 -0.118406 -0.124623 -0.130753 -0.136793 -0.142738 -0.148582 -0.154322 -0.486336 0.484049 0.481545 0.478826 0.475897 0.472760 0.469420 0.465881 0.462149 0.458229 0.454127 0.449849 0.445401 0.440790 0.436022 0.431103 0.426039 0.420836 0.415500 0.410037 0.404452 0.398750 0.392938 0.387020 0.381002 0.374887 0.368682 0.362390 0.356016 0.349565 0.343041 0.336448 0.329791 0.323073 0.316298 0.309469 0.302591 0.295666 0.288698 0.281690 0.274643 0.267561 0.260446 0.253300 0.246125 0.238923 0.231694 0.224441 0.217164 0.209864 0.202542 0.195199 0.187835 0.180452 0.173049 0.165628 0.158188 0.150731 0.143256 0.135765 0.128258 0.120735 0.113197 0.105644 0.098079 0.090500 0.082910 0.075309 0.067699 0.060080 0.052455 0.044825 0.037191 0.029556 0.021922 0.014292 0.006667 -0.000950 -0.008556 -0.016147 -0.023720 -0.031273 -0.038801 -0.046300 -0.053767 -0.061197 -0.068587 -0.075931 -0.083225 -0.090465 -0.097647 -0.104764 -0.111814 -0.118790 -0.125688 -0.132502 -0.139228 -0.145861 -0.152394 -0.158824 -0.165144 -0.171350 -0.177436 -0.183397 -0.519370 0.516294 0.512993 0.509471 0.505734 0.501787 0.497635 0.493285 0.488743 0.484016 0.479111 0.474035 0.468794 0.463396 0.457845 0.452150 0.446315 0.440347 0.434251 0.428033 0.421700 0.415255 0.408705 0.402055 0.395309 0.388473 0.381551 0.374548 0.367469 0.360318 0.353099 0.345817 0.338475 0.331078 0.323629 0.316132 0.308589 0.301005 0.293381 0.285721 0.278026 0.270300 0.262543 0.254759 0.246947 0.239110 0.231249 0.223364 0.215457 0.207527 0.199577 0.191605 0.183614 0.175603 0.167573 0.159525 0.151458 0.143374 0.135273 0.127156 0.119022 0.110874 0.102711 0.094535 0.086346 0.078146 0.069936 0.061716 0.053490 0.045258 0.037022 0.028785 0.020548 0.012314 0.004086 -0.004134 -0.012343 -0.020536 -0.028711 -0.036864 -0.044991 -0.053087 -0.061149 -0.069172 -0.077151 -0.085082 -0.092960 -0.100780 -0.108536 -0.116225 -0.123840 -0.131377 -0.138829 -0.146192 -0.153460 -0.160627 -0.167688 -0.174636 -0.181467 -0.188174 -0.194753 -0.201196 -0.207499 -0.213657 -0.551472 0.547581 0.543461 0.539120 0.534562 0.529797 0.524829 0.519668 0.514319 0.508792 0.503091 0.497225 0.491199 0.485021 0.478696 0.472231 0.465633 0.458906 0.452056 0.445090 0.438013 0.430830 0.423546 0.416167 0.408698 0.401142 0.393507 0.385795 0.378012 0.370161 0.362249 0.354277 0.346251 0.338175 0.330050 0.321882 0.313673 0.305425 0.297142 0.288826 0.280479 0.272102 0.263697 0.255266 0.246810 0.238329 0.229825 0.221297 0.212748 0.204176 0.195584 0.186970 0.178337 0.169684 0.161012 0.152321 0.143611 0.134885 0.126141 0.117381 0.108606 0.099816 0.091013 0.082197 0.073370 0.064533 0.055688 0.046837 0.037980 0.029122 0.020262 0.011406 0.002554 -0.006290 -0.015122 -0.023939 -0.032738 -0.041514 -0.050264 -0.058982 -0.067664 -0.076305 -0.084901 -0.093445 -0.101934 -0.110362 -0.118723 -0.127013 -0.135224 -0.143352 -0.151392 -0.159336 -0.167179 -0.174915 -0.182538 -0.190042 -0.197420 -0.204666 -0.211774 -0.218739 -0.225553 -0.232211 -0.238707 -0.245036 -0.582514 0.577805 0.572868 0.567711 0.562343 0.556770 0.551000 0.545041 0.538901 0.532585 0.526102 0.519457 0.512659 0.505712 0.498623 0.491399 0.484045 0.476567 0.468972 0.461263 0.453448 0.445532 0.437519 0.429415 0.421225 0.412954 0.404606 0.396188 0.387702 0.379154 0.370548 0.361888 0.353178 0.344421 0.335620 0.326779 0.317901 0.308988 0.300042 0.291065 0.282060 0.273026 0.263965 0.254879 0.245767 0.236631 0.227472 0.218289 0.209084 0.199856 0.190607 0.181336 0.172045 0.162734 0.153403 0.144054 0.134685 0.125300 0.115897 0.106479 0.097045 0.087598 0.078139 0.068668 0.059188 0.049700 0.040205 0.030707 0.021207 0.011709 0.002214 -0.007273 -0.016750 -0.026212 -0.035657 -0.045079 -0.054474 -0.063837 -0.073164 -0.082450 -0.091688 -0.100874 -0.110002 -0.119067 -0.128062 -0.136982 -0.145821 -0.154573 -0.163232 -0.171791 -0.180244 -0.188585 -0.196806 -0.204902 -0.212865 -0.220689 -0.228367 -0.235893 -0.243259 -0.250460 -0.257489 -0.264340 -0.271007 -0.277484 -0.612403 0.606899 0.601169 0.595223 0.589067 0.582710 0.576161 0.569426 0.562512 0.555428 0.548179 0.540772 0.533215 0.525513 0.517673 0.509700 0.501601 0.493382 0.485048 0.476605 0.468059 0.459414 0.450677 0.441852 0.432946 0.423962 0.414907 0.405784 0.396599 0.387355 0.378058 0.368710 0.359316 0.349879 0.340402 0.330887 0.321337 0.311755 0.302141 0.292498 0.282825 0.273125 0.263398 0.253645 0.243866 0.234062 0.224233 0.214381 0.204505 0.194605 0.184684 0.174740 0.164775 0.154789 0.144783 0.134758 0.124714 0.114653 0.104575 0.094482 0.084374 0.074254 0.064123 0.053982 0.043833 0.033678 0.023520 0.013362 0.003206 -0.006944 -0.017085 -0.027213 -0.037324 -0.047414 -0.057477 -0.067510 -0.077506 -0.087461 -0.097368 -0.107221 -0.117016 -0.126746 -0.136405 -0.145987 -0.155485 -0.164893 -0.174205 -0.183413 -0.192511 -0.201492 -0.210348 -0.219074 -0.227661 -0.236102 -0.244391 -0.252520 -0.260482 -0.268269 -0.275875 -0.283293 -0.290516 -0.297538 -0.304354 -0.310957 -0.641070 0.634817 0.628337 0.621639 0.614732 0.607625 0.600326 0.592842 0.585181 0.577350 0.569357 0.561208 0.552909 0.544468 0.535890 0.527182 0.518349 0.509398 0.500335 0.491165 0.481895 0.472529 0.463074 0.453535 0.443917 0.434227 0.424468 0.414645 0.404764 0.394828 0.384842 0.374808 0.364731 0.354613 0.344457 0.334266 0.324040 0.313782 0.303492 0.293172 0.282823 0.272445 0.262039 0.251605 0.241145 0.230658 0.220145 0.209607 0.199044 0.188457 0.177846 0.167212 0.156556 0.145879 0.135181 0.124464 0.113728 0.102974 0.092205 0.081421 0.070623 0.059814 0.048995 0.038168 0.027335 0.016500 0.005666 -0.005165 -0.015989 -0.026802 -0.037600 -0.048378 -0.059132 -0.069856 -0.080545 -0.091193 -0.101794 -0.112342 -0.122831 -0.133254 -0.143606 -0.153879 -0.164067 -0.174164 -0.184161 -0.194052 -0.203829 -0.213487 -0.223016 -0.232409 -0.241659 -0.250759 -0.259699 -0.268474 -0.277074 -0.285493 -0.293722 -0.301754 -0.309581 -0.317198 -0.324596 -0.331770 -0.338715 -0.345424 -0.668494 0.661522 0.654339 0.646945 0.639335 0.631520 0.623509 0.615311 0.606933 0.598384 0.589671 0.580801 0.571781 0.562618 0.553318 0.543888 0.534335 0.524664 0.514883 0.504996 0.495011 0.484933 0.474769 0.464523 0.454202 0.443811 0.433355 0.422838 0.412264 0.401639 0.390965 0.380245 0.369483 0.358682 0.347843 0.336968 0.326058 0.315114 0.304138 0.293130 0.282091 0.271022 0.259922 0.248793 0.237636 0.226450 0.215236 0.203996 0.192730 0.181438 0.170121 0.158780 0.147417 0.136031 0.124625 0.113198 0.101753 0.090291 0.078814 0.067322 0.055818 0.044304 0.032782 0.021255 0.009725 -0.001803 -0.013328 -0.024844 -0.036347 -0.047834 -0.059298 -0.070735 -0.082139 -0.093503 -0.104822 -0.116090 -0.127299 -0.138443 -0.149516 -0.160510 -0.171419 -0.182234 -0.192949 -0.203557 -0.214049 -0.224418 -0.234657 -0.244756 -0.254708 -0.264506 -0.274140 -0.283603 -0.292886 -0.301981 -0.310879 -0.319573 -0.328054 -0.336315 -0.344347 -0.352145 -0.359701 -0.367009 -0.374063 -0.380860 -0.694689 0.687048 0.679192 0.671130 0.662867 0.654399 0.645724 0.636853 0.627795 0.618559 0.609155 0.599589 0.589870 0.580006 0.570003 0.559869 0.549611 0.539235 0.528748 0.518158 0.507470 0.496691 0.485827 0.474884 0.463867 0.452782 0.441632 0.430424 0.419160 0.407845 0.396482 0.385074 0.373623 0.362132 0.350602 0.339034 0.327430 0.315789 0.304114 0.292404 0.280661 0.268885 0.257076 0.245236 0.233365 0.221464 0.209534 0.197575 0.185588 0.173574 0.161534 0.149470 0.137381 0.125270 0.113138 0.100986 0.088816 0.076629 0.064427 0.052212 0.039986 0.027752 0.015512 0.003270 -0.008970 -0.021206 -0.033433 -0.045645 -0.057839 -0.070009 -0.082148 -0.094251 -0.106311 -0.118322 -0.130276 -0.142167 -0.153988 -0.165731 -0.177389 -0.188955 -0.200420 -0.211777 -0.223017 -0.234133 -0.245117 -0.255960 -0.266653 -0.277188 -0.287557 -0.297751 -0.307760 -0.317576 -0.327190 -0.336593 -0.345777 -0.354732 -0.363451 -0.371926 -0.380147 -0.388110 -0.395806 -0.403231 -0.410379 -0.417245 -0.719629 0.711389 0.702927 0.694246 0.685356 0.676266 0.666977 0.657484 0.647789 0.637906 0.627844 0.617613 0.607223 0.596682 0.585998 0.575180 0.564235 0.553171 0.541995 0.530715 0.519337 0.507868 0.496313 0.484679 0.472972 0.461196 0.449357 0.437458 0.425503 0.413497 0.401441 0.389339 0.377193 0.365003 0.352771 0.340499 0.328187 0.315836 0.303447 0.291021 0.278558 0.266060 0.253526 0.240958 0.228358 0.215724 0.203060 0.190365 0.177640 0.164888 0.152108 0.139303 0.126473 0.113620 0.100746 0.087852 0.074939 0.062011 0.049068 0.036114 0.023151 0.010182 -0.002790 -0.015761 -0.028726 -0.041681 -0.054622 -0.067542 -0.080436 -0.093297 -0.106119 -0.118895 -0.131618 -0.144281 -0.156875 -0.169394 -0.181830 -0.194175 -0.206420 -0.218557 -0.230579 -0.242476 -0.254241 -0.265863 -0.277335 -0.288647 -0.299791 -0.310756 -0.321535 -0.332116 -0.342492 -0.352652 -0.362587 -0.372287 -0.381745 -0.390949 -0.399892 -0.408565 -0.416961 -0.425073 -0.432895 -0.440421 -0.447646 -0.454566 -0.743366 0.734554 0.725536 0.716303 0.706848 0.697176 0.687298 0.677222 0.666943 0.656458 0.645780 0.634920 0.623890 0.612700 0.601361 0.589881 0.578270 0.566535 0.554685 0.542728 0.530670 0.518520 0.506282 0.493963 0.481569 0.469105 0.456576 0.443985 0.431337 0.418635 0.405881 0.393077 0.380224 0.367325 0.354379 0.341389 0.328356 0.315280 0.302162 0.289003 0.275805 0.262568 0.249293 0.235981 0.222633 0.209251 0.195835 0.182388 0.168909 0.155400 0.141864 0.128301 0.114713 0.101101 0.087468 0.073815 0.060145 0.046459 0.032760 0.019051 0.005335 -0.008384 -0.022102 -0.035815 -0.049518 -0.063204 -0.076870 -0.090507 -0.104111 -0.117673 -0.131186 -0.144642 -0.158034 -0.171354 -0.184594 -0.197745 -0.210799 -0.223747 -0.236581 -0.249292 -0.261871 -0.274308 -0.286595 -0.298721 -0.310679 -0.322457 -0.334046 -0.345436 -0.356618 -0.367581 -0.378315 -0.388810 -0.399056 -0.409044 -0.418763 -0.428204 -0.437358 -0.446217 -0.454774 -0.463021 -0.470953 -0.478565 -0.485853 -0.492813 -0.766029 0.756647 0.747084 0.737324 0.727357 0.717169 0.706755 0.696126 0.685293 0.674255 0.663008 0.651560 0.639925 0.628117 0.616148 0.604029 0.591770 0.579381 0.566872 0.554249 0.541522 0.528697 0.515781 0.502781 0.489703 0.476551 0.463331 0.450045 0.436698 0.423293 0.409831 0.396314 0.382743 0.369121 0.355448 0.341727 0.327957 0.314140 0.300278 0.286371 0.272421 0.258428 0.244395 0.230323 0.216212 0.202064 0.187880 0.173662 0.159412 0.145131 0.130821 0.116484 0.102121 0.087734 0.073325 0.058897 0.044452 0.029992 0.015521 0.001042 -0.013441 -0.027924 -0.042402 -0.056870 -0.071322 -0.085752 -0.100153 -0.114518 -0.128841 -0.143111 -0.157323 -0.171466 -0.185534 -0.199517 -0.213407 -0.227194 -0.240870 -0.254425 -0.267850 -0.281136 -0.294272 -0.307249 -0.320057 -0.332687 -0.345127 -0.357368 -0.369399 -0.381209 -0.392789 -0.404126 -0.415212 -0.426034 -0.436582 -0.446846 -0.456816 -0.466482 -0.475835 -0.484867 -0.493571 -0.501941 -0.509971 -0.517656 -0.524993 -0.531980 -0.787707 0.777788 0.767694 0.757420 0.746952 0.736278 0.725386 0.714261 0.702910 0.691344 0.679566 0.667574 0.655372 0.642978 0.630406 0.617671 0.604784 0.591758 0.578601 0.565324 0.551935 0.538442 0.524853 0.511174 0.497411 0.483569 0.469653 0.455667 0.441614 0.427495 0.413314 0.399072 0.384771 0.370413 0.355998 0.341530 0.327008 0.312436 0.297813 0.283142 0.268424 0.253660 0.238853 0.224002 0.209111 0.194180 0.179212 0.164208 0.149170 0.134099 0.118999 0.103870 0.088715 0.073537 0.058336 0.043116 0.027880 0.012631 -0.002628 -0.017892 -0.033157 -0.048417 -0.063669 -0.078904 -0.094118 -0.109303 -0.124450 -0.139553 -0.154603 -0.169591 -0.184509 -0.199347 -0.214097 -0.228749 -0.243294 -0.257722 -0.272023 -0.286188 -0.300207 -0.314069 -0.327764 -0.341281 -0.354611 -0.367742 -0.380663 -0.393364 -0.405833 -0.418059 -0.430031 -0.441738 -0.453167 -0.464308 -0.475150 -0.485681 -0.495892 -0.505771 -0.515312 -0.524506 -0.533346 -0.541825 -0.549940 -0.557686 -0.565062 -0.572065 -0.808449 0.798045 0.787464 0.776700 0.765749 0.754601 0.743242 0.731661 0.719844 0.707786 0.695502 0.682996 0.670268 0.657322 0.644176 0.630848 0.617353 0.603703 0.589912 0.575990 0.561946 0.547790 0.533530 0.519172 0.504722 0.490187 0.475570 0.460875 0.446105 0.431263 0.416351 0.401371 0.386326 0.371217 0.356047 0.340817 0.325529 0.310184 0.294786 0.279334 0.263832 0.248280 0.232681 0.217036 0.201348 0.185618 0.169848 0.154041 0.138198 0.122322 0.106414 0.090478 0.074514 0.058527 0.042518 0.026490 0.010448 -0.005607 -0.021668 -0.037732 -0.053793 -0.069846 -0.085884 -0.101901 -0.117888 -0.133839 -0.149743 -0.165593 -0.181380 -0.197094 -0.212726 -0.228266 -0.243704 -0.259031 -0.274237 -0.289310 -0.304241 -0.319019 -0.333634 -0.348074 -0.362329 -0.376388 -0.390239 -0.403871 -0.417272 -0.430431 -0.443335 -0.455973 -0.468333 -0.480403 -0.492170 -0.503623 -0.514749 -0.525538 -0.535980 -0.546064 -0.555781 -0.565126 -0.574090 -0.582668 -0.590857 -0.598654 -0.606057 -0.613067 -0.828334 0.817468 0.806441 0.795235 0.783831 0.772228 0.760417 0.748386 0.736125 0.723622 0.710866 0.697870 0.684640 0.671178 0.657489 0.643592 0.629508 0.615251 0.600837 0.586278 0.571586 0.556770 0.541839 0.526801 0.511662 0.496427 0.481101 0.465688 0.450191 0.434613 0.418957 0.403227 0.387424 0.371551 0.355610 0.339603 0.323533 0.307401 0.291210 0.274962 0.258659 0.242303 0.225896 0.209440 0.192938 0.176392 0.159805 0.143178 0.126514 0.109815 0.093083 0.076322 0.059534 0.042721 0.025887 0.009036 -0.007830 -0.024705 -0.041585 -0.058464 -0.075336 -0.092194 -0.109032 -0.125842 -0.142615 -0.159342 -0.176014 -0.192621 -0.209154 -0.225603 -0.241956 -0.258206 -0.274339 -0.290347 -0.306219 -0.321943 -0.337508 -0.352903 -0.368117 -0.383139 -0.397956 -0.412557 -0.426929 -0.441062 -0.454942 -0.468557 -0.481894 -0.494941 -0.507684 -0.520112 -0.532210 -0.543967 -0.555371 -0.566410 -0.577073 -0.587351 -0.597236 -0.606720 -0.615798 -0.624465 -0.632718 -0.640557 -0.647980 -0.654987 -0.847485 0.836152 0.824685 0.813059 0.801245 0.789221 0.776979 0.764515 0.751818 0.738879 0.725689 0.712236 0.698526 0.684568 0.670367 0.655929 0.641276 0.626427 0.611402 0.596215 0.580879 0.565406 0.549804 0.534083 0.518248 0.502307 0.486263 0.470121 0.453886 0.437561 0.421150 0.404655 0.388081 0.371429 0.354702 0.337904 0.321036 0.304101 0.287102 0.270041 0.252920 0.235743 0.218512 0.201230 0.183898 0.166520 0.149097 0.131634 0.114132 0.096593 0.079021 0.061418 0.043788 0.026134 0.008459 -0.009233 -0.026938 -0.044650 -0.062363 -0.080071 -0.097769 -0.115447 -0.133098 -0.150714 -0.168284 -0.185798 -0.203248 -0.220622 -0.237910 -0.255102 -0.272186 -0.289152 -0.305988 -0.322683 -0.339227 -0.355606 -0.371810 -0.387827 -0.403644 -0.419250 -0.434631 -0.449776 -0.464672 -0.479306 -0.493664 -0.507734 -0.521501 -0.534953 -0.548076 -0.560856 -0.573280 -0.585335 -0.597008 -0.608288 -0.619164 -0.629628 -0.639670 -0.649286 -0.658468 -0.667215 -0.675525 -0.683396 -0.690830 -0.697828 -0.866009 0.854207 0.842294 0.830242 0.818027 0.805613 0.792975 0.780101 0.766985 0.753620 0.740000 0.726117 0.711957 0.697524 0.682829 0.667876 0.652676 0.637252 0.621628 0.605821 0.589846 0.573716 0.557442 0.541034 0.524498 0.507841 0.491070 0.474190 0.457206 0.440122 0.422942 0.405670 0.388309 0.370864 0.353337 0.335732 0.318051 0.300297 0.282474 0.264584 0.246630 0.228617 0.210545 0.192419 0.174241 0.156014 0.137740 0.119423 0.101066 0.082671 0.064241 0.045780 0.027292 0.008778 -0.009755 -0.028304 -0.046863 -0.065427 -0.083989 -0.102543 -0.121079 -0.139591 -0.158068 -0.176501 -0.194880 -0.213193 -0.231431 -0.249582 -0.267635 -0.285578 -0.303401 -0.321091 -0.338637 -0.356027 -0.373249 -0.390290 -0.407138 -0.423780 -0.440205 -0.456398 -0.472347 -0.488038 -0.503458 -0.518593 -0.533429 -0.547953 -0.562149 -0.576003 -0.589501 -0.602630 -0.615373 -0.627719 -0.639655 -0.651168 -0.662250 -0.672890 -0.683082 -0.692820 -0.702099 -0.710918 -0.719276 -0.727174 -0.734612 -0.741593 -0.884013 0.871716 0.859350 0.846874 0.834247 0.821445 0.808430 0.795176 0.781666 0.767893 0.753852 0.739541 0.724952 0.710069 0.694896 0.679446 0.663723 0.647743 0.631532 0.615112 0.598502 0.581716 0.564768 0.547668 0.530424 0.513045 0.495537 0.477908 0.460163 0.442308 0.424346 0.406283 0.388123 0.369870 0.351528 0.333100 0.314590 0.296002 0.277339 0.258605 0.239803 0.220936 0.202008 0.183021 0.163980 0.144887 0.125745 0.106558 0.087328 0.068060 0.048756 0.029420 0.010055 -0.009334 -0.028742 -0.048164 -0.067595 -0.087027 -0.106453 -0.125866 -0.145256 -0.164614 -0.183930 -0.203193 -0.222392 -0.241515 -0.260551 -0.279489 -0.298316 -0.317020 -0.335590 -0.354013 -0.372277 -0.390368 -0.408275 -0.425983 -0.443481 -0.460755 -0.477791 -0.494575 -0.511094 -0.527334 -0.543280 -0.558917 -0.574232 -0.589208 -0.603830 -0.618084 -0.631954 -0.645426 -0.658484 -0.671115 -0.683306 -0.695046 -0.706325 -0.717135 -0.727469 -0.737321 -0.746690 -0.755575 -0.763975 -0.771892 -0.779328 -0.786286 -0.901690 0.888803 0.875935 0.863013 0.849979 0.836782 0.823388 0.809764 0.795884 0.781726 0.767283 0.752551 0.737532 0.722218 0.706591 0.690658 0.674429 0.657911 0.641126 0.624102 0.606861 0.589420 0.571794 0.553997 0.536038 0.517928 0.499675 0.481287 0.462770 0.444131 0.425375 0.406507 0.387534 0.368459 0.349286 0.330021 0.310667 0.291229 0.271711 0.252116 0.232449 0.212713 0.192911 0.173048 0.153127 0.133151 0.113124 0.093050 0.072931 0.052772 0.032576 0.012347 -0.007911 -0.028192 -0.048492 -0.068804 -0.089121 -0.109437 -0.129743 -0.150030 -0.170288 -0.190506 -0.210673 -0.230777 -0.250808 -0.270752 -0.290597 -0.310332 -0.329943 -0.349418 -0.368744 -0.387908 -0.406897 -0.425698 -0.444296 -0.462679 -0.480833 -0.498743 -0.516395 -0.533775 -0.550868 -0.567659 -0.584132 -0.600273 -0.616065 -0.631493 -0.646541 -0.661192 -0.675430 -0.689241 -0.702609 -0.715519 -0.727959 -0.739919 -0.751389 -0.762361 -0.772829 -0.782790 -0.792243 -0.801187 -0.809624 -0.817554 -0.824983 -0.831912 -0.919247 0.905659 0.892182 0.878748 0.865271 0.851678 0.837904 0.823907 0.809660 0.795138 0.780314 0.765180 0.749737 0.733989 0.717926 0.701527 0.684804 0.667765 0.650422 0.632802 0.614932 0.596836 0.578531 0.560032 0.541352 0.522504 0.503496 0.484337 0.465037 0.445602 0.426039 0.406354 0.386553 0.366641 0.346624 0.326507 0.306294 0.285990 0.265601 0.245130 0.224581 0.203959 0.183268 0.162511 0.141693 0.120818 0.099888 0.078909 0.057884 0.036816 0.015711 -0.005428 -0.026596 -0.047787 -0.068995 -0.090213 -0.111434 -0.132649 -0.153850 -0.175025 -0.196164 -0.217255 -0.238286 -0.259244 -0.280118 -0.300895 -0.321560 -0.342103 -0.362508 -0.382763 -0.402855 -0.422769 -0.442491 -0.462009 -0.481307 -0.500371 -0.519186 -0.537738 -0.556012 -0.573992 -0.591662 -0.609007 -0.626010 -0.642655 -0.658926 -0.674805 -0.690276 -0.705322 -0.719925 -0.734071 -0.747743 -0.760927 -0.773611 -0.785785 -0.797439 -0.808567 -0.819164 -0.829228 -0.838759 -0.847757 -0.856225 -0.864164 -0.871579 -0.878474 -0.936807 0.922444 0.908263 0.894213 0.880214 0.866179 0.852016 0.837651 0.823034 0.808145 0.792960 0.777445 0.761595 0.745416 0.728914 0.712067 0.694863 0.677312 0.659424 0.641218 0.622725 0.603975 0.584988 0.565783 0.546376 0.526780 0.507008 0.487070 0.466976 0.446733 0.426350 0.405833 0.385191 0.364428 0.343552 0.322567 0.301480 0.280296 0.259019 0.237655 0.216209 0.194685 0.173087 0.151420 0.129688 0.107895 0.086046 0.064145 0.042195 0.020202 -0.001830 -0.023897 -0.045992 -0.068110 -0.090243 -0.112384 -0.134524 -0.156654 -0.178764 -0.200842 -0.222876 -0.244853 -0.266760 -0.288586 -0.310315 -0.331935 -0.353432 -0.374792 -0.396002 -0.417048 -0.437914 -0.458587 -0.479052 -0.499295 -0.519300 -0.539053 -0.558537 -0.577737 -0.596637 -0.615221 -0.633472 -0.651374 -0.668909 -0.686060 -0.702809 -0.719139 -0.735032 -0.750470 -0.765436 -0.779913 -0.793884 -0.807338 -0.820261 -0.832642 -0.844475 -0.855754 -0.866475 -0.876637 -0.886241 -0.895288 -0.903782 -0.911725 -0.919123 -0.925980 -0.954424 0.939254 0.924300 0.909548 0.894937 0.880377 0.865773 0.851025 0.836047 0.820788 0.805235 0.789357 0.773120 0.756523 0.739578 0.722285 0.704614 0.686561 0.668138 0.649356 0.630247 0.610843 0.591173 0.571258 0.551118 0.530769 0.510224 0.489495 0.468595 0.447532 0.426316 0.404956 0.383458 0.361830 0.340079 0.318213 0.296236 0.274155 0.251975 0.229702 0.207342 0.184898 0.162377 0.139783 0.117120 0.094393 0.071607 0.048765 0.025874 0.002938 -0.020039 -0.043051 -0.066091 -0.089153 -0.112228 -0.135308 -0.158384 -0.181444 -0.204478 -0.227473 -0.250415 -0.273291 -0.296089 -0.318793 -0.341390 -0.363865 -0.386205 -0.408395 -0.430420 -0.452266 -0.473917 -0.495359 -0.516575 -0.537552 -0.558272 -0.578720 -0.598879 -0.618733 -0.638265 -0.657458 -0.676294 -0.694756 -0.712825 -0.730484 -0.747712 -0.764493 -0.780807 -0.796635 -0.811960 -0.826764 -0.841032 -0.854749 -0.867906 -0.880491 -0.892497 -0.903922 -0.914762 -0.925018 -0.934691 -0.943783 -0.952299 -0.960242 -0.967618 -0.974432 -0.972134 0.956133 0.940372 0.924853 0.909551 0.894387 0.879261 0.864074 0.848718 0.833101 0.817174 0.800927 0.784320 0.767324 0.749944 0.732196 0.714064 0.695520 0.676568 0.657222 0.637503 0.617449 0.597095 0.576467 0.555588 0.534477 0.513150 0.491622 0.469905 0.448010 0.425949 0.403730 0.381363 0.358856 0.336217 0.313452 0.290570 0.267577 0.244478 0.221280 0.197988 0.174609 0.151147 0.127608 0.103997 0.080318 0.056577 0.032778 0.008927 -0.014971 -0.038910 -0.062884 -0.086887 -0.110910 -0.134943 -0.158979 -0.183006 -0.207012 -0.230985 -0.254910 -0.278774 -0.302564 -0.326263 -0.349859 -0.373336 -0.396679 -0.419873 -0.442904 -0.465755 -0.488412 -0.510858 -0.533078 -0.555056 -0.576774 -0.598218 -0.619369 -0.640210 -0.660725 -0.680894 -0.700701 -0.720126 -0.739151 -0.757757 -0.775924 -0.793632 -0.810863 -0.827597 -0.843814 -0.859495 -0.874623 -0.889183 -0.903161 -0.916546 -0.929329 -0.941506 -0.953072 -0.964028 -0.974374 -0.984112 -0.993246 -1.001779 -1.009718 -1.017069 -1.023837 -0.989947 0.973108 0.956520 0.940197 0.924138 0.908298 0.892580 0.876879 0.861089 0.845097 0.828807 0.812181 0.795202 0.777823 0.760024 0.741820 0.723220 0.704194 0.684722 0.664819 0.644499 0.623799 0.602761 0.581418 0.559795 0.537915 0.515797 0.493458 0.470913 0.448175 0.425255 0.402165 0.378915 0.355514 0.331972 0.308295 0.284492 0.260569 0.236535 0.212396 0.188157 0.163824 0.139405 0.114904 0.090326 0.065677 0.040963 0.016189 -0.008639 -0.033516 -0.058436 -0.083390 -0.108373 -0.133373 -0.158383 -0.183390 -0.208384 -0.233351 -0.258276 -0.283147 -0.307948 -0.332663 -0.357279 -0.381779 -0.406148 -0.430371 -0.454432 -0.478315 -0.502003 -0.525482 -0.548733 -0.571742 -0.594489 -0.616959 -0.639134 -0.660996 -0.682526 -0.703707 -0.724520 -0.744945 -0.764964 -0.784555 -0.803700 -0.822378 -0.840567 -0.858249 -0.875401 -0.892005 -0.908039 -0.923488 -0.938337 -0.952571 -0.966181 -0.979160 -0.991502 -1.003207 -1.014275 -1.024707 -1.034507 -1.043679 -1.052227 -1.060159 -1.067480 -1.074199 -1.007868 0.990186 0.972763 0.955617 0.938759 0.922179 0.905804 0.889525 0.873230 0.856809 0.840147 0.823149 0.805785 0.788024 0.769822 0.751174 0.732100 0.712589 0.692607 0.672151 0.651240 0.629899 0.608178 0.586116 0.563744 0.541088 0.518171 0.495012 0.471628 0.448034 0.424244 0.400270 0.376123 0.351814 0.327352 0.302747 0.278007 0.253141 0.228155 0.203057 0.177853 0.152551 0.127156 0.101675 0.076114 0.050478 0.024773 -0.000994 -0.026818 -0.052693 -0.078610 -0.104563 -0.130542 -0.156538 -0.182540 -0.208535 -0.234511 -0.260454 -0.286348 -0.312178 -0.337929 -0.363584 -0.389129 -0.414547 -0.439821 -0.464937 -0.489876 -0.514623 -0.539160 -0.563472 -0.587539 -0.611346 -0.634873 -0.658103 -0.681018 -0.703598 -0.725825 -0.747679 -0.769141 -0.790190 -0.810806 -0.830968 -0.850654 -0.869844 -0.888515 -0.906647 -0.924218 -0.941206 -0.957592 -0.973359 -0.988493 -1.002980 -1.016812 -1.029982 -1.042487 -1.054328 -1.065505 -1.076020 -1.085879 -1.095086 -1.103646 -1.111567 -1.118856 -1.125521 -1.025902 1.007372 0.989107 0.971128 0.953452 0.936084 0.918990 0.902073 0.885217 0.868301 0.851216 0.833842 0.816094 0.797939 0.779341 0.760264 0.740718 0.720716 0.700227 0.679227 0.657728 0.635754 0.613352 0.590569 0.567443 0.544005 0.520280 0.496291 0.472058 0.447596 0.422922 0.398050 0.372992 0.347760 0.322365 0.296817 0.271125 0.245298 0.219343 0.193270 0.167085 0.140795 0.114408 0.087929 0.061366 0.034725 0.008011 -0.018768 -0.045606 -0.072495 -0.099429 -0.126397 -0.153391 -0.180399 -0.207409 -0.234409 -0.261383 -0.288317 -0.315193 -0.341997 -0.368712 -0.395322 -0.421809 -0.448158 -0.474351 -0.500371 -0.526202 -0.551825 -0.577223 -0.602378 -0.627273 -0.651888 -0.676204 -0.700204 -0.723867 -0.747174 -0.770105 -0.792638 -0.814755 -0.836433 -0.857650 -0.878386 -0.898617 -0.918321 -0.937475 -0.956057 -0.974045 -0.991416 -1.008152 -1.024235 -1.039651 -1.054389 -1.068439 -1.081798 -1.094463 -1.106437 -1.117720 -1.128317 -1.138232 -1.147471 -1.156040 -1.163948 -1.171201 -1.177810 -1.044052 1.024667 1.005555 0.986737 0.968231 0.950049 0.932185 0.914573 0.897100 0.879637 0.862065 0.844275 0.826143 0.807590 0.788586 0.769091 0.749085 0.728586 0.707587 0.686051 0.663969 0.641368 0.618288 0.594783 0.570899 0.546672 0.522131 0.497303 0.472208 0.446867 0.421297 0.395514 0.369531 0.343362 0.317018 0.290511 0.263850 0.237046 0.210107 0.183041 0.155857 0.128563 0.101165 0.073671 0.046088 0.018423 -0.009317 -0.037126 -0.064996 -0.092919 -0.120887 -0.148888 -0.176914 -0.204951 -0.232987 -0.261007 -0.288994 -0.316934 -0.344808 -0.372600 -0.400294 -0.427872 -0.455316 -0.482609 -0.509734 -0.536672 -0.563406 -0.589918 -0.616188 -0.642199 -0.667931 -0.693364 -0.718481 -0.743259 -0.767679 -0.791721 -0.815362 -0.838583 -0.861360 -0.883672 -0.905496 -0.926808 -0.947587 -0.967807 -0.987445 -1.006478 -1.024882 -1.042636 -1.059719 -1.076116 -1.091811 -1.106796 -1.121063 -1.134608 -1.147432 -1.159537 -1.170925 -1.181600 -1.191569 -1.200837 -1.209413 -1.217304 -1.224519 -1.231067 -1.062320 1.042074 1.022109 1.002444 0.983100 0.964092 0.945425 0.927066 0.908920 0.890861 0.872754 0.854487 0.835940 0.816993 0.797575 0.777658 0.757205 0.736214 0.714698 0.692626 0.669968 0.646746 0.622990 0.598763 0.574118 0.549095 0.523730 0.498052 0.472086 0.445854 0.419375 0.392667 0.365746 0.338624 0.311317 0.283835 0.256190 0.228392 0.200451 0.172375 0.144175 0.115858 0.087432 0.058905 0.030284 0.001577 -0.027208 -0.056065 -0.084985 -0.113960 -0.142979 -0.172032 -0.201107 -0.230190 -0.259268 -0.288323 -0.317340 -0.346301 -0.375188 -0.403983 -0.432670 -0.461230 -0.489645 -0.517896 -0.545966 -0.573836 -0.601486 -0.628898 -0.656053 -0.682931 -0.709511 -0.735774 -0.761700 -0.787266 -0.812452 -0.837236 -0.861597 -0.885510 -0.908954 -0.931906 -0.954340 -0.976234 -0.997563 -1.018301 -1.038424 -1.057908 -1.076728 -1.094863 -1.112292 -1.129000 -1.144974 -1.160204 -1.174685 -1.188415 -1.201396 -1.213630 -1.225120 -1.235872 -1.245892 -1.255188 -1.263767 -1.271639 -1.278812 -1.285298 -1.080704 1.059594 1.038769 1.018252 0.998062 0.978218 0.958729 0.939582 0.920716 0.902008 0.883322 0.864528 0.845516 0.826154 0.806324 0.785976 0.765079 0.743605 0.721569 0.698958 0.675732 0.651890 0.627464 0.602515 0.577104 0.551280 0.525084 0.498547 0.471699 0.444563 0.417163 0.389517 0.361642 0.333554 0.305267 0.276794 0.248148 0.219340 0.190380 0.161278 0.132044 0.102687 0.073214 0.043636 0.013959 -0.015808 -0.045658 -0.075581 -0.105570 -0.135614 -0.165703 -0.195825 -0.225966 -0.256112 -0.286248 -0.316355 -0.346416 -0.376413 -0.406328 -0.436142 -0.465837 -0.495394 -0.524793 -0.554017 -0.583046 -0.611860 -0.640439 -0.668765 -0.696816 -0.724572 -0.752012 -0.779116 -0.805860 -0.832224 -0.858185 -0.883720 -0.908806 -0.933420 -0.957538 -0.981134 -1.004184 -1.026662 -1.048544 -1.069802 -1.090412 -1.110347 -1.129583 -1.148097 -1.165871 -1.182889 -1.199139 -1.214613 -1.229307 -1.243221 -1.256357 -1.268718 -1.280309 -1.291136 -1.301206 -1.310526 -1.319107 -1.326957 -1.334086 -1.340505 -1.099198 1.077225 1.055535 1.034158 1.013115 0.992426 0.972105 0.952146 0.932514 0.913110 0.893799 0.874439 0.854910 0.835091 0.814843 0.794059 0.772711 0.750765 0.728211 0.705055 0.681262 0.656804 0.631714 0.606043 0.579864 0.553234 0.526197 0.498792 0.471051 0.443001 0.414666 0.386068 0.357225 0.328155 0.298873 0.269394 0.239730 0.209895 0.179899 0.149753 0.119467 0.089052 0.058515 0.027867 -0.002884 -0.033730 -0.064661 -0.095670 -0.126745 -0.157878 -0.189054 -0.220262 -0.251487 -0.282713 -0.313923 -0.345098 -0.376219 -0.407269 -0.438227 -0.469074 -0.499791 -0.530359 -0.560758 -0.590968 -0.620970 -0.650742 -0.680264 -0.709515 -0.738475 -0.767121 -0.795432 -0.823386 -0.850960 -0.878131 -0.904876 -0.931171 -0.956991 -0.982312 -1.007108 -1.031354 -1.055025 -1.078092 -1.100529 -1.122310 -1.143407 -1.163794 -1.183445 -1.202339 -1.220456 -1.237783 -1.254307 -1.270024 -1.284930 -1.299026 -1.312316 -1.324803 -1.336494 -1.347394 -1.357512 -1.366855 -1.375435 -1.383260 -1.390342 -1.396692 -1.117787 1.094959 1.072405 1.050163 1.028260 1.006718 0.985553 0.964766 0.944338 0.924195 0.904213 0.884248 0.864163 0.843837 0.823139 0.801919 0.780114 0.757695 0.734631 0.710928 0.686563 0.661495 0.635743 0.609352 0.582403 0.554960 0.527076 0.498793 0.470148 0.441171 0.411889 0.382325 0.352500 0.322433 0.292140 0.261638 0.230941 0.200061 0.169012 0.137804 0.106449 0.074958 0.043339 0.011603 -0.020241 -0.052184 -0.084216 -0.116328 -0.148509 -0.180747 -0.213029 -0.245341 -0.277667 -0.309989 -0.342289 -0.374548 -0.406746 -0.438863 -0.470880 -0.502776 -0.534531 -0.566125 -0.597538 -0.628749 -0.659736 -0.690480 -0.720957 -0.751147 -0.781028 -0.810576 -0.839770 -0.868585 -0.896999 -0.924987 -0.952524 -0.979587 -1.006148 -1.032183 -1.057665 -1.082567 -1.106862 -1.130522 -1.153519 -1.175824 -1.197410 -1.218249 -1.238315 -1.257588 -1.276048 -1.293682 -1.310480 -1.326438 -1.341556 -1.355834 -1.369277 -1.381889 -1.393678 -1.404649 -1.414813 -1.424178 -1.432754 -1.440552 -1.447583 -1.453861 -1.136439 1.112785 1.089372 1.066262 1.043493 1.021091 0.999074 0.977448 0.956201 0.935283 0.914587 0.893976 0.873299 0.852427 0.831234 0.809565 0.787299 0.764400 0.740832 0.716580 0.691639 0.665968 0.639555 0.612447 0.584724 0.556464 0.527725 0.498556 0.468996 0.439080 0.408837 0.378293 0.347471 0.316392 0.285073 0.253532 0.221783 0.189843 0.157723 0.125436 0.092994 0.060408 0.027688 -0.005154 -0.038110 -0.071168 -0.104320 -0.137554 -0.170858 -0.204220 -0.237625 -0.271058 -0.304502 -0.337937 -0.371344 -0.404703 -0.437993 -0.471194 -0.504285 -0.537245 -0.570053 -0.602689 -0.635130 -0.667356 -0.699344 -0.731072 -0.762519 -0.793660 -0.824474 -0.854937 -0.885024 -0.914712 -0.943975 -0.972790 -1.001129 -1.028967 -1.056278 -1.083034 -1.109208 -1.134772 -1.159696 -1.183953 -1.207511 -1.230343 -1.252419 -1.273711 -1.294193 -1.313844 -1.332646 -1.350587 -1.367658 -1.383858 -1.399186 -1.413645 -1.427240 -1.439977 -1.451862 -1.462904 -1.473112 -1.482496 -1.491066 -1.498835 -1.505813 -1.512015 -1.155092 1.130672 1.106425 1.082453 1.058815 1.035544 1.012667 0.990190 0.968110 0.946391 0.924944 0.903644 0.882342 0.860891 0.839160 0.817006 0.794275 0.770889 0.746817 0.722021 0.696502 0.670224 0.643153 0.615330 0.586834 0.557751 0.528149 0.498084 0.467598 0.436731 0.405515 0.373977 0.342143 0.310036 0.277674 0.245077 0.212262 0.179242 0.146034 0.112650 0.079103 0.045405 0.011566 -0.022401 -0.056486 -0.090679 -0.124968 -0.159343 -0.193789 -0.228293 -0.262840 -0.297411 -0.331990 -0.366555 -0.401085 -0.435560 -0.469959 -0.504259 -0.538440 -0.572479 -0.606356 -0.640048 -0.673533 -0.706788 -0.739790 -0.772518 -0.804946 -0.837053 -0.868812 -0.900200 -0.931193 -0.961764 -0.991888 -1.021539 -1.050689 -1.079312 -1.107380 -1.134865 -1.161737 -1.187967 -1.213526 -1.238383 -1.262507 -1.285868 -1.308435 -1.330180 -1.351078 -1.371107 -1.390251 -1.408498 -1.425843 -1.442284 -1.457823 -1.472463 -1.486209 -1.499069 -1.511050 -1.522161 -1.532412 -1.541813 -1.550375 -1.558111 -1.565034 -1.571158 -1.173672 1.148569 1.123541 1.098724 1.074219 1.050076 1.026331 1.002994 0.980068 0.957528 0.935298 0.913272 0.891308 0.869247 0.846946 0.824265 0.801050 0.777173 0.752591 0.727257 0.701157 0.674268 0.646541 0.618007 0.588735 0.558825 0.528353 0.497382 0.465960 0.434129 0.401925 0.369380 0.336519 0.303368 0.269948 0.236279 0.202379 0.168264 0.133950 0.099451 0.064781 0.029952 -0.005024 -0.040134 -0.075368 -0.110714 -0.146160 -0.181693 -0.217300 -0.252964 -0.288669 -0.324397 -0.360127 -0.395838 -0.431509 -0.467117 -0.502640 -0.538056 -0.573342 -0.608477 -0.643438 -0.678201 -0.712744 -0.747043 -0.781075 -0.814815 -0.848239 -0.881323 -0.914041 -0.946367 -0.978276 -1.009742 -1.040736 -1.071233 -1.101204 -1.130620 -1.159453 -1.187673 -1.215250 -1.242153 -1.268351 -1.293812 -1.318504 -1.342396 -1.365457 -1.387656 -1.408970 -1.429378 -1.448863 -1.467418 -1.485036 -1.501718 -1.517467 -1.532288 -1.546186 -1.559168 -1.571244 -1.582423 -1.592714 -1.602130 -1.610682 -1.618384 -1.625248 -1.631290 -1.192145 1.166407 1.140676 1.115059 1.089698 1.064683 1.040063 1.015859 0.992074 0.968699 0.945664 0.922877 0.900214 0.877511 0.854611 0.831369 0.807636 0.783263 0.758162 0.732290 0.705609 0.678103 0.649725 0.620479 0.590431 0.559689 0.528341 0.496454 0.464084 0.431277 0.398073 0.364505 0.330603 0.296393 0.261898 0.227140 0.192138 0.156910 0.121473 0.085841 0.050030 0.014052 -0.022080 -0.058352 -0.094753 -0.131271 -0.167892 -0.204602 -0.241387 -0.278229 -0.315111 -0.352012 -0.388911 -0.425786 -0.462613 -0.499370 -0.536034 -0.572582 -0.608991 -0.645237 -0.681297 -0.717148 -0.752764 -0.788122 -0.823196 -0.857963 -0.892396 -0.926470 -0.960159 -0.993436 -1.026273 -1.058644 -1.090520 -1.121873 -1.152673 -1.182891 -1.212497 -1.241460 -1.269748 -1.297329 -1.324171 -1.350240 -1.375504 -1.399930 -1.423484 -1.446139 -1.467870 -1.488656 -1.508484 -1.527345 -1.545237 -1.562161 -1.578121 -1.593122 -1.607171 -1.620276 -1.632446 -1.643690 -1.654021 -1.663450 -1.671990 -1.679654 -1.686457 -1.692415 -1.210516 1.184146 1.157770 1.131423 1.105241 1.079360 1.053863 1.028783 1.004130 0.979906 0.956047 0.932473 0.909076 0.885699 0.862173 0.838340 0.814050 0.789163 0.763537 0.737122 0.709861 0.681737 0.652709 0.622751 0.591927 0.560348 0.528115 0.495303 0.461975 0.428180 0.393961 0.359356 0.324397 0.289112 0.253526 0.217663 0.181542 0.145184 0.108606 0.071823 0.034852 -0.002294 -0.039600 -0.077052 -0.114640 -0.152347 -0.190162 -0.228068 -0.266049 -0.304088 -0.342164 -0.380256 -0.418340 -0.456395 -0.494396 -0.532319 -0.570140 -0.607837 -0.645384 -0.682757 -0.719933 -0.756885 -0.793590 -0.830021 -0.866153 -0.901961 -0.937417 -0.972494 -1.007166 -1.041405 -1.075183 -1.108470 -1.141238 -1.173457 -1.205096 -1.236125 -1.266511 -1.296224 -1.325229 -1.353494 -1.380985 -1.407667 -1.433506 -1.458467 -1.482518 -1.505630 -1.527778 -1.548943 -1.569114 -1.588283 -1.606449 -1.623616 -1.639786 -1.654968 -1.669167 -1.682394 -1.694656 -1.705966 -1.716335 -1.725775 -1.734300 -1.741925 -1.748664 -1.754533 -1.228782 1.201786 1.174773 1.147765 1.120822 1.094097 1.067725 1.041764 1.016234 0.991149 0.966452 0.942069 0.917906 0.893825 0.869643 0.845193 0.820315 0.794881 0.768724 0.741759 0.713921 0.685177 0.655493 0.624824 0.593224 0.560805 0.527680 0.493934 0.459635 0.424839 0.389593 0.353937 0.317905 0.281529 0.244836 0.207850 0.170594 0.133088 0.095350 0.057399 0.019250 -0.019082 -0.057580 -0.096233 -0.135024 -0.173941 -0.212968 -0.252088 -0.291284 -0.330537 -0.369825 -0.409124 -0.448412 -0.487664 -0.526855 -0.565961 -0.604957 -0.643818 -0.682520 -0.721037 -0.759343 -0.797413 -0.835221 -0.872741 -0.909945 -0.946807 -0.983299 -1.019394 -1.055062 -1.090276 -1.125005 -1.159220 -1.192890 -1.225985 -1.258472 -1.290320 -1.321496 -1.351965 -1.381695 -1.410650 -1.438794 -1.466093 -1.492509 -1.518009 -1.542558 -1.566127 -1.588694 -1.610239 -1.630753 -1.650231 -1.668673 -1.686082 -1.702464 -1.717826 -1.732176 -1.745524 -1.757879 -1.769252 -1.779657 -1.789107 -1.797615 -1.805197 -1.811869 -1.817649 -1.246902 1.219329 1.191681 1.164031 1.136399 1.108878 1.081643 1.054801 1.028387 1.002430 0.976882 0.951671 0.926716 0.901899 0.877035 0.851943 0.826452 0.800432 0.773731 0.746208 0.717790 0.688427 0.658082 0.626703 0.594327 0.561063 0.527039 0.492349 0.457068 0.421259 0.384971 0.348249 0.311130 0.273647 0.235830 0.197705 0.159296 0.120624 0.081709 0.042571 0.003226 -0.036310 -0.076020 -0.115891 -0.155906 -0.196050 -0.236308 -0.276661 -0.317090 -0.357575 -0.398091 -0.438617 -0.479125 -0.519591 -0.559990 -0.600295 -0.640483 -0.680525 -0.720398 -0.760074 -0.799527 -0.838731 -0.877658 -0.916280 -0.954571 -0.992502 -1.030044 -1.067169 -1.103846 -1.140046 -1.175739 -1.210893 -1.245476 -1.279457 -1.312802 -1.345478 -1.377450 -1.408684 -1.439144 -1.468794 -1.497597 -1.525516 -1.552514 -1.578554 -1.603603 -1.627632 -1.650618 -1.672545 -1.693403 -1.713191 -1.731909 -1.749562 -1.766157 -1.781699 -1.796200 -1.809668 -1.822114 -1.833550 -1.843990 -1.853447 -1.861936 -1.869474 -1.876076 -1.881762 -1.264801 1.236746 1.208498 1.180206 1.151922 1.123674 1.095608 1.067889 1.040587 1.013749 0.987337 0.961285 0.935515 0.909933 0.884359 0.858601 0.832472 0.805837 0.778565 0.750476 0.721473 0.691490 0.660478 0.628390 0.595237 0.561125 0.526194 0.490550 0.454277 0.417441 0.380098 0.342296 0.304074 0.265468 0.226511 0.187229 0.147649 0.107794 0.067685 0.027341 -0.013219 -0.053977 -0.094918 -0.136025 -0.177282 -0.218673 -0.260180 -0.301784 -0.343464 -0.385199 -0.426963 -0.468731 -0.510477 -0.552175 -0.593798 -0.635321 -0.676716 -0.717957 -0.759017 -0.799868 -0.840484 -0.880837 -0.920898 -0.960638 -1.000030 -1.039044 -1.077650 -1.115818 -1.153517 -1.190717 -1.227385 -1.263489 -1.298996 -1.333872 -1.368084 -1.401596 -1.434374 -1.466379 -1.497576 -1.527927 -1.557394 -1.585938 -1.613520 -1.640103 -1.665654 -1.690144 -1.713551 -1.735860 -1.757065 -1.777164 -1.796160 -1.814058 -1.830865 -1.846589 -1.861239 -1.874827 -1.887363 -1.898861 -1.909334 -1.918797 -1.927265 -1.934755 -1.941285 -1.946874 -1.282397 1.253973 1.225207 1.196292 1.167360 1.138440 1.109599 1.081021 1.052831 1.025104 0.997819 0.970912 0.944309 0.917934 0.891624 0.865174 0.838387 0.811111 0.783236 0.754569 0.724975 0.694368 0.662689 0.629889 0.595957 0.560993 0.525149 0.488542 0.451265 0.413390 0.374978 0.336079 0.296739 0.256995 0.216880 0.176425 0.135657 0.094601 0.053279 0.011712 -0.030081 -0.072081 -0.114271 -0.156633 -0.199151 -0.241807 -0.284582 -0.327456 -0.370406 -0.413408 -0.456436 -0.499465 -0.542466 -0.585414 -0.628279 -0.671035 -0.713656 -0.756111 -0.798375 -0.840419 -0.882213 -0.923730 -0.964941 -1.005814 -1.046322 -1.086433 -1.126116 -1.165341 -1.204075 -1.242286 -1.279941 -1.317007 -1.353448 -1.389231 -1.424319 -1.458677 -1.492267 -1.525051 -1.556992 -1.588050 -1.618185 -1.647357 -1.675527 -1.702656 -1.728711 -1.753664 -1.777493 -1.800187 -1.821739 -1.842151 -1.861426 -1.879570 -1.896590 -1.912495 -1.927296 -1.941003 -1.953629 -1.965187 -1.975692 -1.985158 -1.993603 -2.001043 -2.007499 -2.012988 -1.299656 1.270934 1.241759 1.212284 1.182711 1.153135 1.123586 1.094187 1.065116 1.036496 1.008326 0.980553 0.953103 0.925911 0.898839 0.871673 0.844207 0.816268 0.787756 0.758492 0.728300 0.697065 0.664717 0.631202 0.596490 0.560671 0.523906 0.486326 0.448033 0.409106 0.369611 0.329603 0.289128 0.248229 0.206940 0.165295 0.123322 0.081046 0.038493 -0.004316 -0.047360 -0.090620 -0.134077 -0.177714 -0.221512 -0.265452 -0.309514 -0.353675 -0.397912 -0.442200 -0.486511 -0.530818 -0.575092 -0.619306 -0.663431 -0.707439 -0.751301 -0.794989 -0.838473 -0.881725 -0.924714 -0.967411 -1.009786 -1.051808 -1.093446 -1.134669 -1.175443 -1.215738 -1.255520 -1.294755 -1.333409 -1.371447 -1.408833 -1.445532 -1.481506 -1.516718 -1.551129 -1.584700 -1.617391 -1.649161 -1.679970 -1.709775 -1.738536 -1.766213 -1.792774 -1.818191 -1.842445 -1.865525 -1.887427 -1.908154 -1.927709 -1.946099 -1.963333 -1.979420 -1.994371 -2.008198 -2.020912 -2.032529 -2.043064 -2.052532 -2.060951 -2.068340 -2.074718 -2.080105 -1.316591 1.287584 1.258084 1.228151 1.197976 1.167746 1.137527 1.107366 1.077435 1.047921 1.018860 0.990208 0.961899 0.933871 0.906011 0.878106 0.849940 0.821317 0.792139 0.762254 0.731453 0.699584 0.666566 0.632332 0.596838 0.560160 0.522467 0.483906 0.444585 0.404593 0.364001 0.322867 0.281243 0.239172 0.196693 0.153840 0.110644 0.067132 0.023330 -0.020739 -0.065054 -0.109593 -0.154337 -0.199267 -0.244363 -0.289605 -0.334972 -0.380439 -0.425982 -0.471574 -0.517186 -0.562789 -0.608354 -0.653852 -0.699253 -0.744530 -0.789651 -0.834587 -0.879309 -0.923785 -0.967985 -1.011879 -1.055434 -1.098619 -1.141402 -1.183750 -1.225630 -1.267009 -1.307851 -1.348122 -1.387787 -1.426809 -1.465151 -1.502776 -1.539645 -1.575720 -1.610960 -1.645324 -1.678772 -1.711261 -1.742748 -1.773190 -1.802545 -1.830774 -1.857844 -1.883728 -1.908408 -1.931876 -1.954130 -1.975172 -1.995009 -2.013648 -2.031097 -2.047366 -2.062467 -2.076412 -2.089214 -2.100889 -2.111452 -2.120920 -2.129312 -2.136646 -2.142943 -2.148225 -1.333234 1.303922 1.274126 1.243832 1.213141 1.182275 1.151393 1.120529 1.089777 1.059377 1.029419 0.999880 0.970699 0.941818 0.913147 0.884480 0.855591 0.826265 0.796399 0.765863 0.734437 0.701928 0.668240 0.633280 0.597003 0.559463 0.520836 0.481282 0.440923 0.399853 0.358149 0.315876 0.273086 0.229828 0.186141 0.142063 0.097626 0.052859 0.007790 -0.037558 -0.083161 -0.128997 -0.175047 -0.221289 -0.267702 -0.314266 -0.360956 -0.407748 -0.454615 -0.501528 -0.548458 -0.595375 -0.642249 -0.689049 -0.735745 -0.782308 -0.828705 -0.874907 -0.920882 -0.966599 -1.012027 -1.057132 -1.101883 -1.146247 -1.190189 -1.233678 -1.276677 -1.319152 -1.361068 -1.402388 -1.443075 -1.483093 -1.522402 -1.560963 -1.598737 -1.635683 -1.671760 -1.706925 -1.741137 -1.774349 -1.806520 -1.837603 -1.867556 -1.896339 -1.923920 -1.950273 -1.975382 -1.999240 -2.021848 -2.043209 -2.063329 -2.082216 -2.099881 -2.116332 -2.131583 -2.145646 -2.158536 -2.170267 -2.180857 -2.190324 -2.198686 -2.205963 -2.212177 -2.217351 -1.349620 1.319973 1.289874 1.259267 1.228162 1.196718 1.165177 1.133639 1.102125 1.070858 1.040002 1.009567 0.979503 0.949756 0.920251 0.890803 0.861168 0.831121 0.800544 0.769328 0.737257 0.704106 0.669739 0.634049 0.596987 0.558583 0.519014 0.478458 0.437049 0.394888 0.352059 0.308630 0.264659 0.220196 0.175285 0.129965 0.084270 0.038230 -0.008125 -0.054770 -0.101680 -0.148833 -0.196206 -0.243779 -0.291529 -0.339432 -0.387465 -0.435600 -0.483809 -0.532062 -0.580329 -0.628577 -0.676777 -0.724897 -0.772906 -0.820771 -0.868462 -0.915947 -0.963193 -1.010168 -1.056838 -1.103171 -1.149133 -1.194691 -1.239808 -1.284451 -1.328583 -1.372169 -1.415171 -1.457552 -1.499274 -1.540298 -1.580584 -1.620092 -1.658780 -1.696607 -1.733529 -1.769503 -1.804484 -1.838426 -1.871285 -1.903013 -1.933568 -1.962908 -1.991003 -2.017827 -2.043367 -2.067619 -2.090583 -2.112264 -2.132669 -2.151806 -2.169687 -2.186321 -2.201722 -2.215903 -2.228878 -2.240665 -2.251281 -2.260744 -2.269074 -2.276292 -2.282421 -2.287483 -1.365769 1.335770 1.305340 1.274426 1.242980 1.211054 1.178883 1.146673 1.114450 1.082355 1.050607 1.019269 0.988312 0.957686 0.927328 0.897078 0.866676 0.835890 0.804584 0.772660 0.739921 0.706118 0.671067 0.634645 0.596793 0.557520 0.517003 0.475436 0.432965 0.389700 0.345731 0.301131 0.255963 0.210280 0.164128 0.117548 0.070576 0.023246 -0.024413 -0.072373 -0.120609 -0.169097 -0.217814 -0.266737 -0.315841 -0.365104 -0.414497 -0.463993 -0.513563 -0.563174 -0.612795 -0.662394 -0.711938 -0.761396 -0.810734 -0.859921 -0.908923 -0.957707 -1.006240 -1.054489 -1.102419 -1.149996 -1.197185 -1.243950 -1.290257 -1.336069 -1.381348 -1.426058 -1.470159 -1.513614 -1.556383 -1.598425 -1.639699 -1.680163 -1.719775 -1.758491 -1.796266 -1.833056 -1.868813 -1.903492 -1.937044 -1.969422 -2.000581 -2.030482 -2.059092 -2.086391 -2.112365 -2.137012 -2.160335 -2.182338 -2.203029 -2.222419 -2.240516 -2.257334 -2.272884 -2.287182 -2.300243 -2.312085 -2.322724 -2.332182 -2.340478 -2.347634 -2.353674 -2.358622 -1.381673 1.351337 1.320553 1.289314 1.257551 1.225235 1.192503 1.159628 1.126722 1.093853 1.061229 1.028986 0.997126 0.965610 0.934383 0.903308 0.872122 0.840578 0.808525 0.775870 0.742438 0.707969 0.672225 0.635069 0.596422 0.556278 0.514806 0.472218 0.428673 0.384290 0.339167 0.293382 0.247000 0.200080 0.152669 0.104812 0.056547 0.007908 -0.041073 -0.090368 -0.139948 -0.189790 -0.239869 -0.290160 -0.340639 -0.391278 -0.442051 -0.492927 -0.543876 -0.594863 -0.645857 -0.696824 -0.747731 -0.798544 -0.849230 -0.899755 -0.950085 -1.000186 -1.050023 -1.099563 -1.148768 -1.197605 -1.246036 -1.294026 -1.341537 -1.388532 -1.434972 -1.480819 -1.526033 -1.570574 -1.614401 -1.657473 -1.699745 -1.741176 -1.781722 -1.821335 -1.859972 -1.897585 -1.934126 -1.969546 -2.003796 -2.036828 -2.068595 -2.099060 -2.128190 -2.155966 -2.182377 -2.207422 -2.231105 -2.253432 -2.274412 -2.294054 -2.312369 -2.329370 -2.345071 -2.359485 -2.372631 -2.384526 -2.395188 -2.404638 -2.412898 -2.419990 -2.425939 -2.430770 -1.397278 1.366680 1.335539 1.303949 1.271863 1.239210 1.206013 1.172508 1.138920 1.105329 1.071861 1.038715 1.005946 0.973529 0.941419 0.909499 0.877510 0.845189 0.812372 0.778963 0.744814 0.709659 0.673215 0.635324 0.595878 0.554858 0.512424 0.468805 0.424174 0.378661 0.332370 0.285383 0.237773 0.189598 0.140912 0.091760 0.042183 -0.007783 -0.058104 -0.108751 -0.159696 -0.210910 -0.262370 -0.314048 -0.365919 -0.417955 -0.470126 -0.522401 -0.574746 -0.627129 -0.679514 -0.731867 -0.784155 -0.836341 -0.888392 -0.940273 -0.991949 -1.043384 -1.094543 -1.145389 -1.195887 -1.245999 -1.295688 -1.344917 -1.393647 -1.441840 -1.489455 -1.536453 -1.582792 -1.628432 -1.673330 -1.717442 -1.760724 -1.803132 -1.844620 -1.885140 -1.924647 -1.963090 -2.000420 -2.036588 -2.071541 -2.105231 -2.137611 -2.168642 -2.198295 -2.226551 -2.253402 -2.278848 -2.302895 -2.325548 -2.346818 -2.366714 -2.385247 -2.402432 -2.418282 -2.432813 -2.446043 -2.457989 -2.468673 -2.478114 -2.486335 -2.493361 -2.499216 -2.503927 -1.412514 1.381770 1.350312 1.318357 1.285927 1.252945 1.219367 1.185304 1.151042 1.116755 1.082492 1.048455 1.014771 0.981443 0.948438 0.915653 0.882845 0.849727 0.816129 0.781948 0.747056 0.711193 0.674043 0.635412 0.595162 0.553262 0.509859 0.465200 0.419472 0.372815 0.325340 0.277137 0.228281 0.178836 0.128858 0.078393 0.027487 -0.023825 -0.075505 -0.127523 -0.179850 -0.232456 -0.285316 -0.338400 -0.391683 -0.445134 -0.498721 -0.552413 -0.606174 -0.659970 -0.713765 -0.767523 -0.821209 -0.874787 -0.928221 -0.981476 -1.034514 -1.087300 -1.139797 -1.191967 -1.243773 -1.295177 -1.346140 -1.396623 -1.446587 -1.495992 -1.544796 -1.592958 -1.640437 -1.687188 -1.733167 -1.778332 -1.822634 -1.866029 -1.908469 -1.949906 -1.990290 -2.029571 -2.067698 -2.104619 -2.140280 -2.174633 -2.207629 -2.239230 -2.269409 -2.298148 -2.325442 -2.351292 -2.375704 -2.398686 -2.420247 -2.440398 -2.459151 -2.476520 -2.492520 -2.507167 -2.520480 -2.532477 -2.543180 -2.552610 -2.560791 -2.567748 -2.573507 -2.578095 -1.427322 1.396544 1.364866 1.332556 1.299762 1.266441 1.232520 1.197993 1.163089 1.128112 1.093105 1.058199 1.023601 0.989352 0.955440 0.921775 0.888129 0.854196 0.819801 0.784830 0.749169 0.712577 0.674713 0.635336 0.594275 0.551492 0.507114 0.461404 0.414567 0.366752 0.318079 0.268645 0.218527 0.167795 0.116507 0.064713 0.012458 -0.040216 -0.093275 -0.146683 -0.200410 -0.254427 -0.308705 -0.363215 -0.417928 -0.472813 -0.527836 -0.582963 -0.638159 -0.693386 -0.748609 -0.803790 -0.858893 -0.913880 -0.968716 -1.023361 -1.077780 -1.131935 -1.185787 -1.239297 -1.292428 -1.345139 -1.397392 -1.449145 -1.500358 -1.550989 -1.600996 -1.650336 -1.698966 -1.746841 -1.793915 -1.840143 -1.885477 -1.929869 -1.973271 -2.015632 -2.056902 -2.097028 -2.135958 -2.173638 -2.210013 -2.245032 -2.278648 -2.310823 -2.341531 -2.370757 -2.398497 -2.424754 -2.449535 -2.472847 -2.494701 -2.515109 -2.534082 -2.551635 -2.567785 -2.582548 -2.595942 -2.607989 -2.618710 -2.628128 -2.636266 -2.643152 -2.648811 -2.653274 -1.441667 1.410941 1.379161 1.346556 1.313389 1.279709 1.245447 1.210534 1.175058 1.139394 1.103676 1.067942 1.032433 0.997257 0.962428 0.927867 0.893364 0.858602 0.823390 0.787612 0.751163 0.713817 0.675229 0.635097 0.593220 0.549550 0.504189 0.457419 0.409460 0.360475 0.310590 0.259908 0.208512 0.156476 0.103861 0.050719 -0.002901 -0.056957 -0.111412 -0.166228 -0.221376 -0.276822 -0.332538 -0.388492 -0.444654 -0.500991 -0.557469 -0.614050 -0.670699 -0.727377 -0.784046 -0.840668 -0.897206 -0.953621 -1.009876 -1.065930 -1.121747 -1.177287 -1.232511 -1.287379 -1.341850 -1.395885 -1.449443 -1.502481 -1.554958 -1.606830 -1.658054 -1.708586 -1.758380 -1.807391 -1.855572 -1.902874 -1.949250 -1.994650 -2.039023 -2.082318 -2.124482 -2.165461 -2.205200 -2.243645 -2.280739 -2.316429 -2.350669 -2.383421 -2.414662 -2.444378 -2.472568 -2.499235 -2.524387 -2.548032 -2.570181 -2.590846 -2.610040 -2.627778 -2.644077 -2.658955 -2.672431 -2.684527 -2.695264 -2.704667 -2.712761 -2.719573 -2.725131 -2.729465 -1.455533 1.424919 1.393133 1.360340 1.326821 1.292767 1.258151 1.222884 1.186928 1.150604 1.114185 1.077670 1.041265 1.005158 0.969401 0.933931 0.898554 0.862948 0.826901 0.790299 0.753041 0.714922 0.675591 0.634696 0.591998 0.547436 0.501087 0.453247 0.404155 0.353985 0.302873 0.250927 0.198238 0.144881 0.090921 0.036414 -0.018590 -0.074046 -0.129915 -0.186159 -0.242745 -0.299640 -0.356812 -0.414230 -0.471861 -0.529669 -0.587619 -0.645674 -0.703794 -0.761941 -0.820075 -0.878158 -0.936149 -0.994010 -1.051701 -1.109182 -1.166414 -1.223357 -1.279970 -1.336211 -1.392040 -1.447415 -1.502293 -1.556632 -1.610387 -1.663515 -1.715970 -1.767707 -1.818679 -1.868839 -1.918138 -1.966527 -2.013956 -2.060373 -2.105727 -2.149964 -2.193030 -2.234869 -2.275425 -2.314641 -2.352458 -2.388824 -2.423692 -2.457026 -2.488803 -2.519013 -2.547655 -2.574736 -2.600261 -2.624241 -2.646686 -2.667610 -2.687026 -2.704949 -2.721398 -2.736391 -2.749948 -2.762091 -2.772843 -2.782230 -2.790277 -2.797013 -2.802466 -2.806668 -1.468901 1.438456 1.406733 1.373863 1.340063 1.305630 1.270645 1.235024 1.198665 1.161740 1.124621 1.087367 1.050093 1.013053 0.976360 0.939968 0.903701 0.867237 0.830337 0.792897 0.754810 0.715894 0.675802 0.634135 0.590613 0.545153 0.497808 0.448889 0.398651 0.347283 0.294929 0.241705 0.187705 0.133010 0.077688 0.021798 -0.034608 -0.091483 -0.148784 -0.206475 -0.264518 -0.322881 -0.381528 -0.440429 -0.499546 -0.558845 -0.618287 -0.677833 -0.737444 -0.797079 -0.856696 -0.916257 -0.975720 -1.035045 -1.094190 -1.153116 -1.211782 -1.270144 -1.328163 -1.385795 -1.442998 -1.499729 -1.555943 -1.611597 -1.666646 -1.721044 -1.774744 -1.827700 -1.879863 -1.931184 -1.981613 -2.031100 -2.079593 -2.127038 -2.173383 -2.218571 -2.262547 -2.305254 -2.346633 -2.386625 -2.425171 -2.462217 -2.497717 -2.531636 -2.563954 -2.594661 -2.623760 -2.651257 -2.677158 -2.701475 -2.724219 -2.745402 -2.765041 -2.783150 -2.799748 -2.814855 -2.828492 -2.840681 -2.851447 -2.860815 -2.868814 -2.875471 -2.880818 -2.884886 -1.481737 1.451540 1.419932 1.387069 1.353096 1.318312 1.282943 1.246955 1.210230 1.172790 1.134985 1.097013 1.058910 1.020943 0.983305 0.945979 0.908808 0.871469 0.833701 0.795407 0.756474 0.716738 0.675864 0.633416 0.589066 0.542702 0.494356 0.444346 0.392951 0.340371 0.286760 0.232241 0.176915 0.120865 0.064163 0.006872 -0.050953 -0.109265 -0.168018 -0.227174 -0.286694 -0.346543 -0.406685 -0.467086 -0.527710 -0.588518 -0.649471 -0.710528 -0.771648 -0.832789 -0.893909 -0.954966 -1.015919 -1.076726 -1.137345 -1.197733 -1.257849 -1.317649 -1.377090 -1.436130 -1.494723 -1.552825 -1.610392 -1.667377 -1.723734 -1.779417 -1.834376 -1.888564 -1.941931 -1.994426 -2.045998 -2.096594 -2.146161 -2.194645 -2.241989 -2.288138 -2.333032 -2.376614 -2.418823 -2.459597 -2.498878 -2.536609 -2.572745 -2.607253 -2.640115 -2.671324 -2.700883 -2.728799 -2.755079 -2.779735 -2.802778 -2.824223 -2.844085 -2.862380 -2.879128 -2.894349 -2.908065 -2.920299 -2.931077 -2.940426 -2.948373 -2.954950 -2.960187 -2.964117 -1.493976 1.464148 1.432716 1.399915 1.365876 1.330812 1.295059 1.258691 1.221598 1.183726 1.145279 1.106593 1.067705 1.028823 0.990237 0.951965 0.913878 0.875647 0.836995 0.797832 0.758036 0.717459 0.675783 0.632544 0.587360 0.540084 0.490730 0.439620 0.387055 0.333249 0.278367 0.222538 0.165868 0.108446 0.050348 -0.008362 -0.067626 -0.127393 -0.187617 -0.248256 -0.309271 -0.370625 -0.432282 -0.494203 -0.556352 -0.618688 -0.681171 -0.743758 -0.806406 -0.869072 -0.931713 -0.994285 -1.056747 -1.119054 -1.181163 -1.243031 -1.304615 -1.365870 -1.426752 -1.487215 -1.547215 -1.606705 -1.665640 -1.723971 -1.781652 -1.838634 -1.894866 -1.950300 -2.004884 -2.058565 -2.111292 -2.163009 -2.213661 -2.263193 -2.311547 -2.358665 -2.404486 -2.448950 -2.491995 -2.533558 -2.573578 -2.611999 -2.648775 -2.683877 -2.717288 -2.749002 -2.779024 -2.807362 -2.834024 -2.859021 -2.882366 -2.904073 -2.924159 -2.942641 -2.959538 -2.974873 -2.988667 -3.000945 -3.011734 -3.021061 -3.028955 -3.035449 -3.040574 -3.044364 -1.505548 1.476237 1.445073 1.412385 1.378350 1.343114 1.307003 1.270243 1.232770 1.194515 1.155497 1.116101 1.076464 1.036692 0.997154 0.957928 0.918911 0.879772 0.840224 0.800175 0.759497 0.718061 0.675561 0.631520 0.585496 0.537302 0.486933 0.434713 0.380965 0.325920 0.269751 0.212596 0.154566 0.095755 0.036242 -0.023904 -0.084624 -0.145865 -0.207578 -0.269720 -0.332250 -0.395129 -0.458318 -0.521779 -0.585472 -0.649355 -0.713387 -0.777523 -0.841717 -0.905927 -0.970107 -1.034214 -1.098202 -1.162027 -1.225645 -1.289012 -1.352081 -1.414808 -1.477147 -1.539051 -1.600474 -1.661368 -1.721687 -1.781380 -1.840399 -1.898694 -1.956214 -2.012907 -2.068721 -2.123602 -2.177495 -2.230344 -2.282093 -2.332683 -2.382057 -2.430152 -2.476908 -2.522263 -2.566150 -2.608508 -2.649272 -2.688387 -2.725809 -2.761508 -2.795471 -2.827695 -2.858185 -2.886948 -2.913994 -2.939334 -2.962982 -2.984953 -3.005264 -3.023932 -3.040979 -3.056427 -3.070298 -3.082620 -3.093418 -3.102721 -3.110561 -3.116969 -3.121979 -3.125626 -1.516404 1.487747 1.456975 1.424465 1.390485 1.355176 1.318775 1.281621 1.243758 1.205128 1.165623 1.125540 1.085169 1.044543 1.004057 0.963868 0.923908 0.883847 0.843389 0.802437 0.760863 0.718549 0.675204 0.630346 0.583476 0.534356 0.482965 0.429625 0.374683 0.318384 0.260913 0.202416 0.143010 0.082793 0.021848 -0.039754 -0.101949 -0.164681 -0.227902 -0.291566 -0.355629 -0.420051 -0.484792 -0.549812 -0.615068 -0.680518 -0.746118 -0.811821 -0.877582 -0.943354 -1.009092 -1.074751 -1.140284 -1.205646 -1.270792 -1.335674 -1.400246 -1.464462 -1.528275 -1.591637 -1.654500 -1.716814 -1.778532 -1.839602 -1.899975 -1.959598 -2.018419 -2.076386 -2.133443 -2.189535 -2.244607 -2.298600 -2.351456 -2.403115 -2.453517 -2.502600 -2.550299 -2.596551 -2.641288 -2.684445 -2.725959 -2.765774 -2.803845 -2.840147 -2.874667 -2.907405 -2.938365 -2.967556 -2.994988 -3.020674 -3.044627 -3.066863 -3.087400 -3.106256 -3.123452 -3.139012 -3.152961 -3.165324 -3.176129 -3.185408 -3.193190 -3.199510 -3.204403 -3.207904 -1.526530 1.498619 1.468380 1.436144 1.402266 1.366953 1.330362 1.292836 1.254573 1.215554 1.175632 1.134909 1.093809 1.052369 1.010944 0.969786 0.928869 0.887874 0.846491 0.804621 0.762135 0.718925 0.674718 0.629025 0.581301 0.531248 0.478828 0.424358 0.368209 0.310643 0.251855 0.191999 0.131200 0.069559 0.007165 -0.055909 -0.119597 -0.183841 -0.248589 -0.313793 -0.379408 -0.445393 -0.511705 -0.578303 -0.645141 -0.712177 -0.779363 -0.846653 -0.913998 -0.981352 -1.048667 -1.115897 -1.182994 -1.249911 -1.316601 -1.383017 -1.449110 -1.514833 -1.580137 -1.644973 -1.709292 -1.773043 -1.836176 -1.898639 -1.960380 -2.021346 -2.081483 -2.140736 -2.199049 -2.256366 -2.312628 -2.367776 -2.421750 -2.474489 -2.525929 -2.576007 -2.624658 -2.671814 -2.717408 -2.761372 -2.803641 -2.844159 -2.882885 -2.919794 -2.954876 -2.988130 -3.019565 -3.049187 -3.077009 -3.103043 -3.127302 -3.149804 -3.170567 -3.189611 -3.206957 -3.222629 -3.236654 -3.249057 -3.259869 -3.269121 -3.276844 -3.283074 -3.287847 -3.291199 -1.535945 1.508819 1.479233 1.447394 1.413686 1.378414 1.341730 1.303889 1.265222 1.225803 1.185491 1.144202 1.102379 1.060159 1.017812 0.975680 0.933796 0.891854 0.849532 0.806727 0.763316 0.719194 0.674104 0.627558 0.578972 0.527980 0.474524 0.418913 0.361545 0.302697 0.242577 0.181347 0.119138 0.056056 -0.007806 -0.072371 -0.137570 -0.203343 -0.269636 -0.336400 -0.403587 -0.471153 -0.539056 -0.607250 -0.675691 -0.744331 -0.813123 -0.882018 -0.950967 -1.019921 -1.088832 -1.157651 -1.226330 -1.294821 -1.363074 -1.431041 -1.498673 -1.565920 -1.632733 -1.699060 -1.764851 -1.830055 -1.894619 -1.958489 -2.021614 -2.083937 -2.145403 -2.205957 -2.265540 -2.324094 -2.381558 -2.437873 -2.492976 -2.546804 -2.599293 -2.650375 -2.699986 -2.748054 -2.794511 -2.839287 -2.882316 -2.923544 -2.962929 -3.000450 -3.036097 -3.069873 -3.101785 -3.131843 -3.160056 -3.186439 -3.211007 -3.233777 -3.254767 -3.273999 -3.291494 -3.307279 -3.321378 -3.333821 -3.344638 -3.353861 -3.361523 -3.367661 -3.372310 -3.375512 -1.544683 1.518345 1.489484 1.458173 1.424731 1.389546 1.352839 1.314772 1.275714 1.235887 1.195181 1.153404 1.110880 1.067900 1.024659 0.981551 0.938690 0.895790 0.852513 0.808758 0.764409 0.719358 0.673365 0.625948 0.576490 0.524553 0.470054 0.413292 0.354691 0.294547 0.233080 0.170459 0.106823 0.042284 -0.023064 -0.089137 -0.155866 -0.223188 -0.291045 -0.359386 -0.428164 -0.497332 -0.566844 -0.636654 -0.706716 -0.776980 -0.847397 -0.917917 -0.988488 -1.059062 -1.129587 -1.200014 -1.270294 -1.340376 -1.410210 -1.479747 -1.548935 -1.617724 -1.686061 -1.753897 -1.821177 -1.887849 -1.953860 -2.019154 -2.083676 -2.147372 -2.210182 -2.272049 -2.332915 -2.392718 -2.451398 -2.508891 -2.565134 -2.620061 -2.673607 -2.725704 -2.776282 -2.825270 -2.872597 -2.918190 -2.961986 -3.003928 -3.043977 -3.082114 -3.118332 -3.152633 -3.185027 -3.215522 -3.244130 -3.270865 -3.295743 -3.318781 -3.339999 -3.359419 -3.377064 -3.392960 -3.407134 -3.419616 -3.430436 -3.439629 -3.447228 -3.453270 -3.457795 -3.460842 -1.552792 1.527219 1.499111 1.468433 1.435375 1.400342 1.363657 1.325460 1.286053 1.245816 1.204699 1.162493 1.119311 1.075578 1.031479 0.987399 0.943551 0.899681 0.855435 0.810717 0.765415 0.719418 0.672503 0.624198 0.573858 0.520968 0.465418 0.407494 0.347648 0.286194 0.223364 0.159338 0.094258 0.028243 -0.038607 -0.106208 -0.174485 -0.243373 -0.312813 -0.382752 -0.453140 -0.523928 -0.595068 -0.666514 -0.738216 -0.810123 -0.882185 -0.954348 -1.026561 -1.098772 -1.170931 -1.242985 -1.314884 -1.386576 -1.458010 -1.529133 -1.599895 -1.670243 -1.740123 -1.809483 -1.878269 -1.946426 -2.013899 -2.080632 -2.146568 -2.211650 -2.275818 -2.339013 -2.401174 -2.462240 -2.522146 -2.580829 -2.638223 -2.694260 -2.748873 -2.801992 -2.853546 -2.903461 -2.951665 -2.998083 -3.042650 -3.085311 -3.126029 -3.164787 -3.201580 -3.236411 -3.269290 -3.300226 -3.329231 -3.356320 -3.381510 -3.404818 -3.426265 -3.445874 -3.463668 -3.479675 -3.493923 -3.506442 -3.517264 -3.526424 -3.533958 -3.539904 -3.544301 -3.547191 -1.560330 1.535474 1.508118 1.478136 1.445580 1.410792 1.374171 1.335918 1.296235 1.255594 1.214053 1.171443 1.127669 1.083189 1.038266 0.993222 0.948379 0.903529 0.858300 0.812606 0.766336 0.719378 0.671521 0.622311 0.571075 0.517226 0.460617 0.401522 0.340419 0.277640 0.213432 0.147982 0.081442 0.013934 -0.054437 -0.123583 -0.193426 -0.263900 -0.334942 -0.406497 -0.478514 -0.550941 -0.623730 -0.696830 -0.770191 -0.843761 -0.917485 -0.991311 -1.065185 -1.139054 -1.212864 -1.286564 -1.360100 -1.433421 -1.506472 -1.579201 -1.651554 -1.723478 -1.794918 -1.865820 -1.936128 -2.005786 -2.074737 -2.142924 -2.210288 -2.276771 -2.342311 -2.406848 -2.470318 -2.532658 -2.593804 -2.653688 -2.712243 -2.769400 -2.825090 -2.879241 -2.931779 -2.982629 -3.031716 -3.078964 -3.124308 -3.167693 -3.209086 -3.248470 -3.285842 -3.321208 -3.354575 -3.385954 -3.415359 -3.442805 -3.468308 -3.491887 -3.513564 -3.533362 -3.551306 -3.567424 -3.581744 -3.594300 -3.605123 -3.614249 -3.621715 -3.627562 -3.631828 -3.634559 +0.069339 0.069308 0.069285 0.069270 0.069265 0.069269 0.069284 0.069310 0.069348 0.069398 0.069462 0.069539 0.069631 0.069739 0.069861 0.070000 0.070156 0.070327 0.070515 0.070720 0.070940 0.071176 0.071427 0.071692 0.071969 0.072258 0.072555 0.072859 0.073167 0.073476 0.073784 0.074087 0.074381 0.074663 0.074929 0.075176 0.075399 0.075596 0.075762 0.075894 0.075989 0.076043 0.076053 0.076016 0.075927 0.075785 0.075585 0.075325 0.075002 0.074613 0.074156 0.073630 0.073033 0.072366 0.071627 0.070817 0.069936 0.068984 0.067961 0.066869 +0.091816 0.092094 0.092396 0.092723 0.093076 0.093455 0.093861 0.094295 0.094755 0.095243 0.095757 0.096297 0.096861 0.097447 0.098053 0.098676 0.099312 0.099957 0.100607 0.101256 0.101899 0.102530 0.103144 0.103734 0.104293 0.104816 0.105296 0.105727 0.106103 0.106417 0.106664 0.106838 0.106932 0.106941 0.106859 0.106681 0.106400 0.106014 0.105518 0.104909 0.104185 0.103345 0.102388 0.101314 0.100122 0.098813 0.097389 0.095850 0.094199 0.092438 0.090571 0.088602 0.086535 0.084376 0.082128 0.079796 0.077386 0.074902 0.072348 0.069728 +0.123474 0.124304 0.125175 0.126087 0.127037 0.128023 0.129041 0.130088 0.131158 0.132246 0.133343 0.134443 0.135537 0.136617 0.137673 0.138697 0.139677 0.140604 0.141468 0.142259 0.142968 0.143584 0.144098 0.144499 0.144778 0.144924 0.144928 0.144781 0.144475 0.144004 0.143363 0.142545 0.141549 0.140372 0.139013 0.137471 0.135746 0.133841 0.131760 0.129505 0.127085 0.124505 0.121773 0.118897 0.115886 0.112748 0.109490 0.106121 0.102647 0.099075 0.095413 0.091668 0.087844 0.083950 0.079990 0.075971 0.071896 0.067772 0.063601 0.059389 +0.165573 0.167151 0.168765 0.170407 0.172067 0.173733 0.175395 0.177039 0.178652 0.180220 0.181729 0.183164 0.184510 0.185754 0.186878 0.187869 0.188712 0.189389 0.189886 0.190188 0.190280 0.190149 0.189783 0.189173 0.188309 0.187185 0.185796 0.184139 0.182213 0.180019 0.177561 0.174845 0.171880 0.168676 0.165246 0.161600 0.157753 0.153718 0.149506 0.145130 0.140602 0.135933 0.131135 0.126219 0.121193 0.116069 0.110856 0.105560 0.100191 0.094755 0.089257 0.083702 0.078096 0.072442 0.066745 0.061010 0.055241 0.049443 0.043622 0.037783 +0.218578 0.220933 0.223272 0.225577 0.227828 0.230005 0.232089 0.234057 0.235890 0.237566 0.239062 0.240355 0.241423 0.242243 0.242792 0.243051 0.242998 0.242616 0.241890 0.240808 0.239359 0.237537 0.235341 0.232770 0.229830 0.226529 0.222880 0.218899 0.214602 0.210008 0.205136 0.200003 0.194628 0.189031 0.183227 0.177236 0.171072 0.164753 0.158293 0.151707 0.145007 0.138204 0.131310 0.124334 0.117282 0.110162 0.102979 0.095739 0.088445 0.081102 0.073715 0.066289 0.058829 0.051339 0.043826 0.036297 0.028760 0.021226 0.013705 0.006209 +0.282170 0.285137 0.287984 0.290683 0.293205 0.295519 0.297595 0.299400 0.300902 0.302068 0.302869 0.303275 0.303257 0.302793 0.301860 0.300443 0.298532 0.296122 0.293212 0.289810 0.285926 0.281576 0.276781 0.271564 0.265950 0.259965 0.253634 0.246983 0.240038 0.232824 0.225364 0.217682 0.209800 0.201739 0.193518 0.185154 0.176663 0.168059 0.159356 0.150563 0.141688 0.132740 0.123724 0.114645 0.105508 0.096317 0.087076 0.077790 0.068461 0.059097 0.049704 0.040290 0.030866 0.021442 0.012031 0.002650 -0.006687 -0.015961 -0.025154 -0.034244 +0.355551 0.358777 0.361717 0.364329 0.366570 0.368394 0.369761 0.370630 0.370962 0.370725 0.369889 0.368433 0.366343 0.363614 0.360246 0.356249 0.351638 0.346433 0.340662 0.334354 0.327543 0.320263 0.312549 0.304434 0.295952 0.287135 0.278014 0.268620 0.258980 0.249121 0.239067 0.228841 0.218462 0.207950 0.197319 0.186585 0.175758 0.164846 0.153858 0.142798 0.131672 0.120482 0.109234 0.097930 0.086576 0.075176 0.063737 0.052267 0.040774 0.029272 0.017772 0.006292 -0.005152 -0.016539 -0.027850 -0.039058 -0.050141 -0.061071 -0.071820 -0.082362 +0.437424 0.440279 0.442600 0.444333 0.445428 0.445839 0.445527 0.444462 0.442621 0.439990 0.436568 0.432363 0.427391 0.421674 0.415241 0.408127 0.400373 0.392023 0.383119 0.373706 0.363825 0.353517 0.342820 0.331771 0.320406 0.308758 0.296858 0.284735 0.272415 0.259924 0.247283 0.234511 0.221625 0.208636 0.195556 0.182390 0.169146 0.155828 0.142442 0.128990 0.115476 0.101906 0.088285 0.074617 0.060910 0.047175 0.033423 0.019668 0.005927 -0.007780 -0.021432 -0.035005 -0.048470 -0.061799 -0.074961 -0.087923 -0.100651 -0.113111 -0.125266 -0.137078 +0.525460 0.526979 0.527667 0.527480 0.526388 0.524368 0.521407 0.517505 0.512676 0.506939 0.500320 0.492850 0.484572 0.475534 0.465789 0.455391 0.444390 0.432835 0.420775 0.408253 0.395313 0.381994 0.368336 0.354376 0.340148 0.325684 0.311014 0.296166 0.281163 0.266024 0.250768 0.235406 0.219948 0.204402 0.188774 0.173067 0.157288 0.141438 0.125523 0.109546 0.093512 0.077429 0.061304 0.045149 0.028977 0.012803 -0.003353 -0.019467 -0.035515 -0.051466 -0.067288 -0.082944 -0.098400 -0.113615 -0.128550 -0.143162 -0.157409 -0.171245 -0.184625 -0.197504 +0.615952 0.615038 0.613062 0.610016 0.605901 0.600726 0.594509 0.587277 0.579067 0.569914 0.559868 0.548992 0.537340 0.524970 0.511939 0.498300 0.484103 0.469398 0.454230 0.438644 0.422681 0.406383 0.389789 0.372934 0.355853 0.338576 0.321130 0.303539 0.285821 0.267990 0.250056 0.232025 0.213904 0.195696 0.177405 0.159034 0.140589 0.122073 0.103492 0.084854 0.066167 0.047441 0.028691 0.009935 -0.008807 -0.027510 -0.046142 -0.064671 -0.083058 -0.101262 -0.119241 -0.136950 -0.154343 -0.171370 -0.187982 -0.204127 -0.219751 -0.234800 -0.249221 -0.262962 +0.704449 0.700263 0.694964 0.688564 0.681074 0.672514 0.662912 0.652302 0.640727 0.628235 0.614890 0.600746 0.585866 0.570303 0.554109 0.537337 0.520036 0.502256 0.484043 0.465442 0.446498 0.427253 0.407746 0.388015 0.368089 0.347997 0.327760 0.307393 0.286907 0.266309 0.245605 0.224798 0.203892 0.182893 0.161803 0.140629 0.119377 0.098054 0.076670 0.055234 0.033761 0.012268 -0.009223 -0.030684 -0.052085 -0.073386 -0.094547 -0.115520 -0.136257 -0.156709 -0.176821 -0.196540 -0.215808 -0.234567 -0.252755 -0.270311 -0.287172 -0.303276 -0.318563 -0.332978 +0.788050 0.780081 0.771081 0.761100 0.750180 0.738334 0.725566 0.711867 0.697249 0.681758 0.665444 0.648330 0.630464 0.611910 0.592722 0.572955 0.552663 0.531901 0.510720 0.489171 0.467303 0.445156 0.422770 0.400177 0.377405 0.354472 0.331392 0.308174 0.284823 0.261346 0.237745 0.214028 0.190200 0.166266 0.142234 0.118113 0.093911 0.069640 0.045313 0.020947 -0.003438 -0.027815 -0.052150 -0.076405 -0.100535 -0.124488 -0.148212 -0.171649 -0.194742 -0.217429 -0.239647 -0.261331 -0.282414 -0.302825 -0.322495 -0.341349 -0.359318 -0.376331 -0.392326 -0.407248 +0.865515 0.853667 0.840957 0.827440 0.813170 0.798133 0.782370 0.765884 0.748642 0.730596 0.711681 0.691946 0.671434 0.650157 0.628192 0.605608 0.582472 0.558849 0.534801 0.510383 0.485644 0.460627 0.435368 0.409896 0.384230 0.358382 0.332362 0.306178 0.279836 0.253343 0.226708 0.199938 0.173041 0.146028 0.118910 0.091698 0.064405 0.037048 0.009644 -0.017781 -0.045195 -0.072561 -0.099832 -0.126956 -0.153874 -0.180524 -0.206843 -0.232763 -0.258215 -0.283128 -0.307428 -0.331039 -0.353882 -0.375876 -0.396940 -0.416991 -0.435949 -0.453741 -0.470305 -0.485593 +0.936624 0.920931 0.904628 0.887766 0.870386 0.852501 0.834093 0.815085 0.795408 0.775025 0.753900 0.731939 0.709091 0.685436 0.660970 0.635784 0.609969 0.583610 0.556782 0.529548 0.501963 0.474071 0.445906 0.417490 0.388839 0.359967 0.330884 0.301603 0.272133 0.242485 0.212671 0.182703 0.152595 0.122360 0.092013 0.061568 0.031045 0.000465 -0.030145 -0.060748 -0.091302 -0.121755 -0.152046 -0.182108 -0.211872 -0.241265 -0.270212 -0.298635 -0.326456 -0.353590 -0.379954 -0.405460 -0.430018 -0.453534 -0.475915 -0.497069 -0.516910 -0.535366 -0.552380 -0.567914 +1.003783 0.984019 0.963890 0.943531 0.923043 0.902374 0.881412 0.860070 0.838282 0.815864 0.792686 0.768713 0.743893 0.718110 0.691437 0.663882 0.635555 0.606569 0.577025 0.547003 0.516565 0.485758 0.454614 0.423158 0.391411 0.359392 0.327117 0.294604 0.261867 0.228922 0.195788 0.162481 0.129019 0.095420 0.061701 0.027884 -0.006008 -0.039945 -0.073887 -0.107787 -0.141587 -0.175220 -0.208610 -0.241679 -0.274348 -0.306531 -0.338143 -0.369096 -0.399299 -0.428659 -0.457078 -0.484457 -0.510691 -0.535675 -0.559303 -0.581476 -0.602106 -0.621126 -0.638490 -0.654177 +1.069660 1.045870 1.021807 0.997616 0.973433 0.949389 0.925583 0.901884 0.877961 0.853625 0.828685 0.802896 0.776187 0.748546 0.719857 0.690167 0.659500 0.627991 0.595781 0.562975 0.529650 0.495858 0.461644 0.427042 0.392082 0.356791 0.321193 0.285311 0.249169 0.212789 0.176195 0.139408 0.102450 0.065343 0.028111 -0.009221 -0.046621 -0.084047 -0.121447 -0.158759 -0.195907 -0.232809 -0.269379 -0.305527 -0.341162 -0.376188 -0.410508 -0.444024 -0.476633 -0.508229 -0.538701 -0.567936 -0.595814 -0.622217 -0.647027 -0.670142 -0.691478 -0.710979 -0.728616 -0.744385 +1.135151 1.107439 1.079519 1.051539 1.023640 0.995955 0.968618 0.941751 0.915361 0.889020 0.862272 0.834846 0.806463 0.777004 0.746481 0.714797 0.681967 0.648047 0.613212 0.577611 0.541346 0.504493 0.467113 0.429257 0.390965 0.352277 0.313224 0.273841 0.234158 0.194205 0.154010 0.113600 0.073002 0.032242 -0.008650 -0.049640 -0.090686 -0.131734 -0.172715 -0.213549 -0.254145 -0.294409 -0.334241 -0.373543 -0.412210 -0.450137 -0.487216 -0.523336 -0.558380 -0.592228 -0.624756 -0.655833 -0.685326 -0.713101 -0.739035 -0.763027 -0.785001 -0.804918 -0.822768 -0.838561 +1.200634 1.169162 1.137445 1.105701 1.074091 1.042757 1.011838 0.981469 0.951774 0.922777 0.894037 0.864886 0.834912 0.803826 0.771492 0.737932 0.703048 0.666840 0.629422 0.591009 0.551751 0.511760 0.471121 0.429902 0.388161 0.345950 0.303315 0.260297 0.216936 0.173269 0.129330 0.085152 0.040767 -0.003793 -0.048492 -0.093286 -0.138117 -0.182917 -0.227598 -0.272063 -0.316208 -0.359927 -0.403110 -0.445645 -0.487418 -0.528312 -0.568205 -0.606973 -0.644486 -0.680607 -0.715195 -0.748105 -0.779185 -0.808292 -0.835299 -0.860111 -0.882669 -0.902952 -0.920969 -0.936742 +1.265255 1.230825 1.195691 1.160285 1.124977 1.089978 1.055449 1.021533 0.988373 0.956084 0.924624 0.893453 0.861796 0.829128 0.795127 0.759696 0.722837 0.684421 0.644478 0.603245 0.560948 0.517745 0.473752 0.429064 0.383758 0.337901 0.291553 0.244766 0.197588 0.150065 0.102236 0.054141 0.005819 -0.042692 -0.091347 -0.140087 -0.188842 -0.237521 -0.286020 -0.334226 -0.382025 -0.429297 -0.475922 -0.521776 -0.566734 -0.610664 -0.653432 -0.694897 -0.734914 -0.773330 -0.809987 -0.844720 -0.877364 -0.907767 -0.935804 -0.961391 -0.984492 -1.005105 -1.023251 -1.038967 +1.328343 1.291296 1.253526 1.215121 1.176341 1.137707 1.099544 1.062045 1.025366 0.989647 0.954961 0.921119 0.887436 0.853087 0.817466 0.780243 0.741390 0.700824 0.658428 0.614383 0.569007 0.522520 0.475083 0.426819 0.377831 0.328204 0.278012 0.227319 0.176184 0.124659 0.072792 0.020630 -0.031782 -0.084397 -0.137156 -0.189986 -0.242799 -0.295483 -0.347918 -0.399980 -0.451540 -0.502468 -0.552633 -0.601897 -0.650122 -0.697161 -0.742865 -0.787078 -0.829637 -0.870373 -0.909108 -0.945658 -0.979846 -1.011513 -1.040544 -1.066874 -1.090488 -1.111401 -1.129647 -1.145278 +1.389243 1.350418 1.310229 1.269268 1.227774 1.185891 1.144163 1.103057 1.062812 1.023594 0.985517 0.948552 0.912297 0.875934 0.838613 0.799649 0.758818 0.716103 0.671306 0.624475 0.575987 0.526149 0.475177 0.423234 0.370448 0.316925 0.262756 0.208018 0.152781 0.097105 0.041050 -0.015333 -0.071988 -0.128858 -0.185871 -0.242934 -0.299938 -0.356754 -0.413247 -0.469280 -0.524713 -0.579406 -0.633211 -0.685978 -0.737554 -0.787778 -0.836483 -0.883497 -0.928639 -0.971720 -1.012543 -1.050906 -1.086618 -1.119525 -1.149524 -1.176574 -1.200679 -1.221869 -1.240192 -1.255710 +1.446495 1.406841 1.365446 1.322439 1.278456 1.233987 1.189187 1.144572 1.100736 1.057963 1.016407 0.976107 0.936851 0.898019 0.858699 0.817962 0.775201 0.730305 0.683140 0.633565 0.581940 0.528688 0.474094 0.418366 0.361664 0.304118 0.245836 0.186912 0.127425 0.067450 0.007052 -0.053706 -0.114760 -0.176039 -0.237453 -0.298890 -0.360218 -0.421293 -0.481968 -0.542093 -0.601517 -0.660083 -0.717631 -0.773998 -0.829012 -0.882497 -0.934270 -0.984140 -1.031906 -1.077359 -1.120281 -1.160453 -1.197677 -1.231804 -1.262753 -1.290508 -1.315088 -1.336538 -1.354917 -1.370298 +1.500721 1.460139 1.417864 1.373900 1.328236 1.281384 1.234040 1.186444 1.139124 1.092760 1.047650 1.003892 0.961392 0.919691 0.877983 0.835284 0.790575 0.743519 0.693978 0.641689 0.586914 0.530188 0.471885 0.412266 0.351528 0.289828 0.227296 0.164040 0.100156 0.035728 -0.029167 -0.094457 -0.160066 -0.225906 -0.291867 -0.357817 -0.423604 -0.489070 -0.554054 -0.618395 -0.681927 -0.744480 -0.805878 -0.865941 -0.924482 -0.981307 -1.036215 -1.088996 -1.139429 -1.187282 -1.232316 -1.274295 -1.313020 -1.348355 -1.380245 -1.408695 -1.433740 -1.455434 -1.473850 -1.489068 +1.551807 1.510869 1.467724 1.422799 1.376212 1.327904 1.278271 1.228135 1.177831 1.127960 1.079246 1.031938 0.986033 0.941189 0.896750 0.851733 0.805016 0.755796 0.703846 0.648876 0.590948 0.530693 0.468593 0.404975 0.340079 0.274093 0.207169 0.139436 0.071004 0.001969 -0.067579 -0.137558 -0.207877 -0.278430 -0.349086 -0.419688 -0.490070 -0.560060 -0.629485 -0.698169 -0.765930 -0.832583 -0.897937 -0.961795 -1.023953 -1.084199 -1.142311 -1.198060 -1.251201 -1.301482 -1.348641 -1.392429 -1.432649 -1.469187 -1.502015 -1.531154 -1.556654 -1.578580 -1.597013 -1.612047 +1.598372 1.558336 1.515229 1.469557 1.421950 1.372673 1.321664 1.269268 1.216399 1.163454 1.111177 1.060249 1.010820 0.962647 0.915192 0.867553 0.818588 0.767167 0.712807 0.655154 0.594079 0.530240 0.464255 0.396528 0.327350 0.256943 0.185486 0.113128 0.039995 -0.033801 -0.108161 -0.182986 -0.258171 -0.333588 -0.409083 -0.484479 -0.559596 -0.634247 -0.708245 -0.781399 -0.853511 -0.924381 -0.993800 -1.061554 -1.127420 -1.191166 -1.252552 -1.311325 -1.367219 -1.419956 -1.469253 -1.514853 -1.556568 -1.594310 -1.628077 -1.657904 -1.683852 -1.705996 -1.724429 -1.739255 +1.639737 1.601423 1.559431 1.514077 1.465833 1.415488 1.363446 1.309644 1.254467 1.198897 1.143376 1.088818 1.035772 0.984127 0.933446 0.882923 0.831408 0.777704 0.720912 0.660557 0.596337 0.528861 0.458902 0.386955 0.313369 0.238405 0.162271 0.085139 0.007152 -0.071562 -0.150891 -0.230721 -0.310927 -0.391358 -0.471838 -0.552172 -0.632165 -0.711616 -0.790322 -0.868075 -0.944662 -1.019865 -1.093459 -1.165210 -1.234875 -1.302204 -1.366933 -1.428788 -1.487477 -1.542699 -1.594151 -1.641568 -1.684783 -1.723737 -1.758447 -1.788961 -1.815350 -1.837700 -1.856114 -1.870709 # Torque coefficient -0.020401 0.020898 0.021394 0.021887 0.022378 0.022867 0.023352 0.023835 0.024315 0.024790 0.025262 0.025730 0.026192 0.026650 0.027102 0.027549 0.027989 0.028423 0.028849 0.029268 0.029680 0.030083 0.030477 0.030863 0.031239 0.031605 0.031961 0.032306 0.032640 0.032962 0.033273 0.033571 0.033856 0.034128 0.034386 0.034631 0.034861 0.035077 0.035277 0.035463 0.035632 0.035786 0.035924 0.036045 0.036149 0.036237 0.036308 0.036362 0.036399 0.036418 0.036420 0.036405 0.036372 0.036322 0.036254 0.036169 0.036066 0.035947 0.035810 0.035656 0.035486 0.035299 0.035096 0.034877 0.034642 0.034392 0.034126 0.033847 0.033552 0.033244 0.032922 0.032587 0.032239 0.031879 0.031506 0.031122 0.030726 0.030319 0.029902 0.029474 0.029036 0.028588 0.028131 0.027665 0.027190 0.026707 0.026215 0.025716 0.025208 0.024694 0.024172 0.023643 0.023107 0.022565 0.022016 0.021462 0.020901 0.020335 0.019763 0.019185 0.018602 0.018014 0.017421 0.016823 -0.024373 0.024912 0.025447 0.025978 0.026504 0.027025 0.027540 0.028050 0.028553 0.029050 0.029539 0.030021 0.030495 0.030960 0.031416 0.031863 0.032299 0.032726 0.033141 0.033546 0.033938 0.034318 0.034685 0.035039 0.035379 0.035706 0.036017 0.036314 0.036594 0.036859 0.037108 0.037340 0.037555 0.037753 0.037933 0.038095 0.038238 0.038363 0.038469 0.038557 0.038625 0.038673 0.038703 0.038712 0.038703 0.038673 0.038624 0.038555 0.038467 0.038360 0.038233 0.038087 0.037922 0.037738 0.037537 0.037317 0.037080 0.036825 0.036554 0.036266 0.035962 0.035642 0.035307 0.034958 0.034594 0.034216 0.033824 0.033420 0.033003 0.032573 0.032132 0.031680 0.031216 0.030742 0.030257 0.029763 0.029259 0.028746 0.028224 0.027694 0.027155 0.026608 0.026053 0.025491 0.024922 0.024346 0.023763 0.023174 0.022578 0.021977 0.021369 0.020755 0.020136 0.019511 0.018881 0.018246 0.017605 0.016960 0.016309 0.015653 0.014993 0.014328 0.013659 0.012985 -0.028449 0.029018 0.029579 0.030134 0.030681 0.031219 0.031748 0.032268 0.032778 0.033278 0.033767 0.034244 0.034710 0.035162 0.035602 0.036028 0.036440 0.036837 0.037219 0.037586 0.037936 0.038269 0.038586 0.038884 0.039165 0.039427 0.039670 0.039893 0.040097 0.040281 0.040445 0.040587 0.040709 0.040810 0.040889 0.040947 0.040983 0.040997 0.040989 0.040959 0.040908 0.040834 0.040739 0.040623 0.040485 0.040326 0.040146 0.039946 0.039726 0.039486 0.039227 0.038950 0.038654 0.038340 0.038008 0.037660 0.037296 0.036915 0.036519 0.036109 0.035684 0.035245 0.034792 0.034327 0.033850 0.033360 0.032859 0.032346 0.031823 0.031290 0.030746 0.030193 0.029631 0.029060 0.028481 0.027893 0.027298 0.026695 0.026084 0.025467 0.024842 0.024211 0.023574 0.022930 0.022281 0.021625 0.020963 0.020296 0.019623 0.018945 0.018261 0.017572 0.016878 0.016179 0.015474 0.014765 0.014051 0.013333 0.012610 0.011882 0.011150 0.010414 0.009673 0.008929 -0.032542 0.033126 0.033700 0.034263 0.034814 0.035353 0.035879 0.036392 0.036890 0.037375 0.037844 0.038297 0.038733 0.039153 0.039556 0.039940 0.040306 0.040652 0.040979 0.041286 0.041572 0.041837 0.042080 0.042302 0.042501 0.042677 0.042831 0.042961 0.043067 0.043150 0.043208 0.043243 0.043253 0.043239 0.043201 0.043139 0.043052 0.042942 0.042809 0.042652 0.042473 0.042271 0.042047 0.041801 0.041534 0.041247 0.040939 0.040612 0.040266 0.039901 0.039519 0.039119 0.038703 0.038270 0.037822 0.037359 0.036881 0.036389 0.035884 0.035366 0.034836 0.034293 0.033739 0.033174 0.032599 0.032013 0.031418 0.030813 0.030200 0.029578 0.028947 0.028309 0.027663 0.027010 0.026349 0.025682 0.025008 0.024327 0.023640 0.022947 0.022248 0.021543 0.020832 0.020115 0.019393 0.018665 0.017931 0.017193 0.016448 0.015699 0.014944 0.014185 0.013420 0.012651 0.011876 0.011097 0.010313 0.009525 0.008733 0.007936 0.007136 0.006331 0.005523 0.004712 -0.036573 0.037157 0.037727 0.038281 0.038819 0.039341 0.039846 0.040333 0.040801 0.041250 0.041680 0.042089 0.042478 0.042845 0.043190 0.043512 0.043811 0.044087 0.044339 0.044566 0.044768 0.044945 0.045096 0.045221 0.045321 0.045393 0.045439 0.045459 0.045452 0.045419 0.045359 0.045273 0.045161 0.045024 0.044861 0.044673 0.044461 0.044226 0.043966 0.043684 0.043380 0.043054 0.042707 0.042340 0.041953 0.041547 0.041122 0.040680 0.040220 0.039743 0.039251 0.038743 0.038220 0.037684 0.037133 0.036570 0.035994 0.035406 0.034806 0.034195 0.033574 0.032943 0.032302 0.031652 0.030993 0.030325 0.029650 0.028966 0.028275 0.027576 0.026871 0.026159 0.025439 0.024714 0.023982 0.023244 0.022499 0.021749 0.020993 0.020230 0.019462 0.018688 0.017909 0.017124 0.016333 0.015536 0.014735 0.013927 0.013115 0.012297 0.011474 0.010646 0.009813 0.008975 0.008132 0.007285 0.006433 0.005577 0.004717 0.003853 0.002986 0.002116 0.001242 0.000367 -0.040467 0.041034 0.041582 0.042111 0.042619 0.043105 0.043571 0.044013 0.044433 0.044829 0.045201 0.045548 0.045869 0.046165 0.046434 0.046676 0.046890 0.047077 0.047235 0.047365 0.047467 0.047539 0.047583 0.047598 0.047583 0.047541 0.047470 0.047370 0.047243 0.047089 0.046907 0.046699 0.046465 0.046206 0.045921 0.045613 0.045281 0.044927 0.044550 0.044152 0.043733 0.043294 0.042836 0.042359 0.041865 0.041353 0.040824 0.040280 0.039720 0.039146 0.038557 0.037955 0.037341 0.036714 0.036075 0.035425 0.034764 0.034093 0.033413 0.032723 0.032024 0.031316 0.030600 0.029877 0.029145 0.028406 0.027661 0.026908 0.026148 0.025382 0.024609 0.023830 0.023044 0.022252 0.021454 0.020650 0.019840 0.019024 0.018201 0.017373 0.016539 0.015699 0.014853 0.014002 0.013144 0.012281 0.011412 0.010537 0.009657 0.008772 0.007881 0.006985 0.006084 0.005178 0.004268 0.003354 0.002435 0.001513 0.000588 -0.000341 -0.001272 -0.002205 -0.003140 -0.004077 -0.044155 0.044688 0.045198 0.045683 0.046144 0.046578 0.046986 0.047368 0.047721 0.048046 0.048343 0.048610 0.048847 0.049054 0.049231 0.049376 0.049491 0.049574 0.049626 0.049648 0.049638 0.049597 0.049526 0.049425 0.049294 0.049133 0.048944 0.048727 0.048481 0.048209 0.047911 0.047587 0.047238 0.046864 0.046468 0.046049 0.045608 0.045146 0.044663 0.044161 0.043641 0.043102 0.042545 0.041972 0.041383 0.040779 0.040160 0.039527 0.038880 0.038221 0.037550 0.036867 0.036173 0.035468 0.034753 0.034029 0.033295 0.032553 0.031802 0.031043 0.030276 0.029501 0.028720 0.027931 0.027134 0.026332 0.025522 0.024706 0.023883 0.023054 0.022218 0.021376 0.020527 0.019672 0.018811 0.017943 0.017069 0.016189 0.015302 0.014409 0.013510 0.012604 0.011692 0.010774 0.009850 0.008920 0.007983 0.007041 0.006094 0.005141 0.004183 0.003220 0.002252 0.001280 0.000304 -0.000676 -0.001659 -0.002644 -0.003633 -0.004623 -0.005614 -0.006607 -0.007599 -0.008592 -0.047573 0.048056 0.048511 0.048937 0.049333 0.049699 0.050034 0.050337 0.050609 0.050847 0.051053 0.051226 0.051366 0.051472 0.051545 0.051585 0.051592 0.051565 0.051506 0.051415 0.051293 0.051138 0.050954 0.050738 0.050494 0.050221 0.049919 0.049590 0.049235 0.048854 0.048449 0.048019 0.047566 0.047091 0.046594 0.046076 0.045538 0.044981 0.044406 0.043812 0.043202 0.042576 0.041934 0.041277 0.040606 0.039922 0.039225 0.038515 0.037794 0.037061 0.036318 0.035565 0.034802 0.034030 0.033249 0.032460 0.031662 0.030856 0.030043 0.029222 0.028394 0.027558 0.026716 0.025867 0.025011 0.024148 0.023278 0.022402 0.021519 0.020629 0.019732 0.018829 0.017919 0.017002 0.016078 0.015147 0.014209 0.013265 0.012314 0.011355 0.010390 0.009419 0.008440 0.007456 0.006465 0.005467 0.004464 0.003455 0.002441 0.001421 0.000397 -0.000632 -0.001665 -0.002701 -0.003741 -0.004784 -0.005829 -0.006875 -0.007923 -0.008972 -0.010020 -0.011068 -0.012114 -0.013159 -0.050662 0.051080 0.051464 0.051816 0.052133 0.052416 0.052663 0.052876 0.053053 0.053195 0.053302 0.053373 0.053409 0.053410 0.053376 0.053308 0.053207 0.053072 0.052904 0.052704 0.052472 0.052210 0.051918 0.051597 0.051247 0.050870 0.050467 0.050037 0.049583 0.049105 0.048604 0.048081 0.047536 0.046971 0.046386 0.045782 0.045159 0.044519 0.043863 0.043190 0.042503 0.041800 0.041084 0.040355 0.039613 0.038859 0.038094 0.037318 0.036532 0.035735 0.034929 0.034114 0.033291 0.032459 0.031619 0.030770 0.029915 0.029052 0.028181 0.027303 0.026418 0.025526 0.024626 0.023720 0.022806 0.021885 0.020957 0.020022 0.019080 0.018130 0.017173 0.016208 0.015236 0.014257 0.013270 0.012276 0.011274 0.010265 0.009248 0.008224 0.007194 0.006156 0.005111 0.004060 0.003002 0.001938 0.000869 -0.000206 -0.001286 -0.002371 -0.003461 -0.004554 -0.005650 -0.006750 -0.007851 -0.008955 -0.010059 -0.011164 -0.012268 -0.013372 -0.014474 -0.015574 -0.016671 -0.017764 -0.053370 0.053709 0.054011 0.054276 0.054504 0.054694 0.054847 0.054963 0.055042 0.055084 0.055089 0.055057 0.054990 0.054888 0.054751 0.054579 0.054374 0.054136 0.053866 0.053565 0.053234 0.052873 0.052484 0.052068 0.051624 0.051155 0.050662 0.050144 0.049603 0.049040 0.048455 0.047850 0.047225 0.046581 0.045919 0.045240 0.044544 0.043832 0.043105 0.042364 0.041609 0.040841 0.040060 0.039268 0.038464 0.037649 0.036824 0.035990 0.035146 0.034292 0.033431 0.032560 0.031682 0.030795 0.029901 0.028999 0.028089 0.027172 0.026247 0.025315 0.024375 0.023428 0.022472 0.021510 0.020539 0.019561 0.018575 0.017581 0.016579 0.015569 0.014551 0.013525 0.012491 0.011448 0.010398 0.009340 0.008273 0.007199 0.006117 0.005028 0.003931 0.002827 0.001716 0.000598 -0.000526 -0.001656 -0.002791 -0.003932 -0.005077 -0.006226 -0.007379 -0.008535 -0.009694 -0.010854 -0.012015 -0.013177 -0.014338 -0.015499 -0.016658 -0.017814 -0.018967 -0.020115 -0.021259 -0.022397 -0.055657 0.055909 0.056122 0.056296 0.056431 0.056527 0.056585 0.056604 0.056586 0.056530 0.056437 0.056308 0.056143 0.055944 0.055710 0.055443 0.055144 0.054813 0.054452 0.054061 0.053641 0.053194 0.052720 0.052219 0.051694 0.051145 0.050572 0.049977 0.049361 0.048724 0.048066 0.047390 0.046696 0.045984 0.045255 0.044510 0.043750 0.042976 0.042188 0.041386 0.040573 0.039747 0.038910 0.038062 0.037203 0.036335 0.035457 0.034570 0.033674 0.032769 0.031856 0.030935 0.030006 0.029068 0.028123 0.027169 0.026208 0.025238 0.024261 0.023275 0.022281 0.021279 0.020268 0.019250 0.018222 0.017186 0.016142 0.015089 0.014027 0.012956 0.011877 0.010789 0.009692 0.008586 0.007472 0.006349 0.005217 0.004078 0.002930 0.001774 0.000611 -0.000559 -0.001737 -0.002921 -0.004111 -0.005306 -0.006507 -0.007713 -0.008922 -0.010135 -0.011350 -0.012568 -0.013786 -0.015006 -0.016225 -0.017443 -0.018659 -0.019873 -0.021083 -0.022289 -0.023490 -0.024684 -0.025871 -0.027051 -0.057505 0.057670 0.057794 0.057878 0.057922 0.057928 0.057894 0.057822 0.057713 0.057566 0.057383 0.057165 0.056912 0.056626 0.056306 0.055955 0.055573 0.055161 0.054721 0.054252 0.053755 0.053233 0.052685 0.052113 0.051517 0.050898 0.050257 0.049596 0.048914 0.048212 0.047492 0.046754 0.045999 0.045228 0.044441 0.043640 0.042824 0.041995 0.041153 0.040299 0.039434 0.038557 0.037670 0.036772 0.035865 0.034948 0.034022 0.033087 0.032143 0.031191 0.030230 0.029260 0.028282 0.027296 0.026301 0.025297 0.024285 0.023263 0.022234 0.021195 0.020147 0.019090 0.018024 0.016949 0.015865 0.014771 0.013668 0.012555 0.011432 0.010300 0.009159 0.008008 0.006847 0.005677 0.004498 0.003310 0.002113 0.000907 -0.000307 -0.001529 -0.002759 -0.003996 -0.005240 -0.006491 -0.007746 -0.009008 -0.010273 -0.011543 -0.012815 -0.014090 -0.015367 -0.016645 -0.017922 -0.019199 -0.020474 -0.021746 -0.023015 -0.024280 -0.025539 -0.026792 -0.028037 -0.029274 -0.030502 -0.031719 -0.058917 0.058998 0.059039 0.059039 0.059000 0.058922 0.058806 0.058652 0.058461 0.058234 0.057973 0.057677 0.057348 0.056986 0.056594 0.056171 0.055718 0.055237 0.054728 0.054193 0.053631 0.053044 0.052433 0.051799 0.051142 0.050464 0.049764 0.049045 0.048307 0.047550 0.046775 0.045984 0.045176 0.044353 0.043516 0.042665 0.041801 0.040924 0.040035 0.039134 0.038222 0.037300 0.036368 0.035425 0.034473 0.033512 0.032541 0.031561 0.030572 0.029574 0.028567 0.027551 0.026525 0.025491 0.024447 0.023393 0.022331 0.021258 0.020176 0.019084 0.017982 0.016871 0.015749 0.014617 0.013474 0.012322 0.011158 0.009985 0.008801 0.007607 0.006402 0.005187 0.003962 0.002726 0.001482 0.000227 -0.001037 -0.002309 -0.003590 -0.004880 -0.006176 -0.007480 -0.008791 -0.010107 -0.011429 -0.012755 -0.014085 -0.015417 -0.016752 -0.018089 -0.019425 -0.020761 -0.022096 -0.023429 -0.024758 -0.026083 -0.027402 -0.028715 -0.030021 -0.031318 -0.032606 -0.033883 -0.035149 -0.036401 -0.059908 0.059915 0.059881 0.059808 0.059696 0.059546 0.059359 0.059135 0.058875 0.058581 0.058253 0.057892 0.057500 0.057076 0.056622 0.056139 0.055627 0.055088 0.054522 0.053930 0.053313 0.052672 0.052007 0.051320 0.050611 0.049881 0.049132 0.048363 0.047575 0.046771 0.045949 0.045111 0.044258 0.043391 0.042509 0.041615 0.040707 0.039788 0.038857 0.037914 0.036961 0.035998 0.035024 0.034040 0.033047 0.032043 0.031030 0.030007 0.028974 0.027932 0.026880 0.025818 0.024745 0.023663 0.022570 0.021467 0.020354 0.019230 0.018095 0.016950 0.015793 0.014625 0.013447 0.012257 0.011055 0.009843 0.008618 0.007383 0.006136 0.004878 0.003609 0.002329 0.001038 -0.000263 -0.001575 -0.002896 -0.004227 -0.005567 -0.006916 -0.008273 -0.009637 -0.011008 -0.012385 -0.013767 -0.015154 -0.016545 -0.017938 -0.019333 -0.020729 -0.022126 -0.023521 -0.024915 -0.026305 -0.027692 -0.029074 -0.030449 -0.031817 -0.033177 -0.034527 -0.035867 -0.037194 -0.038509 -0.039810 -0.041095 -0.060501 0.060446 0.060352 0.060219 0.060048 0.059839 0.059595 0.059315 0.059000 0.058652 0.058271 0.057858 0.057413 0.056939 0.056435 0.055902 0.055342 0.054754 0.054141 0.053502 0.052838 0.052151 0.051441 0.050709 0.049956 0.049183 0.048390 0.047579 0.046750 0.045904 0.045041 0.044164 0.043271 0.042364 0.041444 0.040511 0.039566 0.038608 0.037639 0.036659 0.035668 0.034666 0.033654 0.032631 0.031598 0.030554 0.029500 0.028435 0.027360 0.026274 0.025177 0.024069 0.022950 0.021820 0.020678 0.019525 0.018360 0.017184 0.015995 0.014795 0.013583 0.012358 0.011121 0.009872 0.008610 0.007336 0.006050 0.004752 0.003441 0.002118 0.000783 -0.000563 -0.001921 -0.003289 -0.004669 -0.006058 -0.007457 -0.008866 -0.010283 -0.011707 -0.013139 -0.014577 -0.016020 -0.017468 -0.018920 -0.020374 -0.021830 -0.023287 -0.024744 -0.026199 -0.027653 -0.029102 -0.030547 -0.031987 -0.033419 -0.034844 -0.036259 -0.037663 -0.039056 -0.040436 -0.041802 -0.043152 -0.044486 -0.045802 -0.060726 0.060626 0.060487 0.060309 0.060094 0.059842 0.059555 0.059233 0.058876 0.058487 0.058065 0.057611 0.057126 0.056612 0.056068 0.055496 0.054896 0.054269 0.053617 0.052939 0.052237 0.051512 0.050765 0.049995 0.049205 0.048395 0.047566 0.046718 0.045854 0.044972 0.044075 0.043162 0.042235 0.041294 0.040340 0.039373 0.038393 0.037402 0.036398 0.035383 0.034357 0.033319 0.032270 0.031210 0.030138 0.029055 0.027960 0.026854 0.025736 0.024606 0.023464 0.022310 0.021143 0.019965 0.018773 0.017569 0.016352 0.015122 0.013879 0.012623 0.011353 0.010071 0.008774 0.007465 0.006142 0.004805 0.003455 0.002092 0.000716 -0.000673 -0.002075 -0.003489 -0.004914 -0.006351 -0.007799 -0.009258 -0.010726 -0.012203 -0.013688 -0.015181 -0.016680 -0.018185 -0.019694 -0.021207 -0.022723 -0.024241 -0.025760 -0.027278 -0.028794 -0.030308 -0.031818 -0.033323 -0.034821 -0.036312 -0.037794 -0.039266 -0.040727 -0.042175 -0.043609 -0.045027 -0.046429 -0.047814 -0.049179 -0.050525 -0.060615 0.060487 0.060320 0.060114 0.059871 0.059591 0.059275 0.058924 0.058539 0.058120 0.057669 0.057185 0.056671 0.056126 0.055552 0.054949 0.054318 0.053661 0.052977 0.052269 0.051536 0.050780 0.050001 0.049201 0.048380 0.047539 0.046680 0.045802 0.044907 0.043995 0.043068 0.042125 0.041168 0.040197 0.039212 0.038215 0.037204 0.036181 0.035145 0.034097 0.033037 0.031965 0.030880 0.029783 0.028673 0.027550 0.026415 0.025267 0.024106 0.022932 0.021744 0.020543 0.019329 0.018101 0.016858 0.015602 0.014332 0.013047 0.011748 0.010435 0.009107 0.007764 0.006407 0.005036 0.003649 0.002249 0.000834 -0.000595 -0.002038 -0.003495 -0.004965 -0.006447 -0.007942 -0.009448 -0.010966 -0.012494 -0.014031 -0.015577 -0.017131 -0.018692 -0.020258 -0.021830 -0.023406 -0.024984 -0.026564 -0.028145 -0.029725 -0.031304 -0.032879 -0.034451 -0.036017 -0.037576 -0.039127 -0.040668 -0.042199 -0.043717 -0.045222 -0.046712 -0.048186 -0.049642 -0.051079 -0.052496 -0.053892 -0.055266 -0.060193 0.060058 0.059882 0.059666 0.059410 0.059117 0.058786 0.058420 0.058017 0.057581 0.057111 0.056608 0.056073 0.055507 0.054912 0.054287 0.053633 0.052953 0.052245 0.051513 0.050756 0.049975 0.049171 0.048346 0.047500 0.046634 0.045749 0.044846 0.043926 0.042989 0.042035 0.041067 0.040083 0.039085 0.038073 0.037048 0.036008 0.034955 0.033889 0.032809 0.031716 0.030609 0.029489 0.028355 0.027207 0.026045 0.024869 0.023678 0.022474 0.021254 0.020020 0.018772 0.017508 0.016229 0.014935 0.013625 0.012300 0.010959 0.009603 0.008231 0.006843 0.005439 0.004020 0.002585 0.001134 -0.000332 -0.001814 -0.003310 -0.004822 -0.006347 -0.007886 -0.009438 -0.011003 -0.012580 -0.014167 -0.015765 -0.017372 -0.018987 -0.020610 -0.022239 -0.023874 -0.025512 -0.027154 -0.028797 -0.030441 -0.032085 -0.033727 -0.035365 -0.036999 -0.038628 -0.040249 -0.041862 -0.043464 -0.045056 -0.046634 -0.048198 -0.049746 -0.051278 -0.052790 -0.054283 -0.055754 -0.057204 -0.058629 -0.060030 -0.059495 0.059366 0.059198 0.058989 0.058737 0.058445 0.058114 0.057744 0.057337 0.056894 0.056415 0.055903 0.055357 0.054779 0.054169 0.053530 0.052861 0.052164 0.051440 0.050690 0.049915 0.049115 0.048293 0.047448 0.046582 0.045696 0.044791 0.043867 0.042925 0.041966 0.040991 0.039999 0.038992 0.037970 0.036932 0.035880 0.034813 0.033732 0.032635 0.031524 0.030398 0.029257 0.028100 0.026929 0.025742 0.024540 0.023323 0.022089 0.020840 0.019574 0.018293 0.016995 0.015681 0.014350 0.013002 0.011638 0.010257 0.008859 0.007444 0.006011 0.004562 0.003096 0.001612 0.000112 -0.001405 -0.002938 -0.004488 -0.006053 -0.007634 -0.009229 -0.010839 -0.012461 -0.014097 -0.015744 -0.017403 -0.019071 -0.020748 -0.022433 -0.024125 -0.025823 -0.027525 -0.029231 -0.030938 -0.032647 -0.034355 -0.036061 -0.037764 -0.039462 -0.041155 -0.042840 -0.044516 -0.046182 -0.047836 -0.049476 -0.051102 -0.052711 -0.054302 -0.055874 -0.057424 -0.058953 -0.060458 -0.061939 -0.063393 -0.064821 -0.058555 0.058448 0.058298 0.058106 0.057873 0.057598 0.057280 0.056919 0.056519 0.056080 0.055603 0.055090 0.054541 0.053959 0.053344 0.052697 0.052020 0.051314 0.050579 0.049817 0.049029 0.048217 0.047380 0.046521 0.045640 0.044738 0.043816 0.042875 0.041915 0.040937 0.039942 0.038930 0.037901 0.036856 0.035795 0.034717 0.033623 0.032513 0.031386 0.030244 0.029084 0.027908 0.026716 0.025507 0.024281 0.023038 0.021777 0.020500 0.019205 0.017892 0.016562 0.015214 0.013848 0.012464 0.011062 0.009641 0.008203 0.006745 0.005270 0.003776 0.002264 0.000733 -0.000816 -0.002383 -0.003967 -0.005569 -0.007188 -0.008824 -0.010475 -0.012141 -0.013822 -0.015517 -0.017224 -0.018943 -0.020672 -0.022412 -0.024160 -0.025915 -0.027676 -0.029443 -0.031213 -0.032986 -0.034760 -0.036533 -0.038305 -0.040074 -0.041838 -0.043596 -0.045347 -0.047088 -0.048819 -0.050538 -0.052243 -0.053932 -0.055604 -0.057258 -0.058891 -0.060503 -0.062092 -0.063656 -0.065194 -0.066706 -0.068189 -0.069644 -0.057393 0.057324 0.057209 0.057048 0.056843 0.056594 0.056301 0.055963 0.055581 0.055157 0.054691 0.054186 0.053644 0.053065 0.052452 0.051805 0.051126 0.050416 0.049676 0.048908 0.048113 0.047292 0.046447 0.045577 0.044685 0.043771 0.042835 0.041880 0.040904 0.039910 0.038897 0.037866 0.036817 0.035749 0.034664 0.033561 0.032440 0.031301 0.030145 0.028970 0.027777 0.026566 0.025336 0.024089 0.022822 0.021537 0.020233 0.018911 0.017569 0.016208 0.014828 0.013428 0.012009 0.010570 0.009112 0.007634 0.006136 0.004619 0.003081 0.001524 -0.000053 -0.001650 -0.003265 -0.004900 -0.006554 -0.008226 -0.009915 -0.011622 -0.013345 -0.015083 -0.016837 -0.018604 -0.020383 -0.022174 -0.023976 -0.025787 -0.027606 -0.029432 -0.031263 -0.033099 -0.034938 -0.036778 -0.038618 -0.040457 -0.042293 -0.044124 -0.045950 -0.047768 -0.049577 -0.051375 -0.053160 -0.054932 -0.056687 -0.058425 -0.060144 -0.061842 -0.063517 -0.065169 -0.066795 -0.068395 -0.069966 -0.071509 -0.073022 -0.074504 -0.056041 0.056018 0.055950 0.055835 0.055670 0.055457 0.055197 0.054891 0.054539 0.054140 0.053696 0.053208 0.052680 0.052112 0.051508 0.050867 0.050192 0.049484 0.048745 0.047975 0.047178 0.046353 0.045501 0.044625 0.043724 0.042801 0.041854 0.040887 0.039898 0.038889 0.037859 0.036810 0.035741 0.034652 0.033543 0.032414 0.031266 0.030099 0.028911 0.027704 0.026477 0.025229 0.023962 0.022675 0.021367 0.020039 0.018691 0.017321 0.015932 0.014521 0.013090 0.011637 0.010164 0.008669 0.007153 0.005616 0.004058 0.002478 0.000877 -0.000745 -0.002388 -0.004052 -0.005736 -0.007441 -0.009165 -0.010908 -0.012669 -0.014448 -0.016244 -0.018056 -0.019882 -0.021722 -0.023575 -0.025439 -0.027313 -0.029197 -0.031088 -0.032985 -0.034887 -0.036792 -0.038700 -0.040608 -0.042515 -0.044419 -0.046320 -0.048214 -0.050101 -0.051979 -0.053846 -0.055701 -0.057541 -0.059365 -0.061171 -0.062958 -0.064723 -0.066465 -0.068183 -0.069874 -0.071538 -0.073173 -0.074778 -0.076352 -0.077894 -0.079404 -0.054543 0.054566 0.054547 0.054483 0.054370 0.054206 0.053989 0.053723 0.053407 0.053043 0.052629 0.052168 0.051662 0.051113 0.050523 0.049894 0.049228 0.048528 0.047793 0.047027 0.046231 0.045405 0.044551 0.043671 0.042765 0.041834 0.040879 0.039901 0.038900 0.037877 0.036831 0.035764 0.034675 0.033564 0.032432 0.031278 0.030102 0.028905 0.027686 0.026445 0.025183 0.023899 0.022593 0.021265 0.019915 0.018543 0.017148 0.015732 0.014293 0.012831 0.011347 0.009841 0.008311 0.006759 0.005184 0.003587 0.001966 0.000323 -0.001343 -0.003032 -0.004743 -0.006475 -0.008230 -0.010005 -0.011801 -0.013616 -0.015451 -0.017304 -0.019173 -0.021059 -0.022959 -0.024874 -0.026800 -0.028738 -0.030686 -0.032642 -0.034605 -0.036574 -0.038548 -0.040523 -0.042500 -0.044477 -0.046451 -0.048422 -0.050387 -0.052345 -0.054294 -0.056232 -0.058158 -0.060069 -0.061964 -0.063841 -0.065698 -0.067533 -0.069345 -0.071132 -0.072891 -0.074623 -0.076324 -0.077995 -0.079633 -0.081239 -0.082811 -0.084349 -0.052925 0.053002 0.053035 0.053023 0.052963 0.052854 0.052691 0.052474 0.052202 0.051878 0.051503 0.051076 0.050599 0.050075 0.049506 0.048895 0.048244 0.047555 0.046830 0.046070 0.045278 0.044455 0.043602 0.042720 0.041810 0.040874 0.039912 0.038925 0.037913 0.036876 0.035815 0.034730 0.033620 0.032488 0.031331 0.030151 0.028947 0.027720 0.026469 0.025194 0.023896 0.022574 0.021228 0.019859 0.018465 0.017048 0.015607 0.014141 0.012652 0.011138 0.009600 0.008038 0.006451 0.004840 0.003205 0.001545 -0.000139 -0.001848 -0.003580 -0.005337 -0.007117 -0.008920 -0.010746 -0.012593 -0.014462 -0.016352 -0.018260 -0.020188 -0.022132 -0.024093 -0.026069 -0.028058 -0.030059 -0.032072 -0.034094 -0.036124 -0.038160 -0.040202 -0.042247 -0.044294 -0.046341 -0.048386 -0.050428 -0.052466 -0.054496 -0.056518 -0.058529 -0.060528 -0.062513 -0.064481 -0.066431 -0.068362 -0.070270 -0.072154 -0.074012 -0.075843 -0.077645 -0.079417 -0.081156 -0.082863 -0.084536 -0.086174 -0.087777 -0.089344 -0.051199 0.051341 0.051435 0.051480 0.051476 0.051422 0.051315 0.051153 0.050934 0.050658 0.050326 0.049939 0.049499 0.049007 0.048465 0.047877 0.047245 0.046572 0.045860 0.045110 0.044326 0.043508 0.042657 0.041776 0.040865 0.039924 0.038956 0.037960 0.036937 0.035887 0.034810 0.033707 0.032577 0.031422 0.030241 0.029034 0.027801 0.026543 0.025259 0.023950 0.022615 0.021254 0.019868 0.018455 0.017017 0.015554 0.014064 0.012549 0.011008 0.009441 0.007847 0.006228 0.004583 0.002911 0.001214 -0.000510 -0.002259 -0.004035 -0.005835 -0.007661 -0.009512 -0.011387 -0.013285 -0.015207 -0.017150 -0.019114 -0.021098 -0.023101 -0.025122 -0.027159 -0.029210 -0.031275 -0.033353 -0.035441 -0.037538 -0.039642 -0.041753 -0.043868 -0.045985 -0.048104 -0.050222 -0.052337 -0.054448 -0.056552 -0.058649 -0.060735 -0.062809 -0.064869 -0.066913 -0.068939 -0.070945 -0.072929 -0.074888 -0.076822 -0.078727 -0.080603 -0.082448 -0.084260 -0.086038 -0.087781 -0.089489 -0.091160 -0.092795 -0.094393 -0.049382 0.049593 0.049756 0.049868 0.049926 0.049931 0.049881 0.049776 0.049613 0.049391 0.049108 0.048767 0.048368 0.047914 0.047405 0.046844 0.046236 0.045583 0.044887 0.044151 0.043376 0.042565 0.041720 0.040841 0.039929 0.038986 0.038012 0.037007 0.035973 0.034909 0.033817 0.032695 0.031546 0.030367 0.029161 0.027927 0.026665 0.025375 0.024058 0.022712 0.021339 0.019939 0.018510 0.017055 0.015571 0.014060 0.012521 0.010954 0.009360 0.007738 0.006088 0.004410 0.002705 0.000972 -0.000790 -0.002578 -0.004395 -0.006238 -0.008109 -0.010005 -0.011928 -0.013876 -0.015849 -0.017845 -0.019864 -0.021905 -0.023965 -0.026045 -0.028143 -0.030257 -0.032385 -0.034527 -0.036681 -0.038846 -0.041019 -0.043199 -0.045385 -0.047574 -0.049765 -0.051956 -0.054145 -0.056331 -0.058511 -0.060684 -0.062847 -0.064998 -0.067136 -0.069258 -0.071362 -0.073446 -0.075508 -0.077545 -0.079557 -0.081539 -0.083492 -0.085413 -0.087301 -0.089154 -0.090972 -0.092753 -0.094496 -0.096202 -0.097870 -0.099499 -0.047500 0.047778 0.048010 0.048192 0.048320 0.048390 0.048402 0.048355 0.048250 0.048084 0.047856 0.047565 0.047212 0.046800 0.046329 0.045801 0.045221 0.044591 0.043914 0.043194 0.042432 0.041631 0.040792 0.039916 0.039004 0.038059 0.037079 0.036066 0.035021 0.033944 0.032836 0.031696 0.030525 0.029323 0.028091 0.026829 0.025537 0.024215 0.022862 0.021480 0.020069 0.018627 0.017156 0.015655 0.014125 0.012565 0.010976 0.009357 0.007708 0.006030 0.004322 0.002584 0.000817 -0.000980 -0.002806 -0.004662 -0.006546 -0.008459 -0.010401 -0.012370 -0.014367 -0.016390 -0.018438 -0.020510 -0.022606 -0.024724 -0.026862 -0.029020 -0.031196 -0.033388 -0.035594 -0.037815 -0.040046 -0.042288 -0.044538 -0.046795 -0.049056 -0.051321 -0.053586 -0.055851 -0.058113 -0.060370 -0.062620 -0.064862 -0.067092 -0.069309 -0.071511 -0.073695 -0.075860 -0.078003 -0.080121 -0.082213 -0.084276 -0.086309 -0.088310 -0.090277 -0.092209 -0.094104 -0.095961 -0.097780 -0.099561 -0.101302 -0.103004 -0.104667 -0.045569 0.045915 0.046215 0.046466 0.046665 0.046805 0.046885 0.046902 0.046856 0.046747 0.046575 0.046339 0.046037 0.045670 0.045240 0.044750 0.044202 0.043599 0.042945 0.042243 0.041496 0.040705 0.039874 0.039002 0.038092 0.037143 0.036159 0.035138 0.034082 0.032991 0.031866 0.030707 0.029515 0.028289 0.027031 0.025740 0.024417 0.023061 0.021673 0.020254 0.018802 0.017319 0.015804 0.014257 0.012679 0.011069 0.009428 0.007755 0.006051 0.004315 0.002547 0.000748 -0.001082 -0.002944 -0.004837 -0.006760 -0.008715 -0.010699 -0.012714 -0.014757 -0.016828 -0.018927 -0.021052 -0.023202 -0.025376 -0.027572 -0.029790 -0.032027 -0.034281 -0.036553 -0.038839 -0.041138 -0.043448 -0.045769 -0.048097 -0.050431 -0.052769 -0.055110 -0.057451 -0.059790 -0.062125 -0.064455 -0.066776 -0.069087 -0.071386 -0.073670 -0.075936 -0.078184 -0.080410 -0.082611 -0.084787 -0.086934 -0.089050 -0.091134 -0.093183 -0.095197 -0.097173 -0.099111 -0.101009 -0.102867 -0.104686 -0.106464 -0.108202 -0.109899 -0.043609 0.044017 0.044385 0.044706 0.044973 0.045184 0.045334 0.045419 0.045438 0.045389 0.045275 0.045093 0.044845 0.044527 0.044143 0.043693 0.043181 0.042608 0.041979 0.041298 0.040567 0.039789 0.038966 0.038099 0.037190 0.036240 0.035250 0.034221 0.033154 0.032049 0.030907 0.029729 0.028514 0.027264 0.025979 0.024659 0.023304 0.021914 0.020490 0.019032 0.017540 0.016013 0.014453 0.012860 0.011232 0.009571 0.007877 0.006149 0.004387 0.002592 0.000764 -0.001098 -0.002993 -0.004921 -0.006882 -0.008875 -0.010901 -0.012959 -0.015047 -0.017166 -0.019314 -0.021490 -0.023693 -0.025922 -0.028175 -0.030451 -0.032748 -0.035065 -0.037401 -0.039752 -0.042119 -0.044498 -0.046889 -0.049288 -0.051696 -0.054109 -0.056525 -0.058943 -0.061360 -0.063775 -0.066185 -0.068587 -0.070981 -0.073362 -0.075730 -0.078081 -0.080414 -0.082725 -0.085013 -0.087274 -0.089508 -0.091710 -0.093880 -0.096015 -0.098114 -0.100174 -0.102196 -0.104177 -0.106117 -0.108017 -0.109874 -0.111691 -0.113466 -0.115199 -0.041654 0.042107 0.042533 0.042920 0.043257 0.043538 0.043757 0.043912 0.043999 0.044015 0.043960 0.043835 0.043640 0.043375 0.043039 0.042633 0.042159 0.041620 0.041019 0.040360 0.039647 0.038883 0.038069 0.037207 0.036300 0.035348 0.034353 0.033316 0.032237 0.031118 0.029959 0.028761 0.027524 0.026248 0.024935 0.023585 0.022197 0.020773 0.019311 0.017814 0.016280 0.014710 0.013103 0.011462 0.009784 0.008071 0.006322 0.004537 0.002717 0.000862 -0.001029 -0.002955 -0.004916 -0.006912 -0.008943 -0.011008 -0.013107 -0.015238 -0.017402 -0.019598 -0.021824 -0.024079 -0.026361 -0.028670 -0.031004 -0.033361 -0.035739 -0.038138 -0.040554 -0.042988 -0.045435 -0.047896 -0.050368 -0.052849 -0.055336 -0.057829 -0.060324 -0.062821 -0.065316 -0.067807 -0.070292 -0.072769 -0.075235 -0.077688 -0.080126 -0.082546 -0.084945 -0.087321 -0.089671 -0.091993 -0.094285 -0.096544 -0.098767 -0.100955 -0.103103 -0.105212 -0.107280 -0.109306 -0.111289 -0.113230 -0.115129 -0.116985 -0.118799 -0.120570 -0.039734 0.040215 0.040682 0.041122 0.041523 0.041873 0.042163 0.042386 0.042542 0.042625 0.042634 0.042568 0.042428 0.042216 0.041930 0.041570 0.041137 0.040634 0.040064 0.039430 0.038736 0.037986 0.037182 0.036326 0.035421 0.034467 0.033467 0.032421 0.031331 0.030197 0.029021 0.027802 0.026542 0.025241 0.023899 0.022518 0.021097 0.019636 0.018137 0.016598 0.015022 0.013407 0.011754 0.010062 0.008333 0.006566 0.004762 0.002919 0.001040 -0.000878 -0.002832 -0.004824 -0.006853 -0.008918 -0.011020 -0.013158 -0.015331 -0.017539 -0.019780 -0.022054 -0.024359 -0.026694 -0.029057 -0.031447 -0.033863 -0.036302 -0.038763 -0.041244 -0.043743 -0.046259 -0.048790 -0.051333 -0.053887 -0.056450 -0.059019 -0.061593 -0.064169 -0.066745 -0.069318 -0.071887 -0.074449 -0.077001 -0.079541 -0.082067 -0.084575 -0.087064 -0.089531 -0.091972 -0.094386 -0.096769 -0.099120 -0.101436 -0.103715 -0.105955 -0.108154 -0.110312 -0.112427 -0.114499 -0.116527 -0.118512 -0.120452 -0.122350 -0.124204 -0.126015 -0.037864 0.038364 0.038857 0.039335 0.039787 0.040199 0.040557 0.040850 0.041073 0.041223 0.041299 0.041295 0.041212 0.041053 0.040818 0.040507 0.040117 0.039652 0.039114 0.038506 0.037833 0.037098 0.036305 0.035456 0.034552 0.033597 0.032592 0.031537 0.030435 0.029286 0.028091 0.026852 0.025568 0.024240 0.022870 0.021456 0.020001 0.018504 0.016966 0.015386 0.013765 0.012104 0.010403 0.008661 0.006879 0.005058 0.003196 0.001295 -0.000646 -0.002627 -0.004647 -0.006706 -0.008804 -0.010941 -0.013115 -0.015328 -0.017577 -0.019862 -0.022181 -0.024535 -0.026920 -0.029336 -0.031781 -0.034254 -0.036753 -0.039275 -0.041820 -0.044385 -0.046968 -0.049569 -0.052183 -0.054811 -0.057448 -0.060094 -0.062746 -0.065402 -0.068059 -0.070716 -0.073369 -0.076017 -0.078656 -0.081285 -0.083900 -0.086499 -0.089080 -0.091638 -0.094173 -0.096681 -0.099159 -0.101604 -0.104015 -0.106389 -0.108723 -0.111017 -0.113268 -0.115476 -0.117640 -0.119759 -0.121833 -0.123862 -0.125847 -0.127787 -0.129683 -0.131535 -0.036046 0.036562 0.037074 0.037579 0.038068 0.038528 0.038946 0.039307 0.039599 0.039815 0.039956 0.040017 0.039995 0.039890 0.039706 0.039443 0.039098 0.038673 0.038169 0.037589 0.036938 0.036219 0.035437 0.034594 0.033694 0.032737 0.031726 0.030663 0.029549 0.028384 0.027171 0.025910 0.024602 0.023247 0.021846 0.020401 0.018910 0.017376 0.015797 0.014175 0.012510 0.010802 0.009051 0.007257 0.005422 0.003544 0.001624 -0.000338 -0.002342 -0.004387 -0.006474 -0.008602 -0.010770 -0.012980 -0.015229 -0.017517 -0.019843 -0.022207 -0.024607 -0.027041 -0.029508 -0.032007 -0.034535 -0.037092 -0.039674 -0.042282 -0.044911 -0.047562 -0.050231 -0.052916 -0.055616 -0.058329 -0.061051 -0.063782 -0.066518 -0.069257 -0.071997 -0.074736 -0.077470 -0.080198 -0.082916 -0.085622 -0.088313 -0.090987 -0.093640 -0.096270 -0.098874 -0.101448 -0.103991 -0.106500 -0.108971 -0.111404 -0.113795 -0.116143 -0.118448 -0.120707 -0.122920 -0.125088 -0.127209 -0.129285 -0.131315 -0.133299 -0.135239 -0.137134 -0.034280 0.034811 0.035340 0.035864 0.036380 0.036878 0.037343 0.037762 0.038121 0.038405 0.038610 0.038734 0.038775 0.038728 0.038596 0.038381 0.038082 0.037697 0.037228 0.036678 0.036050 0.035349 0.034578 0.033743 0.032845 0.031886 0.030870 0.029798 0.028671 0.027491 0.026259 0.024976 0.023642 0.022260 0.020829 0.019350 0.017823 0.016250 0.014631 0.012965 0.011254 0.009498 0.007696 0.005850 0.003959 0.002024 0.000044 -0.001980 -0.004047 -0.006159 -0.008314 -0.010512 -0.012753 -0.015036 -0.017361 -0.019727 -0.022132 -0.024576 -0.027056 -0.029573 -0.032123 -0.034706 -0.037319 -0.039960 -0.042629 -0.045322 -0.048038 -0.050775 -0.053531 -0.056303 -0.059090 -0.061889 -0.064697 -0.067514 -0.070335 -0.073159 -0.075983 -0.078805 -0.081621 -0.084430 -0.087228 -0.090013 -0.092781 -0.095531 -0.098258 -0.100959 -0.103633 -0.106276 -0.108885 -0.111457 -0.113990 -0.116482 -0.118931 -0.121335 -0.123694 -0.126005 -0.128270 -0.130487 -0.132658 -0.134781 -0.136858 -0.138888 -0.140873 -0.142814 -0.032561 0.033110 0.033655 0.034196 0.034733 0.035259 0.035762 0.036228 0.036644 0.036994 0.037265 0.037452 0.037554 0.037567 0.037488 0.037321 0.037067 0.036725 0.036292 0.035773 0.035169 0.034486 0.033728 0.032900 0.032004 0.031045 0.030023 0.028942 0.027802 0.026606 0.025354 0.024048 0.022689 0.021278 0.019816 0.018303 0.016740 0.015127 0.013466 0.011756 0.009998 0.008192 0.006339 0.004439 0.002491 0.000497 -0.001543 -0.003630 -0.005764 -0.007943 -0.010167 -0.012437 -0.014752 -0.017111 -0.019513 -0.021957 -0.024443 -0.026968 -0.029532 -0.032131 -0.034766 -0.037434 -0.040133 -0.042861 -0.045616 -0.048397 -0.051201 -0.054026 -0.056870 -0.059730 -0.062605 -0.065492 -0.068388 -0.071291 -0.074199 -0.077109 -0.080019 -0.082925 -0.085825 -0.088716 -0.091595 -0.094459 -0.097306 -0.100132 -0.102934 -0.105709 -0.108453 -0.111165 -0.113841 -0.116478 -0.119074 -0.121626 -0.124134 -0.126595 -0.129008 -0.131374 -0.133691 -0.135960 -0.138180 -0.140353 -0.142478 -0.144556 -0.146589 -0.148576 -0.030885 0.031454 0.032017 0.032575 0.033129 0.033677 0.034211 0.034716 0.035180 0.035586 0.035921 0.036171 0.036334 0.036406 0.036383 0.036266 0.036056 0.035756 0.035361 0.034872 0.034294 0.033630 0.032885 0.032065 0.031173 0.030212 0.029185 0.028094 0.026941 0.025728 0.024456 0.023127 0.021742 0.020302 0.018807 0.017259 0.015659 0.014006 0.012302 0.010546 0.008740 0.006884 0.004978 0.003022 0.001017 -0.001037 -0.003140 -0.005291 -0.007491 -0.009740 -0.012036 -0.014379 -0.016769 -0.019205 -0.021685 -0.024210 -0.026777 -0.029385 -0.032033 -0.034717 -0.037438 -0.040192 -0.042978 -0.045794 -0.048638 -0.051508 -0.054401 -0.057315 -0.060248 -0.063198 -0.066162 -0.069138 -0.072123 -0.075115 -0.078111 -0.081109 -0.084105 -0.087096 -0.090081 -0.093056 -0.096017 -0.098962 -0.101888 -0.104792 -0.107669 -0.110518 -0.113335 -0.116117 -0.118860 -0.121563 -0.124222 -0.126836 -0.129403 -0.131922 -0.134393 -0.136813 -0.139184 -0.141506 -0.143779 -0.146002 -0.148178 -0.150305 -0.152386 -0.154422 -0.029247 0.029839 0.030422 0.030999 0.031570 0.032137 0.032695 0.033233 0.033736 0.034190 0.034582 0.034894 0.035117 0.035246 0.035280 0.035214 0.035050 0.034790 0.034433 0.033977 0.033425 0.032781 0.032050 0.031238 0.030349 0.029387 0.028354 0.027253 0.026087 0.024857 0.023565 0.022212 0.020800 0.019330 0.017803 0.016219 0.014580 0.012886 0.011138 0.009336 0.007481 0.005573 0.003613 0.001601 -0.000463 -0.002579 -0.004746 -0.006963 -0.009232 -0.011550 -0.013919 -0.016337 -0.018804 -0.021318 -0.023879 -0.026485 -0.029135 -0.031828 -0.034560 -0.037331 -0.040139 -0.042981 -0.045856 -0.048761 -0.051695 -0.054654 -0.057638 -0.060643 -0.063667 -0.066707 -0.069762 -0.072829 -0.075905 -0.078986 -0.082072 -0.085158 -0.088242 -0.091320 -0.094391 -0.097450 -0.100495 -0.103523 -0.106529 -0.109511 -0.112466 -0.115390 -0.118280 -0.121132 -0.123944 -0.126713 -0.129437 -0.132114 -0.134742 -0.137321 -0.139848 -0.142326 -0.144752 -0.147128 -0.149454 -0.151730 -0.153958 -0.156136 -0.158268 -0.160354 -0.027643 0.028260 0.028866 0.029464 0.030054 0.030639 0.031217 0.031781 0.032319 0.032814 0.033253 0.033622 0.033904 0.034091 0.034179 0.034165 0.034047 0.033828 0.033509 0.033086 0.032562 0.031939 0.031222 0.030419 0.029533 0.028569 0.027530 0.026420 0.025239 0.023992 0.022679 0.021302 0.019862 0.018362 0.016801 0.015181 0.013502 0.011766 0.009973 0.008124 0.006219 0.004258 0.002243 0.000173 -0.001952 -0.004130 -0.006362 -0.008647 -0.010985 -0.013376 -0.015819 -0.018313 -0.020858 -0.023452 -0.026094 -0.028784 -0.031518 -0.034296 -0.037115 -0.039973 -0.042870 -0.045801 -0.048766 -0.051762 -0.054786 -0.057838 -0.060913 -0.064010 -0.067126 -0.070260 -0.073407 -0.076565 -0.079733 -0.082906 -0.086082 -0.089258 -0.092431 -0.095598 -0.098756 -0.101901 -0.105031 -0.108141 -0.111229 -0.114291 -0.117324 -0.120324 -0.123288 -0.126212 -0.129094 -0.131931 -0.134720 -0.137461 -0.140151 -0.142790 -0.145377 -0.147912 -0.150396 -0.152828 -0.155209 -0.157539 -0.159820 -0.162051 -0.164235 -0.166373 -0.026071 0.026714 0.027345 0.027966 0.028577 0.029181 0.029777 0.030364 0.030930 0.031461 0.031941 0.032358 0.032696 0.032940 0.033082 0.033119 0.033049 0.032871 0.032589 0.032200 0.031703 0.031102 0.030400 0.029606 0.028724 0.027758 0.026714 0.025593 0.024398 0.023133 0.021798 0.020397 0.018929 0.017397 0.015802 0.014144 0.012425 0.010646 0.008807 0.006909 0.004953 0.002939 0.000867 -0.001262 -0.003448 -0.005690 -0.007989 -0.010343 -0.012752 -0.015216 -0.017735 -0.020306 -0.022931 -0.025606 -0.028332 -0.031105 -0.033925 -0.036790 -0.039697 -0.042645 -0.045631 -0.048653 -0.051709 -0.054797 -0.057914 -0.061058 -0.064227 -0.067418 -0.070628 -0.073855 -0.077096 -0.080348 -0.083608 -0.086874 -0.090142 -0.093409 -0.096673 -0.099930 -0.103176 -0.106408 -0.109624 -0.112819 -0.115990 -0.119133 -0.122245 -0.125322 -0.128360 -0.131358 -0.134310 -0.137216 -0.140072 -0.142878 -0.145631 -0.148332 -0.150980 -0.153575 -0.156117 -0.158606 -0.161043 -0.163430 -0.165765 -0.168051 -0.170289 -0.172480 -0.024528 0.025199 0.025857 0.026502 0.027136 0.027760 0.028376 0.028982 0.029572 0.030134 0.030651 0.031109 0.031495 0.031793 0.031989 0.032077 0.032054 0.031919 0.031673 0.031317 0.030849 0.030270 0.029585 0.028799 0.027921 0.026954 0.025903 0.024772 0.023563 0.022279 0.020923 0.019495 0.017999 0.016435 0.014804 0.013109 0.011349 0.009525 0.007640 0.005692 0.003683 0.001614 -0.000515 -0.002705 -0.004953 -0.007261 -0.009627 -0.012051 -0.014533 -0.017072 -0.019668 -0.022319 -0.025024 -0.027782 -0.030592 -0.033451 -0.036358 -0.039311 -0.042308 -0.045345 -0.048423 -0.051537 -0.054686 -0.057867 -0.061079 -0.064317 -0.067581 -0.070867 -0.074172 -0.077494 -0.080830 -0.084177 -0.087532 -0.090892 -0.094253 -0.097613 -0.100969 -0.104316 -0.107652 -0.110974 -0.114276 -0.117557 -0.120811 -0.124037 -0.127229 -0.130384 -0.133499 -0.136570 -0.139594 -0.142570 -0.145494 -0.148366 -0.151184 -0.153948 -0.156658 -0.159314 -0.161916 -0.164464 -0.166960 -0.169403 -0.171795 -0.174138 -0.176432 -0.178678 -0.023012 0.023712 0.024397 0.025068 0.025727 0.026373 0.027009 0.027635 0.028246 0.028834 0.029383 0.029879 0.030307 0.030653 0.030901 0.031039 0.031063 0.030971 0.030762 0.030439 0.030000 0.029443 0.028774 0.027999 0.027124 0.026156 0.025099 0.023957 0.022733 0.021430 0.020051 0.018598 0.017072 0.015475 0.013808 0.012074 0.010272 0.008403 0.006470 0.004472 0.002409 0.000284 -0.001905 -0.004155 -0.006468 -0.008842 -0.011278 -0.013773 -0.016329 -0.018945 -0.021619 -0.024350 -0.027138 -0.029980 -0.032875 -0.035822 -0.038817 -0.041860 -0.044947 -0.048076 -0.051246 -0.054454 -0.057697 -0.060974 -0.064280 -0.067615 -0.070975 -0.074357 -0.077759 -0.081178 -0.084610 -0.088054 -0.091504 -0.094960 -0.098416 -0.101870 -0.105319 -0.108759 -0.112186 -0.115597 -0.118988 -0.122355 -0.125695 -0.129003 -0.132277 -0.135511 -0.138703 -0.141849 -0.144947 -0.147993 -0.150987 -0.153926 -0.156810 -0.159639 -0.162412 -0.165131 -0.167794 -0.170403 -0.172958 -0.175461 -0.177912 -0.180312 -0.182663 -0.184966 -0.021521 0.022250 0.022964 0.023663 0.024347 0.025017 0.025675 0.026320 0.026951 0.027562 0.028140 0.028669 0.029134 0.029523 0.029819 0.030005 0.030076 0.030027 0.029856 0.029565 0.029154 0.028621 0.027969 0.027204 0.026333 0.025363 0.024300 0.023147 0.021908 0.020586 0.019183 0.017703 0.016147 0.014517 0.012813 0.011039 0.009194 0.007279 0.005297 0.003247 0.001130 -0.001053 -0.003301 -0.005615 -0.007993 -0.010435 -0.012941 -0.015510 -0.018141 -0.020834 -0.023588 -0.026401 -0.029273 -0.032200 -0.035183 -0.038218 -0.041303 -0.044436 -0.047615 -0.050838 -0.054102 -0.057405 -0.060744 -0.064116 -0.067520 -0.070952 -0.074410 -0.077890 -0.081390 -0.084907 -0.088437 -0.091978 -0.095526 -0.099079 -0.102631 -0.106181 -0.109724 -0.113258 -0.116777 -0.120279 -0.123760 -0.127215 -0.130641 -0.134034 -0.137390 -0.140705 -0.143975 -0.147197 -0.150369 -0.153487 -0.156551 -0.159559 -0.162511 -0.165406 -0.168244 -0.171027 -0.173753 -0.176424 -0.179041 -0.181604 -0.184115 -0.186574 -0.188984 -0.191346 -0.020055 0.020813 0.021556 0.022283 0.022994 0.023689 0.024370 0.025036 0.025687 0.026319 0.026921 0.027480 0.027979 0.028405 0.028743 0.028977 0.029093 0.029086 0.028954 0.028696 0.028313 0.027803 0.027169 0.026414 0.025547 0.024576 0.023506 0.022341 0.021087 0.019745 0.018319 0.016811 0.015224 0.013559 0.011819 0.010003 0.008114 0.006153 0.004121 0.002018 -0.000155 -0.002396 -0.004706 -0.007083 -0.009528 -0.012040 -0.014617 -0.017261 -0.019969 -0.022741 -0.025576 -0.028473 -0.031429 -0.034444 -0.037514 -0.040639 -0.043815 -0.047041 -0.050313 -0.053631 -0.056990 -0.060389 -0.063825 -0.067296 -0.070798 -0.074329 -0.077886 -0.081466 -0.085065 -0.088682 -0.092312 -0.095952 -0.099599 -0.103249 -0.106900 -0.110546 -0.114186 -0.117814 -0.121427 -0.125021 -0.128593 -0.132137 -0.135651 -0.139129 -0.142569 -0.145965 -0.149314 -0.152614 -0.155861 -0.159052 -0.162188 -0.165266 -0.168287 -0.171250 -0.174155 -0.177002 -0.179793 -0.182528 -0.185207 -0.187833 -0.190405 -0.192926 -0.195397 -0.197819 -0.018615 0.019399 0.020171 0.020927 0.021665 0.022387 0.023091 0.023780 0.024451 0.025103 0.025727 0.026312 0.026842 0.027302 0.027678 0.027955 0.028115 0.028150 0.028056 0.027830 0.027475 0.026990 0.026372 0.025629 0.024766 0.023794 0.022716 0.021540 0.020269 0.018907 0.017457 0.015922 0.014303 0.012603 0.010824 0.008966 0.007033 0.005024 0.002940 0.000783 -0.001446 -0.003747 -0.006119 -0.008562 -0.011075 -0.013657 -0.016308 -0.019027 -0.021813 -0.024666 -0.027583 -0.030564 -0.033607 -0.036710 -0.039870 -0.043086 -0.046354 -0.049674 -0.053041 -0.056455 -0.059911 -0.063408 -0.066943 -0.070513 -0.074115 -0.077747 -0.081404 -0.085085 -0.088786 -0.092503 -0.096234 -0.099975 -0.103722 -0.107472 -0.111221 -0.114966 -0.118703 -0.122428 -0.126136 -0.129824 -0.133487 -0.137123 -0.140725 -0.144290 -0.147814 -0.151293 -0.154722 -0.158100 -0.161423 -0.164690 -0.167899 -0.171048 -0.174139 -0.177171 -0.180144 -0.183059 -0.185916 -0.188716 -0.191460 -0.194149 -0.196785 -0.199368 -0.201902 -0.204386 -0.017204 0.018010 0.018808 0.019592 0.020359 0.021107 0.021837 0.022549 0.023241 0.023913 0.024558 0.025166 0.025724 0.026216 0.026626 0.026940 0.027142 0.027217 0.027161 0.026969 0.026642 0.026179 0.025580 0.024848 0.023990 0.023015 0.021931 0.020743 0.019456 0.018073 0.016598 0.015033 0.013382 0.011647 0.009828 0.007928 0.005949 0.003891 0.001755 -0.000456 -0.002744 -0.005106 -0.007541 -0.010051 -0.012633 -0.015287 -0.018012 -0.020808 -0.023674 -0.026609 -0.029610 -0.032677 -0.035808 -0.039000 -0.042251 -0.045559 -0.048922 -0.052336 -0.055800 -0.059311 -0.062866 -0.066462 -0.070098 -0.073768 -0.077472 -0.081205 -0.084965 -0.088748 -0.092551 -0.096371 -0.100204 -0.104047 -0.107896 -0.111748 -0.115597 -0.119442 -0.123278 -0.127100 -0.130904 -0.134687 -0.138444 -0.142171 -0.145863 -0.149516 -0.153126 -0.156688 -0.160200 -0.163657 -0.167058 -0.170400 -0.173683 -0.176906 -0.180069 -0.183171 -0.186214 -0.189197 -0.192122 -0.194989 -0.197799 -0.200553 -0.203254 -0.205902 -0.208499 -0.211047 -0.015822 0.016648 0.017469 0.018279 0.019074 0.019850 0.020605 0.021341 0.022055 0.022747 0.023412 0.024042 0.024625 0.025145 0.025587 0.025935 0.026175 0.026290 0.026270 0.026112 0.025812 0.025373 0.024791 0.024070 0.023217 0.022241 0.021150 0.019949 0.018645 0.017241 0.015740 0.014146 0.012462 0.010690 0.008831 0.006888 0.004862 0.002754 0.000565 -0.001702 -0.004049 -0.006472 -0.008973 -0.011550 -0.014203 -0.016930 -0.019731 -0.022606 -0.025553 -0.028570 -0.031657 -0.034812 -0.038031 -0.041314 -0.044658 -0.048060 -0.051517 -0.055028 -0.058590 -0.062200 -0.065855 -0.069552 -0.073289 -0.077062 -0.080868 -0.084705 -0.088568 -0.092455 -0.096363 -0.100287 -0.104224 -0.108170 -0.112122 -0.116076 -0.120028 -0.123974 -0.127909 -0.131831 -0.135733 -0.139612 -0.143464 -0.147284 -0.151067 -0.154809 -0.158506 -0.162153 -0.165747 -0.169285 -0.172765 -0.176185 -0.179543 -0.182841 -0.186076 -0.189251 -0.192365 -0.195418 -0.198412 -0.201347 -0.204225 -0.207046 -0.209813 -0.212527 -0.215190 -0.217803 -0.014468 0.015314 0.016154 0.016987 0.017809 0.018612 0.019394 0.020154 0.020891 0.021605 0.022289 0.022939 0.023545 0.024091 0.024562 0.024941 0.025215 0.025368 0.025384 0.025258 0.024986 0.024569 0.024006 0.023297 0.022448 0.021470 0.020371 0.019158 0.017836 0.016410 0.014884 0.013260 0.011542 0.009732 0.007833 0.005845 0.003771 0.001613 -0.000630 -0.002955 -0.005361 -0.007848 -0.010415 -0.013061 -0.015785 -0.018587 -0.021466 -0.024420 -0.027449 -0.030551 -0.033725 -0.036968 -0.040278 -0.043653 -0.047090 -0.050587 -0.054142 -0.057751 -0.061412 -0.065122 -0.068878 -0.072677 -0.076517 -0.080394 -0.084305 -0.088246 -0.092215 -0.096208 -0.100220 -0.104250 -0.108292 -0.112344 -0.116401 -0.120459 -0.124514 -0.128562 -0.132599 -0.136621 -0.140622 -0.144599 -0.148547 -0.152461 -0.156336 -0.160169 -0.163953 -0.167687 -0.171365 -0.174985 -0.178545 -0.182043 -0.185479 -0.188852 -0.192163 -0.195411 -0.198597 -0.201722 -0.204786 -0.207791 -0.210738 -0.213628 -0.216463 -0.219245 -0.221975 -0.224655 -0.013138 0.014005 0.014864 0.015718 0.016563 0.017393 0.018201 0.018987 0.019747 0.020482 0.021188 0.021857 0.022484 0.023054 0.023551 0.023959 0.024263 0.024450 0.024501 0.024407 0.024164 0.023769 0.023224 0.022526 0.021682 0.020703 0.019596 0.018370 0.017030 0.015582 0.014029 0.012374 0.010622 0.008774 0.006832 0.004800 0.002677 0.000466 -0.001831 -0.004214 -0.006682 -0.009233 -0.011867 -0.014583 -0.017381 -0.020258 -0.023216 -0.026251 -0.029364 -0.032551 -0.035813 -0.039146 -0.042548 -0.046016 -0.049548 -0.053142 -0.056795 -0.060503 -0.064265 -0.068077 -0.071936 -0.075839 -0.079784 -0.083766 -0.087783 -0.091830 -0.095906 -0.100005 -0.104125 -0.108262 -0.112411 -0.116569 -0.120732 -0.124896 -0.129056 -0.133208 -0.137348 -0.141471 -0.145573 -0.149648 -0.153693 -0.157703 -0.161672 -0.165596 -0.169470 -0.173290 -0.177054 -0.180757 -0.184398 -0.187976 -0.191491 -0.194941 -0.198328 -0.201651 -0.204911 -0.208109 -0.211246 -0.214323 -0.217340 -0.220301 -0.223205 -0.226056 -0.228854 -0.231603 -0.011836 0.012720 0.013600 0.014472 0.015337 0.016191 0.017027 0.017838 0.018622 0.019379 0.020105 0.020794 0.021440 0.022032 0.022554 0.022989 0.023321 0.023538 0.023623 0.023560 0.023344 0.022973 0.022444 0.021758 0.020920 0.019938 0.018823 0.017584 0.016226 0.014754 0.013174 0.011488 0.009701 0.007814 0.005830 0.003751 0.001579 -0.000685 -0.003039 -0.005481 -0.008011 -0.010628 -0.013330 -0.016118 -0.018989 -0.021944 -0.024981 -0.028099 -0.031297 -0.034572 -0.037922 -0.041346 -0.044841 -0.048404 -0.052033 -0.055725 -0.059477 -0.063286 -0.067150 -0.071065 -0.075029 -0.079038 -0.083088 -0.087177 -0.091301 -0.095457 -0.099641 -0.103849 -0.108077 -0.112322 -0.116580 -0.120846 -0.125116 -0.129387 -0.133653 -0.137911 -0.142155 -0.146381 -0.150585 -0.154761 -0.158904 -0.163010 -0.167074 -0.171091 -0.175055 -0.178964 -0.182814 -0.186602 -0.190326 -0.193985 -0.197580 -0.201109 -0.204574 -0.207973 -0.211309 -0.214581 -0.217792 -0.220941 -0.224031 -0.227063 -0.230039 -0.232960 -0.235829 -0.238648 -0.010563 0.011460 0.012358 0.013250 0.014133 0.015008 0.015868 0.016705 0.017514 0.018294 0.019041 0.019750 0.020414 0.021027 0.021572 0.022031 0.022390 0.022634 0.022749 0.022717 0.022528 0.022179 0.021667 0.020993 0.020160 0.019176 0.018053 0.016800 0.015423 0.013928 0.012320 0.010602 0.008778 0.006851 0.004824 0.002698 0.000475 -0.001842 -0.004253 -0.006755 -0.009349 -0.012032 -0.014805 -0.017665 -0.020612 -0.023645 -0.026763 -0.029965 -0.033248 -0.036612 -0.040053 -0.043570 -0.047159 -0.050818 -0.054545 -0.058336 -0.062189 -0.066101 -0.070068 -0.074088 -0.078158 -0.082273 -0.086431 -0.090629 -0.094862 -0.099127 -0.103420 -0.107738 -0.112077 -0.116432 -0.120799 -0.125175 -0.129555 -0.133934 -0.138308 -0.142672 -0.147022 -0.151352 -0.155659 -0.159937 -0.164180 -0.168384 -0.172544 -0.176654 -0.180710 -0.184709 -0.188646 -0.192520 -0.196328 -0.200071 -0.203747 -0.207356 -0.210899 -0.214377 -0.217790 -0.221139 -0.224424 -0.227648 -0.230812 -0.233917 -0.236966 -0.239959 -0.242900 -0.245791 -0.009324 0.010228 0.011140 0.012050 0.012952 0.013844 0.014726 0.015588 0.016421 0.017224 0.017993 0.018722 0.019405 0.020037 0.020603 0.021086 0.021469 0.021737 0.021880 0.021877 0.021715 0.021387 0.020893 0.020230 0.019402 0.018416 0.017285 0.016017 0.014621 0.013102 0.011465 0.009715 0.007854 0.005887 0.003815 0.001641 -0.000633 -0.003005 -0.005474 -0.008038 -0.010696 -0.013447 -0.016290 -0.019224 -0.022248 -0.025361 -0.028562 -0.031849 -0.035220 -0.038673 -0.042206 -0.045816 -0.049501 -0.053258 -0.057084 -0.060976 -0.064931 -0.068947 -0.073019 -0.077146 -0.081322 -0.085546 -0.089813 -0.094120 -0.098464 -0.102840 -0.107245 -0.111674 -0.116124 -0.120591 -0.125070 -0.129557 -0.134047 -0.138536 -0.143019 -0.147491 -0.151948 -0.156385 -0.160796 -0.165176 -0.169521 -0.173824 -0.178081 -0.182286 -0.186435 -0.190525 -0.194551 -0.198512 -0.202406 -0.206232 -0.209991 -0.213683 -0.217307 -0.220864 -0.224355 -0.227781 -0.231144 -0.234444 -0.237683 -0.240863 -0.243985 -0.247053 -0.250067 -0.253032 -0.008118 0.009025 0.009945 0.010870 0.011791 0.012701 0.013601 0.014486 0.015343 0.016170 0.016960 0.017710 0.018412 0.019061 0.019647 0.020152 0.020558 0.020849 0.021016 0.021040 0.020904 0.020598 0.020121 0.019469 0.018646 0.017658 0.016518 0.015236 0.013820 0.012276 0.010610 0.008826 0.006928 0.004920 0.002803 0.000580 -0.001746 -0.004174 -0.006702 -0.009329 -0.012053 -0.014873 -0.017788 -0.020797 -0.023899 -0.027093 -0.030377 -0.033750 -0.037210 -0.040754 -0.044380 -0.048086 -0.051868 -0.055724 -0.059650 -0.063645 -0.067704 -0.071825 -0.076004 -0.080238 -0.084523 -0.088856 -0.093234 -0.097653 -0.102109 -0.106597 -0.111115 -0.115657 -0.120220 -0.124800 -0.129392 -0.133991 -0.138593 -0.143193 -0.147787 -0.152369 -0.156935 -0.161479 -0.165995 -0.170480 -0.174927 -0.179330 -0.183686 -0.187987 -0.192231 -0.196412 -0.200529 -0.204578 -0.208559 -0.212471 -0.216315 -0.220089 -0.223795 -0.227433 -0.231005 -0.234510 -0.237951 -0.241328 -0.244644 -0.247900 -0.251099 -0.254242 -0.257331 -0.260370 -0.006944 0.007854 0.008778 0.009713 0.010649 0.011577 0.012494 0.013398 0.014279 0.015129 0.015942 0.016712 0.017433 0.018100 0.018705 0.019230 0.019657 0.019970 0.020159 0.020207 0.020096 0.019812 0.019350 0.018710 0.017891 0.016901 0.015752 0.014455 0.013019 0.011450 0.009754 0.007936 0.006000 0.003949 0.001786 -0.000486 -0.002866 -0.005350 -0.007939 -0.010629 -0.013419 -0.016310 -0.019298 -0.022383 -0.025565 -0.028841 -0.032210 -0.035671 -0.039220 -0.042857 -0.046577 -0.050379 -0.054260 -0.058216 -0.062245 -0.066343 -0.070507 -0.074734 -0.079021 -0.083365 -0.087760 -0.092205 -0.096695 -0.101227 -0.105796 -0.110398 -0.115030 -0.119687 -0.124365 -0.129059 -0.133765 -0.138479 -0.143194 -0.147908 -0.152613 -0.157306 -0.161982 -0.166634 -0.171258 -0.175848 -0.180399 -0.184904 -0.189359 -0.193758 -0.198097 -0.202372 -0.206580 -0.210719 -0.214789 -0.218788 -0.222717 -0.226576 -0.230366 -0.234086 -0.237739 -0.241325 -0.244846 -0.248302 -0.251696 -0.255030 -0.258306 -0.261526 -0.264692 -0.267808 -0.005800 0.006714 0.007640 0.008579 0.009527 0.010472 0.011405 0.012326 0.013228 0.014101 0.014937 0.015727 0.016468 0.017153 0.017775 0.018318 0.018766 0.019099 0.019308 0.019379 0.019291 0.019027 0.018582 0.017953 0.017138 0.016145 0.014987 0.013675 0.012218 0.010623 0.008897 0.007045 0.005070 0.002976 0.000766 -0.001557 -0.003991 -0.006533 -0.009183 -0.011938 -0.014796 -0.017758 -0.020820 -0.023983 -0.027245 -0.030605 -0.034060 -0.037610 -0.041251 -0.044981 -0.048797 -0.052697 -0.056677 -0.060735 -0.064867 -0.069070 -0.073341 -0.077677 -0.082073 -0.086527 -0.091035 -0.095592 -0.100196 -0.104842 -0.109526 -0.114244 -0.118992 -0.123765 -0.128559 -0.133369 -0.138191 -0.143020 -0.147851 -0.152678 -0.157497 -0.162303 -0.167090 -0.171852 -0.176584 -0.181281 -0.185937 -0.190545 -0.195101 -0.199599 -0.204035 -0.208404 -0.212705 -0.216936 -0.221095 -0.225183 -0.229199 -0.233144 -0.237019 -0.240823 -0.244559 -0.248227 -0.251829 -0.255366 -0.258840 -0.262253 -0.265608 -0.268906 -0.272151 -0.275345 -0.004682 0.005601 0.006530 0.007472 0.008426 0.009384 0.010334 0.011270 0.012191 0.013086 0.013943 0.014755 0.015515 0.016217 0.016857 0.017418 0.017884 0.018237 0.018464 0.018555 0.018488 0.018245 0.017816 0.017196 0.016386 0.015391 0.014223 0.012895 0.011417 0.009796 0.008039 0.006151 0.004136 0.001998 -0.000259 -0.002634 -0.005123 -0.007724 -0.010435 -0.013256 -0.016184 -0.019217 -0.022356 -0.025597 -0.028941 -0.032385 -0.035928 -0.039568 -0.043301 -0.047126 -0.051039 -0.055038 -0.059120 -0.063281 -0.067518 -0.071827 -0.076207 -0.080652 -0.085159 -0.089725 -0.094346 -0.099018 -0.103737 -0.108499 -0.113299 -0.118134 -0.123000 -0.127890 -0.132802 -0.137730 -0.142669 -0.147615 -0.152562 -0.157506 -0.162440 -0.167359 -0.172259 -0.177132 -0.181975 -0.186780 -0.191541 -0.196254 -0.200912 -0.205510 -0.210044 -0.214509 -0.218904 -0.223228 -0.227478 -0.231656 -0.235761 -0.239794 -0.243755 -0.247645 -0.251465 -0.255217 -0.258901 -0.262520 -0.266075 -0.269570 -0.273004 -0.276383 -0.279707 -0.282981 -0.003588 0.004515 0.005448 0.006392 0.007348 0.008315 0.009279 0.010231 0.011167 0.012082 0.012961 0.013795 0.014574 0.015294 0.015949 0.016529 0.017012 0.017383 0.017627 0.017735 0.017688 0.017464 0.017050 0.016441 0.015635 0.014637 0.013459 0.012115 0.010615 0.008968 0.007179 0.005255 0.003199 0.001017 -0.001289 -0.003716 -0.006261 -0.008922 -0.011697 -0.014584 -0.017582 -0.020689 -0.023904 -0.027226 -0.030652 -0.034183 -0.037814 -0.041545 -0.045372 -0.049293 -0.053305 -0.057405 -0.061589 -0.065854 -0.070197 -0.074615 -0.079103 -0.083660 -0.088279 -0.092959 -0.097695 -0.102483 -0.107318 -0.112198 -0.117116 -0.122070 -0.127054 -0.132064 -0.137095 -0.142142 -0.147200 -0.152265 -0.157330 -0.162390 -0.167441 -0.172475 -0.177489 -0.182476 -0.187429 -0.192343 -0.197213 -0.202031 -0.206793 -0.211492 -0.216125 -0.220688 -0.225178 -0.229596 -0.233939 -0.238208 -0.242404 -0.246525 -0.250574 -0.254551 -0.258457 -0.262294 -0.266062 -0.269765 -0.273403 -0.276979 -0.280496 -0.283956 -0.287362 -0.290716 -0.002518 0.003451 0.004391 0.005337 0.006295 0.007265 0.008241 0.009208 0.010157 0.011089 0.011990 0.012844 0.013643 0.014381 0.015053 0.015649 0.016149 0.016536 0.016797 0.016921 0.016891 0.016685 0.016286 0.015687 0.014885 0.013884 0.012696 0.011335 0.009813 0.008138 0.006317 0.004356 0.002259 0.000031 -0.002324 -0.004804 -0.007406 -0.010128 -0.012967 -0.015922 -0.018991 -0.022173 -0.025466 -0.028868 -0.032379 -0.035997 -0.039718 -0.043542 -0.047464 -0.051482 -0.055594 -0.059795 -0.064083 -0.068454 -0.072905 -0.077432 -0.082032 -0.086701 -0.091434 -0.096229 -0.101081 -0.105986 -0.110940 -0.115939 -0.120977 -0.126051 -0.131155 -0.136286 -0.141438 -0.146605 -0.151784 -0.156968 -0.162153 -0.167332 -0.172500 -0.177652 -0.182781 -0.187882 -0.192948 -0.197973 -0.202951 -0.207876 -0.212743 -0.217544 -0.222278 -0.226939 -0.231527 -0.236040 -0.240478 -0.244840 -0.249127 -0.253339 -0.257477 -0.261542 -0.265536 -0.269459 -0.273313 -0.277100 -0.280823 -0.284483 -0.288083 -0.291626 -0.295115 -0.298552 -0.001475 0.002410 0.003356 0.004307 0.005267 0.006238 0.007219 0.008199 0.009163 0.010109 0.011029 0.011904 0.012723 0.013479 0.014167 0.014778 0.015294 0.015698 0.015973 0.016111 0.016097 0.015908 0.015523 0.014933 0.014135 0.013131 0.011932 0.010555 0.009010 0.007307 0.005453 0.003454 0.001315 -0.000959 -0.003364 -0.005898 -0.008558 -0.011342 -0.014246 -0.017270 -0.020411 -0.023669 -0.027041 -0.030526 -0.034122 -0.037828 -0.041641 -0.045558 -0.049577 -0.053694 -0.057906 -0.062211 -0.066604 -0.071082 -0.075642 -0.080280 -0.084993 -0.089775 -0.094624 -0.099536 -0.104506 -0.109530 -0.114603 -0.119722 -0.124882 -0.130077 -0.135304 -0.140557 -0.145831 -0.151121 -0.156421 -0.161727 -0.167032 -0.172332 -0.177619 -0.182889 -0.188135 -0.193351 -0.198531 -0.203669 -0.208757 -0.213790 -0.218763 -0.223668 -0.228504 -0.233265 -0.237951 -0.242561 -0.247094 -0.251551 -0.255931 -0.260235 -0.264464 -0.268619 -0.272701 -0.276712 -0.280654 -0.284527 -0.288336 -0.292081 -0.295766 -0.299394 -0.302967 -0.306488 -0.000462 0.001393 0.002342 0.003299 0.004261 0.005233 0.006216 0.007205 0.008183 0.009141 0.010077 0.010973 0.011811 0.012585 0.013289 0.013916 0.014448 0.014866 0.015156 0.015307 0.015307 0.015132 0.014761 0.014180 0.013385 0.012377 0.011168 0.009773 0.008205 0.006473 0.004586 0.002549 0.000367 -0.001953 -0.004410 -0.006999 -0.009718 -0.012564 -0.015535 -0.018628 -0.021843 -0.025178 -0.028630 -0.032199 -0.035882 -0.039677 -0.043582 -0.047594 -0.051711 -0.055928 -0.060243 -0.064652 -0.069152 -0.073739 -0.078409 -0.083159 -0.087985 -0.092883 -0.097849 -0.102879 -0.107968 -0.113113 -0.118308 -0.123549 -0.128831 -0.134150 -0.139500 -0.144876 -0.150274 -0.155688 -0.161112 -0.166540 -0.171968 -0.177389 -0.182798 -0.188187 -0.193552 -0.198885 -0.204180 -0.209431 -0.214631 -0.219773 -0.224853 -0.229864 -0.234802 -0.239665 -0.244451 -0.249159 -0.253790 -0.258342 -0.262816 -0.267214 -0.271535 -0.275781 -0.279954 -0.284054 -0.288084 -0.292046 -0.295942 -0.299774 -0.303545 -0.307259 -0.310918 -0.314525 --0.000520 0.000401 0.001349 0.002311 0.003277 0.004250 0.005233 0.006226 0.007215 0.008187 0.009136 0.010050 0.010908 0.011701 0.012421 0.013062 0.013609 0.014041 0.014345 0.014508 0.014519 0.014358 0.014000 0.013428 0.012635 0.011624 0.010403 0.008991 0.007399 0.005638 0.003716 0.001640 -0.000584 -0.002953 -0.005462 -0.008107 -0.010885 -0.013795 -0.016833 -0.019998 -0.023287 -0.026699 -0.030233 -0.033887 -0.037657 -0.041544 -0.045542 -0.049651 -0.053866 -0.058185 -0.062603 -0.067118 -0.071726 -0.076423 -0.081205 -0.086069 -0.091011 -0.096026 -0.101110 -0.106259 -0.111469 -0.116736 -0.122053 -0.127418 -0.132824 -0.138268 -0.143743 -0.149245 -0.154768 -0.160307 -0.165856 -0.171409 -0.176961 -0.182505 -0.188035 -0.193546 -0.199030 -0.204482 -0.209894 -0.215259 -0.220572 -0.225825 -0.231013 -0.236131 -0.241174 -0.246140 -0.251027 -0.255835 -0.260564 -0.265213 -0.269784 -0.274276 -0.278691 -0.283030 -0.287294 -0.291485 -0.295605 -0.299656 -0.303641 -0.307561 -0.311420 -0.315222 -0.318968 -0.322663 --0.001468 -0.000562 0.000379 0.001342 0.002313 0.003288 0.004270 0.005264 0.006261 0.007245 0.008206 0.009136 0.010014 0.010824 0.011560 0.012216 0.012777 0.013223 0.013539 0.013714 0.013735 0.013586 0.013240 0.012676 0.011886 0.010870 0.009638 0.008207 0.006591 0.004800 0.002844 0.000728 -0.001541 -0.003958 -0.006519 -0.009221 -0.012061 -0.015035 -0.018141 -0.021378 -0.024743 -0.028234 -0.031851 -0.035590 -0.039450 -0.043428 -0.047522 -0.051728 -0.056043 -0.060464 -0.064988 -0.069610 -0.074327 -0.079135 -0.084031 -0.089010 -0.094068 -0.099202 -0.104406 -0.109677 -0.115009 -0.120399 -0.125841 -0.131331 -0.136863 -0.142432 -0.148034 -0.153663 -0.159313 -0.164978 -0.170654 -0.176333 -0.182010 -0.187679 -0.193333 -0.198966 -0.204572 -0.210143 -0.215673 -0.221155 -0.226582 -0.231947 -0.237245 -0.242470 -0.247619 -0.252689 -0.257679 -0.262588 -0.267417 -0.272165 -0.276833 -0.281421 -0.285932 -0.290365 -0.294722 -0.299005 -0.303217 -0.307359 -0.311433 -0.315443 -0.319392 -0.323282 -0.327118 -0.330901 --0.002382 -0.001495 -0.000567 0.000392 0.001367 0.002345 0.003328 0.004320 0.005321 0.006315 0.007287 0.008231 0.009126 0.009954 0.010707 0.011377 0.011952 0.012411 0.012739 0.012924 0.012955 0.012816 0.012480 0.011923 0.011135 0.010116 0.008872 0.007422 0.005781 0.003960 0.001968 -0.000188 -0.002502 -0.004968 -0.007583 -0.010343 -0.013244 -0.016283 -0.019459 -0.022769 -0.026211 -0.029783 -0.033483 -0.037309 -0.041259 -0.045330 -0.049520 -0.053825 -0.058242 -0.062767 -0.067397 -0.072127 -0.076955 -0.081876 -0.086887 -0.091982 -0.097159 -0.102412 -0.107738 -0.113131 -0.118588 -0.124102 -0.129670 -0.135286 -0.140946 -0.146643 -0.152373 -0.158130 -0.163909 -0.169702 -0.175506 -0.181313 -0.187117 -0.192912 -0.198691 -0.204448 -0.210176 -0.215868 -0.221518 -0.227117 -0.232659 -0.238138 -0.243547 -0.248881 -0.254137 -0.259313 -0.264407 -0.269419 -0.274349 -0.279198 -0.283964 -0.288651 -0.293257 -0.297786 -0.302238 -0.306615 -0.310919 -0.315153 -0.319320 -0.323421 -0.327460 -0.331441 -0.335367 -0.339241 --0.003262 -0.002396 -0.001485 -0.000536 0.000438 0.001420 0.002404 0.003395 0.004394 0.005397 0.006380 0.007334 0.008246 0.009092 0.009861 0.010545 0.011133 0.011605 0.011944 0.012138 0.012178 0.012047 0.011720 0.011171 0.010385 0.009360 0.008104 0.006635 0.004969 0.003117 0.001089 -0.001108 -0.003468 -0.005984 -0.008654 -0.011472 -0.014435 -0.017542 -0.020788 -0.024172 -0.027691 -0.031344 -0.035129 -0.039044 -0.043085 -0.047251 -0.051538 -0.055943 -0.060462 -0.065093 -0.069830 -0.074671 -0.079611 -0.084646 -0.089773 -0.094986 -0.100283 -0.105657 -0.111106 -0.116623 -0.122205 -0.127846 -0.133541 -0.139286 -0.145074 -0.150901 -0.156761 -0.162648 -0.168556 -0.174479 -0.180412 -0.186348 -0.192281 -0.198203 -0.204109 -0.209991 -0.215844 -0.221658 -0.227428 -0.233147 -0.238806 -0.244399 -0.249920 -0.255365 -0.260730 -0.266013 -0.271212 -0.276329 -0.281361 -0.286311 -0.291178 -0.295964 -0.300668 -0.305294 -0.309842 -0.314314 -0.318713 -0.323040 -0.327300 -0.331494 -0.335626 -0.339699 -0.343716 -0.347682 --0.004106 -0.003266 -0.002374 -0.001440 -0.000472 0.000511 0.001498 0.002488 0.003484 0.004490 0.005483 0.006447 0.007372 0.008235 0.009020 0.009719 0.010321 0.010804 0.011153 0.011357 0.011404 0.011280 0.010961 0.010418 0.009633 0.008604 0.007335 0.005847 0.004155 0.002271 0.000206 -0.002033 -0.004439 -0.007006 -0.009731 -0.012608 -0.015636 -0.018809 -0.022127 -0.025586 -0.029184 -0.032920 -0.036791 -0.040795 -0.044929 -0.049190 -0.053575 -0.058082 -0.062705 -0.067442 -0.072288 -0.077240 -0.082294 -0.087445 -0.092689 -0.098022 -0.103440 -0.108937 -0.114510 -0.120153 -0.125862 -0.131631 -0.137455 -0.143329 -0.149248 -0.155206 -0.161197 -0.167215 -0.173254 -0.179309 -0.185373 -0.191440 -0.197502 -0.203553 -0.209587 -0.215597 -0.221574 -0.227513 -0.233405 -0.239244 -0.245021 -0.250730 -0.256365 -0.261922 -0.267397 -0.272788 -0.278094 -0.283316 -0.288453 -0.293506 -0.298475 -0.303361 -0.308165 -0.312889 -0.317534 -0.322103 -0.326598 -0.331020 -0.335374 -0.339663 -0.343888 -0.348055 -0.352166 -0.356225 --0.004912 -0.004104 -0.003234 -0.002318 -0.001362 -0.000381 0.000607 0.001598 0.002592 0.003595 0.004596 0.005569 0.006506 0.007385 0.008186 0.008899 0.009513 0.010009 0.010368 0.010580 0.010633 0.010515 0.010203 0.009665 0.008881 0.007846 0.006565 0.005056 0.003338 0.001422 -0.000681 -0.002962 -0.005415 -0.008034 -0.010815 -0.013753 -0.016844 -0.020086 -0.023476 -0.027011 -0.030690 -0.034509 -0.038467 -0.042562 -0.046789 -0.051147 -0.055633 -0.060242 -0.064970 -0.069815 -0.074771 -0.079836 -0.085005 -0.090273 -0.095636 -0.101090 -0.106630 -0.112252 -0.117950 -0.123721 -0.129558 -0.135456 -0.141411 -0.147416 -0.153467 -0.159557 -0.165681 -0.171832 -0.178005 -0.184192 -0.190389 -0.196587 -0.202781 -0.208963 -0.215126 -0.221264 -0.227369 -0.233432 -0.239448 -0.245408 -0.251305 -0.257131 -0.262881 -0.268551 -0.274138 -0.279639 -0.285054 -0.290383 -0.295625 -0.300783 -0.305854 -0.310842 -0.315747 -0.320571 -0.325315 -0.329982 -0.334574 -0.339093 -0.343543 -0.347927 -0.352248 -0.356509 -0.360715 -0.364870 --0.005674 -0.004908 -0.004066 -0.003170 -0.002230 -0.001257 -0.000268 0.000723 0.001715 0.002715 0.003719 0.004701 0.005647 0.006540 0.007357 0.008084 0.008711 0.009218 0.009586 0.009806 0.009865 0.009752 0.009445 0.008912 0.008128 0.007087 0.005793 0.004264 0.002518 0.000570 -0.001571 -0.003896 -0.006397 -0.009068 -0.011906 -0.014905 -0.018062 -0.021373 -0.024837 -0.028449 -0.032209 -0.036113 -0.040159 -0.044345 -0.048667 -0.053124 -0.057710 -0.062423 -0.067258 -0.072212 -0.077280 -0.082458 -0.087743 -0.093130 -0.098613 -0.104190 -0.109854 -0.115602 -0.121427 -0.127326 -0.133293 -0.139323 -0.145409 -0.151548 -0.157732 -0.163956 -0.170214 -0.176500 -0.182807 -0.189129 -0.195459 -0.201791 -0.208118 -0.214432 -0.220726 -0.226994 -0.233226 -0.239417 -0.245558 -0.251640 -0.257658 -0.263603 -0.269470 -0.275254 -0.280953 -0.286565 -0.292090 -0.297528 -0.302878 -0.308141 -0.313317 -0.318408 -0.323416 -0.328341 -0.333185 -0.337951 -0.342642 -0.347259 -0.351807 -0.356288 -0.360705 -0.365063 -0.369366 -0.373617 --0.006393 -0.005675 -0.004868 -0.003995 -0.003074 -0.002114 -0.001128 -0.000137 0.000854 0.001849 0.002852 0.003842 0.004795 0.005700 0.006533 0.007274 0.007914 0.008431 0.008809 0.009036 0.009100 0.008991 0.008687 0.008157 0.007374 0.006326 0.005018 0.003468 0.001695 -0.000286 -0.002466 -0.004834 -0.007384 -0.010109 -0.013004 -0.016066 -0.019289 -0.022671 -0.026208 -0.029899 -0.033740 -0.037730 -0.041866 -0.046145 -0.050563 -0.055119 -0.059807 -0.064625 -0.069568 -0.074632 -0.079813 -0.085107 -0.090510 -0.096016 -0.101621 -0.107322 -0.113112 -0.118986 -0.124941 -0.130970 -0.137068 -0.143230 -0.149451 -0.155723 -0.162042 -0.168402 -0.174796 -0.181218 -0.187661 -0.194119 -0.200585 -0.207052 -0.213513 -0.219960 -0.226387 -0.232786 -0.239148 -0.245467 -0.251733 -0.257940 -0.264080 -0.270145 -0.276130 -0.282030 -0.287843 -0.293569 -0.299205 -0.304752 -0.310211 -0.315581 -0.320863 -0.326059 -0.331170 -0.336198 -0.341144 -0.346011 -0.350802 -0.355519 -0.360165 -0.364744 -0.369260 -0.373716 -0.378116 -0.382466 --0.007067 -0.006402 -0.005638 -0.004794 -0.003894 -0.002951 -0.001973 -0.000983 0.000007 0.000998 0.001997 0.002991 0.003952 0.004866 0.005713 0.006469 0.007120 0.007648 0.008035 0.008268 0.008337 0.008231 0.007929 0.007403 0.006618 0.005564 0.004242 0.002671 0.000870 -0.001146 -0.003365 -0.005778 -0.008377 -0.011156 -0.014110 -0.017234 -0.020525 -0.023978 -0.027591 -0.031361 -0.035286 -0.039362 -0.043589 -0.047961 -0.052477 -0.057133 -0.061925 -0.066849 -0.071901 -0.077077 -0.082372 -0.087783 -0.093304 -0.098932 -0.104661 -0.110486 -0.116403 -0.122407 -0.128491 -0.134652 -0.140883 -0.147180 -0.153535 -0.159943 -0.166399 -0.172896 -0.179427 -0.185986 -0.192567 -0.199162 -0.205765 -0.212369 -0.218966 -0.225548 -0.232109 -0.238640 -0.245134 -0.251582 -0.257976 -0.264309 -0.270572 -0.276758 -0.282862 -0.288879 -0.294809 -0.300648 -0.306397 -0.312056 -0.317624 -0.323103 -0.328493 -0.333795 -0.339011 -0.344143 -0.349192 -0.354161 -0.359054 -0.363872 -0.368618 -0.373298 -0.377913 -0.382468 -0.386968 -0.391417 --0.007698 -0.007088 -0.006373 -0.005565 -0.004690 -0.003766 -0.002802 -0.001815 -0.000827 0.000162 0.001154 0.002149 0.003117 0.004038 0.004898 0.005667 0.006331 0.006870 0.007264 0.007504 0.007577 0.007472 0.007172 0.006647 0.005862 0.004800 0.003464 0.001870 0.000041 -0.002009 -0.004268 -0.006727 -0.009376 -0.012210 -0.015223 -0.018411 -0.021770 -0.025295 -0.028985 -0.032835 -0.036844 -0.041009 -0.045327 -0.049794 -0.054409 -0.059166 -0.064063 -0.069094 -0.074257 -0.079546 -0.084957 -0.090485 -0.096127 -0.101877 -0.107731 -0.113683 -0.119728 -0.125862 -0.132079 -0.138373 -0.144739 -0.151170 -0.157662 -0.164208 -0.170802 -0.177437 -0.184107 -0.190805 -0.197525 -0.204260 -0.211001 -0.217743 -0.224477 -0.231196 -0.237892 -0.244557 -0.251183 -0.257762 -0.264286 -0.270745 -0.277133 -0.283442 -0.289666 -0.295803 -0.301849 -0.307804 -0.313667 -0.319439 -0.325118 -0.330707 -0.336206 -0.341616 -0.346938 -0.352175 -0.357329 -0.362403 -0.367398 -0.372318 -0.377167 -0.381947 -0.386664 -0.391320 -0.395921 -0.400470 --0.008288 -0.007733 -0.007071 -0.006307 -0.005461 -0.004559 -0.003613 -0.002634 -0.001648 -0.000662 0.000325 0.001316 0.002289 0.003216 0.004087 0.004869 0.005545 0.006094 0.006496 0.006742 0.006818 0.006715 0.006416 0.005890 0.005103 0.004034 0.002683 0.001067 -0.000792 -0.002877 -0.005177 -0.007681 -0.010381 -0.013271 -0.016345 -0.019597 -0.023025 -0.026623 -0.030390 -0.034322 -0.038416 -0.042670 -0.047081 -0.051645 -0.056359 -0.061219 -0.066221 -0.071361 -0.076635 -0.082039 -0.087567 -0.093215 -0.098979 -0.104853 -0.110832 -0.116913 -0.123088 -0.129353 -0.135703 -0.142132 -0.148634 -0.155203 -0.161832 -0.168517 -0.175251 -0.182026 -0.188836 -0.195676 -0.202536 -0.209411 -0.216293 -0.223174 -0.230047 -0.236904 -0.243737 -0.250537 -0.257297 -0.264009 -0.270662 -0.277250 -0.283764 -0.290197 -0.296543 -0.302800 -0.308965 -0.315037 -0.321016 -0.326901 -0.332694 -0.338394 -0.344003 -0.349522 -0.354952 -0.360296 -0.365556 -0.370735 -0.375834 -0.380858 -0.385810 -0.390693 -0.395512 -0.400271 -0.404974 -0.409626 --0.008841 -0.008339 -0.007731 -0.007016 -0.006207 -0.005330 -0.004404 -0.003439 -0.002456 -0.001473 -0.000492 0.000493 0.001468 0.002401 0.003279 0.004075 0.004762 0.005321 0.005731 0.005982 0.006061 0.005959 0.005659 0.005133 0.004343 0.003266 0.001900 0.000261 -0.001627 -0.003749 -0.006090 -0.008640 -0.011392 -0.014339 -0.017473 -0.020792 -0.024289 -0.027962 -0.031807 -0.035822 -0.040002 -0.044346 -0.048851 -0.053512 -0.058327 -0.063291 -0.068400 -0.073651 -0.079037 -0.084556 -0.090203 -0.095972 -0.101858 -0.107858 -0.113965 -0.120175 -0.126482 -0.132880 -0.139365 -0.145930 -0.152569 -0.159277 -0.166046 -0.172871 -0.179746 -0.186663 -0.193615 -0.200597 -0.207599 -0.214616 -0.221640 -0.228662 -0.235675 -0.242671 -0.249643 -0.256580 -0.263476 -0.270321 -0.277106 -0.283823 -0.290465 -0.297023 -0.303493 -0.309871 -0.316156 -0.322346 -0.328442 -0.334443 -0.340350 -0.346163 -0.351884 -0.357513 -0.363053 -0.368506 -0.373873 -0.379158 -0.384363 -0.389492 -0.394549 -0.399536 -0.404459 -0.409322 -0.414129 -0.418885 --0.009361 -0.008909 -0.008354 -0.007691 -0.006926 -0.006079 -0.005174 -0.004228 -0.003253 -0.002273 -0.001296 -0.000320 0.000655 0.001592 0.002476 0.003283 0.003983 0.004552 0.004969 0.005224 0.005306 0.005204 0.004902 0.004374 0.003581 0.002495 0.001114 -0.000548 -0.002467 -0.004625 -0.007008 -0.009606 -0.012410 -0.015414 -0.018610 -0.021995 -0.025563 -0.029311 -0.033236 -0.037334 -0.041602 -0.046037 -0.050636 -0.055396 -0.060313 -0.065382 -0.070600 -0.075962 -0.081463 -0.087099 -0.092865 -0.098756 -0.104767 -0.110893 -0.117130 -0.123470 -0.129910 -0.136443 -0.143064 -0.149767 -0.156545 -0.163392 -0.170303 -0.177270 -0.184288 -0.191348 -0.198444 -0.205569 -0.212715 -0.219876 -0.227042 -0.234207 -0.241362 -0.248499 -0.255610 -0.262686 -0.269719 -0.276699 -0.283617 -0.290465 -0.297235 -0.303920 -0.310515 -0.317016 -0.323423 -0.329733 -0.335947 -0.342066 -0.348088 -0.354016 -0.359849 -0.365590 -0.371241 -0.376803 -0.382279 -0.387672 -0.392984 -0.398220 -0.403383 -0.408476 -0.413505 -0.418472 -0.423385 -0.428246 +0.003634 0.004161 0.004694 0.005234 0.005780 0.006334 0.006894 0.007461 0.008035 0.008616 0.009203 0.009797 0.010397 0.011003 0.011614 0.012230 0.012851 0.013475 0.014104 0.014735 0.015368 0.016003 0.016639 0.017275 0.017911 0.018544 0.019175 0.019802 0.020423 0.021039 0.021646 0.022244 0.022831 0.023404 0.023963 0.024506 0.025029 0.025532 0.026012 0.026468 0.026897 0.027297 0.027668 0.028006 0.028311 0.028580 0.028812 0.029005 0.029157 0.029268 0.029337 0.029362 0.029344 0.029282 0.029176 0.029025 0.028831 0.028593 0.028311 0.027988 +0.007794 0.008598 0.009410 0.010229 0.011053 0.011883 0.012717 0.013555 0.014396 0.015238 0.016082 0.016926 0.017769 0.018610 0.019449 0.020283 0.021113 0.021936 0.022750 0.023555 0.024347 0.025125 0.025886 0.026628 0.027348 0.028043 0.028712 0.029351 0.029957 0.030529 0.031062 0.031556 0.032007 0.032412 0.032770 0.033078 0.033335 0.033537 0.033685 0.033777 0.033812 0.033790 0.033710 0.033572 0.033377 0.033125 0.032816 0.032452 0.032034 0.031563 0.031042 0.030472 0.029855 0.029193 0.028489 0.027745 0.026962 0.026144 0.025291 0.024406 +0.013658 0.014746 0.015833 0.016920 0.018004 0.019085 0.020161 0.021232 0.022296 0.023352 0.024396 0.025428 0.026444 0.027442 0.028419 0.029371 0.030296 0.031189 0.032048 0.032869 0.033649 0.034383 0.035069 0.035703 0.036282 0.036803 0.037261 0.037655 0.037982 0.038240 0.038427 0.038542 0.038584 0.038551 0.038444 0.038263 0.038008 0.037681 0.037283 0.036816 0.036283 0.035686 0.035029 0.034315 0.033546 0.032727 0.031859 0.030947 0.029993 0.028999 0.027968 0.026903 0.025806 0.024679 0.023523 0.022341 0.021134 0.019903 0.018649 0.017374 +0.020599 0.021936 0.023263 0.024579 0.025880 0.027165 0.028430 0.029672 0.030887 0.032072 0.033221 0.034331 0.035397 0.036416 0.037382 0.038292 0.039141 0.039924 0.040637 0.041276 0.041838 0.042318 0.042715 0.043024 0.043244 0.043372 0.043408 0.043351 0.043201 0.042959 0.042626 0.042206 0.041701 0.041114 0.040450 0.039713 0.038906 0.038035 0.037103 0.036115 0.035075 0.033986 0.032852 0.031677 0.030463 0.029213 0.027930 0.026617 0.025275 0.023906 0.022511 0.021092 0.019649 0.018182 0.016694 0.015185 0.013655 0.012105 0.010537 0.008950 +0.028121 0.029666 0.031183 0.032668 0.034115 0.035520 0.036878 0.038184 0.039432 0.040616 0.041733 0.042775 0.043739 0.044617 0.045407 0.046102 0.046698 0.047192 0.047579 0.047858 0.048025 0.048079 0.048021 0.047852 0.047572 0.047185 0.046696 0.046107 0.045425 0.044653 0.043798 0.042865 0.041860 0.040787 0.039652 0.038459 0.037214 0.035920 0.034582 0.033204 0.031788 0.030338 0.028856 0.027344 0.025804 0.024238 0.022645 0.021027 0.019383 0.017716 0.016025 0.014310 0.012572 0.010811 0.009029 0.007225 0.005403 0.003562 0.001706 -0.000164 +0.035808 0.037484 0.039103 0.040659 0.042145 0.043556 0.044885 0.046125 0.047271 0.048315 0.049253 0.050078 0.050785 0.051370 0.051828 0.052156 0.052353 0.052418 0.052353 0.052158 0.051838 0.051396 0.050837 0.050166 0.049391 0.048518 0.047552 0.046500 0.045369 0.044164 0.042892 0.041558 0.040168 0.038727 0.037238 0.035707 0.034137 0.032532 0.030892 0.029222 0.027523 0.025794 0.024038 0.022255 0.020444 0.018605 0.016740 0.014847 0.012926 0.010978 0.009004 0.007003 0.004978 0.002930 0.000861 -0.001227 -0.003329 -0.005443 -0.007565 -0.009689 +0.043207 0.044910 0.046521 0.048032 0.049436 0.050727 0.051896 0.052938 0.053846 0.054614 0.055239 0.055716 0.056044 0.056223 0.056254 0.056140 0.055882 0.055487 0.054960 0.054306 0.053533 0.052649 0.051660 0.050573 0.049396 0.048135 0.046798 0.045389 0.043917 0.042385 0.040801 0.039167 0.037490 0.035772 0.034017 0.032228 0.030406 0.028553 0.026669 0.024754 0.022808 0.020832 0.018824 0.016785 0.014713 0.012609 0.010473 0.008304 0.006104 0.003874 0.001615 -0.000671 -0.002979 -0.005308 -0.007653 -0.010009 -0.012372 -0.014736 -0.017094 -0.019441 +0.049832 0.051444 0.052926 0.054269 0.055468 0.056516 0.057408 0.058139 0.058708 0.059112 0.059353 0.059433 0.059355 0.059122 0.058740 0.058214 0.057553 0.056763 0.055853 0.054830 0.053701 0.052474 0.051156 0.049753 0.048272 0.046720 0.045104 0.043428 0.041699 0.039921 0.038098 0.036235 0.034333 0.032395 0.030423 0.028415 0.026373 0.024296 0.022184 0.020036 0.017851 0.015629 0.013368 0.011070 0.008733 0.006357 0.003944 0.001495 -0.000988 -0.003503 -0.006046 -0.008613 -0.011199 -0.013799 -0.016407 -0.019016 -0.021619 -0.024210 -0.026779 -0.029320 +0.055124 0.056532 0.057778 0.058857 0.059766 0.060503 0.061067 0.061460 0.061681 0.061736 0.061626 0.061356 0.060933 0.060362 0.059653 0.058812 0.057846 0.056764 0.055571 0.054276 0.052885 0.051404 0.049842 0.048204 0.046496 0.044726 0.042899 0.041020 0.039092 0.037121 0.035107 0.033053 0.030960 0.028827 0.026654 0.024441 0.022186 0.019890 0.017550 0.015166 0.012737 0.010262 0.007742 0.005175 0.002564 -0.000091 -0.002788 -0.005524 -0.008295 -0.011096 -0.013922 -0.016767 -0.019623 -0.022485 -0.025342 -0.028188 -0.031014 -0.033811 -0.036568 -0.039277 +0.058437 0.059595 0.060583 0.061398 0.062040 0.062510 0.062806 0.062933 0.062893 0.062689 0.062328 0.061815 0.061157 0.060360 0.059431 0.058377 0.057204 0.055919 0.054528 0.053040 0.051460 0.049797 0.048055 0.046244 0.044367 0.042432 0.040442 0.038401 0.036313 0.034178 0.031998 0.029771 0.027497 0.025176 0.022807 0.020387 0.017917 0.015395 0.012819 0.010190 0.007507 0.004769 0.001976 -0.000869 -0.003765 -0.006710 -0.009699 -0.012727 -0.015788 -0.018876 -0.021982 -0.025099 -0.028219 -0.031332 -0.034428 -0.037498 -0.040530 -0.043515 -0.046441 -0.049298 +0.059307 0.060279 0.061097 0.061758 0.062257 0.062591 0.062760 0.062765 0.062605 0.062283 0.061803 0.061171 0.060393 0.059474 0.058421 0.057240 0.055939 0.054525 0.053005 0.051387 0.049677 0.047885 0.046016 0.044077 0.042073 0.040009 0.037888 0.035713 0.033482 0.031197 0.028857 0.026460 0.024006 0.021494 0.018921 0.016288 0.013592 0.010834 0.008011 0.005125 0.002174 -0.000841 -0.003918 -0.007054 -0.010246 -0.013488 -0.016774 -0.020098 -0.023450 -0.026823 -0.030208 -0.033594 -0.036970 -0.040327 -0.043653 -0.046936 -0.050164 -0.053325 -0.056406 -0.059398 +0.057940 0.058798 0.059533 0.060144 0.060629 0.060980 0.061184 0.061227 0.061098 0.060800 0.060336 0.059704 0.058910 0.057961 0.056866 0.055634 0.054271 0.052789 0.051195 0.049498 0.047706 0.045828 0.043869 0.041837 0.039734 0.037564 0.035328 0.033027 0.030659 0.028224 0.025721 0.023149 0.020508 0.017795 0.015010 0.012151 0.009219 0.006211 0.003128 -0.000030 -0.003262 -0.006566 -0.009939 -0.013377 -0.016872 -0.020418 -0.024006 -0.027628 -0.031274 -0.034933 -0.038594 -0.042246 -0.045877 -0.049474 -0.053024 -0.056513 -0.059929 -0.063258 -0.066488 -0.069607 +0.054668 0.055565 0.056365 0.057062 0.057647 0.058102 0.058424 0.058604 0.058629 0.058481 0.058140 0.057611 0.056899 0.056005 0.054942 0.053722 0.052357 0.050857 0.049236 0.047502 0.045664 0.043731 0.041709 0.039603 0.037415 0.035147 0.032799 0.030371 0.027862 0.025272 0.022599 0.019844 0.017005 0.014082 0.011072 0.007977 0.004794 0.001524 -0.001833 -0.005276 -0.008803 -0.012409 -0.016089 -0.019836 -0.023642 -0.027498 -0.031393 -0.035317 -0.039258 -0.043205 -0.047144 -0.051063 -0.054947 -0.058783 -0.062555 -0.066248 -0.069849 -0.073342 -0.076717 -0.079963 +0.050014 0.051041 0.051996 0.052865 0.053638 0.054305 0.054848 0.055243 0.055472 0.055524 0.055392 0.055055 0.054499 0.053739 0.052776 0.051626 0.050306 0.048832 0.047219 0.045478 0.043620 0.041652 0.039581 0.037410 0.035140 0.032774 0.030310 0.027751 0.025095 0.022342 0.019491 0.016543 0.013496 0.010350 0.007104 0.003759 0.000312 -0.003234 -0.006879 -0.010621 -0.014454 -0.018372 -0.022369 -0.026435 -0.030559 -0.034730 -0.038938 -0.043169 -0.047410 -0.051649 -0.055869 -0.060057 -0.064197 -0.068272 -0.072267 -0.076164 -0.079948 -0.083606 -0.087126 -0.090502 +0.044912 0.045997 0.047039 0.048044 0.049010 0.049906 0.050692 0.051344 0.051846 0.052162 0.052267 0.052158 0.051826 0.051252 0.050448 0.049420 0.048188 0.046775 0.045198 0.043473 0.041610 0.039619 0.037504 0.035268 0.032915 0.030446 0.027863 0.025165 0.022354 0.019429 0.016391 0.013239 0.009974 0.006594 0.003099 -0.000510 -0.004233 -0.008070 -0.012016 -0.016068 -0.020219 -0.024461 -0.028784 -0.033176 -0.037626 -0.042121 -0.046648 -0.051193 -0.055741 -0.060276 -0.064784 -0.069245 -0.073644 -0.077962 -0.082180 -0.086282 -0.090252 -0.094077 -0.097749 -0.101261 +0.039957 0.041109 0.042208 0.043262 0.044279 0.045269 0.046234 0.047137 0.047905 0.048503 0.048899 0.049054 0.048959 0.048617 0.048010 0.047148 0.046043 0.044718 0.043200 0.041506 0.039648 0.037637 0.035479 0.033178 0.030738 0.028162 0.025452 0.022609 0.019635 0.016529 0.013293 0.009927 0.006431 0.002805 -0.000951 -0.004836 -0.008850 -0.012990 -0.017250 -0.021626 -0.026106 -0.030681 -0.035339 -0.040067 -0.044851 -0.049679 -0.054533 -0.059400 -0.064262 -0.069102 -0.073902 -0.078643 -0.083305 -0.087869 -0.092316 -0.096626 -0.100786 -0.104784 -0.108615 -0.112274 +0.035121 0.036376 0.037569 0.038704 0.039790 0.040835 0.041850 0.042846 0.043817 0.044681 0.045357 0.045806 0.045987 0.045883 0.045503 0.044836 0.043889 0.042680 0.041237 0.039584 0.037737 0.035708 0.033505 0.031135 0.028604 0.025915 0.023072 0.020076 0.016930 0.013634 0.010191 0.006600 0.002863 -0.001022 -0.005052 -0.009228 -0.013546 -0.018002 -0.022590 -0.027299 -0.032119 -0.037038 -0.042041 -0.047115 -0.052244 -0.057412 -0.062604 -0.067801 -0.072985 -0.078138 -0.083238 -0.088265 -0.093197 -0.098013 -0.102691 -0.107216 -0.111572 -0.115751 -0.119751 -0.123570 +0.030378 0.031754 0.033065 0.034309 0.035493 0.036624 0.037711 0.038765 0.039800 0.040816 0.041742 0.042469 0.042937 0.043105 0.042957 0.042504 0.041737 0.040666 0.039312 0.037707 0.035873 0.033825 0.031576 0.029135 0.026507 0.023700 0.020716 0.017560 0.014233 0.010739 0.007078 0.003251 -0.000740 -0.004896 -0.009214 -0.013693 -0.018329 -0.023114 -0.028040 -0.033096 -0.038266 -0.043539 -0.048898 -0.054328 -0.059811 -0.065332 -0.070871 -0.076408 -0.081925 -0.087398 -0.092806 -0.098126 -0.103335 -0.108407 -0.113324 -0.118069 -0.122630 -0.127001 -0.131182 -0.135174 +0.025774 0.027243 0.028669 0.030038 0.031342 0.032582 0.033767 0.034906 0.036012 0.037096 0.038154 0.039111 0.039850 0.040295 0.040403 0.040167 0.039593 0.038673 0.037420 0.035870 0.034051 0.031985 0.029688 0.027171 0.024442 0.021510 0.018379 0.015054 0.011539 0.007835 0.003946 -0.000128 -0.004385 -0.008824 -0.013444 -0.018239 -0.023205 -0.028332 -0.033608 -0.039020 -0.044553 -0.050190 -0.055917 -0.061714 -0.067564 -0.073447 -0.079344 -0.085232 -0.091090 -0.096894 -0.102619 -0.108239 -0.113730 -0.119067 -0.124230 -0.129203 -0.133978 -0.138554 -0.142929 -0.147108 +0.021344 0.022902 0.024412 0.025881 0.027307 0.028674 0.029977 0.031223 0.032422 0.033586 0.034723 0.035814 0.036771 0.037476 0.037845 0.037839 0.037456 0.036697 0.035558 0.034068 0.032267 0.030183 0.027835 0.025238 0.022403 0.019340 0.016055 0.012554 0.008840 0.004918 0.000790 -0.003543 -0.008078 -0.012814 -0.017748 -0.022873 -0.028181 -0.033662 -0.039300 -0.045080 -0.050985 -0.057000 -0.063105 -0.069282 -0.075510 -0.081768 -0.088033 -0.094283 -0.100492 -0.106636 -0.112686 -0.118615 -0.124396 -0.130005 -0.135421 -0.140633 -0.145635 -0.150426 -0.155010 -0.159391 +0.017123 0.018730 0.020324 0.021880 0.023397 0.024880 0.026312 0.027682 0.028993 0.030256 0.031479 0.032661 0.033761 0.034677 0.035294 0.035522 0.035335 0.034738 0.033720 0.032298 0.030517 0.028413 0.026012 0.023331 0.020385 0.017185 0.013738 0.010052 0.006131 0.001980 -0.002398 -0.007001 -0.011827 -0.016872 -0.022132 -0.027600 -0.033263 -0.039108 -0.045119 -0.051279 -0.057571 -0.063974 -0.070471 -0.077039 -0.083656 -0.090300 -0.096946 -0.103568 -0.110140 -0.116632 -0.123017 -0.129263 -0.135343 -0.141231 -0.146911 -0.152372 -0.157613 -0.162634 -0.167440 -0.172037 +0.013196 0.014803 0.016417 0.018040 0.019646 0.021218 0.022760 0.024260 0.025697 0.027074 0.028398 0.029670 0.030871 0.031939 0.032760 0.033216 0.033231 0.032794 0.031901 0.030554 0.028795 0.026672 0.024215 0.021446 0.018383 0.015039 0.011423 0.007544 0.003406 -0.000984 -0.005623 -0.010508 -0.015637 -0.021004 -0.026603 -0.032425 -0.038454 -0.044676 -0.051072 -0.057625 -0.064314 -0.071119 -0.078019 -0.084991 -0.092011 -0.099053 -0.106090 -0.113096 -0.120040 -0.126892 -0.133620 -0.140193 -0.146579 -0.152756 -0.158710 -0.164433 -0.169925 -0.175190 -0.180232 -0.185061 +0.009516 0.011140 0.012762 0.014394 0.016048 0.017706 0.019338 0.020945 0.022512 0.024014 0.025450 0.026820 0.028116 0.029295 0.030272 0.030929 0.031141 0.030868 0.030101 0.028833 0.027099 0.024955 0.022439 0.019578 0.016393 0.012898 0.009105 0.005023 0.000660 -0.003979 -0.008890 -0.014070 -0.019513 -0.025215 -0.031165 -0.037353 -0.043760 -0.050370 -0.057164 -0.064121 -0.071221 -0.078441 -0.085757 -0.093146 -0.100579 -0.108032 -0.115473 -0.122873 -0.130201 -0.137423 -0.144504 -0.151411 -0.158113 -0.164590 -0.170828 -0.176826 -0.182583 -0.188104 -0.193397 -0.198471 +0.006083 0.007695 0.009335 0.010984 0.012648 0.014342 0.016056 0.017753 0.019426 0.021056 0.022614 0.024092 0.025483 0.026758 0.027855 0.028668 0.029069 0.028958 0.028315 0.027130 0.025423 0.023257 0.020679 0.017722 0.014408 0.010756 0.006778 0.002486 -0.002113 -0.007012 -0.012206 -0.017691 -0.023461 -0.029509 -0.035823 -0.042388 -0.049185 -0.056196 -0.063399 -0.070774 -0.078297 -0.085944 -0.093690 -0.101507 -0.109368 -0.117242 -0.125099 -0.132906 -0.140628 -0.148230 -0.155673 -0.162924 -0.169953 -0.176739 -0.183275 -0.189560 -0.195595 -0.201387 -0.206944 -0.212277 +0.002978 0.004505 0.006111 0.007772 0.009458 0.011166 0.012912 0.014688 0.016451 0.018189 0.019870 0.021463 0.022956 0.024324 0.025519 0.026457 0.027016 0.027063 0.026545 0.025443 0.023765 0.021576 0.018933 0.015874 0.012426 0.008609 0.004439 -0.000072 -0.004916 -0.010085 -0.015573 -0.021375 -0.027484 -0.033890 -0.040579 -0.047533 -0.054732 -0.062156 -0.069782 -0.077587 -0.085546 -0.093634 -0.101821 -0.110081 -0.118381 -0.126690 -0.134975 -0.143200 -0.151327 -0.159319 -0.167135 -0.174739 -0.182104 -0.189212 -0.196058 -0.202642 -0.208968 -0.215044 -0.220879 -0.226487 +0.000235 0.001632 0.003142 0.004753 0.006445 0.008179 0.009942 0.011750 0.013591 0.015416 0.017208 0.018919 0.020518 0.021979 0.023265 0.024305 0.024989 0.025184 0.024788 0.023768 0.022121 0.019908 0.017197 0.014031 0.010443 0.006454 0.002083 -0.002657 -0.007755 -0.013204 -0.018997 -0.025127 -0.031586 -0.038362 -0.045437 -0.052792 -0.060405 -0.068255 -0.076316 -0.084564 -0.092973 -0.101514 -0.110157 -0.118871 -0.127624 -0.136380 -0.145104 -0.153759 -0.162302 -0.170694 -0.178893 -0.186861 -0.194573 -0.202015 -0.209183 -0.216080 -0.222711 -0.229084 -0.235211 -0.241105 diff --git a/Test_Cases/IEA-15-240-RWT-UMaineSemi/DISCON-UMaineSemi.IN b/Test_Cases/IEA-15-240-RWT-UMaineSemi/DISCON-UMaineSemi.IN index 112d17ca..f541fa66 100644 --- a/Test_Cases/IEA-15-240-RWT-UMaineSemi/DISCON-UMaineSemi.IN +++ b/Test_Cases/IEA-15-240-RWT-UMaineSemi/DISCON-UMaineSemi.IN @@ -1,5 +1,5 @@ ! Controller parameter input file for the IEA-15-240-RWT-UMaineSemi wind turbine -! - File written using ROSCO version 2.4.1 controller tuning logic on 12/13/21 +! - File written using ROSCO version 2.4.1 controller tuning logic on 01/10/22 !------- 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} @@ -32,9 +32,9 @@ !------- BLADE PITCH CONTROL ---------------------------------------------- 30 ! PC_GS_n - Amount of gain-scheduling table entries -0.060198 0.087134 0.108448 0.126859 0.143398 0.158602 0.172796 0.186189 0.198928 0.211120 0.222850 0.234173 0.245147 0.255807 0.266195 0.276325 0.286231 0.295933 0.305445 0.314779 0.323952 0.332975 0.341858 0.350608 0.359236 0.367748 0.376149 0.384447 0.392644 0.400744 ! PC_GS_angles - Gain-schedule table: pitch angles [rad]. --1.269046 -1.104681 -0.968551 -0.853956 -0.756161 -0.671723 -0.598081 -0.533289 -0.475842 -0.424558 -0.378496 -0.336896 -0.299141 -0.264721 -0.233212 -0.204261 -0.177567 -0.152878 -0.129975 -0.108671 -0.088804 -0.070234 -0.052838 -0.036508 -0.021148 -0.006676 0.006985 0.019900 0.032129 0.043725 ! PC_GS_KP - Gain-schedule table: pitch controller kp gains [s]. --0.131850 -0.119461 -0.109200 -0.100563 -0.093191 -0.086827 -0.081276 -0.076393 -0.072063 -0.068197 -0.064725 -0.061590 -0.058744 -0.056150 -0.053775 -0.051593 -0.049581 -0.047720 -0.045993 -0.044388 -0.042890 -0.041490 -0.040179 -0.038948 -0.037791 -0.036700 -0.035670 -0.034697 -0.033775 -0.032901 ! PC_GS_KI - Gain-schedule table: pitch controller ki gains [-]. +0.061676 0.088136 0.109020 0.127064 0.143267 0.158174 0.172067 0.185190 0.197668 0.209637 0.221119 0.232228 0.243004 0.253476 0.263663 0.273612 0.283345 0.292878 0.302227 0.311407 0.320430 0.329308 0.338049 0.346659 0.355148 0.363524 0.371794 0.379963 0.388035 0.396013 ! PC_GS_angles - Gain-schedule table: pitch angles [rad]. +-1.205724 -1.044180 -0.910991 -0.799294 -0.704275 -0.622458 -0.551271 -0.488768 -0.433452 -0.384151 -0.339933 -0.300052 -0.263899 -0.230974 -0.200865 -0.173224 -0.147760 -0.124225 -0.102409 -0.082129 -0.063230 -0.045573 -0.029042 -0.013531 0.001051 0.014784 0.027742 0.039988 0.051579 0.062566 ! PC_GS_KP - Gain-schedule table: pitch controller kp gains [s]. +-0.125755 -0.113657 -0.103682 -0.095317 -0.088200 -0.082073 -0.076742 -0.072061 -0.067918 -0.064226 -0.060914 -0.057927 -0.055220 -0.052754 -0.050499 -0.048429 -0.046522 -0.044759 -0.043125 -0.041606 -0.040191 -0.038869 -0.037631 -0.036469 -0.035377 -0.034348 -0.033378 -0.032461 -0.031593 -0.030770 ! PC_GS_KI - Gain-schedule table: pitch controller ki gains [-]. 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 ! PC_GS_KD - Gain-schedule table: pitch controller kd gains 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 ! PC_GS_TF - Gain-schedule table: pitch controller tf gains (derivative filter) 1.570000000000 ! PC_MaxPit - Maximum physical pitch limit, [rad]. @@ -58,12 +58,12 @@ 21586451.33303 ! VS_MaxTq - Maximum generator torque in Region 3 (HSS side), [Nm]. 0.000000000000 ! VS_MinTq - Minimum generator torque (HSS side), [Nm]. 0.523600000000 ! VS_MinOMSpd - Minimum generator speed [rad/s] -33732396.86935 ! VS_Rgn2K - Generator torque constant in Region 2 (HSS side), [Nm/(rad/s)^2] +35971094.48693 ! VS_Rgn2K - Generator torque constant in Region 2 (HSS side), [Nm/(rad/s)^2] 15000000.00000 ! VS_RtPwr - Wind turbine rated power [W] 19624046.66639 ! VS_RtTq - Rated torque, [Nm]. 0.791680000000 ! VS_RefSpd - Rated generator speed [rad/s] 1 ! VS_n - Number of generator PI torque controller gains --38676765.16943 ! VS_KP - Proportional gain for generator PI torque controller [-]. (Only used in the transitional 2.5 region if VS_ControlMode =/ 2) +-37877279.65256 ! VS_KP - Proportional gain for generator PI torque controller [-]. (Only used in the transitional 2.5 region if VS_ControlMode =/ 2) -4588245.18720 ! VS_KI - Integral gain for generator PI torque controller [s]. (Only used in the transitional 2.5 region if VS_ControlMode =/ 2) 9.00 ! VS_TSRopt - Power-maximizing region 2 tip-speed-ratio [rad]. @@ -80,10 +80,10 @@ 318628138.00000 ! 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.IEA15MW.txt" ! PerfFileName - File containing rotor performance tables (Cp,Ct,Cq) (absolute path or relative to this file) -104 72 ! PerfTableSize - Size of rotor performance tables, first number refers to number of blade pitch angles, second number referse to number of tip-speed ratios +60 26 ! PerfTableSize - Size of rotor performance tables, first number refers to number of blade pitch angles, second number referse to number of tip-speed ratios 60 ! WE_FOPoles_N - Number of first-order system poles used in EKF 3.0000 3.2669 3.5338 3.8007 4.0676 4.3345 4.6014 4.8683 5.1352 5.4021 5.6690 5.9359 6.2028 6.4697 6.7366 7.0034 7.2703 7.5372 7.8041 8.0710 8.3379 8.6048 8.8717 9.1386 9.4055 9.6724 9.9393 10.2062 10.4731 10.7400 11.2153 11.6907 12.1660 12.6413 13.1167 13.5920 14.0673 14.5427 15.0180 15.4933 15.9687 16.4440 16.9193 17.3947 17.8700 18.3453 18.8207 19.2960 19.7713 20.2467 20.7220 21.1973 21.6727 22.1480 22.6233 23.0987 23.5740 24.0493 24.5247 25.0000 ! WE_FOPoles_v - Wind speeds corresponding to first-order system poles [m/s] --0.02366483 -0.02577018 -0.02787553 -0.02998089 -0.03208624 -0.03419159 -0.03629695 -0.03840230 -0.04050765 -0.04261301 -0.04471836 -0.04682371 -0.04892907 -0.05103442 -0.05313977 -0.05524513 -0.05735048 -0.05945583 -0.06156119 -0.06366654 -0.06577189 -0.06787725 -0.06998260 -0.07208795 -0.07419331 -0.07629866 -0.07840401 -0.08050937 -0.08261472 -0.07921295 -0.05363855 -0.05601196 -0.06228621 -0.07050010 -0.08000290 -0.09048156 -0.10174863 -0.11365942 -0.12615707 -0.13917960 -0.15270665 -0.16669562 -0.18106141 -0.19588503 -0.21106595 -0.22664340 -0.24258187 -0.25886648 -0.27550565 -0.29248186 -0.30978187 -0.32738614 -0.34531736 -0.36353035 -0.38202289 -0.40082810 -0.41987220 -0.43918834 -0.45876266 -0.47857910 ! WE_FOPoles - First order system poles [1/s] +-0.02438357 -0.02655286 -0.02872216 -0.03089146 -0.03306075 -0.03523005 -0.03739935 -0.03956864 -0.04173794 -0.04390724 -0.04607653 -0.04824583 -0.05041513 -0.05258442 -0.05475372 -0.05692302 -0.05909231 -0.06126161 -0.06343091 -0.06560020 -0.06776950 -0.06993879 -0.07210809 -0.07427739 -0.07644668 -0.07861598 -0.08078528 -0.08295457 -0.08512387 -0.08490644 -0.05709358 -0.05965844 -0.06636702 -0.07530159 -0.08532566 -0.09662477 -0.10848807 -0.12130095 -0.13446823 -0.14834227 -0.16274867 -0.17748334 -0.19282303 -0.20855986 -0.22460468 -0.24117047 -0.25815408 -0.27537095 -0.29299270 -0.31103623 -0.32942730 -0.34808367 -0.36697523 -0.38626803 -0.40589805 -0.42582841 -0.44604512 -0.46632495 -0.48683908 -0.50769081 ! WE_FOPoles - First order system poles [1/s] !------- YAW CONTROL ------------------------------------------------------ 0.13960 ! Y_ErrThresh - Yaw error threshold. Turbine begins to yaw when it passes this. [rad^2 s] @@ -106,14 +106,14 @@ !------- MINIMUM PITCH SATURATION ------------------------------------------- 60 ! PS_BldPitchMin_N - Number of values in minimum blade pitch lookup table (should equal number of values in PS_WindSpeeds and PS_BldPitchMin) 3.0000 3.2669 3.5338 3.8007 4.0676 4.3345 4.6014 4.8683 5.1352 5.4021 5.6690 5.9359 6.2028 6.4697 6.7366 7.0034 7.2703 7.5372 7.8041 8.0710 8.3379 8.6048 8.8717 9.1386 9.4055 9.6724 9.9393 10.2062 10.4731 10.7400 11.2153 11.6907 12.1660 12.6413 13.1167 13.5920 14.0673 14.5427 15.0180 15.4933 15.9687 16.4440 16.9193 17.3947 17.8700 18.3453 18.8207 19.2960 19.7713 20.2467 20.7220 21.1973 21.6727 22.1480 22.6233 23.0987 23.5740 24.0493 24.5247 25.0000 ! PS_WindSpeeds - Wind speeds corresponding to minimum blade pitch angles [m/s] -0.06961065 0.06916756 0.06801949 0.06592239 0.06303563 0.05939204 0.05520107 0.05047233 0.04511353 0.03915876 0.03265491 0.02578782 0.01866353 0.01138963 0.00409471 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00846242 0.02297908 0.03562095 0.04679173 0.05441817 0.06531126 0.07566895 0.08563939 0.09530571 0.10472222 0.11392608 0.12294997 0.13181647 0.14054481 0.14914972 0.15764424 0.16603901 0.17434237 0.18256207 0.19070469 0.19877714 0.20678372 0.21472883 0.22261606 0.23044510 0.23822156 0.24594897 0.25362874 0.26126159 0.26884689 0.27639120 0.28389435 0.29135253 0.29877202 0.30615320 ! PS_BldPitchMin - Minimum blade pitch angles [rad] +0.05975030 0.05975030 0.05975030 0.05975030 0.05975030 0.05973326 0.05574264 0.05121979 0.04613606 0.04049786 0.03432173 0.02765766 0.02070294 0.01365646 0.00652189 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00812460 0.02230816 0.03475777 0.04572969 0.05329315 0.06410617 0.07439555 0.08429723 0.09389471 0.10324473 0.11238560 0.12134773 0.13015335 0.13881990 0.14736320 0.15579576 0.16412730 0.17236665 0.18052248 0.18860170 0.19660859 0.20454802 0.21242605 0.22024613 0.22801001 0.23572058 0.24337209 0.25097665 0.25853514 0.26604769 0.27351590 0.28094263 0.28833109 0.29567080 0.30296861 ! PS_BldPitchMin - Minimum blade pitch angles [rad] !------- SHUTDOWN ----------------------------------------------------------- 0.698100000000 ! 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] !------- Floating ----------------------------------------------------------- --9.37521000000 ! Fl_Kp - Nacelle pitching proportional feedback gain [s] +-9.23385000000 ! Fl_Kp - Nacelle pitching proportional feedback gain [s] !------- FLAP ACTUATION ----------------------------------------------------- 0.000000000000 ! Flp_Angle - Initial or steady state flap angle [rad] diff --git a/Test_Cases/NREL-5MW/Cp_Ct_Cq.NREL5MW.txt b/Test_Cases/NREL-5MW/Cp_Ct_Cq.NREL5MW.txt index 5d1dfb81..b1fd8391 100644 --- a/Test_Cases/NREL-5MW/Cp_Ct_Cq.NREL5MW.txt +++ b/Test_Cases/NREL-5MW/Cp_Ct_Cq.NREL5MW.txt @@ -1,165 +1,99 @@ -# ----- Rotor performance tables for the 5MW_Land wind turbine ----- -# ------------ Written on Dec-11-19 using the ROSCO toolbox ------------ +# ----- Rotor performance tables for the NREL-5MW wind turbine ----- +# ------------ Written on Jan-10-22 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 +# Pitch angle vector, 60 entries - x axis (matrix columns) (deg) +-5.0 -4.5 -4.0 -3.5 -3.0 -2.5 -2.0 -1.5 -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, 26 entries - y axis (matrix rows) (-) +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 # Wind speed vector - z axis (m/s) 11.4 # Power coefficient -0.091629 0.094090 0.096514 0.098901 0.101250 0.103558 0.105826 0.108050 0.110232 0.112368 0.114459 0.116502 0.118497 0.120443 0.122338 0.124181 0.125970 0.127706 0.129385 0.131007 0.132570 0.134072 0.135514 0.136893 0.138207 0.139457 0.140640 0.141756 0.142804 0.143784 0.144696 0.145540 0.146319 0.147030 0.147676 0.148255 0.148769 0.149219 0.149605 0.149928 0.150188 0.150383 0.150515 0.150582 0.150587 0.150529 0.150409 0.150227 0.149981 0.149673 0.149302 0.148871 0.148380 0.147828 0.147217 0.146545 0.145811 0.145012 0.144149 0.143217 0.142214 0.141136 0.139979 0.138743 0.137424 0.136025 0.134547 0.132992 0.131362 0.129656 0.127872 0.126011 0.124072 0.122058 0.119971 0.117813 0.115588 0.113295 0.110934 0.108508 0.106015 0.103458 0.100837 0.098154 0.095410 0.092608 0.089752 0.086846 0.083892 0.080893 0.077851 0.074769 0.071649 0.068492 0.065301 0.062077 0.058822 0.055539 0.052227 0.048890 0.045528 0.042142 0.038734 0.035304 -0.116951 0.119633 0.122262 0.124837 0.127357 0.129822 0.132229 0.134577 0.136866 0.139093 0.141257 0.143357 0.145391 0.147359 0.149256 0.151083 0.152836 0.154515 0.156117 0.157641 0.159088 0.160454 0.161741 0.162950 0.164079 0.165130 0.166105 0.167003 0.167825 0.168571 0.169242 0.169838 0.170360 0.170805 0.171174 0.171466 0.171682 0.171819 0.171879 0.171861 0.171764 0.171588 0.171336 0.171008 0.170606 0.170128 0.169575 0.168945 0.168237 0.167448 0.166576 0.165617 0.164569 0.163426 0.162185 0.160846 0.159410 0.157879 0.156255 0.154538 0.152730 0.150828 0.148831 0.146743 0.144564 0.142300 0.139952 0.137521 0.135007 0.132410 0.129730 0.126968 0.124126 0.121205 0.118210 0.115142 0.112008 0.108810 0.105552 0.102237 0.098867 0.095445 0.091974 0.088456 0.084893 0.081287 0.077641 0.073957 0.070235 0.066479 0.062689 0.058868 0.055017 0.051137 0.047230 0.043296 0.039337 0.035354 0.031348 0.027320 0.023271 0.019201 0.015112 0.011004 -0.143862 0.146710 0.149490 0.152200 0.154839 0.157404 0.159895 0.162309 0.164643 0.166896 0.169066 0.171151 0.173150 0.175060 0.176880 0.178611 0.180251 0.181803 0.183265 0.184640 0.185928 0.187129 0.188241 0.189267 0.190205 0.191056 0.191818 0.192491 0.193072 0.193560 0.193953 0.194251 0.194452 0.194558 0.194569 0.194485 0.194306 0.194033 0.193665 0.193202 0.192641 0.191981 0.191217 0.190345 0.189362 0.188264 0.187047 0.185711 0.184260 0.182697 0.181024 0.179239 0.177341 0.175330 0.173207 0.170975 0.168638 0.166200 0.163663 0.161026 0.158290 0.155454 0.152519 0.149487 0.146359 0.143140 0.139836 0.136450 0.132987 0.129450 0.125842 0.122168 0.118428 0.114626 0.110765 0.106847 0.102873 0.098848 0.094773 0.090650 0.086481 0.082269 0.078015 0.073720 0.069388 0.065019 0.060615 0.056178 0.051708 0.047209 0.042680 0.038124 0.033540 0.028930 0.024295 0.019636 0.014953 0.010246 0.005517 0.000766 -0.004006 -0.008797 -0.013605 -0.018429 -0.171932 0.174905 0.177790 0.180588 0.183294 0.185908 0.188427 0.190850 0.193175 0.195403 0.197534 0.199566 0.201501 0.203338 0.205076 0.206715 0.208255 0.209695 0.211037 0.212277 0.213415 0.214446 0.215369 0.216180 0.216879 0.217463 0.217933 0.218287 0.218522 0.218640 0.218638 0.218516 0.218273 0.217907 0.217414 0.216790 0.216030 0.215131 0.214090 0.212908 0.211586 0.210129 0.208538 0.206813 0.204952 0.202955 0.200823 0.198564 0.196182 0.193680 0.191059 0.188319 0.185457 0.182475 0.179375 0.176161 0.172837 0.169410 0.165885 0.162267 0.158560 0.154765 0.150886 0.146927 0.142889 0.138777 0.134591 0.130336 0.126013 0.121624 0.117173 0.112661 0.108090 0.103464 0.098783 0.094050 0.089268 0.084438 0.079562 0.074642 0.069681 0.064680 0.059641 0.054566 0.049456 0.044313 0.039138 0.033932 0.028696 0.023431 0.018137 0.012815 0.007466 0.002088 -0.003316 -0.008748 -0.014204 -0.019684 -0.025186 -0.030707 -0.036245 -0.041797 -0.047359 -0.052929 -0.200838 0.203909 0.206880 0.209749 0.212515 0.215177 0.217734 0.220184 0.222527 0.224762 0.226889 0.228905 0.230809 0.232599 0.234272 0.235824 0.237251 0.238552 0.239722 0.240758 0.241657 0.242415 0.243028 0.243492 0.243808 0.243972 0.243980 0.243829 0.243513 0.243029 0.242372 0.241542 0.240542 0.239376 0.238048 0.236558 0.234906 0.233091 0.231115 0.228985 0.226706 0.224284 0.221720 0.219013 0.216162 0.213169 0.210037 0.206769 0.203372 0.199853 0.196218 0.192471 0.188618 0.184663 0.180611 0.176464 0.172226 0.167902 0.163490 0.158992 0.154412 0.149750 0.145010 0.140193 0.135302 0.130339 0.125305 0.120204 0.115036 0.109806 0.104515 0.099166 0.093761 0.088304 0.082795 0.077238 0.071634 0.065985 0.060294 0.054562 0.048792 0.042985 0.037141 0.031263 0.025350 0.019404 0.013425 0.007413 0.001367 -0.004712 -0.010825 -0.016971 -0.023149 -0.029358 -0.035596 -0.041859 -0.048144 -0.054447 -0.060765 -0.067093 -0.073427 -0.079763 -0.086097 -0.092426 -0.230641 0.233863 0.236973 0.239972 0.242855 0.245621 0.248266 0.250787 0.253179 0.255440 0.257564 0.259547 0.261384 0.263068 0.264592 0.265950 0.267134 0.268139 0.268962 0.269596 0.270033 0.270266 0.270291 0.270103 0.269702 0.269091 0.268276 0.267262 0.266050 0.264640 0.263035 0.261238 0.259259 0.257104 0.254781 0.252291 0.249631 0.246804 0.243811 0.240656 0.237346 0.233888 0.230290 0.226559 0.222701 0.218721 0.214623 0.210414 0.206096 0.201671 0.197143 0.192516 0.187792 0.182972 0.178060 0.173059 0.167965 0.162781 0.157510 0.152152 0.146709 0.141185 0.135580 0.129898 0.124142 0.118313 0.112415 0.106451 0.100424 0.094335 0.088188 0.081986 0.075731 0.069425 0.063071 0.056670 0.050224 0.043736 0.037206 0.030636 0.024026 0.017376 0.010688 0.003960 -0.002807 -0.009616 -0.016466 -0.023356 -0.030288 -0.037259 -0.044268 -0.051312 -0.058387 -0.065489 -0.072612 -0.079752 -0.086902 -0.094058 -0.101212 -0.108359 -0.115495 -0.122615 -0.129714 -0.136785 -0.261843 0.265283 0.268590 0.271760 0.274786 0.277662 0.280380 0.282931 0.285305 0.287491 0.289480 0.291263 0.292831 0.294173 0.295276 0.296129 0.296725 0.297061 0.297136 0.296955 0.296523 0.295844 0.294921 0.293755 0.292352 0.290723 0.288880 0.286834 0.284588 0.282145 0.279505 0.276672 0.273653 0.270456 0.267088 0.263559 0.259875 0.256045 0.252073 0.247964 0.243724 0.239357 0.234867 0.230258 0.225534 0.220697 0.215750 0.210693 0.205528 0.200257 0.194884 0.189409 0.183835 0.178163 0.172392 0.166522 0.160556 0.154496 0.148345 0.142104 0.135777 0.129367 0.122876 0.116308 0.109666 0.102954 0.096173 0.089328 0.082421 0.075455 0.068432 0.061354 0.054224 0.047043 0.039813 0.032535 0.025211 0.017841 0.010424 0.002961 -0.004550 -0.012108 -0.019716 -0.027374 -0.035082 -0.042840 -0.050648 -0.058502 -0.066401 -0.074338 -0.082309 -0.090307 -0.098326 -0.106357 -0.114392 -0.122424 -0.130445 -0.138446 -0.146420 -0.154363 -0.162266 -0.170124 -0.177931 -0.185684 -0.294863 0.298505 0.301962 0.305222 0.308270 0.311094 0.313679 0.316009 0.318064 0.319831 0.321297 0.322455 0.323302 0.323836 0.324063 0.323982 0.323596 0.322909 0.321931 0.320676 0.319159 0.317394 0.315387 0.313144 0.310673 0.307981 0.305081 0.301981 0.298693 0.295227 0.291589 0.287788 0.283829 0.279718 0.275460 0.271060 0.266521 0.261847 0.257041 0.252105 0.247043 0.241857 0.236549 0.231120 0.225572 0.219908 0.214126 0.208228 0.202218 0.196097 0.189865 0.183527 0.177082 0.170528 0.163868 0.157105 0.150242 0.143280 0.136225 0.129078 0.121843 0.114525 0.107126 0.099649 0.092099 0.084478 0.076788 0.069034 0.061217 0.053339 0.045403 0.037410 0.029361 0.021257 0.013099 0.004887 -0.003381 -0.011704 -0.020085 -0.028525 -0.037025 -0.045586 -0.054207 -0.062889 -0.071630 -0.080425 -0.089270 -0.098159 -0.107085 -0.116037 -0.125006 -0.133983 -0.142955 -0.151912 -0.160842 -0.169738 -0.178589 -0.187388 -0.196127 -0.204800 -0.213403 -0.221937 -0.230401 -0.238803 -0.329311 0.332920 0.336237 0.339238 0.341909 0.344236 0.346210 0.347822 0.349067 0.349940 0.350441 0.350569 0.350333 0.349747 0.348830 0.347600 0.346067 0.344242 0.342138 0.339774 0.337166 0.334331 0.331285 0.328038 0.324600 0.320979 0.317182 0.313216 0.309084 0.304793 0.300346 0.295746 0.290998 0.286104 0.281067 0.275889 0.270572 0.265117 0.259527 0.253801 0.247942 0.241952 0.235830 0.229580 0.223202 0.216695 0.210063 0.203309 0.196432 0.189437 0.182326 0.175094 0.167744 0.160280 0.152703 0.145017 0.137227 0.129335 0.121345 0.113263 0.105091 0.096832 0.088492 0.080073 0.071578 0.063009 0.054370 0.045662 0.036887 0.028047 0.019143 0.010175 0.001142 -0.007954 -0.017117 -0.026347 -0.035646 -0.045015 -0.054458 -0.063973 -0.073561 -0.083220 -0.092948 -0.102741 -0.112590 -0.122488 -0.132424 -0.142387 -0.152364 -0.162340 -0.172302 -0.182233 -0.192122 -0.201958 -0.211729 -0.221427 -0.231043 -0.240572 -0.250012 -0.259364 -0.268632 -0.277826 -0.286960 -0.296054 -0.363235 0.366309 0.368978 0.371230 0.373053 0.374438 0.375380 0.375886 0.375969 0.375647 0.374938 0.373855 0.372418 0.370650 0.368578 0.366227 0.363623 0.360786 0.357731 0.354468 0.351009 0.347359 0.343525 0.339511 0.335322 0.330963 0.326436 0.321744 0.316891 0.311880 0.306713 0.301391 0.295917 0.290292 0.284516 0.278591 0.272516 0.266292 0.259921 0.253403 0.246740 0.239933 0.232985 0.225896 0.218665 0.211296 0.203791 0.196152 0.188381 0.180479 0.172444 0.164280 0.155989 0.147575 0.139044 0.130399 0.121644 0.112784 0.103824 0.094766 0.085616 0.076376 0.067050 0.057641 0.048151 0.038582 0.028937 0.019216 0.009421 -0.000449 -0.010394 -0.020416 -0.030515 -0.040694 -0.050955 -0.061300 -0.071731 -0.082249 -0.092853 -0.103541 -0.114309 -0.125152 -0.136059 -0.147022 -0.158026 -0.169057 -0.180098 -0.191131 -0.202138 -0.213101 -0.224004 -0.234835 -0.245580 -0.256230 -0.266776 -0.277212 -0.287537 -0.297755 -0.307874 -0.317905 -0.327870 -0.337795 -0.347709 -0.357642 -0.393962 0.396077 0.397689 0.398800 0.399420 0.399559 0.399240 0.398486 0.397328 0.395802 0.393945 0.391789 0.389360 0.386683 0.383774 0.380647 0.377313 0.373778 0.370046 0.366123 0.362012 0.357717 0.353240 0.348584 0.343753 0.338749 0.333573 0.328229 0.322716 0.317037 0.311193 0.305182 0.299007 0.292666 0.286159 0.279488 0.272652 0.265651 0.258486 0.251160 0.243673 0.236029 0.228225 0.220263 0.212146 0.203878 0.195460 0.186895 0.178183 0.169323 0.160320 0.151179 0.141904 0.132499 0.122971 0.113323 0.103560 0.093687 0.083709 0.073628 0.063449 0.053174 0.042807 0.032350 0.021805 0.011172 0.000453 -0.010353 -0.021246 -0.032228 -0.043302 -0.054469 -0.065733 -0.077096 -0.088560 -0.100124 -0.111789 -0.123553 -0.135410 -0.147353 -0.159372 -0.171452 -0.183580 -0.195737 -0.207902 -0.220052 -0.232167 -0.244227 -0.256210 -0.268101 -0.279885 -0.291552 -0.303089 -0.314492 -0.325762 -0.336902 -0.347923 -0.358842 -0.369684 -0.380484 -0.391278 -0.402103 -0.412991 -0.423967 -0.419194 0.420039 0.420355 0.420180 0.419555 0.418521 0.417118 0.415382 0.413345 0.411031 0.408460 0.405652 0.402619 0.399371 0.395912 0.392247 0.388378 0.384308 0.380041 0.375578 0.370923 0.366078 0.361044 0.355823 0.350417 0.344827 0.339054 0.333098 0.326958 0.320635 0.314128 0.307437 0.300561 0.293499 0.286251 0.278817 0.271197 0.263392 0.255405 0.247236 0.238888 0.230363 0.221658 0.212780 0.203732 0.194516 0.185138 0.175593 0.165886 0.156022 0.146004 0.135840 0.125533 0.115090 0.104515 0.093815 0.082993 0.072054 0.061003 0.049843 0.038577 0.027208 0.015736 0.004165 -0.007507 -0.019278 -0.031151 -0.043126 -0.055208 -0.067399 -0.079703 -0.092120 -0.104654 -0.117306 -0.130073 -0.142955 -0.155944 -0.169035 -0.182214 -0.195465 -0.208771 -0.222111 -0.235461 -0.248795 -0.262088 -0.275316 -0.288455 -0.301482 -0.314380 -0.327137 -0.339740 -0.352183 -0.364465 -0.376593 -0.388579 -0.400441 -0.412214 -0.423936 -0.435651 -0.447406 -0.459243 -0.471199 -0.483306 -0.495571 -0.437423 0.437176 0.436516 0.435476 0.434091 0.432395 0.430412 0.428161 0.425657 0.422916 0.419946 0.416750 0.413330 0.409691 0.405833 0.401760 0.397474 0.392976 0.388269 0.383354 0.378233 0.372907 0.367377 0.361643 0.355706 0.349564 0.343216 0.336663 0.329903 0.322934 0.315756 0.308369 0.300770 0.292959 0.284938 0.276705 0.268262 0.259612 0.250758 0.241700 0.232443 0.222985 0.213331 0.203487 0.193456 0.183244 0.172847 0.162270 0.151518 0.140598 0.129515 0.118276 0.106886 0.095352 0.083678 0.071871 0.059936 0.047875 0.035692 0.023391 0.010972 -0.001561 -0.014209 -0.026972 -0.039851 -0.052848 -0.065967 -0.079212 -0.092586 -0.106091 -0.119730 -0.133502 -0.147408 -0.161445 -0.175607 -0.189887 -0.204271 -0.218742 -0.233279 -0.247858 -0.262456 -0.277042 -0.291587 -0.306062 -0.320439 -0.334687 -0.348785 -0.362718 -0.376472 -0.390038 -0.403415 -0.416608 -0.429630 -0.442505 -0.455267 -0.467964 -0.480646 -0.493367 -0.506184 -0.519146 -0.532289 -0.545639 -0.559196 -0.572935 -0.449635 0.448872 0.447774 0.446370 0.444682 0.442721 0.440504 0.438043 0.435343 0.432398 0.429211 0.425783 0.422115 0.418209 0.414065 0.409687 0.405076 0.400234 0.395161 0.389858 0.384326 0.378564 0.372570 0.366346 0.359888 0.353197 0.346271 0.339108 0.331709 0.324070 0.316192 0.308074 0.299715 0.291116 0.282278 0.273201 0.263890 0.254348 0.244576 0.234579 0.224357 0.213915 0.203260 0.192396 0.181331 0.170062 0.158593 0.146932 0.135084 0.123056 0.110855 0.098488 0.085961 0.073281 0.060453 0.047482 0.034371 0.021124 0.007743 -0.005769 -0.019413 -0.033188 -0.047095 -0.061137 -0.075318 -0.089641 -0.104112 -0.118732 -0.133503 -0.148426 -0.163501 -0.178725 -0.194094 -0.209599 -0.225229 -0.240964 -0.256782 -0.272657 -0.288562 -0.304467 -0.320339 -0.336142 -0.351843 -0.367406 -0.382800 -0.398006 -0.413009 -0.427795 -0.442359 -0.456708 -0.470854 -0.484819 -0.498643 -0.512377 -0.526079 -0.539810 -0.553635 -0.567614 -0.581800 -0.596234 -0.610936 -0.625898 -0.641097 -0.656502 -0.457427 0.456594 0.455471 0.454064 0.452386 0.450446 0.448246 0.445777 0.443042 0.440044 0.436776 0.433240 0.429436 0.425363 0.421024 0.416420 0.411552 0.406421 0.401026 0.395368 0.389445 0.383258 0.376804 0.370084 0.363096 0.355839 0.348312 0.340514 0.332443 0.324100 0.315483 0.306594 0.297431 0.287998 0.278295 0.268327 0.258096 0.247607 0.236866 0.225871 0.214631 0.203153 0.191444 0.179511 0.167353 0.154974 0.142380 0.129581 0.116582 0.103393 0.090019 0.076469 0.062750 0.048865 0.034821 0.020621 0.006268 -0.008236 -0.022889 -0.037691 -0.052643 -0.067747 -0.083007 -0.098429 -0.114016 -0.129772 -0.145699 -0.161797 -0.178066 -0.194504 -0.211108 -0.227870 -0.244779 -0.261817 -0.278960 -0.296180 -0.313449 -0.330735 -0.348004 -0.365216 -0.382329 -0.399304 -0.416100 -0.432687 -0.449045 -0.465160 -0.481021 -0.496631 -0.512001 -0.527154 -0.542126 -0.556972 -0.571758 -0.586551 -0.601417 -0.616429 -0.631659 -0.647164 -0.662990 -0.679160 -0.695662 -0.712473 -0.729558 -0.746859 -0.461928 0.461363 0.460509 0.459366 0.457935 0.456203 0.454171 0.451844 0.449213 0.446274 0.443035 0.439487 0.435630 0.431464 0.426989 0.422207 0.417118 0.411723 0.406022 0.400015 0.393703 0.387085 0.380160 0.372928 0.365388 0.357540 0.349382 0.340913 0.332135 0.323046 0.313648 0.303941 0.293928 0.283611 0.272993 0.262080 0.250876 0.239388 0.227620 0.215575 0.203267 0.190702 0.177889 0.164828 0.151522 0.137979 0.124207 0.110214 0.096010 0.081603 0.067000 0.052208 0.037233 0.022079 0.006751 -0.008749 -0.024418 -0.040256 -0.056263 -0.072441 -0.088793 -0.105326 -0.122045 -0.138952 -0.156051 -0.173343 -0.190826 -0.208500 -0.226361 -0.244405 -0.262620 -0.280991 -0.299496 -0.318104 -0.336786 -0.355510 -0.374239 -0.392931 -0.411543 -0.430025 -0.448329 -0.466412 -0.484244 -0.501807 -0.519087 -0.536080 -0.552793 -0.569246 -0.585472 -0.601525 -0.617475 -0.633392 -0.649350 -0.665429 -0.681709 -0.698271 -0.715189 -0.732518 -0.750277 -0.768459 -0.787034 -0.805946 -0.825118 -0.844455 -0.464002 0.463921 0.463533 0.462824 0.461776 0.460391 0.458663 0.456580 0.454149 0.451369 0.448229 0.444736 0.440884 0.436671 0.432098 0.427164 0.421872 0.416224 0.410221 0.403864 0.397155 0.390093 0.382678 0.374911 0.366792 0.358320 0.349496 0.340319 0.330791 0.320913 0.310688 0.300117 0.289203 0.277951 0.266366 0.254456 0.242226 0.229685 0.216837 0.203695 0.190268 0.176567 0.162592 0.148345 0.133836 0.119073 0.104065 0.088823 0.073356 0.057672 0.041777 0.025679 0.009381 -0.007113 -0.023798 -0.040674 -0.057740 -0.074997 -0.092448 -0.110100 -0.127957 -0.146025 -0.164307 -0.182803 -0.201515 -0.220440 -0.239576 -0.258920 -0.278462 -0.298189 -0.318081 -0.338111 -0.358246 -0.378453 -0.398696 -0.418932 -0.439115 -0.459191 -0.479105 -0.498801 -0.518234 -0.537374 -0.556205 -0.574716 -0.592907 -0.610792 -0.628401 -0.645778 -0.662994 -0.680122 -0.697242 -0.714440 -0.731801 -0.749419 -0.767400 -0.785827 -0.804762 -0.824230 -0.844213 -0.864674 -0.885547 -0.906738 -0.928132 -0.949605 -0.464264 0.464773 0.464946 0.464759 0.464203 0.463261 0.461918 0.460178 0.458024 0.455459 0.452487 0.449094 0.445288 0.441062 0.436414 0.431347 0.425863 0.419966 0.413659 0.406944 0.399824 0.392300 0.384374 0.376045 0.367315 0.358186 0.348658 0.338733 0.328413 0.317702 0.306603 0.295119 0.283254 0.271016 0.258412 0.245452 0.232146 0.218500 0.204524 0.190234 0.175637 0.160741 0.145544 0.130056 0.114287 0.098246 0.081946 0.065395 0.048603 0.031578 0.014326 -0.003150 -0.020843 -0.038751 -0.056873 -0.075208 -0.093758 -0.112530 -0.131528 -0.150760 -0.170228 -0.189934 -0.209881 -0.230066 -0.250488 -0.271143 -0.292025 -0.313123 -0.334420 -0.355892 -0.377509 -0.399236 -0.421035 -0.442864 -0.464677 -0.486419 -0.508031 -0.529447 -0.550606 -0.571460 -0.591983 -0.612157 -0.631976 -0.651444 -0.670582 -0.689427 -0.708040 -0.726493 -0.744873 -0.763268 -0.781768 -0.800475 -0.819510 -0.838986 -0.859005 -0.879638 -0.900905 -0.922792 -0.945261 -0.968236 -0.991609 -1.015243 -1.038978 -1.062628 -0.463046 0.464200 0.464996 0.465404 0.465395 0.464956 0.464077 0.462731 0.460922 0.458632 0.455862 0.452617 0.448884 0.444671 0.439969 0.434783 0.429114 0.422969 0.416353 0.409270 0.401724 0.393718 0.385254 0.376335 0.366963 0.357141 0.346870 0.336156 0.325002 0.313412 0.301390 0.288943 0.276077 0.262802 0.249129 0.235069 0.220636 0.205834 0.190683 0.175190 0.159369 0.143216 0.126740 0.109952 0.092864 0.075487 0.057832 0.039910 0.021728 0.003293 -0.015390 -0.034315 -0.053481 -0.072885 -0.092529 -0.112415 -0.132550 -0.152940 -0.173592 -0.194507 -0.215688 -0.237134 -0.258846 -0.280819 -0.303047 -0.325524 -0.348234 -0.371158 -0.394271 -0.417539 -0.440923 -0.464381 -0.487868 -0.511330 -0.534706 -0.557929 -0.580924 -0.603625 -0.625986 -0.647976 -0.669582 -0.690797 -0.711631 -0.732110 -0.752282 -0.772211 -0.791981 -0.811683 -0.831411 -0.851275 -0.871399 -0.891912 -0.912951 -0.934627 -0.957022 -0.980170 -1.004064 -1.028667 -1.053895 -1.079618 -1.105667 -1.131842 -1.157913 -1.183645 -0.460587 0.462421 0.463862 0.464896 0.465485 0.465598 0.465208 0.464315 0.462883 0.460916 0.458395 0.455320 0.451696 0.447514 0.442778 0.437485 0.431638 0.425245 0.418314 0.410851 0.402863 0.394353 0.385326 0.375786 0.365738 0.355185 0.344134 0.332589 0.320555 0.308039 0.295047 0.281588 0.267670 0.253309 0.238517 0.223311 0.207697 0.191690 0.175306 0.158559 0.141449 0.123981 0.106167 0.088019 0.069552 0.050776 0.031704 0.012342 -0.007300 -0.027218 -0.047407 -0.067862 -0.088584 -0.109572 -0.130832 -0.152372 -0.174196 -0.196311 -0.218718 -0.241420 -0.264416 -0.287703 -0.311279 -0.335134 -0.359259 -0.383638 -0.408249 -0.433063 -0.458046 -0.483154 -0.508342 -0.533558 -0.558744 -0.583833 -0.608747 -0.633407 -0.657743 -0.681704 -0.705259 -0.728393 -0.751103 -0.773401 -0.795321 -0.816909 -0.838240 -0.859400 -0.880486 -0.901612 -0.922904 -0.944499 -0.966547 -0.989194 -1.012573 -1.036792 -1.061899 -1.087901 -1.114763 -1.142385 -1.170611 -1.199238 -1.228017 -1.256684 -1.284967 -1.312625 -0.457049 0.459585 0.461697 0.463365 0.464561 0.465247 0.465393 0.464961 0.463952 0.462331 0.460098 0.457230 0.453734 0.449609 0.444852 0.439464 0.433446 0.426804 0.419551 0.411695 0.403245 0.394208 0.384591 0.374400 0.363641 0.352322 0.340449 0.328030 0.315071 0.301582 0.287571 0.273051 0.258033 0.242538 0.226579 0.210172 0.193326 0.176062 0.158392 0.140328 0.121868 0.103024 0.083811 0.064242 0.044332 0.024092 0.003532 -0.017340 -0.038518 -0.059996 -0.081771 -0.103841 -0.126208 -0.148878 -0.171859 -0.195156 -0.218775 -0.242718 -0.266985 -0.291576 -0.316488 -0.341715 -0.367249 -0.393077 -0.419179 -0.445534 -0.472111 -0.498872 -0.525772 -0.552760 -0.579781 -0.606769 -0.633651 -0.660344 -0.686764 -0.712835 -0.738500 -0.763727 -0.788498 -0.812811 -0.836683 -0.860143 -0.883244 -0.906059 -0.928680 -0.951219 -0.973806 -0.996580 -1.019698 -1.043319 -1.067611 -1.092736 -1.118832 -1.145972 -1.174175 -1.203402 -1.233535 -1.264398 -1.295748 -1.327293 -1.358730 -1.389759 -1.420113 -1.449579 -0.452619 0.455817 0.458597 0.460904 0.462712 0.463978 0.464661 0.464733 0.464154 0.462914 0.460984 0.458358 0.455015 0.450966 0.446202 0.440730 0.434544 0.427653 0.420069 0.411806 0.402876 0.393288 0.383052 0.372177 0.360674 0.348550 0.335815 0.322477 0.308548 0.294039 0.278962 0.263332 0.247168 0.230488 0.213313 0.195650 0.177520 0.158940 0.139928 0.120481 0.100609 0.080328 0.059654 0.038600 0.017180 -0.004594 -0.026715 -0.049174 -0.071965 -0.095084 -0.118531 -0.142308 -0.166421 -0.190877 -0.215684 -0.240844 -0.266361 -0.292235 -0.318466 -0.345048 -0.371976 -0.399239 -0.426820 -0.454700 -0.482856 -0.511256 -0.539859 -0.568618 -0.597478 -0.626378 -0.655248 -0.684009 -0.712575 -0.740856 -0.768770 -0.796253 -0.823267 -0.849792 -0.875827 -0.901387 -0.926496 -0.951206 -0.975589 -0.999748 -1.023811 -1.047918 -1.072227 -1.096907 -1.122135 -1.148105 -1.175016 -1.203037 -1.232271 -1.262743 -1.294412 -1.327152 -1.360760 -1.394967 -1.429432 -1.463821 -1.497797 -1.531066 -1.563394 -1.594607 -0.447482 0.451276 0.454675 0.457605 0.460010 0.461858 0.463089 0.463658 0.463536 0.462687 0.461086 0.458715 0.455554 0.451592 0.446839 0.441287 0.434938 0.427795 0.419872 0.411187 0.401756 0.391593 0.380710 0.369120 0.356836 0.343868 0.330228 0.315929 0.300984 0.285408 0.269218 0.252432 0.235072 0.217157 0.198709 0.179736 0.160267 0.140315 0.119894 0.099002 0.077657 0.055875 0.033673 0.011066 -0.011934 -0.035317 -0.059074 -0.083198 -0.107685 -0.132533 -0.157747 -0.183331 -0.209294 -0.235642 -0.262379 -0.289507 -0.317027 -0.344938 -0.373234 -0.401909 -0.430948 -0.460333 -0.490044 -0.520057 -0.550338 -0.580846 -0.611531 -0.642334 -0.673189 -0.704021 -0.734751 -0.765287 -0.795535 -0.825407 -0.854828 -0.883752 -0.912158 -0.940042 -0.967409 -0.994281 -1.020699 -1.046743 -1.072524 -1.098182 -1.123869 -1.149758 -1.176037 -1.202907 -1.230591 -1.259322 -1.289304 -1.320669 -1.353451 -1.387614 -1.423024 -1.459467 -1.496646 -1.534181 -1.571699 -1.608829 -1.645241 -1.680674 -1.714926 -1.747917 -0.441854 0.446133 0.450067 0.453568 0.456548 0.458950 0.460725 0.461801 0.462131 0.461684 0.460426 0.458320 0.455356 0.451504 0.446766 0.441141 0.434630 0.427233 0.418962 0.409840 0.399888 0.389125 0.377566 0.365228 0.352126 0.338274 0.323688 0.308383 0.292377 0.275689 0.258338 0.240347 0.221739 0.202538 0.182759 0.162423 0.141553 0.120171 0.098273 0.075873 0.052990 0.029641 0.005844 -0.018388 -0.043043 -0.068110 -0.093583 -0.119455 -0.145727 -0.172401 -0.199482 -0.226978 -0.254897 -0.283241 -0.312014 -0.341217 -0.370846 -0.400897 -0.431360 -0.462221 -0.493459 -0.525052 -0.556975 -0.589195 -0.621670 -0.654345 -0.687161 -0.720047 -0.752926 -0.785715 -0.818321 -0.850646 -0.882592 -0.914076 -0.945042 -0.975465 -1.005328 -1.034630 -1.063382 -1.091620 -1.119425 -1.146918 -1.174244 -1.201571 -1.229089 -1.257008 -1.285556 -1.314987 -1.345565 -1.377526 -1.411034 -1.446143 -1.482821 -1.520940 -1.560279 -1.600526 -1.641269 -1.682086 -1.722577 -1.762364 -1.801152 -1.838708 -1.874922 -1.909798 -0.435870 0.440553 0.444924 0.448911 0.452413 0.455339 0.457625 0.459202 0.459988 0.459939 0.459024 0.457198 0.454431 0.450704 0.445989 0.440298 0.433624 0.425968 0.417341 0.407767 0.397274 0.385885 0.373620 0.360500 0.346542 0.331766 0.316191 0.299837 0.282726 0.264878 0.246318 0.227070 0.207161 0.186617 0.165451 0.143694 0.121367 0.098484 0.075046 0.051073 0.026585 0.001601 -0.023864 -0.049795 -0.076180 -0.103013 -0.130286 -0.157997 -0.186150 -0.214749 -0.243802 -0.273317 -0.303297 -0.333745 -0.364661 -0.396044 -0.427887 -0.460180 -0.492905 -0.526041 -0.559566 -0.593452 -0.627666 -0.662165 -0.696895 -0.731792 -0.766784 -0.801793 -0.836733 -0.871508 -0.906019 -0.940158 -0.973835 -1.006981 -1.039561 -1.071542 -1.102913 -1.133673 -1.163852 -1.193529 -1.222828 -1.251903 -1.280935 -1.310135 -1.339739 -1.370005 -1.401215 -1.433657 -1.467600 -1.503242 -1.540668 -1.579854 -1.620692 -1.662964 -1.706349 -1.750414 -1.794689 -1.838736 -1.882129 -1.924527 -1.965661 -2.005378 -2.043663 -2.080572 -0.429533 0.434623 0.439367 0.443756 0.447703 0.451101 0.453860 0.455904 0.457139 0.457489 0.456906 0.455362 0.452797 0.449195 0.444517 0.438758 0.431921 0.424002 0.415009 0.404968 0.393913 0.381872 0.368870 0.354932 0.340081 0.324341 0.307736 0.290289 0.272025 0.252970 0.233149 0.212592 0.191327 0.169381 0.146773 0.123533 0.099687 0.075235 0.050192 0.024579 -0.001583 -0.028274 -0.055480 -0.083187 -0.111385 -0.140068 -0.169232 -0.198878 -0.229012 -0.259642 -0.290774 -0.322413 -0.354562 -0.387221 -0.420389 -0.454058 -0.488216 -0.522846 -0.557924 -0.593427 -0.629325 -0.665586 -0.702167 -0.739012 -0.776058 -0.813230 -0.850449 -0.887629 -0.924673 -0.961476 -0.997929 -1.033928 -1.069396 -1.104275 -1.138522 -1.172104 -1.205011 -1.237262 -1.268932 -1.300143 -1.331056 -1.361868 -1.392813 -1.424152 -1.456175 -1.489191 -1.523510 -1.559427 -1.597177 -1.636885 -1.678550 -1.722088 -1.767296 -1.813857 -1.861330 -1.909200 -1.956980 -2.004203 -2.050465 -2.095456 -2.138970 -2.180957 -2.221453 -2.260556 -0.422832 0.428331 0.433453 0.438186 0.442509 0.446310 0.449495 0.451965 0.453622 0.454358 0.454109 0.452826 0.450472 0.446988 0.442350 0.436526 0.429522 0.421335 0.411966 0.401442 0.389802 0.377082 0.363311 0.348521 0.332740 0.315996 0.298317 0.279732 0.260268 0.239955 0.218821 0.196901 0.174226 0.150817 0.126708 0.101926 0.076491 0.050405 0.023689 -0.003633 -0.031541 -0.060014 -0.089039 -0.118604 -0.148700 -0.179323 -0.210474 -0.242156 -0.274376 -0.307143 -0.340461 -0.374333 -0.408760 -0.443739 -0.479264 -0.515322 -0.551892 -0.588953 -0.626477 -0.664435 -0.702794 -0.741510 -0.780529 -0.819786 -0.859209 -0.898717 -0.938224 -0.977631 -1.016832 -1.055714 -1.094167 -1.132097 -1.169424 -1.206086 -1.242030 -1.277234 -1.311701 -1.345498 -1.378738 -1.411592 -1.444271 -1.477032 -1.510164 -1.543988 -1.578834 -1.615036 -1.652911 -1.692732 -1.734670 -1.778763 -1.824954 -1.873069 -1.922807 -1.973734 -2.025303 -2.076971 -2.128228 -2.178604 -2.227729 -2.275344 -2.321343 -2.365735 -2.408598 -2.450069 -0.415755 0.421667 0.427172 0.432250 0.436890 0.441042 0.444589 0.447439 0.449477 0.450575 0.450649 0.449620 0.447458 0.444092 0.439489 0.433603 0.426429 0.417965 0.408210 0.397186 0.384939 0.371511 0.356941 0.341264 0.324514 0.306725 0.287929 0.268160 0.247447 0.225823 0.203323 0.179983 0.155839 0.130910 0.105239 0.078852 0.051758 0.023969 -0.004489 -0.033592 -0.063319 -0.093652 -0.124578 -0.156086 -0.188171 -0.220831 -0.254068 -0.287890 -0.322304 -0.357316 -0.392928 -0.429143 -0.465957 -0.503363 -0.541349 -0.579894 -0.618973 -0.658559 -0.698622 -0.739125 -0.780028 -0.821276 -0.862806 -0.904546 -0.946417 -0.988332 -1.030193 -1.071892 -1.113316 -1.154349 -1.194880 -1.234803 -1.274036 -1.312503 -1.350163 -1.387003 -1.423071 -1.458476 -1.493391 -1.528038 -1.562697 -1.597688 -1.633357 -1.670059 -1.708149 -1.747966 -1.789817 -1.833920 -1.880370 -1.929140 -1.980099 -2.032976 -2.087358 -2.142688 -2.198366 -2.253833 -2.308555 -2.362089 -2.414109 -2.464442 -2.513056 -2.560003 -2.605403 -2.649422 -0.408284 0.414623 0.420510 0.425938 0.430885 0.435336 0.439197 0.442372 0.444743 0.446179 0.446539 0.445768 0.443769 0.440521 0.435939 0.429991 0.422639 0.413890 0.403737 0.392197 0.379320 0.365157 0.349754 0.333154 0.315397 0.296522 0.276565 0.255563 0.233551 0.210564 0.186643 0.161827 0.136151 0.109645 0.082347 0.054287 0.025465 -0.004095 -0.034366 -0.065324 -0.096950 -0.129224 -0.162137 -0.195679 -0.229847 -0.264643 -0.300072 -0.336140 -0.372856 -0.410222 -0.448240 -0.486907 -0.526216 -0.566155 -0.606702 -0.647833 -0.689518 -0.731725 -0.774418 -0.817555 -0.861084 -0.904943 -0.949062 -0.993365 -1.037765 -1.082165 -1.126457 -1.170529 -1.214260 -1.257525 -1.300193 -1.342154 -1.383312 -1.423597 -1.462979 -1.501482 -1.539203 -1.576314 -1.613047 -1.649703 -1.686627 -1.724193 -1.762780 -1.802766 -1.844512 -1.888350 -1.934549 -1.983266 -2.034523 -2.088232 -2.144169 -2.201961 -2.261060 -2.320826 -2.380642 -2.439914 -2.498115 -2.554841 -2.609839 -2.663016 -2.714390 -2.764055 -2.812170 -2.858919 -0.400403 0.407186 0.413458 0.419238 0.424496 0.429216 0.433353 0.436803 0.439465 0.441185 0.441818 0.441268 0.439435 0.436274 0.431709 0.425686 0.418153 0.409107 0.398542 0.386468 0.372938 0.358013 0.341746 0.324188 0.305384 0.285380 0.264215 0.241932 0.218567 0.194163 0.168765 0.142415 0.115147 0.087001 0.058015 0.028209 -0.002410 -0.033813 -0.065972 -0.098864 -0.132469 -0.166770 -0.201759 -0.237430 -0.273781 -0.310816 -0.348543 -0.386967 -0.426095 -0.465925 -0.506459 -0.547688 -0.589600 -0.632173 -0.675383 -0.719199 -0.763588 -0.808511 -0.853927 -0.899784 -0.946024 -0.992581 -1.039378 -1.086333 -1.133349 -1.180323 -1.227139 -1.273679 -1.319803 -1.365361 -1.410210 -1.454227 -1.497317 -1.539421 -1.580537 -1.620743 -1.660207 -1.699164 -1.737929 -1.776876 -1.816401 -1.856909 -1.898803 -1.942468 -1.988259 -2.036486 -2.087375 -2.141008 -2.197347 -2.256229 -2.317334 -2.380153 -2.444030 -2.508283 -2.572268 -2.635368 -2.697090 -2.757082 -2.815175 -2.871337 -2.925625 -2.978184 -3.029194 -3.078860 -0.392097 0.399338 0.406008 0.412136 0.417708 0.422695 0.427069 0.430763 0.433664 0.435625 0.436506 0.436135 0.434464 0.431357 0.426801 0.420686 0.412967 0.403612 0.392621 0.379996 0.365790 0.350074 0.332911 0.314358 0.294468 0.273290 0.250870 0.227254 0.202485 0.176608 0.149674 0.121730 0.092808 0.062959 0.032219 0.000595 -0.031893 -0.065213 -0.099338 -0.134244 -0.169913 -0.206331 -0.243491 -0.281388 -0.320024 -0.359405 -0.399539 -0.440429 -0.482079 -0.524486 -0.567646 -0.611546 -0.656165 -0.701477 -0.747452 -0.794054 -0.841245 -0.888980 -0.937210 -0.985878 -1.034923 -1.084272 -1.133845 -1.183548 -1.233281 -1.282932 -1.332379 -1.381480 -1.430062 -1.477954 -1.525003 -1.571081 -1.616098 -1.660019 -1.702901 -1.744892 -1.786232 -1.827242 -1.868317 -1.909877 -1.952354 -1.996178 -2.041758 -2.089475 -2.139674 -2.192636 -2.248524 -2.307356 -2.369037 -2.433312 -2.499742 -2.567683 -2.636407 -2.705209 -2.773400 -2.840379 -2.905686 -2.969052 -3.030375 -3.089669 -3.147044 -3.202674 -3.256766 -3.309539 -0.383352 0.391065 0.398145 0.404621 0.410507 0.415763 0.420357 0.424259 0.427360 0.429536 0.430603 0.430404 0.428849 0.425797 0.421216 0.414996 0.407077 0.397401 0.385969 0.372776 0.357871 0.341335 0.323242 0.303657 0.282639 0.260242 0.236519 0.211518 0.185289 0.157883 0.129355 0.099755 0.069119 0.037500 0.004933 -0.028581 -0.063011 -0.098325 -0.134496 -0.171501 -0.209323 -0.247951 -0.287378 -0.327603 -0.368631 -0.410466 -0.453117 -0.496584 -0.540869 -0.585966 -0.631863 -0.678541 -0.725974 -0.774129 -0.822971 -0.872460 -0.922551 -0.973194 -1.024334 -1.075913 -1.127864 -1.180109 -1.232562 -1.285124 -1.337688 -1.390133 -1.442312 -1.494044 -1.545127 -1.595377 -1.644629 -1.692757 -1.739691 -1.785453 -1.830170 -1.874073 -1.917485 -1.960814 -2.004504 -2.049014 -2.094802 -2.142305 -2.191932 -2.244057 -2.299008 -2.357027 -2.418204 -2.482513 -2.549780 -2.619651 -2.691536 -2.764695 -2.838353 -2.911765 -2.984220 -3.055140 -3.124129 -3.190996 -3.255694 -3.318284 -3.378922 -3.437809 -3.495171 -3.551246 -0.374154 0.382353 0.389853 0.396686 0.402881 0.408406 0.413217 0.417296 0.420576 0.422918 0.424138 0.424083 0.422602 0.419598 0.414956 0.408619 0.400480 0.390471 0.378581 0.364801 0.349173 0.331789 0.312733 0.292077 0.269888 0.246226 0.221149 0.194711 0.166967 0.137974 0.107793 0.076472 0.044060 0.010605 -0.023865 -0.059343 -0.095792 -0.133180 -0.171481 -0.210673 -0.250740 -0.291674 -0.333469 -0.376128 -0.419654 -0.464055 -0.509335 -0.555493 -0.602526 -0.650424 -0.699169 -0.748733 -0.799085 -0.850188 -0.902002 -0.954480 -1.007571 -1.061222 -1.115376 -1.169972 -1.224939 -1.280194 -1.335645 -1.391190 -1.446710 -1.502059 -1.557049 -1.611460 -1.665071 -1.717682 -1.769124 -1.819285 -1.868150 -1.915811 -1.962481 -2.008478 -2.054215 -2.100153 -2.146779 -2.194582 -2.244029 -2.295562 -2.349584 -2.406457 -2.466489 -2.529862 -2.596617 -2.666671 -2.739763 -2.815402 -2.892871 -2.971353 -3.050038 -3.128128 -3.204918 -3.279861 -3.352653 -3.423161 -3.491390 -3.557451 -3.621535 -3.683867 -3.744692 -3.804264 -0.364492 0.373187 0.381118 0.388316 0.394817 0.400611 0.405640 0.409879 0.413307 0.415782 0.417130 0.417170 0.415746 0.412752 0.408030 0.401552 0.393170 0.382818 0.370451 0.356066 0.339692 0.321431 0.301376 0.279609 0.256205 0.231230 0.204748 0.176819 0.147502 0.116865 0.084969 0.051863 0.017607 -0.017752 -0.054202 -0.091719 -0.130266 -0.169812 -0.210329 -0.251799 -0.294208 -0.337546 -0.381814 -0.427012 -0.473149 -0.520228 -0.568250 -0.617214 -0.667110 -0.717922 -0.769623 -0.822182 -0.875562 -0.929720 -0.984609 -1.040179 -1.096374 -1.153140 -1.210420 -1.268149 -1.326251 -1.384641 -1.443223 -1.501883 -1.560478 -1.618821 -1.676679 -1.733801 -1.789947 -1.844903 -1.898513 -1.950715 -2.001558 -2.051222 -2.100014 -2.148341 -2.196673 -2.245525 -2.295415 -2.346847 -2.400295 -2.456198 -2.514948 -2.576899 -2.642320 -2.711340 -2.783961 -2.860023 -2.939160 -3.020729 -3.103913 -3.187836 -3.271639 -3.354486 -3.435684 -3.514764 -3.591493 -3.665795 -3.737723 -3.807435 -3.875154 -3.941124 -4.005605 -4.068877 -0.354353 0.363556 0.371928 0.379498 0.386306 0.392366 0.397613 0.402002 0.405549 0.408136 0.409576 0.409678 0.408285 0.405261 0.400450 0.393792 0.385148 0.374437 0.361576 0.346564 0.329420 0.310251 0.289162 0.266244 0.241580 0.215243 0.187303 0.157827 0.126881 0.094538 0.060864 0.025910 -0.010260 -0.047599 -0.086103 -0.125738 -0.166465 -0.208254 -0.251079 -0.294921 -0.339768 -0.385615 -0.432461 -0.480311 -0.529170 -0.579041 -0.629922 -0.681806 -0.734679 -0.788517 -0.843286 -0.898950 -0.955465 -1.012785 -1.070857 -1.129625 -1.189033 -1.249031 -1.309557 -1.370543 -1.431911 -1.493576 -1.555428 -1.617334 -1.679107 -1.740511 -1.801275 -1.861120 -1.919785 -1.977064 -2.032844 -2.087120 -2.140030 -2.191853 -2.242984 -2.293891 -2.345106 -2.397184 -2.450664 -2.506057 -2.563840 -2.624441 -2.688244 -2.755585 -2.826695 -2.901659 -2.980428 -3.062757 -3.148138 -3.235801 -3.324840 -3.414328 -3.503337 -3.591023 -3.676727 -3.760075 -3.840889 -3.919147 -3.994951 -4.068504 -4.140049 -4.209849 -4.278187 -4.345372 -0.343727 0.353447 0.362268 0.370218 0.377337 0.383658 0.389121 0.393659 0.397304 0.399980 0.401479 0.401621 0.400217 0.397135 0.392211 0.385341 0.376416 0.365321 0.351948 0.336290 0.318351 0.298242 0.276081 0.251971 0.226000 0.198252 0.168801 0.137722 0.105087 0.070976 0.035460 -0.001409 -0.039561 -0.078959 -0.119596 -0.161430 -0.204423 -0.248544 -0.293769 -0.340080 -0.387468 -0.435928 -0.485462 -0.536075 -0.587772 -0.640552 -0.694408 -0.749330 -0.805294 -0.862270 -0.920218 -0.979097 -1.038859 -1.099450 -1.160813 -1.222891 -1.285632 -1.348985 -1.412884 -1.477263 -1.542044 -1.607130 -1.672394 -1.737658 -1.802688 -1.867203 -1.930893 -1.993447 -2.054608 -2.114207 -2.172181 -2.228606 -2.283722 -2.337901 -2.391600 -2.445355 -2.499753 -2.555372 -2.612763 -2.672444 -2.734886 -2.800503 -2.869671 -2.942710 -3.019810 -3.101016 -3.186213 -3.275054 -3.366875 -3.460799 -3.555840 -3.651007 -3.745316 -3.837929 -3.928265 -4.016023 -4.101081 -4.183466 -4.263334 -4.340920 -4.416484 -4.490313 -4.562718 -4.634037 -0.332607 0.342848 0.352126 0.360463 0.367899 0.374477 0.380153 0.384839 0.388568 0.391306 0.392844 0.392996 0.391547 0.388384 0.383308 0.376207 0.366973 0.355467 0.341565 0.325237 0.306477 0.285396 0.262126 0.236779 0.209455 0.180244 0.149228 0.116488 0.082105 0.046164 0.008736 -0.030115 -0.070322 -0.111861 -0.154710 -0.198827 -0.244173 -0.290719 -0.338439 -0.387320 -0.437352 -0.488534 -0.540869 -0.594361 -0.649012 -0.704818 -0.761767 -0.819842 -0.879012 -0.939239 -1.000480 -1.062688 -1.125807 -1.189780 -1.254547 -1.320056 -1.386258 -1.453095 -1.520509 -1.588431 -1.656777 -1.725433 -1.794233 -1.862950 -1.931299 -1.998953 -2.065561 -2.130804 -2.194455 -2.256392 -2.316617 -2.375312 -2.432813 -2.489558 -2.546072 -2.602960 -2.660843 -2.720315 -2.781937 -2.846228 -2.913641 -2.984580 -3.059422 -3.138465 -3.221856 -3.309603 -3.401509 -3.497091 -3.595553 -3.695909 -3.797100 -3.898055 -3.997759 -4.095408 -4.190517 -4.282840 -4.372309 -4.459004 -4.543129 -4.624941 -4.704723 -4.782787 -4.859478 -4.935166 -0.320994 0.331751 0.341491 0.350220 0.357977 0.364810 0.370697 0.375529 0.379330 0.382107 0.383669 0.383798 0.382283 0.379004 0.373746 0.366392 0.356813 0.344871 0.330421 0.313399 0.293790 0.271704 0.247285 0.220658 0.191933 0.161206 0.128569 0.094109 0.057916 0.020080 -0.019328 -0.060234 -0.102571 -0.146331 -0.191476 -0.237962 -0.285752 -0.334815 -0.385130 -0.436683 -0.489467 -0.543483 -0.598734 -0.655223 -0.712946 -0.771896 -0.832057 -0.893402 -0.955892 -1.019485 -1.084134 -1.149783 -1.216373 -1.283843 -1.352137 -1.421206 -1.491000 -1.561466 -1.632546 -1.704169 -1.776237 -1.848601 -1.921046 -1.993289 -2.065000 -2.135797 -2.205302 -2.273226 -2.339382 -2.403699 -2.466276 -2.527404 -2.587483 -2.647018 -2.706613 -2.766925 -2.828594 -2.892231 -2.958402 -3.027611 -3.100296 -3.176862 -3.257686 -3.343036 -3.433026 -3.527613 -3.626500 -3.729056 -3.834361 -3.941322 -4.048802 -4.155652 -4.260855 -4.363673 -4.463705 -4.560758 -4.654815 -4.746014 -4.834592 -4.920827 -5.005030 -5.087546 -5.168751 -5.249057 -0.308907 0.320154 0.330353 0.339478 0.347560 0.354647 0.360741 0.365717 0.369583 0.372381 0.373946 0.374025 0.372423 0.368991 0.363529 0.355889 0.345939 0.333531 0.318510 0.300767 0.280282 0.257156 0.231549 0.203597 0.173420 0.141124 0.106809 0.070569 0.032502 -0.007295 -0.048753 -0.091786 -0.136336 -0.182397 -0.229923 -0.278868 -0.329195 -0.380874 -0.433885 -0.488216 -0.543864 -0.600828 -0.659112 -0.718714 -0.779630 -0.841844 -0.905335 -0.970065 -1.035992 -1.103068 -1.171240 -1.240447 -1.310624 -1.381714 -1.453664 -1.526428 -1.599959 -1.674207 -1.749115 -1.824602 -1.900542 -1.976737 -2.052913 -2.128742 -2.203832 -2.277754 -2.350149 -2.420766 -2.489458 -2.556237 -2.621314 -2.685048 -2.747908 -2.810477 -2.873430 -2.937455 -3.003216 -3.071330 -3.142358 -3.216782 -3.295034 -3.377531 -3.464645 -3.556611 -3.653513 -3.755240 -3.861375 -3.971139 -4.083488 -4.197225 -4.311124 -4.423980 -4.534801 -4.642939 -4.748055 -4.850012 -4.948846 -5.044744 -5.137972 -5.228834 -5.317672 -5.404864 -5.490826 -5.576020 -0.296369 0.308064 0.318705 0.328226 0.336635 0.343977 0.350275 0.355392 0.359318 0.362123 0.363669 0.363678 0.361965 0.358347 0.352656 0.344696 0.334348 0.321442 0.305825 0.287334 0.265945 0.241743 0.214906 0.185582 0.153903 0.119985 0.083933 0.045851 0.005845 -0.035983 -0.079560 -0.124796 -0.171644 -0.220091 -0.270085 -0.321581 -0.374540 -0.428935 -0.484747 -0.541966 -0.600589 -0.660619 -0.722054 -0.784891 -0.849119 -0.914718 -0.981655 -1.049889 -1.119372 -1.190049 -1.261862 -1.334744 -1.408632 -1.483471 -1.559213 -1.635816 -1.713239 -1.791434 -1.870337 -1.949849 -2.029796 -2.109923 -2.189906 -2.269356 -2.347816 -2.424855 -2.500150 -2.573486 -2.644782 -2.714148 -2.781884 -2.848409 -2.914271 -2.980131 -3.046720 -3.114756 -3.184913 -3.257812 -3.333991 -3.413919 -3.498035 -3.586769 -3.680480 -3.779376 -3.883507 -3.992675 -4.106325 -4.223533 -4.343123 -4.463801 -4.584244 -4.703224 -4.819802 -4.933423 -5.043795 -5.150839 -5.254645 -5.355443 -5.453524 -5.549223 -5.642917 -5.735022 -5.826004 -5.916370 -0.283382 0.295505 0.306548 0.316454 0.325191 0.332790 0.339287 0.344543 0.348526 0.351324 0.352833 0.352757 0.350906 0.347077 0.341129 0.332815 0.322042 0.308603 0.292359 0.273093 0.250768 0.225455 0.197345 0.166604 0.133371 0.097773 0.059924 0.019937 -0.022074 -0.066006 -0.111775 -0.159292 -0.208523 -0.259442 -0.311995 -0.366135 -0.421825 -0.479039 -0.537760 -0.597979 -0.659695 -0.722907 -0.787614 -0.853806 -0.921468 -0.990571 -1.061075 -1.132932 -1.206090 -1.280489 -1.356061 -1.432742 -1.510470 -1.589195 -1.668874 -1.749471 -1.830951 -1.913262 -1.996329 -2.080014 -2.164086 -2.248235 -2.332080 -2.415157 -2.496979 -2.577144 -2.655364 -2.731474 -2.805478 -2.877578 -2.948140 -3.017655 -3.086751 -3.156169 -3.226682 -3.299026 -3.373883 -3.451861 -3.533476 -3.619194 -3.709472 -3.804751 -3.905372 -4.011522 -4.123204 -4.240113 -4.361543 -4.486428 -4.613455 -4.741227 -4.868342 -4.993578 -5.116071 -5.235342 -5.351154 -5.463476 -5.572455 -5.678355 -5.781499 -5.882255 -5.981036 -6.078306 -6.174586 -6.270425 -0.269955 0.282485 0.293898 0.304159 0.313219 0.321075 0.327767 0.333161 0.337197 0.339978 0.341429 0.341255 0.339239 0.335182 0.328940 0.320247 0.309016 0.295009 0.278105 0.258035 0.234743 0.208281 0.178856 0.146648 0.111808 0.074473 0.034766 -0.007192 -0.051278 -0.097385 -0.145423 -0.195302 -0.247003 -0.300483 -0.355688 -0.412569 -0.471091 -0.531230 -0.592970 -0.656304 -0.721230 -0.787745 -0.855845 -0.925515 -0.996732 -1.069459 -1.143650 -1.219252 -1.296207 -1.374448 -1.453904 -1.534512 -1.616217 -1.698970 -1.782740 -1.867498 -1.953204 -2.039804 -2.127197 -2.215190 -2.303492 -2.391736 -2.479470 -2.566169 -2.651361 -2.734678 -2.815869 -2.894839 -2.971683 -3.046672 -3.120237 -3.192952 -3.265529 -3.338780 -3.413506 -3.490456 -3.570310 -3.653650 -3.740979 -3.832777 -3.929519 -4.031652 -4.139503 -4.253238 -4.372796 -4.497747 -4.627226 -4.760014 -4.894666 -5.029680 -5.163602 -5.295240 -5.423821 -5.548922 -5.670362 -5.788162 -5.902518 -6.013729 -6.122152 -6.228191 -6.332304 -6.435010 -6.536883 -6.638505 -0.256105 0.269002 0.280772 0.291346 0.300711 0.308823 0.315707 0.321235 0.325320 0.328075 0.329453 0.329166 0.326959 0.322656 0.316084 0.306991 0.295265 0.280657 0.263054 0.242152 0.217860 0.190211 0.159427 0.125702 0.089200 0.050068 0.008440 -0.035556 -0.081786 -0.130145 -0.180530 -0.232857 -0.287114 -0.343246 -0.401197 -0.460919 -0.522379 -0.585552 -0.650423 -0.716988 -0.785243 -0.855183 -0.926798 -1.000068 -1.074962 -1.151436 -1.229437 -1.308908 -1.389782 -1.471988 -1.555457 -1.640129 -1.725952 -1.812887 -1.900912 -1.989999 -2.080107 -2.171169 -2.263038 -2.355458 -2.448081 -2.540472 -2.632099 -2.722429 -2.811016 -2.897524 -2.981761 -3.063712 -3.143534 -3.221571 -3.298330 -3.374466 -3.450785 -3.528149 -3.607380 -3.689230 -3.774364 -3.863341 -3.956665 -4.054834 -4.158343 -4.267647 -4.383059 -4.504718 -4.632480 -4.765773 -4.903566 -5.044475 -5.186934 -5.329340 -5.470211 -5.608416 -5.743265 -5.874385 -6.001649 -6.125131 -6.245074 -6.361812 -6.475738 -6.587299 -6.697004 -6.805432 -6.913203 -7.020931 -0.241875 0.255074 0.267166 0.278031 0.287666 0.296025 0.303097 0.308757 0.312888 0.315606 0.316900 0.316482 0.314064 0.309492 0.302560 0.293039 0.280782 0.265544 0.247203 0.225436 0.200110 0.171234 0.139045 0.103751 0.065532 0.024543 -0.019073 -0.065174 -0.113621 -0.164308 -0.217119 -0.271984 -0.328887 -0.387765 -0.448560 -0.511226 -0.575728 -0.642046 -0.710165 -0.780079 -0.851784 -0.925271 -1.000525 -1.077519 -1.156213 -1.236556 -1.318492 -1.401956 -1.486875 -1.573176 -1.660792 -1.749669 -1.839760 -1.931039 -2.023488 -2.117080 -2.211768 -2.307456 -2.403937 -2.500891 -2.597908 -2.694470 -2.790001 -2.883987 -2.976008 -3.065773 -3.153161 -3.238219 -3.321166 -3.402422 -3.482572 -3.562367 -3.642696 -3.724458 -3.808482 -3.895521 -3.986209 -4.081093 -4.180694 -4.285529 -4.396115 -4.512912 -4.636226 -4.766155 -4.902453 -5.044386 -5.190750 -5.339994 -5.490435 -5.640387 -5.788366 -5.933316 -6.074620 -6.211957 -6.345247 -6.474620 -6.600364 -6.722852 -6.842515 -6.959849 -7.075423 -7.189871 -7.303858 -7.418027 -0.227327 0.240729 0.253085 0.264225 0.274089 0.282675 0.289930 0.295718 0.299890 0.302566 0.303764 0.303196 0.300553 0.295683 0.288368 0.278385 0.265560 0.249664 0.230543 0.207879 0.181481 0.151339 0.117697 0.080782 0.040787 -0.002122 -0.047791 -0.096069 -0.146809 -0.199899 -0.255220 -0.312714 -0.372354 -0.434074 -0.497813 -0.563526 -0.631182 -0.700757 -0.772241 -0.845624 -0.920902 -0.998060 -1.077077 -1.157919 -1.240537 -1.324876 -1.410873 -1.498456 -1.587548 -1.678077 -1.769982 -1.863210 -1.957727 -2.053518 -2.150567 -2.248842 -2.348288 -2.448755 -2.549969 -2.651552 -2.753013 -2.853760 -2.953222 -3.050903 -3.146415 -3.239530 -3.330191 -3.418488 -3.504713 -3.589367 -3.673119 -3.756823 -3.841439 -3.927881 -4.016987 -4.109489 -4.205998 -4.307064 -4.413226 -4.525025 -4.643004 -4.767627 -4.899191 -5.037745 -5.182911 -5.333779 -5.488962 -5.646752 -5.805349 -5.963005 -6.118265 -6.270151 -6.418106 -6.561861 -6.701385 -6.836863 -6.968631 -7.097099 -7.222743 -7.346117 -7.467850 -7.588630 -7.709162 -7.830114 -0.212501 0.226016 0.238552 0.249921 0.259996 0.268770 0.276197 0.282109 0.286319 0.288945 0.290036 0.289301 0.286418 0.281223 0.273504 0.263023 0.249600 0.233009 0.213068 0.189471 0.161964 0.130513 0.095369 0.056780 0.014949 -0.029944 -0.077736 -0.128262 -0.181371 -0.236945 -0.294861 -0.355076 -0.417548 -0.482207 -0.548993 -0.617861 -0.688780 -0.761729 -0.836696 -0.913671 -0.992644 -1.073599 -1.156504 -1.241319 -1.327988 -1.416451 -1.506636 -1.598467 -1.691864 -1.786760 -1.883098 -1.980832 -2.079942 -2.180420 -2.282246 -2.385388 -2.489758 -2.595143 -2.701204 -2.807491 -2.913426 -3.018387 -3.121819 -3.223248 -3.322333 -3.418913 -3.512970 -3.604644 -3.694311 -3.782549 -3.870126 -3.958004 -4.047182 -4.138588 -4.233056 -4.331290 -4.433884 -4.541406 -4.654418 -4.773484 -4.899179 -5.031974 -5.172148 -5.319683 -5.474048 -5.634140 -5.798384 -5.964926 -6.131856 -6.297384 -6.460110 -6.619132 -6.773942 -6.924321 -7.070291 -7.212097 -7.350118 -7.484805 -7.616688 -7.746383 -7.874577 -8.002011 -8.129426 -8.257511 -0.197408 0.210977 0.223602 0.235125 0.245393 0.254316 0.261894 0.267923 0.272164 0.274736 0.275709 0.274789 0.271652 0.266105 0.257960 0.246948 0.232897 0.215572 0.194769 0.170202 0.141547 0.108743 0.072049 0.031728 -0.012000 -0.058943 -0.108927 -0.161776 -0.217334 -0.275474 -0.336073 -0.399102 -0.464502 -0.532200 -0.602137 -0.674269 -0.748565 -0.825005 -0.903575 -0.984265 -1.067060 -1.151936 -1.238857 -1.327772 -1.418620 -1.511335 -1.605839 -1.702048 -1.799888 -1.899295 -2.000217 -2.102620 -2.206495 -2.311836 -2.418623 -2.526812 -2.636263 -2.746695 -2.857702 -2.968747 -3.079186 -3.188402 -3.295857 -3.401106 -3.503871 -3.604040 -3.701618 -3.796816 -3.890093 -3.982111 -4.073755 -4.166075 -4.260094 -4.356744 -4.456845 -4.561069 -4.670016 -4.784274 -4.904426 -5.031069 -5.164813 -5.306135 -5.455291 -5.612166 -5.776055 -5.945654 -6.119196 -6.294693 -6.470137 -6.643719 -6.814109 -6.980472 -7.142346 -7.299560 -7.452197 -7.600560 -7.745069 -7.886226 -8.024620 -8.160928 -8.295897 -8.430319 -8.564965 -8.700531 -0.182005 0.195633 0.208280 0.219865 0.230273 0.239324 0.247017 0.253151 0.257419 0.259930 0.260774 0.259653 0.256247 0.250324 0.241730 0.230153 0.215444 0.197347 0.175639 0.150061 0.120218 0.086017 0.047719 0.005609 -0.040078 -0.089138 -0.141386 -0.196635 -0.254722 -0.315512 -0.378887 -0.444823 -0.513248 -0.584088 -0.657283 -0.732790 -0.810578 -0.890628 -0.972924 -1.057454 -1.144197 -1.233122 -1.324185 -1.417329 -1.512487 -1.609584 -1.708537 -1.809261 -1.911686 -2.015753 -2.121416 -2.228657 -2.337474 -2.447860 -2.559794 -2.673202 -2.787879 -2.903478 -3.019513 -3.135357 -3.250341 -3.363867 -3.475412 -3.584576 -3.691144 -3.795024 -3.896254 -3.995129 -4.092190 -4.188198 -4.284165 -4.381198 -4.480333 -4.582505 -4.688499 -4.798973 -4.914543 -5.035819 -5.163404 -5.297944 -5.440081 -5.590296 -5.748815 -5.915389 -6.089120 -6.268501 -6.451577 -6.636233 -6.820376 -7.002209 -7.180469 -7.354383 -7.523535 -7.687802 -7.847333 -8.002489 -8.153732 -8.301621 -8.446810 -8.590036 -8.732106 -8.873857 -9.016086 -9.159479 +0.006673 0.008232 0.009813 0.011426 0.013077 0.014771 0.016508 0.018292 0.020122 0.021997 0.023918 0.025882 0.027887 0.029930 0.032006 0.034111 0.036239 0.038384 0.040540 0.042700 0.044858 0.047006 0.049138 0.051247 0.053326 0.055368 0.057366 0.059313 0.061205 0.063035 0.064796 0.066484 0.068092 0.069616 0.071051 0.072391 0.073631 0.074767 0.075796 0.076714 0.077520 0.078213 0.078793 0.079257 0.079607 0.079841 0.079960 0.079962 0.079851 0.079632 0.079303 0.078871 0.078341 0.077715 0.076993 0.076178 0.075269 0.074262 0.073154 0.071942 +0.020093 0.023458 0.026879 0.030353 0.033876 0.037440 0.041034 0.044646 0.048264 0.051877 0.055472 0.059037 0.062560 0.066030 0.069438 0.072772 0.076024 0.079185 0.082246 0.085201 0.088041 0.090759 0.093349 0.095803 0.098111 0.100267 0.102262 0.104091 0.105746 0.107224 0.108521 0.109635 0.110563 0.111305 0.111865 0.112240 0.112435 0.112456 0.112304 0.111983 0.111503 0.110870 0.110082 0.109139 0.108043 0.106791 0.105376 0.103794 0.102031 0.100071 0.097898 0.095508 0.092907 0.090101 0.087092 0.083887 0.080496 0.076926 0.073183 0.069272 +0.048757 0.054358 0.059921 0.065434 0.070879 0.076242 0.081507 0.086659 0.091686 0.096575 0.101314 0.105894 0.110305 0.114538 0.118583 0.122431 0.126073 0.129497 0.132692 0.135647 0.138350 0.140792 0.142964 0.144862 0.146489 0.147849 0.148944 0.149780 0.150362 0.150689 0.150761 0.150584 0.150158 0.149481 0.148560 0.147399 0.145993 0.144332 0.142397 0.140162 0.137607 0.134728 0.131540 0.128046 0.124241 0.120135 0.115747 0.111088 0.106162 0.100977 0.095542 0.089878 0.084011 0.077963 0.071754 0.065400 0.058916 0.052316 0.045611 0.038813 +0.090123 0.097593 0.104877 0.111963 0.118836 0.125484 0.131894 0.138056 0.143960 0.149596 0.154953 0.160020 0.164780 0.169215 0.173312 0.177055 0.180438 0.183463 0.186134 0.188453 0.190421 0.192038 0.193294 0.194177 0.194678 0.194796 0.194534 0.193895 0.192872 0.191448 0.189595 0.187279 0.184490 0.181249 0.177562 0.173422 0.168848 0.163866 0.158486 0.152708 0.146540 0.140009 0.133154 0.126003 0.118581 0.110911 0.103012 0.094905 0.086606 0.078132 0.069499 0.060720 0.051807 0.042773 0.033628 0.024379 0.015033 0.005593 -0.003935 -0.013542 +0.139124 0.148068 0.156683 0.164964 0.172901 0.180483 0.187702 0.194545 0.200999 0.207057 0.212709 0.217944 0.222753 0.227130 0.231064 0.234540 0.237530 0.240009 0.241950 0.243324 0.244105 0.244277 0.243810 0.242667 0.240834 0.238334 0.235185 0.231387 0.226970 0.221974 0.216406 0.210270 0.203596 0.196433 0.188826 0.180813 0.172423 0.163680 0.154596 0.145188 0.135473 0.125468 0.115192 0.104662 0.093900 0.082925 0.071756 0.060409 0.048901 0.037244 0.025448 0.013520 0.001458 -0.010738 -0.023067 -0.035520 -0.048079 -0.060714 -0.073394 -0.086081 +0.191782 0.202017 0.211839 0.221257 0.230276 0.238886 0.247076 0.254827 0.262109 0.268883 0.275108 0.280728 0.285675 0.289866 0.293225 0.295673 0.297120 0.297523 0.296898 0.295282 0.292698 0.289211 0.284905 0.279806 0.273940 0.267362 0.260137 0.252325 0.243968 0.235104 0.225765 0.215975 0.205747 0.195099 0.184044 0.172594 0.160751 0.148531 0.135955 0.123045 0.109826 0.096324 0.082563 0.068565 0.054349 0.039931 0.025323 0.010531 -0.004446 -0.019615 -0.034984 -0.050555 -0.066317 -0.082239 -0.098275 -0.114365 -0.130442 -0.146438 -0.162296 -0.177964 +0.246353 0.258535 0.270341 0.281739 0.292682 0.303086 0.312827 0.321778 0.329812 0.336766 0.342452 0.346750 0.349588 0.350936 0.350796 0.349261 0.346468 0.342512 0.337517 0.331617 0.324917 0.317486 0.309376 0.300628 0.291272 0.281333 0.270832 0.259781 0.248190 0.236072 0.223439 0.210294 0.196656 0.182542 0.167952 0.152901 0.137415 0.121524 0.105259 0.088650 0.071726 0.054509 0.037018 0.019268 0.001262 -0.017001 -0.035533 -0.054348 -0.073456 -0.092852 -0.112507 -0.132362 -0.152329 -0.172296 -0.192145 -0.211771 -0.231094 -0.250061 -0.268667 -0.286970 +0.306243 0.321346 0.335683 0.349077 0.361286 0.372125 0.381426 0.388993 0.394666 0.398340 0.400011 0.399772 0.397807 0.394382 0.389766 0.384156 0.377676 0.370393 0.362345 0.353560 0.344063 0.333874 0.323009 0.311479 0.299287 0.286434 0.272921 0.258750 0.243930 0.228475 0.212388 0.195693 0.178407 0.160534 0.142107 0.123163 0.103741 0.083878 0.063607 0.042956 0.021945 0.000587 -0.021117 -0.043176 -0.065611 -0.088442 -0.111678 -0.135309 -0.159287 -0.183520 -0.207873 -0.232173 -0.256248 -0.279945 -0.303158 -0.325827 -0.347971 -0.369705 -0.391262 -0.412935 +0.368062 0.383807 0.397982 0.410371 0.420678 0.428665 0.434161 0.437196 0.438041 0.437071 0.434596 0.430880 0.426094 0.420359 0.413722 0.406207 0.397833 0.388615 0.378568 0.367703 0.356023 0.343527 0.330207 0.316055 0.301063 0.285225 0.268542 0.251030 0.232706 0.213585 0.193700 0.173080 0.151740 0.129725 0.107083 0.083863 0.060108 0.035853 0.011125 -0.014063 -0.039710 -0.065831 -0.092454 -0.119604 -0.147289 -0.175499 -0.204180 -0.233212 -0.262421 -0.291590 -0.320480 -0.348856 -0.376558 -0.403501 -0.429701 -0.455310 -0.480649 -0.506137 -0.532192 -0.559071 +0.413915 0.427058 0.437699 0.445922 0.451902 0.455869 0.458070 0.458719 0.457967 0.455979 0.452866 0.448704 0.443478 0.437192 0.429833 0.421406 0.411921 0.401383 0.389793 0.377143 0.363427 0.348637 0.332762 0.315796 0.297737 0.278593 0.258384 0.237143 0.214897 0.191699 0.167596 0.142611 0.116800 0.090223 0.062939 0.034999 0.006435 -0.022730 -0.052490 -0.082859 -0.113873 -0.145563 -0.177938 -0.210991 -0.244676 -0.278878 -0.313397 -0.347990 -0.382360 -0.416171 -0.449143 -0.481129 -0.512100 -0.542199 -0.571792 -0.601400 -0.631581 -0.662858 -0.695509 -0.729432 +0.427324 0.436642 0.444280 0.450490 0.455448 0.459282 0.462056 0.463804 0.464498 0.464022 0.462253 0.459125 0.454597 0.448659 0.441298 0.432496 0.422256 0.410593 0.397517 0.383032 0.367139 0.349836 0.331124 0.311013 0.289519 0.266671 0.242518 0.217117 0.190536 0.162847 0.134077 0.104292 0.073568 0.041975 0.009566 -0.023623 -0.057573 -0.092287 -0.127803 -0.164159 -0.201376 -0.239448 -0.278345 -0.317981 -0.358171 -0.398656 -0.439117 -0.479156 -0.518328 -0.556326 -0.593032 -0.628509 -0.663068 -0.697272 -0.731776 -0.767305 -0.804602 -0.844026 -0.885395 -0.928069 +0.413889 0.422382 0.430080 0.437246 0.443986 0.450198 0.455667 0.460169 0.463490 0.465456 0.465861 0.464541 0.461379 0.456308 0.449315 0.440385 0.429515 0.416742 0.402103 0.385624 0.367325 0.347224 0.325347 0.301724 0.276400 0.249437 0.220931 0.190965 0.159637 0.126994 0.093102 0.058054 0.021935 -0.015195 -0.053297 -0.092353 -0.132381 -0.173430 -0.215535 -0.258703 -0.302917 -0.348116 -0.394172 -0.440851 -0.487834 -0.534719 -0.580989 -0.626097 -0.669719 -0.711769 -0.752399 -0.792065 -0.831452 -0.871377 -0.912845 -0.956832 -1.003839 -1.053712 -1.105589 -1.157942 +0.390738 0.400360 0.409602 0.418596 0.427384 0.435873 0.443933 0.451268 0.457445 0.462118 0.465005 0.465848 0.464411 0.460553 0.454181 0.445286 0.433864 0.419956 0.403639 0.384976 0.364016 0.340815 0.315425 0.287912 0.258360 0.226890 0.193623 0.158676 0.122136 0.084062 0.044567 0.003751 -0.038313 -0.081577 -0.126023 -0.171682 -0.218606 -0.266826 -0.316340 -0.367115 -0.419059 -0.472010 -0.525699 -0.579747 -0.633667 -0.686835 -0.738622 -0.788647 -0.836834 -0.883378 -0.928785 -0.973867 -1.019688 -1.067499 -1.118620 -1.173918 -1.233318 -1.295643 -1.358741 -1.420196 +0.363054 0.375005 0.386720 0.398140 0.409228 0.419901 0.429996 0.439369 0.447852 0.455065 0.460425 0.463528 0.463989 0.461544 0.456010 0.447287 0.435373 0.420293 0.402165 0.381108 0.357222 0.330602 0.301344 0.269564 0.235402 0.199023 0.160566 0.120178 0.077923 0.033922 -0.011703 -0.058857 -0.107479 -0.157552 -0.209107 -0.262202 -0.316861 -0.373081 -0.430808 -0.489920 -0.550233 -0.611454 -0.673151 -0.734763 -0.795604 -0.854950 -0.912315 -0.967576 -1.020857 -1.072658 -1.123956 -1.176043 -1.230487 -1.289087 -1.353172 -1.422769 -1.496497 -1.571675 -1.645302 -1.715018 +0.332023 0.346904 0.361556 0.375753 0.389367 0.402369 0.414649 0.425988 0.436246 0.445302 0.452807 0.458044 0.460431 0.459481 0.454894 0.446450 0.434075 0.417776 0.397696 0.374029 0.346937 0.316572 0.283092 0.246669 0.207494 0.165768 0.121668 0.075329 0.026850 -0.023617 -0.075950 -0.130068 -0.185943 -0.243605 -0.303110 -0.364486 -0.427726 -0.492758 -0.559435 -0.627554 -0.696810 -0.766737 -0.836734 -0.906076 -0.973950 -1.039720 -1.103096 -1.164038 -1.222996 -1.281053 -1.339770 -1.401135 -1.467400 -1.540381 -1.620400 -1.706144 -1.794614 -1.882156 -1.965735 -2.043742 +0.297995 0.316021 0.333854 0.351108 0.367528 0.383060 0.397656 0.411122 0.423215 0.433838 0.442899 0.449901 0.454053 0.454561 0.450936 0.442819 0.429986 0.412415 0.390235 0.363729 0.333142 0.298704 0.260640 0.219175 0.174562 0.127028 0.076794 0.023972 -0.031277 -0.088793 -0.148468 -0.210254 -0.274167 -0.340263 -0.408575 -0.479093 -0.551737 -0.626339 -0.702675 -0.780434 -0.859149 -0.938209 -1.016871 -1.094266 -1.169580 -1.242227 -1.311915 -1.378939 -1.444423 -1.510230 -1.578792 -1.652747 -1.734397 -1.824636 -1.922541 -2.025159 -2.128205 -2.227776 -2.321411 -2.408660 +0.261597 0.282686 0.303619 0.324039 0.343502 0.361801 0.378889 0.394605 0.408674 0.420901 0.431280 0.439602 0.445167 0.446986 0.444233 0.436413 0.423112 0.404196 0.379761 0.350179 0.315806 0.276958 0.233927 0.187001 0.136491 0.082669 0.025768 -0.034083 -0.096686 -0.161889 -0.229613 -0.299849 -0.372646 -0.448043 -0.526034 -0.606537 -0.689370 -0.774290 -0.860978 -0.948986 -1.037730 -1.126473 -1.214335 -1.300336 -1.383513 -1.463216 -1.539437 -1.613237 -1.686737 -1.762787 -1.844401 -1.934314 -2.034203 -2.143851 -2.260837 -2.380548 -2.498120 -2.609888 -2.714447 -2.812213 +0.223751 0.247423 0.271311 0.294746 0.317227 0.338460 0.358217 0.376326 0.392491 0.406405 0.418111 0.427478 0.434088 0.436949 0.434927 0.427276 0.413446 0.393090 0.366239 0.333342 0.294883 0.251269 0.202866 0.150036 0.093151 0.032543 -0.031589 -0.099055 -0.169648 -0.243241 -0.319787 -0.399315 -0.481868 -0.567451 -0.655988 -0.747293 -0.841105 -0.937092 -1.034831 -1.133787 -1.233270 -1.332426 -1.430180 -1.525198 -1.616348 -1.703164 -1.786462 -1.868477 -1.952417 -2.041710 -2.139500 -2.248231 -2.368690 -2.499440 -2.636225 -2.773342 -2.905702 -3.030419 -3.147086 -3.256787 +0.185578 0.211384 0.237532 0.263612 0.288993 0.313032 0.335546 0.356192 0.374551 0.390255 0.403289 0.413633 0.421002 0.424581 0.423063 0.415431 0.400961 0.379056 0.349628 0.313171 0.270309 0.221553 0.167352 0.108158 0.044405 -0.023539 -0.095487 -0.171196 -0.250473 -0.333217 -0.419415 -0.509110 -0.602317 -0.698977 -0.798913 -0.901850 -1.007440 -1.115268 -1.224860 -1.335606 -1.446724 -1.557133 -1.665242 -1.769373 -1.868434 -1.962750 -2.054428 -2.146905 -2.244050 -2.349485 -2.466255 -2.596280 -2.739406 -2.892593 -3.049892 -3.204882 -3.352672 -3.491425 -3.621561 -3.744691 +0.147095 0.174970 0.203239 0.231399 0.259075 0.285798 0.310894 0.334105 0.354752 0.372334 0.386719 0.398034 0.405978 0.410020 0.408744 0.400923 0.385629 0.362055 0.329881 0.289605 0.242007 0.187713 0.127271 0.061233 -0.009910 -0.085775 -0.166158 -0.250791 -0.339498 -0.432205 -0.528928 -0.629697 -0.734472 -0.843099 -0.955298 -1.070713 -1.188911 -1.309458 -1.431845 -1.555409 -1.679152 -1.801410 -1.920015 -2.033135 -2.140330 -2.243249 -2.345296 -2.450757 -2.563821 -2.688095 -2.826409 -2.980057 -3.147779 -3.324589 -3.503220 -3.676702 -3.840906 -3.994974 -4.140058 -4.278165 +0.109921 0.138474 0.168465 0.198636 0.228283 0.256964 0.284493 0.310063 0.333003 0.352535 0.368316 0.380579 0.389001 0.393289 0.392004 0.383778 0.367452 0.342047 0.306944 0.262575 0.209888 0.149643 0.082498 0.009108 -0.069969 -0.154379 -0.243863 -0.338148 -0.437077 -0.540610 -0.648769 -0.761543 -0.878808 -1.000297 -1.125646 -1.254409 -1.386141 -1.520417 -1.656724 -1.794237 -1.931386 -2.065753 -2.194733 -2.316934 -2.433122 -2.546326 -2.661010 -2.782001 -2.913585 -3.059222 -3.221522 -3.401112 -3.595200 -3.796876 -3.997663 -4.190496 -4.372318 -4.543140 -4.704715 -4.859431 +0.075556 0.103723 0.133907 0.165330 0.196815 0.227280 0.256499 0.284247 0.309270 0.330763 0.347981 0.361170 0.370019 0.374392 0.372880 0.363997 0.346417 0.318994 0.280755 0.232004 0.173858 0.107229 0.032901 -0.048376 -0.135979 -0.229588 -0.328881 -0.433590 -0.543585 -0.658850 -0.779386 -0.905111 -1.035790 -1.171061 -1.310469 -1.453531 -1.599847 -1.749032 -1.900506 -2.052951 -2.203972 -2.350395 -2.489774 -2.621652 -2.748220 -2.873670 -3.003362 -3.142397 -3.294941 -3.464396 -3.653136 -3.860958 -4.083147 -4.310923 -4.534716 -4.748034 -4.948847 -5.137970 -5.317645 -5.490751 +0.045437 0.071588 0.101086 0.132394 0.164731 0.196799 0.227521 0.256779 0.283675 0.306945 0.325613 0.339718 0.348964 0.353279 0.351362 0.341596 0.322521 0.292845 0.251245 0.197806 0.133815 0.060349 -0.021672 -0.111393 -0.208162 -0.311656 -0.421508 -0.537461 -0.659413 -0.787350 -0.921225 -1.060853 -1.205892 -1.355887 -1.510319 -1.668744 -1.830843 -1.996256 -2.164074 -2.332161 -2.497172 -2.655653 -2.805822 -2.948494 -3.087060 -3.226908 -3.374013 -3.533490 -3.709339 -3.905075 -4.122787 -4.361112 -4.613131 -4.868160 -5.115993 -5.351129 -5.572447 -5.781483 -5.980987 -6.174479 +0.020095 0.043590 0.070625 0.100946 0.132961 0.165550 0.197686 0.228061 0.256313 0.281113 0.301131 0.316140 0.325760 0.329900 0.327415 0.316551 0.295744 0.263542 0.218342 0.159893 0.089649 0.008870 -0.081378 -0.180142 -0.286748 -0.400854 -0.522056 -0.650120 -0.784958 -0.926532 -1.074719 -1.229217 -1.389587 -1.555287 -1.725804 -1.900784 -2.080005 -2.262980 -2.448103 -2.632228 -2.811255 -2.982086 -3.143907 -3.298695 -3.451088 -3.607597 -3.774480 -3.956652 -4.158169 -4.382714 -4.632027 -4.903130 -5.186626 -5.470040 -5.743189 -6.001619 -6.245055 -6.475706 -6.696930 -6.913061 +-0.001687 0.019511 0.043909 0.071530 0.102330 0.134410 0.166837 0.198432 0.227413 0.253359 0.274487 0.290363 0.300332 0.304212 0.301010 0.288835 0.266040 0.231032 0.181968 0.118169 0.041242 -0.047355 -0.146395 -0.254826 -0.371984 -0.497465 -0.630855 -0.771933 -0.920613 -1.076810 -1.240294 -1.410655 -1.587356 -1.769814 -1.957580 -2.150441 -2.348192 -2.549934 -2.753074 -2.953396 -3.146694 -3.330549 -3.505110 -3.673491 -3.841738 -4.017198 -4.206100 -4.413187 -4.642786 -4.898798 -5.182427 -5.488527 -5.805056 -6.118101 -6.418029 -6.701347 -6.968601 -7.222692 -7.467747 -7.708985 +-0.020991 -0.001545 0.020364 0.045321 0.073330 0.103981 0.135754 0.167589 0.197326 0.223779 0.245733 0.262323 0.272607 0.276159 0.272110 0.258429 0.233378 0.195259 0.142039 0.072526 -0.011538 -0.108485 -0.216915 -0.335674 -0.464126 -0.601784 -0.748233 -0.903263 -1.066769 -1.238589 -1.418378 -1.605623 -1.799699 -2.000051 -2.206350 -2.418500 -2.636179 -2.857697 -3.079288 -3.296071 -3.504186 -3.702011 -3.890511 -4.074130 -4.260392 -4.457052 -4.670103 -4.904358 -5.164549 -5.454851 -5.775547 -6.118766 -6.469853 -6.813950 -7.142266 -7.452152 -7.745026 -8.024547 -8.295764 -8.564753 # Thrust coefficient -0.234686 0.234877 0.235022 0.235122 0.235174 0.235179 0.235135 0.235043 0.234902 0.234712 0.234472 0.234184 0.233847 0.233461 0.233026 0.232545 0.232016 0.231442 0.230822 0.230158 0.229451 0.228701 0.227911 0.227080 0.226211 0.225304 0.224361 0.223382 0.222371 0.221328 0.220256 0.219158 0.218035 0.216890 0.215723 0.214537 0.213333 0.212113 0.210877 0.209627 0.208361 0.207078 0.205778 0.204458 0.203119 0.201761 0.200380 0.198974 0.197541 0.196078 0.194583 0.193057 0.191497 0.189901 0.188267 0.186593 0.184875 0.183111 0.181299 0.179433 0.177510 0.175523 0.173470 0.171347 0.169153 0.166888 0.164555 0.162158 0.159699 0.157177 0.154591 0.151941 0.149230 0.146460 0.143632 0.140753 0.137823 0.134845 0.131820 0.128748 0.125630 0.122469 0.119264 0.116016 0.112727 0.109399 0.106036 0.102641 0.099217 0.095766 0.092289 0.088789 0.085268 0.081727 0.078168 0.074593 0.071003 0.067399 0.063784 0.060158 0.056522 0.052879 0.049229 0.045573 -0.267586 0.267493 0.267339 0.267124 0.266848 0.266511 0.266114 0.265658 0.265144 0.264572 0.263944 0.263261 0.262524 0.261734 0.260894 0.260003 0.259064 0.258079 0.257049 0.255977 0.254865 0.253715 0.252531 0.251316 0.250073 0.248806 0.247516 0.246208 0.244882 0.243541 0.242185 0.240815 0.239431 0.238033 0.236617 0.235184 0.233730 0.232256 0.230759 0.229234 0.227681 0.226094 0.224474 0.222817 0.221122 0.219386 0.217604 0.215774 0.213891 0.211950 0.209945 0.207873 0.205728 0.203502 0.201191 0.198793 0.196310 0.193744 0.191098 0.188375 0.185574 0.182696 0.179740 0.176710 0.173608 0.170441 0.167210 0.163918 0.160565 0.157152 0.153680 0.150149 0.146562 0.142920 0.139226 0.135484 0.131697 0.127870 0.124005 0.120105 0.116172 0.112209 0.108218 0.104201 0.100159 0.096096 0.092011 0.087908 0.083787 0.079651 0.075500 0.071336 0.067161 0.062975 0.058781 0.054579 0.050370 0.046155 0.041936 0.037714 0.033489 0.029262 0.025034 0.020807 -0.301090 0.300607 0.300054 0.299432 0.298742 0.297986 0.297165 0.296280 0.295333 0.294327 0.293264 0.292147 0.290979 0.289762 0.288502 0.287200 0.285863 0.284495 0.283101 0.281685 0.280250 0.278798 0.277332 0.275853 0.274361 0.272858 0.271342 0.269811 0.268263 0.266695 0.265106 0.263491 0.261849 0.260176 0.258468 0.256723 0.254938 0.253109 0.251232 0.249301 0.247311 0.245256 0.243126 0.240914 0.238612 0.236212 0.233708 0.231099 0.228388 0.225580 0.222677 0.219678 0.216584 0.213393 0.210108 0.206732 0.203272 0.199736 0.196124 0.192439 0.188680 0.184849 0.180946 0.176973 0.172930 0.168823 0.164657 0.160436 0.156164 0.151846 0.147484 0.143081 0.138640 0.134163 0.129653 0.125112 0.120542 0.115945 0.111323 0.106678 0.102011 0.097324 0.092618 0.087896 0.083158 0.078406 0.073642 0.068865 0.064079 0.059284 0.054482 0.049674 0.044860 0.040043 0.035222 0.030400 0.025577 0.020753 0.015930 0.011109 0.006289 0.001472 -0.003341 -0.008148 -0.334730 0.333794 0.332785 0.331705 0.330557 0.329344 0.328072 0.326744 0.325366 0.323943 0.322481 0.320988 0.319467 0.317924 0.316364 0.314787 0.313199 0.311600 0.309991 0.308374 0.306745 0.305102 0.303441 0.301761 0.300058 0.298329 0.296570 0.294778 0.292947 0.291074 0.289154 0.287181 0.285150 0.283051 0.280874 0.278609 0.276244 0.273768 0.271174 0.268458 0.265621 0.262664 0.259592 0.256402 0.253091 0.249660 0.246113 0.242458 0.238703 0.234852 0.230909 0.226876 0.222749 0.218530 0.214222 0.209831 0.205360 0.200815 0.196204 0.191531 0.186800 0.182012 0.177171 0.172280 0.167343 0.162363 0.157341 0.152282 0.147186 0.142056 0.136895 0.131705 0.126486 0.121242 0.115973 0.110682 0.105369 0.100037 0.094687 0.089320 0.083938 0.078543 0.073135 0.067717 0.062290 0.056855 0.051413 0.045966 0.040516 0.035063 0.029608 0.024152 0.018697 0.013242 0.007789 0.002338 -0.003110 -0.008553 -0.013990 -0.019420 -0.024842 -0.030253 -0.035651 -0.041034 -0.368288 0.366893 0.365440 0.363936 0.362387 0.360800 0.359181 0.357538 0.355875 0.354198 0.352510 0.350813 0.349109 0.347399 0.345680 0.343949 0.342204 0.340442 0.338658 0.336849 0.335010 0.333135 0.331219 0.329255 0.327238 0.325161 0.323013 0.320781 0.318451 0.316009 0.313442 0.310741 0.307902 0.304925 0.301810 0.298555 0.295157 0.291613 0.287925 0.284100 0.280146 0.276072 0.271881 0.267574 0.263152 0.258615 0.253970 0.249221 0.244374 0.239438 0.234418 0.229320 0.224149 0.218913 0.213616 0.208261 0.202852 0.197395 0.191886 0.186330 0.180727 0.175082 0.169396 0.163672 0.157911 0.152117 0.146291 0.140434 0.134548 0.128636 0.122698 0.116737 0.110755 0.104752 0.098730 0.092692 0.086639 0.080571 0.074492 0.068402 0.062304 0.056198 0.050087 0.043971 0.037852 0.031731 0.025609 0.019486 0.013364 0.007242 0.001123 -0.004994 -0.011106 -0.017213 -0.023313 -0.029405 -0.035487 -0.041556 -0.047609 -0.053645 -0.059660 -0.065650 -0.071614 -0.077545 -0.402146 0.400435 0.398701 0.396950 0.395188 0.393418 0.391644 0.389866 0.388084 0.386297 0.384500 0.382690 0.380864 0.379014 0.377134 0.375219 0.373261 0.371253 0.369187 0.367055 0.364840 0.362525 0.360095 0.357534 0.354830 0.351976 0.348968 0.345804 0.342478 0.338983 0.335315 0.331477 0.327475 0.323319 0.319018 0.314573 0.309984 0.305253 0.300383 0.295379 0.290249 0.285001 0.279645 0.274188 0.268641 0.263009 0.257298 0.251515 0.245665 0.239748 0.233770 0.227737 0.221650 0.215514 0.209331 0.203103 0.196830 0.190512 0.184151 0.177750 0.171311 0.164836 0.158326 0.151784 0.145211 0.138610 0.131982 0.125329 0.118653 0.111955 0.105238 0.098503 0.091752 0.084986 0.078208 0.071420 0.064622 0.057817 0.051006 0.044190 0.037371 0.030550 0.023727 0.016903 0.010080 0.003257 -0.003564 -0.010382 -0.017197 -0.024006 -0.030808 -0.037601 -0.044384 -0.051152 -0.057904 -0.064636 -0.071346 -0.078029 -0.084682 -0.091299 -0.097875 -0.104406 -0.110884 -0.117304 -0.437429 0.435609 0.433792 0.431976 0.430158 0.428335 0.426502 0.424652 0.422777 0.420868 0.418919 0.416920 0.414863 0.412733 0.410514 0.408184 0.405727 0.403128 0.400374 0.397457 0.394372 0.391110 0.387660 0.384014 0.380168 0.376127 0.371898 0.367492 0.362912 0.358158 0.353230 0.348132 0.342872 0.337459 0.331902 0.326212 0.320399 0.314473 0.308440 0.302308 0.296084 0.289774 0.283385 0.276923 0.270392 0.263796 0.257143 0.250430 0.243660 0.236839 0.229970 0.223053 0.216093 0.209092 0.202045 0.194956 0.187824 0.180653 0.173445 0.166202 0.158925 0.151617 0.144280 0.136916 0.129527 0.122114 0.114680 0.107226 0.099754 0.092266 0.084765 0.077251 0.069727 0.062194 0.054654 0.047108 0.039559 0.032006 0.024450 0.016893 0.009335 0.001777 -0.005780 -0.013335 -0.020888 -0.028436 -0.035977 -0.043511 -0.051034 -0.058544 -0.066037 -0.073511 -0.080962 -0.088385 -0.095775 -0.103128 -0.110438 -0.117699 -0.124902 -0.132043 -0.139113 -0.146104 -0.153010 -0.159822 -0.475295 0.473479 0.471648 0.469792 0.467903 0.465968 0.463979 0.461919 0.459765 0.457498 0.455100 0.452555 0.449850 0.446974 0.443917 0.440667 0.437209 0.433530 0.429626 0.425499 0.421157 0.416606 0.411845 0.406876 0.401699 0.396323 0.390757 0.385012 0.379102 0.373039 0.366834 0.360496 0.354035 0.347459 0.340774 0.333989 0.327108 0.320138 0.313085 0.305953 0.298747 0.291473 0.284136 0.276737 0.269283 0.261775 0.254211 0.246595 0.238934 0.231226 0.223476 0.215686 0.207854 0.199978 0.192062 0.184106 0.176113 0.168086 0.160026 0.151936 0.143817 0.135671 0.127501 0.119309 0.111096 0.102864 0.094616 0.086353 0.078077 0.069791 0.061495 0.053192 0.044882 0.036568 0.028250 0.019929 0.011606 0.003281 -0.005044 -0.013369 -0.021694 -0.030015 -0.038332 -0.046643 -0.054945 -0.063236 -0.071512 -0.079770 -0.088006 -0.096216 -0.104393 -0.112533 -0.120630 -0.128675 -0.136662 -0.144584 -0.152431 -0.160197 -0.167872 -0.175450 -0.182922 -0.190279 -0.197511 -0.204609 -0.516120 0.514190 0.512175 0.510047 0.507792 0.505393 0.502836 0.500106 0.497192 0.494076 0.490742 0.487172 0.483355 0.479288 0.474974 0.470418 0.465616 0.460565 0.455268 0.449735 0.443977 0.438009 0.431845 0.425501 0.418989 0.412321 0.405506 0.398555 0.391476 0.384276 0.376964 0.369546 0.362027 0.354414 0.346712 0.338926 0.331060 0.323117 0.315103 0.307021 0.298875 0.290670 0.282407 0.274093 0.265727 0.257307 0.248840 0.240330 0.231776 0.223184 0.214553 0.205879 0.197164 0.188409 0.179617 0.170789 0.161929 0.153038 0.144118 0.135171 0.126200 0.117206 0.108192 0.099159 0.090111 0.081047 0.071972 0.062886 0.053791 0.044689 0.035581 0.026468 0.017351 0.008230 -0.000893 -0.010018 -0.019145 -0.028271 -0.037395 -0.046516 -0.055632 -0.064740 -0.073837 -0.082919 -0.091982 -0.101021 -0.110032 -0.119007 -0.127941 -0.136826 -0.145654 -0.154416 -0.163104 -0.171709 -0.180223 -0.188637 -0.196943 -0.205132 -0.213194 -0.221121 -0.228901 -0.236525 -0.243978 -0.251247 -0.558741 0.556248 0.553578 0.550711 0.547629 0.544312 0.540740 0.536900 0.532786 0.528398 0.523730 0.518775 0.513532 0.508006 0.502211 0.496164 0.489884 0.483387 0.476688 0.469800 0.462736 0.455508 0.448126 0.440600 0.432938 0.425147 0.417236 0.409211 0.401078 0.392844 0.384512 0.376089 0.367578 0.358984 0.350311 0.341562 0.332740 0.323848 0.314890 0.305870 0.296795 0.287663 0.278483 0.269253 0.259972 0.250646 0.241278 0.231869 0.222424 0.212939 0.203411 0.193841 0.184233 0.174588 0.164909 0.155197 0.145456 0.135687 0.125892 0.116075 0.106236 0.096377 0.086503 0.076613 0.066711 0.056798 0.046876 0.036946 0.027009 0.017066 0.007118 -0.002834 -0.012789 -0.022748 -0.032708 -0.042668 -0.052627 -0.062583 -0.072532 -0.082472 -0.092398 -0.102305 -0.112190 -0.122044 -0.131862 -0.141636 -0.151357 -0.161016 -0.170604 -0.180112 -0.189531 -0.198850 -0.208062 -0.217156 -0.226123 -0.234955 -0.243640 -0.252170 -0.260532 -0.268716 -0.276706 -0.284486 -0.292038 -0.299343 -0.600917 0.597455 0.593713 0.589681 0.585346 0.580696 0.575720 0.570416 0.564791 0.558860 0.552645 0.546168 0.539446 0.532495 0.525330 0.517964 0.510410 0.502680 0.494784 0.486731 0.478531 0.470192 0.461721 0.453126 0.444412 0.435586 0.426654 0.417621 0.408491 0.399269 0.389959 0.380565 0.371089 0.361534 0.351905 0.342204 0.332434 0.322599 0.312702 0.302751 0.292746 0.282692 0.272590 0.262436 0.252239 0.242002 0.231724 0.221411 0.211055 0.200655 0.190214 0.179734 0.169217 0.158666 0.148082 0.137470 0.126829 0.116164 0.105476 0.094768 0.084042 0.073300 0.062544 0.051776 0.040998 0.030210 0.019415 0.008612 -0.002197 -0.013012 -0.023832 -0.034656 -0.045483 -0.056312 -0.067140 -0.077964 -0.088782 -0.099588 -0.110379 -0.121147 -0.131887 -0.142591 -0.153251 -0.163857 -0.174398 -0.184866 -0.195250 -0.205539 -0.215723 -0.225794 -0.235740 -0.245552 -0.255220 -0.264732 -0.274080 -0.283253 -0.292238 -0.301024 -0.309593 -0.317928 -0.326010 -0.333818 -0.341330 -0.348521 -0.640702 0.635845 0.630626 0.625052 0.619137 0.612902 0.606371 0.599562 0.592496 0.585184 0.577642 0.569882 0.561919 0.553762 0.545423 0.536911 0.528237 0.519408 0.510433 0.501320 0.492075 0.482704 0.473215 0.463613 0.453903 0.444089 0.434177 0.424170 0.414071 0.403884 0.393612 0.383259 0.372826 0.362318 0.351737 0.341086 0.330368 0.319589 0.308753 0.297863 0.286924 0.275936 0.264897 0.253814 0.242690 0.231526 0.220327 0.209081 0.197791 0.186459 0.175086 0.163676 0.152231 0.140754 0.129246 0.117710 0.106150 0.094567 0.082964 0.071344 0.059708 0.048058 0.036395 0.024722 0.013038 0.001345 -0.010356 -0.022065 -0.033780 -0.045502 -0.057228 -0.068958 -0.080688 -0.092415 -0.104136 -0.115844 -0.127533 -0.139198 -0.150830 -0.162420 -0.173958 -0.185433 -0.196834 -0.208148 -0.219366 -0.230477 -0.241469 -0.252333 -0.263056 -0.273629 -0.284039 -0.294278 -0.304334 -0.314195 -0.323850 -0.333285 -0.342483 -0.351426 -0.360092 -0.368459 -0.376502 -0.384198 -0.391518 -0.398436 -0.676156 0.669722 0.662980 0.655946 0.648637 0.641070 0.633261 0.625218 0.616951 0.608472 0.599791 0.590917 0.581860 0.572629 0.563232 0.553679 0.543975 0.534130 0.524149 0.514039 0.503806 0.493456 0.482993 0.472422 0.461747 0.450972 0.440099 0.429132 0.418075 0.406930 0.395700 0.384388 0.372998 0.361532 0.349993 0.338384 0.326711 0.314978 0.303190 0.291351 0.279463 0.267522 0.255536 0.243508 0.231439 0.219334 0.207180 0.194979 0.182734 0.170447 0.158122 0.145759 0.133363 0.120936 0.108481 0.096000 0.083496 0.070972 0.058430 0.045871 0.033297 0.020710 0.008110 -0.004501 -0.017123 -0.029755 -0.042396 -0.055046 -0.067704 -0.080367 -0.093032 -0.105695 -0.118352 -0.130996 -0.143621 -0.156218 -0.168780 -0.181294 -0.193749 -0.206133 -0.218433 -0.230637 -0.242733 -0.254709 -0.266554 -0.278256 -0.289804 -0.301185 -0.312388 -0.323403 -0.334216 -0.344818 -0.355195 -0.365333 -0.375214 -0.384821 -0.394130 -0.403119 -0.411763 -0.420035 -0.427908 -0.435355 -0.442347 -0.448851 -0.707280 0.699577 0.691612 0.683400 0.674953 0.666274 0.657374 0.648264 0.638953 0.629444 0.619746 0.609869 0.599819 0.589603 0.579230 0.568705 0.558038 0.547233 0.536296 0.525234 0.514051 0.502751 0.491339 0.479817 0.468189 0.456459 0.444630 0.432704 0.420687 0.408579 0.396384 0.384106 0.371748 0.359312 0.346802 0.334223 0.321580 0.308880 0.296125 0.283321 0.270461 0.257553 0.244603 0.231610 0.218578 0.205495 0.192363 0.179183 0.165959 0.152694 0.139391 0.126052 0.112681 0.099280 0.085853 0.072402 0.058930 0.045437 0.031927 0.018399 0.004857 -0.008701 -0.022271 -0.035855 -0.049451 -0.063059 -0.076677 -0.090304 -0.103936 -0.117567 -0.131194 -0.144809 -0.158404 -0.171971 -0.185499 -0.198976 -0.212390 -0.225725 -0.238968 -0.252106 -0.265126 -0.278016 -0.290762 -0.303353 -0.315776 -0.328018 -0.340067 -0.351910 -0.363537 -0.374935 -0.386090 -0.396988 -0.407612 -0.417945 -0.427963 -0.437642 -0.446959 -0.455886 -0.464396 -0.472462 -0.480055 -0.487140 -0.493683 -0.499641 -0.735139 0.726403 0.717433 0.708230 0.698802 0.689160 0.679311 0.669257 0.659007 0.648572 0.637953 0.627156 0.616189 0.605056 0.593765 0.582323 0.570735 0.559008 0.547146 0.535155 0.523037 0.510799 0.498442 0.485971 0.473391 0.460703 0.447912 0.435020 0.422032 0.408951 0.395779 0.382521 0.369180 0.355759 0.342263 0.328697 0.315070 0.301383 0.287645 0.273850 0.260001 0.246109 0.232170 0.218192 0.204160 0.190074 0.175938 0.161755 0.147528 0.133260 0.118954 0.104614 0.090242 0.075843 0.061417 0.046968 0.032496 0.018005 0.003494 -0.011035 -0.025581 -0.040143 -0.054721 -0.069314 -0.083922 -0.098542 -0.113170 -0.127801 -0.142429 -0.157048 -0.171648 -0.186220 -0.200753 -0.215234 -0.229646 -0.243976 -0.258208 -0.272328 -0.286321 -0.300174 -0.313874 -0.327407 -0.340759 -0.353917 -0.366868 -0.379599 -0.392097 -0.404350 -0.416344 -0.428064 -0.439495 -0.450619 -0.461414 -0.471856 -0.481921 -0.491584 -0.500818 -0.509596 -0.517887 -0.525656 -0.532866 -0.539475 -0.545438 -0.550714 -0.760442 0.750839 0.741007 0.730951 0.720679 0.710190 0.699492 0.688596 0.677502 0.666215 0.654744 0.643092 0.631261 0.619260 0.607092 0.594763 0.582280 0.569648 0.556872 0.543958 0.530910 0.517732 0.504430 0.491006 0.477465 0.463811 0.450047 0.436178 0.422206 0.408137 0.393972 0.379718 0.365376 0.350952 0.336451 0.321881 0.307249 0.292559 0.277811 0.263003 0.248149 0.233245 0.218299 0.203297 0.188238 0.173124 0.157960 0.142747 0.127491 0.112194 0.096860 0.081493 0.066094 0.050667 0.035213 0.019734 0.004231 -0.011293 -0.026838 -0.042403 -0.057989 -0.073593 -0.089217 -0.104857 -0.120509 -0.136169 -0.151830 -0.167484 -0.183123 -0.198736 -0.214311 -0.229833 -0.245287 -0.260656 -0.275923 -0.291072 -0.306089 -0.320959 -0.335665 -0.350195 -0.364532 -0.378665 -0.392577 -0.406256 -0.419688 -0.432859 -0.445756 -0.458364 -0.470669 -0.482651 -0.494293 -0.505571 -0.516462 -0.526943 -0.536987 -0.546568 -0.555653 -0.564207 -0.572192 -0.579566 -0.586282 -0.592293 -0.597556 -0.602030 -0.783707 0.773348 0.762767 0.751967 0.740943 0.729701 0.718245 0.706574 0.694699 0.682624 0.670349 0.657884 0.645229 0.632388 0.619366 0.606168 0.592801 0.579272 0.565587 0.551751 0.537770 0.523649 0.509394 0.495008 0.480497 0.465864 0.451115 0.436253 0.421282 0.406208 0.391033 0.375763 0.360402 0.344955 0.329429 0.313835 0.298176 0.282459 0.266675 0.250839 0.234951 0.219016 0.203027 0.186973 0.170861 0.154693 0.138473 0.122205 0.105894 0.089542 0.073152 0.056728 0.040272 0.023786 0.007271 -0.009270 -0.025837 -0.042429 -0.059045 -0.075685 -0.092349 -0.109034 -0.125737 -0.142452 -0.159174 -0.175894 -0.192602 -0.209289 -0.225941 -0.242544 -0.259079 -0.275530 -0.291879 -0.308107 -0.324198 -0.340136 -0.355905 -0.371489 -0.386871 -0.402037 -0.416972 -0.431661 -0.446091 -0.460246 -0.474114 -0.487679 -0.500926 -0.513839 -0.526398 -0.538586 -0.550382 -0.561761 -0.572699 -0.583171 -0.593142 -0.602579 -0.611443 -0.619691 -0.627277 -0.634152 -0.640264 -0.645565 -0.650009 -0.653563 -0.805354 0.794305 0.783045 0.771562 0.759858 0.747928 0.735768 0.723387 0.710780 0.697954 0.684918 0.671666 0.658211 0.644551 0.630690 0.616634 0.602391 0.587968 0.573373 0.558613 0.543695 0.528624 0.513407 0.498048 0.482554 0.466929 0.451179 0.435307 0.419320 0.403221 0.387017 0.370710 0.354308 0.337817 0.321247 0.304605 0.287901 0.271127 0.254290 0.237399 0.220456 0.203458 0.186392 0.169261 0.152069 0.134820 0.117519 0.100169 0.082774 0.065338 0.047863 0.030352 0.012806 -0.004772 -0.022381 -0.040020 -0.057688 -0.075385 -0.093111 -0.110864 -0.128641 -0.146437 -0.164245 -0.182057 -0.199864 -0.217656 -0.235418 -0.253136 -0.270793 -0.288368 -0.305842 -0.323196 -0.340413 -0.357473 -0.374359 -0.391054 -0.407541 -0.423802 -0.439823 -0.455587 -0.471079 -0.486287 -0.501194 -0.515787 -0.530049 -0.543964 -0.557517 -0.570689 -0.583463 -0.595819 -0.607733 -0.619178 -0.630124 -0.640536 -0.650376 -0.659603 -0.668170 -0.676027 -0.683119 -0.689388 -0.694781 -0.699250 -0.702760 -0.705291 -0.825686 0.813979 0.802074 0.789956 0.777609 0.765028 0.752214 0.739153 0.725857 0.712315 0.698535 0.684527 0.670286 0.655822 0.641135 0.626231 0.611117 0.595803 0.580297 0.564609 0.548747 0.532717 0.516527 0.500184 0.483692 0.467059 0.450291 0.433392 0.416368 0.399226 0.381969 0.364606 0.347141 0.329584 0.311948 0.294238 0.276460 0.258606 0.240695 0.222724 0.204699 0.186602 0.168433 0.150197 0.131898 0.113541 0.095131 0.076670 0.058163 0.039612 0.021019 0.002388 -0.016281 -0.034986 -0.053725 -0.072498 -0.091305 -0.110146 -0.129018 -0.147915 -0.166833 -0.185762 -0.204694 -0.223617 -0.242520 -0.261387 -0.280199 -0.298937 -0.317579 -0.336105 -0.354495 -0.372728 -0.390787 -0.408651 -0.426301 -0.443721 -0.460891 -0.477795 -0.494418 -0.510746 -0.526764 -0.542456 -0.557807 -0.572800 -0.587421 -0.601653 -0.615481 -0.628889 -0.641854 -0.654353 -0.666355 -0.677829 -0.688737 -0.699040 -0.708691 -0.717638 -0.725827 -0.733195 -0.739682 -0.745230 -0.749786 -0.753315 -0.755795 -0.757214 -0.844926 0.832581 0.820040 0.807299 0.794335 0.781132 0.767675 0.753971 0.740000 0.725772 0.711277 0.696523 0.681519 0.666261 0.650760 0.635016 0.619036 0.602831 0.586413 0.569792 0.552978 0.535979 0.518805 0.501462 0.483958 0.466300 0.448495 0.430549 0.412469 0.394261 0.375932 0.357489 0.338939 0.320297 0.301570 0.282770 0.263889 0.244937 0.225923 0.206850 0.187706 0.168481 0.149182 0.129813 0.110380 0.090887 0.071338 0.051736 0.032084 0.012386 -0.007357 -0.027143 -0.046969 -0.066836 -0.086742 -0.106688 -0.126672 -0.146690 -0.166737 -0.186804 -0.206883 -0.226964 -0.247033 -0.267076 -0.287075 -0.307010 -0.326859 -0.346598 -0.366207 -0.385663 -0.404946 -0.424034 -0.442908 -0.461547 -0.479931 -0.498042 -0.515864 -0.533382 -0.550581 -0.567445 -0.583959 -0.600106 -0.615871 -0.631240 -0.646198 -0.660732 -0.674823 -0.688451 -0.701588 -0.714203 -0.726262 -0.737728 -0.748556 -0.758694 -0.768085 -0.776668 -0.784378 -0.791150 -0.796921 -0.801636 -0.805256 -0.807757 -0.809125 -0.809360 -0.863234 0.850259 0.837090 0.823722 0.810140 0.796321 0.782247 0.767899 0.753282 0.738376 0.723191 0.707713 0.691955 0.675920 0.659612 0.643035 0.626194 0.609099 0.591766 0.574206 0.556431 0.538453 0.520281 0.501924 0.483391 0.464691 0.445830 0.426818 0.407660 0.388366 0.368941 0.349395 0.329739 0.309987 0.290148 0.270229 0.250223 0.230150 0.210008 0.189799 0.169503 0.149124 0.128667 0.108137 0.087541 0.066882 0.046163 0.025388 0.004559 -0.016320 -0.037247 -0.058221 -0.079242 -0.100308 -0.121419 -0.142574 -0.163766 -0.184988 -0.206233 -0.227491 -0.248748 -0.269991 -0.291204 -0.312366 -0.333453 -0.354444 -0.375313 -0.396037 -0.416594 -0.436960 -0.457113 -0.477031 -0.496693 -0.516077 -0.535165 -0.553943 -0.572394 -0.590503 -0.608254 -0.625630 -0.642617 -0.659199 -0.675365 -0.691101 -0.706392 -0.721221 -0.735565 -0.749397 -0.762684 -0.775391 -0.787478 -0.798895 -0.809585 -0.819486 -0.828531 -0.836652 -0.843782 -0.849853 -0.854805 -0.858595 -0.861196 -0.862593 -0.862784 -0.861782 -0.880774 0.867136 0.853331 0.839329 0.825121 0.810684 0.795987 0.781017 0.765752 0.750191 0.734319 0.718140 0.701641 0.684839 0.667733 0.650330 0.632631 0.614648 0.596395 0.577890 0.559145 0.540176 0.520992 0.501606 0.482028 0.462266 0.442331 0.422231 0.401975 0.381571 0.361028 0.340357 0.319571 0.298686 0.277712 0.256644 0.235494 0.214269 0.192977 0.171594 0.150118 0.128556 0.106912 0.085193 0.063404 0.041546 0.019626 -0.002355 -0.024393 -0.046486 -0.068632 -0.090832 -0.113084 -0.135386 -0.157737 -0.180129 -0.202555 -0.225005 -0.247468 -0.269931 -0.292378 -0.314790 -0.337144 -0.359416 -0.381581 -0.403614 -0.425488 -0.447181 -0.468666 -0.489921 -0.510920 -0.531642 -0.552065 -0.572171 -0.591945 -0.611371 -0.630433 -0.649113 -0.667398 -0.685272 -0.702723 -0.719737 -0.736303 -0.752406 -0.768028 -0.783147 -0.797733 -0.811754 -0.825174 -0.837946 -0.850017 -0.861326 -0.871803 -0.881382 -0.889990 -0.897556 -0.904008 -0.909283 -0.913330 -0.916119 -0.917631 -0.917861 -0.916821 -0.914544 -0.897708 0.883350 0.868868 0.854215 0.839361 0.824294 0.808976 0.793375 0.777476 0.761260 0.744716 0.727838 0.710619 0.693055 0.675161 0.656934 0.638382 0.619511 0.600336 0.580878 0.561155 0.541182 0.520973 0.500541 0.479899 0.459058 0.438027 0.416819 0.395441 0.373905 0.352221 0.330401 0.308464 0.286421 0.264284 0.242045 0.219725 0.197326 0.174843 0.152257 0.129574 0.106800 0.083941 0.061002 0.037987 0.014901 -0.008253 -0.031473 -0.054754 -0.078097 -0.101499 -0.124961 -0.148479 -0.172051 -0.195669 -0.219324 -0.243006 -0.266703 -0.290400 -0.314080 -0.337721 -0.361299 -0.384789 -0.408163 -0.431394 -0.454455 -0.477320 -0.499963 -0.522357 -0.544477 -0.566300 -0.587803 -0.608970 -0.629784 -0.650230 -0.670289 -0.689947 -0.709189 -0.728002 -0.746373 -0.764291 -0.781743 -0.798715 -0.815188 -0.831140 -0.846542 -0.861361 -0.875556 -0.889078 -0.901869 -0.913864 -0.924991 -0.935178 -0.944352 -0.952437 -0.959357 -0.965044 -0.969441 -0.972511 -0.974232 -0.974593 -0.973604 -0.971297 -0.967729 -0.914214 0.899051 0.883822 0.868475 0.852954 0.837228 0.821275 0.805043 0.788501 0.771633 0.754424 0.736851 0.718918 0.700607 0.681927 0.662883 0.643479 0.623719 0.603619 0.583202 0.562490 0.541501 0.520252 0.498758 0.477034 0.455093 0.432947 0.410608 0.388086 0.365395 0.342545 0.319553 0.296440 0.273218 0.249887 0.226456 0.202937 0.179337 0.155629 0.131811 0.107892 0.083877 0.059771 0.035581 0.011310 -0.013038 -0.037459 -0.061951 -0.086511 -0.111140 -0.135834 -0.160591 -0.185408 -0.210276 -0.235186 -0.260127 -0.285085 -0.310044 -0.334987 -0.359888 -0.384722 -0.409462 -0.434080 -0.458546 -0.482831 -0.506908 -0.530747 -0.554322 -0.577605 -0.600571 -0.623200 -0.645473 -0.667373 -0.688885 -0.709991 -0.730676 -0.750928 -0.770732 -0.790079 -0.808957 -0.827352 -0.845250 -0.862634 -0.879481 -0.895761 -0.911440 -0.926475 -0.940811 -0.954390 -0.967141 -0.978992 -0.989866 -0.999687 -1.008376 -1.015854 -1.022048 -1.026893 -1.030345 -1.032374 -1.032964 -1.032122 -1.029875 -1.026279 -1.021422 -0.930433 0.914389 0.898330 0.882216 0.865982 0.849571 0.832949 0.816074 0.798886 0.781360 0.763480 0.745222 0.726571 0.707523 0.688062 0.668204 0.647949 0.627302 0.606273 0.584890 0.563178 0.541160 0.518855 0.496283 0.473459 0.450398 0.427114 0.403622 0.379934 0.356063 0.332024 0.307837 0.283522 0.259094 0.234545 0.209898 0.185156 0.160315 0.135352 0.110275 0.085090 0.059803 0.034421 0.008947 -0.016612 -0.042254 -0.067976 -0.093775 -0.119650 -0.145599 -0.171618 -0.197703 -0.223845 -0.250035 -0.276260 -0.302506 -0.328756 -0.354990 -0.381183 -0.407305 -0.433330 -0.459227 -0.484965 -0.510513 -0.535841 -0.560918 -0.585715 -0.610205 -0.634361 -0.658161 -0.681587 -0.704622 -0.727250 -0.749453 -0.771219 -0.792534 -0.813386 -0.833765 -0.853660 -0.873057 -0.891941 -0.910295 -0.928098 -0.945319 -0.961921 -0.977858 -0.993075 -1.007509 -1.021089 -1.033739 -1.045381 -1.055933 -1.065314 -1.073443 -1.080240 -1.085636 -1.089573 -1.092016 -1.092941 -1.092349 -1.090262 -1.086730 -1.081840 -1.075700 -0.946416 0.929465 0.912509 0.895552 0.878539 0.861396 0.844072 0.826522 0.808678 0.790489 0.771927 0.752982 0.733616 0.713829 0.693597 0.672925 0.651819 0.630283 0.608323 0.585966 0.563244 0.540184 0.516808 0.493139 0.469195 0.444994 0.420551 0.395883 0.371004 0.345930 0.320677 0.295273 0.269732 0.244068 0.218279 0.192386 0.166395 0.140279 0.114033 0.087667 0.061186 0.034596 0.007905 -0.018883 -0.045764 -0.072734 -0.099791 -0.126932 -0.154156 -0.181458 -0.208833 -0.236272 -0.263766 -0.291301 -0.318861 -0.346430 -0.373985 -0.401499 -0.428943 -0.456286 -0.483499 -0.510547 -0.537397 -0.564017 -0.590374 -0.616438 -0.642179 -0.667571 -0.692592 -0.717221 -0.741441 -0.765236 -0.788590 -0.811490 -0.833924 -0.855880 -0.877349 -0.898319 -0.918777 -0.938707 -0.958094 -0.976913 -0.995137 -1.012725 -1.029629 -1.045792 -1.061151 -1.075633 -1.089159 -1.101648 -1.113016 -1.123179 -1.132053 -1.139554 -1.145603 -1.150134 -1.153101 -1.154473 -1.154241 -1.152421 -1.149057 -1.144229 -1.138045 -1.130634 -0.962199 0.944317 0.926442 0.908577 0.890718 0.872784 0.854714 0.836451 0.817925 0.799059 0.779815 0.760164 0.740088 0.719555 0.698555 0.677070 0.655114 0.632686 0.609791 0.586454 0.562711 0.538594 0.514132 0.489348 0.464264 0.438901 0.413277 0.387410 0.361316 0.335014 0.308525 0.281877 0.255089 0.228160 0.201108 0.173944 0.146666 0.119245 0.091688 0.064001 0.036193 0.008271 -0.019761 -0.047896 -0.076132 -0.104464 -0.132891 -0.161408 -0.190013 -0.218699 -0.247458 -0.276278 -0.305147 -0.334048 -0.362963 -0.391867 -0.420733 -0.449530 -0.478227 -0.506790 -0.535186 -0.563378 -0.591331 -0.619012 -0.646388 -0.673429 -0.700106 -0.726396 -0.752278 -0.777736 -0.802752 -0.827311 -0.851402 -0.875011 -0.898129 -0.920745 -0.942849 -0.964427 -0.985465 -1.005944 -1.025843 -1.045131 -1.063768 -1.081703 -1.098879 -1.115231 -1.130688 -1.145167 -1.158585 -1.170855 -1.181891 -1.191604 -1.199907 -1.206715 -1.211951 -1.215556 -1.217491 -1.217737 -1.216300 -1.213216 -1.208556 -1.202425 -1.194953 -1.186290 -0.977811 0.958973 0.940157 0.921361 0.902591 0.883811 0.864940 0.845921 0.826677 0.807113 0.787173 0.766811 0.746010 0.724731 0.702958 0.680665 0.657856 0.634532 0.610698 0.586373 0.561598 0.536411 0.510845 0.484928 0.458685 0.432139 0.405311 0.378221 0.350889 0.323335 0.295585 0.267668 0.239605 0.211387 0.183046 0.154586 0.125985 0.097229 0.068329 0.039293 0.010128 -0.019160 -0.048564 -0.078080 -0.107704 -0.137433 -0.167262 -0.197189 -0.227206 -0.257305 -0.287474 -0.317700 -0.347966 -0.378252 -0.408534 -0.438781 -0.468963 -0.499047 -0.528998 -0.558779 -0.588353 -0.617682 -0.646731 -0.675465 -0.703852 -0.731864 -0.759474 -0.786663 -0.813411 -0.839703 -0.865524 -0.890861 -0.915703 -0.940039 -0.963861 -0.987158 -1.009917 -1.032123 -1.053757 -1.074796 -1.095211 -1.114959 -1.133989 -1.152245 -1.169661 -1.186164 -1.201673 -1.216101 -1.229358 -1.241357 -1.252004 -1.261209 -1.268880 -1.274932 -1.279293 -1.281913 -1.282760 -1.281830 -1.279146 -1.274772 -1.268805 -1.261371 -1.252622 -1.242728 -0.993273 0.973460 0.953676 0.933930 0.914217 0.894535 0.874813 0.854988 0.834983 0.814700 0.794034 0.772960 0.751412 0.729387 0.706830 0.683729 0.660063 0.635842 0.611064 0.585743 0.559924 0.533653 0.506967 0.479897 0.452474 0.424724 0.396669 0.368333 0.339738 0.310907 0.281874 0.252665 0.223296 0.193769 0.164110 0.134320 0.104364 0.074245 0.043973 0.013556 -0.016999 -0.047683 -0.078493 -0.109423 -0.140470 -0.171628 -0.202893 -0.234259 -0.265718 -0.297256 -0.328861 -0.360515 -0.392198 -0.423884 -0.455543 -0.487141 -0.518645 -0.550018 -0.581222 -0.612218 -0.642965 -0.673426 -0.703565 -0.733348 -0.762745 -0.791728 -0.820276 -0.848369 -0.875993 -0.903131 -0.929772 -0.955903 -0.981517 -1.006604 -1.031153 -1.055152 -1.078587 -1.101437 -1.123679 -1.145282 -1.166205 -1.186395 -1.205797 -1.224345 -1.241967 -1.258581 -1.274098 -1.288428 -1.301477 -1.313153 -1.323358 -1.331997 -1.338977 -1.344212 -1.347640 -1.349216 -1.348923 -1.346771 -1.342810 -1.337128 -1.329847 -1.321116 -1.311104 -1.300001 -1.008599 0.987799 0.967022 0.946302 0.925629 0.905001 0.884383 0.863705 0.842899 0.821849 0.800448 0.778631 0.756337 0.733541 0.710199 0.686281 0.661757 0.636632 0.610904 0.584580 0.557707 0.530337 0.502513 0.474272 0.445649 0.416671 0.387367 0.357760 0.327878 0.297747 0.267406 0.236881 0.206178 0.175319 0.144316 0.113159 0.081818 0.050305 0.018630 -0.013200 -0.045175 -0.077289 -0.109538 -0.141916 -0.174418 -0.207038 -0.239770 -0.272605 -0.305533 -0.338537 -0.371602 -0.404704 -0.437820 -0.470918 -0.503962 -0.536918 -0.569748 -0.602412 -0.634869 -0.667076 -0.698994 -0.730584 -0.761812 -0.792645 -0.823053 -0.853014 -0.882509 -0.911520 -0.940033 -0.968034 -0.995514 -1.022463 -1.048872 -1.074732 -1.100032 -1.124756 -1.148884 -1.172391 -1.195245 -1.217405 -1.238821 -1.259435 -1.279184 -1.297996 -1.315789 -1.332474 -1.347958 -1.362146 -1.374941 -1.386244 -1.395954 -1.403971 -1.410199 -1.414561 -1.416998 -1.417477 -1.415995 -1.412585 -1.407323 -1.400322 -1.391726 -1.381704 -1.370446 -1.358156 -1.023807 1.002002 0.980216 0.958494 0.936842 0.915246 0.893686 0.872117 0.850461 0.828607 0.806445 0.783852 0.760808 0.737218 0.713085 0.688338 0.662955 0.636920 0.610235 0.582900 0.554961 0.526477 0.497499 0.468068 0.438223 0.407996 0.377419 0.346519 0.315325 0.283870 0.252195 0.220328 0.188267 0.156046 0.123672 0.091112 0.058357 0.025420 -0.007690 -0.040963 -0.074391 -0.107969 -0.141690 -0.175548 -0.209537 -0.243650 -0.277879 -0.312213 -0.346635 -0.381130 -0.415676 -0.450246 -0.484808 -0.519328 -0.553767 -0.588087 -0.622247 -0.656203 -0.689912 -0.723331 -0.756420 -0.789141 -0.821460 -0.853347 -0.884775 -0.915726 -0.946181 -0.976125 -1.005545 -1.034431 -1.062773 -1.090564 -1.117795 -1.144455 -1.170529 -1.195995 -1.220829 -1.244997 -1.268459 -1.291164 -1.313057 -1.334074 -1.354145 -1.373190 -1.391119 -1.407838 -1.423250 -1.437256 -1.449751 -1.460632 -1.469794 -1.477132 -1.482553 -1.485983 -1.487374 -1.486707 -1.483995 -1.479297 -1.472717 -1.464389 -1.454479 -1.443176 -1.430686 -1.417233 -1.038908 1.016083 0.993272 0.970524 0.947870 0.925288 0.902756 0.880253 0.857705 0.835018 0.812045 0.788669 0.764839 0.740454 0.715507 0.689923 0.663674 0.636722 0.609072 0.580719 0.551702 0.522090 0.491939 0.461299 0.430211 0.398713 0.366839 0.334621 0.302091 0.269288 0.236254 0.203017 0.169576 0.135966 0.102185 0.068191 0.033992 -0.000401 -0.034976 -0.069725 -0.104640 -0.139713 -0.174939 -0.210309 -0.245816 -0.281453 -0.317208 -0.353067 -0.389011 -0.425020 -0.461066 -0.497119 -0.533140 -0.569093 -0.604935 -0.640624 -0.676118 -0.711369 -0.746332 -0.780964 -0.815228 -0.849084 -0.882501 -0.915451 -0.947914 -0.979870 -1.011302 -1.042198 -1.072548 -1.102342 -1.131574 -1.160234 -1.188313 -1.215796 -1.242662 -1.268885 -1.294430 -1.319257 -1.343317 -1.366555 -1.388908 -1.410307 -1.430674 -1.449921 -1.467953 -1.484672 -1.499975 -1.513757 -1.525908 -1.536318 -1.544879 -1.551482 -1.556039 -1.558483 -1.558778 -1.556918 -1.552942 -1.546935 -1.539023 -1.529363 -1.518141 -1.505566 -1.491862 -1.477265 -1.053915 1.030053 1.006200 0.982410 0.958727 0.935139 0.911614 0.888138 0.864671 0.841106 0.817290 0.793107 0.768456 0.743272 0.717484 0.691057 0.663928 0.636054 0.607431 0.578051 0.547944 0.517188 0.485848 0.453978 0.421626 0.388834 0.355640 0.322079 0.288188 0.254014 0.219598 0.184960 0.150116 0.115089 0.079862 0.044405 0.008731 -0.027148 -0.063221 -0.099478 -0.135911 -0.172513 -0.209274 -0.246188 -0.283245 -0.320436 -0.357745 -0.395156 -0.432646 -0.470190 -0.507755 -0.545304 -0.582796 -0.620191 -0.657444 -0.694510 -0.731342 -0.767891 -0.804113 -0.839965 -0.875409 -0.910409 -0.944934 -0.978964 -1.012476 -1.045455 -1.077886 -1.109757 -1.141062 -1.171792 -1.201941 -1.231499 -1.260450 -1.288776 -1.316449 -1.343435 -1.369691 -1.395169 -1.419818 -1.443573 -1.466369 -1.488127 -1.508764 -1.528185 -1.546291 -1.562976 -1.578134 -1.591651 -1.603411 -1.613302 -1.621208 -1.627022 -1.630661 -1.632068 -1.631219 -1.628127 -1.622858 -1.615522 -1.606268 -1.595273 -1.582744 -1.568906 -1.554002 -1.538283 -1.068839 1.043923 1.019012 0.994161 0.969424 0.944811 0.920276 0.895799 0.871375 0.846895 0.822211 0.797181 0.771694 0.745684 0.719039 0.691756 0.663731 0.634931 0.605324 0.574907 0.543700 0.511785 0.479236 0.446117 0.412480 0.378370 0.343832 0.308904 0.273628 0.238057 0.202234 0.166168 0.129892 0.093420 0.056713 0.019762 -0.017418 -0.054814 -0.092416 -0.130213 -0.168197 -0.206358 -0.244687 -0.283176 -0.321814 -0.360588 -0.399480 -0.438468 -0.477527 -0.516625 -0.555724 -0.594783 -0.633759 -0.672606 -0.711279 -0.749728 -0.787904 -0.825758 -0.863246 -0.900326 -0.936959 -0.973114 -1.008765 -1.043890 -1.078472 -1.112495 -1.145948 -1.178821 -1.211109 -1.242804 -1.273898 -1.304378 -1.334224 -1.363408 -1.391896 -1.419645 -1.446608 -1.472732 -1.497957 -1.522215 -1.545434 -1.567531 -1.588413 -1.607982 -1.626131 -1.642751 -1.657726 -1.670936 -1.682262 -1.691584 -1.698782 -1.703753 -1.706423 -1.706744 -1.704706 -1.700349 -1.693764 -1.685084 -1.674478 -1.662146 -1.648313 -1.633222 -1.617132 -1.600314 -1.083687 1.057701 1.031715 1.005787 0.979975 0.954313 0.928752 0.903250 0.877833 0.852413 0.826826 0.800919 0.774574 0.747706 0.720200 0.692031 0.663100 0.633364 0.602765 0.571302 0.538981 0.505891 0.472117 0.437728 0.402782 0.367333 0.331426 0.295106 0.258420 0.221427 0.184169 0.146651 0.108915 0.070962 0.032745 -0.005729 -0.044446 -0.083391 -0.122554 -0.161923 -0.201489 -0.241241 -0.281170 -0.321265 -0.361514 -0.401900 -0.442401 -0.482991 -0.523640 -0.564311 -0.604959 -0.645542 -0.686013 -0.726324 -0.766425 -0.806265 -0.845793 -0.884961 -0.923724 -0.962042 -0.999878 -1.037204 -1.073999 -1.110241 -1.145914 -1.181005 -1.215506 -1.249409 -1.282709 -1.315399 -1.347466 -1.378889 -1.409645 -1.439698 -1.469004 -1.497515 -1.525180 -1.551940 -1.577730 -1.602476 -1.626100 -1.648515 -1.669620 -1.689311 -1.707475 -1.723996 -1.738751 -1.751613 -1.762459 -1.771161 -1.777600 -1.781678 -1.783329 -1.782518 -1.779253 -1.773602 -1.765680 -1.755641 -1.743676 -1.730005 -1.714872 -1.698537 -1.681276 -1.663384 -1.098464 1.071394 1.044317 1.017295 0.990392 0.963657 0.937050 0.910507 0.884068 0.857677 0.831154 0.804348 0.777113 0.749364 0.720979 0.691902 0.662054 0.631366 0.599765 0.567244 0.533799 0.499518 0.464499 0.428819 0.392544 0.355730 0.318430 0.280693 0.242573 0.204132 0.165411 0.126420 0.087194 0.047724 0.007967 -0.032062 -0.072346 -0.112872 -0.153628 -0.194600 -0.235780 -0.277155 -0.318715 -0.360448 -0.402338 -0.444363 -0.486499 -0.528715 -0.570974 -0.613233 -0.655447 -0.697567 -0.739546 -0.781331 -0.822872 -0.864112 -0.905002 -0.945494 -0.985544 -1.025113 -1.064169 -1.102687 -1.140645 -1.178025 -1.214814 -1.251000 -1.286578 -1.321542 -1.355885 -1.389596 -1.422657 -1.455044 -1.486721 -1.517647 -1.547772 -1.577043 -1.605404 -1.632791 -1.659132 -1.684352 -1.708366 -1.731078 -1.752384 -1.772172 -1.790323 -1.806711 -1.821207 -1.833680 -1.844000 -1.852034 -1.857663 -1.860800 -1.861385 -1.859398 -1.854872 -1.847903 -1.838624 -1.827213 -1.813882 -1.798872 -1.782442 -1.764872 -1.746459 -1.727520 -1.113168 1.085007 1.056825 1.028693 1.000681 0.972851 0.945179 0.917580 0.890093 0.862700 0.835218 0.807485 0.779329 0.750680 0.721389 0.691389 0.660605 0.628948 0.596335 0.562746 0.528162 0.492675 0.456393 0.419401 0.381773 0.343572 0.304854 0.265675 0.226096 0.186183 0.145970 0.105477 0.064736 0.023712 -0.017616 -0.059230 -0.101113 -0.143251 -0.185630 -0.228238 -0.271063 -0.314094 -0.357317 -0.400719 -0.444278 -0.487970 -0.531766 -0.575629 -0.619516 -0.663381 -0.707175 -0.750848 -0.794347 -0.837620 -0.880609 -0.923262 -0.965526 -1.007355 -1.048706 -1.089544 -1.129839 -1.169570 -1.208714 -1.247257 -1.285188 -1.322498 -1.359183 -1.395237 -1.430651 -1.465408 -1.499484 -1.532846 -1.565453 -1.597255 -1.628198 -1.658226 -1.687276 -1.715279 -1.742161 -1.767841 -1.792229 -1.815220 -1.836706 -1.856565 -1.874673 -1.890895 -1.905095 -1.917138 -1.926885 -1.934201 -1.938973 -1.941121 -1.940595 -1.937393 -1.931579 -1.923266 -1.912613 -1.899819 -1.885117 -1.868765 -1.851041 -1.832247 -1.812705 -1.792749 -1.127789 1.098540 1.069243 1.039986 1.010849 0.981903 0.953146 0.924476 0.895919 0.867495 0.839034 0.810341 0.781244 0.751667 0.721446 0.690507 0.658764 0.626122 0.592488 0.557815 0.522081 0.485372 0.447806 0.409481 0.370477 0.330864 0.290704 0.250058 0.208997 0.167587 0.125852 0.083830 0.041541 -0.001067 -0.043996 -0.087225 -0.130739 -0.174520 -0.218556 -0.262831 -0.307334 -0.352052 -0.396971 -0.442070 -0.487327 -0.532713 -0.578192 -0.623723 -0.669257 -0.714745 -0.760135 -0.805375 -0.850409 -0.895181 -0.939633 -0.983710 -1.027362 -1.070543 -1.113212 -1.155339 -1.196896 -1.237860 -1.278215 -1.317948 -1.357049 -1.395514 -1.433338 -1.470512 -1.507022 -1.542845 -1.577952 -1.612299 -1.645840 -1.678520 -1.710280 -1.741060 -1.770792 -1.799403 -1.826815 -1.852943 -1.877688 -1.900941 -1.922585 -1.942491 -1.960525 -1.976547 -1.990414 -2.001984 -2.011112 -2.017663 -2.021532 -2.022644 -2.020965 -2.016515 -2.009383 -1.999706 -1.987663 -1.973475 -1.957395 -1.939699 -1.920687 -1.900684 -1.880036 -1.859099 -1.142290 1.111987 1.081574 1.051180 1.020902 0.990821 0.960961 0.931201 0.901556 0.872075 0.842609 0.812929 0.782872 0.752335 0.721167 0.689265 0.656545 0.622899 0.588232 0.552461 0.515564 0.477614 0.438747 0.399067 0.358665 0.317616 0.275989 0.233850 0.191281 0.148347 0.105066 0.061487 0.017615 -0.026608 -0.071168 -0.116045 -0.161220 -0.206676 -0.252400 -0.298375 -0.344589 -0.391026 -0.437671 -0.484498 -0.531481 -0.578585 -0.625770 -0.672987 -0.720187 -0.767315 -0.814319 -0.861142 -0.907725 -0.954009 -0.999937 -1.045454 -1.090509 -1.135060 -1.179068 -1.222505 -1.265346 -1.307569 -1.349162 -1.390112 -1.430414 -1.470065 -1.509057 -1.547377 -1.585006 -1.621914 -1.658062 -1.693402 -1.727881 -1.761439 -1.794015 -1.825542 -1.855948 -1.885160 -1.913093 -1.939656 -1.964745 -1.988241 -2.010021 -2.029948 -2.047879 -2.063666 -2.077162 -2.088217 -2.096681 -2.102422 -2.105342 -2.105375 -2.102502 -2.096773 -2.088299 -2.077236 -2.063787 -2.048196 -2.030731 -2.011690 -1.991398 -1.970205 -1.948479 -1.926603 -1.156634 1.125326 1.093814 1.062277 1.030845 0.999613 0.968628 0.937764 0.907013 0.876452 0.845955 0.815265 0.784224 0.752698 0.720564 0.687674 0.653960 0.619289 0.583575 0.546693 0.508618 0.469412 0.429222 0.388166 0.346342 0.303833 0.260713 0.217058 0.172955 0.128469 0.083619 0.038456 -0.007036 -0.052905 -0.099127 -0.145682 -0.192550 -0.239714 -0.287158 -0.334866 -0.382823 -0.431013 -0.479413 -0.527997 -0.576732 -0.625579 -0.674491 -0.723415 -0.772299 -0.821086 -0.869720 -0.918141 -0.966288 -1.014101 -1.061521 -1.108493 -1.154970 -1.200910 -1.246280 -1.291049 -1.335197 -1.378706 -1.421564 -1.463762 -1.505297 -1.546164 -1.586352 -1.625843 -1.664610 -1.702616 -1.739816 -1.776154 -1.811574 -1.846011 -1.879399 -1.911668 -1.942744 -1.972548 -2.000994 -2.027981 -2.053398 -2.077120 -2.099014 -2.118936 -2.136734 -2.152253 -2.165339 -2.175836 -2.183591 -2.188478 -2.190404 -2.189316 -2.185215 -2.178178 -2.168335 -2.155868 -2.141000 -2.123994 -2.105138 -2.084755 -2.063194 -2.040831 -2.018064 -1.995297 -1.170815 1.138518 1.105954 1.073277 1.040681 1.008284 0.976154 0.944169 0.912297 0.880633 0.849081 0.817362 0.785311 0.752775 0.719650 0.685748 0.651019 0.615303 0.578523 0.540517 0.501250 0.460771 0.419239 0.376785 0.333516 0.289522 0.244885 0.199688 0.154026 0.107960 0.061516 0.014739 -0.032408 -0.079953 -0.127868 -0.176133 -0.224727 -0.273631 -0.322828 -0.372301 -0.422034 -0.472007 -0.522194 -0.572562 -0.623076 -0.673688 -0.724348 -0.774999 -0.825587 -0.876052 -0.926333 -0.976369 -1.026097 -1.075454 -1.124382 -1.172828 -1.220747 -1.268099 -1.314851 -1.360978 -1.406460 -1.451282 -1.495434 -1.538911 -1.581711 -1.623823 -1.665233 -1.705915 -1.745837 -1.784953 -1.823211 -1.860554 -1.896917 -1.932232 -1.966430 -1.999437 -2.031178 -2.061569 -2.090517 -2.117917 -2.143649 -2.167578 -2.189565 -2.209455 -2.227088 -2.242305 -2.254943 -2.264839 -2.271842 -2.275832 -2.276721 -2.274471 -2.269110 -2.260737 -2.249504 -2.235614 -2.219313 -2.200880 -2.180630 -2.158909 -2.136093 -2.112588 -2.088820 -2.065216 -1.184818 1.151549 1.117963 1.084177 1.050413 1.016837 0.983545 0.950422 0.917412 0.884626 0.851992 0.819227 0.786139 0.752576 0.718433 0.683499 0.647734 0.610950 0.573085 0.533940 0.493467 0.451697 0.408804 0.364930 0.320192 0.274689 0.228510 0.181747 0.134500 0.086826 0.038759 -0.009662 -0.058497 -0.107748 -0.157389 -0.207396 -0.257747 -0.308423 -0.359406 -0.410678 -0.462220 -0.514007 -0.566008 -0.618189 -0.670505 -0.722906 -0.775335 -0.827735 -0.880046 -0.932207 -0.984154 -1.035822 -1.087147 -1.138066 -1.188521 -1.238462 -1.287845 -1.336630 -1.384790 -1.432299 -1.479142 -1.525305 -1.570783 -1.615572 -1.659666 -1.703050 -1.745704 -1.787597 -1.828687 -1.868923 -1.908248 -1.946599 -1.983907 -2.020099 -2.055104 -2.088848 -2.121248 -2.152220 -2.181664 -2.209466 -2.235496 -2.259616 -2.281672 -2.301504 -2.318943 -2.333822 -2.345972 -2.355226 -2.361435 -2.364484 -2.364295 -2.360848 -2.354196 -2.344460 -2.331816 -2.316486 -2.298735 -2.278867 -2.257221 -2.234169 -2.210118 -2.185504 -2.160782 -2.136392 -1.198617 1.164417 1.129814 1.094961 1.060039 1.025276 0.990804 0.956527 0.922364 0.888435 0.854698 0.820866 0.786718 0.752110 0.716919 0.680938 0.644112 0.606241 0.567268 0.526970 0.485276 0.442198 0.397923 0.352607 0.306376 0.259340 0.211594 0.163240 0.114384 0.065072 0.015355 -0.034747 -0.085299 -0.136288 -0.187685 -0.239466 -0.291608 -0.344090 -0.396892 -0.449996 -0.503377 -0.557008 -0.610853 -0.664872 -0.719016 -0.773227 -0.827447 -0.881617 -0.935672 -0.989549 -1.043179 -1.096498 -1.149439 -1.201938 -1.253941 -1.305399 -1.356267 -1.406510 -1.456101 -1.505020 -1.553252 -1.600788 -1.647624 -1.693756 -1.739171 -1.783852 -1.827772 -1.870890 -1.913161 -1.954526 -1.994925 -2.034287 -2.072541 -2.109610 -2.145422 -2.179898 -2.212956 -2.244504 -2.274435 -2.302626 -2.328942 -2.353232 -2.375336 -2.395082 -2.412295 -2.426801 -2.438425 -2.446996 -2.452370 -2.454436 -2.453129 -2.448451 -2.440479 -2.429356 -2.415279 -2.398491 -2.379277 -2.357966 -2.334924 -2.310552 -2.285291 -2.259608 -2.233981 -2.208859 -1.212153 1.177098 1.141508 1.105601 1.069553 1.033600 0.997936 0.962489 0.927156 0.892066 0.857207 0.822287 0.787056 0.751382 0.715118 0.678071 0.640157 0.601184 0.561079 0.519613 0.476682 0.432279 0.386601 0.339820 0.292074 0.243479 0.194141 0.144171 0.093679 0.042703 -0.008693 -0.060510 -0.112812 -0.165570 -0.218756 -0.272344 -0.326309 -0.380629 -0.435284 -0.490251 -0.545503 -0.601008 -0.656725 -0.712608 -0.768602 -0.824647 -0.880682 -0.936642 -0.992462 -1.048073 -1.103407 -1.158395 -1.212971 -1.267072 -1.320645 -1.373640 -1.426017 -1.477742 -1.528792 -1.579149 -1.628800 -1.677740 -1.725966 -1.773469 -1.820233 -1.866233 -1.911436 -1.955795 -1.999258 -2.041761 -2.083239 -2.123616 -2.162816 -2.200763 -2.237381 -2.272589 -2.306301 -2.338419 -2.368829 -2.397399 -2.423985 -2.448427 -2.470555 -2.490188 -2.507144 -2.521242 -2.532300 -2.540149 -2.544646 -2.545689 -2.543228 -2.537287 -2.527967 -2.515434 -2.499903 -2.481638 -2.460949 -2.438190 -2.413755 -2.388080 -2.361639 -2.334929 -2.308447 -2.282649 -1.225352 1.189553 1.153035 1.116081 1.078942 1.041810 1.004942 0.968311 0.931793 0.895524 0.859524 0.823495 0.787164 0.750397 0.713042 0.674903 0.635880 0.595786 0.554527 0.511876 0.467692 0.421945 0.374844 0.326576 0.277291 0.227113 0.176156 0.124545 0.072388 0.019724 -0.033379 -0.086950 -0.141032 -0.195592 -0.250599 -0.306026 -0.361847 -0.418039 -0.474580 -0.531442 -0.588596 -0.646003 -0.703620 -0.761392 -0.819261 -0.877164 -0.935035 -0.992808 -1.050413 -1.107778 -1.164835 -1.221513 -1.277744 -1.333469 -1.388633 -1.443190 -1.497100 -1.550334 -1.602870 -1.654693 -1.705795 -1.756172 -1.805818 -1.854719 -1.902856 -1.950196 -1.996699 -2.042312 -2.086977 -2.130626 -2.173188 -2.214583 -2.254731 -2.293556 -2.330981 -2.366920 -2.401284 -2.433968 -2.464848 -2.493785 -2.520626 -2.545201 -2.567329 -2.586821 -2.603488 -2.617142 -2.627597 -2.634683 -2.638264 -2.638246 -2.634595 -2.627361 -2.616668 -2.602701 -2.585694 -2.565935 -2.543759 -2.519550 -2.493731 -2.466774 -2.439187 -2.411495 -2.384210 -2.357789 -1.238167 1.201721 1.164366 1.126403 1.088181 1.049901 1.011824 0.973996 0.936278 0.898814 0.861655 0.824494 0.787046 0.749163 0.710699 0.671442 0.631288 0.590053 0.547617 0.503764 0.458309 0.411202 0.362657 0.312880 0.262030 0.210243 0.157643 0.104364 0.050514 -0.003864 -0.058707 -0.114065 -0.169959 -0.226352 -0.283212 -0.340511 -0.398222 -0.456319 -0.514778 -0.573567 -0.632652 -0.691992 -0.751534 -0.811221 -0.870989 -0.930773 -0.990504 -1.050111 -1.109521 -1.168663 -1.227463 -1.285851 -1.343760 -1.401131 -1.457910 -1.514052 -1.569520 -1.624289 -1.678340 -1.731660 -1.784245 -1.836090 -1.887185 -1.937511 -1.987043 -2.035742 -2.083559 -2.130439 -2.176317 -2.221120 -2.264770 -2.307185 -2.348285 -2.387991 -2.426222 -2.462891 -2.497905 -2.531150 -2.562492 -2.591785 -2.618865 -2.643553 -2.665658 -2.684980 -2.701325 -2.714500 -2.724314 -2.730599 -2.733225 -2.732108 -2.727235 -2.718680 -2.706588 -2.691163 -2.672659 -2.651390 -2.627720 -2.602059 -2.574869 -2.546657 -2.517962 -2.489334 -2.461298 -2.434307 -1.250594 1.213552 1.175454 1.136559 1.097258 1.057860 1.018583 0.979546 0.940614 0.901940 0.863604 0.825289 0.786708 0.747685 0.708095 0.667696 0.626392 0.583991 0.540355 0.495283 0.448540 0.400053 0.350045 0.298734 0.246296 0.192875 0.138606 0.083633 0.028061 -0.028060 -0.084675 -0.141853 -0.199590 -0.257849 -0.316595 -0.375800 -0.435433 -0.495468 -0.555876 -0.616624 -0.677671 -0.738970 -0.800464 -0.862092 -0.923784 -0.985473 -1.047086 -1.108549 -1.169787 -1.230726 -1.291291 -1.351411 -1.411020 -1.470060 -1.528478 -1.586229 -1.643283 -1.699615 -1.755210 -1.810059 -1.864159 -1.917502 -1.970073 -2.021849 -2.072797 -2.122871 -2.172018 -2.220176 -2.267276 -2.313240 -2.357983 -2.401423 -2.443476 -2.484065 -2.523104 -2.560505 -2.596166 -2.629964 -2.661760 -2.691397 -2.718702 -2.743483 -2.765538 -2.784662 -2.800654 -2.813314 -2.822451 -2.827898 -2.829531 -2.827280 -2.821154 -2.811250 -2.797733 -2.780826 -2.760806 -2.738013 -2.712841 -2.685733 -2.657189 -2.627751 -2.597988 -2.568474 -2.539737 -2.512225 -1.262696 1.225028 1.186248 1.146513 1.106177 1.065668 1.025216 0.984964 0.944803 0.904905 0.865373 0.825885 0.786155 0.745968 0.705234 0.663670 0.621196 0.577608 0.532747 0.486438 0.438389 0.388505 0.337010 0.284144 0.230092 0.175012 0.119047 0.062354 0.005032 -0.052861 -0.111283 -0.170312 -0.229924 -0.290081 -0.350747 -0.411889 -0.473478 -0.535484 -0.597874 -0.660611 -0.723649 -0.786936 -0.850409 -0.914002 -0.977644 -1.041261 -1.104780 -1.168121 -1.231208 -1.293966 -1.356318 -1.418193 -1.479526 -1.540258 -1.600339 -1.659726 -1.718392 -1.776317 -1.833487 -1.889898 -1.945544 -2.000413 -2.054487 -2.107735 -2.160117 -2.211583 -2.262074 -2.311523 -2.359853 -2.406984 -2.452826 -2.497294 -2.540305 -2.581779 -2.621628 -2.659761 -2.696066 -2.730413 -2.762654 -2.792624 -2.820136 -2.844988 -2.866969 -2.885866 -2.901472 -2.913584 -2.922007 -2.926579 -2.927183 -2.923764 -2.916356 -2.905076 -2.890109 -2.871695 -2.850140 -2.825812 -2.799135 -2.770588 -2.740711 -2.710079 -2.679291 -2.648939 -2.619550 -2.591557 +0.128717 0.128602 0.128402 0.128182 0.127976 0.127804 0.127677 0.127595 0.127561 0.127572 0.127629 0.127728 0.127867 0.128042 0.128247 0.128479 0.128729 0.128991 0.129258 0.129523 0.129777 0.130014 0.130225 0.130404 0.130542 0.130634 0.130673 0.130653 0.130570 0.130418 0.130193 0.129892 0.129510 0.129047 0.128500 0.127870 0.127155 0.126355 0.125472 0.124508 0.123467 0.122353 0.121169 0.119918 0.118605 0.117235 0.115809 0.114330 0.112801 0.111224 0.109598 0.107926 0.106205 0.104433 0.102605 0.100718 0.098769 0.096752 0.094663 0.092498 +0.168397 0.169062 0.169715 0.170385 0.171083 0.171804 0.172538 0.173269 0.173986 0.174675 0.175323 0.175919 0.176451 0.176909 0.177284 0.177568 0.177754 0.177834 0.177804 0.177657 0.177391 0.177001 0.176487 0.175846 0.175078 0.174183 0.173164 0.172026 0.170771 0.169405 0.167935 0.166365 0.164700 0.162951 0.161125 0.159228 0.157265 0.155241 0.153157 0.151009 0.148796 0.146514 0.144149 0.141693 0.139139 0.136477 0.133696 0.130790 0.127741 0.124531 0.121140 0.117564 0.113810 0.109890 0.105805 0.101570 0.097197 0.092696 0.088074 0.083338 +0.226643 0.228072 0.229393 0.230613 0.231723 0.232707 0.233550 0.234237 0.234756 0.235098 0.235255 0.235221 0.234993 0.234569 0.233948 0.233132 0.232126 0.230935 0.229565 0.228026 0.226326 0.224475 0.222484 0.220367 0.218143 0.215830 0.213440 0.210985 0.208473 0.205897 0.203249 0.200520 0.197693 0.194748 0.191672 0.188451 0.185067 0.181496 0.177711 0.173674 0.169360 0.164764 0.159907 0.154797 0.149434 0.143835 0.138024 0.132018 0.125825 0.119455 0.112914 0.106220 0.099398 0.092467 0.085443 0.078340 0.071172 0.063949 0.056685 0.049388 +0.299075 0.300317 0.301289 0.301995 0.302422 0.302561 0.302406 0.301955 0.301210 0.300178 0.298869 0.297294 0.295464 0.293395 0.291107 0.288627 0.285985 0.283218 0.280362 0.277443 0.274473 0.271460 0.268391 0.265247 0.262007 0.258643 0.255130 0.251439 0.247532 0.243356 0.238852 0.233954 0.228637 0.222926 0.216830 0.210353 0.203516 0.196365 0.188917 0.181179 0.173159 0.164881 0.156385 0.147701 0.138854 0.129865 0.120751 0.111530 0.102214 0.092819 0.083356 0.073836 0.064271 0.054670 0.045044 0.035403 0.025754 0.016104 0.006460 -0.003173 +0.379238 0.379242 0.378835 0.378027 0.376828 0.375249 0.373306 0.371023 0.368432 0.365580 0.362520 0.359307 0.355993 0.352622 0.349221 0.345797 0.342334 0.338808 0.335182 0.331415 0.327457 0.323254 0.318711 0.313719 0.308189 0.302102 0.295450 0.288217 0.280436 0.272167 0.263431 0.254243 0.244639 0.234678 0.224405 0.213869 0.203103 0.192134 0.180973 0.169639 0.158152 0.146528 0.134784 0.122931 0.110984 0.098957 0.086862 0.074712 0.062520 0.050300 0.038061 0.025814 0.013566 0.001323 -0.010909 -0.023120 -0.035298 -0.047426 -0.059484 -0.071448 +0.462045 0.460044 0.457610 0.454802 0.451683 0.448324 0.444801 0.441189 0.437544 0.433904 0.430278 0.426640 0.422940 0.419113 0.415089 0.410773 0.406018 0.400690 0.394702 0.387999 0.380509 0.372237 0.363246 0.353556 0.343190 0.332211 0.320701 0.308737 0.296376 0.283672 0.270674 0.257422 0.243937 0.230244 0.216365 0.202316 0.188092 0.173710 0.159188 0.144540 0.129783 0.114933 0.100004 0.085011 0.069970 0.054894 0.039795 0.024683 0.009565 -0.005552 -0.020663 -0.035756 -0.050818 -0.065828 -0.080761 -0.095585 -0.110260 -0.124736 -0.138960 -0.152872 +0.545296 0.541680 0.537969 0.534252 0.530603 0.527040 0.523523 0.519983 0.516328 0.512429 0.508094 0.503177 0.497562 0.491132 0.483752 0.475370 0.466005 0.455647 0.444344 0.432201 0.419336 0.405845 0.391808 0.377291 0.362349 0.347030 0.331374 0.315414 0.299182 0.282710 0.266026 0.249137 0.232071 0.214846 0.197454 0.179904 0.162213 0.144399 0.126478 0.108467 0.090382 0.072240 0.054055 0.035842 0.017608 -0.000638 -0.018892 -0.037145 -0.055386 -0.073597 -0.091750 -0.109810 -0.127731 -0.145456 -0.162918 -0.180051 -0.196784 -0.213050 -0.228774 -0.243872 +0.634417 0.631156 0.627969 0.624748 0.621264 0.617311 0.612780 0.607526 0.601387 0.594193 0.585824 0.576185 0.565236 0.553073 0.539859 0.525730 0.510799 0.495162 0.478901 0.462084 0.444769 0.427006 0.408839 0.390303 0.371429 0.352242 0.332767 0.313031 0.293070 0.272910 0.252557 0.232040 0.211368 0.190524 0.169524 0.148386 0.127130 0.105773 0.084335 0.062833 0.041284 0.019697 -0.001917 -0.023554 -0.045208 -0.066868 -0.088516 -0.110121 -0.131639 -0.153015 -0.174175 -0.195039 -0.215526 -0.235556 -0.255049 -0.273925 -0.292101 -0.309478 -0.325924 -0.341278 +0.735578 0.731496 0.726839 0.721484 0.715209 0.707793 0.698962 0.688574 0.676693 0.663493 0.649128 0.633734 0.617406 0.600231 0.582286 0.563646 0.544379 0.524544 0.504195 0.483376 0.462125 0.440472 0.418443 0.396064 0.373358 0.350349 0.327062 0.303536 0.279804 0.255874 0.231775 0.207513 0.183064 0.158448 0.133686 0.108799 0.083811 0.058741 0.033605 0.008415 -0.016820 -0.042096 -0.067406 -0.092739 -0.118066 -0.143344 -0.168514 -0.193496 -0.218193 -0.242505 -0.266339 -0.289603 -0.312201 -0.334045 -0.355042 -0.375084 -0.394026 -0.411691 -0.427876 -0.442359 +0.836616 0.828733 0.819394 0.808546 0.796306 0.782807 0.768163 0.752447 0.735696 0.717971 0.699319 0.679810 0.659490 0.638420 0.616641 0.594205 0.571164 0.547566 0.523450 0.498848 0.473790 0.448305 0.422421 0.396163 0.369559 0.342637 0.315437 0.288007 0.260360 0.232526 0.204512 0.176287 0.147873 0.119295 0.090579 0.061750 0.032826 0.003821 -0.025256 -0.054398 -0.083602 -0.112854 -0.142121 -0.171350 -0.200467 -0.229372 -0.257947 -0.286074 -0.313640 -0.340537 -0.366661 -0.391907 -0.416171 -0.439342 -0.461284 -0.481820 -0.500752 -0.517862 -0.532889 -0.545514 +0.923379 0.908730 0.893210 0.876927 0.859907 0.842154 0.823650 0.804372 0.784285 0.763334 0.741493 0.718779 0.695217 0.670850 0.645715 0.619836 0.593258 0.566032 0.538206 0.509821 0.480917 0.451528 0.421690 0.391435 0.360798 0.329819 0.298558 0.267054 0.235326 0.203399 0.171229 0.138837 0.106253 0.073508 0.040624 0.007621 -0.025491 -0.058700 -0.092007 -0.125399 -0.158843 -0.192280 -0.225631 -0.258782 -0.291594 -0.323928 -0.355648 -0.386628 -0.416743 -0.445877 -0.473917 -0.500747 -0.526240 -0.550247 -0.572594 -0.593073 -0.611418 -0.627302 -0.640346 -0.650149 +0.993425 0.974105 0.954344 0.934203 0.913695 0.892744 0.871240 0.849106 0.826266 0.802658 0.778188 0.752782 0.726411 0.699073 0.670805 0.641636 0.611601 0.580767 0.549205 0.516976 0.484132 0.450723 0.416794 0.382388 0.347553 0.312353 0.276858 0.241089 0.205091 0.168820 0.132281 0.095509 0.058537 0.021390 -0.015913 -0.053359 -0.090942 -0.128658 -0.166478 -0.204347 -0.242184 -0.279875 -0.317269 -0.354198 -0.390504 -0.426033 -0.460636 -0.494179 -0.526540 -0.557600 -0.587232 -0.615312 -0.641708 -0.666239 -0.688659 -0.708659 -0.725848 -0.739762 -0.749926 -0.755987 +1.058549 1.035137 1.011415 0.987428 0.963227 0.938823 0.914208 0.889266 0.863809 0.837677 0.810735 0.782840 0.753864 0.723759 0.692505 0.660143 0.626704 0.592259 0.556910 0.520749 0.483849 0.446280 0.408103 0.369376 0.330166 0.290566 0.250636 0.210419 0.169909 0.129068 0.087938 0.046556 0.004949 -0.036860 -0.078857 -0.121038 -0.163388 -0.205862 -0.248386 -0.290853 -0.333115 -0.374988 -0.416283 -0.456817 -0.496411 -0.534898 -0.572141 -0.608017 -0.642397 -0.675163 -0.706208 -0.735403 -0.762552 -0.787386 -0.809541 -0.828540 -0.843850 -0.854935 -0.861381 -0.863009 +1.122305 1.094857 1.067207 1.039341 1.011341 0.983264 0.955082 0.926771 0.898284 0.869454 0.839959 0.809582 0.778078 0.745308 0.711195 0.675718 0.638918 0.600851 0.561654 0.521459 0.480375 0.438494 0.395899 0.352671 0.308904 0.264717 0.220154 0.175268 0.129994 0.084356 0.038399 -0.007845 -0.054349 -0.101097 -0.148080 -0.195274 -0.242618 -0.290022 -0.337354 -0.384434 -0.431053 -0.476994 -0.522046 -0.566004 -0.608688 -0.649962 -0.689695 -0.727766 -0.764072 -0.798514 -0.830961 -0.861212 -0.888968 -0.913802 -0.935169 -0.952485 -0.965155 -0.972683 -0.974811 -0.971542 +1.185738 1.154215 1.122582 1.090779 1.058847 1.026912 0.995008 0.963055 0.931027 0.898924 0.866582 0.833560 0.799502 0.764091 0.727171 0.688643 0.648509 0.606810 0.563696 0.519359 0.473951 0.427596 0.380407 0.332488 0.283976 0.234992 0.185599 0.135791 0.085524 0.034851 -0.016186 -0.067553 -0.119230 -0.171200 -0.223433 -0.275854 -0.328360 -0.380798 -0.432958 -0.484607 -0.535499 -0.585388 -0.634048 -0.681289 -0.726965 -0.770950 -0.813132 -0.853422 -0.891721 -0.927900 -0.961752 -0.992944 -1.021004 -1.045347 -1.065338 -1.080327 -1.089724 -1.093146 -1.090502 -1.082097 +1.248868 1.213505 1.177878 1.142058 1.106090 1.070133 1.034308 0.998569 0.962814 0.927055 0.891330 0.855331 0.818549 0.780439 0.740704 0.699156 0.655695 0.610347 0.563246 0.514652 0.464772 0.413774 0.361803 0.309002 0.255555 0.201569 0.147124 0.092140 0.036641 -0.019316 -0.075690 -0.132453 -0.189578 -0.247028 -0.304724 -0.362549 -0.420330 -0.477836 -0.534810 -0.590971 -0.646043 -0.699775 -0.751962 -0.802449 -0.851114 -0.897856 -0.942592 -0.985226 -1.025625 -1.063577 -1.098723 -1.130576 -1.158523 -1.181885 -1.199963 -1.212073 -1.217675 -1.216529 -1.208810 -1.195215 +1.310753 1.272119 1.232966 1.193283 1.153240 1.113147 1.073234 1.033529 0.993908 0.954307 0.914846 0.875441 0.835616 0.794668 0.752042 0.707449 0.660663 0.611639 0.560476 0.507502 0.452996 0.397179 0.340238 0.282362 0.223775 0.164585 0.104835 0.044439 -0.016537 -0.078034 -0.140014 -0.202441 -0.265270 -0.328420 -0.391766 -0.455121 -0.518236 -0.580827 -0.642586 -0.703201 -0.762395 -0.819940 -0.875671 -0.929464 -0.981224 -1.030875 -1.078327 -1.123440 -1.165991 -1.205616 -1.241827 -1.274006 -1.301438 -1.323379 -1.339064 -1.347795 -1.349133 -1.343056 -1.330112 -1.311369 +1.370202 1.329276 1.287113 1.244058 1.200281 1.156063 1.111936 1.068102 1.024461 0.980866 0.937489 0.894329 0.851104 0.807089 0.761450 0.713718 0.663572 0.610828 0.555529 0.498048 0.438759 0.377943 0.315838 0.252695 0.188759 0.124161 0.058841 -0.007210 -0.073915 -0.141218 -0.209068 -0.277414 -0.346176 -0.415225 -0.484368 -0.553339 -0.621832 -0.689513 -0.756036 -0.821091 -0.884420 -0.945840 -1.005217 -1.062459 -1.117496 -1.170247 -1.220568 -1.268222 -1.312850 -1.353975 -1.390993 -1.423175 -1.449734 -1.469842 -1.482671 -1.487557 -1.484225 -1.472977 -1.454750 -1.430950 +1.425945 1.383528 1.339521 1.293812 1.246699 1.198783 1.150493 1.102414 1.054590 1.006869 0.959390 0.912273 0.865327 0.817945 0.769108 0.718128 0.664559 0.608041 0.548527 0.486411 0.422175 0.356176 0.288713 0.220109 0.150621 0.080364 0.009228 -0.062727 -0.135421 -0.208788 -0.282763 -0.357268 -0.432177 -0.507295 -0.582348 -0.657008 -0.730921 -0.803708 -0.875019 -0.944558 -1.012114 -1.077537 -1.140727 -1.201620 -1.260146 -1.316165 -1.369430 -1.419584 -1.466168 -1.508604 -1.546178 -1.578077 -1.603417 -1.621283 -1.630806 -1.631424 -1.623105 -1.606538 -1.583019 -1.554263 +1.478287 1.434563 1.389036 1.341562 1.292096 1.240814 1.188788 1.136520 1.084384 1.032402 0.980656 0.929428 0.878503 0.827493 0.775237 0.720856 0.663743 0.603390 0.539578 0.472693 0.403344 0.331975 0.258956 0.184692 0.109434 0.033260 -0.043935 -0.122047 -0.200986 -0.280670 -0.361019 -0.441912 -0.523161 -0.604491 -0.685556 -0.765983 -0.845366 -0.923312 -0.999480 -1.073615 -1.145544 -1.215149 -1.282366 -1.347138 -1.409337 -1.468718 -1.524920 -1.577499 -1.625906 -1.669470 -1.707377 -1.738711 -1.762486 -1.777700 -1.783498 -1.779477 -1.765941 -1.743955 -1.715150 -1.681534 +1.525569 1.482319 1.435807 1.386723 1.335411 1.281855 1.226404 1.170326 1.113896 1.057533 1.001379 0.945871 0.890777 0.835898 0.780002 0.722055 0.661259 0.596974 0.528773 0.456982 0.382346 0.305415 0.226642 0.146505 0.065268 -0.017088 -0.100589 -0.185110 -0.270547 -0.356805 -0.443771 -0.531267 -0.619028 -0.706698 -0.793883 -0.880160 -0.965092 -1.048286 -1.129434 -1.208322 -1.284809 -1.358817 -1.430301 -1.499152 -1.565142 -1.627912 -1.687017 -1.741935 -1.792041 -1.836566 -1.874588 -1.905074 -1.926934 -1.939097 -1.940785 -1.931820 -1.912886 -1.885403 -1.851321 -1.812957 +1.566315 1.524802 1.479214 1.429472 1.376488 1.320920 1.263103 1.203502 1.143093 1.082307 1.021619 0.961668 0.902254 0.843302 0.783557 0.721843 0.657210 0.588882 0.516187 0.439348 0.359250 0.276561 0.191837 0.105614 0.018160 -0.070628 -0.160683 -0.251867 -0.344060 -0.437146 -0.530963 -0.625261 -0.719689 -0.813833 -0.907253 -0.999480 -1.090067 -1.178640 -1.264932 -1.348761 -1.430027 -1.508684 -1.584649 -1.657726 -1.727568 -1.793728 -1.855690 -1.912870 -1.964564 -2.009891 -2.047808 -2.077158 -2.096752 -2.105488 -2.102712 -2.088554 -2.064071 -2.031023 -1.991678 -1.948723 +1.599400 1.561319 1.517580 1.468850 1.415403 1.358022 1.298085 1.235856 1.171736 1.106731 1.041419 0.976878 0.913010 0.849786 0.786007 0.720337 0.651695 0.579184 0.501886 0.419852 0.334113 0.245468 0.154593 0.062077 -0.031851 -0.127315 -0.224178 -0.322282 -0.421492 -0.521657 -0.622547 -0.723829 -0.825079 -0.925839 -1.025616 -1.123916 -1.220296 -1.314414 -1.406037 -1.495024 -1.581314 -1.664852 -1.745475 -1.822871 -1.896602 -1.966142 -2.030921 -2.090297 -2.143474 -2.189445 -2.227031 -2.254956 -2.271933 -2.276886 -2.269336 -2.249773 -2.219606 -2.180927 -2.136371 -2.089055 +1.624851 1.590638 1.550529 1.503666 1.451132 1.393246 1.331239 1.266860 1.199665 1.130687 1.060803 0.991545 0.923092 0.855416 0.787425 0.717615 0.644798 0.567939 0.485924 0.398547 0.306984 0.212187 0.114961 0.015928 -0.084730 -0.187120 -0.291046 -0.396334 -0.502823 -0.610306 -0.718477 -0.826919 -0.935156 -1.042676 -1.148950 -1.253467 -1.355807 -1.455655 -1.552820 -1.647205 -1.738766 -1.827384 -1.912794 -1.994581 -2.072223 -2.145133 -2.212699 -2.274218 -2.328774 -2.375226 -2.412252 -2.438456 -2.452480 -2.453312 -2.440720 -2.415560 -2.379579 -2.335224 -2.285564 -2.234206 +1.644484 1.613521 1.576932 1.533640 1.482832 1.425601 1.362862 1.296121 1.226569 1.154008 1.079755 1.005702 0.932536 0.860255 0.787882 0.713750 0.636575 0.555208 0.468351 0.375479 0.277909 0.176760 0.072976 -0.032793 -0.140450 -0.250021 -0.361273 -0.474009 -0.588030 -0.703061 -0.818712 -0.934497 -1.049886 -1.164323 -1.277246 -1.388150 -1.496631 -1.602414 -1.705352 -1.805389 -1.902443 -1.996305 -2.086605 -2.172841 -2.254411 -2.330690 -2.401028 -2.464635 -2.520465 -2.567230 -2.603459 -2.627645 -2.638392 -2.634795 -2.616924 -2.585987 -2.544069 -2.494031 -2.439454 -2.384425 +1.659936 1.631338 1.597863 1.557830 1.510260 1.454502 1.392062 1.324083 1.252024 1.176555 1.098156 1.019368 0.941373 0.864347 0.787439 0.708813 0.627098 0.541045 0.449210 0.350690 0.246925 0.139220 0.028662 -0.084077 -0.198996 -0.316005 -0.434846 -0.555293 -0.677094 -0.799895 -0.923225 -1.046538 -1.169251 -1.290769 -1.410513 -1.527985 -1.642804 -1.754744 -1.863707 -1.969636 -2.072377 -2.171618 -2.266900 -2.357633 -2.443154 -2.522812 -2.595911 -2.661551 -2.718548 -2.765449 -2.800637 -2.822515 -2.829676 -2.821369 -2.798002 -2.761109 -2.713156 -2.657489 -2.598249 -2.539943 # Torque coefficient -0.030572 0.031393 0.032202 0.032999 0.033782 0.034552 0.035309 0.036051 0.036779 0.037492 0.038189 0.038871 0.039537 0.040186 0.040818 0.041433 0.042030 0.042609 0.043169 0.043710 0.044232 0.044733 0.045214 0.045674 0.046113 0.046530 0.046925 0.047297 0.047647 0.047974 0.048278 0.048560 0.048819 0.049057 0.049272 0.049465 0.049637 0.049787 0.049916 0.050024 0.050110 0.050176 0.050219 0.050242 0.050243 0.050224 0.050184 0.050123 0.050041 0.049938 0.049815 0.049671 0.049507 0.049323 0.049119 0.048895 0.048650 0.048384 0.048095 0.047785 0.047450 0.047090 0.046704 0.046292 0.045852 0.045385 0.044892 0.044373 0.043829 0.043260 0.042665 0.042044 0.041397 0.040725 0.040028 0.039308 0.038566 0.037801 0.037013 0.036204 0.035372 0.034519 0.033645 0.032749 0.031834 0.030899 0.029946 0.028976 0.027991 0.026990 0.025975 0.024947 0.023906 0.022852 0.021788 0.020712 0.019626 0.018531 0.017426 0.016312 0.015190 0.014061 0.012924 0.011779 -0.036019 0.036845 0.037655 0.038448 0.039224 0.039983 0.040724 0.041448 0.042153 0.042839 0.043505 0.044152 0.044778 0.045384 0.045969 0.046531 0.047071 0.047588 0.048082 0.048551 0.048997 0.049418 0.049814 0.050186 0.050534 0.050858 0.051158 0.051434 0.051688 0.051917 0.052124 0.052308 0.052468 0.052606 0.052719 0.052809 0.052875 0.052918 0.052936 0.052931 0.052901 0.052847 0.052769 0.052668 0.052544 0.052397 0.052227 0.052033 0.051815 0.051572 0.051303 0.051008 0.050685 0.050333 0.049951 0.049538 0.049096 0.048624 0.048124 0.047596 0.047039 0.046453 0.045838 0.045195 0.044524 0.043826 0.043103 0.042355 0.041580 0.040780 0.039955 0.039104 0.038229 0.037330 0.036407 0.035462 0.034497 0.033512 0.032508 0.031487 0.030450 0.029396 0.028327 0.027243 0.026146 0.025035 0.023912 0.022778 0.021631 0.020475 0.019307 0.018131 0.016944 0.015749 0.014546 0.013335 0.012115 0.010889 0.009655 0.008414 0.007167 0.005914 0.004654 0.003389 -0.041143 0.041957 0.042752 0.043527 0.044282 0.045016 0.045728 0.046418 0.047086 0.047730 0.048351 0.048947 0.049518 0.050065 0.050585 0.051080 0.051549 0.051993 0.052411 0.052805 0.053173 0.053516 0.053834 0.054128 0.054396 0.054639 0.054857 0.055050 0.055216 0.055355 0.055468 0.055553 0.055611 0.055641 0.055644 0.055620 0.055569 0.055491 0.055386 0.055253 0.055093 0.054904 0.054685 0.054436 0.054155 0.053841 0.053493 0.053111 0.052696 0.052249 0.051770 0.051260 0.050717 0.050142 0.049535 0.048897 0.048228 0.047531 0.046805 0.046051 0.045269 0.044458 0.043618 0.042751 0.041857 0.040936 0.039991 0.039023 0.038032 0.037021 0.035989 0.034938 0.033869 0.032782 0.031677 0.030557 0.029420 0.028269 0.027104 0.025925 0.024732 0.023528 0.022311 0.021083 0.019844 0.018595 0.017335 0.016066 0.014788 0.013501 0.012206 0.010903 0.009592 0.008274 0.006948 0.005616 0.004276 0.002930 0.001578 0.000219 -0.001146 -0.002516 -0.003891 -0.005271 -0.045892 0.046686 0.047456 0.048203 0.048925 0.049623 0.050295 0.050942 0.051562 0.052157 0.052726 0.053268 0.053785 0.054275 0.054739 0.055176 0.055587 0.055972 0.056330 0.056661 0.056965 0.057240 0.057486 0.057703 0.057889 0.058045 0.058171 0.058265 0.058328 0.058359 0.058359 0.058326 0.058262 0.058164 0.058032 0.057866 0.057663 0.057423 0.057145 0.056830 0.056477 0.056088 0.055663 0.055203 0.054706 0.054173 0.053604 0.053001 0.052365 0.051697 0.050998 0.050266 0.049502 0.048706 0.047879 0.047021 0.046134 0.045219 0.044278 0.043312 0.042323 0.041310 0.040275 0.039218 0.038140 0.037042 0.035925 0.034789 0.033635 0.032464 0.031276 0.030072 0.028852 0.027617 0.026367 0.025104 0.023827 0.022538 0.021237 0.019924 0.018599 0.017264 0.015919 0.014565 0.013201 0.011828 0.010447 0.009057 0.007659 0.006254 0.004841 0.003421 0.001993 0.000557 -0.000885 -0.002335 -0.003791 -0.005254 -0.006723 -0.008196 -0.009675 -0.011156 -0.012641 -0.014128 -0.050257 0.051026 0.051769 0.052487 0.053179 0.053846 0.054485 0.055099 0.055685 0.056244 0.056776 0.057281 0.057757 0.058205 0.058624 0.059012 0.059369 0.059695 0.059988 0.060247 0.060472 0.060661 0.060815 0.060931 0.061010 0.061051 0.061053 0.061015 0.060936 0.060815 0.060651 0.060443 0.060193 0.059901 0.059569 0.059196 0.058782 0.058328 0.057834 0.057301 0.056731 0.056124 0.055483 0.054805 0.054092 0.053343 0.052559 0.051742 0.050891 0.050011 0.049101 0.048164 0.047199 0.046210 0.045196 0.044158 0.043098 0.042015 0.040911 0.039786 0.038640 0.037473 0.036287 0.035082 0.033858 0.032616 0.031356 0.030080 0.028787 0.027478 0.026154 0.024815 0.023463 0.022097 0.020718 0.019328 0.017925 0.016512 0.015088 0.013654 0.012210 0.010756 0.009294 0.007823 0.006344 0.004856 0.003360 0.001855 0.000342 -0.001179 -0.002709 -0.004247 -0.005793 -0.007347 -0.008907 -0.010475 -0.012047 -0.013625 -0.015206 -0.016789 -0.018374 -0.019960 -0.021545 -0.023129 -0.054320 0.055079 0.055812 0.056518 0.057197 0.057848 0.058471 0.059065 0.059628 0.060161 0.060661 0.061128 0.061561 0.061957 0.062316 0.062636 0.062915 0.063152 0.063345 0.063495 0.063598 0.063653 0.063658 0.063614 0.063520 0.063376 0.063184 0.062945 0.062660 0.062328 0.061950 0.061526 0.061060 0.060553 0.060006 0.059419 0.058793 0.058127 0.057422 0.056679 0.055899 0.055085 0.054238 0.053359 0.052450 0.051513 0.050548 0.049556 0.048539 0.047497 0.046431 0.045341 0.044228 0.043093 0.041936 0.040758 0.039559 0.038338 0.037096 0.035835 0.034553 0.033252 0.031932 0.030593 0.029238 0.027865 0.026476 0.025071 0.023652 0.022218 0.020770 0.019309 0.017836 0.016351 0.014854 0.013347 0.011829 0.010301 0.008763 0.007215 0.005658 0.004092 0.002517 0.000933 -0.000661 -0.002265 -0.003878 -0.005501 -0.007133 -0.008775 -0.010426 -0.012085 -0.013751 -0.015424 -0.017101 -0.018783 -0.020467 -0.022152 -0.023837 -0.025521 -0.027201 -0.028878 -0.030550 -0.032215 -0.058243 0.059008 0.059744 0.060449 0.061122 0.061761 0.062366 0.062933 0.063462 0.063948 0.064390 0.064787 0.065136 0.065434 0.065679 0.065869 0.066002 0.066076 0.066093 0.066053 0.065957 0.065806 0.065600 0.065341 0.065029 0.064667 0.064257 0.063802 0.063302 0.062759 0.062171 0.061541 0.060870 0.060159 0.059409 0.058624 0.057805 0.056953 0.056070 0.055156 0.054212 0.053241 0.052242 0.051217 0.050166 0.049090 0.047990 0.046865 0.045716 0.044544 0.043349 0.042131 0.040891 0.039629 0.038346 0.037040 0.035713 0.034365 0.032997 0.031609 0.030201 0.028776 0.027332 0.025871 0.024393 0.022900 0.021392 0.019870 0.018333 0.016784 0.015222 0.013647 0.012061 0.010464 0.008856 0.007237 0.005608 0.003968 0.002319 0.000659 -0.001012 -0.002693 -0.004385 -0.006089 -0.007803 -0.009529 -0.011266 -0.013013 -0.014770 -0.016535 -0.018308 -0.020087 -0.021871 -0.023657 -0.025445 -0.027231 -0.029015 -0.030795 -0.032569 -0.034336 -0.036094 -0.037841 -0.039578 -0.041302 -0.062135 0.062903 0.063632 0.064318 0.064961 0.065556 0.066101 0.066592 0.067025 0.067397 0.067706 0.067950 0.068128 0.068241 0.068289 0.068272 0.068190 0.068046 0.067840 0.067575 0.067255 0.066883 0.066461 0.065988 0.065467 0.064900 0.064289 0.063635 0.062943 0.062212 0.061446 0.060645 0.059810 0.058944 0.058047 0.057120 0.056163 0.055178 0.054165 0.053125 0.052059 0.050966 0.049847 0.048703 0.047534 0.046341 0.045122 0.043879 0.042613 0.041323 0.040010 0.038674 0.037316 0.035935 0.034531 0.033106 0.031660 0.030193 0.028706 0.027200 0.025676 0.024133 0.022574 0.020999 0.019408 0.017802 0.016181 0.014547 0.012900 0.011240 0.009568 0.007883 0.006187 0.004479 0.002760 0.001030 -0.000712 -0.002466 -0.004232 -0.006011 -0.007802 -0.009606 -0.011423 -0.013253 -0.015094 -0.016948 -0.018812 -0.020685 -0.022566 -0.024452 -0.026342 -0.028234 -0.030125 -0.032012 -0.033894 -0.035768 -0.037634 -0.039488 -0.041329 -0.043157 -0.044970 -0.046768 -0.048552 -0.050322 -0.065925 0.066647 0.067311 0.067912 0.068447 0.068913 0.069308 0.069631 0.069880 0.070055 0.070155 0.070181 0.070133 0.070016 0.069833 0.069586 0.069279 0.068914 0.068493 0.068019 0.067497 0.066930 0.066320 0.065670 0.064982 0.064257 0.063497 0.062703 0.061876 0.061017 0.060126 0.059206 0.058255 0.057275 0.056267 0.055230 0.054166 0.053074 0.051955 0.050809 0.049636 0.048436 0.047211 0.045960 0.044683 0.043380 0.042053 0.040700 0.039324 0.037924 0.036500 0.035052 0.033581 0.032086 0.030570 0.029031 0.027471 0.025892 0.024292 0.022674 0.021038 0.019385 0.017715 0.016030 0.014329 0.012614 0.010884 0.009141 0.007384 0.005615 0.003832 0.002037 0.000229 -0.001592 -0.003427 -0.005274 -0.007136 -0.009012 -0.010902 -0.012807 -0.014726 -0.016660 -0.018607 -0.020568 -0.022539 -0.024521 -0.026510 -0.028505 -0.030502 -0.032499 -0.034493 -0.036481 -0.038461 -0.040430 -0.042386 -0.044328 -0.046253 -0.048160 -0.050050 -0.051922 -0.053778 -0.055618 -0.057447 -0.059267 -0.069254 0.069840 0.070349 0.070778 0.071125 0.071389 0.071569 0.071666 0.071681 0.071620 0.071485 0.071278 0.071004 0.070667 0.070272 0.069824 0.069328 0.068787 0.068204 0.067582 0.066923 0.066227 0.065496 0.064730 0.063932 0.063101 0.062237 0.061343 0.060418 0.059462 0.058477 0.057463 0.056419 0.055346 0.054245 0.053115 0.051957 0.050771 0.049556 0.048313 0.047043 0.045745 0.044420 0.043069 0.041690 0.040285 0.038854 0.037398 0.035916 0.034410 0.032878 0.031321 0.029740 0.028136 0.026510 0.024861 0.023192 0.021503 0.019795 0.018068 0.016323 0.014562 0.012784 0.010990 0.009180 0.007356 0.005517 0.003664 0.001796 -0.000086 -0.001982 -0.003892 -0.005818 -0.007759 -0.009715 -0.011687 -0.013676 -0.015681 -0.017703 -0.019741 -0.021794 -0.023861 -0.025941 -0.028031 -0.030129 -0.032232 -0.034337 -0.036441 -0.038539 -0.040629 -0.042708 -0.044773 -0.046822 -0.048852 -0.050863 -0.052853 -0.054821 -0.056769 -0.058698 -0.060611 -0.062511 -0.064403 -0.066293 -0.068187 -0.071698 0.072083 0.072376 0.072578 0.072691 0.072716 0.072658 0.072521 0.072310 0.072033 0.071695 0.071302 0.070860 0.070373 0.069844 0.069275 0.068668 0.068024 0.067345 0.066631 0.065883 0.065101 0.064287 0.063439 0.062560 0.061649 0.060707 0.059735 0.058732 0.057698 0.056634 0.055541 0.054417 0.053263 0.052079 0.050864 0.049620 0.048346 0.047042 0.045709 0.044346 0.042955 0.041535 0.040086 0.038609 0.037104 0.035572 0.034013 0.032428 0.030815 0.029177 0.027513 0.025825 0.024114 0.022380 0.020624 0.018847 0.017050 0.015234 0.013400 0.011547 0.009677 0.007791 0.005887 0.003968 0.002033 0.000082 -0.001884 -0.003867 -0.005865 -0.007881 -0.009913 -0.011963 -0.014031 -0.016117 -0.018222 -0.020345 -0.022486 -0.024643 -0.026817 -0.029004 -0.031203 -0.033410 -0.035622 -0.037836 -0.040048 -0.042252 -0.044447 -0.046628 -0.048792 -0.050937 -0.053060 -0.055160 -0.057235 -0.059286 -0.061313 -0.063319 -0.065306 -0.067279 -0.069245 -0.071209 -0.073179 -0.075161 -0.077158 -0.072973 0.073120 0.073175 0.073144 0.073036 0.072856 0.072611 0.072309 0.071955 0.071552 0.071104 0.070615 0.070087 0.069522 0.068920 0.068282 0.067608 0.066900 0.066157 0.065380 0.064570 0.063726 0.062850 0.061941 0.061000 0.060027 0.059022 0.057985 0.056916 0.055816 0.054683 0.053518 0.052321 0.051092 0.049830 0.048536 0.047210 0.045851 0.044461 0.043039 0.041585 0.040101 0.038586 0.037040 0.035465 0.033861 0.032229 0.030567 0.028877 0.027160 0.025416 0.023647 0.021853 0.020035 0.018194 0.016331 0.014447 0.012543 0.010619 0.008677 0.006715 0.004736 0.002739 0.000725 -0.001307 -0.003356 -0.005423 -0.007507 -0.009611 -0.011733 -0.013875 -0.016036 -0.018218 -0.020420 -0.022643 -0.024885 -0.027147 -0.029425 -0.031720 -0.034026 -0.036343 -0.038665 -0.040989 -0.043310 -0.045624 -0.047927 -0.050214 -0.052482 -0.054727 -0.056948 -0.059142 -0.061308 -0.063446 -0.065557 -0.067643 -0.069708 -0.071758 -0.073798 -0.075838 -0.077884 -0.079944 -0.082026 -0.084133 -0.086268 -0.072973 0.072932 0.072822 0.072648 0.072417 0.072134 0.071804 0.071428 0.071010 0.070553 0.070058 0.069524 0.068954 0.068347 0.067703 0.067024 0.066309 0.065558 0.064773 0.063953 0.063099 0.062210 0.061288 0.060331 0.059341 0.058316 0.057257 0.056164 0.055036 0.053874 0.052676 0.051444 0.050176 0.048873 0.047535 0.046161 0.044753 0.043310 0.041833 0.040322 0.038777 0.037200 0.035589 0.033947 0.032273 0.030570 0.028835 0.027071 0.025277 0.023455 0.021606 0.019731 0.017831 0.015907 0.013960 0.011990 0.009999 0.007987 0.005954 0.003902 0.001830 -0.000260 -0.002370 -0.004500 -0.006648 -0.008816 -0.011005 -0.013215 -0.015446 -0.017699 -0.019974 -0.022272 -0.024591 -0.026933 -0.029296 -0.031678 -0.034078 -0.036492 -0.038917 -0.041349 -0.043784 -0.046218 -0.048644 -0.051059 -0.053457 -0.055834 -0.058186 -0.060511 -0.062805 -0.065068 -0.067300 -0.069501 -0.071673 -0.073821 -0.075950 -0.078068 -0.080184 -0.082306 -0.084444 -0.086607 -0.088799 -0.091027 -0.093288 -0.095580 -0.072010 0.071888 0.071712 0.071487 0.071217 0.070903 0.070548 0.070154 0.069721 0.069250 0.068739 0.068190 0.067603 0.066977 0.066314 0.065612 0.064874 0.064098 0.063286 0.062437 0.061551 0.060628 0.059668 0.058671 0.057637 0.056565 0.055456 0.054309 0.053124 0.051901 0.050639 0.049339 0.048000 0.046623 0.045207 0.043754 0.042263 0.040734 0.039169 0.037568 0.035931 0.034259 0.032553 0.030813 0.029041 0.027236 0.025399 0.023531 0.021634 0.019708 0.017754 0.015773 0.013767 0.011736 0.009682 0.007604 0.005505 0.003383 0.001240 -0.000924 -0.003109 -0.005315 -0.007542 -0.009791 -0.012062 -0.014356 -0.016674 -0.019015 -0.021381 -0.023771 -0.026185 -0.028623 -0.031085 -0.033568 -0.036071 -0.038591 -0.041124 -0.043667 -0.046214 -0.048761 -0.051303 -0.053834 -0.056349 -0.058841 -0.061306 -0.063742 -0.066144 -0.068512 -0.070845 -0.073143 -0.075408 -0.077645 -0.079859 -0.082058 -0.084253 -0.086452 -0.088666 -0.090905 -0.093177 -0.095488 -0.097843 -0.100239 -0.102673 -0.105140 -0.070440 0.070312 0.070139 0.069923 0.069664 0.069365 0.069027 0.068646 0.068225 0.067764 0.067260 0.066716 0.066130 0.065503 0.064835 0.064126 0.063376 0.062586 0.061755 0.060884 0.059972 0.059019 0.058025 0.056990 0.055914 0.054797 0.053637 0.052437 0.051194 0.049909 0.048582 0.047213 0.045802 0.044350 0.042855 0.041320 0.039745 0.038130 0.036476 0.034783 0.033052 0.031284 0.029481 0.027643 0.025771 0.023865 0.021926 0.019955 0.017953 0.015922 0.013862 0.011776 0.009663 0.007525 0.005362 0.003175 0.000965 -0.001268 -0.003525 -0.005804 -0.008107 -0.010432 -0.012782 -0.015157 -0.017558 -0.019984 -0.022437 -0.024916 -0.027421 -0.029952 -0.032509 -0.035090 -0.037694 -0.040318 -0.042958 -0.045610 -0.048269 -0.050931 -0.053590 -0.056241 -0.058876 -0.061490 -0.064076 -0.066631 -0.069150 -0.071631 -0.074074 -0.076478 -0.078844 -0.081178 -0.083483 -0.085770 -0.088047 -0.090325 -0.092614 -0.094926 -0.097271 -0.099659 -0.102096 -0.104586 -0.107127 -0.109716 -0.112347 -0.115011 -0.068499 0.068415 0.068289 0.068119 0.067907 0.067650 0.067349 0.067004 0.066613 0.066178 0.065697 0.065171 0.064599 0.063982 0.063318 0.062609 0.061854 0.061054 0.060209 0.059318 0.058382 0.057401 0.056374 0.055301 0.054183 0.053019 0.051810 0.050554 0.049252 0.047904 0.046511 0.045071 0.043586 0.042056 0.040482 0.038864 0.037202 0.035499 0.033754 0.031967 0.030142 0.028279 0.026379 0.024442 0.022469 0.020461 0.018418 0.016344 0.014237 0.012101 0.009935 0.007742 0.005521 0.003274 0.001001 -0.001297 -0.003621 -0.005970 -0.008343 -0.010742 -0.013167 -0.015619 -0.018098 -0.020605 -0.023141 -0.025705 -0.028297 -0.030918 -0.033567 -0.036243 -0.038944 -0.041668 -0.044412 -0.047171 -0.049942 -0.052718 -0.055496 -0.058267 -0.061027 -0.063768 -0.066482 -0.069164 -0.071808 -0.074413 -0.076975 -0.079495 -0.081973 -0.084413 -0.086819 -0.089200 -0.091565 -0.093925 -0.096292 -0.098676 -0.101090 -0.103546 -0.106055 -0.108625 -0.111258 -0.113954 -0.116709 -0.119513 -0.122356 -0.125224 -0.066349 0.066338 0.066282 0.066181 0.066031 0.065833 0.065586 0.065288 0.064940 0.064543 0.064094 0.063594 0.063044 0.062441 0.061787 0.061082 0.060325 0.059517 0.058659 0.057750 0.056790 0.055781 0.054720 0.053610 0.052449 0.051237 0.049976 0.048663 0.047301 0.045888 0.044426 0.042915 0.041354 0.039745 0.038089 0.036385 0.034637 0.032843 0.031006 0.029127 0.027207 0.025248 0.023250 0.021212 0.019138 0.017027 0.014881 0.012701 0.010489 0.008247 0.005974 0.003672 0.001341 -0.001017 -0.003403 -0.005816 -0.008256 -0.010724 -0.013219 -0.015743 -0.018297 -0.020881 -0.023495 -0.026140 -0.028815 -0.031521 -0.034258 -0.037024 -0.039818 -0.042639 -0.045483 -0.048348 -0.051227 -0.054116 -0.057011 -0.059904 -0.062790 -0.065661 -0.068509 -0.071325 -0.074104 -0.076841 -0.079534 -0.082181 -0.084782 -0.087339 -0.089857 -0.092342 -0.094804 -0.097253 -0.099701 -0.102160 -0.104643 -0.107162 -0.109733 -0.112368 -0.115076 -0.117859 -0.120717 -0.123643 -0.126627 -0.129657 -0.132717 -0.135787 -0.064097 0.064168 0.064192 0.064166 0.064089 0.063959 0.063774 0.063533 0.063236 0.062882 0.062471 0.062003 0.061478 0.060894 0.060252 0.059553 0.058796 0.057982 0.057111 0.056184 0.055201 0.054162 0.053068 0.051918 0.050712 0.049452 0.048137 0.046766 0.045342 0.043863 0.042330 0.040745 0.039107 0.037417 0.035677 0.033888 0.032051 0.030167 0.028237 0.026264 0.024249 0.022192 0.020094 0.017956 0.015779 0.013564 0.011314 0.009029 0.006710 0.004360 0.001978 -0.000435 -0.002878 -0.005350 -0.007852 -0.010383 -0.012945 -0.015536 -0.018159 -0.020814 -0.023502 -0.026223 -0.028977 -0.031763 -0.034583 -0.037435 -0.040318 -0.043231 -0.046171 -0.049135 -0.052120 -0.055119 -0.058129 -0.061143 -0.064154 -0.067156 -0.070140 -0.073097 -0.076018 -0.078897 -0.081731 -0.084516 -0.087252 -0.089940 -0.092582 -0.095184 -0.097754 -0.100301 -0.102839 -0.105379 -0.107933 -0.110516 -0.113144 -0.115832 -0.118596 -0.121445 -0.124381 -0.127403 -0.130505 -0.133677 -0.136904 -0.140167 -0.143444 -0.146709 -0.061798 0.061952 0.062058 0.062113 0.062112 0.062053 0.061936 0.061756 0.061515 0.061209 0.060840 0.060406 0.059908 0.059346 0.058718 0.058026 0.057270 0.056450 0.055567 0.054621 0.053614 0.052546 0.051416 0.050226 0.048975 0.047664 0.046293 0.044864 0.043375 0.041828 0.040224 0.038562 0.036845 0.035074 0.033249 0.031372 0.029446 0.027471 0.025449 0.023381 0.021269 0.019114 0.016915 0.014674 0.012394 0.010074 0.007718 0.005326 0.002900 0.000440 -0.002054 -0.004580 -0.007138 -0.009727 -0.012349 -0.015003 -0.017690 -0.020411 -0.023168 -0.025959 -0.028786 -0.031648 -0.034546 -0.037478 -0.040445 -0.043444 -0.046475 -0.049535 -0.052620 -0.055725 -0.058846 -0.061977 -0.065111 -0.068242 -0.071362 -0.074461 -0.077530 -0.080560 -0.083544 -0.086479 -0.089363 -0.092194 -0.094974 -0.097708 -0.100400 -0.103060 -0.105698 -0.108327 -0.110960 -0.113612 -0.116297 -0.119035 -0.121843 -0.124736 -0.127725 -0.130814 -0.134003 -0.137286 -0.140653 -0.144086 -0.147563 -0.151056 -0.154536 -0.157970 -0.059487 0.059724 0.059910 0.060044 0.060120 0.060134 0.060084 0.059969 0.059784 0.059530 0.059204 0.058807 0.058339 0.057799 0.057187 0.056503 0.055748 0.054923 0.054027 0.053064 0.052032 0.050933 0.049767 0.048535 0.047237 0.045874 0.044447 0.042956 0.041401 0.039785 0.038107 0.036369 0.034571 0.032716 0.030806 0.028842 0.026825 0.024758 0.022642 0.020479 0.018269 0.016013 0.013712 0.011368 0.008983 0.006558 0.004095 0.001594 -0.000943 -0.003515 -0.006123 -0.008765 -0.011441 -0.014152 -0.016898 -0.019680 -0.022498 -0.025355 -0.028249 -0.031181 -0.034151 -0.037158 -0.040203 -0.043284 -0.046400 -0.049549 -0.052727 -0.055932 -0.059159 -0.062402 -0.065655 -0.068912 -0.072165 -0.075405 -0.078623 -0.081808 -0.084951 -0.088046 -0.091088 -0.094076 -0.097009 -0.099889 -0.102720 -0.105508 -0.108263 -0.110996 -0.113719 -0.116448 -0.119198 -0.121987 -0.124835 -0.127760 -0.130779 -0.133907 -0.137150 -0.140508 -0.143977 -0.147545 -0.151190 -0.154888 -0.158605 -0.162307 -0.165960 -0.169532 -0.057186 0.057503 0.057767 0.057976 0.058125 0.058211 0.058229 0.058176 0.058049 0.057846 0.057567 0.057208 0.056771 0.056255 0.055660 0.054985 0.054232 0.053401 0.052494 0.051511 0.050454 0.049323 0.048120 0.046845 0.045498 0.044082 0.042597 0.041043 0.039421 0.037734 0.035981 0.034164 0.032285 0.030346 0.028349 0.026297 0.024189 0.022029 0.019818 0.017558 0.015248 0.012890 0.010486 0.008038 0.005547 0.003014 0.000442 -0.002170 -0.004819 -0.007507 -0.010231 -0.012992 -0.015791 -0.018628 -0.021503 -0.024418 -0.027373 -0.030369 -0.033405 -0.036482 -0.039599 -0.042755 -0.045950 -0.049181 -0.052447 -0.055745 -0.059070 -0.062418 -0.065784 -0.069161 -0.072542 -0.075918 -0.079282 -0.082622 -0.085927 -0.089189 -0.092401 -0.095557 -0.098656 -0.101698 -0.104685 -0.107620 -0.110511 -0.113365 -0.116196 -0.119016 -0.121842 -0.124691 -0.127584 -0.130539 -0.133578 -0.136722 -0.139987 -0.143383 -0.146912 -0.150569 -0.154339 -0.158200 -0.162123 -0.166070 -0.170003 -0.173885 -0.177683 -0.181370 -0.054915 0.055303 0.055641 0.055920 0.056140 0.056293 0.056376 0.056385 0.056315 0.056164 0.055930 0.055612 0.055206 0.054715 0.054137 0.053473 0.052722 0.051886 0.050966 0.049963 0.048880 0.047717 0.046475 0.045155 0.043760 0.042289 0.040744 0.039125 0.037435 0.035675 0.033846 0.031949 0.029988 0.027965 0.025881 0.023738 0.021538 0.019284 0.016977 0.014618 0.012207 0.009746 0.007238 0.004683 0.002084 -0.000557 -0.003241 -0.005966 -0.008731 -0.011536 -0.014381 -0.017266 -0.020191 -0.023159 -0.026168 -0.029221 -0.032317 -0.035456 -0.038639 -0.041864 -0.045131 -0.048439 -0.051785 -0.055168 -0.058584 -0.062029 -0.065500 -0.068989 -0.072491 -0.075997 -0.079500 -0.082989 -0.086455 -0.089886 -0.093273 -0.096608 -0.099885 -0.103103 -0.106262 -0.109363 -0.112410 -0.115408 -0.118366 -0.121297 -0.124217 -0.127141 -0.130091 -0.133085 -0.136146 -0.139297 -0.142562 -0.145962 -0.149509 -0.153206 -0.157048 -0.161020 -0.165098 -0.169248 -0.173430 -0.177602 -0.181724 -0.185761 -0.189683 -0.193470 -0.052695 0.053142 0.053542 0.053887 0.054170 0.054388 0.054533 0.054600 0.054586 0.054486 0.054297 0.054018 0.053646 0.053179 0.052619 0.051966 0.051218 0.050377 0.049444 0.048421 0.047310 0.046114 0.044832 0.043467 0.042021 0.040494 0.038887 0.037204 0.035444 0.033609 0.031703 0.029726 0.027682 0.025572 0.023400 0.021166 0.018873 0.016523 0.014119 0.011658 0.009145 0.006580 0.003965 0.001303 -0.001405 -0.004159 -0.006956 -0.009797 -0.012681 -0.015607 -0.018576 -0.021589 -0.024646 -0.027749 -0.030898 -0.034092 -0.037333 -0.040620 -0.043952 -0.047328 -0.050748 -0.054208 -0.057707 -0.061241 -0.064807 -0.068400 -0.072013 -0.075641 -0.079274 -0.082905 -0.086524 -0.090120 -0.093682 -0.097199 -0.100664 -0.104070 -0.107415 -0.110699 -0.113921 -0.117086 -0.120197 -0.123264 -0.126299 -0.129321 -0.132346 -0.135395 -0.138489 -0.141653 -0.144913 -0.148297 -0.151827 -0.155521 -0.159381 -0.163404 -0.167574 -0.171866 -0.176244 -0.180664 -0.185082 -0.189454 -0.193742 -0.197915 -0.201948 -0.205833 -0.050546 0.051035 0.051485 0.051886 0.052227 0.052501 0.052704 0.052828 0.052865 0.052814 0.052670 0.052429 0.052090 0.051650 0.051108 0.050464 0.049719 0.048873 0.047927 0.046884 0.045745 0.044514 0.043192 0.041780 0.040281 0.038697 0.037028 0.035277 0.033446 0.031537 0.029553 0.027494 0.025366 0.023169 0.020907 0.018580 0.016193 0.013747 0.011242 0.008679 0.006062 0.003391 0.000668 -0.002104 -0.004924 -0.007791 -0.010705 -0.013665 -0.016670 -0.019722 -0.022820 -0.025965 -0.029159 -0.032401 -0.035693 -0.039033 -0.042423 -0.045860 -0.049345 -0.052876 -0.056449 -0.060063 -0.063715 -0.067401 -0.071116 -0.074854 -0.078608 -0.082369 -0.086131 -0.089882 -0.093611 -0.097309 -0.100964 -0.104565 -0.108108 -0.111588 -0.115004 -0.118356 -0.121645 -0.124875 -0.128056 -0.131201 -0.134327 -0.137453 -0.140601 -0.143795 -0.147061 -0.150427 -0.153925 -0.157582 -0.161415 -0.165431 -0.169627 -0.173987 -0.178487 -0.183092 -0.187752 -0.192422 -0.197053 -0.201605 -0.206042 -0.210338 -0.214481 -0.218471 -0.048476 0.048997 0.049483 0.049927 0.050316 0.050641 0.050896 0.051071 0.051158 0.051153 0.051051 0.050848 0.050540 0.050126 0.049602 0.048969 0.048226 0.047375 0.046415 0.045351 0.044184 0.042917 0.041553 0.040094 0.038541 0.036898 0.035166 0.033347 0.031444 0.029459 0.027395 0.025254 0.023040 0.020755 0.018401 0.015981 0.013498 0.010953 0.008346 0.005680 0.002957 0.000178 -0.002654 -0.005538 -0.008473 -0.011457 -0.014490 -0.017572 -0.020703 -0.023884 -0.027115 -0.030397 -0.033732 -0.037118 -0.040557 -0.044047 -0.047588 -0.051180 -0.054819 -0.058505 -0.062233 -0.066002 -0.069807 -0.073644 -0.077507 -0.081388 -0.085279 -0.089173 -0.093059 -0.096927 -0.100765 -0.104562 -0.108307 -0.111993 -0.115617 -0.119174 -0.122663 -0.126084 -0.129440 -0.132741 -0.135999 -0.139233 -0.142462 -0.145709 -0.149002 -0.152368 -0.155839 -0.159447 -0.163222 -0.167186 -0.171348 -0.175707 -0.180248 -0.184950 -0.189775 -0.194676 -0.199600 -0.204499 -0.209325 -0.214040 -0.218615 -0.223032 -0.227290 -0.231395 -0.046480 0.047031 0.047544 0.048019 0.048446 0.048814 0.049113 0.049334 0.049468 0.049505 0.049442 0.049275 0.048998 0.048608 0.048102 0.047479 0.046739 0.045882 0.044909 0.043822 0.042626 0.041323 0.039916 0.038408 0.036801 0.035097 0.033300 0.031412 0.029436 0.027374 0.025229 0.023005 0.020704 0.018329 0.015882 0.013368 0.010787 0.008141 0.005431 0.002660 -0.000171 -0.003060 -0.006004 -0.009002 -0.012053 -0.015157 -0.018313 -0.021521 -0.024782 -0.028096 -0.031465 -0.034889 -0.038368 -0.041902 -0.045491 -0.049134 -0.052830 -0.056578 -0.060374 -0.064215 -0.068100 -0.072024 -0.075982 -0.079969 -0.083978 -0.088000 -0.092028 -0.096051 -0.100060 -0.104042 -0.107987 -0.111883 -0.115721 -0.119495 -0.123201 -0.126835 -0.130396 -0.133885 -0.137313 -0.140690 -0.144035 -0.147369 -0.150718 -0.154109 -0.157574 -0.161147 -0.164861 -0.168747 -0.172832 -0.177129 -0.181638 -0.186349 -0.191241 -0.196279 -0.201417 -0.206597 -0.211767 -0.216877 -0.221883 -0.226752 -0.231460 -0.236004 -0.240386 -0.244617 -0.044551 0.045130 0.045670 0.046169 0.046624 0.047025 0.047360 0.047621 0.047795 0.047873 0.047846 0.047711 0.047463 0.047096 0.046608 0.045994 0.045256 0.044393 0.043406 0.042297 0.041071 0.039731 0.038280 0.036721 0.035059 0.033294 0.031432 0.029474 0.027423 0.025282 0.023056 0.020746 0.018357 0.015891 0.013350 0.010739 0.008059 0.005311 0.002496 -0.000383 -0.003323 -0.006323 -0.009381 -0.012496 -0.015668 -0.018894 -0.022176 -0.025514 -0.028909 -0.032362 -0.035872 -0.039441 -0.043068 -0.046754 -0.050497 -0.054296 -0.058149 -0.062054 -0.066008 -0.070007 -0.074049 -0.078128 -0.082239 -0.086376 -0.090529 -0.094692 -0.098855 -0.103007 -0.107137 -0.111234 -0.115285 -0.119282 -0.123215 -0.127077 -0.130865 -0.134574 -0.138205 -0.141766 -0.145269 -0.148730 -0.152173 -0.155625 -0.159116 -0.162680 -0.166351 -0.170166 -0.174156 -0.178352 -0.182771 -0.187417 -0.192283 -0.197353 -0.202594 -0.207959 -0.213393 -0.218837 -0.224237 -0.229545 -0.234721 -0.239738 -0.244585 -0.249262 -0.253778 -0.258148 -0.042682 0.043289 0.043854 0.044376 0.044852 0.045278 0.045642 0.045935 0.046144 0.046257 0.046264 0.046159 0.045937 0.045591 0.045119 0.044515 0.043778 0.042909 0.041908 0.040776 0.039519 0.038140 0.036644 0.035035 0.033315 0.031489 0.029559 0.027530 0.025403 0.023183 0.020874 0.018477 0.015999 0.013439 0.010804 0.008095 0.005314 0.002461 -0.000461 -0.003449 -0.006500 -0.009614 -0.012789 -0.016024 -0.019318 -0.022671 -0.026083 -0.029555 -0.033088 -0.036683 -0.040339 -0.044057 -0.047836 -0.051676 -0.055576 -0.059533 -0.063545 -0.067609 -0.071722 -0.075880 -0.080079 -0.084314 -0.088577 -0.092862 -0.097161 -0.101464 -0.105762 -0.110042 -0.114295 -0.118508 -0.122669 -0.126767 -0.130795 -0.134744 -0.138610 -0.142392 -0.146095 -0.149730 -0.153314 -0.156871 -0.160429 -0.164022 -0.167683 -0.171451 -0.175362 -0.179449 -0.183746 -0.188274 -0.193042 -0.198049 -0.203281 -0.208709 -0.214292 -0.219972 -0.225688 -0.231383 -0.237000 -0.242496 -0.247837 -0.253004 -0.257995 -0.262815 -0.267475 -0.271994 -0.040867 0.041502 0.042091 0.042634 0.043130 0.043575 0.043962 0.044279 0.044517 0.044660 0.044696 0.044619 0.044419 0.044094 0.043635 0.043040 0.042304 0.041428 0.040412 0.039257 0.037968 0.036550 0.035009 0.033347 0.031570 0.029680 0.027683 0.025581 0.023377 0.021076 0.018682 0.016198 0.013628 0.010975 0.008243 0.005434 0.002549 -0.000410 -0.003440 -0.006539 -0.009704 -0.012935 -0.016229 -0.019587 -0.023007 -0.026490 -0.030036 -0.033646 -0.037321 -0.041061 -0.044867 -0.048737 -0.052672 -0.056669 -0.060728 -0.064845 -0.069017 -0.073242 -0.077516 -0.081833 -0.086190 -0.090580 -0.094997 -0.099431 -0.103875 -0.108320 -0.112753 -0.117164 -0.121542 -0.125872 -0.130143 -0.134343 -0.138463 -0.142495 -0.146437 -0.150291 -0.154067 -0.157782 -0.161458 -0.165127 -0.168823 -0.172584 -0.176446 -0.180448 -0.184627 -0.189015 -0.193639 -0.198516 -0.203646 -0.209022 -0.214621 -0.220406 -0.226321 -0.232304 -0.238291 -0.244224 -0.250049 -0.255728 -0.261233 -0.266555 -0.271698 -0.276669 -0.281485 -0.286164 -0.039101 0.039763 0.040376 0.040940 0.041454 0.041915 0.042319 0.042656 0.042915 0.043083 0.043145 0.043092 0.042913 0.042604 0.042158 0.041570 0.040834 0.039951 0.038919 0.037740 0.036419 0.034961 0.033373 0.031658 0.029822 0.027868 0.025802 0.023626 0.021344 0.018961 0.016481 0.013907 0.011245 0.008496 0.005665 0.002755 -0.000235 -0.003302 -0.006442 -0.009654 -0.012936 -0.016286 -0.019703 -0.023186 -0.026736 -0.030352 -0.034037 -0.037789 -0.041610 -0.045499 -0.049458 -0.053484 -0.057577 -0.061734 -0.065954 -0.070233 -0.074567 -0.078954 -0.083389 -0.087867 -0.092383 -0.096929 -0.101499 -0.106085 -0.110676 -0.115263 -0.119835 -0.124380 -0.128884 -0.133333 -0.137713 -0.142011 -0.146219 -0.150330 -0.154346 -0.158272 -0.162126 -0.165930 -0.169716 -0.173519 -0.177379 -0.181334 -0.185426 -0.189690 -0.194161 -0.198871 -0.203840 -0.209078 -0.214580 -0.220330 -0.226297 -0.232431 -0.238669 -0.244944 -0.251192 -0.257354 -0.263381 -0.269240 -0.274913 -0.280397 -0.285699 -0.290831 -0.295813 -0.300663 -0.037378 0.038068 0.038704 0.039288 0.039820 0.040295 0.040712 0.041064 0.041341 0.041528 0.041612 0.041576 0.041417 0.041121 0.040686 0.040103 0.039368 0.038476 0.037428 0.036225 0.034870 0.033372 0.031736 0.029967 0.028071 0.026052 0.023915 0.021664 0.019303 0.016836 0.014268 0.011604 0.008847 0.006002 0.003071 0.000057 -0.003040 -0.006217 -0.009470 -0.012797 -0.016198 -0.019669 -0.023212 -0.026824 -0.030508 -0.034262 -0.038088 -0.041986 -0.045956 -0.049999 -0.054113 -0.058298 -0.062551 -0.066871 -0.071254 -0.075696 -0.080195 -0.084745 -0.089343 -0.093983 -0.098658 -0.103362 -0.108088 -0.112826 -0.117567 -0.122300 -0.127014 -0.131695 -0.136326 -0.140892 -0.145377 -0.149769 -0.154061 -0.158248 -0.162336 -0.166339 -0.170279 -0.174189 -0.178104 -0.182066 -0.186116 -0.190293 -0.194638 -0.199187 -0.203973 -0.209021 -0.214349 -0.219958 -0.225838 -0.231965 -0.238297 -0.244774 -0.251326 -0.257884 -0.264385 -0.270770 -0.276996 -0.283036 -0.288882 -0.294535 -0.300004 -0.305307 -0.310464 -0.315495 -0.035695 0.036413 0.037072 0.037675 0.038223 0.038712 0.039140 0.039504 0.039792 0.039995 0.040094 0.040076 0.039931 0.039647 0.039220 0.038641 0.037904 0.037003 0.035938 0.034710 0.033322 0.031782 0.030098 0.028274 0.026317 0.024232 0.022023 0.019695 0.017253 0.014701 0.012045 0.009288 0.006436 0.003492 0.000459 -0.002661 -0.005867 -0.009155 -0.012523 -0.015969 -0.019490 -0.023087 -0.026758 -0.030504 -0.034324 -0.038219 -0.042191 -0.046238 -0.050361 -0.054560 -0.058834 -0.063180 -0.067597 -0.072081 -0.076628 -0.081236 -0.085900 -0.090616 -0.095378 -0.100180 -0.105017 -0.109882 -0.114766 -0.119660 -0.124555 -0.129438 -0.134296 -0.139113 -0.143870 -0.148549 -0.153135 -0.157616 -0.161986 -0.166247 -0.170411 -0.174498 -0.178541 -0.182575 -0.186643 -0.190788 -0.195051 -0.199474 -0.204095 -0.208948 -0.214065 -0.219467 -0.225164 -0.231151 -0.237415 -0.243921 -0.250614 -0.257426 -0.264284 -0.271120 -0.277866 -0.284470 -0.290894 -0.297120 -0.303144 -0.308972 -0.314618 -0.320101 -0.325442 -0.330663 -0.034046 0.034792 0.035475 0.036097 0.036660 0.037163 0.037601 0.037972 0.038271 0.038484 0.038595 0.038590 0.038455 0.038182 0.037759 0.037183 0.036442 0.035531 0.034449 0.033195 0.031773 0.030191 0.028457 0.026578 0.024559 0.022406 0.020124 0.017718 0.015193 0.012555 0.009809 0.006959 0.004009 0.000965 -0.002172 -0.005400 -0.008717 -0.012119 -0.015604 -0.019170 -0.022816 -0.026541 -0.030344 -0.034226 -0.038187 -0.042227 -0.046347 -0.050547 -0.054827 -0.059186 -0.063621 -0.068131 -0.072713 -0.077363 -0.082078 -0.086854 -0.091685 -0.096567 -0.101494 -0.106462 -0.111464 -0.116492 -0.121538 -0.126592 -0.131644 -0.136681 -0.141685 -0.146636 -0.151514 -0.156302 -0.160983 -0.165547 -0.169994 -0.174331 -0.178577 -0.182763 -0.186925 -0.191105 -0.195348 -0.199698 -0.204197 -0.208886 -0.213802 -0.218977 -0.224440 -0.230207 -0.236281 -0.242656 -0.249307 -0.256190 -0.263239 -0.270380 -0.277540 -0.284646 -0.291634 -0.298453 -0.305077 -0.311493 -0.317701 -0.323713 -0.329544 -0.335216 -0.340751 -0.346172 -0.032430 0.033204 0.033909 0.034550 0.035128 0.035644 0.036091 0.036468 0.036773 0.036994 0.037114 0.037117 0.036990 0.036724 0.036304 0.035727 0.034982 0.034061 0.032960 0.031680 0.030224 0.028599 0.026814 0.024878 0.022795 0.020573 0.018217 0.015732 0.013124 0.010398 0.007560 0.004614 0.001567 -0.001579 -0.004823 -0.008161 -0.011590 -0.015109 -0.018714 -0.022403 -0.026177 -0.030033 -0.033971 -0.037993 -0.042098 -0.046287 -0.050559 -0.054916 -0.059355 -0.063876 -0.068476 -0.073152 -0.077902 -0.082720 -0.087604 -0.092548 -0.097548 -0.102599 -0.107695 -0.112832 -0.118001 -0.123196 -0.128409 -0.133628 -0.138841 -0.144032 -0.149180 -0.154262 -0.159258 -0.164148 -0.168918 -0.173562 -0.178086 -0.182505 -0.186846 -0.191146 -0.195446 -0.199792 -0.204231 -0.208807 -0.213563 -0.218537 -0.223764 -0.229276 -0.235097 -0.241238 -0.247699 -0.254466 -0.261508 -0.268765 -0.276166 -0.283633 -0.291089 -0.298461 -0.305685 -0.312721 -0.319548 -0.326159 -0.332559 -0.338761 -0.344786 -0.350656 -0.356393 -0.362023 -0.030843 0.031644 0.032372 0.033031 0.033624 0.034151 0.034608 0.034990 0.035299 0.035524 0.035649 0.035658 0.035537 0.035274 0.034855 0.034275 0.033523 0.032591 0.031471 0.030165 0.028673 0.027004 0.025168 0.023174 0.021027 0.018735 0.016303 0.013737 0.011044 0.008228 0.005298 0.002255 -0.000893 -0.004143 -0.007494 -0.010944 -0.014489 -0.018126 -0.021854 -0.025670 -0.029573 -0.033564 -0.037641 -0.041806 -0.046059 -0.050399 -0.054828 -0.059344 -0.063946 -0.068632 -0.073399 -0.078244 -0.083163 -0.088152 -0.093207 -0.098322 -0.103493 -0.108715 -0.113983 -0.119291 -0.124633 -0.130000 -0.135383 -0.140772 -0.146148 -0.151493 -0.156782 -0.161991 -0.167097 -0.172082 -0.176937 -0.181662 -0.186267 -0.190778 -0.195228 -0.199659 -0.204117 -0.208649 -0.213304 -0.218126 -0.223155 -0.228430 -0.233983 -0.239844 -0.246034 -0.252559 -0.259415 -0.266580 -0.274012 -0.281642 -0.289392 -0.297181 -0.304928 -0.312560 -0.320020 -0.327275 -0.334309 -0.341120 -0.347718 -0.354120 -0.360347 -0.366423 -0.372371 -0.378218 -0.029281 0.030109 0.030861 0.031538 0.032144 0.032683 0.033148 0.033535 0.033845 0.034073 0.034201 0.034213 0.034094 0.033831 0.033411 0.032826 0.032066 0.031121 0.029982 0.028648 0.027120 0.025406 0.023519 0.021465 0.019252 0.016889 0.014380 0.011732 0.008952 0.006046 0.003021 -0.000120 -0.003370 -0.006726 -0.010188 -0.013752 -0.017414 -0.021173 -0.025025 -0.028971 -0.033007 -0.037136 -0.041355 -0.045667 -0.050071 -0.054567 -0.059155 -0.063833 -0.068601 -0.073455 -0.078391 -0.083407 -0.088498 -0.093659 -0.098887 -0.104175 -0.109520 -0.114917 -0.120360 -0.125844 -0.131363 -0.136907 -0.142467 -0.148027 -0.153566 -0.159062 -0.164488 -0.169817 -0.175027 -0.180104 -0.185043 -0.189849 -0.194545 -0.199160 -0.203734 -0.208314 -0.212948 -0.217686 -0.222575 -0.227659 -0.232978 -0.238568 -0.244460 -0.250682 -0.257250 -0.264168 -0.271425 -0.278994 -0.286816 -0.294817 -0.302913 -0.311020 -0.319054 -0.326943 -0.334639 -0.342115 -0.349361 -0.356379 -0.363183 -0.369792 -0.376229 -0.382518 -0.388686 -0.394762 -0.027744 0.028598 0.029372 0.030067 0.030687 0.031236 0.031710 0.032100 0.032412 0.032640 0.032768 0.032781 0.032660 0.032396 0.031973 0.031380 0.030610 0.029650 0.028491 0.027129 0.025564 0.023806 0.021865 0.019750 0.017471 0.015035 0.012448 0.009717 0.006849 0.003851 0.000729 -0.002512 -0.005866 -0.009331 -0.012905 -0.016585 -0.020367 -0.024250 -0.028230 -0.032307 -0.036481 -0.040750 -0.045115 -0.049577 -0.054136 -0.058791 -0.063541 -0.068385 -0.073321 -0.078344 -0.083453 -0.088642 -0.093907 -0.099243 -0.104645 -0.110109 -0.115632 -0.121207 -0.126830 -0.132495 -0.138196 -0.143923 -0.149662 -0.155394 -0.161095 -0.166738 -0.172294 -0.177736 -0.183045 -0.188212 -0.193235 -0.198131 -0.202928 -0.207661 -0.212375 -0.217120 -0.221948 -0.226909 -0.232049 -0.237412 -0.243035 -0.248952 -0.255195 -0.261788 -0.268744 -0.276063 -0.283729 -0.291702 -0.299915 -0.308286 -0.316726 -0.325147 -0.333464 -0.341609 -0.349542 -0.357243 -0.364706 -0.371938 -0.378955 -0.385779 -0.392434 -0.398945 -0.405342 -0.411656 -0.026229 0.027108 0.027903 0.028617 0.029250 0.029809 0.030290 0.030685 0.030995 0.031222 0.031350 0.031360 0.031236 0.030969 0.030539 0.029938 0.029155 0.028180 0.026999 0.025608 0.024006 0.022201 0.020206 0.018030 0.015683 0.013172 0.010505 0.007690 0.004732 0.001641 -0.001579 -0.004922 -0.008381 -0.011957 -0.015646 -0.019444 -0.023349 -0.027358 -0.031469 -0.035682 -0.039995 -0.044408 -0.048923 -0.053539 -0.058255 -0.063072 -0.067988 -0.073000 -0.078106 -0.083303 -0.088585 -0.093949 -0.099390 -0.104903 -0.110484 -0.116127 -0.121830 -0.127588 -0.133396 -0.139248 -0.145137 -0.151050 -0.156970 -0.162873 -0.168732 -0.174517 -0.180196 -0.185746 -0.191152 -0.196407 -0.201520 -0.206515 -0.211424 -0.216289 -0.221158 -0.226087 -0.231126 -0.236325 -0.241732 -0.247387 -0.253326 -0.259583 -0.266187 -0.273161 -0.280514 -0.288243 -0.296323 -0.304703 -0.313307 -0.322047 -0.330829 -0.339560 -0.348156 -0.356558 -0.364731 -0.372661 -0.380347 -0.387799 -0.395037 -0.402083 -0.408963 -0.415706 -0.422341 -0.428903 -0.024736 0.025637 0.026453 0.027184 0.027831 0.028399 0.028887 0.029285 0.029595 0.029819 0.029944 0.029950 0.029822 0.029547 0.029110 0.028498 0.027701 0.026708 0.025505 0.024084 0.022444 0.020592 0.018542 0.016303 0.013887 0.011301 0.008553 0.005651 0.002603 -0.000584 -0.003904 -0.007350 -0.010917 -0.014606 -0.018411 -0.022331 -0.026361 -0.030499 -0.034744 -0.039095 -0.043551 -0.048112 -0.052779 -0.057552 -0.062430 -0.067412 -0.072496 -0.077679 -0.082958 -0.088330 -0.093788 -0.099330 -0.104950 -0.110642 -0.116404 -0.122231 -0.128119 -0.134064 -0.140063 -0.146107 -0.152188 -0.158290 -0.164390 -0.170462 -0.176475 -0.182394 -0.188191 -0.193846 -0.199346 -0.204694 -0.209905 -0.215008 -0.220042 -0.225052 -0.230093 -0.235220 -0.240486 -0.245940 -0.251628 -0.257588 -0.263854 -0.270460 -0.277436 -0.284800 -0.292559 -0.300705 -0.309204 -0.317994 -0.326990 -0.336098 -0.345218 -0.354256 -0.363130 -0.371789 -0.380206 -0.388371 -0.396285 -0.403964 -0.411429 -0.418705 -0.425819 -0.432801 -0.439685 -0.446507 -0.023267 0.024185 0.025020 0.025768 0.026428 0.027004 0.027499 0.027900 0.028209 0.028429 0.028550 0.028551 0.028416 0.028132 0.027686 0.027061 0.026248 0.025235 0.024009 0.022557 0.020878 0.018978 0.016871 0.014569 0.012082 0.009420 0.006589 0.003600 0.000459 -0.002825 -0.006246 -0.009797 -0.013475 -0.017278 -0.021203 -0.025246 -0.029404 -0.033674 -0.038056 -0.042548 -0.047150 -0.051863 -0.056686 -0.061619 -0.066661 -0.071811 -0.077066 -0.082423 -0.087877 -0.093426 -0.099064 -0.104786 -0.110586 -0.116462 -0.122408 -0.128422 -0.134500 -0.140639 -0.146833 -0.153075 -0.159351 -0.165642 -0.171921 -0.178158 -0.184318 -0.190366 -0.196277 -0.202034 -0.207631 -0.213077 -0.218395 -0.223617 -0.228788 -0.233958 -0.239186 -0.244527 -0.250035 -0.255758 -0.261739 -0.268013 -0.274617 -0.281583 -0.288940 -0.296704 -0.304879 -0.313449 -0.322372 -0.331573 -0.340962 -0.350436 -0.359891 -0.369232 -0.378384 -0.387304 -0.395969 -0.404372 -0.412522 -0.420435 -0.428135 -0.435648 -0.443003 -0.450234 -0.457377 -0.464471 -0.021819 0.022753 0.023603 0.024366 0.025039 0.025624 0.026124 0.026529 0.026835 0.027051 0.027167 0.027161 0.027018 0.026724 0.026266 0.025626 0.024796 0.023761 0.022511 0.021027 0.019308 0.017359 0.015195 0.012828 0.010269 0.007528 0.004614 0.001535 -0.001700 -0.005082 -0.008606 -0.012265 -0.016056 -0.019976 -0.024023 -0.028191 -0.032479 -0.036884 -0.041406 -0.046042 -0.050794 -0.055661 -0.060643 -0.065740 -0.070950 -0.076270 -0.081699 -0.087232 -0.092865 -0.098593 -0.104412 -0.110316 -0.116301 -0.122362 -0.128497 -0.134703 -0.140977 -0.147314 -0.153710 -0.160154 -0.166627 -0.173106 -0.179562 -0.185958 -0.192258 -0.198431 -0.204453 -0.210314 -0.216012 -0.221563 -0.226996 -0.232348 -0.237669 -0.243014 -0.248443 -0.254013 -0.259777 -0.265781 -0.272065 -0.278665 -0.285616 -0.292952 -0.300699 -0.308873 -0.317472 -0.326473 -0.335823 -0.345439 -0.355219 -0.365057 -0.374845 -0.384487 -0.393919 -0.403102 -0.412019 -0.420668 -0.429059 -0.437213 -0.445154 -0.452912 -0.460518 -0.468007 -0.475421 -0.482800 -0.020393 0.021340 0.022202 0.022977 0.023662 0.024255 0.024761 0.025168 0.025473 0.025683 0.025793 0.025780 0.025627 0.025321 0.024849 0.024193 0.023344 0.022286 0.021009 0.019493 0.017733 0.015734 0.013511 0.011078 0.008446 0.005626 0.002626 -0.000543 -0.003874 -0.007357 -0.010986 -0.014754 -0.018660 -0.022700 -0.026870 -0.031167 -0.035588 -0.040131 -0.044795 -0.049580 -0.054484 -0.059509 -0.064654 -0.069917 -0.075297 -0.080791 -0.086395 -0.092107 -0.097920 -0.103831 -0.109833 -0.115923 -0.122095 -0.128346 -0.134675 -0.141078 -0.147552 -0.154094 -0.160696 -0.167343 -0.174014 -0.180680 -0.187308 -0.193858 -0.200293 -0.206587 -0.212721 -0.218687 -0.224492 -0.230157 -0.235714 -0.241207 -0.246690 -0.252223 -0.257869 -0.263682 -0.269714 -0.276010 -0.282607 -0.289542 -0.296850 -0.304566 -0.312713 -0.321305 -0.330337 -0.339776 -0.349557 -0.359589 -0.369761 -0.379960 -0.390077 -0.400021 -0.409735 -0.419186 -0.428360 -0.437259 -0.445897 -0.454299 -0.462489 -0.470500 -0.478365 -0.486124 -0.493820 -0.501497 -0.018989 0.019945 0.020818 0.021602 0.022296 0.022898 0.023408 0.023818 0.024121 0.024325 0.024427 0.024406 0.024242 0.023923 0.023436 0.022762 0.021892 0.020809 0.019504 0.017954 0.016153 0.014103 0.011821 0.009320 0.006614 0.003712 0.000626 -0.002636 -0.006064 -0.009650 -0.013385 -0.017265 -0.021288 -0.025450 -0.029747 -0.034175 -0.038732 -0.043416 -0.048225 -0.053161 -0.058222 -0.063407 -0.068717 -0.074150 -0.079703 -0.085373 -0.091156 -0.097048 -0.103045 -0.109140 -0.115329 -0.121607 -0.127970 -0.134416 -0.140942 -0.147548 -0.154229 -0.160981 -0.167792 -0.174645 -0.181512 -0.188362 -0.195156 -0.201854 -0.208422 -0.214836 -0.221082 -0.227158 -0.233076 -0.238862 -0.244553 -0.250199 -0.255857 -0.261593 -0.267468 -0.273537 -0.279849 -0.286446 -0.293366 -0.300644 -0.308319 -0.316423 -0.324980 -0.334001 -0.343474 -0.353357 -0.363573 -0.374021 -0.384583 -0.395142 -0.405587 -0.415834 -0.425832 -0.435554 -0.444990 -0.454146 -0.463039 -0.471694 -0.480141 -0.488413 -0.496547 -0.504586 -0.512577 -0.520564 -0.017608 0.018569 0.019449 0.020240 0.020941 0.021550 0.022064 0.022476 0.022777 0.022975 0.023069 0.023039 0.022863 0.022530 0.022025 0.021332 0.020440 0.019331 0.017996 0.016411 0.014567 0.012465 0.010122 0.007553 0.004770 0.001787 -0.001388 -0.004744 -0.008271 -0.011961 -0.015806 -0.019799 -0.023942 -0.028228 -0.032654 -0.037215 -0.041911 -0.046739 -0.051698 -0.056787 -0.062007 -0.067357 -0.072835 -0.078440 -0.084168 -0.090017 -0.095982 -0.102058 -0.108239 -0.114522 -0.120900 -0.127370 -0.133928 -0.140573 -0.147303 -0.154116 -0.161009 -0.167975 -0.174998 -0.182056 -0.189119 -0.196148 -0.203102 -0.209944 -0.216643 -0.223178 -0.229539 -0.235731 -0.241769 -0.247685 -0.253519 -0.259328 -0.265176 -0.271128 -0.277244 -0.283581 -0.290182 -0.297090 -0.304340 -0.311972 -0.320022 -0.328524 -0.337501 -0.346960 -0.356882 -0.367214 -0.377869 -0.388733 -0.399685 -0.410601 -0.421373 -0.431925 -0.442211 -0.452209 -0.461912 -0.471330 -0.480484 -0.489400 -0.498112 -0.506653 -0.515066 -0.523398 -0.531696 -0.540007 -0.016253 0.017211 0.018095 0.018891 0.019596 0.020210 0.020729 0.021143 0.021441 0.021632 0.021718 0.021677 0.021489 0.021140 0.020617 0.019904 0.018987 0.017850 0.016483 0.014863 0.012975 0.010820 0.008415 0.005776 0.002916 -0.000152 -0.003417 -0.006869 -0.010496 -0.014292 -0.018247 -0.022358 -0.026622 -0.031035 -0.035592 -0.040290 -0.045127 -0.050102 -0.055213 -0.060459 -0.065841 -0.071358 -0.077007 -0.082787 -0.088694 -0.094724 -0.100873 -0.107135 -0.113504 -0.119977 -0.126548 -0.133213 -0.139971 -0.146820 -0.153758 -0.160785 -0.167895 -0.175078 -0.182314 -0.189577 -0.196831 -0.204034 -0.211145 -0.218129 -0.224958 -0.231615 -0.238097 -0.244410 -0.250575 -0.256628 -0.262616 -0.268600 -0.274650 -0.280830 -0.287201 -0.293815 -0.300715 -0.307940 -0.315531 -0.323524 -0.331959 -0.340869 -0.350276 -0.360182 -0.370561 -0.381347 -0.392442 -0.403724 -0.415063 -0.426335 -0.437435 -0.448295 -0.458873 -0.469151 -0.479126 -0.488813 -0.498234 -0.507419 -0.516402 -0.525223 -0.533926 -0.542561 -0.551179 -0.559827 -0.014927 0.015876 0.016756 0.017555 0.018263 0.018879 0.019401 0.019816 0.020112 0.020296 0.020373 0.020321 0.020119 0.019754 0.019212 0.018475 0.017532 0.016367 0.014966 0.013309 0.011377 0.009168 0.006699 0.003988 0.001050 -0.002103 -0.005460 -0.009009 -0.012740 -0.016644 -0.020712 -0.024941 -0.029330 -0.033871 -0.038563 -0.043400 -0.048381 -0.053506 -0.058771 -0.064178 -0.069726 -0.075412 -0.081236 -0.087193 -0.093281 -0.099495 -0.105830 -0.112280 -0.118840 -0.125506 -0.132273 -0.139138 -0.146100 -0.153158 -0.160310 -0.167555 -0.174886 -0.182289 -0.189739 -0.197205 -0.204646 -0.212018 -0.219284 -0.226408 -0.233368 -0.240152 -0.246759 -0.253198 -0.259497 -0.265695 -0.271847 -0.278019 -0.284283 -0.290704 -0.297340 -0.304240 -0.311446 -0.318999 -0.326937 -0.335300 -0.344130 -0.353457 -0.363304 -0.373667 -0.384510 -0.395755 -0.407292 -0.418990 -0.430716 -0.442343 -0.453773 -0.464943 -0.475817 -0.486380 -0.496633 -0.506594 -0.516289 -0.525750 -0.535014 -0.544124 -0.553128 -0.562080 -0.571030 -0.580027 -0.013627 0.014564 0.015436 0.016231 0.016940 0.017556 0.018079 0.018495 0.018788 0.018965 0.019033 0.018969 0.018752 0.018370 0.017807 0.017047 0.016077 0.014881 0.013445 0.011749 0.009771 0.007507 0.004974 0.002190 -0.000828 -0.004069 -0.007519 -0.011168 -0.015003 -0.019016 -0.023200 -0.027551 -0.032065 -0.036738 -0.041566 -0.046546 -0.051674 -0.056951 -0.062375 -0.067945 -0.073660 -0.079520 -0.085520 -0.091658 -0.097929 -0.104329 -0.110853 -0.117494 -0.124248 -0.131111 -0.138077 -0.145146 -0.152317 -0.159589 -0.166961 -0.174429 -0.181984 -0.189608 -0.197271 -0.204936 -0.212560 -0.220099 -0.227517 -0.234782 -0.241876 -0.248791 -0.255527 -0.262099 -0.268538 -0.274890 -0.281216 -0.287589 -0.294079 -0.300751 -0.307661 -0.314856 -0.322377 -0.330264 -0.338559 -0.347301 -0.356533 -0.366289 -0.376585 -0.387415 -0.398728 -0.410436 -0.422416 -0.434530 -0.446641 -0.458624 -0.470386 -0.481870 -0.493045 -0.503898 -0.514434 -0.524676 -0.534652 -0.544396 -0.553949 -0.563359 -0.572676 -0.581955 -0.591250 -0.600608 -0.012351 0.013276 0.014134 0.014920 0.015627 0.016241 0.016763 0.017179 0.017469 0.017639 0.017696 0.017620 0.017389 0.016987 0.016404 0.015618 0.014620 0.013392 0.011919 0.010183 0.008158 0.005837 0.003238 0.000381 -0.002720 -0.006049 -0.009595 -0.013344 -0.017286 -0.021411 -0.025712 -0.030186 -0.034830 -0.039637 -0.044604 -0.049728 -0.055007 -0.060439 -0.066024 -0.071760 -0.077647 -0.083681 -0.089861 -0.096182 -0.102639 -0.109228 -0.115943 -0.122779 -0.129729 -0.136791 -0.143962 -0.151239 -0.158624 -0.166115 -0.173711 -0.181407 -0.189189 -0.197034 -0.204908 -0.212769 -0.220572 -0.228276 -0.235846 -0.243254 -0.250485 -0.257535 -0.264404 -0.271114 -0.277701 -0.284216 -0.290729 -0.297313 -0.304041 -0.310974 -0.318167 -0.325664 -0.333507 -0.341737 -0.350395 -0.359525 -0.369170 -0.379364 -0.390121 -0.401425 -0.413215 -0.425388 -0.437812 -0.450343 -0.462839 -0.475178 -0.487275 -0.499077 -0.510556 -0.521703 -0.532529 -0.543058 -0.553322 -0.563358 -0.573211 -0.582930 -0.592571 -0.602191 -0.611842 -0.621573 +0.003340 0.004120 0.004911 0.005719 0.006545 0.007392 0.008262 0.009155 0.010070 0.011009 0.011970 0.012953 0.013957 0.014979 0.016018 0.017072 0.018137 0.019210 0.020289 0.021370 0.022450 0.023526 0.024593 0.025648 0.026688 0.027710 0.028710 0.029685 0.030632 0.031547 0.032429 0.033274 0.034079 0.034841 0.035559 0.036230 0.036851 0.037419 0.037934 0.038393 0.038797 0.039144 0.039434 0.039666 0.039841 0.039959 0.040018 0.040019 0.039964 0.039854 0.039689 0.039473 0.039208 0.038895 0.038533 0.038125 0.037670 0.037167 0.036612 0.036005 +0.008045 0.009392 0.010762 0.012153 0.013563 0.014990 0.016429 0.017875 0.019324 0.020770 0.022210 0.023637 0.025048 0.026437 0.027802 0.029137 0.030438 0.031704 0.032930 0.034113 0.035250 0.036338 0.037375 0.038358 0.039282 0.040145 0.040944 0.041676 0.042339 0.042930 0.043450 0.043896 0.044267 0.044565 0.044789 0.044939 0.045017 0.045025 0.044964 0.044836 0.044644 0.044390 0.044075 0.043697 0.043258 0.042757 0.042191 0.041557 0.040851 0.040066 0.039196 0.038239 0.037198 0.036075 0.034870 0.033587 0.032229 0.030800 0.029301 0.027735 +0.016268 0.018137 0.019993 0.021832 0.023649 0.025438 0.027195 0.028914 0.030591 0.032222 0.033804 0.035332 0.036803 0.038216 0.039565 0.040849 0.042064 0.043207 0.044273 0.045259 0.046161 0.046975 0.047700 0.048333 0.048876 0.049330 0.049695 0.049974 0.050168 0.050278 0.050302 0.050243 0.050100 0.049874 0.049567 0.049180 0.048711 0.048156 0.047511 0.046765 0.045913 0.044952 0.043888 0.042723 0.041453 0.040083 0.038619 0.037065 0.035421 0.033691 0.031878 0.029988 0.028030 0.026013 0.023941 0.021821 0.019658 0.017455 0.015218 0.012950 +0.025774 0.027910 0.029993 0.032020 0.033986 0.035887 0.037720 0.039482 0.041171 0.042782 0.044314 0.045764 0.047125 0.048393 0.049565 0.050635 0.051603 0.052468 0.053232 0.053895 0.054458 0.054920 0.055280 0.055532 0.055675 0.055709 0.055634 0.055451 0.055159 0.054751 0.054221 0.053559 0.052762 0.051835 0.050780 0.049596 0.048288 0.046864 0.045325 0.043672 0.041909 0.040041 0.038080 0.036035 0.033913 0.031719 0.029460 0.027141 0.024768 0.022345 0.019876 0.017365 0.014816 0.012233 0.009617 0.006972 0.004299 0.001599 -0.001125 -0.003873 +0.034814 0.037052 0.039208 0.041280 0.043266 0.045164 0.046970 0.048683 0.050298 0.051814 0.053228 0.054538 0.055741 0.056837 0.057821 0.058691 0.059439 0.060059 0.060545 0.060889 0.061084 0.061127 0.061010 0.060725 0.060266 0.059640 0.058852 0.057902 0.056797 0.055546 0.054153 0.052618 0.050947 0.049155 0.047252 0.045246 0.043147 0.040959 0.038686 0.036331 0.033900 0.031397 0.028825 0.026190 0.023497 0.020751 0.017956 0.015117 0.012237 0.009320 0.006368 0.003383 0.000365 -0.002687 -0.005772 -0.008888 -0.012031 -0.015193 -0.018366 -0.021541 +0.042659 0.044935 0.047120 0.049215 0.051221 0.053136 0.054958 0.056682 0.058302 0.059809 0.061193 0.062443 0.063544 0.064476 0.065223 0.065768 0.066090 0.066179 0.066040 0.065681 0.065106 0.064330 0.063373 0.062238 0.060934 0.059470 0.057863 0.056126 0.054267 0.052295 0.050218 0.048040 0.045765 0.043397 0.040938 0.038391 0.035756 0.033038 0.030241 0.027369 0.024429 0.021426 0.018365 0.015251 0.012089 0.008882 0.005633 0.002343 -0.000989 -0.004363 -0.007782 -0.011245 -0.014751 -0.018293 -0.021860 -0.025439 -0.029015 -0.032573 -0.036100 -0.039585 +0.049318 0.051756 0.054120 0.056401 0.058592 0.060675 0.062625 0.064417 0.066025 0.067417 0.068556 0.069416 0.069984 0.070254 0.070226 0.069919 0.069360 0.068568 0.067568 0.066387 0.065045 0.063558 0.061934 0.060183 0.058310 0.056320 0.054218 0.052006 0.049685 0.047259 0.044730 0.042099 0.039369 0.036543 0.033622 0.030609 0.027509 0.024328 0.021072 0.017747 0.014359 0.010912 0.007411 0.003857 0.000253 -0.003403 -0.007113 -0.010880 -0.014705 -0.018588 -0.022523 -0.026498 -0.030495 -0.034492 -0.038466 -0.042395 -0.046263 -0.050060 -0.053785 -0.057449 +0.055734 0.058482 0.061091 0.063529 0.065751 0.067724 0.069416 0.070793 0.071826 0.072494 0.072799 0.072755 0.072397 0.071774 0.070934 0.069913 0.068734 0.067408 0.065944 0.064345 0.062616 0.060762 0.058785 0.056686 0.054468 0.052129 0.049669 0.047090 0.044393 0.041580 0.038653 0.035614 0.032469 0.029216 0.025862 0.022415 0.018880 0.015265 0.011576 0.007818 0.003994 0.000107 -0.003843 -0.007858 -0.011941 -0.016096 -0.020324 -0.024625 -0.028989 -0.033399 -0.037831 -0.042254 -0.046635 -0.050948 -0.055172 -0.059298 -0.063328 -0.067283 -0.071206 -0.075151 +0.061402 0.064029 0.066394 0.068460 0.070180 0.071512 0.072429 0.072935 0.073076 0.072915 0.072502 0.071882 0.071083 0.070127 0.069019 0.067766 0.066369 0.064831 0.063155 0.061342 0.059394 0.057309 0.055087 0.052726 0.050225 0.047583 0.044800 0.041878 0.038821 0.035631 0.032314 0.028874 0.025314 0.021641 0.017864 0.013990 0.010027 0.005981 0.001856 -0.002346 -0.006625 -0.010982 -0.015424 -0.019953 -0.024572 -0.029278 -0.034062 -0.038906 -0.043778 -0.048645 -0.053464 -0.058198 -0.062820 -0.067314 -0.071685 -0.075957 -0.080185 -0.084436 -0.088783 -0.093267 +0.063740 0.065764 0.067402 0.068669 0.069590 0.070200 0.070539 0.070639 0.070524 0.070217 0.069738 0.069097 0.068292 0.067324 0.066191 0.064893 0.063433 0.061810 0.060025 0.058077 0.055965 0.053688 0.051243 0.048630 0.045849 0.042901 0.039789 0.036518 0.033093 0.029520 0.025809 0.021961 0.017986 0.013894 0.009692 0.005390 0.000991 -0.003500 -0.008083 -0.012760 -0.017536 -0.022416 -0.027401 -0.032491 -0.037678 -0.042945 -0.048261 -0.053588 -0.058881 -0.064087 -0.069165 -0.074090 -0.078860 -0.083495 -0.088052 -0.092611 -0.097259 -0.102075 -0.107103 -0.112327 +0.061104 0.062437 0.063529 0.064417 0.065126 0.065674 0.066071 0.066321 0.066420 0.066352 0.066099 0.065652 0.065004 0.064155 0.063103 0.061844 0.060380 0.058712 0.056842 0.054771 0.052498 0.050024 0.047348 0.044473 0.041399 0.038132 0.034678 0.031046 0.027245 0.023286 0.019172 0.014913 0.010520 0.006002 0.001368 -0.003378 -0.008233 -0.013196 -0.018275 -0.023474 -0.028795 -0.034239 -0.039801 -0.045469 -0.051216 -0.057005 -0.062791 -0.068516 -0.074117 -0.079551 -0.084800 -0.089872 -0.094814 -0.099705 -0.104639 -0.109719 -0.115053 -0.120690 -0.126605 -0.132708 +0.055238 0.056371 0.057399 0.058355 0.059255 0.060084 0.060814 0.061414 0.061858 0.062120 0.062174 0.061998 0.061576 0.060899 0.059966 0.058774 0.057323 0.055618 0.053665 0.051466 0.049023 0.046341 0.043421 0.040268 0.036888 0.033290 0.029486 0.025486 0.021305 0.016949 0.012425 0.007748 0.002927 -0.002028 -0.007113 -0.012325 -0.017668 -0.023146 -0.028765 -0.034527 -0.040427 -0.046460 -0.052606 -0.058836 -0.065106 -0.071364 -0.077539 -0.083559 -0.089381 -0.094993 -0.100415 -0.105709 -0.110966 -0.116294 -0.121829 -0.127699 -0.133973 -0.140629 -0.147552 -0.154539 +0.048889 0.050093 0.051249 0.052374 0.053474 0.054536 0.055545 0.056462 0.057235 0.057820 0.058181 0.058287 0.058107 0.057624 0.056827 0.055714 0.054285 0.052544 0.050503 0.048168 0.045545 0.042642 0.039466 0.036023 0.032326 0.028388 0.024226 0.019853 0.015282 0.010518 0.005576 0.000469 -0.004794 -0.010207 -0.015768 -0.021481 -0.027352 -0.033385 -0.039580 -0.045933 -0.052432 -0.059057 -0.065775 -0.072537 -0.079284 -0.085936 -0.092416 -0.098675 -0.104704 -0.110527 -0.116209 -0.121849 -0.127582 -0.133565 -0.139961 -0.146880 -0.154312 -0.162110 -0.170004 -0.177694 +0.042753 0.044160 0.045540 0.046885 0.048190 0.049447 0.050636 0.051740 0.052739 0.053588 0.054219 0.054585 0.054639 0.054351 0.053699 0.052672 0.051269 0.049493 0.047359 0.044879 0.042066 0.038931 0.035486 0.031744 0.027721 0.023437 0.018908 0.014152 0.009176 0.003995 -0.001378 -0.006931 -0.012657 -0.018553 -0.024624 -0.030877 -0.037313 -0.043934 -0.050732 -0.057693 -0.064795 -0.072004 -0.079270 -0.086525 -0.093690 -0.100678 -0.107433 -0.113941 -0.120215 -0.126315 -0.132356 -0.138490 -0.144901 -0.151802 -0.159348 -0.167544 -0.176226 -0.185079 -0.193749 -0.201959 +0.036927 0.038582 0.040211 0.041790 0.043304 0.044750 0.046116 0.047377 0.048518 0.049525 0.050360 0.050942 0.051208 0.051102 0.050592 0.049653 0.048277 0.046464 0.044231 0.041598 0.038585 0.035208 0.031485 0.027434 0.023077 0.018436 0.013532 0.008378 0.002986 -0.002627 -0.008447 -0.014466 -0.020680 -0.027093 -0.033711 -0.040537 -0.047570 -0.054803 -0.062219 -0.069795 -0.077497 -0.085274 -0.093059 -0.100771 -0.108320 -0.115635 -0.122683 -0.129461 -0.136018 -0.142475 -0.149005 -0.155830 -0.163200 -0.171317 -0.180216 -0.189752 -0.199592 -0.209328 -0.218623 -0.227299 +0.031398 0.033297 0.035176 0.036994 0.038724 0.040361 0.041898 0.043317 0.044591 0.045711 0.046665 0.047403 0.047841 0.047894 0.047512 0.046657 0.045305 0.043453 0.041116 0.038324 0.035101 0.031472 0.027462 0.023093 0.018392 0.013384 0.008091 0.002526 -0.003295 -0.009356 -0.015643 -0.022153 -0.028887 -0.035851 -0.043049 -0.050479 -0.058133 -0.065993 -0.074036 -0.082229 -0.090523 -0.098853 -0.107141 -0.115296 -0.123231 -0.130885 -0.138228 -0.145290 -0.152189 -0.159123 -0.166347 -0.174139 -0.182742 -0.192250 -0.202566 -0.213378 -0.224235 -0.234726 -0.244592 -0.253785 +0.026185 0.028295 0.030391 0.032435 0.034383 0.036215 0.037925 0.039498 0.040906 0.042130 0.043169 0.044002 0.044559 0.044741 0.044466 0.043683 0.042352 0.040458 0.038012 0.035051 0.031611 0.027722 0.023415 0.018718 0.013662 0.008275 0.002579 -0.003412 -0.009678 -0.016204 -0.022983 -0.030014 -0.037300 -0.044847 -0.052654 -0.060712 -0.069003 -0.077503 -0.086180 -0.094989 -0.103872 -0.112755 -0.121549 -0.130157 -0.138483 -0.146461 -0.154090 -0.161477 -0.168834 -0.176447 -0.184616 -0.193616 -0.203614 -0.214589 -0.226299 -0.238282 -0.250050 -0.261237 -0.271703 -0.281489 +0.021330 0.023587 0.025864 0.028098 0.030241 0.032265 0.034148 0.035875 0.037416 0.038742 0.039858 0.040751 0.041381 0.041654 0.041461 0.040732 0.039413 0.037473 0.034913 0.031777 0.028111 0.023953 0.019339 0.014303 0.008880 0.003102 -0.003011 -0.009443 -0.016172 -0.023188 -0.030485 -0.038066 -0.045936 -0.054094 -0.062535 -0.071239 -0.080182 -0.089332 -0.098649 -0.108083 -0.117566 -0.127019 -0.136337 -0.145395 -0.154085 -0.162361 -0.170301 -0.178120 -0.186122 -0.194634 -0.203956 -0.214321 -0.225804 -0.238269 -0.251308 -0.264379 -0.276997 -0.288886 -0.300008 -0.310466 +0.016887 0.019235 0.021614 0.023988 0.026297 0.028485 0.030533 0.032412 0.034082 0.035512 0.036698 0.037639 0.038309 0.038635 0.038497 0.037802 0.036486 0.034492 0.031815 0.028497 0.024597 0.020160 0.015228 0.009842 0.004041 -0.002142 -0.008689 -0.015578 -0.022792 -0.030321 -0.038165 -0.046327 -0.054808 -0.063604 -0.072698 -0.082064 -0.091673 -0.101485 -0.111457 -0.121534 -0.131646 -0.141692 -0.151530 -0.161005 -0.170019 -0.178602 -0.186944 -0.195359 -0.204199 -0.213793 -0.224419 -0.236250 -0.249274 -0.263214 -0.277527 -0.291630 -0.305079 -0.317705 -0.329546 -0.340751 +0.012803 0.015229 0.017690 0.020141 0.022550 0.024876 0.027060 0.029080 0.030877 0.032408 0.033660 0.034645 0.035336 0.035688 0.035577 0.034896 0.033565 0.031513 0.028713 0.025207 0.021064 0.016338 0.011078 0.005330 -0.000863 -0.007466 -0.014462 -0.021829 -0.029550 -0.037619 -0.046038 -0.054808 -0.063928 -0.073383 -0.083149 -0.093194 -0.103482 -0.113974 -0.124627 -0.135382 -0.146152 -0.156794 -0.167117 -0.176963 -0.186293 -0.195251 -0.204133 -0.213312 -0.223153 -0.233970 -0.246009 -0.259382 -0.273981 -0.289370 -0.304918 -0.320018 -0.334310 -0.347720 -0.360348 -0.372369 +0.009169 0.011550 0.014052 0.016569 0.019042 0.021434 0.023730 0.025863 0.027777 0.029406 0.030722 0.031745 0.032448 0.032805 0.032698 0.032012 0.030650 0.028531 0.025603 0.021902 0.017507 0.012482 0.006881 0.000760 -0.005836 -0.012877 -0.020341 -0.028206 -0.036458 -0.045094 -0.054116 -0.063522 -0.073304 -0.083437 -0.093893 -0.104634 -0.115622 -0.126822 -0.138192 -0.149662 -0.161102 -0.172310 -0.183069 -0.193262 -0.202953 -0.212396 -0.221962 -0.232054 -0.243030 -0.255178 -0.268716 -0.283696 -0.299885 -0.316708 -0.333456 -0.349541 -0.364707 -0.378956 -0.392433 -0.405338 +0.006050 0.008306 0.010723 0.013239 0.015760 0.018200 0.020539 0.022761 0.024765 0.026486 0.027865 0.028921 0.029630 0.029980 0.029859 0.029148 0.027740 0.025544 0.022482 0.018578 0.013922 0.008586 0.002635 -0.003874 -0.010889 -0.018385 -0.026336 -0.034720 -0.043528 -0.052758 -0.062410 -0.072478 -0.082942 -0.093774 -0.104937 -0.116393 -0.128110 -0.140056 -0.152185 -0.164393 -0.176486 -0.188211 -0.199372 -0.209932 -0.220067 -0.230113 -0.240498 -0.251631 -0.263846 -0.277416 -0.292529 -0.309171 -0.326963 -0.345202 -0.363123 -0.380205 -0.396285 -0.411429 -0.425817 -0.439679 +0.003499 0.005512 0.007783 0.010194 0.012684 0.015153 0.017518 0.019771 0.021842 0.023634 0.025071 0.026157 0.026869 0.027201 0.027054 0.026302 0.024833 0.022548 0.019345 0.015230 0.010303 0.004647 -0.001669 -0.008577 -0.016028 -0.023996 -0.032455 -0.041383 -0.050772 -0.060623 -0.070931 -0.081682 -0.092849 -0.104398 -0.116289 -0.128487 -0.140968 -0.153704 -0.166626 -0.179568 -0.192273 -0.204476 -0.216038 -0.227023 -0.237692 -0.248460 -0.259787 -0.272066 -0.285606 -0.300677 -0.317440 -0.335790 -0.355194 -0.374831 -0.393913 -0.412017 -0.429058 -0.445153 -0.460514 -0.475412 +0.001490 0.003232 0.005236 0.007485 0.009858 0.012275 0.014657 0.016910 0.019004 0.020843 0.022327 0.023440 0.024153 0.024460 0.024276 0.023471 0.021928 0.019540 0.016189 0.011855 0.006647 0.000658 -0.006034 -0.013357 -0.021261 -0.029721 -0.038708 -0.048203 -0.058200 -0.068697 -0.079685 -0.091140 -0.103030 -0.115316 -0.127959 -0.140933 -0.154221 -0.167788 -0.181514 -0.195166 -0.208440 -0.221106 -0.233104 -0.244581 -0.255880 -0.267484 -0.279857 -0.293365 -0.308306 -0.324955 -0.343440 -0.363541 -0.384561 -0.405574 -0.425827 -0.444988 -0.463037 -0.480139 -0.496541 -0.512566 +-0.000121 0.001395 0.003139 0.005114 0.007316 0.009610 0.011928 0.014187 0.016259 0.018114 0.019625 0.020760 0.021473 0.021750 0.021521 0.020651 0.019021 0.016518 0.013010 0.008449 0.002949 -0.003386 -0.010467 -0.018219 -0.026596 -0.035567 -0.045104 -0.055191 -0.065821 -0.076988 -0.088677 -0.100857 -0.113491 -0.126536 -0.139960 -0.153749 -0.167888 -0.182312 -0.196836 -0.211158 -0.224978 -0.238123 -0.250604 -0.262642 -0.274671 -0.287216 -0.300722 -0.315528 -0.331943 -0.350247 -0.370526 -0.392411 -0.415042 -0.437424 -0.458867 -0.479124 -0.498231 -0.516398 -0.533919 -0.551166 +-0.001449 -0.000107 0.001406 0.003129 0.005062 0.007178 0.009371 0.011569 0.013622 0.015448 0.016963 0.018108 0.018818 0.019064 0.018784 0.017840 0.016110 0.013479 0.009805 0.005007 -0.000797 -0.007489 -0.014974 -0.023172 -0.032039 -0.041542 -0.051651 -0.062353 -0.073640 -0.085501 -0.097912 -0.110838 -0.124235 -0.138066 -0.152307 -0.166952 -0.181979 -0.197270 -0.212567 -0.227532 -0.241898 -0.255554 -0.268567 -0.281242 -0.294100 -0.307676 -0.322383 -0.338554 -0.356515 -0.376555 -0.398693 -0.422386 -0.446622 -0.470375 -0.493039 -0.514431 -0.534649 -0.553944 -0.572667 -0.591235 diff --git a/Test_Cases/NREL-5MW/DISCON.IN b/Test_Cases/NREL-5MW/DISCON.IN index c8050fcf..9ac74715 100644 --- a/Test_Cases/NREL-5MW/DISCON.IN +++ b/Test_Cases/NREL-5MW/DISCON.IN @@ -1,5 +1,5 @@ ! Controller parameter input file for the NREL-5MW wind turbine -! - File written using ROSCO version 2.4.1 controller tuning logic on 12/13/21 +! - File written using ROSCO version 2.4.1 controller tuning logic on 01/10/22 !------- 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} @@ -32,17 +32,17 @@ !------- BLADE PITCH CONTROL ---------------------------------------------- 30 ! PC_GS_n - Amount of gain-scheduling table entries -0.057184 0.084679 0.106097 0.124429 0.140845 0.155934 0.170053 0.183401 0.196139 0.208359 0.220146 0.231564 0.242647 0.253450 0.263988 0.274301 0.284401 0.294305 0.304033 0.313597 0.323005 0.332262 0.341382 0.350374 0.359244 0.367996 0.376635 0.385162 0.393584 0.401904 ! PC_GS_angles - Gain-schedule table: pitch angles [rad]. --0.020690 -0.018186 -0.016154 -0.014472 -0.013057 -0.011849 -0.010807 -0.009899 -0.009100 -0.008391 -0.007759 -0.007192 -0.006679 -0.006214 -0.005790 -0.005402 -0.005045 -0.004716 -0.004412 -0.004130 -0.003868 -0.003623 -0.003395 -0.003181 -0.002980 -0.002791 -0.002613 -0.002445 -0.002286 -0.002135 ! PC_GS_KP - Gain-schedule table: pitch controller kp gains [s]. --0.008383 -0.007511 -0.006803 -0.006217 -0.005724 -0.005303 -0.004940 -0.004624 -0.004345 -0.004099 -0.003878 -0.003681 -0.003502 -0.003340 -0.003192 -0.003057 -0.002933 -0.002818 -0.002712 -0.002614 -0.002523 -0.002438 -0.002358 -0.002283 -0.002213 -0.002147 -0.002085 -0.002027 -0.001971 -0.001919 ! PC_GS_KI - Gain-schedule table: pitch controller ki gains [-]. +0.057030 0.084600 0.106058 0.124390 0.140834 0.155928 0.170022 0.183421 0.196130 0.208371 0.220150 0.231563 0.242669 0.253475 0.263988 0.274286 0.284392 0.294316 0.304063 0.313632 0.323026 0.332264 0.341376 0.350377 0.359275 0.368069 0.376751 0.385310 0.393743 0.402053 ! PC_GS_angles - Gain-schedule table: pitch angles [rad]. +-0.020627 -0.018135 -0.016113 -0.014440 -0.013032 -0.011832 -0.010795 -0.009892 -0.009097 -0.008393 -0.007764 -0.007200 -0.006690 -0.006227 -0.005806 -0.005420 -0.005066 -0.004739 -0.004436 -0.004156 -0.003895 -0.003652 -0.003425 -0.003212 -0.003012 -0.002825 -0.002648 -0.002480 -0.002323 -0.002173 ! PC_GS_KP - Gain-schedule table: pitch controller kp gains [s]. +-0.008376 -0.007504 -0.006796 -0.006210 -0.005717 -0.005297 -0.004934 -0.004618 -0.004340 -0.004093 -0.003873 -0.003676 -0.003497 -0.003335 -0.003188 -0.003053 -0.002929 -0.002814 -0.002709 -0.002610 -0.002519 -0.002434 -0.002354 -0.002280 -0.002210 -0.002144 -0.002082 -0.002024 -0.001969 -0.001916 ! PC_GS_KI - Gain-schedule table: pitch controller ki gains [-]. 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 ! PC_GS_KD - Gain-schedule table: pitch controller kd gains 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 ! PC_GS_TF - Gain-schedule table: pitch controller tf gains (derivative filter) 1.570000000000 ! PC_MaxPit - Maximum physical pitch limit, [rad]. -0.004490000000 ! PC_MinPit - Minimum physical pitch limit, [rad]. +0.002060000000 ! PC_MinPit - Minimum physical pitch limit, [rad]. 0.174500000000 ! PC_MaxRat - Maximum pitch rate (in absolute value) in pitch controller, [rad/s]. -0.17450000000 ! PC_MinRat - Minimum pitch rate (in absolute value) in pitch controller, [rad/s]. 122.9096700000 ! PC_RefSpd - Desired (reference) HSS speed for pitch controller, [rad/s]. -0.004490000000 ! PC_FinePit - Record 5: Below-rated pitch angle set-point, [rad] +0.002060000000 ! PC_FinePit - Record 5: Below-rated pitch angle set-point, [rad] 0.017450000000 ! PC_Switch - Angle above lowest minimum pitch angle for switch, [rad] !------- INDIVIDUAL PITCH CONTROL ----------------------------------------- @@ -57,15 +57,15 @@ 1500000.000000 ! VS_MaxRat - Maximum torque rate (in absolute value) in torque controller, [Nm/s]. 47402.87063000 ! VS_MaxTq - Maximum generator torque in Region 3 (HSS side), [Nm]. 0.000000000000 ! VS_MinTq - Minimum generator torque (HSS side), [Nm]. -35.98150000000 ! VS_MinOMSpd - Minimum generator speed [rad/s] -2.060980000000 ! VS_Rgn2K - Generator torque constant in Region 2 (HSS side), [Nm/(rad/s)^2] +35.29006000000 ! VS_MinOMSpd - Minimum generator speed [rad/s] +2.185750000000 ! VS_Rgn2K - Generator torque constant in Region 2 (HSS side), [Nm/(rad/s)^2] 5000000.000000 ! VS_RtPwr - Wind turbine rated power [W] 43093.51876000 ! VS_RtTq - Rated torque, [Nm]. 122.9096700000 ! VS_RefSpd - Rated generator speed [rad/s] 1 ! VS_n - Number of generator PI torque controller gains --675.470050000 ! VS_KP - Proportional gain for generator PI torque controller [-]. (Only used in the transitional 2.5 region if VS_ControlMode =/ 2) +-679.090610000 ! VS_KP - Proportional gain for generator PI torque controller [-]. (Only used in the transitional 2.5 region if VS_ControlMode =/ 2) -104.507080000 ! VS_KI - Integral gain for generator PI torque controller [s]. (Only used in the transitional 2.5 region if VS_ControlMode =/ 2) -7.79 ! VS_TSRopt - Power-maximizing region 2 tip-speed-ratio [rad]. +7.64 ! VS_TSRopt - Power-maximizing region 2 tip-speed-ratio [rad]. !------- SETPOINT SMOOTHER --------------------------------------------- 1.00000 ! SS_VSGain - Variable speed torque controller setpoint smoother gain, [-]. @@ -80,10 +80,10 @@ 43702538.05700 ! 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) (absolute path or relative to this file) -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 +60 26 ! PerfTableSize - Size of rotor performance tables, first number refers to number of blade pitch angles, second number referse to number of tip-speed ratios 60 ! WE_FOPoles_N - Number of first-order system poles used in EKF 3.0000 3.2897 3.5793 3.8690 4.1586 4.4483 4.7379 5.0276 5.3172 5.6069 5.8966 6.1862 6.4759 6.7655 7.0552 7.3448 7.6345 7.9241 8.2138 8.5034 8.7931 9.0828 9.3724 9.6621 9.9517 10.2414 10.5310 10.8207 11.1103 11.4000 11.8533 12.3067 12.7600 13.2133 13.6667 14.1200 14.5733 15.0267 15.4800 15.9333 16.3867 16.8400 17.2933 17.7467 18.2000 18.6533 19.1067 19.5600 20.0133 20.4667 20.9200 21.3733 21.8267 22.2800 22.7333 23.1867 23.6400 24.0933 24.5467 25.0000 ! WE_FOPoles_v - Wind speeds corresponding to first-order system poles [m/s] --0.01595686 -0.01749752 -0.01903818 -0.02057884 -0.02211950 -0.02366017 -0.02520083 -0.02674149 -0.02828215 -0.02982281 -0.03136348 -0.03290414 -0.03444480 -0.03598546 -0.03752613 -0.03906679 -0.04060745 -0.04214811 -0.04368877 -0.04522944 -0.04677010 -0.04831076 -0.04985142 -0.05139208 -0.05293275 -0.05447341 -0.05801792 -0.06143926 -0.06457372 -0.06037223 0.02081964 0.01321781 0.00260088 -0.00946527 -0.02243222 -0.03602280 -0.05018905 -0.06471244 -0.07962397 -0.09509370 -0.11064413 -0.12676985 -0.14280724 -0.15953654 -0.17597588 -0.19315019 -0.21019460 -0.22763723 -0.24561537 -0.26323269 -0.28154954 -0.30021563 -0.31850528 -0.33751960 -0.35713765 -0.37607197 -0.39558204 -0.41576810 -0.43645174 -0.46925015 ! WE_FOPoles - First order system poles [1/s] +-0.01621940 -0.01778541 -0.01935142 -0.02091743 -0.02248344 -0.02404945 -0.02561546 -0.02718148 -0.02874749 -0.03031350 -0.03187951 -0.03344552 -0.03501153 -0.03657754 -0.03814355 -0.03970956 -0.04127557 -0.04284158 -0.04440760 -0.04597361 -0.04753962 -0.04910563 -0.05067164 -0.05223765 -0.05380366 -0.05536967 -0.05728147 -0.06330265 -0.06379422 -0.05992880 0.02108232 0.01332596 0.00286917 -0.00934346 -0.02210567 -0.03573115 -0.04992081 -0.06410700 -0.07904327 -0.09464397 -0.10966940 -0.12535130 -0.14172822 -0.15864521 -0.17420722 -0.19067888 -0.20794776 -0.22589350 -0.24397221 -0.26012893 -0.27734646 -0.29553451 -0.31459704 -0.33432810 -0.35450422 -0.37188425 -0.38962796 -0.40833822 -0.42790565 -0.44821360 ! WE_FOPoles - First order system poles [1/s] !------- YAW CONTROL ------------------------------------------------------ 0.13960 ! Y_ErrThresh - Yaw error threshold. Turbine begins to yaw when it passes this. [rad^2 s] @@ -106,7 +106,7 @@ !------- MINIMUM PITCH SATURATION ------------------------------------------- 60 ! PS_BldPitchMin_N - Number of values in minimum blade pitch lookup table (should equal number of values in PS_WindSpeeds and PS_BldPitchMin) 3.0000 3.2897 3.5793 3.8690 4.1586 4.4483 4.7379 5.0276 5.3172 5.6069 5.8966 6.1862 6.4759 6.7655 7.0552 7.3448 7.6345 7.9241 8.2138 8.5034 8.7931 9.0828 9.3724 9.6621 9.9517 10.2414 10.5310 10.8207 11.1103 11.4000 11.8533 12.3067 12.7600 13.2133 13.6667 14.1200 14.5733 15.0267 15.4800 15.9333 16.3867 16.8400 17.2933 17.7467 18.2000 18.6533 19.1067 19.5600 20.0133 20.4667 20.9200 21.3733 21.8267 22.2800 22.7333 23.1867 23.6400 24.0933 24.5467 25.0000 ! PS_WindSpeeds - Wind speeds corresponding to minimum blade pitch angles [m/s] -0.00449013 0.00449013 0.00449013 0.00449013 0.00449013 0.00449013 0.00449013 0.00449013 0.00449013 0.00449013 0.00449013 0.00449013 0.00449013 0.00449013 0.00449013 0.00449013 0.00449013 0.00449013 0.00449013 0.00449013 0.00449013 0.00449013 0.00449013 0.00449013 0.00615705 0.01974266 0.02860718 0.03688441 0.04477108 0.05235718 0.06376120 0.07475523 0.08542212 0.09583633 0.10602670 0.11603322 0.12587821 0.13557604 0.14513809 0.15458149 0.16391849 0.17315573 0.18230188 0.19135693 0.20032692 0.20921910 0.21803582 0.22677328 0.23544465 0.24404429 0.25256294 0.26101610 0.26941462 0.27773852 0.28598556 0.29417473 0.30231731 0.31040191 0.31841638 0.32635836 ! PS_BldPitchMin - Minimum blade pitch angles [rad] +0.00205640 0.00205640 0.00205640 0.00205640 0.00205640 0.00205640 0.00205640 0.00205640 0.00205640 0.00205640 0.00205640 0.00205640 0.00205640 0.00205640 0.00205640 0.00205640 0.00205640 0.00205640 0.00205640 0.00205640 0.00205640 0.00205640 0.00205640 0.00205640 0.00303151 0.01721629 0.02859373 0.03687481 0.04476825 0.05236247 0.06375400 0.07474779 0.08543090 0.09585450 0.10604463 0.11605290 0.12589394 0.13558609 0.14515519 0.15461533 0.16396389 0.17319744 0.18233873 0.19141623 0.20042680 0.20933711 0.21814233 0.22686097 0.23552850 0.24415625 0.25272748 0.26121325 0.26959477 0.27787810 0.28608797 0.29425480 0.30239404 0.31050188 0.31856602 0.32657014 ! PS_BldPitchMin - Minimum blade pitch angles [rad] !------- SHUTDOWN ----------------------------------------------------------- 0.436300000000 ! SD_MaxPit - Maximum blade pitch angle to initiate shutdown, [rad] From a857211fa02bd738af54daf6d5a9d1b2cd157265 Mon Sep 17 00:00:00 2001 From: dzalkind <65573423+dzalkind@users.noreply.github.com> Date: Fri, 25 Feb 2022 11:24:06 -0700 Subject: [PATCH 056/218] Allow default inputs (#110) * Allow defaults for AeroDyn inputs * Allow AeroDyn inputs to be floats, too --- ROSCO_toolbox/turbine.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/ROSCO_toolbox/turbine.py b/ROSCO_toolbox/turbine.py index 17e38d29..d5cb7027 100644 --- a/ROSCO_toolbox/turbine.py +++ b/ROSCO_toolbox/turbine.py @@ -176,7 +176,11 @@ def load_from_fast(self, FAST_InputFile,FAST_directory, FAST_ver='OpenFAST',dev_ self.NumBl = fast.fst_vt['ElastoDyn']['NumBl'] self.TowerHt = fast.fst_vt['ElastoDyn']['TowerHt'] self.shearExp = 0.2 #HARD CODED FOR NOW + if 'default' in str(fast.fst_vt['AeroDyn15']['AirDens']): + fast.fst_vt['AeroDyn15']['AirDens'] = 1.225 self.rho = fast.fst_vt['AeroDyn15']['AirDens'] + if 'default' in str(fast.fst_vt['AeroDyn15']['KinVisc']): + fast.fst_vt['AeroDyn15']['KinVisc'] = 1.460e-5 self.mu = fast.fst_vt['AeroDyn15']['KinVisc'] self.Ng = fast.fst_vt['ElastoDyn']['GBRatio'] self.GenEff = fast.fst_vt['ServoDyn']['GenEff'] From 9b5499d762092285db7ed4e105ddc3cb220de72b Mon Sep 17 00:00:00 2001 From: "Nikhar J. Abbas" <40865984+nikhar-abbas@users.noreply.github.com> Date: Fri, 18 Mar 2022 12:17:10 -0600 Subject: [PATCH 057/218] ipc (#105) * remove interpolation of blade chord and twist * rename aerodynblade inputs * Update surface and DISCON.INs * Fix performance table paths * Add proportional control and cleanup IPC * Add IPC and filtered RootMyc to registry * Better logic for filtering RootMOOP and fix notch filter slopes bug * Add cyclic flap conrol * Fix comments in ColemanTransformInverse * Addd IPC_KP to DISCON.IN * Error checking foro flp or ipc * add mutichannel plotting with tuples * add CMakeFiles to gitignore * Add IPC_KP to api changes * numerical qualifiers for error handling * add IPC gains to schema for pass-through ability * fix variable names * fix ipc gain printing bug * make sure IPC_KP is positive * Update Polars to point to coord files * ignore dbg2 files * Add IEA15MW_OL.yaml * update coord reader/writer * expand pitch_initial to 30 degrees * Add example 13 for IPC * Update cp surfaces and DISCONS * add examples to readme * cleanup and streaamline run_examples * Add IPC tuning vars * Allow IPC to command pitch value below peak shaving saturation limit * shorten simulation time * Fix Material parameter path * Update DISCONs again * Fix OL_Input reading * Set wind speed, rotor speed IC in example 14 * Debug OL reading * Add more debugging lines * Add more debugging lines 2 * Clean up, hone in on debug call * Disable logging level * Update discons - resolve conflict * Print when finished with ROSCO * add control packageg * Use PriPath and RootName to name dbg files * Print AvrSWAP * Revert "Use PriPath and RootName to name dbg files" This reverts commit 062fcaa55b3bf42d44f8a3f163aa883ab9552412. * Disable other examples * Print OL inputs * Allow logging level 3 * Print OL inputs * Make example shorter * Print more stuf * Print shape * Revert "Print OL inputs" This reverts commit 8e2a642bb35e46850f579ca4e69ca6d6fc93f4cc. * Update ROSCO Simulink model with IPC example * refactor flap tuning for normalization methods * improved flap controller filtering * delete extra F_FlpCornerFrerq * Update inputs, reader, and writer for OF 3.1.0 * Make sigma default interp type for multi_sigma * Use openfast 3.1.0 in CI * Fix leak...maybe * Use OF 3.1.0 in testing * Use gfotran for compile * Clean up print statements * Re-enable all examples * Update NREL-5MW AD file * Only check airfoil controls if more than one table * Update BAR models * Revert "Use gfotran for compile" This reverts commit 5a6e2b7e30287a09a09781e2ba12f9b578132e1f. * Install pyFAST for CI * Fix some paths in ex12 * Disable example 12 * Fix example 12 linear path, re-enable * Skip compilers install for mac * Try gfortran-9, no compilers * Try gfortran-10, no compilers * Skip windows compile in pytools * Re-enable windows, use gfortran as FC * Unset FC in windows * Set environment for windows when dependencies installed * Try setting environment in installation * Put conditional env setting in correct place * Try in setup again * Break up tasks: Windows vs. not * Update DISCONs * Update docs with new variables * Add example documentation * Update ROSCO Simulink model for 3.1.0 * Make IEA model float again * Reduce IEA timestep * Match DT to checkpoint time Co-authored-by: dzalkind --- .github/workflows/CI_rosco-pytools.yml | 31 +- .gitignore | 2 + Examples/Cp_Ct_Cq.NREL5MW.txt | 162 +- Examples/README.md | 4 +- Examples/example_12.py | 12 +- Examples/example_13.py | 116 + Examples/example_14.py | 14 +- Examples/run_examples.py | 112 +- Matlab_Toolbox/Simulink/ROSCO.mdl | 23162 +++++++++++++--- Matlab_Toolbox/Utilities/load_ROSCO_params.m | 19 + Matlab_Toolbox/runFAST.m | 10 +- ROSCO/rosco_registry/rosco_types.yaml | 30 +- ROSCO/src/Controllers.f90 | 115 +- ROSCO/src/Filters.f90 | 18 +- ROSCO/src/Functions.f90 | 2 +- ROSCO/src/ROSCO_IO.f90 | 187 +- ROSCO/src/ROSCO_Types.f90 | 16 +- ROSCO/src/ReadSetParameters.f90 | 40 +- ROSCO_testing/regtest.py | 1 + ROSCO_toolbox/controller.py | 36 +- ROSCO_toolbox/inputs/schema2rst.py | 3 +- ROSCO_toolbox/inputs/toolbox_schema.yaml | 33 +- ROSCO_toolbox/ofTools/fast_io/FAST_reader.py | 166 +- ROSCO_toolbox/ofTools/fast_io/FAST_writer.py | 252 +- .../ofTools/fast_io/output_processing.py | 48 +- ROSCO_toolbox/turbine.py | 4 +- ROSCO_toolbox/utilities.py | 26 +- .../5MW_Land_Simulink/5MW_Land_Simulink.fst | 11 + .../NRELOffshrBsline5MW_Onshore_ServoDyn.dat | 7 + .../Airfoils/BAR_10_AeroDyn15_Polar_00.dat | 2 +- .../Airfoils/BAR_10_AeroDyn15_Polar_01.dat | 2 +- .../Airfoils/BAR_10_AeroDyn15_Polar_02.dat | 2 +- .../Airfoils/BAR_10_AeroDyn15_Polar_03.dat | 2 +- .../Airfoils/BAR_10_AeroDyn15_Polar_04.dat | 2 +- .../Airfoils/BAR_10_AeroDyn15_Polar_05.dat | 2 +- .../Airfoils/BAR_10_AeroDyn15_Polar_06.dat | 2 +- .../Airfoils/BAR_10_AeroDyn15_Polar_07.dat | 2 +- .../Airfoils/BAR_10_AeroDyn15_Polar_08.dat | 2 +- .../Airfoils/BAR_10_AeroDyn15_Polar_09.dat | 2 +- .../Airfoils/BAR_10_AeroDyn15_Polar_10.dat | 2 +- .../Airfoils/BAR_10_AeroDyn15_Polar_11.dat | 2 +- .../Airfoils/BAR_10_AeroDyn15_Polar_12.dat | 2 +- .../Airfoils/BAR_10_AeroDyn15_Polar_13.dat | 2 +- .../Airfoils/BAR_10_AeroDyn15_Polar_14.dat | 2 +- .../Airfoils/BAR_10_AeroDyn15_Polar_15.dat | 2 +- .../Airfoils/BAR_10_AeroDyn15_Polar_16.dat | 2 +- .../Airfoils/BAR_10_AeroDyn15_Polar_17.dat | 2 +- .../Airfoils/BAR_10_AeroDyn15_Polar_18.dat | 2 +- .../Airfoils/BAR_10_AeroDyn15_Polar_19.dat | 2 +- .../Airfoils/BAR_10_AeroDyn15_Polar_20.dat | 2 +- .../Airfoils/BAR_10_AeroDyn15_Polar_21.dat | 2 +- .../Airfoils/BAR_10_AeroDyn15_Polar_22.dat | 2 +- .../Airfoils/BAR_10_AeroDyn15_Polar_23.dat | 2 +- .../Airfoils/BAR_10_AeroDyn15_Polar_24.dat | 2 +- .../Airfoils/BAR_10_AeroDyn15_Polar_25.dat | 2 +- .../Airfoils/BAR_10_AeroDyn15_Polar_26.dat | 2 +- .../Airfoils/BAR_10_AeroDyn15_Polar_27.dat | 2 +- .../Airfoils/BAR_10_AeroDyn15_Polar_28.dat | 2 +- .../Airfoils/BAR_10_AeroDyn15_Polar_29.dat | 2 +- Test_Cases/BAR_10/BAR_10.fst | 13 +- Test_Cases/BAR_10/BAR_10_AeroDyn15.dat | 3 +- Test_Cases/BAR_10/BAR_10_BeamDyn.dat | 2 +- Test_Cases/BAR_10/BAR_10_DISCON.IN | 47 +- Test_Cases/BAR_10/BAR_10_ElastoDyn.dat | 2 - Test_Cases/BAR_10/BAR_10_ServoDyn.dat | 7 + Test_Cases/BAR_10/Cp_Ct_Cq.BAR_10.txt | 162 +- .../Cp_Ct_Cq.IEA15MW.txt | 162 +- .../DISCON-UMaineSemi.IN | 31 +- .../IEA-15-240-RWT-UMaineSemi.fst | 17 +- .../IEA-15-240-RWT-UMaineSemi_ElastoDyn.dat | 2 - .../IEA-15-240-RWT-UMaineSemi_ServoDyn.dat | 7 + .../IEA-15-240-RWT_AeroDyn15.dat | 45 +- Test_Cases/NREL-5MW/Cp_Ct_Cq.NREL5MW.txt | 162 +- Test_Cases/NREL-5MW/DISCON.IN | 29 +- Test_Cases/NREL-5MW/NREL-5MW.fst | 11 + .../NRELOffshrBsline5MW_Onshore_AeroDyn15.dat | 3 +- .../NRELOffshrBsline5MW_Onshore_ElastoDyn.dat | 5 +- .../NRELOffshrBsline5MW_Onshore_ServoDyn.dat | 7 + Tune_Cases/BAR.yaml | 6 +- Tune_Cases/IEA15MW_OL.yaml | 70 + docs/source/api_change.rst | 6 +- docs/source/standard_use.rst | 2 + docs/source/toolbox_input.rst | 76 +- environment.yml | 1 + 84 files changed, 21284 insertions(+), 4293 deletions(-) create mode 100644 Examples/example_13.py create mode 100644 Tune_Cases/IEA15MW_OL.yaml diff --git a/.github/workflows/CI_rosco-pytools.yml b/.github/workflows/CI_rosco-pytools.yml index 0d399512..7ea77301 100644 --- a/.github/workflows/CI_rosco-pytools.yml +++ b/.github/workflows/CI_rosco-pytools.yml @@ -5,7 +5,7 @@ on: [push, pull_request] # Specify FORTRAN compiler env: - FC: gfortran + FC: gfortran-10 # A workflow run is made up of one or more jobs that can run sequentially or in parallel jobs: @@ -42,14 +42,25 @@ jobs: if: true == contains( matrix.os, 'windows') run: | conda install -y m2w64-toolchain libpython + env: + FC: gfortran + - - name: Add dependencies macOS specific - if: true == contains( matrix.os, 'macOS') - run: | - conda install compilers + # - name: Add dependencies macOS specific + # if: true == contains( matrix.os, 'macOS') + # run: | + # conda install compilers # Install ROSCO toolbox + - name: Install ROSCO toolbox on Windows + if: true == contains( matrix.os, 'windows') + env: + FC: gfortran + run: | + python setup.py develop --compile-rosco + - name: Install ROSCO toolbox + if: false == contains( matrix.os, 'windows') run: | python setup.py develop --compile-rosco @@ -92,6 +103,12 @@ jobs: run: | conda install -y m2w64-toolchain libpython conda install -y wisdem + - name: Add pyFAST dependency + if: false == contains( matrix.os, 'windows') + run: | + git clone http://github.com/OpenFAST/python-toolbox + cd python-toolbox + python -m pip install -e . # Install ROSCO toolbox @@ -102,7 +119,7 @@ jobs: # Install OpenFAST - name: Install OpenFAST run: | - conda install openfast==3.0.0 + conda install openfast==3.1.0 # Run examples - name: Run examples @@ -153,7 +170,7 @@ jobs: # Install OpenFAST - name: Install OpenFAST run: | - conda install openfast==3.0.0 + conda install openfast==3.1.0 # Run ROSCO Testing - name: Run ROSCO testing diff --git a/.gitignore b/.gitignore index be2ed050..44e74d47 100644 --- a/.gitignore +++ b/.gitignore @@ -12,6 +12,7 @@ Source/Release/ Makefile */install/* *test_out* +*CMakeFiles* # Archive Scripts/CompileDISCONHereCopyRun\.cmd @@ -51,6 +52,7 @@ _build *.sum *.ech *.dbg +*.dbg2 *.out *.outb *.dbg diff --git a/Examples/Cp_Ct_Cq.NREL5MW.txt b/Examples/Cp_Ct_Cq.NREL5MW.txt index 65b4326c..4324d3bb 100644 --- a/Examples/Cp_Ct_Cq.NREL5MW.txt +++ b/Examples/Cp_Ct_Cq.NREL5MW.txt @@ -1,93 +1,99 @@ -# ----- Rotor performance tables for the OpenFAST_5MW wind turbine ----- -# ------------ Written on Oct-30-19 using the ROSCO toolbox ------------ +# ----- Rotor performance tables for the NREL-5MW wind turbine ----- +# ------------ Written on Jan-13-22 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 +# Pitch angle vector, 36 entries - x axis (matrix columns) (deg) +-5.0 -4.0 -3.0 -2.0 -1.0 0.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 14.0 15.0 16.0 17.0 18.0 19.0 20.0 21.0 22.0 23.0 24.0 25.0 26.0 27.0 28.0 29.0 30.0 +# TSR vector, 26 entries - y axis (matrix rows) (-) +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 # 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 +0.006673 0.009813 0.013077 0.016508 0.020122 0.023918 0.027887 0.032006 0.036239 0.040540 0.044858 0.049138 0.053326 0.057366 0.061205 0.064796 0.068092 0.071051 0.073631 0.075796 0.077520 0.078793 0.079607 0.079960 0.079851 0.079303 0.078341 0.076993 0.075269 0.073154 0.070619 0.067607 0.064059 0.059976 0.055381 0.050328 +0.020093 0.026879 0.033876 0.041034 0.048264 0.055472 0.062560 0.069438 0.076024 0.082246 0.088041 0.093349 0.098111 0.102262 0.105746 0.108521 0.110563 0.111865 0.112435 0.112304 0.111503 0.110082 0.108043 0.105376 0.102031 0.097898 0.092907 0.087092 0.080496 0.073183 0.065206 0.056618 0.047499 0.037976 0.028144 0.018084 +0.048757 0.059921 0.070879 0.081507 0.091686 0.101314 0.110305 0.118583 0.126073 0.132692 0.138350 0.142964 0.146489 0.148944 0.150362 0.150761 0.150158 0.148560 0.145993 0.142397 0.137607 0.131540 0.124241 0.115747 0.106162 0.095542 0.084011 0.071754 0.058916 0.045611 0.031929 0.017939 0.003701 -0.010721 -0.025259 -0.039848 +0.090123 0.104877 0.118836 0.131894 0.143960 0.154953 0.164780 0.173312 0.180438 0.186134 0.190421 0.193294 0.194678 0.194534 0.192872 0.189595 0.184490 0.177562 0.168848 0.158486 0.146540 0.133154 0.118581 0.103012 0.086606 0.069499 0.051807 0.033628 0.015033 -0.003935 -0.023212 -0.042681 -0.062203 -0.081676 -0.101014 -0.120137 +0.139124 0.156683 0.172901 0.187702 0.200999 0.212709 0.222753 0.231064 0.237530 0.241950 0.244105 0.243810 0.240834 0.235185 0.226970 0.216406 0.203596 0.188826 0.172423 0.154596 0.135473 0.115192 0.093900 0.071756 0.048901 0.025448 0.001458 -0.023067 -0.048079 -0.073394 -0.098747 -0.123894 -0.148637 -0.172971 -0.196999 -0.220426 +0.191782 0.211839 0.230276 0.247076 0.262109 0.275108 0.285675 0.293225 0.297120 0.296898 0.292698 0.284905 0.273940 0.260137 0.243968 0.225765 0.205747 0.184044 0.160751 0.135955 0.109826 0.082563 0.054349 0.025323 -0.004446 -0.034984 -0.066317 -0.098275 -0.130442 -0.162296 -0.193412 -0.223707 -0.253665 -0.283545 -0.312671 -0.340141 +0.246353 0.270341 0.292682 0.312827 0.329812 0.342452 0.349588 0.350796 0.346468 0.337517 0.324917 0.309376 0.291272 0.270832 0.248190 0.223439 0.196656 0.167952 0.137415 0.105259 0.071726 0.037018 0.001262 -0.035533 -0.073456 -0.112507 -0.152329 -0.192145 -0.231094 -0.268667 -0.305110 -0.341553 -0.378474 -0.414899 -0.449086 -0.478908 +0.306243 0.335683 0.361286 0.381426 0.394666 0.400011 0.397807 0.389766 0.377676 0.362345 0.344063 0.323009 0.299287 0.272921 0.243930 0.212388 0.178407 0.142107 0.103741 0.063607 0.021945 -0.021117 -0.065611 -0.111678 -0.159287 -0.207873 -0.256248 -0.303158 -0.347971 -0.391262 -0.434965 -0.480253 -0.525739 -0.568955 -0.606708 -0.638532 +0.368062 0.397982 0.420678 0.434161 0.438041 0.434596 0.426094 0.413722 0.397833 0.378568 0.356023 0.330207 0.301063 0.268542 0.232706 0.193700 0.151740 0.107083 0.060108 0.011125 -0.039710 -0.092454 -0.147289 -0.204180 -0.262421 -0.320480 -0.376558 -0.429701 -0.480649 -0.532192 -0.586717 -0.643176 -0.698195 -0.746783 -0.788014 -0.825218 +0.413915 0.437699 0.451902 0.458070 0.457967 0.452866 0.443478 0.429833 0.411921 0.389793 0.363427 0.332762 0.297737 0.258384 0.214897 0.167596 0.116800 0.062939 0.006435 -0.052490 -0.113873 -0.177938 -0.244676 -0.313397 -0.382360 -0.449143 -0.512100 -0.571792 -0.631581 -0.695509 -0.764242 -0.833635 -0.896797 -0.950560 -0.998368 -1.044827 +0.427324 0.444280 0.455448 0.462056 0.464498 0.462253 0.454597 0.441298 0.422256 0.397517 0.367139 0.331124 0.289519 0.242518 0.190536 0.134077 0.073568 0.009566 -0.057573 -0.127803 -0.201376 -0.278345 -0.358171 -0.439117 -0.518328 -0.593032 -0.663068 -0.731776 -0.804602 -0.885395 -0.971040 -1.052725 -1.123154 -1.184540 -1.242706 -1.302084 +0.413889 0.430080 0.443986 0.455667 0.463490 0.465861 0.461379 0.449315 0.429515 0.402103 0.367325 0.325347 0.276400 0.220931 0.159637 0.093102 0.021935 -0.053297 -0.132381 -0.215535 -0.302917 -0.394172 -0.487834 -0.580989 -0.669719 -0.752399 -0.831452 -0.912845 -1.003839 -1.105589 -1.208911 -1.301214 -1.380509 -1.453087 -1.525242 -1.600224 +0.390738 0.409602 0.427384 0.443933 0.457445 0.465005 0.464411 0.454181 0.433864 0.403639 0.364016 0.315425 0.258360 0.193623 0.122136 0.044567 -0.038313 -0.126023 -0.218606 -0.316340 -0.419059 -0.525699 -0.633667 -0.738622 -0.836834 -0.928785 -1.019688 -1.118620 -1.233318 -1.358741 -1.478110 -1.581346 -1.672639 -1.759983 -1.849169 -1.941926 +0.363054 0.386720 0.409228 0.429996 0.447852 0.460425 0.463989 0.456010 0.435373 0.402165 0.357222 0.301344 0.235402 0.160566 0.077923 -0.011703 -0.107479 -0.209107 -0.316861 -0.430808 -0.550233 -0.673151 -0.795604 -0.912315 -1.020857 -1.123956 -1.230487 -1.353172 -1.496497 -1.645302 -1.779751 -1.896314 -2.002958 -2.108318 -2.217267 -2.330606 +0.332023 0.361556 0.389367 0.414649 0.436246 0.452807 0.460431 0.454894 0.434075 0.397696 0.346937 0.283092 0.207494 0.121668 0.026850 -0.075950 -0.185943 -0.303110 -0.427726 -0.559435 -0.696810 -0.836734 -0.973950 -1.103096 -1.222996 -1.339770 -1.467400 -1.620400 -1.794614 -1.965735 -2.116279 -2.249130 -2.374431 -2.500966 -2.632648 -2.770283 +0.297995 0.333854 0.367528 0.397656 0.423215 0.442899 0.454053 0.450936 0.429986 0.390235 0.333142 0.260640 0.174562 0.076794 -0.031277 -0.148468 -0.274167 -0.408575 -0.551737 -0.702675 -0.859149 -1.016871 -1.169580 -1.311915 -1.444423 -1.578792 -1.734397 -1.922541 -2.128205 -2.321411 -2.490350 -2.642587 -2.789846 -2.940844 -3.098986 -3.264660 +0.261597 0.303619 0.343502 0.378889 0.408674 0.431280 0.445167 0.444233 0.423112 0.379761 0.315806 0.233927 0.136491 0.025768 -0.096686 -0.229613 -0.372646 -0.526034 -0.689370 -0.860978 -1.037730 -1.214335 -1.383513 -1.539437 -1.686737 -1.844401 -2.034203 -2.260837 -2.498120 -2.714447 -2.904511 -3.079332 -3.251981 -3.431224 -3.619857 -3.816817 +0.223751 0.271311 0.317227 0.358217 0.392491 0.418111 0.434088 0.434927 0.413446 0.366239 0.294883 0.202866 0.093151 -0.031589 -0.169648 -0.319787 -0.481868 -0.655988 -0.841105 -1.034831 -1.233270 -1.430180 -1.616348 -1.786462 -1.952417 -2.139500 -2.368690 -2.636225 -2.905702 -3.147086 -3.361213 -3.561934 -3.763787 -3.975522 -4.198409 -4.429489 +0.185578 0.237532 0.288993 0.335546 0.374551 0.403289 0.421002 0.423063 0.400961 0.349628 0.270309 0.167352 0.044405 -0.095487 -0.250473 -0.419415 -0.602317 -0.798913 -1.007440 -1.224860 -1.446724 -1.665242 -1.868434 -2.054428 -2.244050 -2.466255 -2.739406 -3.049892 -3.352672 -3.621561 -3.862815 -4.093010 -4.328409 -4.576896 -4.837351 -5.105458 +0.147095 0.203239 0.259075 0.310894 0.354752 0.386719 0.405978 0.408744 0.385629 0.329881 0.242007 0.127271 -0.009910 -0.166158 -0.339498 -0.528928 -0.734472 -0.955298 -1.188911 -1.431845 -1.679152 -1.920015 -2.140330 -2.345296 -2.563821 -2.826409 -3.147779 -3.503220 -3.840906 -4.140058 -4.411660 -4.675361 -4.948974 -5.238172 -5.539321 -5.847566 +0.109921 0.168465 0.228283 0.284493 0.333003 0.368316 0.389001 0.392004 0.367452 0.306944 0.209888 0.082498 -0.069969 -0.243863 -0.437077 -0.648769 -0.878808 -1.125646 -1.386141 -1.656724 -1.931386 -2.194733 -2.433122 -2.661010 -2.913585 -3.221522 -3.595200 -3.997663 -4.372318 -4.704715 -5.010142 -5.311913 -5.628384 -5.961897 -6.307013 -6.658699 +0.075556 0.133907 0.196815 0.256499 0.309270 0.347981 0.370019 0.372880 0.346417 0.280755 0.173858 0.032901 -0.135979 -0.328881 -0.543585 -0.779386 -1.035790 -1.310469 -1.599847 -1.900506 -2.203972 -2.489774 -2.748220 -3.003362 -3.294941 -3.653136 -4.083147 -4.534716 -4.948847 -5.317645 -5.660775 -6.005570 -6.369299 -6.750614 -7.143160 -7.541782 +0.045437 0.101086 0.164731 0.227521 0.283675 0.325613 0.348964 0.351362 0.322521 0.251245 0.133815 -0.021672 -0.208162 -0.421508 -0.659413 -0.921225 -1.205892 -1.510319 -1.830843 -2.164074 -2.497172 -2.805822 -3.087060 -3.374013 -3.709339 -4.122787 -4.613131 -5.115993 -5.572447 -5.980987 -6.366170 -6.759084 -7.174174 -7.606904 -8.050518 -8.499762 +0.020095 0.070625 0.132961 0.197686 0.256313 0.301131 0.325760 0.327415 0.295744 0.218342 0.089649 -0.081378 -0.286748 -0.522056 -0.784958 -1.074719 -1.389587 -1.725804 -2.080005 -2.448103 -2.811255 -3.143907 -3.451088 -3.774480 -4.158169 -4.632027 -5.186626 -5.743189 -6.245055 -6.696930 -7.128978 -7.575043 -8.045426 -8.533374 -9.031865 -9.535604 +-0.001687 0.043909 0.102330 0.166837 0.227413 0.274487 0.300332 0.301010 0.266040 0.181968 0.041242 -0.146395 -0.371984 -0.630855 -0.920613 -1.240294 -1.587356 -1.957580 -2.348192 -2.753074 -3.146694 -3.505110 -3.841738 -4.206100 -4.642786 -5.182427 -5.805056 -6.418029 -6.968601 -7.467747 -7.951835 -8.455876 -8.985506 -9.532652 -10.089996 -10.652280 +-0.020991 0.020364 0.073330 0.135754 0.197326 0.245733 0.272607 0.272110 0.233378 0.142039 -0.011538 -0.216915 -0.464126 -0.748233 -1.066769 -1.418378 -1.799699 -2.206350 -2.636179 -3.079288 -3.504186 -3.890511 -4.260392 -4.670103 -5.164549 -5.775547 -6.469853 -7.142266 -7.745026 -8.295764 -8.837283 -9.403900 -9.996885 -10.607377 -11.227722 -11.852766 # 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 +0.128717 0.128402 0.127976 0.127677 0.127561 0.127629 0.127867 0.128247 0.128729 0.129258 0.129777 0.130225 0.130542 0.130673 0.130570 0.130193 0.129510 0.128500 0.127155 0.125472 0.123467 0.121169 0.118605 0.115809 0.112801 0.109598 0.106205 0.102605 0.098769 0.094663 0.090253 0.085471 0.080247 0.074585 0.068519 0.062126 +0.168397 0.169715 0.171083 0.172538 0.173986 0.175323 0.176451 0.177284 0.177754 0.177804 0.177391 0.176487 0.175078 0.173164 0.170771 0.167935 0.164700 0.161125 0.157265 0.153157 0.148796 0.144149 0.139139 0.133696 0.127741 0.121140 0.113810 0.105805 0.097197 0.088074 0.078501 0.068532 0.058230 0.047709 0.037053 0.026331 +0.226643 0.229393 0.231723 0.233550 0.234756 0.235255 0.234993 0.233948 0.232126 0.229565 0.226326 0.222484 0.218143 0.213440 0.208473 0.203249 0.197693 0.191672 0.185067 0.177711 0.169360 0.159907 0.149434 0.138024 0.125825 0.112914 0.099398 0.085443 0.071172 0.056685 0.042068 0.027389 0.012700 -0.001958 -0.016522 -0.030881 +0.299075 0.301289 0.302422 0.302406 0.301210 0.298869 0.295464 0.291107 0.285985 0.280362 0.274473 0.268391 0.262007 0.255130 0.247532 0.238852 0.228637 0.216830 0.203516 0.188917 0.173159 0.156385 0.138854 0.120751 0.102214 0.083356 0.064271 0.045044 0.025754 0.006460 -0.012785 -0.031903 -0.050766 -0.069197 -0.086927 -0.103550 +0.379238 0.378835 0.376828 0.373306 0.368432 0.362520 0.355993 0.349221 0.342334 0.335182 0.327457 0.318711 0.308189 0.295450 0.280436 0.263431 0.244639 0.224405 0.203103 0.180973 0.158152 0.134784 0.110984 0.086862 0.062520 0.038061 0.013566 -0.010909 -0.035298 -0.059484 -0.083286 -0.106436 -0.128554 -0.149119 -0.167467 -0.182809 +0.462045 0.457610 0.451683 0.444801 0.437544 0.430278 0.422940 0.415089 0.406018 0.394702 0.380509 0.363246 0.343190 0.320701 0.296376 0.270674 0.243937 0.216365 0.188092 0.159188 0.129783 0.100004 0.069970 0.039795 0.009565 -0.020663 -0.050818 -0.080761 -0.110260 -0.138960 -0.166409 -0.192073 -0.215232 -0.234926 -0.250010 -0.259496 +0.545296 0.537969 0.530603 0.523523 0.516328 0.508094 0.497562 0.483752 0.466005 0.444344 0.419336 0.391808 0.362349 0.331374 0.299182 0.266026 0.232071 0.197454 0.162213 0.126478 0.090382 0.054055 0.017608 -0.018892 -0.055386 -0.091750 -0.127731 -0.162918 -0.196784 -0.228774 -0.258236 -0.284215 -0.305420 -0.320331 -0.327933 -0.328268 +0.634417 0.627969 0.621264 0.612780 0.601387 0.585824 0.565236 0.539859 0.510799 0.478901 0.444769 0.408839 0.371429 0.332767 0.293070 0.252557 0.211368 0.169524 0.127130 0.084335 0.041284 -0.001917 -0.045208 -0.088516 -0.131639 -0.174175 -0.215526 -0.255049 -0.292101 -0.325924 -0.355354 -0.378817 -0.394523 -0.401294 -0.399320 -0.390574 +0.735578 0.726839 0.715209 0.698962 0.676693 0.649128 0.617406 0.582286 0.544379 0.504195 0.462125 0.418443 0.373358 0.327062 0.279804 0.231775 0.183064 0.133686 0.083811 0.033605 -0.016820 -0.067406 -0.118066 -0.168514 -0.218193 -0.266339 -0.312201 -0.355042 -0.394026 -0.427876 -0.454896 -0.473018 -0.480617 -0.477721 -0.466483 -0.450923 +0.836616 0.819394 0.796306 0.768163 0.735696 0.699319 0.659490 0.616641 0.571164 0.523450 0.473790 0.422421 0.369559 0.315437 0.260360 0.204512 0.147873 0.090579 0.032826 -0.025256 -0.083602 -0.142121 -0.200467 -0.257947 -0.313640 -0.366661 -0.416171 -0.461284 -0.500752 -0.532889 -0.555398 -0.565981 -0.564006 -0.551394 -0.532762 -0.512992 +0.923379 0.893210 0.859907 0.823650 0.784285 0.741493 0.695217 0.645715 0.593258 0.538206 0.480917 0.421690 0.360798 0.298558 0.235326 0.171229 0.106253 0.040624 -0.025491 -0.092007 -0.158843 -0.225631 -0.291594 -0.355648 -0.416743 -0.473917 -0.526240 -0.572594 -0.611418 -0.640346 -0.656398 -0.657833 -0.645755 -0.624799 -0.601049 -0.579120 +0.993425 0.954344 0.913695 0.871240 0.826266 0.778188 0.726411 0.670805 0.611601 0.549205 0.484132 0.416794 0.347553 0.276858 0.205091 0.132281 0.058537 -0.015913 -0.090942 -0.166478 -0.242184 -0.317269 -0.390504 -0.460636 -0.526540 -0.587232 -0.641708 -0.688659 -0.725848 -0.749926 -0.757799 -0.749140 -0.727679 -0.700204 -0.673221 -0.650161 +1.058549 1.011415 0.963227 0.914208 0.863809 0.810735 0.753864 0.692505 0.626704 0.556910 0.483849 0.408103 0.330166 0.250636 0.169909 0.087938 0.004949 -0.078857 -0.163388 -0.248386 -0.333115 -0.416283 -0.496411 -0.572141 -0.642397 -0.706208 -0.762552 -0.809541 -0.843850 -0.861381 -0.859866 -0.841099 -0.811461 -0.779163 -0.750163 -0.726138 +1.122305 1.067207 1.011341 0.955082 0.898284 0.839959 0.778078 0.711195 0.638918 0.561654 0.480375 0.395899 0.308904 0.220154 0.129994 0.038399 -0.054349 -0.148080 -0.242618 -0.337354 -0.431053 -0.522046 -0.608688 -0.689695 -0.764072 -0.830961 -0.888968 -0.935169 -0.965155 -0.974811 -0.963246 -0.934896 -0.898382 -0.862536 -0.832084 -0.807326 +1.185738 1.122582 1.058847 0.995008 0.931027 0.866582 0.799502 0.727171 0.648509 0.563696 0.473951 0.380407 0.283976 0.185599 0.085524 -0.016186 -0.119230 -0.223433 -0.328360 -0.432958 -0.535499 -0.634048 -0.726965 -0.813132 -0.891721 -0.961752 -1.021004 -1.065338 -1.089724 -1.090502 -1.068696 -1.031466 -0.989260 -0.950738 -0.919159 -0.894322 +1.248868 1.177878 1.106090 1.034308 0.962814 0.891330 0.818549 0.740704 0.655695 0.563246 0.464772 0.361803 0.255555 0.147124 0.036641 -0.075690 -0.189578 -0.304724 -0.420330 -0.534810 -0.646043 -0.751962 -0.851114 -0.942592 -1.025625 -1.098723 -1.158523 -1.199963 -1.217675 -1.208810 -1.176857 -1.131525 -1.084562 -1.043982 -1.011881 -0.987449 +1.310753 1.232966 1.153240 1.073234 0.993908 0.914846 0.835616 0.752042 0.660663 0.560476 0.452996 0.340238 0.223775 0.104835 -0.016537 -0.140014 -0.265270 -0.391766 -0.518236 -0.642586 -0.762395 -0.875671 -0.981224 -1.078327 -1.165991 -1.241827 -1.301438 -1.339064 -1.349133 -1.330112 -1.288253 -1.235555 -1.184617 -1.142625 -1.110627 -1.086622 +1.370202 1.287113 1.200281 1.111936 1.024461 0.937489 0.851104 0.761450 0.663572 0.555529 0.438759 0.315838 0.188759 0.058841 -0.073915 -0.209068 -0.346176 -0.484368 -0.621832 -0.756036 -0.884420 -1.005217 -1.117496 -1.220568 -1.312850 -1.390993 -1.449734 -1.482671 -1.484225 -1.454750 -1.403285 -1.343886 -1.289747 -1.247079 -1.215478 -1.191550 +1.425945 1.339521 1.246699 1.150493 1.054590 0.959390 0.865327 0.769108 0.664559 0.548527 0.422175 0.288713 0.150621 0.009228 -0.135421 -0.282763 -0.432177 -0.582348 -0.730921 -0.875019 -1.012114 -1.140727 -1.260146 -1.369430 -1.466168 -1.546178 -1.603417 -1.630806 -1.623105 -1.583019 -1.522246 -1.456812 -1.400325 -1.357559 -1.326244 -1.302016 +1.478287 1.389036 1.292096 1.188788 1.084384 0.980656 0.878503 0.775237 0.663743 0.539578 0.403344 0.258956 0.109434 -0.043935 -0.200986 -0.361019 -0.523161 -0.685556 -0.845366 -0.999480 -1.145544 -1.282366 -1.409337 -1.524920 -1.625906 -1.707377 -1.762486 -1.783498 -1.765941 -1.715150 -1.645380 -1.574677 -1.516687 -1.474068 -1.442713 -1.417868 +1.525569 1.435807 1.335411 1.226404 1.113896 1.001379 0.890777 0.780002 0.661259 0.528773 0.382346 0.226642 0.065268 -0.100589 -0.270547 -0.443771 -0.619028 -0.793883 -0.965092 -1.129434 -1.284809 -1.430301 -1.565142 -1.687017 -1.792041 -1.874588 -1.926934 -1.940785 -1.912886 -1.851321 -1.772922 -1.697837 -1.639004 -1.596445 -1.564728 -1.539006 +1.566315 1.479214 1.376488 1.263103 1.143093 1.021619 0.902254 0.783557 0.657210 0.516187 0.359250 0.191837 0.018160 -0.160683 -0.344060 -0.530963 -0.719689 -0.907253 -1.090067 -1.264932 -1.430027 -1.584649 -1.727568 -1.855690 -1.964564 -2.047808 -2.096752 -2.102712 -2.064071 -1.991678 -1.905145 -1.826603 -1.767296 -1.724535 -1.692174 -1.665365 +1.599400 1.517580 1.415403 1.298085 1.171736 1.041419 0.913010 0.786007 0.651695 0.501886 0.334113 0.154593 -0.031851 -0.224178 -0.421492 -0.622547 -0.825079 -1.025616 -1.220296 -1.406037 -1.581314 -1.745475 -1.896602 -2.030921 -2.143474 -2.227031 -2.271933 -2.269336 -2.219606 -2.136371 -2.042346 -1.961175 -1.901455 -1.858218 -1.824963 -1.796908 +1.624851 1.550529 1.451132 1.331239 1.199665 1.060803 0.923092 0.787425 0.644798 0.485924 0.306984 0.114961 -0.084730 -0.291046 -0.502823 -0.718477 -0.935156 -1.148950 -1.355807 -1.552820 -1.738766 -1.912794 -2.072223 -2.212699 -2.328774 -2.412252 -2.452480 -2.440720 -2.379579 -2.285564 -2.184808 -2.101635 -2.041361 -1.997404 -1.963032 -1.933615 +1.644484 1.576932 1.482832 1.362862 1.226569 1.079755 0.932536 0.787882 0.636575 0.468351 0.277909 0.072976 -0.140450 -0.361273 -0.588030 -0.818712 -1.049886 -1.277246 -1.496631 -1.705352 -1.902443 -2.086605 -2.254411 -2.401028 -2.520465 -2.603459 -2.638392 -2.616924 -2.544069 -2.439454 -2.332777 -2.247970 -2.186918 -2.142020 -2.106339 -2.075472 +1.659936 1.597863 1.510260 1.392062 1.252024 1.098156 0.941373 0.787439 0.627098 0.449210 0.246925 0.028662 -0.198996 -0.434846 -0.677094 -0.923225 -1.169251 -1.410513 -1.642804 -1.863707 -2.072377 -2.266900 -2.443154 -2.595911 -2.718548 -2.800637 -2.829676 -2.798002 -2.713156 -2.598249 -2.486428 -2.400100 -2.338052 -2.292009 -2.254855 -2.222470 # 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 +0.003340 0.004911 0.006545 0.008262 0.010070 0.011970 0.013957 0.016018 0.018137 0.020289 0.022450 0.024593 0.026688 0.028710 0.030632 0.032429 0.034079 0.035559 0.036851 0.037934 0.038797 0.039434 0.039841 0.040018 0.039964 0.039689 0.039208 0.038533 0.037670 0.036612 0.035343 0.033836 0.032060 0.030017 0.027717 0.025188 +0.008045 0.010762 0.013563 0.016429 0.019324 0.022210 0.025048 0.027802 0.030438 0.032930 0.035250 0.037375 0.039282 0.040944 0.042339 0.043450 0.044267 0.044789 0.045017 0.044964 0.044644 0.044075 0.043258 0.042191 0.040851 0.039196 0.037198 0.034870 0.032229 0.029301 0.026107 0.022669 0.019018 0.015205 0.011268 0.007241 +0.016268 0.019993 0.023649 0.027195 0.030591 0.033804 0.036803 0.039565 0.042064 0.044273 0.046161 0.047700 0.048876 0.049695 0.050168 0.050302 0.050100 0.049567 0.048711 0.047511 0.045913 0.043888 0.041453 0.038619 0.035421 0.031878 0.028030 0.023941 0.019658 0.015218 0.010653 0.005985 0.001235 -0.003577 -0.008428 -0.013295 +0.025774 0.029993 0.033986 0.037720 0.041171 0.044314 0.047125 0.049565 0.051603 0.053232 0.054458 0.055280 0.055675 0.055634 0.055159 0.054221 0.052762 0.050780 0.048288 0.045325 0.041909 0.038080 0.033913 0.029460 0.024768 0.019876 0.014816 0.009617 0.004299 -0.001125 -0.006638 -0.012206 -0.017789 -0.023358 -0.028889 -0.034358 +0.034814 0.039208 0.043266 0.046970 0.050298 0.053228 0.055741 0.057821 0.059439 0.060545 0.061084 0.061010 0.060266 0.058852 0.056797 0.054153 0.050947 0.047252 0.043147 0.038686 0.033900 0.028825 0.023497 0.017956 0.012237 0.006368 0.000365 -0.005772 -0.012031 -0.018366 -0.024710 -0.031003 -0.037195 -0.043284 -0.049297 -0.055159 +0.042659 0.047120 0.051221 0.054958 0.058302 0.061193 0.063544 0.065223 0.066090 0.066040 0.065106 0.063373 0.060934 0.057863 0.054267 0.050218 0.045765 0.040938 0.035756 0.030241 0.024429 0.018365 0.012089 0.005633 -0.000989 -0.007782 -0.014751 -0.021860 -0.029015 -0.036100 -0.043021 -0.049760 -0.056424 -0.063070 -0.069549 -0.075659 +0.049318 0.054120 0.058592 0.062625 0.066025 0.068556 0.069984 0.070226 0.069360 0.067568 0.065045 0.061934 0.058310 0.054218 0.049685 0.044730 0.039369 0.033622 0.027509 0.021072 0.014359 0.007411 0.000253 -0.007113 -0.014705 -0.022523 -0.030495 -0.038466 -0.046263 -0.053785 -0.061080 -0.068376 -0.075767 -0.083059 -0.089903 -0.095873 +0.055734 0.061091 0.065751 0.069416 0.071826 0.072799 0.072397 0.070934 0.068734 0.065944 0.062616 0.058785 0.054468 0.049669 0.044393 0.038653 0.032469 0.025862 0.018880 0.011576 0.003994 -0.003843 -0.011941 -0.020324 -0.028989 -0.037831 -0.046635 -0.055172 -0.063328 -0.071206 -0.079160 -0.087402 -0.095680 -0.103545 -0.110416 -0.116207 +0.061402 0.066394 0.070180 0.072429 0.073076 0.072502 0.071083 0.069019 0.066369 0.063155 0.059394 0.055087 0.050225 0.044800 0.038821 0.032314 0.025314 0.017864 0.010027 0.001856 -0.006625 -0.015424 -0.024572 -0.034062 -0.043778 -0.053464 -0.062820 -0.071685 -0.080185 -0.088783 -0.097879 -0.107298 -0.116477 -0.124582 -0.131461 -0.137667 +0.063740 0.067402 0.069590 0.070539 0.070524 0.069738 0.068292 0.066191 0.063433 0.060025 0.055965 0.051243 0.045849 0.039789 0.033093 0.025809 0.017986 0.009692 0.000991 -0.008083 -0.017536 -0.027401 -0.037678 -0.048261 -0.058881 -0.069165 -0.078860 -0.088052 -0.097259 -0.107103 -0.117688 -0.128374 -0.138100 -0.146379 -0.153741 -0.160896 +0.061104 0.063529 0.065126 0.066071 0.066420 0.066099 0.065004 0.063103 0.060380 0.056842 0.052498 0.047348 0.041399 0.034678 0.027245 0.019172 0.010520 0.001368 -0.008233 -0.018275 -0.028795 -0.039801 -0.051216 -0.062791 -0.074117 -0.084800 -0.094814 -0.104639 -0.115053 -0.126605 -0.138852 -0.150533 -0.160603 -0.169381 -0.177699 -0.186189 +0.055238 0.057399 0.059255 0.060814 0.061858 0.062174 0.061576 0.059966 0.057323 0.053665 0.049023 0.043421 0.036888 0.029486 0.021305 0.012425 0.002927 -0.007113 -0.017668 -0.028765 -0.040427 -0.052606 -0.065106 -0.077539 -0.089381 -0.100415 -0.110966 -0.121829 -0.133973 -0.147552 -0.161342 -0.173660 -0.184243 -0.193929 -0.203559 -0.213566 +0.048889 0.051249 0.053474 0.055545 0.057235 0.058181 0.058107 0.056827 0.054285 0.050503 0.045545 0.039466 0.032326 0.024226 0.015282 0.005576 -0.004794 -0.015768 -0.027352 -0.039580 -0.052432 -0.065775 -0.079284 -0.092416 -0.104704 -0.116209 -0.127582 -0.139961 -0.154312 -0.170004 -0.184940 -0.197857 -0.209279 -0.220207 -0.231366 -0.242972 +0.042753 0.045540 0.048190 0.050636 0.052739 0.054219 0.054639 0.053699 0.051269 0.047359 0.042066 0.035486 0.027721 0.018908 0.009176 -0.001378 -0.012657 -0.024624 -0.037313 -0.050732 -0.064795 -0.079270 -0.093690 -0.107433 -0.120215 -0.132356 -0.144901 -0.159348 -0.176226 -0.193749 -0.209582 -0.223308 -0.235867 -0.248274 -0.261103 -0.274450 +0.036927 0.040211 0.043304 0.046116 0.048518 0.050360 0.051208 0.050592 0.048277 0.044231 0.038585 0.031485 0.023077 0.013532 0.002986 -0.008447 -0.020680 -0.033711 -0.047570 -0.062219 -0.077497 -0.093059 -0.108320 -0.122683 -0.136018 -0.149005 -0.163200 -0.180216 -0.199592 -0.218623 -0.235366 -0.250141 -0.264077 -0.278150 -0.292795 -0.308102 +0.031398 0.035176 0.038724 0.041898 0.044591 0.046665 0.047841 0.047512 0.045305 0.041116 0.035101 0.027462 0.018392 0.008091 -0.003295 -0.015643 -0.028887 -0.043049 -0.058133 -0.074036 -0.090523 -0.107141 -0.123231 -0.138228 -0.152189 -0.166347 -0.182742 -0.202566 -0.224235 -0.244592 -0.262392 -0.278432 -0.293948 -0.309857 -0.326520 -0.343976 +0.026185 0.030391 0.034383 0.037925 0.040906 0.043169 0.044559 0.044466 0.042352 0.038012 0.031611 0.023415 0.013662 0.002579 -0.009678 -0.022983 -0.037300 -0.052654 -0.069003 -0.086180 -0.103872 -0.121549 -0.138483 -0.154090 -0.168834 -0.184616 -0.203614 -0.226299 -0.250050 -0.271703 -0.290728 -0.308227 -0.325508 -0.343449 -0.362331 -0.382045 +0.021330 0.025864 0.030241 0.034148 0.037416 0.039858 0.041381 0.041461 0.039413 0.034913 0.028111 0.019339 0.008880 -0.003011 -0.016172 -0.030485 -0.045936 -0.062535 -0.080182 -0.098649 -0.117566 -0.136337 -0.154085 -0.170301 -0.186122 -0.203956 -0.225804 -0.251308 -0.276997 -0.300008 -0.320420 -0.339555 -0.358797 -0.378982 -0.400229 -0.422258 +0.016887 0.021614 0.026297 0.030533 0.034082 0.036698 0.038309 0.038497 0.036486 0.031815 0.024597 0.015228 0.004041 -0.008689 -0.022792 -0.038165 -0.054808 -0.072698 -0.091673 -0.111457 -0.131646 -0.151530 -0.170019 -0.186944 -0.204199 -0.224419 -0.249274 -0.277527 -0.305079 -0.329546 -0.351500 -0.372446 -0.393867 -0.416478 -0.440178 -0.464575 +0.012803 0.017690 0.022550 0.027060 0.030877 0.033660 0.035336 0.035577 0.033565 0.028713 0.021064 0.011078 -0.000863 -0.014462 -0.029550 -0.046038 -0.063928 -0.083149 -0.103482 -0.124627 -0.146152 -0.167117 -0.186293 -0.204133 -0.223153 -0.246009 -0.273981 -0.304918 -0.334310 -0.360348 -0.383988 -0.406940 -0.430756 -0.455927 -0.482139 -0.508968 +0.009169 0.014052 0.019042 0.023730 0.027777 0.030722 0.032448 0.032698 0.030650 0.025603 0.017507 0.006881 -0.005836 -0.020341 -0.036458 -0.054116 -0.073304 -0.093893 -0.115622 -0.138192 -0.161102 -0.183069 -0.202953 -0.221962 -0.243030 -0.268716 -0.299885 -0.333456 -0.364707 -0.392433 -0.417910 -0.443081 -0.469479 -0.497298 -0.526085 -0.555420 +0.006050 0.010723 0.015760 0.020539 0.024765 0.027865 0.029630 0.029859 0.027740 0.022482 0.013922 0.002635 -0.010889 -0.026336 -0.043528 -0.062410 -0.082942 -0.104937 -0.128110 -0.152185 -0.176486 -0.199372 -0.220067 -0.240498 -0.263846 -0.292529 -0.326963 -0.363123 -0.396285 -0.425817 -0.453293 -0.480903 -0.510029 -0.540564 -0.571997 -0.603917 +0.003499 0.007783 0.012684 0.017518 0.021842 0.025071 0.026869 0.027054 0.024833 0.019345 0.010303 -0.001669 -0.016028 -0.032455 -0.050772 -0.070931 -0.092849 -0.116289 -0.140968 -0.166626 -0.192273 -0.216038 -0.237692 -0.259787 -0.285606 -0.317440 -0.355194 -0.393913 -0.429058 -0.460514 -0.490172 -0.520425 -0.552385 -0.585704 -0.619861 -0.654451 +0.001490 0.005236 0.009858 0.014657 0.019004 0.022327 0.024153 0.024276 0.021928 0.016189 0.006647 -0.006034 -0.021261 -0.038708 -0.058200 -0.079685 -0.103030 -0.127959 -0.154221 -0.181514 -0.208440 -0.233104 -0.255880 -0.279857 -0.308306 -0.343440 -0.384561 -0.425827 -0.463037 -0.496541 -0.528576 -0.561649 -0.596525 -0.632704 -0.669664 -0.707014 +-0.000121 0.003139 0.007316 0.011928 0.016259 0.019625 0.021473 0.021521 0.019021 0.013010 0.002949 -0.010467 -0.026596 -0.045104 -0.065821 -0.088677 -0.113491 -0.139960 -0.167888 -0.196836 -0.224978 -0.250604 -0.274671 -0.300722 -0.331943 -0.370526 -0.415042 -0.458867 -0.498231 -0.533919 -0.568529 -0.604567 -0.642433 -0.681552 -0.721401 -0.761602 +-0.001449 0.001406 0.005062 0.009371 0.013622 0.016963 0.018818 0.018784 0.016110 0.009805 -0.000797 -0.014974 -0.032039 -0.051651 -0.073640 -0.097912 -0.124235 -0.152307 -0.181979 -0.212567 -0.241898 -0.268567 -0.294100 -0.322383 -0.356515 -0.398693 -0.446622 -0.493039 -0.534649 -0.572667 -0.610048 -0.649163 -0.690097 -0.732240 -0.775063 -0.818211 diff --git a/Examples/README.md b/Examples/README.md index 22f822fd..ec9a31b6 100644 --- a/Examples/README.md +++ b/Examples/README.md @@ -13,4 +13,6 @@ Examples: 9. Run turbsim to compile binary. 10. Tune a controller for distributed aerodynamic control. 11. Generate simplified linear models, save the parameters to a file. -12. Run robust controller tuning \ No newline at end of file +12. Run robust controller tuning +13. Tune and run a controller with IPC +14. Tune a controller with OpenLoop control commands inputs \ No newline at end of file diff --git a/Examples/example_12.py b/Examples/example_12.py index b02bc976..4f421af6 100644 --- a/Examples/example_12.py +++ b/Examples/example_12.py @@ -52,10 +52,14 @@ def run_example(): controller = ROSCO_controller.Controller(controller_params) turbine.load_from_fast( path_params['FAST_InputFile'], - os.path.join(tune_dir, path_params['FAST_directory']), + os.path.join(this_dir, path_params['FAST_directory']), dev_branch=True, - rot_source='txt', txt_filename=os.path.join(tune_dir, path_params['rotor_performance_filename']) - ) + rot_source='txt', txt_filename=os.path.join(this_dir,path_params['FAST_directory'],path_params['rotor_performance_filename']) + ) + + # Fix path params for robust setup + path_params['FAST_directory'] = os.path.join(this_dir, path_params['FAST_directory']) + controller.tune_controller(turbine) k_float = controller.Kp_float @@ -74,6 +78,8 @@ def run_example(): options['path_options'] = path_options options['opt_options'] = opt_options + options['linturb_options']['linfile_path'] = os.path.join(this_dir, options['linturb_options']['linfile_path']) + # Run robust scheduling sd = rsched_driver(options) sd.setup() diff --git a/Examples/example_13.py b/Examples/example_13.py new file mode 100644 index 00000000..9b0b7acd --- /dev/null +++ b/Examples/example_13.py @@ -0,0 +1,116 @@ +''' +----------- Example_13 -------------- +Load a turbine, tune a controller with IPC +------------------------------------- + +In this example: + - Load a turbine from OpenFAST + - Tune a controller with IPC + - Run simple simulation with open loop control + +''' +# Python Modules +import yaml, os, platform +import numpy as np +import matplotlib.pyplot as plt + +# ROSCO toolbox modules +from ROSCO_toolbox import controller as ROSCO_controller +from ROSCO_toolbox import turbine as ROSCO_turbine +from ROSCO_toolbox.utilities import DISCON_dict +from ROSCO_toolbox.ofTools.fast_io import output_processing +from ROSCO_toolbox.inputs.validation import load_rosco_yaml +from ROSCO_toolbox.ofTools.case_gen.CaseLibrary import set_channels +from ROSCO_toolbox.ofTools.case_gen.runFAST_pywrapper import runFAST_pywrapper_batch +from ROSCO_toolbox.ofTools.case_gen.CaseGen_General import CaseGen_General + + + +this_dir = os.path.dirname(os.path.abspath(__file__)) +rosco_dir = os.path.dirname(this_dir) +example_out_dir = os.path.join(this_dir,'examples_out') +run_dir = os.path.join(example_out_dir, '13_ipc_sim') + +# Load yaml file (Open Loop Case) +parameter_filename = os.path.join(rosco_dir,'Tune_Cases/BAR.yaml') + +inps = load_rosco_yaml(parameter_filename) +path_params = inps['path_params'] +turbine_params = inps['turbine_params'] +controller_params = inps['controller_params'] + +# Turn flaps off and IPC on +controller_params['Flp_Mode'] = 0 +controller_params['IPC_ControlMode'] = 1 + +# Instantiate turbine, and controller +turbine = ROSCO_turbine.Turbine(turbine_params) +controller = ROSCO_controller.Controller(controller_params) + +# Load turbine data from OpenFAST and rotor performance text file +turbine.load_from_fast(path_params['FAST_InputFile'], + os.path.join(this_dir, path_params['FAST_directory']), dev_branch=True) +# Tune controller +controller.tune_controller(turbine) + +# Set rosco_dll +if platform.system() == 'Windows': + rosco_dll = os.path.join(rosco_dir, 'ROSCO/build/libdiscon.dll') +elif platform.system() == 'Darwin': + rosco_dll = os.path.join(rosco_dir, 'ROSCO/build/libdiscon.dylib') +else: + rosco_dll = os.path.join(rosco_dir, 'ROSCO/build/libdiscon.so') + +case_inputs = {} +case_inputs[('ServoDyn','DLL_FileName')] = {'vals': [rosco_dll], 'group': 0} +case_inputs[('ServoDyn','Ptch_Cntrl')] = {'vals': [1], 'group': 0} + +# Apply all discon variables as case inputs +discon_vt = DISCON_dict( + turbine, + controller, + txt_filename=os.path.join(this_dir,path_params['FAST_directory'],path_params['rotor_performance_filename']) + ) + +for discon_input in discon_vt: + case_inputs[('DISCON_in',discon_input)] = {'vals': [discon_vt[discon_input]], 'group': 0} + +# Generate cases +if not os.path.exists(run_dir): + os.makedirs(run_dir) + +case_list, case_name_list = CaseGen_General(case_inputs, dir_matrix=run_dir, namebase='ipc_example') +channels = set_channels() +channels['BldPitch2'] = True +channels['BldPitch3'] = True + +# Run FAST cases +fastBatch = runFAST_pywrapper_batch(FAST_ver='OpenFAST',dev_branch = True) + +fastBatch.FAST_directory = os.path.realpath(os.path.join(rosco_dir,'Tune_Cases',path_params['FAST_directory'])) +fastBatch.FAST_InputFile = path_params['FAST_InputFile'] +fastBatch.channels = channels +fastBatch.FAST_runDirectory = run_dir +fastBatch.case_list = case_list +fastBatch.case_name_list = case_name_list +fastBatch.debug_level = 2 +fastBatch.FAST_exe = 'openfast' + +fastBatch.run_serial() + + +# # Define Plot cases +cases = {} +cases['Baseline'] = ['Wind1VelX', ('BldPitch1', 'BldPitch2', 'BldPitch3'), 'RootMyc1', 'RotSpeed'] + +out_file = os.path.join(example_out_dir,'13_ipc_sim/ipc_example_0.outb') +op = output_processing.output_processing() +fastout = op.load_fast_out(out_file, tmin=0) +fig, ax = op.plot_fast_out(cases=cases,showplot=False) +if False: + plt.show() +else: + fig[0].savefig(os.path.join(example_out_dir,'13_ipc_FAST_Out.png')) + + + diff --git a/Examples/example_14.py b/Examples/example_14.py index f125c5ce..f91d4de5 100644 --- a/Examples/example_14.py +++ b/Examples/example_14.py @@ -30,6 +30,9 @@ this_dir = os.path.dirname(os.path.abspath(__file__)) rosco_dir = os.path.dirname(this_dir) example_out_dir = os.path.join(this_dir,'examples_out') +example_out_dir = os.path.join(this_dir,'examples_out') +if not os.path.isdir(example_out_dir): + os.makedirs(example_out_dir) # Load yaml file (Open Loop Case) parameter_filename = os.path.join(rosco_dir,'Tune_Cases/IEA15MW_OL.yaml') @@ -40,11 +43,11 @@ controller_params = inps['controller_params'] # Set up open loop input -olc = ROSCO_controller.OpenLoopControl(t_max=300) +olc = ROSCO_controller.OpenLoopControl(t_max=20) olc.interp_timeseries( 'blade_pitch', - [0,40,80,120], - [0,0,0.0873,0.1396] , + [0,20], + [0,0.0873] , 'sigma' ) olc.const_timeseries( @@ -105,6 +108,11 @@ for discon_input in discon_vt: case_inputs[('DISCON_in',discon_input)] = {'vals': [discon_vt[discon_input]], 'group': 0} +case_inputs[('Fst','TMax')] = {'vals': [20], 'group': 0} +case_inputs[('InflowWind','HWindSpeed')] = {'vals': [10], 'group': 0} +case_inputs[('ElastoDyn','HWindSpeed')] = {'vals': [5.], 'group': 0} +case_inputs[('DISCON_in','LoggingLevel')] = {'vals': [3], 'group': 0} + # Generate cases run_dir = os.path.join(example_out_dir,'14_OL_Sim') if not os.path.exists(run_dir): diff --git a/Examples/run_examples.py b/Examples/run_examples.py index 7e561568..181f4239 100644 --- a/Examples/run_examples.py +++ b/Examples/run_examples.py @@ -4,44 +4,6 @@ from time import time import importlib -# from weis.test.utils import execute_script, run_all_scripts - - -def run_all_scripts(folder_string, all_scripts): - scripts = [m for m in all_scripts if m.find(folder_string) >= 0] - for k in scripts: - try: - execute_script(k) - except Exception as e: - print("Failed to run,", k) - raise - -def execute_script(fscript): - # thisdir = os.path.dirname(os.path.realpath(__file__)) - # root_dir = os.path.dirname(os.path.dirname(thisdir)) - examples_dir = os.path.dirname(os.path.realpath(__file__)) - - # Go to location due to relative path use for airfoil files - print("\n\n") - print("NOW RUNNING:", fscript) - print() - fullpath = os.path.join(examples_dir, fscript + ".py") - # basepath = os.path.join(examples_dir, fscript.split("/")[0]) - os.chdir(examples_dir) - - # Get script/module name - froot = fscript.split("/")[-1] - - # Use dynamic import capabilities - # https://www.blog.pythonlibrary.org/2016/05/27/python-201-an-intro-to-importlib/ - print(froot, os.path.realpath(fullpath)) - spec = importlib.util.spec_from_file_location(froot, os.path.realpath(fullpath)) - mod = importlib.util.module_from_spec(spec) - s = time() - spec.loader.exec_module(mod) - print(time() - s, "seconds to run") - -# 02_ref turbines are regression tested in test_gluecode, no need to duplicate runtime all_scripts = [ 'example_01', 'example_02', @@ -54,44 +16,44 @@ def execute_script(fscript): 'example_09', 'example_10', 'example_11', - + 'example_12', + 'example_13', + 'example_14' ] -class TestExamples(unittest.TestCase): - - def test_example_01(self): - run_all_scripts("example_01", all_scripts) - - def test_example_02(self): - run_all_scripts("example_02", all_scripts) - - def test_example_03(self): - run_all_scripts("example_03", all_scripts) - - def test_example_04(self): - run_all_scripts("example_04", all_scripts) - - def test_example_05(self): - run_all_scripts("example_05", all_scripts) - - def test_example_06(self): - run_all_scripts("example_06", all_scripts) - - def test_example_07(self): - run_all_scripts("example_07", all_scripts) - - def test_example_08(self): - run_all_scripts("example_08", all_scripts) - - def test_example_09(self): - run_all_scripts("example_09", all_scripts) +def execute_script(fscript): + examples_dir = os.path.dirname(os.path.realpath(__file__)) + + # Go to location due to relative path use for airfoil files + print("\n\n") + print("NOW RUNNING:", fscript) + print() + fullpath = os.path.join(examples_dir, fscript + ".py") + basepath = os.path.dirname(os.path.realpath(fullpath)) + os.chdir(basepath) + + # Get script/module name + froot = fscript.split("/")[-1] + + # Use dynamic import capabilities + # https://www.blog.pythonlibrary.org/2016/05/27/python-201-an-intro-to-importlib/ + print(froot, os.path.realpath(fullpath)) + spec = importlib.util.spec_from_file_location(froot, os.path.realpath(fullpath)) + mod = importlib.util.module_from_spec(spec) + s = time() + spec.loader.exec_module(mod) + print(time() - s, "seconds to run") - def test_example_10(self): - run_all_scripts("example_10", all_scripts) +class TestExamples(unittest.TestCase): - def test_example_11(self): - run_all_scripts("example_11", all_scripts) - + def test_all_scripts(self): + for ks, s in enumerate(all_scripts): + with self.subTest(f"Running: {s}", i=ks): + try: + execute_script(s) + self.assertTrue(True) + except: + self.assertEqual(s, "Success") def suite(): @@ -102,4 +64,8 @@ def suite(): if __name__ == "__main__": result = unittest.TextTestRunner().run(suite()) - sys.exit(not result.wasSuccessful()) + + if result.wasSuccessful(): + exit(0) + else: + exit(1) diff --git a/Matlab_Toolbox/Simulink/ROSCO.mdl b/Matlab_Toolbox/Simulink/ROSCO.mdl index bcc8684b..279ec45a 100644 --- a/Matlab_Toolbox/Simulink/ROSCO.mdl +++ b/Matlab_Toolbox/Simulink/ROSCO.mdl @@ -6,9 +6,9 @@ Model { NumRootInports 0 NumRootOutports 0 ParameterArgumentNames "" - ComputedModelVersion "1.1851" + ComputedModelVersion "1.1879" NumModelReferences 0 - NumTestPointedSignals 19 + NumTestPointedSignals 34 TestPointedSignal { SignalName "" FullBlockPath "ROSCO/Extract Signals" @@ -48,29 +48,136 @@ Model { Decimation 2 } TestPointedSignal { - SignalName "FA_AccR" - FullBlockPath "ROSCO/Fl_PD/NacIMU" + SignalName "RootMyb" + FullBlockPath "ROSCO/Cyclic Pitch controller/1P Cyclic Pitch Controller1/RootMyb" LogSignal 1 MaxPoints 5000 Decimation 2 } TestPointedSignal { - SignalName "FA_AccF" - FullBlockPath "ROSCO/Fl_PD/Fl_LPF" + SignalName "cIPC_GS" + FullBlockPath "ROSCO/Cyclic Pitch controller/1P Cyclic Pitch Controller1/Enable (-)" LogSignal 1 MaxPoints 5000 Decimation 2 } TestPointedSignal { - SignalName "Fl_Pitcom" - FullBlockPath "ROSCO/Fl_PD/Gain1" + SignalName "mx_hat" + FullBlockPath "ROSCO/Cyclic Pitch controller/1P Cyclic Pitch Controller1/1P IPCDQ Filtering1" + LogSignal 1 + MaxPoints 5000 + Decimation 2 + } + TestPointedSignal { + SignalName "b_d" + FullBlockPath "ROSCO/Cyclic Pitch controller/1P Cyclic Pitch Controller1/PI - D" + LogSignal 1 + MaxPoints 5000 + Decimation 2 + } + TestPointedSignal { + SignalName "b_q" + FullBlockPath "ROSCO/Cyclic Pitch controller/1P Cyclic Pitch Controller1/PI - Q" + LogSignal 1 + MaxPoints 5000 + Decimation 2 + } + TestPointedSignal { + SignalName "m_tilt" + FullBlockPath "ROSCO/Cyclic Pitch controller/1P Cyclic Pitch Controller1/d-q transformation" + LogSignal 1 + MaxPoints 5000 + Decimation 2 + } + TestPointedSignal { + SignalName "m_yaw" + FullBlockPath "ROSCO/Cyclic Pitch controller/1P Cyclic Pitch Controller1/d-q transformation" + PortIndex 2 + LogSignal 1 + MaxPoints 5000 + Decimation 2 + } + TestPointedSignal { + SignalName "b1" + FullBlockPath "ROSCO/Cyclic Pitch controller/1P Cyclic Pitch Controller1/inverse d-q transformation" + LogSignal 1 + MaxPoints 5000 + Decimation 2 + } + TestPointedSignal { + SignalName "RootMyb" + FullBlockPath "ROSCO/Cyclic Pitch controller/2P Cyclic Pitch Controller2/RootMyb" + LogSignal 1 + MaxPoints 5000 + Decimation 2 + } + TestPointedSignal { + SignalName "cIPC_GS_2P" + FullBlockPath "ROSCO/Cyclic Pitch controller/2P Cyclic Pitch Controller2/Enable (-)" + LogSignal 1 + MaxPoints 5000 + Decimation 2 + } + TestPointedSignal { + SignalName "mx_hat_2P" + FullBlockPath "ROSCO/Cyclic Pitch controller/2P Cyclic Pitch Controller2/1P IPCDQ Filtering1" + LogSignal 1 + MaxPoints 5000 + Decimation 2 + } + TestPointedSignal { + SignalName "b_d_2P" + FullBlockPath "ROSCO/Cyclic Pitch controller/2P Cyclic Pitch Controller2/PI - D" + LogSignal 1 + MaxPoints 5000 + Decimation 2 + } + TestPointedSignal { + SignalName "b_q" + FullBlockPath "ROSCO/Cyclic Pitch controller/2P Cyclic Pitch Controller2/PI - Q" + LogSignal 1 + MaxPoints 5000 + Decimation 2 + } + TestPointedSignal { + SignalName "m_tilt_2P" + FullBlockPath "ROSCO/Cyclic Pitch controller/2P Cyclic Pitch Controller2/d-q transformation" + LogSignal 1 + MaxPoints 5000 + Decimation 2 + } + TestPointedSignal { + SignalName "m_yaw" + FullBlockPath "ROSCO/Cyclic Pitch controller/2P Cyclic Pitch Controller2/d-q transformation" + PortIndex 2 + LogSignal 1 + MaxPoints 5000 + Decimation 2 + } + TestPointedSignal { + SignalName "b1_2P" + FullBlockPath "ROSCO/Cyclic Pitch controller/2P Cyclic Pitch Controller2/inverse d-q transformation" + LogSignal 1 + MaxPoints 5000 + Decimation 2 + } + TestPointedSignal { + SignalName "FA_AccR" + FullBlockPath "ROSCO/Fl_PD/NacIMU" + LogSignal 1 + MaxPoints 5000 + Decimation 2 + } + TestPointedSignal { + SignalName "FA_AccF" + FullBlockPath "ROSCO/Fl_PD/Fl_LPF" LogSignal 1 MaxPoints 5000 Decimation 2 } TestPointedSignal { SignalName "Fl_Pitcom" - FullBlockPath "ROSCO/Fl_PD1/Fl_LPF" + FullBlockPath "ROSCO/Fl_PD/Gain1" LogSignal 1 MaxPoints 5000 Decimation 2 @@ -154,7 +261,7 @@ Model { PreCompExecutionDomainType "Unset" IsExportFunctionModel 0 NumParameterArguments 0 - NumExternalFileReferences 6 + NumExternalFileReferences 10 ExternalFileReference { Reference "simulink/Logic and Bit\nOperations/Compare\nTo Zero" Path "ROSCO/BldPitch Controller/Compare To Zero1" @@ -167,6 +274,30 @@ Model { SID "392" Type "LIBRARY_BLOCK" } + ExternalFileReference { + Reference "simulink/Discrete/Discrete Derivative" + Path "ROSCO/Cyclic Pitch controller/1P Cyclic Pitch Controller1/PI - D/Discrete Derivative" + SID "1085" + Type "LIBRARY_BLOCK" + } + ExternalFileReference { + Reference "simulink/Discrete/Discrete Derivative" + Path "ROSCO/Cyclic Pitch controller/1P Cyclic Pitch Controller1/PI - Q/Discrete Derivative" + SID "1098" + Type "LIBRARY_BLOCK" + } + ExternalFileReference { + Reference "simulink/Discrete/Discrete Derivative" + Path "ROSCO/Cyclic Pitch controller/2P Cyclic Pitch Controller2/PI - D/Discrete Derivative" + SID "1342" + Type "LIBRARY_BLOCK" + } + ExternalFileReference { + Reference "simulink/Discrete/Discrete Derivative" + Path "ROSCO/Cyclic Pitch controller/2P Cyclic Pitch Controller2/PI - Q/Discrete Derivative" + SID "1354" + Type "LIBRARY_BLOCK" + } ExternalFileReference { Reference "simulink/Discontinuities/Saturation\nDynamic" Path "ROSCO/Fl_PD/Integral/Saturate Integral Term" @@ -217,7 +348,7 @@ Model { $ObjectID 2 $ClassName "Simulink.WindowInfo" IsActive [1] - Location [0.0, 23.0, 1920.0, 984.0] + Location [0.0, 23.0, 1920.0, 978.0] Object { $PropName "ModelBrowserInfo" $ObjectID 3 @@ -236,63 +367,54 @@ Model { } Array { Type "Simulink.EditorInfo" - Dimension 15 + Dimension 20 Object { $ObjectID 5 IsActive [0] ViewObjType "SimulinkSubsys" LoadSaveID "376" - Extents [1882.0, 801.0] - ZoomFactor [0.6] - Offset [-850.24873563634617, -79.747742854384114] + Extents [1754.0, 921.0] + ZoomFactor [1.25] + Offset [22.501264363654059, 211.03559047894908] } Object { $ObjectID 6 - IsActive [0] + IsActive [1] ViewObjType "SimulinkTopLevel" LoadSaveID "0" - Extents [1882.0, 808.0] - ZoomFactor [1.0] - Offset [-1120.3836309523813, -40.490476190475533] + Extents [1882.0, 802.0] + ZoomFactor [1.25] + Offset [-28.600000000000364, 81.39999999999992] } Object { $ObjectID 7 IsActive [0] ViewObjType "SimulinkSubsys" LoadSaveID "20" - Extents [1882.0, 808.0] + Extents [1882.0, 806.0] ZoomFactor [1.0] Offset [-419.21718750000014, 14.173611111110858] } Object { $ObjectID 8 - IsActive [1] - ViewObjType "SimulinkSubsys" - LoadSaveID "766" - Extents [1882.0, 808.0] - ZoomFactor [1.0] - Offset [-474.25281148867293, 377.65392394821993] - } - Object { - $ObjectID 9 IsActive [0] ViewObjType "SimulinkSubsys" - LoadSaveID "3" - Extents [1882.0, 808.0] + LoadSaveID "766" + Extents [1754.0, 921.0] ZoomFactor [1.25] - Offset [-480.24140624999995, -154.2] + Offset [-149.22900196486341, 448.38249537679133] } Object { - $ObjectID 10 + $ObjectID 9 IsActive [0] ViewObjType "SimulinkSubsys" LoadSaveID "385" - Extents [1882.0, 679.0] + Extents [1754.0, 921.0] ZoomFactor [1.42] Offset [-196.42996258802737, -123.02816901408451] } Object { - $ObjectID 11 + $ObjectID 10 IsActive [0] ViewObjType "SimulinkSubsys" LoadSaveID "304" @@ -301,7 +423,7 @@ Model { Offset [-652.92578125, -286.0] } Object { - $ObjectID 12 + $ObjectID 11 IsActive [0] ViewObjType "SimulinkSubsys" LoadSaveID "659" @@ -310,7 +432,7 @@ Model { Offset [-569.26368859027275, -675.11747846405319] } Object { - $ObjectID 13 + $ObjectID 12 IsActive [0] ViewObjType "SimulinkSubsys" LoadSaveID "674" @@ -319,7 +441,7 @@ Model { Offset [-401.8984375, -238.0] } Object { - $ObjectID 14 + $ObjectID 13 IsActive [0] ViewObjType "SimulinkSubsys" LoadSaveID "215" @@ -328,7 +450,7 @@ Model { Offset [-318.93746801371117, -79.0957414481943] } Object { - $ObjectID 15 + $ObjectID 14 IsActive [0] ViewObjType "SimulinkSubsys" LoadSaveID "469" @@ -337,7 +459,7 @@ Model { Offset [-152.0, -188.99285957456817] } Object { - $ObjectID 16 + $ObjectID 15 IsActive [0] ViewObjType "SimulinkSubsys" LoadSaveID "219" @@ -346,7 +468,7 @@ Model { Offset [-181.39453081924967, -153.78282236176466] } Object { - $ObjectID 17 + $ObjectID 16 IsActive [0] ViewObjType "SimulinkSubsys" LoadSaveID "727" @@ -355,7 +477,7 @@ Model { Offset [-451.0, -274.0] } Object { - $ObjectID 18 + $ObjectID 17 IsActive [0] ViewObjType "SimulinkSubsys" LoadSaveID "627" @@ -364,7 +486,7 @@ Model { Offset [-366.52329265643107, -163.57983596465817] } Object { - $ObjectID 19 + $ObjectID 18 IsActive [0] ViewObjType "SimulinkSubsys" LoadSaveID "132" @@ -372,11 +494,65 @@ Model { ZoomFactor [1.0] Offset [-522.65872130102036, 54.90816326530603] } + Object { + $ObjectID 19 + IsActive [0] + ViewObjType "SimulinkSubsys" + LoadSaveID "1351" + Extents [1882.0, 805.0] + ZoomFactor [2.5] + Offset [-108.69687499999998, -28.299999999999983] + } + Object { + $ObjectID 20 + IsActive [0] + ViewObjType "SimulinkSubsys" + LoadSaveID "859" + Extents [1754.0, 921.0] + ZoomFactor [1.0] + Offset [-314.1953125, 509.0] + } + Object { + $ObjectID 21 + IsActive [0] + ViewObjType "SimulinkSubsys" + LoadSaveID "1065" + Extents [1882.0, 805.0] + ZoomFactor [1.0] + Offset [-598.5, -72.5] + } + Object { + $ObjectID 22 + IsActive [0] + ViewObjType "SimulinkSubsys" + LoadSaveID "866" + Extents [1754.0, 921.0] + ZoomFactor [1.25] + Offset [383.59739583333374, 45.416666666666856] + } + Object { + $ObjectID 23 + IsActive [0] + ViewObjType "SimulinkSubsys" + LoadSaveID "1130" + Extents [1882.0, 805.0] + ZoomFactor [1.0] + Offset [-285.32421875, -144.0] + } + Object { + $ObjectID 24 + IsActive [0] + ViewObjType "SimulinkSubsys" + LoadSaveID "1121" + Extents [1754.0, 921.0] + ZoomFactor [1.0] + Offset [-636.36666666666815, 180.43333333333317] + } PropName "EditorsInfo" } Object { $PropName "DockComponentsInfo" - $ObjectID 20 + $ObjectID 25 $ClassName "Simulink.DockComponentInfo" Type "GLUE2:PropertyInspector" ID "Property Inspector" @@ -394,7 +570,7 @@ Model { "AAAAfwAAABGAAAC+AAAAAAA////+gAAAAECAAAAAvsAAABUAEcATABVAEUAMgA6AFAAcgBvAHAAZQByAHQAeQBJAG4AcwBwAGUAYwB0AG8AcgAvA" "FAAcgBvAHAAZQByAHQAeQAgAEkAbgBzAHAAZQBjAHQAbwByAAAAAAD/////AAAAOQD////7AAAAXgBHAEwAVQBFADIAOgBOAG8AdABlAHMAIABCA" "HIAbwB3AHMAZQByACAAQwBvAG0AcABvAG4AZQBuAHQALwBTAHkAcwBEAG8AYwBNAGkAeABlAGQARQBkAGkAdABvAHIAAAAAAP////8AAAAAAAAAA" - "AAAB4AAAANjAAAAAQAAAAIAAAABAAAAAvwAAAABAAAAAgAAAA//////AAAAAAD/////AAAAAAAAAAD/////AQAAAAD/////AAAAAAAAAAD/////A" + "AAAB4AAAANdAAAAAQAAAAIAAAABAAAAAvwAAAABAAAAAgAAAA//////AAAAAAD/////AAAAAAAAAAD/////AQAAAAD/////AAAAAAAAAAD/////A" "AAAAAD/////AAAAAAAAAAD/////AAAAAAD/////AAAAAAAAAAD/////AAAAAAD/////AAAAAAAAAAD/////AQAAAIT/////AAAAAAAAAAD/////A" "QAAAPb/////AAAAAAAAAAD/////AAAAAAD/////AAAAAAAAAAD/////AQAAAXr/////AAAAAAAAAAD/////AAAAAAD/////AAAAAAAAAAD/////A" "AAAAAD/////AAAAAAAAAAD/////AAAAAAD/////AAAAAAAAAAD/////AQAAA6D/////AAAAAAAAAAD/////AAAAAAD/////AAAAAAAAAAD/////A" @@ -408,14 +584,14 @@ Model { ModifiedByFormat "%" LastModifiedBy "dzalkind" ModifiedDateFormat "%" - LastModifiedDate "Wed Feb 24 15:00:35 2021" - RTWModifiedTimeStamp 536079624 - ModelVersionFormat "1.%" + LastModifiedDate "Tue Mar 15 16:37:05 2022" + RTWModifiedTimeStamp 569263022 + ModelVersionFormat "1.%" SampleTimeColors on SampleTimeAnnotations on LibraryLinkDisplay "disabled" WideLines off - ShowLineDimensions off + ShowLineDimensions on ShowPortDataTypes off ShowAllPropagatedSignalLabels off PortDataTypeDisplayFormat "AliasTypeOnly" @@ -465,7 +641,7 @@ Model { TryForcingSFcnDF off Object { $PropName "DataLoggingOverride" - $ObjectID 21 + $ObjectID 26 $ClassName "Simulink.SimulationData.ModelLoggingInfo" model_ "ROSCO" overrideMode_ [0.0] @@ -484,11 +660,11 @@ Model { } Object { $PropName "InstrumentedSignals" - $ObjectID 22 + $ObjectID 27 $ClassName "Simulink.HMI.InstrumentedSignals" Array { Type "Struct" - Dimension 19 + Dimension 36 MATStruct { UUID "99768b01-3e28-48ea-bf57-afab4791ffe6" BlockPath_ "Extract Signals" @@ -765,29 +941,6 @@ Model { } VisualType_ "" } - MATStruct { - UUID "bd252ac8-af6a-408f-9750-a761e175928b" - BlockPath_ "Fl_PD1/Fl_LPF" - SID_ "795" - SubPath_ "" - OutputPortIndex_ [1.0] - LogicalPortIndex_ [0.0] - SignalName_ "" - SubSysPath_ "" - Decimation_ [1.0] - MaxPoints_ [0.0] - TargetBufferedStreaming_ [0.0] - IsFrameBased_ [0.0] - DomainType_ "" - Array { - Type "Struct" - Dimension 1 - MATStruct { - } - PropName "DomainParams_" - } - VisualType_ "" - } MATStruct { UUID "3ae5e64e-60d8-4a7f-a12c-572dba338c3d" BlockPath_ "Wind Speed Estimator/Discrete Filter" @@ -926,910 +1079,619 @@ Model { } VisualType_ "" } - PropName "Persistence" - } - } - ExtModeBatchMode off - ExtModeEnableFloating on - ExtModeTrigType "manual" - ExtModeTrigMode "normal" - ExtModeTrigPort "1" - ExtModeTrigElement "any" - ExtModeTrigDuration 1000 - ExtModeTrigDurationFloating "auto" - ExtModeTrigHoldOff 0 - ExtModeTrigDelay 0 - ExtModeTrigDirection "rising" - ExtModeTrigLevel 0 - ExtModeArchiveMode "off" - ExtModeAutoIncOneShot off - ExtModeIncDirWhenArm off - ExtModeAddSuffixToVar off - ExtModeWriteAllDataToWs off - ExtModeArmWhenConnect on - ExtModeSkipDownloadWhenConnect off - ExtModeLogAll on - ExtModeAutoUpdateStatusClock on - ShowModelReferenceBlockVersion off - ShowModelReferenceBlockIO off - OrderedModelArguments on - Array { - Type "Handle" - Dimension 18 - Simulink.ConfigSet { - $ObjectID 23 - Version "1.18.1" - DisabledProps [] - Description "" - Array { - Type "Handle" - Dimension 9 - Simulink.SolverCC { - $ObjectID 24 - Version "1.18.1" - DisabledProps [] - Description "" - StartTime "0.0" - StopTime "TMax" - AbsTol "auto" - AutoScaleAbsTol on - FixedStep "auto" - InitialStep "auto" - MaxOrder 5 - ZcThreshold "auto" - ConsecutiveZCsStepRelTol "10*128*eps" - MaxConsecutiveZCs "1000" - ExtrapolationOrder 4 - NumberNewtonIterations 1 - MaxStep "auto" - MinStep "auto" - MaxConsecutiveMinStep "1" - RelTol "1e-3" - EnableMultiTasking off - ConcurrentTasks off - Solver "VariableStepAuto" - SolverName "VariableStepAuto" - SolverJacobianMethodControl "auto" - ShapePreserveControl "DisableAll" - ZeroCrossControl "UseLocalSettings" - ZeroCrossAlgorithm "Nonadaptive" - AlgebraicLoopSolver "TrustRegion" - SolverInfoToggleStatus off - IsAutoAppliedInSIP off - SolverResetMethod "Fast" - PositivePriorityOrder off - AutoInsertRateTranBlk off - SampleTimeConstraint "Unconstrained" - InsertRTBMode "Whenever possible" - SampleTimeProperty [] - DecoupledContinuousIntegration off - MinimalZcImpactIntegration off + MATStruct { + UUID "ffd228a8-e133-478d-97d8-045b5e63df4c" + BlockPath_ "Cyclic Pitch controller/2P Cyclic Pitch Controller2/RootMyb" + SID_ "1122" + SubPath_ "" + OutputPortIndex_ [1.0] + LogicalPortIndex_ [0.0] + SignalName_ "" + SubSysPath_ "" + Decimation_ [1.0] + MaxPoints_ [0.0] + TargetBufferedStreaming_ [0.0] + IsFrameBased_ [0.0] + DomainType_ "" + Array { + Type "Struct" + Dimension 1 + MATStruct { + } + PropName "DomainParams_" } - Simulink.DataIOCC { - $ObjectID 25 - Version "1.18.1" - DisabledProps [] - Description "" - Decimation "1" - ExternalInput "[t, u]" - FinalStateName "xFinal" - InitialState "xInitial" - LimitDataPoints off - MaxDataPoints "1000" - LoadExternalInput off - LoadInitialState off - SaveFinalState off - SaveCompleteFinalSimState off - SaveFormat "Dataset" - SignalLoggingSaveFormat "Dataset" - SaveOutput on - SaveState off - SignalLogging on - DSMLogging on - InspectSignalLogs off - VisualizeSimOutput on - StreamToWorkspace off - StreamVariableName "streamout" - SaveTime on - ReturnWorkspaceOutputs off - StateSaveName "xout" - TimeSaveName "tout" - OutputSaveName "yout" - SignalLoggingName "logsout" - DSMLoggingName "dsmout" - OutputOption "RefineOutputTimes" - OutputTimes "[]" - ReturnWorkspaceOutputsName "out" - Refine "1" - LoggingToFile off - DatasetSignalFormat "timeseries" - LoggingFileName "out.mat" - LoggingIntervals "[-inf, inf]" + VisualType_ "" + } + MATStruct { + UUID "19245043-330d-427c-abc9-7f9374fa2523" + BlockPath_ "Cyclic Pitch controller/2P Cyclic Pitch Controller2/PI - Q" + SID_ "1351" + SubPath_ "" + OutputPortIndex_ [1.0] + LogicalPortIndex_ [0.0] + SignalName_ "" + SubSysPath_ "" + Decimation_ [1.0] + MaxPoints_ [0.0] + TargetBufferedStreaming_ [0.0] + IsFrameBased_ [0.0] + DomainType_ "" + Array { + Type "Struct" + Dimension 1 + MATStruct { + } + PropName "DomainParams_" } - Simulink.OptimizationCC { - $ObjectID 26 - Version "1.18.1" - Array { - Type "Cell" - Dimension 9 - Cell "BooleansAsBitfields" - Cell "PassReuseOutputArgsAs" - Cell "PassReuseOutputArgsThreshold" - Cell "ZeroExternalMemoryAtStartup" - Cell "ZeroInternalMemoryAtStartup" - Cell "OptimizeModelRefInitCode" - Cell "NoFixptDivByZeroProtection" - Cell "UseSpecifiedMinMax" - Cell "EfficientTunableParamExpr" - PropName "DisabledProps" + VisualType_ "" + } + MATStruct { + UUID "2bed3c88-c9a5-486b-b3f9-d44ca84fe4bd" + BlockPath_ "Cyclic Pitch controller/1P Cyclic Pitch Controller1/inverse d-q transformation" + SID_ "1115" + SubPath_ "" + OutputPortIndex_ [1.0] + LogicalPortIndex_ [0.0] + SignalName_ "" + SubSysPath_ "" + Decimation_ [1.0] + MaxPoints_ [0.0] + TargetBufferedStreaming_ [0.0] + IsFrameBased_ [0.0] + DomainType_ "" + Array { + Type "Struct" + Dimension 1 + MATStruct { } - Description "" - BlockReduction on - BooleanDataType on - ConditionallyExecuteInputs on - DefaultParameterBehavior "Tunable" - UseDivisionForNetSlopeComputation "off" - UseFloatMulNetSlope off - DefaultUnderspecifiedDataType "double" - UseSpecifiedMinMax off - InlineInvariantSignals off - OptimizeBlockIOStorage on - BufferReuse on - EnhancedBackFolding off - CachingGlobalReferences off - GlobalBufferReuse on - StrengthReduction off - AdvancedOptControl "" - ExpressionFolding on - BooleansAsBitfields off - BitfieldContainerType "uint_T" - EnableMemcpy on - MemcpyThreshold 64 - PassReuseOutputArgsAs "Structure reference" - PassReuseOutputArgsThreshold 12 - ExpressionDepthLimit 128 - LocalBlockOutputs on - RollThreshold 5 - StateBitsets off - DataBitsets off - ActiveStateOutputEnumStorageType "Native Integer" - ZeroExternalMemoryAtStartup on - ZeroInternalMemoryAtStartup on - InitFltsAndDblsToZero off - NoFixptDivByZeroProtection off - EfficientFloat2IntCast off - EfficientMapNaN2IntZero on - LifeSpan "auto" - MaxStackSize "Inherit from target" - BufferReusableBoundary on - SimCompilerOptimization "off" - AccelVerboseBuild off - OptimizeBlockOrder "off" - OptimizeDataStoreBuffers on - BusAssignmentInplaceUpdate on - DifferentSizesBufferReuse off - OptimizationLevel "level2" - OptimizationPriority "Balanced" - OptimizationCustomize on - UseRowMajorAlgorithm off - LabelGuidedReuse off + PropName "DomainParams_" } - Simulink.DebuggingCC { - $ObjectID 27 - Version "1.18.1" - Array { - Type "Cell" - Dimension 1 - Cell "UseOnlyExistingSharedCode" - PropName "DisabledProps" + VisualType_ "" + } + MATStruct { + UUID "400a2f39-07f3-4145-8012-0ea4aa8b7bb1" + BlockPath_ "Cyclic Pitch controller/2P Cyclic Pitch Controller2/d-q transformation" + SID_ "1370" + SubPath_ "" + OutputPortIndex_ [1.0] + LogicalPortIndex_ [0.0] + SignalName_ "" + SubSysPath_ "" + Decimation_ [1.0] + MaxPoints_ [0.0] + TargetBufferedStreaming_ [0.0] + IsFrameBased_ [0.0] + DomainType_ "" + Array { + Type "Struct" + Dimension 1 + MATStruct { } - Description "" - RTPrefix "error" - ConsistencyChecking "none" - ArrayBoundsChecking "none" - SignalInfNanChecking "none" - StringTruncationChecking "error" - SignalRangeChecking "none" - ReadBeforeWriteMsg "UseLocalSettings" - WriteAfterWriteMsg "UseLocalSettings" - WriteAfterReadMsg "UseLocalSettings" - AlgebraicLoopMsg "warning" - ArtificialAlgebraicLoopMsg "warning" - SaveWithDisabledLinksMsg "warning" - SaveWithParameterizedLinksMsg "warning" - CheckSSInitialOutputMsg on - UnderspecifiedInitializationDetection "Simplified" - MergeDetectMultiDrivingBlocksExec "error" - CheckExecutionContextPreStartOutputMsg off - CheckExecutionContextRuntimeOutputMsg off - SignalResolutionControl "UseLocalSettings" - BlockPriorityViolationMsg "warning" - MinStepSizeMsg "warning" - TimeAdjustmentMsg "none" - MaxConsecutiveZCsMsg "error" - MaskedZcDiagnostic "warning" - IgnoredZcDiagnostic "warning" - SolverPrmCheckMsg "none" - InheritedTsInSrcMsg "warning" - MultiTaskDSMMsg "error" - MultiTaskCondExecSysMsg "error" - MultiTaskRateTransMsg "error" - SingleTaskRateTransMsg "none" - TasksWithSamePriorityMsg "warning" - ExportedTasksRateTransMsg "none" - SigSpecEnsureSampleTimeMsg "warning" - CheckMatrixSingularityMsg "none" - IntegerOverflowMsg "warning" - Int32ToFloatConvMsg "warning" - ParameterDowncastMsg "error" - ParameterOverflowMsg "error" - ParameterUnderflowMsg "none" - ParameterPrecisionLossMsg "warning" - ParameterTunabilityLossMsg "warning" - FixptConstUnderflowMsg "none" - FixptConstOverflowMsg "none" - FixptConstPrecisionLossMsg "none" - UnderSpecifiedDataTypeMsg "none" - UnnecessaryDatatypeConvMsg "none" - VectorMatrixConversionMsg "none" - InvalidFcnCallConnMsg "error" - FcnCallInpInsideContextMsg "error" - SignalLabelMismatchMsg "none" - UnconnectedInputMsg "warning" - UnconnectedOutputMsg "warning" - UnconnectedLineMsg "warning" - UseOnlyExistingSharedCode "error" - SFcnCompatibilityMsg "none" - FrameProcessingCompatibilityMsg "error" - UniqueDataStoreMsg "none" - BusObjectLabelMismatch "warning" - RootOutportRequireBusObject "warning" - AssertControl "UseLocalSettings" - AllowSymbolicDim on - RowMajorDimensionSupport off - ModelReferenceIOMsg "none" - ModelReferenceMultiInstanceNormalModeStructChecksumCheck "error" - ModelReferenceVersionMismatchMessage "none" - ModelReferenceIOMismatchMessage "none" - UnknownTsInhSupMsg "warning" - ModelReferenceDataLoggingMessage "warning" - ModelReferenceSymbolNameMessage "warning" - ModelReferenceExtraNoncontSigs "error" - StateNameClashWarn "none" - SimStateInterfaceChecksumMismatchMsg "warning" - SimStateOlderReleaseMsg "error" - ChecksumConsistencyForSSReuse "none" - LibraryContextMissingDiagnostic "warning" - MatchCodeGenerationContextForUpdateDiagram "none" - InitInArrayFormatMsg "warning" - StrictBusMsg "ErrorLevel1" - BusNameAdapt "WarnAndRepair" - NonBusSignalsTreatedAsBus "none" - SymbolicDimMinMaxWarning "warning" - LossOfSymbolicDimsSimulationWarning "warning" - LossOfSymbolicDimsCodeGenerationWarning "error" - SymbolicDimsDataTypeCodeGenerationDiagnostic "error" - BlockIODiagnostic "none" - SFUnusedDataAndEventsDiag "warning" - SFUnexpectedBacktrackingDiag "error" - SFInvalidInputDataAccessInChartInitDiag "warning" - SFNoUnconditionalDefaultTransitionDiag "error" - SFTransitionOutsideNaturalParentDiag "warning" - SFUnreachableExecutionPathDiag "warning" - SFUndirectedBroadcastEventsDiag "warning" - SFTransitionActionBeforeConditionDiag "warning" - SFOutputUsedAsStateInMooreChartDiag "error" - SFTemporalDelaySmallerThanSampleTimeDiag "warning" - SFSelfTransitionDiag "warning" - SFExecutionAtInitializationDiag "warning" - SFMachineParentedDataDiag "warning" - IntegerSaturationMsg "warning" - AllowedUnitSystems "all" - UnitsInconsistencyMsg "warning" - AllowAutomaticUnitConversions on - RCSCRenamedMsg "warning" - RCSCObservableMsg "warning" - ForceCombineOutputUpdateInSim off - UnitDatabase "" - UnderSpecifiedDimensionMsg "none" + PropName "DomainParams_" } - Simulink.HardwareCC { - $ObjectID 28 - Version "1.18.1" - DisabledProps [] - Description "" - ProdBitPerChar 8 - ProdBitPerShort 16 - ProdBitPerInt 32 - ProdBitPerLong 32 - ProdBitPerLongLong 64 - ProdBitPerFloat 32 - ProdBitPerDouble 64 - ProdBitPerPointer 64 - ProdBitPerSizeT 64 - ProdBitPerPtrDiffT 64 - ProdLargestAtomicInteger "Char" - ProdLargestAtomicFloat "Float" - ProdIntDivRoundTo "Zero" - ProdEndianess "LittleEndian" - ProdWordSize 64 - ProdShiftRightIntArith on - ProdLongLongMode off - ProdHWDeviceType "Intel->x86-64 (Windows64)" - TargetBitPerChar 8 - TargetBitPerShort 16 - TargetBitPerInt 32 - TargetBitPerLong 32 - TargetBitPerLongLong 64 - TargetBitPerFloat 32 - TargetBitPerDouble 64 - TargetBitPerPointer 32 - TargetBitPerSizeT 32 - TargetBitPerPtrDiffT 32 - TargetLargestAtomicInteger "Char" - TargetLargestAtomicFloat "None" - TargetShiftRightIntArith on - TargetLongLongMode off - TargetIntDivRoundTo "Undefined" - TargetEndianess "Unspecified" - TargetWordSize 32 - TargetPreprocMaxBitsSint 32 - TargetPreprocMaxBitsUint 32 - TargetHWDeviceType "Specified" - TargetUnknown off - ProdEqTarget on - UseEmbeddedCoderFeatures on - UseSimulinkCoderFeatures on + VisualType_ "" + } + MATStruct { + UUID "c4b96f97-5df4-4af4-9e12-5bb19a1986a7" + BlockPath_ "Cyclic Pitch controller/2P Cyclic Pitch Controller2/d-q transformation" + SID_ "1370" + SubPath_ "" + OutputPortIndex_ [2.0] + LogicalPortIndex_ [0.0] + SignalName_ "" + SubSysPath_ "" + Decimation_ [1.0] + MaxPoints_ [0.0] + TargetBufferedStreaming_ [0.0] + IsFrameBased_ [0.0] + DomainType_ "" + Array { + Type "Struct" + Dimension 1 + MATStruct { + } + PropName "DomainParams_" } - Simulink.ModelReferenceCC { - $ObjectID 29 - Version "1.18.1" - DisabledProps [] - Description "" - UpdateModelReferenceTargets "IfOutOfDateOrStructuralChange" - EnableRefExpFcnMdlSchedulingChecks on - CheckModelReferenceTargetMessage "error" - EnableParallelModelReferenceBuilds off - ParallelModelReferenceErrorOnInvalidPool on - ParallelModelReferenceMATLABWorkerInit "None" - ModelReferenceNumInstancesAllowed "Multi" - PropagateVarSize "Infer from blocks in model" - ModelDependencies "" - ModelReferencePassRootInputsByReference on - ModelReferenceMinAlgLoopOccurrences off - PropagateSignalLabelsOutOfModel on - SupportModelReferenceSimTargetCustomCode off + VisualType_ "" + } + MATStruct { + UUID "29077b37-6b9d-4d3c-9f79-63d2f4f08b10" + BlockPath_ "Cyclic Pitch controller/1P Cyclic Pitch Controller1/PI - D" + SID_ "1082" + SubPath_ "" + OutputPortIndex_ [1.0] + LogicalPortIndex_ [0.0] + SignalName_ "" + SubSysPath_ "" + Decimation_ [1.0] + MaxPoints_ [0.0] + TargetBufferedStreaming_ [0.0] + IsFrameBased_ [0.0] + DomainType_ "" + Array { + Type "Struct" + Dimension 1 + MATStruct { + } + PropName "DomainParams_" } - Simulink.SFSimCC { - $ObjectID 30 - Version "1.18.1" - DisabledProps [] - Description "" - SimCustomSourceCode "" - SimCustomHeaderCode "" - SimCustomInitializer "" - SimCustomTerminator "" - SimReservedNameArray [] - SimUserSources "" - SimUserIncludeDirs "" - SimUserLibraries "" - SimUserDefines "" - SimCustomCompilerFlags "" - SimCustomLinkerFlags "" - SFSimEcho on - SimCtrlC on - SimIntegrity on - SimUseLocalCustomCode off - SimParseCustomCode on - SimAnalyzeCustomCode off - SimBuildMode "sf_incremental_build" - SimGenImportedTypeDefs off - ModelFunctionsGlobalVisibility "on" - CompileTimeRecursionLimit 50 - EnableRuntimeRecursion on - MATLABDynamicMemAlloc on - MATLABDynamicMemAllocThreshold 65536 - CustomCodeFunctionArrayLayout [] - DefaultCustomCodeFunctionArrayLayout "NotSpecified" + VisualType_ "" + } + MATStruct { + UUID "e20f7f33-de7e-42ed-99fd-3e820b3c9e20" + BlockPath_ "Cyclic Pitch controller/2P Cyclic Pitch Controller2/PI - D" + SID_ "1339" + SubPath_ "" + OutputPortIndex_ [1.0] + LogicalPortIndex_ [0.0] + SignalName_ "" + SubSysPath_ "" + Decimation_ [1.0] + MaxPoints_ [0.0] + TargetBufferedStreaming_ [0.0] + IsFrameBased_ [0.0] + DomainType_ "" + Array { + Type "Struct" + Dimension 1 + MATStruct { + } + PropName "DomainParams_" } - Simulink.RTWCC { - $BackupClass "Simulink.RTWCC" - $ObjectID 31 - Version "1.18.1" - Array { - Type "Cell" - Dimension 16 - Cell "IncludeHyperlinkInReport" - Cell "GenerateTraceInfo" - Cell "GenerateTraceReport" - Cell "GenerateTraceReportSl" - Cell "GenerateTraceReportSf" - Cell "GenerateTraceReportEml" - Cell "PortableWordSizes" - Cell "GenerateWebview" - Cell "GenerateCodeMetricsReport" - Cell "GenerateCodeReplacementReport" - Cell "GenerateMissedCodeReplacementReport" - Cell "GenerateErtSFunction" - Cell "CreateSILPILBlock" - Cell "CodeExecutionProfiling" - Cell "CodeProfilingSaveOptions" - Cell "CodeProfilingInstrumentation" - PropName "DisabledProps" - } - SystemTargetFile "grt.tlc" - HardwareBoard "None" - TLCOptions "" - GenCodeOnly off - MakeCommand "make_rtw" - GenerateMakefile on - PackageGeneratedCodeAndArtifacts off - PackageName "" - TemplateMakefile "grt_default_tmf" - PostCodeGenCommand "" - Description "" - GenerateReport off - RTWVerbose on - RetainRTWFile off - RTWBuildHooks [] - ProfileTLC off - TLCDebug off - TLCCoverage off - TLCAssert off - RTWUseLocalCustomCode off - RTWUseSimCustomCode off - CustomSourceCode "" - CustomHeaderCode "" - CustomInclude "" - CustomSource "" - CustomLibrary "" - CustomDefine "" - CustomBLASCallback "" - CustomLAPACKCallback "" - CustomFFTCallback "" - CustomInitializer "" - CustomTerminator "" - Toolchain "Automatically locate an installed toolchain" - BuildConfiguration "Faster Builds" - CustomToolchainOptions [] - IncludeHyperlinkInReport off - LaunchReport off - PortableWordSizes off - CreateSILPILBlock "None" - CodeExecutionProfiling off - CodeExecutionProfileVariable "executionProfile" - CodeProfilingSaveOptions "SummaryOnly" - CodeProfilingInstrumentation "off" - SILDebugging off - TargetLang "C" - IncludeBusHierarchyInRTWFileBlockHierarchyMap off - GenerateTraceInfo off - GenerateTraceReport off - GenerateTraceReportSl off - GenerateTraceReportSf off - GenerateTraceReportEml off - GenerateWebview off - GenerateCodeMetricsReport off - GenerateCodeReplacementReport off - GenerateMissedCodeReplacementReport off - RTWCompilerOptimization "off" - ObjectivePriorities [] - RTWCustomCompilerOptimizations "" - CheckMdlBeforeBuild "Off" - SharedConstantsCachingThreshold 1024 - Array { - Type "Handle" - Dimension 2 - Simulink.CodeAppCC { - $ObjectID 32 - Version "1.18.1" - Array { - Type "Cell" - Dimension 28 - Cell "IgnoreCustomStorageClasses" - Cell "IgnoreTestpoints" - Cell "InsertBlockDesc" - Cell "InsertPolySpaceComments" - Cell "SFDataObjDesc" - Cell "MATLABFcnDesc" - Cell "SimulinkDataObjDesc" - Cell "DefineNamingRule" - Cell "SignalNamingRule" - Cell "ParamNamingRule" - Cell "InternalIdentifier" - Cell "InlinedPrmAccess" - Cell "CustomSymbolStr" - Cell "CustomSymbolStrGlobalVar" - Cell "CustomSymbolStrType" - Cell "CustomSymbolStrField" - Cell "CustomSymbolStrFcn" - Cell "CustomSymbolStrModelFcn" - Cell "CustomSymbolStrFcnArg" - Cell "CustomSymbolStrBlkIO" - Cell "CustomSymbolStrTmpVar" - Cell "CustomSymbolStrMacro" - Cell "CustomSymbolStrUtil" - Cell "CustomUserTokenString" - Cell "ReqsInCode" - Cell "BlockCommentType" - Cell "CustomSymbolStrEmxType" - Cell "CustomSymbolStrEmxFcn" - PropName "DisabledProps" - } - Description "" - Comment "" - ForceParamTrailComments off - GenerateComments on - CommentStyle "Auto" - IgnoreCustomStorageClasses on - IgnoreTestpoints off - MaxIdLength 31 - PreserveName off - PreserveNameWithParent off - ShowEliminatedStatement off - OperatorAnnotations off - SimulinkDataObjDesc off - SFDataObjDesc off - MATLABFcnDesc off - MangleLength 1 - SharedChecksumLength 8 - CustomSymbolStrGlobalVar "$R$N$M" - CustomSymbolStrType "$N$R$M_T" - CustomSymbolStrField "$N$M" - CustomSymbolStrFcn "$R$N$M$F" - CustomSymbolStrModelFcn "$R$N" - CustomSymbolStrFcnArg "rt$I$N$M" - CustomSymbolStrBlkIO "rtb_$N$M" - CustomSymbolStrTmpVar "$N$M" - CustomSymbolStrMacro "$R$N$M" - CustomSymbolStrUtil "$N$C" - CustomSymbolStrEmxType "emxArray_$M$N" - CustomSymbolStrEmxFcn "emx$M$N" - CustomUserTokenString "" - CustomCommentsFcn "" - DefineNamingRule "None" - DefineNamingFcn "" - ParamNamingRule "None" - ParamNamingFcn "" - SignalNamingRule "None" - SignalNamingFcn "" - InsertBlockDesc off - InsertPolySpaceComments off - SimulinkBlockComments on - BlockCommentType "BlockPathComment" - StateflowObjectComments on - MATLABSourceComments off - EnableCustomComments off - InternalIdentifierFile "" - InternalIdentifier "Shortened" - InlinedPrmAccess "Literals" - ReqsInCode off - UseSimReservedNames off - ReservedNameArray [] - } - Simulink.GRTTargetCC { - $BackupClass "Simulink.TargetCC" - $ObjectID 33 - Version "1.18.1" - Array { - Type "Cell" - Dimension 16 - Cell "IncludeMdlTerminateFcn" - Cell "SuppressErrorStatus" - Cell "ERTCustomFileBanners" - Cell "GenerateSampleERTMain" - Cell "ExistingSharedCode" - Cell "GenerateTestInterfaces" - Cell "ModelStepFunctionPrototypeControlCompliant" - Cell "GenerateAllocFcn" - Cell "PurelyIntegerCode" - Cell "SupportComplex" - Cell "SupportAbsoluteTime" - Cell "SupportContinuousTime" - Cell "SupportNonInlinedSFcns" - Cell "RemoveDisableFunc" - Cell "RemoveResetFunc" - Cell "PreserveStateflowLocalDataDimensions" - PropName "DisabledProps" - } - Description "" - TargetFcnLib "ansi_tfl_table_tmw.mat" - TargetLibSuffix "" - TargetPreCompLibLocation "" - GenFloatMathFcnCalls "NOT IN USE" - TargetLangStandard "C99 (ISO)" - CodeReplacementLibrary "None" - UtilityFuncGeneration "Auto" - MultiwordTypeDef "System defined" - MultiwordLength 2048 - DynamicStringBufferSize 256 - GenerateFullHeader on - InferredTypesCompatibility off - ExistingSharedCode "" - GenerateSampleERTMain off - GenerateTestInterfaces off - ModelReferenceCompliant on - ParMdlRefBuildCompliant on - CompOptLevelCompliant on - ConcurrentExecutionCompliant on - IncludeMdlTerminateFcn on - GeneratePreprocessorConditionals "Use local settings" - CombineOutputUpdateFcns on - CombineSignalStateStructs off - GroupInternalDataByFunction off - SuppressErrorStatus off - IncludeFileDelimiter "Auto" - ERTCustomFileBanners off - SupportAbsoluteTime on - LogVarNameModifier "rt_" - MatFileLogging on - MultiInstanceERTCode off - CodeInterfacePackaging "Nonreusable function" - PurelyIntegerCode off - SupportNonFinite on - SupportComplex on - SupportContinuousTime on - SupportNonInlinedSFcns on - RemoveDisableFunc off - RemoveResetFunc off - SupportVariableSizeSignals off - ParenthesesLevel "Nominal" - CastingMode "Nominal" - PreserveStateflowLocalDataDimensions off - MATLABClassNameForMDSCustomization "Simulink.SoftwareTarget.GRTCustomization" - ModelStepFunctionPrototypeControlCompliant off - CPPClassGenCompliant on - AutosarCompliant off - MDXCompliant off - GRTInterface off - GenerateAllocFcn off - UseToolchainInfoCompliant on - GenerateSharedConstants on - CoderGroups [] - AccessMethods [] - LookupTableObjectStructAxisOrder "1,2,3,4,..." - LUTObjectStructOrderExplicitValues "Size,Breakpoints,Table" - LUTObjectStructOrderEvenSpacing "Size,Breakpoints,Table" - ArrayLayout "Column-major" - UnsupportedSFcnMsg "error" - ERTHeaderFileRootName "$R$E" - ERTSourceFileRootName "$R$E" - ERTDataFileRootName "$R_data" - UseMalloc off - ExtMode off - ExtModeStaticAlloc off - ExtModeTesting off - ExtModeStaticAllocSize 1000000 - ExtModeTransport 0 - ExtModeMexFile "ext_comm" - ExtModeMexArgs "" - ExtModeIntrfLevel "Level1" - RTWCAPISignals off - RTWCAPIParams off - RTWCAPIStates off - RTWCAPIRootIO off - GenerateASAP2 off - MultiInstanceErrorCode "Error" - } - PropName "Components" + VisualType_ "" + } + MATStruct { + UUID "4ae16dba-e33d-463d-a5c9-9e574aaf6681" + BlockPath_ "Cyclic Pitch controller/2P Cyclic Pitch Controller2/inverse d-q transformation" + SID_ "1371" + SubPath_ "" + OutputPortIndex_ [1.0] + LogicalPortIndex_ [0.0] + SignalName_ "" + SubSysPath_ "" + Decimation_ [1.0] + MaxPoints_ [0.0] + TargetBufferedStreaming_ [0.0] + IsFrameBased_ [0.0] + DomainType_ "" + Array { + Type "Struct" + Dimension 1 + MATStruct { } + PropName "DomainParams_" } - SlCovCC.ConfigComp { - $ObjectID 34 - Version "1.18.1" - DisabledProps [] - Description "Simulink Coverage Configuration Component" - Name "Simulink Coverage" - CovEnable off - CovScope "EntireSystem" - CovIncludeTopModel on - RecordCoverage off - CovPath "/" - CovSaveName "covdata" - CovCompData "" - CovMetricSettings "dwe" - CovFilter "" - CovHTMLOptions "" - CovNameIncrementing off - CovHtmlReporting off - CovForceBlockReductionOff on - CovEnableCumulative on - CovSaveCumulativeToWorkspaceVar off - CovSaveSingleToWorkspaceVar off - CovCumulativeVarName "covCumulativeData" - CovCumulativeReport off - CovSaveOutputData on - CovOutputDir "slcov_output/$ModelName$" - CovDataFileName "$ModelName$_cvdata" - CovShowResultsExplorer on - CovReportOnPause on - CovModelRefEnable "off" - CovModelRefExcluded "" - CovExternalEMLEnable on - CovSFcnEnable on - CovBoundaryAbsTol 1e-05 - CovBoundaryRelTol 0.01 - CovUseTimeInterval off - CovStartTime 0 - CovStopTime 0 - CovMcdcMode "Masking" + VisualType_ "" + } + MATStruct { + UUID "45156df6-b2c0-4911-8d98-48973808d58f" + BlockPath_ "Cyclic Pitch controller/2P Cyclic Pitch Controller2/1P IPCDQ Filtering1" + SID_ "1130" + SubPath_ "" + OutputPortIndex_ [1.0] + LogicalPortIndex_ [0.0] + SignalName_ "" + SubSysPath_ "" + Decimation_ [1.0] + MaxPoints_ [0.0] + TargetBufferedStreaming_ [0.0] + IsFrameBased_ [0.0] + DomainType_ "" + Array { + Type "Struct" + Dimension 1 + MATStruct { + } + PropName "DomainParams_" } - PropName "Components" + VisualType_ "" } - Name "Configuration" - ExtraOptions "" - CurrentDlgPage "Solver" - ConfigPrmDlgPosition [ 195, 142, 1085, 882 ] - } - Simulink.ConfigSet { - $ObjectID 35 - Version "1.18.1" - DisabledProps [] - Description "" - Array { - Type "Handle" - Dimension 9 - Simulink.SolverCC { - $ObjectID 36 - Version "1.18.1" - DisabledProps [] - Description "" - StartTime "0.0" - StopTime "TMax" - AbsTol "auto" - AutoScaleAbsTol on - FixedStep "dt" - InitialStep "auto" - MaxOrder 5 - ZcThreshold "auto" - ConsecutiveZCsStepRelTol "10*128*eps" - MaxConsecutiveZCs "1000" - ExtrapolationOrder 4 - NumberNewtonIterations 1 - MaxStep "auto" - MinStep "auto" - MaxConsecutiveMinStep "1" - RelTol "1e-3" - EnableMultiTasking on - ConcurrentTasks off - Solver "ode4" - SolverName "ode4" - SolverJacobianMethodControl "auto" - ShapePreserveControl "DisableAll" - ZeroCrossControl "UseLocalSettings" - ZeroCrossAlgorithm "Nonadaptive" - AlgebraicLoopSolver "TrustRegion" - SolverInfoToggleStatus on - IsAutoAppliedInSIP off - SolverResetMethod "Fast" - PositivePriorityOrder off - AutoInsertRateTranBlk off - SampleTimeConstraint "Unconstrained" - InsertRTBMode "Whenever possible" - SampleTimeProperty [] - DecoupledContinuousIntegration off - MinimalZcImpactIntegration off + MATStruct { + UUID "50af7c52-bf21-40bd-bf07-bd9f7f3d565d" + BlockPath_ "Cyclic Pitch controller/1P Cyclic Pitch Controller1/PI - Q" + SID_ "1095" + SubPath_ "" + OutputPortIndex_ [1.0] + LogicalPortIndex_ [0.0] + SignalName_ "" + SubSysPath_ "" + Decimation_ [1.0] + MaxPoints_ [0.0] + TargetBufferedStreaming_ [0.0] + IsFrameBased_ [0.0] + DomainType_ "" + Array { + Type "Struct" + Dimension 1 + MATStruct { + } + PropName "DomainParams_" } - Simulink.DataIOCC { - $ObjectID 37 - Version "1.18.1" - DisabledProps [] - Description "" - Decimation "1" - ExternalInput "[t, u]" - FinalStateName "xFinal" - InitialState "xInitial" - LimitDataPoints off - MaxDataPoints "1000" - LoadExternalInput off - LoadInitialState off - SaveFinalState off - SaveCompleteFinalSimState off - SaveFormat "Dataset" - SignalLoggingSaveFormat "Dataset" - SaveOutput off - SaveState off - SignalLogging on - DSMLogging on - InspectSignalLogs off - VisualizeSimOutput on - StreamToWorkspace off - StreamVariableName "streamout" - SaveTime off - ReturnWorkspaceOutputs off - StateSaveName "xout" - TimeSaveName "tout" - OutputSaveName "yout" - SignalLoggingName "logsout" - DSMLoggingName "dsmout" - OutputOption "RefineOutputTimes" - OutputTimes "[]" - ReturnWorkspaceOutputsName "out" - Refine "1" - LoggingToFile off - DatasetSignalFormat "timeseries" - LoggingFileName "out.mat" - LoggingIntervals "[-inf, inf]" + VisualType_ "" + } + MATStruct { + UUID "3f2bd3b8-d0c6-41db-94b2-08e7bb5215b2" + BlockPath_ "Cyclic Pitch controller/2P Cyclic Pitch Controller2/Enable (-)" + SID_ "1128" + SubPath_ "" + OutputPortIndex_ [1.0] + LogicalPortIndex_ [0.0] + SignalName_ "" + SubSysPath_ "" + Decimation_ [1.0] + MaxPoints_ [0.0] + TargetBufferedStreaming_ [0.0] + IsFrameBased_ [0.0] + DomainType_ "" + Array { + Type "Struct" + Dimension 1 + MATStruct { + } + PropName "DomainParams_" } - Simulink.OptimizationCC { - $ObjectID 38 - Version "1.18.1" - Array { - Type "Cell" - Dimension 9 - Cell "BooleansAsBitfields" - Cell "PassReuseOutputArgsAs" - Cell "PassReuseOutputArgsThreshold" - Cell "ZeroExternalMemoryAtStartup" - Cell "ZeroInternalMemoryAtStartup" - Cell "OptimizeModelRefInitCode" - Cell "NoFixptDivByZeroProtection" - Cell "UseSpecifiedMinMax" - Cell "EfficientTunableParamExpr" - PropName "DisabledProps" + VisualType_ "" + } + MATStruct { + UUID "c729f79d-02c2-49cf-9889-8d1aeea94a9e" + BlockPath_ "Cyclic Pitch controller/1P Cyclic Pitch Controller1/d-q transformation" + SID_ "1114" + SubPath_ "" + OutputPortIndex_ [1.0] + LogicalPortIndex_ [0.0] + SignalName_ "" + SubSysPath_ "" + Decimation_ [1.0] + MaxPoints_ [0.0] + TargetBufferedStreaming_ [0.0] + IsFrameBased_ [0.0] + DomainType_ "" + Array { + Type "Struct" + Dimension 1 + MATStruct { } - Description "" - BlockReduction on - BooleanDataType on - ConditionallyExecuteInputs on - DefaultParameterBehavior "Tunable" - UseDivisionForNetSlopeComputation "off" - UseFloatMulNetSlope off - DefaultUnderspecifiedDataType "double" - UseSpecifiedMinMax off - InlineInvariantSignals off - OptimizeBlockIOStorage on - BufferReuse on - EnhancedBackFolding off - CachingGlobalReferences off - GlobalBufferReuse on - StrengthReduction off - AdvancedOptControl "" - ExpressionFolding on - BooleansAsBitfields off - BitfieldContainerType "uint_T" - EnableMemcpy on - MemcpyThreshold 64 - PassReuseOutputArgsAs "Structure reference" - PassReuseOutputArgsThreshold 12 - ExpressionDepthLimit 128 - LocalBlockOutputs on - RollThreshold 5 - StateBitsets off - DataBitsets off - ActiveStateOutputEnumStorageType "Native Integer" - ZeroExternalMemoryAtStartup on - ZeroInternalMemoryAtStartup on - InitFltsAndDblsToZero off - NoFixptDivByZeroProtection off - EfficientFloat2IntCast off - EfficientMapNaN2IntZero on - LifeSpan "auto" - MaxStackSize "Inherit from target" - BufferReusableBoundary on - SimCompilerOptimization "off" - AccelVerboseBuild off - OptimizeBlockOrder "off" - OptimizeDataStoreBuffers on - BusAssignmentInplaceUpdate on - DifferentSizesBufferReuse off - OptimizationLevel "level2" - OptimizationPriority "Balanced" - OptimizationCustomize on - UseRowMajorAlgorithm off - LabelGuidedReuse off + PropName "DomainParams_" } - Simulink.DebuggingCC { - $ObjectID 39 + VisualType_ "" + } + MATStruct { + UUID "755b5f4f-4645-4b6b-8414-9d7ab766b983" + BlockPath_ "Cyclic Pitch controller/1P Cyclic Pitch Controller1/d-q transformation" + SID_ "1114" + SubPath_ "" + OutputPortIndex_ [2.0] + LogicalPortIndex_ [0.0] + SignalName_ "" + SubSysPath_ "" + Decimation_ [1.0] + MaxPoints_ [0.0] + TargetBufferedStreaming_ [0.0] + IsFrameBased_ [0.0] + DomainType_ "" + Array { + Type "Struct" + Dimension 1 + MATStruct { + } + PropName "DomainParams_" + } + VisualType_ "" + } + MATStruct { + UUID "12a22b4a-9219-4686-b5bf-784b18571f70" + BlockPath_ "Cyclic Pitch controller/1P Cyclic Pitch Controller1/1P IPCDQ Filtering1" + SID_ "875" + SubPath_ "" + OutputPortIndex_ [1.0] + LogicalPortIndex_ [0.0] + SignalName_ "" + SubSysPath_ "" + Decimation_ [1.0] + MaxPoints_ [0.0] + TargetBufferedStreaming_ [0.0] + IsFrameBased_ [0.0] + DomainType_ "" + Array { + Type "Struct" + Dimension 1 + MATStruct { + } + PropName "DomainParams_" + } + VisualType_ "" + } + MATStruct { + UUID "6c4f2590-95fb-4a03-8b23-758f58018448" + BlockPath_ "Cyclic Pitch controller/1P Cyclic Pitch Controller1/Enable (-)" + SID_ "873" + SubPath_ "" + OutputPortIndex_ [1.0] + LogicalPortIndex_ [0.0] + SignalName_ "" + SubSysPath_ "" + Decimation_ [1.0] + MaxPoints_ [0.0] + TargetBufferedStreaming_ [0.0] + IsFrameBased_ [0.0] + DomainType_ "" + Array { + Type "Struct" + Dimension 1 + MATStruct { + } + PropName "DomainParams_" + } + VisualType_ "" + } + MATStruct { + UUID "d679fa22-3557-433e-95a6-5858cb800871" + BlockPath_ "Cyclic Pitch controller/1P Cyclic Pitch Controller1/RootMyb" + SID_ "867" + SubPath_ "" + OutputPortIndex_ [1.0] + LogicalPortIndex_ [0.0] + SignalName_ "" + SubSysPath_ "" + Decimation_ [1.0] + MaxPoints_ [0.0] + TargetBufferedStreaming_ [0.0] + IsFrameBased_ [0.0] + DomainType_ "" + Array { + Type "Struct" + Dimension 1 + MATStruct { + } + PropName "DomainParams_" + } + VisualType_ "" + } + MATStruct { + UUID "23bbc340-0fa8-49fe-bae9-84504f57a192" + BlockPath_ "Cyclic Pitch controller/1P Cyclic Pitch Controller1/1P IPCDQ Filtering1" + SID_ "875" + SubPath_ "" + OutputPortIndex_ [1.0] + LogicalPortIndex_ [0.0] + SignalName_ "" + SubSysPath_ "" + Decimation_ [1.0] + MaxPoints_ [0.0] + TargetBufferedStreaming_ [0.0] + IsFrameBased_ [0.0] + DomainType_ "" + Array { + Type "Struct" + Dimension 1 + MATStruct { + } + PropName "DomainParams_" + } + VisualType_ "" + } + MATStruct { + UUID "d5faa561-88de-47d4-9351-5508347f11d2" + BlockPath_ "Cyclic Pitch controller/2P Cyclic Pitch Controller2/1P IPCDQ Filtering1" + SID_ "1130" + SubPath_ "" + OutputPortIndex_ [1.0] + LogicalPortIndex_ [0.0] + SignalName_ "" + SubSysPath_ "" + Decimation_ [1.0] + MaxPoints_ [0.0] + TargetBufferedStreaming_ [0.0] + IsFrameBased_ [0.0] + DomainType_ "" + Array { + Type "Struct" + Dimension 1 + MATStruct { + } + PropName "DomainParams_" + } + VisualType_ "" + } + PropName "Persistence" + } + } + ExtModeBatchMode off + ExtModeEnableFloating on + ExtModeTrigType "manual" + ExtModeTrigMode "normal" + ExtModeTrigPort "1" + ExtModeTrigElement "any" + ExtModeTrigDuration 1000 + ExtModeTrigDurationFloating "auto" + ExtModeTrigHoldOff 0 + ExtModeTrigDelay 0 + ExtModeTrigDirection "rising" + ExtModeTrigLevel 0 + ExtModeArchiveMode "off" + ExtModeAutoIncOneShot off + ExtModeIncDirWhenArm off + ExtModeAddSuffixToVar off + ExtModeWriteAllDataToWs off + ExtModeArmWhenConnect on + ExtModeSkipDownloadWhenConnect off + ExtModeLogAll on + ExtModeAutoUpdateStatusClock on + ShowModelReferenceBlockVersion off + ShowModelReferenceBlockIO off + OrderedModelArguments on + Array { + Type "Handle" + Dimension 18 + Simulink.ConfigSet { + $ObjectID 28 + Version "1.18.1" + DisabledProps [] + Description "" + Array { + Type "Handle" + Dimension 9 + Simulink.SolverCC { + $ObjectID 29 + Version "1.18.1" + DisabledProps [] + Description "" + StartTime "0.0" + StopTime "TMax" + AbsTol "auto" + AutoScaleAbsTol on + FixedStep "auto" + InitialStep "auto" + MaxOrder 5 + ZcThreshold "auto" + ConsecutiveZCsStepRelTol "10*128*eps" + MaxConsecutiveZCs "1000" + ExtrapolationOrder 4 + NumberNewtonIterations 1 + MaxStep "auto" + MinStep "auto" + MaxConsecutiveMinStep "1" + RelTol "1e-3" + EnableMultiTasking off + ConcurrentTasks off + Solver "VariableStepAuto" + SolverName "VariableStepAuto" + SolverJacobianMethodControl "auto" + ShapePreserveControl "DisableAll" + ZeroCrossControl "UseLocalSettings" + ZeroCrossAlgorithm "Nonadaptive" + AlgebraicLoopSolver "TrustRegion" + SolverInfoToggleStatus off + IsAutoAppliedInSIP off + SolverResetMethod "Fast" + PositivePriorityOrder off + AutoInsertRateTranBlk off + SampleTimeConstraint "Unconstrained" + InsertRTBMode "Whenever possible" + SampleTimeProperty [] + DecoupledContinuousIntegration off + MinimalZcImpactIntegration off + } + Simulink.DataIOCC { + $ObjectID 30 + Version "1.18.1" + DisabledProps [] + Description "" + Decimation "1" + ExternalInput "[t, u]" + FinalStateName "xFinal" + InitialState "xInitial" + LimitDataPoints off + MaxDataPoints "1000" + LoadExternalInput off + LoadInitialState off + SaveFinalState off + SaveCompleteFinalSimState off + SaveFormat "Dataset" + SignalLoggingSaveFormat "Dataset" + SaveOutput on + SaveState off + SignalLogging on + DSMLogging on + InspectSignalLogs off + VisualizeSimOutput on + StreamToWorkspace off + StreamVariableName "streamout" + SaveTime on + ReturnWorkspaceOutputs off + StateSaveName "xout" + TimeSaveName "tout" + OutputSaveName "yout" + SignalLoggingName "logsout" + DSMLoggingName "dsmout" + OutputOption "RefineOutputTimes" + OutputTimes "[]" + ReturnWorkspaceOutputsName "out" + Refine "1" + LoggingToFile off + DatasetSignalFormat "timeseries" + LoggingFileName "out.mat" + LoggingIntervals "[-inf, inf]" + } + Simulink.OptimizationCC { + $ObjectID 31 Version "1.18.1" Array { Type "Cell" - Dimension 1 - Cell "UseOnlyExistingSharedCode" + Dimension 9 + Cell "BooleansAsBitfields" + Cell "PassReuseOutputArgsAs" + Cell "PassReuseOutputArgsThreshold" + Cell "ZeroExternalMemoryAtStartup" + Cell "ZeroInternalMemoryAtStartup" + Cell "OptimizeModelRefInitCode" + Cell "NoFixptDivByZeroProtection" + Cell "UseSpecifiedMinMax" + Cell "EfficientTunableParamExpr" PropName "DisabledProps" } Description "" - RTPrefix "error" + BlockReduction on + BooleanDataType on + ConditionallyExecuteInputs on + DefaultParameterBehavior "Tunable" + UseDivisionForNetSlopeComputation "off" + UseFloatMulNetSlope off + DefaultUnderspecifiedDataType "double" + UseSpecifiedMinMax off + InlineInvariantSignals off + OptimizeBlockIOStorage on + BufferReuse on + EnhancedBackFolding off + CachingGlobalReferences off + GlobalBufferReuse on + StrengthReduction off + AdvancedOptControl "" + ExpressionFolding on + BooleansAsBitfields off + BitfieldContainerType "uint_T" + EnableMemcpy on + MemcpyThreshold 64 + PassReuseOutputArgsAs "Structure reference" + PassReuseOutputArgsThreshold 12 + ExpressionDepthLimit 128 + LocalBlockOutputs on + RollThreshold 5 + StateBitsets off + DataBitsets off + ActiveStateOutputEnumStorageType "Native Integer" + ZeroExternalMemoryAtStartup on + ZeroInternalMemoryAtStartup on + InitFltsAndDblsToZero off + NoFixptDivByZeroProtection off + EfficientFloat2IntCast off + EfficientMapNaN2IntZero on + LifeSpan "auto" + MaxStackSize "Inherit from target" + BufferReusableBoundary on + SimCompilerOptimization "off" + AccelVerboseBuild off + OptimizeBlockOrder "off" + OptimizeDataStoreBuffers on + BusAssignmentInplaceUpdate on + DifferentSizesBufferReuse off + OptimizationLevel "level2" + OptimizationPriority "Balanced" + OptimizationCustomize on + UseRowMajorAlgorithm off + LabelGuidedReuse off + } + Simulink.DebuggingCC { + $ObjectID 32 + Version "1.18.1" + Array { + Type "Cell" + Dimension 1 + Cell "UseOnlyExistingSharedCode" + PropName "DisabledProps" + } + Description "" + RTPrefix "error" ConsistencyChecking "none" ArrayBoundsChecking "none" SignalInfNanChecking "none" @@ -1939,7 +1801,7 @@ Model { UnderSpecifiedDimensionMsg "none" } Simulink.HardwareCC { - $ObjectID 40 + $ObjectID 33 Version "1.18.1" DisabledProps [] Description "" @@ -1987,7 +1849,7 @@ Model { UseSimulinkCoderFeatures on } Simulink.ModelReferenceCC { - $ObjectID 41 + $ObjectID 34 Version "1.18.1" DisabledProps [] Description "" @@ -2006,7 +1868,7 @@ Model { SupportModelReferenceSimTargetCustomCode off } Simulink.SFSimCC { - $ObjectID 42 + $ObjectID 35 Version "1.18.1" DisabledProps [] Description "" @@ -2039,7 +1901,7 @@ Model { } Simulink.RTWCC { $BackupClass "Simulink.RTWCC" - $ObjectID 43 + $ObjectID 36 Version "1.18.1" Array { Type "Cell" @@ -2126,7 +1988,7 @@ Model { Type "Handle" Dimension 2 Simulink.CodeAppCC { - $ObjectID 44 + $ObjectID 37 Version "1.18.1" Array { Type "Cell" @@ -2214,7 +2076,7 @@ Model { } Simulink.GRTTargetCC { $BackupClass "Simulink.TargetCC" - $ObjectID 45 + $ObjectID 38 Version "1.18.1" Array { Type "Cell" @@ -2320,7 +2182,7 @@ Model { } } SlCovCC.ConfigComp { - $ObjectID 46 + $ObjectID 39 Version "1.18.1" DisabledProps [] Description "Simulink Coverage Configuration Component" @@ -2361,13 +2223,13 @@ Model { } PropName "Components" } - Name "Configuration1" + Name "Configuration" ExtraOptions "" CurrentDlgPage "Solver" - ConfigPrmDlgPosition [ 321, 58, 1211, 798 ] + ConfigPrmDlgPosition [ 195, 142, 1085, 882 ] } Simulink.ConfigSet { - $ObjectID 47 + $ObjectID 40 Version "1.18.1" DisabledProps [] Description "" @@ -2375,7 +2237,7 @@ Model { Type "Handle" Dimension 9 Simulink.SolverCC { - $ObjectID 48 + $ObjectID 41 Version "1.18.1" DisabledProps [] Description "" @@ -2397,8 +2259,8 @@ Model { RelTol "1e-3" EnableMultiTasking on ConcurrentTasks off - Solver "FixedStepDiscrete" - SolverName "FixedStepDiscrete" + Solver "ode4" + SolverName "ode4" SolverJacobianMethodControl "auto" ShapePreserveControl "DisableAll" ZeroCrossControl "UseLocalSettings" @@ -2416,7 +2278,7 @@ Model { MinimalZcImpactIntegration off } Simulink.DataIOCC { - $ObjectID 49 + $ObjectID 42 Version "1.18.1" DisabledProps [] Description "" @@ -2457,7 +2319,7 @@ Model { LoggingIntervals "[-inf, inf]" } Simulink.OptimizationCC { - $ObjectID 50 + $ObjectID 43 Version "1.18.1" Array { Type "Cell" @@ -2525,7 +2387,7 @@ Model { LabelGuidedReuse off } Simulink.DebuggingCC { - $ObjectID 51 + $ObjectID 44 Version "1.18.1" Array { Type "Cell" @@ -2644,7 +2506,7 @@ Model { UnderSpecifiedDimensionMsg "none" } Simulink.HardwareCC { - $ObjectID 52 + $ObjectID 45 Version "1.18.1" DisabledProps [] Description "" @@ -2692,7 +2554,7 @@ Model { UseSimulinkCoderFeatures on } Simulink.ModelReferenceCC { - $ObjectID 53 + $ObjectID 46 Version "1.18.1" DisabledProps [] Description "" @@ -2711,7 +2573,7 @@ Model { SupportModelReferenceSimTargetCustomCode off } Simulink.SFSimCC { - $ObjectID 54 + $ObjectID 47 Version "1.18.1" DisabledProps [] Description "" @@ -2744,7 +2606,7 @@ Model { } Simulink.RTWCC { $BackupClass "Simulink.RTWCC" - $ObjectID 55 + $ObjectID 48 Version "1.18.1" Array { Type "Cell" @@ -2831,7 +2693,7 @@ Model { Type "Handle" Dimension 2 Simulink.CodeAppCC { - $ObjectID 56 + $ObjectID 49 Version "1.18.1" Array { Type "Cell" @@ -2919,7 +2781,7 @@ Model { } Simulink.GRTTargetCC { $BackupClass "Simulink.TargetCC" - $ObjectID 57 + $ObjectID 50 Version "1.18.1" Array { Type "Cell" @@ -3025,7 +2887,7 @@ Model { } } SlCovCC.ConfigComp { - $ObjectID 58 + $ObjectID 51 Version "1.18.1" DisabledProps [] Description "Simulink Coverage Configuration Component" @@ -3066,13 +2928,13 @@ Model { } PropName "Components" } - Name "Configuration2" + Name "Configuration1" ExtraOptions "" CurrentDlgPage "Solver" - ConfigPrmDlgPosition [ 321, 71, 1211, 811 ] + ConfigPrmDlgPosition [ 321, 58, 1211, 798 ] } Simulink.ConfigSet { - $ObjectID 59 + $ObjectID 52 Version "1.18.1" DisabledProps [] Description "" @@ -3080,7 +2942,7 @@ Model { Type "Handle" Dimension 9 Simulink.SolverCC { - $ObjectID 60 + $ObjectID 53 Version "1.18.1" DisabledProps [] Description "" @@ -3121,7 +2983,7 @@ Model { MinimalZcImpactIntegration off } Simulink.DataIOCC { - $ObjectID 61 + $ObjectID 54 Version "1.18.1" DisabledProps [] Description "" @@ -3162,7 +3024,7 @@ Model { LoggingIntervals "[-inf, inf]" } Simulink.OptimizationCC { - $ObjectID 62 + $ObjectID 55 Version "1.18.1" Array { Type "Cell" @@ -3230,7 +3092,7 @@ Model { LabelGuidedReuse off } Simulink.DebuggingCC { - $ObjectID 63 + $ObjectID 56 Version "1.18.1" Array { Type "Cell" @@ -3349,7 +3211,7 @@ Model { UnderSpecifiedDimensionMsg "none" } Simulink.HardwareCC { - $ObjectID 64 + $ObjectID 57 Version "1.18.1" DisabledProps [] Description "" @@ -3397,7 +3259,7 @@ Model { UseSimulinkCoderFeatures on } Simulink.ModelReferenceCC { - $ObjectID 65 + $ObjectID 58 Version "1.18.1" DisabledProps [] Description "" @@ -3416,7 +3278,7 @@ Model { SupportModelReferenceSimTargetCustomCode off } Simulink.SFSimCC { - $ObjectID 66 + $ObjectID 59 Version "1.18.1" DisabledProps [] Description "" @@ -3449,7 +3311,7 @@ Model { } Simulink.RTWCC { $BackupClass "Simulink.RTWCC" - $ObjectID 67 + $ObjectID 60 Version "1.18.1" Array { Type "Cell" @@ -3536,7 +3398,7 @@ Model { Type "Handle" Dimension 2 Simulink.CodeAppCC { - $ObjectID 68 + $ObjectID 61 Version "1.18.1" Array { Type "Cell" @@ -3624,7 +3486,7 @@ Model { } Simulink.GRTTargetCC { $BackupClass "Simulink.TargetCC" - $ObjectID 69 + $ObjectID 62 Version "1.18.1" Array { Type "Cell" @@ -3730,7 +3592,7 @@ Model { } } SlCovCC.ConfigComp { - $ObjectID 70 + $ObjectID 63 Version "1.18.1" DisabledProps [] Description "Simulink Coverage Configuration Component" @@ -3771,13 +3633,13 @@ Model { } PropName "Components" } - Name "Configuration3" + Name "Configuration2" ExtraOptions "" CurrentDlgPage "Solver" ConfigPrmDlgPosition [ 321, 71, 1211, 811 ] } Simulink.ConfigSet { - $ObjectID 71 + $ObjectID 64 Version "1.18.1" DisabledProps [] Description "" @@ -3785,7 +3647,7 @@ Model { Type "Handle" Dimension 9 Simulink.SolverCC { - $ObjectID 72 + $ObjectID 65 Version "1.18.1" DisabledProps [] Description "" @@ -3826,7 +3688,7 @@ Model { MinimalZcImpactIntegration off } Simulink.DataIOCC { - $ObjectID 73 + $ObjectID 66 Version "1.18.1" DisabledProps [] Description "" @@ -3867,7 +3729,7 @@ Model { LoggingIntervals "[-inf, inf]" } Simulink.OptimizationCC { - $ObjectID 74 + $ObjectID 67 Version "1.18.1" Array { Type "Cell" @@ -3935,7 +3797,7 @@ Model { LabelGuidedReuse off } Simulink.DebuggingCC { - $ObjectID 75 + $ObjectID 68 Version "1.18.1" Array { Type "Cell" @@ -4054,7 +3916,7 @@ Model { UnderSpecifiedDimensionMsg "none" } Simulink.HardwareCC { - $ObjectID 76 + $ObjectID 69 Version "1.18.1" DisabledProps [] Description "" @@ -4102,7 +3964,7 @@ Model { UseSimulinkCoderFeatures on } Simulink.ModelReferenceCC { - $ObjectID 77 + $ObjectID 70 Version "1.18.1" DisabledProps [] Description "" @@ -4121,7 +3983,7 @@ Model { SupportModelReferenceSimTargetCustomCode off } Simulink.SFSimCC { - $ObjectID 78 + $ObjectID 71 Version "1.18.1" DisabledProps [] Description "" @@ -4154,7 +4016,7 @@ Model { } Simulink.RTWCC { $BackupClass "Simulink.RTWCC" - $ObjectID 79 + $ObjectID 72 Version "1.18.1" Array { Type "Cell" @@ -4241,7 +4103,7 @@ Model { Type "Handle" Dimension 2 Simulink.CodeAppCC { - $ObjectID 80 + $ObjectID 73 Version "1.18.1" Array { Type "Cell" @@ -4329,7 +4191,7 @@ Model { } Simulink.GRTTargetCC { $BackupClass "Simulink.TargetCC" - $ObjectID 81 + $ObjectID 74 Version "1.18.1" Array { Type "Cell" @@ -4435,7 +4297,7 @@ Model { } } SlCovCC.ConfigComp { - $ObjectID 82 + $ObjectID 75 Version "1.18.1" DisabledProps [] Description "Simulink Coverage Configuration Component" @@ -4476,13 +4338,13 @@ Model { } PropName "Components" } - Name "Configuration4" + Name "Configuration3" ExtraOptions "" CurrentDlgPage "Solver" ConfigPrmDlgPosition [ 321, 71, 1211, 811 ] } Simulink.ConfigSet { - $ObjectID 83 + $ObjectID 76 Version "1.18.1" DisabledProps [] Description "" @@ -4490,7 +4352,7 @@ Model { Type "Handle" Dimension 9 Simulink.SolverCC { - $ObjectID 84 + $ObjectID 77 Version "1.18.1" DisabledProps [] Description "" @@ -4531,7 +4393,7 @@ Model { MinimalZcImpactIntegration off } Simulink.DataIOCC { - $ObjectID 85 + $ObjectID 78 Version "1.18.1" DisabledProps [] Description "" @@ -4572,7 +4434,7 @@ Model { LoggingIntervals "[-inf, inf]" } Simulink.OptimizationCC { - $ObjectID 86 + $ObjectID 79 Version "1.18.1" Array { Type "Cell" @@ -4640,7 +4502,7 @@ Model { LabelGuidedReuse off } Simulink.DebuggingCC { - $ObjectID 87 + $ObjectID 80 Version "1.18.1" Array { Type "Cell" @@ -4759,7 +4621,7 @@ Model { UnderSpecifiedDimensionMsg "none" } Simulink.HardwareCC { - $ObjectID 88 + $ObjectID 81 Version "1.18.1" DisabledProps [] Description "" @@ -4807,7 +4669,7 @@ Model { UseSimulinkCoderFeatures on } Simulink.ModelReferenceCC { - $ObjectID 89 + $ObjectID 82 Version "1.18.1" DisabledProps [] Description "" @@ -4826,7 +4688,7 @@ Model { SupportModelReferenceSimTargetCustomCode off } Simulink.SFSimCC { - $ObjectID 90 + $ObjectID 83 Version "1.18.1" DisabledProps [] Description "" @@ -4859,7 +4721,7 @@ Model { } Simulink.RTWCC { $BackupClass "Simulink.RTWCC" - $ObjectID 91 + $ObjectID 84 Version "1.18.1" Array { Type "Cell" @@ -4946,7 +4808,7 @@ Model { Type "Handle" Dimension 2 Simulink.CodeAppCC { - $ObjectID 92 + $ObjectID 85 Version "1.18.1" Array { Type "Cell" @@ -5034,7 +4896,7 @@ Model { } Simulink.GRTTargetCC { $BackupClass "Simulink.TargetCC" - $ObjectID 93 + $ObjectID 86 Version "1.18.1" Array { Type "Cell" @@ -5140,7 +5002,7 @@ Model { } } SlCovCC.ConfigComp { - $ObjectID 94 + $ObjectID 87 Version "1.18.1" DisabledProps [] Description "Simulink Coverage Configuration Component" @@ -5181,13 +5043,13 @@ Model { } PropName "Components" } - Name "Configuration5" + Name "Configuration4" ExtraOptions "" CurrentDlgPage "Solver" ConfigPrmDlgPosition [ 321, 71, 1211, 811 ] } Simulink.ConfigSet { - $ObjectID 95 + $ObjectID 88 Version "1.18.1" DisabledProps [] Description "" @@ -5195,7 +5057,7 @@ Model { Type "Handle" Dimension 9 Simulink.SolverCC { - $ObjectID 96 + $ObjectID 89 Version "1.18.1" DisabledProps [] Description "" @@ -5236,7 +5098,7 @@ Model { MinimalZcImpactIntegration off } Simulink.DataIOCC { - $ObjectID 97 + $ObjectID 90 Version "1.18.1" DisabledProps [] Description "" @@ -5277,7 +5139,7 @@ Model { LoggingIntervals "[-inf, inf]" } Simulink.OptimizationCC { - $ObjectID 98 + $ObjectID 91 Version "1.18.1" Array { Type "Cell" @@ -5345,7 +5207,7 @@ Model { LabelGuidedReuse off } Simulink.DebuggingCC { - $ObjectID 99 + $ObjectID 92 Version "1.18.1" Array { Type "Cell" @@ -5464,7 +5326,7 @@ Model { UnderSpecifiedDimensionMsg "none" } Simulink.HardwareCC { - $ObjectID 100 + $ObjectID 93 Version "1.18.1" DisabledProps [] Description "" @@ -5512,7 +5374,7 @@ Model { UseSimulinkCoderFeatures on } Simulink.ModelReferenceCC { - $ObjectID 101 + $ObjectID 94 Version "1.18.1" DisabledProps [] Description "" @@ -5531,7 +5393,7 @@ Model { SupportModelReferenceSimTargetCustomCode off } Simulink.SFSimCC { - $ObjectID 102 + $ObjectID 95 Version "1.18.1" DisabledProps [] Description "" @@ -5564,7 +5426,7 @@ Model { } Simulink.RTWCC { $BackupClass "Simulink.RTWCC" - $ObjectID 103 + $ObjectID 96 Version "1.18.1" Array { Type "Cell" @@ -5651,7 +5513,7 @@ Model { Type "Handle" Dimension 2 Simulink.CodeAppCC { - $ObjectID 104 + $ObjectID 97 Version "1.18.1" Array { Type "Cell" @@ -5739,7 +5601,7 @@ Model { } Simulink.GRTTargetCC { $BackupClass "Simulink.TargetCC" - $ObjectID 105 + $ObjectID 98 Version "1.18.1" Array { Type "Cell" @@ -5845,7 +5707,7 @@ Model { } } SlCovCC.ConfigComp { - $ObjectID 106 + $ObjectID 99 Version "1.18.1" DisabledProps [] Description "Simulink Coverage Configuration Component" @@ -5886,13 +5748,13 @@ Model { } PropName "Components" } - Name "Configuration6" + Name "Configuration5" ExtraOptions "" CurrentDlgPage "Solver" ConfigPrmDlgPosition [ 321, 71, 1211, 811 ] } Simulink.ConfigSet { - $ObjectID 107 + $ObjectID 100 Version "1.18.1" DisabledProps [] Description "" @@ -5900,7 +5762,7 @@ Model { Type "Handle" Dimension 9 Simulink.SolverCC { - $ObjectID 108 + $ObjectID 101 Version "1.18.1" DisabledProps [] Description "" @@ -5941,7 +5803,7 @@ Model { MinimalZcImpactIntegration off } Simulink.DataIOCC { - $ObjectID 109 + $ObjectID 102 Version "1.18.1" DisabledProps [] Description "" @@ -5982,7 +5844,7 @@ Model { LoggingIntervals "[-inf, inf]" } Simulink.OptimizationCC { - $ObjectID 110 + $ObjectID 103 Version "1.18.1" Array { Type "Cell" @@ -6050,7 +5912,7 @@ Model { LabelGuidedReuse off } Simulink.DebuggingCC { - $ObjectID 111 + $ObjectID 104 Version "1.18.1" Array { Type "Cell" @@ -6169,7 +6031,7 @@ Model { UnderSpecifiedDimensionMsg "none" } Simulink.HardwareCC { - $ObjectID 112 + $ObjectID 105 Version "1.18.1" DisabledProps [] Description "" @@ -6217,7 +6079,7 @@ Model { UseSimulinkCoderFeatures on } Simulink.ModelReferenceCC { - $ObjectID 113 + $ObjectID 106 Version "1.18.1" DisabledProps [] Description "" @@ -6236,7 +6098,7 @@ Model { SupportModelReferenceSimTargetCustomCode off } Simulink.SFSimCC { - $ObjectID 114 + $ObjectID 107 Version "1.18.1" DisabledProps [] Description "" @@ -6269,7 +6131,7 @@ Model { } Simulink.RTWCC { $BackupClass "Simulink.RTWCC" - $ObjectID 115 + $ObjectID 108 Version "1.18.1" Array { Type "Cell" @@ -6356,7 +6218,7 @@ Model { Type "Handle" Dimension 2 Simulink.CodeAppCC { - $ObjectID 116 + $ObjectID 109 Version "1.18.1" Array { Type "Cell" @@ -6444,7 +6306,7 @@ Model { } Simulink.GRTTargetCC { $BackupClass "Simulink.TargetCC" - $ObjectID 117 + $ObjectID 110 Version "1.18.1" Array { Type "Cell" @@ -6550,7 +6412,7 @@ Model { } } SlCovCC.ConfigComp { - $ObjectID 118 + $ObjectID 111 Version "1.18.1" DisabledProps [] Description "Simulink Coverage Configuration Component" @@ -6591,13 +6453,13 @@ Model { } PropName "Components" } - Name "Configuration7" + Name "Configuration6" ExtraOptions "" CurrentDlgPage "Solver" ConfigPrmDlgPosition [ 321, 71, 1211, 811 ] } Simulink.ConfigSet { - $ObjectID 119 + $ObjectID 112 Version "1.18.1" DisabledProps [] Description "" @@ -6605,7 +6467,7 @@ Model { Type "Handle" Dimension 9 Simulink.SolverCC { - $ObjectID 120 + $ObjectID 113 Version "1.18.1" DisabledProps [] Description "" @@ -6646,7 +6508,7 @@ Model { MinimalZcImpactIntegration off } Simulink.DataIOCC { - $ObjectID 121 + $ObjectID 114 Version "1.18.1" DisabledProps [] Description "" @@ -6687,7 +6549,7 @@ Model { LoggingIntervals "[-inf, inf]" } Simulink.OptimizationCC { - $ObjectID 122 + $ObjectID 115 Version "1.18.1" Array { Type "Cell" @@ -6755,7 +6617,7 @@ Model { LabelGuidedReuse off } Simulink.DebuggingCC { - $ObjectID 123 + $ObjectID 116 Version "1.18.1" Array { Type "Cell" @@ -6874,7 +6736,7 @@ Model { UnderSpecifiedDimensionMsg "none" } Simulink.HardwareCC { - $ObjectID 124 + $ObjectID 117 Version "1.18.1" DisabledProps [] Description "" @@ -6922,7 +6784,7 @@ Model { UseSimulinkCoderFeatures on } Simulink.ModelReferenceCC { - $ObjectID 125 + $ObjectID 118 Version "1.18.1" DisabledProps [] Description "" @@ -6941,7 +6803,7 @@ Model { SupportModelReferenceSimTargetCustomCode off } Simulink.SFSimCC { - $ObjectID 126 + $ObjectID 119 Version "1.18.1" DisabledProps [] Description "" @@ -6974,7 +6836,7 @@ Model { } Simulink.RTWCC { $BackupClass "Simulink.RTWCC" - $ObjectID 127 + $ObjectID 120 Version "1.18.1" Array { Type "Cell" @@ -7061,7 +6923,7 @@ Model { Type "Handle" Dimension 2 Simulink.CodeAppCC { - $ObjectID 128 + $ObjectID 121 Version "1.18.1" Array { Type "Cell" @@ -7149,7 +7011,7 @@ Model { } Simulink.GRTTargetCC { $BackupClass "Simulink.TargetCC" - $ObjectID 129 + $ObjectID 122 Version "1.18.1" Array { Type "Cell" @@ -7255,7 +7117,7 @@ Model { } } SlCovCC.ConfigComp { - $ObjectID 130 + $ObjectID 123 Version "1.18.1" DisabledProps [] Description "Simulink Coverage Configuration Component" @@ -7296,13 +7158,13 @@ Model { } PropName "Components" } - Name "Configuration8" + Name "Configuration7" ExtraOptions "" CurrentDlgPage "Solver" ConfigPrmDlgPosition [ 321, 71, 1211, 811 ] } Simulink.ConfigSet { - $ObjectID 131 + $ObjectID 124 Version "1.18.1" DisabledProps [] Description "" @@ -7310,7 +7172,7 @@ Model { Type "Handle" Dimension 9 Simulink.SolverCC { - $ObjectID 132 + $ObjectID 125 Version "1.18.1" DisabledProps [] Description "" @@ -7351,7 +7213,7 @@ Model { MinimalZcImpactIntegration off } Simulink.DataIOCC { - $ObjectID 133 + $ObjectID 126 Version "1.18.1" DisabledProps [] Description "" @@ -7392,7 +7254,7 @@ Model { LoggingIntervals "[-inf, inf]" } Simulink.OptimizationCC { - $ObjectID 134 + $ObjectID 127 Version "1.18.1" Array { Type "Cell" @@ -7460,7 +7322,7 @@ Model { LabelGuidedReuse off } Simulink.DebuggingCC { - $ObjectID 135 + $ObjectID 128 Version "1.18.1" Array { Type "Cell" @@ -7579,7 +7441,7 @@ Model { UnderSpecifiedDimensionMsg "none" } Simulink.HardwareCC { - $ObjectID 136 + $ObjectID 129 Version "1.18.1" DisabledProps [] Description "" @@ -7627,7 +7489,7 @@ Model { UseSimulinkCoderFeatures on } Simulink.ModelReferenceCC { - $ObjectID 137 + $ObjectID 130 Version "1.18.1" DisabledProps [] Description "" @@ -7646,7 +7508,7 @@ Model { SupportModelReferenceSimTargetCustomCode off } Simulink.SFSimCC { - $ObjectID 138 + $ObjectID 131 Version "1.18.1" DisabledProps [] Description "" @@ -7679,7 +7541,7 @@ Model { } Simulink.RTWCC { $BackupClass "Simulink.RTWCC" - $ObjectID 139 + $ObjectID 132 Version "1.18.1" Array { Type "Cell" @@ -7766,7 +7628,7 @@ Model { Type "Handle" Dimension 2 Simulink.CodeAppCC { - $ObjectID 140 + $ObjectID 133 Version "1.18.1" Array { Type "Cell" @@ -7854,7 +7716,7 @@ Model { } Simulink.GRTTargetCC { $BackupClass "Simulink.TargetCC" - $ObjectID 141 + $ObjectID 134 Version "1.18.1" Array { Type "Cell" @@ -7960,7 +7822,7 @@ Model { } } SlCovCC.ConfigComp { - $ObjectID 142 + $ObjectID 135 Version "1.18.1" DisabledProps [] Description "Simulink Coverage Configuration Component" @@ -8001,13 +7863,13 @@ Model { } PropName "Components" } - Name "Configuration9" + Name "Configuration8" ExtraOptions "" CurrentDlgPage "Solver" ConfigPrmDlgPosition [ 321, 71, 1211, 811 ] } Simulink.ConfigSet { - $ObjectID 143 + $ObjectID 136 Version "1.18.1" DisabledProps [] Description "" @@ -8015,7 +7877,7 @@ Model { Type "Handle" Dimension 9 Simulink.SolverCC { - $ObjectID 144 + $ObjectID 137 Version "1.18.1" DisabledProps [] Description "" @@ -8056,7 +7918,7 @@ Model { MinimalZcImpactIntegration off } Simulink.DataIOCC { - $ObjectID 145 + $ObjectID 138 Version "1.18.1" DisabledProps [] Description "" @@ -8097,7 +7959,7 @@ Model { LoggingIntervals "[-inf, inf]" } Simulink.OptimizationCC { - $ObjectID 146 + $ObjectID 139 Version "1.18.1" Array { Type "Cell" @@ -8165,7 +8027,7 @@ Model { LabelGuidedReuse off } Simulink.DebuggingCC { - $ObjectID 147 + $ObjectID 140 Version "1.18.1" Array { Type "Cell" @@ -8284,7 +8146,7 @@ Model { UnderSpecifiedDimensionMsg "none" } Simulink.HardwareCC { - $ObjectID 148 + $ObjectID 141 Version "1.18.1" DisabledProps [] Description "" @@ -8332,7 +8194,7 @@ Model { UseSimulinkCoderFeatures on } Simulink.ModelReferenceCC { - $ObjectID 149 + $ObjectID 142 Version "1.18.1" DisabledProps [] Description "" @@ -8351,7 +8213,7 @@ Model { SupportModelReferenceSimTargetCustomCode off } Simulink.SFSimCC { - $ObjectID 150 + $ObjectID 143 Version "1.18.1" DisabledProps [] Description "" @@ -8384,7 +8246,7 @@ Model { } Simulink.RTWCC { $BackupClass "Simulink.RTWCC" - $ObjectID 151 + $ObjectID 144 Version "1.18.1" Array { Type "Cell" @@ -8471,7 +8333,7 @@ Model { Type "Handle" Dimension 2 Simulink.CodeAppCC { - $ObjectID 152 + $ObjectID 145 Version "1.18.1" Array { Type "Cell" @@ -8559,7 +8421,7 @@ Model { } Simulink.GRTTargetCC { $BackupClass "Simulink.TargetCC" - $ObjectID 153 + $ObjectID 146 Version "1.18.1" Array { Type "Cell" @@ -8665,7 +8527,7 @@ Model { } } SlCovCC.ConfigComp { - $ObjectID 154 + $ObjectID 147 Version "1.18.1" DisabledProps [] Description "Simulink Coverage Configuration Component" @@ -8706,13 +8568,13 @@ Model { } PropName "Components" } - Name "Configuration10" + Name "Configuration9" ExtraOptions "" CurrentDlgPage "Solver" ConfigPrmDlgPosition [ 321, 71, 1211, 811 ] } Simulink.ConfigSet { - $ObjectID 155 + $ObjectID 148 Version "1.18.1" DisabledProps [] Description "" @@ -8720,7 +8582,7 @@ Model { Type "Handle" Dimension 9 Simulink.SolverCC { - $ObjectID 156 + $ObjectID 149 Version "1.18.1" DisabledProps [] Description "" @@ -8761,7 +8623,7 @@ Model { MinimalZcImpactIntegration off } Simulink.DataIOCC { - $ObjectID 157 + $ObjectID 150 Version "1.18.1" DisabledProps [] Description "" @@ -8802,7 +8664,7 @@ Model { LoggingIntervals "[-inf, inf]" } Simulink.OptimizationCC { - $ObjectID 158 + $ObjectID 151 Version "1.18.1" Array { Type "Cell" @@ -8870,7 +8732,7 @@ Model { LabelGuidedReuse off } Simulink.DebuggingCC { - $ObjectID 159 + $ObjectID 152 Version "1.18.1" Array { Type "Cell" @@ -8989,7 +8851,7 @@ Model { UnderSpecifiedDimensionMsg "none" } Simulink.HardwareCC { - $ObjectID 160 + $ObjectID 153 Version "1.18.1" DisabledProps [] Description "" @@ -9037,7 +8899,7 @@ Model { UseSimulinkCoderFeatures on } Simulink.ModelReferenceCC { - $ObjectID 161 + $ObjectID 154 Version "1.18.1" DisabledProps [] Description "" @@ -9056,7 +8918,7 @@ Model { SupportModelReferenceSimTargetCustomCode off } Simulink.SFSimCC { - $ObjectID 162 + $ObjectID 155 Version "1.18.1" DisabledProps [] Description "" @@ -9089,7 +8951,7 @@ Model { } Simulink.RTWCC { $BackupClass "Simulink.RTWCC" - $ObjectID 163 + $ObjectID 156 Version "1.18.1" Array { Type "Cell" @@ -9176,7 +9038,7 @@ Model { Type "Handle" Dimension 2 Simulink.CodeAppCC { - $ObjectID 164 + $ObjectID 157 Version "1.18.1" Array { Type "Cell" @@ -9264,7 +9126,7 @@ Model { } Simulink.GRTTargetCC { $BackupClass "Simulink.TargetCC" - $ObjectID 165 + $ObjectID 158 Version "1.18.1" Array { Type "Cell" @@ -9370,7 +9232,7 @@ Model { } } SlCovCC.ConfigComp { - $ObjectID 166 + $ObjectID 159 Version "1.18.1" DisabledProps [] Description "Simulink Coverage Configuration Component" @@ -9411,13 +9273,13 @@ Model { } PropName "Components" } - Name "Configuration11" + Name "Configuration10" ExtraOptions "" CurrentDlgPage "Solver" ConfigPrmDlgPosition [ 321, 71, 1211, 811 ] } Simulink.ConfigSet { - $ObjectID 167 + $ObjectID 160 Version "1.18.1" DisabledProps [] Description "" @@ -9425,7 +9287,7 @@ Model { Type "Handle" Dimension 9 Simulink.SolverCC { - $ObjectID 168 + $ObjectID 161 Version "1.18.1" DisabledProps [] Description "" @@ -9466,7 +9328,7 @@ Model { MinimalZcImpactIntegration off } Simulink.DataIOCC { - $ObjectID 169 + $ObjectID 162 Version "1.18.1" DisabledProps [] Description "" @@ -9507,7 +9369,7 @@ Model { LoggingIntervals "[-inf, inf]" } Simulink.OptimizationCC { - $ObjectID 170 + $ObjectID 163 Version "1.18.1" Array { Type "Cell" @@ -9575,7 +9437,7 @@ Model { LabelGuidedReuse off } Simulink.DebuggingCC { - $ObjectID 171 + $ObjectID 164 Version "1.18.1" Array { Type "Cell" @@ -9694,7 +9556,7 @@ Model { UnderSpecifiedDimensionMsg "none" } Simulink.HardwareCC { - $ObjectID 172 + $ObjectID 165 Version "1.18.1" DisabledProps [] Description "" @@ -9742,7 +9604,7 @@ Model { UseSimulinkCoderFeatures on } Simulink.ModelReferenceCC { - $ObjectID 173 + $ObjectID 166 Version "1.18.1" DisabledProps [] Description "" @@ -9761,7 +9623,7 @@ Model { SupportModelReferenceSimTargetCustomCode off } Simulink.SFSimCC { - $ObjectID 174 + $ObjectID 167 Version "1.18.1" DisabledProps [] Description "" @@ -9794,7 +9656,7 @@ Model { } Simulink.RTWCC { $BackupClass "Simulink.RTWCC" - $ObjectID 175 + $ObjectID 168 Version "1.18.1" Array { Type "Cell" @@ -9881,7 +9743,7 @@ Model { Type "Handle" Dimension 2 Simulink.CodeAppCC { - $ObjectID 176 + $ObjectID 169 Version "1.18.1" Array { Type "Cell" @@ -9969,7 +9831,7 @@ Model { } Simulink.GRTTargetCC { $BackupClass "Simulink.TargetCC" - $ObjectID 177 + $ObjectID 170 Version "1.18.1" Array { Type "Cell" @@ -10075,7 +9937,7 @@ Model { } } SlCovCC.ConfigComp { - $ObjectID 178 + $ObjectID 171 Version "1.18.1" DisabledProps [] Description "Simulink Coverage Configuration Component" @@ -10116,13 +9978,13 @@ Model { } PropName "Components" } - Name "Configuration12" + Name "Configuration11" ExtraOptions "" CurrentDlgPage "Solver" ConfigPrmDlgPosition [ 321, 71, 1211, 811 ] } Simulink.ConfigSet { - $ObjectID 179 + $ObjectID 172 Version "1.18.1" DisabledProps [] Description "" @@ -10130,7 +9992,7 @@ Model { Type "Handle" Dimension 9 Simulink.SolverCC { - $ObjectID 180 + $ObjectID 173 Version "1.18.1" DisabledProps [] Description "" @@ -10171,7 +10033,7 @@ Model { MinimalZcImpactIntegration off } Simulink.DataIOCC { - $ObjectID 181 + $ObjectID 174 Version "1.18.1" DisabledProps [] Description "" @@ -10212,7 +10074,7 @@ Model { LoggingIntervals "[-inf, inf]" } Simulink.OptimizationCC { - $ObjectID 182 + $ObjectID 175 Version "1.18.1" Array { Type "Cell" @@ -10280,7 +10142,7 @@ Model { LabelGuidedReuse off } Simulink.DebuggingCC { - $ObjectID 183 + $ObjectID 176 Version "1.18.1" Array { Type "Cell" @@ -10399,7 +10261,7 @@ Model { UnderSpecifiedDimensionMsg "none" } Simulink.HardwareCC { - $ObjectID 184 + $ObjectID 177 Version "1.18.1" DisabledProps [] Description "" @@ -10447,7 +10309,7 @@ Model { UseSimulinkCoderFeatures on } Simulink.ModelReferenceCC { - $ObjectID 185 + $ObjectID 178 Version "1.18.1" DisabledProps [] Description "" @@ -10466,7 +10328,7 @@ Model { SupportModelReferenceSimTargetCustomCode off } Simulink.SFSimCC { - $ObjectID 186 + $ObjectID 179 Version "1.18.1" DisabledProps [] Description "" @@ -10499,7 +10361,7 @@ Model { } Simulink.RTWCC { $BackupClass "Simulink.RTWCC" - $ObjectID 187 + $ObjectID 180 Version "1.18.1" Array { Type "Cell" @@ -10586,7 +10448,7 @@ Model { Type "Handle" Dimension 2 Simulink.CodeAppCC { - $ObjectID 188 + $ObjectID 181 Version "1.18.1" Array { Type "Cell" @@ -10674,7 +10536,7 @@ Model { } Simulink.GRTTargetCC { $BackupClass "Simulink.TargetCC" - $ObjectID 189 + $ObjectID 182 Version "1.18.1" Array { Type "Cell" @@ -10780,7 +10642,7 @@ Model { } } SlCovCC.ConfigComp { - $ObjectID 190 + $ObjectID 183 Version "1.18.1" DisabledProps [] Description "Simulink Coverage Configuration Component" @@ -10821,13 +10683,13 @@ Model { } PropName "Components" } - Name "Configuration13" + Name "Configuration12" ExtraOptions "" CurrentDlgPage "Solver" ConfigPrmDlgPosition [ 321, 71, 1211, 811 ] } Simulink.ConfigSet { - $ObjectID 191 + $ObjectID 184 Version "1.18.1" DisabledProps [] Description "" @@ -10835,7 +10697,7 @@ Model { Type "Handle" Dimension 9 Simulink.SolverCC { - $ObjectID 192 + $ObjectID 185 Version "1.18.1" DisabledProps [] Description "" @@ -10876,7 +10738,7 @@ Model { MinimalZcImpactIntegration off } Simulink.DataIOCC { - $ObjectID 193 + $ObjectID 186 Version "1.18.1" DisabledProps [] Description "" @@ -10917,7 +10779,7 @@ Model { LoggingIntervals "[-inf, inf]" } Simulink.OptimizationCC { - $ObjectID 194 + $ObjectID 187 Version "1.18.1" Array { Type "Cell" @@ -10985,7 +10847,7 @@ Model { LabelGuidedReuse off } Simulink.DebuggingCC { - $ObjectID 195 + $ObjectID 188 Version "1.18.1" Array { Type "Cell" @@ -11104,7 +10966,7 @@ Model { UnderSpecifiedDimensionMsg "none" } Simulink.HardwareCC { - $ObjectID 196 + $ObjectID 189 Version "1.18.1" DisabledProps [] Description "" @@ -11152,7 +11014,7 @@ Model { UseSimulinkCoderFeatures on } Simulink.ModelReferenceCC { - $ObjectID 197 + $ObjectID 190 Version "1.18.1" DisabledProps [] Description "" @@ -11171,7 +11033,7 @@ Model { SupportModelReferenceSimTargetCustomCode off } Simulink.SFSimCC { - $ObjectID 198 + $ObjectID 191 Version "1.18.1" DisabledProps [] Description "" @@ -11204,7 +11066,7 @@ Model { } Simulink.RTWCC { $BackupClass "Simulink.RTWCC" - $ObjectID 199 + $ObjectID 192 Version "1.18.1" Array { Type "Cell" @@ -11291,7 +11153,7 @@ Model { Type "Handle" Dimension 2 Simulink.CodeAppCC { - $ObjectID 200 + $ObjectID 193 Version "1.18.1" Array { Type "Cell" @@ -11379,7 +11241,7 @@ Model { } Simulink.GRTTargetCC { $BackupClass "Simulink.TargetCC" - $ObjectID 201 + $ObjectID 194 Version "1.18.1" Array { Type "Cell" @@ -11485,7 +11347,7 @@ Model { } } SlCovCC.ConfigComp { - $ObjectID 202 + $ObjectID 195 Version "1.18.1" DisabledProps [] Description "Simulink Coverage Configuration Component" @@ -11526,13 +11388,13 @@ Model { } PropName "Components" } - Name "Configuration14" + Name "Configuration13" ExtraOptions "" CurrentDlgPage "Solver" ConfigPrmDlgPosition [ 321, 71, 1211, 811 ] } Simulink.ConfigSet { - $ObjectID 203 + $ObjectID 196 Version "1.18.1" DisabledProps [] Description "" @@ -11540,7 +11402,7 @@ Model { Type "Handle" Dimension 9 Simulink.SolverCC { - $ObjectID 204 + $ObjectID 197 Version "1.18.1" DisabledProps [] Description "" @@ -11562,8 +11424,8 @@ Model { RelTol "1e-3" EnableMultiTasking on ConcurrentTasks off - Solver "ode4" - SolverName "ode4" + Solver "FixedStepDiscrete" + SolverName "FixedStepDiscrete" SolverJacobianMethodControl "auto" ShapePreserveControl "DisableAll" ZeroCrossControl "UseLocalSettings" @@ -11581,7 +11443,7 @@ Model { MinimalZcImpactIntegration off } Simulink.DataIOCC { - $ObjectID 205 + $ObjectID 198 Version "1.18.1" DisabledProps [] Description "" @@ -11597,7 +11459,7 @@ Model { SaveCompleteFinalSimState off SaveFormat "Dataset" SignalLoggingSaveFormat "Dataset" - SaveOutput on + SaveOutput off SaveState off SignalLogging on DSMLogging on @@ -11622,7 +11484,7 @@ Model { LoggingIntervals "[-inf, inf]" } Simulink.OptimizationCC { - $ObjectID 206 + $ObjectID 199 Version "1.18.1" Array { Type "Cell" @@ -11690,7 +11552,7 @@ Model { LabelGuidedReuse off } Simulink.DebuggingCC { - $ObjectID 207 + $ObjectID 200 Version "1.18.1" Array { Type "Cell" @@ -11809,7 +11671,7 @@ Model { UnderSpecifiedDimensionMsg "none" } Simulink.HardwareCC { - $ObjectID 208 + $ObjectID 201 Version "1.18.1" DisabledProps [] Description "" @@ -11857,7 +11719,7 @@ Model { UseSimulinkCoderFeatures on } Simulink.ModelReferenceCC { - $ObjectID 209 + $ObjectID 202 Version "1.18.1" DisabledProps [] Description "" @@ -11876,7 +11738,7 @@ Model { SupportModelReferenceSimTargetCustomCode off } Simulink.SFSimCC { - $ObjectID 210 + $ObjectID 203 Version "1.18.1" DisabledProps [] Description "" @@ -11909,7 +11771,7 @@ Model { } Simulink.RTWCC { $BackupClass "Simulink.RTWCC" - $ObjectID 211 + $ObjectID 204 Version "1.18.1" Array { Type "Cell" @@ -11996,7 +11858,7 @@ Model { Type "Handle" Dimension 2 Simulink.CodeAppCC { - $ObjectID 212 + $ObjectID 205 Version "1.18.1" Array { Type "Cell" @@ -12084,7 +11946,7 @@ Model { } Simulink.GRTTargetCC { $BackupClass "Simulink.TargetCC" - $ObjectID 213 + $ObjectID 206 Version "1.18.1" Array { Type "Cell" @@ -12190,7 +12052,7 @@ Model { } } SlCovCC.ConfigComp { - $ObjectID 214 + $ObjectID 207 Version "1.18.1" DisabledProps [] Description "Simulink Coverage Configuration Component" @@ -12231,13 +12093,13 @@ Model { } PropName "Components" } - Name "Configuration15" + Name "Configuration14" ExtraOptions "" CurrentDlgPage "Solver" - ConfigPrmDlgPosition [ 374, 90, 1264, 830 ] + ConfigPrmDlgPosition [ 321, 71, 1211, 811 ] } Simulink.ConfigSet { - $ObjectID 215 + $ObjectID 208 Version "1.18.1" DisabledProps [] Description "" @@ -12245,7 +12107,7 @@ Model { Type "Handle" Dimension 9 Simulink.SolverCC { - $ObjectID 216 + $ObjectID 209 Version "1.18.1" DisabledProps [] Description "" @@ -12286,7 +12148,7 @@ Model { MinimalZcImpactIntegration off } Simulink.DataIOCC { - $ObjectID 217 + $ObjectID 210 Version "1.18.1" DisabledProps [] Description "" @@ -12327,7 +12189,7 @@ Model { LoggingIntervals "[-inf, inf]" } Simulink.OptimizationCC { - $ObjectID 218 + $ObjectID 211 Version "1.18.1" Array { Type "Cell" @@ -12395,7 +12257,7 @@ Model { LabelGuidedReuse off } Simulink.DebuggingCC { - $ObjectID 219 + $ObjectID 212 Version "1.18.1" Array { Type "Cell" @@ -12514,7 +12376,7 @@ Model { UnderSpecifiedDimensionMsg "none" } Simulink.HardwareCC { - $ObjectID 220 + $ObjectID 213 Version "1.18.1" DisabledProps [] Description "" @@ -12562,7 +12424,7 @@ Model { UseSimulinkCoderFeatures on } Simulink.ModelReferenceCC { - $ObjectID 221 + $ObjectID 214 Version "1.18.1" DisabledProps [] Description "" @@ -12581,7 +12443,7 @@ Model { SupportModelReferenceSimTargetCustomCode off } Simulink.SFSimCC { - $ObjectID 222 + $ObjectID 215 Version "1.18.1" DisabledProps [] Description "" @@ -12614,7 +12476,7 @@ Model { } Simulink.RTWCC { $BackupClass "Simulink.RTWCC" - $ObjectID 223 + $ObjectID 216 Version "1.18.1" Array { Type "Cell" @@ -12701,7 +12563,7 @@ Model { Type "Handle" Dimension 2 Simulink.CodeAppCC { - $ObjectID 224 + $ObjectID 217 Version "1.18.1" Array { Type "Cell" @@ -12789,7 +12651,7 @@ Model { } Simulink.GRTTargetCC { $BackupClass "Simulink.TargetCC" - $ObjectID 225 + $ObjectID 218 Version "1.18.1" Array { Type "Cell" @@ -12895,7 +12757,7 @@ Model { } } SlCovCC.ConfigComp { - $ObjectID 226 + $ObjectID 219 Version "1.18.1" DisabledProps [] Description "Simulink Coverage Configuration Component" @@ -12936,13 +12798,13 @@ Model { } PropName "Components" } - Name "Configuration16" + Name "Configuration15" ExtraOptions "" CurrentDlgPage "Solver" ConfigPrmDlgPosition [ 374, 90, 1264, 830 ] } Simulink.ConfigSet { - $ObjectID 227 + $ObjectID 220 Version "1.18.1" DisabledProps [] Description "" @@ -12950,7 +12812,7 @@ Model { Type "Handle" Dimension 9 Simulink.SolverCC { - $ObjectID 228 + $ObjectID 221 Version "1.18.1" DisabledProps [] Description "" @@ -12958,7 +12820,7 @@ Model { StopTime "TMax" AbsTol "auto" AutoScaleAbsTol on - FixedStep "simu.dt" + FixedStep "dt" InitialStep "auto" MaxOrder 5 ZcThreshold "auto" @@ -12991,7 +12853,7 @@ Model { MinimalZcImpactIntegration off } Simulink.DataIOCC { - $ObjectID 229 + $ObjectID 222 Version "1.18.1" DisabledProps [] Description "" @@ -13020,7 +12882,7 @@ Model { StateSaveName "xout" TimeSaveName "tout" OutputSaveName "yout" - SignalLoggingName "sigsOut" + SignalLoggingName "logsout" DSMLoggingName "dsmout" OutputOption "RefineOutputTimes" OutputTimes "[]" @@ -13032,7 +12894,7 @@ Model { LoggingIntervals "[-inf, inf]" } Simulink.OptimizationCC { - $ObjectID 230 + $ObjectID 223 Version "1.18.1" Array { Type "Cell" @@ -13100,7 +12962,7 @@ Model { LabelGuidedReuse off } Simulink.DebuggingCC { - $ObjectID 231 + $ObjectID 224 Version "1.18.1" Array { Type "Cell" @@ -13219,7 +13081,7 @@ Model { UnderSpecifiedDimensionMsg "none" } Simulink.HardwareCC { - $ObjectID 232 + $ObjectID 225 Version "1.18.1" DisabledProps [] Description "" @@ -13267,7 +13129,7 @@ Model { UseSimulinkCoderFeatures on } Simulink.ModelReferenceCC { - $ObjectID 233 + $ObjectID 226 Version "1.18.1" DisabledProps [] Description "" @@ -13286,7 +13148,7 @@ Model { SupportModelReferenceSimTargetCustomCode off } Simulink.SFSimCC { - $ObjectID 234 + $ObjectID 227 Version "1.18.1" DisabledProps [] Description "" @@ -13319,7 +13181,7 @@ Model { } Simulink.RTWCC { $BackupClass "Simulink.RTWCC" - $ObjectID 235 + $ObjectID 228 Version "1.18.1" Array { Type "Cell" @@ -13406,7 +13268,7 @@ Model { Type "Handle" Dimension 2 Simulink.CodeAppCC { - $ObjectID 236 + $ObjectID 229 Version "1.18.1" Array { Type "Cell" @@ -13494,7 +13356,7 @@ Model { } Simulink.GRTTargetCC { $BackupClass "Simulink.TargetCC" - $ObjectID 237 + $ObjectID 230 Version "1.18.1" Array { Type "Cell" @@ -13600,7 +13462,7 @@ Model { } } SlCovCC.ConfigComp { - $ObjectID 238 + $ObjectID 231 Version "1.18.1" DisabledProps [] Description "Simulink Coverage Configuration Component" @@ -13641,208 +13503,949 @@ Model { } PropName "Components" } - Name "Configuration17" + Name "Configuration16" ExtraOptions "" - CurrentDlgPage "Data Import//Export" - ConfigPrmDlgPosition [ 374, 90, 1274, 830 ] - } - PropName "ConfigurationSets" - } - Simulink.ConfigSet { - $PropName "ActiveConfigurationSet" - $ObjectID 227 - } - Object { - $PropName "DataTransfer" - $ObjectID 239 - $ClassName "Simulink.GlobalDataTransfer" - DefaultTransitionBetweenSyncTasks "Ensure deterministic transfer (maximum delay)" - DefaultTransitionBetweenAsyncTasks "Ensure data integrity only" - DefaultTransitionBetweenContTasks "Ensure deterministic transfer (minimum delay)" - DefaultExtrapolationMethodBetweenContTasks "None" - AutoInsertRateTranBlk [0] - } - ExplicitPartitioning off - BlockDefaults { - ForegroundColor "black" - BackgroundColor "white" - DropShadow off - NamePlacement "normal" - FontName "Helvetica" - FontSize 10 - FontWeight "normal" - FontAngle "normal" - ShowName on - HideAutomaticName on - BlockRotation 0 - BlockMirror off - } - AnnotationDefaults { - HorizontalAlignment "center" - VerticalAlignment "middle" - ForegroundColor "black" - BackgroundColor "white" - DropShadow off - FontName "Helvetica" - FontSize 10 - FontWeight "normal" - FontAngle "normal" - MarkupType "model" - UseDisplayTextAsClickCallback off - AnnotationType "note_annotation" - FixedHeight off - FixedWidth off - Interpreter "off" - } - LineDefaults { - FontName "Helvetica" - FontSize 9 - FontWeight "normal" - FontAngle "normal" - } - MaskDefaults { - SelfModifiable "off" - IconFrame "on" - IconOpaque "opaque" - RunInitForIconRedraw "analyze" - IconRotate "none" - PortRotate "default" - IconUnits "autoscale" - } - MaskParameterDefaults { - Evaluate "on" - Tunable "on" - NeverSave "off" - Internal "off" - ReadOnly "off" - Enabled "on" - Visible "on" - ToolTip "on" - } - BlockParameterDefaults { - Block { - BlockType Clock - DisplayTime off - Decimation "10" - } - Block { - BlockType Constant - Value "1" - VectorParams1D on - SamplingMode "Sample based" - OutMin "[]" - OutMax "[]" - OutDataTypeStr "Inherit: Inherit from 'Constant value'" - LockScale off - SampleTime "inf" - FramePeriod "inf" - PreserveConstantTs off - } - Block { - BlockType Delay - DelayLengthSource "Dialog" - DelayLength "2" - DelayLengthUpperLimit "100" - InitialConditionSource "Dialog" - InitialCondition "0.0" - ExternalReset "None" - ShowEnablePort off - PreventDirectFeedthrough off - DiagnosticForDelayLength "None" - RemoveDelayLengthCheckInGeneratedCode off - InputProcessing "Elements as channels (sample based)" - UseCircularBuffer off - SampleTime "-1" - StateMustResolveToSignalObject off - CodeGenStateStorageClass "Auto" - } - Block { - BlockType Demux - Outputs "4" - DisplayOption "none" - BusSelectionMode off - } - Block { - BlockType DiscreteFilter - NumeratorSource "Dialog" - Numerator "[1]" - DenominatorSource "Dialog" - Denominator "[1 0.5]" - InitialStatesSource "Dialog" - InitialStates "0" - InputProcessing "Elements as channels (sample based)" - ExternalReset "None" - InitialDenominatorStates "0" - FilterStructure "Direct form II" - SampleTime "-1" - a0EqualsOne off - NumCoefMin "[]" - NumCoefMax "[]" - DenCoefMin "[]" - DenCoefMax "[]" - OutMin "[]" - OutMax "[]" - StateDataTypeStr "Inherit: Same as input" - MultiplicandDataTypeStr "Inherit: Same as input" - NumCoefDataTypeStr "Inherit: Inherit via internal rule" - DenCoefDataTypeStr "Inherit: Inherit via internal rule" - NumProductDataTypeStr "Inherit: Inherit via internal rule" - DenProductDataTypeStr "Inherit: Inherit via internal rule" - NumAccumDataTypeStr "Inherit: Inherit via internal rule" - DenAccumDataTypeStr "Inherit: Inherit via internal rule" - OutDataTypeStr "Inherit: Inherit via internal rule" - LockScale off - RndMeth "Floor" - SaturateOnIntegerOverflow off - StateMustResolveToSignalObject off - RTWStateStorageClass "Auto" - } - Block { - BlockType Fcn - Expr "sin(u[1])" - SampleTime "-1" - } - Block { - BlockType Gain - Gain "1" - Multiplication "Element-wise(K.*u)" - ParamMin "[]" - ParamMax "[]" - ParamDataTypeStr "Inherit: Same as input" - OutMin "[]" - OutMax "[]" - OutDataTypeStr "Inherit: Same as input" - LockScale off - RndMeth "Floor" - SaturateOnIntegerOverflow on - SampleTime "-1" - } - Block { - BlockType Inport - Port "1" - OutputFunctionCall off - OutMin "[]" - OutMax "[]" - OutDataTypeStr "Inherit: auto" - LockScale off - BusOutputAsStruct off - Unit "inherit" - PortDimensions "-1" - VarSizeSig "Inherit" - SampleTime "-1" - SignalType "auto" - SamplingMode "auto" - LatchByDelayingOutsideSignal off - LatchInputForFeedbackSignals off - Interpolate on + CurrentDlgPage "Solver" + ConfigPrmDlgPosition [ 374, 90, 1264, 830 ] } - Block { - BlockType Lookup_n-D - NumberOfTableDimensions "2" - DataSpecification "Table and breakpoints" - BreakpointsSpecification "Explicit values" - BreakpointsForDimension1 "[10,22,31]" - BreakpointsForDimension2 "[10,22,31]" + Simulink.ConfigSet { + $ObjectID 232 + Version "1.18.1" + DisabledProps [] + Description "" + Array { + Type "Handle" + Dimension 9 + Simulink.SolverCC { + $ObjectID 233 + Version "1.18.1" + DisabledProps [] + Description "" + StartTime "0.0" + StopTime "TMax" + AbsTol "auto" + AutoScaleAbsTol on + FixedStep "simu.dt" + InitialStep "auto" + MaxOrder 5 + ZcThreshold "auto" + ConsecutiveZCsStepRelTol "10*128*eps" + MaxConsecutiveZCs "1000" + ExtrapolationOrder 4 + NumberNewtonIterations 1 + MaxStep "auto" + MinStep "auto" + MaxConsecutiveMinStep "1" + RelTol "1e-3" + EnableMultiTasking on + ConcurrentTasks off + Solver "ode4" + SolverName "ode4" + SolverJacobianMethodControl "auto" + ShapePreserveControl "DisableAll" + ZeroCrossControl "UseLocalSettings" + ZeroCrossAlgorithm "Nonadaptive" + AlgebraicLoopSolver "TrustRegion" + SolverInfoToggleStatus on + IsAutoAppliedInSIP off + SolverResetMethod "Fast" + PositivePriorityOrder off + AutoInsertRateTranBlk off + SampleTimeConstraint "Unconstrained" + InsertRTBMode "Whenever possible" + SampleTimeProperty [] + DecoupledContinuousIntegration off + MinimalZcImpactIntegration off + } + Simulink.DataIOCC { + $ObjectID 234 + Version "1.18.1" + DisabledProps [] + Description "" + Decimation "1" + ExternalInput "[t, u]" + FinalStateName "xFinal" + InitialState "xInitial" + LimitDataPoints off + MaxDataPoints "1000" + LoadExternalInput off + LoadInitialState off + SaveFinalState off + SaveCompleteFinalSimState off + SaveFormat "Dataset" + SignalLoggingSaveFormat "Dataset" + SaveOutput on + SaveState off + SignalLogging on + DSMLogging on + InspectSignalLogs off + VisualizeSimOutput on + StreamToWorkspace off + StreamVariableName "streamout" + SaveTime off + ReturnWorkspaceOutputs off + StateSaveName "xout" + TimeSaveName "tout" + OutputSaveName "yout" + SignalLoggingName "sigsOut" + DSMLoggingName "dsmout" + OutputOption "RefineOutputTimes" + OutputTimes "[]" + ReturnWorkspaceOutputsName "out" + Refine "1" + LoggingToFile off + DatasetSignalFormat "timeseries" + LoggingFileName "out.mat" + LoggingIntervals "[-inf, inf]" + } + Simulink.OptimizationCC { + $ObjectID 235 + Version "1.18.1" + Array { + Type "Cell" + Dimension 9 + Cell "BooleansAsBitfields" + Cell "PassReuseOutputArgsAs" + Cell "PassReuseOutputArgsThreshold" + Cell "ZeroExternalMemoryAtStartup" + Cell "ZeroInternalMemoryAtStartup" + Cell "OptimizeModelRefInitCode" + Cell "NoFixptDivByZeroProtection" + Cell "UseSpecifiedMinMax" + Cell "EfficientTunableParamExpr" + PropName "DisabledProps" + } + Description "" + BlockReduction on + BooleanDataType on + ConditionallyExecuteInputs on + DefaultParameterBehavior "Tunable" + UseDivisionForNetSlopeComputation "off" + UseFloatMulNetSlope off + DefaultUnderspecifiedDataType "double" + UseSpecifiedMinMax off + InlineInvariantSignals off + OptimizeBlockIOStorage on + BufferReuse on + EnhancedBackFolding off + CachingGlobalReferences off + GlobalBufferReuse on + StrengthReduction off + AdvancedOptControl "" + ExpressionFolding on + BooleansAsBitfields off + BitfieldContainerType "uint_T" + EnableMemcpy on + MemcpyThreshold 64 + PassReuseOutputArgsAs "Structure reference" + PassReuseOutputArgsThreshold 12 + ExpressionDepthLimit 128 + LocalBlockOutputs on + RollThreshold 5 + StateBitsets off + DataBitsets off + ActiveStateOutputEnumStorageType "Native Integer" + ZeroExternalMemoryAtStartup on + ZeroInternalMemoryAtStartup on + InitFltsAndDblsToZero off + NoFixptDivByZeroProtection off + EfficientFloat2IntCast off + EfficientMapNaN2IntZero on + LifeSpan "auto" + MaxStackSize "Inherit from target" + BufferReusableBoundary on + SimCompilerOptimization "off" + AccelVerboseBuild off + OptimizeBlockOrder "off" + OptimizeDataStoreBuffers on + BusAssignmentInplaceUpdate on + DifferentSizesBufferReuse off + OptimizationLevel "level2" + OptimizationPriority "Balanced" + OptimizationCustomize on + UseRowMajorAlgorithm off + LabelGuidedReuse off + } + Simulink.DebuggingCC { + $ObjectID 236 + Version "1.18.1" + Array { + Type "Cell" + Dimension 1 + Cell "UseOnlyExistingSharedCode" + PropName "DisabledProps" + } + Description "" + RTPrefix "error" + ConsistencyChecking "none" + ArrayBoundsChecking "none" + SignalInfNanChecking "none" + StringTruncationChecking "error" + SignalRangeChecking "none" + ReadBeforeWriteMsg "UseLocalSettings" + WriteAfterWriteMsg "UseLocalSettings" + WriteAfterReadMsg "UseLocalSettings" + AlgebraicLoopMsg "warning" + ArtificialAlgebraicLoopMsg "warning" + SaveWithDisabledLinksMsg "warning" + SaveWithParameterizedLinksMsg "warning" + CheckSSInitialOutputMsg on + UnderspecifiedInitializationDetection "Simplified" + MergeDetectMultiDrivingBlocksExec "error" + CheckExecutionContextPreStartOutputMsg off + CheckExecutionContextRuntimeOutputMsg off + SignalResolutionControl "UseLocalSettings" + BlockPriorityViolationMsg "warning" + MinStepSizeMsg "warning" + TimeAdjustmentMsg "none" + MaxConsecutiveZCsMsg "error" + MaskedZcDiagnostic "warning" + IgnoredZcDiagnostic "warning" + SolverPrmCheckMsg "none" + InheritedTsInSrcMsg "warning" + MultiTaskDSMMsg "error" + MultiTaskCondExecSysMsg "error" + MultiTaskRateTransMsg "error" + SingleTaskRateTransMsg "none" + TasksWithSamePriorityMsg "warning" + ExportedTasksRateTransMsg "none" + SigSpecEnsureSampleTimeMsg "warning" + CheckMatrixSingularityMsg "none" + IntegerOverflowMsg "warning" + Int32ToFloatConvMsg "warning" + ParameterDowncastMsg "error" + ParameterOverflowMsg "error" + ParameterUnderflowMsg "none" + ParameterPrecisionLossMsg "warning" + ParameterTunabilityLossMsg "warning" + FixptConstUnderflowMsg "none" + FixptConstOverflowMsg "none" + FixptConstPrecisionLossMsg "none" + UnderSpecifiedDataTypeMsg "none" + UnnecessaryDatatypeConvMsg "none" + VectorMatrixConversionMsg "none" + InvalidFcnCallConnMsg "error" + FcnCallInpInsideContextMsg "error" + SignalLabelMismatchMsg "none" + UnconnectedInputMsg "warning" + UnconnectedOutputMsg "warning" + UnconnectedLineMsg "warning" + UseOnlyExistingSharedCode "error" + SFcnCompatibilityMsg "none" + FrameProcessingCompatibilityMsg "error" + UniqueDataStoreMsg "none" + BusObjectLabelMismatch "warning" + RootOutportRequireBusObject "warning" + AssertControl "UseLocalSettings" + AllowSymbolicDim on + RowMajorDimensionSupport off + ModelReferenceIOMsg "none" + ModelReferenceMultiInstanceNormalModeStructChecksumCheck "error" + ModelReferenceVersionMismatchMessage "none" + ModelReferenceIOMismatchMessage "none" + UnknownTsInhSupMsg "warning" + ModelReferenceDataLoggingMessage "warning" + ModelReferenceSymbolNameMessage "warning" + ModelReferenceExtraNoncontSigs "error" + StateNameClashWarn "none" + SimStateInterfaceChecksumMismatchMsg "warning" + SimStateOlderReleaseMsg "error" + ChecksumConsistencyForSSReuse "none" + LibraryContextMissingDiagnostic "warning" + MatchCodeGenerationContextForUpdateDiagram "none" + InitInArrayFormatMsg "warning" + StrictBusMsg "ErrorLevel1" + BusNameAdapt "WarnAndRepair" + NonBusSignalsTreatedAsBus "none" + SymbolicDimMinMaxWarning "warning" + LossOfSymbolicDimsSimulationWarning "warning" + LossOfSymbolicDimsCodeGenerationWarning "error" + SymbolicDimsDataTypeCodeGenerationDiagnostic "error" + BlockIODiagnostic "none" + SFUnusedDataAndEventsDiag "warning" + SFUnexpectedBacktrackingDiag "error" + SFInvalidInputDataAccessInChartInitDiag "warning" + SFNoUnconditionalDefaultTransitionDiag "error" + SFTransitionOutsideNaturalParentDiag "warning" + SFUnreachableExecutionPathDiag "warning" + SFUndirectedBroadcastEventsDiag "warning" + SFTransitionActionBeforeConditionDiag "warning" + SFOutputUsedAsStateInMooreChartDiag "error" + SFTemporalDelaySmallerThanSampleTimeDiag "warning" + SFSelfTransitionDiag "warning" + SFExecutionAtInitializationDiag "warning" + SFMachineParentedDataDiag "warning" + IntegerSaturationMsg "warning" + AllowedUnitSystems "all" + UnitsInconsistencyMsg "warning" + AllowAutomaticUnitConversions on + RCSCRenamedMsg "warning" + RCSCObservableMsg "warning" + ForceCombineOutputUpdateInSim off + UnitDatabase "" + UnderSpecifiedDimensionMsg "none" + } + Simulink.HardwareCC { + $ObjectID 237 + Version "1.18.1" + DisabledProps [] + Description "" + ProdBitPerChar 8 + ProdBitPerShort 16 + ProdBitPerInt 32 + ProdBitPerLong 32 + ProdBitPerLongLong 64 + ProdBitPerFloat 32 + ProdBitPerDouble 64 + ProdBitPerPointer 64 + ProdBitPerSizeT 64 + ProdBitPerPtrDiffT 64 + ProdLargestAtomicInteger "Char" + ProdLargestAtomicFloat "Float" + ProdIntDivRoundTo "Zero" + ProdEndianess "LittleEndian" + ProdWordSize 64 + ProdShiftRightIntArith on + ProdLongLongMode off + ProdHWDeviceType "Intel->x86-64 (Windows64)" + TargetBitPerChar 8 + TargetBitPerShort 16 + TargetBitPerInt 32 + TargetBitPerLong 32 + TargetBitPerLongLong 64 + TargetBitPerFloat 32 + TargetBitPerDouble 64 + TargetBitPerPointer 32 + TargetBitPerSizeT 32 + TargetBitPerPtrDiffT 32 + TargetLargestAtomicInteger "Char" + TargetLargestAtomicFloat "None" + TargetShiftRightIntArith on + TargetLongLongMode off + TargetIntDivRoundTo "Undefined" + TargetEndianess "Unspecified" + TargetWordSize 32 + TargetPreprocMaxBitsSint 32 + TargetPreprocMaxBitsUint 32 + TargetHWDeviceType "Specified" + TargetUnknown off + ProdEqTarget on + UseEmbeddedCoderFeatures on + UseSimulinkCoderFeatures on + } + Simulink.ModelReferenceCC { + $ObjectID 238 + Version "1.18.1" + DisabledProps [] + Description "" + UpdateModelReferenceTargets "IfOutOfDateOrStructuralChange" + EnableRefExpFcnMdlSchedulingChecks on + CheckModelReferenceTargetMessage "error" + EnableParallelModelReferenceBuilds off + ParallelModelReferenceErrorOnInvalidPool on + ParallelModelReferenceMATLABWorkerInit "None" + ModelReferenceNumInstancesAllowed "Multi" + PropagateVarSize "Infer from blocks in model" + ModelDependencies "" + ModelReferencePassRootInputsByReference on + ModelReferenceMinAlgLoopOccurrences off + PropagateSignalLabelsOutOfModel on + SupportModelReferenceSimTargetCustomCode off + } + Simulink.SFSimCC { + $ObjectID 239 + Version "1.18.1" + DisabledProps [] + Description "" + SimCustomSourceCode "" + SimCustomHeaderCode "" + SimCustomInitializer "" + SimCustomTerminator "" + SimReservedNameArray [] + SimUserSources "" + SimUserIncludeDirs "" + SimUserLibraries "" + SimUserDefines "" + SimCustomCompilerFlags "" + SimCustomLinkerFlags "" + SFSimEcho on + SimCtrlC on + SimIntegrity on + SimUseLocalCustomCode off + SimParseCustomCode on + SimAnalyzeCustomCode off + SimBuildMode "sf_incremental_build" + SimGenImportedTypeDefs off + ModelFunctionsGlobalVisibility "on" + CompileTimeRecursionLimit 50 + EnableRuntimeRecursion on + MATLABDynamicMemAlloc on + MATLABDynamicMemAllocThreshold 65536 + CustomCodeFunctionArrayLayout [] + DefaultCustomCodeFunctionArrayLayout "NotSpecified" + } + Simulink.RTWCC { + $BackupClass "Simulink.RTWCC" + $ObjectID 240 + Version "1.18.1" + Array { + Type "Cell" + Dimension 16 + Cell "IncludeHyperlinkInReport" + Cell "GenerateTraceInfo" + Cell "GenerateTraceReport" + Cell "GenerateTraceReportSl" + Cell "GenerateTraceReportSf" + Cell "GenerateTraceReportEml" + Cell "PortableWordSizes" + Cell "GenerateWebview" + Cell "GenerateCodeMetricsReport" + Cell "GenerateCodeReplacementReport" + Cell "GenerateMissedCodeReplacementReport" + Cell "GenerateErtSFunction" + Cell "CreateSILPILBlock" + Cell "CodeExecutionProfiling" + Cell "CodeProfilingSaveOptions" + Cell "CodeProfilingInstrumentation" + PropName "DisabledProps" + } + SystemTargetFile "grt.tlc" + HardwareBoard "None" + TLCOptions "" + GenCodeOnly off + MakeCommand "make_rtw" + GenerateMakefile on + PackageGeneratedCodeAndArtifacts off + PackageName "" + TemplateMakefile "grt_default_tmf" + PostCodeGenCommand "" + Description "" + GenerateReport off + RTWVerbose on + RetainRTWFile off + RTWBuildHooks [] + ProfileTLC off + TLCDebug off + TLCCoverage off + TLCAssert off + RTWUseLocalCustomCode off + RTWUseSimCustomCode off + CustomSourceCode "" + CustomHeaderCode "" + CustomInclude "" + CustomSource "" + CustomLibrary "" + CustomDefine "" + CustomBLASCallback "" + CustomLAPACKCallback "" + CustomFFTCallback "" + CustomInitializer "" + CustomTerminator "" + Toolchain "Automatically locate an installed toolchain" + BuildConfiguration "Faster Builds" + CustomToolchainOptions [] + IncludeHyperlinkInReport off + LaunchReport off + PortableWordSizes off + CreateSILPILBlock "None" + CodeExecutionProfiling off + CodeExecutionProfileVariable "executionProfile" + CodeProfilingSaveOptions "SummaryOnly" + CodeProfilingInstrumentation "off" + SILDebugging off + TargetLang "C" + IncludeBusHierarchyInRTWFileBlockHierarchyMap off + GenerateTraceInfo off + GenerateTraceReport off + GenerateTraceReportSl off + GenerateTraceReportSf off + GenerateTraceReportEml off + GenerateWebview off + GenerateCodeMetricsReport off + GenerateCodeReplacementReport off + GenerateMissedCodeReplacementReport off + RTWCompilerOptimization "off" + ObjectivePriorities [] + RTWCustomCompilerOptimizations "" + CheckMdlBeforeBuild "Off" + SharedConstantsCachingThreshold 1024 + Array { + Type "Handle" + Dimension 2 + Simulink.CodeAppCC { + $ObjectID 241 + Version "1.18.1" + Array { + Type "Cell" + Dimension 28 + Cell "IgnoreCustomStorageClasses" + Cell "IgnoreTestpoints" + Cell "InsertBlockDesc" + Cell "InsertPolySpaceComments" + Cell "SFDataObjDesc" + Cell "MATLABFcnDesc" + Cell "SimulinkDataObjDesc" + Cell "DefineNamingRule" + Cell "SignalNamingRule" + Cell "ParamNamingRule" + Cell "InternalIdentifier" + Cell "InlinedPrmAccess" + Cell "CustomSymbolStr" + Cell "CustomSymbolStrGlobalVar" + Cell "CustomSymbolStrType" + Cell "CustomSymbolStrField" + Cell "CustomSymbolStrFcn" + Cell "CustomSymbolStrModelFcn" + Cell "CustomSymbolStrFcnArg" + Cell "CustomSymbolStrBlkIO" + Cell "CustomSymbolStrTmpVar" + Cell "CustomSymbolStrMacro" + Cell "CustomSymbolStrUtil" + Cell "CustomUserTokenString" + Cell "ReqsInCode" + Cell "BlockCommentType" + Cell "CustomSymbolStrEmxType" + Cell "CustomSymbolStrEmxFcn" + PropName "DisabledProps" + } + Description "" + Comment "" + ForceParamTrailComments off + GenerateComments on + CommentStyle "Auto" + IgnoreCustomStorageClasses on + IgnoreTestpoints off + MaxIdLength 31 + PreserveName off + PreserveNameWithParent off + ShowEliminatedStatement off + OperatorAnnotations off + SimulinkDataObjDesc off + SFDataObjDesc off + MATLABFcnDesc off + MangleLength 1 + SharedChecksumLength 8 + CustomSymbolStrGlobalVar "$R$N$M" + CustomSymbolStrType "$N$R$M_T" + CustomSymbolStrField "$N$M" + CustomSymbolStrFcn "$R$N$M$F" + CustomSymbolStrModelFcn "$R$N" + CustomSymbolStrFcnArg "rt$I$N$M" + CustomSymbolStrBlkIO "rtb_$N$M" + CustomSymbolStrTmpVar "$N$M" + CustomSymbolStrMacro "$R$N$M" + CustomSymbolStrUtil "$N$C" + CustomSymbolStrEmxType "emxArray_$M$N" + CustomSymbolStrEmxFcn "emx$M$N" + CustomUserTokenString "" + CustomCommentsFcn "" + DefineNamingRule "None" + DefineNamingFcn "" + ParamNamingRule "None" + ParamNamingFcn "" + SignalNamingRule "None" + SignalNamingFcn "" + InsertBlockDesc off + InsertPolySpaceComments off + SimulinkBlockComments on + BlockCommentType "BlockPathComment" + StateflowObjectComments on + MATLABSourceComments off + EnableCustomComments off + InternalIdentifierFile "" + InternalIdentifier "Shortened" + InlinedPrmAccess "Literals" + ReqsInCode off + UseSimReservedNames off + ReservedNameArray [] + } + Simulink.GRTTargetCC { + $BackupClass "Simulink.TargetCC" + $ObjectID 242 + Version "1.18.1" + Array { + Type "Cell" + Dimension 16 + Cell "IncludeMdlTerminateFcn" + Cell "SuppressErrorStatus" + Cell "ERTCustomFileBanners" + Cell "GenerateSampleERTMain" + Cell "ExistingSharedCode" + Cell "GenerateTestInterfaces" + Cell "ModelStepFunctionPrototypeControlCompliant" + Cell "GenerateAllocFcn" + Cell "PurelyIntegerCode" + Cell "SupportComplex" + Cell "SupportAbsoluteTime" + Cell "SupportContinuousTime" + Cell "SupportNonInlinedSFcns" + Cell "RemoveDisableFunc" + Cell "RemoveResetFunc" + Cell "PreserveStateflowLocalDataDimensions" + PropName "DisabledProps" + } + Description "" + TargetFcnLib "ansi_tfl_table_tmw.mat" + TargetLibSuffix "" + TargetPreCompLibLocation "" + GenFloatMathFcnCalls "NOT IN USE" + TargetLangStandard "C99 (ISO)" + CodeReplacementLibrary "None" + UtilityFuncGeneration "Auto" + MultiwordTypeDef "System defined" + MultiwordLength 2048 + DynamicStringBufferSize 256 + GenerateFullHeader on + InferredTypesCompatibility off + ExistingSharedCode "" + GenerateSampleERTMain off + GenerateTestInterfaces off + ModelReferenceCompliant on + ParMdlRefBuildCompliant on + CompOptLevelCompliant on + ConcurrentExecutionCompliant on + IncludeMdlTerminateFcn on + GeneratePreprocessorConditionals "Use local settings" + CombineOutputUpdateFcns on + CombineSignalStateStructs off + GroupInternalDataByFunction off + SuppressErrorStatus off + IncludeFileDelimiter "Auto" + ERTCustomFileBanners off + SupportAbsoluteTime on + LogVarNameModifier "rt_" + MatFileLogging on + MultiInstanceERTCode off + CodeInterfacePackaging "Nonreusable function" + PurelyIntegerCode off + SupportNonFinite on + SupportComplex on + SupportContinuousTime on + SupportNonInlinedSFcns on + RemoveDisableFunc off + RemoveResetFunc off + SupportVariableSizeSignals off + ParenthesesLevel "Nominal" + CastingMode "Nominal" + PreserveStateflowLocalDataDimensions off + MATLABClassNameForMDSCustomization "Simulink.SoftwareTarget.GRTCustomization" + ModelStepFunctionPrototypeControlCompliant off + CPPClassGenCompliant on + AutosarCompliant off + MDXCompliant off + GRTInterface off + GenerateAllocFcn off + UseToolchainInfoCompliant on + GenerateSharedConstants on + CoderGroups [] + AccessMethods [] + LookupTableObjectStructAxisOrder "1,2,3,4,..." + LUTObjectStructOrderExplicitValues "Size,Breakpoints,Table" + LUTObjectStructOrderEvenSpacing "Size,Breakpoints,Table" + ArrayLayout "Column-major" + UnsupportedSFcnMsg "error" + ERTHeaderFileRootName "$R$E" + ERTSourceFileRootName "$R$E" + ERTDataFileRootName "$R_data" + UseMalloc off + ExtMode off + ExtModeStaticAlloc off + ExtModeTesting off + ExtModeStaticAllocSize 1000000 + ExtModeTransport 0 + ExtModeMexFile "ext_comm" + ExtModeMexArgs "" + ExtModeIntrfLevel "Level1" + RTWCAPISignals off + RTWCAPIParams off + RTWCAPIStates off + RTWCAPIRootIO off + GenerateASAP2 off + MultiInstanceErrorCode "Error" + } + PropName "Components" + } + } + SlCovCC.ConfigComp { + $ObjectID 243 + Version "1.18.1" + DisabledProps [] + Description "Simulink Coverage Configuration Component" + Name "Simulink Coverage" + CovEnable off + CovScope "EntireSystem" + CovIncludeTopModel on + RecordCoverage off + CovPath "/" + CovSaveName "covdata" + CovCompData "" + CovMetricSettings "dwe" + CovFilter "" + CovHTMLOptions "" + CovNameIncrementing off + CovHtmlReporting off + CovForceBlockReductionOff on + CovEnableCumulative on + CovSaveCumulativeToWorkspaceVar off + CovSaveSingleToWorkspaceVar off + CovCumulativeVarName "covCumulativeData" + CovCumulativeReport off + CovSaveOutputData on + CovOutputDir "slcov_output/$ModelName$" + CovDataFileName "$ModelName$_cvdata" + CovShowResultsExplorer on + CovReportOnPause on + CovModelRefEnable "off" + CovModelRefExcluded "" + CovExternalEMLEnable on + CovSFcnEnable on + CovBoundaryAbsTol 1e-05 + CovBoundaryRelTol 0.01 + CovUseTimeInterval off + CovStartTime 0 + CovStopTime 0 + CovMcdcMode "Masking" + } + PropName "Components" + } + Name "Configuration17" + ExtraOptions "" + CurrentDlgPage "Data Import//Export" + ConfigPrmDlgPosition [ 374, 90, 1274, 830 ] + } + PropName "ConfigurationSets" + } + Simulink.ConfigSet { + $PropName "ActiveConfigurationSet" + $ObjectID 232 + } + Object { + $PropName "DataTransfer" + $ObjectID 244 + $ClassName "Simulink.GlobalDataTransfer" + DefaultTransitionBetweenSyncTasks "Ensure deterministic transfer (maximum delay)" + DefaultTransitionBetweenAsyncTasks "Ensure data integrity only" + DefaultTransitionBetweenContTasks "Ensure deterministic transfer (minimum delay)" + DefaultExtrapolationMethodBetweenContTasks "None" + AutoInsertRateTranBlk [0] + } + ExplicitPartitioning off + BlockDefaults { + ForegroundColor "black" + BackgroundColor "white" + DropShadow off + NamePlacement "normal" + FontName "Helvetica" + FontSize 10 + FontWeight "normal" + FontAngle "normal" + ShowName on + HideAutomaticName on + BlockRotation 0 + BlockMirror off + } + AnnotationDefaults { + HorizontalAlignment "center" + VerticalAlignment "middle" + ForegroundColor "black" + BackgroundColor "white" + DropShadow off + FontName "Helvetica" + FontSize 10 + FontWeight "normal" + FontAngle "normal" + MarkupType "model" + UseDisplayTextAsClickCallback off + AnnotationType "note_annotation" + FixedHeight off + FixedWidth off + Interpreter "off" + } + LineDefaults { + FontName "Helvetica" + FontSize 9 + FontWeight "normal" + FontAngle "normal" + } + MaskDefaults { + SelfModifiable "off" + IconFrame "on" + IconOpaque "opaque" + RunInitForIconRedraw "analyze" + IconRotate "none" + PortRotate "default" + IconUnits "autoscale" + } + MaskParameterDefaults { + Evaluate "on" + Tunable "on" + NeverSave "off" + Internal "off" + ReadOnly "off" + Enabled "on" + Visible "on" + ToolTip "on" + } + BlockParameterDefaults { + Block { + BlockType Clock + DisplayTime off + Decimation "10" + } + Block { + BlockType Constant + Value "1" + VectorParams1D on + SamplingMode "Sample based" + OutMin "[]" + OutMax "[]" + OutDataTypeStr "Inherit: Inherit from 'Constant value'" + LockScale off + SampleTime "inf" + FramePeriod "inf" + PreserveConstantTs off + } + Block { + BlockType Delay + DelayLengthSource "Dialog" + DelayLength "2" + DelayLengthUpperLimit "100" + InitialConditionSource "Dialog" + InitialCondition "0.0" + ExternalReset "None" + ShowEnablePort off + PreventDirectFeedthrough off + DiagnosticForDelayLength "None" + RemoveDelayLengthCheckInGeneratedCode off + InputProcessing "Elements as channels (sample based)" + UseCircularBuffer off + SampleTime "-1" + StateMustResolveToSignalObject off + CodeGenStateStorageClass "Auto" + } + Block { + BlockType Demux + Outputs "4" + DisplayOption "none" + BusSelectionMode off + } + Block { + BlockType DiscreteFilter + NumeratorSource "Dialog" + Numerator "[1]" + DenominatorSource "Dialog" + Denominator "[1 0.5]" + InitialStatesSource "Dialog" + InitialStates "0" + InputProcessing "Elements as channels (sample based)" + ExternalReset "None" + InitialDenominatorStates "0" + FilterStructure "Direct form II" + SampleTime "-1" + a0EqualsOne off + NumCoefMin "[]" + NumCoefMax "[]" + DenCoefMin "[]" + DenCoefMax "[]" + OutMin "[]" + OutMax "[]" + StateDataTypeStr "Inherit: Same as input" + MultiplicandDataTypeStr "Inherit: Same as input" + NumCoefDataTypeStr "Inherit: Inherit via internal rule" + DenCoefDataTypeStr "Inherit: Inherit via internal rule" + NumProductDataTypeStr "Inherit: Inherit via internal rule" + DenProductDataTypeStr "Inherit: Inherit via internal rule" + NumAccumDataTypeStr "Inherit: Inherit via internal rule" + DenAccumDataTypeStr "Inherit: Inherit via internal rule" + OutDataTypeStr "Inherit: Inherit via internal rule" + LockScale off + RndMeth "Floor" + SaturateOnIntegerOverflow off + StateMustResolveToSignalObject off + RTWStateStorageClass "Auto" + } + Block { + BlockType DiscreteIntegrator + IntegratorMethod "Integration: Forward Euler" + gainval "1.0" + ExternalReset "none" + InitialConditionSource "internal" + InitialCondition "0" + InitialConditionSetting "Output" + SampleTime "1" + OutMin "[]" + OutMax "[]" + OutDataTypeStr "Inherit: Inherit via internal rule" + LockScale off + RndMeth "Floor" + SaturateOnIntegerOverflow off + LimitOutput off + UpperSaturationLimit "inf" + LowerSaturationLimit "-inf" + ShowSaturationPort off + ShowStatePort off + IgnoreLimit off + StateMustResolveToSignalObject off + RTWStateStorageClass "Auto" + } + Block { + BlockType DiscreteStateSpace + A "1" + B "1" + C "1" + D "1" + InitialCondition "0" + SampleTime "1" + StateMustResolveToSignalObject off + RTWStateStorageClass "Auto" + Realization "auto" + } + Block { + BlockType Fcn + Expr "sin(u[1])" + SampleTime "-1" + } + Block { + BlockType Gain + Gain "1" + Multiplication "Element-wise(K.*u)" + ParamMin "[]" + ParamMax "[]" + ParamDataTypeStr "Inherit: Same as input" + OutMin "[]" + OutMax "[]" + OutDataTypeStr "Inherit: Same as input" + LockScale off + RndMeth "Floor" + SaturateOnIntegerOverflow on + SampleTime "-1" + } + Block { + BlockType Inport + Port "1" + OutputFunctionCall off + OutMin "[]" + OutMax "[]" + OutDataTypeStr "Inherit: auto" + LockScale off + BusOutputAsStruct off + Unit "inherit" + PortDimensions "-1" + VarSizeSig "Inherit" + SampleTime "-1" + SignalType "auto" + SamplingMode "auto" + LatchByDelayingOutsideSignal off + LatchInputForFeedbackSignals off + Interpolate on + } + Block { + BlockType Lookup_n-D + NumberOfTableDimensions "2" + DataSpecification "Table and breakpoints" + BreakpointsSpecification "Explicit values" + BreakpointsForDimension1 "[10,22,31]" + BreakpointsForDimension2 "[10,22,31]" BreakpointsForDimension3 "[1:3]" BreakpointsForDimension4 "[1:3]" BreakpointsForDimension5 "[1:3]" @@ -14053,6 +14656,27 @@ Model { LUTDesignRelError "0.01" LUTDesignAbsError "1e-6" } + Block { + BlockType ManualSwitch + CurrentSetting "1" + varsize off + SampleTime "-1" + } + Block { + BlockType Math + Operator "exp" + OutputSignalType "auto" + SampleTime "-1" + OutMin "[]" + OutMax "[]" + OutDataTypeStr "Inherit: Same as first input" + LockScale off + RndMeth "Floor" + SaturateOnIntegerOverflow on + IntermediateResultsDataTypeStr "Inherit: Inherit via internal rule" + AlgorithmType "Newton-Raphson" + Iterations "3" + } Block { BlockType Mux Inputs "4" @@ -14107,6 +14731,15 @@ Model { InitialCondition "0" LinearizeAsGain on } + Block { + BlockType RelationalOperator + Operator ">=" + InputSameDT on + OutDataTypeStr "Inherit: Logical (see Configuration Parameters: Optimization)" + ZeroCross on + SampleTime "-1" + RndMeth "Nearest" + } Block { BlockType S-Function FunctionName "system" @@ -14134,146 +14767,1258 @@ Model { DefaultConfigurationName "Simulink.scopes.TimeScopeBlockCfg" } Block { - BlockType SignalSpecification - OutMin "[]" - OutMax "[]" - OutDataTypeStr "Inherit: auto" - LockScale off - BusOutputAsStruct off - Unit "inherit" - Dimensions "-1" - VarSizeSig "Inherit" - SampleTime "-1" - SignalType "auto" - SamplingMode "auto" + BlockType SignalSpecification + OutMin "[]" + OutMax "[]" + OutDataTypeStr "Inherit: auto" + LockScale off + BusOutputAsStruct off + Unit "inherit" + Dimensions "-1" + VarSizeSig "Inherit" + SampleTime "-1" + SignalType "auto" + SamplingMode "auto" + } + Block { + BlockType Sqrt + Operator "sqrt" + OutputSignalType "auto" + SampleTime "-1" + OutMin "[]" + OutMax "[]" + OutDataTypeStr "Inherit: Same as first input" + LockScale off + RndMeth "Floor" + SaturateOnIntegerOverflow on + IntermediateResultsDataTypeStr "Inherit: Inherit via internal rule" + AlgorithmType "Exact" + Iterations "3" + } + Block { + BlockType SubSystem + ShowPortLabels "FromPortIcon" + Permissions "ReadWrite" + PermitHierarchicalResolution "All" + TreatAsAtomicUnit off + MinAlgLoopOccurrences off + PropExecContextOutsideSubsystem off + SystemSampleTime "-1" + RTWSystemCode "Auto" + RTWFcnNameOpts "Auto" + RTWFileNameOpts "Auto" + FunctionInterfaceSpec "void_void" + FunctionWithSeparateData off + RTWMemSecFuncInitTerm "Inherit from model" + RTWMemSecFuncExecute "Inherit from model" + RTWMemSecDataConstants "Inherit from model" + RTWMemSecDataInternal "Inherit from model" + RTWMemSecDataParameters "Inherit from model" + SimViewingDevice off + DataTypeOverride "UseLocalSettings" + DataTypeOverrideAppliesTo "AllNumericTypes" + MinMaxOverflowLogging "UseLocalSettings" + Opaque off + MaskHideContents off + SFBlockType "NONE" + VariantControlMode "Expression" + Variant off + GeneratePreprocessorConditionals off + AllowZeroVariantControls off + PropagateVariantConditions off + TreatAsGroupedWhenPropagatingVariantConditions on + ContentPreviewEnabled off + IsWebBlock off + IsObserver off + Latency "0" + AutoFrameSizeCalculation off + IsWebBlockPanel off + } + Block { + BlockType Sum + IconShape "rectangular" + Inputs "++" + CollapseMode "All dimensions" + CollapseDim "1" + InputSameDT on + AccumDataTypeStr "Inherit: Inherit via internal rule" + OutMin "[]" + OutMax "[]" + OutDataTypeStr "Inherit: Same as first input" + LockScale off + RndMeth "Floor" + SaturateOnIntegerOverflow on + SampleTime "-1" + } + Block { + BlockType Switch + Criteria "u2 >= Threshold" + Threshold "0" + InputSameDT on + OutMin "[]" + OutMax "[]" + OutDataTypeStr "Inherit: Inherit via internal rule" + LockScale off + RndMeth "Floor" + SaturateOnIntegerOverflow on + ZeroCross on + SampleTime "-1" + AllowDiffInputSizes off + } + Block { + BlockType Terminator + } + Block { + BlockType ToWorkspace + VariableName "simulink_output" + MaxDataPoints "1000" + Decimation "1" + SaveFormat "Array" + Save2DSignal "Inherit from input (this choice will be removed - see release notes)" + FixptAsFi off + NumInputs "1" + SampleTime "0" + } + Block { + BlockType UnitDelay + InitialCondition "0" + InputProcessing "Inherited" + SampleTime "1" + StateMustResolveToSignalObject off + CodeGenStateStorageClass "Auto" + HasFrameUpgradeWarning on + } + } + System { + Name "ROSCO" + Location [0, 23, 1920, 1001] + Open on + PortBlocksUseCompactNotation off + SetExecutionDomain off + ExecutionDomainType "Deduce" + ModelBrowserVisibility off + ModelBrowserWidth 200 + ScreenColor "white" + PaperOrientation "landscape" + PaperPositionMode "auto" + PaperType "usletter" + PaperUnits "inches" + TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000] + TiledPageScale 1 + ShowPageBoundaries off + ZoomFactor "125" + ReportName "simulink-default.rpt" + SIDHighWatermark "1553" + Block { + BlockType SubSystem + Name "AirFoil Controller" + SID "1542" + Ports [0, 1] + Position [560, 324, 660, 366] + ZOrder 507 + RequestExecContextInheritance off + System { + Name "AirFoil Controller" + Location [0, 23, 1920, 1001] + Open off + PortBlocksUseCompactNotation off + SetExecutionDomain off + ExecutionDomainType "Deduce" + ModelBrowserVisibility off + ModelBrowserWidth 200 + ScreenColor "white" + PaperOrientation "landscape" + PaperPositionMode "auto" + PaperType "usletter" + PaperUnits "inches" + TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000] + TiledPageScale 1 + ShowPageBoundaries off + ZoomFactor "100" + Block { + BlockType Constant + Name "Airfoil command" + SID "1543" + Position [55, 35, 85, 65] + ZOrder -1 + Value "zeros(1,3)'" + } + Block { + BlockType Outport + Name "Out1" + SID "1544" + Position [140, 43, 170, 57] + ZOrder -2 + IconDisplay "Port number" + VectorParamsAs1DForOutWhenUnconnected on + } + Line { + ZOrder 1 + SrcBlock "Airfoil command" + SrcPort 1 + DstBlock "Out1" + DstPort 1 + } + } + } + Block { + BlockType SubSystem + Name "BldPitch Controller" + SID "376" + Ports [4, 1] + Position [-15, 217, 95, 373] + ZOrder 205 + BackgroundColor "green" + RequestExecContextInheritance off + System { + Name "BldPitch Controller" + Location [0, 23, 1920, 1001] + Open on + PortBlocksUseCompactNotation off + SetExecutionDomain off + ExecutionDomainType "Deduce" + ModelBrowserVisibility off + ModelBrowserWidth 200 + ScreenColor "white" + PaperOrientation "landscape" + PaperPositionMode "auto" + PaperType "usletter" + PaperUnits "inches" + TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000] + TiledPageScale 1 + ShowPageBoundaries off + ZoomFactor "125" + Block { + BlockType Inport + Name "omega_g,ref" + SID "497" + Position [-500, 347, -445, 363] + ZOrder 319 + BackgroundColor "yellow" + NamePlacement "alternate" + IconDisplay "Port number" + } + Block { + BlockType Inport + Name "GenSpeedF" + SID "378" + Position [-250, 392, -195, 408] + ZOrder -1 + BackgroundColor "yellow" + NamePlacement "alternate" + Port "2" + IconDisplay "Port number" + } + Block { + BlockType Inport + Name "Del_omega_g" + SID "498" + Position [-530, 242, -475, 258] + ZOrder 321 + BackgroundColor "yellow" + NamePlacement "alternate" + Port "3" + IconDisplay "Port number" + } + Block { + BlockType Inport + Name "Min Pitch" + SID "789" + Position [-250, 577, -195, 593] + ZOrder 363 + BackgroundColor "yellow" + NamePlacement "alternate" + Port "4" + IconDisplay "Port number" + } + Block { + BlockType Reference + Name "Compare\nTo Zero1" + SID "654" + Ports [1, 1] + Position [-395, 220, -365, 250] + ZOrder 352 + LibraryVersion "1.444" + SourceBlock "simulink/Logic and Bit\nOperations/Compare\nTo Zero" + SourceType "Compare To Zero" + SourceProductBaseCode "SL" + ContentPreviewEnabled on + relop "<" + OutDataTypeStr "boolean" + ZeroCross on + } + Block { + BlockType Constant + Name "Constant1" + SID "716" + Position [80, 525, 165, 545] + ZOrder 355 + BackgroundColor "[0.800000, 0.800000, 0.800000]" + Value "R.PC_GS_KP" + } + Block { + BlockType Constant + Name "Constant2" + SID "717" + Position [80, 550, 165, 570] + ZOrder 356 + BackgroundColor "[0.800000, 0.800000, 0.800000]" + Value "R.PC_GS_KI" + } + Block { + BlockType Constant + Name "Constant3" + SID "718" + Position [80, 575, 165, 595] + ZOrder 357 + BackgroundColor "[0.800000, 0.800000, 0.800000]" + Value "R.PC_GS_angles" + } + Block { + BlockType Delay + Name "Delay" + SID "786" + Ports [1, 1] + Position [570, 743, 605, 777] + ZOrder 362 + BlockMirror on + InputPortMap "u0" + DelayLength "1" + } + Block { + BlockType SubSystem + Name "Integral" + SID "385" + Ports [3, 1] + Position [645, 371, 725, 419] + ZOrder 276 + RequestExecContextInheritance off + ContentPreviewEnabled on + System { + Name "Integral" + Location [0, 23, 1920, 1001] + Open on + PortBlocksUseCompactNotation off + SetExecutionDomain off + ExecutionDomainType "Deduce" + ModelBrowserVisibility off + ModelBrowserWidth 200 + ScreenColor "white" + PaperOrientation "landscape" + PaperPositionMode "auto" + PaperType "usletter" + PaperUnits "inches" + TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000] + TiledPageScale 1 + ShowPageBoundaries off + ZoomFactor "142" + Block { + BlockType Inport + Name "SpeedErr" + SID "386" + Position [20, 135, 35, 165] + ZOrder 274 + BackgroundColor "yellow" + IconDisplay "Port number" + } + Block { + BlockType Inport + Name "Gain" + SID "387" + Position [100, 215, 115, 245] + ZOrder 278 + BackgroundColor "yellow" + Port "2" + IconDisplay "Port number" + } + Block { + BlockType Inport + Name "Min Pitch" + SID "790" + Position [450, 45, 465, 75] + ZOrder 280 + BackgroundColor "yellow" + Port "3" + IconDisplay "Port number" + } + Block { + BlockType Gain + Name "Gain1" + SID "388" + Position [125, 135, 155, 165] + ZOrder 273 + BackgroundColor "magenta" + Gain "simu.dt" + ParamDataTypeStr "Inherit: Inherit via internal rule" + OutDataTypeStr "Inherit: Inherit via internal rule" + SaturateOnIntegerOverflow off + } + Block { + BlockType Constant + Name "Maximum Pitch" + SID "389" + Position [270, 22, 380, 48] + ZOrder 265 + BackgroundColor "[0.800000, 0.800000, 0.800000]" + NamePlacement "alternate" + Value "R.PC_MaxPit" + } + Block { + BlockType Constant + Name "Minimum Pitch" + SID "390" + Position [270, 82, 380, 108] + ZOrder 266 + BackgroundColor "[0.800000, 0.800000, 0.800000]" + NamePlacement "alternate" + Value "R.PC_MinPit" + } + Block { + BlockType Product + Name "Multiply" + SID "391" + Ports [2, 1] + Position [230, 143, 255, 172] + ZOrder 279 + InputSameDT off + OutDataTypeStr "Inherit: Inherit via internal rule" + RndMeth "Floor" + SaturateOnIntegerOverflow off + } + Block { + BlockType Reference + Name "Saturate Integral\nTerm" + SID "392" + Ports [3, 1] + Position [515, 140, 595, 180] + ZOrder 261 + LibraryVersion "1.444" + SourceBlock "simulink/Discontinuities/Saturation\nDynamic" + SourceType "Saturation Dynamic" + SourceProductBaseCode "SL" + ContentPreviewEnabled off + OutMin "[]" + OutMax "[]" + OutDataTypeStr "Inherit: Same as second input" + OutputDataTypeScalingMode "Same as second input" + OutDataType "fixdt(1, 16)" + OutScaling "2^-10" + LockScale off + RndMeth "Nearest" + DoSatur off + } + Block { + BlockType Sum + Name "Sum" + SID "393" + Ports [2, 1] + Position [320, 150, 340, 170] + ZOrder 271 + ShowName off + IconShape "round" + Inputs "|++" + InputSameDT off + OutDataTypeStr "Inherit: Inherit via internal rule" + SaturateOnIntegerOverflow off + } + Block { + BlockType UnitDelay + Name "Unit Delay" + SID "394" + Position [440, 238, 475, 272] + ZOrder 272 + BlockMirror on + NamePlacement "alternate" + InputProcessing "Elements as channels (sample based)" + SampleTime "-1" + } + Block { + BlockType Outport + Name "IntSpdErr" + SID "395" + Position [890, 153, 920, 167] + ZOrder 275 + BackgroundColor "[0.074510, 0.623529, 1.000000]" + IconDisplay "Port number" + } + Line { + ZOrder 1 + SrcBlock "Maximum Pitch" + SrcPort 1 + Points [29, 0; 0, 110] + DstBlock "Saturate Integral\nTerm" + DstPort 1 + } + Line { + ZOrder 2 + SrcBlock "Unit Delay" + SrcPort 1 + Points [-105, 0] + DstBlock "Sum" + DstPort 2 + } + Line { + ZOrder 4 + SrcBlock "Sum" + SrcPort 1 + DstBlock "Saturate Integral\nTerm" + DstPort 2 + } + Line { + ZOrder 5 + SrcBlock "SpeedErr" + SrcPort 1 + DstBlock "Gain1" + DstPort 1 + } + Line { + ZOrder 6 + SrcBlock "Gain" + SrcPort 1 + Points [94, 0; 0, -65] + DstBlock "Multiply" + DstPort 2 + } + Line { + ZOrder 7 + SrcBlock "Saturate Integral\nTerm" + SrcPort 1 + Points [130, 0] + Branch { + ZOrder 8 + DstBlock "IntSpdErr" + DstPort 1 + } + Branch { + ZOrder 9 + Points [0, 95] + DstBlock "Unit Delay" + DstPort 1 + } + } + Line { + ZOrder 10 + SrcBlock "Gain1" + SrcPort 1 + DstBlock "Multiply" + DstPort 1 + } + Line { + ZOrder 11 + SrcBlock "Multiply" + SrcPort 1 + DstBlock "Sum" + DstPort 1 + } + Line { + ZOrder 14 + SrcBlock "Min Pitch" + SrcPort 1 + Points [25, 0; 0, 115] + DstBlock "Saturate Integral\nTerm" + DstPort 3 + } + } + } + Block { + BlockType Product + Name "Multiply" + SID "397" + Ports [2, 1] + Position [815, 447, 845, 478] + ZOrder 288 + InputSameDT off + OutDataTypeStr "Inherit: Inherit via internal rule" + RndMeth "Floor" + SaturateOnIntegerOverflow off + } + Block { + BlockType Product + Name "Multiply3" + SID "655" + Ports [2, 1] + Position [-325, 219, -290, 286] + ZOrder 353 + InputSameDT off + OutDataTypeStr "Inherit: Inherit via internal rule" + RndMeth "Floor" + SaturateOnIntegerOverflow off + } + Block { + BlockType Mux + Name "Mux" + SID "398" + Ports [5, 1] + Position [830, 532, 835, 628] + ZOrder 296 + NamePlacement "alternate" + ShowName off + Inputs "5" + DisplayOption "bar" + } + Block { + BlockType SubSystem + Name "Pitch GS" + SID "396" + Ports [4, 2] + Position [380, 493, 545, 602] + ZOrder 287 + ErrorFcn "Stateflow.Translate.translate" + PermitHierarchicalResolution "ExplicitOnly" + TreatAsAtomicUnit on + RequestExecContextInheritance off + SFBlockType "MATLAB Function" + ContentPreviewEnabled on + System { + Name "Pitch GS" + Location [223, 338, 826, 833] + Open off + PortBlocksUseCompactNotation off + SetExecutionDomain off + ExecutionDomainType "Deduce" + ModelBrowserVisibility off + ModelBrowserWidth 200 + ScreenColor "white" + PaperOrientation "landscape" + PaperPositionMode "auto" + PaperType "usletter" + PaperUnits "inches" + TiledPaperMargins [0.500000, 0.500000, 0.500000, 0.500000] + TiledPageScale 1 + ShowPageBoundaries off + ZoomFactor "100" + SIDHighWatermark "56" + Block { + BlockType Inport + Name "Beta" + SID "396::45" + Position [20, 101, 40, 119] + ZOrder 24 + IconDisplay "Port number" + } + Block { + BlockType Inport + Name "Kp_pc" + SID "396::56" + Position [20, 136, 40, 154] + ZOrder 35 + Port "2" + IconDisplay "Port number" + } + Block { + BlockType Inport + Name "Ki_pc" + SID "396::54" + Position [20, 171, 40, 189] + ZOrder 33 + Port "3" + IconDisplay "Port number" + } + Block { + BlockType Inport + Name "PC_beta" + SID "396::55" + Position [20, 206, 40, 224] + ZOrder 34 + Port "4" + IconDisplay "Port number" + } + Block { + BlockType Demux + Name " Demux " + SID "396::52" + Ports [1, 1] + Position [270, 230, 320, 270] + ZOrder 31 + Outputs "1" + DisplayOption "bar" + } + Block { + BlockType S-Function + Name " SFunction " + SID "396::51" + Tag "Stateflow S-Function ROSCO 6" + Ports [4, 3] + Position [180, 107, 230, 208] + ZOrder 30 + FunctionName "sf_sfun" + PortCounts "[4 3]" + SFunctionDeploymentMode off + EnableBusSupport on + SFcnIsStateOwnerBlock off + Port { + PortNumber 2 + Name "Ki" + } + Port { + PortNumber 3 + Name "Kp" + } + } + Block { + BlockType Terminator + Name " Terminator " + SID "396::53" + Position [460, 241, 480, 259] + ZOrder 32 + } + Block { + BlockType Outport + Name "Ki" + SID "396::22" + Position [460, 101, 480, 119] + ZOrder 13 + IconDisplay "Port number" + } + Block { + BlockType Outport + Name "Kp" + SID "396::5" + Position [460, 136, 480, 154] + ZOrder -5 + Port "2" + IconDisplay "Port number" + } + Line { + ZOrder 362 + SrcBlock "Beta" + SrcPort 1 + DstBlock " SFunction " + DstPort 1 + } + Line { + ZOrder 363 + SrcBlock "Kp_pc" + SrcPort 1 + DstBlock " SFunction " + DstPort 2 + } + Line { + ZOrder 364 + SrcBlock "Ki_pc" + SrcPort 1 + DstBlock " SFunction " + DstPort 3 + } + Line { + ZOrder 365 + SrcBlock "PC_beta" + SrcPort 1 + DstBlock " SFunction " + DstPort 4 + } + Line { + Name "Ki" + ZOrder 366 + Labels [0, 0] + SrcBlock " SFunction " + SrcPort 2 + DstBlock "Ki" + DstPort 1 + } + Line { + Name "Kp" + ZOrder 367 + Labels [0, 0] + SrcBlock " SFunction " + SrcPort 3 + DstBlock "Kp" + DstPort 1 + } + Line { + ZOrder 368 + SrcBlock " Demux " + SrcPort 1 + DstBlock " Terminator " + DstPort 1 + } + Line { + ZOrder 369 + SrcBlock " SFunction " + SrcPort 1 + DstBlock " Demux " + DstPort 1 + } + } + } + Block { + BlockType Scope + Name "Scope" + SID "813" + Ports [2] + Position [20, 256, 50, 289] + ZOrder 365 + Commented "on" + ScopeSpecificationString "Simulink.scopes.TimeScopeBlockCfg('CurrentConfiguration', extmgr.ConfigurationSet(extmgr." + "Configuration('Core','General UI',true),extmgr.Configuration('Core','Source UI',true),extmgr.Configuration('Sources" + "','WiredSimulink',true,'DataLoggingVariableName','ScopeData1'),extmgr.Configuration('Visuals','Time Domain',true,'S" + "erializedDisplays',{struct('MinYLimReal','-15.34195','MaxYLimReal','161.74389','YLabelReal','','MinYLimMag','0.0000" + "0','MaxYLimMag','161.74389','LegendVisibility','off','XGrid',true,'YGrid',true,'PlotMagPhase',false,'AxesColor',[0 " + "0 0],'AxesTickColor',[0.686274509803922 0.686274509803922 0.686274509803922],'ColorOrder',[1 1 0.0666666666666667;0" + ".0745098039215686 0.623529411764706 1;1 0.411764705882353 0.16078431372549;0.392156862745098 0.831372549019608 0.07" + "45098039215686;0.717647058823529 0.274509803921569 1;0.0588235294117647 1 1;1 0.0745098039215686 0.650980392156863]" + ",'Title','%','LinePropertiesCache',{{}},'UserDefinedChannelNames',{{}},'NumLines',2,'LineNames',{{'Sum" + "3','GenSpeedF'}},'ShowContent',true,'Placement',1)},'DisplayPropertyDefaults',struct('MinYLimReal','-15.34195','Max" + "YLimReal','161.74389','YLabelReal','','MinYLimMag','0.00000','MaxYLimMag','161.74389','LegendVisibility','off','XGr" + "id',true,'YGrid',true,'PlotMagPhase',false,'AxesColor',[0 0 0],'AxesTickColor',[0.686274509803922 0.686274509803922" + " 0.686274509803922],'ColorOrder',[0.0745098039215686 0.623529411764706 1;1 0.411764705882353 0.16078431372549;1 1 0" + ".0666666666666667;0.717647058823529 0.274509803921569 1;0.392156862745098 0.831372549019608 0.0745098039215686;0.05" + "88235294117647 1 1;1 0.0745098039215686 0.650980392156863])),extmgr.Configuration('Tools','Plot Navigation',true),e" + "xtmgr.Configuration('Tools','Measurements',true,'Version','2018b')),'Version','2018b','Position',[1 1 441 373],'Vis" + "ibleAtModelOpen','on')" + NumInputPorts "2" + Floating off + } + Block { + BlockType Scope + Name "Scope1" + SID "413" + Ports [1] + Position [815, 289, 845, 321] + ZOrder 316 + Commented "on" + ScopeSpecificationString "Simulink.scopes.TimeScopeBlockCfg('CurrentConfiguration', extmgr.ConfigurationSet(extmgr." + "Configuration('Core','General UI',true),extmgr.Configuration('Core','Source UI',true),extmgr.Configuration('Sources" + "','WiredSimulink',true,'DataLoggingVariableName','ScopeData1'),extmgr.Configuration('Visuals','Time Domain',true,'S" + "erializedDisplays',{struct('MinYLimReal','-0.02964','MaxYLimReal','0.31037','YLabelReal','','MinYLimMag','0.00000'," + "'MaxYLimMag','0.31037','LegendVisibility','off','XGrid',true,'YGrid',true,'PlotMagPhase',false,'AxesColor',[0 0 0]," + "'AxesTickColor',[0.686274509803922 0.686274509803922 0.686274509803922],'ColorOrder',[1 1 0.0666666666666667;0.0745" + "098039215686 0.623529411764706 1;1 0.411764705882353 0.16078431372549;0.392156862745098 0.831372549019608 0.0745098" + "039215686;0.717647058823529 0.274509803921569 1;0.0588235294117647 1 1;1 0.0745098039215686 0.650980392156863],'Tit" + "le','%','LinePropertiesCache',{{}},'UserDefinedChannelNames',{{}},'NumLines',1,'LineNames',{{'Integral" + "'}},'ShowContent',true,'Placement',1)},'DisplayPropertyDefaults',struct('MinYLimReal','-0.02964','MaxYLimReal','0.3" + "1037','YLabelReal','','MinYLimMag','0.00000','MaxYLimMag','0.31037','LegendVisibility','off','XGrid',true,'YGrid',t" + "rue,'PlotMagPhase',false,'AxesColor',[0 0 0],'AxesTickColor',[0.686274509803922 0.686274509803922 0.686274509803922" + "],'ColorOrder',[0.0745098039215686 0.623529411764706 1;1 0.411764705882353 0.16078431372549;1 1 0.0666666666666667;" + "0.717647058823529 0.274509803921569 1;0.392156862745098 0.831372549019608 0.0745098039215686;0.0588235294117647 1 1" + ";1 0.0745098039215686 0.650980392156863])),extmgr.Configuration('Tools','Plot Navigation',true,'OnceAtStop',false,'" + "PreviousZoomMode','ZoomX'),extmgr.Configuration('Tools','Measurements',true,'Version','2018b')),'Version','2018b','" + "Position',[1 1 441 373],'VisibleAtModelOpen','on')" + NumInputPorts "1" + Floating off + } + Block { + BlockType Sum + Name "Sum" + SID "402" + Ports [2, 1] + Position [135, 334, 175, 421] + ZOrder 251 + ShowName off + Inputs "+-" + InputSameDT off + OutDataTypeStr "Inherit: Inherit via internal rule" + SaturateOnIntegerOverflow off + } + Block { + BlockType Sum + Name "Sum1" + SID "403" + Ports [2, 1] + Position [850, 385, 870, 405] + ZOrder 279 + ShowName off + IconShape "round" + Inputs "|++" + InputSameDT off + OutDataTypeStr "Inherit: Inherit via internal rule" + SaturateOnIntegerOverflow off + } + Block { + BlockType Sum + Name "Sum3" + SID "656" + Ports [2, 1] + Position [-230, 345, -210, 365] + ZOrder 354 + ShowName off + IconShape "round" + Inputs "-+|" + InputSameDT off + OutDataTypeStr "Inherit: Inherit via internal rule" + SaturateOnIntegerOverflow off + } + Block { + BlockType ToWorkspace + Name "To Workspace" + SID "412" + Ports [1] + Position [380, 260, 440, 290] + ZOrder 315 + BackgroundColor "[1.000000, 0.411765, 0.160784]" + VariableName "SpdErr" + MaxDataPoints "inf" + SaveFormat "Timeseries" + Save2DSignal "3-D array (concatenate along third dimension)" + FixptAsFi on + SampleTime "-1" + } + Block { + BlockType ToWorkspace + Name "To Workspace1" + SID "405" + Ports [1] + Position [860, 575, 920, 605] + ZOrder 295 + BackgroundColor "[1.000000, 0.411765, 0.160784]" + VariableName "PC_params" + MaxDataPoints "inf" + SaveFormat "Structure" + Save2DSignal "3-D array (concatenate along third dimension)" + FixptAsFi on + SampleTime "-1" + } + Block { + BlockType ToWorkspace + Name "To Workspace2" + SID "537" + Ports [1] + Position [185, 220, 245, 250] + ZOrder 324 + BackgroundColor "[1.000000, 0.411765, 0.160784]" + VariableName "Omega_bg_ref" + MaxDataPoints "inf" + SaveFormat "Timeseries" + Save2DSignal "3-D array (concatenate along third dimension)" + FixptAsFi on + SampleTime "-1" + } + Block { + BlockType Outport + Name "BldPitch" + SID "407" + Position [1560, 388, 1590, 402] + ZOrder -15 + BackgroundColor "lightBlue" + IconDisplay "Port number" + } + Line { + ZOrder 1 + SrcBlock "Multiply" + SrcPort 1 + Points [10, 0] + DstBlock "Sum1" + DstPort 2 + } + Line { + ZOrder 2 + SrcBlock "Integral" + SrcPort 1 + Points [36, 0] + Branch { + ZOrder 242 + Points [0, -90] + DstBlock "Scope1" + DstPort 1 + } + Branch { + ZOrder 241 + DstBlock "Sum1" + DstPort 1 + } + } + Line { + ZOrder 4 + SrcBlock "Pitch GS" + SrcPort 1 + Points [62, 0; 0, -20] + Branch { + ZOrder 335 + Points [87, 0; 0, 80] + DstBlock "Mux" + DstPort 3 + } + Branch { + ZOrder 281 + Points [0, -105] + DstBlock "Integral" + DstPort 2 + } + } + Line { + ZOrder 7 + SrcBlock "Pitch GS" + SrcPort 2 + Points [105, 0; 0, -55] + Branch { + ZOrder 337 + Points [73, 0; 0, 80] + DstBlock "Mux" + DstPort 4 + } + Branch { + ZOrder 330 + Points [0, -50] + DstBlock "Multiply" + DstPort 2 + } + } + Line { + ZOrder 10 + SrcBlock "Mux" + SrcPort 1 + Points [3, 0; 0, 10] + DstBlock "To Workspace1" + DstPort 1 + } + Line { + ZOrder 490 + SrcBlock "Sum1" + SrcPort 1 + Points [219, 0] + Branch { + ZOrder 494 + Points [0, 365] + DstBlock "Delay" + DstPort 1 + } + Branch { + ZOrder 493 + DstBlock "BldPitch" + DstPort 1 + } + } + Line { + ZOrder 378 + SrcBlock "Sum3" + SrcPort 1 + Points [114, 0] + Branch { + ZOrder 539 + Points [0, -90] + DstBlock "Scope" + DstPort 1 + } + Branch { + ZOrder 538 + Points [199, 0] + Branch { + ZOrder 182 + Points [0, -120] + DstBlock "To Workspace2" + DstPort 1 + } + Branch { + ZOrder 181 + DstBlock "Sum" + DstPort 1 + } + } + } + Line { + ZOrder 12 + SrcBlock "GenSpeedF" + SrcPort 1 + Points [128, 0] + Branch { + ZOrder 541 + Points [0, -120] + DstBlock "Scope" + DstPort 2 + } + Branch { + ZOrder 540 + DstBlock "Sum" + DstPort 2 + } + } + Line { + ZOrder 372 + SrcBlock "Compare\nTo Zero1" + SrcPort 1 + DstBlock "Multiply3" + DstPort 1 + } + Line { + ZOrder 383 + SrcBlock "Del_omega_g" + SrcPort 1 + Points [42, 0] + Branch { + ZOrder 384 + Points [0, -15] + DstBlock "Compare\nTo Zero1" + DstPort 1 + } + Branch { + ZOrder 374 + Points [0, 20] + DstBlock "Multiply3" + DstPort 2 + } + } + Line { + ZOrder 379 + SrcBlock "Multiply3" + SrcPort 1 + Points [65, 0] + DstBlock "Sum3" + DstPort 1 + } + Line { + ZOrder 455 + SrcBlock "omega_g,ref" + SrcPort 1 + DstBlock "Sum3" + DstPort 2 + } + Line { + ZOrder 456 + SrcBlock "Constant1" + SrcPort 1 + DstBlock "Pitch GS" + DstPort 2 + } + Line { + ZOrder 457 + SrcBlock "Constant2" + SrcPort 1 + DstBlock "Pitch GS" + DstPort 3 + } + Line { + ZOrder 458 + SrcBlock "Constant3" + SrcPort 1 + DstBlock "Pitch GS" + DstPort 4 + } + Line { + ZOrder 495 + SrcBlock "Delay" + SrcPort 1 + Points [-209, 0; 0, -250] + DstBlock "Pitch GS" + DstPort 1 + } + Line { + ZOrder 512 + SrcBlock "Min Pitch" + SrcPort 1 + Points [132, 0; 0, -108; 687, 0; 0, -67] + DstBlock "Integral" + DstPort 3 + } + Line { + ZOrder 542 + SrcBlock "Sum" + SrcPort 1 + Points [172, 0] + Branch { + ZOrder 42 + Points [0, -105] + DstBlock "To Workspace" + DstPort 1 + } + Branch { + ZOrder 41 + Points [98, 0] + Branch { + ZOrder 26 + Points [0, 75; 312, 0] + Branch { + ZOrder 336 + Points [0, 105] + DstBlock "Mux" + DstPort 2 + } + Branch { + ZOrder 331 + DstBlock "Multiply" + DstPort 1 + } + } + Branch { + ZOrder 29 + DstBlock "Integral" + DstPort 1 + } + } + } + Annotation { + SID "612" + Name "\n