From 5dfa4ca9b3019d96f937afdef4adb9ca4236a905 Mon Sep 17 00:00:00 2001 From: Naresh Susarla Date: Fri, 27 Oct 2023 14:09:43 -0400 Subject: [PATCH 01/14] adding work in progress files for FE case study --- .../storage/double_loop/bad_ruc.json | 1 + .../bidding_multiperiod_usc/bus_detail.csv | 0 .../contingency_detail.csv | 0 .../bidding_multiperiod_usc/daily_summary.csv | 0 .../hourly_gen_summary.csv | 0 .../hourly_summary.csv | 0 .../bidding_multiperiod_usc/line_detail.csv | 0 .../renewables_detail.csv | 0 .../bidding_multiperiod_usc/runtimes.csv | 0 .../thermal_detail.csv | 0 .../virtual_detail.csv | 0 .../bidder_detail.csv | 97 + .../bidding_model_detail.csv | 97 + .../bus_detail.csv | 3505 ++++++++++ .../contingency_detail.csv | 1 + .../daily_summary.csv | 3 + .../hourly_gen_summary.csv | 49 + .../hourly_summary.csv | 49 + .../line_detail.csv | 5761 +++++++++++++++++ .../overall_simulation_output.csv | 2 + .../plots/daily_costs.png | Bin 0 -> 33105 bytes .../plots/stackgraph_2020-07-10.png | Bin 0 -> 41282 bytes .../plots/stackgraph_2020-07-11.png | Bin 0 -> 41147 bytes .../renewables_detail.csv | 3841 +++++++++++ .../runtimes.csv | 49 + .../thermal_detail.csv | 3649 +++++++++++ .../tracker_detail.csv | 481 ++ .../tracking_model_detail.csv | 481 ++ .../virtual_detail.csv | 1 + .../multiperiod_double_loop_usc.py | 367 ++ .../multiperiod_integrated_storage_usc.py | 240 + .../multiperiod_usc_storage_pricetaker.py | 452 ++ .../nlp_multiperiod_usc_static_doubleloop.py | 563 ++ .../double_loop/plot_doubleloop_results.py | 200 + .../double_loop/plugin_double_loop_usc.py | 121 + .../double_loop/run_double_loop_usc.py | 203 + .../run_prescient_double_loop_usc.py | 90 + .../storage/double_loop/usc_gen_data.pkl | Bin 0 -> 631 bytes .../storage/fe_ccs/CO2_capture.py | 506 ++ .../storage/fe_ccs/co2_capture_system.py | 384 ++ .../storage/fe_ccs/discharge_design_ccs.py | 1770 +++++ .../ultra_supercritical_powerplant_w_ccs.py | 395 ++ ...multiperiod_usc_pricetaker_unfixed_area.py | 317 + ..._gdp_multiperiod_integrated_storage_usc.py | 1080 +++ .../ultra_supercritical_powerplant_w_ccs.py | 268 + ..._gdp_mp_unfixed_area_new_storage_design.py | 2123 ++++++ .../uscp_design_data_new_storage_design.json | 25 + 47 files changed, 27171 insertions(+) create mode 100644 dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/bad_ruc.json create mode 100644 dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/bidding_multiperiod_usc/bus_detail.csv create mode 100644 dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/bidding_multiperiod_usc/contingency_detail.csv create mode 100644 dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/bidding_multiperiod_usc/daily_summary.csv create mode 100644 dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/bidding_multiperiod_usc/hourly_gen_summary.csv create mode 100644 dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/bidding_multiperiod_usc/hourly_summary.csv create mode 100644 dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/bidding_multiperiod_usc/line_detail.csv create mode 100644 dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/bidding_multiperiod_usc/renewables_detail.csv create mode 100644 dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/bidding_multiperiod_usc/runtimes.csv create mode 100644 dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/bidding_multiperiod_usc/thermal_detail.csv create mode 100644 dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/bidding_multiperiod_usc/virtual_detail.csv create mode 100644 dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/bidding_plugin_test_multiperiod_rankine/bidder_detail.csv create mode 100644 dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/bidding_plugin_test_multiperiod_rankine/bidding_model_detail.csv create mode 100644 dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/bidding_plugin_test_multiperiod_rankine/bus_detail.csv create mode 100644 dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/bidding_plugin_test_multiperiod_rankine/contingency_detail.csv create mode 100644 dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/bidding_plugin_test_multiperiod_rankine/daily_summary.csv create mode 100644 dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/bidding_plugin_test_multiperiod_rankine/hourly_gen_summary.csv create mode 100644 dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/bidding_plugin_test_multiperiod_rankine/hourly_summary.csv create mode 100644 dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/bidding_plugin_test_multiperiod_rankine/line_detail.csv create mode 100644 dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/bidding_plugin_test_multiperiod_rankine/overall_simulation_output.csv create mode 100644 dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/bidding_plugin_test_multiperiod_rankine/plots/daily_costs.png create mode 100644 dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/bidding_plugin_test_multiperiod_rankine/plots/stackgraph_2020-07-10.png create mode 100644 dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/bidding_plugin_test_multiperiod_rankine/plots/stackgraph_2020-07-11.png create mode 100644 dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/bidding_plugin_test_multiperiod_rankine/renewables_detail.csv create mode 100644 dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/bidding_plugin_test_multiperiod_rankine/runtimes.csv create mode 100644 dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/bidding_plugin_test_multiperiod_rankine/thermal_detail.csv create mode 100644 dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/bidding_plugin_test_multiperiod_rankine/tracker_detail.csv create mode 100644 dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/bidding_plugin_test_multiperiod_rankine/tracking_model_detail.csv create mode 100644 dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/bidding_plugin_test_multiperiod_rankine/virtual_detail.csv create mode 100644 dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/multiperiod_double_loop_usc.py create mode 100644 dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/multiperiod_integrated_storage_usc.py create mode 100644 dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/multiperiod_usc_storage_pricetaker.py create mode 100644 dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/nlp_multiperiod_usc_static_doubleloop.py create mode 100644 dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/plot_doubleloop_results.py create mode 100644 dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/plugin_double_loop_usc.py create mode 100644 dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/run_double_loop_usc.py create mode 100644 dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/run_prescient_double_loop_usc.py create mode 100644 dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/usc_gen_data.pkl create mode 100644 dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/fe_ccs/CO2_capture.py create mode 100644 dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/fe_ccs/co2_capture_system.py create mode 100644 dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/fe_ccs/discharge_design_ccs.py create mode 100644 dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/fe_ccs/ultra_supercritical_powerplant_w_ccs.py create mode 100644 dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/gdp_mp/gdp_multiperiod_usc_pricetaker_unfixed_area.py create mode 100644 dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/gdp_mp/pricetaker_with_gdp_multiperiod_integrated_storage_usc.py create mode 100644 dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/gdp_mp/ultra_supercritical_powerplant_w_ccs.py create mode 100644 dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/gdp_mp/usc_storage_gdp_mp_unfixed_area_new_storage_design.py create mode 100644 dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/gdp_mp/uscp_design_data_new_storage_design.json diff --git a/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/bad_ruc.json b/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/bad_ruc.json new file mode 100644 index 000000000..d80a8b2de --- /dev/null +++ b/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/bad_ruc.json @@ -0,0 +1 @@ +{"elements": {"bus": {"Abel": {"id": "101", "base_kv": 138.0, "matpower_bustype": "PV", "vm": 1.04777, "va": -7.74152, "v_min": 0.95, "v_max": 1.05, "area": "1", "zone": "11.0"}, "Adams": {"id": "102", "base_kv": 138.0, "matpower_bustype": "PV", "vm": 1.04783, "va": -7.81784, "v_min": 0.95, "v_max": 1.05, "area": "1", "zone": "12.0"}, "Adler": {"id": "103", "base_kv": 138.0, "matpower_bustype": "PQ", "vm": 1.01085, "va": -7.2109, "v_min": 0.95, "v_max": 1.05, "area": "1", "zone": "11.0"}, "Agricola": {"id": "104", "base_kv": 138.0, "matpower_bustype": "PQ", "vm": 1.01765, "va": -10.56614, "v_min": 0.95, "v_max": 1.05, "area": "1", "zone": "11.0"}, "Aiken": {"id": "105", "base_kv": 138.0, "matpower_bustype": "PQ", "vm": 1.03568, "va": -10.70887, "v_min": 0.95, "v_max": 1.05, "area": "1", "zone": "11.0"}, "Alber": {"id": "106", "base_kv": 138.0, "matpower_bustype": "PQ", "vm": 1.03242, "va": -13.27944, "v_min": 0.95, "v_max": 1.05, "area": "1", "zone": "12.0"}, "Alder": {"id": "107", "base_kv": 138.0, "matpower_bustype": "PV", "vm": 1.03745, "va": -11.27673, "v_min": 0.95, "v_max": 1.05, "area": "1", "zone": "12.0"}, "Alger": {"id": "108", "base_kv": 138.0, "matpower_bustype": "PQ", "vm": 1.01024, "va": -13.74967, "v_min": 0.95, "v_max": 1.05, "area": "1", "zone": "12.0"}, "Ali": {"id": "109", "base_kv": 138.0, "matpower_bustype": "PQ", "vm": 1.0261, "va": -8.81524, "v_min": 0.95, "v_max": 1.05, "area": "1", "zone": "13.0"}, "Allen": {"id": "110", "base_kv": 138.0, "matpower_bustype": "PQ", "vm": 1.05, "va": -10.62063, "v_min": 0.95, "v_max": 1.05, "area": "1", "zone": "13.0"}, "Anna": {"id": "111", "base_kv": 230.0, "matpower_bustype": "PQ", "vm": 1.02764, "va": -3.91674, "v_min": 0.95, "v_max": 1.05, "area": "1", "zone": "13.0"}, "Archer": {"id": "112", "base_kv": 230.0, "matpower_bustype": "PQ", "vm": 1.02024, "va": -2.42424, "v_min": 0.95, "v_max": 1.05, "area": "1", "zone": "13.0"}, "Arne": {"id": "113", "base_kv": 230.0, "matpower_bustype": "ref", "vm": 1.03943, "va": 0.0, "v_min": 0.95, "v_max": 1.05, "area": "1", "zone": "14.0"}, "Arnold": {"id": "114", "base_kv": 230.0, "matpower_bustype": "PV", "vm": 1.04401, "va": -1.73056, "v_min": 0.95, "v_max": 1.05, "area": "1", "zone": "16.0"}, "Arthur": {"id": "115", "base_kv": 230.0, "matpower_bustype": "PV", "vm": 1.04335, "va": 7.9597, "v_min": 0.95, "v_max": 1.05, "area": "1", "zone": "16.0"}, "Asser": {"id": "116", "base_kv": 230.0, "matpower_bustype": "PV", "vm": 1.04565, "va": 7.56929, "v_min": 0.95, "v_max": 1.05, "area": "1", "zone": "16.0"}, "Aston": {"id": "117", "base_kv": 230.0, "matpower_bustype": "PQ", "vm": 1.04783, "va": 11.43417, "v_min": 0.95, "v_max": 1.05, "area": "1", "zone": "17.0"}, "Astor": {"id": "118", "base_kv": 230.0, "matpower_bustype": "PV", "vm": 1.05, "va": 12.52457, "v_min": 0.95, "v_max": 1.05, "area": "1", "zone": "17.0"}, "Attar": {"id": "119", "base_kv": 230.0, "matpower_bustype": "PQ", "vm": 1.03962, "va": 6.65777, "v_min": 0.95, "v_max": 1.05, "area": "1", "zone": "15.0"}, "Attila": {"id": "120", "base_kv": 230.0, "matpower_bustype": "PQ", "vm": 1.04399, "va": 7.7406, "v_min": 0.95, "v_max": 1.05, "area": "1", "zone": "15.0"}, "Attlee": {"id": "121", "base_kv": 230.0, "matpower_bustype": "PV", "vm": 1.05, "va": 13.08653, "v_min": 0.95, "v_max": 1.05, "area": "1", "zone": "17.0"}, "Aubrey": {"id": "122", "base_kv": 230.0, "matpower_bustype": "PV", "vm": 1.05, "va": 18.94978, "v_min": 0.95, "v_max": 1.05, "area": "1", "zone": "17.0"}, "Austen": {"id": "123", "base_kv": 230.0, "matpower_bustype": "PV", "vm": 1.05, "va": 9.05617, "v_min": 0.95, "v_max": 1.05, "area": "1", "zone": "15.0"}, "Avery": {"id": "124", "base_kv": 230.0, "matpower_bustype": "PQ", "vm": 1.01155, "va": 2.38339, "v_min": 0.95, "v_max": 1.05, "area": "1", "zone": "16.0"}, "Bach": {"id": "201", "base_kv": 138.0, "matpower_bustype": "PV", "vm": 1.04841, "va": -10.68973, "v_min": 0.95, "v_max": 1.05, "area": "2", "zone": "21.0"}, "Bacon": {"id": "202", "base_kv": 138.0, "matpower_bustype": "PV", "vm": 1.04844, "va": -10.75906, "v_min": 0.95, "v_max": 1.05, "area": "2", "zone": "22.0"}, "Baffin": {"id": "203", "base_kv": 138.0, "matpower_bustype": "PQ", "vm": 1.01886, "va": -10.47453, "v_min": 0.95, "v_max": 1.05, "area": "2", "zone": "21.0"}, "Bailey": {"id": "204", "base_kv": 138.0, "matpower_bustype": "PQ", "vm": 1.0189, "va": -13.48479, "v_min": 0.95, "v_max": 1.05, "area": "2", "zone": "21.0"}, "Bain": {"id": "205", "base_kv": 138.0, "matpower_bustype": "PQ", "vm": 1.03603, "va": -13.61187, "v_min": 0.95, "v_max": 1.05, "area": "2", "zone": "21.0"}, "Bajer": {"id": "206", "base_kv": 138.0, "matpower_bustype": "PQ", "vm": 1.03259, "va": -16.15672, "v_min": 0.95, "v_max": 1.05, "area": "2", "zone": "22.0"}, "Baker": {"id": "207", "base_kv": 138.0, "matpower_bustype": "PV", "vm": 1.03973, "va": -13.46606, "v_min": 0.95, "v_max": 1.05, "area": "2", "zone": "22.0"}, "Balch": {"id": "208", "base_kv": 138.0, "matpower_bustype": "PQ", "vm": 1.01203, "va": -16.22359, "v_min": 0.95, "v_max": 1.05, "area": "2", "zone": "22.0"}, "Balzac": {"id": "209", "base_kv": 138.0, "matpower_bustype": "PQ", "vm": 1.02781, "va": -11.72409, "v_min": 0.95, "v_max": 1.05, "area": "2", "zone": "23.0"}, "Banks": {"id": "210", "base_kv": 138.0, "matpower_bustype": "PQ", "vm": 1.05, "va": -13.47986, "v_min": 0.95, "v_max": 1.05, "area": "2", "zone": "23.0"}, "Bardeen": {"id": "211", "base_kv": 230.0, "matpower_bustype": "PQ", "vm": 1.02735, "va": -6.93336, "v_min": 0.95, "v_max": 1.05, "area": "2", "zone": "23.0"}, "Barkla": {"id": "212", "base_kv": 230.0, "matpower_bustype": "PQ", "vm": 1.01921, "va": -5.25334, "v_min": 0.95, "v_max": 1.05, "area": "2", "zone": "23.0"}, "Barlow": {"id": "213", "base_kv": 230.0, "matpower_bustype": "PV", "vm": 1.03752, "va": -3.2151, "v_min": 0.95, "v_max": 1.05, "area": "2", "zone": "24.0"}, "Barry": {"id": "214", "base_kv": 230.0, "matpower_bustype": "PV", "vm": 1.04335, "va": -4.68519, "v_min": 0.95, "v_max": 1.05, "area": "2", "zone": "26.0"}, "Barton": {"id": "215", "base_kv": 230.0, "matpower_bustype": "PV", "vm": 1.04327, "va": 4.63351, "v_min": 0.95, "v_max": 1.05, "area": "2", "zone": "26.0"}, "Basov": {"id": "216", "base_kv": 230.0, "matpower_bustype": "PV", "vm": 1.04556, "va": 4.70009, "v_min": 0.95, "v_max": 1.05, "area": "2", "zone": "26.0"}, "Bates": {"id": "217", "base_kv": 230.0, "matpower_bustype": "PQ", "vm": 1.04847, "va": 8.81839, "v_min": 0.95, "v_max": 1.05, "area": "2", "zone": "27.0"}, "Bayle": {"id": "218", "base_kv": 230.0, "matpower_bustype": "PV", "vm": 1.05, "va": 9.99473, "v_min": 0.95, "v_max": 1.05, "area": "2", "zone": "27.0"}, "Bede": {"id": "219", "base_kv": 230.0, "matpower_bustype": "PQ", "vm": 1.03946, "va": 4.21233, "v_min": 0.95, "v_max": 1.05, "area": "2", "zone": "25.0"}, "Beethoven": {"id": "220", "base_kv": 230.0, "matpower_bustype": "PQ", "vm": 1.0438, "va": 5.66449, "v_min": 0.95, "v_max": 1.05, "area": "2", "zone": "25.0"}, "Behring": {"id": "221", "base_kv": 230.0, "matpower_bustype": "PV", "vm": 1.05, "va": 10.63209, "v_min": 0.95, "v_max": 1.05, "area": "2", "zone": "27.0"}, "Bell": {"id": "222", "base_kv": 230.0, "matpower_bustype": "PV", "vm": 1.05, "va": 16.43203, "v_min": 0.95, "v_max": 1.05, "area": "2", "zone": "27.0"}, "Bloch": {"id": "223", "base_kv": 230.0, "matpower_bustype": "PV", "vm": 1.05, "va": 7.18151, "v_min": 0.95, "v_max": 1.05, "area": "2", "zone": "25.0"}, "Bordet": {"id": "224", "base_kv": 230.0, "matpower_bustype": "PQ", "vm": 1.01456, "va": -0.96005, "v_min": 0.95, "v_max": 1.05, "area": "2", "zone": "26.0"}, "Cabell": {"id": "301", "base_kv": 138.0, "matpower_bustype": "PV", "vm": 1.0486, "va": -9.34821, "v_min": 0.95, "v_max": 1.05, "area": "3", "zone": "31.0"}, "Cabot": {"id": "302", "base_kv": 138.0, "matpower_bustype": "PV", "vm": 1.04864, "va": -9.431, "v_min": 0.95, "v_max": 1.05, "area": "3", "zone": "32.0"}, "Caesar": {"id": "303", "base_kv": 138.0, "matpower_bustype": "PQ", "vm": 1.01045, "va": -8.57689, "v_min": 0.95, "v_max": 1.05, "area": "3", "zone": "31.0"}, "Caine": {"id": "304", "base_kv": 138.0, "matpower_bustype": "PQ", "vm": 1.01785, "va": -12.18784, "v_min": 0.95, "v_max": 1.05, "area": "3", "zone": "31.0"}, "Calvin": {"id": "305", "base_kv": 138.0, "matpower_bustype": "PQ", "vm": 1.03609, "va": -12.35005, "v_min": 0.95, "v_max": 1.05, "area": "3", "zone": "31.0"}, "Camus": {"id": "306", "base_kv": 138.0, "matpower_bustype": "PQ", "vm": 1.0326, "va": -14.94205, "v_min": 0.95, "v_max": 1.05, "area": "3", "zone": "32.0"}, "Carew": {"id": "307", "base_kv": 138.0, "matpower_bustype": "PV", "vm": 1.03804, "va": -12.54795, "v_min": 0.95, "v_max": 1.05, "area": "3", "zone": "32.0"}, "Carrel": {"id": "308", "base_kv": 138.0, "matpower_bustype": "PQ", "vm": 1.01056, "va": -15.18287, "v_min": 0.95, "v_max": 1.05, "area": "3", "zone": "32.0"}, "Carter": {"id": "309", "base_kv": 138.0, "matpower_bustype": "PQ", "vm": 1.02579, "va": -10.44617, "v_min": 0.95, "v_max": 1.05, "area": "3", "zone": "33.0"}, "Caruso": {"id": "310", "base_kv": 138.0, "matpower_bustype": "PQ", "vm": 1.05, "va": -12.30117, "v_min": 0.95, "v_max": 1.05, "area": "3", "zone": "33.0"}, "Cary": {"id": "311", "base_kv": 230.0, "matpower_bustype": "PQ", "vm": 1.0283, "va": -5.74069, "v_min": 0.95, "v_max": 1.05, "area": "3", "zone": "33.0"}, "Caxton": {"id": "312", "base_kv": 230.0, "matpower_bustype": "PQ", "vm": 1.019, "va": -4.14604, "v_min": 0.95, "v_max": 1.05, "area": "3", "zone": "33.0"}, "Cecil": {"id": "313", "base_kv": 230.0, "matpower_bustype": "PV", "vm": 1.03802, "va": -2.41513, "v_min": 0.95, "v_max": 1.05, "area": "3", "zone": "34.0"}, "Chain": {"id": "314", "base_kv": 230.0, "matpower_bustype": "PV", "vm": 1.04631, "va": -3.20793, "v_min": 0.95, "v_max": 1.05, "area": "3", "zone": "36.0"}, "Chase": {"id": "315", "base_kv": 230.0, "matpower_bustype": "PV", "vm": 1.043, "va": 7.05088, "v_min": 0.95, "v_max": 1.05, "area": "3", "zone": "36.0"}, "Chifa": {"id": "316", "base_kv": 230.0, "matpower_bustype": "PV", "vm": 1.04558, "va": 6.59875, "v_min": 0.95, "v_max": 1.05, "area": "3", "zone": "36.0"}, "Chuhsi": {"id": "317", "base_kv": 230.0, "matpower_bustype": "PQ", "vm": 1.04785, "va": 10.34418, "v_min": 0.95, "v_max": 1.05, "area": "3", "zone": "37.0"}, "Clark": {"id": "318", "base_kv": 230.0, "matpower_bustype": "PV", "vm": 1.05, "va": 11.34262, "v_min": 0.95, "v_max": 1.05, "area": "3", "zone": "37.0"}, "Clay": {"id": "319", "base_kv": 230.0, "matpower_bustype": "PQ", "vm": 1.03953, "va": 5.91539, "v_min": 0.95, "v_max": 1.05, "area": "3", "zone": "35.0"}, "Clive": {"id": "320", "base_kv": 230.0, "matpower_bustype": "PQ", "vm": 1.04389, "va": 7.19709, "v_min": 0.95, "v_max": 1.05, "area": "3", "zone": "35.0"}, "Cobb": {"id": "321", "base_kv": 230.0, "matpower_bustype": "PV", "vm": 1.05, "va": 12.34122, "v_min": 0.95, "v_max": 1.05, "area": "3", "zone": "37.0"}, "Cole": {"id": "322", "base_kv": 230.0, "matpower_bustype": "PV", "vm": 1.05, "va": 18.06914, "v_min": 0.95, "v_max": 1.05, "area": "3", "zone": "37.0"}, "Comte": {"id": "323", "base_kv": 230.0, "matpower_bustype": "PV", "vm": 1.05, "va": 8.62112, "v_min": 0.95, "v_max": 1.05, "area": "3", "zone": "35.0"}, "Curie": {"id": "324", "base_kv": 230.0, "matpower_bustype": "PQ", "vm": 1.01046, "va": 1.30606, "v_min": 0.95, "v_max": 1.05, "area": "3", "zone": "36.0"}, "Curtiss": {"id": "325", "base_kv": 230.0, "matpower_bustype": "PQ", "vm": 1.04986, "va": 8.99332, "v_min": 0.95, "v_max": 1.05, "area": "3", "zone": "35.0"}}, "load": {"Abel": {"bus": "Abel", "in_service": true, "p_load": {"data_type": "time_series", "values": [55.58980702736842, 53.278574968421054, 52.07619990315789, 52.276595760000006, 53.19841661052632, 55.85700149052632, 59.81147946947369, 63.6590796631579, 66.17070757894737, 69.16328549052632, 72.32953983157894, 73.5987135031579, 73.30479961263158, 74.8812469263158, 76.67144977263159, 77.48639287578948, 75.76298863578948, 72.98416625684212, 70.2187036294737, 69.48391884631579, 66.73181593263158, 61.70856010105263, 56.712023734736846, 53.14497771789473, 55.58980702736842, 53.278574968421054, 52.07619990315789, 52.276595760000006, 53.19841661052632, 55.85700149052632, 59.81147946947369, 63.6590796631579, 66.17070757894737, 69.16328549052632, 72.32953983157894, 73.5987135031579, 73.30479961263158, 74.8812469263158, 76.67144977263159, 77.48639287578948, 75.76298863578948, 72.98416625684212, 70.2187036294737, 69.48391884631579, 66.73181593263158, 61.70856010105263, 56.712023734736846, 53.14497771789473]}, "q_load": {"data_type": "time_series", "values": [11.323849579649123, 10.853043049122807, 10.608114795087719, 10.648936173333334, 10.836714494736842, 11.37827808140351, 12.183819891929824, 12.967590301754386, 13.479218210526316, 14.088817414736843, 14.73379515087719, 14.992330528421052, 14.932459180350877, 15.253587336842106, 15.618258287017545, 15.784265215438596, 15.43320138877193, 14.867144978245616, 14.303809998596492, 14.154131616842104, 13.593518060350876, 12.570262242807017, 11.552449279298246, 10.825828794385963, 11.323849579649123, 10.853043049122807, 10.608114795087719, 10.648936173333334, 10.836714494736842, 11.37827808140351, 12.183819891929824, 12.967590301754386, 13.479218210526316, 14.088817414736843, 14.73379515087719, 14.992330528421052, 14.932459180350877, 15.253587336842106, 15.618258287017545, 15.784265215438596, 15.43320138877193, 14.867144978245616, 14.303809998596492, 14.154131616842104, 13.593518060350876, 12.570262242807017, 11.552449279298246, 10.825828794385963]}, "area": "1", "zone": "11.0"}, "Adams": {"bus": "Adams", "in_service": true, "p_load": {"data_type": "time_series", "values": [49.927882237543855, 47.852053443859646, 46.77214250561403, 46.95212767333334, 47.780059363157896, 50.16786244982456, 53.719569523508774, 57.1752845122807, 59.43109847368421, 62.118876783157894, 64.96264225614034, 66.10254823894736, 65.83857002245614, 67.25445325789474, 68.8623206291228, 69.59426026807017, 68.04638794140351, 65.5505937677193, 63.06679863017544, 62.406853037894734, 59.93505690245614, 55.42342897964912, 50.93579909508772, 47.73206332070175, 49.927882237543855, 47.852053443859646, 46.77214250561403, 46.95212767333334, 47.780059363157896, 50.16786244982456, 53.719569523508774, 57.1752845122807, 59.43109847368421, 62.118876783157894, 64.96264225614034, 66.10254823894736, 65.83857002245614, 67.25445325789474, 68.8623206291228, 69.59426026807017, 68.04638794140351, 65.5505937677193, 63.06679863017544, 62.406853037894734, 59.93505690245614, 55.42342897964912, 50.93579909508772, 47.73206332070175]}, "q_load": {"data_type": "time_series", "values": [10.294408708771929, 9.866402771929824, 9.643740722807015, 9.680851066666667, 9.851558631578946, 10.34388916491228, 11.076199901754386, 11.78871845614035, 12.253834736842105, 12.808015831578947, 13.394359228070172, 13.629391389473682, 13.574962891228068, 13.866897578947368, 14.198416624561402, 14.349332014035086, 14.030183080701754, 13.51558634385965, 13.00346363508772, 12.867392378947367, 12.35774369122807, 11.427511129824559, 10.502226617543858, 9.841662540350875, 10.294408708771929, 9.866402771929824, 9.643740722807015, 9.680851066666667, 9.851558631578946, 10.34388916491228, 11.076199901754386, 11.78871845614035, 12.253834736842105, 12.808015831578947, 13.394359228070172, 13.629391389473682, 13.574962891228068, 13.866897578947368, 14.198416624561402, 14.349332014035086, 14.030183080701754, 13.51558634385965, 13.00346363508772, 12.867392378947367, 12.35774369122807, 11.427511129824559, 10.502226617543858, 9.841662540350875]}, "area": "1", "zone": "12.0"}, "Adler": {"bus": "Adler", "in_service": true, "p_load": {"data_type": "time_series", "values": [92.64967837894737, 88.79762494736842, 86.79366650526316, 87.1276596, 88.66402768421054, 93.09500248421054, 99.68579911578948, 106.09846610526316, 110.28451263157895, 115.27214248421053, 120.54923305263158, 122.66452250526316, 122.17466602105263, 124.80207821052632, 127.78574962105263, 129.1439881263158, 126.27164772631579, 121.64027709473685, 117.03117271578948, 115.80653141052632, 111.21969322105264, 102.84760016842105, 94.52003955789475, 88.5749628631579, 92.64967837894737, 88.79762494736842, 86.79366650526316, 87.1276596, 88.66402768421054, 93.09500248421054, 99.68579911578948, 106.09846610526316, 110.28451263157895, 115.27214248421053, 120.54923305263158, 122.66452250526316, 122.17466602105263, 124.80207821052632, 127.78574962105263, 129.1439881263158, 126.27164772631579, 121.64027709473685, 117.03117271578948, 115.80653141052632, 111.21969322105264, 102.84760016842105, 94.52003955789475, 88.5749628631579]}, "q_load": {"data_type": "time_series", "values": [19.04465611122807, 18.252845128070174, 17.840920337192983, 17.909574473333333, 18.225383468421054, 19.13619495508772, 20.490969818245613, 21.809129143859646, 22.669594263157894, 23.694829288421055, 24.779564571929825, 25.214374070526315, 25.11368134877193, 25.653760521052632, 26.267070755438596, 26.546264225964915, 25.955838699298244, 25.00383473614035, 24.05640772491228, 23.80467590105263, 22.86182582877193, 21.140895590175436, 19.429119242456142, 18.20707569964912, 19.04465611122807, 18.252845128070174, 17.840920337192983, 17.909574473333333, 18.225383468421054, 19.13619495508772, 20.490969818245613, 21.809129143859646, 22.669594263157894, 23.694829288421055, 24.779564571929825, 25.214374070526315, 25.11368134877193, 25.653760521052632, 26.267070755438596, 26.546264225964915, 25.955838699298244, 25.00383473614035, 24.05640772491228, 23.80467590105263, 22.86182582877193, 21.140895590175436, 19.429119242456142, 18.20707569964912]}, "area": "1", "zone": "11.0"}, "Agricola": {"bus": "Agricola", "in_service": true, "p_load": {"data_type": "time_series", "values": [38.08931222245614, 36.50569025614035, 35.68184067438596, 35.819148946666665, 36.45076693684211, 38.27238991017544, 40.98193963649123, 43.6182582877193, 45.33918852631579, 47.3896585768421, 49.55912914385964, 50.42874814105263, 50.22736269754385, 51.307521042105265, 52.53414151087719, 53.09252845192982, 51.91167739859649, 50.0076694722807, 48.11281544982456, 47.60935180210526, 45.723651657543854, 42.28179118035087, 38.85823848491228, 36.41415139929824, 38.08931222245614, 36.50569025614035, 35.68184067438596, 35.819148946666665, 36.45076693684211, 38.27238991017544, 40.98193963649123, 43.6182582877193, 45.33918852631579, 47.3896585768421, 49.55912914385964, 50.42874814105263, 50.22736269754385, 51.307521042105265, 52.53414151087719, 53.09252845192982, 51.91167739859649, 50.0076694722807, 48.11281544982456, 47.60935180210526, 45.723651657543854, 42.28179118035087, 38.85823848491228, 36.41415139929824]}, "q_load": {"data_type": "time_series", "values": [7.720806531578947, 7.399802078947368, 7.232805542105263, 7.2606383, 7.3886689736842115, 7.757916873684212, 8.30714992631579, 8.841538842105264, 9.19037605263158, 9.60601187368421, 10.045769421052631, 10.222043542105263, 10.181222168421051, 10.400173184210527, 10.648812468421053, 10.761999010526315, 10.522637310526315, 10.136689757894738, 9.75259772631579, 9.650544284210525, 9.268307768421051, 8.570633347368421, 7.8766699631578945, 7.381246905263158, 7.720806531578947, 7.399802078947368, 7.232805542105263, 7.2606383, 7.3886689736842115, 7.757916873684212, 8.30714992631579, 8.841538842105264, 9.19037605263158, 9.60601187368421, 10.045769421052631, 10.222043542105263, 10.181222168421051, 10.400173184210527, 10.648812468421053, 10.761999010526315, 10.522637310526315, 10.136689757894738, 9.75259772631579, 9.650544284210525, 9.268307768421051, 8.570633347368421, 7.8766699631578945, 7.381246905263158]}, "area": "1", "zone": "11.0"}, "Aiken": {"bus": "Aiken", "in_service": true, "p_load": {"data_type": "time_series", "values": [36.54515091614035, 35.02572984035088, 34.23527956596491, 34.36702128666667, 34.973033142105265, 36.7208065354386, 39.32050965122807, 41.84995051929825, 43.501113315789475, 45.468456202105266, 47.549975259649116, 48.38433943263158, 48.19111826385965, 49.22748640526316, 50.40437901719298, 50.94012864982456, 49.80714993649123, 47.98033152070175, 46.162295904561404, 45.679242945263155, 43.86999010385965, 40.567664510877194, 37.2829044922807, 34.93790201824561, 36.54515091614035, 35.02572984035088, 34.23527956596491, 34.36702128666667, 34.973033142105265, 36.7208065354386, 39.32050965122807, 41.84995051929825, 43.501113315789475, 45.468456202105266, 47.549975259649116, 48.38433943263158, 48.19111826385965, 49.22748640526316, 50.40437901719298, 50.94012864982456, 49.80714993649123, 47.98033152070175, 46.162295904561404, 45.679242945263155, 43.86999010385965, 40.567664510877194, 37.2829044922807, 34.93790201824561]}, "q_load": {"data_type": "time_series", "values": [7.206086096140351, 6.906481940350877, 6.750618505964911, 6.776595746666667, 6.8960910421052635, 7.240722415438596, 7.75333993122807, 8.252102919298245, 8.577684315789474, 8.965611082105264, 9.376051459649121, 9.540573972631577, 9.502474023859648, 9.706828305263157, 9.938891637192981, 10.04453240982456, 9.821128156491227, 9.460910440701754, 9.102424544561403, 9.007174665263157, 8.650420583859649, 7.999257790877192, 7.3515586322807005, 6.889163778245613, 7.206086096140351, 6.906481940350877, 6.750618505964911, 6.776595746666667, 6.8960910421052635, 7.240722415438596, 7.75333993122807, 8.252102919298245, 8.577684315789474, 8.965611082105264, 9.376051459649121, 9.540573972631577, 9.502474023859648, 9.706828305263157, 9.938891637192981, 10.04453240982456, 9.821128156491227, 9.460910440701754, 9.102424544561403, 9.007174665263157, 8.650420583859649, 7.999257790877192, 7.3515586322807005, 6.889163778245613]}, "area": "1", "zone": "11.0"}, "Alber": {"bus": "Alber", "in_service": true, "p_load": {"data_type": "time_series", "values": [70.00197921964912, 67.09153884912281, 65.57743691508772, 65.82978725333334, 66.99059869473685, 70.33844632140351, 75.31815933192983, 80.16328550175439, 83.32607621052632, 87.09450765473684, 91.0816427508772, 92.67986144842105, 92.30974766035088, 94.29490353684211, 96.54923304701755, 97.5754576954386, 95.40524494877194, 91.90598713824562, 88.4235527185965, 87.4982681768421, 84.03265710035087, 77.70707568280702, 71.41514099929825, 66.92330527438597, 70.00197921964912, 67.09153884912281, 65.57743691508772, 65.82978725333334, 66.99059869473685, 70.33844632140351, 75.31815933192983, 80.16328550175439, 83.32607621052632, 87.09450765473684, 91.0816427508772, 92.67986144842105, 92.30974766035088, 94.29490353684211, 96.54923304701755, 97.5754576954386, 95.40524494877194, 91.90598713824562, 88.4235527185965, 87.4982681768421, 84.03265710035087, 77.70707568280702, 71.41514099929825, 66.92330527438597]}, "q_load": {"data_type": "time_series", "values": [14.4121721922807, 13.812963880701755, 13.501237011929824, 13.553191493333333, 13.792182084210527, 14.481444830877193, 15.506679862456142, 16.50420583859649, 17.15536863157895, 17.931222164210524, 18.752102919298245, 19.081147945263158, 19.0049480477193, 19.413656610526317, 19.877783274385965, 20.089064819649124, 19.642256312982457, 18.92182088140351, 18.204849089122806, 18.014349330526315, 17.300841167719298, 15.998515581754384, 14.703117264561403, 13.778327556491227, 14.4121721922807, 13.812963880701755, 13.501237011929824, 13.553191493333333, 13.792182084210527, 14.481444830877193, 15.506679862456142, 16.50420583859649, 17.15536863157895, 17.931222164210524, 18.752102919298245, 19.081147945263158, 19.0049480477193, 19.413656610526317, 19.877783274385965, 20.089064819649124, 19.642256312982457, 18.92182088140351, 18.204849089122806, 18.014349330526315, 17.300841167719298, 15.998515581754384, 14.703117264561403, 13.778327556491227]}, "area": "1", "zone": "12.0"}, "Alder": {"bus": "Alder", "in_service": true, "p_load": {"data_type": "time_series", "values": [64.34005442982456, 61.665017324561404, 60.27337951754385, 60.505319166666666, 61.57224144736842, 64.64930728070175, 69.2262493859649, 73.67949035087719, 76.58646710526315, 80.05009894736843, 83.71474517543858, 85.18369618421052, 84.84351807017543, 86.66810986842106, 88.74010390350877, 89.6833250877193, 87.68864425438596, 84.47241464912281, 81.27164771929824, 80.42120236842105, 77.23589807017544, 71.4219445614035, 65.63891635964912, 61.510390877192975, 64.34005442982456, 61.665017324561404, 60.27337951754385, 60.505319166666666, 61.57224144736842, 64.64930728070175, 69.2262493859649, 73.67949035087719, 76.58646710526315, 80.05009894736843, 83.71474517543858, 85.18369618421052, 84.84351807017543, 86.66810986842106, 88.74010390350877, 89.6833250877193, 87.68864425438596, 84.47241464912281, 81.27164771929824, 80.42120236842105, 77.23589807017544, 71.4219445614035, 65.63891635964912, 61.510390877192975]}, "q_load": {"data_type": "time_series", "values": [12.868010885964914, 12.33300346491228, 12.054675903508771, 12.101063833333335, 12.314448289473685, 12.929861456140351, 13.845249877192982, 14.735898070175438, 15.317293421052632, 16.010019789473684, 16.742949035087715, 17.036739236842106, 16.96870361403509, 17.333621973684213, 17.748020780701754, 17.93666501754386, 17.537728850877194, 16.894482929824562, 16.25432954385965, 16.08424047368421, 15.447179614035088, 14.284388912280702, 13.127783271929824, 12.302078175438595, 12.868010885964914, 12.33300346491228, 12.054675903508771, 12.101063833333335, 12.314448289473685, 12.929861456140351, 13.845249877192982, 14.735898070175438, 15.317293421052632, 16.010019789473684, 16.742949035087715, 17.036739236842106, 16.96870361403509, 17.333621973684213, 17.748020780701754, 17.93666501754386, 17.537728850877194, 16.894482929824562, 16.25432954385965, 16.08424047368421, 15.447179614035088, 14.284388912280702, 13.127783271929824, 12.302078175438595]}, "area": "1", "zone": "12.0"}, "Alger": {"bus": "Alger", "in_service": true, "p_load": {"data_type": "time_series", "values": [88.01719446, 84.3577437, 82.45398318, 82.77127662, 84.2308263, 88.44025236, 94.70150916, 100.7935428, 104.770287, 109.50853536, 114.52177139999999, 116.53129638, 116.06593271999999, 118.5619743, 121.39646214, 122.68678872, 119.95806534, 115.55826324, 111.17961408000001, 110.01620483999999, 105.65870856, 97.70522016, 89.79403758, 84.14621471999999, 88.01719446, 84.3577437, 82.45398318, 82.77127662, 84.2308263, 88.44025236, 94.70150916, 100.7935428, 104.770287, 109.50853536, 114.52177139999999, 116.53129638, 116.06593271999999, 118.5619743, 121.39646214, 122.68678872, 119.95806534, 115.55826324, 111.17961408000001, 110.01620483999999, 105.65870856, 97.70522016, 89.79403758, 84.14621471999999]}, "q_load": {"data_type": "time_series", "values": [18.015215240350877, 17.26620485087719, 16.876546264912278, 16.941489366666666, 17.240227605263158, 18.10180603859649, 19.383349828070173, 20.630257298245613, 21.444210789473683, 22.414027705263155, 23.440128649122805, 23.851434931578947, 23.75618505964912, 24.267070763157893, 24.847229092982452, 25.1113310245614, 24.55282039122807, 23.652276101754385, 22.75606136140351, 22.51793666315789, 21.62605145964912, 19.99814447719298, 18.378896580701753, 17.222909445614032, 18.015215240350877, 17.26620485087719, 16.876546264912278, 16.941489366666666, 17.240227605263158, 18.10180603859649, 19.383349828070173, 20.630257298245613, 21.444210789473683, 22.414027705263155, 23.440128649122805, 23.851434931578947, 23.75618505964912, 24.267070763157893, 24.847229092982452, 25.1113310245614, 24.55282039122807, 23.652276101754385, 22.75606136140351, 22.51793666315789, 21.62605145964912, 19.99814447719298, 18.378896580701753, 17.222909445614032]}, "area": "1", "zone": "12.0"}, "Ali": {"bus": "Ali", "in_service": true, "p_load": {"data_type": "time_series", "values": [90.07607620175438, 86.33102425438597, 84.38273132456139, 84.70744683333334, 86.20113802631579, 90.50903019298245, 96.91674914035087, 103.15128649122806, 107.22105394736842, 112.07013852631579, 117.20064324561402, 119.25717465789472, 118.7809252982456, 121.33535381578947, 124.23614546491227, 125.55665512280702, 122.76410195614035, 118.26138050877194, 113.78030680701754, 112.58968331578946, 108.13025729824561, 99.9907223859649, 91.89448290350877, 86.11454722807017, 90.07607620175438, 86.33102425438597, 84.38273132456139, 84.70744683333334, 86.20113802631579, 90.50903019298245, 96.91674914035087, 103.15128649122806, 107.22105394736842, 112.07013852631579, 117.20064324561402, 119.25717465789472, 118.7809252982456, 121.33535381578947, 124.23614546491227, 125.55665512280702, 122.76410195614035, 118.26138050877194, 113.78030680701754, 112.58968331578946, 108.13025729824561, 99.9907223859649, 91.89448290350877, 86.11454722807017]}, "q_load": {"data_type": "time_series", "values": [18.52993567578947, 17.759524989473682, 17.358733301052627, 17.42553192, 17.732805536842104, 18.619000496842105, 19.937159823157895, 21.21969322105263, 22.05690252631579, 23.054428496842103, 24.10984661052631, 24.532904501052627, 24.434933204210523, 24.960415642105264, 25.557149924210524, 25.828797625263157, 25.254329545263158, 24.32805541894737, 23.406234543157893, 23.161306282105258, 22.243938644210527, 20.569520033684206, 18.904007911578947, 17.714992572631576, 18.52993567578947, 17.759524989473682, 17.358733301052627, 17.42553192, 17.732805536842104, 18.619000496842105, 19.937159823157895, 21.21969322105263, 22.05690252631579, 23.054428496842103, 24.10984661052631, 24.532904501052627, 24.434933204210523, 24.960415642105264, 25.557149924210524, 25.828797625263157, 25.254329545263158, 24.32805541894737, 23.406234543157893, 23.161306282105258, 22.243938644210527, 20.569520033684206, 18.904007911578947, 17.714992572631576]}, "area": "1", "zone": "13.0"}, "Allen": {"bus": "Allen", "in_service": true, "p_load": {"data_type": "time_series", "values": [100.37048491052632, 96.1974270263158, 94.02647204736843, 94.38829790000001, 96.05269665789474, 100.85291935789475, 107.99294904210528, 114.94000494736842, 119.47488868421054, 124.87815435789476, 130.59500247368422, 132.88656604736843, 132.3558881894737, 135.20225139473686, 138.4345620894737, 139.9059871368421, 136.79428503684213, 131.7769668526316, 126.78377044210528, 125.45707569473684, 120.48800098947369, 111.41823351578948, 102.39670952105264, 95.95620976842105, 100.37048491052632, 96.1974270263158, 94.02647204736843, 94.38829790000001, 96.05269665789474, 100.85291935789475, 107.99294904210528, 114.94000494736842, 119.47488868421054, 124.87815435789476, 130.59500247368422, 132.88656604736843, 132.3558881894737, 135.20225139473686, 138.4345620894737, 139.9059871368421, 136.79428503684213, 131.7769668526316, 126.78377044210528, 125.45707569473684, 120.48800098947369, 111.41823351578948, 102.39670952105264, 95.95620976842105]}, "q_load": {"data_type": "time_series", "values": [20.588817417543858, 19.732805543859648, 19.287481445614038, 19.361702133333335, 19.703117263157896, 20.687778329824564, 22.152399803508775, 23.5774369122807, 24.507669473684214, 25.616031663157898, 26.78871845614035, 27.25878277894737, 27.14992578245614, 27.73379515789474, 28.39683324912281, 28.698664028070173, 28.06036616140351, 27.0311726877193, 26.006927270175442, 25.734784757894737, 24.71548738245614, 22.855022259649125, 21.00445323508772, 19.683325080701753, 20.588817417543858, 19.732805543859648, 19.287481445614038, 19.361702133333335, 19.703117263157896, 20.687778329824564, 22.152399803508775, 23.5774369122807, 24.507669473684214, 25.616031663157898, 26.78871845614035, 27.25878277894737, 27.14992578245614, 27.73379515789474, 28.39683324912281, 28.698664028070173, 28.06036616140351, 27.0311726877193, 26.006927270175442, 25.734784757894737, 24.71548738245614, 22.855022259649125, 21.00445323508772, 19.683325080701753]}, "area": "1", "zone": "13.0"}, "Arne": {"bus": "Arne", "in_service": true, "p_load": {"data_type": "time_series", "values": [136.40091539122807, 130.72983672807018, 127.77956457719297, 128.27127663333334, 130.53315186842104, 137.05653143508772, 146.75964869824563, 156.20051954385966, 162.3633102631579, 169.70620976842105, 177.4752597719298, 180.5894359105263, 179.8682583087719, 183.73639292105264, 188.1290202754386, 190.12864918596492, 185.89992581929823, 179.08151905614037, 172.2958931649123, 170.49294902105262, 163.7401039087719, 151.41452247017543, 139.15450268245615, 130.40202865964912, 136.40091539122807, 130.72983672807018, 127.77956457719297, 128.27127663333334, 130.53315186842104, 137.05653143508772, 146.75964869824563, 156.20051954385966, 162.3633102631579, 169.70620976842105, 177.4752597719298, 180.5894359105263, 179.8682583087719, 183.73639292105264, 188.1290202754386, 190.12864918596492, 185.89992581929823, 179.08151905614037, 172.2958931649123, 170.49294902105262, 163.7401039087719, 151.41452247017543, 139.15450268245615, 130.40202865964912]}, "q_load": {"data_type": "time_series", "values": [27.79490351368421, 26.63928748421053, 26.038099951578946, 26.138297880000003, 26.599208305263158, 27.92850074526316, 29.905739734736848, 31.829539831578952, 33.085353789473686, 34.58164274526316, 36.16476991578947, 36.79935675157895, 36.652399806315785, 37.4406234631579, 38.33572488631579, 38.74319643789474, 37.881494317894735, 36.49208312842106, 35.10935181473685, 34.741959423157894, 33.36590796631579, 30.854280050526317, 28.356011867368426, 26.57248885894737, 27.79490351368421, 26.63928748421053, 26.038099951578946, 26.138297880000003, 26.599208305263158, 27.92850074526316, 29.905739734736848, 31.829539831578952, 33.085353789473686, 34.58164274526316, 36.16476991578947, 36.79935675157895, 36.652399806315785, 37.4406234631579, 38.33572488631579, 38.74319643789474, 37.881494317894735, 36.49208312842106, 35.10935181473685, 34.741959423157894, 33.36590796631579, 30.854280050526317, 28.356011867368426, 26.57248885894737]}, "area": "1", "zone": "14.0"}, "Arnold": {"bus": "Arnold", "in_service": true, "p_load": {"data_type": "time_series", "values": [99.85576447508771, 95.70410688771929, 93.54428501122806, 93.90425534666667, 95.56011872631579, 100.33572489964912, 107.43913904701755, 114.3505690245614, 118.86219694736842, 124.23775356631579, 129.92528451228068, 132.20509647789473, 131.67714004491228, 134.50890651578948, 137.7246412582456, 139.18852053614035, 136.09277588280702, 131.1011875354386, 126.13359726035088, 124.81370607578947, 119.87011380491228, 110.84685795929823, 101.87159819017543, 95.4641266414035, 99.85576447508771, 95.70410688771929, 93.54428501122806, 93.90425534666667, 95.56011872631579, 100.33572489964912, 107.43913904701755, 114.3505690245614, 118.86219694736842, 124.23775356631579, 129.92528451228068, 132.20509647789473, 131.67714004491228, 134.50890651578948, 137.7246412582456, 139.18852053614035, 136.09277588280702, 131.1011875354386, 126.13359726035088, 124.81370607578947, 119.87011380491228, 110.84685795929823, 101.87159819017543, 95.4641266414035]}, "q_load": {"data_type": "time_series", "values": [20.074096982105264, 19.239485405263157, 18.80529440947368, 18.877659580000003, 19.21053933157895, 20.17058387157895, 21.598589808421053, 22.988000989473683, 23.894977736842105, 24.975630871578947, 26.119000494736838, 26.577313209473683, 26.471177637894737, 27.04045027894737, 27.68691241789474, 27.98119742736842, 27.35885700736842, 26.35539337052632, 25.356754088421056, 25.09141513894737, 24.09760019789474, 22.283646703157892, 20.479341904210525, 19.19124195368421, 20.074096982105264, 19.239485405263157, 18.80529440947368, 18.877659580000003, 19.21053933157895, 20.17058387157895, 21.598589808421053, 22.988000989473683, 23.894977736842105, 24.975630871578947, 26.119000494736838, 26.577313209473683, 26.471177637894737, 27.04045027894737, 27.68691241789474, 27.98119742736842, 27.35885700736842, 26.35539337052632, 25.356754088421056, 25.09141513894737, 24.09760019789474, 22.283646703157892, 20.479341904210525, 19.19124195368421]}, "area": "1", "zone": "16.0"}, "Arthur": {"bus": "Arthur", "in_service": true, "p_load": {"data_type": "time_series", "values": [163.16637803403506, 156.38248393508772, 152.8532904564912, 153.44148940666668, 156.14720431052632, 163.95064326385966, 175.55776844280703, 186.85118752982456, 194.22328057894737, 203.0070509305263, 212.30059376491226, 216.02585352315788, 215.1631618259649, 219.7903266263158, 225.04490349929824, 227.43691242245612, 222.3784018291228, 214.22204355017544, 206.10489861614036, 203.94816920631578, 195.8702375059649, 181.12605140771927, 166.46029188807017, 155.99035126456138, 163.16637803403506, 156.38248393508772, 152.8532904564912, 153.44148940666668, 156.14720431052632, 163.95064326385966, 175.55776844280703, 186.85118752982456, 194.22328057894737, 203.0070509305263, 212.30059376491226, 216.02585352315788, 215.1631618259649, 219.7903266263158, 225.04490349929824, 227.43691242245612, 222.3784018291228, 214.22204355017544, 206.10489861614036, 203.94816920631578, 195.8702375059649, 181.12605140771927, 166.46029188807017, 155.99035126456138]}, "q_load": {"data_type": "time_series", "values": [32.94210786807017, 31.572488870175437, 30.85997031298245, 30.978723413333334, 31.52498762105263, 33.1004453277193, 35.44383968561404, 37.72389905964912, 39.21227115789473, 40.98565066105263, 42.86194952982456, 43.61405244631578, 43.43988125192982, 44.37407225263158, 45.43493319859649, 45.917862444912274, 44.89658585824561, 43.24987630035088, 41.6110836322807, 41.17565561263157, 39.54477981192982, 36.56803561543859, 33.60712517614035, 31.4933201291228, 32.94210786807017, 31.572488870175437, 30.85997031298245, 30.978723413333334, 31.52498762105263, 33.1004453277193, 35.44383968561404, 37.72389905964912, 39.21227115789473, 40.98565066105263, 42.86194952982456, 43.61405244631578, 43.43988125192982, 44.37407225263158, 45.43493319859649, 45.917862444912274, 44.89658585824561, 43.24987630035088, 41.6110836322807, 41.17565561263157, 39.54477981192982, 36.56803561543859, 33.60712517614035, 31.4933201291228]}, "area": "1", "zone": "16.0"}, "Asser": {"bus": "Asser", "in_service": true, "p_load": {"data_type": "time_series", "values": [51.47204354385964, 49.33201385964912, 48.218703614035086, 48.40425533333333, 49.25779315789474, 51.719445824561404, 55.38099950877193, 58.94359228070175, 61.26917368421052, 64.04007915789474, 66.97179614035088, 68.14695694736842, 67.87481445614034, 69.33448789473684, 70.99208312280702, 71.74666007017544, 70.15091540350878, 67.57793171929825, 65.01731817543859, 64.33696189473683, 61.788718456140344, 57.1375556491228, 52.511133087719294, 49.20831270175438, 51.47204354385964, 49.33201385964912, 48.218703614035086, 48.40425533333333, 49.25779315789474, 51.719445824561404, 55.38099950877193, 58.94359228070175, 61.26917368421052, 64.04007915789474, 66.97179614035088, 68.14695694736842, 67.87481445614034, 69.33448789473684, 70.99208312280702, 71.74666007017544, 70.15091540350878, 67.57793171929825, 65.01731817543859, 64.33696189473683, 61.788718456140344, 57.1375556491228, 52.511133087719294, 49.20831270175438]}, "q_load": {"data_type": "time_series", "values": [10.294408708771929, 9.866402771929826, 9.643740722807017, 9.680851066666667, 9.851558631578948, 10.343889164912282, 11.076199901754386, 11.788718456140352, 12.253834736842105, 12.808015831578949, 13.394359228070176, 13.629391389473685, 13.574962891228068, 13.866897578947368, 14.198416624561403, 14.349332014035088, 14.030183080701756, 13.51558634385965, 13.00346363508772, 12.867392378947367, 12.35774369122807, 11.42751112982456, 10.50222661754386, 9.841662540350876, 10.294408708771929, 9.866402771929826, 9.643740722807017, 9.680851066666667, 9.851558631578948, 10.343889164912282, 11.076199901754386, 11.788718456140352, 12.253834736842105, 12.808015831578949, 13.394359228070176, 13.629391389473685, 13.574962891228068, 13.866897578947368, 14.198416624561403, 14.349332014035088, 14.030183080701756, 13.51558634385965, 13.00346363508772, 12.867392378947367, 12.35774369122807, 11.42751112982456, 10.50222661754386, 9.841662540350876]}, "area": "1", "zone": "16.0"}, "Astor": {"bus": "Astor", "in_service": true, "p_load": {"data_type": "time_series", "values": [171.40190500105263, 164.27560615263158, 160.56828303473685, 161.18617026, 164.0284512157895, 172.22575459578948, 184.41872836421055, 196.28216229473685, 204.02634836842105, 213.2534635957895, 223.01608114736842, 226.92936663473685, 226.02313213894737, 230.8838446894737, 236.4036367989474, 238.91637803368423, 233.60254829368424, 225.03451262526318, 216.50766952421054, 214.2420831094737, 205.7564324589474, 190.26806031157895, 174.8620731821053, 163.8636812968421, 171.40190500105263, 164.27560615263158, 160.56828303473685, 161.18617026, 164.0284512157895, 172.22575459578948, 184.41872836421055, 196.28216229473685, 204.02634836842105, 213.2534635957895, 223.01608114736842, 226.92936663473685, 226.02313213894737, 230.8838446894737, 236.4036367989474, 238.91637803368423, 233.60254829368424, 225.03451262526318, 216.50766952421054, 214.2420831094737, 205.7564324589474, 190.26806031157895, 174.8620731821053, 163.8636812968421]}, "q_load": {"data_type": "time_series", "values": [35.00098960982456, 33.545769424561406, 32.788718457543865, 32.91489362666667, 33.49529934736842, 35.169223160701755, 37.65907966596492, 40.081642750877194, 41.66303810526316, 43.54725382736843, 45.5408213754386, 46.33993072421053, 46.15487383017544, 47.14745176842106, 48.274616523508776, 48.7877288477193, 47.70262247438597, 45.95299356912281, 44.21177635929825, 43.74913408842106, 42.016328550175444, 38.85353784140351, 35.70757049964913, 33.46165263719298, 35.00098960982456, 33.545769424561406, 32.788718457543865, 32.91489362666667, 33.49529934736842, 35.169223160701755, 37.65907966596492, 40.081642750877194, 41.66303810526316, 43.54725382736843, 45.5408213754386, 46.33993072421053, 46.15487383017544, 47.14745176842106, 48.274616523508776, 48.7877288477193, 47.70262247438597, 45.95299356912281, 44.21177635929825, 43.74913408842106, 42.016328550175444, 38.85353784140351, 35.70757049964913, 33.46165263719298]}, "area": "1", "zone": "17.0"}, "Attar": {"bus": "Attar", "in_service": true, "p_load": {"data_type": "time_series", "values": [93.16439881438595, 89.2909450859649, 87.27585354140349, 87.61170215333333, 89.15660561578947, 93.61219694245614, 100.2396091108772, 106.68790202807017, 110.89720436842104, 115.91254327578947, 121.21895101403507, 123.34599207473683, 122.85341416561403, 125.49542308947368, 128.49567045228068, 129.86145472701753, 126.97315688035087, 122.31605641192982, 117.68134589754385, 116.44990102947366, 111.83758040561402, 103.41897572491227, 95.04515088877193, 89.06704599017543, 93.16439881438595, 89.2909450859649, 87.27585354140349, 87.61170215333333, 89.15660561578947, 93.61219694245614, 100.2396091108772, 106.68790202807017, 110.89720436842104, 115.91254327578947, 121.21895101403507, 123.34599207473683, 122.85341416561403, 125.49542308947368, 128.49567045228068, 129.86145472701753, 126.97315688035087, 122.31605641192982, 117.68134589754385, 116.44990102947366, 111.83758040561402, 103.41897572491227, 95.04515088877193, 89.06704599017543]}, "q_load": {"data_type": "time_series", "values": [19.04465611122807, 18.252845128070174, 17.84092033719298, 17.909574473333333, 18.225383468421054, 19.13619495508772, 20.490969818245617, 21.80912914385965, 22.669594263157894, 23.694829288421055, 24.77956457192982, 25.214374070526315, 25.11368134877193, 25.65376052105263, 26.267070755438592, 26.54626422596491, 25.955838699298244, 25.00383473614035, 24.05640772491228, 23.80467590105263, 22.861825828771927, 21.140895590175436, 19.429119242456142, 18.20707569964912, 19.04465611122807, 18.252845128070174, 17.84092033719298, 17.909574473333333, 18.225383468421054, 19.13619495508772, 20.490969818245617, 21.80912914385965, 22.669594263157894, 23.694829288421055, 24.77956457192982, 25.214374070526315, 25.11368134877193, 25.65376052105263, 26.267070755438592, 26.54626422596491, 25.955838699298244, 25.00383473614035, 24.05640772491228, 23.80467590105263, 22.861825828771927, 21.140895590175436, 19.429119242456142, 18.20707569964912]}, "area": "1", "zone": "15.0"}, "Attila": {"bus": "Attila", "in_service": true, "p_load": {"data_type": "time_series", "values": [65.88421573614035, 63.144977740350875, 61.7199406259649, 61.95744682666666, 63.04997524210526, 66.2008906554386, 70.88767937122807, 75.44779811929824, 78.42454231578947, 81.97130132210526, 85.72389905964911, 87.22810489263158, 86.87976250385964, 88.74814450526316, 90.86986639719298, 91.83572488982455, 89.79317171649123, 86.49975260070175, 83.2221672645614, 82.35131122526315, 79.08955962385964, 73.13607123087718, 67.2142503522807, 62.98664025824561, 65.88421573614035, 63.144977740350875, 61.7199406259649, 61.95744682666666, 63.04997524210526, 66.2008906554386, 70.88767937122807, 75.44779811929824, 78.42454231578947, 81.97130132210526, 85.72389905964911, 87.22810489263158, 86.87976250385964, 88.74814450526316, 90.86986639719298, 91.83572488982455, 89.79317171649123, 86.49975260070175, 83.2221672645614, 82.35131122526315, 79.08955962385964, 73.13607123087718, 67.2142503522807, 62.98664025824561]}, "q_load": {"data_type": "time_series", "values": [13.382731321403508, 12.826323603508772, 12.53686293964912, 12.585106386666666, 12.80702622105263, 13.447055914385965, 14.399059872280702, 15.325333992982456, 15.929985157894736, 16.650420581052632, 17.412666996491225, 17.71820880631579, 17.64745175859649, 18.026966852631578, 18.457941611929822, 18.65413161824561, 18.23923800491228, 17.570262247017546, 16.904502725614037, 16.727610092631576, 16.06506679859649, 14.855764468771927, 13.652894602807017, 12.79416130245614, 13.382731321403508, 12.826323603508772, 12.53686293964912, 12.585106386666666, 12.80702622105263, 13.447055914385965, 14.399059872280702, 15.325333992982456, 15.929985157894736, 16.650420581052632, 17.412666996491225, 17.71820880631579, 17.64745175859649, 18.026966852631578, 18.457941611929822, 18.65413161824561, 18.23923800491228, 17.570262247017546, 16.904502725614037, 16.727610092631576, 16.06506679859649, 14.855764468771927, 13.652894602807017, 12.79416130245614]}, "area": "1", "zone": "15.0"}, "Bach": {"bus": "Bach", "in_service": true, "p_load": {"data_type": "time_series", "values": [56.26947899368421, 53.41350543157895, 51.30552493894737, 50.65953093473685, 49.8095388, 50.40453330947369, 55.55548561263158, 61.828427520000005, 67.91437117894736, 72.43632928421053, 76.95828742736842, 81.08924919157896, 84.42121831578947, 86.2742011831579, 86.05320320842107, 86.30820083368423, 85.47520858105263, 83.26522902315789, 80.1032583031579, 79.57626317052632, 75.68329922526317, 70.88934361263158, 65.6873917768421, 60.553439317894735, 56.26947899368421, 53.41350543157895, 51.30552493894737, 50.65953093473685, 49.8095388, 50.40453330947369, 55.55548561263158, 61.828427520000005, 67.91437117894736, 72.43632928421053, 76.95828742736842, 81.08924919157896, 84.42121831578947, 86.2742011831579, 86.05320320842107, 86.30820083368423, 85.47520858105263, 83.26522902315789, 80.1032583031579, 79.57626317052632, 75.68329922526317, 70.88934361263158, 65.6873917768421, 60.553439317894735]}, "q_load": {"data_type": "time_series", "values": [11.462301276491226, 10.880528884210525, 10.451125450526316, 10.319534079298247, 10.146387533333332, 10.267590118596493, 11.316858180350877, 12.59467968, 13.834408943859648, 14.755548557894736, 15.67668817964912, 16.518180390877195, 17.19691484210526, 17.57437431508772, 17.52935620912281, 17.581300169824562, 17.411616562807016, 16.961435541754383, 16.31733039508772, 16.209979534736842, 15.416968360701755, 14.440421847017543, 13.380764991578946, 12.334959861052631, 11.462301276491226, 10.880528884210525, 10.451125450526316, 10.319534079298247, 10.146387533333332, 10.267590118596493, 11.316858180350877, 12.59467968, 13.834408943859648, 14.755548557894736, 15.67668817964912, 16.518180390877195, 17.19691484210526, 17.57437431508772, 17.52935620912281, 17.581300169824562, 17.411616562807016, 16.961435541754383, 16.31733039508772, 16.209979534736842, 15.416968360701755, 14.440421847017543, 13.380764991578946, 12.334959861052631]}, "area": "2", "zone": "21.0"}, "Bacon": {"bus": "Bacon", "in_service": true, "p_load": {"data_type": "time_series", "values": [50.538328355438594, 47.97324098947368, 46.079962213684205, 45.49976389508772, 44.73634503333333, 45.27073825017544, 49.89705652245613, 55.53108768, 60.99716670701754, 65.05855500526316, 69.11994333754386, 72.83015899614036, 75.82276089473685, 77.48701402561403, 77.28852510385966, 77.51755074877192, 76.76940029964912, 74.7845112522807, 71.94459310561403, 71.47127340315788, 67.97481504491228, 63.669132689122804, 58.99700928105263, 54.385959387368416, 50.538328355438594, 47.97324098947368, 46.079962213684205, 45.49976389508772, 44.73634503333333, 45.27073825017544, 49.89705652245613, 55.53108768, 60.99716670701754, 65.05855500526316, 69.11994333754386, 72.83015899614036, 75.82276089473685, 77.48701402561403, 77.28852510385966, 77.51755074877192, 76.76940029964912, 74.7845112522807, 71.94459310561403, 71.47127340315788, 67.97481504491228, 63.669132689122804, 58.99700928105263, 54.385959387368416]}, "q_load": {"data_type": "time_series", "values": [10.420273887719297, 9.891389894736841, 9.501023136842104, 9.381394617543858, 9.223988666666665, 9.334172835087719, 10.288052891228068, 11.4497088, 12.57673540350877, 13.414135052631579, 14.25153470877193, 15.016527628070175, 15.633558947368421, 15.976703922807015, 15.935778371929825, 15.983000154385962, 15.82874232982456, 15.419486856140349, 14.833936722807016, 14.736345031578944, 14.01542578245614, 13.127656224561402, 12.164331810526313, 11.21359987368421, 10.420273887719297, 9.891389894736841, 9.501023136842104, 9.381394617543858, 9.223988666666665, 9.334172835087719, 10.288052891228068, 11.4497088, 12.57673540350877, 13.414135052631579, 14.25153470877193, 15.016527628070175, 15.633558947368421, 15.976703922807015, 15.935778371929825, 15.983000154385962, 15.82874232982456, 15.419486856140349, 14.833936722807016, 14.736345031578944, 14.01542578245614, 13.127656224561402, 12.164331810526313, 11.21359987368421]}, "area": "2", "zone": "22.0"}, "Baffin": {"bus": "Baffin", "in_service": true, "p_load": {"data_type": "time_series", "values": [93.78246498947368, 89.02250905263158, 85.50920823157894, 84.43255155789474, 83.01589799999999, 84.00755551578948, 92.59247602105263, 103.0473792, 113.19061863157894, 120.72721547368423, 128.26381237894736, 135.14874865263158, 140.70203052631578, 143.79033530526314, 143.42200534736844, 143.8470013894737, 142.45868096842105, 138.77538170526316, 133.50543050526315, 132.62710528421053, 126.13883204210528, 118.14890602105264, 109.47898629473684, 100.9223988631579, 93.78246498947368, 89.02250905263158, 85.50920823157894, 84.43255155789474, 83.01589799999999, 84.00755551578948, 92.59247602105263, 103.0473792, 113.19061863157894, 120.72721547368423, 128.26381237894736, 135.14874865263158, 140.70203052631578, 143.79033530526314, 143.42200534736844, 143.8470013894737, 142.45868096842105, 138.77538170526316, 133.50543050526315, 132.62710528421053, 126.13883204210528, 118.14890602105264, 109.47898629473684, 100.9223988631579]}, "q_load": {"data_type": "time_series", "values": [19.2775066922807, 18.29907130526316, 17.576892803157893, 17.35558004245614, 17.06437903333333, 17.26821974491228, 19.032897848771928, 21.18196128, 23.266960496491226, 24.816149847368422, 26.36533921122807, 27.780576111929825, 28.922084052631575, 29.556902257192977, 29.481189988070177, 29.568550285614034, 29.283173310175435, 28.526050683859648, 27.44278293719298, 27.26223830842105, 25.928537697543863, 24.286164015438597, 22.504013849473683, 20.745159766315787, 19.2775066922807, 18.29907130526316, 17.576892803157893, 17.35558004245614, 17.06437903333333, 17.26821974491228, 19.032897848771928, 21.18196128, 23.266960496491226, 24.816149847368422, 26.36533921122807, 27.780576111929825, 28.922084052631575, 29.556902257192977, 29.481189988070177, 29.568550285614034, 29.283173310175435, 28.526050683859648, 27.44278293719298, 27.26223830842105, 25.928537697543863, 24.286164015438597, 22.504013849473683, 20.745159766315787]}, "area": "2", "zone": "21.0"}, "Bailey": {"bus": "Bailey", "in_service": true, "p_load": {"data_type": "time_series", "values": [38.5550133845614, 36.59814261052632, 35.153785606315786, 34.71116008491228, 34.12875806666666, 34.53643948982456, 38.065795697543855, 42.36392256, 46.53392099298245, 49.632299694736844, 52.73067842245614, 55.56115222385965, 57.84416810526316, 59.11380451438596, 58.96237997614035, 59.13710057122807, 58.56634662035087, 57.05210136771929, 54.88556587438596, 54.524476616842094, 51.85707539508772, 48.57232803087719, 45.008027698947366, 41.490319532631574, 38.5550133845614, 36.59814261052632, 35.153785606315786, 34.71116008491228, 34.12875806666666, 34.53643948982456, 38.065795697543855, 42.36392256, 46.53392099298245, 49.632299694736844, 52.73067842245614, 55.56115222385965, 57.84416810526316, 59.11380451438596, 58.96237997614035, 59.13710057122807, 58.56634662035087, 57.05210136771929, 54.88556587438596, 54.524476616842094, 51.85707539508772, 48.57232803087719, 45.008027698947366, 41.490319532631574]}, "q_load": {"data_type": "time_series", "values": [7.815205415789473, 7.418542421052632, 7.125767352631579, 7.036045963157894, 6.917991499999999, 7.0006296263157894, 7.716039668421052, 8.5872816, 9.432551552631578, 10.060601289473684, 10.688651031578948, 11.262395721052632, 11.725169210526316, 11.982527942105262, 11.951833778947368, 11.987250115789474, 11.87155674736842, 11.564615142105263, 11.125452542105263, 11.052258773684208, 10.511569336842106, 9.845742168421053, 9.123248857894737, 8.410199905263157, 7.815205415789473, 7.418542421052632, 7.125767352631579, 7.036045963157894, 6.917991499999999, 7.0006296263157894, 7.716039668421052, 8.5872816, 9.432551552631578, 10.060601289473684, 10.688651031578948, 11.262395721052632, 11.725169210526316, 11.982527942105262, 11.951833778947368, 11.987250115789474, 11.87155674736842, 11.564615142105263, 11.125452542105263, 11.052258773684208, 10.511569336842106, 9.845742168421053, 9.123248857894737, 8.410199905263157]}, "area": "2", "zone": "21.0"}, "Bain": {"bus": "Bain", "in_service": true, "p_load": {"data_type": "time_series", "values": [36.99197230140351, 35.114434126315786, 33.72863213578947, 33.3039508922807, 32.74515976666667, 33.136313564561405, 36.52258776385965, 40.646466239999995, 44.64741068245614, 47.62017943684211, 50.59294821614035, 53.308673079649125, 55.49913426315789, 56.71729892596491, 56.572013220350875, 56.73965054807017, 56.19203527087719, 54.73917833929824, 52.66047536596491, 52.314024862105256, 49.7547615277193, 46.603179597192984, 43.18337792736842, 39.80827955157895, 36.99197230140351, 35.114434126315786, 33.72863213578947, 33.3039508922807, 32.74515976666667, 33.136313564561405, 36.52258776385965, 40.646466239999995, 44.64741068245614, 47.62017943684211, 50.59294821614035, 53.308673079649125, 55.49913426315789, 56.71729892596491, 56.572013220350875, 56.73965054807017, 56.19203527087719, 54.73917833929824, 52.66047536596491, 52.314024862105256, 49.7547615277193, 46.603179597192984, 43.18337792736842, 39.80827955157895]}, "q_load": {"data_type": "time_series", "values": [7.294191721403508, 6.9239729263157885, 6.650716195789472, 6.566976232280702, 6.456792066666666, 6.533920984561403, 7.201637023859648, 8.014796159999998, 8.80371478245614, 9.389894536842105, 9.97607429614035, 10.511569339649123, 10.943491263157894, 11.183692745964912, 11.155044860350877, 11.188100108070174, 11.080119630877192, 10.793640799298243, 10.383755705964912, 10.315441522105262, 9.810798047719299, 9.189359357192982, 8.51503226736842, 7.849519911578947, 7.294191721403508, 6.9239729263157885, 6.650716195789472, 6.566976232280702, 6.456792066666666, 6.533920984561403, 7.201637023859648, 8.014796159999998, 8.80371478245614, 9.389894536842105, 9.97607429614035, 10.511569339649123, 10.943491263157894, 11.183692745964912, 11.155044860350877, 11.188100108070174, 11.080119630877192, 10.793640799298243, 10.383755705964912, 10.315441522105262, 9.810798047719299, 9.189359357192982, 8.51503226736842, 7.849519911578947]}, "area": "2", "zone": "21.0"}, "Bajer": {"bus": "Bajer", "in_service": true, "p_load": {"data_type": "time_series", "values": [70.85786243649123, 67.26145128421052, 64.60695733052631, 63.793483399298246, 62.72312293333333, 63.472375278596495, 69.95875966035088, 77.85801984, 85.52180074385964, 91.21611835789474, 96.91043601964913, 102.1123878708772, 106.30820084210526, 108.64158667508771, 108.3632929291228, 108.68440104982457, 107.63544784280701, 104.85251062175438, 100.87076971508772, 100.20714621473684, 95.30489532070176, 89.26806232701755, 82.71745631157894, 76.25247914105263, 70.85786243649123, 67.26145128421052, 64.60695733052631, 63.793483399298246, 62.72312293333333, 63.472375278596495, 69.95875966035088, 77.85801984, 85.52180074385964, 91.21611835789474, 96.91043601964913, 102.1123878708772, 106.30820084210526, 108.64158667508771, 108.3632929291228, 108.68440104982457, 107.63544784280701, 104.85251062175438, 100.87076971508772, 100.20714621473684, 95.30489532070176, 89.26806232701755, 82.71745631157894, 76.25247914105263]}, "q_load": {"data_type": "time_series", "values": [14.588383442807018, 13.847945852631577, 13.301432391578945, 13.133952464561403, 12.913584133333332, 13.067841969122806, 14.403274047719298, 16.02959232, 17.60742956491228, 18.77978907368421, 19.9521485922807, 21.023138679298246, 21.886982526315787, 22.36738549192982, 22.310089720701754, 22.37620021614035, 22.160239261754384, 21.587281598596487, 20.767511411929824, 20.630883044210524, 19.621596095438598, 18.378718714385965, 17.03006453473684, 15.699039823157895, 14.588383442807018, 13.847945852631577, 13.301432391578945, 13.133952464561403, 12.913584133333332, 13.067841969122806, 14.403274047719298, 16.02959232, 17.60742956491228, 18.77978907368421, 19.9521485922807, 21.023138679298246, 21.886982526315787, 22.36738549192982, 22.310089720701754, 22.37620021614035, 22.160239261754384, 21.587281598596487, 20.767511411929824, 20.630883044210524, 19.621596095438598, 18.378718714385965, 17.03006453473684, 15.699039823157895]}, "area": "2", "zone": "22.0"}, "Baker": {"bus": "Baker", "in_service": true, "p_load": {"data_type": "time_series", "values": [65.12671179824561, 61.821186842105256, 59.381394605263154, 58.63371635964912, 57.64992916666666, 58.338580219298244, 64.30033057017543, 71.56067999999999, 78.60459627192982, 83.83834407894737, 89.07209192982455, 93.8532976754386, 97.70974342105262, 99.85439951754385, 99.5986148245614, 99.89375096491227, 98.92963956140349, 96.37179285087718, 92.71210451754385, 92.1021564473684, 87.59641114035088, 82.04785140350877, 76.02707381578946, 70.0849992105263, 65.12671179824561, 61.821186842105256, 59.381394605263154, 58.63371635964912, 57.64992916666666, 58.338580219298244, 64.30033057017543, 71.56067999999999, 78.60459627192982, 83.83834407894737, 89.07209192982455, 93.8532976754386, 97.70974342105262, 99.85439951754385, 99.5986148245614, 99.89375096491227, 98.92963956140349, 96.37179285087718, 92.71210451754385, 92.1021564473684, 87.59641114035088, 82.04785140350877, 76.02707381578946, 70.0849992105263]}, "q_load": {"data_type": "time_series", "values": [13.025342359649123, 12.364237368421051, 11.87627892105263, 11.726743271929825, 11.529985833333333, 11.667716043859649, 12.860066114035087, 14.312135999999999, 15.720919254385965, 16.767668815789474, 17.81441838596491, 18.77065953508772, 19.541948684210524, 19.970879903508774, 19.919722964912282, 19.978750192982456, 19.785927912280698, 19.274358570175437, 18.54242090350877, 18.42043128947368, 17.51928222807018, 16.409570280701754, 15.205414763157894, 14.016999842105262, 13.025342359649123, 12.364237368421051, 11.87627892105263, 11.726743271929825, 11.529985833333333, 11.667716043859649, 12.860066114035087, 14.312135999999999, 15.720919254385965, 16.767668815789474, 17.81441838596491, 18.77065953508772, 19.541948684210524, 19.970879903508774, 19.919722964912282, 19.978750192982456, 19.785927912280698, 19.274358570175437, 18.54242090350877, 18.42043128947368, 17.51928222807018, 16.409570280701754, 15.205414763157894, 14.016999842105262]}, "area": "2", "zone": "22.0"}, "Balch": {"bus": "Balch", "in_service": true, "p_load": {"data_type": "time_series", "values": [89.09334174, 84.57138359999999, 81.23374781999999, 80.21092398, 78.8651031, 79.80717774, 87.96285221999999, 97.89501023999999, 107.53108769999999, 114.6908547, 121.85062176, 128.39131122, 133.66692899999998, 136.60081853999998, 136.25090508, 136.65465132, 135.33574692, 131.83661261999998, 126.83015898, 125.99575001999999, 119.83189044, 112.24146071999999, 104.00503698, 95.87627891999999, 89.09334174, 84.57138359999999, 81.23374781999999, 80.21092398, 78.8651031, 79.80717774, 87.96285221999999, 97.89501023999999, 107.53108769999999, 114.6908547, 121.85062176, 128.39131122, 133.66692899999998, 136.60081853999998, 136.25090508, 136.65465132, 135.33574692, 131.83661261999998, 126.83015898, 125.99575001999999, 119.83189044, 112.24146071999999, 104.00503698, 95.87627891999999]}, "q_load": {"data_type": "time_series", "values": [18.23547930350877, 17.30993231578947, 16.62679048947368, 16.417440580701754, 16.141980166666666, 16.33480246140351, 18.00409255964912, 20.036990399999997, 22.009286956140347, 23.474736342105263, 24.940185740350874, 26.278923349122806, 27.35872815789473, 27.959231864912276, 27.88761215087719, 27.970250270175438, 27.70029907719298, 26.98410199824561, 25.95938926491228, 25.788603805263154, 24.526995119298242, 22.973398392982453, 21.28758066842105, 19.623799778947365, 18.23547930350877, 17.30993231578947, 16.62679048947368, 16.417440580701754, 16.141980166666666, 16.33480246140351, 18.00409255964912, 20.036990399999997, 22.009286956140347, 23.474736342105263, 24.940185740350874, 26.278923349122806, 27.35872815789473, 27.959231864912276, 27.88761215087719, 27.970250270175438, 27.70029907719298, 26.98410199824561, 25.95938926491228, 25.788603805263154, 24.526995119298242, 22.973398392982453, 21.28758066842105, 19.623799778947365]}, "area": "2", "zone": "22.0"}, "Balzac": {"bus": "Balzac", "in_service": true, "p_load": {"data_type": "time_series", "values": [91.17739651754385, 86.54966157894737, 83.13395244736842, 82.08720290350877, 80.70990083333332, 81.67401230701753, 90.0204627982456, 100.184952, 110.04643478070174, 117.37368171052631, 124.70092870175438, 131.39461674561403, 136.79364078947367, 139.7961593245614, 139.43806075438596, 139.8512513508772, 138.5014953859649, 134.92050999122804, 129.7969463245614, 128.94301902631577, 122.63497559649123, 114.86699196491227, 106.43790334210526, 98.11899889473683, 91.17739651754385, 86.54966157894737, 83.13395244736842, 82.08720290350877, 80.70990083333332, 81.67401230701753, 90.0204627982456, 100.184952, 110.04643478070174, 117.37368171052631, 124.70092870175438, 131.39461674561403, 136.79364078947367, 139.7961593245614, 139.43806075438596, 139.8512513508772, 138.5014953859649, 134.92050999122804, 129.7969463245614, 128.94301902631577, 122.63497559649123, 114.86699196491227, 106.43790334210526, 98.11899889473683]}, "q_load": {"data_type": "time_series", "values": [18.756492997894735, 17.804501810526315, 17.101841646315787, 16.886510311578945, 16.603179599999997, 16.801511103157893, 18.518495204210524, 20.609475839999998, 22.638123726315786, 24.14544309473684, 25.652762475789473, 27.029749730526316, 28.140406105263153, 28.75806706105263, 28.684401069473683, 28.769400277894736, 28.491736193684204, 27.755076341052625, 26.701086101052628, 26.5254210568421, 25.227766408421054, 23.629781204210524, 21.89579725894737, 20.184479772631576, 18.756492997894735, 17.804501810526315, 17.101841646315787, 16.886510311578945, 16.603179599999997, 16.801511103157893, 18.518495204210524, 20.609475839999998, 22.638123726315786, 24.14544309473684, 25.652762475789473, 27.029749730526316, 28.140406105263153, 28.75806706105263, 28.684401069473683, 28.769400277894736, 28.491736193684204, 27.755076341052625, 26.701086101052628, 26.5254210568421, 25.227766408421054, 23.629781204210524, 21.89579725894737, 20.184479772631576]}, "area": "2", "zone": "23.0"}, "Banks": {"bus": "Banks", "in_service": true, "p_load": {"data_type": "time_series", "values": [101.59767040526316, 96.44105147368421, 92.63497558421052, 91.46859752105264, 89.9338895, 91.00818514210528, 100.30851568947368, 111.6346608, 122.62317018421052, 130.7878167631579, 138.95246341052632, 146.41114437368424, 152.4271997368421, 155.77286324736843, 155.3738391263158, 155.83425150526318, 154.33023771578948, 150.3399968473684, 144.63088304736843, 143.67936405789473, 136.65040137894738, 127.9946481894737, 118.6022351526316, 109.33259876842105, 101.59767040526316, 96.44105147368421, 92.63497558421052, 91.46859752105264, 89.9338895, 91.00818514210528, 100.30851568947368, 111.6346608, 122.62317018421052, 130.7878167631579, 138.95246341052632, 146.41114437368424, 152.4271997368421, 155.77286324736843, 155.3738391263158, 155.83425150526318, 154.33023771578948, 150.3399968473684, 144.63088304736843, 143.67936405789473, 136.65040137894738, 127.9946481894737, 118.6022351526316, 109.33259876842105]}, "q_load": {"data_type": "time_series", "values": [20.840547775438598, 19.782779789473683, 19.002046273684208, 18.76278923508772, 18.447977333333334, 18.66834567017544, 20.57610578245614, 22.8994176, 25.15347080701754, 26.828270105263158, 28.50306941754386, 30.033055256140354, 31.267117894736842, 31.953407845614038, 31.87155674385965, 31.966000308771935, 31.65748465964912, 30.838973712280698, 29.667873445614035, 29.47269006315789, 28.030851564912282, 26.25531244912281, 24.328663621052634, 22.42719974736842, 20.840547775438598, 19.782779789473683, 19.002046273684208, 18.76278923508772, 18.447977333333334, 18.66834567017544, 20.57610578245614, 22.8994176, 25.15347080701754, 26.828270105263158, 28.50306941754386, 30.033055256140354, 31.267117894736842, 31.953407845614038, 31.87155674385965, 31.966000308771935, 31.65748465964912, 30.838973712280698, 29.667873445614035, 29.47269006315789, 28.030851564912282, 26.25531244912281, 24.328663621052634, 22.42719974736842]}, "area": "2", "zone": "23.0"}, "Barlow": {"bus": "Barlow", "in_service": true, "p_load": {"data_type": "time_series", "values": [138.0686290122807, 131.06091610526315, 125.88855656315788, 124.30347868245615, 122.21784983333332, 123.67779006491229, 136.3167008087719, 151.7086416, 166.6417440964912, 177.73728944736843, 188.83283489122806, 198.96899107192982, 207.14465605263157, 211.69132697719297, 211.14906342807018, 211.77475204561404, 209.7308358701754, 204.30820084385962, 196.54966157719298, 195.25657166842103, 185.70439161754388, 173.9414449754386, 161.1773964894737, 148.58019832631578, 138.0686290122807, 131.06091610526315, 125.88855656315788, 124.30347868245615, 122.21784983333332, 123.67779006491229, 136.3167008087719, 151.7086416, 166.6417440964912, 177.73728944736843, 188.83283489122806, 198.96899107192982, 207.14465605263157, 211.69132697719297, 211.14906342807018, 211.77475204561404, 209.7308358701754, 204.30820084385962, 196.54966157719298, 195.25657166842103, 185.70439161754388, 173.9414449754386, 161.1773964894737, 148.58019832631578]}, "q_load": {"data_type": "time_series", "values": [28.134739496842105, 26.706752715789474, 25.652762469473682, 25.329765467368425, 24.9047694, 25.202266654736846, 27.777742806315786, 30.91421376, 33.95718558947368, 36.218164642105265, 38.47914371368421, 40.54462459578947, 42.21060915789474, 43.13710059157895, 43.026601604210526, 43.154100416842105, 42.73760429052631, 41.63261451157894, 40.05162915157895, 39.78813158526316, 37.841649612631585, 35.44467180631579, 32.84369588842106, 30.276719658947368, 28.134739496842105, 26.706752715789474, 25.652762469473682, 25.329765467368425, 24.9047694, 25.202266654736846, 27.777742806315786, 30.91421376, 33.95718558947368, 36.218164642105265, 38.47914371368421, 40.54462459578947, 42.21060915789474, 43.13710059157895, 43.026601604210526, 43.154100416842105, 42.73760429052631, 41.63261451157894, 40.05162915157895, 39.78813158526316, 37.841649612631585, 35.44467180631579, 32.84369588842106, 30.276719658947368]}, "area": "2", "zone": "24.0"}, "Barry": {"bus": "Barry", "in_service": true, "p_load": {"data_type": "time_series", "values": [101.07665671087719, 95.94648197894736, 92.15992442736841, 90.99952779017543, 89.47269006666666, 90.54147650035088, 99.79411304491227, 111.06217536, 121.99433341403508, 130.11711001052632, 138.23988667508772, 145.6603179922807, 151.6455217894737, 154.97402805122806, 154.5770502077193, 155.03510149754385, 153.53880059929824, 149.5690225045614, 143.88918621122806, 142.94254680631576, 135.94963008982455, 127.33826537824561, 117.99401856210525, 108.77191877473683, 101.07665671087719, 95.94648197894736, 92.15992442736841, 90.99952779017543, 89.47269006666666, 90.54147650035088, 99.79411304491227, 111.06217536, 121.99433341403508, 130.11711001052632, 138.23988667508772, 145.6603179922807, 151.6455217894737, 154.97402805122806, 154.5770502077193, 155.03510149754385, 153.53880059929824, 149.5690225045614, 143.88918621122806, 142.94254680631576, 135.94963008982455, 127.33826537824561, 117.99401856210525, 108.77191877473683]}, "q_load": {"data_type": "time_series", "values": [20.31953408105263, 19.288210294736842, 18.526995116842105, 18.293719504210525, 17.9867779, 18.201637028421054, 20.061703137894735, 22.326932160000002, 24.524634036842105, 26.15756335263158, 27.790492682105263, 29.282228874736845, 30.485439947368423, 31.154572649473682, 31.074767825263162, 31.16685030105263, 30.866047543157894, 30.067999369473682, 28.926176609473686, 28.735872811578943, 27.330080275789474, 25.598929637894738, 23.720447030526316, 21.86651975368421, 20.31953408105263, 19.288210294736842, 18.526995116842105, 18.293719504210525, 17.9867779, 18.201637028421054, 20.061703137894735, 22.326932160000002, 24.524634036842105, 26.15756335263158, 27.790492682105263, 29.282228874736845, 30.485439947368423, 31.154572649473682, 31.074767825263162, 31.16685030105263, 30.866047543157894, 30.067999369473682, 28.926176609473686, 28.735872811578943, 27.330080275789474, 25.598929637894738, 23.720447030526316, 21.86651975368421]}, "area": "2", "zone": "26.0"}, "Barton": {"bus": "Barton", "in_service": true, "p_load": {"data_type": "time_series", "values": [165.16134112035087, 156.77852983157894, 150.59121671894735, 148.6951046880702, 146.20022036666666, 147.94663943614034, 163.0656383259649, 181.47788448, 199.341256145614, 212.61404058421053, 225.88682513403506, 238.01196290491228, 247.79190931578947, 253.2307571764912, 252.58208719508772, 253.33055244701754, 250.88556592771928, 244.39886666982454, 235.11789705649122, 233.57106875052628, 222.14449865192984, 208.07335115929823, 192.8046591968421, 177.73555799789472, 165.16134112035087, 156.77852983157894, 150.59121671894735, 148.6951046880702, 146.20022036666666, 147.94663943614034, 163.0656383259649, 181.47788448, 199.341256145614, 212.61404058421053, 225.88682513403506, 238.01196290491228, 247.79190931578947, 253.2307571764912, 252.58208719508772, 253.33055244701754, 250.88556592771928, 244.39886666982454, 235.11789705649122, 233.57106875052628, 222.14449865192984, 208.07335115929823, 192.8046591968421, 177.73555799789472]}, "q_load": {"data_type": "time_series", "values": [33.34487644070175, 31.65244766315789, 30.403274037894732, 30.020462776140352, 29.51676373333333, 29.8693530722807, 32.921769251929824, 36.63906816, 40.24555329122806, 42.925232168421054, 45.604911068070166, 48.05288840982456, 50.027388631578944, 51.12545255298245, 50.99449079017544, 51.14560049403509, 50.651975455438595, 49.34235793964912, 47.468597512982456, 47.156304101052626, 44.84936250385965, 42.008499918596485, 38.925861793684206, 35.883519595789465, 33.34487644070175, 31.65244766315789, 30.403274037894732, 30.020462776140352, 29.51676373333333, 29.8693530722807, 32.921769251929824, 36.63906816, 40.24555329122806, 42.925232168421054, 45.604911068070166, 48.05288840982456, 50.027388631578944, 51.12545255298245, 50.99449079017544, 51.14560049403509, 50.651975455438595, 49.34235793964912, 47.468597512982456, 47.156304101052626, 44.84936250385965, 42.008499918596485, 38.925861793684206, 35.883519595789465]}, "area": "2", "zone": "26.0"}, "Basov": {"bus": "Basov", "in_service": true, "p_load": {"data_type": "time_series", "values": [52.101369438596485, 49.456949473684205, 47.50511568421052, 46.906973087719294, 46.11994333333333, 46.670864175438595, 51.44026445614035, 57.248543999999995, 62.88367701754385, 67.0706752631579, 71.25767354385964, 75.08263814035088, 78.1677947368421, 79.88351961403508, 79.67889185964911, 79.91500077192983, 79.14371164912279, 77.09743428070175, 74.16968361403508, 73.68172515789473, 70.0771289122807, 65.63828112280702, 60.821659052631574, 56.06799936842105, 52.101369438596485, 49.456949473684205, 47.50511568421052, 46.906973087719294, 46.11994333333333, 46.670864175438595, 51.44026445614035, 57.248543999999995, 62.88367701754385, 67.0706752631579, 71.25767354385964, 75.08263814035088, 78.1677947368421, 79.88351961403508, 79.67889185964911, 79.91500077192983, 79.14371164912279, 77.09743428070175, 74.16968361403508, 73.68172515789473, 70.0771289122807, 65.63828112280702, 60.821659052631574, 56.06799936842105]}, "q_load": {"data_type": "time_series", "values": [10.420273887719297, 9.891389894736841, 9.501023136842106, 9.38139461754386, 9.223988666666667, 9.334172835087719, 10.28805289122807, 11.4497088, 12.57673540350877, 13.414135052631579, 14.251534708771928, 15.016527628070177, 15.633558947368421, 15.976703922807017, 15.935778371929823, 15.983000154385966, 15.828742329824559, 15.41948685614035, 14.833936722807017, 14.736345031578947, 14.015425782456141, 13.127656224561404, 12.164331810526315, 11.21359987368421, 10.420273887719297, 9.891389894736841, 9.501023136842106, 9.38139461754386, 9.223988666666667, 9.334172835087719, 10.28805289122807, 11.4497088, 12.57673540350877, 13.414135052631579, 14.251534708771928, 15.016527628070177, 15.633558947368421, 15.976703922807017, 15.935778371929823, 15.983000154385966, 15.828742329824559, 15.41948685614035, 14.833936722807017, 14.736345031578947, 14.015425782456141, 13.127656224561404, 12.164331810526315, 11.21359987368421]}, "area": "2", "zone": "26.0"}, "Bayle": {"bus": "Bayle", "in_service": true, "p_load": {"data_type": "time_series", "values": [173.49756023052632, 164.69164174736844, 158.19203522842105, 156.20022038210527, 153.5794113, 155.41397770421054, 171.29608063894736, 190.63765152, 209.40264446842104, 223.3453486263158, 237.28805290105262, 250.02518500736844, 260.29875647368425, 266.0121203147368, 265.3307098926316, 266.11695257052634, 263.54855979157895, 256.73445615473685, 246.98504643473686, 245.36014477578945, 233.35683927789475, 218.57547613894738, 202.53612464526316, 186.70643789684212, 173.49756023052632, 164.69164174736844, 158.19203522842105, 156.20022038210527, 153.5794113, 155.41397770421054, 171.29608063894736, 190.63765152, 209.40264446842104, 223.3453486263158, 237.28805290105262, 250.02518500736844, 260.29875647368425, 266.0121203147368, 265.3307098926316, 266.11695257052634, 263.54855979157895, 256.73445615473685, 246.98504643473686, 245.36014477578945, 233.35683927789475, 218.57547613894738, 202.53612464526316, 186.70643789684212]}, "q_load": {"data_type": "time_series", "values": [35.428931218245616, 33.63072564210527, 32.30347866526316, 31.896741699649127, 31.361561466666668, 31.736187639298247, 34.97937983017544, 38.92900992, 42.76090037192982, 45.60805917894737, 48.45521800982456, 51.0561939354386, 53.15410042105264, 54.320793337543854, 54.18164646456141, 54.342200524912286, 53.81772392140351, 52.426255310877195, 50.435384857543866, 50.10357310736842, 47.65244766035088, 44.63403116350877, 41.35872815578947, 38.126239570526316, 35.428931218245616, 33.63072564210527, 32.30347866526316, 31.896741699649127, 31.361561466666668, 31.736187639298247, 34.97937983017544, 38.92900992, 42.76090037192982, 45.60805917894737, 48.45521800982456, 51.0561939354386, 53.15410042105264, 54.320793337543854, 54.18164646456141, 54.342200524912286, 53.81772392140351, 52.426255310877195, 50.435384857543866, 50.10357310736842, 47.65244766035088, 44.63403116350877, 41.35872815578947, 38.126239570526316]}, "area": "2", "zone": "27.0"}, "Bede": {"bus": "Bede", "in_service": true, "p_load": {"data_type": "time_series", "values": [94.30347868385964, 89.51707854736841, 85.98425938842104, 84.90162128877192, 83.47709743333333, 84.47426415754386, 93.10687866561402, 103.61986463999999, 113.81945540175437, 121.39792222631579, 128.97638911438594, 135.89957503403508, 141.4837084736842, 144.5891705014035, 144.2187942659649, 144.64615139719297, 143.25011808491226, 139.54635604807015, 134.24712734140348, 133.36392253578944, 126.83960333122806, 118.8052888322807, 110.08720288526315, 101.4830788568421, 94.30347868385964, 89.51707854736841, 85.98425938842104, 84.90162128877192, 83.47709743333333, 84.47426415754386, 93.10687866561402, 103.61986463999999, 113.81945540175437, 121.39792222631579, 128.97638911438594, 135.89957503403508, 141.4837084736842, 144.5891705014035, 144.2187942659649, 144.64615139719297, 143.25011808491226, 139.54635604807015, 134.24712734140348, 133.36392253578944, 126.83960333122806, 118.8052888322807, 110.08720288526315, 101.4830788568421]}, "q_load": {"data_type": "time_series", "values": [19.2775066922807, 18.29907130526316, 17.576892803157893, 17.35558004245614, 17.06437903333333, 17.26821974491228, 19.032897848771928, 21.18196128, 23.266960496491226, 24.816149847368422, 26.365339211228065, 27.780576111929825, 28.92208405263158, 29.556902257192977, 29.481189988070174, 29.568550285614034, 29.283173310175435, 28.526050683859644, 27.442782937192977, 27.262238308421047, 25.92853769754386, 24.286164015438597, 22.504013849473683, 20.745159766315787, 19.2775066922807, 18.29907130526316, 17.576892803157893, 17.35558004245614, 17.06437903333333, 17.26821974491228, 19.032897848771928, 21.18196128, 23.266960496491226, 24.816149847368422, 26.365339211228065, 27.780576111929825, 28.92208405263158, 29.556902257192977, 29.481189988070174, 29.568550285614034, 29.283173310175435, 28.526050683859644, 27.442782937192977, 27.262238308421047, 25.92853769754386, 24.286164015438597, 22.504013849473683, 20.745159766315787]}, "area": "2", "zone": "25.0"}, "Beethoven": {"bus": "Beethoven", "in_service": true, "p_load": {"data_type": "time_series", "values": [66.6897528814035, 63.30489532631579, 60.806548075789465, 60.0409255522807, 59.03352746666666, 59.7387061445614, 65.84353850385963, 73.27813631999999, 80.49110658245613, 85.85046433684211, 91.20982213614035, 96.10577681964912, 100.05477726315789, 102.2509051059649, 101.98898158035087, 102.29120098807017, 101.30395091087718, 98.68471587929822, 94.9371950259649, 94.31260820210525, 89.69872500771929, 84.01699983719297, 77.85172358736841, 71.76703919157895, 66.6897528814035, 63.30489532631579, 60.806548075789465, 60.0409255522807, 59.03352746666666, 59.7387061445614, 65.84353850385963, 73.27813631999999, 80.49110658245613, 85.85046433684211, 91.20982213614035, 96.10577681964912, 100.05477726315789, 102.2509051059649, 101.98898158035087, 102.29120098807017, 101.30395091087718, 98.68471587929822, 94.9371950259649, 94.31260820210525, 89.69872500771929, 84.01699983719297, 77.85172358736841, 71.76703919157895]}, "q_load": {"data_type": "time_series", "values": [13.546356054035087, 12.858806863157895, 12.351330077894735, 12.195813002807016, 11.991185266666665, 12.134424685614034, 13.374468758596489, 14.884621439999997, 16.3497560245614, 17.438375568421055, 18.52699512140351, 19.52148591649123, 20.323626631578946, 20.769715099649122, 20.71651188350877, 20.777900200701755, 20.577365028771926, 20.045332912982452, 19.28411773964912, 19.15724854105263, 18.22005351719298, 17.06595309192982, 15.813631353684208, 14.577679835789473, 13.546356054035087, 12.858806863157895, 12.351330077894735, 12.195813002807016, 11.991185266666665, 12.134424685614034, 13.374468758596489, 14.884621439999997, 16.3497560245614, 17.438375568421055, 18.52699512140351, 19.52148591649123, 20.323626631578946, 20.769715099649122, 20.71651188350877, 20.777900200701755, 20.577365028771926, 20.045332912982452, 19.28411773964912, 19.15724854105263, 18.22005351719298, 17.06595309192982, 15.813631353684208, 14.577679835789473]}, "area": "2", "zone": "25.0"}, "Cabell": {"bus": "Cabell", "in_service": true, "p_load": {"data_type": "time_series", "values": [42.74217018947369, 40.77760202526316, 39.39386271157895, 39.51344512421053, 40.74343563789474, 43.64757989052632, 49.114204370526316, 55.059158501052636, 60.95286303157895, 66.72698514947369, 69.90446061473685, 73.95317935578947, 76.92565642105264, 79.52230307368421, 80.80354318736843, 82.35811451368421, 79.76146789894737, 74.65359061894738, 70.00695981473685, 67.564062, 64.81366654736843, 59.34704206736843, 52.599177473684215, 48.24296109473685, 42.74217018947369, 40.77760202526316, 39.39386271157895, 39.51344512421053, 40.74343563789474, 43.64757989052632, 49.114204370526316, 55.059158501052636, 60.95286303157895, 66.72698514947369, 69.90446061473685, 73.95317935578947, 76.92565642105264, 79.52230307368421, 80.80354318736843, 82.35811451368421, 79.76146789894737, 74.65359061894738, 70.00695981473685, 67.564062, 64.81366654736843, 59.34704206736843, 52.599177473684215, 48.24296109473685]}, "q_load": {"data_type": "time_series", "values": [8.706738371929825, 8.306548560701753, 8.024675737543859, 8.049035117894736, 8.299588741052633, 8.89117368140351, 10.004745334736842, 11.215754509473685, 12.416323950877192, 13.592534011929825, 14.239797532631579, 15.064536535438595, 15.670041122807017, 16.198987663157894, 16.459981019649124, 16.776652956491226, 16.24770642385965, 15.20721290385965, 14.260676999298246, 13.763049666666667, 13.20278392631579, 12.089212272982456, 10.714647263157895, 9.827269852631579, 8.706738371929825, 8.306548560701753, 8.024675737543859, 8.049035117894736, 8.299588741052633, 8.89117368140351, 10.004745334736842, 11.215754509473685, 12.416323950877192, 13.592534011929825, 14.239797532631579, 15.064536535438595, 15.670041122807017, 16.198987663157894, 16.459981019649124, 16.776652956491226, 16.24770642385965, 15.20721290385965, 14.260676999298246, 13.763049666666667, 13.20278392631579, 12.089212272982456, 10.714647263157895, 9.827269852631579]}, "area": "3", "zone": "31.0"}, "Cabot": {"bus": "Cabot", "in_service": true, "p_load": {"data_type": "time_series", "values": [38.388801003508775, 36.62432774491228, 35.38152484280702, 35.488927565263154, 36.59364126736842, 39.20199304982456, 44.11183170315789, 49.45128124631579, 54.74470105614034, 59.93071814350877, 62.78456184842105, 66.42091108807017, 69.09063585964913, 71.42280924210526, 72.57355267754386, 73.9697880354386, 71.63761468701755, 67.04998416701754, 62.87662131508772, 60.68253716666666, 58.212274584210526, 53.302435930877195, 47.241853842105265, 43.329326168421055, 38.388801003508775, 36.62432774491228, 35.38152484280702, 35.488927565263154, 36.59364126736842, 39.20199304982456, 44.11183170315789, 49.45128124631579, 54.74470105614034, 59.93071814350877, 62.78456184842105, 66.42091108807017, 69.09063585964913, 71.42280924210526, 72.57355267754386, 73.9697880354386, 71.63761468701755, 67.04998416701754, 62.87662131508772, 60.68253716666666, 58.212274584210526, 53.302435930877195, 47.241853842105265, 43.329326168421055]}, "q_load": {"data_type": "time_series", "values": [7.915216701754386, 7.551407782456139, 7.295159761403508, 7.317304652631578, 7.545080673684209, 8.08288516491228, 9.095223031578946, 10.196140463157894, 11.287567228070174, 12.356849101754385, 12.945270484210525, 13.695033214035085, 14.245491929824562, 14.72635242105263, 14.96361910877193, 15.251502687719297, 14.770642203508771, 13.824739003508771, 12.96425181754386, 12.511863333333332, 12.002530842105262, 10.990192975438596, 9.740588421052632, 8.933881684210526, 7.915216701754386, 7.551407782456139, 7.295159761403508, 7.317304652631578, 7.545080673684209, 8.08288516491228, 9.095223031578946, 10.196140463157894, 11.287567228070174, 12.356849101754385, 12.945270484210525, 13.695033214035085, 14.245491929824562, 14.72635242105263, 14.96361910877193, 15.251502687719297, 14.770642203508771, 13.824739003508771, 12.96425181754386, 12.511863333333332, 12.002530842105262, 10.990192975438596, 9.740588421052632, 8.933881684210526]}, "area": "3", "zone": "32.0"}, "Caesar": {"bus": "Caesar", "in_service": true, "p_load": {"data_type": "time_series", "values": [71.23695031578949, 67.96267004210526, 65.65643785263158, 65.85574187368421, 67.9057260631579, 72.74596648421053, 81.85700728421052, 91.76526416842106, 101.58810505263158, 111.21164191578947, 116.50743435789474, 123.25529892631579, 128.20942736842105, 132.5371717894737, 134.6725719789474, 137.26352418947369, 132.93577983157897, 124.42265103157895, 116.67826635789474, 112.60677, 108.02277757894737, 98.91173677894737, 87.66529578947369, 80.40493515789474, 71.23695031578949, 67.96267004210526, 65.65643785263158, 65.85574187368421, 67.9057260631579, 72.74596648421053, 81.85700728421052, 91.76526416842106, 101.58810505263158, 111.21164191578947, 116.50743435789474, 123.25529892631579, 128.20942736842105, 132.5371717894737, 134.6725719789474, 137.26352418947369, 132.93577983157897, 124.42265103157895, 116.67826635789474, 112.60677, 108.02277757894737, 98.91173677894737, 87.66529578947369, 80.40493515789474]}, "q_load": {"data_type": "time_series", "values": [14.643150898245615, 13.970104397543858, 13.496045558596492, 13.53701360736842, 13.958399246315789, 14.95333755508772, 16.82616260842105, 18.862859856842103, 20.881999371929822, 22.86017083824561, 23.948750395789475, 25.33581144596491, 26.354160070175435, 27.24375197894737, 27.682695351228073, 28.2152799722807, 27.325688076491232, 25.575767156491228, 23.983865862456142, 23.146947166666664, 22.204682057894736, 20.331857004561403, 18.02008857894737, 16.527681115789473, 14.643150898245615, 13.970104397543858, 13.496045558596492, 13.53701360736842, 13.958399246315789, 14.95333755508772, 16.82616260842105, 18.862859856842103, 20.881999371929822, 22.86017083824561, 23.948750395789475, 25.33581144596491, 26.354160070175435, 27.24375197894737, 27.682695351228073, 28.2152799722807, 27.325688076491232, 25.575767156491228, 23.983865862456142, 23.146947166666664, 22.204682057894736, 20.331857004561403, 18.02008857894737, 16.527681115789473]}, "area": "3", "zone": "31.0"}, "Caine": {"bus": "Caine", "in_service": true, "p_load": {"data_type": "time_series", "values": [29.28630179649123, 27.940208795087717, 26.99209111719298, 27.07402721473684, 27.916798492631578, 29.90667511017544, 33.6523252168421, 37.72571971368421, 41.763998743859645, 45.72034167649122, 47.89750079157894, 50.67162289192982, 52.70832014035088, 54.48750395789474, 55.36539070245614, 56.4305599445614, 54.65137615298246, 51.151534312982456, 47.96773172491228, 46.293894333333334, 44.40936411578947, 40.663714009122806, 36.04017715789474, 33.05536223157895, 29.28630179649123, 27.940208795087717, 26.99209111719298, 27.07402721473684, 27.916798492631578, 29.90667511017544, 33.6523252168421, 37.72571971368421, 41.763998743859645, 45.72034167649122, 47.89750079157894, 50.67162289192982, 52.70832014035088, 54.48750395789474, 55.36539070245614, 56.4305599445614, 54.65137615298246, 51.151534312982456, 47.96773172491228, 46.293894333333334, 44.40936411578947, 40.663714009122806, 36.04017715789474, 33.05536223157895]}, "q_load": {"data_type": "time_series", "values": [5.93641252631579, 5.663555836842105, 5.471369821052631, 5.487978489473684, 5.658810505263158, 6.062163873684211, 6.82141727368421, 7.647105347368421, 8.465675421052632, 9.267636826315789, 9.708952863157894, 10.271274910526316, 10.684118947368422, 11.044764315789475, 11.222714331578947, 11.438627015789473, 11.07798165263158, 10.36855425263158, 9.723188863157894, 9.383897500000002, 9.001898131578947, 8.242644731578947, 7.305441315789475, 6.700411263157895, 5.93641252631579, 5.663555836842105, 5.471369821052631, 5.487978489473684, 5.658810505263158, 6.062163873684211, 6.82141727368421, 7.647105347368421, 8.465675421052632, 9.267636826315789, 9.708952863157894, 10.271274910526316, 10.684118947368422, 11.044764315789475, 11.222714331578947, 11.438627015789473, 11.07798165263158, 10.36855425263158, 9.723188863157894, 9.383897500000002, 9.001898131578947, 8.242644731578947, 7.305441315789475, 6.700411263157895]}, "area": "3", "zone": "31.0"}, "Calvin": {"bus": "Calvin", "in_service": true, "p_load": {"data_type": "time_series", "values": [28.09901929122807, 26.807497627719297, 25.897817152982455, 25.976431516842105, 26.785036391578945, 28.6942423354386, 32.28804176210526, 36.19629864421053, 40.07086365964912, 43.86681431122807, 45.95571021894737, 48.61736790982456, 50.57149635087719, 52.27855109473684, 53.120847836140356, 54.14283454140351, 52.43577982245614, 49.07782346245614, 46.0230939522807, 44.41711483333333, 42.608984489473684, 39.01518506280702, 34.57908889473684, 31.71527997894737, 28.09901929122807, 26.807497627719297, 25.897817152982455, 25.976431516842105, 26.785036391578945, 28.6942423354386, 32.28804176210526, 36.19629864421053, 40.07086365964912, 43.86681431122807, 45.95571021894737, 48.61736790982456, 50.57149635087719, 52.27855109473684, 53.120847836140356, 54.14283454140351, 52.43577982245614, 49.07782346245614, 46.0230939522807, 44.41711483333333, 42.608984489473684, 39.01518506280702, 34.57908889473684, 31.71527997894737]}, "q_load": {"data_type": "time_series", "values": [5.54065169122807, 5.285985447719297, 5.1066118329824555, 5.122113256842105, 5.281556471578947, 5.658019615438596, 6.366656122105262, 7.137298324210526, 7.901297059649122, 8.649794371228069, 9.061689338947367, 9.58652324982456, 9.971844350877191, 10.30844669473684, 10.474533376140352, 10.676051881403508, 10.33944954245614, 9.677317302456139, 9.074976272280702, 8.758304333333331, 8.401771589473684, 7.693135082807018, 6.818411894736841, 6.253717178947368, 5.54065169122807, 5.285985447719297, 5.1066118329824555, 5.122113256842105, 5.281556471578947, 5.658019615438596, 6.366656122105262, 7.137298324210526, 7.901297059649122, 8.649794371228069, 9.061689338947367, 9.58652324982456, 9.971844350877191, 10.30844669473684, 10.474533376140352, 10.676051881403508, 10.33944954245614, 9.677317302456139, 9.074976272280702, 8.758304333333331, 8.401771589473684, 7.693135082807018, 6.818411894736841, 6.253717178947368]}, "area": "3", "zone": "31.0"}, "Camus": {"bus": "Camus", "in_service": true, "p_load": {"data_type": "time_series", "values": [53.82347357192983, 51.34957292070175, 49.60708637754386, 49.75767163789474, 51.30654858105263, 54.96361912140351, 61.84751661473684, 69.33375514947369, 76.75545715087719, 84.02657389192983, 88.02783929263158, 93.12622585543859, 96.86934512280702, 100.1391964631579, 101.75260993964913, 103.71021827649123, 100.44036698385966, 94.00822522385965, 88.15691235929825, 85.08067066666666, 81.61720972631579, 74.73331223298246, 66.2360012631579, 60.75039545263159, 53.82347357192983, 51.34957292070175, 49.60708637754386, 49.75767163789474, 51.30654858105263, 54.96361912140351, 61.84751661473684, 69.33375514947369, 76.75545715087719, 84.02657389192983, 88.02783929263158, 93.12622585543859, 96.86934512280702, 100.1391964631579, 101.75260993964913, 103.71021827649123, 100.44036698385966, 94.00822522385965, 88.15691235929825, 85.08067066666666, 81.61720972631579, 74.73331223298246, 66.2360012631579, 60.75039545263159]}, "q_load": {"data_type": "time_series", "values": [11.081303382456142, 10.571970895438596, 10.213223665964911, 10.244226513684211, 10.563112943157893, 11.316039230877193, 12.733312244210525, 14.274596648421053, 15.802594119298245, 17.29958874245614, 18.12337867789474, 19.17304649964912, 19.943688701754386, 20.616893389473685, 20.949066752280704, 21.35210376280702, 20.67889908491228, 19.35463460491228, 18.1499525445614, 17.516608666666666, 16.80354317894737, 15.386270165614034, 13.636823789473684, 12.507434357894738, 11.081303382456142, 10.571970895438596, 10.213223665964911, 10.244226513684211, 10.563112943157893, 11.316039230877193, 12.733312244210525, 14.274596648421053, 15.802594119298245, 17.29958874245614, 18.12337867789474, 19.17304649964912, 19.943688701754386, 20.616893389473685, 20.949066752280704, 21.35210376280702, 20.67889908491228, 19.35463460491228, 18.1499525445614, 17.516608666666666, 16.80354317894737, 15.386270165614034, 13.636823789473684, 12.507434357894738]}, "area": "3", "zone": "32.0"}, "Carew": {"bus": "Carew", "in_service": true, "p_load": {"data_type": "time_series", "values": [49.470104385964916, 47.196298640350875, 45.59474850877193, 45.733154078947365, 47.156754210526316, 50.51803228070175, 56.84514394736841, 63.72587789473684, 70.54729517543859, 77.23030688596491, 80.90794052631578, 85.59395758771929, 89.03432456140351, 92.03970263157895, 93.52261942982456, 95.3218917982456, 92.31651377192982, 86.40461877192982, 81.02657385964912, 78.19914583333333, 75.01581776315788, 68.68870609649123, 60.878677631578945, 55.83676052631579, 49.470104385964916, 47.196298640350875, 45.59474850877193, 45.733154078947365, 47.156754210526316, 50.51803228070175, 56.84514394736841, 63.72587789473684, 70.54729517543859, 77.23030688596491, 80.90794052631578, 85.59395758771929, 89.03432456140351, 92.03970263157895, 93.52261942982456, 95.3218917982456, 92.31651377192982, 86.40461877192982, 81.02657385964912, 78.19914583333333, 75.01581776315788, 68.68870609649123, 60.878677631578945, 55.83676052631579]}, "q_load": {"data_type": "time_series", "values": [9.894020877192984, 9.439259728070175, 9.118949701754387, 9.146630815789473, 9.431350842105264, 10.103606456140351, 11.369028789473683, 12.745175578947368, 14.109459035087719, 15.446061377192983, 16.181588105263156, 17.11879151754386, 17.8068649122807, 18.40794052631579, 18.704523885964914, 19.064378359649123, 18.463302754385964, 17.280923754385963, 16.205314771929825, 15.639829166666667, 15.003163552631577, 13.737741219298247, 12.17573552631579, 11.16735210526316, 9.894020877192984, 9.439259728070175, 9.118949701754387, 9.146630815789473, 9.431350842105264, 10.103606456140351, 11.369028789473683, 12.745175578947368, 14.109459035087719, 15.446061377192983, 16.181588105263156, 17.11879151754386, 17.8068649122807, 18.40794052631579, 18.704523885964914, 19.064378359649123, 18.463302754385964, 17.280923754385963, 16.205314771929825, 15.639829166666667, 15.003163552631577, 13.737741219298247, 12.17573552631579, 11.16735210526316]}, "area": "3", "zone": "32.0"}, "Carrel": {"bus": "Carrel", "in_service": true, "p_load": {"data_type": "time_series", "values": [67.6751028, 64.56453653999999, 62.373615959999995, 62.56295478, 64.51043976, 69.10866816, 77.76415691999999, 87.17700096, 96.50869979999999, 105.65105982, 110.68206263999998, 117.09253397999998, 121.798956, 125.91031319999999, 127.93894338000001, 130.40034798, 126.28899084, 118.20151847999999, 110.84435304, 106.97643149999999, 102.62163869999999, 93.96614994000001, 83.282031, 76.3846884, 67.6751028, 64.56453653999999, 62.373615959999995, 62.56295478, 64.51043976, 69.10866816, 77.76415691999999, 87.17700096, 96.50869979999999, 105.65105982, 110.68206263999998, 117.09253397999998, 121.798956, 125.91031319999999, 127.93894338000001, 130.40034798, 126.28899084, 118.20151847999999, 110.84435304, 106.97643149999999, 102.62163869999999, 93.96614994000001, 83.282031, 76.3846884]}, "q_load": {"data_type": "time_series", "values": [13.851629228070175, 13.214963619298244, 12.766529582456139, 12.805283142105262, 13.203891178947368, 14.14504903859649, 15.916640305263154, 17.843245810526316, 19.753242649122804, 21.624485928070175, 22.654223347368415, 23.966308124561397, 24.92961087719298, 25.771116736842103, 26.18633344035088, 26.69012970350877, 25.84862385614035, 24.193293256140347, 22.687440680701755, 21.89576083333333, 21.004428973684206, 19.232837707017545, 17.046029736842105, 15.63429294736842, 13.851629228070175, 13.214963619298244, 12.766529582456139, 12.805283142105262, 13.203891178947368, 14.14504903859649, 15.916640305263154, 17.843245810526316, 19.753242649122804, 21.624485928070175, 22.654223347368415, 23.966308124561397, 24.92961087719298, 25.771116736842103, 26.18633344035088, 26.69012970350877, 25.84862385614035, 24.193293256140347, 22.687440680701755, 21.89576083333333, 21.004428973684206, 19.232837707017545, 17.046029736842105, 15.63429294736842]}, "area": "3", "zone": "32.0"}, "Carter": {"bus": "Carter", "in_service": true, "p_load": {"data_type": "time_series", "values": [69.25814614035087, 66.07481809649123, 63.8326479122807, 64.02641571052631, 66.01945589473684, 70.72524519298246, 79.58320152631578, 89.21622905263158, 98.76621324561403, 108.12242964035087, 113.27111673684209, 119.831540622807, 124.64805438596491, 128.85558368421053, 130.93166720175438, 133.45064851754384, 129.24311928070176, 120.96646628070175, 113.43720340350876, 109.47880416666666, 105.02214486842105, 96.16418853508772, 85.23014868421052, 78.17146473684211, 69.25814614035087, 66.07481809649123, 63.8326479122807, 64.02641571052631, 66.01945589473684, 70.72524519298246, 79.58320152631578, 89.21622905263158, 98.76621324561403, 108.12242964035087, 113.27111673684209, 119.831540622807, 124.64805438596491, 128.85558368421053, 130.93166720175438, 133.45064851754384, 129.24311928070176, 120.96646628070175, 113.43720340350876, 109.47880416666666, 105.02214486842105, 96.16418853508772, 85.23014868421052, 78.17146473684211]}, "q_load": {"data_type": "time_series", "values": [14.247390063157894, 13.592534008421053, 13.131287570526315, 13.17114837473684, 13.581145212631577, 14.549193296842105, 16.3714014568421, 18.35305283368421, 20.317621010526313, 22.242328383157894, 23.301486871578945, 24.651059785263154, 25.64188547368421, 26.507434357894738, 26.93451439578947, 27.452704837894732, 26.58715596631579, 24.884530206315787, 23.335653271578945, 22.521354, 21.604555515789475, 19.782347355789472, 17.533059157894733, 16.08098703157895, 14.247390063157894, 13.592534008421053, 13.131287570526315, 13.17114837473684, 13.581145212631577, 14.549193296842105, 16.3714014568421, 18.35305283368421, 20.317621010526313, 22.242328383157894, 23.301486871578945, 24.651059785263154, 25.64188547368421, 26.507434357894738, 26.93451439578947, 27.452704837894732, 26.58715596631579, 24.884530206315787, 23.335653271578945, 22.521354, 21.604555515789475, 19.782347355789472, 17.533059157894733, 16.08098703157895]}, "area": "3", "zone": "33.0"}, "Caruso": {"bus": "Caruso", "in_service": true, "p_load": {"data_type": "time_series", "values": [77.17336284210528, 73.62622587894737, 71.12780767368422, 71.3437203631579, 73.56453656842106, 78.80813035789474, 88.67842455789474, 99.41236951578948, 110.05378047368421, 120.47927874210527, 126.21638722105263, 133.52657383684212, 138.89354631578948, 143.58193610526317, 145.89528631052633, 148.70215120526316, 144.01376148421053, 134.79120528421055, 126.40145522105264, 121.9906675, 117.02467571052632, 107.15438151052633, 94.97073710526317, 87.10534642105264, 77.17336284210528, 73.62622587894737, 71.12780767368422, 71.3437203631579, 73.56453656842106, 78.80813035789474, 88.67842455789474, 99.41236951578948, 110.05378047368421, 120.47927874210527, 126.21638722105263, 133.52657383684212, 138.89354631578948, 143.58193610526317, 145.89528631052633, 148.70215120526316, 144.01376148421053, 134.79120528421055, 126.40145522105264, 121.9906675, 117.02467571052632, 107.15438151052633, 94.97073710526317, 87.10534642105264]}, "q_load": {"data_type": "time_series", "values": [15.830433403508774, 15.10281556491228, 14.590319522807018, 14.634609305263158, 15.090161347368422, 16.16577032982456, 18.190446063157896, 20.392280926315788, 22.57513445614035, 24.71369820350877, 25.89054096842105, 27.390066428070178, 28.490983859649123, 29.452704842105263, 29.927238217543863, 30.503005375438597, 29.541284407017546, 27.649478007017546, 25.928503635087722, 25.023726666666665, 24.005061684210528, 21.980385950877196, 19.481176842105263, 17.867763368421056, 15.830433403508774, 15.10281556491228, 14.590319522807018, 14.634609305263158, 15.090161347368422, 16.16577032982456, 18.190446063157896, 20.392280926315788, 22.57513445614035, 24.71369820350877, 25.89054096842105, 27.390066428070178, 28.490983859649123, 29.452704842105263, 29.927238217543863, 30.503005375438597, 29.541284407017546, 27.649478007017546, 25.928503635087722, 25.023726666666665, 24.005061684210528, 21.980385950877196, 19.481176842105263, 17.867763368421056]}, "area": "3", "zone": "33.0"}, "Cecil": {"bus": "Cecil", "in_service": true, "p_load": {"data_type": "time_series", "values": [104.87662129824562, 100.05615311754386, 96.66086683859649, 96.95428664736842, 99.97231892631578, 107.09822843508772, 120.51170516842105, 135.0988611368421, 149.5602657719298, 163.7282505982456, 171.52483391578946, 181.4591900859649, 188.75276807017545, 195.12416957894737, 198.2679531912281, 202.08241061228068, 195.71100919649123, 183.17779179649122, 171.77633658245614, 165.78218916666665, 159.03353365789474, 145.6200569245614, 129.06279657894737, 118.37393231578947, 104.87662129824562, 100.05615311754386, 96.66086683859649, 96.95428664736842, 99.97231892631578, 107.09822843508772, 120.51170516842105, 135.0988611368421, 149.5602657719298, 163.7282505982456, 171.52483391578946, 181.4591900859649, 188.75276807017545, 195.12416957894737, 198.2679531912281, 202.08241061228068, 195.71100919649123, 183.17779179649122, 171.77633658245614, 165.78218916666665, 159.03353365789474, 145.6200569245614, 129.06279657894737, 118.37393231578947]}, "q_load": {"data_type": "time_series", "values": [21.371085094736845, 20.38880101263158, 19.696931355789474, 19.756722562105264, 20.371717818947367, 21.823789945263158, 24.557102185263158, 27.529579250526314, 30.47643151578947, 33.363492574736846, 34.95223030736842, 36.97658967789474, 38.46282821052632, 39.76115153684211, 40.40177159368422, 41.17905725684211, 39.88073394947369, 37.32679530947368, 35.00347990736842, 33.782030999999996, 32.406833273684214, 29.67352103368421, 26.299588736842107, 24.12148054736842, 21.371085094736845, 20.38880101263158, 19.696931355789474, 19.756722562105264, 20.371717818947367, 21.823789945263158, 24.557102185263158, 27.529579250526314, 30.47643151578947, 33.363492574736846, 34.95223030736842, 36.97658967789474, 38.46282821052632, 39.76115153684211, 40.40177159368422, 41.17905725684211, 39.88073394947369, 37.32679530947368, 35.00347990736842, 33.782030999999996, 32.406833273684214, 29.67352103368421, 26.299588736842107, 24.12148054736842]}, "area": "3", "zone": "34.0"}, "Chain": {"bus": "Chain", "in_service": true, "p_load": {"data_type": "time_series", "values": [76.77760200701755, 73.24865548982456, 70.76304968561404, 70.97785513052631, 73.18728253473684, 78.40398609964912, 88.22366340631578, 98.90256249263157, 109.48940211228069, 119.86143628701754, 125.5691236968421, 132.84182217614034, 138.18127171929825, 142.84561848421052, 145.14710535508772, 147.9395760708772, 143.2752293740351, 134.09996833403508, 125.75324263017544, 121.36507433333333, 116.42454916842105, 106.60487186175439, 94.48370768421053, 86.65865233684211, 76.77760200701755, 73.24865548982456, 70.76304968561404, 70.97785513052631, 73.18728253473684, 78.40398609964912, 88.22366340631578, 98.90256249263157, 109.48940211228069, 119.86143628701754, 125.5691236968421, 132.84182217614034, 138.18127171929825, 142.84561848421052, 145.14710535508772, 147.9395760708772, 143.2752293740351, 134.09996833403508, 125.75324263017544, 121.36507433333333, 116.42454916842105, 106.60487186175439, 94.48370768421053, 86.65865233684211]}, "q_load": {"data_type": "time_series", "values": [15.434672568421055, 14.725245175789473, 14.225561534736842, 14.268744072631577, 14.71290731368421, 15.761626071578947, 17.735684911578947, 19.882473903157894, 22.01075609473684, 24.09585574842105, 25.243277444210527, 26.70531476736842, 27.778709263157896, 28.71638722105263, 29.179057262105264, 29.740430241052632, 28.802752296842108, 26.958241056842105, 25.280291044210525, 24.3981335, 23.404935142105263, 21.430876302105265, 18.994147421052634, 17.421069284210528, 15.434672568421055, 14.725245175789473, 14.225561534736842, 14.268744072631577, 14.71290731368421, 15.761626071578947, 17.735684911578947, 19.882473903157894, 22.01075609473684, 24.09585574842105, 25.243277444210527, 26.70531476736842, 27.778709263157896, 28.71638722105263, 29.179057262105264, 29.740430241052632, 28.802752296842108, 26.958241056842105, 25.280291044210525, 24.3981335, 23.404935142105263, 21.430876302105265, 18.994147421052634, 17.421069284210528]}, "area": "3", "zone": "36.0"}, "Chase": {"bus": "Chase", "in_service": true, "p_load": {"data_type": "time_series", "values": [125.45618472280702, 119.68981335192981, 115.6282822182456, 115.97927874421052, 119.58952867789473, 128.11372986385965, 144.1592850505263, 161.60882634105263, 178.90794056491225, 195.856058262807, 205.18253717473684, 217.06627644245611, 225.7910470877193, 233.4126858736842, 237.1733628740351, 241.73631760035087, 234.11467892561404, 219.12211320561403, 205.48339130807017, 198.31303383333332, 190.2401138473684, 174.19455866070174, 154.3883264736842, 141.60202469473685, 125.45618472280702, 119.68981335192981, 115.6282822182456, 115.97927874421052, 119.58952867789473, 128.11372986385965, 144.1592850505263, 161.60882634105263, 178.90794056491225, 195.856058262807, 205.18253717473684, 217.06627644245611, 225.7910470877193, 233.4126858736842, 237.1733628740351, 241.73631760035087, 234.11467892561404, 219.12211320561403, 205.48339130807017, 198.31303383333332, 190.2401138473684, 174.19455866070174, 154.3883264736842, 141.60202469473685]}, "q_load": {"data_type": "time_series", "values": [25.328693445614036, 24.164504903859648, 23.344511236491226, 23.41537488842105, 24.144258155789473, 25.865232527719296, 29.104713701052628, 32.62764948210526, 36.12021512982455, 39.541917125614034, 41.42486554947368, 43.824106284912276, 45.585574175438595, 47.12432774736842, 47.88358114807018, 48.804808600701755, 47.26605505122807, 44.239164811228065, 41.48560581614035, 40.037962666666665, 38.408098694736836, 35.168617521403505, 31.169882947368418, 28.588421389473687, 25.328693445614036, 24.164504903859648, 23.344511236491226, 23.41537488842105, 24.144258155789473, 25.865232527719296, 29.104713701052628, 32.62764948210526, 36.12021512982455, 39.541917125614034, 41.42486554947368, 43.824106284912276, 45.585574175438595, 47.12432774736842, 47.88358114807018, 48.804808600701755, 47.26605505122807, 44.239164811228065, 41.48560581614035, 40.037962666666665, 38.408098694736836, 35.168617521403505, 31.169882947368418, 28.588421389473687]}, "area": "3", "zone": "36.0"}, "Chifa": {"bus": "Chifa", "in_service": true, "p_load": {"data_type": "time_series", "values": [39.57608350877193, 37.7570389122807, 36.47579880701754, 36.58652326315789, 37.72540336842105, 40.414425824561405, 45.47611515789473, 50.98070231578947, 56.43783614035087, 61.784245508771924, 64.72635242105262, 68.47516607017543, 71.2274596491228, 73.63176210526315, 74.81809554385966, 76.25751343859649, 73.85321101754386, 69.12369501754385, 64.8212590877193, 62.55931666666666, 60.012654210526314, 54.95096487719298, 48.702942105263155, 44.66940842105263, 39.57608350877193, 37.7570389122807, 36.47579880701754, 36.58652326315789, 37.72540336842105, 40.414425824561405, 45.47611515789473, 50.98070231578947, 56.43783614035087, 61.784245508771924, 64.72635242105262, 68.47516607017543, 71.2274596491228, 73.63176210526315, 74.81809554385966, 76.25751343859649, 73.85321101754386, 69.12369501754385, 64.8212590877193, 62.55931666666666, 60.012654210526314, 54.95096487719298, 48.702942105263155, 44.66940842105263]}, "q_load": {"data_type": "time_series", "values": [7.915216701754386, 7.55140778245614, 7.295159761403508, 7.317304652631579, 7.54508067368421, 8.082885164912282, 9.095223031578946, 10.196140463157896, 11.287567228070174, 12.356849101754385, 12.945270484210525, 13.695033214035087, 14.245491929824562, 14.726352421052631, 14.963619108771931, 15.251502687719299, 14.770642203508771, 13.824739003508771, 12.964251817543861, 12.511863333333332, 12.002530842105264, 10.990192975438596, 9.740588421052632, 8.933881684210526, 7.915216701754386, 7.55140778245614, 7.295159761403508, 7.317304652631579, 7.54508067368421, 8.082885164912282, 9.095223031578946, 10.196140463157896, 11.287567228070174, 12.356849101754385, 12.945270484210525, 13.695033214035087, 14.245491929824562, 14.726352421052631, 14.963619108771931, 15.251502687719299, 14.770642203508771, 13.824739003508771, 12.964251817543861, 12.511863333333332, 12.002530842105264, 10.990192975438596, 9.740588421052632, 8.933881684210526]}, "area": "3", "zone": "36.0"}, "Clark": {"bus": "Clark", "in_service": true, "p_load": {"data_type": "time_series", "values": [131.78835808421053, 125.73093957789474, 121.46441002736842, 121.8331224663158, 125.6255932168421, 134.5800379957895, 151.43546347578948, 169.76573871157896, 187.93799434736843, 205.74153754421053, 215.53875356210526, 228.02230301368422, 237.18744063157897, 245.19376781052634, 249.14425816105265, 253.93751975052632, 245.93119268842108, 230.18190440842108, 215.85479276210526, 208.32252450000001, 199.84213852105265, 182.98671304105264, 162.18079721052632, 148.7491300421053, 131.78835808421053, 125.73093957789474, 121.46441002736842, 121.8331224663158, 125.6255932168421, 134.5800379957895, 151.43546347578948, 169.76573871157896, 187.93799434736843, 205.74153754421053, 215.53875356210526, 228.02230301368422, 237.18744063157897, 245.19376781052634, 249.14425816105265, 253.93751975052632, 245.93119268842108, 230.18190440842108, 215.85479276210526, 208.32252450000001, 199.84213852105265, 182.98671304105264, 162.18079721052632, 148.7491300421053]}, "q_load": {"data_type": "time_series", "values": [26.911736785964912, 25.67478646035088, 24.80354318877193, 24.878835818947373, 25.653274290526316, 27.48180956070176, 30.923758307368423, 34.666877574736844, 38.3777285754386, 42.013286945964914, 44.01391964631579, 46.5631129277193, 48.43467256140352, 50.06959823157895, 50.87630496982457, 51.855109138245616, 50.22018349192983, 47.004112611929834, 44.07845617964912, 42.54033533333334, 40.808604863157896, 37.36665611649123, 33.11800063157895, 30.375197726315797, 26.911736785964912, 25.67478646035088, 24.80354318877193, 24.878835818947373, 25.653274290526316, 27.48180956070176, 30.923758307368423, 34.666877574736844, 38.3777285754386, 42.013286945964914, 44.01391964631579, 46.5631129277193, 48.43467256140352, 50.06959823157895, 50.87630496982457, 51.855109138245616, 50.22018349192983, 47.004112611929834, 44.07845617964912, 42.54033533333334, 40.808604863157896, 37.36665611649123, 33.11800063157895, 30.375197726315797]}, "area": "3", "zone": "37.0"}, "Clay": {"bus": "Clay", "in_service": true, "p_load": {"data_type": "time_series", "values": [71.63271115087718, 68.34024043122807, 66.02119584070175, 66.22160710631579, 68.2829800968421, 73.15011074245614, 82.31176843578946, 92.27507119157895, 102.15248341403507, 111.82948437087718, 117.15469788210525, 123.94005058701752, 128.92170196491227, 133.2734894105263, 135.42075293438597, 138.02609932385963, 133.67431194175438, 125.11388798175437, 117.32647894877192, 113.23236316666666, 108.62290412105263, 99.46124642771929, 88.15232521052631, 80.85162924210526, 71.63271115087718, 68.34024043122807, 66.02119584070175, 66.22160710631579, 68.2829800968421, 73.15011074245614, 82.31176843578946, 92.27507119157895, 102.15248341403507, 111.82948437087718, 117.15469788210525, 123.94005058701752, 128.92170196491227, 133.2734894105263, 135.42075293438597, 138.02609932385963, 133.67431194175438, 125.11388798175437, 117.32647894877192, 113.23236316666666, 108.62290412105263, 99.46124642771929, 88.15232521052631, 80.85162924210526]}, "q_load": {"data_type": "time_series", "values": [14.643150898245613, 13.97010439754386, 13.49604555859649, 13.53701360736842, 13.958399246315787, 14.95333755508772, 16.82616260842105, 18.862859856842107, 20.881999371929822, 22.86017083824561, 23.94875039578947, 25.335811445964907, 26.35416007017544, 27.24375197894737, 27.682695351228073, 28.215279972280698, 27.32568807649123, 25.575767156491228, 23.98386586245614, 23.146947166666667, 22.204682057894736, 20.331857004561403, 18.02008857894737, 16.527681115789473, 14.643150898245613, 13.97010439754386, 13.49604555859649, 13.53701360736842, 13.958399246315787, 14.95333755508772, 16.82616260842105, 18.862859856842107, 20.881999371929822, 22.86017083824561, 23.94875039578947, 25.335811445964907, 26.35416007017544, 27.24375197894737, 27.682695351228073, 28.215279972280698, 27.32568807649123, 25.575767156491228, 23.98386586245614, 23.146947166666667, 22.204682057894736, 20.331857004561403, 18.02008857894737, 16.527681115789473]}, "area": "3", "zone": "35.0"}, "Clive": {"bus": "Clive", "in_service": true, "p_load": {"data_type": "time_series", "values": [50.65738689122807, 48.329009807719295, 46.68902247298245, 46.830749776842104, 48.288516311578945, 51.73046505543859, 58.209427402105256, 65.25529896421052, 72.24043025964912, 79.08383425122807, 82.84973109894736, 87.64821256982455, 91.17114835087719, 94.24865549473684, 95.76716229614036, 97.6096172014035, 94.53211010245614, 88.47832962245613, 82.9712116322807, 80.07592533333333, 76.81619738947367, 70.33723504280701, 62.339765894736836, 57.17684277894737, 50.65738689122807, 48.329009807719295, 46.68902247298245, 46.830749776842104, 48.288516311578945, 51.73046505543859, 58.209427402105256, 65.25529896421052, 72.24043025964912, 79.08383425122807, 82.84973109894736, 87.64821256982455, 91.17114835087719, 94.24865549473684, 95.76716229614036, 97.6096172014035, 94.53211010245614, 88.47832962245613, 82.9712116322807, 80.07592533333333, 76.81619738947367, 70.33723504280701, 62.339765894736836, 57.17684277894737]}, "q_load": {"data_type": "time_series", "values": [10.289781712280702, 9.816830117192982, 9.483707689824561, 9.512496048421053, 9.808604875789474, 10.507750714385963, 11.82378994105263, 13.254982602105263, 14.673837396491226, 16.0639038322807, 16.828851629473682, 17.80354317824561, 18.51913950877193, 19.14425814736842, 19.45270484140351, 19.826953494035084, 19.201834864561405, 17.9721607045614, 16.853527362807018, 16.265422333333333, 15.60329009473684, 14.287250868070174, 12.66276494736842, 11.614046189473685, 10.289781712280702, 9.816830117192982, 9.483707689824561, 9.512496048421053, 9.808604875789474, 10.507750714385963, 11.82378994105263, 13.254982602105263, 14.673837396491226, 16.0639038322807, 16.828851629473682, 17.80354317824561, 18.51913950877193, 19.14425814736842, 19.45270484140351, 19.826953494035084, 19.201834864561405, 17.9721607045614, 16.853527362807018, 16.265422333333333, 15.60329009473684, 14.287250868070174, 12.66276494736842, 11.614046189473685]}, "area": "3", "zone": "35.0"}}, "shunt": {"Alber": {"shunt_type": "fixed", "bus": "Alber", "gs": 0.0, "bs": -100.0}, "Bajer": {"shunt_type": "fixed", "bus": "Bajer", "gs": 0.0, "bs": -100.0}, "Camus": {"shunt_type": "fixed", "bus": "Camus", "gs": 0.0, "bs": -100.0}}, "area": {"1": {"spinning_reserve_requirement": {"data_type": "time_series", "values": [44.009, 42.179, 41.227, 41.386, 42.115, 44.22, 47.351, 50.397, 52.385, 54.754, 57.261, 58.266, 58.033, 59.281, 60.698, 61.343, 59.979, 57.779, 55.59, 55.008, 52.829, 48.853, 44.897, 42.073, 44.009, 42.179, 41.227, 41.386, 42.115, 44.22, 47.351, 50.397, 52.385, 54.754, 57.261, 58.266, 58.033, 59.281, 60.698, 61.343, 59.979, 57.779, 55.59, 55.008, 52.829, 48.853, 44.897, 42.073]}}, "2": {"spinning_reserve_requirement": {"data_type": "time_series", "values": [44.547, 42.286, 40.617, 40.105, 39.433, 39.904, 43.981, 48.948, 53.766, 57.345, 60.925, 64.196, 66.833, 68.3, 68.125, 68.327, 67.668, 65.918, 63.415, 62.998, 59.916, 56.121, 52.003, 47.938, 44.547, 42.286, 40.617, 40.105, 39.433, 39.904, 43.981, 48.948, 53.766, 57.345, 60.925, 64.196, 66.833, 68.3, 68.125, 68.327, 67.668, 65.918, 63.415, 62.998, 59.916, 56.121, 52.003, 47.938]}}, "3": {"spinning_reserve_requirement": {"data_type": "time_series", "values": [33.838, 32.282, 31.187, 31.281, 32.255, 34.554, 38.882, 43.589, 48.254, 52.826, 55.341, 58.546, 60.899, 62.955, 63.969, 65.2, 63.144, 59.101, 55.422, 53.488, 51.311, 46.983, 41.641, 38.192, 33.838, 32.282, 31.187, 31.281, 32.255, 34.554, 38.882, 43.589, 48.254, 52.826, 55.341, 58.546, 60.899, 62.955, 63.969, 65.2, 63.144, 59.101, 55.422, 53.488, 51.311, 46.983, 41.641, 38.192]}}}, "branch": {"A1": {"from_bus": "Abel", "to_bus": "Adams", "in_service": true, "resistance": 0.003, "reactance": 0.014, "charging_susceptance": 0.461, "rating_long_term": 175.0, "rating_short_term": 193.0, "rating_emergency": 200.0, "angle_diff_min": -90, "angle_diff_max": 90, "pf": null, "qf": null, "pt": null, "qt": null, "branch_type": "line"}, "A2": {"from_bus": "Abel", "to_bus": "Adler", "in_service": true, "resistance": 0.055, "reactance": 0.211, "charging_susceptance": 0.057, "rating_long_term": 175.0, "rating_short_term": 208.0, "rating_emergency": 220.0, "angle_diff_min": -90, "angle_diff_max": 90, "pf": null, "qf": null, "pt": null, "qt": null, "branch_type": "line"}, "A3": {"from_bus": "Abel", "to_bus": "Aiken", "in_service": true, "resistance": 0.022, "reactance": 0.085, "charging_susceptance": 0.023, "rating_long_term": 175.0, "rating_short_term": 208.0, "rating_emergency": 220.0, "angle_diff_min": -90, "angle_diff_max": 90, "pf": null, "qf": null, "pt": null, "qt": null, "branch_type": "line"}, "A4": {"from_bus": "Adams", "to_bus": "Agricola", "in_service": true, "resistance": 0.033, "reactance": 0.127, "charging_susceptance": 0.034, "rating_long_term": 175.0, "rating_short_term": 208.0, "rating_emergency": 220.0, "angle_diff_min": -90, "angle_diff_max": 90, "pf": null, "qf": null, "pt": null, "qt": null, "branch_type": "line"}, "A5": {"from_bus": "Adams", "to_bus": "Alber", "in_service": true, "resistance": 0.05, "reactance": 0.192, "charging_susceptance": 0.052, "rating_long_term": 175.0, "rating_short_term": 208.0, "rating_emergency": 220.0, "angle_diff_min": -90, "angle_diff_max": 90, "pf": null, "qf": null, "pt": null, "qt": null, "branch_type": "line"}, "A6": {"from_bus": "Adler", "to_bus": "Ali", "in_service": true, "resistance": 0.031, "reactance": 0.119, "charging_susceptance": 0.032, "rating_long_term": 175.0, "rating_short_term": 208.0, "rating_emergency": 220.0, "angle_diff_min": -90, "angle_diff_max": 90, "pf": null, "qf": null, "pt": null, "qt": null, "branch_type": "line"}, "A7": {"from_bus": "Adler", "to_bus": "Avery", "in_service": true, "resistance": 0.002, "reactance": 0.084, "charging_susceptance": 0.0, "rating_long_term": 400.0, "rating_short_term": 510.0, "rating_emergency": 600.0, "angle_diff_min": -90, "angle_diff_max": 90, "pf": null, "qf": null, "pt": null, "qt": null, "branch_type": "transformer", "transformer_tap_ratio": 1.015, "transformer_phase_shift": 0.0}, "A8": {"from_bus": "Agricola", "to_bus": "Ali", "in_service": true, "resistance": 0.027, "reactance": 0.104, "charging_susceptance": 0.028, "rating_long_term": 175.0, "rating_short_term": 208.0, "rating_emergency": 220.0, "angle_diff_min": -90, "angle_diff_max": 90, "pf": null, "qf": null, "pt": null, "qt": null, "branch_type": "line"}, "A9": {"from_bus": "Aiken", "to_bus": "Allen", "in_service": true, "resistance": 0.023, "reactance": 0.088, "charging_susceptance": 0.024, "rating_long_term": 175.0, "rating_short_term": 208.0, "rating_emergency": 220.0, "angle_diff_min": -90, "angle_diff_max": 90, "pf": null, "qf": null, "pt": null, "qt": null, "branch_type": "line"}, "A10": {"from_bus": "Alber", "to_bus": "Allen", "in_service": true, "resistance": 0.014, "reactance": 0.061, "charging_susceptance": 2.459, "rating_long_term": 175.0, "rating_short_term": 193.0, "rating_emergency": 200.0, "angle_diff_min": -90, "angle_diff_max": 90, "pf": null, "qf": null, "pt": null, "qt": null, "branch_type": "line"}, "A11": {"from_bus": "Alder", "to_bus": "Alger", "in_service": true, "resistance": 0.016, "reactance": 0.061, "charging_susceptance": 0.017, "rating_long_term": 175.0, "rating_short_term": 208.0, "rating_emergency": 220.0, "angle_diff_min": -90, "angle_diff_max": 90, "pf": null, "qf": null, "pt": null, "qt": null, "branch_type": "line"}, "AB1": {"from_bus": "Alder", "to_bus": "Baffin", "in_service": true, "resistance": 0.042, "reactance": 0.161, "charging_susceptance": 0.044, "rating_long_term": 175.0, "rating_short_term": 208.0, "rating_emergency": 220.0, "angle_diff_min": -90, "angle_diff_max": 90, "pf": null, "qf": null, "pt": null, "qt": null, "branch_type": "line"}, "A12-1": {"from_bus": "Alger", "to_bus": "Ali", "in_service": true, "resistance": 0.043, "reactance": 0.165, "charging_susceptance": 0.045, "rating_long_term": 175.0, "rating_short_term": 208.0, "rating_emergency": 220.0, "angle_diff_min": -90, "angle_diff_max": 90, "pf": null, "qf": null, "pt": null, "qt": null, "branch_type": "line"}, "A13-2": {"from_bus": "Alger", "to_bus": "Allen", "in_service": true, "resistance": 0.043, "reactance": 0.165, "charging_susceptance": 0.045, "rating_long_term": 175.0, "rating_short_term": 208.0, "rating_emergency": 220.0, "angle_diff_min": -90, "angle_diff_max": 90, "pf": null, "qf": null, "pt": null, "qt": null, "branch_type": "line"}, "A14": {"from_bus": "Ali", "to_bus": "Anna", "in_service": true, "resistance": 0.002, "reactance": 0.084, "charging_susceptance": 0.0, "rating_long_term": 400.0, "rating_short_term": 510.0, "rating_emergency": 600.0, "angle_diff_min": -90, "angle_diff_max": 90, "pf": null, "qf": null, "pt": null, "qt": null, "branch_type": "transformer", "transformer_tap_ratio": 1.03, "transformer_phase_shift": 0.0}, "A15": {"from_bus": "Ali", "to_bus": "Archer", "in_service": true, "resistance": 0.002, "reactance": 0.084, "charging_susceptance": 0.0, "rating_long_term": 400.0, "rating_short_term": 510.0, "rating_emergency": 600.0, "angle_diff_min": -90, "angle_diff_max": 90, "pf": null, "qf": null, "pt": null, "qt": null, "branch_type": "transformer", "transformer_tap_ratio": 1.03, "transformer_phase_shift": 0.0}, "A16": {"from_bus": "Allen", "to_bus": "Anna", "in_service": true, "resistance": 0.002, "reactance": 0.084, "charging_susceptance": 0.0, "rating_long_term": 400.0, "rating_short_term": 510.0, "rating_emergency": 600.0, "angle_diff_min": -90, "angle_diff_max": 90, "pf": null, "qf": null, "pt": null, "qt": null, "branch_type": "transformer", "transformer_tap_ratio": 1.015, "transformer_phase_shift": 0.0}, "A17": {"from_bus": "Allen", "to_bus": "Archer", "in_service": true, "resistance": 0.002, "reactance": 0.084, "charging_susceptance": 0.0, "rating_long_term": 400.0, "rating_short_term": 510.0, "rating_emergency": 600.0, "angle_diff_min": -90, "angle_diff_max": 90, "pf": null, "qf": null, "pt": null, "qt": null, "branch_type": "transformer", "transformer_tap_ratio": 1.015, "transformer_phase_shift": 0.0}, "A18": {"from_bus": "Anna", "to_bus": "Arne", "in_service": true, "resistance": 0.006, "reactance": 0.048, "charging_susceptance": 0.1, "rating_long_term": 500.0, "rating_short_term": 600.0, "rating_emergency": 625.0, "angle_diff_min": -90, "angle_diff_max": 90, "pf": null, "qf": null, "pt": null, "qt": null, "branch_type": "line"}, "A19": {"from_bus": "Anna", "to_bus": "Arnold", "in_service": true, "resistance": 0.005, "reactance": 0.042, "charging_susceptance": 0.088, "rating_long_term": 500.0, "rating_short_term": 600.0, "rating_emergency": 625.0, "angle_diff_min": -90, "angle_diff_max": 90, "pf": null, "qf": null, "pt": null, "qt": null, "branch_type": "line"}, "A20": {"from_bus": "Archer", "to_bus": "Arne", "in_service": true, "resistance": 0.006, "reactance": 0.048, "charging_susceptance": 0.1, "rating_long_term": 500.0, "rating_short_term": 600.0, "rating_emergency": 625.0, "angle_diff_min": -90, "angle_diff_max": 90, "pf": null, "qf": null, "pt": null, "qt": null, "branch_type": "line"}, "A21": {"from_bus": "Archer", "to_bus": "Austen", "in_service": true, "resistance": 0.012, "reactance": 0.097, "charging_susceptance": 0.203, "rating_long_term": 500.0, "rating_short_term": 600.0, "rating_emergency": 625.0, "angle_diff_min": -90, "angle_diff_max": 90, "pf": null, "qf": null, "pt": null, "qt": null, "branch_type": "line"}, "A22": {"from_bus": "Arne", "to_bus": "Austen", "in_service": true, "resistance": 0.011, "reactance": 0.087, "charging_susceptance": 0.182, "rating_long_term": 500.0, "rating_short_term": 600.0, "rating_emergency": 625.0, "angle_diff_min": -90, "angle_diff_max": 90, "pf": null, "qf": null, "pt": null, "qt": null, "branch_type": "line"}, "AB2": {"from_bus": "Arne", "to_bus": "Barton", "in_service": true, "resistance": 0.01, "reactance": 0.075, "charging_susceptance": 0.158, "rating_long_term": 500.0, "rating_short_term": 600.0, "rating_emergency": 625.0, "angle_diff_min": -90, "angle_diff_max": 90, "pf": null, "qf": null, "pt": null, "qt": null, "branch_type": "line"}, "A23": {"from_bus": "Arnold", "to_bus": "Asser", "in_service": true, "resistance": 0.005, "reactance": 0.059, "charging_susceptance": 0.082, "rating_long_term": 500.0, "rating_short_term": 600.0, "rating_emergency": 625.0, "angle_diff_min": -90, "angle_diff_max": 90, "pf": null, "qf": null, "pt": null, "qt": null, "branch_type": "line"}, "A24": {"from_bus": "Arthur", "to_bus": "Asser", "in_service": true, "resistance": 0.002, "reactance": 0.017, "charging_susceptance": 0.036, "rating_long_term": 500.0, "rating_short_term": 600.0, "rating_emergency": 625.0, "angle_diff_min": -90, "angle_diff_max": 90, "pf": null, "qf": null, "pt": null, "qt": null, "branch_type": "line"}, "A25-1": {"from_bus": "Arthur", "to_bus": "Attlee", "in_service": true, "resistance": 0.006, "reactance": 0.049, "charging_susceptance": 0.103, "rating_long_term": 500.0, "rating_short_term": 600.0, "rating_emergency": 625.0, "angle_diff_min": -90, "angle_diff_max": 90, "pf": null, "qf": null, "pt": null, "qt": null, "branch_type": "line"}, "A25-2": {"from_bus": "Arthur", "to_bus": "Attlee", "in_service": true, "resistance": 0.006, "reactance": 0.049, "charging_susceptance": 0.103, "rating_long_term": 500.0, "rating_short_term": 600.0, "rating_emergency": 625.0, "angle_diff_min": -90, "angle_diff_max": 90, "pf": null, "qf": null, "pt": null, "qt": null, "branch_type": "line"}, "A26": {"from_bus": "Arthur", "to_bus": "Avery", "in_service": true, "resistance": 0.007, "reactance": 0.052, "charging_susceptance": 0.109, "rating_long_term": 500.0, "rating_short_term": 600.0, "rating_emergency": 625.0, "angle_diff_min": -90, "angle_diff_max": 90, "pf": null, "qf": null, "pt": null, "qt": null, "branch_type": "line"}, "A27": {"from_bus": "Asser", "to_bus": "Aston", "in_service": true, "resistance": 0.003, "reactance": 0.026, "charging_susceptance": 0.055, "rating_long_term": 500.0, "rating_short_term": 600.0, "rating_emergency": 625.0, "angle_diff_min": -90, "angle_diff_max": 90, "pf": null, "qf": null, "pt": null, "qt": null, "branch_type": "line"}, "A28": {"from_bus": "Asser", "to_bus": "Attar", "in_service": true, "resistance": 0.003, "reactance": 0.023, "charging_susceptance": 0.049, "rating_long_term": 500.0, "rating_short_term": 600.0, "rating_emergency": 625.0, "angle_diff_min": -90, "angle_diff_max": 90, "pf": null, "qf": null, "pt": null, "qt": null, "branch_type": "line"}, "A29": {"from_bus": "Aston", "to_bus": "Astor", "in_service": true, "resistance": 0.002, "reactance": 0.014, "charging_susceptance": 0.03, "rating_long_term": 500.0, "rating_short_term": 600.0, "rating_emergency": 625.0, "angle_diff_min": -90, "angle_diff_max": 90, "pf": null, "qf": null, "pt": null, "qt": null, "branch_type": "line"}, "A30": {"from_bus": "Aston", "to_bus": "Aubrey", "in_service": true, "resistance": 0.014, "reactance": 0.105, "charging_susceptance": 0.221, "rating_long_term": 500.0, "rating_short_term": 600.0, "rating_emergency": 625.0, "angle_diff_min": -90, "angle_diff_max": 90, "pf": null, "qf": null, "pt": null, "qt": null, "branch_type": "line"}, "A31-1": {"from_bus": "Astor", "to_bus": "Attlee", "in_service": true, "resistance": 0.003, "reactance": 0.026, "charging_susceptance": 0.055, "rating_long_term": 500.0, "rating_short_term": 600.0, "rating_emergency": 625.0, "angle_diff_min": -90, "angle_diff_max": 90, "pf": null, "qf": null, "pt": null, "qt": null, "branch_type": "line"}, "A31-2": {"from_bus": "Astor", "to_bus": "Attlee", "in_service": true, "resistance": 0.003, "reactance": 0.026, "charging_susceptance": 0.055, "rating_long_term": 500.0, "rating_short_term": 600.0, "rating_emergency": 625.0, "angle_diff_min": -90, "angle_diff_max": 90, "pf": null, "qf": null, "pt": null, "qt": null, "branch_type": "line"}, "A32-1": {"from_bus": "Attar", "to_bus": "Attila", "in_service": true, "resistance": 0.005, "reactance": 0.04, "charging_susceptance": 0.083, "rating_long_term": 500.0, "rating_short_term": 600.0, "rating_emergency": 625.0, "angle_diff_min": -90, "angle_diff_max": 90, "pf": null, "qf": null, "pt": null, "qt": null, "branch_type": "line"}, "A32-2": {"from_bus": "Attar", "to_bus": "Attila", "in_service": true, "resistance": 0.005, "reactance": 0.04, "charging_susceptance": 0.083, "rating_long_term": 500.0, "rating_short_term": 600.0, "rating_emergency": 625.0, "angle_diff_min": -90, "angle_diff_max": 90, "pf": null, "qf": null, "pt": null, "qt": null, "branch_type": "line"}, "A33-1": {"from_bus": "Attila", "to_bus": "Austen", "in_service": true, "resistance": 0.003, "reactance": 0.022, "charging_susceptance": 0.046, "rating_long_term": 500.0, "rating_short_term": 600.0, "rating_emergency": 625.0, "angle_diff_min": -90, "angle_diff_max": 90, "pf": null, "qf": null, "pt": null, "qt": null, "branch_type": "line"}, "A33-2": {"from_bus": "Attila", "to_bus": "Austen", "in_service": true, "resistance": 0.003, "reactance": 0.022, "charging_susceptance": 0.046, "rating_long_term": 500.0, "rating_short_term": 600.0, "rating_emergency": 625.0, "angle_diff_min": -90, "angle_diff_max": 90, "pf": null, "qf": null, "pt": null, "qt": null, "branch_type": "line"}, "A34": {"from_bus": "Attlee", "to_bus": "Aubrey", "in_service": true, "resistance": 0.009, "reactance": 0.068, "charging_susceptance": 0.142, "rating_long_term": 500.0, "rating_short_term": 600.0, "rating_emergency": 625.0, "angle_diff_min": -90, "angle_diff_max": 90, "pf": null, "qf": null, "pt": null, "qt": null, "branch_type": "line"}, "AB3": {"from_bus": "Austen", "to_bus": "Bates", "in_service": true, "resistance": 0.01, "reactance": 0.074, "charging_susceptance": 0.155, "rating_long_term": 500.0, "rating_short_term": 600.0, "rating_emergency": 625.0, "angle_diff_min": -90, "angle_diff_max": 90, "pf": null, "qf": null, "pt": null, "qt": null, "branch_type": "line"}, "B1": {"from_bus": "Bach", "to_bus": "Bacon", "in_service": true, "resistance": 0.003, "reactance": 0.014, "charging_susceptance": 0.461, "rating_long_term": 175.0, "rating_short_term": 193.0, "rating_emergency": 200.0, "angle_diff_min": -90, "angle_diff_max": 90, "pf": null, "qf": null, "pt": null, "qt": null, "branch_type": "line"}, "B2": {"from_bus": "Bach", "to_bus": "Baffin", "in_service": true, "resistance": 0.055, "reactance": 0.211, "charging_susceptance": 0.057, "rating_long_term": 175.0, "rating_short_term": 208.0, "rating_emergency": 220.0, "angle_diff_min": -90, "angle_diff_max": 90, "pf": null, "qf": null, "pt": null, "qt": null, "branch_type": "line"}, "B3": {"from_bus": "Bach", "to_bus": "Bain", "in_service": true, "resistance": 0.022, "reactance": 0.085, "charging_susceptance": 0.023, "rating_long_term": 175.0, "rating_short_term": 208.0, "rating_emergency": 220.0, "angle_diff_min": -90, "angle_diff_max": 90, "pf": null, "qf": null, "pt": null, "qt": null, "branch_type": "line"}, "B4": {"from_bus": "Bacon", "to_bus": "Bailey", "in_service": true, "resistance": 0.033, "reactance": 0.127, "charging_susceptance": 0.034, "rating_long_term": 175.0, "rating_short_term": 208.0, "rating_emergency": 220.0, "angle_diff_min": -90, "angle_diff_max": 90, "pf": null, "qf": null, "pt": null, "qt": null, "branch_type": "line"}, "B5": {"from_bus": "Bacon", "to_bus": "Bajer", "in_service": true, "resistance": 0.05, "reactance": 0.192, "charging_susceptance": 0.052, "rating_long_term": 175.0, "rating_short_term": 208.0, "rating_emergency": 220.0, "angle_diff_min": -90, "angle_diff_max": 90, "pf": null, "qf": null, "pt": null, "qt": null, "branch_type": "line"}, "B6": {"from_bus": "Baffin", "to_bus": "Balzac", "in_service": true, "resistance": 0.031, "reactance": 0.119, "charging_susceptance": 0.032, "rating_long_term": 175.0, "rating_short_term": 208.0, "rating_emergency": 220.0, "angle_diff_min": -90, "angle_diff_max": 90, "pf": null, "qf": null, "pt": null, "qt": null, "branch_type": "line"}, "B7": {"from_bus": "Baffin", "to_bus": "Bordet", "in_service": true, "resistance": 0.002, "reactance": 0.084, "charging_susceptance": 0.0, "rating_long_term": 400.0, "rating_short_term": 510.0, "rating_emergency": 600.0, "angle_diff_min": -90, "angle_diff_max": 90, "pf": null, "qf": null, "pt": null, "qt": null, "branch_type": "transformer", "transformer_tap_ratio": 1.015, "transformer_phase_shift": 0.0}, "B8": {"from_bus": "Bailey", "to_bus": "Balzac", "in_service": true, "resistance": 0.027, "reactance": 0.104, "charging_susceptance": 0.028, "rating_long_term": 175.0, "rating_short_term": 208.0, "rating_emergency": 220.0, "angle_diff_min": -90, "angle_diff_max": 90, "pf": null, "qf": null, "pt": null, "qt": null, "branch_type": "line"}, "B9": {"from_bus": "Bain", "to_bus": "Banks", "in_service": true, "resistance": 0.023, "reactance": 0.088, "charging_susceptance": 0.024, "rating_long_term": 175.0, "rating_short_term": 208.0, "rating_emergency": 220.0, "angle_diff_min": -90, "angle_diff_max": 90, "pf": null, "qf": null, "pt": null, "qt": null, "branch_type": "line"}, "B10": {"from_bus": "Bajer", "to_bus": "Banks", "in_service": true, "resistance": 0.014, "reactance": 0.061, "charging_susceptance": 2.459, "rating_long_term": 175.0, "rating_short_term": 193.0, "rating_emergency": 200.0, "angle_diff_min": -90, "angle_diff_max": 90, "pf": null, "qf": null, "pt": null, "qt": null, "branch_type": "line"}, "B11": {"from_bus": "Baker", "to_bus": "Balch", "in_service": true, "resistance": 0.016, "reactance": 0.061, "charging_susceptance": 0.017, "rating_long_term": 175.0, "rating_short_term": 208.0, "rating_emergency": 220.0, "angle_diff_min": -90, "angle_diff_max": 90, "pf": null, "qf": null, "pt": null, "qt": null, "branch_type": "line"}, "B12-1": {"from_bus": "Balch", "to_bus": "Balzac", "in_service": true, "resistance": 0.043, "reactance": 0.165, "charging_susceptance": 0.045, "rating_long_term": 175.0, "rating_short_term": 208.0, "rating_emergency": 220.0, "angle_diff_min": -90, "angle_diff_max": 90, "pf": null, "qf": null, "pt": null, "qt": null, "branch_type": "line"}, "B13-2": {"from_bus": "Balch", "to_bus": "Banks", "in_service": true, "resistance": 0.043, "reactance": 0.165, "charging_susceptance": 0.045, "rating_long_term": 175.0, "rating_short_term": 208.0, "rating_emergency": 220.0, "angle_diff_min": -90, "angle_diff_max": 90, "pf": null, "qf": null, "pt": null, "qt": null, "branch_type": "line"}, "B14": {"from_bus": "Balzac", "to_bus": "Bardeen", "in_service": true, "resistance": 0.002, "reactance": 0.084, "charging_susceptance": 0.0, "rating_long_term": 400.0, "rating_short_term": 510.0, "rating_emergency": 600.0, "angle_diff_min": -90, "angle_diff_max": 90, "pf": null, "qf": null, "pt": null, "qt": null, "branch_type": "transformer", "transformer_tap_ratio": 1.03, "transformer_phase_shift": 0.0}, "B15": {"from_bus": "Balzac", "to_bus": "Barkla", "in_service": true, "resistance": 0.002, "reactance": 0.084, "charging_susceptance": 0.0, "rating_long_term": 400.0, "rating_short_term": 510.0, "rating_emergency": 600.0, "angle_diff_min": -90, "angle_diff_max": 90, "pf": null, "qf": null, "pt": null, "qt": null, "branch_type": "transformer", "transformer_tap_ratio": 1.03, "transformer_phase_shift": 0.0}, "B16": {"from_bus": "Banks", "to_bus": "Bardeen", "in_service": true, "resistance": 0.002, "reactance": 0.084, "charging_susceptance": 0.0, "rating_long_term": 400.0, "rating_short_term": 510.0, "rating_emergency": 600.0, "angle_diff_min": -90, "angle_diff_max": 90, "pf": null, "qf": null, "pt": null, "qt": null, "branch_type": "transformer", "transformer_tap_ratio": 1.015, "transformer_phase_shift": 0.0}, "B17": {"from_bus": "Banks", "to_bus": "Barkla", "in_service": true, "resistance": 0.002, "reactance": 0.084, "charging_susceptance": 0.0, "rating_long_term": 400.0, "rating_short_term": 510.0, "rating_emergency": 600.0, "angle_diff_min": -90, "angle_diff_max": 90, "pf": null, "qf": null, "pt": null, "qt": null, "branch_type": "transformer", "transformer_tap_ratio": 1.015, "transformer_phase_shift": 0.0}, "B18": {"from_bus": "Bardeen", "to_bus": "Barlow", "in_service": true, "resistance": 0.006, "reactance": 0.048, "charging_susceptance": 0.1, "rating_long_term": 500.0, "rating_short_term": 600.0, "rating_emergency": 625.0, "angle_diff_min": -90, "angle_diff_max": 90, "pf": null, "qf": null, "pt": null, "qt": null, "branch_type": "line"}, "B19": {"from_bus": "Bardeen", "to_bus": "Barry", "in_service": true, "resistance": 0.005, "reactance": 0.042, "charging_susceptance": 0.088, "rating_long_term": 500.0, "rating_short_term": 600.0, "rating_emergency": 625.0, "angle_diff_min": -90, "angle_diff_max": 90, "pf": null, "qf": null, "pt": null, "qt": null, "branch_type": "line"}, "B20": {"from_bus": "Barkla", "to_bus": "Barlow", "in_service": true, "resistance": 0.006, "reactance": 0.048, "charging_susceptance": 0.1, "rating_long_term": 500.0, "rating_short_term": 600.0, "rating_emergency": 625.0, "angle_diff_min": -90, "angle_diff_max": 90, "pf": null, "qf": null, "pt": null, "qt": null, "branch_type": "line"}, "B21": {"from_bus": "Barkla", "to_bus": "Bloch", "in_service": true, "resistance": 0.012, "reactance": 0.097, "charging_susceptance": 0.203, "rating_long_term": 500.0, "rating_short_term": 600.0, "rating_emergency": 625.0, "angle_diff_min": -90, "angle_diff_max": 90, "pf": null, "qf": null, "pt": null, "qt": null, "branch_type": "line"}, "B22": {"from_bus": "Barlow", "to_bus": "Bloch", "in_service": true, "resistance": 0.011, "reactance": 0.087, "charging_susceptance": 0.182, "rating_long_term": 500.0, "rating_short_term": 600.0, "rating_emergency": 625.0, "angle_diff_min": -90, "angle_diff_max": 90, "pf": null, "qf": null, "pt": null, "qt": null, "branch_type": "line"}, "B23": {"from_bus": "Barry", "to_bus": "Basov", "in_service": true, "resistance": 0.005, "reactance": 0.059, "charging_susceptance": 0.082, "rating_long_term": 500.0, "rating_short_term": 600.0, "rating_emergency": 625.0, "angle_diff_min": -90, "angle_diff_max": 90, "pf": null, "qf": null, "pt": null, "qt": null, "branch_type": "line"}, "B24": {"from_bus": "Barton", "to_bus": "Basov", "in_service": true, "resistance": 0.002, "reactance": 0.017, "charging_susceptance": 0.036, "rating_long_term": 500.0, "rating_short_term": 600.0, "rating_emergency": 625.0, "angle_diff_min": -90, "angle_diff_max": 90, "pf": null, "qf": null, "pt": null, "qt": null, "branch_type": "line"}, "B25-1": {"from_bus": "Barton", "to_bus": "Behring", "in_service": true, "resistance": 0.006, "reactance": 0.049, "charging_susceptance": 0.103, "rating_long_term": 500.0, "rating_short_term": 600.0, "rating_emergency": 625.0, "angle_diff_min": -90, "angle_diff_max": 90, "pf": null, "qf": null, "pt": null, "qt": null, "branch_type": "line"}, "B25-2": {"from_bus": "Barton", "to_bus": "Behring", "in_service": true, "resistance": 0.006, "reactance": 0.049, "charging_susceptance": 0.103, "rating_long_term": 500.0, "rating_short_term": 600.0, "rating_emergency": 625.0, "angle_diff_min": -90, "angle_diff_max": 90, "pf": null, "qf": null, "pt": null, "qt": null, "branch_type": "line"}, "B26": {"from_bus": "Barton", "to_bus": "Bordet", "in_service": true, "resistance": 0.007, "reactance": 0.052, "charging_susceptance": 0.109, "rating_long_term": 500.0, "rating_short_term": 600.0, "rating_emergency": 625.0, "angle_diff_min": -90, "angle_diff_max": 90, "pf": null, "qf": null, "pt": null, "qt": null, "branch_type": "line"}, "B27": {"from_bus": "Basov", "to_bus": "Bates", "in_service": true, "resistance": 0.003, "reactance": 0.026, "charging_susceptance": 0.055, "rating_long_term": 500.0, "rating_short_term": 600.0, "rating_emergency": 625.0, "angle_diff_min": -90, "angle_diff_max": 90, "pf": null, "qf": null, "pt": null, "qt": null, "branch_type": "line"}, "B28": {"from_bus": "Basov", "to_bus": "Bede", "in_service": true, "resistance": 0.003, "reactance": 0.023, "charging_susceptance": 0.049, "rating_long_term": 500.0, "rating_short_term": 600.0, "rating_emergency": 625.0, "angle_diff_min": -90, "angle_diff_max": 90, "pf": null, "qf": null, "pt": null, "qt": null, "branch_type": "line"}, "B29": {"from_bus": "Bates", "to_bus": "Bayle", "in_service": true, "resistance": 0.002, "reactance": 0.014, "charging_susceptance": 0.03, "rating_long_term": 500.0, "rating_short_term": 600.0, "rating_emergency": 625.0, "angle_diff_min": -90, "angle_diff_max": 90, "pf": null, "qf": null, "pt": null, "qt": null, "branch_type": "line"}, "B30": {"from_bus": "Bates", "to_bus": "Bell", "in_service": true, "resistance": 0.014, "reactance": 0.105, "charging_susceptance": 0.221, "rating_long_term": 500.0, "rating_short_term": 600.0, "rating_emergency": 625.0, "angle_diff_min": -90, "angle_diff_max": 90, "pf": null, "qf": null, "pt": null, "qt": null, "branch_type": "line"}, "B31-1": {"from_bus": "Bayle", "to_bus": "Behring", "in_service": true, "resistance": 0.003, "reactance": 0.026, "charging_susceptance": 0.055, "rating_long_term": 500.0, "rating_short_term": 600.0, "rating_emergency": 625.0, "angle_diff_min": -90, "angle_diff_max": 90, "pf": null, "qf": null, "pt": null, "qt": null, "branch_type": "line"}, "B31-2": {"from_bus": "Bayle", "to_bus": "Behring", "in_service": true, "resistance": 0.003, "reactance": 0.026, "charging_susceptance": 0.055, "rating_long_term": 500.0, "rating_short_term": 600.0, "rating_emergency": 625.0, "angle_diff_min": -90, "angle_diff_max": 90, "pf": null, "qf": null, "pt": null, "qt": null, "branch_type": "line"}, "B32-1": {"from_bus": "Bede", "to_bus": "Beethoven", "in_service": true, "resistance": 0.005, "reactance": 0.04, "charging_susceptance": 0.083, "rating_long_term": 500.0, "rating_short_term": 600.0, "rating_emergency": 625.0, "angle_diff_min": -90, "angle_diff_max": 90, "pf": null, "qf": null, "pt": null, "qt": null, "branch_type": "line"}, "B32-2": {"from_bus": "Bede", "to_bus": "Beethoven", "in_service": true, "resistance": 0.005, "reactance": 0.04, "charging_susceptance": 0.083, "rating_long_term": 500.0, "rating_short_term": 600.0, "rating_emergency": 625.0, "angle_diff_min": -90, "angle_diff_max": 90, "pf": null, "qf": null, "pt": null, "qt": null, "branch_type": "line"}, "B33-1": {"from_bus": "Beethoven", "to_bus": "Bloch", "in_service": true, "resistance": 0.003, "reactance": 0.022, "charging_susceptance": 0.046, "rating_long_term": 500.0, "rating_short_term": 600.0, "rating_emergency": 625.0, "angle_diff_min": -90, "angle_diff_max": 90, "pf": null, "qf": null, "pt": null, "qt": null, "branch_type": "line"}, "B33-2": {"from_bus": "Beethoven", "to_bus": "Bloch", "in_service": true, "resistance": 0.003, "reactance": 0.022, "charging_susceptance": 0.046, "rating_long_term": 500.0, "rating_short_term": 600.0, "rating_emergency": 625.0, "angle_diff_min": -90, "angle_diff_max": 90, "pf": null, "qf": null, "pt": null, "qt": null, "branch_type": "line"}, "B34": {"from_bus": "Behring", "to_bus": "Bell", "in_service": true, "resistance": 0.009, "reactance": 0.068, "charging_susceptance": 0.142, "rating_long_term": 500.0, "rating_short_term": 600.0, "rating_emergency": 625.0, "angle_diff_min": -90, "angle_diff_max": 90, "pf": null, "qf": null, "pt": null, "qt": null, "branch_type": "line"}, "C1": {"from_bus": "Cabell", "to_bus": "Cabot", "in_service": true, "resistance": 0.003, "reactance": 0.014, "charging_susceptance": 0.461, "rating_long_term": 175.0, "rating_short_term": 193.0, "rating_emergency": 200.0, "angle_diff_min": -90, "angle_diff_max": 90, "pf": null, "qf": null, "pt": null, "qt": null, "branch_type": "line"}, "C2": {"from_bus": "Cabell", "to_bus": "Caesar", "in_service": true, "resistance": 0.055, "reactance": 0.211, "charging_susceptance": 0.057, "rating_long_term": 175.0, "rating_short_term": 208.0, "rating_emergency": 220.0, "angle_diff_min": -90, "angle_diff_max": 90, "pf": null, "qf": null, "pt": null, "qt": null, "branch_type": "line"}, "C3": {"from_bus": "Cabell", "to_bus": "Calvin", "in_service": true, "resistance": 0.022, "reactance": 0.085, "charging_susceptance": 0.023, "rating_long_term": 175.0, "rating_short_term": 208.0, "rating_emergency": 220.0, "angle_diff_min": -90, "angle_diff_max": 90, "pf": null, "qf": null, "pt": null, "qt": null, "branch_type": "line"}, "C4": {"from_bus": "Cabot", "to_bus": "Caine", "in_service": true, "resistance": 0.033, "reactance": 0.127, "charging_susceptance": 0.034, "rating_long_term": 175.0, "rating_short_term": 208.0, "rating_emergency": 220.0, "angle_diff_min": -90, "angle_diff_max": 90, "pf": null, "qf": null, "pt": null, "qt": null, "branch_type": "line"}, "C5": {"from_bus": "Cabot", "to_bus": "Camus", "in_service": true, "resistance": 0.05, "reactance": 0.192, "charging_susceptance": 0.052, "rating_long_term": 175.0, "rating_short_term": 208.0, "rating_emergency": 220.0, "angle_diff_min": -90, "angle_diff_max": 90, "pf": null, "qf": null, "pt": null, "qt": null, "branch_type": "line"}, "C6": {"from_bus": "Caesar", "to_bus": "Carter", "in_service": true, "resistance": 0.031, "reactance": 0.119, "charging_susceptance": 0.032, "rating_long_term": 175.0, "rating_short_term": 208.0, "rating_emergency": 220.0, "angle_diff_min": -90, "angle_diff_max": 90, "pf": null, "qf": null, "pt": null, "qt": null, "branch_type": "line"}, "C7": {"from_bus": "Caesar", "to_bus": "Curie", "in_service": true, "resistance": 0.002, "reactance": 0.084, "charging_susceptance": 0.0, "rating_long_term": 400.0, "rating_short_term": 510.0, "rating_emergency": 600.0, "angle_diff_min": -90, "angle_diff_max": 90, "pf": null, "qf": null, "pt": null, "qt": null, "branch_type": "transformer", "transformer_tap_ratio": 1.015, "transformer_phase_shift": 0.0}, "C8": {"from_bus": "Caine", "to_bus": "Carter", "in_service": true, "resistance": 0.027, "reactance": 0.104, "charging_susceptance": 0.028, "rating_long_term": 175.0, "rating_short_term": 208.0, "rating_emergency": 220.0, "angle_diff_min": -90, "angle_diff_max": 90, "pf": null, "qf": null, "pt": null, "qt": null, "branch_type": "line"}, "C9": {"from_bus": "Calvin", "to_bus": "Caruso", "in_service": true, "resistance": 0.023, "reactance": 0.088, "charging_susceptance": 0.024, "rating_long_term": 175.0, "rating_short_term": 208.0, "rating_emergency": 220.0, "angle_diff_min": -90, "angle_diff_max": 90, "pf": null, "qf": null, "pt": null, "qt": null, "branch_type": "line"}, "C10": {"from_bus": "Camus", "to_bus": "Caruso", "in_service": true, "resistance": 0.014, "reactance": 0.061, "charging_susceptance": 2.459, "rating_long_term": 175.0, "rating_short_term": 193.0, "rating_emergency": 200.0, "angle_diff_min": -90, "angle_diff_max": 90, "pf": null, "qf": null, "pt": null, "qt": null, "branch_type": "line"}, "C11": {"from_bus": "Carew", "to_bus": "Carrel", "in_service": true, "resistance": 0.016, "reactance": 0.061, "charging_susceptance": 0.017, "rating_long_term": 175.0, "rating_short_term": 208.0, "rating_emergency": 220.0, "angle_diff_min": -90, "angle_diff_max": 90, "pf": null, "qf": null, "pt": null, "qt": null, "branch_type": "line"}, "C12-1": {"from_bus": "Carrel", "to_bus": "Carter", "in_service": true, "resistance": 0.043, "reactance": 0.165, "charging_susceptance": 0.045, "rating_long_term": 175.0, "rating_short_term": 208.0, "rating_emergency": 220.0, "angle_diff_min": -90, "angle_diff_max": 90, "pf": null, "qf": null, "pt": null, "qt": null, "branch_type": "line"}, "C13-2": {"from_bus": "Carrel", "to_bus": "Caruso", "in_service": true, "resistance": 0.043, "reactance": 0.165, "charging_susceptance": 0.045, "rating_long_term": 175.0, "rating_short_term": 208.0, "rating_emergency": 220.0, "angle_diff_min": -90, "angle_diff_max": 90, "pf": null, "qf": null, "pt": null, "qt": null, "branch_type": "line"}, "C14": {"from_bus": "Carter", "to_bus": "Cary", "in_service": true, "resistance": 0.002, "reactance": 0.084, "charging_susceptance": 0.0, "rating_long_term": 400.0, "rating_short_term": 510.0, "rating_emergency": 600.0, "angle_diff_min": -90, "angle_diff_max": 90, "pf": null, "qf": null, "pt": null, "qt": null, "branch_type": "transformer", "transformer_tap_ratio": 1.03, "transformer_phase_shift": 0.0}, "C15": {"from_bus": "Carter", "to_bus": "Caxton", "in_service": true, "resistance": 0.002, "reactance": 0.084, "charging_susceptance": 0.0, "rating_long_term": 400.0, "rating_short_term": 510.0, "rating_emergency": 600.0, "angle_diff_min": -90, "angle_diff_max": 90, "pf": null, "qf": null, "pt": null, "qt": null, "branch_type": "transformer", "transformer_tap_ratio": 1.03, "transformer_phase_shift": 0.0}, "C16": {"from_bus": "Caruso", "to_bus": "Cary", "in_service": true, "resistance": 0.002, "reactance": 0.084, "charging_susceptance": 0.0, "rating_long_term": 400.0, "rating_short_term": 510.0, "rating_emergency": 600.0, "angle_diff_min": -90, "angle_diff_max": 90, "pf": null, "qf": null, "pt": null, "qt": null, "branch_type": "transformer", "transformer_tap_ratio": 1.015, "transformer_phase_shift": 0.0}, "C17": {"from_bus": "Caruso", "to_bus": "Caxton", "in_service": true, "resistance": 0.002, "reactance": 0.084, "charging_susceptance": 0.0, "rating_long_term": 400.0, "rating_short_term": 510.0, "rating_emergency": 600.0, "angle_diff_min": -90, "angle_diff_max": 90, "pf": null, "qf": null, "pt": null, "qt": null, "branch_type": "transformer", "transformer_tap_ratio": 1.015, "transformer_phase_shift": 0.0}, "C18": {"from_bus": "Cary", "to_bus": "Cecil", "in_service": true, "resistance": 0.006, "reactance": 0.048, "charging_susceptance": 0.1, "rating_long_term": 500.0, "rating_short_term": 600.0, "rating_emergency": 625.0, "angle_diff_min": -90, "angle_diff_max": 90, "pf": null, "qf": null, "pt": null, "qt": null, "branch_type": "line"}, "C19": {"from_bus": "Cary", "to_bus": "Chain", "in_service": true, "resistance": 0.005, "reactance": 0.042, "charging_susceptance": 0.088, "rating_long_term": 500.0, "rating_short_term": 600.0, "rating_emergency": 625.0, "angle_diff_min": -90, "angle_diff_max": 90, "pf": null, "qf": null, "pt": null, "qt": null, "branch_type": "line"}, "C20": {"from_bus": "Caxton", "to_bus": "Cecil", "in_service": true, "resistance": 0.006, "reactance": 0.048, "charging_susceptance": 0.1, "rating_long_term": 500.0, "rating_short_term": 600.0, "rating_emergency": 625.0, "angle_diff_min": -90, "angle_diff_max": 90, "pf": null, "qf": null, "pt": null, "qt": null, "branch_type": "line"}, "C21": {"from_bus": "Caxton", "to_bus": "Comte", "in_service": true, "resistance": 0.012, "reactance": 0.097, "charging_susceptance": 0.203, "rating_long_term": 500.0, "rating_short_term": 600.0, "rating_emergency": 625.0, "angle_diff_min": -90, "angle_diff_max": 90, "pf": null, "qf": null, "pt": null, "qt": null, "branch_type": "line"}, "C22": {"from_bus": "Cecil", "to_bus": "Comte", "in_service": true, "resistance": 0.011, "reactance": 0.087, "charging_susceptance": 0.182, "rating_long_term": 500.0, "rating_short_term": 600.0, "rating_emergency": 625.0, "angle_diff_min": -90, "angle_diff_max": 90, "pf": null, "qf": null, "pt": null, "qt": null, "branch_type": "line"}, "C23": {"from_bus": "Chain", "to_bus": "Chifa", "in_service": true, "resistance": 0.005, "reactance": 0.059, "charging_susceptance": 0.082, "rating_long_term": 500.0, "rating_short_term": 600.0, "rating_emergency": 625.0, "angle_diff_min": -90, "angle_diff_max": 90, "pf": null, "qf": null, "pt": null, "qt": null, "branch_type": "line"}, "C24": {"from_bus": "Chase", "to_bus": "Chifa", "in_service": true, "resistance": 0.002, "reactance": 0.017, "charging_susceptance": 0.036, "rating_long_term": 500.0, "rating_short_term": 600.0, "rating_emergency": 625.0, "angle_diff_min": -90, "angle_diff_max": 90, "pf": null, "qf": null, "pt": null, "qt": null, "branch_type": "line"}, "C25-1": {"from_bus": "Chase", "to_bus": "Cobb", "in_service": true, "resistance": 0.006, "reactance": 0.049, "charging_susceptance": 0.103, "rating_long_term": 500.0, "rating_short_term": 600.0, "rating_emergency": 625.0, "angle_diff_min": -90, "angle_diff_max": 90, "pf": null, "qf": null, "pt": null, "qt": null, "branch_type": "line"}, "C25-2": {"from_bus": "Chase", "to_bus": "Cobb", "in_service": true, "resistance": 0.006, "reactance": 0.049, "charging_susceptance": 0.103, "rating_long_term": 500.0, "rating_short_term": 600.0, "rating_emergency": 625.0, "angle_diff_min": -90, "angle_diff_max": 90, "pf": null, "qf": null, "pt": null, "qt": null, "branch_type": "line"}, "C26": {"from_bus": "Chase", "to_bus": "Curie", "in_service": true, "resistance": 0.007, "reactance": 0.052, "charging_susceptance": 0.109, "rating_long_term": 500.0, "rating_short_term": 600.0, "rating_emergency": 625.0, "angle_diff_min": -90, "angle_diff_max": 90, "pf": null, "qf": null, "pt": null, "qt": null, "branch_type": "line"}, "C27": {"from_bus": "Chifa", "to_bus": "Chuhsi", "in_service": true, "resistance": 0.003, "reactance": 0.026, "charging_susceptance": 0.055, "rating_long_term": 500.0, "rating_short_term": 600.0, "rating_emergency": 625.0, "angle_diff_min": -90, "angle_diff_max": 90, "pf": null, "qf": null, "pt": null, "qt": null, "branch_type": "line"}, "C28": {"from_bus": "Chifa", "to_bus": "Clay", "in_service": true, "resistance": 0.003, "reactance": 0.023, "charging_susceptance": 0.049, "rating_long_term": 500.0, "rating_short_term": 600.0, "rating_emergency": 625.0, "angle_diff_min": -90, "angle_diff_max": 90, "pf": null, "qf": null, "pt": null, "qt": null, "branch_type": "line"}, "C29": {"from_bus": "Chuhsi", "to_bus": "Clark", "in_service": true, "resistance": 0.002, "reactance": 0.014, "charging_susceptance": 0.03, "rating_long_term": 500.0, "rating_short_term": 600.0, "rating_emergency": 625.0, "angle_diff_min": -90, "angle_diff_max": 90, "pf": null, "qf": null, "pt": null, "qt": null, "branch_type": "line"}, "C30": {"from_bus": "Chuhsi", "to_bus": "Cole", "in_service": true, "resistance": 0.014, "reactance": 0.105, "charging_susceptance": 0.221, "rating_long_term": 500.0, "rating_short_term": 600.0, "rating_emergency": 625.0, "angle_diff_min": -90, "angle_diff_max": 90, "pf": null, "qf": null, "pt": null, "qt": null, "branch_type": "line"}, "C31-1": {"from_bus": "Clark", "to_bus": "Cobb", "in_service": true, "resistance": 0.003, "reactance": 0.026, "charging_susceptance": 0.055, "rating_long_term": 500.0, "rating_short_term": 600.0, "rating_emergency": 625.0, "angle_diff_min": -90, "angle_diff_max": 90, "pf": null, "qf": null, "pt": null, "qt": null, "branch_type": "line"}, "C31-2": {"from_bus": "Clark", "to_bus": "Cobb", "in_service": true, "resistance": 0.003, "reactance": 0.026, "charging_susceptance": 0.055, "rating_long_term": 500.0, "rating_short_term": 600.0, "rating_emergency": 625.0, "angle_diff_min": -90, "angle_diff_max": 90, "pf": null, "qf": null, "pt": null, "qt": null, "branch_type": "line"}, "C32-1": {"from_bus": "Clay", "to_bus": "Clive", "in_service": true, "resistance": 0.005, "reactance": 0.04, "charging_susceptance": 0.083, "rating_long_term": 500.0, "rating_short_term": 600.0, "rating_emergency": 625.0, "angle_diff_min": -90, "angle_diff_max": 90, "pf": null, "qf": null, "pt": null, "qt": null, "branch_type": "line"}, "C32-2": {"from_bus": "Clay", "to_bus": "Clive", "in_service": true, "resistance": 0.005, "reactance": 0.04, "charging_susceptance": 0.083, "rating_long_term": 500.0, "rating_short_term": 600.0, "rating_emergency": 625.0, "angle_diff_min": -90, "angle_diff_max": 90, "pf": null, "qf": null, "pt": null, "qt": null, "branch_type": "line"}, "C33-1": {"from_bus": "Clive", "to_bus": "Comte", "in_service": true, "resistance": 0.003, "reactance": 0.022, "charging_susceptance": 0.046, "rating_long_term": 500.0, "rating_short_term": 600.0, "rating_emergency": 625.0, "angle_diff_min": -90, "angle_diff_max": 90, "pf": null, "qf": null, "pt": null, "qt": null, "branch_type": "line"}, "C33-2": {"from_bus": "Clive", "to_bus": "Comte", "in_service": true, "resistance": 0.003, "reactance": 0.022, "charging_susceptance": 0.046, "rating_long_term": 500.0, "rating_short_term": 600.0, "rating_emergency": 625.0, "angle_diff_min": -90, "angle_diff_max": 90, "pf": null, "qf": null, "pt": null, "qt": null, "branch_type": "line"}, "C34": {"from_bus": "Cobb", "to_bus": "Cole", "in_service": true, "resistance": 0.009, "reactance": 0.068, "charging_susceptance": 0.142, "rating_long_term": 500.0, "rating_short_term": 600.0, "rating_emergency": 625.0, "angle_diff_min": -90, "angle_diff_max": 90, "pf": null, "qf": null, "pt": null, "qt": null, "branch_type": "line"}, "CA-1": {"from_bus": "Curtiss", "to_bus": "Attlee", "in_service": true, "resistance": 0.012, "reactance": 0.097, "charging_susceptance": 0.203, "rating_long_term": 500.0, "rating_short_term": 600.0, "rating_emergency": 625.0, "angle_diff_min": -90, "angle_diff_max": 90, "pf": null, "qf": null, "pt": null, "qt": null, "branch_type": "line"}, "CB-1": {"from_bus": "Clark", "to_bus": "Bloch", "in_service": true, "resistance": 0.013, "reactance": 0.104, "charging_susceptance": 0.218, "rating_long_term": 500.0, "rating_short_term": 600.0, "rating_emergency": 625.0, "angle_diff_min": -90, "angle_diff_max": 90, "pf": null, "qf": null, "pt": null, "qt": null, "branch_type": "line"}, "C35": {"from_bus": "Comte", "to_bus": "Curtiss", "in_service": true, "resistance": 0.0, "reactance": 0.009, "charging_susceptance": 0.0, "rating_long_term": 722.0, "rating_short_term": 893.0, "rating_emergency": 893.0, "angle_diff_min": -90, "angle_diff_max": 90, "pf": null, "qf": null, "pt": null, "qt": null, "branch_type": "transformer", "transformer_tap_ratio": 1.0, "transformer_phase_shift": 0.0}}, "generator": {"101_CT_1": {"bus": "Abel", "in_service": true, "mbase": 100.0, "pg": 8.0, "qg": 4.96, "p_min": 8.0, "p_max": 20.0, "q_min": 0.0, "q_max": 10.0, "ramp_q": 3.0, "fuel": "Oil", "unit_type": "CT", "area": "1", "zone": "11.0", "generator_type": "thermal", "p_fuel": {"data_type": "fuel_curve", "values": [[8.0, 104.91], [12.0, 142.74], [16.0, 180.64], [20.0, 222.05]]}, "startup_fuel": [[1.0, 5.0]], "non_fuel_startup_cost": 0.0, "shutdown_cost": 0.0, "agc_capable": true, "p_min_agc": 8.0, "p_max_agc": 20.0, "ramp_agc": 3.0, "ramp_up_60min": 180.0, "ramp_down_60min": 180.0, "fuel_cost": 10.3494, "startup_capacity": 8.0, "shutdown_capacity": 8.0, "min_up_time": 1.0, "min_down_time": 1.0, "initial_status": 2.0, "initial_p_output": 8.0, "initial_q_output": 0.0}, "101_CT_2": {"bus": "Abel", "in_service": true, "mbase": 100.0, "pg": 8.0, "qg": 4.96, "p_min": 8.0, "p_max": 20.0, "q_min": 0.0, "q_max": 10.0, "ramp_q": 3.0, "fuel": "Oil", "unit_type": "CT", "area": "1", "zone": "11.0", "generator_type": "thermal", "p_fuel": {"data_type": "fuel_curve", "values": [[8.0, 104.91], [12.0, 142.74], [16.0, 180.64], [20.0, 222.05]]}, "startup_fuel": [[1.0, 5.0]], "non_fuel_startup_cost": 0.0, "shutdown_cost": 0.0, "agc_capable": true, "p_min_agc": 8.0, "p_max_agc": 20.0, "ramp_agc": 3.0, "ramp_up_60min": 180.0, "ramp_down_60min": 180.0, "fuel_cost": 10.3494, "startup_capacity": 8.0, "shutdown_capacity": 8.0, "min_up_time": 1.0, "min_down_time": 1.0, "initial_status": 2.0, "initial_p_output": 8.0, "initial_q_output": 0.0}, "101_STEAM_3": {"bus": "Abel", "in_service": true, "mbase": 100.0, "pg": 76.0, "qg": 0.14, "p_min": 30.0, "p_max": 76.0, "q_min": -25.0, "q_max": 30.0, "ramp_q": 2.0, "fuel": "Coal", "unit_type": "STEAM", "area": "1", "zone": "11.0", "generator_type": "thermal", "p_fuel": {"data_type": "fuel_curve", "values": [[30.0, 398.1], [45.3, 500.81], [60.7, 624.44], [76.0, 755.24]]}, "startup_fuel": [[4.0, 3379.4], [10.0, 4861.4], [12.0, 5284.8]], "non_fuel_startup_cost": 0.0, "shutdown_cost": 0.0, "agc_capable": true, "p_min_agc": 30.0, "p_max_agc": 76.0, "ramp_agc": 2.0, "ramp_up_60min": 120.0, "ramp_down_60min": 120.0, "fuel_cost": 2.11399, "startup_capacity": 30.0, "shutdown_capacity": 30.0, "min_up_time": 8.0, "min_down_time": 4.0, "initial_status": 9.0, "initial_p_output": 30.0, "initial_q_output": 0.0}, "101_STEAM_4": {"bus": "Abel", "in_service": true, "mbase": 100.0, "pg": 76.0, "qg": 0.14, "p_min": 30.0, "p_max": 76.0, "q_min": -25.0, "q_max": 30.0, "ramp_q": 2.0, "fuel": "Coal", "unit_type": "STEAM", "area": "1", "zone": "11.0", "generator_type": "thermal", "p_fuel": {"data_type": "fuel_curve", "values": [[30.0, 398.1], [45.3, 500.81], [60.7, 624.44], [76.0, 755.24]]}, "startup_fuel": [[4.0, 3379.4], [10.0, 4861.4], [12.0, 5284.8]], "non_fuel_startup_cost": 0.0, "shutdown_cost": 0.0, "agc_capable": true, "p_min_agc": 30.0, "p_max_agc": 76.0, "ramp_agc": 2.0, "ramp_up_60min": 120.0, "ramp_down_60min": 120.0, "fuel_cost": 2.11399, "startup_capacity": 30.0, "shutdown_capacity": 30.0, "min_up_time": 8.0, "min_down_time": 4.0, "initial_status": 9.0, "initial_p_output": 30.0, "initial_q_output": 0.0}, "102_CT_1": {"bus": "Adams", "in_service": true, "mbase": 100.0, "pg": 8.0, "qg": 4.88, "p_min": 8.0, "p_max": 20.0, "q_min": 0.0, "q_max": 10.0, "ramp_q": 3.0, "fuel": "Oil", "unit_type": "CT", "area": "1", "zone": "12.0", "generator_type": "thermal", "p_fuel": {"data_type": "fuel_curve", "values": [[8.0, 117.11], [12.0, 151.5], [16.0, 188.09], [20.0, 226.58]]}, "startup_fuel": [[1.0, 5.0]], "non_fuel_startup_cost": 0.0, "shutdown_cost": 0.0, "agc_capable": true, "p_min_agc": 8.0, "p_max_agc": 20.0, "ramp_agc": 3.0, "ramp_up_60min": 180.0, "ramp_down_60min": 180.0, "fuel_cost": 10.3494, "startup_capacity": 8.0, "shutdown_capacity": 8.0, "min_up_time": 1.0, "min_down_time": 1.0, "initial_status": 2.0, "initial_p_output": 8.0, "initial_q_output": 0.0}, "102_CT_2": {"bus": "Adams", "in_service": true, "mbase": 100.0, "pg": 8.0, "qg": 4.88, "p_min": 8.0, "p_max": 20.0, "q_min": 0.0, "q_max": 10.0, "ramp_q": 3.0, "fuel": "Oil", "unit_type": "CT", "area": "1", "zone": "12.0", "generator_type": "thermal", "p_fuel": {"data_type": "fuel_curve", "values": [[8.0, 117.11], [12.0, 151.5], [16.0, 188.09], [20.0, 226.58]]}, "startup_fuel": [[1.0, 5.0]], "non_fuel_startup_cost": 0.0, "shutdown_cost": 0.0, "agc_capable": true, "p_min_agc": 8.0, "p_max_agc": 20.0, "ramp_agc": 3.0, "ramp_up_60min": 180.0, "ramp_down_60min": 180.0, "fuel_cost": 10.3494, "startup_capacity": 8.0, "shutdown_capacity": 8.0, "min_up_time": 1.0, "min_down_time": 1.0, "initial_status": 2.0, "initial_p_output": 8.0, "initial_q_output": 0.0}, "102_STEAM_3": {"bus": "Adams", "in_service": true, "mbase": 100.0, "pg": 76.0, "qg": -2.31, "p_min": {"data_type": "time_series", "values": [286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286]}, "p_max": {"data_type": "time_series", "values": [460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460, 460]}, "q_min": -25.0, "q_max": 30.0, "ramp_q": 2.0, "fuel": "Coal", "unit_type": "STEAM", "area": "1", "zone": "12.0", "generator_type": "thermal", "non_fuel_startup_cost": 0.0, "shutdown_cost": 0.0, "agc_capable": true, "p_min_agc": 286, "p_max_agc": 460, "ramp_agc": 2.0, "ramp_up_60min": 60, "ramp_down_60min": 60, "fuel_cost": 2.11399, "startup_capacity": {"data_type": "time_series", "values": [286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286]}, "shutdown_capacity": {"data_type": "time_series", "values": [286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286]}, "min_up_time": 8, "min_down_time": 4, "initial_status": 9.0, "initial_p_output": 30.0, "initial_q_output": 0.0, "fixed_commitment": {"data_type": "time_series", "values": [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]}, "p_cost": {"data_type": "time_series", "values": [{"data_type": "cost_curve", "cost_curve_type": "piecewise", "values": [[286, 6339.48172], [321.66, 6841.57452], [350, 7382.0835019999995], [400, 8335.698502], [430, 8907.867502], [460, 9480.036501999999]]}, {"data_type": "cost_curve", "cost_curve_type": "piecewise", "values": [[286, 6339.48172], [350, 7560.10892], [400, 8513.72392], [430, 9085.89292], [460, 9658.06192]]}, {"data_type": "cost_curve", "cost_curve_type": "piecewise", "values": [[286, 6339.48172], [350, 7560.10892], [400, 8513.72392], [430, 9085.89292], [460, 9658.06192]]}, {"data_type": "cost_curve", "cost_curve_type": "piecewise", "values": [[286, 6339.48172], [350, 7560.10892], [400, 8513.72392], [430, 9085.89292], [460, 9658.06192]]}, {"data_type": "cost_curve", "cost_curve_type": "piecewise", "values": [[286, 6339.48172], [350, 7560.10892], [400, 8513.72392], [430, 9085.89292], [460, 9658.06192]]}, {"data_type": "cost_curve", "cost_curve_type": "piecewise", "values": [[286, 6339.48172], [350, 7560.10892], [400, 8513.72392], [430, 9085.89292], [460, 9658.06192]]}, {"data_type": "cost_curve", "cost_curve_type": "piecewise", "values": [[286, 6339.48172], [350, 7560.10892], [400, 8513.72392], [430, 9085.89292], [460, 9658.06192]]}, {"data_type": "cost_curve", "cost_curve_type": "piecewise", "values": [[286, 6339.48172], [350, 7560.10892], [400, 8513.72392], [430, 9085.89292], [460, 9658.06192]]}, {"data_type": "cost_curve", "cost_curve_type": "piecewise", "values": [[286, 6339.48172], [350, 7560.10892], [400, 8513.72392], [430, 9085.89292], [460, 9658.06192]]}, {"data_type": "cost_curve", "cost_curve_type": "piecewise", "values": [[286, 6339.48172], [350, 7560.10892], [400, 8513.72392], [430, 9085.89292], [460, 9658.06192]]}, {"data_type": "cost_curve", "cost_curve_type": "piecewise", "values": [[286, 6339.48172], [350, 7560.10892], [400, 8513.72392], [430, 9085.89292], [460, 9658.06192]]}, {"data_type": "cost_curve", "cost_curve_type": "piecewise", "values": [[286, 6339.48172], [350, 7560.10892], [400, 8513.72392], [430, 9085.89292], [460, 9658.06192]]}, {"data_type": "cost_curve", "cost_curve_type": "piecewise", "values": [[286, 6339.48172], [350, 7560.10892], [400, 8513.72392], [430, 9085.89292], [460, 9658.06192]]}, {"data_type": "cost_curve", "cost_curve_type": "piecewise", "values": [[286, 6339.48172], [350, 7560.10892], [400, 8513.72392], [430, 9085.89292], [460, 9658.06192]]}, {"data_type": "cost_curve", "cost_curve_type": "piecewise", "values": [[286, 6339.48172], [350, 7560.10892], [400, 8513.72392], [430, 9085.89292], [460, 9658.06192]]}, {"data_type": "cost_curve", "cost_curve_type": "piecewise", "values": [[286, 6339.48172], [350, 7560.10892], [400, 8513.72392], [430, 9085.89292], [460, 9658.06192]]}, {"data_type": "cost_curve", "cost_curve_type": "piecewise", "values": [[286, 6339.48172], [350, 7560.10892], [400, 8513.72392], [430, 9085.89292], [460, 9658.06192]]}, {"data_type": "cost_curve", "cost_curve_type": "piecewise", "values": [[286, 6339.48172], [350, 7560.10892], [400, 8513.72392], [430, 9085.89292], [460, 9658.06192]]}, {"data_type": "cost_curve", "cost_curve_type": "piecewise", "values": [[286, 6339.48172], [350, 7560.10892], [400, 8513.72392], [430, 9085.89292], [460, 9658.06192]]}, {"data_type": "cost_curve", "cost_curve_type": "piecewise", "values": [[286, 6339.48172], [350, 7560.10892], [400, 8513.72392], [430, 9085.89292], [460, 9658.06192]]}, {"data_type": "cost_curve", "cost_curve_type": "piecewise", "values": [[286, 6339.48172], [350, 7560.10892], [400, 8513.72392], [430, 9085.89292], [460, 9658.06192]]}, {"data_type": "cost_curve", "cost_curve_type": "piecewise", "values": [[286, 6339.48172], [350, 7560.10892], [400, 8513.72392], [430, 9085.89292], [460, 9658.06192]]}, {"data_type": "cost_curve", "cost_curve_type": "piecewise", "values": [[286, 6339.48172], [350, 7560.10892], [400, 8513.72392], [430, 9085.89292], [460, 9658.06192]]}, {"data_type": "cost_curve", "cost_curve_type": "piecewise", "values": [[286, 6339.48172], [350, 7560.10892], [400, 8513.72392], [430, 9085.89292], [460, 9658.06192]]}, {"data_type": "cost_curve", "cost_curve_type": "piecewise", "values": [[286, 6339.48172], [350, 7560.10892], [400, 8513.72392], [430, 9085.89292], [460, 9658.06192]]}, {"data_type": "cost_curve", "cost_curve_type": "piecewise", "values": [[286, 6339.48172], [350, 7560.10892], [400, 8513.72392], [430, 9085.89292], [460, 9658.06192]]}, {"data_type": "cost_curve", "cost_curve_type": "piecewise", "values": [[286, 6339.48172], [350, 7560.10892], [400, 8513.72392], [430, 9085.89292], [460, 9658.06192]]}, {"data_type": "cost_curve", "cost_curve_type": "piecewise", "values": [[286, 6339.48172], [350, 7560.10892], [400, 8513.72392], [430, 9085.89292], [460, 9658.06192]]}, {"data_type": "cost_curve", "cost_curve_type": "piecewise", "values": [[286, 6339.48172], [350, 7560.10892], [400, 8513.72392], [430, 9085.89292], [460, 9658.06192]]}, {"data_type": "cost_curve", "cost_curve_type": "piecewise", "values": [[286, 6339.48172], [350, 7560.10892], [400, 8513.72392], [430, 9085.89292], [460, 9658.06192]]}, {"data_type": "cost_curve", "cost_curve_type": "piecewise", "values": [[286, 6339.48172], [350, 7560.10892], [400, 8513.72392], [430, 9085.89292], [460, 9658.06192]]}, {"data_type": "cost_curve", "cost_curve_type": "piecewise", "values": [[286, 6339.48172], [350, 7560.10892], [400, 8513.72392], [430, 9085.89292], [460, 9658.06192]]}, {"data_type": "cost_curve", "cost_curve_type": "piecewise", "values": [[286, 6339.48172], [350, 7560.10892], [400, 8513.72392], [430, 9085.89292], [460, 9658.06192]]}, {"data_type": "cost_curve", "cost_curve_type": "piecewise", "values": [[286, 6339.48172], [350, 7560.10892], [400, 8513.72392], [430, 9085.89292], [460, 9658.06192]]}, {"data_type": "cost_curve", "cost_curve_type": "piecewise", "values": [[286, 6339.48172], [350, 7560.10892], [400, 8513.72392], [430, 9085.89292], [460, 9658.06192]]}, {"data_type": "cost_curve", "cost_curve_type": "piecewise", "values": [[286, 6339.48172], [350, 7560.10892], [400, 8513.72392], [430, 9085.89292], [460, 9658.06192]]}, {"data_type": "cost_curve", "cost_curve_type": "piecewise", "values": [[286, 6339.48172], [350, 7560.10892], [400, 8513.72392], [430, 9085.89292], [460, 9658.06192]]}, {"data_type": "cost_curve", "cost_curve_type": "piecewise", "values": [[286, 6339.48172], [350, 7560.10892], [400, 8513.72392], [430, 9085.89292], [460, 9658.06192]]}, {"data_type": "cost_curve", "cost_curve_type": "piecewise", "values": [[286, 6339.48172], [350, 7560.10892], [400, 8513.72392], [430, 9085.89292], [460, 9658.06192]]}, {"data_type": "cost_curve", "cost_curve_type": "piecewise", "values": [[286, 6339.48172], [350, 7560.10892], [400, 8513.72392], [430, 9085.89292], [460, 9658.06192]]}, {"data_type": "cost_curve", "cost_curve_type": "piecewise", "values": [[286, 6339.48172], [350, 7560.10892], [400, 8513.72392], [430, 9085.89292], [460, 9658.06192]]}, {"data_type": "cost_curve", "cost_curve_type": "piecewise", "values": [[286, 6339.48172], [350, 7560.10892], [400, 8513.72392], [430, 9085.89292], [460, 9658.06192]]}, {"data_type": "cost_curve", "cost_curve_type": "piecewise", "values": [[286, 6339.48172], [350, 7560.10892], [400, 8513.72392], [430, 9085.89292], [460, 9658.06192]]}, {"data_type": "cost_curve", "cost_curve_type": "piecewise", "values": [[286, 6339.48172], [350, 7560.10892], [400, 8513.72392], [430, 9085.89292], [460, 9658.06192]]}, {"data_type": "cost_curve", "cost_curve_type": "piecewise", "values": [[286, 6339.48172], [350, 7560.10892], [400, 8513.72392], [430, 9085.89292], [460, 9658.06192]]}, {"data_type": "cost_curve", "cost_curve_type": "piecewise", "values": [[286, 6339.48172], [350, 7560.10892], [400, 8513.72392], [430, 9085.89292], [460, 9658.06192]]}, {"data_type": "cost_curve", "cost_curve_type": "piecewise", "values": [[286, 6339.48172], [350, 7560.10892], [400, 8513.72392], [430, 9085.89292], [460, 9658.06192]]}, {"data_type": "cost_curve", "cost_curve_type": "piecewise", "values": [[286, 6339.48172], [350, 7560.10892], [400, 8513.72392], [430, 9085.89292], [460, 9658.06192]]}]}, "startup_cost": [[4, 7355.42], [10, 10488.35], [12, 11383.41]]}, "102_STEAM_4": {"bus": "Adams", "in_service": true, "mbase": 100.0, "pg": 76.0, "qg": -2.31, "p_min": 30.0, "p_max": 76.0, "q_min": -25.0, "q_max": 30.0, "ramp_q": 2.0, "fuel": "Coal", "unit_type": "STEAM", "area": "1", "zone": "12.0", "generator_type": "thermal", "p_fuel": {"data_type": "fuel_curve", "values": [[30.0, 347.73], [45.3, 481.36], [60.7, 633.22], [76.0, 796.18]]}, "startup_fuel": [[4.0, 3379.4], [10.0, 4861.4], [12.0, 5284.8]], "non_fuel_startup_cost": 0.0, "shutdown_cost": 0.0, "agc_capable": true, "p_min_agc": 30.0, "p_max_agc": 76.0, "ramp_agc": 2.0, "ramp_up_60min": 120.0, "ramp_down_60min": 120.0, "fuel_cost": 2.11399, "startup_capacity": 30.0, "shutdown_capacity": 30.0, "min_up_time": 8.0, "min_down_time": 4.0, "initial_status": 9.0, "initial_p_output": 30.0, "initial_q_output": 0.0}, "107_CC_1": {"bus": "Alder", "in_service": true, "mbase": 100.0, "pg": 355.0, "qg": 49.51, "p_min": 170.0, "p_max": 355.0, "q_min": -25.0, "q_max": 150.0, "ramp_q": 4.14, "fuel": "NG", "unit_type": "CC", "area": "1", "zone": "12.0", "generator_type": "thermal", "p_fuel": {"data_type": "fuel_curve", "values": [[170.0, 1227.74], [231.7, 1596.09], [293.3, 2020.64], [355.0, 2505.23]]}, "startup_fuel": [[4.5, 7215.1]], "non_fuel_startup_cost": 0.0, "shutdown_cost": 0.0, "agc_capable": true, "p_min_agc": 170.0, "p_max_agc": 355.0, "ramp_agc": 4.14, "ramp_up_60min": 248.39999999999998, "ramp_down_60min": 248.39999999999998, "fuel_cost": 3.88722, "startup_capacity": 170.0, "shutdown_capacity": 170.0, "min_up_time": 8.0, "min_down_time": 4.5, "initial_status": 9.0, "initial_p_output": 170.0, "initial_q_output": 0.0}, "113_CT_1": {"bus": "Arne", "in_service": true, "mbase": 100.0, "pg": 55.0, "qg": 19.0, "p_min": 22.0, "p_max": 55.0, "q_min": -15.0, "q_max": 19.0, "ramp_q": 3.7, "fuel": "NG", "unit_type": "CT", "area": "1", "zone": "14.0", "generator_type": "thermal", "p_fuel": {"data_type": "fuel_curve", "values": [[22.0, 288.75], [33.0, 364.64], [44.0, 448.26], [55.0, 534.03]]}, "startup_fuel": [[2.2, 1457.4]], "non_fuel_startup_cost": 0.0, "shutdown_cost": 0.0, "agc_capable": true, "p_min_agc": 22.0, "p_max_agc": 55.0, "ramp_agc": 3.7, "ramp_up_60min": 222.0, "ramp_down_60min": 222.0, "fuel_cost": 3.88722, "startup_capacity": 22.0, "shutdown_capacity": 22.0, "min_up_time": 2.2, "min_down_time": 2.2, "initial_status": 3.2, "initial_p_output": 22.0, "initial_q_output": 0.0}, "113_CT_2": {"bus": "Arne", "in_service": true, "mbase": 100.0, "pg": 55.0, "qg": 19.0, "p_min": 22.0, "p_max": 55.0, "q_min": -15.0, "q_max": 19.0, "ramp_q": 3.7, "fuel": "NG", "unit_type": "CT", "area": "1", "zone": "14.0", "generator_type": "thermal", "p_fuel": {"data_type": "fuel_curve", "values": [[22.0, 288.75], [33.0, 364.64], [44.0, 448.26], [55.0, 534.03]]}, "startup_fuel": [[2.2, 1457.4]], "non_fuel_startup_cost": 0.0, "shutdown_cost": 0.0, "agc_capable": true, "p_min_agc": 22.0, "p_max_agc": 55.0, "ramp_agc": 3.7, "ramp_up_60min": 222.0, "ramp_down_60min": 222.0, "fuel_cost": 3.88722, "startup_capacity": 22.0, "shutdown_capacity": 22.0, "min_up_time": 2.2, "min_down_time": 2.2, "initial_status": 3.2, "initial_p_output": 22.0, "initial_q_output": 0.0}, "113_CT_3": {"bus": "Arne", "in_service": true, "mbase": 100.0, "pg": 55.0, "qg": 19.0, "p_min": 22.0, "p_max": 55.0, "q_min": -15.0, "q_max": 19.0, "ramp_q": 3.7, "fuel": "NG", "unit_type": "CT", "area": "1", "zone": "14.0", "generator_type": "thermal", "p_fuel": {"data_type": "fuel_curve", "values": [[22.0, 288.75], [33.0, 364.64], [44.0, 448.26], [55.0, 534.03]]}, "startup_fuel": [[2.2, 1457.4]], "non_fuel_startup_cost": 0.0, "shutdown_cost": 0.0, "agc_capable": true, "p_min_agc": 22.0, "p_max_agc": 55.0, "ramp_agc": 3.7, "ramp_up_60min": 222.0, "ramp_down_60min": 222.0, "fuel_cost": 3.88722, "startup_capacity": 22.0, "shutdown_capacity": 22.0, "min_up_time": 2.2, "min_down_time": 2.2, "initial_status": 3.2, "initial_p_output": 22.0, "initial_q_output": 0.0}, "113_CT_4": {"bus": "Arne", "in_service": true, "mbase": 100.0, "pg": 55.0, "qg": 19.0, "p_min": 22.0, "p_max": 55.0, "q_min": -15.0, "q_max": 19.0, "ramp_q": 3.7, "fuel": "NG", "unit_type": "CT", "area": "1", "zone": "14.0", "generator_type": "thermal", "p_fuel": {"data_type": "fuel_curve", "values": [[22.0, 288.75], [33.0, 364.64], [44.0, 448.26], [55.0, 534.03]]}, "startup_fuel": [[2.2, 1457.4]], "non_fuel_startup_cost": 0.0, "shutdown_cost": 0.0, "agc_capable": true, "p_min_agc": 22.0, "p_max_agc": 55.0, "ramp_agc": 3.7, "ramp_up_60min": 222.0, "ramp_down_60min": 222.0, "fuel_cost": 3.88722, "startup_capacity": 22.0, "shutdown_capacity": 22.0, "min_up_time": 2.2, "min_down_time": 2.2, "initial_status": 3.2, "initial_p_output": 22.0, "initial_q_output": 0.0}, "115_STEAM_1": {"bus": "Arthur", "in_service": true, "mbase": 100.0, "pg": 5.0, "qg": 6.0, "p_min": 5.0, "p_max": 12.0, "q_min": 0.0, "q_max": 6.0, "ramp_q": 1.0, "fuel": "Oil", "unit_type": "STEAM", "area": "1", "zone": "16.0", "generator_type": "thermal", "p_fuel": {"data_type": "fuel_curve", "values": [[5.0, 86.7], [7.3, 114.37], [9.7, 143.37], [12.0, 173.07]]}, "startup_fuel": [[2.0, 38.0], [4.0, 44.0], [12.0, 68.0]], "non_fuel_startup_cost": 0.0, "shutdown_cost": 0.0, "agc_capable": true, "p_min_agc": 5.0, "p_max_agc": 12.0, "ramp_agc": 1.0, "ramp_up_60min": 60.0, "ramp_down_60min": 60.0, "fuel_cost": 10.3494, "startup_capacity": 5.0, "shutdown_capacity": 5.0, "min_up_time": 4.0, "min_down_time": 2.0, "initial_status": 5.0, "initial_p_output": 5.0, "initial_q_output": 0.0}, "115_STEAM_2": {"bus": "Arthur", "in_service": true, "mbase": 100.0, "pg": 5.0, "qg": 6.0, "p_min": 5.0, "p_max": 12.0, "q_min": 0.0, "q_max": 6.0, "ramp_q": 1.0, "fuel": "Oil", "unit_type": "STEAM", "area": "1", "zone": "16.0", "generator_type": "thermal", "p_fuel": {"data_type": "fuel_curve", "values": [[5.0, 86.7], [7.3, 114.37], [9.7, 143.37], [12.0, 173.07]]}, "startup_fuel": [[2.0, 38.0], [4.0, 44.0], [12.0, 68.0]], "non_fuel_startup_cost": 0.0, "shutdown_cost": 0.0, "agc_capable": true, "p_min_agc": 5.0, "p_max_agc": 12.0, "ramp_agc": 1.0, "ramp_up_60min": 60.0, "ramp_down_60min": 60.0, "fuel_cost": 10.3494, "startup_capacity": 5.0, "shutdown_capacity": 5.0, "min_up_time": 4.0, "min_down_time": 2.0, "initial_status": 5.0, "initial_p_output": 5.0, "initial_q_output": 0.0}, "115_STEAM_3": {"bus": "Arthur", "in_service": true, "mbase": 100.0, "pg": 155.0, "qg": 80.0, "p_min": 62.0, "p_max": 155.0, "q_min": -50.0, "q_max": 80.0, "ramp_q": 3.0, "fuel": "Coal", "unit_type": "STEAM", "area": "1", "zone": "16.0", "generator_type": "thermal", "p_fuel": {"data_type": "fuel_curve", "values": [[62.0, 709.65], [93.0, 1008.8], [124.0, 1338.64], [155.0, 1735.32]]}, "startup_fuel": [[8.0, 6892.1], [11.0, 7437.5], [60.0, 10778.1]], "non_fuel_startup_cost": 0.0, "shutdown_cost": 0.0, "agc_capable": true, "p_min_agc": 62.0, "p_max_agc": 155.0, "ramp_agc": 3.0, "ramp_up_60min": 180.0, "ramp_down_60min": 180.0, "fuel_cost": 2.11399, "startup_capacity": 62.0, "shutdown_capacity": 62.0, "min_up_time": 8.0, "min_down_time": 8.0, "initial_status": 9.0, "initial_p_output": 62.0, "initial_q_output": 0.0}, "116_STEAM_1": {"bus": "Asser", "in_service": true, "mbase": 100.0, "pg": 155.0, "qg": 80.0, "p_min": 62.0, "p_max": 155.0, "q_min": -50.0, "q_max": 80.0, "ramp_q": 3.0, "fuel": "Coal", "unit_type": "STEAM", "area": "1", "zone": "16.0", "generator_type": "thermal", "p_fuel": {"data_type": "fuel_curve", "values": [[62.0, 820.76], [93.0, 1109.43], [124.0, 1424.33], [155.0, 1774.44]]}, "startup_fuel": [[8.0, 6892.1], [11.0, 7437.5], [60.0, 10778.1]], "non_fuel_startup_cost": 0.0, "shutdown_cost": 0.0, "agc_capable": true, "p_min_agc": 62.0, "p_max_agc": 155.0, "ramp_agc": 3.0, "ramp_up_60min": 180.0, "ramp_down_60min": 180.0, "fuel_cost": 2.11399, "startup_capacity": 62.0, "shutdown_capacity": 62.0, "min_up_time": 8.0, "min_down_time": 8.0, "initial_status": 9.0, "initial_p_output": 62.0, "initial_q_output": 0.0}, "118_CC_1": {"bus": "Astor", "in_service": true, "mbase": 100.0, "pg": 355.0, "qg": 68.43, "p_min": 170.0, "p_max": 355.0, "q_min": -25.0, "q_max": 150.0, "ramp_q": 4.14, "fuel": "NG", "unit_type": "CC", "area": "1", "zone": "17.0", "generator_type": "thermal", "p_fuel": {"data_type": "fuel_curve", "values": [[170.0, 1233.69], [231.7, 1592.04], [293.3, 2031.87], [355.0, 2547.12]]}, "startup_fuel": [[4.5, 7215.1]], "non_fuel_startup_cost": 0.0, "shutdown_cost": 0.0, "agc_capable": true, "p_min_agc": 170.0, "p_max_agc": 355.0, "ramp_agc": 4.14, "ramp_up_60min": 248.39999999999998, "ramp_down_60min": 248.39999999999998, "fuel_cost": 3.88722, "startup_capacity": 170.0, "shutdown_capacity": 170.0, "min_up_time": 8.0, "min_down_time": 4.5, "initial_status": 9.0, "initial_p_output": 170.0, "initial_q_output": 0.0}, "123_STEAM_2": {"bus": "Austen", "in_service": true, "mbase": 100.0, "pg": 155.0, "qg": -5.19, "p_min": 62.0, "p_max": 155.0, "q_min": -50.0, "q_max": 80.0, "ramp_q": 3.0, "fuel": "Coal", "unit_type": "STEAM", "area": "1", "zone": "15.0", "generator_type": "thermal", "p_fuel": {"data_type": "fuel_curve", "values": [[62.0, 679.95], [93.0, 964.88], [124.0, 1301.69], [155.0, 1786.13]]}, "startup_fuel": [[8.0, 6892.1], [11.0, 7437.5], [60.0, 10778.1]], "non_fuel_startup_cost": 0.0, "shutdown_cost": 0.0, "agc_capable": true, "p_min_agc": 62.0, "p_max_agc": 155.0, "ramp_agc": 3.0, "ramp_up_60min": 180.0, "ramp_down_60min": 180.0, "fuel_cost": 2.11399, "startup_capacity": 62.0, "shutdown_capacity": 62.0, "min_up_time": 8.0, "min_down_time": 8.0, "initial_status": 9.0, "initial_p_output": 62.0, "initial_q_output": 0.0}, "123_STEAM_3": {"bus": "Austen", "in_service": true, "mbase": 100.0, "pg": 350.0, "qg": 28.41, "p_min": 140.0, "p_max": 350.0, "q_min": -25.0, "q_max": 150.0, "ramp_q": 4.0, "fuel": "Coal", "unit_type": "STEAM", "area": "1", "zone": "15.0", "generator_type": "thermal", "p_fuel": {"data_type": "fuel_curve", "values": [[140.0, 1694.84], [210.0, 2356.55], [280.0, 3073.35], [350.0, 3849.44]]}, "startup_fuel": [[48.0, 10114.4], [96.0, 17384.1]], "non_fuel_startup_cost": 0.0, "shutdown_cost": 0.0, "agc_capable": true, "p_min_agc": 140.0, "p_max_agc": 350.0, "ramp_agc": 4.0, "ramp_up_60min": 240.0, "ramp_down_60min": 240.0, "fuel_cost": 2.11399, "startup_capacity": 140.0, "shutdown_capacity": 140.0, "min_up_time": 24.0, "min_down_time": 48.0, "initial_status": 25.0, "initial_p_output": 140.0, "initial_q_output": 0.0}, "123_CT_1": {"bus": "Austen", "in_service": true, "mbase": 100.0, "pg": 55.0, "qg": 0.62, "p_min": 22.0, "p_max": 55.0, "q_min": -15.0, "q_max": 19.0, "ramp_q": 3.7, "fuel": "NG", "unit_type": "CT", "area": "1", "zone": "15.0", "generator_type": "thermal", "p_fuel": {"data_type": "fuel_curve", "values": [[22.0, 279.95], [33.0, 354.28], [44.0, 438.61], [55.0, 526.59]]}, "startup_fuel": [[2.2, 1457.4]], "non_fuel_startup_cost": 0.0, "shutdown_cost": 0.0, "agc_capable": true, "p_min_agc": 22.0, "p_max_agc": 55.0, "ramp_agc": 3.7, "ramp_up_60min": 222.0, "ramp_down_60min": 222.0, "fuel_cost": 3.88722, "startup_capacity": 22.0, "shutdown_capacity": 22.0, "min_up_time": 2.2, "min_down_time": 2.2, "initial_status": 3.2, "initial_p_output": 22.0, "initial_q_output": 0.0}, "123_CT_4": {"bus": "Austen", "in_service": true, "mbase": 100.0, "pg": 55.0, "qg": 0.62, "p_min": 22.0, "p_max": 55.0, "q_min": -15.0, "q_max": 19.0, "ramp_q": 3.7, "fuel": "NG", "unit_type": "CT", "area": "1", "zone": "15.0", "generator_type": "thermal", "p_fuel": {"data_type": "fuel_curve", "values": [[22.0, 279.95], [33.0, 354.28], [44.0, 438.61], [55.0, 526.59]]}, "startup_fuel": [[2.2, 1457.4]], "non_fuel_startup_cost": 0.0, "shutdown_cost": 0.0, "agc_capable": true, "p_min_agc": 22.0, "p_max_agc": 55.0, "ramp_agc": 3.7, "ramp_up_60min": 222.0, "ramp_down_60min": 222.0, "fuel_cost": 3.88722, "startup_capacity": 22.0, "shutdown_capacity": 22.0, "min_up_time": 2.2, "min_down_time": 2.2, "initial_status": 3.2, "initial_p_output": 22.0, "initial_q_output": 0.0}, "123_CT_5": {"bus": "Austen", "in_service": true, "mbase": 100.0, "pg": 55.0, "qg": 0.62, "p_min": 22.0, "p_max": 55.0, "q_min": -15.0, "q_max": 19.0, "ramp_q": 3.7, "fuel": "NG", "unit_type": "CT", "area": "1", "zone": "15.0", "generator_type": "thermal", "p_fuel": {"data_type": "fuel_curve", "values": [[22.0, 279.95], [33.0, 354.28], [44.0, 438.61], [55.0, 526.59]]}, "startup_fuel": [[2.2, 1457.4]], "non_fuel_startup_cost": 0.0, "shutdown_cost": 0.0, "agc_capable": true, "p_min_agc": 22.0, "p_max_agc": 55.0, "ramp_agc": 3.7, "ramp_up_60min": 222.0, "ramp_down_60min": 222.0, "fuel_cost": 3.88722, "startup_capacity": 22.0, "shutdown_capacity": 22.0, "min_up_time": 2.2, "min_down_time": 2.2, "initial_status": 3.2, "initial_p_output": 22.0, "initial_q_output": 0.0}, "201_CT_1": {"bus": "Bach", "in_service": true, "mbase": 100.0, "pg": 8.0, "qg": 5.29, "p_min": 8.0, "p_max": 20.0, "q_min": 0.0, "q_max": 10.0, "ramp_q": 3.0, "fuel": "Oil", "unit_type": "CT", "area": "2", "zone": "21.0", "generator_type": "thermal", "p_fuel": {"data_type": "fuel_curve", "values": [[8.0, 111.82], [12.0, 143.69], [16.0, 176.12], [20.0, 219.25]]}, "startup_fuel": [[1.0, 5.0]], "non_fuel_startup_cost": 0.0, "shutdown_cost": 0.0, "agc_capable": true, "p_min_agc": 8.0, "p_max_agc": 20.0, "ramp_agc": 3.0, "ramp_up_60min": 180.0, "ramp_down_60min": 180.0, "fuel_cost": 10.3494, "startup_capacity": 8.0, "shutdown_capacity": 8.0, "min_up_time": 1.0, "min_down_time": 1.0, "initial_status": 2.0, "initial_p_output": 8.0, "initial_q_output": 0.0}, "201_CT_2": {"bus": "Bach", "in_service": true, "mbase": 100.0, "pg": 8.0, "qg": 5.29, "p_min": 8.0, "p_max": 20.0, "q_min": 0.0, "q_max": 10.0, "ramp_q": 3.0, "fuel": "Oil", "unit_type": "CT", "area": "2", "zone": "21.0", "generator_type": "thermal", "p_fuel": {"data_type": "fuel_curve", "values": [[8.0, 111.82], [12.0, 143.69], [16.0, 176.12], [20.0, 219.25]]}, "startup_fuel": [[1.0, 5.0]], "non_fuel_startup_cost": 0.0, "shutdown_cost": 0.0, "agc_capable": true, "p_min_agc": 8.0, "p_max_agc": 20.0, "ramp_agc": 3.0, "ramp_up_60min": 180.0, "ramp_down_60min": 180.0, "fuel_cost": 10.3494, "startup_capacity": 8.0, "shutdown_capacity": 8.0, "min_up_time": 1.0, "min_down_time": 1.0, "initial_status": 2.0, "initial_p_output": 8.0, "initial_q_output": 0.0}, "201_STEAM_3": {"bus": "Bach", "in_service": true, "mbase": 100.0, "pg": 76.0, "qg": 6.99, "p_min": 30.0, "p_max": 76.0, "q_min": -25.0, "q_max": 30.0, "ramp_q": 2.0, "fuel": "Coal", "unit_type": "STEAM", "area": "2", "zone": "21.0", "generator_type": "thermal", "p_fuel": {"data_type": "fuel_curve", "values": [[30.0, 389.67], [45.3, 550.24], [60.7, 721.03], [76.0, 907.46]]}, "startup_fuel": [[4.0, 3379.4], [10.0, 4861.4], [12.0, 5284.8]], "non_fuel_startup_cost": 0.0, "shutdown_cost": 0.0, "agc_capable": true, "p_min_agc": 30.0, "p_max_agc": 76.0, "ramp_agc": 2.0, "ramp_up_60min": 120.0, "ramp_down_60min": 120.0, "fuel_cost": 2.11399, "startup_capacity": 30.0, "shutdown_capacity": 30.0, "min_up_time": 8.0, "min_down_time": 4.0, "initial_status": 9.0, "initial_p_output": 30.0, "initial_q_output": 0.0}, "202_CT_1": {"bus": "Bacon", "in_service": true, "mbase": 100.0, "pg": 8.0, "qg": 5.13, "p_min": 8.0, "p_max": 20.0, "q_min": 0.0, "q_max": 10.0, "ramp_q": 3.0, "fuel": "Oil", "unit_type": "CT", "area": "2", "zone": "22.0", "generator_type": "thermal", "p_fuel": {"data_type": "fuel_curve", "values": [[8.0, 109.3], [12.0, 140.65], [16.0, 174.42], [20.0, 212.23]]}, "startup_fuel": [[1.0, 5.0]], "non_fuel_startup_cost": 0.0, "shutdown_cost": 0.0, "agc_capable": true, "p_min_agc": 8.0, "p_max_agc": 20.0, "ramp_agc": 3.0, "ramp_up_60min": 180.0, "ramp_down_60min": 180.0, "fuel_cost": 10.3494, "startup_capacity": 8.0, "shutdown_capacity": 8.0, "min_up_time": 1.0, "min_down_time": 1.0, "initial_status": 2.0, "initial_p_output": 8.0, "initial_q_output": 0.0}, "202_CT_2": {"bus": "Bacon", "in_service": true, "mbase": 100.0, "pg": 8.0, "qg": 5.13, "p_min": 8.0, "p_max": 20.0, "q_min": 0.0, "q_max": 10.0, "ramp_q": 3.0, "fuel": "Oil", "unit_type": "CT", "area": "2", "zone": "22.0", "generator_type": "thermal", "p_fuel": {"data_type": "fuel_curve", "values": [[8.0, 109.3], [12.0, 140.65], [16.0, 174.42], [20.0, 212.23]]}, "startup_fuel": [[1.0, 5.0]], "non_fuel_startup_cost": 0.0, "shutdown_cost": 0.0, "agc_capable": true, "p_min_agc": 8.0, "p_max_agc": 20.0, "ramp_agc": 3.0, "ramp_up_60min": 180.0, "ramp_down_60min": 180.0, "fuel_cost": 10.3494, "startup_capacity": 8.0, "shutdown_capacity": 8.0, "min_up_time": 1.0, "min_down_time": 1.0, "initial_status": 2.0, "initial_p_output": 8.0, "initial_q_output": 0.0}, "202_STEAM_3": {"bus": "Bacon", "in_service": true, "mbase": 100.0, "pg": 76.0, "qg": 2.01, "p_min": 30.0, "p_max": 76.0, "q_min": -25.0, "q_max": 30.0, "ramp_q": 2.0, "fuel": "Coal", "unit_type": "STEAM", "area": "2", "zone": "22.0", "generator_type": "thermal", "p_fuel": {"data_type": "fuel_curve", "values": [[30.0, 355.38], [45.3, 508.21], [60.7, 663.29], [76.0, 860.69]]}, "startup_fuel": [[4.0, 3379.4], [10.0, 4861.4], [12.0, 5284.8]], "non_fuel_startup_cost": 0.0, "shutdown_cost": 0.0, "agc_capable": true, "p_min_agc": 30.0, "p_max_agc": 76.0, "ramp_agc": 2.0, "ramp_up_60min": 120.0, "ramp_down_60min": 120.0, "fuel_cost": 2.11399, "startup_capacity": 30.0, "shutdown_capacity": 30.0, "min_up_time": 8.0, "min_down_time": 4.0, "initial_status": 9.0, "initial_p_output": 30.0, "initial_q_output": 0.0}, "202_STEAM_4": {"bus": "Bacon", "in_service": true, "mbase": 100.0, "pg": 76.0, "qg": 2.01, "p_min": 30.0, "p_max": 76.0, "q_min": -25.0, "q_max": 30.0, "ramp_q": 2.0, "fuel": "Coal", "unit_type": "STEAM", "area": "2", "zone": "22.0", "generator_type": "thermal", "p_fuel": {"data_type": "fuel_curve", "values": [[30.0, 355.38], [45.3, 508.21], [60.7, 663.29], [76.0, 860.69]]}, "startup_fuel": [[4.0, 3379.4], [10.0, 4861.4], [12.0, 5284.8]], "non_fuel_startup_cost": 0.0, "shutdown_cost": 0.0, "agc_capable": true, "p_min_agc": 30.0, "p_max_agc": 76.0, "ramp_agc": 2.0, "ramp_up_60min": 120.0, "ramp_down_60min": 120.0, "fuel_cost": 2.11399, "startup_capacity": 30.0, "shutdown_capacity": 30.0, "min_up_time": 8.0, "min_down_time": 4.0, "initial_status": 9.0, "initial_p_output": 30.0, "initial_q_output": 0.0}, "207_CT_1": {"bus": "Baker", "in_service": true, "mbase": 100.0, "pg": 55.0, "qg": 19.0, "p_min": 22.0, "p_max": 55.0, "q_min": -15.0, "q_max": 19.0, "ramp_q": 3.7, "fuel": "NG", "unit_type": "CT", "area": "2", "zone": "22.0", "generator_type": "thermal", "p_fuel": {"data_type": "fuel_curve", "values": [[22.0, 287.12], [33.0, 383.97], [44.0, 488.26], [55.0, 608.76]]}, "startup_fuel": [[2.2, 1457.4]], "non_fuel_startup_cost": 0.0, "shutdown_cost": 0.0, "agc_capable": true, "p_min_agc": 22.0, "p_max_agc": 55.0, "ramp_agc": 3.7, "ramp_up_60min": 222.0, "ramp_down_60min": 222.0, "fuel_cost": 3.88722, "startup_capacity": 22.0, "shutdown_capacity": 22.0, "min_up_time": 2.2, "min_down_time": 2.2, "initial_status": 3.2, "initial_p_output": 22.0, "initial_q_output": 0.0}, "207_CT_2": {"bus": "Baker", "in_service": true, "mbase": 100.0, "pg": 55.0, "qg": 19.0, "p_min": 22.0, "p_max": 55.0, "q_min": -15.0, "q_max": 19.0, "ramp_q": 3.7, "fuel": "NG", "unit_type": "CT", "area": "2", "zone": "22.0", "generator_type": "thermal", "p_fuel": {"data_type": "fuel_curve", "values": [[22.0, 287.12], [33.0, 383.97], [44.0, 488.26], [55.0, 608.76]]}, "startup_fuel": [[2.2, 1457.4]], "non_fuel_startup_cost": 0.0, "shutdown_cost": 0.0, "agc_capable": true, "p_min_agc": 22.0, "p_max_agc": 55.0, "ramp_agc": 3.7, "ramp_up_60min": 222.0, "ramp_down_60min": 222.0, "fuel_cost": 3.88722, "startup_capacity": 22.0, "shutdown_capacity": 22.0, "min_up_time": 2.2, "min_down_time": 2.2, "initial_status": 3.2, "initial_p_output": 22.0, "initial_q_output": 0.0}, "213_CC_3": {"bus": "Barlow", "in_service": true, "mbase": 100.0, "pg": 355.0, "qg": 135.8, "p_min": 170.0, "p_max": 355.0, "q_min": -25.0, "q_max": 150.0, "ramp_q": 4.14, "fuel": "NG", "unit_type": "CC", "area": "2", "zone": "24.0", "generator_type": "thermal", "p_fuel": {"data_type": "fuel_curve", "values": [[170.0, 1330.08], [231.7, 1720.89], [293.3, 2150.79], [355.0, 2690.61]]}, "startup_fuel": [[4.5, 7215.1]], "non_fuel_startup_cost": 0.0, "shutdown_cost": 0.0, "agc_capable": true, "p_min_agc": 170.0, "p_max_agc": 355.0, "ramp_agc": 4.14, "ramp_up_60min": 248.39999999999998, "ramp_down_60min": 248.39999999999998, "fuel_cost": 3.88722, "startup_capacity": 170.0, "shutdown_capacity": 170.0, "min_up_time": 8.0, "min_down_time": 4.5, "initial_status": 9.0, "initial_p_output": 170.0, "initial_q_output": 0.0}, "213_CT_1": {"bus": "Barlow", "in_service": true, "mbase": 100.0, "pg": 55.0, "qg": 9.23, "p_min": 22.0, "p_max": 55.0, "q_min": -15.0, "q_max": 19.0, "ramp_q": 3.7, "fuel": "NG", "unit_type": "CT", "area": "2", "zone": "24.0", "generator_type": "thermal", "p_fuel": {"data_type": "fuel_curve", "values": [[22.0, 288.75], [33.0, 364.64], [44.0, 448.26], [55.0, 534.03]]}, "startup_fuel": [[2.2, 1457.4]], "non_fuel_startup_cost": 0.0, "shutdown_cost": 0.0, "agc_capable": true, "p_min_agc": 22.0, "p_max_agc": 55.0, "ramp_agc": 3.7, "ramp_up_60min": 222.0, "ramp_down_60min": 222.0, "fuel_cost": 3.88722, "startup_capacity": 22.0, "shutdown_capacity": 22.0, "min_up_time": 2.2, "min_down_time": 2.2, "initial_status": 3.2, "initial_p_output": 22.0, "initial_q_output": 0.0}, "213_CT_2": {"bus": "Barlow", "in_service": true, "mbase": 100.0, "pg": 55.0, "qg": 9.23, "p_min": 22.0, "p_max": 55.0, "q_min": -15.0, "q_max": 19.0, "ramp_q": 3.7, "fuel": "NG", "unit_type": "CT", "area": "2", "zone": "24.0", "generator_type": "thermal", "p_fuel": {"data_type": "fuel_curve", "values": [[22.0, 288.75], [33.0, 364.64], [44.0, 448.26], [55.0, 534.03]]}, "startup_fuel": [[2.2, 1457.4]], "non_fuel_startup_cost": 0.0, "shutdown_cost": 0.0, "agc_capable": true, "p_min_agc": 22.0, "p_max_agc": 55.0, "ramp_agc": 3.7, "ramp_up_60min": 222.0, "ramp_down_60min": 222.0, "fuel_cost": 3.88722, "startup_capacity": 22.0, "shutdown_capacity": 22.0, "min_up_time": 2.2, "min_down_time": 2.2, "initial_status": 3.2, "initial_p_output": 22.0, "initial_q_output": 0.0}, "215_CT_4": {"bus": "Barton", "in_service": true, "mbase": 100.0, "pg": 55.0, "qg": 19.0, "p_min": 22.0, "p_max": 55.0, "q_min": -15.0, "q_max": 19.0, "ramp_q": 3.7, "fuel": "NG", "unit_type": "CT", "area": "2", "zone": "26.0", "generator_type": "thermal", "p_fuel": {"data_type": "fuel_curve", "values": [[22.0, 313.04], [33.0, 386.39], [44.0, 463.24], [55.0, 555.87]]}, "startup_fuel": [[2.2, 1457.4]], "non_fuel_startup_cost": 0.0, "shutdown_cost": 0.0, "agc_capable": true, "p_min_agc": 22.0, "p_max_agc": 55.0, "ramp_agc": 3.7, "ramp_up_60min": 222.0, "ramp_down_60min": 222.0, "fuel_cost": 3.88722, "startup_capacity": 22.0, "shutdown_capacity": 22.0, "min_up_time": 2.2, "min_down_time": 2.2, "initial_status": 3.2, "initial_p_output": 22.0, "initial_q_output": 0.0}, "215_CT_5": {"bus": "Barton", "in_service": true, "mbase": 100.0, "pg": 55.0, "qg": 19.0, "p_min": 22.0, "p_max": 55.0, "q_min": -15.0, "q_max": 19.0, "ramp_q": 3.7, "fuel": "NG", "unit_type": "CT", "area": "2", "zone": "26.0", "generator_type": "thermal", "p_fuel": {"data_type": "fuel_curve", "values": [[22.0, 313.04], [33.0, 386.39], [44.0, 463.24], [55.0, 555.87]]}, "startup_fuel": [[2.2, 1457.4]], "non_fuel_startup_cost": 0.0, "shutdown_cost": 0.0, "agc_capable": true, "p_min_agc": 22.0, "p_max_agc": 55.0, "ramp_agc": 3.7, "ramp_up_60min": 222.0, "ramp_down_60min": 222.0, "fuel_cost": 3.88722, "startup_capacity": 22.0, "shutdown_capacity": 22.0, "min_up_time": 2.2, "min_down_time": 2.2, "initial_status": 3.2, "initial_p_output": 22.0, "initial_q_output": 0.0}, "216_STEAM_1": {"bus": "Basov", "in_service": true, "mbase": 100.0, "pg": 155.0, "qg": 80.0, "p_min": 62.0, "p_max": 155.0, "q_min": -50.0, "q_max": 80.0, "ramp_q": 3.0, "fuel": "Coal", "unit_type": "STEAM", "area": "2", "zone": "26.0", "generator_type": "thermal", "p_fuel": {"data_type": "fuel_curve", "values": [[62.0, 674.62], [93.0, 946.99], [124.0, 1267.31], [155.0, 1614.23]]}, "startup_fuel": [[8.0, 6892.1], [11.0, 7437.5], [60.0, 10778.1]], "non_fuel_startup_cost": 0.0, "shutdown_cost": 0.0, "agc_capable": true, "p_min_agc": 62.0, "p_max_agc": 155.0, "ramp_agc": 3.0, "ramp_up_60min": 180.0, "ramp_down_60min": 180.0, "fuel_cost": 2.11399, "startup_capacity": 62.0, "shutdown_capacity": 62.0, "min_up_time": 8.0, "min_down_time": 8.0, "initial_status": 9.0, "initial_p_output": 62.0, "initial_q_output": 0.0}, "218_CC_1": {"bus": "Bayle", "in_service": true, "mbase": 100.0, "pg": 355.0, "qg": 60.3, "p_min": 170.0, "p_max": 355.0, "q_min": -25.0, "q_max": 150.0, "ramp_q": 4.14, "fuel": "NG", "unit_type": "CC", "area": "2", "zone": "27.0", "generator_type": "thermal", "p_fuel": {"data_type": "fuel_curve", "values": [[170.0, 1935.45], [231.7, 2267.89], [293.3, 2611.31], [355.0, 3083.81]]}, "startup_fuel": [[4.5, 7215.1]], "non_fuel_startup_cost": 0.0, "shutdown_cost": 0.0, "agc_capable": true, "p_min_agc": 170.0, "p_max_agc": 355.0, "ramp_agc": 4.14, "ramp_up_60min": 248.39999999999998, "ramp_down_60min": 248.39999999999998, "fuel_cost": 3.88722, "startup_capacity": 170.0, "shutdown_capacity": 170.0, "min_up_time": 8.0, "min_down_time": 4.5, "initial_status": 9.0, "initial_p_output": 170.0, "initial_q_output": 0.0}, "221_CC_1": {"bus": "Behring", "in_service": true, "mbase": 100.0, "pg": 296.97, "qg": -7.52, "p_min": 170.0, "p_max": 355.0, "q_min": -25.0, "q_max": 150.0, "ramp_q": 4.14, "fuel": "NG", "unit_type": "CC", "area": "2", "zone": "27.0", "generator_type": "thermal", "p_fuel": {"data_type": "fuel_curve", "values": [[170.0, 1170.79], [231.7, 1537.9], [293.3, 1955.06], [355.0, 2528.44]]}, "startup_fuel": [[4.5, 7215.1]], "non_fuel_startup_cost": 0.0, "shutdown_cost": 0.0, "agc_capable": true, "p_min_agc": 170.0, "p_max_agc": 355.0, "ramp_agc": 4.14, "ramp_up_60min": 248.39999999999998, "ramp_down_60min": 248.39999999999998, "fuel_cost": 3.88722, "startup_capacity": 170.0, "shutdown_capacity": 170.0, "min_up_time": 8.0, "min_down_time": 4.5, "initial_status": 9.0, "initial_p_output": 170.0, "initial_q_output": 0.0}, "223_STEAM_1": {"bus": "Bloch", "in_service": true, "mbase": 100.0, "pg": 155.0, "qg": -10.31, "p_min": 62.0, "p_max": 155.0, "q_min": -50.0, "q_max": 80.0, "ramp_q": 3.0, "fuel": "Coal", "unit_type": "STEAM", "area": "2", "zone": "25.0", "generator_type": "thermal", "p_fuel": {"data_type": "fuel_curve", "values": [[62.0, 673.13], [93.0, 952.26], [124.0, 1240.99], [155.0, 1540.42]]}, "startup_fuel": [[8.0, 6892.1], [11.0, 7437.5], [60.0, 10778.1]], "non_fuel_startup_cost": 0.0, "shutdown_cost": 0.0, "agc_capable": true, "p_min_agc": 62.0, "p_max_agc": 155.0, "ramp_agc": 3.0, "ramp_up_60min": 180.0, "ramp_down_60min": 180.0, "fuel_cost": 2.11399, "startup_capacity": 62.0, "shutdown_capacity": 62.0, "min_up_time": 8.0, "min_down_time": 8.0, "initial_status": 9.0, "initial_p_output": 62.0, "initial_q_output": 0.0}, "223_STEAM_2": {"bus": "Bloch", "in_service": true, "mbase": 100.0, "pg": 155.0, "qg": -10.31, "p_min": 62.0, "p_max": 155.0, "q_min": -50.0, "q_max": 80.0, "ramp_q": 3.0, "fuel": "Coal", "unit_type": "STEAM", "area": "2", "zone": "25.0", "generator_type": "thermal", "p_fuel": {"data_type": "fuel_curve", "values": [[62.0, 673.13], [93.0, 952.26], [124.0, 1240.99], [155.0, 1540.42]]}, "startup_fuel": [[8.0, 6892.1], [11.0, 7437.5], [60.0, 10778.1]], "non_fuel_startup_cost": 0.0, "shutdown_cost": 0.0, "agc_capable": true, "p_min_agc": 62.0, "p_max_agc": 155.0, "ramp_agc": 3.0, "ramp_up_60min": 180.0, "ramp_down_60min": 180.0, "fuel_cost": 2.11399, "startup_capacity": 62.0, "shutdown_capacity": 62.0, "min_up_time": 8.0, "min_down_time": 8.0, "initial_status": 9.0, "initial_p_output": 62.0, "initial_q_output": 0.0}, "223_STEAM_3": {"bus": "Bloch", "in_service": true, "mbase": 100.0, "pg": 350.0, "qg": 20.59, "p_min": 140.0, "p_max": 350.0, "q_min": -25.0, "q_max": 150.0, "ramp_q": 4.0, "fuel": "Coal", "unit_type": "STEAM", "area": "2", "zone": "25.0", "generator_type": "thermal", "p_fuel": {"data_type": "fuel_curve", "values": [[140.0, 1572.06], [210.0, 2196.6], [280.0, 2960.51], [350.0, 3775.66]]}, "startup_fuel": [[48.0, 10114.4], [96.0, 17384.1]], "non_fuel_startup_cost": 0.0, "shutdown_cost": 0.0, "agc_capable": true, "p_min_agc": 140.0, "p_max_agc": 350.0, "ramp_agc": 4.0, "ramp_up_60min": 240.0, "ramp_down_60min": 240.0, "fuel_cost": 2.11399, "startup_capacity": 140.0, "shutdown_capacity": 140.0, "min_up_time": 24.0, "min_down_time": 48.0, "initial_status": 25.0, "initial_p_output": 140.0, "initial_q_output": 0.0}, "223_CT_4": {"bus": "Bloch", "in_service": true, "mbase": 100.0, "pg": 22.0, "qg": 0.24, "p_min": 22.0, "p_max": 55.0, "q_min": -15.0, "q_max": 19.0, "ramp_q": 3.7, "fuel": "NG", "unit_type": "CT", "area": "2", "zone": "25.0", "generator_type": "thermal", "p_fuel": {"data_type": "fuel_curve", "values": [[22.0, 435.47], [33.0, 541.01], [44.0, 653.49], [55.0, 770.92]]}, "startup_fuel": [[2.2, 1457.4]], "non_fuel_startup_cost": 0.0, "shutdown_cost": 0.0, "agc_capable": true, "p_min_agc": 22.0, "p_max_agc": 55.0, "ramp_agc": 3.7, "ramp_up_60min": 222.0, "ramp_down_60min": 222.0, "fuel_cost": 3.88722, "startup_capacity": 22.0, "shutdown_capacity": 22.0, "min_up_time": 2.2, "min_down_time": 2.2, "initial_status": 3.2, "initial_p_output": 22.0, "initial_q_output": 0.0}, "223_CT_5": {"bus": "Bloch", "in_service": true, "mbase": 100.0, "pg": 22.0, "qg": 0.24, "p_min": 22.0, "p_max": 55.0, "q_min": -15.0, "q_max": 19.0, "ramp_q": 3.7, "fuel": "NG", "unit_type": "CT", "area": "2", "zone": "25.0", "generator_type": "thermal", "p_fuel": {"data_type": "fuel_curve", "values": [[22.0, 435.47], [33.0, 541.01], [44.0, 653.49], [55.0, 770.92]]}, "startup_fuel": [[2.2, 1457.4]], "non_fuel_startup_cost": 0.0, "shutdown_cost": 0.0, "agc_capable": true, "p_min_agc": 22.0, "p_max_agc": 55.0, "ramp_agc": 3.7, "ramp_up_60min": 222.0, "ramp_down_60min": 222.0, "fuel_cost": 3.88722, "startup_capacity": 22.0, "shutdown_capacity": 22.0, "min_up_time": 2.2, "min_down_time": 2.2, "initial_status": 3.2, "initial_p_output": 22.0, "initial_q_output": 0.0}, "223_CT_6": {"bus": "Bloch", "in_service": true, "mbase": 100.0, "pg": 22.0, "qg": 0.24, "p_min": 22.0, "p_max": 55.0, "q_min": -15.0, "q_max": 19.0, "ramp_q": 3.7, "fuel": "NG", "unit_type": "CT", "area": "2", "zone": "25.0", "generator_type": "thermal", "p_fuel": {"data_type": "fuel_curve", "values": [[22.0, 435.47], [33.0, 541.01], [44.0, 653.49], [55.0, 770.92]]}, "startup_fuel": [[2.2, 1457.4]], "non_fuel_startup_cost": 0.0, "shutdown_cost": 0.0, "agc_capable": true, "p_min_agc": 22.0, "p_max_agc": 55.0, "ramp_agc": 3.7, "ramp_up_60min": 222.0, "ramp_down_60min": 222.0, "fuel_cost": 3.88722, "startup_capacity": 22.0, "shutdown_capacity": 22.0, "min_up_time": 2.2, "min_down_time": 2.2, "initial_status": 3.2, "initial_p_output": 22.0, "initial_q_output": 0.0}, "301_CT_1": {"bus": "Cabell", "in_service": true, "mbase": 100.0, "pg": 8.0, "qg": 7.95, "p_min": 8.0, "p_max": 20.0, "q_min": 0.0, "q_max": 10.0, "ramp_q": 3.0, "fuel": "Oil", "unit_type": "CT", "area": "3", "zone": "31.0", "generator_type": "thermal", "p_fuel": {"data_type": "fuel_curve", "values": [[8.0, 116.74], [12.0, 150.47], [16.0, 189.0], [20.0, 229.72]]}, "startup_fuel": [[1.0, 5.0]], "non_fuel_startup_cost": 0.0, "shutdown_cost": 0.0, "agc_capable": true, "p_min_agc": 8.0, "p_max_agc": 20.0, "ramp_agc": 3.0, "ramp_up_60min": 180.0, "ramp_down_60min": 180.0, "fuel_cost": 10.3494, "startup_capacity": 8.0, "shutdown_capacity": 8.0, "min_up_time": 1.0, "min_down_time": 1.0, "initial_status": 2.0, "initial_p_output": 8.0, "initial_q_output": 0.0}, "301_CT_2": {"bus": "Cabell", "in_service": true, "mbase": 100.0, "pg": 8.0, "qg": 7.95, "p_min": 8.0, "p_max": 20.0, "q_min": 0.0, "q_max": 10.0, "ramp_q": 3.0, "fuel": "Oil", "unit_type": "CT", "area": "3", "zone": "31.0", "generator_type": "thermal", "p_fuel": {"data_type": "fuel_curve", "values": [[8.0, 116.74], [12.0, 150.47], [16.0, 189.0], [20.0, 229.72]]}, "startup_fuel": [[1.0, 5.0]], "non_fuel_startup_cost": 0.0, "shutdown_cost": 0.0, "agc_capable": true, "p_min_agc": 8.0, "p_max_agc": 20.0, "ramp_agc": 3.0, "ramp_up_60min": 180.0, "ramp_down_60min": 180.0, "fuel_cost": 10.3494, "startup_capacity": 8.0, "shutdown_capacity": 8.0, "min_up_time": 1.0, "min_down_time": 1.0, "initial_status": 2.0, "initial_p_output": 8.0, "initial_q_output": 0.0}, "301_CT_3": {"bus": "Cabell", "in_service": true, "mbase": 100.0, "pg": 44.0, "qg": 16.53, "p_min": 22.0, "p_max": 55.0, "q_min": -15.0, "q_max": 19.0, "ramp_q": 3.7, "fuel": "NG", "unit_type": "CT", "area": "3", "zone": "31.0", "generator_type": "thermal", "p_fuel": {"data_type": "fuel_curve", "values": [[22.0, 287.98], [33.0, 368.54], [44.0, 451.42], [55.0, 575.2]]}, "startup_fuel": [[2.2, 1457.4]], "non_fuel_startup_cost": 0.0, "shutdown_cost": 0.0, "agc_capable": true, "p_min_agc": 22.0, "p_max_agc": 55.0, "ramp_agc": 3.7, "ramp_up_60min": 222.0, "ramp_down_60min": 222.0, "fuel_cost": 3.88722, "startup_capacity": 22.0, "shutdown_capacity": 22.0, "min_up_time": 2.2, "min_down_time": 2.2, "initial_status": 3.2, "initial_p_output": 22.0, "initial_q_output": 0.0}, "301_CT_4": {"bus": "Cabell", "in_service": true, "mbase": 100.0, "pg": 44.0, "qg": 16.53, "p_min": 22.0, "p_max": 55.0, "q_min": -15.0, "q_max": 19.0, "ramp_q": 3.7, "fuel": "NG", "unit_type": "CT", "area": "3", "zone": "31.0", "generator_type": "thermal", "p_fuel": {"data_type": "fuel_curve", "values": [[22.0, 287.98], [33.0, 368.54], [44.0, 451.42], [55.0, 575.2]]}, "startup_fuel": [[2.2, 1457.4]], "non_fuel_startup_cost": 0.0, "shutdown_cost": 0.0, "agc_capable": true, "p_min_agc": 22.0, "p_max_agc": 55.0, "ramp_agc": 3.7, "ramp_up_60min": 222.0, "ramp_down_60min": 222.0, "fuel_cost": 3.88722, "startup_capacity": 22.0, "shutdown_capacity": 22.0, "min_up_time": 2.2, "min_down_time": 2.2, "initial_status": 3.2, "initial_p_output": 22.0, "initial_q_output": 0.0}, "302_CT_1": {"bus": "Cabot", "in_service": true, "mbase": 100.0, "pg": 8.0, "qg": 6.16, "p_min": 8.0, "p_max": 20.0, "q_min": 0.0, "q_max": 10.0, "ramp_q": 3.0, "fuel": "Oil", "unit_type": "CT", "area": "3", "zone": "32.0", "generator_type": "thermal", "p_fuel": {"data_type": "fuel_curve", "values": [[8.0, 116.74], [12.0, 150.47], [16.0, 189.0], [20.0, 229.72]]}, "startup_fuel": [[1.0, 5.0]], "non_fuel_startup_cost": 0.0, "shutdown_cost": 0.0, "agc_capable": true, "p_min_agc": 8.0, "p_max_agc": 20.0, "ramp_agc": 3.0, "ramp_up_60min": 180.0, "ramp_down_60min": 180.0, "fuel_cost": 10.3494, "startup_capacity": 8.0, "shutdown_capacity": 8.0, "min_up_time": 1.0, "min_down_time": 1.0, "initial_status": 2.0, "initial_p_output": 8.0, "initial_q_output": 0.0}, "302_CT_2": {"bus": "Cabot", "in_service": true, "mbase": 100.0, "pg": 8.0, "qg": 6.16, "p_min": 8.0, "p_max": 20.0, "q_min": 0.0, "q_max": 10.0, "ramp_q": 3.0, "fuel": "Oil", "unit_type": "CT", "area": "3", "zone": "32.0", "generator_type": "thermal", "p_fuel": {"data_type": "fuel_curve", "values": [[8.0, 116.74], [12.0, 150.47], [16.0, 189.0], [20.0, 229.72]]}, "startup_fuel": [[1.0, 5.0]], "non_fuel_startup_cost": 0.0, "shutdown_cost": 0.0, "agc_capable": true, "p_min_agc": 8.0, "p_max_agc": 20.0, "ramp_agc": 3.0, "ramp_up_60min": 180.0, "ramp_down_60min": 180.0, "fuel_cost": 10.3494, "startup_capacity": 8.0, "shutdown_capacity": 8.0, "min_up_time": 1.0, "min_down_time": 1.0, "initial_status": 2.0, "initial_p_output": 8.0, "initial_q_output": 0.0}, "302_CT_3": {"bus": "Cabot", "in_service": true, "mbase": 100.0, "pg": 55.0, "qg": 10.99, "p_min": 22.0, "p_max": 55.0, "q_min": -15.0, "q_max": 19.0, "ramp_q": 3.7, "fuel": "NG", "unit_type": "CT", "area": "3", "zone": "32.0", "generator_type": "thermal", "p_fuel": {"data_type": "fuel_curve", "values": [[22.0, 338.69], [33.0, 434.31], [44.0, 542.93], [55.0, 652.26]]}, "startup_fuel": [[2.2, 1457.4]], "non_fuel_startup_cost": 0.0, "shutdown_cost": 0.0, "agc_capable": true, "p_min_agc": 22.0, "p_max_agc": 55.0, "ramp_agc": 3.7, "ramp_up_60min": 222.0, "ramp_down_60min": 222.0, "fuel_cost": 3.88722, "startup_capacity": 22.0, "shutdown_capacity": 22.0, "min_up_time": 2.2, "min_down_time": 2.2, "initial_status": 3.2, "initial_p_output": 22.0, "initial_q_output": 0.0}, "302_CT_4": {"bus": "Cabot", "in_service": true, "mbase": 100.0, "pg": 55.0, "qg": 10.99, "p_min": 22.0, "p_max": 55.0, "q_min": -15.0, "q_max": 19.0, "ramp_q": 3.7, "fuel": "NG", "unit_type": "CT", "area": "3", "zone": "32.0", "generator_type": "thermal", "p_fuel": {"data_type": "fuel_curve", "values": [[22.0, 338.69], [33.0, 434.31], [44.0, 542.93], [55.0, 652.26]]}, "startup_fuel": [[2.2, 1457.4]], "non_fuel_startup_cost": 0.0, "shutdown_cost": 0.0, "agc_capable": true, "p_min_agc": 22.0, "p_max_agc": 55.0, "ramp_agc": 3.7, "ramp_up_60min": 222.0, "ramp_down_60min": 222.0, "fuel_cost": 3.88722, "startup_capacity": 22.0, "shutdown_capacity": 22.0, "min_up_time": 2.2, "min_down_time": 2.2, "initial_status": 3.2, "initial_p_output": 22.0, "initial_q_output": 0.0}, "307_CT_1": {"bus": "Carew", "in_service": true, "mbase": 100.0, "pg": 55.0, "qg": 19.0, "p_min": 22.0, "p_max": 55.0, "q_min": -15.0, "q_max": 19.0, "ramp_q": 3.7, "fuel": "NG", "unit_type": "CT", "area": "3", "zone": "32.0", "generator_type": "thermal", "p_fuel": {"data_type": "fuel_curve", "values": [[22.0, 293.77], [33.0, 372.7], [44.0, 455.39], [55.0, 555.77]]}, "startup_fuel": [[2.2, 1457.4]], "non_fuel_startup_cost": 0.0, "shutdown_cost": 0.0, "agc_capable": true, "p_min_agc": 22.0, "p_max_agc": 55.0, "ramp_agc": 3.7, "ramp_up_60min": 222.0, "ramp_down_60min": 222.0, "fuel_cost": 3.88722, "startup_capacity": 22.0, "shutdown_capacity": 22.0, "min_up_time": 2.2, "min_down_time": 2.2, "initial_status": 3.2, "initial_p_output": 22.0, "initial_q_output": 0.0}, "307_CT_2": {"bus": "Carew", "in_service": true, "mbase": 100.0, "pg": 55.0, "qg": 19.0, "p_min": 22.0, "p_max": 55.0, "q_min": -15.0, "q_max": 19.0, "ramp_q": 3.7, "fuel": "NG", "unit_type": "CT", "area": "3", "zone": "32.0", "generator_type": "thermal", "p_fuel": {"data_type": "fuel_curve", "values": [[22.0, 293.77], [33.0, 372.7], [44.0, 455.39], [55.0, 555.77]]}, "startup_fuel": [[2.2, 1457.4]], "non_fuel_startup_cost": 0.0, "shutdown_cost": 0.0, "agc_capable": true, "p_min_agc": 22.0, "p_max_agc": 55.0, "ramp_agc": 3.7, "ramp_up_60min": 222.0, "ramp_down_60min": 222.0, "fuel_cost": 3.88722, "startup_capacity": 22.0, "shutdown_capacity": 22.0, "min_up_time": 2.2, "min_down_time": 2.2, "initial_status": 3.2, "initial_p_output": 22.0, "initial_q_output": 0.0}, "313_CC_1": {"bus": "Cecil", "in_service": true, "mbase": 100.0, "pg": 355.0, "qg": 150.0, "p_min": 170.0, "p_max": 355.0, "q_min": -25.0, "q_max": 150.0, "ramp_q": 4.14, "fuel": "NG", "unit_type": "CC", "area": "3", "zone": "34.0", "generator_type": "thermal", "p_fuel": {"data_type": "fuel_curve", "values": [[170.0, 1348.78], [231.7, 1598.48], [293.3, 2022.47], [355.0, 2558.21]]}, "startup_fuel": [[4.5, 7215.1]], "non_fuel_startup_cost": 0.0, "shutdown_cost": 0.0, "agc_capable": true, "p_min_agc": 170.0, "p_max_agc": 355.0, "ramp_agc": 4.14, "ramp_up_60min": 248.39999999999998, "ramp_down_60min": 248.39999999999998, "fuel_cost": 3.88722, "startup_capacity": 170.0, "shutdown_capacity": 170.0, "min_up_time": 8.0, "min_down_time": 4.5, "initial_status": 9.0, "initial_p_output": 170.0, "initial_q_output": 0.0}, "315_STEAM_1": {"bus": "Chase", "in_service": true, "mbase": 100.0, "pg": 5.0, "qg": 6.0, "p_min": 5.0, "p_max": 12.0, "q_min": 0.0, "q_max": 6.0, "ramp_q": 1.0, "fuel": "Oil", "unit_type": "STEAM", "area": "3", "zone": "36.0", "generator_type": "thermal", "p_fuel": {"data_type": "fuel_curve", "values": [[5.0, 72.05], [7.3, 88.81], [9.7, 112.1], [12.0, 139.68]]}, "startup_fuel": [[2.0, 38.0], [4.0, 44.0], [12.0, 68.0]], "non_fuel_startup_cost": 0.0, "shutdown_cost": 0.0, "agc_capable": true, "p_min_agc": 5.0, "p_max_agc": 12.0, "ramp_agc": 1.0, "ramp_up_60min": 60.0, "ramp_down_60min": 60.0, "fuel_cost": 10.3494, "startup_capacity": 5.0, "shutdown_capacity": 5.0, "min_up_time": 4.0, "min_down_time": 2.0, "initial_status": 5.0, "initial_p_output": 5.0, "initial_q_output": 0.0}, "315_STEAM_2": {"bus": "Chase", "in_service": true, "mbase": 100.0, "pg": 5.0, "qg": 6.0, "p_min": 5.0, "p_max": 12.0, "q_min": 0.0, "q_max": 6.0, "ramp_q": 1.0, "fuel": "Oil", "unit_type": "STEAM", "area": "3", "zone": "36.0", "generator_type": "thermal", "p_fuel": {"data_type": "fuel_curve", "values": [[5.0, 72.05], [7.3, 88.81], [9.7, 112.1], [12.0, 139.68]]}, "startup_fuel": [[2.0, 38.0], [4.0, 44.0], [12.0, 68.0]], "non_fuel_startup_cost": 0.0, "shutdown_cost": 0.0, "agc_capable": true, "p_min_agc": 5.0, "p_max_agc": 12.0, "ramp_agc": 1.0, "ramp_up_60min": 60.0, "ramp_down_60min": 60.0, "fuel_cost": 10.3494, "startup_capacity": 5.0, "shutdown_capacity": 5.0, "min_up_time": 4.0, "min_down_time": 2.0, "initial_status": 5.0, "initial_p_output": 5.0, "initial_q_output": 0.0}, "315_STEAM_3": {"bus": "Chase", "in_service": true, "mbase": 100.0, "pg": 5.0, "qg": 6.0, "p_min": 5.0, "p_max": 12.0, "q_min": 0.0, "q_max": 6.0, "ramp_q": 1.0, "fuel": "Oil", "unit_type": "STEAM", "area": "3", "zone": "36.0", "generator_type": "thermal", "p_fuel": {"data_type": "fuel_curve", "values": [[5.0, 72.05], [7.3, 88.81], [9.7, 112.1], [12.0, 139.68]]}, "startup_fuel": [[2.0, 38.0], [4.0, 44.0], [12.0, 68.0]], "non_fuel_startup_cost": 0.0, "shutdown_cost": 0.0, "agc_capable": true, "p_min_agc": 5.0, "p_max_agc": 12.0, "ramp_agc": 1.0, "ramp_up_60min": 60.0, "ramp_down_60min": 60.0, "fuel_cost": 10.3494, "startup_capacity": 5.0, "shutdown_capacity": 5.0, "min_up_time": 4.0, "min_down_time": 2.0, "initial_status": 5.0, "initial_p_output": 5.0, "initial_q_output": 0.0}, "315_STEAM_4": {"bus": "Chase", "in_service": true, "mbase": 100.0, "pg": 5.0, "qg": 6.0, "p_min": 5.0, "p_max": 12.0, "q_min": 0.0, "q_max": 6.0, "ramp_q": 1.0, "fuel": "Oil", "unit_type": "STEAM", "area": "3", "zone": "36.0", "generator_type": "thermal", "p_fuel": {"data_type": "fuel_curve", "values": [[5.0, 72.05], [7.3, 88.81], [9.7, 112.1], [12.0, 139.68]]}, "startup_fuel": [[2.0, 38.0], [4.0, 44.0], [12.0, 68.0]], "non_fuel_startup_cost": 0.0, "shutdown_cost": 0.0, "agc_capable": true, "p_min_agc": 5.0, "p_max_agc": 12.0, "ramp_agc": 1.0, "ramp_up_60min": 60.0, "ramp_down_60min": 60.0, "fuel_cost": 10.3494, "startup_capacity": 5.0, "shutdown_capacity": 5.0, "min_up_time": 4.0, "min_down_time": 2.0, "initial_status": 5.0, "initial_p_output": 5.0, "initial_q_output": 0.0}, "315_STEAM_5": {"bus": "Chase", "in_service": true, "mbase": 100.0, "pg": 5.0, "qg": 6.0, "p_min": 5.0, "p_max": 12.0, "q_min": 0.0, "q_max": 6.0, "ramp_q": 1.0, "fuel": "Oil", "unit_type": "STEAM", "area": "3", "zone": "36.0", "generator_type": "thermal", "p_fuel": {"data_type": "fuel_curve", "values": [[5.0, 72.05], [7.3, 88.81], [9.7, 112.1], [12.0, 139.68]]}, "startup_fuel": [[2.0, 38.0], [4.0, 44.0], [12.0, 68.0]], "non_fuel_startup_cost": 0.0, "shutdown_cost": 0.0, "agc_capable": true, "p_min_agc": 5.0, "p_max_agc": 12.0, "ramp_agc": 1.0, "ramp_up_60min": 60.0, "ramp_down_60min": 60.0, "fuel_cost": 10.3494, "startup_capacity": 5.0, "shutdown_capacity": 5.0, "min_up_time": 4.0, "min_down_time": 2.0, "initial_status": 5.0, "initial_p_output": 5.0, "initial_q_output": 0.0}, "315_CT_6": {"bus": "Chase", "in_service": true, "mbase": 100.0, "pg": 55.0, "qg": 19.0, "p_min": 22.0, "p_max": 55.0, "q_min": -15.0, "q_max": 19.0, "ramp_q": 3.7, "fuel": "NG", "unit_type": "CT", "area": "3", "zone": "36.0", "generator_type": "thermal", "p_fuel": {"data_type": "fuel_curve", "values": [[22.0, 227.52], [33.0, 302.24], [44.0, 378.34], [55.0, 468.49]]}, "startup_fuel": [[2.2, 1457.4]], "non_fuel_startup_cost": 0.0, "shutdown_cost": 0.0, "agc_capable": true, "p_min_agc": 22.0, "p_max_agc": 55.0, "ramp_agc": 3.7, "ramp_up_60min": 222.0, "ramp_down_60min": 222.0, "fuel_cost": 3.88722, "startup_capacity": 22.0, "shutdown_capacity": 22.0, "min_up_time": 2.2, "min_down_time": 2.2, "initial_status": 3.2, "initial_p_output": 22.0, "initial_q_output": 0.0}, "315_CT_7": {"bus": "Chase", "in_service": true, "mbase": 100.0, "pg": 55.0, "qg": 19.0, "p_min": 22.0, "p_max": 55.0, "q_min": -15.0, "q_max": 19.0, "ramp_q": 3.7, "fuel": "NG", "unit_type": "CT", "area": "3", "zone": "36.0", "generator_type": "thermal", "p_fuel": {"data_type": "fuel_curve", "values": [[22.0, 227.52], [33.0, 302.24], [44.0, 378.34], [55.0, 468.49]]}, "startup_fuel": [[2.2, 1457.4]], "non_fuel_startup_cost": 0.0, "shutdown_cost": 0.0, "agc_capable": true, "p_min_agc": 22.0, "p_max_agc": 55.0, "ramp_agc": 3.7, "ramp_up_60min": 222.0, "ramp_down_60min": 222.0, "fuel_cost": 3.88722, "startup_capacity": 22.0, "shutdown_capacity": 22.0, "min_up_time": 2.2, "min_down_time": 2.2, "initial_status": 3.2, "initial_p_output": 22.0, "initial_q_output": 0.0}, "315_CT_8": {"bus": "Chase", "in_service": true, "mbase": 100.0, "pg": 55.0, "qg": 60.0, "p_min": 22.0, "p_max": 55.0, "q_min": 0.0, "q_max": 60.0, "ramp_q": 3.7, "fuel": "NG", "unit_type": "CT", "area": "3", "zone": "36.0", "generator_type": "thermal", "p_fuel": {"data_type": "fuel_curve", "values": [[22.0, 227.52], [33.0, 302.24], [44.0, 378.34], [55.0, 468.49]]}, "startup_fuel": [[2.2, 1457.4]], "non_fuel_startup_cost": 0.0, "shutdown_cost": 0.0, "agc_capable": true, "p_min_agc": 22.0, "p_max_agc": 55.0, "ramp_agc": 3.7, "ramp_up_60min": 222.0, "ramp_down_60min": 222.0, "fuel_cost": 3.88722, "startup_capacity": 22.0, "shutdown_capacity": 22.0, "min_up_time": 2.2, "min_down_time": 2.2, "initial_status": 3.2, "initial_p_output": 22.0, "initial_q_output": 0.0}, "316_STEAM_1": {"bus": "Chifa", "in_service": true, "mbase": 100.0, "pg": 155.0, "qg": 80.0, "p_min": 62.0, "p_max": 155.0, "q_min": -50.0, "q_max": 80.0, "ramp_q": 3.0, "fuel": "Coal", "unit_type": "STEAM", "area": "3", "zone": "36.0", "generator_type": "thermal", "p_fuel": {"data_type": "fuel_curve", "values": [[62.0, 734.45], [93.0, 1044.11], [124.0, 1356.28], [155.0, 1756.24]]}, "startup_fuel": [[8.0, 6892.1], [11.0, 7437.5], [60.0, 10778.1]], "non_fuel_startup_cost": 0.0, "shutdown_cost": 0.0, "agc_capable": true, "p_min_agc": 62.0, "p_max_agc": 155.0, "ramp_agc": 3.0, "ramp_up_60min": 180.0, "ramp_down_60min": 180.0, "fuel_cost": 2.11399, "startup_capacity": 62.0, "shutdown_capacity": 62.0, "min_up_time": 8.0, "min_down_time": 8.0, "initial_status": 9.0, "initial_p_output": 62.0, "initial_q_output": 0.0}, "318_CC_1": {"bus": "Clark", "in_service": true, "mbase": 100.0, "pg": 355.0, "qg": 63.12, "p_min": 170.0, "p_max": 355.0, "q_min": -25.0, "q_max": 150.0, "ramp_q": 4.14, "fuel": "NG", "unit_type": "CC", "area": "3", "zone": "37.0", "generator_type": "thermal", "p_fuel": {"data_type": "fuel_curve", "values": [[170.0, 1351.84], [231.7, 1777.94], [293.3, 2210.19], [355.0, 2710.64]]}, "startup_fuel": [[4.5, 7215.1]], "non_fuel_startup_cost": 0.0, "shutdown_cost": 0.0, "agc_capable": true, "p_min_agc": 170.0, "p_max_agc": 355.0, "ramp_agc": 4.14, "ramp_up_60min": 248.39999999999998, "ramp_down_60min": 248.39999999999998, "fuel_cost": 3.88722, "startup_capacity": 170.0, "shutdown_capacity": 170.0, "min_up_time": 8.0, "min_down_time": 4.5, "initial_status": 9.0, "initial_p_output": 170.0, "initial_q_output": 0.0}, "321_CC_1": {"bus": "Cobb", "in_service": true, "mbase": 100.0, "pg": 355.0, "qg": -3.34, "p_min": 170.0, "p_max": 355.0, "q_min": -25.0, "q_max": 150.0, "ramp_q": 4.14, "fuel": "NG", "unit_type": "CC", "area": "3", "zone": "37.0", "generator_type": "thermal", "p_fuel": {"data_type": "fuel_curve", "values": [[170.0, 1228.59], [231.7, 1589.41], [293.3, 1999.98], [355.0, 2538.8]]}, "startup_fuel": [[4.5, 7215.1]], "non_fuel_startup_cost": 0.0, "shutdown_cost": 0.0, "agc_capable": true, "p_min_agc": 170.0, "p_max_agc": 355.0, "ramp_agc": 4.14, "ramp_up_60min": 248.39999999999998, "ramp_down_60min": 248.39999999999998, "fuel_cost": 3.88722, "startup_capacity": 170.0, "shutdown_capacity": 170.0, "min_up_time": 8.0, "min_down_time": 4.5, "initial_status": 9.0, "initial_p_output": 170.0, "initial_q_output": 0.0}, "322_CT_5": {"bus": "Cole", "in_service": true, "mbase": 100.0, "pg": 55.0, "qg": -9.73, "p_min": 22.0, "p_max": 55.0, "q_min": -15.0, "q_max": 19.0, "ramp_q": 3.7, "fuel": "NG", "unit_type": "CT", "area": "3", "zone": "37.0", "generator_type": "thermal", "p_fuel": {"data_type": "fuel_curve", "values": [[22.0, 265.41], [33.0, 331.44], [44.0, 406.43], [55.0, 485.36]]}, "startup_fuel": [[2.2, 1457.4]], "non_fuel_startup_cost": 0.0, "shutdown_cost": 0.0, "agc_capable": true, "p_min_agc": 22.0, "p_max_agc": 55.0, "ramp_agc": 3.7, "ramp_up_60min": 222.0, "ramp_down_60min": 222.0, "fuel_cost": 3.88722, "startup_capacity": 22.0, "shutdown_capacity": 22.0, "min_up_time": 2.2, "min_down_time": 2.2, "initial_status": 3.2, "initial_p_output": 22.0, "initial_q_output": 0.0}, "322_CT_6": {"bus": "Cole", "in_service": true, "mbase": 100.0, "pg": 55.0, "qg": -9.73, "p_min": 22.0, "p_max": 55.0, "q_min": -15.0, "q_max": 19.0, "ramp_q": 3.7, "fuel": "NG", "unit_type": "CT", "area": "3", "zone": "37.0", "generator_type": "thermal", "p_fuel": {"data_type": "fuel_curve", "values": [[22.0, 265.41], [33.0, 331.44], [44.0, 406.43], [55.0, 485.36]]}, "startup_fuel": [[2.2, 1457.4]], "non_fuel_startup_cost": 0.0, "shutdown_cost": 0.0, "agc_capable": true, "p_min_agc": 22.0, "p_max_agc": 55.0, "ramp_agc": 3.7, "ramp_up_60min": 222.0, "ramp_down_60min": 222.0, "fuel_cost": 3.88722, "startup_capacity": 22.0, "shutdown_capacity": 22.0, "min_up_time": 2.2, "min_down_time": 2.2, "initial_status": 3.2, "initial_p_output": 22.0, "initial_q_output": 0.0}, "323_CC_1": {"bus": "Comte", "in_service": true, "mbase": 100.0, "pg": 355.0, "qg": 37.41, "p_min": 170.0, "p_max": 355.0, "q_min": -25.0, "q_max": 150.0, "ramp_q": 4.14, "fuel": "NG", "unit_type": "CC", "area": "3", "zone": "35.0", "generator_type": "thermal", "p_fuel": {"data_type": "fuel_curve", "values": [[170.0, 1254.77], [231.7, 1674.27], [293.3, 2154.07], [355.0, 2657.67]]}, "startup_fuel": [[4.5, 7215.1]], "non_fuel_startup_cost": 0.0, "shutdown_cost": 0.0, "agc_capable": true, "p_min_agc": 170.0, "p_max_agc": 355.0, "ramp_agc": 4.14, "ramp_up_60min": 248.39999999999998, "ramp_down_60min": 248.39999999999998, "fuel_cost": 3.88722, "startup_capacity": 170.0, "shutdown_capacity": 170.0, "min_up_time": 8.0, "min_down_time": 4.5, "initial_status": 9.0, "initial_p_output": 170.0, "initial_q_output": 0.0}, "323_CC_2": {"bus": "Comte", "in_service": true, "mbase": 100.0, "pg": 355.0, "qg": 37.41, "p_min": 170.0, "p_max": 355.0, "q_min": -25.0, "q_max": 150.0, "ramp_q": 4.14, "fuel": "NG", "unit_type": "CC", "area": "3", "zone": "35.0", "generator_type": "thermal", "p_fuel": {"data_type": "fuel_curve", "values": [[170.0, 1254.77], [231.7, 1674.27], [293.3, 2154.07], [355.0, 2657.67]]}, "startup_fuel": [[4.5, 7215.1]], "non_fuel_startup_cost": 0.0, "shutdown_cost": 0.0, "agc_capable": true, "p_min_agc": 170.0, "p_max_agc": 355.0, "ramp_agc": 4.14, "ramp_up_60min": 248.39999999999998, "ramp_down_60min": 248.39999999999998, "fuel_cost": 3.88722, "startup_capacity": 170.0, "shutdown_capacity": 170.0, "min_up_time": 8.0, "min_down_time": 4.5, "initial_status": 9.0, "initial_p_output": 170.0, "initial_q_output": 0.0}, "114_SYNC_COND_1": {"bus": "Arnold", "in_service": true, "mbase": 100.0, "pg": 0.0, "qg": 103.32, "p_min": 0.0, "p_max": 0.0, "q_min": -50.0, "q_max": 200.0, "ramp_q": 0.0, "fuel": "Sync_Cond", "unit_type": "SYNC_COND", "area": "1", "zone": "16.0", "generator_type": "thermal", "p_fuel": {"data_type": "fuel_curve", "values": [[0.0, 0.0]]}, "startup_fuel": [[0.0, 0.0]], "non_fuel_startup_cost": 0.0, "shutdown_cost": 0.0, "agc_capable": true, "p_min_agc": 0.0, "p_max_agc": 0.0, "ramp_agc": 0.0, "ramp_up_60min": 0.0, "ramp_down_60min": 0.0, "fuel_cost": 0.0, "startup_capacity": 0.0, "shutdown_capacity": 0.0, "min_up_time": 0.0, "min_down_time": 0.0, "initial_status": 1.0, "initial_p_output": 0.0, "initial_q_output": 0.0}, "121_NUCLEAR_1": {"bus": "Attlee", "in_service": true, "mbase": 100.0, "pg": 400.0, "qg": -21.87, "p_min": 396.0, "p_max": 400.0, "q_min": -50.0, "q_max": 200.0, "ramp_q": 20.0, "fuel": "Nuclear", "unit_type": "NUCLEAR", "area": "1", "zone": "17.0", "generator_type": "thermal", "p_fuel": {"data_type": "fuel_curve", "values": [[396.0, 3960.0], [397.3, 3960.0], [398.7, 3960.0], [400.0, 3960.0]]}, "startup_fuel": [[48.0, 78978.0]], "non_fuel_startup_cost": 0.0, "shutdown_cost": 0.0, "agc_capable": true, "p_min_agc": 396.0, "p_max_agc": 400.0, "ramp_agc": 20.0, "ramp_up_60min": 1200.0, "ramp_down_60min": 1200.0, "fuel_cost": 0.81035, "startup_capacity": 396.0, "shutdown_capacity": 396.0, "min_up_time": 24.0, "min_down_time": 48.0, "initial_status": 25.0, "initial_p_output": 396.0, "initial_q_output": 0.0}, "122_HYDRO_1": {"bus": "Aubrey", "in_service": true, "mbase": 100.0, "pg": 50.0, "qg": -6.79, "p_min": {"data_type": "time_series", "values": [12.7, 13.7, 25.9, 26.9, 39.6, 38.7, 38.2, 39.6, 38.7, 39.2, 38.7, 37.7, 38.2, 38.7, 37.7, 38.2, 38.2, 37.7, 37.7, 25.5, 12.7, 12.7, 12.7, 12.7, 12.7, 13.7, 25.9, 26.9, 39.6, 38.7, 38.2, 39.6, 38.7, 39.2, 38.7, 37.7, 38.2, 38.7, 37.7, 38.2, 38.2, 37.7, 37.7, 25.5, 12.7, 12.7, 12.7, 12.7]}, "p_max": {"data_type": "time_series", "values": [12.7, 13.7, 25.9, 26.9, 39.6, 38.7, 38.2, 39.6, 38.7, 39.2, 38.7, 37.7, 38.2, 38.7, 37.7, 38.2, 38.2, 37.7, 37.7, 25.5, 12.7, 12.7, 12.7, 12.7, 12.7, 13.7, 25.9, 26.9, 39.6, 38.7, 38.2, 39.6, 38.7, 39.2, 38.7, 37.7, 38.2, 38.7, 37.7, 38.2, 38.2, 37.7, 37.7, 25.5, 12.7, 12.7, 12.7, 12.7]}, "q_min": -10.0, "q_max": 16.0, "ramp_q": 50.0, "fuel": "Hydro", "unit_type": "HYDRO", "area": "1", "zone": "17.0", "generator_type": "renewable"}, "122_HYDRO_2": {"bus": "Aubrey", "in_service": true, "mbase": 100.0, "pg": 50.0, "qg": -6.79, "p_min": {"data_type": "time_series", "values": [12.7, 13.7, 25.9, 26.9, 39.6, 38.7, 38.2, 39.6, 38.7, 39.2, 38.7, 37.7, 38.2, 38.7, 37.7, 38.2, 38.2, 37.7, 37.7, 25.5, 12.7, 12.7, 12.7, 12.7, 12.7, 13.7, 25.9, 26.9, 39.6, 38.7, 38.2, 39.6, 38.7, 39.2, 38.7, 37.7, 38.2, 38.7, 37.7, 38.2, 38.2, 37.7, 37.7, 25.5, 12.7, 12.7, 12.7, 12.7]}, "p_max": {"data_type": "time_series", "values": [12.7, 13.7, 25.9, 26.9, 39.6, 38.7, 38.2, 39.6, 38.7, 39.2, 38.7, 37.7, 38.2, 38.7, 37.7, 38.2, 38.2, 37.7, 37.7, 25.5, 12.7, 12.7, 12.7, 12.7, 12.7, 13.7, 25.9, 26.9, 39.6, 38.7, 38.2, 39.6, 38.7, 39.2, 38.7, 37.7, 38.2, 38.7, 37.7, 38.2, 38.2, 37.7, 37.7, 25.5, 12.7, 12.7, 12.7, 12.7]}, "q_min": -10.0, "q_max": 16.0, "ramp_q": 50.0, "fuel": "Hydro", "unit_type": "HYDRO", "area": "1", "zone": "17.0", "generator_type": "renewable"}, "122_HYDRO_3": {"bus": "Aubrey", "in_service": true, "mbase": 100.0, "pg": 50.0, "qg": -6.79, "p_min": {"data_type": "time_series", "values": [12.7, 13.7, 25.9, 26.9, 39.6, 38.7, 38.2, 39.6, 38.7, 39.2, 38.7, 37.7, 38.2, 38.7, 37.7, 38.2, 38.2, 37.7, 37.7, 25.5, 12.7, 12.7, 12.7, 12.7, 12.7, 13.7, 25.9, 26.9, 39.6, 38.7, 38.2, 39.6, 38.7, 39.2, 38.7, 37.7, 38.2, 38.7, 37.7, 38.2, 38.2, 37.7, 37.7, 25.5, 12.7, 12.7, 12.7, 12.7]}, "p_max": {"data_type": "time_series", "values": [12.7, 13.7, 25.9, 26.9, 39.6, 38.7, 38.2, 39.6, 38.7, 39.2, 38.7, 37.7, 38.2, 38.7, 37.7, 38.2, 38.2, 37.7, 37.7, 25.5, 12.7, 12.7, 12.7, 12.7, 12.7, 13.7, 25.9, 26.9, 39.6, 38.7, 38.2, 39.6, 38.7, 39.2, 38.7, 37.7, 38.2, 38.7, 37.7, 38.2, 38.2, 37.7, 37.7, 25.5, 12.7, 12.7, 12.7, 12.7]}, "q_min": -10.0, "q_max": 16.0, "ramp_q": 50.0, "fuel": "Hydro", "unit_type": "HYDRO", "area": "1", "zone": "17.0", "generator_type": "renewable"}, "122_HYDRO_4": {"bus": "Aubrey", "in_service": true, "mbase": 100.0, "pg": 50.0, "qg": -6.79, "p_min": {"data_type": "time_series", "values": [12.7, 13.7, 25.9, 26.9, 39.6, 38.7, 38.2, 39.6, 38.7, 39.2, 38.7, 37.7, 38.2, 38.7, 37.7, 38.2, 38.2, 37.7, 37.7, 25.5, 12.7, 12.7, 12.7, 12.7, 12.7, 13.7, 25.9, 26.9, 39.6, 38.7, 38.2, 39.6, 38.7, 39.2, 38.7, 37.7, 38.2, 38.7, 37.7, 38.2, 38.2, 37.7, 37.7, 25.5, 12.7, 12.7, 12.7, 12.7]}, "p_max": {"data_type": "time_series", "values": [12.7, 13.7, 25.9, 26.9, 39.6, 38.7, 38.2, 39.6, 38.7, 39.2, 38.7, 37.7, 38.2, 38.7, 37.7, 38.2, 38.2, 37.7, 37.7, 25.5, 12.7, 12.7, 12.7, 12.7, 12.7, 13.7, 25.9, 26.9, 39.6, 38.7, 38.2, 39.6, 38.7, 39.2, 38.7, 37.7, 38.2, 38.7, 37.7, 38.2, 38.2, 37.7, 37.7, 25.5, 12.7, 12.7, 12.7, 12.7]}, "q_min": -10.0, "q_max": 16.0, "ramp_q": 50.0, "fuel": "Hydro", "unit_type": "HYDRO", "area": "1", "zone": "17.0", "generator_type": "renewable"}, "122_HYDRO_5": {"bus": "Aubrey", "in_service": true, "mbase": 100.0, "pg": 50.0, "qg": -6.79, "p_min": {"data_type": "time_series", "values": [12.7, 13.7, 25.9, 26.9, 39.6, 38.7, 38.2, 39.6, 38.7, 39.2, 38.7, 37.7, 38.2, 38.7, 37.7, 38.2, 38.2, 37.7, 37.7, 25.5, 12.7, 12.7, 12.7, 12.7, 12.7, 13.7, 25.9, 26.9, 39.6, 38.7, 38.2, 39.6, 38.7, 39.2, 38.7, 37.7, 38.2, 38.7, 37.7, 38.2, 38.2, 37.7, 37.7, 25.5, 12.7, 12.7, 12.7, 12.7]}, "p_max": {"data_type": "time_series", "values": [12.7, 13.7, 25.9, 26.9, 39.6, 38.7, 38.2, 39.6, 38.7, 39.2, 38.7, 37.7, 38.2, 38.7, 37.7, 38.2, 38.2, 37.7, 37.7, 25.5, 12.7, 12.7, 12.7, 12.7, 12.7, 13.7, 25.9, 26.9, 39.6, 38.7, 38.2, 39.6, 38.7, 39.2, 38.7, 37.7, 38.2, 38.7, 37.7, 38.2, 38.2, 37.7, 37.7, 25.5, 12.7, 12.7, 12.7, 12.7]}, "q_min": -10.0, "q_max": 16.0, "ramp_q": 50.0, "fuel": "Hydro", "unit_type": "HYDRO", "area": "1", "zone": "17.0", "generator_type": "renewable"}, "122_HYDRO_6": {"bus": "Aubrey", "in_service": true, "mbase": 100.0, "pg": 50.0, "qg": -6.79, "p_min": {"data_type": "time_series", "values": [12.7, 13.7, 25.9, 26.9, 39.6, 38.7, 38.2, 39.6, 38.7, 39.2, 38.7, 37.7, 38.2, 38.7, 37.7, 38.2, 38.2, 37.7, 37.7, 25.5, 12.7, 12.7, 12.7, 12.7, 12.7, 13.7, 25.9, 26.9, 39.6, 38.7, 38.2, 39.6, 38.7, 39.2, 38.7, 37.7, 38.2, 38.7, 37.7, 38.2, 38.2, 37.7, 37.7, 25.5, 12.7, 12.7, 12.7, 12.7]}, "p_max": {"data_type": "time_series", "values": [12.7, 13.7, 25.9, 26.9, 39.6, 38.7, 38.2, 39.6, 38.7, 39.2, 38.7, 37.7, 38.2, 38.7, 37.7, 38.2, 38.2, 37.7, 37.7, 25.5, 12.7, 12.7, 12.7, 12.7, 12.7, 13.7, 25.9, 26.9, 39.6, 38.7, 38.2, 39.6, 38.7, 39.2, 38.7, 37.7, 38.2, 38.7, 37.7, 38.2, 38.2, 37.7, 37.7, 25.5, 12.7, 12.7, 12.7, 12.7]}, "q_min": -10.0, "q_max": 16.0, "ramp_q": 50.0, "fuel": "Hydro", "unit_type": "HYDRO", "area": "1", "zone": "17.0", "generator_type": "renewable"}, "201_HYDRO_4": {"bus": "Bach", "in_service": true, "mbase": 100.0, "pg": 50.0, "qg": 4.15, "p_min": {"data_type": "time_series", "values": [9.3, 9.5, 9.1, 10.3, 18.7, 29.2, 39.5, 46.1, 46.1, 46.1, 46.3, 46.5, 46.7, 46.5, 47.7, 47.9, 47.9, 47.9, 48.1, 40.9, 30.2, 18.5, 9.3, 9.3, 9.3, 9.5, 9.1, 10.3, 18.7, 29.2, 39.5, 46.1, 46.1, 46.1, 46.3, 46.5, 46.7, 46.5, 47.7, 47.9, 47.9, 47.9, 48.1, 40.9, 30.2, 18.5, 9.3, 9.3]}, "p_max": {"data_type": "time_series", "values": [9.3, 9.5, 9.1, 10.3, 18.7, 29.2, 39.5, 46.1, 46.1, 46.1, 46.3, 46.5, 46.7, 46.5, 47.7, 47.9, 47.9, 47.9, 48.1, 40.9, 30.2, 18.5, 9.3, 9.3, 9.3, 9.5, 9.1, 10.3, 18.7, 29.2, 39.5, 46.1, 46.1, 46.1, 46.3, 46.5, 46.7, 46.5, 47.7, 47.9, 47.9, 47.9, 48.1, 40.9, 30.2, 18.5, 9.3, 9.3]}, "q_min": -10.0, "q_max": 16.0, "ramp_q": 50.0, "fuel": "Hydro", "unit_type": "HYDRO", "area": "2", "zone": "21.0", "generator_type": "renewable"}, "214_SYNC_COND_1": {"bus": "Barry", "in_service": true, "mbase": 100.0, "pg": 0.0, "qg": 125.28, "p_min": 0.0, "p_max": 0.0, "q_min": -50.0, "q_max": 200.0, "ramp_q": 0.0, "fuel": "Sync_Cond", "unit_type": "SYNC_COND", "area": "2", "zone": "26.0", "generator_type": "thermal", "p_fuel": {"data_type": "fuel_curve", "values": [[0.0, 0.0]]}, "startup_fuel": [[0.0, 0.0]], "non_fuel_startup_cost": 0.0, "shutdown_cost": 0.0, "agc_capable": true, "p_min_agc": 0.0, "p_max_agc": 0.0, "ramp_agc": 0.0, "ramp_up_60min": 0.0, "ramp_down_60min": 0.0, "fuel_cost": 0.0, "startup_capacity": 0.0, "shutdown_capacity": 0.0, "min_up_time": 0.0, "min_down_time": 0.0, "initial_status": 1.0, "initial_p_output": 0.0, "initial_q_output": 0.0}, "215_HYDRO_1": {"bus": "Barton", "in_service": true, "mbase": 100.0, "pg": 50.0, "qg": 16.0, "p_min": {"data_type": "time_series", "values": [9.3, 9.5, 9.1, 10.3, 18.7, 29.2, 39.5, 46.1, 46.1, 46.1, 46.3, 46.5, 46.7, 46.5, 47.7, 47.9, 47.9, 47.9, 48.1, 40.9, 30.2, 18.5, 9.3, 9.3, 9.3, 9.5, 9.1, 10.3, 18.7, 29.2, 39.5, 46.1, 46.1, 46.1, 46.3, 46.5, 46.7, 46.5, 47.7, 47.9, 47.9, 47.9, 48.1, 40.9, 30.2, 18.5, 9.3, 9.3]}, "p_max": {"data_type": "time_series", "values": [9.3, 9.5, 9.1, 10.3, 18.7, 29.2, 39.5, 46.1, 46.1, 46.1, 46.3, 46.5, 46.7, 46.5, 47.7, 47.9, 47.9, 47.9, 48.1, 40.9, 30.2, 18.5, 9.3, 9.3, 9.3, 9.5, 9.1, 10.3, 18.7, 29.2, 39.5, 46.1, 46.1, 46.1, 46.3, 46.5, 46.7, 46.5, 47.7, 47.9, 47.9, 47.9, 48.1, 40.9, 30.2, 18.5, 9.3, 9.3]}, "q_min": -10.0, "q_max": 16.0, "ramp_q": 50.0, "fuel": "Hydro", "unit_type": "HYDRO", "area": "2", "zone": "26.0", "generator_type": "renewable"}, "215_HYDRO_2": {"bus": "Barton", "in_service": true, "mbase": 100.0, "pg": 50.0, "qg": 16.0, "p_min": {"data_type": "time_series", "values": [9.3, 9.5, 9.1, 10.3, 18.7, 29.2, 39.5, 46.1, 46.1, 46.1, 46.3, 46.5, 46.7, 46.5, 47.7, 47.9, 47.9, 47.9, 48.1, 40.9, 30.2, 18.5, 9.3, 9.3, 9.3, 9.5, 9.1, 10.3, 18.7, 29.2, 39.5, 46.1, 46.1, 46.1, 46.3, 46.5, 46.7, 46.5, 47.7, 47.9, 47.9, 47.9, 48.1, 40.9, 30.2, 18.5, 9.3, 9.3]}, "p_max": {"data_type": "time_series", "values": [9.3, 9.5, 9.1, 10.3, 18.7, 29.2, 39.5, 46.1, 46.1, 46.1, 46.3, 46.5, 46.7, 46.5, 47.7, 47.9, 47.9, 47.9, 48.1, 40.9, 30.2, 18.5, 9.3, 9.3, 9.3, 9.5, 9.1, 10.3, 18.7, 29.2, 39.5, 46.1, 46.1, 46.1, 46.3, 46.5, 46.7, 46.5, 47.7, 47.9, 47.9, 47.9, 48.1, 40.9, 30.2, 18.5, 9.3, 9.3]}, "q_min": -10.0, "q_max": 16.0, "ramp_q": 50.0, "fuel": "Hydro", "unit_type": "HYDRO", "area": "2", "zone": "26.0", "generator_type": "renewable"}, "215_HYDRO_3": {"bus": "Barton", "in_service": true, "mbase": 100.0, "pg": 50.0, "qg": 16.0, "p_min": {"data_type": "time_series", "values": [9.3, 9.5, 9.1, 10.3, 18.7, 29.2, 39.5, 46.1, 46.1, 46.1, 46.3, 46.5, 46.7, 46.5, 47.7, 47.9, 47.9, 47.9, 48.1, 40.9, 30.2, 18.5, 9.3, 9.3, 9.3, 9.5, 9.1, 10.3, 18.7, 29.2, 39.5, 46.1, 46.1, 46.1, 46.3, 46.5, 46.7, 46.5, 47.7, 47.9, 47.9, 47.9, 48.1, 40.9, 30.2, 18.5, 9.3, 9.3]}, "p_max": {"data_type": "time_series", "values": [9.3, 9.5, 9.1, 10.3, 18.7, 29.2, 39.5, 46.1, 46.1, 46.1, 46.3, 46.5, 46.7, 46.5, 47.7, 47.9, 47.9, 47.9, 48.1, 40.9, 30.2, 18.5, 9.3, 9.3, 9.3, 9.5, 9.1, 10.3, 18.7, 29.2, 39.5, 46.1, 46.1, 46.1, 46.3, 46.5, 46.7, 46.5, 47.7, 47.9, 47.9, 47.9, 48.1, 40.9, 30.2, 18.5, 9.3, 9.3]}, "q_min": -10.0, "q_max": 16.0, "ramp_q": 50.0, "fuel": "Hydro", "unit_type": "HYDRO", "area": "2", "zone": "26.0", "generator_type": "renewable"}, "222_HYDRO_1": {"bus": "Bell", "in_service": true, "mbase": 100.0, "pg": 50.0, "qg": -6.97, "p_min": {"data_type": "time_series", "values": [9.3, 9.5, 9.1, 10.3, 18.7, 29.2, 39.5, 46.1, 46.1, 46.1, 46.3, 46.5, 46.7, 46.5, 47.7, 47.9, 47.9, 47.9, 48.1, 40.9, 30.2, 18.5, 9.3, 9.3, 9.3, 9.5, 9.1, 10.3, 18.7, 29.2, 39.5, 46.1, 46.1, 46.1, 46.3, 46.5, 46.7, 46.5, 47.7, 47.9, 47.9, 47.9, 48.1, 40.9, 30.2, 18.5, 9.3, 9.3]}, "p_max": {"data_type": "time_series", "values": [9.3, 9.5, 9.1, 10.3, 18.7, 29.2, 39.5, 46.1, 46.1, 46.1, 46.3, 46.5, 46.7, 46.5, 47.7, 47.9, 47.9, 47.9, 48.1, 40.9, 30.2, 18.5, 9.3, 9.3, 9.3, 9.5, 9.1, 10.3, 18.7, 29.2, 39.5, 46.1, 46.1, 46.1, 46.3, 46.5, 46.7, 46.5, 47.7, 47.9, 47.9, 47.9, 48.1, 40.9, 30.2, 18.5, 9.3, 9.3]}, "q_min": -10.0, "q_max": 16.0, "ramp_q": 50.0, "fuel": "Hydro", "unit_type": "HYDRO", "area": "2", "zone": "27.0", "generator_type": "renewable"}, "222_HYDRO_2": {"bus": "Bell", "in_service": true, "mbase": 100.0, "pg": 50.0, "qg": -6.97, "p_min": {"data_type": "time_series", "values": [9.3, 9.5, 9.1, 10.3, 18.7, 29.2, 39.5, 46.1, 46.1, 46.1, 46.3, 46.5, 46.7, 46.5, 47.7, 47.9, 47.9, 47.9, 48.1, 40.9, 30.2, 18.5, 9.3, 9.3, 9.3, 9.5, 9.1, 10.3, 18.7, 29.2, 39.5, 46.1, 46.1, 46.1, 46.3, 46.5, 46.7, 46.5, 47.7, 47.9, 47.9, 47.9, 48.1, 40.9, 30.2, 18.5, 9.3, 9.3]}, "p_max": {"data_type": "time_series", "values": [9.3, 9.5, 9.1, 10.3, 18.7, 29.2, 39.5, 46.1, 46.1, 46.1, 46.3, 46.5, 46.7, 46.5, 47.7, 47.9, 47.9, 47.9, 48.1, 40.9, 30.2, 18.5, 9.3, 9.3, 9.3, 9.5, 9.1, 10.3, 18.7, 29.2, 39.5, 46.1, 46.1, 46.1, 46.3, 46.5, 46.7, 46.5, 47.7, 47.9, 47.9, 47.9, 48.1, 40.9, 30.2, 18.5, 9.3, 9.3]}, "q_min": -10.0, "q_max": 16.0, "ramp_q": 50.0, "fuel": "Hydro", "unit_type": "HYDRO", "area": "2", "zone": "27.0", "generator_type": "renewable"}, "222_HYDRO_3": {"bus": "Bell", "in_service": true, "mbase": 100.0, "pg": 50.0, "qg": -6.97, "p_min": {"data_type": "time_series", "values": [9.3, 9.5, 9.1, 10.3, 18.7, 29.2, 39.5, 46.1, 46.1, 46.1, 46.3, 46.5, 46.7, 46.5, 47.7, 47.9, 47.9, 47.9, 48.1, 40.9, 30.2, 18.5, 9.3, 9.3, 9.3, 9.5, 9.1, 10.3, 18.7, 29.2, 39.5, 46.1, 46.1, 46.1, 46.3, 46.5, 46.7, 46.5, 47.7, 47.9, 47.9, 47.9, 48.1, 40.9, 30.2, 18.5, 9.3, 9.3]}, "p_max": {"data_type": "time_series", "values": [9.3, 9.5, 9.1, 10.3, 18.7, 29.2, 39.5, 46.1, 46.1, 46.1, 46.3, 46.5, 46.7, 46.5, 47.7, 47.9, 47.9, 47.9, 48.1, 40.9, 30.2, 18.5, 9.3, 9.3, 9.3, 9.5, 9.1, 10.3, 18.7, 29.2, 39.5, 46.1, 46.1, 46.1, 46.3, 46.5, 46.7, 46.5, 47.7, 47.9, 47.9, 47.9, 48.1, 40.9, 30.2, 18.5, 9.3, 9.3]}, "q_min": -10.0, "q_max": 16.0, "ramp_q": 50.0, "fuel": "Hydro", "unit_type": "HYDRO", "area": "2", "zone": "27.0", "generator_type": "renewable"}, "222_HYDRO_4": {"bus": "Bell", "in_service": true, "mbase": 100.0, "pg": 50.0, "qg": -6.97, "p_min": {"data_type": "time_series", "values": [9.3, 9.5, 9.1, 10.3, 18.7, 29.2, 39.5, 46.1, 46.1, 46.1, 46.3, 46.5, 46.7, 46.5, 47.7, 47.9, 47.9, 47.9, 48.1, 40.9, 30.2, 18.5, 9.3, 9.3, 9.3, 9.5, 9.1, 10.3, 18.7, 29.2, 39.5, 46.1, 46.1, 46.1, 46.3, 46.5, 46.7, 46.5, 47.7, 47.9, 47.9, 47.9, 48.1, 40.9, 30.2, 18.5, 9.3, 9.3]}, "p_max": {"data_type": "time_series", "values": [9.3, 9.5, 9.1, 10.3, 18.7, 29.2, 39.5, 46.1, 46.1, 46.1, 46.3, 46.5, 46.7, 46.5, 47.7, 47.9, 47.9, 47.9, 48.1, 40.9, 30.2, 18.5, 9.3, 9.3, 9.3, 9.5, 9.1, 10.3, 18.7, 29.2, 39.5, 46.1, 46.1, 46.1, 46.3, 46.5, 46.7, 46.5, 47.7, 47.9, 47.9, 47.9, 48.1, 40.9, 30.2, 18.5, 9.3, 9.3]}, "q_min": -10.0, "q_max": 16.0, "ramp_q": 50.0, "fuel": "Hydro", "unit_type": "HYDRO", "area": "2", "zone": "27.0", "generator_type": "renewable"}, "222_HYDRO_5": {"bus": "Bell", "in_service": true, "mbase": 100.0, "pg": 50.0, "qg": -6.97, "p_min": {"data_type": "time_series", "values": [9.3, 9.5, 9.1, 10.3, 18.7, 29.2, 39.5, 46.1, 46.1, 46.1, 46.3, 46.5, 46.7, 46.5, 47.7, 47.9, 47.9, 47.9, 48.1, 40.9, 30.2, 18.5, 9.3, 9.3, 9.3, 9.5, 9.1, 10.3, 18.7, 29.2, 39.5, 46.1, 46.1, 46.1, 46.3, 46.5, 46.7, 46.5, 47.7, 47.9, 47.9, 47.9, 48.1, 40.9, 30.2, 18.5, 9.3, 9.3]}, "p_max": {"data_type": "time_series", "values": [9.3, 9.5, 9.1, 10.3, 18.7, 29.2, 39.5, 46.1, 46.1, 46.1, 46.3, 46.5, 46.7, 46.5, 47.7, 47.9, 47.9, 47.9, 48.1, 40.9, 30.2, 18.5, 9.3, 9.3, 9.3, 9.5, 9.1, 10.3, 18.7, 29.2, 39.5, 46.1, 46.1, 46.1, 46.3, 46.5, 46.7, 46.5, 47.7, 47.9, 47.9, 47.9, 48.1, 40.9, 30.2, 18.5, 9.3, 9.3]}, "q_min": -10.0, "q_max": 16.0, "ramp_q": 50.0, "fuel": "Hydro", "unit_type": "HYDRO", "area": "2", "zone": "27.0", "generator_type": "renewable"}, "222_HYDRO_6": {"bus": "Bell", "in_service": true, "mbase": 100.0, "pg": 50.0, "qg": -6.97, "p_min": {"data_type": "time_series", "values": [9.3, 9.5, 9.1, 10.3, 18.7, 29.2, 39.5, 46.1, 46.1, 46.1, 46.3, 46.5, 46.7, 46.5, 47.7, 47.9, 47.9, 47.9, 48.1, 40.9, 30.2, 18.5, 9.3, 9.3, 9.3, 9.5, 9.1, 10.3, 18.7, 29.2, 39.5, 46.1, 46.1, 46.1, 46.3, 46.5, 46.7, 46.5, 47.7, 47.9, 47.9, 47.9, 48.1, 40.9, 30.2, 18.5, 9.3, 9.3]}, "p_max": {"data_type": "time_series", "values": [9.3, 9.5, 9.1, 10.3, 18.7, 29.2, 39.5, 46.1, 46.1, 46.1, 46.3, 46.5, 46.7, 46.5, 47.7, 47.9, 47.9, 47.9, 48.1, 40.9, 30.2, 18.5, 9.3, 9.3, 9.3, 9.5, 9.1, 10.3, 18.7, 29.2, 39.5, 46.1, 46.1, 46.1, 46.3, 46.5, 46.7, 46.5, 47.7, 47.9, 47.9, 47.9, 48.1, 40.9, 30.2, 18.5, 9.3, 9.3]}, "q_min": -10.0, "q_max": 16.0, "ramp_q": 50.0, "fuel": "Hydro", "unit_type": "HYDRO", "area": "2", "zone": "27.0", "generator_type": "renewable"}, "314_SYNC_COND_1": {"bus": "Chain", "in_service": true, "mbase": 100.0, "pg": 0.0, "qg": 166.63, "p_min": 0.0, "p_max": 0.0, "q_min": -50.0, "q_max": 200.0, "ramp_q": 0.0, "fuel": "Sync_Cond", "unit_type": "SYNC_COND", "area": "3", "zone": "36.0", "generator_type": "thermal", "p_fuel": {"data_type": "fuel_curve", "values": [[0.0, 0.0]]}, "startup_fuel": [[0.0, 0.0]], "non_fuel_startup_cost": 0.0, "shutdown_cost": 0.0, "agc_capable": true, "p_min_agc": 0.0, "p_max_agc": 0.0, "ramp_agc": 0.0, "ramp_up_60min": 0.0, "ramp_down_60min": 0.0, "fuel_cost": 0.0, "startup_capacity": 0.0, "shutdown_capacity": 0.0, "min_up_time": 0.0, "min_down_time": 0.0, "initial_status": 1.0, "initial_p_output": 0.0, "initial_q_output": 0.0}, "322_HYDRO_1": {"bus": "Cole", "in_service": true, "mbase": 100.0, "pg": 50.0, "qg": -5.13, "p_min": {"data_type": "time_series", "values": [38.5, 30.2, 36.4, 31.4, 32.2, 23.3, 27.0, 27.3, 30.4, 36.6, 39.6, 42.5, 40.0, 42.3, 38.8, 42.0, 40.3, 41.8, 40.7, 37.3, 38.5, 35.0, 30.8, 31.7, 38.5, 30.2, 36.4, 31.4, 32.2, 23.3, 27.0, 27.3, 30.4, 36.6, 39.6, 42.5, 40.0, 42.3, 38.8, 42.0, 40.3, 41.8, 40.7, 37.3, 38.5, 35.0, 30.8, 31.7]}, "p_max": {"data_type": "time_series", "values": [38.5, 30.2, 36.4, 31.4, 32.2, 23.3, 27.0, 27.3, 30.4, 36.6, 39.6, 42.5, 40.0, 42.3, 38.8, 42.0, 40.3, 41.8, 40.7, 37.3, 38.5, 35.0, 30.8, 31.7, 38.5, 30.2, 36.4, 31.4, 32.2, 23.3, 27.0, 27.3, 30.4, 36.6, 39.6, 42.5, 40.0, 42.3, 38.8, 42.0, 40.3, 41.8, 40.7, 37.3, 38.5, 35.0, 30.8, 31.7]}, "q_min": -10.0, "q_max": 16.0, "ramp_q": 50.0, "fuel": "Hydro", "unit_type": "HYDRO", "area": "3", "zone": "37.0", "generator_type": "renewable"}, "322_HYDRO_2": {"bus": "Cole", "in_service": true, "mbase": 100.0, "pg": 50.0, "qg": -5.13, "p_min": {"data_type": "time_series", "values": [38.5, 30.2, 36.4, 31.4, 32.2, 23.3, 27.0, 27.3, 30.4, 36.6, 39.6, 42.5, 40.0, 42.3, 38.8, 42.0, 40.3, 41.8, 40.7, 37.3, 38.5, 35.0, 30.8, 31.7, 38.5, 30.2, 36.4, 31.4, 32.2, 23.3, 27.0, 27.3, 30.4, 36.6, 39.6, 42.5, 40.0, 42.3, 38.8, 42.0, 40.3, 41.8, 40.7, 37.3, 38.5, 35.0, 30.8, 31.7]}, "p_max": {"data_type": "time_series", "values": [38.5, 30.2, 36.4, 31.4, 32.2, 23.3, 27.0, 27.3, 30.4, 36.6, 39.6, 42.5, 40.0, 42.3, 38.8, 42.0, 40.3, 41.8, 40.7, 37.3, 38.5, 35.0, 30.8, 31.7, 38.5, 30.2, 36.4, 31.4, 32.2, 23.3, 27.0, 27.3, 30.4, 36.6, 39.6, 42.5, 40.0, 42.3, 38.8, 42.0, 40.3, 41.8, 40.7, 37.3, 38.5, 35.0, 30.8, 31.7]}, "q_min": -10.0, "q_max": 16.0, "ramp_q": 50.0, "fuel": "Hydro", "unit_type": "HYDRO", "area": "3", "zone": "37.0", "generator_type": "renewable"}, "322_HYDRO_3": {"bus": "Cole", "in_service": true, "mbase": 100.0, "pg": 50.0, "qg": -5.13, "p_min": {"data_type": "time_series", "values": [38.5, 30.2, 36.4, 31.4, 32.2, 23.3, 27.0, 27.3, 30.4, 36.6, 39.6, 42.5, 40.0, 42.3, 38.8, 42.0, 40.3, 41.8, 40.7, 37.3, 38.5, 35.0, 30.8, 31.7, 38.5, 30.2, 36.4, 31.4, 32.2, 23.3, 27.0, 27.3, 30.4, 36.6, 39.6, 42.5, 40.0, 42.3, 38.8, 42.0, 40.3, 41.8, 40.7, 37.3, 38.5, 35.0, 30.8, 31.7]}, "p_max": {"data_type": "time_series", "values": [38.5, 30.2, 36.4, 31.4, 32.2, 23.3, 27.0, 27.3, 30.4, 36.6, 39.6, 42.5, 40.0, 42.3, 38.8, 42.0, 40.3, 41.8, 40.7, 37.3, 38.5, 35.0, 30.8, 31.7, 38.5, 30.2, 36.4, 31.4, 32.2, 23.3, 27.0, 27.3, 30.4, 36.6, 39.6, 42.5, 40.0, 42.3, 38.8, 42.0, 40.3, 41.8, 40.7, 37.3, 38.5, 35.0, 30.8, 31.7]}, "q_min": -10.0, "q_max": 16.0, "ramp_q": 50.0, "fuel": "Hydro", "unit_type": "HYDRO", "area": "3", "zone": "37.0", "generator_type": "renewable"}, "322_HYDRO_4": {"bus": "Cole", "in_service": true, "mbase": 100.0, "pg": 50.0, "qg": -5.13, "p_min": {"data_type": "time_series", "values": [38.5, 30.2, 36.4, 31.4, 32.2, 23.3, 27.0, 27.3, 30.4, 36.6, 39.6, 42.5, 40.0, 42.3, 38.8, 42.0, 40.3, 41.8, 40.7, 37.3, 38.5, 35.0, 30.8, 31.7, 38.5, 30.2, 36.4, 31.4, 32.2, 23.3, 27.0, 27.3, 30.4, 36.6, 39.6, 42.5, 40.0, 42.3, 38.8, 42.0, 40.3, 41.8, 40.7, 37.3, 38.5, 35.0, 30.8, 31.7]}, "p_max": {"data_type": "time_series", "values": [38.5, 30.2, 36.4, 31.4, 32.2, 23.3, 27.0, 27.3, 30.4, 36.6, 39.6, 42.5, 40.0, 42.3, 38.8, 42.0, 40.3, 41.8, 40.7, 37.3, 38.5, 35.0, 30.8, 31.7, 38.5, 30.2, 36.4, 31.4, 32.2, 23.3, 27.0, 27.3, 30.4, 36.6, 39.6, 42.5, 40.0, 42.3, 38.8, 42.0, 40.3, 41.8, 40.7, 37.3, 38.5, 35.0, 30.8, 31.7]}, "q_min": -10.0, "q_max": 16.0, "ramp_q": 50.0, "fuel": "Hydro", "unit_type": "HYDRO", "area": "3", "zone": "37.0", "generator_type": "renewable"}, "320_PV_1": {"bus": "Clive", "in_service": true, "mbase": 100.0, "pg": 0.0, "qg": 0.0, "p_min": 0.0, "p_max": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 17.5, 26.6, 31.3, 35.5, 35.5, 35.1, 35.6, 35.9, 36.2, 35.4, 33.6, 28.6, 18.8, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 17.5, 26.6, 31.3, 35.5, 35.5, 35.1, 35.6, 35.9, 36.2, 35.4, 33.6, 28.6, 18.8, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "q_min": 0.0, "q_max": 0.0, "ramp_q": 51.6, "fuel": "Solar", "unit_type": "PV", "area": "3", "zone": "35.0", "generator_type": "renewable"}, "314_PV_1": {"bus": "Chain", "in_service": true, "mbase": 100.0, "pg": 0.0, "qg": 0.0, "p_min": 0.0, "p_max": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 17.8, 27.1, 31.8, 36.4, 36.3, 35.9, 36.3, 36.7, 37.0, 36.4, 34.6, 29.7, 20.1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 17.8, 27.1, 31.8, 36.4, 36.3, 35.9, 36.3, 36.7, 37.0, 36.4, 34.6, 29.7, 20.1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "q_min": 0.0, "q_max": 0.0, "ramp_q": 51.6, "fuel": "Solar", "unit_type": "PV", "area": "3", "zone": "36.0", "generator_type": "renewable"}, "314_PV_2": {"bus": "Chain", "in_service": true, "mbase": 100.0, "pg": 0.0, "qg": 0.0, "p_min": 0.0, "p_max": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 17.5, 27.5, 33.4, 36.0, 36.3, 35.4, 35.4, 35.1, 35.0, 35.3, 33.2, 29.1, 19.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 17.5, 27.5, 33.4, 36.0, 36.3, 35.4, 35.4, 35.1, 35.0, 35.3, 33.2, 29.1, 19.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "q_min": 0.0, "q_max": 0.0, "ramp_q": 51.6, "fuel": "Solar", "unit_type": "PV", "area": "3", "zone": "36.0", "generator_type": "renewable"}, "313_PV_1": {"bus": "Cecil", "in_service": true, "mbase": 100.0, "pg": 0.0, "qg": 0.0, "p_min": 0.0, "p_max": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 17.6, 32.5, 46.4, 59.9, 65.1, 68.9, 69.2, 70.0, 68.6, 64.9, 55.9, 41.5, 20.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 17.6, 32.5, 46.4, 59.9, 65.1, 68.9, 69.2, 70.0, 68.6, 64.9, 55.9, 41.5, 20.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "q_min": 0.0, "q_max": 0.0, "ramp_q": 95.1, "fuel": "Solar", "unit_type": "PV", "area": "3", "zone": "34.0", "generator_type": "renewable"}, "314_PV_3": {"bus": "Chain", "in_service": true, "mbase": 100.0, "pg": 0.0, "qg": 0.0, "p_min": 0.0, "p_max": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 18.0, 33.4, 49.3, 61.1, 66.6, 68.2, 70.5, 70.4, 66.4, 64.1, 54.9, 41.9, 21.8, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 18.0, 33.4, 49.3, 61.1, 66.6, 68.2, 70.5, 70.4, 66.4, 64.1, 54.9, 41.9, 21.8, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "q_min": 0.0, "q_max": 0.0, "ramp_q": 92.7, "fuel": "Solar", "unit_type": "PV", "area": "3", "zone": "36.0", "generator_type": "renewable"}, "314_PV_4": {"bus": "Chain", "in_service": true, "mbase": 100.0, "pg": 0.0, "qg": 0.0, "p_min": 0.0, "p_max": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 17.5, 27.5, 33.4, 36.0, 36.3, 35.4, 35.4, 35.1, 35.0, 35.3, 33.2, 29.1, 19.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 17.5, 27.5, 33.4, 36.0, 36.3, 35.4, 35.4, 35.1, 35.0, 35.3, 33.2, 29.1, 19.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "q_min": 0.0, "q_max": 0.0, "ramp_q": 51.6, "fuel": "Solar", "unit_type": "PV", "area": "3", "zone": "36.0", "generator_type": "renewable"}, "313_PV_2": {"bus": "Cecil", "in_service": true, "mbase": 100.0, "pg": 0.0, "qg": 0.0, "p_min": 0.0, "p_max": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 17.7, 32.2, 47.6, 59.3, 64.7, 67.8, 68.0, 68.8, 67.7, 64.4, 55.1, 41.3, 21.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 17.7, 32.2, 47.6, 59.3, 64.7, 67.8, 68.0, 68.8, 67.7, 64.4, 55.1, 41.3, 21.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "q_min": 0.0, "q_max": 0.0, "ramp_q": 93.3, "fuel": "Solar", "unit_type": "PV", "area": "3", "zone": "34.0", "generator_type": "renewable"}, "310_PV_1": {"bus": "Caruso", "in_service": true, "mbase": 100.0, "pg": 0.0, "qg": 0.0, "p_min": 0.0, "p_max": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 17.8, 26.8, 33.4, 36.2, 36.3, 35.9, 35.1, 35.6, 36.0, 36.3, 34.2, 29.5, 20.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 17.8, 26.8, 33.4, 36.2, 36.3, 35.9, 35.1, 35.6, 36.0, 36.3, 34.2, 29.5, 20.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "q_min": 0.0, "q_max": 0.0, "ramp_q": 51.7, "fuel": "Solar", "unit_type": "PV", "area": "3", "zone": "33.0", "generator_type": "renewable"}, "324_PV_1": {"bus": "Curie", "in_service": true, "mbase": 100.0, "pg": 0.0, "qg": 0.0, "p_min": 0.0, "p_max": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 17.8, 28.1, 34.2, 36.8, 37.6, 36.3, 36.3, 36.0, 35.8, 36.3, 34.2, 30.0, 20.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 17.8, 28.1, 34.2, 36.8, 37.6, 36.3, 36.3, 36.0, 35.8, 36.3, 34.2, 30.0, 20.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "q_min": 0.0, "q_max": 0.0, "ramp_q": 49.7, "fuel": "Solar", "unit_type": "PV", "area": "3", "zone": "36.0", "generator_type": "renewable"}, "312_PV_1": {"bus": "Caxton", "in_service": true, "mbase": 100.0, "pg": 0.0, "qg": 0.0, "p_min": 0.0, "p_max": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 17.7, 32.5, 48.7, 59.7, 65.2, 67.9, 67.9, 68.7, 67.7, 64.6, 55.5, 41.9, 22.1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 17.7, 32.5, 48.7, 59.7, 65.2, 67.9, 67.9, 68.7, 67.7, 64.6, 55.5, 41.9, 22.1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "q_min": 0.0, "q_max": 0.0, "ramp_q": 94.1, "fuel": "Solar", "unit_type": "PV", "area": "3", "zone": "33.0", "generator_type": "renewable"}, "310_PV_2": {"bus": "Caruso", "in_service": true, "mbase": 100.0, "pg": 0.0, "qg": 0.0, "p_min": 0.0, "p_max": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 17.7, 26.7, 33.3, 36.1, 36.2, 35.9, 35.0, 35.5, 36.0, 36.3, 34.2, 29.5, 20.1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 17.7, 26.7, 33.3, 36.1, 36.2, 35.9, 35.0, 35.5, 36.0, 36.3, 34.2, 29.5, 20.1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "q_min": 0.0, "q_max": 0.0, "ramp_q": 51.6, "fuel": "Solar", "unit_type": "PV", "area": "3", "zone": "33.0", "generator_type": "renewable"}, "324_PV_2": {"bus": "Curie", "in_service": true, "mbase": 100.0, "pg": 0.0, "qg": 0.0, "p_min": 0.0, "p_max": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 17.2, 27.1, 33.0, 34.2, 35.6, 34.0, 33.6, 35.3, 36.0, 35.3, 33.1, 29.1, 19.6, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 17.2, 27.1, 33.0, 34.2, 35.6, 34.0, 33.6, 35.3, 36.0, 35.3, 33.1, 29.1, 19.6, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "q_min": 0.0, "q_max": 0.0, "ramp_q": 51.6, "fuel": "Solar", "unit_type": "PV", "area": "3", "zone": "36.0", "generator_type": "renewable"}, "324_PV_3": {"bus": "Curie", "in_service": true, "mbase": 100.0, "pg": 0.0, "qg": 0.0, "p_min": 0.0, "p_max": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 17.2, 27.1, 33.0, 34.2, 35.6, 34.0, 33.6, 35.3, 36.0, 35.3, 33.1, 29.1, 19.6, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 17.2, 27.1, 33.0, 34.2, 35.6, 34.0, 33.6, 35.3, 36.0, 35.3, 33.1, 29.1, 19.6, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "q_min": 0.0, "q_max": 0.0, "ramp_q": 51.0, "fuel": "Solar", "unit_type": "PV", "area": "3", "zone": "36.0", "generator_type": "renewable"}, "113_PV_1": {"bus": "Arne", "in_service": true, "mbase": 100.0, "pg": 0.0, "qg": 0.0, "p_min": 0.0, "p_max": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 29.4, 49.3, 58.5, 65.6, 67.7, 69.7, 68.0, 67.0, 65.3, 61.2, 0.2, 25.8, 17.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 29.4, 49.3, 58.5, 65.6, 67.7, 69.7, 68.0, 67.0, 65.3, 61.2, 0.2, 25.8, 17.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "q_min": 0.0, "q_max": 0.0, "ramp_q": 93.6, "fuel": "Solar", "unit_type": "PV", "area": "1", "zone": "14.0", "generator_type": "renewable"}, "319_PV_1": {"bus": "Clay", "in_service": true, "mbase": 100.0, "pg": 0.0, "qg": 0.0, "p_min": 0.0, "p_max": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 67.2, 108.1, 128.9, 137.2, 140.4, 141.7, 140.6, 140.1, 140.9, 133.1, 88.1, 42.9, 18.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 67.2, 108.1, 128.9, 137.2, 140.4, 141.7, 140.6, 140.1, 140.9, 133.1, 88.1, 42.9, 18.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "q_min": 0.0, "q_max": 0.0, "ramp_q": 188.2, "fuel": "Solar", "unit_type": "PV", "area": "3", "zone": "35.0", "generator_type": "renewable"}, "215_PV_1": {"bus": "Barton", "in_service": true, "mbase": 100.0, "pg": 0.0, "qg": 0.0, "p_min": 0.0, "p_max": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 44.4, 61.0, 86.8, 90.0, 75.2, 16.1, 17.7, 74.8, 79.4, 69.5, 0.3, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 44.4, 61.0, 86.8, 90.0, 75.2, 16.1, 17.7, 74.8, 79.4, 69.5, 0.3, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "q_min": 0.0, "q_max": 0.0, "ramp_q": 125.1, "fuel": "Solar", "unit_type": "PV", "area": "2", "zone": "26.0", "generator_type": "renewable"}, "102_PV_1": {"bus": "Adams", "in_service": true, "mbase": 100.0, "pg": 0.0, "qg": 0.0, "p_min": 0.0, "p_max": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 8.5, 13.6, 16.8, 19.1, 20.3, 19.4, 12.6, 7.7, 3.4, 3.7, 0.0, 7.3, 0.8, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 8.5, 13.6, 16.8, 19.1, 20.3, 19.4, 12.6, 7.7, 3.4, 3.7, 0.0, 7.3, 0.8, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "q_min": 0.0, "q_max": 0.0, "ramp_q": 25.6, "fuel": "Solar", "unit_type": "PV", "area": "1", "zone": "12.0", "generator_type": "renewable"}, "101_PV_1": {"bus": "Abel", "in_service": true, "mbase": 100.0, "pg": 0.0, "qg": 0.0, "p_min": 0.0, "p_max": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 9.4, 14.1, 17.2, 19.3, 19.5, 19.2, 14.9, 12.8, 6.1, 0.5, 0.1, 9.4, 4.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.4, 14.1, 17.2, 19.3, 19.5, 19.2, 14.9, 12.8, 6.1, 0.5, 0.1, 9.4, 4.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "q_min": 0.0, "q_max": 0.0, "ramp_q": 25.9, "fuel": "Solar", "unit_type": "PV", "area": "1", "zone": "11.0", "generator_type": "renewable"}, "102_PV_2": {"bus": "Adams", "in_service": true, "mbase": 100.0, "pg": 0.0, "qg": 0.0, "p_min": 0.0, "p_max": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 8.6, 14.0, 16.7, 19.6, 20.2, 19.4, 13.7, 15.4, 16.2, 15.0, 0.0, 12.0, 4.4, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 8.6, 14.0, 16.7, 19.6, 20.2, 19.4, 13.7, 15.4, 16.2, 15.0, 0.0, 12.0, 4.4, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "q_min": 0.0, "q_max": 0.0, "ramp_q": 25.3, "fuel": "Solar", "unit_type": "PV", "area": "1", "zone": "12.0", "generator_type": "renewable"}, "104_PV_1": {"bus": "Agricola", "in_service": true, "mbase": 100.0, "pg": 0.0, "qg": 0.0, "p_min": 0.0, "p_max": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 9.0, 14.0, 17.2, 19.4, 19.4, 18.8, 10.8, 15.9, 15.3, 11.6, 12.1, 10.4, 4.6, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.0, 14.0, 17.2, 19.4, 19.4, 18.8, 10.8, 15.9, 15.3, 11.6, 12.1, 10.4, 4.6, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "q_min": 0.0, "q_max": 0.0, "ramp_q": 26.8, "fuel": "Solar", "unit_type": "PV", "area": "1", "zone": "11.0", "generator_type": "renewable"}, "101_PV_2": {"bus": "Abel", "in_service": true, "mbase": 100.0, "pg": 0.0, "qg": 0.0, "p_min": 0.0, "p_max": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 8.3, 14.1, 17.0, 19.7, 20.2, 18.5, 9.4, 5.6, 13.5, 6.9, 0.1, 11.1, 4.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 8.3, 14.1, 17.0, 19.7, 20.2, 18.5, 9.4, 5.6, 13.5, 6.9, 0.1, 11.1, 4.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "q_min": 0.0, "q_max": 0.0, "ramp_q": 26.7, "fuel": "Solar", "unit_type": "PV", "area": "1", "zone": "11.0", "generator_type": "renewable"}, "101_PV_3": {"bus": "Abel", "in_service": true, "mbase": 100.0, "pg": 0.0, "qg": 0.0, "p_min": 0.0, "p_max": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 8.6, 14.2, 17.1, 19.7, 20.3, 19.1, 17.4, 16.3, 18.0, 16.3, 8.7, 11.0, 3.1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 8.6, 14.2, 17.1, 19.7, 20.3, 19.1, 17.4, 16.3, 18.0, 16.3, 8.7, 11.0, 3.1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "q_min": 0.0, "q_max": 0.0, "ramp_q": 26.2, "fuel": "Solar", "unit_type": "PV", "area": "1", "zone": "11.0", "generator_type": "renewable"}, "101_PV_4": {"bus": "Abel", "in_service": true, "mbase": 100.0, "pg": 0.0, "qg": 0.0, "p_min": 0.0, "p_max": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 9.2, 13.6, 16.5, 18.7, 19.2, 19.0, 18.3, 17.0, 17.2, 3.7, 0.1, 11.4, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.2, 13.6, 16.5, 18.7, 19.2, 19.0, 18.3, 17.0, 17.2, 3.7, 0.1, 11.4, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "q_min": 0.0, "q_max": 0.0, "ramp_q": 25.8, "fuel": "Solar", "unit_type": "PV", "area": "1", "zone": "11.0", "generator_type": "renewable"}, "103_PV_1": {"bus": "Adler", "in_service": true, "mbase": 100.0, "pg": 0.0, "qg": 0.0, "p_min": 0.0, "p_max": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.7, 10.8, 23.5, 35.4, 43.2, 48.7, 50.2, 48.0, 29.4, 11.7, 25.0, 12.2, 0.3, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.7, 10.8, 23.5, 35.4, 43.2, 48.7, 50.2, 48.0, 29.4, 11.7, 25.0, 12.2, 0.3, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "q_min": 0.0, "q_max": 0.0, "ramp_q": 61.5, "fuel": "Solar", "unit_type": "PV", "area": "1", "zone": "11.0", "generator_type": "renewable"}, "119_PV_1": {"bus": "Attar", "in_service": true, "mbase": 100.0, "pg": 0.0, "qg": 0.0, "p_min": 0.0, "p_max": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.6, 10.4, 22.7, 33.5, 41.0, 47.0, 49.2, 47.5, 43.4, 35.8, 26.1, 13.4, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.6, 10.4, 22.7, 33.5, 41.0, 47.0, 49.2, 47.5, 43.4, 35.8, 26.1, 13.4, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "q_min": 0.0, "q_max": 0.0, "ramp_q": 66.6, "fuel": "Solar", "unit_type": "PV", "area": "1", "zone": "15.0", "generator_type": "renewable"}, "308_RTPV_1": {"bus": "Carrel", "in_service": true, "mbase": 100.0, "pg": 0.0, "qg": 0.0, "p_min": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.7, 18.8, 37.3, 56.7, 69.2, 75.3, 82.4, 83.9, 78.2, 67.8, 51.0, 29.3, 5.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.7, 18.8, 37.3, 56.7, 69.2, 75.3, 82.4, 83.9, 78.2, 67.8, 51.0, 29.3, 5.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "p_max": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.7, 18.8, 37.3, 56.7, 69.2, 75.3, 82.4, 83.9, 78.2, 67.8, 51.0, 29.3, 5.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.7, 18.8, 37.3, 56.7, 69.2, 75.3, 82.4, 83.9, 78.2, 67.8, 51.0, 29.3, 5.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "q_min": 0.0, "q_max": 0.0, "ramp_q": 100.9, "fuel": "Solar", "unit_type": "RTPV", "area": "3", "zone": "32.0", "generator_type": "renewable"}, "313_RTPV_1": {"bus": "Cecil", "in_service": true, "mbase": 100.0, "pg": 0.0, "qg": 0.0, "p_min": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.7, 18.9, 37.4, 56.8, 69.3, 75.3, 82.4, 83.9, 78.2, 67.7, 50.9, 29.2, 5.4, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.7, 18.9, 37.4, 56.8, 69.3, 75.3, 82.4, 83.9, 78.2, 67.7, 50.9, 29.2, 5.4, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "p_max": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.7, 18.9, 37.4, 56.8, 69.3, 75.3, 82.4, 83.9, 78.2, 67.7, 50.9, 29.2, 5.4, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.7, 18.9, 37.4, 56.8, 69.3, 75.3, 82.4, 83.9, 78.2, 67.7, 50.9, 29.2, 5.4, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "q_min": 0.0, "q_max": 0.0, "ramp_q": 101.7, "fuel": "Solar", "unit_type": "RTPV", "area": "3", "zone": "34.0", "generator_type": "renewable"}, "313_RTPV_2": {"bus": "Cecil", "in_service": true, "mbase": 100.0, "pg": 0.0, "qg": 0.0, "p_min": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 11.1, 24.1, 37.1, 45.6, 51.4, 53.9, 53.1, 48.7, 42.3, 31.9, 18.2, 2.7, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 11.1, 24.1, 37.1, 45.6, 51.4, 53.9, 53.1, 48.7, 42.3, 31.9, 18.2, 2.7, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "p_max": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 11.1, 24.1, 37.1, 45.6, 51.4, 53.9, 53.1, 48.7, 42.3, 31.9, 18.2, 2.7, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 11.1, 24.1, 37.1, 45.6, 51.4, 53.9, 53.1, 48.7, 42.3, 31.9, 18.2, 2.7, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "q_min": 0.0, "q_max": 0.0, "ramp_q": 63.1, "fuel": "Solar", "unit_type": "RTPV", "area": "3", "zone": "34.0", "generator_type": "renewable"}, "313_RTPV_3": {"bus": "Cecil", "in_service": true, "mbase": 100.0, "pg": 0.0, "qg": 0.0, "p_min": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.4, 11.5, 23.7, 36.5, 45.1, 51.1, 53.9, 53.6, 49.6, 43.3, 31.7, 18.5, 3.4, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.4, 11.5, 23.7, 36.5, 45.1, 51.1, 53.9, 53.6, 49.6, 43.3, 31.7, 18.5, 3.4, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "p_max": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.4, 11.5, 23.7, 36.5, 45.1, 51.1, 53.9, 53.6, 49.6, 43.3, 31.7, 18.5, 3.4, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.4, 11.5, 23.7, 36.5, 45.1, 51.1, 53.9, 53.6, 49.6, 43.3, 31.7, 18.5, 3.4, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "q_min": 0.0, "q_max": 0.0, "ramp_q": 65.4, "fuel": "Solar", "unit_type": "RTPV", "area": "3", "zone": "34.0", "generator_type": "renewable"}, "313_RTPV_4": {"bus": "Cecil", "in_service": true, "mbase": 100.0, "pg": 0.0, "qg": 0.0, "p_min": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 12.0, 23.8, 36.0, 44.7, 50.2, 52.8, 51.9, 47.3, 41.0, 30.8, 17.7, 2.9, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 12.0, 23.8, 36.0, 44.7, 50.2, 52.8, 51.9, 47.3, 41.0, 30.8, 17.7, 2.9, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "p_max": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 12.0, 23.8, 36.0, 44.7, 50.2, 52.8, 51.9, 47.3, 41.0, 30.8, 17.7, 2.9, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 12.0, 23.8, 36.0, 44.7, 50.2, 52.8, 51.9, 47.3, 41.0, 30.8, 17.7, 2.9, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "q_min": 0.0, "q_max": 0.0, "ramp_q": 67.0, "fuel": "Solar", "unit_type": "RTPV", "area": "3", "zone": "34.0", "generator_type": "renewable"}, "313_RTPV_5": {"bus": "Cecil", "in_service": true, "mbase": 100.0, "pg": 0.0, "qg": 0.0, "p_min": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 12.3, 24.2, 37.3, 45.8, 51.5, 54.0, 53.3, 48.9, 42.5, 32.2, 18.3, 3.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 12.3, 24.2, 37.3, 45.8, 51.5, 54.0, 53.3, 48.9, 42.5, 32.2, 18.3, 3.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "p_max": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 12.3, 24.2, 37.3, 45.8, 51.5, 54.0, 53.3, 48.9, 42.5, 32.2, 18.3, 3.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 12.3, 24.2, 37.3, 45.8, 51.5, 54.0, 53.3, 48.9, 42.5, 32.2, 18.3, 3.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "q_min": 0.0, "q_max": 0.0, "ramp_q": 64.8, "fuel": "Solar", "unit_type": "RTPV", "area": "3", "zone": "34.0", "generator_type": "renewable"}, "313_RTPV_6": {"bus": "Cecil", "in_service": true, "mbase": 100.0, "pg": 0.0, "qg": 0.0, "p_min": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 12.3, 24.2, 36.2, 43.6, 49.7, 52.4, 51.6, 47.5, 41.1, 30.7, 17.6, 2.8, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 12.3, 24.2, 36.2, 43.6, 49.7, 52.4, 51.6, 47.5, 41.1, 30.7, 17.6, 2.8, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "p_max": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 12.3, 24.2, 36.2, 43.6, 49.7, 52.4, 51.6, 47.5, 41.1, 30.7, 17.6, 2.8, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 12.3, 24.2, 36.2, 43.6, 49.7, 52.4, 51.6, 47.5, 41.1, 30.7, 17.6, 2.8, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "q_min": 0.0, "q_max": 0.0, "ramp_q": 63.8, "fuel": "Solar", "unit_type": "RTPV", "area": "3", "zone": "34.0", "generator_type": "renewable"}, "313_RTPV_7": {"bus": "Cecil", "in_service": true, "mbase": 100.0, "pg": 0.0, "qg": 0.0, "p_min": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 10.9, 24.2, 35.7, 43.4, 48.8, 51.4, 51.5, 47.9, 42.0, 31.2, 18.0, 2.9, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 10.9, 24.2, 35.7, 43.4, 48.8, 51.4, 51.5, 47.9, 42.0, 31.2, 18.0, 2.9, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "p_max": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 10.9, 24.2, 35.7, 43.4, 48.8, 51.4, 51.5, 47.9, 42.0, 31.2, 18.0, 2.9, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 10.9, 24.2, 35.7, 43.4, 48.8, 51.4, 51.5, 47.9, 42.0, 31.2, 18.0, 2.9, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "q_min": 0.0, "q_max": 0.0, "ramp_q": 64.1, "fuel": "Solar", "unit_type": "RTPV", "area": "3", "zone": "34.0", "generator_type": "renewable"}, "313_RTPV_8": {"bus": "Cecil", "in_service": true, "mbase": 100.0, "pg": 0.0, "qg": 0.0, "p_min": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 12.4, 24.3, 36.4, 43.8, 49.9, 52.6, 51.9, 47.8, 41.3, 30.8, 17.6, 2.8, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 12.4, 24.3, 36.4, 43.8, 49.9, 52.6, 51.9, 47.8, 41.3, 30.8, 17.6, 2.8, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "p_max": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 12.4, 24.3, 36.4, 43.8, 49.9, 52.6, 51.9, 47.8, 41.3, 30.8, 17.6, 2.8, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 12.4, 24.3, 36.4, 43.8, 49.9, 52.6, 51.9, 47.8, 41.3, 30.8, 17.6, 2.8, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "q_min": 0.0, "q_max": 0.0, "ramp_q": 66.6, "fuel": "Solar", "unit_type": "RTPV", "area": "3", "zone": "34.0", "generator_type": "renewable"}, "313_RTPV_9": {"bus": "Cecil", "in_service": true, "mbase": 100.0, "pg": 0.0, "qg": 0.0, "p_min": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 10.9, 24.3, 35.7, 43.4, 48.8, 51.4, 51.5, 47.9, 42.0, 31.2, 18.0, 3.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 10.9, 24.3, 35.7, 43.4, 48.8, 51.4, 51.5, 47.9, 42.0, 31.2, 18.0, 3.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "p_max": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 10.9, 24.3, 35.7, 43.4, 48.8, 51.4, 51.5, 47.9, 42.0, 31.2, 18.0, 3.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 10.9, 24.3, 35.7, 43.4, 48.8, 51.4, 51.5, 47.9, 42.0, 31.2, 18.0, 3.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "q_min": 0.0, "q_max": 0.0, "ramp_q": 62.4, "fuel": "Solar", "unit_type": "RTPV", "area": "3", "zone": "34.0", "generator_type": "renewable"}, "313_RTPV_10": {"bus": "Cecil", "in_service": true, "mbase": 100.0, "pg": 0.0, "qg": 0.0, "p_min": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 11.0, 24.4, 36.0, 44.5, 49.6, 52.0, 51.4, 47.6, 41.4, 31.1, 17.7, 2.8, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 11.0, 24.4, 36.0, 44.5, 49.6, 52.0, 51.4, 47.6, 41.4, 31.1, 17.7, 2.8, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "p_max": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 11.0, 24.4, 36.0, 44.5, 49.6, 52.0, 51.4, 47.6, 41.4, 31.1, 17.7, 2.8, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 11.0, 24.4, 36.0, 44.5, 49.6, 52.0, 51.4, 47.6, 41.4, 31.1, 17.7, 2.8, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "q_min": 0.0, "q_max": 0.0, "ramp_q": 66.9, "fuel": "Solar", "unit_type": "RTPV", "area": "3", "zone": "34.0", "generator_type": "renewable"}, "313_RTPV_11": {"bus": "Cecil", "in_service": true, "mbase": 100.0, "pg": 0.0, "qg": 0.0, "p_min": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.1, 10.5, 25.1, 37.0, 45.8, 51.1, 53.6, 53.2, 49.6, 43.5, 33.1, 19.1, 3.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.1, 10.5, 25.1, 37.0, 45.8, 51.1, 53.6, 53.2, 49.6, 43.5, 33.1, 19.1, 3.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "p_max": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.1, 10.5, 25.1, 37.0, 45.8, 51.1, 53.6, 53.2, 49.6, 43.5, 33.1, 19.1, 3.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.1, 10.5, 25.1, 37.0, 45.8, 51.1, 53.6, 53.2, 49.6, 43.5, 33.1, 19.1, 3.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "q_min": 0.0, "q_max": 0.0, "ramp_q": 65.2, "fuel": "Solar", "unit_type": "RTPV", "area": "3", "zone": "34.0", "generator_type": "renewable"}, "313_RTPV_12": {"bus": "Cecil", "in_service": true, "mbase": 100.0, "pg": 0.0, "qg": 0.0, "p_min": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 4.6, 10.1, 15.3, 18.5, 20.7, 21.8, 21.5, 19.8, 17.4, 12.8, 7.1, 0.8, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 4.6, 10.1, 15.3, 18.5, 20.7, 21.8, 21.5, 19.8, 17.4, 12.8, 7.1, 0.8, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "p_max": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 4.6, 10.1, 15.3, 18.5, 20.7, 21.8, 21.5, 19.8, 17.4, 12.8, 7.1, 0.8, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 4.6, 10.1, 15.3, 18.5, 20.7, 21.8, 21.5, 19.8, 17.4, 12.8, 7.1, 0.8, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "q_min": 0.0, "q_max": 0.0, "ramp_q": 27.8, "fuel": "Solar", "unit_type": "RTPV", "area": "3", "zone": "34.0", "generator_type": "renewable"}, "320_RTPV_1": {"bus": "Clive", "in_service": true, "mbase": 100.0, "pg": 0.0, "qg": 0.0, "p_min": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 4.6, 10.1, 15.3, 18.5, 20.7, 21.8, 21.5, 19.8, 17.4, 12.8, 7.0, 0.8, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 4.6, 10.1, 15.3, 18.5, 20.7, 21.8, 21.5, 19.8, 17.4, 12.8, 7.0, 0.8, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "p_max": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 4.6, 10.1, 15.3, 18.5, 20.7, 21.8, 21.5, 19.8, 17.4, 12.8, 7.0, 0.8, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 4.6, 10.1, 15.3, 18.5, 20.7, 21.8, 21.5, 19.8, 17.4, 12.8, 7.0, 0.8, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "q_min": 0.0, "q_max": 0.0, "ramp_q": 27.3, "fuel": "Solar", "unit_type": "RTPV", "area": "3", "zone": "35.0", "generator_type": "renewable"}, "320_RTPV_2": {"bus": "Clive", "in_service": true, "mbase": 100.0, "pg": 0.0, "qg": 0.0, "p_min": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 4.6, 10.1, 15.3, 18.5, 20.7, 21.8, 21.5, 19.8, 17.4, 12.8, 7.1, 0.8, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 4.6, 10.1, 15.3, 18.5, 20.7, 21.8, 21.5, 19.8, 17.4, 12.8, 7.1, 0.8, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "p_max": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 4.6, 10.1, 15.3, 18.5, 20.7, 21.8, 21.5, 19.8, 17.4, 12.8, 7.1, 0.8, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 4.6, 10.1, 15.3, 18.5, 20.7, 21.8, 21.5, 19.8, 17.4, 12.8, 7.1, 0.8, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "q_min": 0.0, "q_max": 0.0, "ramp_q": 27.0, "fuel": "Solar", "unit_type": "RTPV", "area": "3", "zone": "35.0", "generator_type": "renewable"}, "320_RTPV_3": {"bus": "Clive", "in_service": true, "mbase": 100.0, "pg": 0.0, "qg": 0.0, "p_min": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.1, 4.5, 10.3, 15.6, 18.8, 21.0, 22.0, 21.9, 20.1, 17.8, 13.3, 7.6, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.1, 4.5, 10.3, 15.6, 18.8, 21.0, 22.0, 21.9, 20.1, 17.8, 13.3, 7.6, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "p_max": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.1, 4.5, 10.3, 15.6, 18.8, 21.0, 22.0, 21.9, 20.1, 17.8, 13.3, 7.6, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.1, 4.5, 10.3, 15.6, 18.8, 21.0, 22.0, 21.9, 20.1, 17.8, 13.3, 7.6, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "q_min": 0.0, "q_max": 0.0, "ramp_q": 28.3, "fuel": "Solar", "unit_type": "RTPV", "area": "3", "zone": "35.0", "generator_type": "renewable"}, "313_RTPV_13": {"bus": "Cecil", "in_service": true, "mbase": 100.0, "pg": 0.0, "qg": 0.0, "p_min": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.1, 4.4, 9.9, 14.9, 18.6, 20.6, 21.5, 21.6, 20.1, 17.5, 13.2, 7.6, 1.1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.1, 4.4, 9.9, 14.9, 18.6, 20.6, 21.5, 21.6, 20.1, 17.5, 13.2, 7.6, 1.1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "p_max": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.1, 4.4, 9.9, 14.9, 18.6, 20.6, 21.5, 21.6, 20.1, 17.5, 13.2, 7.6, 1.1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.1, 4.4, 9.9, 14.9, 18.6, 20.6, 21.5, 21.6, 20.1, 17.5, 13.2, 7.6, 1.1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "q_min": 0.0, "q_max": 0.0, "ramp_q": 27.2, "fuel": "Solar", "unit_type": "RTPV", "area": "3", "zone": "34.0", "generator_type": "renewable"}, "320_RTPV_4": {"bus": "Clive", "in_service": true, "mbase": 100.0, "pg": 0.0, "qg": 0.0, "p_min": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 4.7, 10.4, 15.4, 18.9, 21.0, 22.0, 21.7, 20.2, 17.6, 13.3, 7.5, 1.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 4.7, 10.4, 15.4, 18.9, 21.0, 22.0, 21.7, 20.2, 17.6, 13.3, 7.5, 1.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "p_max": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 4.7, 10.4, 15.4, 18.9, 21.0, 22.0, 21.7, 20.2, 17.6, 13.3, 7.5, 1.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2, 4.7, 10.4, 15.4, 18.9, 21.0, 22.0, 21.7, 20.2, 17.6, 13.3, 7.5, 1.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "q_min": 0.0, "q_max": 0.0, "ramp_q": 27.0, "fuel": "Solar", "unit_type": "RTPV", "area": "3", "zone": "35.0", "generator_type": "renewable"}, "320_RTPV_5": {"bus": "Clive", "in_service": true, "mbase": 100.0, "pg": 0.0, "qg": 0.0, "p_min": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 4.6, 10.4, 15.5, 19.2, 21.3, 22.3, 22.4, 20.9, 18.2, 13.8, 8.0, 1.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 4.6, 10.4, 15.5, 19.2, 21.3, 22.3, 22.4, 20.9, 18.2, 13.8, 8.0, 1.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "p_max": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 4.6, 10.4, 15.5, 19.2, 21.3, 22.3, 22.4, 20.9, 18.2, 13.8, 8.0, 1.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 4.6, 10.4, 15.5, 19.2, 21.3, 22.3, 22.4, 20.9, 18.2, 13.8, 8.0, 1.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "q_min": 0.0, "q_max": 0.0, "ramp_q": 28.2, "fuel": "Solar", "unit_type": "RTPV", "area": "3", "zone": "35.0", "generator_type": "renewable"}, "118_RTPV_1": {"bus": "Astor", "in_service": true, "mbase": 100.0, "pg": 0.0, "qg": 0.0, "p_min": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.1, 1.7, 3.5, 5.2, 6.3, 7.2, 7.4, 7.3, 6.6, 5.5, 4.1, 2.2, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.1, 1.7, 3.5, 5.2, 6.3, 7.2, 7.4, 7.3, 6.6, 5.5, 4.1, 2.2, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "p_max": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.1, 1.7, 3.5, 5.2, 6.3, 7.2, 7.4, 7.3, 6.6, 5.5, 4.1, 2.2, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.1, 1.7, 3.5, 5.2, 6.3, 7.2, 7.4, 7.3, 6.6, 5.5, 4.1, 2.2, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "q_min": 0.0, "q_max": 0.0, "ramp_q": 9.3, "fuel": "Solar", "unit_type": "RTPV", "area": "1", "zone": "17.0", "generator_type": "renewable"}, "118_RTPV_2": {"bus": "Astor", "in_service": true, "mbase": 100.0, "pg": 0.0, "qg": 0.0, "p_min": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.1, 1.7, 3.5, 5.2, 6.3, 7.2, 7.4, 7.3, 6.6, 5.5, 4.2, 2.2, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.1, 1.7, 3.5, 5.2, 6.3, 7.2, 7.4, 7.3, 6.6, 5.5, 4.2, 2.2, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "p_max": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.1, 1.7, 3.5, 5.2, 6.3, 7.2, 7.4, 7.3, 6.6, 5.5, 4.2, 2.2, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.1, 1.7, 3.5, 5.2, 6.3, 7.2, 7.4, 7.3, 6.6, 5.5, 4.2, 2.2, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "q_min": 0.0, "q_max": 0.0, "ramp_q": 9.7, "fuel": "Solar", "unit_type": "RTPV", "area": "1", "zone": "17.0", "generator_type": "renewable"}, "118_RTPV_3": {"bus": "Astor", "in_service": true, "mbase": 100.0, "pg": 0.0, "qg": 0.0, "p_min": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.5, 3.5, 5.3, 6.5, 7.1, 7.4, 7.0, 6.6, 5.7, 3.9, 1.9, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.5, 3.5, 5.3, 6.5, 7.1, 7.4, 7.0, 6.6, 5.7, 3.9, 1.9, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "p_max": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.5, 3.5, 5.3, 6.5, 7.1, 7.4, 7.0, 6.6, 5.7, 3.9, 1.9, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.5, 3.5, 5.3, 6.5, 7.1, 7.4, 7.0, 6.6, 5.7, 3.9, 1.9, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "q_min": 0.0, "q_max": 0.0, "ramp_q": 9.4, "fuel": "Solar", "unit_type": "RTPV", "area": "1", "zone": "17.0", "generator_type": "renewable"}, "118_RTPV_4": {"bus": "Astor", "in_service": true, "mbase": 100.0, "pg": 0.0, "qg": 0.0, "p_min": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.1, 1.8, 3.5, 5.1, 6.2, 7.1, 7.3, 7.2, 6.5, 5.4, 4.1, 2.2, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.1, 1.8, 3.5, 5.1, 6.2, 7.1, 7.3, 7.2, 6.5, 5.4, 4.1, 2.2, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "p_max": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.1, 1.8, 3.5, 5.1, 6.2, 7.1, 7.3, 7.2, 6.5, 5.4, 4.1, 2.2, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.1, 1.8, 3.5, 5.1, 6.2, 7.1, 7.3, 7.2, 6.5, 5.4, 4.1, 2.2, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "q_min": 0.0, "q_max": 0.0, "ramp_q": 9.1, "fuel": "Solar", "unit_type": "RTPV", "area": "1", "zone": "17.0", "generator_type": "renewable"}, "118_RTPV_5": {"bus": "Astor", "in_service": true, "mbase": 100.0, "pg": 0.0, "qg": 0.0, "p_min": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.1, 1.6, 3.4, 5.2, 6.4, 7.0, 7.4, 7.1, 6.5, 5.5, 4.1, 2.3, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.1, 1.6, 3.4, 5.2, 6.4, 7.0, 7.4, 7.1, 6.5, 5.5, 4.1, 2.3, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "p_max": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.1, 1.6, 3.4, 5.2, 6.4, 7.0, 7.4, 7.1, 6.5, 5.5, 4.1, 2.3, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.1, 1.6, 3.4, 5.2, 6.4, 7.0, 7.4, 7.1, 6.5, 5.5, 4.1, 2.3, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "q_min": 0.0, "q_max": 0.0, "ramp_q": 9.1, "fuel": "Solar", "unit_type": "RTPV", "area": "1", "zone": "17.0", "generator_type": "renewable"}, "118_RTPV_6": {"bus": "Astor", "in_service": true, "mbase": 100.0, "pg": 0.0, "qg": 0.0, "p_min": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.1, 1.9, 3.5, 5.2, 6.3, 7.1, 7.4, 7.3, 6.6, 5.5, 4.1, 2.2, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.1, 1.9, 3.5, 5.2, 6.3, 7.1, 7.4, 7.3, 6.6, 5.5, 4.1, 2.2, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "p_max": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.1, 1.9, 3.5, 5.2, 6.3, 7.1, 7.4, 7.3, 6.6, 5.5, 4.1, 2.2, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.1, 1.9, 3.5, 5.2, 6.3, 7.1, 7.4, 7.3, 6.6, 5.5, 4.1, 2.2, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "q_min": 0.0, "q_max": 0.0, "ramp_q": 9.7, "fuel": "Solar", "unit_type": "RTPV", "area": "1", "zone": "17.0", "generator_type": "renewable"}, "320_RTPV_6": {"bus": "Clive", "in_service": true, "mbase": 100.0, "pg": 0.0, "qg": 0.0, "p_min": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.6, 3.4, 5.2, 6.4, 7.1, 7.4, 6.8, 6.1, 4.7, 3.2, 1.9, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.6, 3.4, 5.2, 6.4, 7.1, 7.4, 6.8, 6.1, 4.7, 3.2, 1.9, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "p_max": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.6, 3.4, 5.2, 6.4, 7.1, 7.4, 6.8, 6.1, 4.7, 3.2, 1.9, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.6, 3.4, 5.2, 6.4, 7.1, 7.4, 6.8, 6.1, 4.7, 3.2, 1.9, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "q_min": 0.0, "q_max": 0.0, "ramp_q": 9.4, "fuel": "Solar", "unit_type": "RTPV", "area": "3", "zone": "35.0", "generator_type": "renewable"}, "118_RTPV_7": {"bus": "Astor", "in_service": true, "mbase": 100.0, "pg": 0.0, "qg": 0.0, "p_min": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.1, 2.1, 4.1, 6.0, 7.2, 8.1, 8.8, 8.9, 8.3, 7.2, 5.3, 3.0, 0.4, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.1, 2.1, 4.1, 6.0, 7.2, 8.1, 8.8, 8.9, 8.3, 7.2, 5.3, 3.0, 0.4, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "p_max": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.1, 2.1, 4.1, 6.0, 7.2, 8.1, 8.8, 8.9, 8.3, 7.2, 5.3, 3.0, 0.4, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.1, 2.1, 4.1, 6.0, 7.2, 8.1, 8.8, 8.9, 8.3, 7.2, 5.3, 3.0, 0.4, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "q_min": 0.0, "q_max": 0.0, "ramp_q": 11.8, "fuel": "Solar", "unit_type": "RTPV", "area": "1", "zone": "17.0", "generator_type": "renewable"}, "118_RTPV_8": {"bus": "Astor", "in_service": true, "mbase": 100.0, "pg": 0.0, "qg": 0.0, "p_min": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.1, 1.9, 4.2, 6.3, 7.6, 8.3, 8.9, 8.9, 8.3, 7.1, 5.2, 2.9, 0.3, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.1, 1.9, 4.2, 6.3, 7.6, 8.3, 8.9, 8.9, 8.3, 7.1, 5.2, 2.9, 0.3, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "p_max": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.1, 1.9, 4.2, 6.3, 7.6, 8.3, 8.9, 8.9, 8.3, 7.1, 5.2, 2.9, 0.3, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.1, 1.9, 4.2, 6.3, 7.6, 8.3, 8.9, 8.9, 8.3, 7.1, 5.2, 2.9, 0.3, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "q_min": 0.0, "q_max": 0.0, "ramp_q": 11.2, "fuel": "Solar", "unit_type": "RTPV", "area": "1", "zone": "17.0", "generator_type": "renewable"}, "118_RTPV_9": {"bus": "Astor", "in_service": true, "mbase": 100.0, "pg": 0.0, "qg": 0.0, "p_min": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.1, 1.7, 3.7, 5.6, 6.8, 7.7, 8.2, 8.0, 7.4, 6.4, 4.7, 2.7, 0.3, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.1, 1.7, 3.7, 5.6, 6.8, 7.7, 8.2, 8.0, 7.4, 6.4, 4.7, 2.7, 0.3, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "p_max": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.1, 1.7, 3.7, 5.6, 6.8, 7.7, 8.2, 8.0, 7.4, 6.4, 4.7, 2.7, 0.3, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.1, 1.7, 3.7, 5.6, 6.8, 7.7, 8.2, 8.0, 7.4, 6.4, 4.7, 2.7, 0.3, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "q_min": 0.0, "q_max": 0.0, "ramp_q": 10.3, "fuel": "Solar", "unit_type": "RTPV", "area": "1", "zone": "17.0", "generator_type": "renewable"}, "118_RTPV_10": {"bus": "Astor", "in_service": true, "mbase": 100.0, "pg": 0.0, "qg": 0.0, "p_min": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.8, 1.8, 2.6, 3.1, 3.4, 3.7, 3.7, 3.4, 2.9, 2.2, 1.2, 0.1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.8, 1.8, 2.6, 3.1, 3.4, 3.7, 3.7, 3.4, 2.9, 2.2, 1.2, 0.1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "p_max": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.8, 1.8, 2.6, 3.1, 3.4, 3.7, 3.7, 3.4, 2.9, 2.2, 1.2, 0.1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.8, 1.8, 2.6, 3.1, 3.4, 3.7, 3.7, 3.4, 2.9, 2.2, 1.2, 0.1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "q_min": 0.0, "q_max": 0.0, "ramp_q": 4.5, "fuel": "Solar", "unit_type": "RTPV", "area": "1", "zone": "17.0", "generator_type": "renewable"}, "213_RTPV_1": {"bus": "Barlow", "in_service": true, "mbase": 100.0, "pg": 0.0, "qg": 0.0, "p_min": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.1, 2.5, 4.9, 6.8, 7.7, 9.0, 9.8, 9.2, 7.4, 7.0, 5.4, 3.0, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.1, 2.5, 4.9, 6.8, 7.7, 9.0, 9.8, 9.2, 7.4, 7.0, 5.4, 3.0, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "p_max": {"data_type": "time_series", "values": [0.0, 0.0, 0.0, 0.0, 0.0, 0.1, 2.5, 4.9, 6.8, 7.7, 9.0, 9.8, 9.2, 7.4, 7.0, 5.4, 3.0, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.1, 2.5, 4.9, 6.8, 7.7, 9.0, 9.8, 9.2, 7.4, 7.0, 5.4, 3.0, 0.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "q_min": 0.0, "q_max": 0.0, "ramp_q": 13.2, "fuel": "Solar", "unit_type": "RTPV", "area": "2", "zone": "24.0", "generator_type": "renewable"}, "309_WIND_1": {"bus": "Carter", "in_service": true, "mbase": 100.0, "pg": 0.0, "qg": 0.0, "p_min": 0.0, "p_max": {"data_type": "time_series", "values": [24.0, 95.9, 68.0, 62.6, 67.7, 69.0, 58.0, 30.7, 12.7, 6.5, 0.0, 0.0, 3.7, 4.5, 0.6, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "q_min": 0.0, "q_max": 0.0, "ramp_q": 148.3, "fuel": "Wind", "unit_type": "WIND", "area": "3", "zone": "33.0", "generator_type": "renewable"}, "317_WIND_1": {"bus": "Chuhsi", "in_service": true, "mbase": 100.0, "pg": 0.0, "qg": 0.0, "p_min": 0.0, "p_max": {"data_type": "time_series", "values": [649.8, 777.5, 780.6, 442.2, 580.7, 594.6, 493.7, 314.9, 189.3, 17.7, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 3.8, 4.5, 4.5, 4.5, 4.5, 4.5, 4.5, 4.5, 4.5, 4.5, 4.5, 4.5, 4.5, 4.5, 4.5, 4.5, 4.5, 4.5, 4.5, 4.5, 4.5, 4.5, 4.5, 4.5, 4.5, 4.5]}, "q_min": 0.0, "q_max": 0.0, "ramp_q": 799.1, "fuel": "Wind", "unit_type": "WIND", "area": "3", "zone": "37.0", "generator_type": "renewable"}, "303_WIND_1": {"bus": "Caesar", "in_service": true, "mbase": 100.0, "pg": 0.0, "qg": 0.0, "p_min": 0.0, "p_max": {"data_type": "time_series", "values": [186.8, 24.5, 39.0, 17.8, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.0, 0.0, 0.0, 1.6, 0.2, 0.5, 0.0, 0.9, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "q_min": 0.0, "q_max": 0.0, "ramp_q": 847.0, "fuel": "Wind", "unit_type": "WIND", "area": "3", "zone": "31.0", "generator_type": "renewable"}, "122_WIND_1": {"bus": "Aubrey", "in_service": true, "mbase": 100.0, "pg": 0.0, "qg": 0.0, "p_min": 0.0, "p_max": {"data_type": "time_series", "values": [496.0, 668.4, 633.7, 567.0, 416.7, 296.8, 150.9, 37.0, 1.4, 0.0, 0.0, 0.0, 0.0, 0.2, 0.4, 0.0, 0.0, 0.0, 0.0, 1.3, 0.9, 0.4, 0.1, 8.6, 8.6, 8.6, 8.6, 8.6, 8.6, 8.6, 8.6, 8.6, 8.6, 8.6, 8.6, 8.6, 8.6, 8.6, 8.6, 8.6, 8.6, 8.6, 8.6, 8.6, 8.6, 8.6, 8.6, 8.6]}, "q_min": 0.0, "q_max": 0.0, "ramp_q": 713.5, "fuel": "Wind", "unit_type": "WIND", "area": "1", "zone": "17.0", "generator_type": "renewable"}}}, "system": {"name": "RTS-GMLC", "baseMVA": 100.0, "reference_bus": "Arne", "reference_bus_angle": 0, "time_period_length_minutes": 60, "time_keys": ["2020-07-10 00:00", "2020-07-10 01:00", "2020-07-10 02:00", "2020-07-10 03:00", "2020-07-10 04:00", "2020-07-10 05:00", "2020-07-10 06:00", "2020-07-10 07:00", "2020-07-10 08:00", "2020-07-10 09:00", "2020-07-10 10:00", "2020-07-10 11:00", "2020-07-10 12:00", "2020-07-10 13:00", "2020-07-10 14:00", "2020-07-10 15:00", "2020-07-10 16:00", "2020-07-10 17:00", "2020-07-10 18:00", "2020-07-10 19:00", "2020-07-10 20:00", "2020-07-10 21:00", "2020-07-10 22:00", "2020-07-10 23:00", "2020-07-11 00:00", "2020-07-11 01:00", "2020-07-11 02:00", "2020-07-11 03:00", "2020-07-11 04:00", "2020-07-11 05:00", "2020-07-11 06:00", "2020-07-11 07:00", "2020-07-11 08:00", "2020-07-11 09:00", "2020-07-11 10:00", "2020-07-11 11:00", "2020-07-11 12:00", "2020-07-11 13:00", "2020-07-11 14:00", "2020-07-11 15:00", "2020-07-11 16:00", "2020-07-11 17:00", "2020-07-11 18:00", "2020-07-11 19:00", "2020-07-11 20:00", "2020-07-11 21:00", "2020-07-11 22:00", "2020-07-11 23:00"], "flexible_ramp_down_requirement": {"data_type": "time_series", "values": [93, 93, 93, 91, 90, 94, 87, 71, 54, 37, 36, 17, 17, 17, 17, 39, 7, 7, 5, 5, 5, 5, 5, 5, 93, 93, 93, 91, 90, 94, 87, 71, 54, 37, 36, 17, 17, 17, 17, 39, 7, 7, 5, 5, 5, 5, 5, 5]}, "flexible_ramp_up_requirement": {"data_type": "time_series", "values": [91, 94, 93, 93, 93, 96, 88, 62, 40, 16, 16, 33, 33, 33, 33, 60, 36, 36, 3, 3, 3, 3, 3, 3, 91, 94, 93, 93, 93, 96, 88, 62, 40, 16, 16, 33, 33, 33, 33, 60, 36, 36, 3, 3, 3, 3, 3, 3]}, "regulation_up_requirement": {"data_type": "time_series", "values": [68, 67, 67, 66, 66, 71, 71, 65, 62, 60, 62, 69, 71, 72, 73, 80, 69, 70, 57, 56, 54, 50, 45, 42, 68, 67, 67, 66, 66, 71, 71, 65, 62, 60, 62, 69, 71, 72, 73, 80, 69, 70, 57, 56, 54, 50, 45, 42]}, "regulation_down_requirement": {"data_type": "time_series", "values": [71, 69, 69, 71, 71, 76, 76, 69, 64, 61, 64, 65, 67, 68, 69, 74, 65, 66, 58, 57, 54, 50, 46, 42, 71, 69, 69, 71, 71, 76, 76, 69, 64, 61, 64, 65, 67, 68, 69, 74, 65, 66, 58, 57, 54, 50, 46, 42]}}} \ No newline at end of file diff --git a/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/bidding_multiperiod_usc/bus_detail.csv b/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/bidding_multiperiod_usc/bus_detail.csv new file mode 100644 index 000000000..e69de29bb diff --git a/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/bidding_multiperiod_usc/contingency_detail.csv b/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/bidding_multiperiod_usc/contingency_detail.csv new file mode 100644 index 000000000..e69de29bb diff --git a/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/bidding_multiperiod_usc/daily_summary.csv b/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/bidding_multiperiod_usc/daily_summary.csv new file mode 100644 index 000000000..e69de29bb diff --git a/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/bidding_multiperiod_usc/hourly_gen_summary.csv b/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/bidding_multiperiod_usc/hourly_gen_summary.csv new file mode 100644 index 000000000..e69de29bb diff --git a/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/bidding_multiperiod_usc/hourly_summary.csv b/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/bidding_multiperiod_usc/hourly_summary.csv new file mode 100644 index 000000000..e69de29bb diff --git a/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/bidding_multiperiod_usc/line_detail.csv b/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/bidding_multiperiod_usc/line_detail.csv new file mode 100644 index 000000000..e69de29bb diff --git a/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/bidding_multiperiod_usc/renewables_detail.csv b/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/bidding_multiperiod_usc/renewables_detail.csv new file mode 100644 index 000000000..e69de29bb diff --git a/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/bidding_multiperiod_usc/runtimes.csv b/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/bidding_multiperiod_usc/runtimes.csv new file mode 100644 index 000000000..e69de29bb diff --git a/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/bidding_multiperiod_usc/thermal_detail.csv b/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/bidding_multiperiod_usc/thermal_detail.csv new file mode 100644 index 000000000..e69de29bb diff --git a/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/bidding_multiperiod_usc/virtual_detail.csv b/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/bidding_multiperiod_usc/virtual_detail.csv new file mode 100644 index 000000000..e69de29bb diff --git a/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/bidding_plugin_test_multiperiod_rankine/bidder_detail.csv b/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/bidding_plugin_test_multiperiod_rankine/bidder_detail.csv new file mode 100644 index 000000000..dedb2f50a --- /dev/null +++ b/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/bidding_plugin_test_multiperiod_rankine/bidder_detail.csv @@ -0,0 +1,97 @@ +Generator,Date,Hour,Power 0 [MW],Cost 0 [$],Power 1 [MW],Cost 1 [$],Power 2 [MW],Cost 2 [$],Power 3 [MW],Cost 3 [$],Power 4 [MW],Cost 4 [$],Power 5 [MW],Cost 5 [$] +102_STEAM_3,2020-07-10,0,286,6339.48172,321.66,7308.720520000001,350,8079.00172,400,9438.00172,430,10253.40172,460,11068.80172 +102_STEAM_3,2020-07-10,1,286,6339.48172,350,7560.10892,400,8513.72392,430,9085.89292,460,9658.06192,, +102_STEAM_3,2020-07-10,2,286,6339.48172,350,7560.10892,400,8513.72392,430,9085.89292,460,9658.06192,, +102_STEAM_3,2020-07-10,3,286,6339.48172,350,7560.10892,400,8513.72392,430,9085.89292,460,9658.06192,, +102_STEAM_3,2020-07-10,4,286,6339.48172,350,7560.10892,400,8513.72392,430,9085.89292,460,9658.06192,, +102_STEAM_3,2020-07-10,5,286,6339.48172,350,7560.10892,400,8513.72392,430,9085.89292,460,9658.06192,, +102_STEAM_3,2020-07-10,6,286,6339.48172,350,7560.10892,400,8513.72392,430,9085.89292,460,9658.06192,, +102_STEAM_3,2020-07-10,7,286,6339.48172,350,7560.10892,400,8513.72392,430,9085.89292,460,9658.06192,, +102_STEAM_3,2020-07-10,8,286,6339.48172,350,7560.10892,400,8513.72392,430,9085.89292,460,9658.06192,, +102_STEAM_3,2020-07-10,9,286,6339.48172,350,7560.10892,400,8513.72392,430,9085.89292,460,9658.06192,, +102_STEAM_3,2020-07-10,10,286,6339.48172,350,7560.10892,400,8513.72392,430,9085.89292,460,9658.06192,, +102_STEAM_3,2020-07-10,11,286,6339.48172,350,7560.10892,400,8513.72392,430,9085.89292,460,9658.06192,, +102_STEAM_3,2020-07-10,12,286,6339.48172,350,7560.10892,400,8513.72392,430,9085.89292,460,9658.06192,, +102_STEAM_3,2020-07-10,13,286,6339.48172,350,7560.10892,400,8513.72392,430,9085.89292,460,9658.06192,, +102_STEAM_3,2020-07-10,14,286,6339.48172,350,7560.10892,400,8513.72392,430,9085.89292,460,9658.06192,, +102_STEAM_3,2020-07-10,15,286,6339.48172,350,7560.10892,400,8513.72392,430,9085.89292,460,9658.06192,, +102_STEAM_3,2020-07-10,16,286,6339.48172,350,7560.10892,400,8513.72392,430,9085.89292,460,9658.06192,, +102_STEAM_3,2020-07-10,17,286,6339.48172,350,7560.10892,400,8513.72392,430,9085.89292,460,9658.06192,, +102_STEAM_3,2020-07-10,18,286,6339.48172,350,7560.10892,400,8513.72392,430,9085.89292,460,9658.06192,, +102_STEAM_3,2020-07-10,19,286,6339.48172,350,7560.10892,400,8513.72392,430,9085.89292,460,9658.06192,, +102_STEAM_3,2020-07-10,20,286,6339.48172,350,7560.10892,400,8513.72392,430,9085.89292,460,9658.06192,, +102_STEAM_3,2020-07-10,21,286,6339.48172,350,7560.10892,400,8513.72392,430,9085.89292,460,9658.06192,, +102_STEAM_3,2020-07-10,22,286,6339.48172,350,7560.10892,400,8513.72392,430,9085.89292,460,9658.06192,, +102_STEAM_3,2020-07-10,23,286,6339.48172,350,7560.10892,400,8513.72392,430,9085.89292,460,9658.06192,, +102_STEAM_3,2020-07-10,24,286,6339.48172,350,7560.10892,400,8513.72392,430,9085.89292,460,9658.06192,, +102_STEAM_3,2020-07-10,25,286,6339.48172,350,7560.10892,400,8513.72392,430,9085.89292,460,9658.06192,, +102_STEAM_3,2020-07-10,26,286,6339.48172,350,7560.10892,400,8513.72392,430,9085.89292,460,9658.06192,, +102_STEAM_3,2020-07-10,27,286,6339.48172,350,7560.10892,400,8513.72392,430,9085.89292,460,9658.06192,, +102_STEAM_3,2020-07-10,28,286,6339.48172,350,7560.10892,400,8513.72392,430,9085.89292,460,9658.06192,, +102_STEAM_3,2020-07-10,29,286,6339.48172,350,7560.10892,400,8513.72392,430,9085.89292,460,9658.06192,, +102_STEAM_3,2020-07-10,30,286,6339.48172,350,7560.10892,400,8513.72392,430,9085.89292,460,9658.06192,, +102_STEAM_3,2020-07-10,31,286,6339.48172,350,7560.10892,400,8513.72392,430,9085.89292,460,9658.06192,, +102_STEAM_3,2020-07-10,32,286,6339.48172,350,7560.10892,400,8513.72392,430,9085.89292,460,9658.06192,, +102_STEAM_3,2020-07-10,33,286,6339.48172,350,7560.10892,400,8513.72392,430,9085.89292,460,9658.06192,, +102_STEAM_3,2020-07-10,34,286,6339.48172,350,7560.10892,400,8513.72392,430,9085.89292,460,9658.06192,, +102_STEAM_3,2020-07-10,35,286,6339.48172,350,7560.10892,400,8513.72392,430,9085.89292,460,9658.06192,, +102_STEAM_3,2020-07-10,36,286,6339.48172,350,7560.10892,400,8513.72392,430,9085.89292,460,9658.06192,, +102_STEAM_3,2020-07-10,37,286,6339.48172,350,7560.10892,400,8513.72392,430,9085.89292,460,9658.06192,, +102_STEAM_3,2020-07-10,38,286,6339.48172,350,7560.10892,400,8513.72392,430,9085.89292,460,9658.06192,, +102_STEAM_3,2020-07-10,39,286,6339.48172,350,7560.10892,400,8513.72392,430,9085.89292,460,9658.06192,, +102_STEAM_3,2020-07-10,40,286,6339.48172,350,7560.10892,400,8513.72392,430,9085.89292,460,9658.06192,, +102_STEAM_3,2020-07-10,41,286,6339.48172,350,7560.10892,400,8513.72392,430,9085.89292,460,9658.06192,, +102_STEAM_3,2020-07-10,42,286,6339.48172,350,7560.10892,400,8513.72392,430,9085.89292,460,9658.06192,, +102_STEAM_3,2020-07-10,43,286,6339.48172,350,7560.10892,400,8513.72392,430,9085.89292,460,9658.06192,, +102_STEAM_3,2020-07-10,44,286,6339.48172,350,7560.10892,400,8513.72392,430,9085.89292,460,9658.06192,, +102_STEAM_3,2020-07-10,45,286,6339.48172,350,7560.10892,400,8513.72392,430,9085.89292,460,9658.06192,, +102_STEAM_3,2020-07-10,46,286,6339.48172,350,7560.10892,400,8513.72392,430,9085.89292,460,9658.06192,, +102_STEAM_3,2020-07-10,47,286,6339.48172,350,7560.10892,400,8513.72392,430,9085.89292,460,9658.06192,, +102_STEAM_3,2020-07-11,0,286,6339.48172,350,7560.10892,397.22,8557.86752,400,8616.608919999999,430,9250.508919999998,460,9884.408919999998 +102_STEAM_3,2020-07-11,1,286,6339.48172,336.65,6992.86672,350,7247.481925,400,8201.096925,430,8773.265925,460,9345.434925 +102_STEAM_3,2020-07-11,2,286,6339.48172,350,7560.10892,400,8513.72392,430,9085.89292,460,9658.06192,, +102_STEAM_3,2020-07-11,3,286,6339.48172,350,7560.10892,400,8513.72392,430,9085.89292,460,9658.06192,, +102_STEAM_3,2020-07-11,4,286,6339.48172,350,7560.10892,400,8513.72392,430,9085.89292,460,9658.06192,, +102_STEAM_3,2020-07-11,5,286,6339.48172,350,7560.10892,400,8513.72392,430,9085.89292,460,9658.06192,, +102_STEAM_3,2020-07-11,6,286,6339.48172,350,7560.10892,400,8513.72392,430,9085.89292,460,9658.06192,, +102_STEAM_3,2020-07-11,7,286,6339.48172,350,7560.10892,400,8513.72392,430,9085.89292,460,9658.06192,, +102_STEAM_3,2020-07-11,8,286,6339.48172,350,7560.10892,400,8513.72392,430,9085.89292,460,9658.06192,, +102_STEAM_3,2020-07-11,9,286,6339.48172,350,7560.10892,400,8513.72392,430,9085.89292,460,9658.06192,, +102_STEAM_3,2020-07-11,10,286,6339.48172,350,7560.10892,400,8513.72392,430,9085.89292,460,9658.06192,, +102_STEAM_3,2020-07-11,11,286,6339.48172,350,7560.10892,400,8513.72392,430,9085.89292,460,9658.06192,, +102_STEAM_3,2020-07-11,12,286,6339.48172,350,7560.10892,400,8513.72392,430,9085.89292,460,9658.06192,, +102_STEAM_3,2020-07-11,13,286,6339.48172,350,7560.10892,400,8513.72392,430,9085.89292,460,9658.06192,, +102_STEAM_3,2020-07-11,14,286,6339.48172,350,7560.10892,400,8513.72392,430,9085.89292,460,9658.06192,, +102_STEAM_3,2020-07-11,15,286,6339.48172,350,7560.10892,400,8513.72392,430,9085.89292,460,9658.06192,, +102_STEAM_3,2020-07-11,16,286,6339.48172,350,7560.10892,400,8513.72392,430,9085.89292,460,9658.06192,, +102_STEAM_3,2020-07-11,17,286,6339.48172,350,7560.10892,400,8513.72392,430,9085.89292,460,9658.06192,, +102_STEAM_3,2020-07-11,18,286,6339.48172,350,7560.10892,400,8513.72392,430,9085.89292,460,9658.06192,, +102_STEAM_3,2020-07-11,19,286,6339.48172,350,7560.10892,400,8513.72392,430,9085.89292,460,9658.06192,, +102_STEAM_3,2020-07-11,20,286,6339.48172,350,7560.10892,400,8513.72392,430,9085.89292,460,9658.06192,, +102_STEAM_3,2020-07-11,21,286,6339.48172,350,7560.10892,400,8513.72392,430,9085.89292,460,9658.06192,, +102_STEAM_3,2020-07-11,22,286,6339.48172,350,7560.10892,400,8513.72392,430,9085.89292,460,9658.06192,, +102_STEAM_3,2020-07-11,23,286,6339.48172,350,7560.10892,400,8513.72392,430,9085.89292,460,9658.06192,, +102_STEAM_3,2020-07-11,24,286,6339.48172,350,7560.10892,400,8513.72392,430,9085.89292,460,9658.06192,, +102_STEAM_3,2020-07-11,25,286,6339.48172,350,7560.10892,400,8513.72392,430,9085.89292,460,9658.06192,, +102_STEAM_3,2020-07-11,26,286,6339.48172,350,7560.10892,400,8513.72392,430,9085.89292,460,9658.06192,, +102_STEAM_3,2020-07-11,27,286,6339.48172,350,7560.10892,400,8513.72392,430,9085.89292,460,9658.06192,, +102_STEAM_3,2020-07-11,28,286,6339.48172,350,7560.10892,400,8513.72392,430,9085.89292,460,9658.06192,, +102_STEAM_3,2020-07-11,29,286,6339.48172,350,7560.10892,400,8513.72392,430,9085.89292,460,9658.06192,, +102_STEAM_3,2020-07-11,30,286,6339.48172,350,7560.10892,400,8513.72392,430,9085.89292,460,9658.06192,, +102_STEAM_3,2020-07-11,31,286,6339.48172,350,7560.10892,400,8513.72392,430,9085.89292,460,9658.06192,, +102_STEAM_3,2020-07-11,32,286,6339.48172,350,7560.10892,400,8513.72392,430,9085.89292,460,9658.06192,, +102_STEAM_3,2020-07-11,33,286,6339.48172,350,7560.10892,400,8513.72392,430,9085.89292,460,9658.06192,, +102_STEAM_3,2020-07-11,34,286,6339.48172,350,7560.10892,400,8513.72392,430,9085.89292,460,9658.06192,, +102_STEAM_3,2020-07-11,35,286,6339.48172,350,7560.10892,400,8513.72392,430,9085.89292,460,9658.06192,, +102_STEAM_3,2020-07-11,36,286,6339.48172,350,7560.10892,400,8513.72392,430,9085.89292,460,9658.06192,, +102_STEAM_3,2020-07-11,37,286,6339.48172,350,7560.10892,400,8513.72392,430,9085.89292,460,9658.06192,, +102_STEAM_3,2020-07-11,38,286,6339.48172,350,7560.10892,400,8513.72392,430,9085.89292,460,9658.06192,, +102_STEAM_3,2020-07-11,39,286,6339.48172,350,7560.10892,400,8513.72392,430,9085.89292,460,9658.06192,, +102_STEAM_3,2020-07-11,40,286,6339.48172,350,7560.10892,400,8513.72392,430,9085.89292,460,9658.06192,, +102_STEAM_3,2020-07-11,41,286,6339.48172,350,7560.10892,400,8513.72392,430,9085.89292,460,9658.06192,, +102_STEAM_3,2020-07-11,42,286,6339.48172,350,7560.10892,400,8513.72392,430,9085.89292,460,9658.06192,, +102_STEAM_3,2020-07-11,43,286,6339.48172,350,7560.10892,400,8513.72392,430,9085.89292,460,9658.06192,, +102_STEAM_3,2020-07-11,44,286,6339.48172,350,7560.10892,400,8513.72392,430,9085.89292,460,9658.06192,, +102_STEAM_3,2020-07-11,45,286,6339.48172,350,7560.10892,400,8513.72392,430,9085.89292,460,9658.06192,, +102_STEAM_3,2020-07-11,46,286,6339.48172,350,7560.10892,400,8513.72392,430,9085.89292,460,9658.06192,, +102_STEAM_3,2020-07-11,47,286,6339.48172,350,7560.10892,400,8513.72392,430,9085.89292,460,9658.06192,, diff --git a/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/bidding_plugin_test_multiperiod_rankine/bidding_model_detail.csv b/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/bidding_plugin_test_multiperiod_rankine/bidding_model_detail.csv new file mode 100644 index 000000000..e0ee68ec7 --- /dev/null +++ b/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/bidding_plugin_test_multiperiod_rankine/bidding_model_detail.csv @@ -0,0 +1,97 @@ +Date,Hour,Horizon [hr],Thermal Power Generated [MW],Total Cost [$],Hot Tank Level [MT],Plant Heat Duty [MWth],Storage Power [MW],Plant Power [MW],HXC Duty,HXD Duty,HXC Salt Flow,HXD Salt Flow,HXC Salt T in,HXC Salt T out,HXD Salt T in,HXD Salt T out,HXD Steam T out,HXD Steam out Vfrac,Scenario +2020-07-10,,0,321.66,50607831.18,76000.0,676.89,1.66,320.0,10.0,10.0,20.87,20.87,513.15,831.0,831.0,513.15,824.74,0.0,0 +2020-07-10,,1,285.67,45740764.71,76000.0,599.69,1.67,284.0,10.0,10.0,20.87,20.87,513.15,831.0,831.0,513.15,822.6,0.0,0 +2020-07-10,,2,285.67,45740764.71,76000.0,599.69,1.67,284.0,10.0,10.0,20.87,20.87,513.15,831.0,831.0,513.15,822.6,0.0,0 +2020-07-10,,3,285.67,45740764.71,76000.0,599.69,1.67,284.0,10.0,10.0,20.87,20.87,513.15,831.0,831.0,513.15,822.6,0.0,0 +2020-07-10,,4,285.67,45740764.71,76000.0,599.69,1.67,284.0,10.0,10.0,20.87,20.87,513.15,831.0,831.0,513.15,822.6,0.0,0 +2020-07-10,,5,285.67,45740764.71,76000.0,599.69,1.67,284.0,10.0,10.0,20.87,20.87,513.15,831.0,831.0,513.15,822.6,0.0,0 +2020-07-10,,6,285.67,45740764.71,76000.0,599.69,1.67,284.0,10.0,10.0,20.87,20.87,513.15,831.0,831.0,513.15,822.6,0.0,0 +2020-07-10,,7,285.67,45740764.71,76000.0,599.69,1.67,284.0,10.0,10.0,20.87,20.87,513.15,831.0,831.0,513.15,822.6,0.0,0 +2020-07-10,,8,285.67,45740764.71,76000.0,599.69,1.67,284.0,10.0,10.0,20.87,20.87,513.15,831.0,831.0,513.15,822.6,0.0,0 +2020-07-10,,9,285.67,45740764.71,76000.0,599.69,1.67,284.0,10.0,10.0,20.87,20.87,513.15,831.0,831.0,513.15,822.6,0.0,0 +2020-07-10,,10,285.67,45740764.71,76000.0,599.69,1.67,284.0,10.0,10.0,20.87,20.87,513.15,831.0,831.0,513.15,822.6,0.0,0 +2020-07-10,,11,285.67,45740764.71,76000.0,599.69,1.67,284.0,10.0,10.0,20.87,20.87,513.15,831.0,831.0,513.15,822.6,0.0,0 +2020-07-10,,12,285.67,45740764.71,76000.0,599.69,1.67,284.0,10.0,10.0,20.87,20.87,513.15,831.0,831.0,513.15,822.6,0.0,0 +2020-07-10,,13,285.67,45740764.71,76000.0,599.69,1.67,284.0,10.0,10.0,20.87,20.87,513.15,831.0,831.0,513.15,822.6,0.0,0 +2020-07-10,,14,285.67,45740764.71,76000.0,599.69,1.67,284.0,10.0,10.0,20.87,20.87,513.15,831.0,831.0,513.15,822.6,0.0,0 +2020-07-10,,15,285.67,45740764.71,76000.0,599.69,1.67,284.0,10.0,10.0,20.87,20.87,513.15,831.0,831.0,513.15,822.6,0.0,0 +2020-07-10,,16,285.67,45740764.71,76000.0,599.69,1.67,284.0,10.0,10.0,20.87,20.87,513.15,831.0,831.0,513.15,822.6,0.0,0 +2020-07-10,,17,285.67,45740764.71,76000.0,599.69,1.67,284.0,10.0,10.0,20.87,20.87,513.15,831.0,831.0,513.15,822.6,0.0,0 +2020-07-10,,18,285.67,45740764.71,76000.0,599.69,1.67,284.0,10.0,10.0,20.87,20.87,513.15,831.0,831.0,513.15,822.6,0.0,0 +2020-07-10,,19,285.67,45740764.71,76000.0,599.69,1.67,284.0,10.0,10.0,20.87,20.87,513.15,831.0,831.0,513.15,822.6,0.0,0 +2020-07-10,,20,285.67,45740764.71,76000.0,599.69,1.67,284.0,10.0,10.0,20.87,20.87,513.15,831.0,831.0,513.15,822.6,0.0,0 +2020-07-10,,21,285.67,45740764.71,76000.0,599.69,1.67,284.0,10.0,10.0,20.87,20.87,513.15,831.0,831.0,513.15,822.6,0.0,0 +2020-07-10,,22,285.67,45740764.71,76000.0,599.69,1.67,284.0,10.0,10.0,20.87,20.87,513.15,831.0,831.0,513.15,822.6,0.0,0 +2020-07-10,,23,285.67,45740764.71,76000.0,599.69,1.67,284.0,10.0,10.0,20.87,20.87,513.15,831.0,831.0,513.15,822.6,0.0,0 +2020-07-10,,24,285.67,45740764.71,76000.0,599.69,1.67,284.0,10.0,10.0,20.87,20.87,513.15,831.0,831.0,513.15,822.6,0.0,0 +2020-07-10,,25,285.67,45740764.71,76000.0,599.69,1.67,284.0,10.0,10.0,20.87,20.87,513.15,831.0,831.0,513.15,822.6,0.0,0 +2020-07-10,,26,285.67,45740764.71,76000.0,599.69,1.67,284.0,10.0,10.0,20.87,20.87,513.15,831.0,831.0,513.15,822.6,0.0,0 +2020-07-10,,27,285.67,45740764.71,76000.0,599.69,1.67,284.0,10.0,10.0,20.87,20.87,513.15,831.0,831.0,513.15,822.6,0.0,0 +2020-07-10,,28,285.67,45740764.71,76000.0,599.69,1.67,284.0,10.0,10.0,20.87,20.87,513.15,831.0,831.0,513.15,822.6,0.0,0 +2020-07-10,,29,285.67,45740764.71,76000.0,599.69,1.67,284.0,10.0,10.0,20.87,20.87,513.15,831.0,831.0,513.15,822.6,0.0,0 +2020-07-10,,30,285.67,45740764.71,76000.0,599.69,1.67,284.0,10.0,10.0,20.87,20.87,513.15,831.0,831.0,513.15,822.6,0.0,0 +2020-07-10,,31,285.67,45740764.71,76000.0,599.69,1.67,284.0,10.0,10.0,20.87,20.87,513.15,831.0,831.0,513.15,822.6,0.0,0 +2020-07-10,,32,285.67,45740764.71,76000.0,599.69,1.67,284.0,10.0,10.0,20.87,20.87,513.15,831.0,831.0,513.15,822.6,0.0,0 +2020-07-10,,33,285.67,45740764.71,76000.0,599.69,1.67,284.0,10.0,10.0,20.87,20.87,513.15,831.0,831.0,513.15,822.6,0.0,0 +2020-07-10,,34,285.67,45740764.71,76000.0,599.69,1.67,284.0,10.0,10.0,20.87,20.87,513.15,831.0,831.0,513.15,822.6,0.0,0 +2020-07-10,,35,285.67,45740764.71,76000.0,599.69,1.67,284.0,10.0,10.0,20.87,20.87,513.15,831.0,831.0,513.15,822.6,0.0,0 +2020-07-10,,36,285.67,45740764.71,76000.0,599.69,1.67,284.0,10.0,10.0,20.87,20.87,513.15,831.0,831.0,513.15,822.6,0.0,0 +2020-07-10,,37,285.67,45740764.71,76000.0,599.69,1.67,284.0,10.0,10.0,20.87,20.87,513.15,831.0,831.0,513.15,822.6,0.0,0 +2020-07-10,,38,285.67,45740764.71,76000.0,599.69,1.67,284.0,10.0,10.0,20.87,20.87,513.15,831.0,831.0,513.15,822.6,0.0,0 +2020-07-10,,39,285.67,45740764.71,76000.0,599.69,1.67,284.0,10.0,10.0,20.87,20.87,513.15,831.0,831.0,513.15,822.6,0.0,0 +2020-07-10,,40,285.67,45740764.71,76000.0,599.69,1.67,284.0,10.0,10.0,20.87,20.87,513.15,831.0,831.0,513.15,822.6,0.0,0 +2020-07-10,,41,285.67,45740764.71,76000.0,599.69,1.67,284.0,10.0,10.0,20.87,20.87,513.15,831.0,831.0,513.15,822.6,0.0,0 +2020-07-10,,42,285.67,45740764.71,76000.0,599.69,1.67,284.0,10.0,10.0,20.87,20.87,513.15,831.0,831.0,513.15,822.6,0.0,0 +2020-07-10,,43,285.67,45740764.71,76000.0,599.69,1.67,284.0,10.0,10.0,20.87,20.87,513.15,831.0,831.0,513.15,822.6,0.0,0 +2020-07-10,,44,285.67,45740764.71,76000.0,599.69,1.67,284.0,10.0,10.0,20.87,20.87,513.15,831.0,831.0,513.15,822.6,0.0,0 +2020-07-10,,45,285.67,45740764.71,76000.0,599.69,1.67,284.0,10.0,10.0,20.87,20.87,513.15,831.0,831.0,513.15,822.6,0.0,0 +2020-07-10,,46,285.67,45740764.71,76000.0,599.69,1.67,284.0,10.0,10.0,20.87,20.87,513.15,831.0,831.0,513.15,822.6,0.0,0 +2020-07-10,,47,284.67,45603166.5,76000.0,597.55,1.67,283.0,10.0,10.0,20.87,20.87,513.15,831.0,831.0,513.15,822.53,0.0,0 +2020-07-11,,0,397.22,60450171.46,2609024.0,842.91,2.22,395.0,13.55,13.55,28.28,28.28,513.15,831.0,831.0,513.15,826.1,0.0,0 +2020-07-11,,1,336.65,52586709.38,2609024.0,709.17,1.65,335.0,10.0,10.0,20.87,20.87,513.15,831.0,831.0,513.15,825.44,0.0,0 +2020-07-11,,2,285.67,45740764.71,2609024.0,599.69,1.67,284.0,10.0,10.0,20.87,20.87,513.15,831.0,831.0,513.15,822.6,0.0,0 +2020-07-11,,3,285.67,45740764.71,2609024.0,599.69,1.67,284.0,10.0,10.0,20.87,20.87,513.15,831.0,831.0,513.15,822.6,0.0,0 +2020-07-11,,4,285.67,45740764.71,2609024.0,599.69,1.67,284.0,10.0,10.0,20.87,20.87,513.15,831.0,831.0,513.15,822.6,0.0,0 +2020-07-11,,5,285.67,45740764.71,2609024.0,599.69,1.67,284.0,10.0,10.0,20.87,20.87,513.15,831.0,831.0,513.15,822.6,0.0,0 +2020-07-11,,6,285.67,45740764.71,2609024.0,599.69,1.67,284.0,10.0,10.0,20.87,20.87,513.15,831.0,831.0,513.15,822.6,0.0,0 +2020-07-11,,7,285.67,45740764.71,2609024.0,599.69,1.67,284.0,10.0,10.0,20.87,20.87,513.15,831.0,831.0,513.15,822.6,0.0,0 +2020-07-11,,8,285.67,45740764.71,2609024.0,599.69,1.67,284.0,10.0,10.0,20.87,20.87,513.15,831.0,831.0,513.15,822.6,0.0,0 +2020-07-11,,9,285.67,45740764.71,2609024.0,599.69,1.67,284.0,10.0,10.0,20.87,20.87,513.15,831.0,831.0,513.15,822.6,0.0,0 +2020-07-11,,10,285.67,45740764.71,2609024.0,599.69,1.67,284.0,10.0,10.0,20.87,20.87,513.15,831.0,831.0,513.15,822.6,0.0,0 +2020-07-11,,11,285.67,45740764.71,2609024.0,599.69,1.67,284.0,10.0,10.0,20.87,20.87,513.15,831.0,831.0,513.15,822.6,0.0,0 +2020-07-11,,12,285.67,45740764.71,2609024.0,599.69,1.67,284.0,10.0,10.0,20.87,20.87,513.15,831.0,831.0,513.15,822.6,0.0,0 +2020-07-11,,13,285.67,45740764.71,2609024.0,599.69,1.67,284.0,10.0,10.0,20.87,20.87,513.15,831.0,831.0,513.15,822.6,0.0,0 +2020-07-11,,14,285.67,45740764.71,2609024.0,599.69,1.67,284.0,10.0,10.0,20.87,20.87,513.15,831.0,831.0,513.15,822.6,0.0,0 +2020-07-11,,15,285.67,45740764.71,2609024.0,599.69,1.67,284.0,10.0,10.0,20.87,20.87,513.15,831.0,831.0,513.15,822.6,0.0,0 +2020-07-11,,16,285.67,45740764.71,2609024.0,599.69,1.67,284.0,10.0,10.0,20.87,20.87,513.15,831.0,831.0,513.15,822.6,0.0,0 +2020-07-11,,17,285.67,45740764.71,2609024.0,599.69,1.67,284.0,10.0,10.0,20.87,20.87,513.15,831.0,831.0,513.15,822.6,0.0,0 +2020-07-11,,18,285.67,45740764.71,2609024.0,599.69,1.67,284.0,10.0,10.0,20.87,20.87,513.15,831.0,831.0,513.15,822.6,0.0,0 +2020-07-11,,19,285.67,45740764.71,2609024.0,599.69,1.67,284.0,10.0,10.0,20.87,20.87,513.15,831.0,831.0,513.15,822.6,0.0,0 +2020-07-11,,20,285.67,45740764.71,2609024.0,599.69,1.67,284.0,10.0,10.0,20.87,20.87,513.15,831.0,831.0,513.15,822.6,0.0,0 +2020-07-11,,21,285.67,45740764.71,2609024.0,599.69,1.67,284.0,10.0,10.0,20.87,20.87,513.15,831.0,831.0,513.15,822.6,0.0,0 +2020-07-11,,22,285.67,45740764.71,2609024.0,599.69,1.67,284.0,10.0,10.0,20.87,20.87,513.15,831.0,831.0,513.15,822.6,0.0,0 +2020-07-11,,23,285.67,45740764.71,2609024.0,599.69,1.67,284.0,10.0,10.0,20.87,20.87,513.15,831.0,831.0,513.15,822.6,0.0,0 +2020-07-11,,24,285.67,45740764.71,2609024.0,599.69,1.67,284.0,10.0,10.0,20.87,20.87,513.15,831.0,831.0,513.15,822.6,0.0,0 +2020-07-11,,25,285.67,45740764.71,2609024.0,599.69,1.67,284.0,10.0,10.0,20.87,20.87,513.15,831.0,831.0,513.15,822.6,0.0,0 +2020-07-11,,26,285.67,45740764.71,2609024.0,599.69,1.67,284.0,10.0,10.0,20.87,20.87,513.15,831.0,831.0,513.15,822.6,0.0,0 +2020-07-11,,27,285.67,45740764.71,2609024.0,599.69,1.67,284.0,10.0,10.0,20.87,20.87,513.15,831.0,831.0,513.15,822.6,0.0,0 +2020-07-11,,28,285.67,45740764.71,2609024.0,599.69,1.67,284.0,10.0,10.0,20.87,20.87,513.15,831.0,831.0,513.15,822.6,0.0,0 +2020-07-11,,29,285.67,45740764.71,2609024.0,599.69,1.67,284.0,10.0,10.0,20.87,20.87,513.15,831.0,831.0,513.15,822.6,0.0,0 +2020-07-11,,30,285.67,45740764.71,2609024.0,599.69,1.67,284.0,10.0,10.0,20.87,20.87,513.15,831.0,831.0,513.15,822.6,0.0,0 +2020-07-11,,31,285.67,45740764.71,2609024.0,599.69,1.67,284.0,10.0,10.0,20.87,20.87,513.15,831.0,831.0,513.15,822.6,0.0,0 +2020-07-11,,32,285.67,45740764.71,2609024.0,599.69,1.67,284.0,10.0,10.0,20.87,20.87,513.15,831.0,831.0,513.15,822.6,0.0,0 +2020-07-11,,33,285.67,45740764.71,2609024.0,599.69,1.67,284.0,10.0,10.0,20.87,20.87,513.15,831.0,831.0,513.15,822.6,0.0,0 +2020-07-11,,34,285.67,45740764.71,2609024.0,599.69,1.67,284.0,10.0,10.0,20.87,20.87,513.15,831.0,831.0,513.15,822.6,0.0,0 +2020-07-11,,35,285.67,45740764.71,2609024.0,599.69,1.67,284.0,10.0,10.0,20.87,20.87,513.15,831.0,831.0,513.15,822.6,0.0,0 +2020-07-11,,36,285.67,45740764.71,2609024.0,599.69,1.67,284.0,10.0,10.0,20.87,20.87,513.15,831.0,831.0,513.15,822.6,0.0,0 +2020-07-11,,37,285.67,45740764.71,2609024.0,599.69,1.67,284.0,10.0,10.0,20.87,20.87,513.15,831.0,831.0,513.15,822.6,0.0,0 +2020-07-11,,38,285.67,45740764.71,2609024.0,599.69,1.67,284.0,10.0,10.0,20.87,20.87,513.15,831.0,831.0,513.15,822.6,0.0,0 +2020-07-11,,39,285.67,45740764.71,2609024.0,599.69,1.67,284.0,10.0,10.0,20.87,20.87,513.15,831.0,831.0,513.15,822.6,0.0,0 +2020-07-11,,40,285.67,45740764.71,2609024.0,599.69,1.67,284.0,10.0,10.0,20.87,20.87,513.15,831.0,831.0,513.15,822.6,0.0,0 +2020-07-11,,41,285.67,45740764.71,2609024.0,599.69,1.67,284.0,10.0,10.0,20.87,20.87,513.15,831.0,831.0,513.15,822.6,0.0,0 +2020-07-11,,42,285.67,45740764.71,2609024.0,599.69,1.67,284.0,10.0,10.0,20.87,20.87,513.15,831.0,831.0,513.15,822.6,0.0,0 +2020-07-11,,43,285.67,45740764.71,2609024.0,599.69,1.67,284.0,10.0,10.0,20.87,20.87,513.15,831.0,831.0,513.15,822.6,0.0,0 +2020-07-11,,44,285.67,45740764.71,2609024.0,599.69,1.67,284.0,10.0,10.0,20.87,20.87,513.15,831.0,831.0,513.15,822.6,0.0,0 +2020-07-11,,45,285.67,45740764.71,2609024.0,599.69,1.67,284.0,10.0,10.0,20.87,20.87,513.15,831.0,831.0,513.15,822.6,0.0,0 +2020-07-11,,46,285.67,45740764.71,2609024.0,599.69,1.67,284.0,10.0,10.0,20.87,20.87,513.15,831.0,831.0,513.15,822.6,0.0,0 +2020-07-11,,47,284.67,45603166.5,2609024.0,597.55,1.67,283.0,10.0,10.0,20.87,20.87,513.15,831.0,831.0,513.15,822.53,0.0,0 diff --git a/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/bidding_plugin_test_multiperiod_rankine/bus_detail.csv b/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/bidding_plugin_test_multiperiod_rankine/bus_detail.csv new file mode 100644 index 000000000..b4fec6509 --- /dev/null +++ b/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/bidding_plugin_test_multiperiod_rankine/bus_detail.csv @@ -0,0 +1,3505 @@ +Date,Hour,Minute,Bus,Demand,Shortfall,Overgeneration,LMP,LMP DA +2020-07-10,0,0,Abel,53.084538,0.0,0.0,19.983547,20.400003 +2020-07-10,0,0,Adams,47.677779,0.0,0.0,19.983547,20.400003 +2020-07-10,0,0,Adler,88.474229,0.0,0.0,19.983547,20.400003 +2020-07-10,0,0,Agricola,36.372739,0.0,0.0,19.983547,20.400003 +2020-07-10,0,0,Aiken,34.898168,0.0,0.0,19.983547,20.400003 +2020-07-10,0,0,Alber,66.847195,0.0,0.0,19.983547,20.400003 +2020-07-10,0,0,Alder,61.440437,0.0,0.0,19.983547,20.400003 +2020-07-10,0,0,Alger,84.050518,0.0,0.0,19.983547,20.400003 +2020-07-10,0,0,Ali,86.016612,0.0,0.0,19.983547,20.400003 +2020-07-10,0,0,Allen,95.847082,0.0,0.0,19.983547,20.400003 +2020-07-10,0,0,Anna,0.0,0.0,0.0,19.983547,20.400003 +2020-07-10,0,0,Archer,0.0,0.0,0.0,19.983547,20.400003 +2020-07-10,0,0,Arne,130.253726,0.0,0.0,19.983547,20.400003 +2020-07-10,0,0,Arnold,95.355558,0.0,0.0,19.983547,20.400003 +2020-07-10,0,0,Arthur,155.812948,0.0,0.0,19.983547,20.400003 +2020-07-10,0,0,Asser,49.15235,0.0,0.0,19.983547,20.400003 +2020-07-10,0,0,Aston,0.0,0.0,0.0,19.983547,20.400003 +2020-07-10,0,0,Astor,163.677324,0.0,0.0,19.983547,20.400003 +2020-07-10,0,0,Attar,88.965753,0.0,0.0,19.983547,20.400003 +2020-07-10,0,0,Attila,62.915007,0.0,0.0,19.983547,20.400003 +2020-07-10,0,0,Attlee,0.0,0.0,0.0,19.983547,20.400003 +2020-07-10,0,0,Aubrey,0.0,0.0,0.0,19.983547,20.400003 +2020-07-10,0,0,Austen,0.0,0.0,0.0,19.983547,20.400003 +2020-07-10,0,0,Avery,0.0,0.0,0.0,19.983547,20.400003 +2020-07-10,0,0,Bach,57.554753,0.0,0.0,19.983547,20.400003 +2020-07-10,0,0,Bacon,51.692694,0.0,0.0,19.983547,20.400003 +2020-07-10,0,0,Baffin,95.924588,0.0,0.0,19.983547,20.400003 +2020-07-10,0,0,Bailey,39.435664,0.0,0.0,19.983547,20.400003 +2020-07-10,0,0,Bain,37.836921,0.0,0.0,19.983547,20.400003 +2020-07-10,0,0,Bajer,72.476355,0.0,0.0,19.983547,20.400003 +2020-07-10,0,0,Baker,66.614297,0.0,0.0,19.983547,20.400003 +2020-07-10,0,0,Balch,91.128358,0.0,0.0,19.983547,20.400003 +2020-07-10,0,0,Balzac,93.260016,0.0,0.0,19.983547,20.400003 +2020-07-10,0,0,Banks,103.918303,0.0,0.0,19.983547,20.400003 +2020-07-10,0,0,Bardeen,0.0,0.0,0.0,19.983547,20.400003 +2020-07-10,0,0,Barkla,0.0,0.0,0.0,19.983547,20.400003 +2020-07-10,0,0,Barlow,141.222309,0.0,0.0,19.983547,20.400003 +2020-07-10,0,0,Barry,103.385389,0.0,0.0,19.983547,20.400003 +2020-07-10,0,0,Barton,168.933857,0.0,0.0,19.983547,20.400003 +2020-07-10,0,0,Basov,53.291438,0.0,0.0,19.983547,20.400003 +2020-07-10,0,0,Bates,0.0,0.0,0.0,19.983547,20.400003 +2020-07-10,0,0,Bayle,177.460487,0.0,0.0,19.983547,20.400003 +2020-07-10,0,0,Bede,96.457502,0.0,0.0,19.983547,20.400003 +2020-07-10,0,0,Beethoven,68.21304,0.0,0.0,19.983547,20.400003 +2020-07-10,0,0,Behring,0.0,0.0,0.0,19.983547,20.400003 +2020-07-10,0,0,Bell,0.0,0.0,0.0,19.983547,20.400003 +2020-07-10,0,0,Bloch,0.0,0.0,0.0,19.983547,20.400003 +2020-07-10,0,0,Bordet,0.0,0.0,0.0,19.983547,20.400003 +2020-07-10,0,0,Cabell,43.994967,0.0,0.0,19.983547,20.400003 +2020-07-10,0,0,Cabot,39.513998,0.0,0.0,19.983547,20.400003 +2020-07-10,0,0,Caesar,73.324945,0.0,0.0,19.983547,20.400003 +2020-07-10,0,0,Caine,30.1447,0.0,0.0,19.983547,20.400003 +2020-07-10,0,0,Calvin,28.922617,0.0,0.0,19.983547,20.400003 +2020-07-10,0,0,Camus,55.40107,0.0,0.0,19.983547,20.400003 +2020-07-10,0,0,Carew,50.920101,0.0,0.0,19.983547,20.400003 +2020-07-10,0,0,Carrel,69.658698,0.0,0.0,19.983547,20.400003 +2020-07-10,0,0,Carter,71.288141,0.0,0.0,19.983547,20.400003 +2020-07-10,0,0,Caruso,79.435357,0.0,0.0,19.983547,20.400003 +2020-07-10,0,0,Cary,0.0,0.0,0.0,19.983547,20.400003 +2020-07-10,0,0,Caxton,0.0,0.0,0.0,19.983547,20.400003 +2020-07-10,0,0,Cecil,107.950613,0.0,0.0,19.983547,20.400003 +2020-07-10,0,0,Chain,79.027996,0.0,0.0,19.983547,20.400003 +2020-07-10,0,0,Chase,129.133375,0.0,0.0,19.983547,20.400003 +2020-07-10,0,0,Chifa,40.736081,0.0,0.0,19.983547,20.400003 +2020-07-10,0,0,Chuhsi,0.0,0.0,0.0,19.983547,20.400003 +2020-07-10,0,0,Clark,135.651148,0.0,0.0,19.983547,20.400003 +2020-07-10,0,0,Clay,73.732306,0.0,0.0,19.983547,20.400003 +2020-07-10,0,0,Clive,52.142183,0.0,0.0,19.983547,20.400003 +2020-07-10,0,0,Cobb,0.0,0.0,0.0,19.983547,20.400003 +2020-07-10,0,0,Cole,0.0,0.0,0.0,19.983547,20.400003 +2020-07-10,0,0,Comte,0.0,0.0,0.0,19.983547,20.400003 +2020-07-10,0,0,Curie,0.0,0.0,0.0,19.983547,20.400003 +2020-07-10,0,0,Curtiss,0.0,0.0,0.0,19.983547,20.400003 +2020-07-10,1,0,Abel,51.044715,0.0,0.0,0.0,0.0 +2020-07-10,1,0,Adams,45.845716,0.0,0.0,0.0,0.0 +2020-07-10,1,0,Adler,85.074525,0.0,0.0,0.0,0.0 +2020-07-10,1,0,Agricola,34.975082,0.0,0.0,0.0,0.0 +2020-07-10,1,0,Aiken,33.557174,0.0,0.0,0.0,0.0 +2020-07-10,1,0,Alber,64.27853,0.0,0.0,0.0,0.0 +2020-07-10,1,0,Alder,59.079531,0.0,0.0,0.0,0.0 +2020-07-10,1,0,Alger,80.820799,0.0,0.0,0.0,0.0 +2020-07-10,1,0,Ali,82.711344,0.0,0.0,0.0,0.0 +2020-07-10,1,0,Allen,92.164069,0.0,0.0,0.0,0.0 +2020-07-10,1,0,Anna,0.0,0.0,0.0,0.0,0.0 +2020-07-10,1,0,Archer,0.0,0.0,0.0,0.0,0.0 +2020-07-10,1,0,Arne,125.248606,0.0,0.0,0.0,0.0 +2020-07-10,1,0,Arnold,91.691432,0.0,0.0,0.0,0.0 +2020-07-10,1,0,Arthur,149.825691,0.0,0.0,0.0,0.0 +2020-07-10,1,0,Asser,47.263625,0.0,0.0,0.0,0.0 +2020-07-10,1,0,Aston,0.0,0.0,0.0,0.0,0.0 +2020-07-10,1,0,Astor,157.387871,0.0,0.0,0.0,0.0 +2020-07-10,1,0,Attar,85.547161,0.0,0.0,0.0,0.0 +2020-07-10,1,0,Attila,60.49744,0.0,0.0,0.0,0.0 +2020-07-10,1,0,Attlee,0.0,0.0,0.0,0.0,0.0 +2020-07-10,1,0,Aubrey,0.0,0.0,0.0,0.0,0.0 +2020-07-10,1,0,Austen,0.0,0.0,0.0,0.0,0.0 +2020-07-10,1,0,Avery,0.0,0.0,0.0,0.0,0.0 +2020-07-10,1,0,Bach,54.517518,0.0,0.0,0.0,0.0 +2020-07-10,1,0,Bacon,48.964808,0.0,0.0,0.0,0.0 +2020-07-10,1,0,Baffin,90.862529,0.0,0.0,0.0,0.0 +2020-07-10,1,0,Bailey,37.354595,0.0,0.0,0.0,0.0 +2020-07-10,1,0,Bain,35.84022,0.0,0.0,0.0,0.0 +2020-07-10,1,0,Bajer,68.651689,0.0,0.0,0.0,0.0 +2020-07-10,1,0,Baker,63.098979,0.0,0.0,0.0,0.0 +2020-07-10,1,0,Balch,86.319403,0.0,0.0,0.0,0.0 +2020-07-10,1,0,Balzac,88.33857,0.0,0.0,0.0,0.0 +2020-07-10,1,0,Banks,98.434407,0.0,0.0,0.0,0.0 +2020-07-10,1,0,Bardeen,0.0,0.0,0.0,0.0,0.0 +2020-07-10,1,0,Barkla,0.0,0.0,0.0,0.0,0.0 +2020-07-10,1,0,Barlow,133.769835,0.0,0.0,0.0,0.0 +2020-07-10,1,0,Barry,97.929615,0.0,0.0,0.0,0.0 +2020-07-10,1,0,Barton,160.01901,0.0,0.0,0.0,0.0 +2020-07-10,1,0,Basov,50.479183,0.0,0.0,0.0,0.0 +2020-07-10,1,0,Bates,0.0,0.0,0.0,0.0,0.0 +2020-07-10,1,0,Bayle,168.095679,0.0,0.0,0.0,0.0 +2020-07-10,1,0,Bede,91.367321,0.0,0.0,0.0,0.0 +2020-07-10,1,0,Beethoven,64.613354,0.0,0.0,0.0,0.0 +2020-07-10,1,0,Behring,0.0,0.0,0.0,0.0,0.0 +2020-07-10,1,0,Bell,0.0,0.0,0.0,0.0,0.0 +2020-07-10,1,0,Bloch,0.0,0.0,0.0,0.0,0.0 +2020-07-10,1,0,Bordet,0.0,0.0,0.0,0.0,0.0 +2020-07-10,1,0,Cabell,41.548915,0.0,0.0,0.0,0.0 +2020-07-10,1,0,Cabot,37.317081,0.0,0.0,0.0,0.0 +2020-07-10,1,0,Caesar,69.248191,0.0,0.0,0.0,0.0 +2020-07-10,1,0,Caine,28.468701,0.0,0.0,0.0,0.0 +2020-07-10,1,0,Calvin,27.314564,0.0,0.0,0.0,0.0 +2020-07-10,1,0,Camus,52.320856,0.0,0.0,0.0,0.0 +2020-07-10,1,0,Carew,48.089022,0.0,0.0,0.0,0.0 +2020-07-10,1,0,Carrel,65.785782,0.0,0.0,0.0,0.0 +2020-07-10,1,0,Carter,67.32463,0.0,0.0,0.0,0.0 +2020-07-10,1,0,Caruso,75.018874,0.0,0.0,0.0,0.0 +2020-07-10,1,0,Cary,0.0,0.0,0.0,0.0,0.0 +2020-07-10,1,0,Caxton,0.0,0.0,0.0,0.0,0.0 +2020-07-10,1,0,Cecil,101.948726,0.0,0.0,0.0,0.0 +2020-07-10,1,0,Chain,74.634162,0.0,0.0,0.0,0.0 +2020-07-10,1,0,Chase,121.953759,0.0,0.0,0.0,0.0 +2020-07-10,1,0,Chifa,38.471217,0.0,0.0,0.0,0.0 +2020-07-10,1,0,Chuhsi,0.0,0.0,0.0,0.0,0.0 +2020-07-10,1,0,Clark,128.109154,0.0,0.0,0.0,0.0 +2020-07-10,1,0,Clay,69.632903,0.0,0.0,0.0,0.0 +2020-07-10,1,0,Clive,49.243158,0.0,0.0,0.0,0.0 +2020-07-10,1,0,Cobb,0.0,0.0,0.0,0.0,0.0 +2020-07-10,1,0,Cole,0.0,0.0,0.0,0.0,0.0 +2020-07-10,1,0,Comte,0.0,0.0,0.0,0.0,0.0 +2020-07-10,1,0,Curie,0.0,0.0,0.0,0.0,0.0 +2020-07-10,1,0,Curtiss,0.0,0.0,0.0,0.0,0.0 +2020-07-10,2,0,Abel,49.054045,0.0,0.0,18.463561,0.0 +2020-07-10,2,0,Adams,44.0578,0.0,0.0,18.463561,0.0 +2020-07-10,2,0,Adler,81.756741,0.0,0.0,18.463561,0.0 +2020-07-10,2,0,Agricola,33.611105,0.0,0.0,18.463561,0.0 +2020-07-10,2,0,Aiken,32.248492,0.0,0.0,18.463561,0.0 +2020-07-10,2,0,Alber,61.77176,0.0,0.0,18.463561,0.0 +2020-07-10,2,0,Alder,56.775515,0.0,0.0,18.463561,0.0 +2020-07-10,2,0,Alger,77.668904,0.0,0.0,18.463561,0.0 +2020-07-10,2,0,Ali,79.485721,0.0,0.0,18.463561,0.0 +2020-07-10,2,0,Allen,88.569803,0.0,0.0,18.463561,0.0 +2020-07-10,2,0,Anna,0.0,0.0,0.0,18.463561,0.0 +2020-07-10,2,0,Archer,0.0,0.0,0.0,18.463561,0.0 +2020-07-10,2,0,Arne,120.364092,0.0,0.0,18.463561,0.0 +2020-07-10,2,0,Arnold,88.115599,0.0,0.0,18.463561,0.0 +2020-07-10,2,0,Arthur,143.982706,0.0,0.0,18.463561,0.0 +2020-07-10,2,0,Asser,45.420412,0.0,0.0,18.463561,0.0 +2020-07-10,2,0,Aston,0.0,0.0,0.0,18.463561,0.0 +2020-07-10,2,0,Astor,151.249972,0.0,0.0,18.463561,0.0 +2020-07-10,2,0,Attar,82.210946,0.0,0.0,18.463561,0.0 +2020-07-10,2,0,Attila,58.138127,0.0,0.0,18.463561,0.0 +2020-07-10,2,0,Attlee,0.0,0.0,0.0,18.463561,0.0 +2020-07-10,2,0,Aubrey,0.0,0.0,0.0,18.463561,0.0 +2020-07-10,2,0,Austen,0.0,0.0,0.0,18.463561,0.0 +2020-07-10,2,0,Avery,0.0,0.0,0.0,18.463561,0.0 +2020-07-10,2,0,Bach,51.836606,0.0,0.0,18.463561,0.0 +2020-07-10,2,0,Bacon,46.556952,0.0,0.0,18.463561,0.0 +2020-07-10,2,0,Baffin,86.394344,0.0,0.0,18.463561,0.0 +2020-07-10,2,0,Bailey,35.517675,0.0,0.0,18.463561,0.0 +2020-07-10,2,0,Bain,34.077769,0.0,0.0,18.463561,0.0 +2020-07-10,2,0,Bajer,65.275727,0.0,0.0,18.463561,0.0 +2020-07-10,2,0,Baker,59.996072,0.0,0.0,18.463561,0.0 +2020-07-10,2,0,Balch,82.074627,0.0,0.0,18.463561,0.0 +2020-07-10,2,0,Balzac,83.994501,0.0,0.0,18.463561,0.0 +2020-07-10,2,0,Banks,93.593873,0.0,0.0,18.463561,0.0 +2020-07-10,2,0,Bardeen,0.0,0.0,0.0,18.463561,0.0 +2020-07-10,2,0,Barkla,0.0,0.0,0.0,18.463561,0.0 +2020-07-10,2,0,Barlow,127.191673,0.0,0.0,18.463561,0.0 +2020-07-10,2,0,Barry,93.113904,0.0,0.0,18.463561,0.0 +2020-07-10,2,0,Barton,152.150039,0.0,0.0,18.463561,0.0 +2020-07-10,2,0,Basov,47.996858,0.0,0.0,18.463561,0.0 +2020-07-10,2,0,Bates,0.0,0.0,0.0,18.463561,0.0 +2020-07-10,2,0,Bayle,159.829537,0.0,0.0,18.463561,0.0 +2020-07-10,2,0,Bede,86.874313,0.0,0.0,18.463561,0.0 +2020-07-10,2,0,Beethoven,61.435978,0.0,0.0,18.463561,0.0 +2020-07-10,2,0,Behring,0.0,0.0,0.0,18.463561,0.0 +2020-07-10,2,0,Bell,0.0,0.0,0.0,18.463561,0.0 +2020-07-10,2,0,Bloch,0.0,0.0,0.0,18.463561,0.0 +2020-07-10,2,0,Bordet,0.0,0.0,0.0,18.463561,0.0 +2020-07-10,2,0,Cabell,39.64643,0.0,0.0,18.463561,0.0 +2020-07-10,2,0,Cabot,35.608367,0.0,0.0,18.463561,0.0 +2020-07-10,2,0,Caesar,66.077383,0.0,0.0,18.463561,0.0 +2020-07-10,2,0,Caine,27.165146,0.0,0.0,18.463561,0.0 +2020-07-10,2,0,Calvin,26.063857,0.0,0.0,18.463561,0.0 +2020-07-10,2,0,Camus,49.925134,0.0,0.0,18.463561,0.0 +2020-07-10,2,0,Carew,45.887071,0.0,0.0,18.463561,0.0 +2020-07-10,2,0,Carrel,62.773514,0.0,0.0,18.463561,0.0 +2020-07-10,2,0,Carter,64.2419,0.0,0.0,18.463561,0.0 +2020-07-10,2,0,Caruso,71.583831,0.0,0.0,18.463561,0.0 +2020-07-10,2,0,Cary,0.0,0.0,0.0,18.463561,0.0 +2020-07-10,2,0,Caxton,0.0,0.0,0.0,18.463561,0.0 +2020-07-10,2,0,Cecil,97.280591,0.0,0.0,18.463561,0.0 +2020-07-10,2,0,Chain,71.216735,0.0,0.0,18.463561,0.0 +2020-07-10,2,0,Chase,116.369613,0.0,0.0,18.463561,0.0 +2020-07-10,2,0,Chifa,36.709657,0.0,0.0,18.463561,0.0 +2020-07-10,2,0,Chuhsi,0.0,0.0,0.0,18.463561,0.0 +2020-07-10,2,0,Clark,122.243158,0.0,0.0,18.463561,0.0 +2020-07-10,2,0,Clay,66.444479,0.0,0.0,18.463561,0.0 +2020-07-10,2,0,Clive,46.988361,0.0,0.0,18.463561,0.0 +2020-07-10,2,0,Cobb,0.0,0.0,0.0,18.463561,0.0 +2020-07-10,2,0,Cole,0.0,0.0,0.0,18.463561,0.0 +2020-07-10,2,0,Comte,0.0,0.0,0.0,18.463561,0.0 +2020-07-10,2,0,Curie,0.0,0.0,0.0,18.463561,0.0 +2020-07-10,2,0,Curtiss,0.0,0.0,0.0,18.463561,0.0 +2020-07-10,3,0,Abel,47.739219,0.0,0.0,21.843654,19.430296 +2020-07-10,3,0,Adams,42.876892,0.0,0.0,21.843654,19.430296 +2020-07-10,3,0,Adler,79.565366,0.0,0.0,21.843654,19.430296 +2020-07-10,3,0,Agricola,32.710206,0.0,0.0,21.843654,19.430296 +2020-07-10,3,0,Aiken,31.384116,0.0,0.0,21.843654,19.430296 +2020-07-10,3,0,Alber,60.116054,0.0,0.0,21.843654,19.430296 +2020-07-10,3,0,Alder,55.253726,0.0,0.0,21.843654,19.430296 +2020-07-10,3,0,Alger,75.587097,0.0,0.0,21.843654,19.430296 +2020-07-10,3,0,Ali,77.355217,0.0,0.0,21.843654,19.430296 +2020-07-10,3,0,Allen,86.195813,0.0,0.0,21.843654,19.430296 +2020-07-10,3,0,Anna,0.0,0.0,0.0,21.843654,19.430296 +2020-07-10,3,0,Archer,0.0,0.0,0.0,21.843654,19.430296 +2020-07-10,3,0,Arne,117.1379,0.0,0.0,21.843654,19.430296 +2020-07-10,3,0,Arnold,85.753783,0.0,0.0,21.843654,19.430296 +2020-07-10,3,0,Arthur,140.12345,0.0,0.0,21.843654,19.430296 +2020-07-10,3,0,Asser,44.202981,0.0,0.0,21.843654,19.430296 +2020-07-10,3,0,Aston,0.0,0.0,0.0,21.843654,19.430296 +2020-07-10,3,0,Astor,147.195927,0.0,0.0,21.843654,19.430296 +2020-07-10,3,0,Attar,80.007396,0.0,0.0,21.843654,19.430296 +2020-07-10,3,0,Attila,56.579816,0.0,0.0,21.843654,19.430296 +2020-07-10,3,0,Attlee,0.0,0.0,0.0,21.843654,19.430296 +2020-07-10,3,0,Aubrey,0.0,0.0,0.0,21.843654,19.430296 +2020-07-10,3,0,Austen,0.0,0.0,0.0,21.843654,19.430296 +2020-07-10,3,0,Avery,0.0,0.0,0.0,21.843654,19.430296 +2020-07-10,3,0,Bach,50.750668,0.0,0.0,21.843654,19.430296 +2020-07-10,3,0,Bacon,45.581618,0.0,0.0,21.843654,19.430296 +2020-07-10,3,0,Baffin,84.584446,0.0,0.0,21.843654,19.430296 +2020-07-10,3,0,Bailey,34.773606,0.0,0.0,21.843654,19.430296 +2020-07-10,3,0,Bain,33.363865,0.0,0.0,21.843654,19.430296 +2020-07-10,3,0,Bajer,63.908248,0.0,0.0,21.843654,19.430296 +2020-07-10,3,0,Baker,58.739199,0.0,0.0,21.843654,19.430296 +2020-07-10,3,0,Balch,80.355224,0.0,0.0,21.843654,19.430296 +2020-07-10,3,0,Balzac,82.234878,0.0,0.0,21.843654,19.430296 +2020-07-10,3,0,Banks,91.63315,0.0,0.0,21.843654,19.430296 +2020-07-10,3,0,Bardeen,0.0,0.0,0.0,21.843654,19.430296 +2020-07-10,3,0,Barkla,0.0,0.0,0.0,21.843654,19.430296 +2020-07-10,3,0,Barlow,124.527101,0.0,0.0,21.843654,19.430296 +2020-07-10,3,0,Barry,91.163236,0.0,0.0,21.843654,19.430296 +2020-07-10,3,0,Barton,148.962608,0.0,0.0,21.843654,19.430296 +2020-07-10,3,0,Basov,46.991359,0.0,0.0,21.843654,19.430296 +2020-07-10,3,0,Bates,0.0,0.0,0.0,21.843654,19.430296 +2020-07-10,3,0,Bayle,156.481225,0.0,0.0,21.843654,19.430296 +2020-07-10,3,0,Bede,85.05436,0.0,0.0,21.843654,19.430296 +2020-07-10,3,0,Beethoven,60.148939,0.0,0.0,21.843654,19.430296 +2020-07-10,3,0,Behring,0.0,0.0,0.0,21.843654,19.430296 +2020-07-10,3,0,Bell,0.0,0.0,0.0,21.843654,19.430296 +2020-07-10,3,0,Bloch,0.0,0.0,0.0,21.843654,19.430296 +2020-07-10,3,0,Bordet,0.0,0.0,0.0,21.843654,19.430296 +2020-07-10,3,0,Cabell,38.916011,0.0,0.0,21.843654,19.430296 +2020-07-10,3,0,Cabot,34.952344,0.0,0.0,21.843654,19.430296 +2020-07-10,3,0,Caesar,64.860019,0.0,0.0,21.843654,19.430296 +2020-07-10,3,0,Caine,26.664674,0.0,0.0,21.843654,19.430296 +2020-07-10,3,0,Calvin,25.583674,0.0,0.0,21.843654,19.430296 +2020-07-10,3,0,Camus,49.005348,0.0,0.0,21.843654,19.430296 +2020-07-10,3,0,Carew,45.04168,0.0,0.0,21.843654,19.430296 +2020-07-10,3,0,Carrel,61.617018,0.0,0.0,21.843654,19.430296 +2020-07-10,3,0,Carter,63.058352,0.0,0.0,21.843654,19.430296 +2020-07-10,3,0,Caruso,70.26502,0.0,0.0,21.843654,19.430296 +2020-07-10,3,0,Cary,0.0,0.0,0.0,21.843654,19.430296 +2020-07-10,3,0,Caxton,0.0,0.0,0.0,21.843654,19.430296 +2020-07-10,3,0,Cecil,95.488361,0.0,0.0,21.843654,19.430296 +2020-07-10,3,0,Chain,69.904687,0.0,0.0,21.843654,19.430296 +2020-07-10,3,0,Chase,114.2257,0.0,0.0,21.843654,19.430296 +2020-07-10,3,0,Chifa,36.033344,0.0,0.0,21.843654,19.430296 +2020-07-10,3,0,Chuhsi,0.0,0.0,0.0,21.843654,19.430296 +2020-07-10,3,0,Clark,119.991035,0.0,0.0,21.843654,19.430296 +2020-07-10,3,0,Clay,65.220352,0.0,0.0,21.843654,19.430296 +2020-07-10,3,0,Clive,46.12268,0.0,0.0,21.843654,19.430296 +2020-07-10,3,0,Cobb,0.0,0.0,0.0,21.843654,19.430296 +2020-07-10,3,0,Cole,0.0,0.0,0.0,21.843654,19.430296 +2020-07-10,3,0,Comte,0.0,0.0,0.0,21.843654,19.430296 +2020-07-10,3,0,Curie,0.0,0.0,0.0,21.843654,19.430296 +2020-07-10,3,0,Curtiss,0.0,0.0,0.0,21.843654,19.430296 +2020-07-10,4,0,Abel,48.488793,0.0,0.0,18.463561,19.034775 +2020-07-10,4,0,Adams,43.550119,0.0,0.0,18.463561,19.034775 +2020-07-10,4,0,Adler,80.814655,0.0,0.0,18.463561,19.034775 +2020-07-10,4,0,Agricola,33.223802,0.0,0.0,18.463561,19.034775 +2020-07-10,4,0,Aiken,31.876892,0.0,0.0,18.463561,19.034775 +2020-07-10,4,0,Alber,61.059961,0.0,0.0,18.463561,19.034775 +2020-07-10,4,0,Alder,56.121288,0.0,0.0,18.463561,19.034775 +2020-07-10,4,0,Alger,76.773922,0.0,0.0,18.463561,19.034775 +2020-07-10,4,0,Ali,78.569803,0.0,0.0,18.463561,19.034775 +2020-07-10,4,0,Allen,87.549209,0.0,0.0,18.463561,19.034775 +2020-07-10,4,0,Anna,0.0,0.0,0.0,18.463561,19.034775 +2020-07-10,4,0,Archer,0.0,0.0,0.0,18.463561,19.034775 +2020-07-10,4,0,Arne,118.977131,0.0,0.0,18.463561,19.034775 +2020-07-10,4,0,Arnold,87.100239,0.0,0.0,18.463561,19.034775 +2020-07-10,4,0,Arthur,142.323586,0.0,0.0,18.463561,19.034775 +2020-07-10,4,0,Asser,44.89703,0.0,0.0,18.463561,19.034775 +2020-07-10,4,0,Aston,0.0,0.0,0.0,18.463561,19.034775 +2020-07-10,4,0,Astor,149.507111,0.0,0.0,18.463561,19.034775 +2020-07-10,4,0,Attar,81.263625,0.0,0.0,18.463561,19.034775 +2020-07-10,4,0,Attila,57.468199,0.0,0.0,18.463561,19.034775 +2020-07-10,4,0,Attlee,0.0,0.0,0.0,18.463561,19.034775 +2020-07-10,4,0,Aubrey,0.0,0.0,0.0,18.463561,19.034775 +2020-07-10,4,0,Austen,0.0,0.0,0.0,18.463561,19.034775 +2020-07-10,4,0,Avery,0.0,0.0,0.0,18.463561,19.034775 +2020-07-10,4,0,Bach,49.834407,0.0,0.0,18.463561,19.034775 +2020-07-10,4,0,Bacon,44.75868,0.0,0.0,18.463561,19.034775 +2020-07-10,4,0,Baffin,83.057345,0.0,0.0,18.463561,19.034775 +2020-07-10,4,0,Bailey,34.145797,0.0,0.0,18.463561,19.034775 +2020-07-10,4,0,Bain,32.761508,0.0,0.0,18.463561,19.034775 +2020-07-10,4,0,Bajer,62.754438,0.0,0.0,18.463561,19.034775 +2020-07-10,4,0,Baker,57.678712,0.0,0.0,18.463561,19.034775 +2020-07-10,4,0,Balch,78.904478,0.0,0.0,18.463561,19.034775 +2020-07-10,4,0,Balzac,80.750196,0.0,0.0,18.463561,19.034775 +2020-07-10,4,0,Banks,89.97879,0.0,0.0,18.463561,19.034775 +2020-07-10,4,0,Bardeen,0.0,0.0,0.0,18.463561,19.034775 +2020-07-10,4,0,Barkla,0.0,0.0,0.0,18.463561,19.034775 +2020-07-10,4,0,Barlow,122.278869,0.0,0.0,18.463561,19.034775 +2020-07-10,4,0,Barry,89.517361,0.0,0.0,18.463561,19.034775 +2020-07-10,4,0,Barton,146.273213,0.0,0.0,18.463561,19.034775 +2020-07-10,4,0,Basov,46.142969,0.0,0.0,18.463561,19.034775 +2020-07-10,4,0,Bates,0.0,0.0,0.0,18.463561,19.034775 +2020-07-10,4,0,Bayle,153.656088,0.0,0.0,18.463561,19.034775 +2020-07-10,4,0,Bede,83.518775,0.0,0.0,18.463561,19.034775 +2020-07-10,4,0,Beethoven,59.063001,0.0,0.0,18.463561,19.034775 +2020-07-10,4,0,Behring,0.0,0.0,0.0,18.463561,19.034775 +2020-07-10,4,0,Bell,0.0,0.0,0.0,18.463561,19.034775 +2020-07-10,4,0,Bloch,0.0,0.0,0.0,18.463561,19.034775 +2020-07-10,4,0,Bordet,0.0,0.0,0.0,18.463561,19.034775 +2020-07-10,4,0,Cabell,39.629443,0.0,0.0,18.463561,19.034775 +2020-07-10,4,0,Cabot,35.593111,0.0,0.0,18.463561,19.034775 +2020-07-10,4,0,Caesar,66.049072,0.0,0.0,18.463561,19.034775 +2020-07-10,4,0,Caine,27.153507,0.0,0.0,18.463561,19.034775 +2020-07-10,4,0,Calvin,26.05269,0.0,0.0,18.463561,19.034775 +2020-07-10,4,0,Camus,49.903743,0.0,0.0,18.463561,19.034775 +2020-07-10,4,0,Carew,45.867411,0.0,0.0,18.463561,19.034775 +2020-07-10,4,0,Carrel,62.746618,0.0,0.0,18.463561,19.034775 +2020-07-10,4,0,Carter,64.214376,0.0,0.0,18.463561,19.034775 +2020-07-10,4,0,Caruso,71.553161,0.0,0.0,18.463561,19.034775 +2020-07-10,4,0,Cary,0.0,0.0,0.0,18.463561,19.034775 +2020-07-10,4,0,Caxton,0.0,0.0,0.0,18.463561,19.034775 +2020-07-10,4,0,Cecil,97.238912,0.0,0.0,18.463561,19.034775 +2020-07-10,4,0,Chain,71.186222,0.0,0.0,18.463561,19.034775 +2020-07-10,4,0,Chase,116.319755,0.0,0.0,18.463561,19.034775 +2020-07-10,4,0,Chifa,36.693929,0.0,0.0,18.463561,19.034775 +2020-07-10,4,0,Chuhsi,0.0,0.0,0.0,18.463561,19.034775 +2020-07-10,4,0,Clark,122.190783,0.0,0.0,18.463561,19.034775 +2020-07-10,4,0,Clay,66.416011,0.0,0.0,18.463561,19.034775 +2020-07-10,4,0,Clive,46.968229,0.0,0.0,18.463561,19.034775 +2020-07-10,4,0,Cobb,0.0,0.0,0.0,18.463561,19.034775 +2020-07-10,4,0,Cole,0.0,0.0,0.0,18.463561,19.034775 +2020-07-10,4,0,Comte,0.0,0.0,0.0,18.463561,19.034775 +2020-07-10,4,0,Curie,0.0,0.0,0.0,18.463561,19.034775 +2020-07-10,4,0,Curtiss,0.0,0.0,0.0,18.463561,19.034775 +2020-07-10,5,0,Abel,49.570144,0.0,0.0,0.0,0.0 +2020-07-10,5,0,Adams,44.521333,0.0,0.0,0.0,0.0 +2020-07-10,5,0,Adler,82.616907,0.0,0.0,0.0,0.0 +2020-07-10,5,0,Agricola,33.964729,0.0,0.0,0.0,0.0 +2020-07-10,5,0,Aiken,32.58778,0.0,0.0,0.0,0.0 +2020-07-10,5,0,Alber,62.421663,0.0,0.0,0.0,0.0 +2020-07-10,5,0,Alder,57.372852,0.0,0.0,0.0,0.0 +2020-07-10,5,0,Alger,78.486062,0.0,0.0,0.0,0.0 +2020-07-10,5,0,Ali,80.321993,0.0,0.0,0.0,0.0 +2020-07-10,5,0,Allen,89.50165,0.0,0.0,0.0,0.0 +2020-07-10,5,0,Anna,0.0,0.0,0.0,0.0,0.0 +2020-07-10,5,0,Archer,0.0,0.0,0.0,0.0,0.0 +2020-07-10,5,0,Arne,121.630447,0.0,0.0,0.0,0.0 +2020-07-10,5,0,Arnold,89.042667,0.0,0.0,0.0,0.0 +2020-07-10,5,0,Arthur,145.497554,0.0,0.0,0.0,0.0 +2020-07-10,5,0,Asser,45.898282,0.0,0.0,0.0,0.0 +2020-07-10,5,0,Aston,0.0,0.0,0.0,0.0,0.0 +2020-07-10,5,0,Astor,152.841279,0.0,0.0,0.0,0.0 +2020-07-10,5,0,Attar,83.07589,0.0,0.0,0.0,0.0 +2020-07-10,5,0,Attila,58.749801,0.0,0.0,0.0,0.0 +2020-07-10,5,0,Attlee,0.0,0.0,0.0,0.0,0.0 +2020-07-10,5,0,Aubrey,0.0,0.0,0.0,0.0,0.0 +2020-07-10,5,0,Austen,0.0,0.0,0.0,0.0,0.0 +2020-07-10,5,0,Avery,0.0,0.0,0.0,0.0,0.0 +2020-07-10,5,0,Bach,49.715632,0.0,0.0,0.0,0.0 +2020-07-10,5,0,Bacon,44.652003,0.0,0.0,0.0,0.0 +2020-07-10,5,0,Baffin,82.859387,0.0,0.0,0.0,0.0 +2020-07-10,5,0,Bailey,34.064415,0.0,0.0,0.0,0.0 +2020-07-10,5,0,Bain,32.683425,0.0,0.0,0.0,0.0 +2020-07-10,5,0,Bajer,62.60487,0.0,0.0,0.0,0.0 +2020-07-10,5,0,Baker,57.541241,0.0,0.0,0.0,0.0 +2020-07-10,5,0,Balch,78.716418,0.0,0.0,0.0,0.0 +2020-07-10,5,0,Balzac,80.557738,0.0,0.0,0.0,0.0 +2020-07-10,5,0,Banks,89.764336,0.0,0.0,0.0,0.0 +2020-07-10,5,0,Bardeen,0.0,0.0,0.0,0.0,0.0 +2020-07-10,5,0,Barkla,0.0,0.0,0.0,0.0,0.0 +2020-07-10,5,0,Barlow,121.987431,0.0,0.0,0.0,0.0 +2020-07-10,5,0,Barry,89.304006,0.0,0.0,0.0,0.0 +2020-07-10,5,0,Barton,145.924588,0.0,0.0,0.0,0.0 +2020-07-10,5,0,Basov,46.032993,0.0,0.0,0.0,0.0 +2020-07-10,5,0,Bates,0.0,0.0,0.0,0.0,0.0 +2020-07-10,5,0,Bayle,153.289867,0.0,0.0,0.0,0.0 +2020-07-10,5,0,Bede,83.319717,0.0,0.0,0.0,0.0 +2020-07-10,5,0,Beethoven,58.922231,0.0,0.0,0.0,0.0 +2020-07-10,5,0,Behring,0.0,0.0,0.0,0.0,0.0 +2020-07-10,5,0,Bell,0.0,0.0,0.0,0.0,0.0 +2020-07-10,5,0,Bloch,0.0,0.0,0.0,0.0,0.0 +2020-07-10,5,0,Bordet,0.0,0.0,0.0,0.0,0.0 +2020-07-10,5,0,Cabell,41.463982,0.0,0.0,0.0,0.0 +2020-07-10,5,0,Cabot,37.240799,0.0,0.0,0.0,0.0 +2020-07-10,5,0,Caesar,69.106637,0.0,0.0,0.0,0.0 +2020-07-10,5,0,Caine,28.410506,0.0,0.0,0.0,0.0 +2020-07-10,5,0,Calvin,27.258729,0.0,0.0,0.0,0.0 +2020-07-10,5,0,Camus,52.213904,0.0,0.0,0.0,0.0 +2020-07-10,5,0,Carew,47.99072,0.0,0.0,0.0,0.0 +2020-07-10,5,0,Carrel,65.651305,0.0,0.0,0.0,0.0 +2020-07-10,5,0,Carter,67.187008,0.0,0.0,0.0,0.0 +2020-07-10,5,0,Caruso,74.865524,0.0,0.0,0.0,0.0 +2020-07-10,5,0,Cary,0.0,0.0,0.0,0.0,0.0 +2020-07-10,5,0,Caxton,0.0,0.0,0.0,0.0,0.0 +2020-07-10,5,0,Cecil,101.740327,0.0,0.0,0.0,0.0 +2020-07-10,5,0,Chain,74.481598,0.0,0.0,0.0,0.0 +2020-07-10,5,0,Chase,121.704467,0.0,0.0,0.0,0.0 +2020-07-10,5,0,Chifa,38.392576,0.0,0.0,0.0,0.0 +2020-07-10,5,0,Chuhsi,0.0,0.0,0.0,0.0,0.0 +2020-07-10,5,0,Clark,127.847279,0.0,0.0,0.0,0.0 +2020-07-10,5,0,Clay,69.490563,0.0,0.0,0.0,0.0 +2020-07-10,5,0,Clive,49.142498,0.0,0.0,0.0,0.0 +2020-07-10,5,0,Cobb,0.0,0.0,0.0,0.0,0.0 +2020-07-10,5,0,Cole,0.0,0.0,0.0,0.0,0.0 +2020-07-10,5,0,Comte,0.0,0.0,0.0,0.0,0.0 +2020-07-10,5,0,Curie,0.0,0.0,0.0,0.0,0.0 +2020-07-10,5,0,Curtiss,0.0,0.0,0.0,0.0,0.0 +2020-07-10,6,0,Abel,50.897258,0.0,0.0,0.0,0.0 +2020-07-10,6,0,Adams,45.713278,0.0,0.0,0.0,0.0 +2020-07-10,6,0,Adler,84.828763,0.0,0.0,0.0,0.0 +2020-07-10,6,0,Agricola,34.874047,0.0,0.0,0.0,0.0 +2020-07-10,6,0,Aiken,33.460234,0.0,0.0,0.0,0.0 +2020-07-10,6,0,Alber,64.092843,0.0,0.0,0.0,0.0 +2020-07-10,6,0,Alder,58.908863,0.0,0.0,0.0,0.0 +2020-07-10,6,0,Alger,80.587325,0.0,0.0,0.0,0.0 +2020-07-10,6,0,Ali,82.472409,0.0,0.0,0.0,0.0 +2020-07-10,6,0,Allen,91.897827,0.0,0.0,0.0,0.0 +2020-07-10,6,0,Anna,0.0,0.0,0.0,0.0,0.0 +2020-07-10,6,0,Archer,0.0,0.0,0.0,0.0,0.0 +2020-07-10,6,0,Arne,124.88679,0.0,0.0,0.0,0.0 +2020-07-10,6,0,Arnold,91.426556,0.0,0.0,0.0,0.0 +2020-07-10,6,0,Arthur,149.392877,0.0,0.0,0.0,0.0 +2020-07-10,6,0,Asser,47.127091,0.0,0.0,0.0,0.0 +2020-07-10,6,0,Aston,0.0,0.0,0.0,0.0,0.0 +2020-07-10,6,0,Astor,156.933212,0.0,0.0,0.0,0.0 +2020-07-10,6,0,Attar,85.300034,0.0,0.0,0.0,0.0 +2020-07-10,6,0,Attila,60.322676,0.0,0.0,0.0,0.0 +2020-07-10,6,0,Attlee,0.0,0.0,0.0,0.0,0.0 +2020-07-10,6,0,Aubrey,0.0,0.0,0.0,0.0,0.0 +2020-07-10,6,0,Austen,0.0,0.0,0.0,0.0,0.0 +2020-07-10,6,0,Avery,0.0,0.0,0.0,0.0,0.0 +2020-07-10,6,0,Bach,52.34564,0.0,0.0,0.0,0.0 +2020-07-10,6,0,Bacon,47.01414,0.0,0.0,0.0,0.0 +2020-07-10,6,0,Baffin,87.242734,0.0,0.0,0.0,0.0 +2020-07-10,6,0,Bailey,35.866457,0.0,0.0,0.0,0.0 +2020-07-10,6,0,Bain,34.412412,0.0,0.0,0.0,0.0 +2020-07-10,6,0,Bajer,65.916732,0.0,0.0,0.0,0.0 +2020-07-10,6,0,Baker,60.585232,0.0,0.0,0.0,0.0 +2020-07-10,6,0,Balch,82.880597,0.0,0.0,0.0,0.0 +2020-07-10,6,0,Balzac,84.819324,0.0,0.0,0.0,0.0 +2020-07-10,6,0,Banks,94.512962,0.0,0.0,0.0,0.0 +2020-07-10,6,0,Bardeen,0.0,0.0,0.0,0.0,0.0 +2020-07-10,6,0,Barkla,0.0,0.0,0.0,0.0,0.0 +2020-07-10,6,0,Barlow,128.440691,0.0,0.0,0.0,0.0 +2020-07-10,6,0,Barry,94.02828,0.0,0.0,0.0,0.0 +2020-07-10,6,0,Barton,153.644148,0.0,0.0,0.0,0.0 +2020-07-10,6,0,Basov,48.468185,0.0,0.0,0.0,0.0 +2020-07-10,6,0,Bates,0.0,0.0,0.0,0.0,0.0 +2020-07-10,6,0,Bayle,161.399057,0.0,0.0,0.0,0.0 +2020-07-10,6,0,Bede,87.727416,0.0,0.0,0.0,0.0 +2020-07-10,6,0,Beethoven,62.039277,0.0,0.0,0.0,0.0 +2020-07-10,6,0,Behring,0.0,0.0,0.0,0.0,0.0 +2020-07-10,6,0,Bell,0.0,0.0,0.0,0.0,0.0 +2020-07-10,6,0,Bloch,0.0,0.0,0.0,0.0,0.0 +2020-07-10,6,0,Bordet,0.0,0.0,0.0,0.0,0.0 +2020-07-10,6,0,Cabell,45.506763,0.0,0.0,0.0,0.0 +2020-07-10,6,0,Cabot,40.871815,0.0,0.0,0.0,0.0 +2020-07-10,6,0,Caesar,75.844605,0.0,0.0,0.0,0.0 +2020-07-10,6,0,Caine,31.18056,0.0,0.0,0.0,0.0 +2020-07-10,6,0,Calvin,29.916483,0.0,0.0,0.0,0.0 +2020-07-10,6,0,Camus,57.304813,0.0,0.0,0.0,0.0 +2020-07-10,6,0,Carew,52.669865,0.0,0.0,0.0,0.0 +2020-07-10,6,0,Carrel,72.052375,0.0,0.0,0.0,0.0 +2020-07-10,6,0,Carter,73.737811,0.0,0.0,0.0,0.0 +2020-07-10,6,0,Caruso,82.164989,0.0,0.0,0.0,0.0 +2020-07-10,6,0,Cary,0.0,0.0,0.0,0.0,0.0 +2020-07-10,6,0,Caxton,0.0,0.0,0.0,0.0,0.0 +2020-07-10,6,0,Cecil,111.660113,0.0,0.0,0.0,0.0 +2020-07-10,6,0,Chain,81.74363,0.0,0.0,0.0,0.0 +2020-07-10,6,0,Chase,133.570777,0.0,0.0,0.0,0.0 +2020-07-10,6,0,Chifa,42.135892,0.0,0.0,0.0,0.0 +2020-07-10,6,0,Chuhsi,0.0,0.0,0.0,0.0,0.0 +2020-07-10,6,0,Clark,140.31252,0.0,0.0,0.0,0.0 +2020-07-10,6,0,Clay,76.265964,0.0,0.0,0.0,0.0 +2020-07-10,6,0,Clive,53.933941,0.0,0.0,0.0,0.0 +2020-07-10,6,0,Cobb,0.0,0.0,0.0,0.0,0.0 +2020-07-10,6,0,Cole,0.0,0.0,0.0,0.0,0.0 +2020-07-10,6,0,Comte,0.0,0.0,0.0,0.0,0.0 +2020-07-10,6,0,Curie,0.0,0.0,0.0,0.0,0.0 +2020-07-10,6,0,Curtiss,0.0,0.0,0.0,0.0,0.0 +2020-07-10,7,0,Abel,56.734099,0.0,0.0,0.0,19.0723 +2020-07-10,7,0,Adams,50.955626,0.0,0.0,0.0,19.0723 +2020-07-10,7,0,Adler,94.556832,0.0,0.0,0.0,19.0723 +2020-07-10,7,0,Agricola,38.873364,0.0,0.0,0.0,19.0723 +2020-07-10,7,0,Aiken,37.297417,0.0,0.0,0.0,19.0723 +2020-07-10,7,0,Alber,71.44294,0.0,0.0,0.0,19.0723 +2020-07-10,7,0,Alder,65.664467,0.0,0.0,0.0,19.0723 +2020-07-10,7,0,Alger,89.828991,0.0,0.0,0.0,19.0723 +2020-07-10,7,0,Ali,91.930254,0.0,0.0,0.0,19.0723 +2020-07-10,7,0,Allen,102.436568,0.0,0.0,0.0,19.0723 +2020-07-10,7,0,Anna,0.0,0.0,0.0,0.0,19.0723 +2020-07-10,7,0,Archer,0.0,0.0,0.0,0.0,19.0723 +2020-07-10,7,0,Arne,139.20867,0.0,0.0,0.0,19.0723 +2020-07-10,7,0,Arnold,101.911253,0.0,0.0,0.0,19.0723 +2020-07-10,7,0,Arthur,166.525088,0.0,0.0,0.0,19.0723 +2020-07-10,7,0,Asser,52.531574,0.0,0.0,0.0,19.0723 +2020-07-10,7,0,Aston,0.0,0.0,0.0,0.0,19.0723 +2020-07-10,7,0,Astor,174.93014,0.0,0.0,0.0,19.0723 +2020-07-10,7,0,Attar,95.082148,0.0,0.0,0.0,19.0723 +2020-07-10,7,0,Attila,67.240414,0.0,0.0,0.0,19.0723 +2020-07-10,7,0,Attlee,0.0,0.0,0.0,0.0,19.0723 +2020-07-10,7,0,Aubrey,0.0,0.0,0.0,0.0,19.0723 +2020-07-10,7,0,Austen,0.0,0.0,0.0,0.0,19.0723 +2020-07-10,7,0,Avery,0.0,0.0,0.0,0.0,19.0723 +2020-07-10,7,0,Bach,58.895208,0.0,0.0,0.0,19.0723 +2020-07-10,7,0,Bacon,52.896622,0.0,0.0,0.0,19.0723 +2020-07-10,7,0,Baffin,98.15868,0.0,0.0,0.0,19.0723 +2020-07-10,7,0,Bailey,40.354124,0.0,0.0,0.0,19.0723 +2020-07-10,7,0,Bain,38.718146,0.0,0.0,0.0,19.0723 +2020-07-10,7,0,Bajer,74.164336,0.0,0.0,0.0,19.0723 +2020-07-10,7,0,Baker,68.16575,0.0,0.0,0.0,19.0723 +2020-07-10,7,0,Balch,93.250746,0.0,0.0,0.0,19.0723 +2020-07-10,7,0,Balzac,95.43205,0.0,0.0,0.0,19.0723 +2020-07-10,7,0,Banks,106.33857,0.0,0.0,0.0,19.0723 +2020-07-10,7,0,Bardeen,0.0,0.0,0.0,0.0,19.0723 +2020-07-10,7,0,Barkla,0.0,0.0,0.0,0.0,19.0723 +2020-07-10,7,0,Barlow,144.51139,0.0,0.0,0.0,19.0723 +2020-07-10,7,0,Barry,105.793244,0.0,0.0,0.0,19.0723 +2020-07-10,7,0,Barton,172.868342,0.0,0.0,0.0,19.0723 +2020-07-10,7,0,Basov,54.5326,0.0,0.0,0.0,19.0723 +2020-07-10,7,0,Bates,0.0,0.0,0.0,0.0,19.0723 +2020-07-10,7,0,Bayle,181.593558,0.0,0.0,0.0,19.0723 +2020-07-10,7,0,Bede,98.704006,0.0,0.0,0.0,19.0723 +2020-07-10,7,0,Beethoven,69.801728,0.0,0.0,0.0,19.0723 +2020-07-10,7,0,Behring,0.0,0.0,0.0,0.0,19.0723 +2020-07-10,7,0,Bell,0.0,0.0,0.0,0.0,19.0723 +2020-07-10,7,0,Bloch,0.0,0.0,0.0,0.0,19.0723 +2020-07-10,7,0,Bordet,0.0,0.0,0.0,0.0,19.0723 +2020-07-10,7,0,Cabell,52.029569,0.0,0.0,0.0,19.0723 +2020-07-10,7,0,Cabot,46.730261,0.0,0.0,0.0,19.0723 +2020-07-10,7,0,Caesar,86.715948,0.0,0.0,0.0,19.0723 +2020-07-10,7,0,Caine,35.64989,0.0,0.0,0.0,19.0723 +2020-07-10,7,0,Calvin,34.204624,0.0,0.0,0.0,19.0723 +2020-07-10,7,0,Camus,65.518717,0.0,0.0,0.0,19.0723 +2020-07-10,7,0,Carew,60.219409,0.0,0.0,0.0,19.0723 +2020-07-10,7,0,Carrel,82.380151,0.0,0.0,0.0,19.0723 +2020-07-10,7,0,Carter,84.307172,0.0,0.0,0.0,19.0723 +2020-07-10,7,0,Caruso,93.942277,0.0,0.0,0.0,19.0723 +2020-07-10,7,0,Cary,0.0,0.0,0.0,0.0,19.0723 +2020-07-10,7,0,Caxton,0.0,0.0,0.0,0.0,19.0723 +2020-07-10,7,0,Cecil,127.665146,0.0,0.0,0.0,19.0723 +2020-07-10,7,0,Chain,93.460522,0.0,0.0,0.0,19.0723 +2020-07-10,7,0,Chase,152.71642,0.0,0.0,0.0,19.0723 +2020-07-10,7,0,Chifa,48.175527,0.0,0.0,0.0,19.0723 +2020-07-10,7,0,Chuhsi,0.0,0.0,0.0,0.0,19.0723 +2020-07-10,7,0,Clark,160.424505,0.0,0.0,0.0,19.0723 +2020-07-10,7,0,Clay,87.197704,0.0,0.0,0.0,19.0723 +2020-07-10,7,0,Clive,61.664674,0.0,0.0,0.0,19.0723 +2020-07-10,7,0,Cobb,0.0,0.0,0.0,0.0,19.0723 +2020-07-10,7,0,Cole,0.0,0.0,0.0,0.0,19.0723 +2020-07-10,7,0,Comte,0.0,0.0,0.0,0.0,19.0723 +2020-07-10,7,0,Curie,0.0,0.0,0.0,0.0,19.0723 +2020-07-10,7,0,Curtiss,0.0,0.0,0.0,0.0,19.0723 +2020-07-10,8,0,Abel,61.661622,0.0,0.0,18.072542,18.95957 +2020-07-10,8,0,Adams,55.381272,0.0,0.0,18.072542,19.0723 +2020-07-10,8,0,Adler,102.769371,0.0,0.0,18.072542,19.668951 +2020-07-10,8,0,Agricola,42.24963,0.0,0.0,18.072542,19.502389 +2020-07-10,8,0,Aiken,40.536807,0.0,0.0,18.072542,21.25714 +2020-07-10,8,0,Alber,77.647969,0.0,0.0,18.072542,19.968095 +2020-07-10,8,0,Alder,71.367619,0.0,0.0,18.072542,20.030248 +2020-07-10,8,0,Alger,97.630902,0.0,0.0,18.072542,20.040193 +2020-07-10,8,0,Ali,99.914666,0.0,0.0,18.072542,19.854588 +2020-07-10,8,0,Allen,111.333485,0.0,0.0,18.072542,20.252697 +2020-07-10,8,0,Anna,0.0,0.0,0.0,18.072542,20.015997 +2020-07-10,8,0,Archer,0.0,0.0,0.0,18.072542,20.023826 +2020-07-10,8,0,Arne,151.299351,0.0,0.0,18.072542,20.008797 +2020-07-10,8,0,Arnold,110.762544,0.0,0.0,18.072542,19.984049 +2020-07-10,8,0,Arthur,180.988281,0.0,0.0,18.072542,19.916296 +2020-07-10,8,0,Asser,57.094095,0.0,0.0,18.072542,19.939171 +2020-07-10,8,0,Aston,0.0,0.0,0.0,18.072542,19.933012 +2020-07-10,8,0,Astor,190.123336,0.0,0.0,18.072542,19.930143 +2020-07-10,8,0,Attar,103.340312,0.0,0.0,18.072542,19.958072 +2020-07-10,8,0,Attila,73.080441,0.0,0.0,18.072542,19.974508 +2020-07-10,8,0,Attlee,0.0,0.0,0.0,18.072542,19.92748 +2020-07-10,8,0,Aubrey,0.0,0.0,0.0,18.072542,19.929654 +2020-07-10,8,0,Austen,0.0,0.0,0.0,18.072542,19.983547 +2020-07-10,8,0,Avery,0.0,0.0,0.0,18.072542,19.822591 +2020-07-10,8,0,Bach,65.054517,0.0,0.0,18.072542,19.996997 +2020-07-10,8,0,Bacon,58.428594,0.0,0.0,18.072542,19.996775 +2020-07-10,8,0,Baffin,108.424195,0.0,0.0,18.072542,20.004 +2020-07-10,8,0,Bailey,44.574391,0.0,0.0,18.072542,19.996147 +2020-07-10,8,0,Bain,42.767321,0.0,0.0,18.072542,19.995527 +2020-07-10,8,0,Bajer,81.920503,0.0,0.0,18.072542,19.994673 +2020-07-10,8,0,Baker,75.29458,0.0,0.0,18.072542,19.994819 +2020-07-10,8,0,Balch,103.002985,0.0,0.0,18.072542,19.994819 +2020-07-10,8,0,Balzac,105.412412,0.0,0.0,18.072542,19.995633 +2020-07-10,8,0,Banks,117.459544,0.0,0.0,18.072542,19.994005 +2020-07-10,8,0,Bardeen,0.0,0.0,0.0,18.072542,19.993184 +2020-07-10,8,0,Barkla,0.0,0.0,0.0,18.072542,19.991997 +2020-07-10,8,0,Barlow,159.624509,0.0,0.0,18.072542,19.991364 +2020-07-10,8,0,Barry,116.857188,0.0,0.0,18.072542,19.993184 +2020-07-10,8,0,Barton,190.947054,0.0,0.0,18.072542,19.99583 +2020-07-10,8,0,Basov,60.235664,0.0,0.0,18.072542,19.993184 +2020-07-10,8,0,Bates,0.0,0.0,0.0,18.072542,19.992156 +2020-07-10,8,0,Bayle,200.58476,0.0,0.0,18.072542,19.993086 +2020-07-10,8,0,Bede,109.026551,0.0,0.0,18.072542,19.990515 +2020-07-10,8,0,Beethoven,77.10165,0.0,0.0,18.072542,19.988193 +2020-07-10,8,0,Behring,0.0,0.0,0.0,18.072542,19.993949 +2020-07-10,8,0,Bell,0.0,0.0,0.0,18.072542,19.993244 +2020-07-10,8,0,Bloch,0.0,0.0,0.0,18.072542,19.986916 +2020-07-10,8,0,Bordet,0.0,0.0,0.0,18.072542,19.998925 +2020-07-10,8,0,Cabell,57.872916,0.0,0.0,18.072542,19.95548 +2020-07-10,8,0,Cabot,51.978452,0.0,0.0,18.072542,19.955428 +2020-07-10,8,0,Caesar,96.45486,0.0,0.0,18.072542,19.957113 +2020-07-10,8,0,Caine,39.653665,0.0,0.0,18.072542,19.955281 +2020-07-10,8,0,Calvin,38.046084,0.0,0.0,18.072542,19.955137 +2020-07-10,8,0,Camus,72.877005,0.0,0.0,18.072542,19.954937 +2020-07-10,8,0,Carew,66.982542,0.0,0.0,18.072542,19.954972 +2020-07-10,8,0,Carrel,91.632117,0.0,0.0,18.072542,19.954972 +2020-07-10,8,0,Carter,93.775558,0.0,0.0,18.072542,19.955161 +2020-07-10,8,0,Caruso,104.492765,0.0,0.0,18.072542,19.954782 +2020-07-10,8,0,Cary,0.0,0.0,0.0,18.072542,19.955236 +2020-07-10,8,0,Caxton,0.0,0.0,0.0,18.072542,19.953668 +2020-07-10,8,0,Cecil,142.002988,0.0,0.0,18.072542,19.953653 +2020-07-10,8,0,Chain,103.956905,0.0,0.0,18.072542,19.956882 +2020-07-10,8,0,Chase,169.867726,0.0,0.0,18.072542,19.960426 +2020-07-10,8,0,Chifa,53.586033,0.0,0.0,18.072542,19.959194 +2020-07-10,8,0,Chuhsi,0.0,0.0,0.0,18.072542,19.962391 +2020-07-10,8,0,Clark,178.441491,0.0,0.0,18.072542,19.964079 +2020-07-10,8,0,Clay,96.99072,0.0,0.0,18.072542,19.9556 +2020-07-10,8,0,Clive,68.590123,0.0,0.0,18.072542,19.952474 +2020-07-10,8,0,Cobb,0.0,0.0,0.0,18.072542,19.962793 +2020-07-10,8,0,Cole,0.0,0.0,0.0,18.072542,19.962635 +2020-07-10,8,0,Comte,0.0,0.0,0.0,18.072542,19.950756 +2020-07-10,8,0,Curie,0.0,0.0,0.0,18.072542,19.959171 +2020-07-10,8,0,Curtiss,0.0,0.0,0.0,18.072542,19.948779 +2020-07-10,9,0,Abel,61.575606,0.0,0.0,19.0723,18.733045 +2020-07-10,9,0,Adams,55.304016,0.0,0.0,19.0723,19.0723 +2020-07-10,9,0,Adler,102.62601,0.0,0.0,19.0723,20.86789 +2020-07-10,9,0,Agricola,42.190693,0.0,0.0,19.0723,20.36663 +2020-07-10,9,0,Aiken,40.480259,0.0,0.0,19.0723,25.647463 +2020-07-10,9,0,Alber,77.539652,0.0,0.0,19.0723,21.76815 +2020-07-10,9,0,Alder,71.268062,0.0,0.0,19.0723,21.955195 +2020-07-10,9,0,Alger,97.494709,0.0,0.0,19.0723,21.985123 +2020-07-10,9,0,Ali,99.775287,0.0,0.0,19.0723,21.426555 +2020-07-10,9,0,Allen,111.178177,0.0,0.0,19.0723,22.624644 +2020-07-10,9,0,Anna,0.0,0.0,0.0,19.0723,21.912306 +2020-07-10,9,0,Archer,0.0,0.0,0.0,19.0723,21.935867 +2020-07-10,9,0,Arne,151.088292,0.0,0.0,19.0723,21.890638 +2020-07-10,9,0,Arnold,110.608033,0.0,0.0,19.0723,21.816163 +2020-07-10,9,0,Arthur,180.735806,0.0,0.0,19.0723,21.612264 +2020-07-10,9,0,Asser,57.01445,0.0,0.0,19.0723,21.681103 +2020-07-10,9,0,Aston,0.0,0.0,0.0,19.0723,21.662569 +2020-07-10,9,0,Astor,189.858118,0.0,0.0,19.0723,21.653936 +2020-07-10,9,0,Attar,103.196154,0.0,0.0,19.0723,21.737985 +2020-07-10,9,0,Attila,72.978496,0.0,0.0,19.0723,21.787448 +2020-07-10,9,0,Attlee,0.0,0.0,0.0,19.0723,21.645919 +2020-07-10,9,0,Aubrey,0.0,0.0,0.0,19.0723,21.652464 +2020-07-10,9,0,Austen,0.0,0.0,0.0,19.0723,21.814652 +2020-07-10,9,0,Avery,0.0,0.0,0.0,19.0723,21.330263 +2020-07-10,9,0,Bach,70.314533,0.0,0.0,19.0723,21.85513 +2020-07-10,9,0,Bacon,63.152867,0.0,0.0,19.0723,21.85446 +2020-07-10,9,0,Baffin,117.190888,0.0,0.0,19.0723,21.876204 +2020-07-10,9,0,Bailey,48.178476,0.0,0.0,19.0723,21.85257 +2020-07-10,9,0,Bain,46.225295,0.0,0.0,19.0723,21.850705 +2020-07-10,9,0,Bajer,88.544226,0.0,0.0,19.0723,21.848134 +2020-07-10,9,0,Baker,81.382561,0.0,0.0,19.0723,21.848574 +2020-07-10,9,0,Balch,111.331343,0.0,0.0,19.0723,21.848574 +2020-07-10,9,0,Balzac,113.935585,0.0,0.0,19.0723,21.851023 +2020-07-10,9,0,Banks,126.956795,0.0,0.0,19.0723,21.846124 +2020-07-10,9,0,Bardeen,0.0,0.0,0.0,19.0723,21.843654 +2020-07-10,9,0,Barkla,0.0,0.0,0.0,19.0723,21.840081 +2020-07-10,9,0,Barlow,172.531029,0.0,0.0,19.0723,21.838175 +2020-07-10,9,0,Barry,126.305734,0.0,0.0,19.0723,21.843654 +2020-07-10,9,0,Barton,206.386174,0.0,0.0,19.0723,21.851616 +2020-07-10,9,0,Basov,65.106049,0.0,0.0,19.0723,21.843654 +2020-07-10,9,0,Bates,0.0,0.0,0.0,19.0723,21.840559 +2020-07-10,9,0,Bayle,216.803142,0.0,0.0,19.0723,21.843357 +2020-07-10,9,0,Bede,117.841948,0.0,0.0,19.0723,21.835619 +2020-07-10,9,0,Beethoven,83.335742,0.0,0.0,19.0723,21.828633 +2020-07-10,9,0,Behring,0.0,0.0,0.0,19.0723,21.845955 +2020-07-10,9,0,Bell,0.0,0.0,0.0,19.0723,21.843834 +2020-07-10,9,0,Bloch,0.0,0.0,0.0,19.0723,21.82479 +2020-07-10,9,0,Bordet,0.0,0.0,0.0,19.0723,21.860931 +2020-07-10,9,0,Cabell,64.140925,0.0,0.0,19.0723,21.730183 +2020-07-10,9,0,Cabot,57.608053,0.0,0.0,19.0723,21.730027 +2020-07-10,9,0,Caesar,106.901541,0.0,0.0,19.0723,21.735098 +2020-07-10,9,0,Caine,43.948411,0.0,0.0,19.0723,21.729587 +2020-07-10,9,0,Calvin,42.166719,0.0,0.0,19.0723,21.729152 +2020-07-10,9,0,Camus,80.770053,0.0,0.0,19.0723,21.728552 +2020-07-10,9,0,Carew,74.237181,0.0,0.0,19.0723,21.728655 +2020-07-10,9,0,Carrel,101.556464,0.0,0.0,19.0723,21.728655 +2020-07-10,9,0,Carter,103.932054,0.0,0.0,19.0723,21.729226 +2020-07-10,9,0,Caruso,115.810003,0.0,0.0,19.0723,21.728083 +2020-07-10,9,0,Cary,0.0,0.0,0.0,19.0723,21.729451 +2020-07-10,9,0,Caxton,0.0,0.0,0.0,19.0723,21.72473 +2020-07-10,9,0,Cecil,157.382825,0.0,0.0,19.0723,21.724685 +2020-07-10,9,0,Chain,115.216106,0.0,0.0,19.0723,21.734403 +2020-07-10,9,0,Chase,188.265492,0.0,0.0,19.0723,21.745069 +2020-07-10,9,0,Chifa,59.389745,0.0,0.0,19.0723,21.741361 +2020-07-10,9,0,Chuhsi,0.0,0.0,0.0,19.0723,21.750982 +2020-07-10,9,0,Clark,197.767851,0.0,0.0,19.0723,21.756064 +2020-07-10,9,0,Clay,107.495439,0.0,0.0,19.0723,21.730545 +2020-07-10,9,0,Clive,76.018874,0.0,0.0,19.0723,21.72114 +2020-07-10,9,0,Cobb,0.0,0.0,0.0,19.0723,21.752193 +2020-07-10,9,0,Cole,0.0,0.0,0.0,19.0723,21.751717 +2020-07-10,9,0,Comte,0.0,0.0,0.0,19.0723,21.715967 +2020-07-10,9,0,Curie,0.0,0.0,0.0,19.0723,21.741292 +2020-07-10,9,0,Curtiss,0.0,0.0,0.0,19.0723,21.710019 +2020-07-10,10,0,Abel,67.326431,0.0,0.0,20.419098,18.576156 +2020-07-10,10,0,Adams,60.469109,0.0,0.0,20.419098,19.0723 +2020-07-10,10,0,Adler,112.210718,0.0,0.0,20.419098,21.698269 +2020-07-10,10,0,Agricola,46.131073,0.0,0.0,20.419098,20.965199 +2020-07-10,10,0,Aiken,44.260894,0.0,0.0,20.419098,28.688175 +2020-07-10,10,0,Alber,84.781431,0.0,0.0,20.419098,23.014857 +2020-07-10,10,0,Alder,77.92411,0.0,0.0,20.419098,23.288402 +2020-07-10,10,0,Alger,106.600182,0.0,0.0,20.419098,23.33217 +2020-07-10,10,0,Ali,109.093754,0.0,0.0,20.419098,22.51529 +2020-07-10,10,0,Allen,121.561611,0.0,0.0,20.419098,24.267441 +2020-07-10,10,0,Anna,0.0,0.0,0.0,20.419098,23.225679 +2020-07-10,10,0,Archer,0.0,0.0,0.0,20.419098,23.260136 +2020-07-10,10,0,Arne,165.199113,0.0,0.0,20.419098,23.19399 +2020-07-10,10,0,Arnold,120.938218,0.0,0.0,20.419098,23.085073 +2020-07-10,10,0,Arthur,197.615542,0.0,0.0,20.419098,22.786881 +2020-07-10,10,0,Asser,62.339288,0.0,0.0,20.419098,22.887555 +2020-07-10,10,0,Aston,0.0,0.0,0.0,20.419098,22.860449 +2020-07-10,10,0,Astor,207.589828,0.0,0.0,20.419098,22.847824 +2020-07-10,10,0,Attar,112.834111,0.0,0.0,20.419098,22.970743 +2020-07-10,10,0,Attila,79.794288,0.0,0.0,20.419098,23.043079 +2020-07-10,10,0,Attlee,0.0,0.0,0.0,20.419098,22.8361 +2020-07-10,10,0,Aubrey,0.0,0.0,0.0,20.419098,22.845671 +2020-07-10,10,0,Austen,0.0,0.0,0.0,20.419098,23.082865 +2020-07-10,10,0,Avery,0.0,0.0,0.0,20.419098,22.374467 +2020-07-10,10,0,Bach,74.878869,0.0,0.0,20.419098,23.142061 +2020-07-10,10,0,Bacon,67.252317,0.0,0.0,20.419098,23.141081 +2020-07-10,10,0,Baffin,124.798115,0.0,0.0,20.419098,23.172882 +2020-07-10,10,0,Bailey,51.305892,0.0,0.0,20.419098,23.138318 +2020-07-10,10,0,Bain,49.225923,0.0,0.0,20.419098,23.13559 +2020-07-10,10,0,Bajer,94.291909,0.0,0.0,20.419098,23.13183 +2020-07-10,10,0,Baker,86.665357,0.0,0.0,20.419098,23.132473 +2020-07-10,10,0,Balch,118.558209,0.0,0.0,20.419098,23.132473 +2020-07-10,10,0,Balzac,121.3315,0.0,0.0,20.419098,23.136055 +2020-07-10,10,0,Banks,135.197958,0.0,0.0,20.419098,23.128891 +2020-07-10,10,0,Bardeen,0.0,0.0,0.0,20.419098,23.125278 +2020-07-10,10,0,Barkla,0.0,0.0,0.0,20.419098,23.120053 +2020-07-10,10,0,Barlow,183.730558,0.0,0.0,20.419098,23.117266 +2020-07-10,10,0,Barry,134.504635,0.0,0.0,20.419098,23.125278 +2020-07-10,10,0,Barton,219.783346,0.0,0.0,20.419098,23.136923 +2020-07-10,10,0,Basov,69.332286,0.0,0.0,20.419098,23.125278 +2020-07-10,10,0,Bates,0.0,0.0,0.0,20.419098,23.120752 +2020-07-10,10,0,Bayle,230.876512,0.0,0.0,20.419098,23.124844 +2020-07-10,10,0,Bede,125.491438,0.0,0.0,20.419098,23.113528 +2020-07-10,10,0,Beethoven,88.745326,0.0,0.0,20.419098,23.10331 +2020-07-10,10,0,Behring,0.0,0.0,0.0,20.419098,23.128644 +2020-07-10,10,0,Bell,0.0,0.0,0.0,20.419098,23.125542 +2020-07-10,10,0,Bloch,0.0,0.0,0.0,20.419098,23.097691 +2020-07-10,10,0,Bordet,0.0,0.0,0.0,20.419098,23.150546 +2020-07-10,10,0,Cabell,68.166719,0.0,0.0,20.419098,22.959333 +2020-07-10,10,0,Cabot,61.223813,0.0,0.0,20.419098,22.959104 +2020-07-10,10,0,Caesar,113.611198,0.0,0.0,20.419098,22.96652 +2020-07-10,10,0,Caine,46.706826,0.0,0.0,20.419098,22.95846 +2020-07-10,10,0,Calvin,44.813306,0.0,0.0,20.419098,22.957824 +2020-07-10,10,0,Camus,85.839572,0.0,0.0,20.419098,22.956947 +2020-07-10,10,0,Carew,78.896666,0.0,0.0,20.419098,22.957097 +2020-07-10,10,0,Carrel,107.930639,0.0,0.0,20.419098,22.957097 +2020-07-10,10,0,Carter,110.455332,0.0,0.0,20.419098,22.957932 +2020-07-10,10,0,Caruso,123.078798,0.0,0.0,20.419098,22.956261 +2020-07-10,10,0,Cary,0.0,0.0,0.0,20.419098,22.958261 +2020-07-10,10,0,Caxton,0.0,0.0,0.0,20.419098,22.951358 +2020-07-10,10,0,Cecil,167.260931,0.0,0.0,20.419098,22.951292 +2020-07-10,10,0,Chain,122.447625,0.0,0.0,20.419098,22.965504 +2020-07-10,10,0,Chase,200.081944,0.0,0.0,20.419098,22.981102 +2020-07-10,10,0,Chifa,63.117332,0.0,0.0,20.419098,22.975679 +2020-07-10,10,0,Chuhsi,0.0,0.0,0.0,20.419098,22.989749 +2020-07-10,10,0,Clark,210.180717,0.0,0.0,20.419098,22.997182 +2020-07-10,10,0,Clay,114.242372,0.0,0.0,20.419098,22.959861 +2020-07-10,10,0,Clive,80.790186,0.0,0.0,20.419098,22.946106 +2020-07-10,10,0,Cobb,0.0,0.0,0.0,20.419098,22.991521 +2020-07-10,10,0,Cole,0.0,0.0,0.0,20.419098,22.990825 +2020-07-10,10,0,Comte,0.0,0.0,0.0,20.419098,22.938541 +2020-07-10,10,0,Curie,0.0,0.0,0.0,20.419098,22.975578 +2020-07-10,10,0,Curtiss,0.0,0.0,0.0,20.419098,22.929844 +2020-07-10,11,0,Abel,67.768802,0.0,0.0,18.753754,18.447729 +2020-07-10,11,0,Adams,60.866424,0.0,0.0,19.0723,19.0723 +2020-07-10,11,0,Adler,112.948003,0.0,0.0,20.758287,22.377998 +2020-07-10,11,0,Agricola,46.434179,0.0,0.0,20.287624,21.455174 +2020-07-10,11,0,Aiken,44.551712,0.0,0.0,25.246111,31.177234 +2020-07-10,11,0,Alber,85.338491,0.0,0.0,21.603594,24.035384 +2020-07-10,11,0,Alder,78.436113,0.0,0.0,21.779221,24.379735 +2020-07-10,11,0,Alger,107.300603,0.0,0.0,21.807323,24.434833 +2020-07-10,11,0,Ali,109.810559,0.0,0.0,21.28285,23.406504 +2020-07-10,11,0,Allen,122.360337,0.0,0.0,22.407807,25.612197 +2020-07-10,11,0,Anna,0.0,0.0,0.0,21.738951,24.300777 +2020-07-10,11,0,Archer,0.0,0.0,0.0,21.761073,24.344153 +2020-07-10,11,0,Arne,166.28456,0.0,0.0,21.718605,24.260886 +2020-07-10,11,0,Arnold,121.732848,0.0,0.0,21.648676,24.123775 +2020-07-10,11,0,Arthur,198.913983,0.0,0.0,21.457223,23.748396 +2020-07-10,11,0,Asser,62.748891,0.0,0.0,21.521861,23.87513 +2020-07-10,11,0,Aston,0.0,0.0,0.0,21.504457,23.841008 +2020-07-10,11,0,Astor,208.953806,0.0,0.0,21.496351,23.825114 +2020-07-10,11,0,Attar,113.575492,0.0,0.0,21.57527,23.97985 +2020-07-10,11,0,Attila,80.31858,0.0,0.0,21.621714,24.070912 +2020-07-10,11,0,Attlee,0.0,0.0,0.0,21.488824,23.810356 +2020-07-10,11,0,Aubrey,0.0,0.0,0.0,21.494969,23.822404 +2020-07-10,11,0,Austen,0.0,0.0,0.0,21.647258,24.120995 +2020-07-10,11,0,Avery,0.0,0.0,0.0,21.192436,23.22923 +2020-07-10,11,0,Bach,79.01901,0.0,0.0,21.685264,24.195514 +2020-07-10,11,0,Bacon,70.970778,0.0,0.0,21.684635,24.194281 +2020-07-10,11,0,Baffin,131.69835,0.0,0.0,21.705052,24.234313 +2020-07-10,11,0,Bailey,54.142655,0.0,0.0,21.682861,24.190803 +2020-07-10,11,0,Bain,51.947683,0.0,0.0,21.681109,24.187368 +2020-07-10,11,0,Bajer,99.50542,0.0,0.0,21.678695,24.182635 +2020-07-10,11,0,Baker,91.457188,0.0,0.0,21.679108,24.183444 +2020-07-10,11,0,Balch,125.113433,0.0,0.0,21.679108,24.183444 +2020-07-10,11,0,Balzac,128.040063,0.0,0.0,21.681408,24.187954 +2020-07-10,11,0,Banks,142.673213,0.0,0.0,21.676808,24.178935 +2020-07-10,11,0,Bardeen,0.0,0.0,0.0,21.674489,24.174387 +2020-07-10,11,0,Barkla,0.0,0.0,0.0,21.671134,24.167809 +2020-07-10,11,0,Barlow,193.889238,0.0,0.0,21.669344,24.164301 +2020-07-10,11,0,Barry,141.941555,0.0,0.0,21.674489,24.174387 +2020-07-10,11,0,Barton,231.935428,0.0,0.0,21.681965,24.189046 +2020-07-10,11,0,Basov,73.16575,0.0,0.0,21.674489,24.174387 +2020-07-10,11,0,Bates,0.0,0.0,0.0,21.671583,24.16869 +2020-07-10,11,0,Bayle,243.641948,0.0,0.0,21.67421,24.173841 +2020-07-10,11,0,Bede,132.430008,0.0,0.0,21.666945,24.159596 +2020-07-10,11,0,Beethoven,93.65216,0.0,0.0,21.660385,24.146733 +2020-07-10,11,0,Behring,0.0,0.0,0.0,21.67665,24.178624 +2020-07-10,11,0,Bell,0.0,0.0,0.0,21.674658,24.174719 +2020-07-10,11,0,Bloch,0.0,0.0,0.0,21.656776,24.139659 +2020-07-10,11,0,Bordet,0.0,0.0,0.0,21.690712,24.206195 +2020-07-10,11,0,Cabell,71.835797,0.0,0.0,21.567945,23.965487 +2020-07-10,11,0,Cabot,64.519188,0.0,0.0,21.567798,23.9652 +2020-07-10,11,0,Caesar,119.726329,0.0,0.0,21.57256,23.974535 +2020-07-10,11,0,Caine,49.220824,0.0,0.0,21.567384,23.964388 +2020-07-10,11,0,Calvin,47.225385,0.0,0.0,21.566976,23.963587 +2020-07-10,11,0,Camus,90.459893,0.0,0.0,21.566413,23.962483 +2020-07-10,11,0,Carew,83.143284,0.0,0.0,21.566509,23.962672 +2020-07-10,11,0,Carrel,113.740013,0.0,0.0,21.566509,23.962672 +2020-07-10,11,0,Carter,116.400598,0.0,0.0,21.567045,23.963724 +2020-07-10,11,0,Caruso,129.703523,0.0,0.0,21.565973,23.961621 +2020-07-10,11,0,Cary,0.0,0.0,0.0,21.567257,23.964138 +2020-07-10,11,0,Caxton,0.0,0.0,0.0,21.562824,23.955448 +2020-07-10,11,0,Cecil,176.263762,0.0,0.0,21.562782,23.955365 +2020-07-10,11,0,Chain,129.038377,0.0,0.0,21.571907,23.973256 +2020-07-10,11,0,Chase,210.851368,0.0,0.0,21.581922,23.992892 +2020-07-10,11,0,Chifa,66.514627,0.0,0.0,21.57844,23.986065 +2020-07-10,11,0,Chuhsi,0.0,0.0,0.0,21.587474,24.003777 +2020-07-10,11,0,Clark,221.493709,0.0,0.0,21.592246,24.013134 +2020-07-10,11,0,Clay,120.391475,0.0,0.0,21.568284,23.966152 +2020-07-10,11,0,Clive,85.138723,0.0,0.0,21.559453,23.948837 +2020-07-10,11,0,Cobb,0.0,0.0,0.0,21.588611,24.006007 +2020-07-10,11,0,Cole,0.0,0.0,0.0,21.588164,24.005131 +2020-07-10,11,0,Comte,0.0,0.0,0.0,21.554596,23.939314 +2020-07-10,11,0,Curie,0.0,0.0,0.0,21.578375,23.985938 +2020-07-10,11,0,Curtiss,0.0,0.0,0.0,21.549011,23.928365 +2020-07-10,12,0,Abel,64.487883,0.0,0.0,18.608963,18.237079 +2020-07-10,12,0,Adams,57.919672,0.0,0.0,19.0723,19.0723 +2020-07-10,12,0,Adler,107.479804,0.0,0.0,21.524626,23.492921 +2020-07-10,12,0,Agricola,44.186142,0.0,0.0,20.840031,22.258853 +2020-07-10,12,0,Aiken,42.394812,0.0,0.0,28.052323,35.259901 +2020-07-10,12,0,Alber,81.206963,0.0,0.0,22.754155,25.709299 +2020-07-10,12,0,Alder,74.638753,0.0,0.0,23.009611,26.16979 +2020-07-10,12,0,Alger,102.105814,0.0,0.0,23.050485,26.243471 +2020-07-10,12,0,Ali,104.494254,0.0,0.0,22.287621,24.868314 +2020-07-10,12,0,Allen,116.436455,0.0,0.0,23.923911,27.817928 +2020-07-10,12,0,Anna,0.0,0.0,0.0,22.951036,26.064201 +2020-07-10,12,0,Archer,0.0,0.0,0.0,22.983214,26.122206 +2020-07-10,12,0,Arne,158.234156,0.0,0.0,22.921443,26.010856 +2020-07-10,12,0,Arnold,115.839345,0.0,0.0,22.819728,25.827502 +2020-07-10,12,0,Arthur,189.283878,0.0,0.0,22.541253,25.325517 +2020-07-10,12,0,Asser,59.711002,0.0,0.0,22.635271,25.494995 +2020-07-10,12,0,Aston,0.0,0.0,0.0,22.609957,25.449364 +2020-07-10,12,0,Astor,198.837638,0.0,0.0,22.598167,25.42811 +2020-07-10,12,0,Attar,108.076914,0.0,0.0,22.712957,25.635035 +2020-07-10,12,0,Attila,76.430083,0.0,0.0,22.780511,25.756808 +2020-07-10,12,0,Attlee,0.0,0.0,0.0,22.587218,25.408375 +2020-07-10,12,0,Aubrey,0.0,0.0,0.0,22.596156,25.424486 +2020-07-10,12,0,Austen,0.0,0.0,0.0,22.817665,25.823784 +2020-07-10,12,0,Avery,0.0,0.0,0.0,22.156111,24.63125 +2020-07-10,12,0,Bach,82.78586,0.0,0.0,22.872947,25.923436 +2020-07-10,12,0,Bacon,74.353967,0.0,0.0,22.872032,25.921787 +2020-07-10,12,0,Baffin,137.976434,0.0,0.0,22.90173,25.975321 +2020-07-10,12,0,Bailey,56.723645,0.0,0.0,22.869452,25.917135 +2020-07-10,12,0,Bain,54.424038,0.0,0.0,22.866904,25.912543 +2020-07-10,12,0,Bajer,104.248861,0.0,0.0,22.863393,25.906213 +2020-07-10,12,0,Baker,95.816968,0.0,0.0,22.863993,25.907295 +2020-07-10,12,0,Balch,131.077612,0.0,0.0,22.863993,25.907295 +2020-07-10,12,0,Balzac,134.143755,0.0,0.0,22.867339,25.913326 +2020-07-10,12,0,Banks,149.47447,0.0,0.0,22.860648,25.901265 +2020-07-10,12,0,Bardeen,0.0,0.0,0.0,22.857274,25.895184 +2020-07-10,12,0,Barkla,0.0,0.0,0.0,22.852394,25.886387 +2020-07-10,12,0,Barlow,203.131972,0.0,0.0,22.849791,25.881695 +2020-07-10,12,0,Barry,148.707934,0.0,0.0,22.857274,25.895184 +2020-07-10,12,0,Barton,242.99183,0.0,0.0,22.868149,25.914787 +2020-07-10,12,0,Basov,76.653574,0.0,0.0,22.857274,25.895184 +2020-07-10,12,0,Bates,0.0,0.0,0.0,22.853047,25.887564 +2020-07-10,12,0,Bayle,255.256402,0.0,0.0,22.856869,25.894453 +2020-07-10,12,0,Bede,138.742969,0.0,0.0,22.846301,25.875403 +2020-07-10,12,0,Beethoven,98.116575,0.0,0.0,22.836759,25.858202 +2020-07-10,12,0,Behring,0.0,0.0,0.0,22.860417,25.90085 +2020-07-10,12,0,Bell,0.0,0.0,0.0,22.857521,25.895628 +2020-07-10,12,0,Bloch,0.0,0.0,0.0,22.831511,25.848742 +2020-07-10,12,0,Bordet,0.0,0.0,0.0,22.880871,25.93772 +2020-07-10,12,0,Cabell,75.402957,0.0,0.0,22.702302,25.615827 +2020-07-10,12,0,Cabot,67.723026,0.0,0.0,22.702089,25.615443 +2020-07-10,12,0,Caesar,125.671595,0.0,0.0,22.709014,25.627927 +2020-07-10,12,0,Caine,51.664989,0.0,0.0,22.701487,25.614358 +2020-07-10,12,0,Calvin,49.570462,0.0,0.0,22.700893,25.613287 +2020-07-10,12,0,Camus,94.951872,0.0,0.0,22.700074,25.61181 +2020-07-10,12,0,Carew,87.271941,0.0,0.0,22.700214,25.612063 +2020-07-10,12,0,Carrel,119.388015,0.0,0.0,22.700214,25.612063 +2020-07-10,12,0,Carter,122.180717,0.0,0.0,22.700994,25.613469 +2020-07-10,12,0,Caruso,136.144228,0.0,0.0,22.699434,25.610657 +2020-07-10,12,0,Cary,0.0,0.0,0.0,22.701301,25.614023 +2020-07-10,12,0,Caxton,0.0,0.0,0.0,22.694854,25.602402 +2020-07-10,12,0,Cecil,185.016515,0.0,0.0,22.694793,25.602291 +2020-07-10,12,0,Chain,135.446052,0.0,0.0,22.708065,25.626216 +2020-07-10,12,0,Chase,221.321642,0.0,0.0,22.722632,25.652475 +2020-07-10,12,0,Chifa,69.817553,0.0,0.0,22.717567,25.643345 +2020-07-10,12,0,Chuhsi,0.0,0.0,0.0,22.730707,25.667031 +2020-07-10,12,0,Clark,232.49245,0.0,0.0,22.737649,25.679544 +2020-07-10,12,0,Clay,126.36977,0.0,0.0,22.702795,25.616717 +2020-07-10,12,0,Clive,89.366467,0.0,0.0,22.68995,25.593562 +2020-07-10,12,0,Cobb,0.0,0.0,0.0,22.732362,25.670014 +2020-07-10,12,0,Cole,0.0,0.0,0.0,22.731711,25.668841 +2020-07-10,12,0,Comte,0.0,0.0,0.0,22.682885,25.580826 +2020-07-10,12,0,Curie,0.0,0.0,0.0,22.717473,25.643175 +2020-07-10,12,0,Curtiss,0.0,0.0,0.0,22.674763,25.566184 +2020-07-10,13,0,Abel,66.097622,0.0,0.0,18.579572,18.206863 +2020-07-10,13,0,Adams,59.365457,0.0,0.0,19.0723,19.0723 +2020-07-10,13,0,Adler,110.162703,0.0,0.0,21.680187,23.652846 +2020-07-10,13,0,Agricola,45.289111,0.0,0.0,20.952165,22.374133 +2020-07-10,13,0,Aiken,43.453066,0.0,0.0,28.621962,35.845522 +2020-07-10,13,0,Alber,83.234043,0.0,0.0,22.98771,25.949406 +2020-07-10,13,0,Alder,76.501877,0.0,0.0,23.259371,26.426557 +2020-07-10,13,0,Alger,104.654568,0.0,0.0,23.302838,26.502903 +2020-07-10,13,0,Ali,107.102628,0.0,0.0,22.491582,25.077997 +2020-07-10,13,0,Allen,119.342929,0.0,0.0,24.231668,28.13432 +2020-07-10,13,0,Anna,0.0,0.0,0.0,23.19708,26.317148 +2020-07-10,13,0,Archer,0.0,0.0,0.0,23.231299,26.377251 +2020-07-10,13,0,Arne,162.18398,0.0,0.0,23.16561,26.261873 +2020-07-10,13,0,Arnold,118.730914,0.0,0.0,23.057442,26.071886 +2020-07-10,13,0,Arthur,194.008761,0.0,0.0,22.761303,25.55174 +2020-07-10,13,0,Asser,61.201502,0.0,0.0,22.861285,25.72735 +2020-07-10,13,0,Aston,0.0,0.0,0.0,22.834365,25.680068 +2020-07-10,13,0,Astor,203.801001,0.0,0.0,22.821827,25.658045 +2020-07-10,13,0,Attar,110.774718,0.0,0.0,22.943899,25.872456 +2020-07-10,13,0,Attila,78.337922,0.0,0.0,23.015738,25.998635 +2020-07-10,13,0,Attlee,0.0,0.0,0.0,22.810184,25.637596 +2020-07-10,13,0,Aubrey,0.0,0.0,0.0,22.819689,25.65429 +2020-07-10,13,0,Austen,0.0,0.0,0.0,23.055249,26.068033 +2020-07-10,13,0,Avery,0.0,0.0,0.0,22.35173,24.832357 +2020-07-10,13,0,Bach,85.958837,0.0,0.0,23.114037,26.17129 +2020-07-10,13,0,Bacon,77.203771,0.0,0.0,23.113065,26.169582 +2020-07-10,13,0,Baffin,143.264729,0.0,0.0,23.144646,26.225052 +2020-07-10,13,0,Bailey,58.897722,0.0,0.0,23.110321,26.164762 +2020-07-10,13,0,Bain,56.509976,0.0,0.0,23.107611,26.160003 +2020-07-10,13,0,Bajer,108.244462,0.0,0.0,23.103877,26.153444 +2020-07-10,13,0,Baker,99.489395,0.0,0.0,23.104516,26.154566 +2020-07-10,13,0,Balch,136.101493,0.0,0.0,23.104516,26.154566 +2020-07-10,13,0,Balzac,139.285153,0.0,0.0,23.108073,26.160815 +2020-07-10,13,0,Banks,155.203456,0.0,0.0,23.100958,26.148317 +2020-07-10,13,0,Bardeen,0.0,0.0,0.0,23.097371,26.142016 +2020-07-10,13,0,Barkla,0.0,0.0,0.0,23.092181,26.132901 +2020-07-10,13,0,Barlow,210.917518,0.0,0.0,23.089413,26.128039 +2020-07-10,13,0,Barry,154.407541,0.0,0.0,23.097371,26.142016 +2020-07-10,13,0,Barton,252.305106,0.0,0.0,23.108935,26.162328 +2020-07-10,13,0,Basov,79.591516,0.0,0.0,23.097371,26.142016 +2020-07-10,13,0,Bates,0.0,0.0,0.0,23.092876,26.134121 +2020-07-10,13,0,Bayle,265.039749,0.0,0.0,23.09694,26.141259 +2020-07-10,13,0,Bede,144.060644,0.0,0.0,23.085701,26.12152 +2020-07-10,13,0,Beethoven,101.877141,0.0,0.0,23.075554,26.103697 +2020-07-10,13,0,Behring,0.0,0.0,0.0,23.100713,26.147887 +2020-07-10,13,0,Bell,0.0,0.0,0.0,23.097633,26.142476 +2020-07-10,13,0,Bloch,0.0,0.0,0.0,23.069973,26.093894 +2020-07-10,13,0,Bordet,0.0,0.0,0.0,23.122464,26.186091 +2020-07-10,13,0,Cabell,78.426549,0.0,0.0,22.932568,25.852553 +2020-07-10,13,0,Cabot,70.43866,0.0,0.0,22.932341,25.852155 +2020-07-10,13,0,Caesar,130.710915,0.0,0.0,22.939706,25.865091 +2020-07-10,13,0,Caine,53.73671,0.0,0.0,22.931701,25.85103 +2020-07-10,13,0,Calvin,51.558194,0.0,0.0,22.931069,25.849921 +2020-07-10,13,0,Camus,98.759358,0.0,0.0,22.930198,25.848391 +2020-07-10,13,0,Carew,90.771469,0.0,0.0,22.930347,25.848653 +2020-07-10,13,0,Carrel,124.17537,0.0,0.0,22.930347,25.848653 +2020-07-10,13,0,Carter,127.080057,0.0,0.0,22.931177,25.85011 +2020-07-10,13,0,Caruso,141.603492,0.0,0.0,22.929517,25.847195 +2020-07-10,13,0,Cary,0.0,0.0,0.0,22.931504,25.850684 +2020-07-10,13,0,Caxton,0.0,0.0,0.0,22.924648,25.838642 +2020-07-10,13,0,Cecil,192.435514,0.0,0.0,22.924582,25.838528 +2020-07-10,13,0,Chain,140.87732,0.0,0.0,22.938697,25.863318 +2020-07-10,13,0,Chase,230.196445,0.0,0.0,22.954187,25.890526 +2020-07-10,13,0,Chifa,72.617175,0.0,0.0,22.948801,25.881066 +2020-07-10,13,0,Chuhsi,0.0,0.0,0.0,22.962775,25.90561 +2020-07-10,13,0,Clark,241.815194,0.0,0.0,22.970157,25.918575 +2020-07-10,13,0,Clay,131.437087,0.0,0.0,22.933093,25.853475 +2020-07-10,13,0,Clive,92.949984,0.0,0.0,22.919433,25.829482 +2020-07-10,13,0,Cobb,0.0,0.0,0.0,22.964534,25.9087 +2020-07-10,13,0,Cole,0.0,0.0,0.0,22.963843,25.907485 +2020-07-10,13,0,Comte,0.0,0.0,0.0,22.91192,25.816286 +2020-07-10,13,0,Curie,0.0,0.0,0.0,22.948701,25.88089 +2020-07-10,13,0,Curtiss,0.0,0.0,0.0,22.903282,25.801114 +2020-07-10,14,0,Abel,78.975538,0.0,0.0,18.257137,18.185254 +2020-07-10,14,0,Adams,70.931733,0.0,0.0,19.0723,19.0723 +2020-07-10,14,0,Adler,131.625896,0.0,0.0,23.386755,23.767217 +2020-07-10,14,0,Agricola,54.112868,0.0,0.0,22.182325,22.456576 +2020-07-10,14,0,Aiken,51.919103,0.0,0.0,34.87114,36.264331 +2020-07-10,14,0,Alber,99.450677,0.0,0.0,25.549905,26.12112 +2020-07-10,14,0,Alder,91.406872,0.0,0.0,25.999337,26.610184 +2020-07-10,14,0,Alger,125.044601,0.0,0.0,26.071248,26.688437 +2020-07-10,14,0,Ali,127.969621,0.0,0.0,24.729117,25.227952 +2020-07-10,14,0,Allen,142.594721,0.0,0.0,27.607894,28.360589 +2020-07-10,14,0,Anna,0.0,0.0,0.0,25.896284,26.498044 +2020-07-10,14,0,Archer,0.0,0.0,0.0,25.952896,26.559648 +2020-07-10,14,0,Arne,193.782569,0.0,0.0,25.844219,26.441388 +2020-07-10,14,0,Arnold,141.863466,0.0,0.0,25.665269,26.246658 +2020-07-10,14,0,Arthur,231.807828,0.0,0.0,25.17534,25.713525 +2020-07-10,14,0,Asser,73.125498,0.0,0.0,25.340748,25.893519 +2020-07-10,14,0,Aston,0.0,0.0,0.0,25.296213,25.845057 +2020-07-10,14,0,Astor,243.507908,0.0,0.0,25.275469,25.822484 +2020-07-10,14,0,Attar,132.357151,0.0,0.0,25.477424,26.042248 +2020-07-10,14,0,Attila,93.600637,0.0,0.0,25.596273,26.171578 +2020-07-10,14,0,Attlee,0.0,0.0,0.0,25.256208,25.801524 +2020-07-10,14,0,Aubrey,0.0,0.0,0.0,25.271932,25.818635 +2020-07-10,14,0,Austen,0.0,0.0,0.0,25.66164,26.242709 +2020-07-10,14,0,Avery,0.0,0.0,0.0,24.497747,24.97618 +2020-07-10,14,0,Bach,85.94187,0.0,0.0,25.758899,26.348544 +2020-07-10,14,0,Bacon,77.188531,0.0,0.0,25.75729,26.346793 +2020-07-10,14,0,Baffin,143.236449,0.0,0.0,25.809538,26.403648 +2020-07-10,14,0,Bailey,58.886096,0.0,0.0,25.75275,26.341853 +2020-07-10,14,0,Bain,56.498822,0.0,0.0,25.748267,26.336975 +2020-07-10,14,0,Bajer,108.223095,0.0,0.0,25.74209,26.330253 +2020-07-10,14,0,Baker,99.469756,0.0,0.0,25.743146,26.331402 +2020-07-10,14,0,Balch,136.074627,0.0,0.0,25.743146,26.331402 +2020-07-10,14,0,Balzac,139.257659,0.0,0.0,25.749032,26.337807 +2020-07-10,14,0,Banks,155.17282,0.0,0.0,25.737261,26.324998 +2020-07-10,14,0,Bardeen,0.0,0.0,0.0,25.731326,26.318539 +2020-07-10,14,0,Barkla,0.0,0.0,0.0,25.72274,26.309197 +2020-07-10,14,0,Barlow,210.875884,0.0,0.0,25.718161,26.304213 +2020-07-10,14,0,Barry,154.377062,0.0,0.0,25.731326,26.318539 +2020-07-10,14,0,Barton,252.255302,0.0,0.0,25.750458,26.339358 +2020-07-10,14,0,Basov,79.575805,0.0,0.0,25.731326,26.318539 +2020-07-10,14,0,Bates,0.0,0.0,0.0,25.723889,26.310447 +2020-07-10,14,0,Bayle,264.987431,0.0,0.0,25.730613,26.317763 +2020-07-10,14,0,Bede,144.032207,0.0,0.0,25.71202,26.297531 +2020-07-10,14,0,Beethoven,101.857031,0.0,0.0,25.695232,26.279263 +2020-07-10,14,0,Behring,0.0,0.0,0.0,25.736856,26.324557 +2020-07-10,14,0,Bell,0.0,0.0,0.0,25.731759,26.319011 +2020-07-10,14,0,Bloch,0.0,0.0,0.0,25.685999,26.269216 +2020-07-10,14,0,Bordet,0.0,0.0,0.0,25.77284,26.363714 +2020-07-10,14,0,Cabell,79.649575,0.0,0.0,25.458678,26.021848 +2020-07-10,14,0,Cabot,71.537119,0.0,0.0,25.458303,26.02144 +2020-07-10,14,0,Caesar,132.749292,0.0,0.0,25.470487,26.034699 +2020-07-10,14,0,Caine,54.574709,0.0,0.0,25.457244,26.020288 +2020-07-10,14,0,Calvin,52.362221,0.0,0.0,25.456198,26.01915 +2020-07-10,14,0,Camus,100.299465,0.0,0.0,25.454758,26.017583 +2020-07-10,14,0,Carew,92.187009,0.0,0.0,25.455004,26.017851 +2020-07-10,14,0,Carrel,126.111828,0.0,0.0,25.455004,26.017851 +2020-07-10,14,0,Carter,129.061812,0.0,0.0,25.456377,26.019344 +2020-07-10,14,0,Caruso,143.811733,0.0,0.0,25.453632,26.016357 +2020-07-10,14,0,Cary,0.0,0.0,0.0,25.456918,26.019933 +2020-07-10,14,0,Caxton,0.0,0.0,0.0,25.445575,26.00759 +2020-07-10,14,0,Cecil,195.436458,0.0,0.0,25.445467,26.007473 +2020-07-10,14,0,Chain,143.074237,0.0,0.0,25.468818,26.032883 +2020-07-10,14,0,Chase,233.786254,0.0,0.0,25.494445,26.06077 +2020-07-10,14,0,Chifa,73.749607,0.0,0.0,25.485535,26.051074 +2020-07-10,14,0,Chuhsi,0.0,0.0,0.0,25.508652,26.07623 +2020-07-10,14,0,Clark,245.586191,0.0,0.0,25.520865,26.089519 +2020-07-10,14,0,Clay,133.486788,0.0,0.0,25.459546,26.022793 +2020-07-10,14,0,Clive,94.399497,0.0,0.0,25.436947,25.998201 +2020-07-10,14,0,Cobb,0.0,0.0,0.0,25.511563,26.079397 +2020-07-10,14,0,Cole,0.0,0.0,0.0,25.510419,26.078152 +2020-07-10,14,0,Comte,0.0,0.0,0.0,25.424518,25.984676 +2020-07-10,14,0,Curie,0.0,0.0,0.0,25.485369,26.050893 +2020-07-10,14,0,Curtiss,0.0,0.0,0.0,25.410227,25.969125 +2020-07-10,15,0,Abel,75.436568,0.0,0.0,18.532246,39.097383 +2020-07-10,15,0,Adams,67.753214,0.0,0.0,19.0723,20.846138 +2020-07-10,15,0,Adler,125.727614,0.0,0.0,21.930672,32.503709 +2020-07-10,15,0,Agricola,51.688019,0.0,0.0,21.132724,25.852643 +2020-07-10,15,0,Aiken,49.592559,0.0,0.0,29.539198,35.043187 +2020-07-10,15,0,Alber,94.994197,0.0,0.0,23.363781,28.434892 +2020-07-10,15,0,Alder,87.310843,0.0,0.0,23.661535,30.530112 +2020-07-10,15,0,Alger,119.441233,0.0,0.0,23.709177,30.474455 +2020-07-10,15,0,Ali,122.23518,0.0,0.0,22.820001,29.952459 +2020-07-10,15,0,Allen,136.204915,0.0,0.0,24.72722,30.845902 +2020-07-10,15,0,Anna,0.0,0.0,0.0,23.593261,30.614832 +2020-07-10,15,0,Archer,0.0,0.0,0.0,23.630767,30.572194 +2020-07-10,15,0,Arne,185.098987,0.0,0.0,23.558768,30.653669 +2020-07-10,15,0,Arnold,135.506429,0.0,0.0,23.440211,30.788561 +2020-07-10,15,0,Arthur,221.420298,0.0,0.0,23.115628,31.15711 +2020-07-10,15,0,Asser,69.848674,0.0,0.0,23.225213,31.032609 +2020-07-10,15,0,Aston,0.0,0.0,0.0,23.195707,31.066097 +2020-07-10,15,0,Astor,232.596086,0.0,0.0,23.181965,31.081695 +2020-07-10,15,0,Attar,126.426101,0.0,0.0,23.315762,30.92968 +2020-07-10,15,0,Attila,89.406303,0.0,0.0,23.394501,30.840177 +2020-07-10,15,0,Attlee,0.0,0.0,0.0,23.169204,31.096179 +2020-07-10,15,0,Aubrey,0.0,0.0,0.0,23.179621,31.084355 +2020-07-10,15,0,Austen,0.0,0.0,0.0,23.437807,30.79095 +2020-07-10,15,0,Avery,0.0,0.0,0.0,22.666716,31.66726 +2020-07-10,15,0,Bach,85.857031,0.0,0.0,23.502242,30.715921 +2020-07-10,15,0,Bacon,77.112333,0.0,0.0,23.501176,30.717157 +2020-07-10,15,0,Baffin,143.095051,0.0,0.0,23.535791,30.677012 +2020-07-10,15,0,Bailey,58.827965,0.0,0.0,23.498168,30.720646 +2020-07-10,15,0,Bain,56.443048,0.0,0.0,23.495199,30.72409 +2020-07-10,15,0,Bajer,108.116261,0.0,0.0,23.491106,30.728837 +2020-07-10,15,0,Baker,99.371563,0.0,0.0,23.491806,30.728025 +2020-07-10,15,0,Balch,135.940299,0.0,0.0,23.491806,30.728025 +2020-07-10,15,0,Balzac,139.120189,0.0,0.0,23.495705,30.723503 +2020-07-10,15,0,Banks,155.019639,0.0,0.0,23.487906,30.732548 +2020-07-10,15,0,Bardeen,0.0,0.0,0.0,23.483974,30.737189 +2020-07-10,15,0,Barkla,0.0,0.0,0.0,23.478287,30.743624 +2020-07-10,15,0,Barlow,210.667714,0.0,0.0,23.475253,30.747159 +2020-07-10,15,0,Barry,154.224666,0.0,0.0,23.483974,30.737395 +2020-07-10,15,0,Barton,252.006284,0.0,0.0,23.49665,30.723313 +2020-07-10,15,0,Basov,79.497251,0.0,0.0,23.483974,30.737684 +2020-07-10,15,0,Bates,0.0,0.0,0.0,23.479048,30.743441 +2020-07-10,15,0,Bayle,264.725844,0.0,0.0,23.483502,30.738347 +2020-07-10,15,0,Bede,143.890024,0.0,0.0,23.471184,30.752146 +2020-07-10,15,0,Beethoven,101.756481,0.0,0.0,23.460062,30.764722 +2020-07-10,15,0,Behring,0.0,0.0,0.0,23.487638,30.733618 +2020-07-10,15,0,Bell,0.0,0.0,0.0,23.484262,30.737479 +2020-07-10,15,0,Bloch,0.0,0.0,0.0,23.453945,30.771639 +2020-07-10,15,0,Bordet,0.0,0.0,0.0,23.511478,30.705772 +2020-07-10,15,0,Cabell,81.636993,0.0,0.0,23.303342,30.943292 +2020-07-10,15,0,Cabot,73.322114,0.0,0.0,23.303094,30.943575 +2020-07-10,15,0,Caesar,136.061655,0.0,0.0,23.311166,30.934374 +2020-07-10,15,0,Caine,55.936458,0.0,0.0,23.302392,30.944374 +2020-07-10,15,0,Calvin,53.668764,0.0,0.0,23.3017,30.945164 +2020-07-10,15,0,Camus,102.802139,0.0,0.0,23.300745,30.946252 +2020-07-10,15,0,Carew,94.48726,0.0,0.0,23.300909,30.946066 +2020-07-10,15,0,Carrel,129.258572,0.0,0.0,23.300909,30.946066 +2020-07-10,15,0,Carter,132.282164,0.0,0.0,23.301818,30.945029 +2020-07-10,15,0,Caruso,147.400126,0.0,0.0,23.299999,30.947102 +2020-07-10,15,0,Cary,0.0,0.0,0.0,23.302176,30.944621 +2020-07-10,15,0,Caxton,0.0,0.0,0.0,23.294662,30.953185 +2020-07-10,15,0,Cecil,200.312991,0.0,0.0,23.29459,30.953267 +2020-07-10,15,0,Chain,146.644228,0.0,0.0,23.31006,30.935635 +2020-07-10,15,0,Chase,239.619692,0.0,0.0,23.327039,30.916283 +2020-07-10,15,0,Chifa,75.589808,0.0,0.0,23.321135,30.923011 +2020-07-10,15,0,Chuhsi,0.0,0.0,0.0,23.336451,30.905555 +2020-07-10,15,0,Clark,251.714061,0.0,0.0,23.344542,30.896333 +2020-07-10,15,0,Clay,136.817553,0.0,0.0,23.303918,30.942636 +2020-07-10,15,0,Clive,96.754954,0.0,0.0,23.288946,30.959701 +2020-07-10,15,0,Cobb,0.0,0.0,0.0,23.338379,30.903357 +2020-07-10,15,0,Cole,0.0,0.0,0.0,23.337621,30.904221 +2020-07-10,15,0,Comte,0.0,0.0,0.0,23.280711,30.969086 +2020-07-10,15,0,Curie,0.0,0.0,0.0,23.321026,30.923137 +2020-07-10,15,0,Curtiss,0.0,0.0,0.0,23.271243,30.979877 +2020-07-10,16,0,Abel,72.057344,0.0,0.0,18.388844,18.072542 +2020-07-10,16,0,Adams,64.71817,0.0,0.0,19.0723,19.0723 +2020-07-10,16,0,Adler,120.095574,0.0,0.0,22.689662,25.144134 +2020-07-10,16,0,Agricola,49.372625,0.0,0.0,21.679833,23.424626 +2020-07-10,16,0,Aiken,47.371032,0.0,0.0,32.318497,41.101004 +2020-07-10,16,0,Alber,90.738878,0.0,0.0,24.503308,28.116924 +2020-07-10,16,0,Alder,83.399704,0.0,0.0,24.880125,28.75577 +2020-07-10,16,0,Alger,114.090795,0.0,0.0,24.940417,28.855171 +2020-07-10,16,0,Ali,116.759586,0.0,0.0,23.815136,26.988736 +2020-07-10,16,0,Allen,130.103539,0.0,0.0,26.228785,30.990477 +2020-07-10,16,0,Anna,0.0,0.0,0.0,24.793722,28.61336 +2020-07-10,16,0,Archer,0.0,0.0,0.0,24.841187,28.691621 +2020-07-10,16,0,Arne,176.807373,0.0,0.0,24.75007,28.541382 +2020-07-10,16,0,Arnold,129.436341,0.0,0.0,24.600033,28.293999 +2020-07-10,16,0,Arthur,211.50165,0.0,0.0,24.189262,27.616709 +2020-07-10,16,0,Asser,66.719763,0.0,0.0,24.327945,27.845372 +2020-07-10,16,0,Aston,0.0,0.0,0.0,24.290605,27.783805 +2020-07-10,16,0,Astor,222.176812,0.0,0.0,24.273214,27.755129 +2020-07-10,16,0,Attar,120.762772,0.0,0.0,24.442538,28.034316 +2020-07-10,16,0,Attila,85.401297,0.0,0.0,24.542185,28.198615 +2020-07-10,16,0,Attlee,0.0,0.0,0.0,24.257064,27.728502 +2020-07-10,16,0,Aubrey,0.0,0.0,0.0,24.270248,27.75024 +2020-07-10,16,0,Austen,0.0,0.0,0.0,24.59699,28.28898 +2020-07-10,16,0,Avery,0.0,0.0,0.0,23.621149,26.679991 +2020-07-10,16,0,Bach,85.653417,0.0,0.0,24.678535,28.423419 +2020-07-10,16,0,Bacon,76.929458,0.0,0.0,24.677186,28.421195 +2020-07-10,16,0,Baffin,142.755695,0.0,0.0,24.720992,28.493418 +2020-07-10,16,0,Bailey,58.688452,0.0,0.0,24.673379,28.414919 +2020-07-10,16,0,Bain,56.309191,0.0,0.0,24.669621,28.408723 +2020-07-10,16,0,Bajer,107.859859,0.0,0.0,24.664442,28.400184 +2020-07-10,16,0,Baker,99.135899,0.0,0.0,24.665327,28.401644 +2020-07-10,16,0,Balch,135.61791,0.0,0.0,24.665327,28.401644 +2020-07-10,16,0,Balzac,138.790259,0.0,0.0,24.670262,28.40978 +2020-07-10,16,0,Banks,154.652003,0.0,0.0,24.660393,28.393508 +2020-07-10,16,0,Bardeen,0.0,0.0,0.0,24.655416,28.385305 +2020-07-10,16,0,Barkla,0.0,0.0,0.0,24.648218,28.373436 +2020-07-10,16,0,Barlow,210.168107,0.0,0.0,24.644379,28.367106 +2020-07-10,16,0,Barry,153.858916,0.0,0.0,24.655417,28.385306 +2020-07-10,16,0,Barton,251.408641,0.0,0.0,24.671457,28.411757 +2020-07-10,16,0,Basov,79.30872,0.0,0.0,24.655417,28.385308 +2020-07-10,16,0,Bates,0.0,0.0,0.0,24.649182,28.375029 +2020-07-10,16,0,Bayle,264.098036,0.0,0.0,24.654819,28.384323 +2020-07-10,16,0,Bede,143.548782,0.0,0.0,24.63923,28.358619 +2020-07-10,16,0,Beethoven,101.515161,0.0,0.0,24.625155,28.335411 +2020-07-10,16,0,Behring,0.0,0.0,0.0,24.660053,28.392954 +2020-07-10,16,0,Bell,0.0,0.0,0.0,24.65578,28.385908 +2020-07-10,16,0,Bloch,0.0,0.0,0.0,24.617414,28.322647 +2020-07-10,16,0,Bordet,0.0,0.0,0.0,24.690223,28.442693 +2020-07-10,16,0,Cabell,80.923561,0.0,0.0,24.426821,28.008397 +2020-07-10,16,0,Cabot,72.681346,0.0,0.0,24.426506,28.007878 +2020-07-10,16,0,Caesar,134.872601,0.0,0.0,24.436722,28.024722 +2020-07-10,16,0,Caine,55.447625,0.0,0.0,24.425618,28.006415 +2020-07-10,16,0,Calvin,53.199748,0.0,0.0,24.424742,28.004969 +2020-07-10,16,0,Camus,101.903743,0.0,0.0,24.423534,28.002978 +2020-07-10,16,0,Carew,93.661529,0.0,0.0,24.423741,28.003318 +2020-07-10,16,0,Carrel,128.128971,0.0,0.0,24.423741,28.003318 +2020-07-10,16,0,Carter,131.12614,0.0,0.0,24.424892,28.005216 +2020-07-10,16,0,Caruso,146.111985,0.0,0.0,24.42259,28.001421 +2020-07-10,16,0,Cary,0.0,0.0,0.0,24.425345,28.005964 +2020-07-10,16,0,Caxton,0.0,0.0,0.0,24.415835,27.990284 +2020-07-10,16,0,Cecil,198.562441,0.0,0.0,24.415745,27.990135 +2020-07-10,16,0,Chain,145.362693,0.0,0.0,24.435322,28.022414 +2020-07-10,16,0,Chase,237.525637,0.0,0.0,24.456809,28.057842 +2020-07-10,16,0,Chifa,74.929223,0.0,0.0,24.449339,28.045524 +2020-07-10,16,0,Chuhsi,0.0,0.0,0.0,24.468721,28.077482 +2020-07-10,16,0,Clark,249.514313,0.0,0.0,24.47896,28.094365 +2020-07-10,16,0,Clay,135.621894,0.0,0.0,24.427549,28.009597 +2020-07-10,16,0,Clive,95.909405,0.0,0.0,24.408601,27.978356 +2020-07-10,16,0,Cobb,0.0,0.0,0.0,24.471161,28.081506 +2020-07-10,16,0,Cole,0.0,0.0,0.0,24.470202,28.079924 +2020-07-10,16,0,Comte,0.0,0.0,0.0,24.39818,27.961174 +2020-07-10,16,0,Curie,0.0,0.0,0.0,24.449199,28.045295 +2020-07-10,16,0,Curtiss,0.0,0.0,0.0,24.386199,27.941419 +2020-07-10,17,0,Abel,70.09125,0.0,0.0,18.163988,40.142189 +2020-07-10,17,0,Adams,62.952327,0.0,0.0,19.0723,20.846138 +2020-07-10,17,0,Adler,116.818751,0.0,0.0,23.879773,33.206063 +2020-07-10,17,0,Agricola,48.025486,0.0,0.0,22.537711,26.135583 +2020-07-10,17,0,Aiken,46.078507,0.0,0.0,36.676491,35.848988 +2020-07-10,17,0,Alber,88.263056,0.0,0.0,26.290108,28.858627 +2020-07-10,17,0,Alder,81.124132,0.0,0.0,26.790897,30.530112 +2020-07-10,17,0,Alger,110.977813,0.0,0.0,26.871026,30.702514 +2020-07-10,17,0,Ali,113.573785,0.0,0.0,25.375528,30.467097 +2020-07-10,17,0,Allen,126.553647,0.0,0.0,28.583265,31.404262 +2020-07-10,17,0,Anna,0.0,0.0,0.0,26.676068,31.231655 +2020-07-10,17,0,Archer,0.0,0.0,0.0,26.739149,31.191193 +2020-07-10,17,0,Arne,171.983161,0.0,0.0,26.618054,31.32503 +2020-07-10,17,0,Arnold,125.904654,0.0,0.0,26.418655,31.436068 +2020-07-10,17,0,Arthur,205.7308,0.0,0.0,25.872741,31.853211 +2020-07-10,17,0,Asser,64.899306,0.0,0.0,26.057051,31.72322 +2020-07-10,17,0,Aston,0.0,0.0,0.0,26.007426,31.763181 +2020-07-10,17,0,Astor,216.114689,0.0,0.0,25.984312,31.781794 +2020-07-10,17,0,Attar,117.467744,0.0,0.0,26.209345,31.62394 +2020-07-10,17,0,Attila,83.071112,0.0,0.0,26.341775,31.53761 +2020-07-10,17,0,Attlee,0.0,0.0,0.0,25.96285,31.799077 +2020-07-10,17,0,Aubrey,0.0,0.0,0.0,25.980371,31.784967 +2020-07-10,17,0,Austen,0.0,0.0,0.0,26.414612,31.490128 +2020-07-10,17,0,Avery,0.0,0.0,0.0,25.117719,32.36573 +2020-07-10,17,0,Bach,85.263158,0.0,0.0,26.522984,31.686361 +2020-07-10,17,0,Bacon,76.578947,0.0,0.0,26.521191,31.68385 +2020-07-10,17,0,Baffin,142.105263,0.0,0.0,26.57941,31.765369 +2020-07-10,17,0,Bailey,58.421053,0.0,0.0,26.516132,31.676767 +2020-07-10,17,0,Bain,56.052632,0.0,0.0,26.511138,31.669773 +2020-07-10,17,0,Bajer,107.368421,0.0,0.0,26.504254,31.660134 +2020-07-10,17,0,Baker,98.684211,0.0,0.0,26.505431,31.661783 +2020-07-10,17,0,Balch,135.0,0.0,0.0,26.505431,31.661783 +2020-07-10,17,0,Balzac,138.157895,0.0,0.0,26.51199,31.670966 +2020-07-10,17,0,Banks,153.947368,0.0,0.0,26.498873,31.6526 +2020-07-10,17,0,Bardeen,0.0,0.0,0.0,26.49226,31.631257 +2020-07-10,17,0,Barkla,0.0,0.0,0.0,26.482694,31.642027 +2020-07-10,17,0,Barlow,209.210526,0.0,0.0,26.477591,31.632398 +2020-07-10,17,0,Barry,153.157895,0.0,0.0,26.49226,31.600469 +2020-07-10,17,0,Barton,250.263158,0.0,0.0,26.513578,31.537723 +2020-07-10,17,0,Basov,78.947368,0.0,0.0,26.49226,31.557219 +2020-07-10,17,0,Bates,0.0,0.0,0.0,26.483974,31.539187 +2020-07-10,17,0,Bayle,262.894737,0.0,0.0,26.491465,31.538816 +2020-07-10,17,0,Bede,142.894737,0.0,0.0,26.470748,31.582687 +2020-07-10,17,0,Beethoven,101.052632,0.0,0.0,26.452042,31.604834 +2020-07-10,17,0,Behring,0.0,0.0,0.0,26.498422,31.538472 +2020-07-10,17,0,Bell,0.0,0.0,0.0,26.492743,31.538753 +2020-07-10,17,0,Bloch,0.0,0.0,0.0,26.441754,31.617014 +2020-07-10,17,0,Bordet,0.0,0.0,0.0,26.538518,31.623965 +2020-07-10,17,0,Cabell,76.065429,0.0,0.0,26.188456,31.713309 +2020-07-10,17,0,Cabot,68.318025,0.0,0.0,26.188038,31.713468 +2020-07-10,17,0,Caesar,126.775716,0.0,0.0,26.201615,31.708306 +2020-07-10,17,0,Caine,52.118905,0.0,0.0,26.186858,31.713916 +2020-07-10,17,0,Calvin,50.005977,0.0,0.0,26.185694,31.714359 +2020-07-10,17,0,Camus,95.786096,0.0,0.0,26.184088,31.71497 +2020-07-10,17,0,Carew,88.038691,0.0,0.0,26.184363,31.714865 +2020-07-10,17,0,Carrel,120.43693,0.0,0.0,26.184363,31.714865 +2020-07-10,17,0,Carter,123.254168,0.0,0.0,26.185892,31.714284 +2020-07-10,17,0,Caruso,137.340359,0.0,0.0,26.182833,31.715447 +2020-07-10,17,0,Cary,0.0,0.0,0.0,26.186495,31.714055 +2020-07-10,17,0,Caxton,0.0,0.0,0.0,26.173856,31.718859 +2020-07-10,17,0,Cecil,186.642026,0.0,0.0,26.173736,31.718905 +2020-07-10,17,0,Chain,136.636049,0.0,0.0,26.199755,31.709014 +2020-07-10,17,0,Chase,223.266121,0.0,0.0,26.228311,31.698158 +2020-07-10,17,0,Chifa,70.430953,0.0,0.0,26.218382,31.701932 +2020-07-10,17,0,Chuhsi,0.0,0.0,0.0,26.244142,31.692139 +2020-07-10,17,0,Clark,234.535074,0.0,0.0,26.25775,31.686966 +2020-07-10,17,0,Clay,127.480025,0.0,0.0,26.189424,31.712941 +2020-07-10,17,0,Clive,90.15162,0.0,0.0,26.164242,31.722514 +2020-07-10,17,0,Cobb,0.0,0.0,0.0,26.247385,31.690906 +2020-07-10,17,0,Cole,0.0,0.0,0.0,26.24611,31.691391 +2020-07-10,17,0,Comte,0.0,0.0,0.0,26.150393,31.727779 +2020-07-10,17,0,Curie,0.0,0.0,0.0,26.218197,31.702002 +2020-07-10,17,0,Curtiss,0.0,0.0,0.0,26.134469,31.733833 +2020-07-10,18,0,Abel,64.451018,0.0,0.0,32.050138,44.139591 +2020-07-10,18,0,Adams,57.886563,0.0,0.0,20.846138,19.364912 +2020-07-10,18,0,Adler,107.418364,0.0,0.0,28.00244,35.314218 +2020-07-10,18,0,Agricola,44.160883,0.0,0.0,23.919511,26.147785 +2020-07-10,18,0,Aiken,42.370577,0.0,0.0,29.561365,38.611611 +2020-07-10,18,0,Alber,81.160542,0.0,0.0,25.504691,29.627892 +2020-07-10,18,0,Alder,74.596086,0.0,0.0,26.790897,30.530112 +2020-07-10,18,0,Alger,102.047446,0.0,0.0,26.75673,31.280511 +2020-07-10,18,0,Ali,104.43452,0.0,0.0,26.436289,31.702263 +2020-07-10,18,0,Allen,116.369894,0.0,0.0,26.984753,32.888526 +2020-07-10,18,0,Anna,0.0,0.0,0.0,26.842904,32.83093 +2020-07-10,18,0,Archer,0.0,0.0,0.0,26.81673,32.789543 +2020-07-10,18,0,Arne,158.143702,0.0,0.0,26.866745,33.070503 +2020-07-10,18,0,Arnold,115.773125,0.0,0.0,26.949552,33.140828 +2020-07-10,18,0,Arthur,189.175674,0.0,0.0,27.175796,33.739316 +2020-07-10,18,0,Asser,59.676869,0.0,0.0,27.099368,33.576161 +2020-07-10,18,0,Aston,0.0,0.0,0.0,27.119925,33.637891 +2020-07-10,18,0,Astor,198.723973,0.0,0.0,27.1295,33.666643 +2020-07-10,18,0,Attar,108.015133,0.0,0.0,27.036182,33.470522 +2020-07-10,18,0,Attila,76.386392,0.0,0.0,26.981238,33.378662 +2020-07-10,18,0,Attlee,0.0,0.0,0.0,27.138391,33.693341 +2020-07-10,18,0,Aubrey,0.0,0.0,0.0,27.131133,33.671546 +2020-07-10,18,0,Austen,0.0,0.0,0.0,26.951019,33.328138 +2020-07-10,18,0,Avery,0.0,0.0,0.0,27.488964,34.335956 +2020-07-10,18,0,Bach,80.393401,0.0,0.0,26.90496,34.210512 +2020-07-10,18,0,Bacon,72.205185,0.0,0.0,26.905719,34.198556 +2020-07-10,18,0,Baffin,133.989002,0.0,0.0,26.881075,34.586825 +2020-07-10,18,0,Bailey,55.084368,0.0,0.0,26.907861,34.164817 +2020-07-10,18,0,Bain,52.851218,0.0,0.0,26.909975,34.131505 +2020-07-10,18,0,Bajer,101.236135,0.0,0.0,26.912889,34.085598 +2020-07-10,18,0,Baker,93.047918,0.0,0.0,26.912391,34.093449 +2020-07-10,18,0,Balch,127.289552,0.0,0.0,26.912391,34.093449 +2020-07-10,18,0,Balzac,130.267086,0.0,0.0,26.909615,34.137188 +2020-07-10,18,0,Banks,145.154753,0.0,0.0,26.915167,34.049711 +2020-07-10,18,0,Bardeen,0.0,0.0,0.0,26.918016,33.962254 +2020-07-10,18,0,Barkla,0.0,0.0,0.0,26.921966,33.985158 +2020-07-10,18,0,Barlow,197.261587,0.0,0.0,26.924137,33.942214 +2020-07-10,18,0,Barry,144.410369,0.0,0.0,26.918142,33.851789 +2020-07-10,18,0,Barton,235.969521,0.0,0.0,26.909498,33.661736 +2020-07-10,18,0,Basov,74.438335,0.0,0.0,26.91832,33.696611 +2020-07-10,18,0,Bates,0.0,0.0,0.0,26.921854,33.61828 +2020-07-10,18,0,Bayle,247.879654,0.0,0.0,26.918727,33.629277 +2020-07-10,18,0,Bede,134.733386,0.0,0.0,26.927198,33.752596 +2020-07-10,18,0,Beethoven,95.281068,0.0,0.0,26.934918,33.801279 +2020-07-10,18,0,Behring,0.0,0.0,0.0,26.915824,33.639488 +2020-07-10,18,0,Bell,0.0,0.0,0.0,26.918194,33.631152 +2020-07-10,18,0,Bloch,0.0,0.0,0.0,26.939164,33.828054 +2020-07-10,18,0,Bordet,0.0,0.0,0.0,26.89873,34.012199 +2020-07-10,18,0,Cabell,71.020447,0.0,0.0,27.044538,33.756803 +2020-07-10,18,0,Cabot,63.786883,0.0,0.0,27.044712,33.756685 +2020-07-10,18,0,Caesar,118.367411,0.0,0.0,27.039063,33.760504 +2020-07-10,18,0,Caine,48.662158,0.0,0.0,27.045202,33.756353 +2020-07-10,18,0,Calvin,46.689368,0.0,0.0,27.045687,33.756026 +2020-07-10,18,0,Camus,89.433155,0.0,0.0,27.046355,33.755574 +2020-07-10,18,0,Carew,82.199591,0.0,0.0,27.046241,33.755651 +2020-07-10,18,0,Carrel,112.449041,0.0,0.0,27.046241,33.755651 +2020-07-10,18,0,Carter,115.079427,0.0,0.0,27.045604,33.756081 +2020-07-10,18,0,Caruso,128.231362,0.0,0.0,27.046877,33.755221 +2020-07-10,18,0,Cary,0.0,0.0,0.0,27.045354,33.756251 +2020-07-10,18,0,Caxton,0.0,0.0,0.0,27.050611,33.752696 +2020-07-10,18,0,Cecil,174.263133,0.0,0.0,27.050661,33.752662 +2020-07-10,18,0,Chain,127.573765,0.0,0.0,27.039837,33.759981 +2020-07-10,18,0,Chase,208.458163,0.0,0.0,27.027958,33.768014 +2020-07-10,18,0,Chifa,65.759673,0.0,0.0,27.032088,33.765221 +2020-07-10,18,0,Chuhsi,0.0,0.0,0.0,27.021372,33.772467 +2020-07-10,18,0,Clark,218.979711,0.0,0.0,27.015711,33.776294 +2020-07-10,18,0,Clay,119.025008,0.0,0.0,27.044135,33.757075 +2020-07-10,18,0,Clive,84.172381,0.0,0.0,27.054611,33.749991 +2020-07-10,18,0,Cobb,0.0,0.0,0.0,27.020023,33.773379 +2020-07-10,18,0,Cole,0.0,0.0,0.0,27.020553,33.77302 +2020-07-10,18,0,Comte,0.0,0.0,0.0,27.060372,33.746096 +2020-07-10,18,0,Curie,0.0,0.0,0.0,27.032165,33.765169 +2020-07-10,18,0,Curtiss,0.0,0.0,0.0,27.066997,33.741616 +2020-07-10,19,0,Abel,62.951872,0.0,0.0,32.983808,42.917496 +2020-07-10,19,0,Adams,56.540107,0.0,0.0,20.846138,20.846138 +2020-07-10,19,0,Adler,104.919786,0.0,0.0,28.630085,35.071718 +2020-07-10,19,0,Agricola,43.13369,0.0,0.0,24.172354,26.887152 +2020-07-10,19,0,Aiken,41.385027,0.0,0.0,30.281453,37.989427 +2020-07-10,19,0,Alber,79.272727,0.0,0.0,25.883354,29.98419 +2020-07-10,19,0,Alder,72.860963,0.0,0.0,26.790897,30.530112 +2020-07-10,19,0,Alger,99.673797,0.0,0.0,26.96053,31.308304 +2020-07-10,19,0,Ali,102.005348,0.0,0.0,26.896185,31.834125 +2020-07-10,19,0,Allen,113.663102,0.0,0.0,27.483719,32.887426 +2020-07-10,19,0,Anna,0.0,0.0,0.0,27.394116,32.870116 +2020-07-10,19,0,Archer,0.0,0.0,0.0,27.369886,32.835435 +2020-07-10,19,0,Arne,154.465241,0.0,0.0,27.466694,33.108359 +2020-07-10,19,0,Arnold,113.080214,0.0,0.0,27.528184,33.156035 +2020-07-10,19,0,Arthur,184.775401,0.0,0.0,27.797853,33.702258 +2020-07-10,19,0,Asser,58.28877,0.0,0.0,27.716518,33.557683 +2020-07-10,19,0,Aston,0.0,0.0,0.0,27.74286,33.614838 +2020-07-10,19,0,Astor,194.101604,0.0,0.0,27.755129,33.641458 +2020-07-10,19,0,Attar,105.502674,0.0,0.0,27.656594,33.468096 +2020-07-10,19,0,Attila,74.609626,0.0,0.0,27.604485,33.390194 +2020-07-10,19,0,Attlee,0.0,0.0,0.0,27.766522,33.666178 +2020-07-10,19,0,Aubrey,0.0,0.0,0.0,27.757222,33.645998 +2020-07-10,19,0,Austen,0.0,0.0,0.0,27.575825,33.347347 +2020-07-10,19,0,Avery,0.0,0.0,0.0,28.113138,34.221069 +2020-07-10,19,0,Bach,80.444305,0.0,0.0,27.772174,34.264128 +2020-07-10,19,0,Bacon,72.250903,0.0,0.0,27.769585,34.251667 +2020-07-10,19,0,Baffin,134.073841,0.0,0.0,27.853664,34.656361 +2020-07-10,19,0,Bailey,55.119246,0.0,0.0,27.762279,34.2165 +2020-07-10,19,0,Bain,52.884682,0.0,0.0,27.755066,34.18178 +2020-07-10,19,0,Bajer,101.300236,0.0,0.0,27.745125,34.13393 +2020-07-10,19,0,Baker,93.106834,0.0,0.0,27.746825,34.142113 +2020-07-10,19,0,Balch,127.370149,0.0,0.0,27.746825,34.142113 +2020-07-10,19,0,Balzac,130.349568,0.0,0.0,27.756296,34.187702 +2020-07-10,19,0,Banks,145.246661,0.0,0.0,27.737353,34.096525 +2020-07-10,19,0,Bardeen,0.0,0.0,0.0,27.716983,34.006162 +2020-07-10,19,0,Barkla,0.0,0.0,0.0,27.724807,34.028447 +2020-07-10,19,0,Barlow,197.386489,0.0,0.0,27.715213,33.98385 +2020-07-10,19,0,Barry,144.501807,0.0,0.0,27.689412,33.893045 +2020-07-10,19,0,Barton,236.118932,0.0,0.0,27.637279,33.701032 +2020-07-10,19,0,Basov,74.485467,0.0,0.0,27.650681,33.734142 +2020-07-10,19,0,Bates,0.0,0.0,0.0,27.632957,33.652919 +2020-07-10,19,0,Bayle,248.036606,0.0,0.0,27.634051,33.665094 +2020-07-10,19,0,Bede,134.818696,0.0,0.0,27.669395,33.788845 +2020-07-10,19,0,Beethoven,95.341398,0.0,0.0,27.685667,33.836413 +2020-07-10,19,0,Behring,0.0,0.0,0.0,27.635066,33.6764 +2020-07-10,19,0,Bell,0.0,0.0,0.0,27.634237,33.66717 +2020-07-10,19,0,Bloch,0.0,0.0,0.0,27.694617,33.862576 +2020-07-10,19,0,Bordet,0.0,0.0,0.0,27.719255,34.062952 +2020-07-10,19,0,Cabell,68.625354,0.0,0.0,27.732648,33.758699 +2020-07-10,19,0,Cabot,61.635735,0.0,0.0,27.732711,33.758527 +2020-07-10,19,0,Caesar,114.37559,0.0,0.0,27.730673,33.764095 +2020-07-10,19,0,Caine,47.021076,0.0,0.0,27.732888,33.758043 +2020-07-10,19,0,Calvin,45.114816,0.0,0.0,27.733063,33.757566 +2020-07-10,19,0,Camus,86.417112,0.0,0.0,27.733304,33.756907 +2020-07-10,19,0,Carew,79.427493,0.0,0.0,27.733263,33.75702 +2020-07-10,19,0,Carrel,108.65681,0.0,0.0,27.733263,33.75702 +2020-07-10,19,0,Carter,111.19849,0.0,0.0,27.733033,33.757647 +2020-07-10,19,0,Caruso,123.906889,0.0,0.0,27.733493,33.756393 +2020-07-10,19,0,Cary,0.0,0.0,0.0,27.732943,33.757894 +2020-07-10,19,0,Caxton,0.0,0.0,0.0,27.734841,33.752711 +2020-07-10,19,0,Cecil,168.386285,0.0,0.0,27.734859,33.752662 +2020-07-10,19,0,Chain,123.271469,0.0,0.0,27.730952,33.763332 +2020-07-10,19,0,Chase,201.428122,0.0,0.0,27.726664,33.775043 +2020-07-10,19,0,Chifa,63.541994,0.0,0.0,27.728155,33.770971 +2020-07-10,19,0,Chuhsi,0.0,0.0,0.0,27.724288,33.781535 +2020-07-10,19,0,Clark,211.594841,0.0,0.0,27.722244,33.787116 +2020-07-10,19,0,Clay,115.01101,0.0,0.0,27.732503,33.759095 +2020-07-10,19,0,Clive,81.333753,0.0,0.0,27.736284,33.748769 +2020-07-10,19,0,Cobb,0.0,0.0,0.0,27.723801,33.782865 +2020-07-10,19,0,Cole,0.0,0.0,0.0,27.723992,33.782342 +2020-07-10,19,0,Comte,0.0,0.0,0.0,27.738364,33.743089 +2020-07-10,19,0,Curie,0.0,0.0,0.0,27.728183,33.770896 +2020-07-10,19,0,Curtiss,0.0,0.0,0.0,27.740754,33.736559 +2020-07-10,20,0,Abel,61.55103,0.0,0.0,34.402316,43.949423 +2020-07-10,20,0,Adams,55.281943,0.0,0.0,19.0723,19.0723 +2020-07-10,20,0,Adler,102.58505,0.0,0.0,28.890233,35.071994 +2020-07-10,20,0,Agricola,42.173854,0.0,0.0,23.274738,25.884848 +2020-07-10,20,0,Aiken,40.464103,0.0,0.0,30.991835,38.401661 +2020-07-10,20,0,Alber,77.508704,0.0,0.0,25.438416,29.382469 +2020-07-10,20,0,Alder,71.239618,0.0,0.0,26.790897,30.530112 +2020-07-10,20,0,Alger,97.455797,0.0,0.0,26.917423,31.180814 +2020-07-10,20,0,Ali,99.735465,0.0,0.0,26.716105,31.463627 +2020-07-10,20,0,Allen,111.133804,0.0,0.0,27.460984,32.658096 +2020-07-10,20,0,Anna,0.0,0.0,0.0,27.320617,32.568391 +2020-07-10,20,0,Archer,0.0,0.0,0.0,27.288263,32.524781 +2020-07-10,20,0,Arne,151.02799,0.0,0.0,27.392438,32.785698 +2020-07-10,20,0,Arnold,110.563887,0.0,0.0,27.48208,32.870351 +2020-07-10,20,0,Arthur,180.663671,0.0,0.0,27.812244,33.45909 +2020-07-10,20,0,Asser,56.991694,0.0,0.0,27.708896,33.294533 +2020-07-10,20,0,Aston,0.0,0.0,0.0,27.740438,33.354493 +2020-07-10,20,0,Astor,189.782342,0.0,0.0,27.755129,33.38242 +2020-07-10,20,0,Attar,103.154966,0.0,0.0,27.629591,33.184216 +2020-07-10,20,0,Attila,72.949369,0.0,0.0,27.56063,33.088287 +2020-07-10,20,0,Attlee,0.0,0.0,0.0,27.768771,33.408353 +2020-07-10,20,0,Aubrey,0.0,0.0,0.0,27.757635,33.387183 +2020-07-10,20,0,Austen,0.0,0.0,0.0,27.522702,33.035526 +2020-07-10,20,0,Avery,0.0,0.0,0.0,28.220632,34.070127 +2020-07-10,20,0,Bach,77.390102,0.0,0.0,27.66616,33.79905 +2020-07-10,20,0,Bacon,69.507777,0.0,0.0,27.664338,33.788741 +2020-07-10,20,0,Baffin,128.983504,0.0,0.0,27.723505,34.123508 +2020-07-10,20,0,Bailey,53.026551,0.0,0.0,27.659197,33.759651 +2020-07-10,20,0,Bain,50.876826,0.0,0.0,27.654121,33.73093 +2020-07-10,20,0,Bajer,97.454203,0.0,0.0,27.647125,33.691349 +2020-07-10,20,0,Baker,89.571877,0.0,0.0,27.648322,33.698118 +2020-07-10,20,0,Balch,122.534328,0.0,0.0,27.648322,33.698118 +2020-07-10,20,0,Balzac,125.400628,0.0,0.0,27.654987,33.735829 +2020-07-10,20,0,Banks,139.732129,0.0,0.0,27.641656,33.660406 +2020-07-10,20,0,Bardeen,0.0,0.0,0.0,27.625886,33.584258 +2020-07-10,20,0,Barkla,0.0,0.0,0.0,27.634263,33.605492 +2020-07-10,20,0,Barlow,189.89238,0.0,0.0,27.627217,33.568313 +2020-07-10,20,0,Barry,139.015554,0.0,0.0,27.602826,33.487119 +2020-07-10,20,0,Barton,227.154281,0.0,0.0,27.555137,33.317556 +2020-07-10,20,0,Basov,71.657502,0.0,0.0,27.570431,33.350663 +2020-07-10,20,0,Bates,0.0,0.0,0.0,27.557194,33.282729 +2020-07-10,20,0,Bayle,238.619482,0.0,0.0,27.556674,33.291542 +2020-07-10,20,0,Bede,129.700079,0.0,0.0,27.590206,33.402354 +2020-07-10,20,0,Beethoven,91.721603,0.0,0.0,27.6074,33.447303 +2020-07-10,20,0,Behring,0.0,0.0,0.0,27.55619,33.299726 +2020-07-10,20,0,Bell,0.0,0.0,0.0,27.556585,33.293045 +2020-07-10,20,0,Bloch,0.0,0.0,0.0,27.616858,33.472026 +2020-07-10,20,0,Bordet,0.0,0.0,0.0,27.618922,33.622885 +2020-07-10,20,0,Cabell,64.956276,0.0,0.0,27.697206,33.438348 +2020-07-10,20,0,Cabot,58.340359,0.0,0.0,27.697339,33.438293 +2020-07-10,20,0,Caesar,108.260459,0.0,0.0,27.693032,33.440098 +2020-07-10,20,0,Caine,44.507078,0.0,0.0,27.697713,33.438136 +2020-07-10,20,0,Calvin,42.702737,0.0,0.0,27.698083,33.437981 +2020-07-10,20,0,Camus,81.796791,0.0,0.0,27.698592,33.437768 +2020-07-10,20,0,Carew,75.180874,0.0,0.0,27.698505,33.437804 +2020-07-10,20,0,Carrel,102.847436,0.0,0.0,27.698505,33.437804 +2020-07-10,20,0,Carter,105.253224,0.0,0.0,27.69802,33.438007 +2020-07-10,20,0,Caruso,117.282164,0.0,0.0,27.69899,33.437601 +2020-07-10,20,0,Cary,0.0,0.0,0.0,27.697829,33.438088 +2020-07-10,20,0,Caxton,0.0,0.0,0.0,27.701838,33.436407 +2020-07-10,20,0,Cecil,159.383454,0.0,0.0,27.701876,33.436391 +2020-07-10,20,0,Chain,116.680717,0.0,0.0,27.693622,33.439851 +2020-07-10,20,0,Chase,190.658698,0.0,0.0,27.684564,33.443647 +2020-07-10,20,0,Chifa,60.1447,0.0,0.0,27.687714,33.442327 +2020-07-10,20,0,Chuhsi,0.0,0.0,0.0,27.679542,33.445752 +2020-07-10,20,0,Clark,200.28185,0.0,0.0,27.675226,33.447561 +2020-07-10,20,0,Clay,108.861906,0.0,0.0,27.696899,33.438477 +2020-07-10,20,0,Clive,76.985215,0.0,0.0,27.704887,33.435129 +2020-07-10,20,0,Cobb,0.0,0.0,0.0,27.678514,33.446183 +2020-07-10,20,0,Cole,0.0,0.0,0.0,27.678918,33.446014 +2020-07-10,20,0,Comte,0.0,0.0,0.0,27.709281,33.433288 +2020-07-10,20,0,Curie,0.0,0.0,0.0,27.687772,33.442303 +2020-07-10,20,0,Curtiss,0.0,0.0,0.0,27.714332,33.431171 +2020-07-10,21,0,Abel,57.704858,0.0,0.0,33.619427,34.554843 +2020-07-10,21,0,Adams,51.827512,0.0,0.0,19.0723,19.0723 +2020-07-10,21,0,Adler,96.174764,0.0,0.0,28.363949,28.961425 +2020-07-10,21,0,Agricola,39.538514,0.0,0.0,23.062728,23.319322 +2020-07-10,21,0,Aiken,37.935601,0.0,0.0,30.388036,31.115666 +2020-07-10,21,0,Alber,72.665377,0.0,0.0,25.120905,25.509845 +2020-07-10,21,0,Alder,66.78803,0.0,0.0,26.790897,27.287222 +2020-07-10,21,0,Alger,91.366026,0.0,0.0,26.746535,27.240007 +2020-07-10,21,0,Ali,93.503243,0.0,0.0,26.330479,26.797198 +2020-07-10,21,0,Allen,104.189328,0.0,0.0,27.042597,27.555106 +2020-07-10,21,0,Anna,0.0,0.0,0.0,26.858422,27.359089 +2020-07-10,21,0,Archer,0.0,0.0,0.0,26.824438,27.322919 +2020-07-10,21,0,Arne,141.590625,0.0,0.0,26.889378,27.392035 +2020-07-10,21,0,Arnold,103.655023,0.0,0.0,26.996893,27.506464 +2020-07-10,21,0,Arthur,169.374445,0.0,0.0,27.290644,27.819104 +2020-07-10,21,0,Asser,53.430424,0.0,0.0,27.191411,27.71349 +2020-07-10,21,0,Aston,0.0,0.0,0.0,27.218103,27.741898 +2020-07-10,21,0,Astor,177.923313,0.0,0.0,27.230535,27.755129 +2020-07-10,21,0,Attar,96.709068,0.0,0.0,27.109372,27.626175 +2020-07-10,21,0,Attila,68.390943,0.0,0.0,27.038033,27.550249 +2020-07-10,21,0,Attlee,0.0,0.0,0.0,27.242079,27.767416 +2020-07-10,21,0,Aubrey,0.0,0.0,0.0,27.232655,27.757386 +2020-07-10,21,0,Austen,0.0,0.0,0.0,26.998797,27.50849 +2020-07-10,21,0,Avery,0.0,0.0,0.0,27.697258,28.251864 +2020-07-10,21,0,Bach,73.199057,0.0,0.0,26.938996,27.444843 +2020-07-10,21,0,Bacon,65.743598,0.0,0.0,26.939981,27.445892 +2020-07-10,21,0,Baffin,121.998429,0.0,0.0,26.907983,27.411836 +2020-07-10,21,0,Bailey,50.15491,0.0,0.0,26.942761,27.448851 +2020-07-10,21,0,Bain,48.121603,0.0,0.0,26.945507,27.451773 +2020-07-10,21,0,Bajer,92.176591,0.0,0.0,26.94929,27.4558 +2020-07-10,21,0,Baker,84.721131,0.0,0.0,26.948643,27.455111 +2020-07-10,21,0,Balch,115.898507,0.0,0.0,26.948643,27.455111 +2020-07-10,21,0,Balzac,118.609584,0.0,0.0,26.945038,27.451275 +2020-07-10,21,0,Banks,132.164965,0.0,0.0,26.952248,27.458947 +2020-07-10,21,0,Bardeen,0.0,0.0,0.0,26.955947,27.462885 +2020-07-10,21,0,Barkla,0.0,0.0,0.0,26.961076,27.468343 +2020-07-10,21,0,Barlow,179.608798,0.0,0.0,26.963894,27.471343 +2020-07-10,21,0,Barry,131.487196,0.0,0.0,26.956111,27.463059 +2020-07-10,21,0,Barton,214.852789,0.0,0.0,26.944887,27.451114 +2020-07-10,21,0,Basov,67.776905,0.0,0.0,26.956341,27.463304 +2020-07-10,21,0,Bates,0.0,0.0,0.0,26.96093,27.468188 +2020-07-10,21,0,Bayle,225.697093,0.0,0.0,26.95687,27.463867 +2020-07-10,21,0,Bede,122.676198,0.0,0.0,26.967868,27.475573 +2020-07-10,21,0,Beethoven,86.754438,0.0,0.0,26.977892,27.486241 +2020-07-10,21,0,Behring,0.0,0.0,0.0,26.9531,27.459855 +2020-07-10,21,0,Bell,0.0,0.0,0.0,26.956178,27.463131 +2020-07-10,21,0,Bloch,0.0,0.0,0.0,26.983405,27.492109 +2020-07-10,21,0,Bordet,0.0,0.0,0.0,26.930906,27.436234 +2020-07-10,21,0,Cabell,62.017616,0.0,0.0,27.120221,27.637722 +2020-07-10,21,0,Cabot,55.701007,0.0,0.0,27.120446,27.637962 +2020-07-10,21,0,Caesar,103.362693,0.0,0.0,27.113113,27.630157 +2020-07-10,21,0,Caine,42.493551,0.0,0.0,27.121084,27.63864 +2020-07-10,21,0,Calvin,40.77084,0.0,0.0,27.121713,27.63931 +2020-07-10,21,0,Camus,78.096257,0.0,0.0,27.12258,27.640233 +2020-07-10,21,0,Carew,71.779648,0.0,0.0,27.122432,27.640075 +2020-07-10,21,0,Carrel,98.194558,0.0,0.0,27.122432,27.640075 +2020-07-10,21,0,Carter,100.491507,0.0,0.0,27.121606,27.639196 +2020-07-10,21,0,Caruso,111.97625,0.0,0.0,27.123258,27.640954 +2020-07-10,21,0,Cary,0.0,0.0,0.0,27.12128,27.638849 +2020-07-10,21,0,Caxton,0.0,0.0,0.0,27.128107,27.646115 +2020-07-10,21,0,Cecil,152.172853,0.0,0.0,27.128172,27.646184 +2020-07-10,21,0,Chain,111.402013,0.0,0.0,27.114118,27.631226 +2020-07-10,21,0,Chase,182.033187,0.0,0.0,27.098694,27.61481 +2020-07-10,21,0,Chifa,57.423718,0.0,0.0,27.104056,27.620518 +2020-07-10,21,0,Chuhsi,0.0,0.0,0.0,27.090143,27.60571 +2020-07-10,21,0,Clark,191.220981,0.0,0.0,27.082793,27.597887 +2020-07-10,21,0,Clay,103.93693,0.0,0.0,27.119698,27.637165 +2020-07-10,21,0,Clive,73.502359,0.0,0.0,27.133299,27.651641 +2020-07-10,21,0,Cobb,0.0,0.0,0.0,27.088391,27.603845 +2020-07-10,21,0,Cole,0.0,0.0,0.0,27.08908,27.604578 +2020-07-10,21,0,Comte,0.0,0.0,0.0,27.14078,27.659603 +2020-07-10,21,0,Curie,0.0,0.0,0.0,27.104156,27.620624 +2020-07-10,21,0,Curtiss,0.0,0.0,0.0,27.149381,27.668757 +2020-07-10,22,0,Abel,51.450222,0.0,0.0,29.268786,31.478593 +2020-07-10,22,0,Adams,46.209921,0.0,0.0,19.0723,19.0723 +2020-07-10,22,0,Adler,85.75037,0.0,0.0,25.585075,26.99654 +2020-07-10,22,0,Agricola,35.25293,0.0,0.0,21.869302,22.475475 +2020-07-10,22,0,Aiken,33.823757,0.0,0.0,27.003814,28.722752 +2020-07-10,22,0,Alber,64.789168,0.0,0.0,23.311935,24.230759 +2020-07-10,22,0,Alder,59.548868,0.0,0.0,24.482479,25.654987 +2020-07-10,22,0,Alger,81.462851,0.0,0.0,24.451385,25.617153 +2020-07-10,22,0,Ali,83.368415,0.0,0.0,24.15976,25.262327 +2020-07-10,22,0,Allen,92.896234,0.0,0.0,24.658903,25.869645 +2020-07-10,22,0,Anna,0.0,0.0,0.0,24.52981,25.712575 +2020-07-10,22,0,Archer,0.0,0.0,0.0,24.505989,25.683591 +2020-07-10,22,0,Arne,126.2436,0.0,0.0,24.551507,25.738974 +2020-07-10,22,0,Arnold,92.419843,0.0,0.0,24.626867,25.830667 +2020-07-10,22,0,Arthur,151.015929,0.0,0.0,24.832766,26.081189 +2020-07-10,22,0,Asser,47.639094,0.0,0.0,24.763211,25.996559 +2020-07-10,22,0,Aston,0.0,0.0,0.0,24.78192,26.019323 +2020-07-10,22,0,Astor,158.638184,0.0,0.0,24.790634,26.029925 +2020-07-10,22,0,Attar,86.226761,0.0,0.0,24.705707,25.926593 +2020-07-10,22,0,Attila,60.978041,0.0,0.0,24.655704,25.865753 +2020-07-10,22,0,Attlee,0.0,0.0,0.0,24.798725,26.03977 +2020-07-10,22,0,Aubrey,0.0,0.0,0.0,24.79212,26.031733 +2020-07-10,22,0,Austen,0.0,0.0,0.0,24.628202,25.832291 +2020-07-10,22,0,Avery,0.0,0.0,0.0,25.117773,26.427963 +2020-07-10,22,0,Bach,68.057816,0.0,0.0,24.586286,25.78129 +2020-07-10,22,0,Bacon,61.126002,0.0,0.0,24.586976,25.782131 +2020-07-10,22,0,Baffin,113.429694,0.0,0.0,24.564548,25.754841 +2020-07-10,22,0,Bailey,46.632207,0.0,0.0,24.588925,25.784502 +2020-07-10,22,0,Bain,44.741712,0.0,0.0,24.590849,25.786843 +2020-07-10,22,0,Bajer,85.702435,0.0,0.0,24.593501,25.79007 +2020-07-10,22,0,Baker,78.770621,0.0,0.0,24.593048,25.789518 +2020-07-10,22,0,Balch,107.758209,0.0,0.0,24.593048,25.789518 +2020-07-10,22,0,Balzac,110.278869,0.0,0.0,24.590521,25.786444 +2020-07-10,22,0,Banks,122.882168,0.0,0.0,24.595574,25.792592 +2020-07-10,22,0,Bardeen,0.0,0.0,0.0,24.598167,25.795747 +2020-07-10,22,0,Barkla,0.0,0.0,0.0,24.601762,25.800121 +2020-07-10,22,0,Barlow,166.993716,0.0,0.0,24.603737,25.802524 +2020-07-10,22,0,Barry,122.252003,0.0,0.0,24.598282,25.795887 +2020-07-10,22,0,Barton,199.762294,0.0,0.0,24.590415,25.786315 +2020-07-10,22,0,Basov,63.016496,0.0,0.0,24.598444,25.796083 +2020-07-10,22,0,Bates,0.0,0.0,0.0,24.60166,25.799997 +2020-07-10,22,0,Bayle,209.844933,0.0,0.0,24.598814,25.796534 +2020-07-10,22,0,Bede,114.059859,0.0,0.0,24.606523,25.805914 +2020-07-10,22,0,Beethoven,80.661115,0.0,0.0,24.613549,25.814463 +2020-07-10,22,0,Behring,0.0,0.0,0.0,24.596172,25.793319 +2020-07-10,22,0,Bell,0.0,0.0,0.0,24.598329,25.795944 +2020-07-10,22,0,Bloch,0.0,0.0,0.0,24.617414,25.819164 +2020-07-10,22,0,Bordet,0.0,0.0,0.0,24.580616,25.774391 +2020-07-10,22,0,Cabell,55.189053,0.0,0.0,24.713311,25.935845 +2020-07-10,22,0,Cabot,49.567946,0.0,0.0,24.71347,25.936038 +2020-07-10,22,0,Caesar,91.981755,0.0,0.0,24.708329,25.929784 +2020-07-10,22,0,Caine,37.814722,0.0,0.0,24.713916,25.936581 +2020-07-10,22,0,Calvin,36.281692,0.0,0.0,24.714357,25.937118 +2020-07-10,22,0,Camus,69.497326,0.0,0.0,24.714965,25.937857 +2020-07-10,22,0,Carew,63.876219,0.0,0.0,24.714861,25.937731 +2020-07-10,22,0,Carrel,87.382668,0.0,0.0,24.714861,25.937731 +2020-07-10,22,0,Carter,89.426707,0.0,0.0,24.714282,25.937026 +2020-07-10,22,0,Caruso,99.646902,0.0,0.0,24.71544,25.938435 +2020-07-10,22,0,Cary,0.0,0.0,0.0,24.714054,25.936749 +2020-07-10,22,0,Caxton,0.0,0.0,0.0,24.718839,25.942571 +2020-07-10,22,0,Cecil,135.417584,0.0,0.0,24.718884,25.942626 +2020-07-10,22,0,Chain,99.135892,0.0,0.0,24.709034,25.930641 +2020-07-10,22,0,Chase,161.990091,0.0,0.0,24.698222,25.917486 +2020-07-10,22,0,Chifa,51.100975,0.0,0.0,24.701981,25.92206 +2020-07-10,22,0,Chuhsi,0.0,0.0,0.0,24.692229,25.910194 +2020-07-10,22,0,Clark,170.166247,0.0,0.0,24.687077,25.903925 +2020-07-10,22,0,Clay,92.492765,0.0,0.0,24.712945,25.9354 +2020-07-10,22,0,Clive,65.409248,0.0,0.0,24.722479,25.946999 +2020-07-10,22,0,Cobb,0.0,0.0,0.0,24.691001,25.9087 +2020-07-10,22,0,Cole,0.0,0.0,0.0,24.691484,25.909287 +2020-07-10,22,0,Comte,0.0,0.0,0.0,24.727722,25.953379 +2020-07-10,22,0,Curie,0.0,0.0,0.0,24.702051,25.922145 +2020-07-10,22,0,Curtiss,0.0,0.0,0.0,24.733751,25.960714 +2020-07-10,23,0,Abel,53.096826,0.0,0.0,27.08411,26.559883 +2020-07-10,23,0,Adams,47.688816,0.0,0.0,19.0723,19.0723 +2020-07-10,23,0,Adler,88.494709,0.0,0.0,24.189663,23.854825 +2020-07-10,23,0,Agricola,36.381158,0.0,0.0,21.270022,21.126222 +2020-07-10,23,0,Aiken,34.906246,0.0,0.0,25.304426,24.896647 +2020-07-10,23,0,Alber,66.862669,0.0,0.0,22.403561,22.18559 +2020-07-10,23,0,Alder,61.454659,0.0,0.0,23.323306,23.045156 +2020-07-10,23,0,Alger,84.069974,0.0,0.0,23.298874,23.022322 +2020-07-10,23,0,Ali,86.036523,0.0,0.0,23.069732,22.808173 +2020-07-10,23,0,Allen,95.869268,0.0,0.0,23.46193,23.174709 +2020-07-10,23,0,Anna,0.0,0.0,0.0,23.360496,23.079912 +2020-07-10,23,0,Archer,0.0,0.0,0.0,23.341779,23.06242 +2020-07-10,23,0,Arne,130.283878,0.0,0.0,23.377545,23.095845 +2020-07-10,23,0,Arnold,95.377631,0.0,0.0,23.436758,23.151184 +2020-07-10,23,0,Arthur,155.849016,0.0,0.0,23.598542,23.302382 +2020-07-10,23,0,Asser,49.163727,0.0,0.0,23.543889,23.251305 +2020-07-10,23,0,Aston,0.0,0.0,0.0,23.55859,23.265044 +2020-07-10,23,0,Astor,163.715212,0.0,0.0,23.565437,23.271443 +2020-07-10,23,0,Attar,88.986347,0.0,0.0,23.498706,23.209079 +2020-07-10,23,0,Attila,62.929571,0.0,0.0,23.459416,23.17236 +2020-07-10,23,0,Attlee,0.0,0.0,0.0,23.571794,23.277385 +2020-07-10,23,0,Aubrey,0.0,0.0,0.0,23.566604,23.272534 +2020-07-10,23,0,Austen,0.0,0.0,0.0,23.437807,23.152165 +2020-07-10,23,0,Avery,0.0,0.0,0.0,23.822484,23.511671 +2020-07-10,23,0,Bach,62.560251,0.0,0.0,23.404872,23.121384 +2020-07-10,23,0,Bacon,56.188374,0.0,0.0,23.405414,23.121891 +2020-07-10,23,0,Baffin,104.267086,0.0,0.0,23.387791,23.105421 +2020-07-10,23,0,Bailey,42.865357,0.0,0.0,23.406946,23.123322 +2020-07-10,23,0,Bain,41.127573,0.0,0.0,23.408458,23.124735 +2020-07-10,23,0,Bajer,78.779576,0.0,0.0,23.410541,23.126683 +2020-07-10,23,0,Baker,72.407698,0.0,0.0,23.410185,23.12635 +2020-07-10,23,0,Balch,99.053731,0.0,0.0,23.410185,23.12635 +2020-07-10,23,0,Balzac,101.370778,0.0,0.0,23.4082,23.124494 +2020-07-10,23,0,Banks,112.956009,0.0,0.0,23.41217,23.128205 +2020-07-10,23,0,Bardeen,0.0,0.0,0.0,23.414207,23.130109 +2020-07-10,23,0,Barkla,0.0,0.0,0.0,23.417032,23.132749 +2020-07-10,23,0,Barlow,153.50432,0.0,0.0,23.418584,23.134199 +2020-07-10,23,0,Barry,112.376748,0.0,0.0,23.414298,23.130193 +2020-07-10,23,0,Barton,183.625923,0.0,0.0,23.408116,23.124417 +2020-07-10,23,0,Basov,57.926159,0.0,0.0,23.414425,23.130312 +2020-07-10,23,0,Bates,0.0,0.0,0.0,23.416952,23.132674 +2020-07-10,23,0,Bayle,192.894108,0.0,0.0,23.414716,23.130584 +2020-07-10,23,0,Bede,104.846347,0.0,0.0,23.420773,23.136245 +2020-07-10,23,0,Beethoven,74.145483,0.0,0.0,23.426294,23.141405 +2020-07-10,23,0,Behring,0.0,0.0,0.0,23.41264,23.128644 +2020-07-10,23,0,Bell,0.0,0.0,0.0,23.414335,23.130228 +2020-07-10,23,0,Bloch,0.0,0.0,0.0,23.42933,23.144242 +2020-07-10,23,0,Bordet,0.0,0.0,0.0,23.400416,23.11722 +2020-07-10,23,0,Cabell,50.008179,0.0,0.0,23.504681,23.214663 +2020-07-10,23,0,Cabot,44.914753,0.0,0.0,23.504805,23.214779 +2020-07-10,23,0,Caesar,83.346964,0.0,0.0,23.500767,23.211004 +2020-07-10,23,0,Caine,34.264863,0.0,0.0,23.505156,23.215107 +2020-07-10,23,0,Calvin,32.875747,0.0,0.0,23.505503,23.215431 +2020-07-10,23,0,Camus,62.973262,0.0,0.0,23.50598,23.215877 +2020-07-10,23,0,Carew,57.879836,0.0,0.0,23.505899,23.215801 +2020-07-10,23,0,Carrel,79.179616,0.0,0.0,23.505899,23.215801 +2020-07-10,23,0,Carter,81.031771,0.0,0.0,23.505444,23.215376 +2020-07-10,23,0,Caruso,90.292545,0.0,0.0,23.506354,23.216226 +2020-07-10,23,0,Cary,0.0,0.0,0.0,23.505265,23.215208 +2020-07-10,23,0,Caxton,0.0,0.0,0.0,23.509024,23.218722 +2020-07-10,23,0,Cecil,122.705253,0.0,0.0,23.50906,23.218755 +2020-07-10,23,0,Chain,89.829506,0.0,0.0,23.50132,23.211522 +2020-07-10,23,0,Chase,146.783265,0.0,0.0,23.492825,23.203583 +2020-07-10,23,0,Chifa,46.303869,0.0,0.0,23.495779,23.206343 +2020-07-10,23,0,Chuhsi,0.0,0.0,0.0,23.488116,23.199181 +2020-07-10,23,0,Clark,154.191884,0.0,0.0,23.484068,23.195398 +2020-07-10,23,0,Clay,83.810003,0.0,0.0,23.504393,23.214394 +2020-07-10,23,0,Clive,59.268953,0.0,0.0,23.511884,23.221395 +2020-07-10,23,0,Cobb,0.0,0.0,0.0,23.487151,23.19828 +2020-07-10,23,0,Cole,0.0,0.0,0.0,23.48753,23.198634 +2020-07-10,23,0,Comte,0.0,0.0,0.0,23.516004,23.225245 +2020-07-10,23,0,Curie,0.0,0.0,0.0,23.495834,23.206394 +2020-07-10,23,0,Curtiss,0.0,0.0,0.0,23.520741,23.229672 +2020-07-11,0,0,Abel,47.161679,0.0,0.0,24.697268,24.697268 +2020-07-11,0,0,Adams,42.358175,0.0,0.0,21.13,21.13 +2020-07-11,0,0,Adler,78.602799,0.0,0.0,23.408512,23.408512 +2020-07-11,0,0,Agricola,32.314484,0.0,0.0,22.108539,22.108539 +2020-07-11,0,0,Aiken,31.004437,0.0,0.0,23.904862,23.904862 +2020-07-11,0,0,Alber,59.388781,0.0,0.0,22.613248,22.613248 +2020-07-11,0,0,Alder,54.585277,0.0,0.0,23.022766,23.022766 +2020-07-11,0,0,Alger,74.672659,0.0,0.0,23.011887,23.011887 +2020-07-11,0,0,Ali,76.419388,0.0,0.0,22.909861,22.909861 +2020-07-11,0,0,Allen,85.153032,0.0,0.0,23.084488,23.084488 +2020-07-11,0,0,Anna,0.0,0.0,0.0,23.039324,23.039324 +2020-07-11,0,0,Archer,0.0,0.0,0.0,23.030991,23.030991 +2020-07-11,0,0,Arne,115.720787,0.0,0.0,23.046915,23.046915 +2020-07-11,0,0,Arnold,84.71635,0.0,0.0,23.07328,23.07328 +2020-07-11,0,0,Arthur,138.428263,0.0,0.0,23.145315,23.145315 +2020-07-11,0,0,Asser,43.668222,0.0,0.0,23.12098,23.12098 +2020-07-11,0,0,Aston,0.0,0.0,0.0,23.127526,23.127526 +2020-07-11,0,0,Astor,145.415178,0.0,0.0,23.130574,23.130574 +2020-07-11,0,0,Attar,79.039481,0.0,0.0,23.100863,23.100863 +2020-07-11,0,0,Attila,55.895324,0.0,0.0,23.083369,23.083369 +2020-07-11,0,0,Attlee,0.0,0.0,0.0,23.133405,23.133405 +2020-07-11,0,0,Aubrey,0.0,0.0,0.0,23.131094,23.131094 +2020-07-11,0,0,Austen,0.0,0.0,0.0,23.073747,23.073747 +2020-07-11,0,0,Avery,0.0,0.0,0.0,23.245025,23.245025 +2020-07-11,0,0,Bach,58.216496,0.0,0.0,23.059083,23.059083 +2020-07-11,0,0,Bacon,52.287039,0.0,0.0,23.059324,23.059324 +2020-07-11,0,0,Baffin,97.027494,0.0,0.0,23.051478,23.051478 +2020-07-11,0,0,Bailey,39.889081,0.0,0.0,23.060006,23.060006 +2020-07-11,0,0,Bain,38.271956,0.0,0.0,23.060679,23.060679 +2020-07-11,0,0,Bajer,73.309662,0.0,0.0,23.061607,23.061607 +2020-07-11,0,0,Baker,67.380204,0.0,0.0,23.061448,23.061448 +2020-07-11,0,0,Balch,92.176119,0.0,0.0,23.061448,23.061448 +2020-07-11,0,0,Balzac,94.332286,0.0,0.0,23.060565,23.060565 +2020-07-11,0,0,Banks,105.113119,0.0,0.0,23.062332,23.062332 +2020-07-11,0,0,Bardeen,0.0,0.0,0.0,23.063239,23.063239 +2020-07-11,0,0,Barkla,0.0,0.0,0.0,23.064497,23.064497 +2020-07-11,0,0,Barlow,142.846033,0.0,0.0,23.065188,23.065188 +2020-07-11,0,0,Barry,104.574077,0.0,0.0,23.06328,23.06328 +2020-07-11,0,0,Barton,170.876198,0.0,0.0,23.060527,23.060527 +2020-07-11,0,0,Basov,53.904163,0.0,0.0,23.063336,23.063336 +2020-07-11,0,0,Bates,0.0,0.0,0.0,23.064461,23.064461 +2020-07-11,0,0,Bayle,179.500864,0.0,0.0,23.063466,23.063466 +2020-07-11,0,0,Bede,97.566536,0.0,0.0,23.066163,23.066163 +2020-07-11,0,0,Beethoven,68.997329,0.0,0.0,23.068621,23.068621 +2020-07-11,0,0,Behring,0.0,0.0,0.0,23.062542,23.062542 +2020-07-11,0,0,Bell,0.0,0.0,0.0,23.063296,23.063296 +2020-07-11,0,0,Bloch,0.0,0.0,0.0,23.069973,23.069973 +2020-07-11,0,0,Bordet,0.0,0.0,0.0,23.057099,23.057099 +2020-07-11,0,0,Cabell,46.305127,0.0,0.0,23.103523,23.103523 +2020-07-11,0,0,Cabot,41.588864,0.0,0.0,23.103578,23.103578 +2020-07-11,0,0,Caesar,77.175212,0.0,0.0,23.10178,23.10178 +2020-07-11,0,0,Caine,31.727587,0.0,0.0,23.103735,23.103735 +2020-07-11,0,0,Calvin,30.441334,0.0,0.0,23.103889,23.103889 +2020-07-11,0,0,Camus,58.31016,0.0,0.0,23.104102,23.104102 +2020-07-11,0,0,Carew,53.593897,0.0,0.0,23.104065,23.104065 +2020-07-11,0,0,Carrel,73.316452,0.0,0.0,23.104065,23.104065 +2020-07-11,0,0,Carter,75.031456,0.0,0.0,23.103863,23.103863 +2020-07-11,0,0,Caruso,83.60648,0.0,0.0,23.104268,23.104268 +2020-07-11,0,0,Cary,0.0,0.0,0.0,23.103783,23.103783 +2020-07-11,0,0,Caxton,0.0,0.0,0.0,23.105457,23.105457 +2020-07-11,0,0,Cecil,113.619063,0.0,0.0,23.105473,23.105473 +2020-07-11,0,0,Chain,83.177729,0.0,0.0,23.102026,23.102026 +2020-07-11,0,0,Chase,135.914124,0.0,0.0,23.098244,23.098244 +2020-07-11,0,0,Chifa,42.875118,0.0,0.0,23.099559,23.099559 +2020-07-11,0,0,Chuhsi,0.0,0.0,0.0,23.096147,23.096147 +2020-07-11,0,0,Clark,142.774143,0.0,0.0,23.094345,23.094345 +2020-07-11,0,0,Clay,77.603964,0.0,0.0,23.103395,23.103395 +2020-07-11,0,0,Clive,54.880151,0.0,0.0,23.10673,23.10673 +2020-07-11,0,0,Cobb,0.0,0.0,0.0,23.095718,23.095718 +2020-07-11,0,0,Cole,0.0,0.0,0.0,23.095887,23.095887 +2020-07-11,0,0,Comte,0.0,0.0,0.0,23.108565,23.108565 +2020-07-11,0,0,Curie,0.0,0.0,0.0,23.099584,23.099584 +2020-07-11,0,0,Curtiss,0.0,0.0,0.0,23.110674,23.110674 +2020-07-11,1,0,Abel,47.296848,0.0,0.0,25.321156,25.126953 +2020-07-11,1,0,Adams,42.479577,0.0,0.0,19.0723,19.0723 +2020-07-11,1,0,Adler,78.828081,0.0,0.0,23.063616,22.939573 +2020-07-11,1,0,Agricola,32.4071,0.0,0.0,20.786426,20.733154 +2020-07-11,1,0,Aiken,31.093298,0.0,0.0,23.933081,23.782018 +2020-07-11,1,0,Alber,59.558994,0.0,0.0,21.670535,21.589787 +2020-07-11,1,0,Alder,54.741723,0.0,0.0,22.387896,22.284854 +2020-07-11,1,0,Alger,74.886676,0.0,0.0,22.36884,22.26639 +2020-07-11,1,0,Ali,76.638412,0.0,0.0,22.19012,22.093224 +2020-07-11,1,0,Allen,85.397087,0.0,0.0,22.496016,22.389614 +2020-07-11,1,0,Anna,0.0,0.0,0.0,22.416902,22.312959 +2020-07-11,1,0,Archer,0.0,0.0,0.0,22.402304,22.298814 +2020-07-11,1,0,Arne,116.052452,0.0,0.0,22.4302,22.325843 +2020-07-11,1,0,Arnold,84.959153,0.0,0.0,22.476384,22.370591 +2020-07-11,1,0,Arthur,138.825008,0.0,0.0,22.602567,22.492854 +2020-07-11,1,0,Asser,43.793378,0.0,0.0,22.559941,22.451552 +2020-07-11,1,0,Aston,0.0,0.0,0.0,22.571407,22.462661 +2020-07-11,1,0,Astor,145.831949,0.0,0.0,22.576747,22.467836 +2020-07-11,1,0,Attar,79.266014,0.0,0.0,22.5247,22.417406 +2020-07-11,1,0,Attila,56.055524,0.0,0.0,22.494056,22.387714 +2020-07-11,1,0,Attlee,0.0,0.0,0.0,22.581706,22.47264 +2020-07-11,1,0,Aubrey,0.0,0.0,0.0,22.577658,22.468718 +2020-07-11,1,0,Austen,0.0,0.0,0.0,22.477202,22.371384 +2020-07-11,1,0,Avery,0.0,0.0,0.0,22.777232,22.66209 +2020-07-11,1,0,Bach,54.738099,0.0,0.0,22.451513,22.346494 +2020-07-11,1,0,Bacon,49.162922,0.0,0.0,22.451937,22.346904 +2020-07-11,1,0,Baffin,91.230165,0.0,0.0,22.438192,22.333586 +2020-07-11,1,0,Bailey,37.505734,0.0,0.0,22.453131,22.348061 +2020-07-11,1,0,Bain,35.985232,0.0,0.0,22.45431,22.349204 +2020-07-11,1,0,Bajer,68.929458,0.0,0.0,22.455936,22.350779 +2020-07-11,1,0,Baker,63.354281,0.0,0.0,22.455658,22.350509 +2020-07-11,1,0,Balch,86.668657,0.0,0.0,22.455658,22.350509 +2020-07-11,1,0,Balzac,88.695994,0.0,0.0,22.454109,22.349009 +2020-07-11,1,0,Banks,98.832679,0.0,0.0,22.457206,22.35201 +2020-07-11,1,0,Bardeen,0.0,0.0,0.0,22.458795,22.353549 +2020-07-11,1,0,Barkla,0.0,0.0,0.0,22.460998,22.355684 +2020-07-11,1,0,Barlow,134.311076,0.0,0.0,22.462209,22.356857 +2020-07-11,1,0,Barry,98.325844,0.0,0.0,22.458865,22.353618 +2020-07-11,1,0,Barton,160.666457,0.0,0.0,22.454044,22.348946 +2020-07-11,1,0,Basov,50.683425,0.0,0.0,22.458964,22.353713 +2020-07-11,1,0,Bates,0.0,0.0,0.0,22.460936,22.355623 +2020-07-11,1,0,Bayle,168.775805,0.0,0.0,22.459192,22.353934 +2020-07-11,1,0,Bede,91.736999,0.0,0.0,22.463916,22.358511 +2020-07-11,1,0,Beethoven,64.874784,0.0,0.0,22.468222,22.362683 +2020-07-11,1,0,Behring,0.0,0.0,0.0,22.457572,22.352365 +2020-07-11,1,0,Bell,0.0,0.0,0.0,22.458894,22.353645 +2020-07-11,1,0,Bloch,0.0,0.0,0.0,22.47059,22.364978 +2020-07-11,1,0,Bordet,0.0,0.0,0.0,22.448039,22.343127 +2020-07-11,1,0,Cabell,43.40044,0.0,0.0,22.52936,22.421922 +2020-07-11,1,0,Cabot,38.980025,0.0,0.0,22.529457,22.422016 +2020-07-11,1,0,Caesar,72.334067,0.0,0.0,22.526307,22.418963 +2020-07-11,1,0,Caine,29.737339,0.0,0.0,22.529731,22.422281 +2020-07-11,1,0,Calvin,28.531771,0.0,0.0,22.530001,22.422543 +2020-07-11,1,0,Camus,54.652406,0.0,0.0,22.530374,22.422904 +2020-07-11,1,0,Carew,50.231991,0.0,0.0,22.53031,22.422842 +2020-07-11,1,0,Carrel,68.717364,0.0,0.0,22.53031,22.422842 +2020-07-11,1,0,Carter,70.324788,0.0,0.0,22.529955,22.422498 +2020-07-11,1,0,Caruso,78.361906,0.0,0.0,22.530665,22.423186 +2020-07-11,1,0,Cary,0.0,0.0,0.0,22.529815,22.422363 +2020-07-11,1,0,Caxton,0.0,0.0,0.0,22.532748,22.425204 +2020-07-11,1,0,Cecil,106.491821,0.0,0.0,22.532776,22.425231 +2020-07-11,1,0,Chain,77.96005,0.0,0.0,22.526739,22.419382 +2020-07-11,1,0,Chase,127.38833,0.0,0.0,22.520113,22.412962 +2020-07-11,1,0,Chifa,40.185593,0.0,0.0,22.522417,22.415194 +2020-07-11,1,0,Chuhsi,0.0,0.0,0.0,22.51644,22.409403 +2020-07-11,1,0,Clark,133.818025,0.0,0.0,22.513283,22.406344 +2020-07-11,1,0,Clay,72.735923,0.0,0.0,22.529136,22.421704 +2020-07-11,1,0,Clive,51.437559,0.0,0.0,22.534979,22.427365 +2020-07-11,1,0,Cobb,0.0,0.0,0.0,22.515688,22.408674 +2020-07-11,1,0,Cole,0.0,0.0,0.0,22.515983,22.40896 +2020-07-11,1,0,Comte,0.0,0.0,0.0,22.538192,22.430479 +2020-07-11,1,0,Curie,0.0,0.0,0.0,22.52246,22.415236 +2020-07-11,1,0,Curtiss,0.0,0.0,0.0,22.541887,22.434058 +2020-07-11,2,0,Abel,43.340084,0.0,0.0,23.08516,23.375544 +2020-07-11,2,0,Adams,38.925816,0.0,0.0,19.0723,19.0723 +2020-07-11,2,0,Adler,72.233474,0.0,0.0,21.635424,21.8209 +2020-07-11,2,0,Agricola,29.695984,0.0,0.0,20.173069,20.252724 +2020-07-11,2,0,Aiken,28.492092,0.0,0.0,22.193773,22.419653 +2020-07-11,2,0,Alber,54.576402,0.0,0.0,20.740822,20.861562 +2020-07-11,2,0,Alder,50.162134,0.0,0.0,21.201493,21.355569 +2020-07-11,2,0,Alger,68.6218,0.0,0.0,21.189256,21.342446 +2020-07-11,2,0,Ali,70.226988,0.0,0.0,21.074486,21.219371 +2020-07-11,2,0,Allen,78.25293,0.0,0.0,21.270925,21.430025 +2020-07-11,2,0,Anna,0.0,0.0,0.0,21.22012,21.375544 +2020-07-11,2,0,Archer,0.0,0.0,0.0,21.210746,21.365491 +2020-07-11,2,0,Arne,106.343725,0.0,0.0,21.22866,21.384701 +2020-07-11,2,0,Arnold,77.851633,0.0,0.0,21.258318,21.416506 +2020-07-11,2,0,Arthur,127.211173,0.0,0.0,21.33935,21.503401 +2020-07-11,2,0,Asser,40.129708,0.0,0.0,21.311976,21.474047 +2020-07-11,2,0,Aston,0.0,0.0,0.0,21.319339,21.481943 +2020-07-11,2,0,Astor,133.631926,0.0,0.0,21.322769,21.48562 +2020-07-11,2,0,Attar,72.634771,0.0,0.0,21.289346,21.449778 +2020-07-11,2,0,Attila,51.366026,0.0,0.0,21.269667,21.428675 +2020-07-11,2,0,Attlee,0.0,0.0,0.0,21.325953,21.489035 +2020-07-11,2,0,Aubrey,0.0,0.0,0.0,21.323353,21.486247 +2020-07-11,2,0,Austen,0.0,0.0,0.0,21.258843,21.417069 +2020-07-11,2,0,Avery,0.0,0.0,0.0,21.451515,21.623683 +2020-07-11,2,0,Bach,52.752867,0.0,0.0,21.242347,21.399379 +2020-07-11,2,0,Bacon,47.37989,0.0,0.0,21.242619,21.39967 +2020-07-11,2,0,Baffin,87.921445,0.0,0.0,21.233792,21.390205 +2020-07-11,2,0,Bailey,36.145483,0.0,0.0,21.243386,21.400493 +2020-07-11,2,0,Bain,34.680126,0.0,0.0,21.244143,21.401305 +2020-07-11,2,0,Bajer,66.429537,0.0,0.0,21.245187,21.402424 +2020-07-11,2,0,Baker,61.056559,0.0,0.0,21.245008,21.402233 +2020-07-11,2,0,Balch,83.525373,0.0,0.0,21.245008,21.402233 +2020-07-11,2,0,Balzac,85.479183,0.0,0.0,21.244014,21.401166 +2020-07-11,2,0,Banks,95.248233,0.0,0.0,21.246002,21.403299 +2020-07-11,2,0,Bardeen,0.0,0.0,0.0,21.247023,21.404393 +2020-07-11,2,0,Barkla,0.0,0.0,0.0,21.248438,21.40591 +2020-07-11,2,0,Barlow,129.439906,0.0,0.0,21.249215,21.406744 +2020-07-11,2,0,Barry,94.75978,0.0,0.0,21.247068,21.404442 +2020-07-11,2,0,Barton,154.839434,0.0,0.0,21.243972,21.401122 +2020-07-11,2,0,Basov,48.845247,0.0,0.0,21.247132,21.40451 +2020-07-11,2,0,Bates,0.0,0.0,0.0,21.248397,21.405867 +2020-07-11,2,0,Bayle,162.654674,0.0,0.0,21.247278,21.404666 +2020-07-11,2,0,Bede,88.409898,0.0,0.0,21.250312,21.40792 +2020-07-11,2,0,Beethoven,62.521917,0.0,0.0,21.253077,21.410885 +2020-07-11,2,0,Behring,0.0,0.0,0.0,21.246238,21.403551 +2020-07-11,2,0,Bell,0.0,0.0,0.0,21.247087,21.404462 +2020-07-11,2,0,Bloch,0.0,0.0,0.0,21.254597,21.412516 +2020-07-11,2,0,Bordet,0.0,0.0,0.0,21.240115,21.396986 +2020-07-11,2,0,Cabell,41.226172,0.0,0.0,21.292338,21.452988 +2020-07-11,2,0,Cabot,37.02721,0.0,0.0,21.292401,21.453054 +2020-07-11,2,0,Caesar,68.710286,0.0,0.0,21.290378,21.450885 +2020-07-11,2,0,Caine,28.247562,0.0,0.0,21.292576,21.453243 +2020-07-11,2,0,Calvin,27.102391,0.0,0.0,21.29275,21.453429 +2020-07-11,2,0,Camus,51.914439,0.0,0.0,21.292989,21.453686 +2020-07-11,2,0,Carew,47.715477,0.0,0.0,21.292948,21.453642 +2020-07-11,2,0,Carrel,65.274772,0.0,0.0,21.292948,21.453642 +2020-07-11,2,0,Carter,66.801667,0.0,0.0,21.29272,21.453397 +2020-07-11,2,0,Caruso,74.436143,0.0,0.0,21.293176,21.453886 +2020-07-11,2,0,Cary,0.0,0.0,0.0,21.29263,21.453301 +2020-07-11,2,0,Caxton,0.0,0.0,0.0,21.294514,21.45532 +2020-07-11,2,0,Cecil,101.15681,0.0,0.0,21.294532,21.45534 +2020-07-11,2,0,Chain,74.05442,0.0,0.0,21.290655,21.451182 +2020-07-11,2,0,Chase,121.006449,0.0,0.0,21.2864,21.44662 +2020-07-11,2,0,Chifa,38.172381,0.0,0.0,21.287879,21.448206 +2020-07-11,2,0,Chuhsi,0.0,0.0,0.0,21.284041,21.44409 +2020-07-11,2,0,Clark,127.11403,0.0,0.0,21.282014,21.441916 +2020-07-11,2,0,Clay,69.09201,0.0,0.0,21.292194,21.452833 +2020-07-11,2,0,Clive,48.860648,0.0,0.0,21.295946,21.456857 +2020-07-11,2,0,Cobb,0.0,0.0,0.0,21.283558,21.443572 +2020-07-11,2,0,Cole,0.0,0.0,0.0,21.283748,21.443776 +2020-07-11,2,0,Comte,0.0,0.0,0.0,21.29801,21.459069 +2020-07-11,2,0,Curie,0.0,0.0,0.0,21.287907,21.448236 +2020-07-11,2,0,Curtiss,0.0,0.0,0.0,21.300382,21.461614 +2020-07-11,3,0,Abel,43.131187,0.0,0.0,22.775146,22.775146 +2020-07-11,3,0,Adams,38.738195,0.0,0.0,19.0723,19.0723 +2020-07-11,3,0,Adler,71.885311,0.0,0.0,21.437409,21.437409 +2020-07-11,3,0,Agricola,29.55285,0.0,0.0,20.088029,20.088029 +2020-07-11,3,0,Aiken,28.354762,0.0,0.0,21.952623,21.952623 +2020-07-11,3,0,Alber,54.313346,0.0,0.0,20.61192,20.61192 +2020-07-11,3,0,Alder,49.920355,0.0,0.0,21.037002,21.037002 +2020-07-11,3,0,Alger,68.291046,0.0,0.0,21.02571,21.02571 +2020-07-11,3,0,Ali,69.888497,0.0,0.0,20.919807,20.919807 +2020-07-11,3,0,Allen,77.875754,0.0,0.0,21.10107,21.10107 +2020-07-11,3,0,Anna,0.0,0.0,0.0,21.05419,21.05419 +2020-07-11,3,0,Archer,0.0,0.0,0.0,21.04554,21.04554 +2020-07-11,3,0,Arne,105.831153,0.0,0.0,21.06207,21.06207 +2020-07-11,3,0,Arnold,77.476391,0.0,0.0,21.089437,21.089437 +2020-07-11,3,0,Arthur,126.59802,0.0,0.0,21.164209,21.164209 +2020-07-11,3,0,Asser,39.936284,0.0,0.0,21.13895,21.13895 +2020-07-11,3,0,Aston,0.0,0.0,0.0,21.145744,21.145744 +2020-07-11,3,0,Astor,132.987826,0.0,0.0,21.148908,21.148908 +2020-07-11,3,0,Attar,72.284674,0.0,0.0,21.118067,21.118067 +2020-07-11,3,0,Attila,51.118444,0.0,0.0,21.099909,21.099909 +2020-07-11,3,0,Attlee,0.0,0.0,0.0,21.151847,21.151847 +2020-07-11,3,0,Aubrey,0.0,0.0,0.0,21.149448,21.149448 +2020-07-11,3,0,Austen,0.0,0.0,0.0,21.089921,21.089921 +2020-07-11,3,0,Avery,0.0,0.0,0.0,21.267709,21.267709 +2020-07-11,3,0,Bach,51.242734,0.0,0.0,21.074699,21.074699 +2020-07-11,3,0,Bacon,46.023566,0.0,0.0,21.07495,21.07495 +2020-07-11,3,0,Baffin,85.404556,0.0,0.0,21.066805,21.066805 +2020-07-11,3,0,Bailey,35.110762,0.0,0.0,21.075658,21.075658 +2020-07-11,3,0,Bain,33.687353,0.0,0.0,21.076357,21.076357 +2020-07-11,3,0,Bajer,64.527887,0.0,0.0,21.07732,21.07732 +2020-07-11,3,0,Baker,59.30872,0.0,0.0,21.077155,21.077155 +2020-07-11,3,0,Balch,81.134328,0.0,0.0,21.077155,21.077155 +2020-07-11,3,0,Balzac,83.032207,0.0,0.0,21.076238,21.076238 +2020-07-11,3,0,Banks,92.521603,0.0,0.0,21.078073,21.078073 +2020-07-11,3,0,Bardeen,0.0,0.0,0.0,21.079014,21.079014 +2020-07-11,3,0,Barkla,0.0,0.0,0.0,21.08032,21.08032 +2020-07-11,3,0,Barlow,125.734485,0.0,0.0,21.081037,21.081037 +2020-07-11,3,0,Barry,92.047133,0.0,0.0,21.079056,21.079056 +2020-07-11,3,0,Barton,150.406913,0.0,0.0,21.076199,21.076199 +2020-07-11,3,0,Basov,47.446976,0.0,0.0,21.079115,21.079115 +2020-07-11,3,0,Bates,0.0,0.0,0.0,21.080283,21.080283 +2020-07-11,3,0,Bayle,157.998429,0.0,0.0,21.079249,21.079249 +2020-07-11,3,0,Bede,85.879026,0.0,0.0,21.082049,21.082049 +2020-07-11,3,0,Beethoven,60.732129,0.0,0.0,21.0846,21.0846 +2020-07-11,3,0,Behring,0.0,0.0,0.0,21.07829,21.07829 +2020-07-11,3,0,Bell,0.0,0.0,0.0,21.079073,21.079073 +2020-07-11,3,0,Bloch,0.0,0.0,0.0,21.086004,21.086004 +2020-07-11,3,0,Bordet,0.0,0.0,0.0,21.07264,21.07264 +2020-07-11,3,0,Cabell,40.274929,0.0,0.0,21.120829,21.120829 +2020-07-11,3,0,Cabot,36.172853,0.0,0.0,21.120886,21.120886 +2020-07-11,3,0,Caesar,67.124882,0.0,0.0,21.11902,21.11902 +2020-07-11,3,0,Caine,27.595785,0.0,0.0,21.121048,21.121048 +2020-07-11,3,0,Calvin,26.477037,0.0,0.0,21.121209,21.121209 +2020-07-11,3,0,Camus,50.716578,0.0,0.0,21.121429,21.121429 +2020-07-11,3,0,Carew,46.614501,0.0,0.0,21.121392,21.121392 +2020-07-11,3,0,Carrel,63.768638,0.0,0.0,21.121392,21.121392 +2020-07-11,3,0,Carter,65.260302,0.0,0.0,21.121181,21.121181 +2020-07-11,3,0,Caruso,72.718622,0.0,0.0,21.121602,21.121602 +2020-07-11,3,0,Cary,0.0,0.0,0.0,21.121098,21.121098 +2020-07-11,3,0,Caxton,0.0,0.0,0.0,21.122836,21.122836 +2020-07-11,3,0,Cecil,98.822743,0.0,0.0,21.122853,21.122853 +2020-07-11,3,0,Chain,72.345706,0.0,0.0,21.119275,21.119275 +2020-07-11,3,0,Chase,118.214376,0.0,0.0,21.115349,21.115349 +2020-07-11,3,0,Chifa,37.291601,0.0,0.0,21.116714,21.116714 +2020-07-11,3,0,Chuhsi,0.0,0.0,0.0,21.113173,21.113173 +2020-07-11,3,0,Clark,124.181032,0.0,0.0,21.111302,21.111302 +2020-07-11,3,0,Clay,67.497798,0.0,0.0,21.120696,21.120696 +2020-07-11,3,0,Clive,47.733249,0.0,0.0,21.124158,21.124158 +2020-07-11,3,0,Cobb,0.0,0.0,0.0,21.112727,21.112727 +2020-07-11,3,0,Cole,0.0,0.0,0.0,21.112902,21.112902 +2020-07-11,3,0,Comte,0.0,0.0,0.0,21.126062,21.126062 +2020-07-11,3,0,Curie,0.0,0.0,0.0,21.11674,21.11674 +2020-07-11,3,0,Curtiss,0.0,0.0,0.0,21.128251,21.128251 +2020-07-11,4,0,Abel,43.598134,0.0,0.0,21.422441,20.419098 +2020-07-11,4,0,Adams,39.157583,0.0,0.0,19.0723,20.419098 +2020-07-11,4,0,Adler,72.663557,0.0,0.0,20.5734,20.419098 +2020-07-11,4,0,Agricola,29.872796,0.0,0.0,19.716968,20.419098 +2020-07-11,4,0,Aiken,28.661736,0.0,0.0,20.900398,20.419098 +2020-07-11,4,0,Alber,54.901354,0.0,0.0,20.049474,20.419098 +2020-07-11,4,0,Alder,50.460803,0.0,0.0,20.319267,20.419098 +2020-07-11,4,0,Alger,69.030379,0.0,0.0,20.312101,20.419098 +2020-07-11,4,0,Ali,70.645125,0.0,0.0,20.244885,20.419098 +2020-07-11,4,0,Allen,78.718853,0.0,0.0,20.35993,20.419098 +2020-07-11,4,0,Anna,0.0,0.0,0.0,20.330176,20.419098 +2020-07-11,4,0,Archer,0.0,0.0,0.0,20.324686,20.419098 +2020-07-11,4,0,Arne,106.976903,0.0,0.0,20.335177,20.419098 +2020-07-11,4,0,Arnold,78.315167,0.0,0.0,20.352547,20.419098 +2020-07-11,4,0,Arthur,127.968597,0.0,0.0,20.400003,20.419098 +2020-07-11,4,0,Asser,40.368643,0.0,0.0,20.383972,20.419098 +2020-07-11,4,0,Aston,0.0,0.0,0.0,20.388284,20.419098 +2020-07-11,4,0,Astor,134.42758,0.0,0.0,20.390293,20.419098 +2020-07-11,4,0,Attar,73.067243,0.0,0.0,20.370718,20.419098 +2020-07-11,4,0,Attila,51.671863,0.0,0.0,20.359193,20.419098 +2020-07-11,4,0,Attlee,0.0,0.0,0.0,20.392158,20.419098 +2020-07-11,4,0,Aubrey,0.0,0.0,0.0,20.390635,20.419098 +2020-07-11,4,0,Austen,0.0,0.0,0.0,20.352854,20.419098 +2020-07-11,4,0,Avery,0.0,0.0,0.0,20.465693,20.419098 +2020-07-11,4,0,Bach,50.309505,0.0,0.0,20.343193,20.419098 +2020-07-11,4,0,Bacon,45.185389,0.0,0.0,20.343353,20.419098 +2020-07-11,4,0,Baffin,83.849175,0.0,0.0,20.338183,20.419098 +2020-07-11,4,0,Bailey,34.471328,0.0,0.0,20.343802,20.419098 +2020-07-11,4,0,Bain,33.073841,0.0,0.0,20.344245,20.419098 +2020-07-11,4,0,Bajer,63.35271,0.0,0.0,20.344856,20.419098 +2020-07-11,4,0,Baker,58.228594,0.0,0.0,20.344752,20.419098 +2020-07-11,4,0,Balch,79.656716,0.0,0.0,20.344752,20.419098 +2020-07-11,4,0,Balzac,81.520031,0.0,0.0,20.34417,20.419098 +2020-07-11,4,0,Banks,90.836606,0.0,0.0,20.345334,20.419098 +2020-07-11,4,0,Bardeen,0.0,0.0,0.0,20.345932,20.419098 +2020-07-11,4,0,Barkla,0.0,0.0,0.0,20.346761,20.419098 +2020-07-11,4,0,Barlow,123.444619,0.0,0.0,20.347216,20.419098 +2020-07-11,4,0,Barry,90.370778,0.0,0.0,20.345958,20.419098 +2020-07-11,4,0,Barton,147.667714,0.0,0.0,20.344145,20.419098 +2020-07-11,4,0,Basov,46.582875,0.0,0.0,20.345996,20.419098 +2020-07-11,4,0,Bates,0.0,0.0,0.0,20.346737,20.419098 +2020-07-11,4,0,Bayle,155.120974,0.0,0.0,20.346081,20.419098 +2020-07-11,4,0,Bede,84.315004,0.0,0.0,20.347858,20.419098 +2020-07-11,4,0,Beethoven,59.62608,0.0,0.0,20.349477,20.419098 +2020-07-11,4,0,Behring,0.0,0.0,0.0,20.345472,20.419098 +2020-07-11,4,0,Bell,0.0,0.0,0.0,20.345969,20.419098 +2020-07-11,4,0,Bloch,0.0,0.0,0.0,20.350368,20.419098 +2020-07-11,4,0,Bordet,0.0,0.0,0.0,20.341886,20.419098 +2020-07-11,4,0,Cabell,39.561497,0.0,0.0,20.372471,20.419098 +2020-07-11,4,0,Cabot,35.532086,0.0,0.0,20.372507,20.419098 +2020-07-11,4,0,Caesar,65.935829,0.0,0.0,20.371323,20.419098 +2020-07-11,4,0,Caine,27.106952,0.0,0.0,20.37261,20.419098 +2020-07-11,4,0,Calvin,26.008021,0.0,0.0,20.372712,20.419098 +2020-07-11,4,0,Camus,49.818182,0.0,0.0,20.372852,20.419098 +2020-07-11,4,0,Carew,45.78877,0.0,0.0,20.372828,20.419098 +2020-07-11,4,0,Carrel,62.639037,0.0,0.0,20.372828,20.419098 +2020-07-11,4,0,Carter,64.104278,0.0,0.0,20.372695,20.419098 +2020-07-11,4,0,Caruso,71.430481,0.0,0.0,20.372962,20.419098 +2020-07-11,4,0,Cary,0.0,0.0,0.0,20.372642,20.419098 +2020-07-11,4,0,Caxton,0.0,0.0,0.0,20.373745,20.419098 +2020-07-11,4,0,Cecil,97.072192,0.0,0.0,20.373755,20.419098 +2020-07-11,4,0,Chain,71.064171,0.0,0.0,20.371485,20.419098 +2020-07-11,4,0,Chase,116.120321,0.0,0.0,20.368993,20.419098 +2020-07-11,4,0,Chifa,36.631016,0.0,0.0,20.36986,20.419098 +2020-07-11,4,0,Chuhsi,0.0,0.0,0.0,20.367612,20.419098 +2020-07-11,4,0,Clark,121.981283,0.0,0.0,20.366424,20.419098 +2020-07-11,4,0,Clay,66.302139,0.0,0.0,20.372387,20.419098 +2020-07-11,4,0,Clive,46.887701,0.0,0.0,20.374584,20.419098 +2020-07-11,4,0,Cobb,0.0,0.0,0.0,20.367329,20.419098 +2020-07-11,4,0,Cole,0.0,0.0,0.0,20.36744,20.419098 +2020-07-11,4,0,Comte,0.0,0.0,0.0,20.375792,20.419098 +2020-07-11,4,0,Curie,0.0,0.0,0.0,20.369876,20.419098 +2020-07-11,4,0,Curtiss,0.0,0.0,0.0,20.377182,20.419098 +2020-07-11,5,0,Abel,40.15747,0.0,0.0,18.996236,18.573789 +2020-07-11,5,0,Adams,36.067357,0.0,0.0,19.0723,18.573789 +2020-07-11,5,0,Adler,66.929116,0.0,0.0,19.474886,18.573789 +2020-07-11,5,0,Agricola,27.515303,0.0,0.0,19.362499,18.573789 +2020-07-11,5,0,Aiken,26.399818,0.0,0.0,20.546504,18.573789 +2020-07-11,5,0,Alber,50.568665,0.0,0.0,19.676731,18.573789 +2020-07-11,5,0,Alder,46.478553,0.0,0.0,19.718668,18.573789 +2020-07-11,5,0,Alger,63.58266,0.0,0.0,19.725378,18.573789 +2020-07-11,5,0,Ali,65.069974,0.0,0.0,19.600143,18.573789 +2020-07-11,5,0,Allen,72.506542,0.0,0.0,19.868764,18.573789 +2020-07-11,5,0,Anna,0.0,0.0,0.0,19.709052,18.573789 +2020-07-11,5,0,Archer,0.0,0.0,0.0,19.714334,18.573789 +2020-07-11,5,0,Arne,98.534532,0.0,0.0,19.704194,18.573789 +2020-07-11,5,0,Arnold,72.134714,0.0,0.0,19.687496,18.573789 +2020-07-11,5,0,Arthur,117.86961,0.0,0.0,19.64178,18.573789 +2020-07-11,5,0,Asser,37.182842,0.0,0.0,19.657214,18.573789 +2020-07-11,5,0,Aston,0.0,0.0,0.0,19.653059,18.573789 +2020-07-11,5,0,Astor,123.818864,0.0,0.0,19.651123,18.573789 +2020-07-11,5,0,Attar,67.300944,0.0,0.0,19.669968,18.573789 +2020-07-11,5,0,Attila,47.594038,0.0,0.0,19.681058,18.573789 +2020-07-11,5,0,Attlee,0.0,0.0,0.0,19.649326,18.573789 +2020-07-11,5,0,Aubrey,0.0,0.0,0.0,19.650793,18.573789 +2020-07-11,5,0,Austen,0.0,0.0,0.0,19.687157,18.573789 +2020-07-11,5,0,Avery,0.0,0.0,0.0,19.578553,18.573789 +2020-07-11,5,0,Bach,48.612726,0.0,0.0,19.696232,18.573789 +2020-07-11,5,0,Bacon,43.66143,0.0,0.0,19.696082,18.573789 +2020-07-11,5,0,Baffin,81.02121,0.0,0.0,19.700958,18.573789 +2020-07-11,5,0,Bailey,33.30872,0.0,0.0,19.695659,18.573789 +2020-07-11,5,0,Bain,31.958366,0.0,0.0,19.69524,18.573789 +2020-07-11,5,0,Bajer,61.216025,0.0,0.0,19.694664,18.573789 +2020-07-11,5,0,Baker,56.264729,0.0,0.0,19.694763,18.573789 +2020-07-11,5,0,Balch,76.970149,0.0,0.0,19.694763,18.573789 +2020-07-11,5,0,Balzac,78.770621,0.0,0.0,19.695312,18.573789 +2020-07-11,5,0,Banks,87.772977,0.0,0.0,19.694213,18.573789 +2020-07-11,5,0,Bardeen,0.0,0.0,0.0,19.69366,18.573789 +2020-07-11,5,0,Barkla,0.0,0.0,0.0,19.692858,18.573789 +2020-07-11,5,0,Barlow,119.281225,0.0,0.0,19.692431,18.573789 +2020-07-11,5,0,Barry,87.322859,0.0,0.0,19.69366,18.573789 +2020-07-11,5,0,Barton,142.687353,0.0,0.0,19.695445,18.573789 +2020-07-11,5,0,Basov,45.011783,0.0,0.0,19.69366,18.573789 +2020-07-11,5,0,Bates,0.0,0.0,0.0,19.692966,18.573789 +2020-07-11,5,0,Bayle,149.889238,0.0,0.0,19.693593,18.573789 +2020-07-11,5,0,Bede,81.471328,0.0,0.0,19.691858,18.573789 +2020-07-11,5,0,Beethoven,57.615082,0.0,0.0,19.690292,18.573789 +2020-07-11,5,0,Behring,0.0,0.0,0.0,19.694176,18.573789 +2020-07-11,5,0,Bell,0.0,0.0,0.0,19.6937,18.573789 +2020-07-11,5,0,Bloch,0.0,0.0,0.0,19.68943,18.573789 +2020-07-11,5,0,Bordet,0.0,0.0,0.0,19.697533,18.573789 +2020-07-11,5,0,Cabell,40.071092,0.0,0.0,19.668219,18.573789 +2020-07-11,5,0,Cabot,35.989777,0.0,0.0,19.668184,18.573789 +2020-07-11,5,0,Caesar,66.785153,0.0,0.0,19.66932,18.573789 +2020-07-11,5,0,Caine,27.456118,0.0,0.0,19.668085,18.573789 +2020-07-11,5,0,Calvin,26.343032,0.0,0.0,19.667987,18.573789 +2020-07-11,5,0,Camus,50.459893,0.0,0.0,19.667853,18.573789 +2020-07-11,5,0,Carew,46.378578,0.0,0.0,19.667876,18.573789 +2020-07-11,5,0,Carrel,63.445895,0.0,0.0,19.667876,18.573789 +2020-07-11,5,0,Carter,64.930009,0.0,0.0,19.668004,18.573789 +2020-07-11,5,0,Caruso,72.350582,0.0,0.0,19.667748,18.573789 +2020-07-11,5,0,Cary,0.0,0.0,0.0,19.668054,18.573789 +2020-07-11,5,0,Caxton,0.0,0.0,0.0,19.666996,18.573789 +2020-07-11,5,0,Cecil,98.322586,0.0,0.0,19.666986,18.573789 +2020-07-11,5,0,Chain,71.979553,0.0,0.0,19.669165,18.573789 +2020-07-11,5,0,Chase,117.616074,0.0,0.0,19.671556,18.573789 +2020-07-11,5,0,Chifa,37.102863,0.0,0.0,19.670725,18.573789 +2020-07-11,5,0,Chuhsi,0.0,0.0,0.0,19.672882,18.573789 +2020-07-11,5,0,Clark,123.552532,0.0,0.0,19.674021,18.573789 +2020-07-11,5,0,Clay,67.156181,0.0,0.0,19.6683,18.573789 +2020-07-11,5,0,Clive,47.491664,0.0,0.0,19.666191,18.573789 +2020-07-11,5,0,Cobb,0.0,0.0,0.0,19.673153,18.573789 +2020-07-11,5,0,Cole,0.0,0.0,0.0,19.673047,18.573789 +2020-07-11,5,0,Comte,0.0,0.0,0.0,19.665031,18.573789 +2020-07-11,5,0,Curie,0.0,0.0,0.0,19.670709,18.573789 +2020-07-11,5,0,Curtiss,0.0,0.0,0.0,19.663698,18.573789 +2020-07-11,6,0,Abel,44.372284,0.0,0.0,0.0,0.0 +2020-07-11,6,0,Adams,39.852884,0.0,0.0,0.0,0.0 +2020-07-11,6,0,Adler,73.953806,0.0,0.0,0.0,0.0 +2020-07-11,6,0,Agricola,30.403231,0.0,0.0,0.0,0.0 +2020-07-11,6,0,Aiken,29.170668,0.0,0.0,0.0,0.0 +2020-07-11,6,0,Alber,55.876209,0.0,0.0,0.0,0.0 +2020-07-11,6,0,Alder,51.35681,0.0,0.0,0.0,0.0 +2020-07-11,6,0,Alger,70.256116,0.0,0.0,0.0,0.0 +2020-07-11,6,0,Ali,71.899534,0.0,0.0,0.0,0.0 +2020-07-11,6,0,Allen,80.116623,0.0,0.0,0.0,0.0 +2020-07-11,6,0,Anna,0.0,0.0,0.0,0.0,0.0 +2020-07-11,6,0,Archer,0.0,0.0,0.0,0.0,0.0 +2020-07-11,6,0,Arne,108.876436,0.0,0.0,0.0,0.0 +2020-07-11,6,0,Arnold,79.705769,0.0,0.0,0.0,0.0 +2020-07-11,6,0,Arthur,130.240869,0.0,0.0,0.0,0.0 +2020-07-11,6,0,Asser,41.085448,0.0,0.0,0.0,0.0 +2020-07-11,6,0,Aston,0.0,0.0,0.0,0.0,0.0 +2020-07-11,6,0,Astor,136.814541,0.0,0.0,0.0,0.0 +2020-07-11,6,0,Attar,74.36466,0.0,0.0,0.0,0.0 +2020-07-11,6,0,Attila,52.589373,0.0,0.0,0.0,0.0 +2020-07-11,6,0,Attlee,0.0,0.0,0.0,0.0,0.0 +2020-07-11,6,0,Aubrey,0.0,0.0,0.0,0.0,0.0 +2020-07-11,6,0,Austen,0.0,0.0,0.0,0.0,0.0 +2020-07-11,6,0,Avery,0.0,0.0,0.0,0.0,0.0 +2020-07-11,6,0,Bach,48.7315,0.0,0.0,0.0,0.0 +2020-07-11,6,0,Bacon,43.768107,0.0,0.0,0.0,0.0 +2020-07-11,6,0,Baffin,81.219167,0.0,0.0,0.0,0.0 +2020-07-11,6,0,Bailey,33.390102,0.0,0.0,0.0,0.0 +2020-07-11,6,0,Bain,32.036449,0.0,0.0,0.0,0.0 +2020-07-11,6,0,Bajer,61.365593,0.0,0.0,0.0,0.0 +2020-07-11,6,0,Baker,56.4022,0.0,0.0,0.0,0.0 +2020-07-11,6,0,Balch,77.158209,0.0,0.0,0.0,0.0 +2020-07-11,6,0,Balzac,78.963079,0.0,0.0,0.0,0.0 +2020-07-11,6,0,Banks,87.987431,0.0,0.0,0.0,0.0 +2020-07-11,6,0,Bardeen,0.0,0.0,0.0,0.0,0.0 +2020-07-11,6,0,Barkla,0.0,0.0,0.0,0.0,0.0 +2020-07-11,6,0,Barlow,119.572663,0.0,0.0,0.0,0.0 +2020-07-11,6,0,Barry,87.536214,0.0,0.0,0.0,0.0 +2020-07-11,6,0,Barton,143.035978,0.0,0.0,0.0,0.0 +2020-07-11,6,0,Basov,45.12176,0.0,0.0,0.0,0.0 +2020-07-11,6,0,Bates,0.0,0.0,0.0,0.0,0.0 +2020-07-11,6,0,Bayle,150.25546,0.0,0.0,0.0,0.0 +2020-07-11,6,0,Bede,81.670385,0.0,0.0,0.0,0.0 +2020-07-11,6,0,Beethoven,57.755852,0.0,0.0,0.0,0.0 +2020-07-11,6,0,Behring,0.0,0.0,0.0,0.0,0.0 +2020-07-11,6,0,Bell,0.0,0.0,0.0,0.0,0.0 +2020-07-11,6,0,Bloch,0.0,0.0,0.0,0.0,0.0 +2020-07-11,6,0,Bordet,0.0,0.0,0.0,0.0,0.0 +2020-07-11,6,0,Cabell,41.039321,0.0,0.0,0.0,0.0 +2020-07-11,6,0,Cabot,36.85939,0.0,0.0,0.0,0.0 +2020-07-11,6,0,Caesar,68.398868,0.0,0.0,0.0,0.0 +2020-07-11,6,0,Caine,28.119534,0.0,0.0,0.0,0.0 +2020-07-11,6,0,Calvin,26.979553,0.0,0.0,0.0,0.0 +2020-07-11,6,0,Camus,51.679144,0.0,0.0,0.0,0.0 +2020-07-11,6,0,Carew,47.499214,0.0,0.0,0.0,0.0 +2020-07-11,6,0,Carrel,64.978924,0.0,0.0,0.0,0.0 +2020-07-11,6,0,Carter,66.498899,0.0,0.0,0.0,0.0 +2020-07-11,6,0,Caruso,74.098773,0.0,0.0,0.0,0.0 +2020-07-11,6,0,Cary,0.0,0.0,0.0,0.0,0.0 +2020-07-11,6,0,Caxton,0.0,0.0,0.0,0.0,0.0 +2020-07-11,6,0,Cecil,100.698333,0.0,0.0,0.0,0.0 +2020-07-11,6,0,Chain,73.71878,0.0,0.0,0.0,0.0 +2020-07-11,6,0,Chase,120.458006,0.0,0.0,0.0,0.0 +2020-07-11,6,0,Chifa,37.999371,0.0,0.0,0.0,0.0 +2020-07-11,6,0,Chuhsi,0.0,0.0,0.0,0.0,0.0 +2020-07-11,6,0,Clark,126.537905,0.0,0.0,0.0,0.0 +2020-07-11,6,0,Clay,68.778861,0.0,0.0,0.0,0.0 +2020-07-11,6,0,Clive,48.639195,0.0,0.0,0.0,0.0 +2020-07-11,6,0,Cobb,0.0,0.0,0.0,0.0,0.0 +2020-07-11,6,0,Cole,0.0,0.0,0.0,0.0,0.0 +2020-07-11,6,0,Comte,0.0,0.0,0.0,0.0,0.0 +2020-07-11,6,0,Curie,0.0,0.0,0.0,0.0,0.0 +2020-07-11,6,0,Curtiss,0.0,0.0,0.0,0.0,0.0 +2020-07-11,7,0,Abel,51.425646,0.0,0.0,0.0,0.0 +2020-07-11,7,0,Adams,46.187848,0.0,0.0,0.0,0.0 +2020-07-11,7,0,Adler,85.709409,0.0,0.0,0.0,0.0 +2020-07-11,7,0,Agricola,35.236091,0.0,0.0,0.0,0.0 +2020-07-11,7,0,Aiken,33.8076,0.0,0.0,0.0,0.0 +2020-07-11,7,0,Alber,64.75822,0.0,0.0,0.0,0.0 +2020-07-11,7,0,Alder,59.520423,0.0,0.0,0.0,0.0 +2020-07-11,7,0,Alger,81.423939,0.0,0.0,0.0,0.0 +2020-07-11,7,0,Ali,83.328593,0.0,0.0,0.0,0.0 +2020-07-11,7,0,Allen,92.85186,0.0,0.0,0.0,0.0 +2020-07-11,7,0,Anna,0.0,0.0,0.0,0.0,0.0 +2020-07-11,7,0,Archer,0.0,0.0,0.0,0.0,0.0 +2020-07-11,7,0,Arne,126.183297,0.0,0.0,0.0,0.0 +2020-07-11,7,0,Arnold,92.375697,0.0,0.0,0.0,0.0 +2020-07-11,7,0,Arthur,150.943793,0.0,0.0,0.0,0.0 +2020-07-11,7,0,Asser,47.616339,0.0,0.0,0.0,0.0 +2020-07-11,7,0,Aston,0.0,0.0,0.0,0.0,0.0 +2020-07-11,7,0,Astor,158.562408,0.0,0.0,0.0,0.0 +2020-07-11,7,0,Attar,86.185573,0.0,0.0,0.0,0.0 +2020-07-11,7,0,Attila,60.948913,0.0,0.0,0.0,0.0 +2020-07-11,7,0,Attlee,0.0,0.0,0.0,0.0,0.0 +2020-07-11,7,0,Aubrey,0.0,0.0,0.0,0.0,0.0 +2020-07-11,7,0,Austen,0.0,0.0,0.0,0.0,0.0 +2020-07-11,7,0,Avery,0.0,0.0,0.0,0.0,0.0 +2020-07-11,7,0,Bach,51.768735,0.0,0.0,0.0,0.0 +2020-07-11,7,0,Bacon,46.495994,0.0,0.0,0.0,0.0 +2020-07-11,7,0,Baffin,86.281225,0.0,0.0,0.0,0.0 +2020-07-11,7,0,Bailey,35.47117,0.0,0.0,0.0,0.0 +2020-07-11,7,0,Bain,34.03315,0.0,0.0,0.0,0.0 +2020-07-11,7,0,Bajer,65.190259,0.0,0.0,0.0,0.0 +2020-07-11,7,0,Baker,59.917518,0.0,0.0,0.0,0.0 +2020-07-11,7,0,Balch,81.967164,0.0,0.0,0.0,0.0 +2020-07-11,7,0,Balzac,83.884525,0.0,0.0,0.0,0.0 +2020-07-11,7,0,Banks,93.471328,0.0,0.0,0.0,0.0 +2020-07-11,7,0,Bardeen,0.0,0.0,0.0,0.0,0.0 +2020-07-11,7,0,Barkla,0.0,0.0,0.0,0.0,0.0 +2020-07-11,7,0,Barlow,127.025137,0.0,0.0,0.0,0.0 +2020-07-11,7,0,Barry,92.991987,0.0,0.0,0.0,0.0 +2020-07-11,7,0,Barton,151.950825,0.0,0.0,0.0,0.0 +2020-07-11,7,0,Basov,47.934014,0.0,0.0,0.0,0.0 +2020-07-11,7,0,Bates,0.0,0.0,0.0,0.0,0.0 +2020-07-11,7,0,Bayle,159.620267,0.0,0.0,0.0,0.0 +2020-07-11,7,0,Bede,86.760566,0.0,0.0,0.0,0.0 +2020-07-11,7,0,Beethoven,61.355538,0.0,0.0,0.0,0.0 +2020-07-11,7,0,Behring,0.0,0.0,0.0,0.0,0.0 +2020-07-11,7,0,Bell,0.0,0.0,0.0,0.0,0.0 +2020-07-11,7,0,Bloch,0.0,0.0,0.0,0.0,0.0 +2020-07-11,7,0,Bordet,0.0,0.0,0.0,0.0,0.0 +2020-07-11,7,0,Cabell,45.710601,0.0,0.0,0.0,0.0 +2020-07-11,7,0,Cabot,41.054891,0.0,0.0,0.0,0.0 +2020-07-11,7,0,Caesar,76.184335,0.0,0.0,0.0,0.0 +2020-07-11,7,0,Caine,31.320226,0.0,0.0,0.0,0.0 +2020-07-11,7,0,Calvin,30.050488,0.0,0.0,0.0,0.0 +2020-07-11,7,0,Camus,57.561497,0.0,0.0,0.0,0.0 +2020-07-11,7,0,Carew,52.905788,0.0,0.0,0.0,0.0 +2020-07-11,7,0,Carrel,72.375118,0.0,0.0,0.0,0.0 +2020-07-11,7,0,Carter,74.068103,0.0,0.0,0.0,0.0 +2020-07-11,7,0,Caruso,82.533029,0.0,0.0,0.0,0.0 +2020-07-11,7,0,Cary,0.0,0.0,0.0,0.0,0.0 +2020-07-11,7,0,Caxton,0.0,0.0,0.0,0.0,0.0 +2020-07-11,7,0,Cecil,112.160271,0.0,0.0,0.0,0.0 +2020-07-11,7,0,Chain,82.109783,0.0,0.0,0.0,0.0 +2020-07-11,7,0,Chase,134.169078,0.0,0.0,0.0,0.0 +2020-07-11,7,0,Chifa,42.32463,0.0,0.0,0.0,0.0 +2020-07-11,7,0,Chuhsi,0.0,0.0,0.0,0.0,0.0 +2020-07-11,7,0,Clark,140.941019,0.0,0.0,0.0,0.0 +2020-07-11,7,0,Clay,76.607581,0.0,0.0,0.0,0.0 +2020-07-11,7,0,Clive,54.175527,0.0,0.0,0.0,0.0 +2020-07-11,7,0,Cobb,0.0,0.0,0.0,0.0,0.0 +2020-07-11,7,0,Cole,0.0,0.0,0.0,0.0,0.0 +2020-07-11,7,0,Comte,0.0,0.0,0.0,0.0,0.0 +2020-07-11,7,0,Curie,0.0,0.0,0.0,0.0,0.0 +2020-07-11,7,0,Curtiss,0.0,0.0,0.0,0.0,0.0 +2020-07-11,8,0,Abel,59.498919,0.0,0.0,0.0,0.0 +2020-07-11,8,0,Adams,53.438844,0.0,0.0,0.0,0.0 +2020-07-11,8,0,Adler,99.164865,0.0,0.0,0.0,0.0 +2020-07-11,8,0,Agricola,40.767778,0.0,0.0,0.0,0.0 +2020-07-11,8,0,Aiken,39.11503,0.0,0.0,0.0,0.0 +2020-07-11,8,0,Alber,74.924565,0.0,0.0,0.0,0.0 +2020-07-11,8,0,Alder,68.86449,0.0,0.0,0.0,0.0 +2020-07-11,8,0,Alger,94.206622,0.0,0.0,0.0,0.0 +2020-07-11,8,0,Ali,96.410286,0.0,0.0,0.0,0.0 +2020-07-11,8,0,Allen,107.428604,0.0,0.0,0.0,0.0 +2020-07-11,8,0,Anna,0.0,0.0,0.0,0.0,0.0 +2020-07-11,8,0,Archer,0.0,0.0,0.0,0.0,0.0 +2020-07-11,8,0,Arne,145.992718,0.0,0.0,0.0,0.0 +2020-07-11,8,0,Arnold,106.877688,0.0,0.0,0.0,0.0 +2020-07-11,8,0,Arthur,174.640346,0.0,0.0,0.0,0.0 +2020-07-11,8,0,Asser,55.091592,0.0,0.0,0.0,0.0 +2020-07-11,8,0,Aston,0.0,0.0,0.0,0.0,0.0 +2020-07-11,8,0,Astor,183.455001,0.0,0.0,0.0,0.0 +2020-07-11,8,0,Attar,99.715781,0.0,0.0,0.0,0.0 +2020-07-11,8,0,Attila,70.517237,0.0,0.0,0.0,0.0 +2020-07-11,8,0,Attlee,0.0,0.0,0.0,0.0,0.0 +2020-07-11,8,0,Aubrey,0.0,0.0,0.0,0.0,0.0 +2020-07-11,8,0,Austen,0.0,0.0,0.0,0.0,0.0 +2020-07-11,8,0,Avery,0.0,0.0,0.0,0.0,0.0 +2020-07-11,8,0,Bach,57.198429,0.0,0.0,0.0,0.0 +2020-07-11,8,0,Bacon,51.372663,0.0,0.0,0.0,0.0 +2020-07-11,8,0,Baffin,95.330715,0.0,0.0,0.0,0.0 +2020-07-11,8,0,Bailey,39.191516,0.0,0.0,0.0,0.0 +2020-07-11,8,0,Bain,37.602671,0.0,0.0,0.0,0.0 +2020-07-11,8,0,Bajer,72.027651,0.0,0.0,0.0,0.0 +2020-07-11,8,0,Baker,66.201885,0.0,0.0,0.0,0.0 +2020-07-11,8,0,Balch,90.564179,0.0,0.0,0.0,0.0 +2020-07-11,8,0,Balzac,92.682639,0.0,0.0,0.0,0.0 +2020-07-11,8,0,Banks,103.274941,0.0,0.0,0.0,0.0 +2020-07-11,8,0,Bardeen,0.0,0.0,0.0,0.0,0.0 +2020-07-11,8,0,Barkla,0.0,0.0,0.0,0.0,0.0 +2020-07-11,8,0,Barlow,140.347997,0.0,0.0,0.0,0.0 +2020-07-11,8,0,Barry,102.745326,0.0,0.0,0.0,0.0 +2020-07-11,8,0,Barton,167.887981,0.0,0.0,0.0,0.0 +2020-07-11,8,0,Basov,52.961508,0.0,0.0,0.0,0.0 +2020-07-11,8,0,Bates,0.0,0.0,0.0,0.0,0.0 +2020-07-11,8,0,Bayle,176.361822,0.0,0.0,0.0,0.0 +2020-07-11,8,0,Bede,95.86033,0.0,0.0,0.0,0.0 +2020-07-11,8,0,Beethoven,67.790731,0.0,0.0,0.0,0.0 +2020-07-11,8,0,Behring,0.0,0.0,0.0,0.0,0.0 +2020-07-11,8,0,Bell,0.0,0.0,0.0,0.0,0.0 +2020-07-11,8,0,Bloch,0.0,0.0,0.0,0.0,0.0 +2020-07-11,8,0,Bordet,0.0,0.0,0.0,0.0,0.0 +2020-07-11,8,0,Cabell,51.92765,0.0,0.0,0.0,0.0 +2020-07-11,8,0,Cabot,46.638723,0.0,0.0,0.0,0.0 +2020-07-11,8,0,Caesar,86.546084,0.0,0.0,0.0,0.0 +2020-07-11,8,0,Caine,35.580057,0.0,0.0,0.0,0.0 +2020-07-11,8,0,Calvin,34.137622,0.0,0.0,0.0,0.0 +2020-07-11,8,0,Camus,65.390374,0.0,0.0,0.0,0.0 +2020-07-11,8,0,Carew,60.101447,0.0,0.0,0.0,0.0 +2020-07-11,8,0,Carrel,82.21878,0.0,0.0,0.0,0.0 +2020-07-11,8,0,Carter,84.142026,0.0,0.0,0.0,0.0 +2020-07-11,8,0,Caruso,93.758257,0.0,0.0,0.0,0.0 +2020-07-11,8,0,Cary,0.0,0.0,0.0,0.0,0.0 +2020-07-11,8,0,Caxton,0.0,0.0,0.0,0.0,0.0 +2020-07-11,8,0,Cecil,127.415068,0.0,0.0,0.0,0.0 +2020-07-11,8,0,Chain,93.277446,0.0,0.0,0.0,0.0 +2020-07-11,8,0,Chase,152.41727,0.0,0.0,0.0,0.0 +2020-07-11,8,0,Chifa,48.081158,0.0,0.0,0.0,0.0 +2020-07-11,8,0,Chuhsi,0.0,0.0,0.0,0.0,0.0 +2020-07-11,8,0,Clark,160.110255,0.0,0.0,0.0,0.0 +2020-07-11,8,0,Clay,87.026895,0.0,0.0,0.0,0.0 +2020-07-11,8,0,Clive,61.543882,0.0,0.0,0.0,0.0 +2020-07-11,8,0,Cobb,0.0,0.0,0.0,0.0,0.0 +2020-07-11,8,0,Cole,0.0,0.0,0.0,0.0,0.0 +2020-07-11,8,0,Comte,0.0,0.0,0.0,0.0,0.0 +2020-07-11,8,0,Curie,0.0,0.0,0.0,0.0,0.0 +2020-07-11,8,0,Curtiss,0.0,0.0,0.0,0.0,0.0 +2020-07-11,9,0,Abel,61.317556,0.0,0.0,0.0,16.970947 +2020-07-11,9,0,Adams,55.072249,0.0,0.0,0.0,16.970947 +2020-07-11,9,0,Adler,102.195927,0.0,0.0,0.0,16.970947 +2020-07-11,9,0,Agricola,42.013881,0.0,0.0,0.0,16.970947 +2020-07-11,9,0,Aiken,40.310616,0.0,0.0,0.0,16.970947 +2020-07-11,9,0,Alber,77.2147,0.0,0.0,0.0,16.970947 +2020-07-11,9,0,Alder,70.969394,0.0,0.0,0.0,16.970947 +2020-07-11,9,0,Alger,97.08613,0.0,0.0,0.0,16.970947 +2020-07-11,9,0,Ali,99.357151,0.0,0.0,0.0,16.970947 +2020-07-11,9,0,Allen,110.712254,0.0,0.0,0.0,16.970947 +2020-07-11,9,0,Anna,0.0,0.0,0.0,0.0,16.970947 +2020-07-11,9,0,Archer,0.0,0.0,0.0,0.0,16.970947 +2020-07-11,9,0,Arne,150.455114,0.0,0.0,0.0,16.970947 +2020-07-11,9,0,Arnold,110.144499,0.0,0.0,0.0,16.970947 +2020-07-11,9,0,Arthur,179.978382,0.0,0.0,0.0,16.970947 +2020-07-11,9,0,Asser,56.775515,0.0,0.0,0.0,16.970947 +2020-07-11,9,0,Aston,0.0,0.0,0.0,0.0,16.970947 +2020-07-11,9,0,Astor,189.062464,0.0,0.0,0.0,16.970947 +2020-07-11,9,0,Attar,102.763682,0.0,0.0,0.0,16.970947 +2020-07-11,9,0,Attila,72.672659,0.0,0.0,0.0,16.970947 +2020-07-11,9,0,Attlee,0.0,0.0,0.0,0.0,16.970947 +2020-07-11,9,0,Aubrey,0.0,0.0,0.0,0.0,16.970947 +2020-07-11,9,0,Austen,0.0,0.0,0.0,0.0,16.970947 +2020-07-11,9,0,Avery,0.0,0.0,0.0,0.0,16.970947 +2020-07-11,9,0,Bach,62.424509,0.0,0.0,0.0,16.970947 +2020-07-11,9,0,Bacon,56.066457,0.0,0.0,0.0,16.970947 +2020-07-11,9,0,Baffin,104.040848,0.0,0.0,0.0,16.970947 +2020-07-11,9,0,Bailey,42.772349,0.0,0.0,0.0,16.970947 +2020-07-11,9,0,Bain,41.038335,0.0,0.0,0.0,16.970947 +2020-07-11,9,0,Bajer,78.608641,0.0,0.0,0.0,16.970947 +2020-07-11,9,0,Baker,72.250589,0.0,0.0,0.0,16.970947 +2020-07-11,9,0,Balch,98.838806,0.0,0.0,0.0,16.970947 +2020-07-11,9,0,Balzac,101.150825,0.0,0.0,0.0,16.970947 +2020-07-11,9,0,Banks,112.710919,0.0,0.0,0.0,16.970947 +2020-07-11,9,0,Bardeen,0.0,0.0,0.0,0.0,16.970947 +2020-07-11,9,0,Barkla,0.0,0.0,0.0,0.0,16.970947 +2020-07-11,9,0,Barlow,153.171249,0.0,0.0,0.0,16.970947 +2020-07-11,9,0,Barry,112.132914,0.0,0.0,0.0,16.970947 +2020-07-11,9,0,Barton,183.227494,0.0,0.0,0.0,16.970947 +2020-07-11,9,0,Basov,57.800471,0.0,0.0,0.0,16.970947 +2020-07-11,9,0,Bates,0.0,0.0,0.0,0.0,16.970947 +2020-07-11,9,0,Bayle,192.47557,0.0,0.0,0.0,16.970947 +2020-07-11,9,0,Bede,104.618853,0.0,0.0,0.0,16.970947 +2020-07-11,9,0,Beethoven,73.984603,0.0,0.0,0.0,16.970947 +2020-07-11,9,0,Behring,0.0,0.0,0.0,0.0,16.970947 +2020-07-11,9,0,Bell,0.0,0.0,0.0,0.0,16.970947 +2020-07-11,9,0,Bloch,0.0,0.0,0.0,0.0,16.970947 +2020-07-11,9,0,Bordet,0.0,0.0,0.0,0.0,16.970947 +2020-07-11,9,0,Cabell,58.450456,0.0,0.0,0.0,16.970947 +2020-07-11,9,0,Cabot,52.497169,0.0,0.0,0.0,16.970947 +2020-07-11,9,0,Caesar,97.417427,0.0,0.0,0.0,16.970947 +2020-07-11,9,0,Caine,40.049387,0.0,0.0,0.0,16.970947 +2020-07-11,9,0,Calvin,38.425763,0.0,0.0,0.0,16.970947 +2020-07-11,9,0,Camus,73.604278,0.0,0.0,0.0,16.970947 +2020-07-11,9,0,Carew,67.650991,0.0,0.0,0.0,16.970947 +2020-07-11,9,0,Carrel,92.546556,0.0,0.0,0.0,16.970947 +2020-07-11,9,0,Carter,94.711387,0.0,0.0,0.0,16.970947 +2020-07-11,9,0,Caruso,105.535546,0.0,0.0,0.0,16.970947 +2020-07-11,9,0,Cary,0.0,0.0,0.0,0.0,16.970947 +2020-07-11,9,0,Caxton,0.0,0.0,0.0,0.0,16.970947 +2020-07-11,9,0,Cecil,143.420101,0.0,0.0,0.0,16.970947 +2020-07-11,9,0,Chain,104.994338,0.0,0.0,0.0,16.970947 +2020-07-11,9,0,Chase,171.562913,0.0,0.0,0.0,16.970947 +2020-07-11,9,0,Chifa,54.120793,0.0,0.0,0.0,16.970947 +2020-07-11,9,0,Chuhsi,0.0,0.0,0.0,0.0,16.970947 +2020-07-11,9,0,Clark,180.22224,0.0,0.0,0.0,16.970947 +2020-07-11,9,0,Clay,97.958635,0.0,0.0,0.0,16.970947 +2020-07-11,9,0,Clive,69.274615,0.0,0.0,0.0,16.970947 +2020-07-11,9,0,Cobb,0.0,0.0,0.0,0.0,16.970947 +2020-07-11,9,0,Cole,0.0,0.0,0.0,0.0,16.970947 +2020-07-11,9,0,Comte,0.0,0.0,0.0,0.0,16.970947 +2020-07-11,9,0,Curie,0.0,0.0,0.0,0.0,16.970947 +2020-07-11,9,0,Curtiss,0.0,0.0,0.0,0.0,16.970947 +2020-07-11,10,0,Abel,69.476846,0.0,0.0,18.861019,19.0723 +2020-07-11,10,0,Adams,62.400501,0.0,0.0,18.861019,19.0723 +2020-07-11,10,0,Adler,115.794743,0.0,0.0,18.861019,19.0723 +2020-07-11,10,0,Agricola,47.604506,0.0,0.0,18.861019,19.0723 +2020-07-11,10,0,Aiken,45.674593,0.0,0.0,18.861019,19.0723 +2020-07-11,10,0,Alber,87.489362,0.0,0.0,18.861019,19.0723 +2020-07-11,10,0,Alder,80.413016,0.0,0.0,18.861019,19.0723 +2020-07-11,10,0,Alger,110.005006,0.0,0.0,18.861019,19.0723 +2020-07-11,10,0,Ali,112.578223,0.0,0.0,18.861019,19.0723 +2020-07-11,10,0,Allen,125.444305,0.0,0.0,18.861019,19.0723 +2020-07-11,10,0,Anna,0.0,0.0,0.0,18.861019,19.0723 +2020-07-11,10,0,Archer,0.0,0.0,0.0,18.861019,19.0723 +2020-07-11,10,0,Arne,170.475594,0.0,0.0,18.861019,19.0723 +2020-07-11,10,0,Arnold,124.801001,0.0,0.0,18.861019,19.0723 +2020-07-11,10,0,Arthur,203.927409,0.0,0.0,18.861019,19.0723 +2020-07-11,10,0,Asser,64.330413,0.0,0.0,18.861019,19.0723 +2020-07-11,10,0,Aston,0.0,0.0,0.0,18.861019,19.0723 +2020-07-11,10,0,Astor,214.220275,0.0,0.0,18.861019,19.0723 +2020-07-11,10,0,Attar,116.438048,0.0,0.0,18.861019,19.0723 +2020-07-11,10,0,Attila,82.342929,0.0,0.0,18.861019,19.0723 +2020-07-11,10,0,Attlee,0.0,0.0,0.0,18.861019,19.0723 +2020-07-11,10,0,Aubrey,0.0,0.0,0.0,18.861019,19.0723 +2020-07-11,10,0,Austen,0.0,0.0,0.0,18.861019,19.0723 +2020-07-11,10,0,Avery,0.0,0.0,0.0,18.861019,19.0723 +2020-07-11,10,0,Bach,68.159623,0.0,0.0,18.861019,19.0723 +2020-07-11,10,0,Bacon,61.217439,0.0,0.0,18.861019,19.0723 +2020-07-11,10,0,Baffin,113.599372,0.0,0.0,18.861019,19.0723 +2020-07-11,10,0,Bailey,46.701964,0.0,0.0,18.861019,19.0723 +2020-07-11,10,0,Bain,44.808641,0.0,0.0,18.861019,19.0723 +2020-07-11,10,0,Bajer,85.830636,0.0,0.0,18.861019,19.0723 +2020-07-11,10,0,Baker,78.888452,0.0,0.0,18.861019,19.0723 +2020-07-11,10,0,Balch,107.919403,0.0,0.0,18.861019,19.0723 +2020-07-11,10,0,Balzac,110.443833,0.0,0.0,18.861019,19.0723 +2020-07-11,10,0,Banks,123.065986,0.0,0.0,18.861019,19.0723 +2020-07-11,10,0,Bardeen,0.0,0.0,0.0,18.861019,19.0723 +2020-07-11,10,0,Barkla,0.0,0.0,0.0,18.861019,19.0723 +2020-07-11,10,0,Barlow,167.243519,0.0,0.0,18.861019,19.0723 +2020-07-11,10,0,Barry,122.434878,0.0,0.0,18.861019,19.0723 +2020-07-11,10,0,Barton,200.061115,0.0,0.0,18.861019,19.0723 +2020-07-11,10,0,Basov,63.110762,0.0,0.0,18.861019,19.0723 +2020-07-11,10,0,Bates,0.0,0.0,0.0,18.861019,19.0723 +2020-07-11,10,0,Bayle,210.158837,0.0,0.0,18.861019,19.0723 +2020-07-11,10,0,Bede,114.230479,0.0,0.0,18.861019,19.0723 +2020-07-11,10,0,Beethoven,80.781775,0.0,0.0,18.861019,19.0723 +2020-07-11,10,0,Behring,0.0,0.0,0.0,18.861019,19.0723 +2020-07-11,10,0,Bell,0.0,0.0,0.0,18.861019,19.0723 +2020-07-11,10,0,Bloch,0.0,0.0,0.0,18.861019,19.0723 +2020-07-11,10,0,Bordet,0.0,0.0,0.0,18.861019,19.0723 +2020-07-11,10,0,Cabell,64.106952,0.0,0.0,18.861019,19.0723 +2020-07-11,10,0,Cabot,57.57754,0.0,0.0,18.861019,19.0723 +2020-07-11,10,0,Caesar,106.84492,0.0,0.0,18.861019,19.0723 +2020-07-11,10,0,Caine,43.925134,0.0,0.0,18.861019,19.0723 +2020-07-11,10,0,Calvin,42.144385,0.0,0.0,18.861019,19.0723 +2020-07-11,10,0,Camus,80.727273,0.0,0.0,18.861019,19.0723 +2020-07-11,10,0,Carew,74.197861,0.0,0.0,18.861019,19.0723 +2020-07-11,10,0,Carrel,101.502674,0.0,0.0,18.861019,19.0723 +2020-07-11,10,0,Carter,103.877005,0.0,0.0,18.861019,19.0723 +2020-07-11,10,0,Caruso,115.748663,0.0,0.0,18.861019,19.0723 +2020-07-11,10,0,Cary,0.0,0.0,0.0,18.861019,19.0723 +2020-07-11,10,0,Caxton,0.0,0.0,0.0,18.861019,19.0723 +2020-07-11,10,0,Cecil,157.299465,0.0,0.0,18.861019,19.0723 +2020-07-11,10,0,Chain,115.15508,0.0,0.0,18.861019,19.0723 +2020-07-11,10,0,Chase,188.165775,0.0,0.0,18.861019,19.0723 +2020-07-11,10,0,Chifa,59.358289,0.0,0.0,18.861019,19.0723 +2020-07-11,10,0,Chuhsi,0.0,0.0,0.0,18.861019,19.0723 +2020-07-11,10,0,Clark,197.663102,0.0,0.0,18.861019,19.0723 +2020-07-11,10,0,Clay,107.438503,0.0,0.0,18.861019,19.0723 +2020-07-11,10,0,Clive,75.97861,0.0,0.0,18.861019,19.0723 +2020-07-11,10,0,Cobb,0.0,0.0,0.0,18.861019,19.0723 +2020-07-11,10,0,Cole,0.0,0.0,0.0,18.861019,19.0723 +2020-07-11,10,0,Comte,0.0,0.0,0.0,18.861019,19.0723 +2020-07-11,10,0,Curie,0.0,0.0,0.0,18.861019,19.0723 +2020-07-11,10,0,Curtiss,0.0,0.0,0.0,18.861019,19.0723 +2020-07-11,11,0,Abel,68.776425,0.0,0.0,19.028013,18.823043 +2020-07-11,11,0,Adams,61.771419,0.0,0.0,19.0723,19.0723 +2020-07-11,11,0,Adler,114.627375,0.0,0.0,19.306702,20.391558 +2020-07-11,11,0,Agricola,47.124588,0.0,0.0,19.241266,20.023272 +2020-07-11,11,0,Aiken,45.214131,0.0,0.0,19.930644,23.90321 +2020-07-11,11,0,Alber,86.60735,0.0,0.0,19.424225,21.052998 +2020-07-11,11,0,Alder,79.602344,0.0,0.0,19.448643,21.190423 +2020-07-11,11,0,Alger,108.896006,0.0,0.0,19.45255,21.212412 +2020-07-11,11,0,Ali,111.443281,0.0,0.0,19.379632,20.80202 +2020-07-11,11,0,Allen,124.179656,0.0,0.0,19.536035,21.682282 +2020-07-11,11,0,Anna,0.0,0.0,0.0,19.443044,21.158912 +2020-07-11,11,0,Archer,0.0,0.0,0.0,19.44612,21.176223 +2020-07-11,11,0,Arne,168.756969,0.0,0.0,19.440215,21.142992 +2020-07-11,11,0,Arnold,123.542838,0.0,0.0,19.430493,21.088273 +2020-07-11,11,0,Arthur,201.871544,0.0,0.0,19.403875,20.938465 +2020-07-11,11,0,Asser,63.681875,0.0,0.0,19.412862,20.989043 +2020-07-11,11,0,Aston,0.0,0.0,0.0,19.410442,20.975425 +2020-07-11,11,0,Astor,212.060644,0.0,0.0,19.409315,20.969082 +2020-07-11,11,0,Attar,115.264194,0.0,0.0,19.420287,21.030835 +2020-07-11,11,0,Attila,81.5128,0.0,0.0,19.426744,21.067176 +2020-07-11,11,0,Attlee,0.0,0.0,0.0,19.408269,20.963192 +2020-07-11,11,0,Aubrey,0.0,0.0,0.0,19.409123,20.968 +2020-07-11,11,0,Austen,0.0,0.0,0.0,19.430296,21.087164 +2020-07-11,11,0,Avery,0.0,0.0,0.0,19.367062,20.731273 +2020-07-11,11,0,Bach,74.200157,0.0,0.0,19.43558,21.116903 +2020-07-11,11,0,Bacon,66.642734,0.0,0.0,19.435492,21.116411 +2020-07-11,11,0,Baffin,123.666928,0.0,0.0,19.438331,21.132387 +2020-07-11,11,0,Bailey,50.840848,0.0,0.0,19.435246,21.115023 +2020-07-11,11,0,Bain,48.779733,0.0,0.0,19.435002,21.113652 +2020-07-11,11,0,Bajer,93.437235,0.0,0.0,19.434667,21.111763 +2020-07-11,11,0,Baker,85.879811,0.0,0.0,19.434724,21.112086 +2020-07-11,11,0,Balch,117.483582,0.0,0.0,19.434724,21.112086 +2020-07-11,11,0,Balzac,120.231736,0.0,0.0,19.435044,21.113886 +2020-07-11,11,0,Banks,133.972506,0.0,0.0,19.434404,21.110287 +2020-07-11,11,0,Bardeen,0.0,0.0,0.0,19.434082,21.108472 +2020-07-11,11,0,Barkla,0.0,0.0,0.0,19.433615,21.105847 +2020-07-11,11,0,Barlow,182.0652,0.0,0.0,19.433367,21.104446 +2020-07-11,11,0,Barry,133.285467,0.0,0.0,19.434082,21.108472 +2020-07-11,11,0,Barton,217.791202,0.0,0.0,19.435121,21.114322 +2020-07-11,11,0,Basov,68.703849,0.0,0.0,19.434082,21.108472 +2020-07-11,11,0,Bates,0.0,0.0,0.0,19.433678,21.106198 +2020-07-11,11,0,Bayle,228.783818,0.0,0.0,19.434043,21.108254 +2020-07-11,11,0,Bede,124.353967,0.0,0.0,19.433033,21.102569 +2020-07-11,11,0,Beethoven,87.940927,0.0,0.0,19.432121,21.097435 +2020-07-11,11,0,Behring,0.0,0.0,0.0,19.434382,21.110163 +2020-07-11,11,0,Bell,0.0,0.0,0.0,19.434105,21.108604 +2020-07-11,11,0,Bloch,0.0,0.0,0.0,19.431619,21.094612 +2020-07-11,11,0,Bordet,0.0,0.0,0.0,19.436337,21.121166 +2020-07-11,11,0,Cabell,68.761246,0.0,0.0,19.419269,21.025103 +2020-07-11,11,0,Cabot,61.757785,0.0,0.0,19.419249,21.024988 +2020-07-11,11,0,Caesar,114.602076,0.0,0.0,19.419911,21.028714 +2020-07-11,11,0,Caine,47.114187,0.0,0.0,19.419191,21.024664 +2020-07-11,11,0,Calvin,45.204152,0.0,0.0,19.419134,21.024345 +2020-07-11,11,0,Camus,86.588235,0.0,0.0,19.419056,21.023904 +2020-07-11,11,0,Carew,79.584775,0.0,0.0,19.419069,21.023979 +2020-07-11,11,0,Carrel,108.871972,0.0,0.0,19.419069,21.023979 +2020-07-11,11,0,Carter,111.418685,0.0,0.0,19.419144,21.024399 +2020-07-11,11,0,Caruso,124.152249,0.0,0.0,19.418995,21.02356 +2020-07-11,11,0,Cary,0.0,0.0,0.0,19.419173,21.024564 +2020-07-11,11,0,Caxton,0.0,0.0,0.0,19.418557,21.021096 +2020-07-11,11,0,Cecil,168.719723,0.0,0.0,19.418551,21.021063 +2020-07-11,11,0,Chain,123.515571,0.0,0.0,19.41982,21.028203 +2020-07-11,11,0,Chase,201.82699,0.0,0.0,19.421212,21.036039 +2020-07-11,11,0,Chifa,63.66782,0.0,0.0,19.420728,21.033315 +2020-07-11,11,0,Chuhsi,0.0,0.0,0.0,19.421984,21.040384 +2020-07-11,11,0,Clark,212.013841,0.0,0.0,19.422648,21.044118 +2020-07-11,11,0,Clay,115.238754,0.0,0.0,19.419316,21.025368 +2020-07-11,11,0,Clive,81.49481,0.0,0.0,19.418088,21.018458 +2020-07-11,11,0,Cobb,0.0,0.0,0.0,19.422142,21.041274 +2020-07-11,11,0,Cole,0.0,0.0,0.0,19.42208,21.040924 +2020-07-11,11,0,Comte,0.0,0.0,0.0,19.417413,21.014657 +2020-07-11,11,0,Curie,0.0,0.0,0.0,19.420719,21.033264 +2020-07-11,11,0,Curtiss,0.0,0.0,0.0,19.416637,21.010288 +2020-07-11,12,0,Abel,70.066674,0.0,0.0,18.906302,18.733045 +2020-07-11,12,0,Adams,62.930254,0.0,0.0,19.0723,19.0723 +2020-07-11,12,0,Adler,116.77779,0.0,0.0,19.950885,20.86789 +2020-07-11,12,0,Agricola,48.008647,0.0,0.0,19.705618,20.36663 +2020-07-11,12,0,Aiken,46.062351,0.0,0.0,22.289537,25.647463 +2020-07-11,12,0,Alber,88.232108,0.0,0.0,20.391384,21.76815 +2020-07-11,12,0,Alder,81.095688,0.0,0.0,20.482905,21.955195 +2020-07-11,12,0,Alger,110.938901,0.0,0.0,20.497549,21.985123 +2020-07-11,12,0,Ali,113.533963,0.0,0.0,20.22424,21.426555 +2020-07-11,12,0,Allen,126.509273,0.0,0.0,20.810468,22.624644 +2020-07-11,12,0,Anna,0.0,0.0,0.0,20.461919,21.912306 +2020-07-11,12,0,Archer,0.0,0.0,0.0,20.473448,21.935867 +2020-07-11,12,0,Arne,171.922858,0.0,0.0,20.451317,21.890638 +2020-07-11,12,0,Arnold,125.860507,0.0,0.0,20.414876,21.816163 +2020-07-11,12,0,Arthur,205.658664,0.0,0.0,20.315108,21.612264 +2020-07-11,12,0,Asser,64.87655,0.0,0.0,20.348792,21.681103 +2020-07-11,12,0,Aston,0.0,0.0,0.0,20.339722,21.662569 +2020-07-11,12,0,Astor,216.038912,0.0,0.0,20.335498,21.653936 +2020-07-11,12,0,Attar,117.426556,0.0,0.0,20.376624,21.737985 +2020-07-11,12,0,Attila,83.041984,0.0,0.0,20.400826,21.787448 +2020-07-11,12,0,Attlee,0.0,0.0,0.0,20.331576,21.645919 +2020-07-11,12,0,Aubrey,0.0,0.0,0.0,20.334778,21.652464 +2020-07-11,12,0,Austen,0.0,0.0,0.0,20.414137,21.814652 +2020-07-11,12,0,Avery,0.0,0.0,0.0,20.177125,21.330263 +2020-07-11,12,0,Bach,79.103849,0.0,0.0,20.433943,21.85513 +2020-07-11,12,0,Bacon,71.046976,0.0,0.0,20.433615,21.85446 +2020-07-11,12,0,Baffin,131.839749,0.0,0.0,20.444255,21.876204 +2020-07-11,12,0,Bailey,54.200786,0.0,0.0,20.432691,21.85257 +2020-07-11,12,0,Bain,52.003456,0.0,0.0,20.431778,21.850705 +2020-07-11,12,0,Bajer,99.612255,0.0,0.0,20.43052,21.848134 +2020-07-11,12,0,Baker,91.555381,0.0,0.0,20.430735,21.848574 +2020-07-11,12,0,Balch,125.247761,0.0,0.0,20.430735,21.848574 +2020-07-11,12,0,Balzac,128.177533,0.0,0.0,20.431933,21.851023 +2020-07-11,12,0,Banks,142.826394,0.0,0.0,20.429536,21.846124 +2020-07-11,12,0,Bardeen,0.0,0.0,0.0,20.428328,21.843654 +2020-07-11,12,0,Barkla,0.0,0.0,0.0,20.426579,21.840081 +2020-07-11,12,0,Barlow,194.097408,0.0,0.0,20.425647,21.838175 +2020-07-11,12,0,Barry,142.093951,0.0,0.0,20.428328,21.843654 +2020-07-11,12,0,Barton,232.184446,0.0,0.0,20.432224,21.851616 +2020-07-11,12,0,Basov,73.244305,0.0,0.0,20.428328,21.843654 +2020-07-11,12,0,Bates,0.0,0.0,0.0,20.426813,21.840559 +2020-07-11,12,0,Bayle,243.903535,0.0,0.0,20.428183,21.843357 +2020-07-11,12,0,Bede,132.572192,0.0,0.0,20.424396,21.835619 +2020-07-11,12,0,Beethoven,93.75271,0.0,0.0,20.420978,21.828633 +2020-07-11,12,0,Behring,0.0,0.0,0.0,20.429454,21.845955 +2020-07-11,12,0,Bell,0.0,0.0,0.0,20.428416,21.843834 +2020-07-11,12,0,Bloch,0.0,0.0,0.0,20.419098,21.82479 +2020-07-11,12,0,Bordet,0.0,0.0,0.0,20.436782,21.860931 +2020-07-11,12,0,Cabell,71.360176,0.0,0.0,20.372806,21.730183 +2020-07-11,12,0,Cabot,64.09201,0.0,0.0,20.37273,21.730027 +2020-07-11,12,0,Caesar,118.933627,0.0,0.0,20.375211,21.735098 +2020-07-11,12,0,Caine,48.894936,0.0,0.0,20.372514,21.729587 +2020-07-11,12,0,Calvin,46.912708,0.0,0.0,20.372302,21.729152 +2020-07-11,12,0,Camus,89.860963,0.0,0.0,20.372008,21.728552 +2020-07-11,12,0,Carew,82.592796,0.0,0.0,20.372058,21.728655 +2020-07-11,12,0,Carrel,112.986946,0.0,0.0,20.372058,21.728655 +2020-07-11,12,0,Carter,115.629915,0.0,0.0,20.372338,21.729226 +2020-07-11,12,0,Caruso,128.844763,0.0,0.0,20.371779,21.728083 +2020-07-11,12,0,Cary,0.0,0.0,0.0,20.372448,21.729451 +2020-07-11,12,0,Caxton,0.0,0.0,0.0,20.370138,21.72473 +2020-07-11,12,0,Cecil,175.096729,0.0,0.0,20.370116,21.724685 +2020-07-11,12,0,Chain,128.18402,0.0,0.0,20.374871,21.734403 +2020-07-11,12,0,Chase,209.455332,0.0,0.0,20.38009,21.745069 +2020-07-11,12,0,Chifa,66.074237,0.0,0.0,20.378276,21.741361 +2020-07-11,12,0,Chuhsi,0.0,0.0,0.0,20.382983,21.750982 +2020-07-11,12,0,Clark,220.02721,0.0,0.0,20.38547,21.756064 +2020-07-11,12,0,Clay,119.594369,0.0,0.0,20.372983,21.730545 +2020-07-11,12,0,Clive,84.575024,0.0,0.0,20.368381,21.72114 +2020-07-11,12,0,Cobb,0.0,0.0,0.0,20.383576,21.752193 +2020-07-11,12,0,Cole,0.0,0.0,0.0,20.383343,21.751717 +2020-07-11,12,0,Comte,0.0,0.0,0.0,20.36585,21.715967 +2020-07-11,12,0,Curie,0.0,0.0,0.0,20.378242,21.741292 +2020-07-11,12,0,Curtiss,0.0,0.0,0.0,20.36294,21.710019 +2020-07-11,13,0,Abel,71.049721,0.0,0.0,18.753754,18.579572 +2020-07-11,13,0,Adams,63.813176,0.0,0.0,19.0723,19.0723 +2020-07-11,13,0,Adler,118.416202,0.0,0.0,20.758287,21.680187 +2020-07-11,13,0,Agricola,48.682216,0.0,0.0,20.287624,20.952165 +2020-07-11,13,0,Aiken,46.708613,0.0,0.0,25.246111,28.621962 +2020-07-11,13,0,Alber,89.470019,0.0,0.0,21.603594,22.98771 +2020-07-11,13,0,Alder,82.233474,0.0,0.0,21.779221,23.259371 +2020-07-11,13,0,Alger,112.495392,0.0,0.0,21.807323,23.302838 +2020-07-11,13,0,Ali,115.126863,0.0,0.0,21.28285,22.491582 +2020-07-11,13,0,Allen,128.284219,0.0,0.0,22.407807,24.231668 +2020-07-11,13,0,Anna,0.0,0.0,0.0,21.738951,23.19708 +2020-07-11,13,0,Archer,0.0,0.0,0.0,21.761073,23.231299 +2020-07-11,13,0,Arne,174.334964,0.0,0.0,21.718605,23.16561 +2020-07-11,13,0,Arnold,127.626351,0.0,0.0,21.648676,23.057442 +2020-07-11,13,0,Arthur,208.544089,0.0,0.0,21.457223,22.761303 +2020-07-11,13,0,Asser,65.786779,0.0,0.0,21.521861,22.861285 +2020-07-11,13,0,Aston,0.0,0.0,0.0,21.504457,22.834365 +2020-07-11,13,0,Astor,219.069974,0.0,0.0,21.496351,22.821827 +2020-07-11,13,0,Attar,119.07407,0.0,0.0,21.57527,22.943899 +2020-07-11,13,0,Attila,84.207077,0.0,0.0,21.621714,23.015738 +2020-07-11,13,0,Attlee,0.0,0.0,0.0,21.488824,22.810184 +2020-07-11,13,0,Aubrey,0.0,0.0,0.0,21.494969,22.819689 +2020-07-11,13,0,Austen,0.0,0.0,0.0,21.647258,23.055249 +2020-07-11,13,0,Avery,0.0,0.0,0.0,21.192436,22.35173 +2020-07-11,13,0,Bach,83.736057,0.0,0.0,21.685264,23.114037 +2020-07-11,13,0,Bacon,75.207384,0.0,0.0,21.684635,23.113065 +2020-07-11,13,0,Baffin,139.560094,0.0,0.0,21.705052,23.144646 +2020-07-11,13,0,Bailey,57.374705,0.0,0.0,21.682861,23.110321 +2020-07-11,13,0,Bain,55.048704,0.0,0.0,21.681109,23.107611 +2020-07-11,13,0,Bajer,105.445405,0.0,0.0,21.678695,23.103877 +2020-07-11,13,0,Baker,96.916732,0.0,0.0,21.679108,23.104516 +2020-07-11,13,0,Balch,132.58209,0.0,0.0,21.679108,23.104516 +2020-07-11,13,0,Balzac,135.683425,0.0,0.0,21.681408,23.108073 +2020-07-11,13,0,Banks,151.190102,0.0,0.0,21.676808,23.100958 +2020-07-11,13,0,Bardeen,0.0,0.0,0.0,21.674489,23.097371 +2020-07-11,13,0,Barkla,0.0,0.0,0.0,21.671134,23.092181 +2020-07-11,13,0,Barlow,205.463472,0.0,0.0,21.669344,23.089413 +2020-07-11,13,0,Barry,150.414768,0.0,0.0,21.674489,23.097371 +2020-07-11,13,0,Barton,245.780833,0.0,0.0,21.681965,23.108935 +2020-07-11,13,0,Basov,77.533386,0.0,0.0,21.674489,23.097371 +2020-07-11,13,0,Bates,0.0,0.0,0.0,21.671583,23.092876 +2020-07-11,13,0,Bayle,258.186174,0.0,0.0,21.67421,23.09694 +2020-07-11,13,0,Bede,140.335428,0.0,0.0,21.666945,23.085701 +2020-07-11,13,0,Beethoven,99.242734,0.0,0.0,21.660385,23.075554 +2020-07-11,13,0,Behring,0.0,0.0,0.0,21.67665,23.100713 +2020-07-11,13,0,Bell,0.0,0.0,0.0,21.674658,23.097633 +2020-07-11,13,0,Bloch,0.0,0.0,0.0,21.656776,23.069973 +2020-07-11,13,0,Bordet,0.0,0.0,0.0,21.690712,23.122464 +2020-07-11,13,0,Cabell,72.702108,0.0,0.0,21.567945,22.932568 +2020-07-11,13,0,Cabot,65.297263,0.0,0.0,21.567798,22.932341 +2020-07-11,13,0,Caesar,121.170179,0.0,0.0,21.57256,22.939706 +2020-07-11,13,0,Caine,49.814407,0.0,0.0,21.567384,22.931701 +2020-07-11,13,0,Calvin,47.794904,0.0,0.0,21.566976,22.931069 +2020-07-11,13,0,Camus,91.550802,0.0,0.0,21.566413,22.930198 +2020-07-11,13,0,Carew,84.145958,0.0,0.0,21.566509,22.930347 +2020-07-11,13,0,Carrel,115.11167,0.0,0.0,21.566509,22.930347 +2020-07-11,13,0,Carter,117.804341,0.0,0.0,21.567045,22.931177 +2020-07-11,13,0,Caruso,131.267694,0.0,0.0,21.565973,22.929517 +2020-07-11,13,0,Cary,0.0,0.0,0.0,21.567257,22.931504 +2020-07-11,13,0,Caxton,0.0,0.0,0.0,21.562824,22.924648 +2020-07-11,13,0,Cecil,178.389431,0.0,0.0,21.562782,22.924582 +2020-07-11,13,0,Chain,130.594527,0.0,0.0,21.571907,22.938697 +2020-07-11,13,0,Chase,213.394149,0.0,0.0,21.581922,22.954187 +2020-07-11,13,0,Chifa,67.316766,0.0,0.0,21.57844,22.948801 +2020-07-11,13,0,Chuhsi,0.0,0.0,0.0,21.587474,22.962775 +2020-07-11,13,0,Clark,224.164832,0.0,0.0,21.592246,22.970157 +2020-07-11,13,0,Clay,121.843347,0.0,0.0,21.568284,22.933093 +2020-07-11,13,0,Clive,86.165461,0.0,0.0,21.559453,22.919433 +2020-07-11,13,0,Cobb,0.0,0.0,0.0,21.588611,22.964534 +2020-07-11,13,0,Cole,0.0,0.0,0.0,21.588164,22.963843 +2020-07-11,13,0,Comte,0.0,0.0,0.0,21.554596,22.91192 +2020-07-11,13,0,Curie,0.0,0.0,0.0,21.578375,22.948701 +2020-07-11,13,0,Curtiss,0.0,0.0,0.0,21.549011,22.903282 +2020-07-11,14,0,Abel,89.236091,0.0,0.0,18.185254,18.388844 +2020-07-11,14,0,Adams,80.147229,0.0,0.0,19.0723,19.0723 +2020-07-11,14,0,Adler,148.726818,0.0,0.0,23.767217,22.689662 +2020-07-11,14,0,Agricola,61.143247,0.0,0.0,22.456576,21.679833 +2020-07-11,14,0,Aiken,58.664467,0.0,0.0,36.264331,32.318497 +2020-07-11,14,0,Alber,112.371373,0.0,0.0,26.12112,24.503308 +2020-07-11,14,0,Alder,103.282512,0.0,0.0,26.610184,24.880125 +2020-07-11,14,0,Alger,141.290477,0.0,0.0,26.688437,24.940417 +2020-07-11,14,0,Ali,144.595517,0.0,0.0,25.227952,23.815136 +2020-07-11,14,0,Allen,161.120719,0.0,0.0,28.360589,26.228785 +2020-07-11,14,0,Anna,0.0,0.0,0.0,26.498044,24.793722 +2020-07-11,14,0,Archer,0.0,0.0,0.0,26.559648,24.841187 +2020-07-11,14,0,Arne,218.958926,0.0,0.0,26.441388,24.75007 +2020-07-11,14,0,Arnold,160.294459,0.0,0.0,26.246658,24.600033 +2020-07-11,14,0,Arthur,261.924451,0.0,0.0,25.713525,24.189262 +2020-07-11,14,0,Asser,82.62601,0.0,0.0,25.893519,24.327945 +2020-07-11,14,0,Aston,0.0,0.0,0.0,25.845057,24.290605 +2020-07-11,14,0,Astor,275.144613,0.0,0.0,25.822484,24.273214 +2020-07-11,14,0,Attar,149.553078,0.0,0.0,26.042248,24.442538 +2020-07-11,14,0,Attila,105.761293,0.0,0.0,26.171578,24.542185 +2020-07-11,14,0,Attlee,0.0,0.0,0.0,25.801524,24.257064 +2020-07-11,14,0,Aubrey,0.0,0.0,0.0,25.818635,24.270248 +2020-07-11,14,0,Austen,0.0,0.0,0.0,26.242709,24.59699 +2020-07-11,14,0,Avery,0.0,0.0,0.0,24.97618,23.621149 +2020-07-11,14,0,Bach,87.350196,0.0,0.0,26.348544,24.678535 +2020-07-11,14,0,Bacon,78.453417,0.0,0.0,26.346793,24.677186 +2020-07-11,14,0,Baffin,145.583661,0.0,0.0,26.403648,24.720992 +2020-07-11,14,0,Bailey,59.85106,0.0,0.0,26.341853,24.673379 +2020-07-11,14,0,Bain,57.424666,0.0,0.0,26.336975,24.669621 +2020-07-11,14,0,Bajer,109.996544,0.0,0.0,26.330253,24.664442 +2020-07-11,14,0,Baker,101.099764,0.0,0.0,26.331402,24.665327 +2020-07-11,14,0,Balch,138.304478,0.0,0.0,26.331402,24.665327 +2020-07-11,14,0,Balzac,141.53967,0.0,0.0,26.337807,24.670262 +2020-07-11,14,0,Banks,157.715632,0.0,0.0,26.324998,24.660393 +2020-07-11,14,0,Bardeen,0.0,0.0,0.0,26.318539,24.655416 +2020-07-11,14,0,Barkla,0.0,0.0,0.0,26.309197,24.648218 +2020-07-11,14,0,Barlow,214.3315,0.0,0.0,26.304213,24.644379 +2020-07-11,14,0,Barry,156.906834,0.0,0.0,26.318539,24.655417 +2020-07-11,14,0,Barton,256.389002,0.0,0.0,26.339358,24.671457 +2020-07-11,14,0,Basov,80.879811,0.0,0.0,26.318539,24.655417 +2020-07-11,14,0,Bates,0.0,0.0,0.0,26.310447,24.649182 +2020-07-11,14,0,Bayle,269.329772,0.0,0.0,26.317763,24.654819 +2020-07-11,14,0,Bede,146.392459,0.0,0.0,26.297531,24.63923 +2020-07-11,14,0,Beethoven,103.526159,0.0,0.0,26.279263,24.625155 +2020-07-11,14,0,Behring,0.0,0.0,0.0,26.324557,24.660053 +2020-07-11,14,0,Bell,0.0,0.0,0.0,26.319011,24.65578 +2020-07-11,14,0,Bloch,0.0,0.0,0.0,26.269216,24.617414 +2020-07-11,14,0,Bordet,0.0,0.0,0.0,26.363714,24.690223 +2020-07-11,14,0,Cabell,74.434728,0.0,0.0,26.021848,24.426821 +2020-07-11,14,0,Cabot,66.853413,0.0,0.0,26.02144,24.426506 +2020-07-11,14,0,Caesar,124.05788,0.0,0.0,26.034699,24.436722 +2020-07-11,14,0,Caine,51.001573,0.0,0.0,26.020288,24.425618 +2020-07-11,14,0,Calvin,48.933941,0.0,0.0,26.01915,24.424742 +2020-07-11,14,0,Camus,93.73262,0.0,0.0,26.017583,24.423534 +2020-07-11,14,0,Carew,86.151305,0.0,0.0,26.017851,24.423741 +2020-07-11,14,0,Carrel,117.854986,0.0,0.0,26.017851,24.423741 +2020-07-11,14,0,Carter,120.611828,0.0,0.0,26.019344,24.424892 +2020-07-11,14,0,Caruso,134.396036,0.0,0.0,26.016357,24.42259 +2020-07-11,14,0,Cary,0.0,0.0,0.0,26.019933,24.425345 +2020-07-11,14,0,Caxton,0.0,0.0,0.0,26.00759,24.415835 +2020-07-11,14,0,Cecil,182.640768,0.0,0.0,26.007473,24.415745 +2020-07-11,14,0,Chain,133.706826,0.0,0.0,26.032883,24.435322 +2020-07-11,14,0,Chase,218.479711,0.0,0.0,26.06077,24.456809 +2020-07-11,14,0,Chifa,68.921044,0.0,0.0,26.051074,24.449339 +2020-07-11,14,0,Chuhsi,0.0,0.0,0.0,26.07623,24.468721 +2020-07-11,14,0,Clark,229.507078,0.0,0.0,26.089519,24.47896 +2020-07-11,14,0,Clay,124.74709,0.0,0.0,26.022793,24.427549 +2020-07-11,14,0,Clive,88.218937,0.0,0.0,25.998201,24.408601 +2020-07-11,14,0,Cobb,0.0,0.0,0.0,26.079397,24.471161 +2020-07-11,14,0,Cole,0.0,0.0,0.0,26.078152,24.470202 +2020-07-11,14,0,Comte,0.0,0.0,0.0,25.984676,24.39818 +2020-07-11,14,0,Curie,0.0,0.0,0.0,26.050893,24.449199 +2020-07-11,14,0,Curtiss,0.0,0.0,0.0,25.969125,24.386199 +2020-07-11,15,0,Abel,84.824667,0.0,0.0,18.532246,18.206863 +2020-07-11,15,0,Adams,76.185118,0.0,0.0,19.0723,19.0723 +2020-07-11,15,0,Adler,141.374445,0.0,0.0,21.930672,23.652846 +2020-07-11,15,0,Agricola,58.120605,0.0,0.0,21.132724,22.374133 +2020-07-11,15,0,Aiken,55.764365,0.0,0.0,29.539198,35.845522 +2020-07-11,15,0,Alber,106.816248,0.0,0.0,23.363781,25.949406 +2020-07-11,15,0,Alder,98.176698,0.0,0.0,23.661535,26.426557 +2020-07-11,15,0,Alger,134.305723,0.0,0.0,23.709177,26.502903 +2020-07-11,15,0,Ali,137.447377,0.0,0.0,22.820001,25.077997 +2020-07-11,15,0,Allen,153.155649,0.0,0.0,24.72722,28.13432 +2020-07-11,15,0,Anna,0.0,0.0,0.0,23.593261,26.317148 +2020-07-11,15,0,Archer,0.0,0.0,0.0,23.630767,26.377251 +2020-07-11,15,0,Arne,208.1346,0.0,0.0,23.558768,26.261873 +2020-07-11,15,0,Arnold,152.370236,0.0,0.0,23.440211,26.071886 +2020-07-11,15,0,Arthur,248.976107,0.0,0.0,23.115628,25.55174 +2020-07-11,15,0,Asser,78.541359,0.0,0.0,23.225213,25.72735 +2020-07-11,15,0,Aston,0.0,0.0,0.0,23.195707,25.680068 +2020-07-11,15,0,Astor,261.542724,0.0,0.0,23.181965,25.658045 +2020-07-11,15,0,Attar,142.159859,0.0,0.0,23.315762,25.872456 +2020-07-11,15,0,Attila,100.532939,0.0,0.0,23.394501,25.998635 +2020-07-11,15,0,Attlee,0.0,0.0,0.0,23.169204,25.637596 +2020-07-11,15,0,Aubrey,0.0,0.0,0.0,23.179621,25.65429 +2020-07-11,15,0,Austen,0.0,0.0,0.0,23.437807,26.068033 +2020-07-11,15,0,Avery,0.0,0.0,0.0,22.666716,24.832357 +2020-07-11,15,0,Bach,89.080911,0.0,0.0,23.502242,26.17129 +2020-07-11,15,0,Bacon,80.007855,0.0,0.0,23.501176,26.169582 +2020-07-11,15,0,Baffin,148.468185,0.0,0.0,23.535791,26.225052 +2020-07-11,15,0,Bailey,61.036921,0.0,0.0,23.498168,26.164762 +2020-07-11,15,0,Bain,58.562451,0.0,0.0,23.495199,26.160003 +2020-07-11,15,0,Bajer,112.175962,0.0,0.0,23.491106,26.153444 +2020-07-11,15,0,Baker,103.102907,0.0,0.0,23.491806,26.154566 +2020-07-11,15,0,Balch,141.044776,0.0,0.0,23.491806,26.154566 +2020-07-11,15,0,Balzac,144.344069,0.0,0.0,23.495705,26.160815 +2020-07-11,15,0,Banks,160.840534,0.0,0.0,23.487906,26.148317 +2020-07-11,15,0,Bardeen,0.0,0.0,0.0,23.483974,26.142016 +2020-07-11,15,0,Barkla,0.0,0.0,0.0,23.478287,26.132901 +2020-07-11,15,0,Barlow,218.578162,0.0,0.0,23.475253,26.128039 +2020-07-11,15,0,Barry,160.015711,0.0,0.0,23.483974,26.142016 +2020-07-11,15,0,Barton,261.468971,0.0,0.0,23.49665,26.162328 +2020-07-11,15,0,Basov,82.482325,0.0,0.0,23.483974,26.142016 +2020-07-11,15,0,Bates,0.0,0.0,0.0,23.479048,26.134121 +2020-07-11,15,0,Bayle,274.666143,0.0,0.0,23.483502,26.141259 +2020-07-11,15,0,Bede,149.293009,0.0,0.0,23.471184,26.12152 +2020-07-11,15,0,Beethoven,105.577376,0.0,0.0,23.460062,26.103697 +2020-07-11,15,0,Behring,0.0,0.0,0.0,23.487638,26.147887 +2020-07-11,15,0,Bell,0.0,0.0,0.0,23.484262,26.142476 +2020-07-11,15,0,Bloch,0.0,0.0,0.0,23.453945,26.093894 +2020-07-11,15,0,Bordet,0.0,0.0,0.0,23.511478,26.186091 +2020-07-11,15,0,Cabell,74.672539,0.0,0.0,23.303342,25.852553 +2020-07-11,15,0,Cabot,67.067002,0.0,0.0,23.303094,25.852155 +2020-07-11,15,0,Caesar,124.454231,0.0,0.0,23.311166,25.865091 +2020-07-11,15,0,Caine,51.164517,0.0,0.0,23.302392,25.85103 +2020-07-11,15,0,Calvin,49.09028,0.0,0.0,23.3017,25.849921 +2020-07-11,15,0,Camus,94.032086,0.0,0.0,23.300745,25.848391 +2020-07-11,15,0,Carew,86.426549,0.0,0.0,23.300909,25.848653 +2020-07-11,15,0,Carrel,118.231519,0.0,0.0,23.300909,25.848653 +2020-07-11,15,0,Carter,120.997169,0.0,0.0,23.301818,25.85011 +2020-07-11,15,0,Caruso,134.825417,0.0,0.0,23.299999,25.847195 +2020-07-11,15,0,Cary,0.0,0.0,0.0,23.302176,25.850684 +2020-07-11,15,0,Caxton,0.0,0.0,0.0,23.294662,25.838642 +2020-07-11,15,0,Cecil,183.224284,0.0,0.0,23.29459,25.838528 +2020-07-11,15,0,Chain,134.134004,0.0,0.0,23.31006,25.863318 +2020-07-11,15,0,Chase,219.177729,0.0,0.0,23.327039,25.890526 +2020-07-11,15,0,Chifa,69.141239,0.0,0.0,23.321135,25.881066 +2020-07-11,15,0,Chuhsi,0.0,0.0,0.0,23.336451,25.90561 +2020-07-11,15,0,Clark,230.240327,0.0,0.0,23.344542,25.918575 +2020-07-11,15,0,Clay,125.145643,0.0,0.0,23.303918,25.853475 +2020-07-11,15,0,Clive,88.500786,0.0,0.0,23.288946,25.829482 +2020-07-11,15,0,Cobb,0.0,0.0,0.0,23.338379,25.9087 +2020-07-11,15,0,Cole,0.0,0.0,0.0,23.337621,25.907485 +2020-07-11,15,0,Comte,0.0,0.0,0.0,23.280711,25.816286 +2020-07-11,15,0,Curie,0.0,0.0,0.0,23.321026,25.88089 +2020-07-11,15,0,Curtiss,0.0,0.0,0.0,23.271243,25.801114 +2020-07-11,16,0,Abel,80.831039,0.0,0.0,18.206863,22.202221 +2020-07-11,16,0,Adams,72.598248,0.0,0.0,19.0723,20.846138 +2020-07-11,16,0,Adler,134.718398,0.0,0.0,23.652846,25.145207 +2020-07-11,16,0,Agricola,55.38423,0.0,0.0,22.374133,23.58498 +2020-07-11,16,0,Aiken,53.138924,0.0,0.0,35.845522,33.568251 +2020-07-11,16,0,Alber,101.787234,0.0,0.0,25.949406,26.249686 +2020-07-11,16,0,Alder,93.554443,0.0,0.0,26.426557,26.790897 +2020-07-11,16,0,Alger,127.982478,0.0,0.0,26.502903,26.836053 +2020-07-11,16,0,Ali,130.97622,0.0,0.0,25.077997,25.827812 +2020-07-11,16,0,Allen,145.944931,0.0,0.0,28.13432,27.966438 +2020-07-11,16,0,Anna,0.0,0.0,0.0,26.317148,26.726711 +2020-07-11,16,0,Archer,0.0,0.0,0.0,26.377251,26.762385 +2020-07-11,16,0,Arne,198.335419,0.0,0.0,26.261873,26.693863 +2020-07-11,16,0,Arnold,145.196496,0.0,0.0,26.071886,26.58111 +2020-07-11,16,0,Arthur,237.254068,0.0,0.0,25.55174,26.272334 +2020-07-11,16,0,Asser,74.843554,0.0,0.0,25.72735,26.376574 +2020-07-11,16,0,Aston,0.0,0.0,0.0,25.680068,26.348504 +2020-07-11,16,0,Astor,249.229036,0.0,0.0,25.658045,26.33543 +2020-07-11,16,0,Attar,135.466834,0.0,0.0,25.872456,26.462702 +2020-07-11,16,0,Attila,95.79975,0.0,0.0,25.998635,26.537595 +2020-07-11,16,0,Attlee,0.0,0.0,0.0,25.637596,26.32329 +2020-07-11,16,0,Aubrey,0.0,0.0,0.0,25.65429,26.333201 +2020-07-11,16,0,Austen,0.0,0.0,0.0,26.068033,26.578787 +2020-07-11,16,0,Avery,0.0,0.0,0.0,24.832357,25.84533 +2020-07-11,16,0,Bach,88.639749,0.0,0.0,26.17129,26.639886 +2020-07-11,16,0,Bacon,79.611626,0.0,0.0,26.169582,26.638875 +2020-07-11,16,0,Baffin,147.732914,0.0,0.0,26.225052,26.671714 +2020-07-11,16,0,Bailey,60.734643,0.0,0.0,26.164762,26.636021 +2020-07-11,16,0,Bain,58.272427,0.0,0.0,26.160003,26.633203 +2020-07-11,16,0,Bajer,111.620424,0.0,0.0,26.153444,26.629321 +2020-07-11,16,0,Baker,102.592302,0.0,0.0,26.154566,26.629985 +2020-07-11,16,0,Balch,140.346269,0.0,0.0,26.154566,26.629985 +2020-07-11,16,0,Balzac,143.629222,0.0,0.0,26.160815,26.633684 +2020-07-11,16,0,Banks,160.043991,0.0,0.0,26.148317,26.626285 +2020-07-11,16,0,Bardeen,0.0,0.0,0.0,26.142016,26.622563 +2020-07-11,16,0,Barkla,0.0,0.0,0.0,26.132901,26.61715 +2020-07-11,16,0,Barlow,217.49568,0.0,0.0,26.128039,26.614274 +2020-07-11,16,0,Barry,159.223252,0.0,0.0,26.142016,26.622585 +2020-07-11,16,0,Barton,260.174077,0.0,0.0,26.162328,26.634676 +2020-07-11,16,0,Basov,82.073841,0.0,0.0,26.142016,26.622616 +2020-07-11,16,0,Bates,0.0,0.0,0.0,26.134121,26.617946 +2020-07-11,16,0,Bayle,273.305892,0.0,0.0,26.141259,26.62218 +2020-07-11,16,0,Bede,148.553653,0.0,0.0,26.12152,26.610442 +2020-07-11,16,0,Beethoven,105.054517,0.0,0.0,26.103697,26.599856 +2020-07-11,16,0,Behring,0.0,0.0,0.0,26.147887,26.626111 +2020-07-11,16,0,Bell,0.0,0.0,0.0,26.142476,26.622902 +2020-07-11,16,0,Bloch,0.0,0.0,0.0,26.093894,26.594034 +2020-07-11,16,0,Bordet,0.0,0.0,0.0,26.186091,26.648708 +2020-07-11,16,0,Cabell,73.330607,0.0,0.0,25.852553,26.450835 +2020-07-11,16,0,Cabot,65.861749,0.0,0.0,25.852155,26.450598 +2020-07-11,16,0,Caesar,122.217679,0.0,0.0,25.865091,26.458274 +2020-07-11,16,0,Caine,50.245046,0.0,0.0,25.85103,26.449931 +2020-07-11,16,0,Calvin,48.208084,0.0,0.0,25.849921,26.449273 +2020-07-11,16,0,Camus,92.342246,0.0,0.0,25.848391,26.448365 +2020-07-11,16,0,Carew,84.873388,0.0,0.0,25.848653,26.448521 +2020-07-11,16,0,Carrel,116.106795,0.0,0.0,25.848653,26.448521 +2020-07-11,16,0,Carter,118.822743,0.0,0.0,25.85011,26.449385 +2020-07-11,16,0,Caruso,132.402485,0.0,0.0,25.847195,26.447656 +2020-07-11,16,0,Cary,0.0,0.0,0.0,25.850684,26.449726 +2020-07-11,16,0,Caxton,0.0,0.0,0.0,25.838642,26.442581 +2020-07-11,16,0,Cecil,179.931582,0.0,0.0,25.838528,26.442513 +2020-07-11,16,0,Chain,131.723498,0.0,0.0,25.863318,26.457222 +2020-07-11,16,0,Chase,215.238912,0.0,0.0,25.890526,26.473366 +2020-07-11,16,0,Chifa,67.89871,0.0,0.0,25.881066,26.467753 +2020-07-11,16,0,Chuhsi,0.0,0.0,0.0,25.90561,26.482316 +2020-07-11,16,0,Clark,226.102705,0.0,0.0,25.918575,26.490009 +2020-07-11,16,0,Clay,122.896666,0.0,0.0,25.853475,26.451382 +2020-07-11,16,0,Clive,86.910349,0.0,0.0,25.829482,26.437146 +2020-07-11,16,0,Cobb,0.0,0.0,0.0,25.9087,26.484149 +2020-07-11,16,0,Cole,0.0,0.0,0.0,25.907485,26.483429 +2020-07-11,16,0,Comte,0.0,0.0,0.0,25.816286,26.429316 +2020-07-11,16,0,Curie,0.0,0.0,0.0,25.88089,26.467649 +2020-07-11,16,0,Curtiss,0.0,0.0,0.0,25.801114,26.420314 +2020-07-11,17,0,Abel,79.381044,0.0,0.0,18.163988,37.850312 +2020-07-11,17,0,Adams,71.295938,0.0,0.0,19.0723,20.846138 +2020-07-11,17,0,Adler,132.301741,0.0,0.0,23.879773,31.70717 +2020-07-11,17,0,Agricola,54.390716,0.0,0.0,22.537711,25.510559 +2020-07-11,17,0,Aiken,52.185687,0.0,0.0,36.676491,34.073131 +2020-07-11,17,0,Alber,99.961315,0.0,0.0,26.290108,27.916367 +2020-07-11,17,0,Alder,91.876209,0.0,0.0,26.790897,29.868426 +2020-07-11,17,0,Alger,125.686654,0.0,0.0,26.871026,29.816571 +2020-07-11,17,0,Ali,128.626692,0.0,0.0,25.375528,29.330242 +2020-07-11,17,0,Allen,143.326886,0.0,0.0,28.583265,30.162638 +2020-07-11,17,0,Anna,0.0,0.0,0.0,26.676068,29.947356 +2020-07-11,17,0,Archer,0.0,0.0,0.0,26.739149,29.907632 +2020-07-11,17,0,Arne,194.777563,0.0,0.0,26.618054,29.98354 +2020-07-11,17,0,Arnold,142.591876,0.0,0.0,26.418655,30.109215 +2020-07-11,17,0,Arthur,232.998066,0.0,0.0,25.872741,30.452582 +2020-07-11,17,0,Asser,73.500967,0.0,0.0,26.057051,30.336588 +2020-07-11,17,0,Aston,0.0,0.0,0.0,26.007426,30.367788 +2020-07-11,17,0,Astor,244.758221,0.0,0.0,25.984312,30.38232 +2020-07-11,17,0,Attar,133.03675,0.0,0.0,26.209345,30.240692 +2020-07-11,17,0,Attila,94.081238,0.0,0.0,26.341775,30.157304 +2020-07-11,17,0,Attlee,0.0,0.0,0.0,25.96285,30.395814 +2020-07-11,17,0,Aubrey,0.0,0.0,0.0,25.980371,30.384798 +2020-07-11,17,0,Austen,0.0,0.0,0.0,26.414612,30.111441 +2020-07-11,17,0,Avery,0.0,0.0,0.0,25.117719,30.927874 +2020-07-11,17,0,Bach,84.686253,0.0,0.0,26.522984,30.041539 +2020-07-11,17,0,Bacon,76.060801,0.0,0.0,26.521191,30.04269 +2020-07-11,17,0,Baffin,141.143755,0.0,0.0,26.57941,30.005287 +2020-07-11,17,0,Bailey,58.025766,0.0,0.0,26.516132,30.04594 +2020-07-11,17,0,Bain,55.67337,0.0,0.0,26.511138,30.049149 +2020-07-11,17,0,Bajer,106.641948,0.0,0.0,26.504254,30.053572 +2020-07-11,17,0,Baker,98.016496,0.0,0.0,26.505431,30.052815 +2020-07-11,17,0,Balch,134.086567,0.0,0.0,26.505431,30.052815 +2020-07-11,17,0,Balzac,137.223095,0.0,0.0,26.51199,30.048602 +2020-07-11,17,0,Banks,152.905734,0.0,0.0,26.498873,30.057029 +2020-07-11,17,0,Bardeen,0.0,0.0,0.0,26.49226,30.061353 +2020-07-11,17,0,Barkla,0.0,0.0,0.0,26.482694,30.067348 +2020-07-11,17,0,Barlow,207.794972,0.0,0.0,26.477591,30.070642 +2020-07-11,17,0,Barry,152.121602,0.0,0.0,26.49226,30.061545 +2020-07-11,17,0,Barton,248.569835,0.0,0.0,26.513578,30.048425 +2020-07-11,17,0,Basov,78.413197,0.0,0.0,26.49226,30.061814 +2020-07-11,17,0,Bates,0.0,0.0,0.0,26.483974,30.067178 +2020-07-11,17,0,Bayle,261.115947,0.0,0.0,26.491465,30.062432 +2020-07-11,17,0,Bede,141.927887,0.0,0.0,26.470748,30.075288 +2020-07-11,17,0,Beethoven,100.368892,0.0,0.0,26.452042,30.087005 +2020-07-11,17,0,Behring,0.0,0.0,0.0,26.498422,30.058026 +2020-07-11,17,0,Bell,0.0,0.0,0.0,26.492743,30.061623 +2020-07-11,17,0,Bloch,0.0,0.0,0.0,26.441754,30.093449 +2020-07-11,17,0,Bordet,0.0,0.0,0.0,26.538518,30.032083 +2020-07-11,17,0,Cabell,71.801824,0.0,0.0,26.188456,30.253373 +2020-07-11,17,0,Cabot,64.488676,0.0,0.0,26.188038,30.253637 +2020-07-11,17,0,Caesar,119.669707,0.0,0.0,26.201615,30.245065 +2020-07-11,17,0,Caine,49.197546,0.0,0.0,26.186858,30.254382 +2020-07-11,17,0,Calvin,47.203051,0.0,0.0,26.185694,30.255117 +2020-07-11,17,0,Camus,90.417112,0.0,0.0,26.184088,30.256131 +2020-07-11,17,0,Carew,83.103964,0.0,0.0,26.184363,30.255958 +2020-07-11,17,0,Carrel,113.686222,0.0,0.0,26.184363,30.255958 +2020-07-11,17,0,Carter,116.345549,0.0,0.0,26.185892,30.254992 +2020-07-11,17,0,Caruso,129.642183,0.0,0.0,26.182833,30.256923 +2020-07-11,17,0,Cary,0.0,0.0,0.0,26.186495,30.254611 +2020-07-11,17,0,Caxton,0.0,0.0,0.0,26.173856,30.262591 +2020-07-11,17,0,Cecil,176.180403,0.0,0.0,26.173736,30.262667 +2020-07-11,17,0,Chain,128.977351,0.0,0.0,26.199755,30.246239 +2020-07-11,17,0,Chase,210.751651,0.0,0.0,26.228311,30.22821 +2020-07-11,17,0,Chifa,66.483171,0.0,0.0,26.218382,30.234479 +2020-07-11,17,0,Chuhsi,0.0,0.0,0.0,26.244142,30.218215 +2020-07-11,17,0,Clark,221.388959,0.0,0.0,26.25775,30.209623 +2020-07-11,17,0,Clay,120.334539,0.0,0.0,26.189424,30.252762 +2020-07-11,17,0,Clive,85.098459,0.0,0.0,26.164242,30.268661 +2020-07-11,17,0,Cobb,0.0,0.0,0.0,26.247385,30.216167 +2020-07-11,17,0,Cole,0.0,0.0,0.0,26.24611,30.216972 +2020-07-11,17,0,Comte,0.0,0.0,0.0,26.150393,30.277405 +2020-07-11,17,0,Curie,0.0,0.0,0.0,26.218197,30.234595 +2020-07-11,17,0,Curtiss,0.0,0.0,0.0,26.134469,30.287459 +2020-07-11,18,0,Abel,75.153942,0.0,0.0,32.94657,39.097383 +2020-07-11,18,0,Adams,67.499374,0.0,0.0,19.0723,20.846138 +2020-07-11,18,0,Adler,125.256571,0.0,0.0,27.934177,32.503709 +2020-07-11,18,0,Agricola,51.494368,0.0,0.0,22.878156,25.852643 +2020-07-11,18,0,Aiken,49.406758,0.0,0.0,29.864643,35.043187 +2020-07-11,18,0,Alber,94.638298,0.0,0.0,24.841135,28.434892 +2020-07-11,18,0,Alder,86.98373,0.0,0.0,26.433884,30.530112 +2020-07-11,18,0,Alger,118.993742,0.0,0.0,26.391574,30.474455 +2020-07-11,18,0,Ali,121.777222,0.0,0.0,25.994762,29.952459 +2020-07-11,18,0,Allen,135.694618,0.0,0.0,26.673942,30.845902 +2020-07-11,18,0,Anna,0.0,0.0,0.0,26.498286,30.614832 +2020-07-11,18,0,Archer,0.0,0.0,0.0,26.465874,30.572194 +2020-07-11,18,0,Arne,184.405507,0.0,0.0,26.52781,30.653669 +2020-07-11,18,0,Arnold,134.998748,0.0,0.0,26.630352,30.788561 +2020-07-11,18,0,Arthur,220.590738,0.0,0.0,26.910516,31.15711 +2020-07-11,18,0,Asser,69.586984,0.0,0.0,26.815873,31.032609 +2020-07-11,18,0,Aston,0.0,0.0,0.0,26.84133,31.066097 +2020-07-11,18,0,Astor,231.724656,0.0,0.0,26.853187,31.081695 +2020-07-11,18,0,Attar,125.952441,0.0,0.0,26.737628,30.92968 +2020-07-11,18,0,Attila,89.071339,0.0,0.0,26.669589,30.840177 +2020-07-11,18,0,Attlee,0.0,0.0,0.0,26.864197,31.096179 +2020-07-11,18,0,Aubrey,0.0,0.0,0.0,26.855209,31.084355 +2020-07-11,18,0,Austen,0.0,0.0,0.0,26.632168,30.79095 +2020-07-11,18,0,Avery,0.0,0.0,0.0,27.298323,31.66726 +2020-07-11,18,0,Bach,79.850432,0.0,0.0,26.575133,30.715921 +2020-07-11,18,0,Bacon,71.717518,0.0,0.0,26.576072,30.717157 +2020-07-11,18,0,Baffin,133.084053,0.0,0.0,26.545554,30.677012 +2020-07-11,18,0,Bailey,54.712333,0.0,0.0,26.578724,30.720646 +2020-07-11,18,0,Bain,52.494266,0.0,0.0,26.581343,30.72409 +2020-07-11,18,0,Bajer,100.552396,0.0,0.0,26.584951,30.728837 +2020-07-11,18,0,Baker,92.419482,0.0,0.0,26.584334,30.728025 +2020-07-11,18,0,Balch,126.429851,0.0,0.0,26.584334,30.728025 +2020-07-11,18,0,Balzac,129.387274,0.0,0.0,26.580896,30.723503 +2020-07-11,18,0,Banks,144.174391,0.0,0.0,26.587772,30.732548 +2020-07-11,18,0,Bardeen,0.0,0.0,0.0,26.5913,30.737189 +2020-07-11,18,0,Barkla,0.0,0.0,0.0,26.596192,30.743624 +2020-07-11,18,0,Barlow,195.929301,0.0,0.0,26.598879,30.747159 +2020-07-11,18,0,Barry,143.435035,0.0,0.0,26.591456,30.737395 +2020-07-11,18,0,Barton,234.375805,0.0,0.0,26.580752,30.723313 +2020-07-11,18,0,Basov,73.935585,0.0,0.0,26.591676,30.737684 +2020-07-11,18,0,Bates,0.0,0.0,0.0,26.596052,30.743441 +2020-07-11,18,0,Bayle,246.205499,0.0,0.0,26.59218,30.738347 +2020-07-11,18,0,Bede,133.823409,0.0,0.0,26.60267,30.752146 +2020-07-11,18,0,Beethoven,94.637549,0.0,0.0,26.61223,30.764722 +2020-07-11,18,0,Behring,0.0,0.0,0.0,26.588585,30.733618 +2020-07-11,18,0,Bell,0.0,0.0,0.0,26.59152,30.737479 +2020-07-11,18,0,Bloch,0.0,0.0,0.0,26.617488,30.771639 +2020-07-11,18,0,Bordet,0.0,0.0,0.0,26.567417,30.705772 +2020-07-11,18,0,Cabell,67.317395,0.0,0.0,26.747975,30.943292 +2020-07-11,18,0,Cabot,60.460994,0.0,0.0,26.748191,30.943575 +2020-07-11,18,0,Caesar,112.195659,0.0,0.0,26.741197,30.934374 +2020-07-11,18,0,Caine,46.124882,0.0,0.0,26.748799,30.944374 +2020-07-11,18,0,Calvin,44.254954,0.0,0.0,26.749399,30.945164 +2020-07-11,18,0,Camus,84.770053,0.0,0.0,26.750226,30.946252 +2020-07-11,18,0,Carew,77.913652,0.0,0.0,26.750084,30.946066 +2020-07-11,18,0,Carrel,106.585876,0.0,0.0,26.750084,30.946066 +2020-07-11,18,0,Carter,109.079113,0.0,0.0,26.749296,30.945029 +2020-07-11,18,0,Caruso,121.545297,0.0,0.0,26.750872,30.947102 +2020-07-11,18,0,Cary,0.0,0.0,0.0,26.748986,30.944621 +2020-07-11,18,0,Caxton,0.0,0.0,0.0,26.755497,30.953185 +2020-07-11,18,0,Cecil,165.176942,0.0,0.0,26.755559,30.953267 +2020-07-11,18,0,Chain,120.921988,0.0,0.0,26.742155,30.935635 +2020-07-11,18,0,Chase,197.589022,0.0,0.0,26.727444,30.916283 +2020-07-11,18,0,Chifa,62.330922,0.0,0.0,26.732559,30.923011 +2020-07-11,18,0,Chuhsi,0.0,0.0,0.0,26.719289,30.905555 +2020-07-11,18,0,Clark,207.561969,0.0,0.0,26.712279,30.896333 +2020-07-11,18,0,Clay,112.818968,0.0,0.0,26.747477,30.942636 +2020-07-11,18,0,Clive,79.78358,0.0,0.0,26.760449,30.959701 +2020-07-11,18,0,Cobb,0.0,0.0,0.0,26.717618,30.903357 +2020-07-11,18,0,Cole,0.0,0.0,0.0,26.718275,30.904221 +2020-07-11,18,0,Comte,0.0,0.0,0.0,26.767584,30.969086 +2020-07-11,18,0,Curie,0.0,0.0,0.0,26.732654,30.923137 +2020-07-11,18,0,Curtiss,0.0,0.0,0.0,26.775787,30.979877 +2020-07-11,19,0,Abel,70.668791,0.0,0.0,31.829043,39.097383 +2020-07-11,19,0,Adams,63.471043,0.0,0.0,20.846138,20.846138 +2020-07-11,19,0,Adler,117.781318,0.0,0.0,27.861221,32.503709 +2020-07-11,19,0,Agricola,48.421208,0.0,0.0,23.858863,25.852643 +2020-07-11,19,0,Aiken,46.458186,0.0,0.0,29.389382,35.043187 +2020-07-11,19,0,Alber,88.990329,0.0,0.0,25.412761,28.434892 +2020-07-11,19,0,Alder,81.792582,0.0,0.0,26.673586,30.530112 +2020-07-11,19,0,Alger,111.892252,0.0,0.0,26.640093,30.474455 +2020-07-11,19,0,Ali,114.509614,0.0,0.0,26.325976,29.952459 +2020-07-11,19,0,Allen,127.596427,0.0,0.0,26.863616,30.845902 +2020-07-11,19,0,Anna,0.0,0.0,0.0,26.724566,30.614832 +2020-07-11,19,0,Archer,0.0,0.0,0.0,26.698908,30.572194 +2020-07-11,19,0,Arne,173.400273,0.0,0.0,26.747937,30.653669 +2020-07-11,19,0,Arnold,126.942087,0.0,0.0,26.82911,30.788561 +2020-07-11,19,0,Arthur,207.425987,0.0,0.0,27.050889,31.15711 +2020-07-11,19,0,Asser,65.434065,0.0,0.0,26.975969,31.032609 +2020-07-11,19,0,Aston,0.0,0.0,0.0,26.996121,31.066097 +2020-07-11,19,0,Astor,217.895437,0.0,0.0,27.005507,31.081695 +2020-07-11,19,0,Attar,118.435658,0.0,0.0,26.91403,30.92968 +2020-07-11,19,0,Attila,83.755604,0.0,0.0,26.86017,30.840177 +2020-07-11,19,0,Attlee,0.0,0.0,0.0,27.014223,31.096179 +2020-07-11,19,0,Aubrey,0.0,0.0,0.0,27.007108,31.084355 +2020-07-11,19,0,Austen,0.0,0.0,0.0,26.830548,30.79095 +2020-07-11,19,0,Avery,0.0,0.0,0.0,27.357877,31.66726 +2020-07-11,19,0,Bach,78.526944,0.0,0.0,26.785398,30.715921 +2020-07-11,19,0,Bacon,70.52883,0.0,0.0,26.786142,30.717157 +2020-07-11,19,0,Baffin,130.87824,0.0,0.0,26.761984,30.677012 +2020-07-11,19,0,Bailey,53.805499,0.0,0.0,26.788241,30.720646 +2020-07-11,19,0,Bain,51.624195,0.0,0.0,26.790314,30.72409 +2020-07-11,19,0,Bajer,98.885782,0.0,0.0,26.79317,30.728837 +2020-07-11,19,0,Baker,90.887667,0.0,0.0,26.792682,30.728025 +2020-07-11,19,0,Balch,124.334328,0.0,0.0,26.792682,30.728025 +2020-07-11,19,0,Balzac,127.242734,0.0,0.0,26.78996,30.723503 +2020-07-11,19,0,Banks,141.78476,0.0,0.0,26.795403,30.732548 +2020-07-11,19,0,Bardeen,0.0,0.0,0.0,26.798196,30.737189 +2020-07-11,19,0,Barkla,0.0,0.0,0.0,26.802069,30.743624 +2020-07-11,19,0,Barlow,192.681854,0.0,0.0,26.804196,30.747159 +2020-07-11,19,0,Barry,141.057659,0.0,0.0,26.79832,30.737395 +2020-07-11,19,0,Barton,230.491123,0.0,0.0,26.789846,30.723313 +2020-07-11,19,0,Basov,72.710134,0.0,0.0,26.798494,30.737684 +2020-07-11,19,0,Bates,0.0,0.0,0.0,26.801958,30.743441 +2020-07-11,19,0,Bayle,242.124745,0.0,0.0,26.798893,30.738347 +2020-07-11,19,0,Bede,131.605342,0.0,0.0,26.807197,30.752146 +2020-07-11,19,0,Beethoven,93.068971,0.0,0.0,26.814765,30.764722 +2020-07-11,19,0,Behring,0.0,0.0,0.0,26.796047,30.733618 +2020-07-11,19,0,Bell,0.0,0.0,0.0,26.798371,30.737479 +2020-07-11,19,0,Bloch,0.0,0.0,0.0,26.818927,30.771639 +2020-07-11,19,0,Bordet,0.0,0.0,0.0,26.779291,30.705772 +2020-07-11,19,0,Cabell,65.363951,0.0,0.0,26.922221,30.943292 +2020-07-11,19,0,Cabot,58.706511,0.0,0.0,26.922391,30.943575 +2020-07-11,19,0,Caesar,108.939918,0.0,0.0,26.916855,30.934374 +2020-07-11,19,0,Caine,44.786411,0.0,0.0,26.922873,30.944374 +2020-07-11,19,0,Calvin,42.970746,0.0,0.0,26.923348,30.945164 +2020-07-11,19,0,Camus,82.31016,0.0,0.0,26.924002,30.946252 +2020-07-11,19,0,Carew,75.652721,0.0,0.0,26.92389,30.946066 +2020-07-11,19,0,Carrel,103.492922,0.0,0.0,26.92389,30.946066 +2020-07-11,19,0,Carter,105.913809,0.0,0.0,26.923267,30.945029 +2020-07-11,19,0,Caruso,118.018245,0.0,0.0,26.924514,30.947102 +2020-07-11,19,0,Cary,0.0,0.0,0.0,26.923021,30.944621 +2020-07-11,19,0,Caxton,0.0,0.0,0.0,26.928175,30.953185 +2020-07-11,19,0,Cecil,160.383768,0.0,0.0,26.928224,30.953267 +2020-07-11,19,0,Chain,117.413023,0.0,0.0,26.917613,30.935635 +2020-07-11,19,0,Chase,191.8553,0.0,0.0,26.905968,30.916283 +2020-07-11,19,0,Chifa,60.522177,0.0,0.0,26.910017,30.923011 +2020-07-11,19,0,Chuhsi,0.0,0.0,0.0,26.899513,30.905555 +2020-07-11,19,0,Clark,201.538849,0.0,0.0,26.893963,30.896333 +2020-07-11,19,0,Clay,109.54514,0.0,0.0,26.921826,30.942636 +2020-07-11,19,0,Clive,77.468386,0.0,0.0,26.932095,30.959701 +2020-07-11,19,0,Cobb,0.0,0.0,0.0,26.89819,30.903357 +2020-07-11,19,0,Cole,0.0,0.0,0.0,26.89871,30.904221 +2020-07-11,19,0,Comte,0.0,0.0,0.0,26.937743,30.969086 +2020-07-11,19,0,Curie,0.0,0.0,0.0,26.910093,30.923137 +2020-07-11,19,0,Curtiss,0.0,0.0,0.0,26.944237,30.979877 +2020-07-11,20,0,Abel,68.837865,0.0,0.0,33.928248,39.274628 +2020-07-11,20,0,Adams,61.826601,0.0,0.0,19.0723,19.0723 +2020-07-11,20,0,Adler,114.729776,0.0,0.0,28.561201,31.976081 +2020-07-11,20,0,Agricola,47.166686,0.0,0.0,23.14744,24.614008 +2020-07-11,20,0,Aiken,45.254523,0.0,0.0,30.628258,34.787033 +2020-07-11,20,0,Alber,86.68472,0.0,0.0,25.24931,27.472302 +2020-07-11,20,0,Alder,79.673455,0.0,0.0,26.954755,29.791505 +2020-07-11,20,0,Alger,108.993287,0.0,0.0,26.909452,29.729897 +2020-07-11,20,0,Ali,111.542838,0.0,0.0,26.484563,29.152099 +2020-07-11,20,0,Allen,124.29059,0.0,0.0,27.211798,30.141053 +2020-07-11,20,0,Anna,0.0,0.0,0.0,27.023714,29.88528 +2020-07-11,20,0,Archer,0.0,0.0,0.0,26.989008,29.838084 +2020-07-11,20,0,Arne,168.907726,0.0,0.0,27.055326,29.92827 +2020-07-11,20,0,Arnold,123.653203,0.0,0.0,27.165124,30.077582 +2020-07-11,20,0,Arthur,202.051883,0.0,0.0,27.465112,30.485529 +2020-07-11,20,0,Asser,63.738764,0.0,0.0,27.363772,30.347719 +2020-07-11,20,0,Aston,0.0,0.0,0.0,27.39103,30.384787 +2020-07-11,20,0,Astor,212.250085,0.0,0.0,27.403726,30.402052 +2020-07-11,20,0,Attar,115.367163,0.0,0.0,27.279991,30.233787 +2020-07-11,20,0,Attila,81.585618,0.0,0.0,27.207138,30.134715 +2020-07-11,20,0,Attlee,0.0,0.0,0.0,27.415515,30.418084 +2020-07-11,20,0,Aubrey,0.0,0.0,0.0,27.405891,30.404996 +2020-07-11,20,0,Austen,0.0,0.0,0.0,27.167069,30.080226 +2020-07-11,20,0,Avery,0.0,0.0,0.0,27.880357,31.050214 +2020-07-11,20,0,Bach,76.202357,0.0,0.0,27.105998,29.997177 +2020-07-11,20,0,Bacon,68.441005,0.0,0.0,27.107004,29.998545 +2020-07-11,20,0,Baffin,127.003928,0.0,0.0,27.074326,29.954107 +2020-07-11,20,0,Bailey,52.212726,0.0,0.0,27.109843,30.002406 +2020-07-11,20,0,Bain,50.095994,0.0,0.0,27.112647,30.006219 +2020-07-11,20,0,Bajer,95.958523,0.0,0.0,27.116511,30.011473 +2020-07-11,20,0,Baker,88.197172,0.0,0.0,27.11585,30.010574 +2020-07-11,20,0,Balch,120.653731,0.0,0.0,27.11585,30.010574 +2020-07-11,20,0,Balzac,123.476041,0.0,0.0,27.112169,30.005569 +2020-07-11,20,0,Banks,137.587588,0.0,0.0,27.119531,30.01558 +2020-07-11,20,0,Bardeen,0.0,0.0,0.0,27.123309,30.020718 +2020-07-11,20,0,Barkla,0.0,0.0,0.0,27.128547,30.027841 +2020-07-11,20,0,Barlow,186.978005,0.0,0.0,27.131424,30.031754 +2020-07-11,20,0,Barry,136.882011,0.0,0.0,27.123476,30.020945 +2020-07-11,20,0,Barton,223.668028,0.0,0.0,27.112014,30.005359 +2020-07-11,20,0,Basov,70.557738,0.0,0.0,27.123712,30.021265 +2020-07-11,20,0,Bates,0.0,0.0,0.0,27.128398,30.027638 +2020-07-11,20,0,Bayle,234.957266,0.0,0.0,27.124252,30.022 +2020-07-11,20,0,Bede,127.709505,0.0,0.0,27.135483,30.037274 +2020-07-11,20,0,Beethoven,90.313904,0.0,0.0,27.14572,30.051194 +2020-07-11,20,0,Behring,0.0,0.0,0.0,27.120402,30.016765 +2020-07-11,20,0,Bell,0.0,0.0,0.0,27.123545,30.021039 +2020-07-11,20,0,Bloch,0.0,0.0,0.0,27.15135,30.05885 +2020-07-11,20,0,Bordet,0.0,0.0,0.0,27.097737,29.985943 +2020-07-11,20,0,Cabell,63.342561,0.0,0.0,27.29107,30.248853 +2020-07-11,20,0,Cabot,56.891003,0.0,0.0,27.291301,30.249167 +2020-07-11,20,0,Caesar,105.570934,0.0,0.0,27.283811,30.238982 +2020-07-11,20,0,Caine,43.401384,0.0,0.0,27.291951,30.250052 +2020-07-11,20,0,Calvin,41.641869,0.0,0.0,27.292594,30.250925 +2020-07-11,20,0,Camus,79.764706,0.0,0.0,27.293479,30.25213 +2020-07-11,20,0,Carew,73.313149,0.0,0.0,27.293328,30.251924 +2020-07-11,20,0,Carrel,100.292388,0.0,0.0,27.293328,30.251924 +2020-07-11,20,0,Carter,102.638408,0.0,0.0,27.292484,30.250776 +2020-07-11,20,0,Caruso,114.368512,0.0,0.0,27.294172,30.253071 +2020-07-11,20,0,Cary,0.0,0.0,0.0,27.292152,30.250324 +2020-07-11,20,0,Caxton,0.0,0.0,0.0,27.299123,30.259805 +2020-07-11,20,0,Cecil,155.423875,0.0,0.0,27.29919,30.259895 +2020-07-11,20,0,Chain,113.782007,0.0,0.0,27.284837,30.240378 +2020-07-11,20,0,Chase,185.922145,0.0,0.0,27.269086,30.218957 +2020-07-11,20,0,Chifa,58.650519,0.0,0.0,27.274563,30.226405 +2020-07-11,20,0,Chuhsi,0.0,0.0,0.0,27.260354,30.207083 +2020-07-11,20,0,Clark,195.306228,0.0,0.0,27.252847,30.196875 +2020-07-11,20,0,Clay,106.157439,0.0,0.0,27.290536,30.248127 +2020-07-11,20,0,Clive,75.072664,0.0,0.0,27.304426,30.267016 +2020-07-11,20,0,Cobb,0.0,0.0,0.0,27.258565,30.20465 +2020-07-11,20,0,Cole,0.0,0.0,0.0,27.259268,30.205606 +2020-07-11,20,0,Comte,0.0,0.0,0.0,27.312066,30.277405 +2020-07-11,20,0,Curie,0.0,0.0,0.0,27.274665,30.226544 +2020-07-11,20,0,Curtiss,0.0,0.0,0.0,27.320849,30.28935 +2020-07-11,21,0,Abel,63.480259,0.0,0.0,32.336687,32.459201 +2020-07-11,21,0,Adams,57.014677,0.0,0.0,19.0723,19.0723 +2020-07-11,21,0,Adler,105.800432,0.0,0.0,27.544628,27.622881 +2020-07-11,21,0,Agricola,43.495733,0.0,0.0,22.710859,22.744466 +2020-07-11,21,0,Aiken,41.732393,0.0,0.0,29.390235,29.485535 +2020-07-11,21,0,Alber,79.938104,0.0,0.0,24.587549,24.63849 +2020-07-11,21,0,Alder,73.472522,0.0,0.0,26.110285,26.17529 +2020-07-11,21,0,Alger,100.510411,0.0,0.0,26.069835,26.134466 +2020-07-11,21,0,Ali,102.861531,0.0,0.0,25.690466,25.751593 +2020-07-11,21,0,Allen,114.617135,0.0,0.0,26.33979,26.406915 +2020-07-11,21,0,Anna,0.0,0.0,0.0,26.171856,26.23743 +2020-07-11,21,0,Archer,0.0,0.0,0.0,26.140868,26.206156 +2020-07-11,21,0,Arne,155.761748,0.0,0.0,26.200082,26.265916 +2020-07-11,21,0,Arnold,114.029355,0.0,0.0,26.298116,26.364856 +2020-07-11,21,0,Arthur,186.326317,0.0,0.0,26.565965,26.635179 +2020-07-11,21,0,Asser,58.778018,0.0,0.0,26.475482,26.543861 +2020-07-11,21,0,Aston,0.0,0.0,0.0,26.49982,26.568423 +2020-07-11,21,0,Astor,195.7308,0.0,0.0,26.511156,26.579864 +2020-07-11,21,0,Attar,106.388213,0.0,0.0,26.400677,26.468364 +2020-07-11,21,0,Attila,75.235863,0.0,0.0,26.335629,26.402716 +2020-07-11,21,0,Attlee,0.0,0.0,0.0,26.521682,26.590487 +2020-07-11,21,0,Aubrey,0.0,0.0,0.0,26.513089,26.581815 +2020-07-11,21,0,Austen,0.0,0.0,0.0,26.299853,26.366609 +2020-07-11,21,0,Avery,0.0,0.0,0.0,26.936725,27.009363 +2020-07-11,21,0,Bach,73.470542,0.0,0.0,26.245324,26.311577 +2020-07-11,21,0,Bacon,65.987431,0.0,0.0,26.246223,26.312483 +2020-07-11,21,0,Baffin,122.450903,0.0,0.0,26.217046,26.283037 +2020-07-11,21,0,Bailey,50.340927,0.0,0.0,26.248758,26.315042 +2020-07-11,21,0,Bain,48.300079,0.0,0.0,26.251261,26.317569 +2020-07-11,21,0,Bajer,92.51846,0.0,0.0,26.254711,26.32105 +2020-07-11,21,0,Baker,85.03535,0.0,0.0,26.254121,26.320455 +2020-07-11,21,0,Balch,116.328358,0.0,0.0,26.254121,26.320455 +2020-07-11,21,0,Balzac,119.049489,0.0,0.0,26.250834,26.317138 +2020-07-11,21,0,Banks,132.655145,0.0,0.0,26.257408,26.323772 +2020-07-11,21,0,Bardeen,0.0,0.0,0.0,26.260781,26.327176 +2020-07-11,21,0,Barkla,0.0,0.0,0.0,26.265458,26.331896 +2020-07-11,21,0,Barlow,180.274941,0.0,0.0,26.268027,26.334489 +2020-07-11,21,0,Barry,131.974863,0.0,0.0,26.26093,26.327327 +2020-07-11,21,0,Barton,215.649646,0.0,0.0,26.250696,26.316999 +2020-07-11,21,0,Basov,68.02828,0.0,0.0,26.26114,26.327539 +2020-07-11,21,0,Bates,0.0,0.0,0.0,26.265324,26.331762 +2020-07-11,21,0,Bayle,226.534171,0.0,0.0,26.261623,26.328026 +2020-07-11,21,0,Bede,123.131186,0.0,0.0,26.271651,26.338147 +2020-07-11,21,0,Beethoven,87.076198,0.0,0.0,26.280791,26.347371 +2020-07-11,21,0,Behring,0.0,0.0,0.0,26.258185,26.324557 +2020-07-11,21,0,Bell,0.0,0.0,0.0,26.260992,26.327389 +2020-07-11,21,0,Bloch,0.0,0.0,0.0,26.285818,26.352444 +2020-07-11,21,0,Bordet,0.0,0.0,0.0,26.237948,26.304133 +2020-07-11,21,0,Cabell,59.809374,0.0,0.0,26.410569,26.478348 +2020-07-11,21,0,Cabot,53.717678,0.0,0.0,26.410775,26.478556 +2020-07-11,21,0,Caesar,99.68229,0.0,0.0,26.404088,26.471807 +2020-07-11,21,0,Caine,40.980497,0.0,0.0,26.411356,26.479142 +2020-07-11,21,0,Calvin,39.319125,0.0,0.0,26.41193,26.479721 +2020-07-11,21,0,Camus,75.315508,0.0,0.0,26.412721,26.480519 +2020-07-11,21,0,Carew,69.223812,0.0,0.0,26.412585,26.480383 +2020-07-11,21,0,Carrel,94.698175,0.0,0.0,26.412585,26.480383 +2020-07-11,21,0,Carter,96.913337,0.0,0.0,26.411832,26.479622 +2020-07-11,21,0,Caruso,107.989147,0.0,0.0,26.413339,26.481143 +2020-07-11,21,0,Cary,0.0,0.0,0.0,26.411535,26.479323 +2020-07-11,21,0,Caxton,0.0,0.0,0.0,26.41776,26.485605 +2020-07-11,21,0,Cecil,146.754482,0.0,0.0,26.417819,26.485665 +2020-07-11,21,0,Chain,107.435357,0.0,0.0,26.405005,26.472732 +2020-07-11,21,0,Chase,175.551588,0.0,0.0,26.39094,26.458538 +2020-07-11,21,0,Chifa,55.37905,0.0,0.0,26.39583,26.463473 +2020-07-11,21,0,Chuhsi,0.0,0.0,0.0,26.383144,26.450669 +2020-07-11,21,0,Clark,184.412237,0.0,0.0,26.376442,26.443905 +2020-07-11,21,0,Clay,100.23608,0.0,0.0,26.410093,26.477867 +2020-07-11,21,0,Clive,70.885184,0.0,0.0,26.422495,26.490384 +2020-07-11,21,0,Cobb,0.0,0.0,0.0,26.381546,26.449057 +2020-07-11,21,0,Cole,0.0,0.0,0.0,26.382174,26.449691 +2020-07-11,21,0,Comte,0.0,0.0,0.0,26.429316,26.497268 +2020-07-11,21,0,Curie,0.0,0.0,0.0,26.395921,26.463565 +2020-07-11,21,0,Curtiss,0.0,0.0,0.0,26.437158,26.505183 +2020-07-11,22,0,Abel,56.709523,0.0,0.0,27.08411,27.677599 +2020-07-11,22,0,Adams,50.933553,0.0,0.0,19.0723,19.0723 +2020-07-11,22,0,Adler,94.515872,0.0,0.0,24.189663,24.568741 +2020-07-11,22,0,Agricola,38.856525,0.0,0.0,21.270022,21.432823 +2020-07-11,22,0,Aiken,37.281261,0.0,0.0,25.304426,25.766082 +2020-07-11,22,0,Alber,71.411992,0.0,0.0,22.403561,22.65033 +2020-07-11,22,0,Alder,65.636022,0.0,0.0,23.323306,23.638208 +2020-07-11,22,0,Alger,89.790078,0.0,0.0,23.298874,23.611966 +2020-07-11,22,0,Ali,91.890431,0.0,0.0,23.069732,23.365849 +2020-07-11,22,0,Allen,102.392195,0.0,0.0,23.46193,23.7871 +2020-07-11,22,0,Anna,0.0,0.0,0.0,23.360496,23.678152 +2020-07-11,22,0,Archer,0.0,0.0,0.0,23.341779,23.658049 +2020-07-11,22,0,Arne,139.148367,0.0,0.0,23.377545,23.696464 +2020-07-11,22,0,Arnold,101.867107,0.0,0.0,23.436758,23.760064 +2020-07-11,22,0,Arthur,166.452953,0.0,0.0,23.598542,23.933831 +2020-07-11,22,0,Asser,52.508818,0.0,0.0,23.543889,23.87513 +2020-07-11,22,0,Aston,0.0,0.0,0.0,23.55859,23.89092 +2020-07-11,22,0,Astor,174.854363,0.0,0.0,23.565437,23.898274 +2020-07-11,22,0,Attar,95.04096,0.0,0.0,23.498706,23.8266 +2020-07-11,22,0,Attila,67.211287,0.0,0.0,23.459416,23.7844 +2020-07-11,22,0,Attlee,0.0,0.0,0.0,23.571794,23.905103 +2020-07-11,22,0,Aubrey,0.0,0.0,0.0,23.566604,23.899528 +2020-07-11,22,0,Austen,0.0,0.0,0.0,23.437807,23.76119 +2020-07-11,22,0,Avery,0.0,0.0,0.0,23.822484,24.174362 +2020-07-11,22,0,Bach,69.228594,0.0,0.0,23.404872,23.725815 +2020-07-11,22,0,Bacon,62.177533,0.0,0.0,23.405414,23.726398 +2020-07-11,22,0,Baffin,115.38099,0.0,0.0,23.387791,23.707469 +2020-07-11,22,0,Bailey,47.434407,0.0,0.0,23.406946,23.728042 +2020-07-11,22,0,Bain,45.51139,0.0,0.0,23.408458,23.729666 +2020-07-11,22,0,Bajer,87.176748,0.0,0.0,23.410541,23.731904 +2020-07-11,22,0,Baker,80.125687,0.0,0.0,23.410185,23.731522 +2020-07-11,22,0,Balch,109.61194,0.0,0.0,23.410185,23.731522 +2020-07-11,22,0,Balzac,112.175962,0.0,0.0,23.4082,23.729389 +2020-07-11,22,0,Banks,124.996072,0.0,0.0,23.41217,23.733654 +2020-07-11,22,0,Bardeen,0.0,0.0,0.0,23.414207,23.735842 +2020-07-11,22,0,Barkla,0.0,0.0,0.0,23.417032,23.738876 +2020-07-11,22,0,Barlow,169.866457,0.0,0.0,23.418584,23.740543 +2020-07-11,22,0,Barry,124.355067,0.0,0.0,23.414298,23.735939 +2020-07-11,22,0,Barton,203.198743,0.0,0.0,23.408116,23.7293 +2020-07-11,22,0,Basov,64.10055,0.0,0.0,23.414425,23.736076 +2020-07-11,22,0,Bates,0.0,0.0,0.0,23.416952,23.73879 +2020-07-11,22,0,Bayle,213.454831,0.0,0.0,23.414716,23.736388 +2020-07-11,22,0,Bede,116.021995,0.0,0.0,23.420773,23.742894 +2020-07-11,22,0,Beethoven,82.048704,0.0,0.0,23.426294,23.748824 +2020-07-11,22,0,Behring,0.0,0.0,0.0,23.41264,23.734159 +2020-07-11,22,0,Bell,0.0,0.0,0.0,23.414335,23.735979 +2020-07-11,22,0,Bloch,0.0,0.0,0.0,23.42933,23.752085 +2020-07-11,22,0,Bordet,0.0,0.0,0.0,23.400416,23.72103 +2020-07-11,22,0,Cabell,54.475621,0.0,0.0,23.504681,23.833018 +2020-07-11,22,0,Cabot,48.927178,0.0,0.0,23.504805,23.833151 +2020-07-11,22,0,Caesar,90.792702,0.0,0.0,23.500767,23.828813 +2020-07-11,22,0,Caine,37.325889,0.0,0.0,23.505156,23.833528 +2020-07-11,22,0,Calvin,35.812677,0.0,0.0,23.505503,23.833901 +2020-07-11,22,0,Camus,68.59893,0.0,0.0,23.50598,23.834413 +2020-07-11,22,0,Carew,63.050488,0.0,0.0,23.505899,23.834326 +2020-07-11,22,0,Carrel,86.253067,0.0,0.0,23.505899,23.834326 +2020-07-11,22,0,Carter,88.270683,0.0,0.0,23.505444,23.833837 +2020-07-11,22,0,Caruso,98.358761,0.0,0.0,23.506354,23.834814 +2020-07-11,22,0,Cary,0.0,0.0,0.0,23.505265,23.833645 +2020-07-11,22,0,Caxton,0.0,0.0,0.0,23.509024,23.837683 +2020-07-11,22,0,Cecil,133.667034,0.0,0.0,23.50906,23.837721 +2020-07-11,22,0,Chain,97.854357,0.0,0.0,23.50132,23.829408 +2020-07-11,22,0,Chase,159.896037,0.0,0.0,23.492825,23.820284 +2020-07-11,22,0,Chifa,50.44039,0.0,0.0,23.495779,23.823456 +2020-07-11,22,0,Chuhsi,0.0,0.0,0.0,23.488116,23.815225 +2020-07-11,22,0,Clark,167.966499,0.0,0.0,23.484068,23.810877 +2020-07-11,22,0,Clay,91.297106,0.0,0.0,23.504393,23.832709 +2020-07-11,22,0,Clive,64.563699,0.0,0.0,23.511884,23.840755 +2020-07-11,22,0,Cobb,0.0,0.0,0.0,23.487151,23.814189 +2020-07-11,22,0,Cole,0.0,0.0,0.0,23.48753,23.814596 +2020-07-11,22,0,Comte,0.0,0.0,0.0,23.516004,23.84518 +2020-07-11,22,0,Curie,0.0,0.0,0.0,23.495834,23.823515 +2020-07-11,22,0,Curtiss,0.0,0.0,0.0,23.520741,23.850268 +2020-07-11,23,0,Abel,58.147229,0.0,0.0,29.268786,29.268786 +2020-07-11,23,0,Adams,52.224826,0.0,0.0,19.0723,19.0723 +2020-07-11,23,0,Adler,96.912049,0.0,0.0,25.585075,25.585075 +2020-07-11,23,0,Agricola,39.84162,0.0,0.0,21.869302,21.869302 +2020-07-11,23,0,Aiken,38.226419,0.0,0.0,27.003814,27.003814 +2020-07-11,23,0,Alber,73.222437,0.0,0.0,23.311935,23.311935 +2020-07-11,23,0,Alder,67.300034,0.0,0.0,24.482479,24.482479 +2020-07-11,23,0,Alger,92.066447,0.0,0.0,24.451385,24.451385 +2020-07-11,23,0,Ali,94.220048,0.0,0.0,24.15976,24.15976 +2020-07-11,23,0,Allen,104.988053,0.0,0.0,24.658903,24.658903 +2020-07-11,23,0,Anna,0.0,0.0,0.0,24.52981,24.52981 +2020-07-11,23,0,Archer,0.0,0.0,0.0,24.505989,24.505989 +2020-07-11,23,0,Arne,142.676072,0.0,0.0,24.551507,24.551507 +2020-07-11,23,0,Arnold,104.449653,0.0,0.0,24.626867,24.626867 +2020-07-11,23,0,Arthur,170.672887,0.0,0.0,24.832766,24.832766 +2020-07-11,23,0,Asser,53.840027,0.0,0.0,24.763211,24.763211 +2020-07-11,23,0,Aston,0.0,0.0,0.0,24.78192,24.78192 +2020-07-11,23,0,Astor,179.287291,0.0,0.0,24.790634,24.790634 +2020-07-11,23,0,Attar,97.450449,0.0,0.0,24.705707,24.705707 +2020-07-11,23,0,Attila,68.915235,0.0,0.0,24.655704,24.655704 +2020-07-11,23,0,Attlee,0.0,0.0,0.0,24.798725,24.798725 +2020-07-11,23,0,Aubrey,0.0,0.0,0.0,24.79212,24.79212 +2020-07-11,23,0,Austen,0.0,0.0,0.0,24.628202,24.628202 +2020-07-11,23,0,Avery,0.0,0.0,0.0,25.117773,25.117773 +2020-07-11,23,0,Bach,63.612255,0.0,0.0,24.586286,24.586286 +2020-07-11,23,0,Bacon,57.133229,0.0,0.0,24.586976,24.586976 +2020-07-11,23,0,Baffin,106.020424,0.0,0.0,24.564548,24.564548 +2020-07-11,23,0,Bailey,43.586174,0.0,0.0,24.588925,24.588925 +2020-07-11,23,0,Bain,41.819167,0.0,0.0,24.590849,24.590849 +2020-07-11,23,0,Bajer,80.10432,0.0,0.0,24.593501,24.593501 +2020-07-11,23,0,Baker,73.625295,0.0,0.0,24.593048,24.593048 +2020-07-11,23,0,Balch,100.719403,0.0,0.0,24.593048,24.593048 +2020-07-11,23,0,Balzac,103.075412,0.0,0.0,24.590521,24.590521 +2020-07-11,23,0,Banks,114.85546,0.0,0.0,24.595574,24.595574 +2020-07-11,23,0,Bardeen,0.0,0.0,0.0,24.598167,24.598167 +2020-07-11,23,0,Barkla,0.0,0.0,0.0,24.601762,24.601762 +2020-07-11,23,0,Barlow,156.085624,0.0,0.0,24.603737,24.603737 +2020-07-11,23,0,Barry,114.266457,0.0,0.0,24.598282,24.598282 +2020-07-11,23,0,Barton,186.713747,0.0,0.0,24.590415,24.590415 +2020-07-11,23,0,Basov,58.900236,0.0,0.0,24.598444,24.598444 +2020-07-11,23,0,Bates,0.0,0.0,0.0,24.60166,24.60166 +2020-07-11,23,0,Bayle,196.137785,0.0,0.0,24.598814,24.598814 +2020-07-11,23,0,Bede,106.609427,0.0,0.0,24.606523,24.606523 +2020-07-11,23,0,Beethoven,75.392302,0.0,0.0,24.613549,24.613549 +2020-07-11,23,0,Behring,0.0,0.0,0.0,24.596172,24.596172 +2020-07-11,23,0,Bell,0.0,0.0,0.0,24.598329,24.598329 +2020-07-11,23,0,Bloch,0.0,0.0,0.0,24.617414,24.617414 +2020-07-11,23,0,Bordet,0.0,0.0,0.0,24.580616,24.580616 +2020-07-11,23,0,Cabell,49.787355,0.0,0.0,24.713311,24.713311 +2020-07-11,23,0,Cabot,44.71642,0.0,0.0,24.71347,24.71347 +2020-07-11,23,0,Caesar,82.978924,0.0,0.0,24.708329,24.708329 +2020-07-11,23,0,Caine,34.113558,0.0,0.0,24.713916,24.713916 +2020-07-11,23,0,Calvin,32.730576,0.0,0.0,24.714357,24.714357 +2020-07-11,23,0,Camus,62.695187,0.0,0.0,24.714965,24.714965 +2020-07-11,23,0,Carew,57.624253,0.0,0.0,24.714861,24.714861 +2020-07-11,23,0,Carrel,78.829978,0.0,0.0,24.714861,24.714861 +2020-07-11,23,0,Carter,80.673954,0.0,0.0,24.714282,24.714282 +2020-07-11,23,0,Caruso,89.893835,0.0,0.0,24.71544,24.71544 +2020-07-11,23,0,Cary,0.0,0.0,0.0,24.714054,24.714054 +2020-07-11,23,0,Caxton,0.0,0.0,0.0,24.718839,24.718839 +2020-07-11,23,0,Cecil,122.163416,0.0,0.0,24.718884,24.718884 +2020-07-11,23,0,Chain,89.43284,0.0,0.0,24.709034,24.709034 +2020-07-11,23,0,Chase,146.135105,0.0,0.0,24.698222,24.698222 +2020-07-11,23,0,Chifa,46.099402,0.0,0.0,24.701981,24.701981 +2020-07-11,23,0,Chuhsi,0.0,0.0,0.0,24.692229,24.692229 +2020-07-11,23,0,Clark,153.51101,0.0,0.0,24.687077,24.687077 +2020-07-11,23,0,Clay,83.439918,0.0,0.0,24.712945,24.712945 +2020-07-11,23,0,Clive,59.007235,0.0,0.0,24.722479,24.722479 +2020-07-11,23,0,Cobb,0.0,0.0,0.0,24.691001,24.691001 +2020-07-11,23,0,Cole,0.0,0.0,0.0,24.691484,24.691484 +2020-07-11,23,0,Comte,0.0,0.0,0.0,24.727722,24.727722 +2020-07-11,23,0,Curie,0.0,0.0,0.0,24.702051,24.702051 +2020-07-11,23,0,Curtiss,0.0,0.0,0.0,24.733751,24.733751 diff --git a/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/bidding_plugin_test_multiperiod_rankine/contingency_detail.csv b/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/bidding_plugin_test_multiperiod_rankine/contingency_detail.csv new file mode 100644 index 000000000..fdf161382 --- /dev/null +++ b/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/bidding_plugin_test_multiperiod_rankine/contingency_detail.csv @@ -0,0 +1 @@ +Date,Hour,Minute,Contingency,Line,Flow,Violation diff --git a/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/bidding_plugin_test_multiperiod_rankine/daily_summary.csv b/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/bidding_plugin_test_multiperiod_rankine/daily_summary.csv new file mode 100644 index 000000000..24a9010f2 --- /dev/null +++ b/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/bidding_plugin_test_multiperiod_rankine/daily_summary.csv @@ -0,0 +1,3 @@ +Date,Demand,Renewables available,Renewables used,Renewables penetration rate,Average price,Fixed costs,Generation costs,Load shedding,Over generation,Reserve shortfall,Renewables curtailment,Number on/offs,Sum on/off ramps,Sum nominal ramps,Renewables energy payments,Renewables uplift payments,Thermal energy payments,Thermal uplift payments,Total energy payments,Total uplift payments,Total reserve payments,Total payments,Average payments +2020-07-10,120338.457951,44828.88,44572.485232,58.82916,14.706652,1286871.214163,482904.620205,0.0,0.0,0.0,256.394768,67,704.0,5506.492453,911831.653372,0.0,1787387.955274,0.0,2699219.608646,0.0,0.0,2699219.608646,22.430233 +2020-07-11,118724.064085,32892.106,32329.453931,37.420684,16.847036,1478807.57719,521340.959758,0.0,0.0,0.0,562.652069,13,372.0,5041.640588,653626.729067,0.0,1915865.258387,0.0,2569491.987454,0.0,0.0,2569491.987454,21.642554 diff --git a/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/bidding_plugin_test_multiperiod_rankine/hourly_gen_summary.csv b/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/bidding_plugin_test_multiperiod_rankine/hourly_gen_summary.csv new file mode 100644 index 000000000..523828124 --- /dev/null +++ b/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/bidding_plugin_test_multiperiod_rankine/hourly_gen_summary.csv @@ -0,0 +1,49 @@ +Date,Hour,Load shedding,Reserve shortfall,Available reserves,Over generation,Reserve Price DA,Reserve Price RT +2020-07-10,0,0.0,0.0,1351.711773,0.0,0.0,0.0 +2020-07-10,1,0.0,0.0,1710.0,0.0,0.0,0.0 +2020-07-10,2,0.0,0.0,1635.622585,0.0,0.0,0.0 +2020-07-10,3,0.0,0.0,895.641012,0.0,0.0,0.0 +2020-07-10,4,0.0,0.0,1696.699033,0.0,0.0,0.0 +2020-07-10,5,0.0,0.0,1705.0,0.0,0.0,0.0 +2020-07-10,6,0.0,0.0,1704.0,0.0,0.0,0.0 +2020-07-10,7,0.0,0.0,1704.0,0.0,0.0,0.0 +2020-07-10,8,0.0,0.0,1634.581928,0.0,0.0,0.0 +2020-07-10,9,0.0,0.0,1488.778052,0.0,0.0,0.0 +2020-07-10,10,0.0,0.0,1167.856122,0.0,0.0,0.0 +2020-07-10,11,0.0,0.0,968.527807,0.0,0.0,0.0 +2020-07-10,12,0.0,0.0,900.599314,0.0,0.0,0.0 +2020-07-10,13,0.0,0.0,785.227819,0.0,0.0,0.0 +2020-07-10,14,0.0,0.0,595.883071,0.0,0.0,0.0 +2020-07-10,15,0.0,0.0,890.561804,0.0,0.0,0.0 +2020-07-10,16,0.0,0.0,880.078654,0.0,0.0,0.0 +2020-07-10,17,0.0,0.0,843.035616,0.0,0.0,0.0 +2020-07-10,18,0.0,0.0,657.668026,0.0,0.0,0.0 +2020-07-10,19,0.0,0.0,548.153393,0.0,0.0,0.0 +2020-07-10,20,0.0,0.0,560.451972,0.0,0.0,0.0 +2020-07-10,21,0.0,0.0,677.897147,0.0,0.0,0.0 +2020-07-10,22,0.0,0.0,1029.267871,0.0,0.0,0.0 +2020-07-10,23,0.0,0.0,988.177976,0.0,0.0,0.0 +2020-07-11,0,0.0,0.0,1186.380164,0.0,0.0,0.0 +2020-07-11,1,0.0,0.0,1336.081714,0.0,0.0,0.0 +2020-07-11,2,0.0,0.0,1578.382916,0.0,0.0,0.0 +2020-07-11,3,0.0,0.0,1664.702468,0.0,0.0,0.0 +2020-07-11,4,0.0,0.0,1751.099788,0.0,0.0,0.0 +2020-07-11,5,0.0,0.0,1930.639595,0.0,0.0,0.0 +2020-07-11,6,0.0,0.0,2318.896446,0.0,0.0,0.0 +2020-07-11,7,0.0,0.0,2355.0,0.0,0.0,0.0 +2020-07-11,8,0.0,0.0,2314.103554,0.0,0.0,0.0 +2020-07-11,9,0.0,0.0,2282.0,0.0,0.0,0.0 +2020-07-11,10,0.0,0.0,2079.863283,0.0,0.0,0.0 +2020-07-11,11,0.0,0.0,1950.693987,0.0,0.0,0.0 +2020-07-11,12,0.0,0.0,1749.238499,0.0,0.0,0.0 +2020-07-11,13,0.0,0.0,1493.809601,0.0,0.0,0.0 +2020-07-11,14,0.0,0.0,672.66636,0.0,0.0,0.0 +2020-07-11,15,0.0,0.0,995.276423,0.0,0.0,0.0 +2020-07-11,16,0.0,0.0,1130.648297,0.0,0.0,0.0 +2020-07-11,17,0.0,0.0,1001.94395,0.0,0.0,0.0 +2020-07-11,18,0.0,0.0,833.807517,0.0,0.0,0.0 +2020-07-11,19,0.0,0.0,794.740295,0.0,0.0,0.0 +2020-07-11,20,0.0,0.0,740.727902,0.0,0.0,0.0 +2020-07-11,21,0.0,0.0,980.465593,0.0,0.0,0.0 +2020-07-11,22,0.0,0.0,997.761903,0.0,0.0,0.0 +2020-07-11,23,0.0,0.0,799.93154,0.0,0.0,0.0 diff --git a/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/bidding_plugin_test_multiperiod_rankine/hourly_summary.csv b/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/bidding_plugin_test_multiperiod_rankine/hourly_summary.csv new file mode 100644 index 000000000..acf75e413 --- /dev/null +++ b/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/bidding_plugin_test_multiperiod_rankine/hourly_summary.csv @@ -0,0 +1,49 @@ +Date,Hour,TotalCosts,FixedCosts,VariableCosts,LoadShedding,OverGeneration,ReserveShortfall,RenewablesUsed,RenewablesCurtailment,Demand,Price +2020-07-10,0,48944.825298,41023.553174,7921.272124,0.0,0.0,0.0,1735.338,0.0,4080.626227,11.99444 +2020-07-10,1,42185.912881,41023.553174,1162.359707,0.0,0.0,0.0,1895.099723,51.000277,3882.099723,10.866777 +2020-07-10,2,43456.533082,41023.553174,2432.979908,0.0,0.0,0.0,1647.24,0.0,3708.617415,11.717718 +2020-07-10,3,58415.459746,41023.553174,17391.906572,0.0,0.0,0.0,824.63,0.0,3625.988988,16.110214 +2020-07-10,4,43436.658019,41023.553174,2413.104845,0.0,0.0,0.0,1580.116,0.0,3640.416967,11.931781 +2020-07-10,5,42281.086757,41023.553174,1257.533583,0.0,0.0,0.0,1722.229758,84.902242,3714.229758,11.383541 +2020-07-10,6,42338.191082,41023.553174,1314.637908,0.0,0.0,0.0,1932.338284,84.921716,3925.338284,10.785871 +2020-07-10,7,42338.191082,41023.553174,1314.637908,0.0,0.0,0.0,2431.331467,35.570533,4424.331467,9.569399 +2020-07-10,8,43481.537436,41023.553174,2457.984262,0.0,0.0,0.0,2808.682,0.0,4871.100072,8.926431 +2020-07-10,9,46234.054032,41023.553174,5210.500858,0.0,0.0,0.0,2964.82,0.0,5173.041948,8.937498 +2020-07-10,10,52942.413193,41023.553174,11918.860019,0.0,0.0,0.0,3004.418,0.0,5551.483826,9.536624 +2020-07-10,11,58389.286802,41023.553174,17365.733628,0.0,0.0,0.0,2962.84,0.0,5769.234141,10.120804 +2020-07-10,12,60747.16694,41023.553174,19723.613766,0.0,0.0,0.0,2965.79,0.0,5876.190686,10.337848 +2020-07-10,13,95878.515302,73842.729679,22035.785623,0.0,0.0,0.0,2898.25,0.0,6082.190507,15.763813 +2020-07-10,14,109875.708645,78638.354121,31237.354525,0.0,0.0,0.0,2713.734,0.0,6453.850929,17.024829 +2020-07-10,15,112199.482185,83881.358712,28318.123473,0.0,0.0,0.0,2621.09,0.0,6410.668396,17.501994 +2020-07-10,16,120537.99688,88758.925752,31779.071128,0.0,0.0,0.0,2164.132,0.0,6297.294618,19.141235 +2020-07-10,17,98748.052829,60712.24473,38035.808099,0.0,0.0,0.0,1718.948,0.0,6106.912384,16.169882 +2020-07-10,18,103565.883326,60712.24473,42853.638597,0.0,0.0,0.0,1123.102,0.0,5696.433974,18.180827 +2020-07-10,19,109975.608684,64170.186258,45805.422426,0.0,0.0,0.0,888.166,0.0,5595.012607,19.656007 +2020-07-10,20,106287.50247,60712.24473,45575.25774,0.0,0.0,0.0,710.078,0.0,5380.626028,19.753743 +2020-07-10,21,103102.532397,60712.24473,42390.287668,0.0,0.0,0.0,537.882,0.0,5090.984853,20.251982 +2020-07-10,22,93919.580459,60712.24473,33207.335729,0.0,0.0,0.0,408.33,0.0,4610.062129,20.372736 +2020-07-10,23,90493.65484,60712.24473,29781.410111,0.0,0.0,0.0,313.9,0.0,4371.722024,20.699773 +2020-07-11,0,81227.006486,55834.67769,25392.328795,0.0,0.0,0.0,313.134,0.0,4002.753836,20.292781 +2020-07-11,1,77306.94126,55834.67769,21472.26357,0.0,0.0,0.0,297.96,0.0,3837.878286,20.143146 +2020-07-11,2,72330.819149,55834.67769,16496.141459,0.0,0.0,0.0,326.082,0.0,3623.699084,19.960493 +2020-07-11,3,70503.911947,55834.67769,14669.234257,0.0,0.0,0.0,341.936,0.0,3553.233532,19.842184 +2020-07-11,4,68737.263042,55834.67769,12902.585351,0.0,0.0,0.0,397.202,0.0,3522.102212,19.515976 +2020-07-11,5,65184.217037,55834.67769,9349.539347,0.0,0.0,0.0,454.618,0.0,3399.978405,19.17195 +2020-07-11,6,58101.083276,55834.67769,2266.405585,0.0,0.0,0.0,982.783925,21.276075,3539.887479,16.413257 +2020-07-11,7,56972.476861,55834.67769,1137.799171,0.0,0.0,0.0,1433.333465,237.048535,3929.437019,14.49889 +2020-07-11,8,56597.396407,55834.67769,762.718716,0.0,0.0,0.0,1972.826342,163.673658,4449.826342,12.719012 +2020-07-11,9,56652.930386,55834.67769,818.252696,0.0,0.0,0.0,2327.858198,140.653802,4807.858198,11.783403 +2020-07-11,10,60156.92884,55834.67769,4322.25115,0.0,0.0,0.0,2641.648,0.0,5323.784717,11.299655 +2020-07-11,11,62614.798024,55834.67769,6780.120334,0.0,0.0,0.0,2776.22,0.0,5587.526013,11.206176 +2020-07-11,12,67579.110694,55834.67769,11744.433003,0.0,0.0,0.0,2758.65,0.0,5819.560129,11.612409 +2020-07-11,13,73045.982816,55834.67769,17211.305126,0.0,0.0,0.0,2683.55,0.0,6003.152531,12.167937 +2020-07-11,14,92510.175933,55834.67769,36675.498243,0.0,0.0,0.0,2474.2,0.0,6624.16567,13.965559 +2020-07-11,15,151208.684792,121683.173813,29525.510979,0.0,0.0,0.0,2354.682,0.0,6559.700309,23.051157 +2020-07-11,16,100795.779896,65589.811769,35205.968127,0.0,0.0,0.0,1965.13,0.0,6407.259023,15.731498 +2020-07-11,17,104387.586745,65589.811769,38797.774976,0.0,0.0,0.0,1640.268,0.0,6224.32405,16.770911 +2020-07-11,18,108661.586028,65589.811769,43071.774259,0.0,0.0,0.0,1114.632,0.0,5866.824483,18.521363 +2020-07-11,19,114288.517965,70230.689717,44057.828247,0.0,0.0,0.0,838.732,0.0,5661.991705,20.185215 +2020-07-11,20,111203.740225,65589.811769,45613.928456,0.0,0.0,0.0,653.718,0.0,5498.990098,20.222575 +2020-07-11,21,104808.643068,65589.811769,39218.831299,0.0,0.0,0.0,586.748,0.0,5192.282407,20.185467 +2020-07-11,22,95137.66016,65589.811769,29547.848391,0.0,0.0,0.0,542.68,0.0,4760.918097,19.983049 +2020-07-11,23,90135.295912,55834.67769,34300.618222,0.0,0.0,0.0,450.862,0.0,4526.93046,19.910908 diff --git a/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/bidding_plugin_test_multiperiod_rankine/line_detail.csv b/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/bidding_plugin_test_multiperiod_rankine/line_detail.csv new file mode 100644 index 000000000..c436b5722 --- /dev/null +++ b/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/bidding_plugin_test_multiperiod_rankine/line_detail.csv @@ -0,0 +1,5761 @@ +Date,Hour,Minute,Line,Flow,Violation +2020-07-10,0,0,A1,-81.384202,0.0 +2020-07-10,0,0,A2,48.449088,0.0 +2020-07-10,0,0,A3,131.850576,0.0 +2020-07-10,0,0,A4,103.597037,0.0 +2020-07-10,0,0,A5,98.640982,0.0 +2020-07-10,0,0,A6,73.832053,0.0 +2020-07-10,0,0,A7,-113.857194,0.0 +2020-07-10,0,0,A8,67.224298,0.0 +2020-07-10,0,0,A9,96.952408,0.0 +2020-07-10,0,0,A10,31.793787,0.0 +2020-07-10,0,0,A11,-100.405692,0.0 +2020-07-10,0,0,AB1,38.965255,0.0 +2020-07-10,0,0,A12-1,-94.441253,0.0 +2020-07-10,0,0,A13-2,-90.014957,0.0 +2020-07-10,0,0,A14,-26.609487,0.0 +2020-07-10,0,0,A15,-12.792026,0.0 +2020-07-10,0,0,A16,-35.568752,0.0 +2020-07-10,0,0,A17,-21.547092,0.0 +2020-07-10,0,0,A18,73.715285,0.0 +2020-07-10,0,0,A19,-135.893524,0.0 +2020-07-10,0,0,A20,48.809311,0.0 +2020-07-10,0,0,A21,-83.148429,0.0 +2020-07-10,0,0,A22,-119.634995,0.0 +2020-07-10,0,0,AB2,111.905865,0.0 +2020-07-10,0,0,A23,-231.249082,0.0 +2020-07-10,0,0,A24,162.386824,0.0 +2020-07-10,0,0,A25-1,-185.028483,0.0 +2020-07-10,0,0,A25-2,-185.028483,0.0 +2020-07-10,0,0,A26,113.857194,0.0 +2020-07-10,0,0,A27,-320.038986,0.0 +2020-07-10,0,0,A28,295.024378,0.0 +2020-07-10,0,0,A29,-51.042697,0.0 +2020-07-10,0,0,A30,-268.996289,0.0 +2020-07-10,0,0,A31-1,-107.36001,0.0 +2020-07-10,0,0,A31-2,-107.36001,0.0 +2020-07-10,0,0,A32-1,103.029313,0.0 +2020-07-10,0,0,A32-2,103.029313,0.0 +2020-07-10,0,0,A33-1,71.571809,0.0 +2020-07-10,0,0,A33-2,71.571809,0.0 +2020-07-10,0,0,A34,-363.803711,0.0 +2020-07-10,0,0,AB3,204.348421,0.0 +2020-07-10,0,0,B1,6.353095,0.0 +2020-07-10,0,0,B2,-39.278511,0.0 +2020-07-10,0,0,B3,14.487663,0.0 +2020-07-10,0,0,B4,0.791503,0.0 +2020-07-10,0,0,B5,13.868897,0.0 +2020-07-10,0,0,B6,37.464179,0.0 +2020-07-10,0,0,B7,-133.702022,0.0 +2020-07-10,0,0,B8,-38.644161,0.0 +2020-07-10,0,0,B9,-23.349257,0.0 +2020-07-10,0,0,B10,-58.607458,0.0 +2020-07-10,0,0,B11,-66.614297,0.0 +2020-07-10,0,0,B12-1,-87.981161,0.0 +2020-07-10,0,0,B13-2,-69.761494,0.0 +2020-07-10,0,0,B14,-75.127384,0.0 +2020-07-10,0,0,B15,-107.293775,0.0 +2020-07-10,0,0,B16,-111.497378,0.0 +2020-07-10,0,0,B17,-144.139134,0.0 +2020-07-10,0,0,B18,-80.10656,0.0 +2020-07-10,0,0,B19,-106.518202,0.0 +2020-07-10,0,0,B20,-22.12664,0.0 +2020-07-10,0,0,B21,-229.306269,0.0 +2020-07-10,0,0,B22,-243.45551,0.0 +2020-07-10,0,0,B23,-209.903591,0.0 +2020-07-10,0,0,B24,-32.230636,0.0 +2020-07-10,0,0,B25-1,-65.574189,0.0 +2020-07-10,0,0,B25-2,-65.574189,0.0 +2020-07-10,0,0,B26,133.702022,0.0 +2020-07-10,0,0,B27,-120.441556,0.0 +2020-07-10,0,0,B28,-81.984109,0.0 +2020-07-10,0,0,B29,102.71305,0.0 +2020-07-10,0,0,B30,-18.806185,0.0 +2020-07-10,0,0,B31-1,-37.373719,0.0 +2020-07-10,0,0,B31-2,-37.373719,0.0 +2020-07-10,0,0,B32-1,-89.220805,0.0 +2020-07-10,0,0,B32-2,-89.220805,0.0 +2020-07-10,0,0,B33-1,-123.327325,0.0 +2020-07-10,0,0,B33-2,-123.327325,0.0 +2020-07-10,0,0,B34,-35.895815,0.0 +2020-07-10,0,0,C1,23.819248,0.0 +2020-07-10,0,0,C2,-72.279032,0.0 +2020-07-10,0,0,C3,4.464817,0.0 +2020-07-10,0,0,C4,-20.727236,0.0 +2020-07-10,0,0,C5,5.032485,0.0 +2020-07-10,0,0,C6,64.380715,0.0 +2020-07-10,0,0,C7,-93.384692,0.0 +2020-07-10,0,0,C8,-50.871935,0.0 +2020-07-10,0,0,C9,-24.4578,0.0 +2020-07-10,0,0,C10,-50.368584,0.0 +2020-07-10,0,0,C11,-50.920101,0.0 +2020-07-10,0,0,C12-1,-77.916047,0.0 +2020-07-10,0,0,C13-2,-42.662751,0.0 +2020-07-10,0,0,C14,-31.771887,0.0 +2020-07-10,0,0,C15,-27.823521,0.0 +2020-07-10,0,0,C16,-100.465604,0.0 +2020-07-10,0,0,C17,-96.458888,0.0 +2020-07-10,0,0,C18,-3.174178,0.0 +2020-07-10,0,0,C19,-129.063313,0.0 +2020-07-10,0,0,C20,-10.291107,0.0 +2020-07-10,0,0,C21,-113.991302,0.0 +2020-07-10,0,0,C22,-121.415899,0.0 +2020-07-10,0,0,C23,-208.091309,0.0 +2020-07-10,0,0,C24,1.902231,0.0 +2020-07-10,0,0,C25-1,-112.210149,0.0 +2020-07-10,0,0,C25-2,-112.210149,0.0 +2020-07-10,0,0,C26,93.384692,0.0 +2020-07-10,0,0,C27,-367.180125,0.0 +2020-07-10,0,0,C28,182.254966,0.0 +2020-07-10,0,0,C29,339.923205,0.0 +2020-07-10,0,0,C30,-34.003329,0.0 +2020-07-10,0,0,C31-1,-28.572186,0.0 +2020-07-10,0,0,C31-2,-28.572186,0.0 +2020-07-10,0,0,C32-1,54.26133,0.0 +2020-07-10,0,0,C32-2,54.26133,0.0 +2020-07-10,0,0,C33-1,28.190238,0.0 +2020-07-10,0,0,C33-2,28.190238,0.0 +2020-07-10,0,0,C34,-111.564671,0.0 +2020-07-10,0,0,CA-1,-179.026724,0.0 +2020-07-10,0,0,CB-1,261.416429,0.0 +2020-07-10,0,0,C35,-179.026724,0.0 +2020-07-10,1,0,A1,-107.423505,0.0 +2020-07-10,1,0,A2,24.948183,0.0 +2020-07-10,1,0,A3,111.430608,0.0 +2020-07-10,1,0,A4,86.764837,0.0 +2020-07-10,1,0,A5,85.965942,0.0 +2020-07-10,1,0,A6,80.985489,0.0 +2020-07-10,1,0,A7,-141.111831,0.0 +2020-07-10,1,0,A8,51.789755,0.0 +2020-07-10,1,0,A9,77.873434,0.0 +2020-07-10,1,0,A10,21.687412,0.0 +2020-07-10,1,0,A11,-99.862526,0.0 +2020-07-10,1,0,AB1,40.782995,0.0 +2020-07-10,1,0,A12-1,-94.654159,0.0 +2020-07-10,1,0,A13-2,-86.029165,0.0 +2020-07-10,1,0,A14,-33.463805,0.0 +2020-07-10,1,0,A15,-11.126455,0.0 +2020-07-10,1,0,A16,-50.649923,0.0 +2020-07-10,1,0,A17,-27.982465,0.0 +2020-07-10,1,0,A18,85.436872,0.0 +2020-07-10,1,0,A19,-169.550599,0.0 +2020-07-10,1,0,A20,45.173799,0.0 +2020-07-10,1,0,A21,-84.282719,0.0 +2020-07-10,1,0,A22,-118.893864,0.0 +2020-07-10,1,0,AB2,124.255928,0.0 +2020-07-10,1,0,A23,-261.242032,0.0 +2020-07-10,1,0,A24,210.387631,0.0 +2020-07-10,1,0,A25-1,-219.662577,0.0 +2020-07-10,1,0,A25-2,-219.662577,0.0 +2020-07-10,1,0,A26,141.111831,0.0 +2020-07-10,1,0,A27,-399.248445,0.0 +2020-07-10,1,0,A28,363.130419,0.0 +2020-07-10,1,0,A29,-70.872373,0.0 +2020-07-10,1,0,A30,-328.376072,0.0 +2020-07-10,1,0,A31-1,-114.130122,0.0 +2020-07-10,1,0,A31-2,-114.130122,0.0 +2020-07-10,1,0,A32-1,138.791629,0.0 +2020-07-10,1,0,A32-2,138.791629,0.0 +2020-07-10,1,0,A33-1,108.542909,0.0 +2020-07-10,1,0,A33-2,108.542909,0.0 +2020-07-10,1,0,A34,-448.821928,0.0 +2020-07-10,1,0,AB3,215.909235,0.0 +2020-07-10,1,0,B1,6.532014,0.0 +2020-07-10,1,0,B2,-38.321027,0.0 +2020-07-10,1,0,B3,16.588496,0.0 +2020-07-10,1,0,B4,2.49932,0.0 +2020-07-10,1,0,B5,15.067886,0.0 +2020-07-10,1,0,B6,40.921428,0.0 +2020-07-10,1,0,B7,-129.321991,0.0 +2020-07-10,1,0,B8,-34.855275,0.0 +2020-07-10,1,0,B9,-19.251724,0.0 +2020-07-10,1,0,B10,-53.583803,0.0 +2020-07-10,1,0,B11,-63.098979,0.0 +2020-07-10,1,0,B12-1,-83.59391,0.0 +2020-07-10,1,0,B13-2,-65.824472,0.0 +2020-07-10,1,0,B14,-69.756234,0.0 +2020-07-10,1,0,B15,-96.110093,0.0 +2020-07-10,1,0,B16,-105.17554,0.0 +2020-07-10,1,0,B17,-131.918865,0.0 +2020-07-10,1,0,B18,-67.40279,0.0 +2020-07-10,1,0,B19,-107.528984,0.0 +2020-07-10,1,0,B20,-19.899959,0.0 +2020-07-10,1,0,B21,-208.128999,0.0 +2020-07-10,1,0,B22,-221.072584,0.0 +2020-07-10,1,0,B23,-205.458599,0.0 +2020-07-10,1,0,B24,-3.129275,0.0 +2020-07-10,1,0,B25-1,-67.002399,0.0 +2020-07-10,1,0,B25-2,-67.002399,0.0 +2020-07-10,1,0,B26,129.321991,0.0 +2020-07-10,1,0,B27,-139.710758,0.0 +2020-07-10,1,0,B28,-42.3563,0.0 +2020-07-10,1,0,B29,95.844581,0.0 +2020-07-10,1,0,B30,-19.646105,0.0 +2020-07-10,1,0,B31-1,-36.125549,0.0 +2020-07-10,1,0,B31-2,-36.125549,0.0 +2020-07-10,1,0,B32-1,-66.861811,0.0 +2020-07-10,1,0,B32-2,-66.861811,0.0 +2020-07-10,1,0,B33-1,-99.168488,0.0 +2020-07-10,1,0,B33-2,-99.168488,0.0 +2020-07-10,1,0,B34,-36.255895,0.0 +2020-07-10,1,0,C1,12.916829,0.0 +2020-07-10,1,0,C2,-52.350617,0.0 +2020-07-10,1,0,C3,-2.115127,0.0 +2020-07-10,1,0,C4,-25.353366,0.0 +2020-07-10,1,0,C5,0.953114,0.0 +2020-07-10,1,0,C6,20.247424,0.0 +2020-07-10,1,0,C7,-121.146232,0.0 +2020-07-10,1,0,C8,-53.822067,0.0 +2020-07-10,1,0,C9,-29.429692,0.0 +2020-07-10,1,0,C10,-51.367741,0.0 +2020-07-10,1,0,C11,-48.089022,0.0 +2020-07-10,1,0,C12-1,-74.716002,0.0 +2020-07-10,1,0,C13-2,-39.158801,0.0 +2020-07-10,1,0,C14,-29.839151,0.0 +2020-07-10,1,0,C15,-26.676124,0.0 +2020-07-10,1,0,C16,-99.09244,0.0 +2020-07-10,1,0,C17,-95.882668,0.0 +2020-07-10,1,0,C18,-5.316454,0.0 +2020-07-10,1,0,C19,-123.615137,0.0 +2020-07-10,1,0,C20,-11.017811,0.0 +2020-07-10,1,0,C21,-111.540981,0.0 +2020-07-10,1,0,C22,-118.282991,0.0 +2020-07-10,1,0,C23,-198.249299,0.0 +2020-07-10,1,0,C24,-25.426622,0.0 +2020-07-10,1,0,C25-1,-108.836684,0.0 +2020-07-10,1,0,C25-2,-108.836684,0.0 +2020-07-10,1,0,C26,121.146232,0.0 +2020-07-10,1,0,C27,-367.610642,0.0 +2020-07-10,1,0,C28,167.463503,0.0 +2020-07-10,1,0,C29,398.613037,0.0 +2020-07-10,1,0,C30,-32.523955,0.0 +2020-07-10,1,0,C31-1,-35.517338,0.0 +2020-07-10,1,0,C31-2,-35.517338,0.0 +2020-07-10,1,0,C32-1,48.9153,0.0 +2020-07-10,1,0,C32-2,48.9153,0.0 +2020-07-10,1,0,C33-1,24.293721,0.0 +2020-07-10,1,0,C33-2,24.293721,0.0 +2020-07-10,1,0,C34,-118.708045,0.0 +2020-07-10,1,0,CA-1,-181.236531,0.0 +2020-07-10,1,0,CB-1,341.538559,0.0 +2020-07-10,1,0,C35,-181.236531,0.0 +2020-07-10,2,0,A1,-79.411613,0.0 +2020-07-10,2,0,A2,49.082399,0.0 +2020-07-10,2,0,A3,133.275169,0.0 +2020-07-10,2,0,A4,104.704142,0.0 +2020-07-10,2,0,A5,99.203861,0.0 +2020-07-10,2,0,A6,77.503807,0.0 +2020-07-10,2,0,A7,-110.178149,0.0 +2020-07-10,2,0,A8,71.093037,0.0 +2020-07-10,2,0,A9,101.026676,0.0 +2020-07-10,2,0,A10,37.432101,0.0 +2020-07-10,2,0,A11,-103.807241,0.0 +2020-07-10,2,0,AB1,47.031726,0.0 +2020-07-10,2,0,A12-1,-92.675641,0.0 +2020-07-10,2,0,A13-2,-88.800504,0.0 +2020-07-10,2,0,A14,-21.182668,0.0 +2020-07-10,2,0,A15,-2.38185,0.0 +2020-07-10,2,0,A16,-28.995097,0.0 +2020-07-10,2,0,A17,-9.916434,0.0 +2020-07-10,2,0,A18,89.659077,0.0 +2020-07-10,2,0,A19,-139.836842,0.0 +2020-07-10,2,0,A20,55.770602,0.0 +2020-07-10,2,0,A21,-68.068885,0.0 +2020-07-10,2,0,A22,-106.662882,0.0 +2020-07-10,2,0,AB2,131.728469,0.0 +2020-07-10,2,0,A23,-227.952441,0.0 +2020-07-10,2,0,A24,187.702346,0.0 +2020-07-10,2,0,A25-1,-189.9316,0.0 +2020-07-10,2,0,A25-2,-189.9316,0.0 +2020-07-10,2,0,A26,110.178149,0.0 +2020-07-10,2,0,A27,-348.380969,0.0 +2020-07-10,2,0,A28,324.710463,0.0 +2020-07-10,2,0,A29,-54.57161,0.0 +2020-07-10,2,0,A30,-293.809359,0.0 +2020-07-10,2,0,A31-1,-102.910791,0.0 +2020-07-10,2,0,A31-2,-102.910791,0.0 +2020-07-10,2,0,A32-1,121.249759,0.0 +2020-07-10,2,0,A32-2,121.249759,0.0 +2020-07-10,2,0,A33-1,92.180695,0.0 +2020-07-10,2,0,A33-2,92.180695,0.0 +2020-07-10,2,0,A34,-403.092641,0.0 +2020-07-10,2,0,AB3,211.629622,0.0 +2020-07-10,2,0,B1,6.971585,0.0 +2020-07-10,2,0,B2,-38.094673,0.0 +2020-07-10,2,0,B3,18.753482,0.0 +2020-07-10,2,0,B4,4.091606,0.0 +2020-07-10,2,0,B5,16.323027,0.0 +2020-07-10,2,0,B6,45.268075,0.0 +2020-07-10,2,0,B7,-122.725366,0.0 +2020-07-10,2,0,B8,-31.426069,0.0 +2020-07-10,2,0,B9,-15.324287,0.0 +2020-07-10,2,0,B10,-48.9527,0.0 +2020-07-10,2,0,B11,-59.996072,0.0 +2020-07-10,2,0,B12-1,-79.812876,0.0 +2020-07-10,2,0,B13-2,-62.257823,0.0 +2020-07-10,2,0,B14,-64.344779,0.0 +2020-07-10,2,0,B15,-85.620593,0.0 +2020-07-10,2,0,B16,-99.269224,0.0 +2020-07-10,2,0,B17,-120.859459,0.0 +2020-07-10,2,0,B18,-55.98749,0.0 +2020-07-10,2,0,B19,-107.626513,0.0 +2020-07-10,2,0,B20,-17.637835,0.0 +2020-07-10,2,0,B21,-188.842216,0.0 +2020-07-10,2,0,B22,-200.816998,0.0 +2020-07-10,2,0,B23,-200.740417,0.0 +2020-07-10,2,0,B24,17.710371,0.0 +2020-07-10,2,0,B25-1,-66.228154,0.0 +2020-07-10,2,0,B25-2,-66.228154,0.0 +2020-07-10,2,0,B26,122.725366,0.0 +2020-07-10,2,0,B27,-146.145778,0.0 +2020-07-10,2,0,B28,-7.881125,0.0 +2020-07-10,2,0,B29,86.345125,0.0 +2020-07-10,2,0,B30,-20.861281,0.0 +2020-07-10,2,0,B31-1,-36.742206,0.0 +2020-07-10,2,0,B31-2,-36.742206,0.0 +2020-07-10,2,0,B32-1,-47.377719,0.0 +2020-07-10,2,0,B32-2,-47.377719,0.0 +2020-07-10,2,0,B33-1,-78.095708,0.0 +2020-07-10,2,0,B33-2,-78.095708,0.0 +2020-07-10,2,0,B34,-35.940719,0.0 +2020-07-10,2,0,C1,25.088318,0.0 +2020-07-10,2,0,C2,-70.138666,0.0 +2020-07-10,2,0,C3,5.403918,0.0 +2020-07-10,2,0,C4,-15.798529,0.0 +2020-07-10,2,0,C5,5.278479,0.0 +2020-07-10,2,0,C6,72.906383,0.0 +2020-07-10,2,0,C7,-66.322431,0.0 +2020-07-10,2,0,C8,-42.963675,0.0 +2020-07-10,2,0,C9,-20.659938,0.0 +2020-07-10,2,0,C10,-44.646655,0.0 +2020-07-10,2,0,C11,-45.887071,0.0 +2020-07-10,2,0,C12-1,-68.768648,0.0 +2020-07-10,2,0,C13-2,-39.891937,0.0 +2020-07-10,2,0,C14,-31.595823,0.0 +2020-07-10,2,0,C15,-32.472017,0.0 +2020-07-10,2,0,C16,-87.946609,0.0 +2020-07-10,2,0,C17,-88.835752,0.0 +2020-07-10,2,0,C18,-11.504229,0.0 +2020-07-10,2,0,C19,-108.038203,0.0 +2020-07-10,2,0,C20,-9.924889,0.0 +2020-07-10,2,0,C21,-111.382881,0.0 +2020-07-10,2,0,C22,-118.70971,0.0 +2020-07-10,2,0,C23,-179.254937,0.0 +2020-07-10,2,0,C24,-4.002348,0.0 +2020-07-10,2,0,C25-1,-89.344848,0.0 +2020-07-10,2,0,C25-2,-89.344848,0.0 +2020-07-10,2,0,C26,66.322431,0.0 +2020-07-10,2,0,C27,-284.084515,0.0 +2020-07-10,2,0,C28,126.117572,0.0 +2020-07-10,2,0,C29,297.428111,0.0 +2020-07-10,2,0,C30,-30.512626,0.0 +2020-07-10,2,0,C31-1,-41.832839,0.0 +2020-07-10,2,0,C31-2,-41.832839,0.0 +2020-07-10,2,0,C32-1,29.836546,0.0 +2020-07-10,2,0,C32-2,29.836546,0.0 +2020-07-10,2,0,C33-1,6.342366,0.0 +2020-07-10,2,0,C33-2,6.342366,0.0 +2020-07-10,2,0,C34,-92.355374,0.0 +2020-07-10,2,0,CA-1,-217.407858,0.0 +2020-07-10,2,0,CB-1,258.85063,0.0 +2020-07-10,2,0,C35,-217.407858,0.0 +2020-07-10,3,0,A1,-126.950047,0.0 +2020-07-10,3,0,A2,82.351914,0.0 +2020-07-10,3,0,A3,148.858914,0.0 +2020-07-10,3,0,A4,124.481085,0.0 +2020-07-10,3,0,A5,112.391976,0.0 +2020-07-10,3,0,A6,52.098444,0.0 +2020-07-10,3,0,A7,-49.311896,0.0 +2020-07-10,3,0,A8,91.77088,0.0 +2020-07-10,3,0,A9,117.474797,0.0 +2020-07-10,3,0,A10,52.275921,0.0 +2020-07-10,3,0,A11,-92.474827,0.0 +2020-07-10,3,0,AB1,37.221101,0.0 +2020-07-10,3,0,A12-1,-82.257693,0.0 +2020-07-10,3,0,A13-2,-85.804232,0.0 +2020-07-10,3,0,A14,-6.759603,0.0 +2020-07-10,3,0,A15,-8.983984,0.0 +2020-07-10,3,0,A16,0.003964,0.0 +2020-07-10,3,0,A17,-2.253289,0.0 +2020-07-10,3,0,A18,54.743953,0.0 +2020-07-10,3,0,A19,-61.499592,0.0 +2020-07-10,3,0,A20,58.753399,0.0 +2020-07-10,3,0,A21,-69.990672,0.0 +2020-07-10,3,0,A22,-110.451246,0.0 +2020-07-10,3,0,AB2,106.810698,0.0 +2020-07-10,3,0,A23,-147.253375,0.0 +2020-07-10,3,0,A24,65.440753,0.0 +2020-07-10,3,0,A25-1,-80.938049,0.0 +2020-07-10,3,0,A25-2,-80.938049,0.0 +2020-07-10,3,0,A26,49.311896,0.0 +2020-07-10,3,0,A27,-138.904318,0.0 +2020-07-10,3,0,A28,136.888715,0.0 +2020-07-10,3,0,A29,16.54082,0.0 +2020-07-10,3,0,A30,-155.445138,0.0 +2020-07-10,3,0,A31-1,-65.327553,0.0 +2020-07-10,3,0,A31-2,-65.327553,0.0 +2020-07-10,3,0,A32-1,28.44066,0.0 +2020-07-10,3,0,A32-2,28.44066,0.0 +2020-07-10,3,0,A33-1,0.150752,0.0 +2020-07-10,3,0,A33-2,0.150752,0.0 +2020-07-10,3,0,A34,-218.452862,0.0 +2020-07-10,3,0,AB3,192.859586,0.0 +2020-07-10,3,0,B1,-26.102798,0.0 +2020-07-10,3,0,B2,-20.395839,0.0 +2020-07-10,3,0,B3,34.94797,0.0 +2020-07-10,3,0,B4,20.570046,0.0 +2020-07-10,3,0,B5,29.145538,0.0 +2020-07-10,3,0,B6,42.632845,0.0 +2020-07-10,3,0,B7,-110.392029,0.0 +2020-07-10,3,0,B8,-14.20356,0.0 +2020-07-10,3,0,B9,1.584105,0.0 +2020-07-10,3,0,B10,-34.762711,0.0 +2020-07-10,3,0,B11,-58.739199,0.0 +2020-07-10,3,0,B12-1,-76.638703,0.0 +2020-07-10,3,0,B13-2,-62.45572,0.0 +2020-07-10,3,0,B14,-56.348235,0.0 +2020-07-10,3,0,B15,-74.096061,0.0 +2020-07-10,3,0,B16,-84.628683,0.0 +2020-07-10,3,0,B17,-102.638793,0.0 +2020-07-10,3,0,B18,-43.044543,0.0 +2020-07-10,3,0,B19,-97.932375,0.0 +2020-07-10,3,0,B20,-11.054085,0.0 +2020-07-10,3,0,B21,-165.680769,0.0 +2020-07-10,3,0,B22,-178.62573,0.0 +2020-07-10,3,0,B23,-189.095611,0.0 +2020-07-10,3,0,B24,4.7452,0.0 +2020-07-10,3,0,B25-1,-64.844569,0.0 +2020-07-10,3,0,B25-2,-64.844569,0.0 +2020-07-10,3,0,B26,110.392029,0.0 +2020-07-10,3,0,B27,-131.889222,0.0 +2020-07-10,3,0,B28,17.80644,0.0 +2020-07-10,3,0,B29,81.678645,0.0 +2020-07-10,3,0,B30,-20.708281,0.0 +2020-07-10,3,0,B31-1,-37.40129,0.0 +2020-07-10,3,0,B31-2,-37.40129,0.0 +2020-07-10,3,0,B32-1,-33.62396,0.0 +2020-07-10,3,0,B32-2,-33.62396,0.0 +2020-07-10,3,0,B33-1,-63.69843,0.0 +2020-07-10,3,0,B33-2,-63.69843,0.0 +2020-07-10,3,0,B34,-34.491719,0.0 +2020-07-10,3,0,C1,18.156074,0.0 +2020-07-10,3,0,C2,-54.772692,0.0 +2020-07-10,3,0,C3,-2.299393,0.0 +2020-07-10,3,0,C4,-17.136122,0.0 +2020-07-10,3,0,C5,0.339853,0.0 +2020-07-10,3,0,C6,42.686158,0.0 +2020-07-10,3,0,C7,-96.418869,0.0 +2020-07-10,3,0,C8,-43.800796,0.0 +2020-07-10,3,0,C9,-27.883068,0.0 +2020-07-10,3,0,C10,-48.665495,0.0 +2020-07-10,3,0,C11,-45.04168,0.0 +2020-07-10,3,0,C12-1,-64.930036,0.0 +2020-07-10,3,0,C13-2,-41.728661,0.0 +2020-07-10,3,0,C14,-44.605601,0.0 +2020-07-10,3,0,C15,-52.697427,0.0 +2020-07-10,3,0,C16,-90.165417,0.0 +2020-07-10,3,0,C17,-98.376827,0.0 +2020-07-10,3,0,C18,-30.503307,0.0 +2020-07-10,3,0,C19,-104.267711,0.0 +2020-07-10,3,0,C20,-15.917791,0.0 +2020-07-10,3,0,C21,-135.156463,0.0 +2020-07-10,3,0,C22,-141.909459,0.0 +2020-07-10,3,0,C23,-174.172398,0.0 +2020-07-10,3,0,C24,-11.799129,0.0 +2020-07-10,3,0,C25-1,-99.42272,0.0 +2020-07-10,3,0,C25-2,-99.42272,0.0 +2020-07-10,3,0,C26,96.418869,0.0 +2020-07-10,3,0,C27,-160.492167,0.0 +2020-07-10,3,0,C28,62.487297,0.0 +2020-07-10,3,0,C29,16.062791,0.0 +2020-07-10,3,0,C30,-59.454958,0.0 +2020-07-10,3,0,C31-1,-27.815801,0.0 +2020-07-10,3,0,C31-2,-27.815801,0.0 +2020-07-10,3,0,C32-1,-1.366528,0.0 +2020-07-10,3,0,C32-2,-1.366528,0.0 +2020-07-10,3,0,C33-1,-24.427868,0.0 +2020-07-10,3,0,C33-2,-24.427868,0.0 +2020-07-10,3,0,C34,-84.477042,0.0 +2020-07-10,3,0,CA-1,-325.921657,0.0 +2020-07-10,3,0,CB-1,-48.296642,0.0 +2020-07-10,3,0,C35,-325.921657,0.0 +2020-07-10,4,0,A1,-80.660889,0.0 +2020-07-10,4,0,A2,52.792721,0.0 +2020-07-10,4,0,A3,131.379375,0.0 +2020-07-10,4,0,A4,104.155668,0.0 +2020-07-10,4,0,A5,97.93429,0.0 +2020-07-10,4,0,A6,70.051825,0.0 +2020-07-10,4,0,A7,-98.073758,0.0 +2020-07-10,4,0,A8,70.931866,0.0 +2020-07-10,4,0,A9,99.502483,0.0 +2020-07-10,4,0,A10,36.874329,0.0 +2020-07-10,4,0,A11,-94.207435,0.0 +2020-07-10,4,0,AB1,38.086147,0.0 +2020-07-10,4,0,A12-1,-86.848357,0.0 +2020-07-10,4,0,A13-2,-84.133,0.0 +2020-07-10,4,0,A14,-19.414405,0.0 +2020-07-10,4,0,A15,-5.020064,0.0 +2020-07-10,4,0,A16,-24.956231,0.0 +2020-07-10,4,0,A17,-10.349166,0.0 +2020-07-10,4,0,A18,75.837198,0.0 +2020-07-10,4,0,A19,-120.207834,0.0 +2020-07-10,4,0,A20,49.891398,0.0 +2020-07-10,4,0,A21,-65.260628,0.0 +2020-07-10,4,0,A22,-100.288138,0.0 +2020-07-10,4,0,AB2,107.039604,0.0 +2020-07-10,4,0,A23,-207.308073,0.0 +2020-07-10,4,0,A24,166.948921,0.0 +2020-07-10,4,0,A25-1,-172.673133,0.0 +2020-07-10,4,0,A25-2,-172.673133,0.0 +2020-07-10,4,0,A26,98.073758,0.0 +2020-07-10,4,0,A27,-307.447763,0.0 +2020-07-10,4,0,A28,284.19158,0.0 +2020-07-10,4,0,A29,-50.440033,0.0 +2020-07-10,4,0,A30,-257.00773,0.0 +2020-07-10,4,0,A31-1,-99.973572,0.0 +2020-07-10,4,0,A31-2,-99.973572,0.0 +2020-07-10,4,0,A32-1,101.463978,0.0 +2020-07-10,4,0,A32-2,101.463978,0.0 +2020-07-10,4,0,A33-1,72.729878,0.0 +2020-07-10,4,0,A33-2,72.729878,0.0 +2020-07-10,4,0,A34,-348.24027,0.0 +2020-07-10,4,0,AB3,181.91099,0.0 +2020-07-10,4,0,B1,5.92039,0.0 +2020-07-10,4,0,B2,-33.405373,0.0 +2020-07-10,4,0,B3,18.650577,0.0 +2020-07-10,4,0,B4,5.000949,0.0 +2020-07-10,4,0,B5,16.16076,0.0 +2020-07-10,4,0,B6,39.793912,0.0 +2020-07-10,4,0,B7,-118.170483,0.0 +2020-07-10,4,0,B8,-29.144848,0.0 +2020-07-10,4,0,B9,-14.110931,0.0 +2020-07-10,4,0,B10,-46.593678,0.0 +2020-07-10,4,0,B11,-57.678712,0.0 +2020-07-10,4,0,B12-1,-76.341883,0.0 +2020-07-10,4,0,B13-2,-60.241306,0.0 +2020-07-10,4,0,B14,-62.316705,0.0 +2020-07-10,4,0,B15,-84.126311,0.0 +2020-07-10,4,0,B16,-94.396395,0.0 +2020-07-10,4,0,B17,-116.528311,0.0 +2020-07-10,4,0,B18,-56.25573,0.0 +2020-07-10,4,0,B19,-100.45737,0.0 +2020-07-10,4,0,B20,-16.943915,0.0 +2020-07-10,4,0,B21,-183.710707,0.0 +2020-07-10,4,0,B22,-195.478514,0.0 +2020-07-10,4,0,B23,-189.974731,0.0 +2020-07-10,4,0,B24,8.011535,0.0 +2020-07-10,4,0,B25-1,-66.207814,0.0 +2020-07-10,4,0,B25-2,-66.207814,0.0 +2020-07-10,4,0,B26,118.170483,0.0 +2020-07-10,4,0,B27,-131.839275,0.0 +2020-07-10,4,0,B28,-19.26689,0.0 +2020-07-10,4,0,B29,75.739679,0.0 +2020-07-10,4,0,B30,-25.667964,0.0 +2020-07-10,4,0,B31-1,-38.958204,0.0 +2020-07-10,4,0,B31-2,-38.958204,0.0 +2020-07-10,4,0,B32-1,-51.392832,0.0 +2020-07-10,4,0,B32-2,-51.392832,0.0 +2020-07-10,4,0,B33-1,-80.924333,0.0 +2020-07-10,4,0,B33-2,-80.924333,0.0 +2020-07-10,4,0,B34,-40.332036,0.0 +2020-07-10,4,0,C1,18.511011,0.0 +2020-07-10,4,0,C2,-54.307818,0.0 +2020-07-10,4,0,C3,-3.832637,0.0 +2020-07-10,4,0,C4,-16.407362,0.0 +2020-07-10,4,0,C5,-0.674738,0.0 +2020-07-10,4,0,C6,42.891078,0.0 +2020-07-10,4,0,C7,-136.247968,0.0 +2020-07-10,4,0,C8,-43.56087,0.0 +2020-07-10,4,0,C9,-29.885326,0.0 +2020-07-10,4,0,C10,-50.578481,0.0 +2020-07-10,4,0,C11,-45.867411,0.0 +2020-07-10,4,0,C12-1,-64.607707,0.0 +2020-07-10,4,0,C13-2,-44.006323,0.0 +2020-07-10,4,0,C14,-59.434837,0.0 +2020-07-10,4,0,C15,-55.157037,0.0 +2020-07-10,4,0,C16,-100.182155,0.0 +2020-07-10,4,0,C17,-95.841136,0.0 +2020-07-10,4,0,C18,-13.787294,0.0 +2020-07-10,4,0,C19,-145.829699,0.0 +2020-07-10,4,0,C20,-21.49803,0.0 +2020-07-10,4,0,C21,-129.500143,0.0 +2020-07-10,4,0,C22,-132.524235,0.0 +2020-07-10,4,0,C23,-217.015921,0.0 +2020-07-10,4,0,C24,-15.626733,0.0 +2020-07-10,4,0,C25-1,-118.470495,0.0 +2020-07-10,4,0,C25-2,-118.470495,0.0 +2020-07-10,4,0,C26,136.247968,0.0 +2020-07-10,4,0,C27,-379.798341,0.0 +2020-07-10,4,0,C28,172.461758,0.0 +2020-07-10,4,0,C29,341.715918,0.0 +2020-07-10,4,0,C30,-24.41426,0.0 +2020-07-10,4,0,C31-1,-17.256376,0.0 +2020-07-10,4,0,C31-2,-17.256376,0.0 +2020-07-10,4,0,C32-1,53.022874,0.0 +2020-07-10,4,0,C32-2,53.022874,0.0 +2020-07-10,4,0,C33-1,29.538759,0.0 +2020-07-10,4,0,C33-2,29.538759,0.0 +2020-07-10,4,0,C34,-101.45374,0.0 +2020-07-10,4,0,CA-1,-202.94686,0.0 +2020-07-10,4,0,CB-1,254.037886,0.0 +2020-07-10,4,0,C35,-202.94686,0.0 +2020-07-10,5,0,A1,-108.622999,0.0 +2020-07-10,5,0,A2,37.095608,0.0 +2020-07-10,5,0,A3,112.257246,0.0 +2020-07-10,5,0,A4,89.668623,0.0 +2020-07-10,5,0,A5,86.487045,0.0 +2020-07-10,5,0,A6,65.825418,0.0 +2020-07-10,5,0,A7,-111.346717,0.0 +2020-07-10,5,0,A8,55.703894,0.0 +2020-07-10,5,0,A9,79.669466,0.0 +2020-07-10,5,0,A10,24.065382,0.0 +2020-07-10,5,0,A11,-84.130082,0.0 +2020-07-10,5,0,AB1,26.75723,0.0 +2020-07-10,5,0,A12-1,-84.012257,0.0 +2020-07-10,5,0,A13-2,-78.603888,0.0 +2020-07-10,5,0,A14,-27.949131,0.0 +2020-07-10,5,0,A15,-14.855807,0.0 +2020-07-10,5,0,A16,-38.828756,0.0 +2020-07-10,5,0,A17,-25.541934,0.0 +2020-07-10,5,0,A18,59.317228,0.0 +2020-07-10,5,0,A19,-126.095115,0.0 +2020-07-10,5,0,A20,35.716511,0.0 +2020-07-10,5,0,A21,-76.114252,0.0 +2020-07-10,5,0,A22,-104.568677,0.0 +2020-07-10,5,0,AB2,77.971968,0.0 +2020-07-10,5,0,A23,-215.137782,0.0 +2020-07-10,5,0,A24,159.376021,0.0 +2020-07-10,5,0,A25-1,-177.110146,0.0 +2020-07-10,5,0,A25-2,-177.110146,0.0 +2020-07-10,5,0,A26,111.346717,0.0 +2020-07-10,5,0,A27,-316.705901,0.0 +2020-07-10,5,0,A28,277.045859,0.0 +2020-07-10,5,0,A29,-43.203684,0.0 +2020-07-10,5,0,A30,-273.502217,0.0 +2020-07-10,5,0,A31-1,-98.022481,0.0 +2020-07-10,5,0,A31-2,-98.022481,0.0 +2020-07-10,5,0,A32-1,96.984984,0.0 +2020-07-10,5,0,A32-2,96.984984,0.0 +2020-07-10,5,0,A33-1,67.610084,0.0 +2020-07-10,5,0,A33-2,67.610084,0.0 +2020-07-10,5,0,A34,-375.945541,0.0 +2020-07-10,5,0,AB3,156.537239,0.0 +2020-07-10,5,0,B1,9.043624,0.0 +2020-07-10,5,0,B2,-29.992271,0.0 +2020-07-10,5,0,B3,20.808014,0.0 +2020-07-10,5,0,B4,6.937347,0.0 +2020-07-10,5,0,B5,17.454274,0.0 +2020-07-10,5,0,B6,37.939562,0.0 +2020-07-10,5,0,B7,-124.033991,0.0 +2020-07-10,5,0,B8,-27.127068,0.0 +2020-07-10,5,0,B9,-11.875411,0.0 +2020-07-10,5,0,B10,-45.150596,0.0 +2020-07-10,5,0,B11,-57.541241,0.0 +2020-07-10,5,0,B12-1,-75.817334,0.0 +2020-07-10,5,0,B13-2,-60.440326,0.0 +2020-07-10,5,0,B14,-62.886368,0.0 +2020-07-10,5,0,B15,-82.676209,0.0 +2020-07-10,5,0,B16,-93.574184,0.0 +2020-07-10,5,0,B17,-113.656485,0.0 +2020-07-10,5,0,B18,-52.373293,0.0 +2020-07-10,5,0,B19,-104.087259,0.0 +2020-07-10,5,0,B20,-16.702105,0.0 +2020-07-10,5,0,B21,-179.630589,0.0 +2020-07-10,5,0,B22,-191.062829,0.0 +2020-07-10,5,0,B23,-193.391266,0.0 +2020-07-10,5,0,B24,18.649138,0.0 +2020-07-10,5,0,B25-1,-74.605374,0.0 +2020-07-10,5,0,B25-2,-74.605374,0.0 +2020-07-10,5,0,B26,124.033991,0.0 +2020-07-10,5,0,B27,-141.486624,0.0 +2020-07-10,5,0,B28,-2.288496,0.0 +2020-07-10,5,0,B29,62.915623,0.0 +2020-07-10,5,0,B30,-47.865008,0.0 +2020-07-10,5,0,B31-1,-45.187122,0.0 +2020-07-10,5,0,B31-2,-45.187122,0.0 +2020-07-10,5,0,B32-1,-42.804107,0.0 +2020-07-10,5,0,B32-2,-42.804107,0.0 +2020-07-10,5,0,B33-1,-72.265222,0.0 +2020-07-10,5,0,B33-2,-72.265222,0.0 +2020-07-10,5,0,B34,-69.584992,0.0 +2020-07-10,5,0,C1,17.334985,0.0 +2020-07-10,5,0,C2,-53.261761,0.0 +2020-07-10,5,0,C3,-5.537207,0.0 +2020-07-10,5,0,C4,-18.26808,0.0 +2020-07-10,5,0,C5,-1.637734,0.0 +2020-07-10,5,0,C6,36.187413,0.0 +2020-07-10,5,0,C7,-149.355811,0.0 +2020-07-10,5,0,C8,-46.678587,0.0 +2020-07-10,5,0,C9,-32.795936,0.0 +2020-07-10,5,0,C10,-53.851637,0.0 +2020-07-10,5,0,C11,-47.99072,0.0 +2020-07-10,5,0,C12-1,-67.655026,0.0 +2020-07-10,5,0,C13-2,-45.986999,0.0 +2020-07-10,5,0,C14,-62.683649,0.0 +2020-07-10,5,0,C15,-59.14956,0.0 +2020-07-10,5,0,C16,-105.543206,0.0 +2020-07-10,5,0,C17,-101.95689,0.0 +2020-07-10,5,0,C18,-16.60825,0.0 +2020-07-10,5,0,C19,-151.618605,0.0 +2020-07-10,5,0,C20,-22.978446,0.0 +2020-07-10,5,0,C21,-138.128004,0.0 +2020-07-10,5,0,C22,-141.327023,0.0 +2020-07-10,5,0,C23,-226.100203,0.0 +2020-07-10,5,0,C24,-19.082466,0.0 +2020-07-10,5,0,C25-1,-125.988906,0.0 +2020-07-10,5,0,C25-2,-125.988906,0.0 +2020-07-10,5,0,C26,149.355811,0.0 +2020-07-10,5,0,C27,-393.983047,0.0 +2020-07-10,5,0,C28,172.407802,0.0 +2020-07-10,5,0,C29,332.275169,0.0 +2020-07-10,5,0,C30,-24.058215,0.0 +2020-07-10,5,0,C31-1,-9.897986,0.0 +2020-07-10,5,0,C31-2,-9.897986,0.0 +2020-07-10,5,0,C32-1,51.458619,0.0 +2020-07-10,5,0,C32-2,51.458619,0.0 +2020-07-10,5,0,C33-1,26.88737,0.0 +2020-07-10,5,0,C33-2,26.88737,0.0 +2020-07-10,5,0,C34,-101.773785,0.0 +2020-07-10,5,0,CA-1,-225.680286,0.0 +2020-07-10,5,0,CB-1,224.223862,0.0 +2020-07-10,5,0,C35,-225.680286,0.0 +2020-07-10,6,0,A1,-107.275185,0.0 +2020-07-10,6,0,A2,51.372549,0.0 +2020-07-10,6,0,A3,119.405378,0.0 +2020-07-10,6,0,A4,97.011752,0.0 +2020-07-10,6,0,A5,91.399786,0.0 +2020-07-10,6,0,A6,54.30381,0.0 +2020-07-10,6,0,A7,-86.060024,0.0 +2020-07-10,6,0,A8,62.337705,0.0 +2020-07-10,6,0,A9,85.945143,0.0 +2020-07-10,6,0,A10,27.306942,0.0 +2020-07-10,6,0,A11,-78.196872,0.0 +2020-07-10,6,0,AB1,19.288009,0.0 +2020-07-10,6,0,A12-1,-80.637155,0.0 +2020-07-10,6,0,A13-2,-78.147042,0.0 +2020-07-10,6,0,A14,-25.413736,0.0 +2020-07-10,6,0,A15,-21.054314,0.0 +2020-07-10,6,0,A16,-30.608315,0.0 +2020-07-10,6,0,A17,-26.184468,0.0 +2020-07-10,6,0,A18,27.664174,0.0 +2020-07-10,6,0,A19,-83.686225,0.0 +2020-07-10,6,0,A20,19.806316,0.0 +2020-07-10,6,0,A21,-67.045098,0.0 +2020-07-10,6,0,A22,-85.679054,0.0 +2020-07-10,6,0,AB2,48.062754,0.0 +2020-07-10,6,0,A23,-175.112781,0.0 +2020-07-10,6,0,A24,131.145899,0.0 +2020-07-10,6,0,A25-1,-152.2994,0.0 +2020-07-10,6,0,A25-2,-152.2994,0.0 +2020-07-10,6,0,A26,86.060024,0.0 +2020-07-10,6,0,A27,-232.629687,0.0 +2020-07-10,6,0,A28,203.535715,0.0 +2020-07-10,6,0,A29,-60.935084,0.0 +2020-07-10,6,0,A30,-171.694603,0.0 +2020-07-10,6,0,A31-1,-107.334148,0.0 +2020-07-10,6,0,A31-2,-107.334148,0.0 +2020-07-10,6,0,A32-1,59.717841,0.0 +2020-07-10,6,0,A32-2,59.717841,0.0 +2020-07-10,6,0,A33-1,29.556503,0.0 +2020-07-10,6,0,A33-2,29.556503,0.0 +2020-07-10,6,0,A34,-211.531681,0.0 +2020-07-10,6,0,AB3,108.388852,0.0 +2020-07-10,6,0,B1,13.892401,0.0 +2020-07-10,6,0,B2,-28.977515,0.0 +2020-07-10,6,0,B3,22.797474,0.0 +2020-07-10,6,0,B4,8.134791,0.0 +2020-07-10,6,0,B5,18.74347,0.0 +2020-07-10,6,0,B6,37.46029,0.0 +2020-07-10,6,0,B7,-134.39253,0.0 +2020-07-10,6,0,B8,-27.731666,0.0 +2020-07-10,6,0,B9,-11.614937,0.0 +2020-07-10,6,0,B10,-47.173262,0.0 +2020-07-10,6,0,B11,-60.585232,0.0 +2020-07-10,6,0,B12-1,-79.527315,0.0 +2020-07-10,6,0,B13-2,-63.938514,0.0 +2020-07-10,6,0,B14,-66.83248,0.0 +2020-07-10,6,0,B15,-87.785535,0.0 +2020-07-10,6,0,B16,-97.988484,0.0 +2020-07-10,6,0,B17,-119.251191,0.0 +2020-07-10,6,0,B18,-55.747559,0.0 +2020-07-10,6,0,B19,-109.073405,0.0 +2020-07-10,6,0,B20,-17.979676,0.0 +2020-07-10,6,0,B21,-189.057051,0.0 +2020-07-10,6,0,B22,-200.867925,0.0 +2020-07-10,6,0,B23,-203.101685,0.0 +2020-07-10,6,0,B24,32.827336,0.0 +2020-07-10,6,0,B25-1,-79.51363,0.0 +2020-07-10,6,0,B25-2,-79.51363,0.0 +2020-07-10,6,0,B26,134.39253,0.0 +2020-07-10,6,0,B27,-138.310535,0.0 +2020-07-10,6,0,B28,-3.431999,0.0 +2020-07-10,6,0,B29,45.927003,0.0 +2020-07-10,6,0,B30,-75.848686,0.0 +2020-07-10,6,0,B31-1,-57.736027,0.0 +2020-07-10,6,0,B31-2,-57.736027,0.0 +2020-07-10,6,0,B32-1,-45.579707,0.0 +2020-07-10,6,0,B32-2,-45.579707,0.0 +2020-07-10,6,0,B33-1,-76.599346,0.0 +2020-07-10,6,0,B33-2,-76.599346,0.0 +2020-07-10,6,0,B34,-104.499314,0.0 +2020-07-10,6,0,C1,16.095113,0.0 +2020-07-10,6,0,C2,-51.937376,0.0 +2020-07-10,6,0,C3,-9.664501,0.0 +2020-07-10,6,0,C4,-20.688373,0.0 +2020-07-10,6,0,C5,-4.088329,0.0 +2020-07-10,6,0,C6,26.574163,0.0 +2020-07-10,6,0,C7,-148.456144,0.0 +2020-07-10,6,0,C8,-51.868933,0.0 +2020-07-10,6,0,C9,-39.580984,0.0 +2020-07-10,6,0,C10,-61.393141,0.0 +2020-07-10,6,0,C11,-52.669865,0.0 +2020-07-10,6,0,C12-1,-71.042489,0.0 +2020-07-10,6,0,C13-2,-49.879751,0.0 +2020-07-10,6,0,C14,-62.924428,0.0 +2020-07-10,6,0,C15,-54.350642,0.0 +2020-07-10,6,0,C16,-104.809679,0.0 +2020-07-10,6,0,C17,-96.109186,0.0 +2020-07-10,6,0,C18,-17.451999,0.0 +2020-07-10,6,0,C19,-150.282108,0.0 +2020-07-10,6,0,C20,-32.906248,0.0 +2020-07-10,6,0,C21,-99.35358,0.0 +2020-07-10,6,0,C22,-92.61836,0.0 +2020-07-10,6,0,C23,-158.325738,0.0 +2020-07-10,6,0,C24,-34.368992,0.0 +2020-07-10,6,0,C25-1,-94.728964,0.0 +2020-07-10,6,0,C25-2,-94.728964,0.0 +2020-07-10,6,0,C26,90.256144,0.0 +2020-07-10,6,0,C27,-303.437883,0.0 +2020-07-10,6,0,C28,130.607261,0.0 +2020-07-10,6,0,C29,329.429963,0.0 +2020-07-10,6,0,C30,-14.967846,0.0 +2020-07-10,6,0,C31-1,-30.003112,0.0 +2020-07-10,6,0,C31-2,-30.003112,0.0 +2020-07-10,6,0,C32-1,65.870648,0.0 +2020-07-10,6,0,C32-2,65.870648,0.0 +2020-07-10,6,0,C33-1,50.853678,0.0 +2020-07-10,6,0,C33-2,50.853678,0.0 +2020-07-10,6,0,C34,-79.464154,0.0 +2020-07-10,6,0,CA-1,-90.264584,0.0 +2020-07-10,6,0,CB-1,249.123668,0.0 +2020-07-10,6,0,C35,-90.264584,0.0 +2020-07-10,7,0,A1,-100.246293,0.0 +2020-07-10,7,0,A2,50.945924,0.0 +2020-07-10,7,0,A3,129.16627,0.0 +2020-07-10,7,0,A4,97.275317,0.0 +2020-07-10,7,0,A5,98.122764,0.0 +2020-07-10,7,0,A6,62.954036,0.0 +2020-07-10,7,0,A7,-91.964945,0.0 +2020-07-10,7,0,A8,70.101952,0.0 +2020-07-10,7,0,A9,91.868852,0.0 +2020-07-10,7,0,A10,26.679824,0.0 +2020-07-10,7,0,A11,-87.000923,0.0 +2020-07-10,7,0,AB1,21.336456,0.0 +2020-07-10,7,0,A12-1,-90.907295,0.0 +2020-07-10,7,0,A13-2,-85.922618,0.0 +2020-07-10,7,0,A14,-27.348793,0.0 +2020-07-10,7,0,A15,-22.432767,0.0 +2020-07-10,7,0,A16,-37.399594,0.0 +2020-07-10,7,0,A17,-32.410916,0.0 +2020-07-10,7,0,A18,26.343364,0.0 +2020-07-10,7,0,A19,-91.091751,0.0 +2020-07-10,7,0,A20,17.482226,0.0 +2020-07-10,7,0,A21,-72.325909,0.0 +2020-07-10,7,0,A22,-90.284598,0.0 +2020-07-10,7,0,AB2,51.401519,0.0 +2020-07-10,7,0,A23,-193.003004,0.0 +2020-07-10,7,0,A24,149.140608,0.0 +2020-07-10,7,0,A25-1,-172.815321,0.0 +2020-07-10,7,0,A25-2,-172.815321,0.0 +2020-07-10,7,0,A26,91.964945,0.0 +2020-07-10,7,0,A27,-253.285513,0.0 +2020-07-10,7,0,A28,218.891543,0.0 +2020-07-10,7,0,A29,-89.271329,0.0 +2020-07-10,7,0,A30,-164.014183,0.0 +2020-07-10,7,0,A31-1,-121.850735,0.0 +2020-07-10,7,0,A31-2,-121.850735,0.0 +2020-07-10,7,0,A32-1,69.804698,0.0 +2020-07-10,7,0,A32-2,69.804698,0.0 +2020-07-10,7,0,A33-1,36.184491,0.0 +2020-07-10,7,0,A33-2,36.184491,0.0 +2020-07-10,7,0,A34,-188.287817,0.0 +2020-07-10,7,0,AB3,111.758474,0.0 +2020-07-10,7,0,B1,20.609691,0.0 +2020-07-10,7,0,B2,-33.851509,0.0 +2020-07-10,7,0,B3,24.39661,0.0 +2020-07-10,7,0,B4,7.756921,0.0 +2020-07-10,7,0,B5,19.956148,0.0 +2020-07-10,7,0,B6,42.237177,0.0 +2020-07-10,7,0,B7,-152.910911,0.0 +2020-07-10,7,0,B8,-32.597203,0.0 +2020-07-10,7,0,B9,-14.321536,0.0 +2020-07-10,7,0,B10,-54.208188,0.0 +2020-07-10,7,0,B11,-68.16575,0.0 +2020-07-10,7,0,B12-1,-89.586615,0.0 +2020-07-10,7,0,B13-2,-71.829881,0.0 +2020-07-10,7,0,B14,-75.922239,0.0 +2020-07-10,7,0,B15,-99.456452,0.0 +2020-07-10,7,0,B16,-111.408083,0.0 +2020-07-10,7,0,B17,-135.290093,0.0 +2020-07-10,7,0,B18,-63.828718,0.0 +2020-07-10,7,0,B19,-123.501605,0.0 +2020-07-10,7,0,B20,-21.408299,0.0 +2020-07-10,7,0,B21,-213.338246,0.0 +2020-07-10,7,0,B22,-226.048408,0.0 +2020-07-10,7,0,B23,-229.294849,0.0 +2020-07-10,7,0,B24,42.971766,0.0 +2020-07-10,7,0,B25-1,-90.035016,0.0 +2020-07-10,7,0,B25-2,-90.035016,0.0 +2020-07-10,7,0,B26,152.910911,0.0 +2020-07-10,7,0,B27,-160.394882,0.0 +2020-07-10,7,0,B28,-3.460801,0.0 +2020-07-10,7,0,B29,51.435088,0.0 +2020-07-10,7,0,B30,-100.071496,0.0 +2020-07-10,7,0,B31-1,-65.079235,0.0 +2020-07-10,7,0,B31-2,-65.079235,0.0 +2020-07-10,7,0,B32-1,-51.082404,0.0 +2020-07-10,7,0,B32-2,-51.082404,0.0 +2020-07-10,7,0,B33-1,-85.983268,0.0 +2020-07-10,7,0,B33-2,-85.983268,0.0 +2020-07-10,7,0,B34,-140.228504,0.0 +2020-07-10,7,0,C1,14.043295,0.0 +2020-07-10,7,0,C2,-47.835754,0.0 +2020-07-10,7,0,C3,-18.23711,0.0 +2020-07-10,7,0,C4,-23.339175,0.0 +2020-07-10,7,0,C5,-9.347792,0.0 +2020-07-10,7,0,C6,10.008506,0.0 +2020-07-10,7,0,C7,-139.260208,0.0 +2020-07-10,7,0,C8,-58.989065,0.0 +2020-07-10,7,0,C9,-52.441734,0.0 +2020-07-10,7,0,C10,-74.866509,0.0 +2020-07-10,7,0,C11,-60.219409,0.0 +2020-07-10,7,0,C12-1,-67.494643,0.0 +2020-07-10,7,0,C13-2,-50.904917,0.0 +2020-07-10,7,0,C14,-78.619532,0.0 +2020-07-10,7,0,C15,-74.462841,0.0 +2020-07-10,7,0,C16,-111.886778,0.0 +2020-07-10,7,0,C17,-107.668659,0.0 +2020-07-10,7,0,C18,-74.602015,0.0 +2020-07-10,7,0,C19,-115.904296,0.0 +2020-07-10,7,0,C20,-82.09445,0.0 +2020-07-10,7,0,C21,-64.53705,0.0 +2020-07-10,7,0,C22,-26.661611,0.0 +2020-07-10,7,0,C23,-89.164818,0.0 +2020-07-10,7,0,C24,-71.870478,0.0 +2020-07-10,7,0,C25-1,-65.853075,0.0 +2020-07-10,7,0,C25-2,-65.853075,0.0 +2020-07-10,7,0,C26,50.860208,0.0 +2020-07-10,7,0,C27,-206.316156,0.0 +2020-07-10,7,0,C28,59.105333,0.0 +2020-07-10,7,0,C29,354.456575,0.0 +2020-07-10,7,0,C30,-23.072731,0.0 +2020-07-10,7,0,C31-1,-61.660559,0.0 +2020-07-10,7,0,C31-2,-61.660559,0.0 +2020-07-10,7,0,C32-1,45.803815,0.0 +2020-07-10,7,0,C32-2,45.803815,0.0 +2020-07-10,7,0,C33-1,47.121477,0.0 +2020-07-10,7,0,C33-2,47.121477,0.0 +2020-07-10,7,0,C34,-85.027269,0.0 +2020-07-10,7,0,CA-1,3.044294,0.0 +2020-07-10,7,0,CB-1,317.353189,0.0 +2020-07-10,7,0,C35,3.044294,0.0 +2020-07-10,8,0,A1,-71.78983,0.0 +2020-07-10,8,0,A2,60.015242,0.0 +2020-07-10,8,0,A3,151.031038,0.0 +2020-07-10,8,0,A4,110.160462,0.0 +2020-07-10,8,0,A5,111.868436,0.0 +2020-07-10,8,0,A6,75.865811,0.0 +2020-07-10,8,0,A7,-92.71994,0.0 +2020-07-10,8,0,A8,83.710832,0.0 +2020-07-10,8,0,A9,110.494231,0.0 +2020-07-10,8,0,A10,34.220467,0.0 +2020-07-10,8,0,A11,-98.071332,0.0 +2020-07-10,8,0,AB1,26.703714,0.0 +2020-07-10,8,0,A12-1,-100.487126,0.0 +2020-07-10,8,0,A13-2,-95.215108,0.0 +2020-07-10,8,0,A14,-23.764578,0.0 +2020-07-10,8,0,A15,-17.060571,0.0 +2020-07-10,8,0,A16,-34.318488,0.0 +2020-07-10,8,0,A17,-27.515407,0.0 +2020-07-10,8,0,A18,42.971286,0.0 +2020-07-10,8,0,A19,-101.054352,0.0 +2020-07-10,8,0,A20,30.887313,0.0 +2020-07-10,8,0,A21,-75.463292,0.0 +2020-07-10,8,0,A22,-101.17851,0.0 +2020-07-10,8,0,AB2,50.537757,0.0 +2020-07-10,8,0,A23,-211.816897,0.0 +2020-07-10,8,0,A24,173.951738,0.0 +2020-07-10,8,0,A25-1,-192.829979,0.0 +2020-07-10,8,0,A25-2,-192.829979,0.0 +2020-07-10,8,0,A26,92.71994,0.0 +2020-07-10,8,0,A27,-276.713061,0.0 +2020-07-10,8,0,A28,243.753807,0.0 +2020-07-10,8,0,A29,-118.274281,0.0 +2020-07-10,8,0,A30,-158.43878,0.0 +2020-07-10,8,0,A31-1,-136.748808,0.0 +2020-07-10,8,0,A31-2,-136.748808,0.0 +2020-07-10,8,0,A32-1,83.856748,0.0 +2020-07-10,8,0,A32-2,83.856748,0.0 +2020-07-10,8,0,A33-1,47.316527,0.0 +2020-07-10,8,0,A33-2,47.316527,0.0 +2020-07-10,8,0,A34,-168.01122,0.0 +2020-07-10,8,0,AB3,119.991253,0.0 +2020-07-10,8,0,B1,25.564983,0.0 +2020-07-10,8,0,B2,-39.452075,0.0 +2020-07-10,8,0,B3,24.932576,0.0 +2020-07-10,8,0,B4,6.626301,0.0 +2020-07-10,8,0,B5,20.510088,0.0 +2020-07-10,8,0,B6,46.867534,0.0 +2020-07-10,8,0,B7,-168.040091,0.0 +2020-07-10,8,0,B8,-37.94809,0.0 +2020-07-10,8,0,B9,-17.834746,0.0 +2020-07-10,8,0,B10,-61.410415,0.0 +2020-07-10,8,0,B11,-75.29458,0.0 +2020-07-10,8,0,B12-1,-99.139578,0.0 +2020-07-10,8,0,B13-2,-79.157987,0.0 +2020-07-10,8,0,B14,-84.296674,0.0 +2020-07-10,8,0,B15,-111.335871,0.0 +2020-07-10,8,0,B16,-124.211951,0.0 +2020-07-10,8,0,B17,-151.650741,0.0 +2020-07-10,8,0,B18,-73.488778,0.0 +2020-07-10,8,0,B19,-135.019847,0.0 +2020-07-10,8,0,B20,-24.750627,0.0 +2020-07-10,8,0,B21,-238.235986,0.0 +2020-07-10,8,0,B22,-251.963914,0.0 +2020-07-10,8,0,B23,-251.877034,0.0 +2020-07-10,8,0,B24,48.087797,0.0 +2020-07-10,8,0,B25-1,-95.868592,0.0 +2020-07-10,8,0,B25-2,-95.868592,0.0 +2020-07-10,8,0,B26,168.040091,0.0 +2020-07-10,8,0,B27,-174.269307,0.0 +2020-07-10,8,0,B28,-12.755594,0.0 +2020-07-10,8,0,B29,60.131492,0.0 +2020-07-10,8,0,B30,-114.409547,0.0 +2020-07-10,8,0,B31-1,-70.226634,0.0 +2020-07-10,8,0,B31-2,-70.226634,0.0 +2020-07-10,8,0,B32-1,-60.891072,0.0 +2020-07-10,8,0,B32-2,-60.891072,0.0 +2020-07-10,8,0,B33-1,-99.441897,0.0 +2020-07-10,8,0,B33-2,-99.441897,0.0 +2020-07-10,8,0,B34,-162.190453,0.0 +2020-07-10,8,0,C1,12.50851,0.0 +2020-07-10,8,0,C2,-43.75546,0.0 +2020-07-10,8,0,C3,-26.625966,0.0 +2020-07-10,8,0,C4,-24.908799,0.0 +2020-07-10,8,0,C5,-14.561143,0.0 +2020-07-10,8,0,C6,-3.95288,0.0 +2020-07-10,8,0,C7,-130.25744,0.0 +2020-07-10,8,0,C8,-64.562464,0.0 +2020-07-10,8,0,C9,-64.67205,0.0 +2020-07-10,8,0,C10,-87.438149,0.0 +2020-07-10,8,0,C11,-66.982542,0.0 +2020-07-10,8,0,C12-1,-62.105654,0.0 +2020-07-10,8,0,C13-2,-51.509005,0.0 +2020-07-10,8,0,C14,-98.114686,0.0 +2020-07-10,8,0,C15,-98.181871,0.0 +2020-07-10,8,0,C16,-120.071895,0.0 +2020-07-10,8,0,C17,-120.140073,0.0 +2020-07-10,8,0,C18,-136.905216,0.0 +2020-07-10,8,0,C19,-81.281365,0.0 +2020-07-10,8,0,C20,-136.784115,0.0 +2020-07-10,8,0,C21,-30.637828,0.0 +2020-07-10,8,0,C22,41.30768,0.0 +2020-07-10,8,0,C23,-32.238269,0.0 +2020-07-10,8,0,C24,-106.730255,0.0 +2020-07-10,8,0,C25-1,-44.597455,0.0 +2020-07-10,8,0,C25-2,-44.597455,0.0 +2020-07-10,8,0,C26,26.05744,0.0 +2020-07-10,8,0,C27,-148.711904,0.0 +2020-07-10,8,0,C28,18.157347,0.0 +2020-07-10,8,0,C29,405.61022,0.0 +2020-07-10,8,0,C30,-23.122124,0.0 +2020-07-10,8,0,C31-1,-83.957483,0.0 +2020-07-10,8,0,C31-2,-83.957483,0.0 +2020-07-10,8,0,C32-1,25.883313,0.0 +2020-07-10,8,0,C32-2,25.883313,0.0 +2020-07-10,8,0,C33-1,40.238252,0.0 +2020-07-10,8,0,C33-2,40.238252,0.0 +2020-07-10,8,0,C34,-87.109876,0.0 +2020-07-10,8,0,CA-1,91.146356,0.0 +2020-07-10,8,0,CB-1,395.083694,0.0 +2020-07-10,8,0,C35,91.146356,0.0 +2020-07-10,9,0,A1,-77.370464,0.0 +2020-07-10,9,0,A2,66.851519,0.0 +2020-07-10,9,0,A3,163.443339,0.0 +2020-07-10,9,0,A4,118.689207,0.0 +2020-07-10,9,0,A5,120.658261,0.0 +2020-07-10,9,0,A6,82.579139,0.0 +2020-07-10,9,0,A7,-82.05363,0.0 +2020-07-10,9,0,A8,95.598514,0.0 +2020-07-10,9,0,A9,122.963079,0.0 +2020-07-10,9,0,A10,43.118609,0.0 +2020-07-10,9,0,A11,-115.425972,0.0 +2020-07-10,9,0,AB1,44.157909,0.0 +2020-07-10,9,0,A12-1,-108.826542,0.0 +2020-07-10,9,0,A13-2,-104.094139,0.0 +2020-07-10,9,0,A14,-19.280925,0.0 +2020-07-10,9,0,A15,-11.143252,0.0 +2020-07-10,9,0,A16,-28.724281,0.0 +2020-07-10,9,0,A17,-20.466347,0.0 +2020-07-10,9,0,A18,50.133407,0.0 +2020-07-10,9,0,A19,-98.138613,0.0 +2020-07-10,9,0,A20,35.465252,0.0 +2020-07-10,9,0,A21,-67.074851,0.0 +2020-07-10,9,0,A22,-94.35164,0.0 +2020-07-10,9,0,AB2,90.662007,0.0 +2020-07-10,9,0,A23,-208.746645,0.0 +2020-07-10,9,0,A24,175.502317,0.0 +2020-07-10,9,0,A25-1,-188.145876,0.0 +2020-07-10,9,0,A25-2,-188.145876,0.0 +2020-07-10,9,0,A26,82.05363,0.0 +2020-07-10,9,0,A27,-279.346351,0.0 +2020-07-10,9,0,A28,251.087573,0.0 +2020-07-10,9,0,A29,-117.249136,0.0 +2020-07-10,9,0,A30,-162.097215,0.0 +2020-07-10,9,0,A31-1,-126.853627,0.0 +2020-07-10,9,0,A31-2,-126.853627,0.0 +2020-07-10,9,0,A32-1,91.345709,0.0 +2020-07-10,9,0,A32-2,91.345709,0.0 +2020-07-10,9,0,A33-1,54.856461,0.0 +2020-07-10,9,0,A33-2,54.856461,0.0 +2020-07-10,9,0,A34,-177.654785,0.0 +2020-07-10,9,0,AB3,150.286431,0.0 +2020-07-10,9,0,B1,29.09512,0.0 +2020-07-10,9,0,B2,-48.73018,0.0 +2020-07-10,9,0,B3,25.420527,0.0 +2020-07-10,9,0,B4,4.899599,0.0 +2020-07-10,9,0,B5,21.042654,0.0 +2020-07-10,9,0,B6,57.232315,0.0 +2020-07-10,9,0,B7,-178.995473,0.0 +2020-07-10,9,0,B8,-43.278877,0.0 +2020-07-10,9,0,B9,-20.804767,0.0 +2020-07-10,9,0,B10,-67.501572,0.0 +2020-07-10,9,0,B11,-81.382561,0.0 +2020-07-10,9,0,B12-1,-107.876188,0.0 +2020-07-10,9,0,B13-2,-84.837717,0.0 +2020-07-10,9,0,B14,-90.17562,0.0 +2020-07-10,9,0,B15,-117.682715,0.0 +2020-07-10,9,0,B16,-136.093624,0.0 +2020-07-10,9,0,B17,-164.007227,0.0 +2020-07-10,9,0,B18,-76.733046,0.0 +2020-07-10,9,0,B19,-149.536199,0.0 +2020-07-10,9,0,B20,-27.151508,0.0 +2020-07-10,9,0,B21,-254.538434,0.0 +2020-07-10,9,0,B22,-268.815583,0.0 +2020-07-10,9,0,B23,-275.841933,0.0 +2020-07-10,9,0,B24,60.139711,0.0 +2020-07-10,9,0,B25-1,-95.629676,0.0 +2020-07-10,9,0,B25-2,-95.629676,0.0 +2020-07-10,9,0,B26,178.995473,0.0 +2020-07-10,9,0,B27,-188.823938,0.0 +2020-07-10,9,0,B28,1.015667,0.0 +2020-07-10,9,0,B29,74.801261,0.0 +2020-07-10,9,0,B30,-113.338768,0.0 +2020-07-10,9,0,B31-1,-71.000941,0.0 +2020-07-10,9,0,B31-2,-71.000941,0.0 +2020-07-10,9,0,B32-1,-58.41314,0.0 +2020-07-10,9,0,B32-2,-58.41314,0.0 +2020-07-10,9,0,B33-1,-100.081012,0.0 +2020-07-10,9,0,B33-2,-100.081012,0.0 +2020-07-10,9,0,B34,-163.261232,0.0 +2020-07-10,9,0,C1,10.72561,0.0 +2020-07-10,9,0,C2,-40.03679,0.0 +2020-07-10,9,0,C3,-34.829746,0.0 +2020-07-10,9,0,C4,-27.280061,0.0 +2020-07-10,9,0,C5,-19.602382,0.0 +2020-07-10,9,0,C6,-19.112669,0.0 +2020-07-10,9,0,C7,-121.825662,0.0 +2020-07-10,9,0,C8,-71.228472,0.0 +2020-07-10,9,0,C9,-76.996465,0.0 +2020-07-10,9,0,C10,-100.372435,0.0 +2020-07-10,9,0,C11,-74.237181,0.0 +2020-07-10,9,0,C12-1,-61.134559,0.0 +2020-07-10,9,0,C13-2,-55.159086,0.0 +2020-07-10,9,0,C14,-119.495968,0.0 +2020-07-10,9,0,C15,-131.011787,0.0 +2020-07-10,9,0,C16,-132.825993,0.0 +2020-07-10,9,0,C17,-144.511996,0.0 +2020-07-10,9,0,C18,-210.870804,0.0 +2020-07-10,9,0,C19,-41.451157,0.0 +2020-07-10,9,0,C20,-190.11354,0.0 +2020-07-10,9,0,C21,-26.510243,0.0 +2020-07-10,9,0,C22,75.332832,0.0 +2020-07-10,9,0,C23,12.432737,0.0 +2020-07-10,9,0,C24,-139.672092,0.0 +2020-07-10,9,0,C25-1,-32.559531,0.0 +2020-07-10,9,0,C25-2,-32.559531,0.0 +2020-07-10,9,0,C26,16.525662,0.0 +2020-07-10,9,0,C27,-53.065046,0.0 +2020-07-10,9,0,C28,-71.564054,0.0 +2020-07-10,9,0,C29,332.866308,0.0 +2020-07-10,9,0,C30,-36.131354,0.0 +2020-07-10,9,0,C31-1,-96.208792,0.0 +2020-07-10,9,0,C31-2,-96.208792,0.0 +2020-07-10,9,0,C32-1,-23.829746,0.0 +2020-07-10,9,0,C32-2,-23.829746,0.0 +2020-07-10,9,0,C33-1,1.760817,0.0 +2020-07-10,9,0,C33-2,1.760817,0.0 +2020-07-10,9,0,C34,-87.536646,0.0 +2020-07-10,9,0,CA-1,52.344222,0.0 +2020-07-10,9,0,CB-1,327.51604,0.0 +2020-07-10,9,0,C35,52.344222,0.0 +2020-07-10,10,0,A1,-114.074824,0.0 +2020-07-10,10,0,A2,69.768322,0.0 +2020-07-10,10,0,A3,172.980071,0.0 +2020-07-10,10,0,A4,129.23648,0.0 +2020-07-10,10,0,A5,129.641535,0.0 +2020-07-10,10,0,A6,87.759932,0.0 +2020-07-10,10,0,A7,-87.002327,0.0 +2020-07-10,10,0,A8,99.505407,0.0 +2020-07-10,10,0,A9,128.719176,0.0 +2020-07-10,10,0,A10,44.860104,0.0 +2020-07-10,10,0,A11,-124.307061,0.0 +2020-07-10,10,0,AB1,46.382952,0.0 +2020-07-10,10,0,A12-1,-118.078003,0.0 +2020-07-10,10,0,A13-2,-112.829241,0.0 +2020-07-10,10,0,A14,-22.325172,0.0 +2020-07-10,10,0,A15,-17.581245,0.0 +2020-07-10,10,0,A16,-32.812803,0.0 +2020-07-10,10,0,A17,-27.998769,0.0 +2020-07-10,10,0,A18,48.869563,0.0 +2020-07-10,10,0,A19,-104.007538,0.0 +2020-07-10,10,0,A20,40.318636,0.0 +2020-07-10,10,0,A21,-85.89865,0.0 +2020-07-10,10,0,A22,-118.016823,0.0 +2020-07-10,10,0,AB2,102.205909,0.0 +2020-07-10,10,0,A23,-224.945756,0.0 +2020-07-10,10,0,A24,165.510661,0.0 +2020-07-10,10,0,A25-1,-178.564265,0.0 +2020-07-10,10,0,A25-2,-178.564265,0.0 +2020-07-10,10,0,A26,87.002327,0.0 +2020-07-10,10,0,A27,-266.409315,0.0 +2020-07-10,10,0,A28,237.634931,0.0 +2020-07-10,10,0,A29,-102.448899,0.0 +2020-07-10,10,0,A30,-163.960416,0.0 +2020-07-10,10,0,A31-1,-123.169363,0.0 +2020-07-10,10,0,A31-2,-123.169363,0.0 +2020-07-10,10,0,A32-1,82.75041,0.0 +2020-07-10,10,0,A32-2,82.75041,0.0 +2020-07-10,10,0,A33-1,42.853266,0.0 +2020-07-10,10,0,A33-2,42.853266,0.0 +2020-07-10,10,0,A34,-184.987584,0.0 +2020-07-10,10,0,AB3,184.791059,0.0 +2020-07-10,10,0,B1,30.830985,0.0 +2020-07-10,10,0,B2,-53.989447,0.0 +2020-07-10,10,0,B3,24.396594,0.0 +2020-07-10,10,0,B4,2.990121,0.0 +2020-07-10,10,0,B5,20.588546,0.0 +2020-07-10,10,0,B6,60.321953,0.0 +2020-07-10,10,0,B7,-192.726563,0.0 +2020-07-10,10,0,B8,-48.315771,0.0 +2020-07-10,10,0,B9,-24.829329,0.0 +2020-07-10,10,0,B10,-73.703363,0.0 +2020-07-10,10,0,B11,-86.665357,0.0 +2020-07-10,10,0,B12-1,-115.042664,0.0 +2020-07-10,10,0,B13-2,-90.180903,0.0 +2020-07-10,10,0,B14,-97.297159,0.0 +2020-07-10,10,0,B15,-127.070823,0.0 +2020-07-10,10,0,B16,-146.848941,0.0 +2020-07-10,10,0,B17,-177.06261,0.0 +2020-07-10,10,0,B18,-83.71986,0.0 +2020-07-10,10,0,B19,-160.42624,0.0 +2020-07-10,10,0,B20,-30.052831,0.0 +2020-07-10,10,0,B21,-274.080603,0.0 +2020-07-10,10,0,B22,-289.003249,0.0 +2020-07-10,10,0,B23,-294.930874,0.0 +2020-07-10,10,0,B24,63.234508,0.0 +2020-07-10,10,0,B25-1,-97.743754,0.0 +2020-07-10,10,0,B25-2,-97.743754,0.0 +2020-07-10,10,0,B26,192.726563,0.0 +2020-07-10,10,0,B27,-205.129039,0.0 +2020-07-10,10,0,B28,-2.899613,0.0 +2020-07-10,10,0,B29,91.493301,0.0 +2020-07-10,10,0,B30,-111.831281,0.0 +2020-07-10,10,0,B31-1,-69.691606,0.0 +2020-07-10,10,0,B31-2,-69.691606,0.0 +2020-07-10,10,0,B32-1,-64.195525,0.0 +2020-07-10,10,0,B32-2,-64.195525,0.0 +2020-07-10,10,0,B33-1,-108.568188,0.0 +2020-07-10,10,0,B33-2,-108.568188,0.0 +2020-07-10,10,0,B34,-164.870719,0.0 +2020-07-10,10,0,C1,9.664823,0.0 +2020-07-10,10,0,C2,-39.120323,0.0 +2020-07-10,10,0,C3,-38.711219,0.0 +2020-07-10,10,0,C4,-29.662921,0.0 +2020-07-10,10,0,C5,-21.896069,0.0 +2020-07-10,10,0,C6,-27.898731,0.0 +2020-07-10,10,0,C7,-119.83279,0.0 +2020-07-10,10,0,C8,-76.369747,0.0 +2020-07-10,10,0,C9,-83.524525,0.0 +2020-07-10,10,0,C10,-107.735641,0.0 +2020-07-10,10,0,C11,-78.896666,0.0 +2020-07-10,10,0,C12-1,-61.643123,0.0 +2020-07-10,10,0,C13-2,-55.984182,0.0 +2020-07-10,10,0,C14,-127.567437,0.0 +2020-07-10,10,0,C15,-146.699495,0.0 +2020-07-10,10,0,C16,-140.404174,0.0 +2020-07-10,10,0,C17,-159.818972,0.0 +2020-07-10,10,0,C18,-250.720798,0.0 +2020-07-10,10,0,C19,-17.250814,0.0 +2020-07-10,10,0,C20,-216.235263,0.0 +2020-07-10,10,0,C21,-27.283205,0.0 +2020-07-10,10,0,C22,88.883009,0.0 +2020-07-10,10,0,C23,31.401561,0.0 +2020-07-10,10,0,C24,-151.380998,0.0 +2020-07-10,10,0,C25-1,-28.566868,0.0 +2020-07-10,10,0,C25-2,-28.566868,0.0 +2020-07-10,10,0,C26,8.43279,0.0 +2020-07-10,10,0,C27,3.990804,0.0 +2020-07-10,10,0,C28,-125.087573,0.0 +2020-07-10,10,0,C29,270.043755,0.0 +2020-07-10,10,0,C30,-51.752951,0.0 +2020-07-10,10,0,C31-1,-104.256656,0.0 +2020-07-10,10,0,C31-2,-104.256656,0.0 +2020-07-10,10,0,C32-1,-51.964972,0.0 +2020-07-10,10,0,C32-2,-51.964972,0.0 +2020-07-10,10,0,C33-1,-21.560065,0.0 +2020-07-10,10,0,C33-2,-21.560065,0.0 +2020-07-10,10,0,C34,-95.647049,0.0 +2020-07-10,10,0,CA-1,18.479673,0.0 +2020-07-10,10,0,CB-1,268.376351,0.0 +2020-07-10,10,0,C35,18.479673,0.0 +2020-07-10,11,0,A1,-133.475956,0.0 +2020-07-10,11,0,A2,71.907154,0.0 +2020-07-10,11,0,A3,175.0,0.0 +2020-07-10,11,0,A4,134.463243,0.0 +2020-07-10,11,0,A5,132.129489,0.0 +2020-07-10,11,0,A6,87.633459,0.0 +2020-07-10,11,0,A7,-82.474308,0.0 +2020-07-10,11,0,A8,99.929064,0.0 +2020-07-10,11,0,A9,130.448288,0.0 +2020-07-10,11,0,A10,46.790997,0.0 +2020-07-10,11,0,A11,-128.399628,0.0 +2020-07-10,11,0,AB1,49.963515,0.0 +2020-07-10,11,0,A12-1,-120.133928,0.0 +2020-07-10,11,0,A13-2,-115.566303,0.0 +2020-07-10,11,0,A14,-22.377066,0.0 +2020-07-10,11,0,A15,-20.004898,0.0 +2020-07-10,11,0,A16,-31.54729,0.0 +2020-07-10,11,0,A17,-29.140065,0.0 +2020-07-10,11,0,A18,47.464101,0.0 +2020-07-10,11,0,A19,-101.388458,0.0 +2020-07-10,11,0,A20,43.188267,0.0 +2020-07-10,11,0,A21,-92.33323,0.0 +2020-07-10,11,0,A22,-126.774254,0.0 +2020-07-10,11,0,AB2,119.142063,0.0 +2020-07-10,11,0,A23,-223.121306,0.0 +2020-07-10,11,0,A24,140.604062,0.0 +2020-07-10,11,0,A25-1,-164.496177,0.0 +2020-07-10,11,0,A25-2,-164.496177,0.0 +2020-07-10,11,0,A26,82.474308,0.0 +2020-07-10,11,0,A27,-236.772313,0.0 +2020-07-10,11,0,A28,215.506178,0.0 +2020-07-10,11,0,A29,-93.596373,0.0 +2020-07-10,11,0,A30,-143.17594,0.0 +2020-07-10,11,0,A31-1,-114.77509,0.0 +2020-07-10,11,0,A31-2,-114.77509,0.0 +2020-07-10,11,0,A32-1,74.165343,0.0 +2020-07-10,11,0,A32-2,74.165343,0.0 +2020-07-10,11,0,A33-1,34.006053,0.0 +2020-07-10,11,0,A33-2,34.006053,0.0 +2020-07-10,11,0,A34,-157.92606,0.0 +2020-07-10,11,0,AB3,211.163651,0.0 +2020-07-10,11,0,B1,1.057793,0.0 +2020-07-10,11,0,B2,-44.539529,0.0 +2020-07-10,11,0,B3,40.779726,0.0 +2020-07-10,11,0,B4,17.737931,0.0 +2020-07-10,11,0,B5,33.749084,0.0 +2020-07-10,11,0,B6,66.212402,0.0 +2020-07-10,11,0,B7,-192.486766,0.0 +2020-07-10,11,0,B8,-36.404724,0.0 +2020-07-10,11,0,B9,-11.167956,0.0 +2020-07-10,11,0,B10,-65.756337,0.0 +2020-07-10,11,0,B11,-91.457188,0.0 +2020-07-10,11,0,B12-1,-120.412769,0.0 +2020-07-10,11,0,B13-2,-96.157851,0.0 +2020-07-10,11,0,B14,-95.051351,0.0 +2020-07-10,11,0,B15,-123.593804,0.0 +2020-07-10,11,0,B16,-143.395547,0.0 +2020-07-10,11,0,B17,-172.35981,0.0 +2020-07-10,11,0,B18,-77.148024,0.0 +2020-07-10,11,0,B19,-161.298874,0.0 +2020-07-10,11,0,B20,-25.700253,0.0 +2020-07-10,11,0,B21,-270.25336,0.0 +2020-07-10,11,0,B22,-287.137515,0.0 +2020-07-10,11,0,B23,-303.24043,0.0 +2020-07-10,11,0,B24,82.966376,0.0 +2020-07-10,11,0,B25-1,-97.147754,0.0 +2020-07-10,11,0,B25-2,-97.147754,0.0 +2020-07-10,11,0,B26,192.486766,0.0 +2020-07-10,11,0,B27,-221.128195,0.0 +2020-07-10,11,0,B28,20.688391,0.0 +2020-07-10,11,0,B29,101.704076,0.0 +2020-07-10,11,0,B30,-111.66862,0.0 +2020-07-10,11,0,B31-1,-70.968936,0.0 +2020-07-10,11,0,B31-2,-70.968936,0.0 +2020-07-10,11,0,B32-1,-55.870808,0.0 +2020-07-10,11,0,B32-2,-55.870808,0.0 +2020-07-10,11,0,B33-1,-102.696888,0.0 +2020-07-10,11,0,B33-2,-102.696888,0.0 +2020-07-10,11,0,B34,-166.23338,0.0 +2020-07-10,11,0,C1,9.524715,0.0 +2020-07-10,11,0,C2,-39.970428,0.0 +2020-07-10,11,0,C3,-41.390085,0.0 +2020-07-10,11,0,C4,-31.54937,0.0 +2020-07-10,11,0,C5,-23.445103,0.0 +2020-07-10,11,0,C6,-32.266923,0.0 +2020-07-10,11,0,C7,-120.829834,0.0 +2020-07-10,11,0,C8,-80.770194,0.0 +2020-07-10,11,0,C9,-88.61547,0.0 +2020-07-10,11,0,C10,-113.904996,0.0 +2020-07-10,11,0,C11,-83.143284,0.0 +2020-07-10,11,0,C12-1,-66.142271,0.0 +2020-07-10,11,0,C13-2,-60.341026,0.0 +2020-07-10,11,0,C14,-134.935453,0.0 +2020-07-10,11,0,C15,-158.144532,0.0 +2020-07-10,11,0,C16,-148.156473,0.0 +2020-07-10,11,0,C17,-171.708543,0.0 +2020-07-10,11,0,C18,-275.27672,0.0 +2020-07-10,11,0,C19,-7.815205,0.0 +2020-07-10,11,0,C20,-233.442355,0.0 +2020-07-10,11,0,C21,-31.91072,0.0 +2020-07-10,11,0,C22,93.217163,0.0 +2020-07-10,11,0,C23,29.446418,0.0 +2020-07-10,11,0,C24,-178.669183,0.0 +2020-07-10,11,0,C25-1,-23.45601,0.0 +2020-07-10,11,0,C25-2,-23.45601,0.0 +2020-07-10,11,0,C26,14.729834,0.0 +2020-07-10,11,0,C27,53.82238,0.0 +2020-07-10,11,0,C28,-145.559773,0.0 +2020-07-10,11,0,C29,241.639572,0.0 +2020-07-10,11,0,C30,-59.817192,0.0 +2020-07-10,11,0,C31-1,-111.319394,0.0 +2020-07-10,11,0,C31-2,-111.319394,0.0 +2020-07-10,11,0,C32-1,-62.425624,0.0 +2020-07-10,11,0,C32-2,-62.425624,0.0 +2020-07-10,11,0,C33-1,-30.344985,0.0 +2020-07-10,11,0,C33-2,-30.344985,0.0 +2020-07-10,11,0,C34,-99.550808,0.0 +2020-07-10,11,0,CA-1,0.616472,0.0 +2020-07-10,11,0,CB-1,242.784652,0.0 +2020-07-10,11,0,C35,0.616472,0.0 +2020-07-10,12,0,A1,-123.32672,0.0 +2020-07-10,12,0,A2,71.238837,0.0 +2020-07-10,12,0,A3,175.0,0.0 +2020-07-10,12,0,A4,131.099976,0.0 +2020-07-10,12,0,A5,131.321958,0.0 +2020-07-10,12,0,A6,90.167791,0.0 +2020-07-10,12,0,A7,-79.308758,0.0 +2020-07-10,12,0,A8,104.213834,0.0 +2020-07-10,12,0,A9,132.605188,0.0 +2020-07-10,12,0,A10,50.114995,0.0 +2020-07-10,12,0,A11,-139.771182,0.0 +2020-07-10,12,0,AB1,65.132429,0.0 +2020-07-10,12,0,A12-1,-123.310907,0.0 +2020-07-10,12,0,A13-2,-118.566089,0.0 +2020-07-10,12,0,A14,-18.725241,0.0 +2020-07-10,12,0,A15,-14.698295,0.0 +2020-07-10,12,0,A16,-28.184409,0.0 +2020-07-10,12,0,A17,-24.097952,0.0 +2020-07-10,12,0,A18,58.084298,0.0 +2020-07-10,12,0,A19,-104.993948,0.0 +2020-07-10,12,0,A20,50.825729,0.0 +2020-07-10,12,0,A21,-89.621976,0.0 +2020-07-10,12,0,A22,-127.965135,0.0 +2020-07-10,12,0,AB2,145.341006,0.0 +2020-07-10,12,0,A23,-220.833293,0.0 +2020-07-10,12,0,A24,150.404077,0.0 +2020-07-10,12,0,A25-1,-147.498356,0.0 +2020-07-10,12,0,A25-2,-147.498356,0.0 +2020-07-10,12,0,A26,79.308758,0.0 +2020-07-10,12,0,A27,-224.777346,0.0 +2020-07-10,12,0,A28,218.637128,0.0 +2020-07-10,12,0,A29,-86.303278,0.0 +2020-07-10,12,0,A30,-138.474068,0.0 +2020-07-10,12,0,A31-1,-105.070458,0.0 +2020-07-10,12,0,A31-2,-105.070458,0.0 +2020-07-10,12,0,A32-1,79.130107,0.0 +2020-07-10,12,0,A32-2,79.130107,0.0 +2020-07-10,12,0,A33-1,40.915066,0.0 +2020-07-10,12,0,A33-2,40.915066,0.0 +2020-07-10,12,0,A34,-155.877932,0.0 +2020-07-10,12,0,AB3,237.24302,0.0 +2020-07-10,12,0,B1,10.892038,0.0 +2020-07-10,12,0,B2,-48.56043,0.0 +2020-07-10,12,0,B3,46.699532,0.0 +2020-07-10,12,0,B4,20.40291,0.0 +2020-07-10,12,0,B5,37.535161,0.0 +2020-07-10,12,0,B6,77.416408,0.0 +2020-07-10,12,0,B7,-198.820842,0.0 +2020-07-10,12,0,B8,-36.320735,0.0 +2020-07-10,12,0,B9,-7.724506,0.0 +2020-07-10,12,0,B10,-66.7137,0.0 +2020-07-10,12,0,B11,-95.816968,0.0 +2020-07-10,12,0,B12-1,-126.548508,0.0 +2020-07-10,12,0,B13-2,-100.346072,0.0 +2020-07-10,12,0,B14,-96.997326,0.0 +2020-07-10,12,0,B15,-122.599263,0.0 +2020-07-10,12,0,B16,-149.139229,0.0 +2020-07-10,12,0,B17,-175.119519,0.0 +2020-07-10,12,0,B18,-71.227456,0.0 +2020-07-10,12,0,B19,-174.909099,0.0 +2020-07-10,12,0,B20,-25.079964,0.0 +2020-07-10,12,0,B21,-272.638818,0.0 +2020-07-10,12,0,B22,-290.139392,0.0 +2020-07-10,12,0,B23,-323.617033,0.0 +2020-07-10,12,0,B24,98.288559,0.0 +2020-07-10,12,0,B25-1,-97.304613,0.0 +2020-07-10,12,0,B25-2,-97.304613,0.0 +2020-07-10,12,0,B26,198.820842,0.0 +2020-07-10,12,0,B27,-236.479392,0.0 +2020-07-10,12,0,B28,58.497344,0.0 +2020-07-10,12,0,B29,112.146884,0.0 +2020-07-10,12,0,B30,-111.383256,0.0 +2020-07-10,12,0,B31-1,-71.554759,0.0 +2020-07-10,12,0,B31-2,-71.554759,0.0 +2020-07-10,12,0,B32-1,-40.122813,0.0 +2020-07-10,12,0,B32-2,-40.122813,0.0 +2020-07-10,12,0,B33-1,-89.1811,0.0 +2020-07-10,12,0,B33-2,-89.1811,0.0 +2020-07-10,12,0,B34,-167.718744,0.0 +2020-07-10,12,0,C1,10.411278,0.0 +2020-07-10,12,0,C2,-43.464985,0.0 +2020-07-10,12,0,C3,-42.34925,0.0 +2020-07-10,12,0,C4,-33.429081,0.0 +2020-07-10,12,0,C5,-23.882667,0.0 +2020-07-10,12,0,C6,-31.751318,0.0 +2020-07-10,12,0,C7,-130.085262,0.0 +2020-07-10,12,0,C8,-85.09407,0.0 +2020-07-10,12,0,C9,-91.919713,0.0 +2020-07-10,12,0,C10,-118.834539,0.0 +2020-07-10,12,0,C11,-87.271941,0.0 +2020-07-10,12,0,C12-1,-71.15088,0.0 +2020-07-10,12,0,C13-2,-63.509076,0.0 +2020-07-10,12,0,C14,-141.723867,0.0 +2020-07-10,12,0,C15,-166.353118,0.0 +2020-07-10,12,0,C16,-158.607162,0.0 +2020-07-10,12,0,C17,-183.600393,0.0 +2020-07-10,12,0,C18,-287.302239,0.0 +2020-07-10,12,0,C19,-13.02879,0.0 +2020-07-10,12,0,C20,-242.908013,0.0 +2020-07-10,12,0,C21,-47.845498,0.0 +2020-07-10,12,0,C22,80.673233,0.0 +2020-07-10,12,0,C23,21.925158,0.0 +2020-07-10,12,0,C24,-177.839863,0.0 +2020-07-10,12,0,C25-1,-33.083521,0.0 +2020-07-10,12,0,C25-2,-33.083521,0.0 +2020-07-10,12,0,C26,22.685262,0.0 +2020-07-10,12,0,C27,54.399543,0.0 +2020-07-10,12,0,C28,-156.131801,0.0 +2020-07-10,12,0,C29,217.963861,0.0 +2020-07-10,12,0,C30,-66.564318,0.0 +2020-07-10,12,0,C31-1,-117.8345,0.0 +2020-07-10,12,0,C31-2,-117.8345,0.0 +2020-07-10,12,0,C32-1,-75.200786,0.0 +2020-07-10,12,0,C32-2,-75.200786,0.0 +2020-07-10,12,0,C33-1,-41.784019,0.0 +2020-07-10,12,0,C33-2,-41.784019,0.0 +2020-07-10,12,0,C34,-102.603682,0.0 +2020-07-10,12,0,CA-1,-50.740303,0.0 +2020-07-10,12,0,CB-1,221.140411,0.0 +2020-07-10,12,0,C35,-50.740303,0.0 +2020-07-10,13,0,A1,-130.052516,0.0 +2020-07-10,13,0,A2,80.454894,0.0 +2020-07-10,13,0,A3,175.0,0.0 +2020-07-10,13,0,A4,137.437485,0.0 +2020-07-10,13,0,A5,131.81479,0.0 +2020-07-10,13,0,A6,76.857761,0.0 +2020-07-10,13,0,A7,-59.86557,0.0 +2020-07-10,13,0,A8,100.848374,0.0 +2020-07-10,13,0,A9,131.546934,0.0 +2020-07-10,13,0,A10,48.580748,0.0 +2020-07-10,13,0,A11,-48.77627,0.0 +2020-07-10,13,0,AB1,142.274393,0.0 +2020-07-10,13,0,A12-1,-77.712613,0.0 +2020-07-10,13,0,A13-2,-75.718226,0.0 +2020-07-10,13,0,A14,-3.596822,0.0 +2020-07-10,13,0,A15,-3.512285,0.0 +2020-07-10,13,0,A16,-7.509629,0.0 +2020-07-10,13,0,A17,-7.423843,0.0 +2020-07-10,13,0,A18,66.572149,0.0 +2020-07-10,13,0,A19,-77.6786,0.0 +2020-07-10,13,0,A20,66.419772,0.0 +2020-07-10,13,0,A21,-77.355901,0.0 +2020-07-10,13,0,A22,-122.892775,0.0 +2020-07-10,13,0,AB2,154.900716,0.0 +2020-07-10,13,0,A23,-196.409514,0.0 +2020-07-10,13,0,A24,129.491884,0.0 +2020-07-10,13,0,A25-1,-129.683107,0.0 +2020-07-10,13,0,A25-2,-129.683107,0.0 +2020-07-10,13,0,A26,59.86557,0.0 +2020-07-10,13,0,A27,-198.967053,0.0 +2020-07-10,13,0,A28,194.84792,0.0 +2020-07-10,13,0,A29,-59.273255,0.0 +2020-07-10,13,0,A30,-139.693797,0.0 +2020-07-10,13,0,A31-1,-98.187128,0.0 +2020-07-10,13,0,A31-2,-98.187128,0.0 +2020-07-10,13,0,A32-1,60.236601,0.0 +2020-07-10,13,0,A32-2,60.236601,0.0 +2020-07-10,13,0,A33-1,21.06764,0.0 +2020-07-10,13,0,A33-2,21.06764,0.0 +2020-07-10,13,0,A34,-165.958203,0.0 +2020-07-10,13,0,AB3,245.886604,0.0 +2020-07-10,13,0,B1,18.856898,0.0 +2020-07-10,13,0,B2,-66.152398,0.0 +2020-07-10,13,0,B3,53.319663,0.0 +2020-07-10,13,0,B4,21.194078,0.0 +2020-07-10,13,0,B5,41.859049,0.0 +2020-07-10,13,0,B6,109.181694,0.0 +2020-07-10,13,0,B7,-176.324429,0.0 +2020-07-10,13,0,B8,-37.703644,0.0 +2020-07-10,13,0,B9,-3.190313,0.0 +2020-07-10,13,0,B10,-66.385413,0.0 +2020-07-10,13,0,B11,-99.489395,0.0 +2020-07-10,13,0,B12-1,-133.604408,0.0 +2020-07-10,13,0,B13-2,-101.98648,0.0 +2020-07-10,13,0,B14,-89.248594,0.0 +2020-07-10,13,0,B15,-112.162917,0.0 +2020-07-10,13,0,B16,-151.756352,0.0 +2020-07-10,13,0,B17,-175.00931,0.0 +2020-07-10,13,0,B18,-62.019416,0.0 +2020-07-10,13,0,B19,-178.985529,0.0 +2020-07-10,13,0,B20,-20.716348,0.0 +2020-07-10,13,0,B21,-266.455879,0.0 +2020-07-10,13,0,B22,-285.653282,0.0 +2020-07-10,13,0,B23,-333.39307,0.0 +2020-07-10,13,0,B24,134.443592,0.0 +2020-07-10,13,0,B25-1,-92.411705,0.0 +2020-07-10,13,0,B25-2,-92.411705,0.0 +2020-07-10,13,0,B26,176.324429,0.0 +2020-07-10,13,0,B27,-246.121445,0.0 +2020-07-10,13,0,B28,91.58045,0.0 +2020-07-10,13,0,B29,112.257766,0.0 +2020-07-10,13,0,B30,-112.492607,0.0 +2020-07-10,13,0,B31-1,-76.390991,0.0 +2020-07-10,13,0,B31-2,-76.390991,0.0 +2020-07-10,13,0,B32-1,-26.240097,0.0 +2020-07-10,13,0,B32-2,-26.240097,0.0 +2020-07-10,13,0,B33-1,-77.178667,0.0 +2020-07-10,13,0,B33-2,-77.178667,0.0 +2020-07-10,13,0,B34,-167.605393,0.0 +2020-07-10,13,0,C1,12.191612,0.0 +2020-07-10,13,0,C2,-48.139285,0.0 +2020-07-10,13,0,C3,-42.478876,0.0 +2020-07-10,13,0,C4,-34.403853,0.0 +2020-07-10,13,0,C5,-23.843195,0.0 +2020-07-10,13,0,C6,-26.956606,0.0 +2020-07-10,13,0,C7,-145.093594,0.0 +2020-07-10,13,0,C8,-88.140563,0.0 +2020-07-10,13,0,C9,-94.03707,0.0 +2020-07-10,13,0,C10,-122.602553,0.0 +2020-07-10,13,0,C11,-90.771469,0.0 +2020-07-10,13,0,C12-1,-77.106022,0.0 +2020-07-10,13,0,C13-2,-68.140817,0.0 +2020-07-10,13,0,C14,-146.152366,0.0 +2020-07-10,13,0,C15,-171.930882,0.0 +2020-07-10,13,0,C16,-165.662226,0.0 +2020-07-10,13,0,C17,-191.821706,0.0 +2020-07-10,13,0,C18,-287.148186,0.0 +2020-07-10,13,0,C19,-24.666406,0.0 +2020-07-10,13,0,C20,-240.68241,0.0 +2020-07-10,13,0,C21,-66.870178,0.0 +2020-07-10,13,0,C22,58.23389,0.0 +2020-07-10,13,0,C23,1.756274,0.0 +2020-07-10,13,0,C24,-166.71535,0.0 +2020-07-10,13,0,C25-1,-46.937345,0.0 +2020-07-10,13,0,C25-2,-46.937345,0.0 +2020-07-10,13,0,C26,30.393594,0.0 +2020-07-10,13,0,C27,43.918121,0.0 +2020-07-10,13,0,C28,-157.494372,0.0 +2020-07-10,13,0,C29,171.922538,0.0 +2020-07-10,13,0,C30,-66.704417,0.0 +2020-07-10,13,0,C31-1,-115.944447,0.0 +2020-07-10,13,0,C31-2,-115.944447,0.0 +2020-07-10,13,0,C32-1,-76.11573,0.0 +2020-07-10,13,0,C32-2,-76.11573,0.0 +2020-07-10,13,0,C33-1,-50.790722,0.0 +2020-07-10,13,0,C33-2,-50.790722,0.0 +2020-07-10,13,0,C34,-94.063583,0.0 +2020-07-10,13,0,CA-1,-110.217732,0.0 +2020-07-10,13,0,CB-1,161.996238,0.0 +2020-07-10,13,0,C35,-110.217732,0.0 +2020-07-10,14,0,A1,-125.746909,0.0 +2020-07-10,14,0,A2,82.971371,0.0 +2020-07-10,14,0,A3,175.0,0.0 +2020-07-10,14,0,A4,133.819791,0.0 +2020-07-10,14,0,A5,132.541766,0.0 +2020-07-10,14,0,A6,64.023676,0.0 +2020-07-10,14,0,A7,-72.678201,0.0 +2020-07-10,14,0,A8,95.106923,0.0 +2020-07-10,14,0,A9,123.080897,0.0 +2020-07-10,14,0,A10,33.091089,0.0 +2020-07-10,14,0,A11,4.931173,0.0 +2020-07-10,14,0,AB1,135.361955,0.0 +2020-07-10,14,0,A12-1,-61.815327,0.0 +2020-07-10,14,0,A13-2,-58.298102,0.0 +2020-07-10,14,0,A14,-11.133067,0.0 +2020-07-10,14,0,A15,-19.521282,0.0 +2020-07-10,14,0,A16,-18.104328,0.0 +2020-07-10,14,0,A17,-26.616508,0.0 +2020-07-10,14,0,A18,39.090657,0.0 +2020-07-10,14,0,A19,-68.328052,0.0 +2020-07-10,14,0,A20,54.210416,0.0 +2020-07-10,14,0,A21,-100.348207,0.0 +2020-07-10,14,0,A22,-141.791678,0.0 +2020-07-10,14,0,AB2,96.610183,0.0 +2020-07-10,14,0,A23,-210.191518,0.0 +2020-07-10,14,0,A24,80.018622,0.0 +2020-07-10,14,0,A25-1,-130.252325,0.0 +2020-07-10,14,0,A25-2,-130.252325,0.0 +2020-07-10,14,0,A26,72.678201,0.0 +2020-07-10,14,0,A27,-208.626764,0.0 +2020-07-10,14,0,A28,160.32837,0.0 +2020-07-10,14,0,A29,-73.728957,0.0 +2020-07-10,14,0,A30,-134.897807,0.0 +2020-07-10,14,0,A31-1,-49.468432,0.0 +2020-07-10,14,0,A31-2,-49.468432,0.0 +2020-07-10,14,0,A32-1,34.73561,0.0 +2020-07-10,14,0,A32-2,34.73561,0.0 +2020-07-10,14,0,A33-1,-12.064709,0.0 +2020-07-10,14,0,A33-2,-12.064709,0.0 +2020-07-10,14,0,A34,-174.204193,0.0 +2020-07-10,14,0,AB3,207.730697,0.0 +2020-07-10,14,0,B1,30.751734,0.0 +2020-07-10,14,0,B2,-56.615607,0.0 +2020-07-10,14,0,B3,61.698733,0.0 +2020-07-10,14,0,B4,28.034076,0.0 +2020-07-10,14,0,B5,46.929126,0.0 +2020-07-10,14,0,B6,106.959118,0.0 +2020-07-10,14,0,B7,-171.449219,0.0 +2020-07-10,14,0,B8,-30.852019,0.0 +2020-07-10,14,0,B9,5.199911,0.0 +2020-07-10,14,0,B10,-61.293969,0.0 +2020-07-10,14,0,B11,-99.469756,0.0 +2020-07-10,14,0,B12-1,-132.680502,0.0 +2020-07-10,14,0,B13-2,-102.863881,0.0 +2020-07-10,14,0,B14,-86.886509,0.0 +2020-07-10,14,0,B15,-108.944554,0.0 +2020-07-10,14,0,B16,-145.873366,0.0 +2020-07-10,14,0,B17,-168.257393,0.0 +2020-07-10,14,0,B18,-57.74019,0.0 +2020-07-10,14,0,B19,-175.019685,0.0 +2020-07-10,14,0,B20,-17.980562,0.0 +2020-07-10,14,0,B21,-259.221384,0.0 +2020-07-10,14,0,B22,-279.096636,0.0 +2020-07-10,14,0,B23,-329.396747,0.0 +2020-07-10,14,0,B24,115.211719,0.0 +2020-07-10,14,0,B25-1,-108.403029,0.0 +2020-07-10,14,0,B25-2,-108.403029,0.0 +2020-07-10,14,0,B26,171.449219,0.0 +2020-07-10,14,0,B27,-237.237208,0.0 +2020-07-10,14,0,B28,98.476375,0.0 +2020-07-10,14,0,B29,86.765051,0.0 +2020-07-10,14,0,B30,-116.271562,0.0 +2020-07-10,14,0,B31-1,-89.11119,0.0 +2020-07-10,14,0,B31-2,-89.11119,0.0 +2020-07-10,14,0,B32-1,-22.777916,0.0 +2020-07-10,14,0,B32-2,-22.777916,0.0 +2020-07-10,14,0,B33-1,-73.706432,0.0 +2020-07-10,14,0,B33-2,-73.706432,0.0 +2020-07-10,14,0,B34,-163.328438,0.0 +2020-07-10,14,0,C1,14.541231,0.0 +2020-07-10,14,0,C2,-53.330276,0.0 +2020-07-10,14,0,C3,-40.860531,0.0 +2020-07-10,14,0,C4,-34.220958,0.0 +2020-07-10,14,0,C5,-22.774929,0.0 +2020-07-10,14,0,C6,-17.853326,0.0 +2020-07-10,14,0,C7,-162.926242,0.0 +2020-07-10,14,0,C8,-88.795667,0.0 +2020-07-10,14,0,C9,-93.222752,0.0 +2020-07-10,14,0,C10,-123.074394,0.0 +2020-07-10,14,0,C11,-92.187009,0.0 +2020-07-10,14,0,C12-1,-83.902408,0.0 +2020-07-10,14,0,C13-2,-73.596428,0.0 +2020-07-10,14,0,C14,-147.009853,0.0 +2020-07-10,14,0,C15,-171.20336,0.0 +2020-07-10,14,0,C16,-169.12713,0.0 +2020-07-10,14,0,C17,-193.678177,0.0 +2020-07-10,14,0,C18,-266.739117,0.0 +2020-07-10,14,0,C19,-49.397866,0.0 +2020-07-10,14,0,C20,-223.130319,0.0 +2020-07-10,14,0,C21,-92.751218,0.0 +2020-07-10,14,0,C22,19.694105,0.0 +2020-07-10,14,0,C23,-27.772103,0.0 +2020-07-10,14,0,C24,-133.073331,0.0 +2020-07-10,14,0,C25-1,-73.469583,0.0 +2020-07-10,14,0,C25-2,-73.469583,0.0 +2020-07-10,14,0,C26,46.226242,0.0 +2020-07-10,14,0,C27,-10.075761,0.0 +2020-07-10,14,0,C28,-100.51928,0.0 +2020-07-10,14,0,C29,90.789957,0.0 +2020-07-10,14,0,C30,-72.265718,0.0 +2020-07-10,14,0,C31-1,-90.263559,0.0 +2020-07-10,14,0,C31-2,-90.263559,0.0 +2020-07-10,14,0,C32-1,-87.653034,0.0 +2020-07-10,14,0,C32-2,-87.653034,0.0 +2020-07-10,14,0,C33-1,-70.852782,0.0 +2020-07-10,14,0,C33-2,-70.852782,0.0 +2020-07-10,14,0,C34,-95.766282,0.0 +2020-07-10,14,0,CA-1,-214.762677,0.0 +2020-07-10,14,0,CB-1,25.730883,0.0 +2020-07-10,14,0,C35,-214.762677,0.0 +2020-07-10,15,0,A1,-114.325162,0.0 +2020-07-10,15,0,A2,82.588594,0.0 +2020-07-10,15,0,A3,175.0,0.0 +2020-07-10,15,0,A4,132.518416,0.0 +2020-07-10,15,0,A5,131.644479,0.0 +2020-07-10,15,0,A6,66.775249,0.0 +2020-07-10,15,0,A7,-77.614269,0.0 +2020-07-10,15,0,A8,97.530397,0.0 +2020-07-10,15,0,A9,125.407441,0.0 +2020-07-10,15,0,A10,36.650281,0.0 +2020-07-10,15,0,A11,-5.395777,0.0 +2020-07-10,15,0,AB1,149.784934,0.0 +2020-07-10,15,0,A12-1,-64.050041,0.0 +2020-07-10,15,0,A13-2,-60.786969,0.0 +2020-07-10,15,0,A14,-8.942156,0.0 +2020-07-10,15,0,A15,-13.03742,0.0 +2020-07-10,15,0,A16,-15.389189,0.0 +2020-07-10,15,0,A17,-19.544973,0.0 +2020-07-10,15,0,A18,54.727155,0.0 +2020-07-10,15,0,A19,-79.0585,0.0 +2020-07-10,15,0,A20,62.108868,0.0 +2020-07-10,15,0,A21,-94.691261,0.0 +2020-07-10,15,0,A22,-139.842276,0.0 +2020-07-10,15,0,AB2,125.379312,0.0 +2020-07-10,15,0,A23,-214.564928,0.0 +2020-07-10,15,0,A24,108.595656,0.0 +2020-07-10,15,0,A25-1,-141.815112,0.0 +2020-07-10,15,0,A25-2,-141.815112,0.0 +2020-07-10,15,0,A26,77.614269,0.0 +2020-07-10,15,0,A27,-244.021497,0.0 +2020-07-10,15,0,A28,192.20355,0.0 +2020-07-10,15,0,A29,-110.502169,0.0 +2020-07-10,15,0,A30,-133.519328,0.0 +2020-07-10,15,0,A31-1,-34.749128,0.0 +2020-07-10,15,0,A31-2,-34.749128,0.0 +2020-07-10,15,0,A32-1,48.438724,0.0 +2020-07-10,15,0,A32-2,48.438724,0.0 +2020-07-10,15,0,A33-1,3.735573,0.0 +2020-07-10,15,0,A33-2,3.735573,0.0 +2020-07-10,15,0,A34,-170.132672,0.0 +2020-07-10,15,0,AB3,233.074733,0.0 +2020-07-10,15,0,B1,27.085002,0.0 +2020-07-10,15,0,B2,-64.33986,0.0 +2020-07-10,15,0,B3,59.814828,0.0 +2020-07-10,15,0,B4,25.535202,0.0 +2020-07-10,15,0,B5,45.837466,0.0 +2020-07-10,15,0,B6,115.42373,0.0 +2020-07-10,15,0,B7,-173.073708,0.0 +2020-07-10,15,0,B8,-33.292763,0.0 +2020-07-10,15,0,B9,3.37178,0.0 +2020-07-10,15,0,B10,-62.278795,0.0 +2020-07-10,15,0,B11,-99.371563,0.0 +2020-07-10,15,0,B12-1,-133.477942,0.0 +2020-07-10,15,0,B13-2,-101.83392,0.0 +2020-07-10,15,0,B14,-85.724889,0.0 +2020-07-10,15,0,B15,-104.742274,0.0 +2020-07-10,15,0,B16,-148.231071,0.0 +2020-07-10,15,0,B17,-167.529502,0.0 +2020-07-10,15,0,B18,-51.739064,0.0 +2020-07-10,15,0,B19,-182.216896,0.0 +2020-07-10,15,0,B20,-17.460227,0.0 +2020-07-10,15,0,B21,-254.811549,0.0 +2020-07-10,15,0,B22,-274.467005,0.0 +2020-07-10,15,0,B23,-336.441562,0.0 +2020-07-10,15,0,B24,151.261283,0.0 +2020-07-10,15,0,B25-1,-110.605481,0.0 +2020-07-10,15,0,B25-2,-110.605481,0.0 +2020-07-10,15,0,B26,173.073708,0.0 +2020-07-10,15,0,B27,-265.139925,0.0 +2020-07-10,15,0,B28,124.462396,0.0 +2020-07-10,15,0,B29,86.813468,0.0 +2020-07-10,15,0,B30,-118.878661,0.0 +2020-07-10,15,0,B31-1,-88.956188,0.0 +2020-07-10,15,0,B31-2,-88.956188,0.0 +2020-07-10,15,0,B32-1,-9.713814,0.0 +2020-07-10,15,0,B32-2,-9.713814,0.0 +2020-07-10,15,0,B33-1,-60.592054,0.0 +2020-07-10,15,0,B33-2,-60.592054,0.0 +2020-07-10,15,0,B34,-167.423339,0.0 +2020-07-10,15,0,C1,14.100924,0.0 +2020-07-10,15,0,C2,-53.087096,0.0 +2020-07-10,15,0,C3,-42.65082,0.0 +2020-07-10,15,0,C4,-35.395398,0.0 +2020-07-10,15,0,C5,-23.825793,0.0 +2020-07-10,15,0,C6,-21.806204,0.0 +2020-07-10,15,0,C7,-156.042547,0.0 +2020-07-10,15,0,C8,-91.331856,0.0 +2020-07-10,15,0,C9,-96.319584,0.0 +2020-07-10,15,0,C10,-126.627932,0.0 +2020-07-10,15,0,C11,-94.48726,0.0 +2020-07-10,15,0,C12-1,-93.458893,0.0 +2020-07-10,15,0,C13-2,-83.186939,0.0 +2020-07-10,15,0,C14,-153.881043,0.0 +2020-07-10,15,0,C15,-184.298074,0.0 +2020-07-10,15,0,C16,-176.034018,0.0 +2020-07-10,15,0,C17,-206.900561,0.0 +2020-07-10,15,0,C18,-298.365928,0.0 +2020-07-10,15,0,C19,-31.549133,0.0 +2020-07-10,15,0,C20,-243.539231,0.0 +2020-07-10,15,0,C21,-88.959404,0.0 +2020-07-10,15,0,C22,35.181849,0.0 +2020-07-10,15,0,C23,-16.393361,0.0 +2020-07-10,15,0,C24,-158.835179,0.0 +2020-07-10,15,0,C25-1,-61.51353,0.0 +2020-07-10,15,0,C25-2,-61.51353,0.0 +2020-07-10,15,0,C26,42.242547,0.0 +2020-07-10,15,0,C27,25.335784,0.0 +2020-07-10,15,0,C28,-152.154132,0.0 +2020-07-10,15,0,C29,114.28156,0.0 +2020-07-10,15,0,C30,-67.045776,0.0 +2020-07-10,15,0,C31-1,-98.947582,0.0 +2020-07-10,15,0,C31-2,-98.947582,0.0 +2020-07-10,15,0,C32-1,-91.835842,0.0 +2020-07-10,15,0,C32-2,-91.835842,0.0 +2020-07-10,15,0,C33-1,-81.613319,0.0 +2020-07-10,15,0,C33-2,-81.613319,0.0 +2020-07-10,15,0,C34,-89.222224,0.0 +2020-07-10,15,0,CA-1,-217.004194,0.0 +2020-07-10,15,0,CB-1,60.462663,0.0 +2020-07-10,15,0,C35,-217.004194,0.0 +2020-07-10,16,0,A1,-134.621961,0.0 +2020-07-10,16,0,A2,87.864617,0.0 +2020-07-10,16,0,A3,175.0,0.0 +2020-07-10,16,0,A4,136.430068,0.0 +2020-07-10,16,0,A5,132.514341,0.0 +2020-07-10,16,0,A6,61.852529,0.0 +2020-07-10,16,0,A7,-73.683486,0.0 +2020-07-10,16,0,A8,100.557443,0.0 +2020-07-10,16,0,A9,127.628968,0.0 +2020-07-10,16,0,A10,41.775463,0.0 +2020-07-10,16,0,A11,-10.473279,0.0 +2020-07-10,16,0,AB1,158.773575,0.0 +2020-07-10,16,0,A12-1,-62.907686,0.0 +2020-07-10,16,0,A13-2,-61.656389,0.0 +2020-07-10,16,0,A14,-6.674821,0.0 +2020-07-10,16,0,A15,-10.582478,0.0 +2020-07-10,16,0,A16,-9.195045,0.0 +2020-07-10,16,0,A17,-13.160451,0.0 +2020-07-10,16,0,A18,61.184103,0.0 +2020-07-10,16,0,A19,-77.05397,0.0 +2020-07-10,16,0,A20,68.227655,0.0 +2020-07-10,16,0,A21,-91.970584,0.0 +2020-07-10,16,0,A22,-140.18476,0.0 +2020-07-10,16,0,AB2,138.689144,0.0 +2020-07-10,16,0,A23,-206.490311,0.0 +2020-07-10,16,0,A24,86.914453,0.0 +2020-07-10,16,0,A25-1,-124.049795,0.0 +2020-07-10,16,0,A25-2,-124.049795,0.0 +2020-07-10,16,0,A26,73.683486,0.0 +2020-07-10,16,0,A27,-220.495956,0.0 +2020-07-10,16,0,A28,189.200335,0.0 +2020-07-10,16,0,A29,-85.396009,0.0 +2020-07-10,16,0,A30,-135.099947,0.0 +2020-07-10,16,0,A31-1,-24.13641,0.0 +2020-07-10,16,0,A31-2,-24.13641,0.0 +2020-07-10,16,0,A32-1,44.318782,0.0 +2020-07-10,16,0,A32-2,44.318782,0.0 +2020-07-10,16,0,A33-1,1.618133,0.0 +2020-07-10,16,0,A33-2,1.618133,0.0 +2020-07-10,16,0,A34,-181.800053,0.0 +2020-07-10,16,0,AB3,245.080923,0.0 +2020-07-10,16,0,B1,28.653161,0.0 +2020-07-10,16,0,B2,-67.329929,0.0 +2020-07-10,16,0,B3,61.623351,0.0 +2020-07-10,16,0,B4,26.151616,0.0 +2020-07-10,16,0,B5,46.972087,0.0 +2020-07-10,16,0,B6,122.228433,0.0 +2020-07-10,16,0,B7,-173.540482,0.0 +2020-07-10,16,0,B8,-32.536836,0.0 +2020-07-10,16,0,B9,5.31416,0.0 +2020-07-10,16,0,B10,-60.887772,0.0 +2020-07-10,16,0,B11,-99.135899,0.0 +2020-07-10,16,0,B12-1,-133.64073,0.0 +2020-07-10,16,0,B13-2,-101.113079,0.0 +2020-07-10,16,0,B14,-84.262239,0.0 +2020-07-10,16,0,B15,-98.477154,0.0 +2020-07-10,16,0,B16,-148.456854,0.0 +2020-07-10,16,0,B17,-162.88184,0.0 +2020-07-10,16,0,B18,-41.661411,0.0 +2020-07-10,16,0,B19,-191.057682,0.0 +2020-07-10,16,0,B20,-16.039028,0.0 +2020-07-10,16,0,B21,-245.319966,0.0 +2020-07-10,16,0,B22,-264.668545,0.0 +2020-07-10,16,0,B23,-344.916598,0.0 +2020-07-10,16,0,B24,158.851721,0.0 +2020-07-10,16,0,B25-1,-112.30585,0.0 +2020-07-10,16,0,B25-2,-112.30585,0.0 +2020-07-10,16,0,B26,173.540482,0.0 +2020-07-10,16,0,B27,-275.471187,0.0 +2020-07-10,16,0,B28,165.09759,0.0 +2020-07-10,16,0,B29,88.594794,0.0 +2020-07-10,16,0,B30,-118.985058,0.0 +2020-07-10,16,0,B31-1,-87.751621,0.0 +2020-07-10,16,0,B31-2,-87.751621,0.0 +2020-07-10,16,0,B32-1,10.774404,0.0 +2020-07-10,16,0,B32-2,10.774404,0.0 +2020-07-10,16,0,B33-1,-39.983177,0.0 +2020-07-10,16,0,B33-2,-39.983177,0.0 +2020-07-10,16,0,B34,-168.414942,0.0 +2020-07-10,16,0,C1,15.781848,0.0 +2020-07-10,16,0,C2,-56.959559,0.0 +2020-07-10,16,0,C3,-39.74585,0.0 +2020-07-10,16,0,C4,-34.913619,0.0 +2020-07-10,16,0,C5,-21.985879,0.0 +2020-07-10,16,0,C6,-13.379715,0.0 +2020-07-10,16,0,C7,-168.952446,0.0 +2020-07-10,16,0,C8,-90.361244,0.0 +2020-07-10,16,0,C9,-92.945599,0.0 +2020-07-10,16,0,C10,-123.889623,0.0 +2020-07-10,16,0,C11,-93.661529,0.0 +2020-07-10,16,0,C12-1,-102.866593,0.0 +2020-07-10,16,0,C13-2,-90.423907,0.0 +2020-07-10,16,0,C14,-151.785816,0.0 +2020-07-10,16,0,C15,-185.047875,0.0 +2020-07-10,16,0,C16,-178.108748,0.0 +2020-07-10,16,0,C17,-211.862365,0.0 +2020-07-10,16,0,C18,-281.409683,0.0 +2020-07-10,16,0,C19,-48.484882,0.0 +2020-07-10,16,0,C20,-221.454821,0.0 +2020-07-10,16,0,C21,-145.755419,0.0 +2020-07-10,16,0,C22,-40.326945,0.0 +2020-07-10,16,0,C23,-60.347574,0.0 +2020-07-10,16,0,C24,-145.385537,0.0 +2020-07-10,16,0,C25-1,-79.196273,0.0 +2020-07-10,16,0,C25-2,-79.196273,0.0 +2020-07-10,16,0,C26,66.252446,0.0 +2020-07-10,16,0,C27,-12.848355,0.0 +2020-07-10,16,0,C28,-143.81398,0.0 +2020-07-10,16,0,C29,79.876974,0.0 +2020-07-10,16,0,C30,-72.025329,0.0 +2020-07-10,16,0,C31-1,-84.357063,0.0 +2020-07-10,16,0,C31-2,-84.357063,0.0 +2020-07-10,16,0,C32-1,-128.717937,0.0 +2020-07-10,16,0,C32-2,-128.717937,0.0 +2020-07-10,16,0,C33-1,-134.672639,0.0 +2020-07-10,16,0,C33-2,-134.672639,0.0 +2020-07-10,16,0,C34,-95.406671,0.0 +2020-07-10,16,0,CA-1,-285.427643,0.0 +2020-07-10,16,0,CB-1,-0.923213,0.0 +2020-07-10,16,0,C35,-285.427643,0.0 +2020-07-10,17,0,A1,-156.739079,0.0 +2020-07-10,17,0,A2,97.347828,0.0 +2020-07-10,17,0,A3,175.0,0.0 +2020-07-10,17,0,A4,142.030049,0.0 +2020-07-10,17,0,A5,133.590849,0.0 +2020-07-10,17,0,A6,50.201276,0.0 +2020-07-10,17,0,A7,-61.272199,0.0 +2020-07-10,17,0,A8,102.604563,0.0 +2020-07-10,17,0,A9,128.921493,0.0 +2020-07-10,17,0,A10,45.327793,0.0 +2020-07-10,17,0,A11,0.654922,0.0 +2020-07-10,17,0,AB1,155.573025,0.0 +2020-07-10,17,0,A12-1,-54.269772,0.0 +2020-07-10,17,0,A13-2,-56.053119,0.0 +2020-07-10,17,0,A14,-3.427301,0.0 +2020-07-10,17,0,A15,-11.610417,0.0 +2020-07-10,17,0,A16,-0.026716,0.0 +2020-07-10,17,0,A17,-8.330764,0.0 +2020-07-10,17,0,A18,52.409901,0.0 +2020-07-10,17,0,A19,-55.863918,0.0 +2020-07-10,17,0,A20,67.159967,0.0 +2020-07-10,17,0,A21,-87.101148,0.0 +2020-07-10,17,0,A22,-134.16655,0.0 +2020-07-10,17,0,AB2,115.253258,0.0 +2020-07-10,17,0,A23,-181.768572,0.0 +2020-07-10,17,0,A24,59.824326,0.0 +2020-07-10,17,0,A25-1,-101.413662,0.0 +2020-07-10,17,0,A25-2,-101.413662,0.0 +2020-07-10,17,0,A26,61.272199,0.0 +2020-07-10,17,0,A27,-183.856478,0.0 +2020-07-10,17,0,A28,152.012926,0.0 +2020-07-10,17,0,A29,-59.104579,0.0 +2020-07-10,17,0,A30,-124.751899,0.0 +2020-07-10,17,0,A31-1,-14.559634,0.0 +2020-07-10,17,0,A31-2,-14.559634,0.0 +2020-07-10,17,0,A32-1,21.472591,0.0 +2020-07-10,17,0,A32-2,21.472591,0.0 +2020-07-10,17,0,A33-1,-20.062965,0.0 +2020-07-10,17,0,A33-2,-20.062965,0.0 +2020-07-10,17,0,A34,-174.896101,0.0 +2020-07-10,17,0,AB3,212.606373,0.0 +2020-07-10,17,0,B1,34.452822,0.0 +2020-07-10,17,0,B2,-61.649553,0.0 +2020-07-10,17,0,B3,65.833574,0.0 +2020-07-10,17,0,B4,29.773041,0.0 +2020-07-10,17,0,B5,49.500834,0.0 +2020-07-10,17,0,B6,120.102338,0.0 +2020-07-10,17,0,B7,-168.284129,0.0 +2020-07-10,17,0,B8,-28.648012,0.0 +2020-07-10,17,0,B9,9.780942,0.0 +2020-07-10,17,0,B10,-57.867587,0.0 +2020-07-10,17,0,B11,-98.684211,0.0 +2020-07-10,17,0,B12-1,-132.516209,0.0 +2020-07-10,17,0,B13-2,-101.168001,0.0 +2020-07-10,17,0,B14,-82.182798,0.0 +2020-07-10,17,0,B15,-97.03698,0.0 +2020-07-10,17,0,B16,-144.064156,0.0 +2020-07-10,17,0,B17,-159.137859,0.0 +2020-07-10,17,0,B18,-40.775127,0.0 +2020-07-10,17,0,B19,-185.471827,0.0 +2020-07-10,17,0,B20,-14.000463,0.0 +2020-07-10,17,0,B21,-242.174375,0.0 +2020-07-10,17,0,B22,-262.286117,0.0 +2020-07-10,17,0,B23,-338.629722,0.0 +2020-07-10,17,0,B24,147.731283,0.0 +2020-07-10,17,0,B25-1,-128.762656,0.0 +2020-07-10,17,0,B25-2,-128.762656,0.0 +2020-07-10,17,0,B26,168.284129,0.0 +2020-07-10,17,0,B27,-272.886323,0.0 +2020-07-10,17,0,B28,158.040516,0.0 +2020-07-10,17,0,B29,62.662001,0.0 +2020-07-10,17,0,B30,-122.941951,0.0 +2020-07-10,17,0,B31-1,-100.116368,0.0 +2020-07-10,17,0,B31-2,-100.116368,0.0 +2020-07-10,17,0,B32-1,7.57289,0.0 +2020-07-10,17,0,B32-2,7.57289,0.0 +2020-07-10,17,0,B33-1,-42.953426,0.0 +2020-07-10,17,0,B33-2,-42.953426,0.0 +2020-07-10,17,0,B34,-164.458049,0.0 +2020-07-10,17,0,C1,19.001767,0.0 +2020-07-10,17,0,C2,-62.99907,0.0 +2020-07-10,17,0,C3,-32.068127,0.0 +2020-07-10,17,0,C4,-32.038057,0.0 +2020-07-10,17,0,C5,-17.278201,0.0 +2020-07-10,17,0,C6,6.198918,0.0 +2020-07-10,17,0,C7,-182.173704,0.0 +2020-07-10,17,0,C8,-84.156962,0.0 +2020-07-10,17,0,C9,-82.074103,0.0 +2020-07-10,17,0,C10,-113.064297,0.0 +2020-07-10,17,0,C11,-88.038691,0.0 +2020-07-10,17,0,C12-1,-104.887267,0.0 +2020-07-10,17,0,C13-2,-89.088354,0.0 +2020-07-10,17,0,C14,-136.651674,0.0 +2020-07-10,17,0,C15,-169.047804,0.0 +2020-07-10,17,0,C16,-169.246111,0.0 +2020-07-10,17,0,C17,-202.121002,0.0 +2020-07-10,17,0,C18,-220.865929,0.0 +2020-07-10,17,0,C19,-85.031856,0.0 +2020-07-10,17,0,C20,-162.471905,0.0 +2020-07-10,17,0,C21,-174.1969,0.0 +2020-07-10,17,0,C22,-104.579861,0.0 +2020-07-10,17,0,C23,-128.767905,0.0 +2020-07-10,17,0,C24,-95.112547,0.0 +2020-07-10,17,0,C25-1,-113.163639,0.0 +2020-07-10,17,0,C25-2,-113.163639,0.0 +2020-07-10,17,0,C26,98.173704,0.0 +2020-07-10,17,0,C27,-79.570303,0.0 +2020-07-10,17,0,C28,-90.741102,0.0 +2020-07-10,17,0,C29,10.535345,0.0 +2020-07-10,17,0,C30,-74.305648,0.0 +2020-07-10,17,0,C31-1,-77.183537,0.0 +2020-07-10,17,0,C31-2,-77.183537,0.0 +2020-07-10,17,0,C32-1,-96.710564,0.0 +2020-07-10,17,0,C32-2,-96.710564,0.0 +2020-07-10,17,0,C33-1,-117.086374,0.0 +2020-07-10,17,0,C33-2,-117.086374,0.0 +2020-07-10,17,0,C34,-87.394352,0.0 +2020-07-10,17,0,CA-1,-342.949508,0.0 +2020-07-10,17,0,CB-1,-69.632656,0.0 +2020-07-10,17,0,C35,-342.949508,0.0 +2020-07-10,18,0,A1,-175.0,0.0 +2020-07-10,18,0,A2,103.414475,0.0 +2020-07-10,18,0,A3,172.134506,0.0 +2020-07-10,18,0,A4,144.794971,0.0 +2020-07-10,18,0,A5,132.219177,0.0 +2020-07-10,18,0,A6,41.933212,0.0 +2020-07-10,18,0,A7,-45.9371,0.0 +2020-07-10,18,0,A8,104.534088,0.0 +2020-07-10,18,0,A9,129.763929,0.0 +2020-07-10,18,0,A10,51.058636,0.0 +2020-07-10,18,0,A11,12.091903,0.0 +2020-07-10,18,0,AB1,164.343274,0.0 +2020-07-10,18,0,A12-1,-42.675203,0.0 +2020-07-10,18,0,A13-2,-47.28034,0.0 +2020-07-10,18,0,A14,4.58781,0.0 +2020-07-10,18,0,A15,-5.230233,0.0 +2020-07-10,18,0,A16,13.567734,0.0 +2020-07-10,18,0,A17,3.604597,0.0 +2020-07-10,18,0,A18,58.094038,0.0 +2020-07-10,18,0,A19,-39.938495,0.0 +2020-07-10,18,0,A20,75.791059,0.0 +2020-07-10,18,0,A21,-77.416695,0.0 +2020-07-10,18,0,A22,-128.130922,0.0 +2020-07-10,18,0,AB2,119.972318,0.0 +2020-07-10,18,0,A23,-155.711621,0.0 +2020-07-10,18,0,A24,48.700791,0.0 +2020-07-10,18,0,A25-1,-64.406783,0.0 +2020-07-10,18,0,A25-2,-64.406783,0.0 +2020-07-10,18,0,A26,45.9371,0.0 +2020-07-10,18,0,A27,-135.655207,0.0 +2020-07-10,18,0,A28,123.967508,0.0 +2020-07-10,18,0,A29,-32.940696,0.0 +2020-07-10,18,0,A30,-102.714511,0.0 +2020-07-10,18,0,A31-1,0.167666,0.0 +2020-07-10,18,0,A31-2,0.167666,0.0 +2020-07-10,18,0,A32-1,7.976188,0.0 +2020-07-10,18,0,A32-2,7.976188,0.0 +2020-07-10,18,0,A33-1,-30.217008,0.0 +2020-07-10,18,0,A33-2,-30.217008,0.0 +2020-07-10,18,0,A34,-151.885489,0.0 +2020-07-10,18,0,AB3,208.018367,0.0 +2020-07-10,18,0,B1,33.759639,0.0 +2020-07-10,18,0,B2,-58.417953,0.0 +2020-07-10,18,0,B3,68.181913,0.0 +2020-07-10,18,0,B4,32.174482,0.0 +2020-07-10,18,0,B5,50.779972,0.0 +2020-07-10,18,0,B6,121.868523,0.0 +2020-07-10,18,0,B7,-149.932205,0.0 +2020-07-10,18,0,B8,-22.909885,0.0 +2020-07-10,18,0,B9,15.330695,0.0 +2020-07-10,18,0,B10,-50.456163,0.0 +2020-07-10,18,0,B11,-93.047918,0.0 +2020-07-10,18,0,B12-1,-125.224486,0.0 +2020-07-10,18,0,B13-2,-95.112985,0.0 +2020-07-10,18,0,B14,-72.998137,0.0 +2020-07-10,18,0,B15,-83.534797,0.0 +2020-07-10,18,0,B16,-132.350416,0.0 +2020-07-10,18,0,B17,-143.04279,0.0 +2020-07-10,18,0,B18,-28.910621,0.0 +2020-07-10,18,0,B19,-176.437931,0.0 +2020-07-10,18,0,B20,-9.918292,0.0 +2020-07-10,18,0,B21,-216.659294,0.0 +2020-07-10,18,0,B22,-236.0905,0.0 +2020-07-10,18,0,B23,-320.8483,0.0 +2020-07-10,18,0,B24,142.694535,0.0 +2020-07-10,18,0,B25-1,-132.436471,0.0 +2020-07-10,18,0,B25-2,-132.436471,0.0 +2020-07-10,18,0,B26,149.932205,0.0 +2020-07-10,18,0,B27,-276.06777,0.0 +2020-07-10,18,0,B28,178.47567,0.0 +2020-07-10,18,0,B29,55.000124,0.0 +2020-07-10,18,0,B30,-123.049527,0.0 +2020-07-10,18,0,B31-1,-96.439765,0.0 +2020-07-10,18,0,B31-2,-96.439765,0.0 +2020-07-10,18,0,B32-1,21.871142,0.0 +2020-07-10,18,0,B32-2,21.871142,0.0 +2020-07-10,18,0,B33-1,-25.769392,0.0 +2020-07-10,18,0,B33-2,-25.769392,0.0 +2020-07-10,18,0,B34,-164.452473,0.0 +2020-07-10,18,0,C1,19.899384,0.0 +2020-07-10,18,0,C2,-65.122366,0.0 +2020-07-10,18,0,C3,-25.797464,0.0 +2020-07-10,18,0,C4,-30.469339,0.0 +2020-07-10,18,0,C5,-13.41816,0.0 +2020-07-10,18,0,C6,16.135537,0.0 +2020-07-10,18,0,C7,-184.625315,0.0 +2020-07-10,18,0,C8,-79.131497,0.0 +2020-07-10,18,0,C9,-72.486832,0.0 +2020-07-10,18,0,C10,-102.851315,0.0 +2020-07-10,18,0,C11,-82.199591,0.0 +2020-07-10,18,0,C12-1,-106.569966,0.0 +2020-07-10,18,0,C13-2,-86.878665,0.0 +2020-07-10,18,0,C14,-123.540907,0.0 +2020-07-10,18,0,C15,-159.804446,0.0 +2020-07-10,18,0,C16,-163.474361,0.0 +2020-07-10,18,0,C17,-200.273814,0.0 +2020-07-10,18,0,C18,-196.271427,0.0 +2020-07-10,18,0,C19,-90.74384,0.0 +2020-07-10,18,0,C20,-130.906399,0.0 +2020-07-10,18,0,C21,-216.571861,0.0 +2020-07-10,18,0,C22,-169.240959,0.0 +2020-07-10,18,0,C23,-195.417606,0.0 +2020-07-10,18,0,C24,-72.814101,0.0 +2020-07-10,18,0,C25-1,-136.384688,0.0 +2020-07-10,18,0,C25-2,-136.384688,0.0 +2020-07-10,18,0,C26,137.125315,0.0 +2020-07-10,18,0,C27,-129.494334,0.0 +2020-07-10,18,0,C28,-80.497045,0.0 +2020-07-10,18,0,C29,-46.50628,0.0 +2020-07-10,18,0,C30,-77.588054,0.0 +2020-07-10,18,0,C31-1,-54.887285,0.0 +2020-07-10,18,0,C31-2,-54.887285,0.0 +2020-07-10,18,0,C32-1,-99.761027,0.0 +2020-07-10,18,0,C32-2,-99.761027,0.0 +2020-07-10,18,0,C33-1,-134.647217,0.0 +2020-07-10,18,0,C33-2,-134.647217,0.0 +2020-07-10,18,0,C34,-89.243946,0.0 +2020-07-10,18,0,CA-1,-423.407255,0.0 +2020-07-10,18,0,CB-1,-155.711421,0.0 +2020-07-10,18,0,C35,-423.407255,0.0 +2020-07-10,19,0,A1,-175.0,0.0 +2020-07-10,19,0,A2,106.923882,0.0 +2020-07-10,19,0,A3,173.124246,0.0 +2020-07-10,19,0,A4,148.13519,0.0 +2020-07-10,19,0,A5,132.783591,0.0 +2020-07-10,19,0,A6,39.683916,0.0 +2020-07-10,19,0,A7,-37.679819,0.0 +2020-07-10,19,0,A8,105.0015,0.0 +2020-07-10,19,0,A9,131.739219,0.0 +2020-07-10,19,0,A10,53.510864,0.0 +2020-07-10,19,0,A11,26.686627,0.0 +2020-07-10,19,0,AB1,175.0,0.0 +2020-07-10,19,0,A12-1,-33.539909,0.0 +2020-07-10,19,0,A13-2,-39.447261,0.0 +2020-07-10,19,0,A14,9.723185,0.0 +2020-07-10,19,0,A15,-0.583026,0.0 +2020-07-10,19,0,A16,21.29912,0.0 +2020-07-10,19,0,A17,10.840601,0.0 +2020-07-10,19,0,A18,64.553961,0.0 +2020-07-10,19,0,A19,-33.531656,0.0 +2020-07-10,19,0,A20,83.130905,0.0 +2020-07-10,19,0,A21,-72.87333,0.0 +2020-07-10,19,0,A22,-127.114902,0.0 +2020-07-10,19,0,AB2,120.334528,0.0 +2020-07-10,19,0,A23,-146.611869,0.0 +2020-07-10,19,0,A24,39.831654,0.0 +2020-07-10,19,0,A25-1,-53.643437,0.0 +2020-07-10,19,0,A25-2,-53.643437,0.0 +2020-07-10,19,0,A26,37.679819,0.0 +2020-07-10,19,0,A27,-124.685878,0.0 +2020-07-10,19,0,A28,114.616893,0.0 +2020-07-10,19,0,A29,-34.345428,0.0 +2020-07-10,19,0,A30,-90.340449,0.0 +2020-07-10,19,0,A31-1,16.038548,0.0 +2020-07-10,19,0,A31-2,16.038548,0.0 +2020-07-10,19,0,A32-1,4.557109,0.0 +2020-07-10,19,0,A32-2,4.557109,0.0 +2020-07-10,19,0,A33-1,-32.747703,0.0 +2020-07-10,19,0,A33-2,-32.747703,0.0 +2020-07-10,19,0,A34,-138.557551,0.0 +2020-07-10,19,0,AB3,208.51636,0.0 +2020-07-10,19,0,B1,19.851464,0.0 +2020-07-10,19,0,B2,-53.603192,0.0 +2020-07-10,19,0,B3,76.807423,0.0 +2020-07-10,19,0,B4,39.865074,0.0 +2020-07-10,19,0,B5,57.451486,0.0 +2020-07-10,19,0,B6,126.593483,0.0 +2020-07-10,19,0,B7,-139.270517,0.0 +2020-07-10,19,0,B8,-15.254172,0.0 +2020-07-10,19,0,B9,23.922741,0.0 +2020-07-10,19,0,B10,-43.848749,0.0 +2020-07-10,19,0,B11,-93.106834,0.0 +2020-07-10,19,0,B12-1,-125.024798,0.0 +2020-07-10,19,0,B13-2,-95.452185,0.0 +2020-07-10,19,0,B14,-67.516899,0.0 +2020-07-10,19,0,B15,-76.518156,0.0 +2020-07-10,19,0,B16,-125.745287,0.0 +2020-07-10,19,0,B17,-134.879568,0.0 +2020-07-10,19,0,B18,-22.247964,0.0 +2020-07-10,19,0,B19,-171.014222,0.0 +2020-07-10,19,0,B20,-6.023198,0.0 +2020-07-10,19,0,B21,-205.374526,0.0 +2020-07-10,19,0,B22,-225.65765,0.0 +2020-07-10,19,0,B23,-315.516029,0.0 +2020-07-10,19,0,B24,149.48768,0.0 +2020-07-10,19,0,B25-1,-131.0213,0.0 +2020-07-10,19,0,B25-2,-131.0213,0.0 +2020-07-10,19,0,B26,139.270517,0.0 +2020-07-10,19,0,B27,-276.737153,0.0 +2020-07-10,19,0,B28,191.223337,0.0 +2020-07-10,19,0,B29,54.011393,0.0 +2020-07-10,19,0,B30,-122.232187,0.0 +2020-07-10,19,0,B31-1,-97.012607,0.0 +2020-07-10,19,0,B31-2,-97.012607,0.0 +2020-07-10,19,0,B32-1,28.20232,0.0 +2020-07-10,19,0,B32-2,28.20232,0.0 +2020-07-10,19,0,B33-1,-19.468379,0.0 +2020-07-10,19,0,B33-2,-19.468379,0.0 +2020-07-10,19,0,B34,-162.767813,0.0 +2020-07-10,19,0,C1,19.01233,0.0 +2020-07-10,19,0,C2,-64.707532,0.0 +2020-07-10,19,0,C3,-22.930152,0.0 +2020-07-10,19,0,C4,-31.035464,0.0 +2020-07-10,19,0,C5,-11.58794,0.0 +2020-07-10,19,0,C6,15.630905,0.0 +2020-07-10,19,0,C7,-178.614026,0.0 +2020-07-10,19,0,C8,-78.05654,0.0 +2020-07-10,19,0,C9,-68.044968,0.0 +2020-07-10,19,0,C10,-98.005053,0.0 +2020-07-10,19,0,C11,-79.427493,0.0 +2020-07-10,19,0,C12-1,-105.72758,0.0 +2020-07-10,19,0,C13-2,-82.356723,0.0 +2020-07-10,19,0,C14,-121.267025,0.0 +2020-07-10,19,0,C15,-156.484681,0.0 +2020-07-10,19,0,C16,-168.28776,0.0 +2020-07-10,19,0,C17,-204.025873,0.0 +2020-07-10,19,0,C18,-189.856853,0.0 +2020-07-10,19,0,C19,-99.697932,0.0 +2020-07-10,19,0,C20,-126.377029,0.0 +2020-07-10,19,0,C21,-234.133525,0.0 +2020-07-10,19,0,C22,-191.320167,0.0 +2020-07-10,19,0,C23,-222.969401,0.0 +2020-07-10,19,0,C24,-85.75835,0.0 +2020-07-10,19,0,C25-1,-147.141899,0.0 +2020-07-10,19,0,C25-2,-147.141899,0.0 +2020-07-10,19,0,C26,178.614026,0.0 +2020-07-10,19,0,C27,-144.020428,0.0 +2020-07-10,19,0,C28,-73.249317,0.0 +2020-07-10,19,0,C29,-63.970404,0.0 +2020-07-10,19,0,C30,-75.150023,0.0 +2020-07-10,19,0,C31-1,-42.767089,0.0 +2020-07-10,19,0,C31-2,-42.767089,0.0 +2020-07-10,19,0,C32-1,-94.130164,0.0 +2020-07-10,19,0,C32-2,-94.130164,0.0 +2020-07-10,19,0,C33-1,-134.79704,0.0 +2020-07-10,19,0,C33-2,-134.79704,0.0 +2020-07-10,19,0,C34,-86.517977,0.0 +2020-07-10,19,0,CA-1,-463.347772,0.0 +2020-07-10,19,0,CB-1,-190.031067,0.0 +2020-07-10,19,0,C35,-463.347772,0.0 +2020-07-10,20,0,A1,-175.0,0.0 +2020-07-10,20,0,A2,101.458656,0.0 +2020-07-10,20,0,A3,163.990315,0.0 +2020-07-10,20,0,A4,140.838379,0.0 +2020-07-10,20,0,A5,126.432863,0.0 +2020-07-10,20,0,A6,36.04881,0.0 +2020-07-10,20,0,A7,-37.175204,0.0 +2020-07-10,20,0,A8,98.664525,0.0 +2020-07-10,20,0,A9,123.526212,0.0 +2020-07-10,20,0,A10,48.924159,0.0 +2020-07-10,20,0,A11,38.829589,0.0 +2020-07-10,20,0,AB1,175.0,0.0 +2020-07-10,20,0,A12-1,-26.621888,0.0 +2020-07-10,20,0,A13-2,-32.00432,0.0 +2020-07-10,20,0,A14,9.718874,0.0 +2020-07-10,20,0,A15,-1.362892,0.0 +2020-07-10,20,0,A16,20.278892,0.0 +2020-07-10,20,0,A17,9.033355,0.0 +2020-07-10,20,0,A18,60.27562,0.0 +2020-07-10,20,0,A19,-30.277853,0.0 +2020-07-10,20,0,A20,80.250504,0.0 +2020-07-10,20,0,A21,-72.580041,0.0 +2020-07-10,20,0,A22,-125.198715,0.0 +2020-07-10,20,0,AB2,114.696849,0.0 +2020-07-10,20,0,A23,-140.84174,0.0 +2020-07-10,20,0,A24,38.354196,0.0 +2020-07-10,20,0,A25-1,-50.596535,0.0 +2020-07-10,20,0,A25-2,-50.596535,0.0 +2020-07-10,20,0,A26,37.175204,0.0 +2020-07-10,20,0,A27,-107.859258,0.0 +2020-07-10,20,0,A28,103.38002,0.0 +2020-07-10,20,0,A29,-46.971543,0.0 +2020-07-10,20,0,A30,-60.887716,0.0 +2020-07-10,20,0,A31-1,12.718876,0.0 +2020-07-10,20,0,A31-2,12.718876,0.0 +2020-07-10,20,0,A32-1,0.112527,0.0 +2020-07-10,20,0,A32-2,0.112527,0.0 +2020-07-10,20,0,A33-1,-36.362158,0.0 +2020-07-10,20,0,A33-2,-36.362158,0.0 +2020-07-10,20,0,A34,-89.210284,0.0 +2020-07-10,20,0,AB3,203.496929,0.0 +2020-07-10,20,0,B1,23.99795,0.0 +2020-07-10,20,0,B2,-55.063942,0.0 +2020-07-10,20,0,B3,69.68389,0.0 +2020-07-10,20,0,B4,34.502089,0.0 +2020-07-10,20,0,B5,52.122084,0.0 +2020-07-10,20,0,B6,121.089784,0.0 +2020-07-10,20,0,B7,-130.13723,0.0 +2020-07-10,20,0,B8,-18.524463,0.0 +2020-07-10,20,0,B9,18.807064,0.0 +2020-07-10,20,0,B10,-45.332118,0.0 +2020-07-10,20,0,B11,-89.571877,0.0 +2020-07-10,20,0,B12-1,-120.559042,0.0 +2020-07-10,20,0,B13-2,-91.547164,0.0 +2020-07-10,20,0,B14,-65.906585,0.0 +2020-07-10,20,0,B15,-77.487764,0.0 +2020-07-10,20,0,B16,-123.026009,0.0 +2020-07-10,20,0,B17,-134.778338,0.0 +2020-07-10,20,0,B18,-27.937907,0.0 +2020-07-10,20,0,B19,-160.994687,0.0 +2020-07-10,20,0,B20,-7.062832,0.0 +2020-07-10,20,0,B21,-205.203271,0.0 +2020-07-10,20,0,B22,-224.893119,0.0 +2020-07-10,20,0,B23,-300.010241,0.0 +2020-07-10,20,0,B24,123.982449,0.0 +2020-07-10,20,0,B25-1,-123.276555,0.0 +2020-07-10,20,0,B25-2,-123.276555,0.0 +2020-07-10,20,0,B26,130.13723,0.0 +2020-07-10,20,0,B27,-251.672337,0.0 +2020-07-10,20,0,B28,158.987042,0.0 +2020-07-10,20,0,B29,55.454858,0.0 +2020-07-10,20,0,B30,-103.630266,0.0 +2020-07-10,20,0,B31-1,-91.582312,0.0 +2020-07-10,20,0,B31-2,-91.582312,0.0 +2020-07-10,20,0,B32-1,14.643482,0.0 +2020-07-10,20,0,B32-2,14.643482,0.0 +2020-07-10,20,0,B33-1,-31.217319,0.0 +2020-07-10,20,0,B33-2,-31.217319,0.0 +2020-07-10,20,0,B34,-136.417734,0.0 +2020-07-10,20,0,C1,17.014643,0.0 +2020-07-10,20,0,C2,-59.214882,0.0 +2020-07-10,20,0,C3,-22.756036,0.0 +2020-07-10,20,0,C4,-29.692373,0.0 +2020-07-10,20,0,C5,-11.633343,0.0 +2020-07-10,20,0,C6,10.461101,0.0 +2020-07-10,20,0,C7,-173.436442,0.0 +2020-07-10,20,0,C8,-74.19945,0.0 +2020-07-10,20,0,C9,-65.458773,0.0 +2020-07-10,20,0,C10,-93.430135,0.0 +2020-07-10,20,0,C11,-75.180874,0.0 +2020-07-10,20,0,C12-1,-99.78638,0.0 +2020-07-10,20,0,C13-2,-78.241931,0.0 +2020-07-10,20,0,C14,-117.116121,0.0 +2020-07-10,20,0,C15,-149.961832,0.0 +2020-07-10,20,0,C16,-160.540944,0.0 +2020-07-10,20,0,C17,-193.872059,0.0 +2020-07-10,20,0,C18,-184.131807,0.0 +2020-07-10,20,0,C19,-93.525259,0.0 +2020-07-10,20,0,C20,-124.927413,0.0 +2020-07-10,20,0,C21,-218.906478,0.0 +2020-07-10,20,0,C22,-175.142673,0.0 +2020-07-10,20,0,C23,-210.205976,0.0 +2020-07-10,20,0,C24,-83.079014,0.0 +2020-07-10,20,0,C25-1,-140.508063,0.0 +2020-07-10,20,0,C25-2,-140.508063,0.0 +2020-07-10,20,0,C26,173.436442,0.0 +2020-07-10,20,0,C27,-133.170996,0.0 +2020-07-10,20,0,C28,-65.258693,0.0 +2020-07-10,20,0,C29,-58.649575,0.0 +2020-07-10,20,0,C30,-70.421422,0.0 +2020-07-10,20,0,C31-1,-45.731226,0.0 +2020-07-10,20,0,C31-2,-45.731226,0.0 +2020-07-10,20,0,C32-1,-87.0603,0.0 +2020-07-10,20,0,C32-2,-87.0603,0.0 +2020-07-10,20,0,C33-1,-125.552907,0.0 +2020-07-10,20,0,C33-2,-125.552907,0.0 +2020-07-10,20,0,C34,-79.178578,0.0 +2020-07-10,20,0,CA-1,-413.454966,0.0 +2020-07-10,20,0,CB-1,-167.468972,0.0 +2020-07-10,20,0,C35,-413.454966,0.0 +2020-07-10,21,0,A1,-175.0,0.0 +2020-07-10,21,0,A2,104.072044,0.0 +2020-07-10,21,0,A3,165.223098,0.0 +2020-07-10,21,0,A4,142.302832,0.0 +2020-07-10,21,0,A5,126.987553,0.0 +2020-07-10,21,0,A6,36.560903,0.0 +2020-07-10,21,0,A7,-28.663623,0.0 +2020-07-10,21,0,A8,102.764318,0.0 +2020-07-10,21,0,A9,127.287496,0.0 +2020-07-10,21,0,A10,54.322176,0.0 +2020-07-10,21,0,A11,16.369261,0.0 +2020-07-10,21,0,AB1,158.127664,0.0 +2020-07-10,21,0,A12-1,-34.272062,0.0 +2020-07-10,21,0,A13-2,-40.724703,0.0 +2020-07-10,21,0,A14,11.443191,0.0 +2020-07-10,21,0,A15,0.106726,0.0 +2020-07-10,21,0,A16,24.099821,0.0 +2020-07-10,21,0,A17,12.595821,0.0 +2020-07-10,21,0,A18,60.683561,0.0 +2020-07-10,21,0,A19,-25.140549,0.0 +2020-07-10,21,0,A20,81.11754,0.0 +2020-07-10,21,0,A21,-68.414994,0.0 +2020-07-10,21,0,A22,-121.033291,0.0 +2020-07-10,21,0,AB2,121.243767,0.0 +2020-07-10,21,0,A23,-128.795572,0.0 +2020-07-10,21,0,A24,36.490556,0.0 +2020-07-10,21,0,A25-1,-39.764312,0.0 +2020-07-10,21,0,A25-2,-39.764312,0.0 +2020-07-10,21,0,A26,28.663623,0.0 +2020-07-10,21,0,A27,-79.402808,0.0 +2020-07-10,21,0,A28,88.667368,0.0 +2020-07-10,21,0,A29,-44.570914,0.0 +2020-07-10,21,0,A30,-34.831894,0.0 +2020-07-10,21,0,A31-1,4.602887,0.0 +2020-07-10,21,0,A31-2,4.602887,0.0 +2020-07-10,21,0,A32-1,-4.02085,0.0 +2020-07-10,21,0,A32-2,-4.02085,0.0 +2020-07-10,21,0,A33-1,-38.216322,0.0 +2020-07-10,21,0,A33-2,-38.216322,0.0 +2020-07-10,21,0,A34,-46.368106,0.0 +2020-07-10,21,0,AB3,208.119072,0.0 +2020-07-10,21,0,B1,21.47527,0.0 +2020-07-10,21,0,B2,-51.720884,0.0 +2020-07-10,21,0,B3,62.271557,0.0 +2020-07-10,21,0,B4,30.252634,0.0 +2020-07-10,21,0,B5,46.879038,0.0 +2020-07-10,21,0,B6,109.126119,0.0 +2020-07-10,21,0,B7,-124.717767,0.0 +2020-07-10,21,0,B8,-19.902275,0.0 +2020-07-10,21,0,B9,14.149954,0.0 +2020-07-10,21,0,B10,-45.297553,0.0 +2020-07-10,21,0,B11,-84.721131,0.0 +2020-07-10,21,0,B12-1,-113.841263,0.0 +2020-07-10,21,0,B13-2,-86.778375,0.0 +2020-07-10,21,0,B14,-64.732383,0.0 +2020-07-10,21,0,B15,-78.49462,0.0 +2020-07-10,21,0,B16,-118.062659,0.0 +2020-07-10,21,0,B17,-132.02828,0.0 +2020-07-10,21,0,B18,-33.071625,0.0 +2020-07-10,21,0,B19,-149.723418,0.0 +2020-07-10,21,0,B20,-8.265192,0.0 +2020-07-10,21,0,B21,-202.257708,0.0 +2020-07-10,21,0,B22,-220.945615,0.0 +2020-07-10,21,0,B23,-281.210613,0.0 +2020-07-10,21,0,B24,95.547846,0.0 +2020-07-10,21,0,B25-1,-113.099817,0.0 +2020-07-10,21,0,B25-2,-113.099817,0.0 +2020-07-10,21,0,B26,124.717767,0.0 +2020-07-10,21,0,B27,-224.872344,0.0 +2020-07-10,21,0,B28,126.432671,0.0 +2020-07-10,21,0,B29,59.797731,0.0 +2020-07-10,21,0,B30,-76.551003,0.0 +2020-07-10,21,0,B31-1,-82.949681,0.0 +2020-07-10,21,0,B31-2,-82.949681,0.0 +2020-07-10,21,0,B32-1,1.878237,0.0 +2020-07-10,21,0,B32-2,1.878237,0.0 +2020-07-10,21,0,B33-1,-41.498982,0.0 +2020-07-10,21,0,B33-2,-41.498982,0.0 +2020-07-10,21,0,B34,-98.798997,0.0 +2020-07-10,21,0,C1,16.273171,0.0 +2020-07-10,21,0,C2,-56.51503,0.0 +2020-07-10,21,0,C3,-21.775757,0.0 +2020-07-10,21,0,C4,-28.285572,0.0 +2020-07-10,21,0,C5,-11.142263,0.0 +2020-07-10,21,0,C6,10.077304,0.0 +2020-07-10,21,0,C7,-164.455026,0.0 +2020-07-10,21,0,C8,-70.779124,0.0 +2020-07-10,21,0,C9,-62.546597,0.0 +2020-07-10,21,0,C10,-89.23852,0.0 +2020-07-10,21,0,C11,-71.779648,0.0 +2020-07-10,21,0,C12-1,-95.200534,0.0 +2020-07-10,21,0,C13-2,-74.773672,0.0 +2020-07-10,21,0,C14,-112.13937,0.0 +2020-07-10,21,0,C15,-143.554491,0.0 +2020-07-10,21,0,C16,-153.327828,0.0 +2020-07-10,21,0,C17,-185.207211,0.0 +2020-07-10,21,0,C18,-179.639881,0.0 +2020-07-10,21,0,C19,-85.827316,0.0 +2020-07-10,21,0,C20,-123.014126,0.0 +2020-07-10,21,0,C21,-205.747576,0.0 +2020-07-10,21,0,C22,-161.52686,0.0 +2020-07-10,21,0,C23,-197.22933,0.0 +2020-07-10,21,0,C24,-68.898823,0.0 +2020-07-10,21,0,C25-1,-138.794695,0.0 +2020-07-10,21,0,C25-2,-138.794695,0.0 +2020-07-10,21,0,C26,164.455026,0.0 +2020-07-10,21,0,C27,-136.520341,0.0 +2020-07-10,21,0,C28,-63.03153,0.0 +2020-07-10,21,0,C29,-59.023767,0.0 +2020-07-10,21,0,C30,-72.096573,0.0 +2020-07-10,21,0,C31-1,-48.223018,0.0 +2020-07-10,21,0,C31-2,-48.223018,0.0 +2020-07-10,21,0,C32-1,-83.48423,0.0 +2020-07-10,21,0,C32-2,-83.48423,0.0 +2020-07-10,21,0,C33-1,-120.235409,0.0 +2020-07-10,21,0,C33-2,-120.235409,0.0 +2020-07-10,21,0,C34,-80.735427,0.0 +2020-07-10,21,0,CA-1,-376.045255,0.0 +2020-07-10,21,0,CB-1,-153.798712,0.0 +2020-07-10,21,0,C35,-376.045255,0.0 +2020-07-10,22,0,A1,-175.0,0.0 +2020-07-10,22,0,A2,107.685402,0.0 +2020-07-10,22,0,A3,167.864376,0.0 +2020-07-10,22,0,A4,144.990908,0.0 +2020-07-10,22,0,A5,128.324845,0.0 +2020-07-10,22,0,A6,39.117439,0.0 +2020-07-10,22,0,A7,-17.182407,0.0 +2020-07-10,22,0,A8,109.737978,0.0 +2020-07-10,22,0,A9,134.040619,0.0 +2020-07-10,22,0,A10,63.535676,0.0 +2020-07-10,22,0,A11,3.285429,0.0 +2020-07-10,22,0,AB1,168.865703,0.0 +2020-07-10,22,0,A12-1,-35.111291,0.0 +2020-07-10,22,0,A13-2,-43.066131,0.0 +2020-07-10,22,0,A14,19.157724,0.0 +2020-07-10,22,0,A15,11.217987,0.0 +2020-07-10,22,0,A16,34.835502,0.0 +2020-07-10,22,0,A17,26.778428,0.0 +2020-07-10,22,0,A18,80.755057,0.0 +2020-07-10,22,0,A19,-26.761831,0.0 +2020-07-10,22,0,A20,95.066434,0.0 +2020-07-10,22,0,A21,-57.070019,0.0 +2020-07-10,22,0,A22,-116.080237,0.0 +2020-07-10,22,0,AB2,165.658128,0.0 +2020-07-10,22,0,A23,-119.181674,0.0 +2020-07-10,22,0,A24,30.308413,0.0 +2020-07-10,22,0,A25-1,-37.253374,0.0 +2020-07-10,22,0,A25-2,-37.253374,0.0 +2020-07-10,22,0,A26,17.182407,0.0 +2020-07-10,22,0,A27,-79.23024,0.0 +2020-07-10,22,0,A28,97.717885,0.0 +2020-07-10,22,0,A29,-45.573175,0.0 +2020-07-10,22,0,A30,-33.657064,0.0 +2020-07-10,22,0,A31-1,13.74432,0.0 +2020-07-10,22,0,A31-2,13.74432,0.0 +2020-07-10,22,0,A32-1,5.745562,0.0 +2020-07-10,22,0,A32-2,5.745562,0.0 +2020-07-10,22,0,A33-1,-24.743458,0.0 +2020-07-10,22,0,A33-2,-24.743458,0.0 +2020-07-10,22,0,A34,-47.842936,0.0 +2020-07-10,22,0,AB3,251.362827,0.0 +2020-07-10,22,0,B1,9.046596,0.0 +2020-07-10,22,0,B2,-54.810971,0.0 +2020-07-10,22,0,B3,56.139559,0.0 +2020-07-10,22,0,B4,26.332179,0.0 +2020-07-10,22,0,B5,42.988416,0.0 +2020-07-10,22,0,B6,108.611353,0.0 +2020-07-10,22,0,B7,-107.986314,0.0 +2020-07-10,22,0,B8,-20.300029,0.0 +2020-07-10,22,0,B9,11.397847,0.0 +2020-07-10,22,0,B10,-42.714019,0.0 +2020-07-10,22,0,B11,-78.770621,0.0 +2020-07-10,22,0,B12-1,-106.643921,0.0 +2020-07-10,22,0,B13-2,-79.884909,0.0 +2020-07-10,22,0,B14,-58.12145,0.0 +2020-07-10,22,0,B15,-70.490015,0.0 +2020-07-10,22,0,B16,-110.765949,0.0 +2020-07-10,22,0,B17,-123.317301,0.0 +2020-07-10,22,0,B18,-29.602328,0.0 +2020-07-10,22,0,B19,-139.285071,0.0 +2020-07-10,22,0,B20,-7.30799,0.0 +2020-07-10,22,0,B21,-186.499325,0.0 +2020-07-10,22,0,B22,-203.904034,0.0 +2020-07-10,22,0,B23,-261.537074,0.0 +2020-07-10,22,0,B24,84.566133,0.0 +2020-07-10,22,0,B25-1,-86.728806,0.0 +2020-07-10,22,0,B25-2,-86.728806,0.0 +2020-07-10,22,0,B26,107.986314,0.0 +2020-07-10,22,0,B27,-206.158281,0.0 +2020-07-10,22,0,B28,121.170843,0.0 +2020-07-10,22,0,B29,88.917173,0.0 +2020-07-10,22,0,B30,-43.712627,0.0 +2020-07-10,22,0,B31-1,-60.46388,0.0 +2020-07-10,22,0,B31-2,-60.46388,0.0 +2020-07-10,22,0,B32-1,3.555492,0.0 +2020-07-10,22,0,B32-2,3.555492,0.0 +2020-07-10,22,0,B33-1,-36.775065,0.0 +2020-07-10,22,0,B33-2,-36.775065,0.0 +2020-07-10,22,0,B34,-62.685373,0.0 +2020-07-10,22,0,C1,14.61742,0.0 +2020-07-10,22,0,C2,-50.643783,0.0 +2020-07-10,22,0,C3,-19.16269,0.0 +2020-07-10,22,0,C4,-25.174868,0.0 +2020-07-10,22,0,C5,-9.775657,0.0 +2020-07-10,22,0,C6,9.599636,0.0 +2020-07-10,22,0,C7,-147.425174,0.0 +2020-07-10,22,0,C8,-62.98959,0.0 +2020-07-10,22,0,C9,-55.444383,0.0 +2020-07-10,22,0,C10,-79.272984,0.0 +2020-07-10,22,0,C11,-63.876219,0.0 +2020-07-10,22,0,C12-1,-84.828071,0.0 +2020-07-10,22,0,C13-2,-66.430815,0.0 +2020-07-10,22,0,C14,-98.684235,0.0 +2020-07-10,22,0,C15,-127.560497,0.0 +2020-07-10,22,0,C16,-135.746039,0.0 +2020-07-10,22,0,C17,-165.049044,0.0 +2020-07-10,22,0,C18,-153.088311,0.0 +2020-07-10,22,0,C19,-81.341962,0.0 +2020-07-10,22,0,C20,-101.038848,0.0 +2020-07-10,22,0,C21,-191.570694,0.0 +2020-07-10,22,0,C22,-157.844743,0.0 +2020-07-10,22,0,C23,-180.477854,0.0 +2020-07-10,22,0,C24,-72.045866,0.0 +2020-07-10,22,0,C25-1,-118.6847,0.0 +2020-07-10,22,0,C25-2,-118.6847,0.0 +2020-07-10,22,0,C26,147.425174,0.0 +2020-07-10,22,0,C27,-116.117318,0.0 +2020-07-10,22,0,C28,-63.507377,0.0 +2020-07-10,22,0,C29,-47.853616,0.0 +2020-07-10,22,0,C30,-63.563701,0.0 +2020-07-10,22,0,C31-1,-34.68345,0.0 +2020-07-10,22,0,C31-2,-34.68345,0.0 +2020-07-10,22,0,C32-1,-78.000071,0.0 +2020-07-10,22,0,C32-2,-78.000071,0.0 +2020-07-10,22,0,C33-1,-110.704695,0.0 +2020-07-10,22,0,C33-2,-110.704695,0.0 +2020-07-10,22,0,C34,-75.036299,0.0 +2020-07-10,22,0,CA-1,-400.824827,0.0 +2020-07-10,22,0,CB-1,-148.652965,0.0 +2020-07-10,22,0,C35,-400.824827,0.0 +2020-07-10,23,0,A1,-175.0,0.0 +2020-07-10,23,0,A2,105.959172,0.0 +2020-07-10,23,0,A3,167.944003,0.0 +2020-07-10,23,0,A4,144.673073,0.0 +2020-07-10,23,0,A5,128.50271,0.0 +2020-07-10,23,0,A6,40.575246,0.0 +2020-07-10,23,0,A7,-23.110783,0.0 +2020-07-10,23,0,A8,108.291915,0.0 +2020-07-10,23,0,A9,133.037756,0.0 +2020-07-10,23,0,A10,61.640041,0.0 +2020-07-10,23,0,A11,13.267937,0.0 +2020-07-10,23,0,AB1,156.977404,0.0 +2020-07-10,23,0,A12-1,-31.754725,0.0 +2020-07-10,23,0,A13-2,-39.047311,0.0 +2020-07-10,23,0,A14,18.57359,0.0 +2020-07-10,23,0,A15,12.502322,0.0 +2020-07-10,23,0,A16,32.961104,0.0 +2020-07-10,23,0,A17,26.800113,0.0 +2020-07-10,23,0,A18,80.863201,0.0 +2020-07-10,23,0,A19,-29.328507,0.0 +2020-07-10,23,0,A20,91.806661,0.0 +2020-07-10,23,0,A21,-52.504225,0.0 +2020-07-10,23,0,A22,-109.191144,0.0 +2020-07-10,23,0,AB2,151.577128,0.0 +2020-07-10,23,0,A23,-124.706139,0.0 +2020-07-10,23,0,A24,59.892227,0.0 +2020-07-10,23,0,A25-1,-57.426013,0.0 +2020-07-10,23,0,A25-2,-57.426013,0.0 +2020-07-10,23,0,A26,23.110783,0.0 +2020-07-10,23,0,A27,-108.90478,0.0 +2020-07-10,23,0,A28,118.927141,0.0 +2020-07-10,23,0,A29,-69.789646,0.0 +2020-07-10,23,0,A30,-39.115134,0.0 +2020-07-10,23,0,A31-1,-0.902429,0.0 +2020-07-10,23,0,A31-2,-0.902429,0.0 +2020-07-10,23,0,A32-1,14.970397,0.0 +2020-07-10,23,0,A32-2,14.970397,0.0 +2020-07-10,23,0,A33-1,-16.494388,0.0 +2020-07-10,23,0,A33-2,-16.494388,0.0 +2020-07-10,23,0,A34,-45.684866,0.0 +2020-07-10,23,0,AB3,234.073279,0.0 +2020-07-10,23,0,B1,-5.079664,0.0 +2020-07-10,23,0,B2,-50.813016,0.0 +2020-07-10,23,0,B3,47.932428,0.0 +2020-07-10,23,0,B4,22.385903,0.0 +2020-07-10,23,0,B5,37.74606,0.0 +2020-07-10,23,0,B6,95.492248,0.0 +2020-07-10,23,0,B7,-93.594946,0.0 +2020-07-10,23,0,B8,-20.479455,0.0 +2020-07-10,23,0,B9,6.804856,0.0 +2020-07-10,23,0,B10,-41.033516,0.0 +2020-07-10,23,0,B11,-72.407698,0.0 +2020-07-10,23,0,B12-1,-97.946026,0.0 +2020-07-10,23,0,B13-2,-73.515404,0.0 +2020-07-10,23,0,B14,-53.846193,0.0 +2020-07-10,23,0,B15,-70.457818,0.0 +2020-07-10,23,0,B16,-101.921478,0.0 +2020-07-10,23,0,B17,-118.778595,0.0 +2020-07-10,23,0,B18,-37.453622,0.0 +2020-07-10,23,0,B19,-118.314049,0.0 +2020-07-10,23,0,B20,-7.511168,0.0 +2020-07-10,23,0,B21,-181.725245,0.0 +2020-07-10,23,0,B22,-198.469111,0.0 +2020-07-10,23,0,B23,-230.690797,0.0 +2020-07-10,23,0,B24,57.158828,0.0 +2020-07-10,23,0,B25-1,-77.451284,0.0 +2020-07-10,23,0,B25-2,-77.451284,0.0 +2020-07-10,23,0,B26,93.594946,0.0 +2020-07-10,23,0,B27,-173.776602,0.0 +2020-07-10,23,0,B28,66.318475,0.0 +2020-07-10,23,0,B29,83.666743,0.0 +2020-07-10,23,0,B30,-23.370066,0.0 +2020-07-10,23,0,B31-1,-54.613683,0.0 +2020-07-10,23,0,B31-2,-54.613683,0.0 +2020-07-10,23,0,B32-1,-19.263936,0.0 +2020-07-10,23,0,B32-2,-19.263936,0.0 +2020-07-10,23,0,B33-1,-56.336678,0.0 +2020-07-10,23,0,B33-2,-56.336678,0.0 +2020-07-10,23,0,B34,-32.429934,0.0 +2020-07-10,23,0,C1,13.153887,0.0 +2020-07-10,23,0,C2,-45.666936,0.0 +2020-07-10,23,0,C3,-17.49513,0.0 +2020-07-10,23,0,C4,-22.818144,0.0 +2020-07-10,23,0,C5,-8.942722,0.0 +2020-07-10,23,0,C6,8.280175,0.0 +2020-07-10,23,0,C7,-130.494076,0.0 +2020-07-10,23,0,C8,-57.083007,0.0 +2020-07-10,23,0,C9,-50.370877,0.0 +2020-07-10,23,0,C10,-71.915984,0.0 +2020-07-10,23,0,C11,-57.879836,0.0 +2020-07-10,23,0,C12-1,-76.804452,0.0 +2020-07-10,23,0,C13-2,-60.255001,0.0 +2020-07-10,23,0,C14,-89.940323,0.0 +2020-07-10,23,0,C15,-115.798731,0.0 +2020-07-10,23,0,C16,-123.296928,0.0 +2020-07-10,23,0,C17,-149.537479,0.0 +2020-07-10,23,0,C18,-144.306032,0.0 +2020-07-10,23,0,C19,-68.93122,0.0 +2020-07-10,23,0,C20,-97.696252,0.0 +2020-07-10,23,0,C21,-167.639958,0.0 +2020-07-10,23,0,C22,-133.007538,0.0 +2020-07-10,23,0,C23,-158.760726,0.0 +2020-07-10,23,0,C24,-67.451359,0.0 +2020-07-10,23,0,C25-1,-104.912991,0.0 +2020-07-10,23,0,C25-2,-104.912991,0.0 +2020-07-10,23,0,C26,130.494076,0.0 +2020-07-10,23,0,C27,-93.214422,0.0 +2020-07-10,23,0,C28,-55.301531,0.0 +2020-07-10,23,0,C29,-30.693102,0.0 +2020-07-10,23,0,C30,-57.621321,0.0 +2020-07-10,23,0,C31-1,-43.876349,0.0 +2020-07-10,23,0,C31-2,-43.876349,0.0 +2020-07-10,23,0,C32-1,-69.555767,0.0 +2020-07-10,23,0,C32-2,-69.555767,0.0 +2020-07-10,23,0,C33-1,-99.190243,0.0 +2020-07-10,23,0,C33-2,-99.190243,0.0 +2020-07-10,23,0,C34,-65.878679,0.0 +2020-07-10,23,0,CA-1,-329.027982,0.0 +2020-07-10,23,0,CB-1,-97.132289,0.0 +2020-07-10,23,0,C35,-329.027982,0.0 +2020-07-11,0,0,A1,-175.0,0.0 +2020-07-11,0,0,A2,109.019968,0.0 +2020-07-11,0,0,A3,170.818353,0.0 +2020-07-11,0,0,A4,147.429332,0.0 +2020-07-11,0,0,A5,130.023321,0.0 +2020-07-11,0,0,A6,44.052573,0.0 +2020-07-11,0,0,A7,-13.635404,0.0 +2020-07-11,0,0,A8,115.114848,0.0 +2020-07-11,0,0,A9,139.813915,0.0 +2020-07-11,0,0,A10,70.63454,0.0 +2020-07-11,0,0,A11,-23.114156,0.0 +2020-07-11,0,0,AB1,138.528879,0.0 +2020-07-11,0,0,A12-1,-44.583453,0.0 +2020-07-11,0,0,A13-2,-53.203362,0.0 +2020-07-11,0,0,A14,20.950691,0.0 +2020-07-11,0,0,A15,17.213889,0.0 +2020-07-11,0,0,A16,37.942043,0.0 +2020-07-11,0,0,A17,34.150018,0.0 +2020-07-11,0,0,A18,88.220097,0.0 +2020-07-11,0,0,A19,-29.327363,0.0 +2020-07-11,0,0,A20,94.955682,0.0 +2020-07-11,0,0,A21,-43.591775,0.0 +2020-07-11,0,0,A22,-100.991666,0.0 +2020-07-11,0,0,AB2,168.446657,0.0 +2020-07-11,0,0,A23,-114.043713,0.0 +2020-07-11,0,0,A24,56.833952,0.0 +2020-07-11,0,0,A25-1,-42.44881,0.0 +2020-07-11,0,0,A25-2,-42.44881,0.0 +2020-07-11,0,0,A26,13.635404,0.0 +2020-07-11,0,0,A27,-96.761139,0.0 +2020-07-11,0,0,A28,119.883157,0.0 +2020-07-11,0,0,A29,-61.188219,0.0 +2020-07-11,0,0,A30,-35.57292,0.0 +2020-07-11,0,0,A31-1,12.548301,0.0 +2020-07-11,0,0,A31-2,12.548301,0.0 +2020-07-11,0,0,A32-1,20.421838,0.0 +2020-07-11,0,0,A32-2,20.421838,0.0 +2020-07-11,0,0,A33-1,-7.525824,0.0 +2020-07-11,0,0,A33-2,-7.525824,0.0 +2020-07-11,0,0,A34,-47.12908,0.0 +2020-07-11,0,0,AB3,244.364912,0.0 +2020-07-11,0,0,B1,-7.71481,0.0 +2020-07-11,0,0,B2,-43.678301,0.0 +2020-07-11,0,0,B3,47.826615,0.0 +2020-07-11,0,0,B4,23.904202,0.0 +2020-07-11,0,0,B5,37.493949,0.0 +2020-07-11,0,0,B6,88.080005,0.0 +2020-07-11,0,0,B7,-90.256922,0.0 +2020-07-11,0,0,B8,-15.984878,0.0 +2020-07-11,0,0,B9,9.554659,0.0 +2020-07-11,0,0,B10,-35.815713,0.0 +2020-07-11,0,0,B11,-67.380204,0.0 +2020-07-11,0,0,B12-1,-90.810505,0.0 +2020-07-11,0,0,B13-2,-68.745819,0.0 +2020-07-11,0,0,B14,-49.81359,0.0 +2020-07-11,0,0,B15,-63.234074,0.0 +2020-07-11,0,0,B16,-93.250588,0.0 +2020-07-11,0,0,B17,-106.869404,0.0 +2020-07-11,0,0,B18,-30.35928,0.0 +2020-07-11,0,0,B19,-112.704898,0.0 +2020-07-11,0,0,B20,-6.168858,0.0 +2020-07-11,0,0,B21,-163.93462,0.0 +2020-07-11,0,0,B22,-179.374171,0.0 +2020-07-11,0,0,B23,-217.278975,0.0 +2020-07-11,0,0,B24,59.249918,0.0 +2020-07-11,0,0,B25-1,-61.94319,0.0 +2020-07-11,0,0,B25-2,-61.94319,0.0 +2020-07-11,0,0,B26,90.256922,0.0 +2020-07-11,0,0,B27,-167.077667,0.0 +2020-07-11,0,0,B28,79.144447,0.0 +2020-07-11,0,0,B29,97.595023,0.0 +2020-07-11,0,0,B30,-20.307778,0.0 +2020-07-11,0,0,B31-1,-40.95292,0.0 +2020-07-11,0,0,B31-2,-40.95292,0.0 +2020-07-11,0,0,B32-1,-9.211045,0.0 +2020-07-11,0,0,B32-2,-9.211045,0.0 +2020-07-11,0,0,B33-1,-43.709709,0.0 +2020-07-11,0,0,B33-2,-43.709709,0.0 +2020-07-11,0,0,B34,-35.792222,0.0 +2020-07-11,0,0,C1,12.936484,0.0 +2020-07-11,0,0,C2,-43.879941,0.0 +2020-07-11,0,0,C3,-15.361671,0.0 +2020-07-11,0,0,C4,-20.902983,0.0 +2020-07-11,0,0,C5,-7.749397,0.0 +2020-07-11,0,0,C6,11.021178,0.0 +2020-07-11,0,0,C7,-126.176331,0.0 +2020-07-11,0,0,C8,-52.63057,0.0 +2020-07-11,0,0,C9,-45.803005,0.0 +2020-07-11,0,0,C10,-66.059558,0.0 +2020-07-11,0,0,C11,-53.593897,0.0 +2020-07-11,0,0,C12-1,-71.36651,0.0 +2020-07-11,0,0,C13-2,-55.543839,0.0 +2020-07-11,0,0,C14,-84.16582,0.0 +2020-07-11,0,0,C15,-102.841539,0.0 +2020-07-11,0,0,C16,-116.030583,0.0 +2020-07-11,0,0,C17,-134.982298,0.0 +2020-07-11,0,0,C18,-129.002401,0.0 +2020-07-11,0,0,C19,-71.194003,0.0 +2020-07-11,0,0,C20,-95.339418,0.0 +2020-07-11,0,0,C21,-142.484419,0.0 +2020-07-11,0,0,C22,-106.260881,0.0 +2020-07-11,0,0,C23,-154.371732,0.0 +2020-07-11,0,0,C24,-44.095512,0.0 +2020-07-11,0,0,C25-1,-108.997471,0.0 +2020-07-11,0,0,C25-2,-108.997471,0.0 +2020-07-11,0,0,C26,126.176331,0.0 +2020-07-11,0,0,C27,-111.243713,0.0 +2020-07-11,0,0,C28,-6.098649,0.0 +2020-07-11,0,0,C29,-47.277865,0.0 +2020-07-11,0,0,C30,-58.965849,0.0 +2020-07-11,0,0,C31-1,-39.885605,0.0 +2020-07-11,0,0,C31-2,-39.885605,0.0 +2020-07-11,0,0,C32-1,-41.851306,0.0 +2020-07-11,0,0,C32-2,-41.851306,0.0 +2020-07-11,0,0,C33-1,-69.291382,0.0 +2020-07-11,0,0,C33-2,-69.291382,0.0 +2020-07-11,0,0,C34,-66.066151,0.0 +2020-07-11,0,0,CA-1,-387.328063,0.0 +2020-07-11,0,0,CB-1,-110.280799,0.0 +2020-07-11,0,0,C35,-387.328063,0.0 +2020-07-11,1,0,A1,-175.0,0.0 +2020-07-11,1,0,A2,110.119231,0.0 +2020-07-11,1,0,A3,169.583921,0.0 +2020-07-11,1,0,A4,146.765026,0.0 +2020-07-11,1,0,A5,129.189354,0.0 +2020-07-11,1,0,A6,40.732982,0.0 +2020-07-11,1,0,A7,-9.441832,0.0 +2020-07-11,1,0,A8,114.357926,0.0 +2020-07-11,1,0,A9,138.490622,0.0 +2020-07-11,1,0,A10,69.63036,0.0 +2020-07-11,1,0,A11,-14.202747,0.0 +2020-07-11,1,0,AB1,129.461025,0.0 +2020-07-11,1,0,A12-1,-40.058122,0.0 +2020-07-11,1,0,A13-2,-49.031302,0.0 +2020-07-11,1,0,A14,21.554546,0.0 +2020-07-11,1,0,A15,16.839828,0.0 +2020-07-11,1,0,A16,39.238494,0.0 +2020-07-11,1,0,A17,34.4541,0.0 +2020-07-11,1,0,A18,81.493734,0.0 +2020-07-11,1,0,A19,-20.700695,0.0 +2020-07-11,1,0,A20,89.992013,0.0 +2020-07-11,1,0,A21,-38.698085,0.0 +2020-07-11,1,0,A22,-92.796906,0.0 +2020-07-11,1,0,AB2,148.230202,0.0 +2020-07-11,1,0,A23,-105.659848,0.0 +2020-07-11,1,0,A24,53.22058,0.0 +2020-07-11,1,0,A25-1,-38.74371,0.0 +2020-07-11,1,0,A25-2,-38.74371,0.0 +2020-07-11,1,0,A26,9.441832,0.0 +2020-07-11,1,0,A27,-83.632384,0.0 +2020-07-11,1,0,A28,111.399737,0.0 +2020-07-11,1,0,A29,-47.964097,0.0 +2020-07-11,1,0,A30,-35.668287,0.0 +2020-07-11,1,0,A31-1,1.644142,0.0 +2020-07-11,1,0,A31-2,1.644142,0.0 +2020-07-11,1,0,A32-1,16.066862,0.0 +2020-07-11,1,0,A32-2,16.066862,0.0 +2020-07-11,1,0,A33-1,-11.9609,0.0 +2020-07-11,1,0,A33-2,-11.9609,0.0 +2020-07-11,1,0,A34,-45.829713,0.0 +2020-07-11,1,0,AB3,217.583208,0.0 +2020-07-11,1,0,B1,-9.412454,0.0 +2020-07-11,1,0,B2,-38.315465,0.0 +2020-07-11,1,0,B3,48.12282,0.0 +2020-07-11,1,0,B4,25.294906,0.0 +2020-07-11,1,0,B5,37.529718,0.0 +2020-07-11,1,0,B6,83.153913,0.0 +2020-07-11,1,0,B7,-83.238518,0.0 +2020-07-11,1,0,B8,-12.210829,0.0 +2020-07-11,1,0,B9,12.137588,0.0 +2020-07-11,1,0,B10,-31.39974,0.0 +2020-07-11,1,0,B11,-63.354281,0.0 +2020-07-11,1,0,B12-1,-85.156302,0.0 +2020-07-11,1,0,B13-2,-64.866636,0.0 +2020-07-11,1,0,B14,-45.563916,0.0 +2020-07-11,1,0,B15,-57.345295,0.0 +2020-07-11,1,0,B16,-85.50299,0.0 +2020-07-11,1,0,B17,-97.458477,0.0 +2020-07-11,1,0,B18,-25.886016,0.0 +2020-07-11,1,0,B19,-105.18089,0.0 +2020-07-11,1,0,B20,-4.650081,0.0 +2020-07-11,1,0,B21,-150.153691,0.0 +2020-07-11,1,0,B22,-164.847174,0.0 +2020-07-11,1,0,B23,-203.506734,0.0 +2020-07-11,1,0,B24,56.114693,0.0 +2020-07-11,1,0,B25-1,-61.145233,0.0 +2020-07-11,1,0,B25-2,-61.145233,0.0 +2020-07-11,1,0,B26,83.238518,0.0 +2020-07-11,1,0,B27,-155.514937,0.0 +2020-07-11,1,0,B28,81.439471,0.0 +2020-07-11,1,0,B29,84.718802,0.0 +2020-07-11,1,0,B30,-22.650531,0.0 +2020-07-11,1,0,B31-1,-42.028502,0.0 +2020-07-11,1,0,B31-2,-42.028502,0.0 +2020-07-11,1,0,B32-1,-5.148764,0.0 +2020-07-11,1,0,B32-2,-5.148764,0.0 +2020-07-11,1,0,B33-1,-37.586156,0.0 +2020-07-11,1,0,B33-2,-37.586156,0.0 +2020-07-11,1,0,B34,-36.347469,0.0 +2020-07-11,1,0,C1,11.410614,0.0 +2020-07-11,1,0,C2,-39.692912,0.0 +2020-07-11,1,0,C3,-15.118143,0.0 +2020-07-11,1,0,C4,-19.85326,0.0 +2020-07-11,1,0,C5,-7.716151,0.0 +2020-07-11,1,0,C6,7.194678,0.0 +2020-07-11,1,0,C7,-114.621657,0.0 +2020-07-11,1,0,C8,-49.590599,0.0 +2020-07-11,1,0,C9,-43.649914,0.0 +2020-07-11,1,0,C10,-62.368558,0.0 +2020-07-11,1,0,C11,-50.231991,0.0 +2020-07-11,1,0,C12-1,-66.725596,0.0 +2020-07-11,1,0,C13-2,-52.223759,0.0 +2020-07-11,1,0,C14,-79.442681,0.0 +2020-07-11,1,0,C15,-98.403623,0.0 +2020-07-11,1,0,C16,-108.681492,0.0 +2020-07-11,1,0,C17,-127.922645,0.0 +2020-07-11,1,0,C18,-127.82397,0.0 +2020-07-11,1,0,C19,-60.300203,0.0 +2020-07-11,1,0,C20,-93.646872,0.0 +2020-07-11,1,0,C21,-132.679397,0.0 +2020-07-11,1,0,C22,-96.262662,0.0 +2020-07-11,1,0,C23,-138.260254,0.0 +2020-07-11,1,0,C24,-57.306413,0.0 +2020-07-11,1,0,C25-1,-92.351787,0.0 +2020-07-11,1,0,C25-2,-92.351787,0.0 +2020-07-11,1,0,C26,114.621657,0.0 +2020-07-11,1,0,C27,-93.237225,0.0 +2020-07-11,1,0,C28,-18.515035,0.0 +2020-07-11,1,0,C29,-39.813891,0.0 +2020-07-11,1,0,C30,-48.623333,0.0 +2020-07-11,1,0,C31-1,-21.902547,0.0 +2020-07-11,1,0,C31-2,-21.902547,0.0 +2020-07-11,1,0,C32-1,-45.625479,0.0 +2020-07-11,1,0,C32-2,-45.625479,0.0 +2020-07-11,1,0,C33-1,-71.344259,0.0 +2020-07-11,1,0,C33-2,-71.344259,0.0 +2020-07-11,1,0,C34,-58.508667,0.0 +2020-07-11,1,0,CA-1,-371.630576,0.0 +2020-07-11,1,0,CB-1,-129.826823,0.0 +2020-07-11,1,0,C35,-371.630576,0.0 +2020-07-11,2,0,A1,-175.0,0.0 +2020-07-11,2,0,A2,112.879578,0.0 +2020-07-11,2,0,A3,170.780337,0.0 +2020-07-11,2,0,A4,148.21937,0.0 +2020-07-11,2,0,A5,129.710888,0.0 +2020-07-11,2,0,A6,41.031101,0.0 +2020-07-11,2,0,A7,-0.384996,0.0 +2020-07-11,2,0,A8,118.523386,0.0 +2020-07-11,2,0,A9,142.288245,0.0 +2020-07-11,2,0,A10,75.134486,0.0 +2020-07-11,2,0,A11,-16.53901,0.0 +2020-07-11,2,0,AB1,136.376875,0.0 +2020-07-11,2,0,A12-1,-37.54223,0.0 +2020-07-11,2,0,A13-2,-47.61858,0.0 +2020-07-11,2,0,A14,26.819546,0.0 +2020-07-11,2,0,A15,24.965723,0.0 +2020-07-11,2,0,A16,46.71622,0.0 +2020-07-11,2,0,A17,44.835001,0.0 +2020-07-11,2,0,A18,88.880297,0.0 +2020-07-11,2,0,A19,-15.34453,0.0 +2020-07-11,2,0,A20,92.221813,0.0 +2020-07-11,2,0,A21,-22.421089,0.0 +2020-07-11,2,0,A22,-75.879226,0.0 +2020-07-11,2,0,AB2,150.63761,0.0 +2020-07-11,2,0,A23,-93.196163,0.0 +2020-07-11,2,0,A24,65.466403,0.0 +2020-07-11,2,0,A25-1,-50.031286,0.0 +2020-07-11,2,0,A25-2,-50.031286,0.0 +2020-07-11,2,0,A26,0.384996,0.0 +2020-07-11,2,0,A27,-97.535573,0.0 +2020-07-11,2,0,A28,122.676105,0.0 +2020-07-11,2,0,A29,-55.604516,0.0 +2020-07-11,2,0,A30,-41.931058,0.0 +2020-07-11,2,0,A31-1,-9.618221,0.0 +2020-07-11,2,0,A31-2,-9.618221,0.0 +2020-07-11,2,0,A32-1,25.020667,0.0 +2020-07-11,2,0,A32-2,25.020667,0.0 +2020-07-11,2,0,A33-1,-0.662346,0.0 +2020-07-11,2,0,A33-2,-0.662346,0.0 +2020-07-11,2,0,A34,-49.620942,0.0 +2020-07-11,2,0,AB3,203.374994,0.0 +2020-07-11,2,0,B1,-0.65245,0.0 +2020-07-11,2,0,B2,-48.535764,0.0 +2020-07-11,2,0,B3,35.568347,0.0 +2020-07-11,2,0,B4,14.256162,0.0 +2020-07-11,2,0,B5,28.311498,0.0 +2020-07-11,2,0,B6,82.066849,0.0 +2020-07-11,2,0,B7,-82.147183,0.0 +2020-07-11,2,0,B8,-21.889321,0.0 +2020-07-11,2,0,B9,0.888221,0.0 +2020-07-11,2,0,B10,-38.118038,0.0 +2020-07-11,2,0,B11,-61.056559,0.0 +2020-07-11,2,0,B12-1,-83.12904,0.0 +2020-07-11,2,0,B13-2,-61.452893,0.0 +2020-07-11,2,0,B14,-47.034211,0.0 +2020-07-11,2,0,B15,-61.396485,0.0 +2020-07-11,2,0,B16,-89.678209,0.0 +2020-07-11,2,0,B17,-104.252733,0.0 +2020-07-11,2,0,B18,-33.895668,0.0 +2020-07-11,2,0,B19,-102.816752,0.0 +2020-07-11,2,0,B20,-8.007669,0.0 +2020-07-11,2,0,B21,-157.641549,0.0 +2020-07-11,2,0,B22,-171.343242,0.0 +2020-07-11,2,0,B23,-197.576533,0.0 +2020-07-11,2,0,B24,58.632845,0.0 +2020-07-11,2,0,B25-1,-58.791426,0.0 +2020-07-11,2,0,B25-2,-58.791426,0.0 +2020-07-11,2,0,B26,82.147183,0.0 +2020-07-11,2,0,B27,-147.935469,0.0 +2020-07-11,2,0,B28,53.146533,0.0 +2020-07-11,2,0,B29,77.159064,0.0 +2020-07-11,2,0,B30,-21.719538,0.0 +2020-07-11,2,0,B31-1,-42.747805,0.0 +2020-07-11,2,0,B31-2,-42.747805,0.0 +2020-07-11,2,0,B32-1,-17.631682,0.0 +2020-07-11,2,0,B32-2,-17.631682,0.0 +2020-07-11,2,0,B33-1,-48.892641,0.0 +2020-07-11,2,0,B33-2,-48.892641,0.0 +2020-07-11,2,0,B34,-33.078462,0.0 +2020-07-11,2,0,C1,11.390317,0.0 +2020-07-11,2,0,C2,-38.793444,0.0 +2020-07-11,2,0,C3,-13.823045,0.0 +2020-07-11,2,0,C4,-18.644478,0.0 +2020-07-11,2,0,C5,-6.992414,0.0 +2020-07-11,2,0,C6,9.245885,0.0 +2020-07-11,2,0,C7,-106.349615,0.0 +2020-07-11,2,0,C8,-46.89204,0.0 +2020-07-11,2,0,C9,-40.925435,0.0 +2020-07-11,2,0,C10,-58.906853,0.0 +2020-07-11,2,0,C11,-47.715477,0.0 +2020-07-11,2,0,C12-1,-63.491365,0.0 +2020-07-11,2,0,C13-2,-49.498884,0.0 +2020-07-11,2,0,C14,-75.128957,0.0 +2020-07-11,2,0,C15,-92.01023,0.0 +2020-07-11,2,0,C16,-103.318283,0.0 +2020-07-11,2,0,C17,-120.449033,0.0 +2020-07-11,2,0,C18,-122.336102,0.0 +2020-07-11,2,0,C19,-56.111138,0.0 +2020-07-11,2,0,C20,-91.907608,0.0 +2020-07-11,2,0,C21,-120.551655,0.0 +2020-07-11,2,0,C22,-83.700521,0.0 +2020-07-11,2,0,C23,-130.165557,0.0 +2020-07-11,2,0,C24,-49.34027,0.0 +2020-07-11,2,0,C25-1,-89.007897,0.0 +2020-07-11,2,0,C25-2,-89.007897,0.0 +2020-07-11,2,0,C26,106.349615,0.0 +2020-07-11,2,0,C27,-90.100104,0.0 +2020-07-11,2,0,C28,-8.117095,0.0 +2020-07-11,2,0,C29,-27.389124,0.0 +2020-07-11,2,0,C30,-56.110981,0.0 +2020-07-11,2,0,C31-1,-30.636613,0.0 +2020-07-11,2,0,C31-2,-30.636613,0.0 +2020-07-11,2,0,C32-1,-38.604552,0.0 +2020-07-11,2,0,C32-2,-38.604552,0.0 +2020-07-11,2,0,C33-1,-63.034876,0.0 +2020-07-11,2,0,C33-2,-63.034876,0.0 +2020-07-11,2,0,C34,-69.289019,0.0 +2020-07-11,2,0,CA-1,-330.321928,0.0 +2020-07-11,2,0,CB-1,-93.229928,0.0 +2020-07-11,2,0,C35,-330.321928,0.0 +2020-07-11,3,0,A1,-175.0,0.0 +2020-07-11,3,0,A2,113.119363,0.0 +2020-07-11,3,0,A3,170.749451,0.0 +2020-07-11,3,0,A4,148.249071,0.0 +2020-07-11,3,0,A5,129.674111,0.0 +2020-07-11,3,0,A6,40.788685,0.0 +2020-07-11,3,0,A7,0.445366,0.0 +2020-07-11,3,0,A8,118.696221,0.0 +2020-07-11,3,0,A9,142.394689,0.0 +2020-07-11,3,0,A10,75.360765,0.0 +2020-07-11,3,0,A11,-17.761119,0.0 +2020-07-11,3,0,AB1,137.840764,0.0 +2020-07-11,3,0,A12-1,-37.942436,0.0 +2020-07-11,3,0,A13-2,-48.109728,0.0 +2020-07-11,3,0,A14,26.841588,0.0 +2020-07-11,3,0,A15,24.812385,0.0 +2020-07-11,3,0,A16,46.914582,0.0 +2020-07-11,3,0,A17,44.85539,0.0 +2020-07-11,3,0,A18,88.308171,0.0 +2020-07-11,3,0,A19,-14.552001,0.0 +2020-07-11,3,0,A20,91.96581,0.0 +2020-07-11,3,0,A21,-22.298035,0.0 +2020-07-11,3,0,A22,-75.600785,0.0 +2020-07-11,3,0,AB2,150.043612,0.0 +2020-07-11,3,0,A23,-92.028391,0.0 +2020-07-11,3,0,A24,63.188095,0.0 +2020-07-11,3,0,A25-1,-48.170375,0.0 +2020-07-11,3,0,A25-2,-48.170375,0.0 +2020-07-11,3,0,A26,-0.445366,0.0 +2020-07-11,3,0,A27,-96.249003,0.0 +2020-07-11,3,0,A28,120.472422,0.0 +2020-07-11,3,0,A29,-52.341859,0.0 +2020-07-11,3,0,A30,-43.907144,0.0 +2020-07-11,3,0,A31-1,-7.664842,0.0 +2020-07-11,3,0,A31-2,-7.664842,0.0 +2020-07-11,3,0,A32-1,24.093874,0.0 +2020-07-11,3,0,A32-2,24.093874,0.0 +2020-07-11,3,0,A33-1,-1.465348,0.0 +2020-07-11,3,0,A33-2,-1.465348,0.0 +2020-07-11,3,0,A34,-54.090856,0.0 +2020-07-11,3,0,AB3,202.170485,0.0 +2020-07-11,3,0,B1,15.277334,0.0 +2020-07-11,3,0,B2,-55.225317,0.0 +2020-07-11,3,0,B3,28.172249,0.0 +2020-07-11,3,0,B4,6.994359,0.0 +2020-07-11,3,0,B5,22.259409,0.0 +2020-07-11,3,0,B6,82.610103,0.0 +2020-07-11,3,0,B7,-85.399212,0.0 +2020-07-11,3,0,B8,-28.116403,0.0 +2020-07-11,3,0,B9,-5.515104,0.0 +2020-07-11,3,0,B10,-42.268478,0.0 +2020-07-11,3,0,B11,-59.30872,0.0 +2020-07-11,3,0,B12-1,-81.528347,0.0 +2020-07-11,3,0,B13-2,-58.914701,0.0 +2020-07-11,3,0,B14,-48.492184,0.0 +2020-07-11,3,0,B15,-61.574671,0.0 +2020-07-11,3,0,B16,-92.972031,0.0 +2020-07-11,3,0,B17,-106.247855,0.0 +2020-07-11,3,0,B18,-33.889402,0.0 +2020-07-11,3,0,B19,-107.574813,0.0 +2020-07-11,3,0,B20,-10.308219,0.0 +2020-07-11,3,0,B21,-157.514307,0.0 +2020-07-11,3,0,B22,-169.932106,0.0 +2020-07-11,3,0,B23,-199.621946,0.0 +2020-07-11,3,0,B24,62.418671,0.0 +2020-07-11,3,0,B25-1,-59.890092,0.0 +2020-07-11,3,0,B25-2,-59.890092,0.0 +2020-07-11,3,0,B26,85.399212,0.0 +2020-07-11,3,0,B27,-151.193873,0.0 +2020-07-11,3,0,B28,59.543623,0.0 +2020-07-11,3,0,B29,73.677347,0.0 +2020-07-11,3,0,B30,-22.700735,0.0 +2020-07-11,3,0,B31-1,-42.160541,0.0 +2020-07-11,3,0,B31-2,-42.160541,0.0 +2020-07-11,3,0,B32-1,-13.167702,0.0 +2020-07-11,3,0,B32-2,-13.167702,0.0 +2020-07-11,3,0,B33-1,-43.533766,0.0 +2020-07-11,3,0,B33-2,-43.533766,0.0 +2020-07-11,3,0,B34,-34.101265,0.0 +2020-07-11,3,0,C1,10.398764,0.0 +2020-07-11,3,0,C2,-36.386702,0.0 +2020-07-11,3,0,C3,-14.286992,0.0 +2020-07-11,3,0,C4,-18.448001,0.0 +2020-07-11,3,0,C5,-7.326088,0.0 +2020-07-11,3,0,C6,5.812832,0.0 +2020-07-11,3,0,C7,-105.424416,0.0 +2020-07-11,3,0,C8,-46.043785,0.0 +2020-07-11,3,0,C9,-40.764029,0.0 +2020-07-11,3,0,C10,-58.042666,0.0 +2020-07-11,3,0,C11,-46.614501,0.0 +2020-07-11,3,0,C12-1,-61.810473,0.0 +2020-07-11,3,0,C13-2,-48.572666,0.0 +2020-07-11,3,0,C14,-74.04121,0.0 +2020-07-11,3,0,C15,-92.360518,0.0 +2020-07-11,3,0,C16,-100.753973,0.0 +2020-07-11,3,0,C17,-119.34401,0.0 +2020-07-11,3,0,C18,-124.628304,0.0 +2020-07-11,3,0,C19,-50.166878,0.0 +2020-07-11,3,0,C20,-91.607751,0.0 +2020-07-11,3,0,C21,-120.096778,0.0 +2020-07-11,3,0,C22,-83.358798,0.0 +2020-07-11,3,0,C23,-122.512584,0.0 +2020-07-11,3,0,C24,-34.059673,0.0 +2020-07-11,3,0,C25-1,-94.789559,0.0 +2020-07-11,3,0,C25-2,-94.789559,0.0 +2020-07-11,3,0,C26,105.424416,0.0 +2020-07-11,3,0,C27,-106.193905,0.0 +2020-07-11,3,0,C28,-23.733799,0.0 +2020-07-11,3,0,C29,-39.318434,0.0 +2020-07-11,3,0,C30,-62.675471,0.0 +2020-07-11,3,0,C31-1,-29.006705,0.0 +2020-07-11,3,0,C31-2,-29.006705,0.0 +2020-07-11,3,0,C32-1,-45.615799,0.0 +2020-07-11,3,0,C32-2,-45.615799,0.0 +2020-07-11,3,0,C33-1,-69.482423,0.0 +2020-07-11,3,0,C33-2,-69.482423,0.0 +2020-07-11,3,0,C34,-77.592529,0.0 +2020-07-11,3,0,CA-1,-342.420422,0.0 +2020-07-11,3,0,CB-1,-105.486055,0.0 +2020-07-11,3,0,C35,-342.420422,0.0 +2020-07-11,4,0,A1,-175.0,0.0 +2020-07-11,4,0,A2,111.959067,0.0 +2020-07-11,4,0,A3,171.442799,0.0 +2020-07-11,4,0,A4,148.504408,0.0 +2020-07-11,4,0,A5,130.183218,0.0 +2020-07-11,4,0,A6,43.062055,0.0 +2020-07-11,4,0,A7,-3.766545,0.0 +2020-07-11,4,0,A8,118.631613,0.0 +2020-07-11,4,0,A9,142.781063,0.0 +2020-07-11,4,0,A10,75.281864,0.0 +2020-07-11,4,0,A11,-19.970207,0.0 +2020-07-11,4,0,AB1,139.509404,0.0 +2020-07-11,4,0,A12-1,-39.620366,0.0 +2020-07-11,4,0,A13-2,-49.380221,0.0 +2020-07-11,4,0,A14,25.944958,0.0 +2020-07-11,4,0,A15,25.48322,0.0 +2020-07-11,4,0,A16,45.216208,0.0 +2020-07-11,4,0,A17,44.747645,0.0 +2020-07-11,4,0,A18,93.003459,0.0 +2020-07-11,4,0,A19,-21.842293,0.0 +2020-07-11,4,0,A20,93.835742,0.0 +2020-07-11,4,0,A21,-23.604877,0.0 +2020-07-11,4,0,A22,-78.089525,0.0 +2020-07-11,4,0,AB2,157.951823,0.0 +2020-07-11,4,0,A23,-100.15746,0.0 +2020-07-11,4,0,A24,62.321875,0.0 +2020-07-11,4,0,A25-1,-62.351007,0.0 +2020-07-11,4,0,A25-2,-62.351007,0.0 +2020-07-11,4,0,A26,3.766545,0.0 +2020-07-11,4,0,A27,-120.954576,0.0 +2020-07-11,4,0,A28,135.750348,0.0 +2020-07-11,4,0,A29,-53.047915,0.0 +2020-07-11,4,0,A30,-67.90666,0.0 +2020-07-11,4,0,A31-1,-8.737748,0.0 +2020-07-11,4,0,A31-2,-8.737748,0.0 +2020-07-11,4,0,A32-1,31.341552,0.0 +2020-07-11,4,0,A32-2,31.341552,0.0 +2020-07-11,4,0,A33-1,5.505621,0.0 +2020-07-11,4,0,A33-2,5.505621,0.0 +2020-07-11,4,0,A34,-90.59334,0.0 +2020-07-11,4,0,AB3,212.316839,0.0 +2020-07-11,4,0,B1,15.498318,0.0 +2020-07-11,4,0,B2,-55.637122,0.0 +2020-07-11,4,0,B3,29.0463,0.0 +2020-07-11,4,0,B4,7.538025,0.0 +2020-07-11,4,0,B5,22.774904,0.0 +2020-07-11,4,0,B6,84.980461,0.0 +2020-07-11,4,0,B7,-84.957355,0.0 +2020-07-11,4,0,B8,-26.933303,0.0 +2020-07-11,4,0,B9,-4.027542,0.0 +2020-07-11,4,0,B10,-40.577806,0.0 +2020-07-11,4,0,B11,-58.228594,0.0 +2020-07-11,4,0,B12-1,-80.279836,0.0 +2020-07-11,4,0,B13-2,-57.605474,0.0 +2020-07-11,4,0,B14,-46.784619,0.0 +2020-07-11,4,0,B15,-56.968089,0.0 +2020-07-11,4,0,B16,-91.356732,0.0 +2020-07-11,4,0,B17,-101.690697,0.0 +2020-07-11,4,0,B18,-27.927097,0.0 +2020-07-11,4,0,B19,-110.214254,0.0 +2020-07-11,4,0,B20,-9.571392,0.0 +2020-07-11,4,0,B21,-149.087394,0.0 +2020-07-11,4,0,B22,-160.943108,0.0 +2020-07-11,4,0,B23,-200.585032,0.0 +2020-07-11,4,0,B24,74.270623,0.0 +2020-07-11,4,0,B25-1,-60.646434,0.0 +2020-07-11,4,0,B25-2,-60.646434,0.0 +2020-07-11,4,0,B26,84.957355,0.0 +2020-07-11,4,0,B27,-161.204997,0.0 +2020-07-11,4,0,B28,81.307713,0.0 +2020-07-11,4,0,B29,73.097287,0.0 +2020-07-11,4,0,B30,-21.985445,0.0 +2020-07-11,4,0,B31-1,-41.011844,0.0 +2020-07-11,4,0,B31-2,-41.011844,0.0 +2020-07-11,4,0,B32-1,-1.503645,0.0 +2020-07-11,4,0,B32-2,-1.503645,0.0 +2020-07-11,4,0,B33-1,-31.316685,0.0 +2020-07-11,4,0,B33-2,-31.316685,0.0 +2020-07-11,4,0,B34,-33.316555,0.0 +2020-07-11,4,0,C1,10.081505,0.0 +2020-07-11,4,0,C2,-35.482987,0.0 +2020-07-11,4,0,C3,-14.160015,0.0 +2020-07-11,4,0,C4,-18.1754,0.0 +2020-07-11,4,0,C5,-7.27518,0.0 +2020-07-11,4,0,C6,5.129504,0.0 +2020-07-11,4,0,C7,-100.04832,0.0 +2020-07-11,4,0,C8,-45.282352,0.0 +2020-07-11,4,0,C9,-40.168037,0.0 +2020-07-11,4,0,C10,-57.093362,0.0 +2020-07-11,4,0,C11,-45.78877,0.0 +2020-07-11,4,0,C12-1,-60.693028,0.0 +2020-07-11,4,0,C13-2,-47.73478,0.0 +2020-07-11,4,0,C14,-72.281627,0.0 +2020-07-11,4,0,C15,-91.568527,0.0 +2020-07-11,4,0,C16,-98.427366,0.0 +2020-07-11,4,0,C17,-117.999294,0.0 +2020-07-11,4,0,C18,-125.724432,0.0 +2020-07-11,4,0,C19,-44.98456,0.0 +2020-07-11,4,0,C20,-90.959794,0.0 +2020-07-11,4,0,C21,-118.608026,0.0 +2020-07-11,4,0,C22,-82.056419,0.0 +2020-07-11,4,0,C23,-116.048732,0.0 +2020-07-11,4,0,C24,-38.058212,0.0 +2020-07-11,4,0,C25-1,-89.055215,0.0 +2020-07-11,4,0,C25-2,-89.055215,0.0 +2020-07-11,4,0,C26,100.04832,0.0 +2020-07-11,4,0,C27,-94.176414,0.0 +2020-07-11,4,0,C28,-34.561545,0.0 +2020-07-11,4,0,C29,-29.323783,0.0 +2020-07-11,4,0,C30,-60.052631,0.0 +2020-07-11,4,0,C31-1,-32.98447,0.0 +2020-07-11,4,0,C31-2,-32.98447,0.0 +2020-07-11,4,0,C32-1,-50.431842,0.0 +2020-07-11,4,0,C32-2,-50.431842,0.0 +2020-07-11,4,0,C33-1,-73.875692,0.0 +2020-07-11,4,0,C33-2,-73.875692,0.0 +2020-07-11,4,0,C34,-74.079369,0.0 +2020-07-11,4,0,CA-1,-348.41583,0.0 +2020-07-11,4,0,CB-1,-85.336127,0.0 +2020-07-11,4,0,C35,-348.41583,0.0 +2020-07-11,5,0,A1,-168.696684,0.0 +2020-07-11,5,0,A2,117.739214,0.0 +2020-07-11,5,0,A3,175.0,0.0 +2020-07-11,5,0,A4,150.130587,0.0 +2020-07-11,5,0,A5,132.008926,0.0 +2020-07-11,5,0,A6,41.568456,0.0 +2020-07-11,5,0,A7,9.241642,0.0 +2020-07-11,5,0,A8,125.815284,0.0 +2020-07-11,5,0,A9,148.600182,0.0 +2020-07-11,5,0,A10,81.44026,0.0 +2020-07-11,5,0,A11,-20.729364,0.0 +2020-07-11,5,0,AB1,144.250811,0.0 +2020-07-11,5,0,A12-1,-36.586907,0.0 +2020-07-11,5,0,A13-2,-47.725117,0.0 +2020-07-11,5,0,A14,32.241073,0.0 +2020-07-11,5,0,A15,33.485786,0.0 +2020-07-11,5,0,A16,54.272838,0.0 +2020-07-11,5,0,A17,55.535946,0.0 +2020-07-11,5,0,A18,96.275918,0.0 +2020-07-11,5,0,A19,-9.762007,0.0 +2020-07-11,5,0,A20,94.032322,0.0 +2020-07-11,5,0,A21,-5.01059,0.0 +2020-07-11,5,0,A22,-57.466422,0.0 +2020-07-11,5,0,AB2,158.74013,0.0 +2020-07-11,5,0,A23,-81.896721,0.0 +2020-07-11,5,0,A24,72.101489,0.0 +2020-07-11,5,0,A25-1,-59.364728,0.0 +2020-07-11,5,0,A25-2,-59.364728,0.0 +2020-07-11,5,0,A26,-9.241642,0.0 +2020-07-11,5,0,A27,-123.375109,0.0 +2020-07-11,5,0,A28,138.397035,0.0 +2020-07-11,5,0,A29,-56.562923,0.0 +2020-07-11,5,0,A30,-66.812186,0.0 +2020-07-11,5,0,A31-1,-5.190894,0.0 +2020-07-11,5,0,A31-2,-5.190894,0.0 +2020-07-11,5,0,A32-1,35.548045,0.0 +2020-07-11,5,0,A32-2,35.548045,0.0 +2020-07-11,5,0,A33-1,11.751026,0.0 +2020-07-11,5,0,A33-2,11.751026,0.0 +2020-07-11,5,0,A34,-89.535814,0.0 +2020-07-11,5,0,AB3,194.02504,0.0 +2020-07-11,5,0,B1,16.886098,0.0 +2020-07-11,5,0,B2,-55.670981,0.0 +2020-07-11,5,0,B3,31.339157,0.0 +2020-07-11,5,0,B4,9.085893,0.0 +2020-07-11,5,0,B5,24.138775,0.0 +2020-07-11,5,0,B6,89.224511,0.0 +2020-07-11,5,0,B7,-81.665891,0.0 +2020-07-11,5,0,B8,-24.222826,0.0 +2020-07-11,5,0,B9,-0.619209,0.0 +2020-07-11,5,0,B10,-37.07725,0.0 +2020-07-11,5,0,B11,-56.264729,0.0 +2020-07-11,5,0,B12-1,-77.945312,0.0 +2020-07-11,5,0,B13-2,-55.289566,0.0 +2020-07-11,5,0,B14,-42.86469,0.0 +2020-07-11,5,0,B15,-48.849557,0.0 +2020-07-11,5,0,B16,-87.342845,0.0 +2020-07-11,5,0,B17,-93.416158,0.0 +2020-07-11,5,0,B18,-18.573853,0.0 +2020-07-11,5,0,B19,-111.633683,0.0 +2020-07-11,5,0,B20,-7.786131,0.0 +2020-07-11,5,0,B21,-134.479583,0.0 +2020-07-11,5,0,B22,-145.64121,0.0 +2020-07-11,5,0,B23,-198.956542,0.0 +2020-07-11,5,0,B24,99.49843,0.0 +2020-07-11,5,0,B25-1,-59.055272,0.0 +2020-07-11,5,0,B25-2,-59.055272,0.0 +2020-07-11,5,0,B26,81.665891,0.0 +2020-07-11,5,0,B27,-163.027258,0.0 +2020-07-11,5,0,B28,111.557363,0.0 +2020-07-11,5,0,B29,59.336562,0.0 +2020-07-11,5,0,B30,-28.33878,0.0 +2020-07-11,5,0,B31-1,-45.276338,0.0 +2020-07-11,5,0,B31-2,-45.276338,0.0 +2020-07-11,5,0,B32-1,15.043018,0.0 +2020-07-11,5,0,B32-2,15.043018,0.0 +2020-07-11,5,0,B33-1,-13.764524,0.0 +2020-07-11,5,0,B33-2,-13.764524,0.0 +2020-07-11,5,0,B34,-38.66322,0.0 +2020-07-11,5,0,C1,10.048613,0.0 +2020-07-11,5,0,C2,-35.572925,0.0 +2020-07-11,5,0,C3,-14.54678,0.0 +2020-07-11,5,0,C4,-18.441532,0.0 +2020-07-11,5,0,C5,-7.499632,0.0 +2020-07-11,5,0,C6,4.463341,0.0 +2020-07-11,5,0,C7,-102.121418,0.0 +2020-07-11,5,0,C8,-45.89765,0.0 +2020-07-11,5,0,C9,-40.889812,0.0 +2020-07-11,5,0,C10,-57.959525,0.0 +2020-07-11,5,0,C11,-46.378578,0.0 +2020-07-11,5,0,C12-1,-61.396993,0.0 +2020-07-11,5,0,C13-2,-48.42748,0.0 +2020-07-11,5,0,C14,-73.512369,0.0 +2020-07-11,5,0,C15,-93.448943,0.0 +2020-07-11,5,0,C16,-99.698098,0.0 +2020-07-11,5,0,C17,-119.929301,0.0 +2020-07-11,5,0,C18,-127.393734,0.0 +2020-07-11,5,0,C19,-45.816732,0.0 +2020-07-11,5,0,C20,-91.45806,0.0 +2020-07-11,5,0,C21,-121.920184,0.0 +2020-07-11,5,0,C22,-85.474379,0.0 +2020-07-11,5,0,C23,-117.796286,0.0 +2020-07-11,5,0,C24,-40.367661,0.0 +2020-07-11,5,0,C25-1,-89.684916,0.0 +2020-07-11,5,0,C25-2,-89.684916,0.0 +2020-07-11,5,0,C26,102.121418,0.0 +2020-07-11,5,0,C27,-94.884647,0.0 +2020-07-11,5,0,C28,-38.382162,0.0 +2020-07-11,5,0,C29,-30.593261,0.0 +2020-07-11,5,0,C30,-58.391386,0.0 +2020-07-11,5,0,C31-1,-31.269391,0.0 +2020-07-11,5,0,C31-2,-31.269391,0.0 +2020-07-11,5,0,C32-1,-52.769171,0.0 +2020-07-11,5,0,C32-2,-52.769171,0.0 +2020-07-11,5,0,C33-1,-76.515003,0.0 +2020-07-11,5,0,C33-2,-76.515003,0.0 +2020-07-11,5,0,C34,-71.908614,0.0 +2020-07-11,5,0,CA-1,-360.42457,0.0 +2020-07-11,5,0,CB-1,-91.607012,0.0 +2020-07-11,5,0,C35,-360.42457,0.0 +2020-07-11,6,0,A1,-155.605514,0.0 +2020-07-11,6,0,A2,88.42073,0.0 +2020-07-11,6,0,A3,146.712501,0.0 +2020-07-11,6,0,A4,120.487567,0.0 +2020-07-11,6,0,A5,112.257588,0.0 +2020-07-11,6,0,A6,41.494459,0.0 +2020-07-11,6,0,A7,-27.027534,0.0 +2020-07-11,6,0,A8,100.684336,0.0 +2020-07-11,6,0,A9,117.541833,0.0 +2020-07-11,6,0,A10,56.381379,0.0 +2020-07-11,6,0,A11,-8.429651,0.0 +2020-07-11,6,0,AB1,127.072842,0.0 +2020-07-11,6,0,A12-1,-36.978123,0.0 +2020-07-11,6,0,A13-2,-41.707643,0.0 +2020-07-11,6,0,A14,14.750973,0.0 +2020-07-11,6,0,A15,18.550164,0.0 +2020-07-11,6,0,A16,24.121804,0.0 +2020-07-11,6,0,A17,27.977141,0.0 +2020-07-11,6,0,A18,73.753008,0.0 +2020-07-11,6,0,A19,-34.880231,0.0 +2020-07-11,6,0,A20,66.904966,0.0 +2020-07-11,6,0,A21,-20.37766,0.0 +2020-07-11,6,0,A22,-59.633005,0.0 +2020-07-11,6,0,AB2,132.914542,0.0 +2020-07-11,6,0,A23,-114.585999,0.0 +2020-07-11,6,0,A24,99.902972,0.0 +2020-07-11,6,0,A25-1,-97.585688,0.0 +2020-07-11,6,0,A25-2,-97.585688,0.0 +2020-07-11,6,0,A26,27.027534,0.0 +2020-07-11,6,0,A27,-168.233368,0.0 +2020-07-11,6,0,A28,174.464893,0.0 +2020-07-11,6,0,A29,-95.470098,0.0 +2020-07-11,6,0,A30,-72.76327,0.0 +2020-07-11,6,0,A31-1,-29.592319,0.0 +2020-07-11,6,0,A31-2,-29.592319,0.0 +2020-07-11,6,0,A32-1,50.700116,0.0 +2020-07-11,6,0,A32-2,50.700116,0.0 +2020-07-11,6,0,A33-1,24.40543,0.0 +2020-07-11,6,0,A33-2,24.40543,0.0 +2020-07-11,6,0,A34,-81.38473,0.0 +2020-07-11,6,0,AB3,170.800195,0.0 +2020-07-11,6,0,B1,19.15878,0.0 +2020-07-11,6,0,B2,-51.126014,0.0 +2020-07-11,6,0,B3,32.493734,0.0 +2020-07-11,6,0,B4,10.579264,0.0 +2020-07-11,6,0,B5,24.81141,0.0 +2020-07-11,6,0,B6,84.260935,0.0 +2020-07-11,6,0,B7,-89.533275,0.0 +2020-07-11,6,0,B8,-22.810838,0.0 +2020-07-11,6,0,B9,0.457284,0.0 +2020-07-11,6,0,B10,-36.554183,0.0 +2020-07-11,6,0,B11,-56.4022,0.0 +2020-07-11,6,0,B12-1,-77.576405,0.0 +2020-07-11,6,0,B13-2,-55.984004,0.0 +2020-07-11,6,0,B14,-44.460594,0.0 +2020-07-11,6,0,B15,-50.628794,0.0 +2020-07-11,6,0,B16,-86.904489,0.0 +2020-07-11,6,0,B17,-93.163845,0.0 +2020-07-11,6,0,B18,-19.580822,0.0 +2020-07-11,6,0,B19,-111.78426,0.0 +2020-07-11,6,0,B20,-8.462641,0.0 +2020-07-11,6,0,B21,-135.329998,0.0 +2020-07-11,6,0,B22,-146.216127,0.0 +2020-07-11,6,0,B23,-199.320474,0.0 +2020-07-11,6,0,B24,118.518304,0.0 +2020-07-11,6,0,B25-1,-65.887545,0.0 +2020-07-11,6,0,B25-2,-65.887545,0.0 +2020-07-11,6,0,B26,89.533275,0.0 +2020-07-11,6,0,B27,-174.317646,0.0 +2020-07-11,6,0,B28,110.393716,0.0 +2020-07-11,6,0,B29,46.01033,0.0 +2020-07-11,6,0,B30,-49.527781,0.0 +2020-07-11,6,0,B31-1,-52.122565,0.0 +2020-07-11,6,0,B31-2,-52.122565,0.0 +2020-07-11,6,0,B32-1,14.361666,0.0 +2020-07-11,6,0,B32-2,14.361666,0.0 +2020-07-11,6,0,B33-1,-14.516261,0.0 +2020-07-11,6,0,B33-2,-14.516261,0.0 +2020-07-11,6,0,B34,-66.020219,0.0 +2020-07-11,6,0,C1,10.344436,0.0 +2020-07-11,6,0,C2,-33.741939,0.0 +2020-07-11,6,0,C3,-17.641817,0.0 +2020-07-11,6,0,C4,-16.955154,0.0 +2020-07-11,6,0,C5,-9.5598,0.0 +2020-07-11,6,0,C6,3.557136,0.0 +2020-07-11,6,0,C7,-98.397943,0.0 +2020-07-11,6,0,C8,-45.074688,0.0 +2020-07-11,6,0,C9,-44.621371,0.0 +2020-07-11,6,0,C10,-61.238944,0.0 +2020-07-11,6,0,C11,-47.499214,0.0 +2020-07-11,6,0,C12-1,-58.537599,0.0 +2020-07-11,6,0,C13-2,-50.840539,0.0 +2020-07-11,6,0,C14,-76.602231,0.0 +2020-07-11,6,0,C15,-89.45182,0.0 +2020-07-11,6,0,C16,-92.630071,0.0 +2020-07-11,6,0,C17,-105.669556,0.0 +2020-07-11,6,0,C18,-114.36351,0.0 +2020-07-11,6,0,C19,-54.868792,0.0 +2020-07-11,6,0,C20,-91.202125,0.0 +2020-07-11,6,0,C21,-88.41925,0.0 +2020-07-11,6,0,C22,-48.263968,0.0 +2020-07-11,6,0,C23,-57.187572,0.0 +2020-07-11,6,0,C24,-60.516479,0.0 +2020-07-11,6,0,C25-1,-53.669735,0.0 +2020-07-11,6,0,C25-2,-53.669735,0.0 +2020-07-11,6,0,C26,47.397943,0.0 +2020-07-11,6,0,C27,-18.57598,0.0 +2020-07-11,6,0,C28,-75.127442,0.0 +2020-07-11,6,0,C29,41.942733,0.0 +2020-07-11,6,0,C30,-55.018713,0.0 +2020-07-11,6,0,C31-1,-65.586909,0.0 +2020-07-11,6,0,C31-2,-65.586909,0.0 +2020-07-11,6,0,C32-1,-32.203151,0.0 +2020-07-11,6,0,C32-2,-32.203151,0.0 +2020-07-11,6,0,C33-1,-45.172749,0.0 +2020-07-11,6,0,C33-2,-45.172749,0.0 +2020-07-11,6,0,C34,-68.513287,0.0 +2020-07-11,6,0,CA-1,-227.028716,0.0 +2020-07-11,6,0,CB-1,46.578646,0.0 +2020-07-11,6,0,C35,-227.028716,0.0 +2020-07-11,7,0,A1,-114.859833,0.0 +2020-07-11,7,0,A2,67.713936,0.0 +2020-07-11,7,0,A3,136.920251,0.0 +2020-07-11,7,0,A4,112.620206,0.0 +2020-07-11,7,0,A5,103.835667,0.0 +2020-07-11,7,0,A6,54.244,0.0 +2020-07-11,7,0,A7,-57.239473,0.0 +2020-07-11,7,0,A8,77.384116,0.0 +2020-07-11,7,0,A9,103.11265,0.0 +2020-07-11,7,0,A10,39.077446,0.0 +2020-07-11,7,0,A11,3.202732,0.0 +2020-07-11,7,0,AB1,107.276845,0.0 +2020-07-11,7,0,A12-1,-39.018052,0.0 +2020-07-11,7,0,A13-2,-39.203155,0.0 +2020-07-11,7,0,A14,1.765438,0.0 +2020-07-11,7,0,A15,7.516033,0.0 +2020-07-11,7,0,A16,2.149751,0.0 +2020-07-11,7,0,A17,7.98533,0.0 +2020-07-11,7,0,A18,70.338406,0.0 +2020-07-11,7,0,A19,-66.423217,0.0 +2020-07-11,7,0,A20,59.972958,0.0 +2020-07-11,7,0,A21,-44.471595,0.0 +2020-07-11,7,0,A22,-82.671802,0.0 +2020-07-11,7,0,AB2,86.799869,0.0 +2020-07-11,7,0,A23,-158.798914,0.0 +2020-07-11,7,0,A24,135.621225,0.0 +2020-07-11,7,0,A25-1,-140.902246,0.0 +2020-07-11,7,0,A25-2,-140.902246,0.0 +2020-07-11,7,0,A26,57.239473,0.0 +2020-07-11,7,0,A27,-225.181038,0.0 +2020-07-11,7,0,A28,216.38701,0.0 +2020-07-11,7,0,A29,-140.794541,0.0 +2020-07-11,7,0,A30,-84.386497,0.0 +2020-07-11,7,0,A31-1,-53.228474,0.0 +2020-07-11,7,0,A31-2,-53.228474,0.0 +2020-07-11,7,0,A32-1,65.100719,0.0 +2020-07-11,7,0,A32-2,65.100719,0.0 +2020-07-11,7,0,A33-1,34.626262,0.0 +2020-07-11,7,0,A33-2,34.626262,0.0 +2020-07-11,7,0,A34,-80.963503,0.0 +2020-07-11,7,0,AB3,144.109127,0.0 +2020-07-11,7,0,B1,21.07785,0.0 +2020-07-11,7,0,B2,-45.918167,0.0 +2020-07-11,7,0,B3,31.271582,0.0 +2020-07-11,7,0,B4,10.484693,0.0 +2020-07-11,7,0,B5,24.097163,0.0 +2020-07-11,7,0,B6,73.250297,0.0 +2020-07-11,7,0,B7,-98.172844,0.0 +2020-07-11,7,0,B8,-24.986478,0.0 +2020-07-11,7,0,B9,-2.761569,0.0 +2020-07-11,7,0,B10,-41.093096,0.0 +2020-07-11,7,0,B11,-59.917518,0.0 +2020-07-11,7,0,B12-1,-81.20602,0.0 +2020-07-11,7,0,B13-2,-60.678661,0.0 +2020-07-11,7,0,B14,-51.676868,0.0 +2020-07-11,7,0,B15,-65.149858,0.0 +2020-07-11,7,0,B16,-92.166278,0.0 +2020-07-11,7,0,B17,-105.838376,0.0 +2020-07-11,7,0,B18,-35.748297,0.0 +2020-07-11,7,0,B19,-108.094849,0.0 +2020-07-11,7,0,B20,-11.463232,0.0 +2020-07-11,7,0,B21,-159.525001,0.0 +2020-07-11,7,0,B22,-171.536666,0.0 +2020-07-11,7,0,B23,-201.086837,0.0 +2020-07-11,7,0,B24,77.458837,0.0 +2020-07-11,7,0,B25-1,-78.091319,0.0 +2020-07-11,7,0,B25-2,-78.091319,0.0 +2020-07-11,7,0,B26,98.172844,0.0 +2020-07-11,7,0,B27,-167.506222,0.0 +2020-07-11,7,0,B28,57.944209,0.0 +2020-07-11,7,0,B29,47.66483,0.0 +2020-07-11,7,0,B30,-71.061925,0.0 +2020-07-11,7,0,B31-1,-55.977719,0.0 +2020-07-11,7,0,B31-2,-55.977719,0.0 +2020-07-11,7,0,B32-1,-14.408178,0.0 +2020-07-11,7,0,B32-2,-14.408178,0.0 +2020-07-11,7,0,B33-1,-45.085947,0.0 +2020-07-11,7,0,B33-2,-45.085947,0.0 +2020-07-11,7,0,B34,-98.138075,0.0 +2020-07-11,7,0,C1,9.450768,0.0 +2020-07-11,7,0,C2,-32.08581,0.0 +2020-07-11,7,0,C3,-23.075559,0.0 +2020-07-11,7,0,C4,-18.728337,0.0 +2020-07-11,7,0,C5,-12.875787,0.0 +2020-07-11,7,0,C6,-5.723805,0.0 +2020-07-11,7,0,C7,-96.146339,0.0 +2020-07-11,7,0,C8,-50.048564,0.0 +2020-07-11,7,0,C9,-53.126047,0.0 +2020-07-11,7,0,C10,-70.437284,0.0 +2020-07-11,7,0,C11,-52.905788,0.0 +2020-07-11,7,0,C12-1,-53.309314,0.0 +2020-07-11,7,0,C13-2,-48.371592,0.0 +2020-07-11,7,0,C14,-89.590433,0.0 +2020-07-11,7,0,C15,-93.559352,0.0 +2020-07-11,7,0,C16,-100.470189,0.0 +2020-07-11,7,0,C17,-104.497762,0.0 +2020-07-11,7,0,C18,-148.333845,0.0 +2020-07-11,7,0,C19,-41.726777,0.0 +2020-07-11,7,0,C20,-141.179869,0.0 +2020-07-11,7,0,C21,-56.877246,0.0 +2020-07-11,7,0,C22,14.477481,0.0 +2020-07-11,7,0,C23,-1.63656,0.0 +2020-07-11,7,0,C24,-82.690137,0.0 +2020-07-11,7,0,C25-1,-32.26264,0.0 +2020-07-11,7,0,C25-2,-32.26264,0.0 +2020-07-11,7,0,C26,13.046339,0.0 +2020-07-11,7,0,C27,35.067862,0.0 +2020-07-11,7,0,C28,-99.71919,0.0 +2020-07-11,7,0,C29,103.309929,0.0 +2020-07-11,7,0,C30,-68.242066,0.0 +2020-07-11,7,0,C31-1,-97.432326,0.0 +2020-07-11,7,0,C31-2,-97.432326,0.0 +2020-07-11,7,0,C32-1,-29.663385,0.0 +2020-07-11,7,0,C32-2,-29.663385,0.0 +2020-07-11,7,0,C33-1,-24.151149,0.0 +2020-07-11,7,0,C33-2,-24.151149,0.0 +2020-07-11,7,0,C34,-89.389934,0.0 +2020-07-11,7,0,CA-1,-90.702063,0.0 +2020-07-11,7,0,CB-1,157.233562,0.0 +2020-07-11,7,0,C35,-90.702063,0.0 +2020-07-11,8,0,A1,-101.998919,0.0 +2020-07-11,8,0,A2,61.153281,0.0 +2020-07-11,8,0,A3,131.346719,0.0 +2020-07-11,8,0,A4,106.544281,0.0 +2020-07-11,8,0,A5,99.917957,0.0 +2020-07-11,8,0,A6,50.760948,0.0 +2020-07-11,8,0,A7,-88.772532,0.0 +2020-07-11,8,0,A8,65.776503,0.0 +2020-07-11,8,0,A9,92.231689,0.0 +2020-07-11,8,0,A10,24.993392,0.0 +2020-07-11,8,0,A11,4.016217,0.0 +2020-07-11,8,0,AB1,97.119293,0.0 +2020-07-11,8,0,A12-1,-46.116307,0.0 +2020-07-11,8,0,A13-2,-44.074097,0.0 +2020-07-11,8,0,A14,-15.717107,0.0 +2020-07-11,8,0,A15,-10.272035,0.0 +2020-07-11,8,0,A16,-19.901581,0.0 +2020-07-11,8,0,A17,-14.37604,0.0 +2020-07-11,8,0,A18,44.162043,0.0 +2020-07-11,8,0,A19,-79.780731,0.0 +2020-07-11,8,0,A20,34.3473,0.0 +2020-07-11,8,0,A21,-58.995375,0.0 +2020-07-11,8,0,A22,-84.726687,0.0 +2020-07-11,8,0,AB2,82.843311,0.0 +2020-07-11,8,0,A23,-186.658419,0.0 +2020-07-11,8,0,A24,147.175823,0.0 +2020-07-11,8,0,A25-1,-174.29435,0.0 +2020-07-11,8,0,A25-2,-174.29435,0.0 +2020-07-11,8,0,A26,88.772532,0.0 +2020-07-11,8,0,A27,-258.460717,0.0 +2020-07-11,8,0,A28,225.886528,0.0 +2020-07-11,8,0,A29,-173.159945,0.0 +2020-07-11,8,0,A30,-85.300772,0.0 +2020-07-11,8,0,A31-1,-73.007473,0.0 +2020-07-11,8,0,A31-2,-73.007473,0.0 +2020-07-11,8,0,A32-1,75.685374,0.0 +2020-07-11,8,0,A32-2,75.685374,0.0 +2020-07-11,8,0,A33-1,40.426755,0.0 +2020-07-11,8,0,A33-2,40.426755,0.0 +2020-07-11,8,0,A34,-68.149228,0.0 +2020-07-11,8,0,AB3,139.131448,0.0 +2020-07-11,8,0,B1,24.791004,0.0 +2020-07-11,8,0,B2,-47.420109,0.0 +2020-07-11,8,0,B3,30.755677,0.0 +2020-07-11,8,0,B4,9.472453,0.0 +2020-07-11,8,0,B5,23.945888,0.0 +2020-07-11,8,0,B6,71.133916,0.0 +2020-07-11,8,0,B7,-116.765448,0.0 +2020-07-11,8,0,B8,-29.719063,0.0 +2020-07-11,8,0,B9,-6.846994,0.0 +2020-07-11,8,0,B10,-48.081763,0.0 +2020-07-11,8,0,B11,-66.201885,0.0 +2020-07-11,8,0,B12-1,-89.147893,0.0 +2020-07-11,8,0,B13-2,-67.618171,0.0 +2020-07-11,8,0,B14,-61.210708,0.0 +2020-07-11,8,0,B15,-79.204971,0.0 +2020-07-11,8,0,B16,-103.780841,0.0 +2020-07-11,8,0,B17,-122.041029,0.0 +2020-07-11,8,0,B18,-47.406042,0.0 +2020-07-11,8,0,B19,-117.585507,0.0 +2020-07-11,8,0,B20,-14.971382,0.0 +2020-07-11,8,0,B21,-186.274618,0.0 +2020-07-11,8,0,B22,-199.425421,0.0 +2020-07-11,8,0,B23,-220.330833,0.0 +2020-07-11,8,0,B24,74.005913,0.0 +2020-07-11,8,0,B25-1,-84.920515,0.0 +2020-07-11,8,0,B25-2,-84.920515,0.0 +2020-07-11,8,0,B26,116.765448,0.0 +2020-07-11,8,0,B27,-174.878595,0.0 +2020-07-11,8,0,B28,37.592167,0.0 +2020-07-11,8,0,B29,52.605236,0.0 +2020-07-11,8,0,B30,-88.352383,0.0 +2020-07-11,8,0,B31-1,-61.878293,0.0 +2020-07-11,8,0,B31-2,-61.878293,0.0 +2020-07-11,8,0,B32-1,-29.134081,0.0 +2020-07-11,8,0,B32-2,-29.134081,0.0 +2020-07-11,8,0,B33-1,-63.029447,0.0 +2020-07-11,8,0,B33-2,-63.029447,0.0 +2020-07-11,8,0,B34,-123.597617,0.0 +2020-07-11,8,0,C1,6.301494,0.0 +2020-07-11,8,0,C2,-27.068253,0.0 +2020-07-11,8,0,C3,-31.160891,0.0 +2020-07-11,8,0,C4,-22.572988,0.0 +2020-07-11,8,0,C5,-17.764241,0.0 +2020-07-11,8,0,C6,-26.177006,0.0 +2020-07-11,8,0,C7,-82.537331,0.0 +2020-07-11,8,0,C8,-58.153045,0.0 +2020-07-11,8,0,C9,-65.298513,0.0 +2020-07-11,8,0,C10,-83.154615,0.0 +2020-07-11,8,0,C11,-60.101447,0.0 +2020-07-11,8,0,C12-1,-49.667751,0.0 +2020-07-11,8,0,C13-2,-47.052476,0.0 +2020-07-11,8,0,C14,-100.299298,0.0 +2020-07-11,8,0,C15,-116.34053,0.0 +2020-07-11,8,0,C16,-106.842783,0.0 +2020-07-11,8,0,C17,-123.121077,0.0 +2020-07-11,8,0,C18,-210.51216,0.0 +2020-07-11,8,0,C19,3.370078,0.0 +2020-07-11,8,0,C20,-181.59784,0.0 +2020-07-11,8,0,C21,-8.063767,0.0 +2020-07-11,8,0,C22,91.201275,0.0 +2020-07-11,8,0,C23,58.492632,0.0 +2020-07-11,8,0,C24,-119.698616,0.0 +2020-07-11,8,0,C25-1,-7.977992,0.0 +2020-07-11,8,0,C25-2,-7.977992,0.0 +2020-07-11,8,0,C26,-16.762669,0.0 +2020-07-11,8,0,C27,95.425172,0.0 +2020-07-11,8,0,C28,-142.712313,0.0 +2020-07-11,8,0,C29,165.377771,0.0 +2020-07-11,8,0,C30,-65.252599,0.0 +2020-07-11,8,0,C31-1,-121.245708,0.0 +2020-07-11,8,0,C31-2,-121.245708,0.0 +2020-07-11,8,0,C32-1,-46.969604,0.0 +2020-07-11,8,0,C32-2,-46.969604,0.0 +2020-07-11,8,0,C33-1,-27.341545,0.0 +2020-07-11,8,0,C33-2,-27.341545,0.0 +2020-07-11,8,0,C34,-88.447401,0.0 +2020-07-11,8,0,CA-1,28.454418,0.0 +2020-07-11,8,0,CB-1,247.758932,0.0 +2020-07-11,8,0,C35,28.454418,0.0 +2020-07-11,9,0,A1,-100.170533,0.0 +2020-07-11,9,0,A2,58.317909,0.0 +2020-07-11,9,0,A3,133.335068,0.0 +2020-07-11,9,0,A4,107.244504,0.0 +2020-07-11,9,0,A5,101.312714,0.0 +2020-07-11,9,0,A6,56.273701,0.0 +2020-07-11,9,0,A7,-99.805521,0.0 +2020-07-11,9,0,A8,65.230623,0.0 +2020-07-11,9,0,A9,93.024452,0.0 +2020-07-11,9,0,A10,24.098014,0.0 +2020-07-11,9,0,A11,-4.561956,0.0 +2020-07-11,9,0,AB1,103.592562,0.0 +2020-07-11,9,0,A12-1,-52.393689,0.0 +2020-07-11,9,0,A13-2,-49.254397,0.0 +2020-07-11,9,0,A14,-19.00159,0.0 +2020-07-11,9,0,A15,-11.244926,0.0 +2020-07-11,9,0,A16,-25.357739,0.0 +2020-07-11,9,0,A17,-17.486445,0.0 +2020-07-11,9,0,A18,49.44023,0.0 +2020-07-11,9,0,A19,-93.799559,0.0 +2020-07-11,9,0,A20,35.458844,0.0 +2020-07-11,9,0,A21,-64.190216,0.0 +2020-07-11,9,0,A22,-91.131902,0.0 +2020-07-11,9,0,AB2,92.275862,0.0 +2020-07-11,9,0,A23,-203.944058,0.0 +2020-07-11,9,0,A24,163.504571,0.0 +2020-07-11,9,0,A25-1,-190.644237,0.0 +2020-07-11,9,0,A25-2,-190.644237,0.0 +2020-07-11,9,0,A26,99.805521,0.0 +2020-07-11,9,0,A27,-283.08926,0.0 +2020-07-11,9,0,A28,247.874258,0.0 +2020-07-11,9,0,A29,-193.485649,0.0 +2020-07-11,9,0,A30,-89.60361,0.0 +2020-07-11,9,0,A31-1,-78.924057,0.0 +2020-07-11,9,0,A31-2,-78.924057,0.0 +2020-07-11,9,0,A32-1,88.955288,0.0 +2020-07-11,9,0,A32-2,88.955288,0.0 +2020-07-11,9,0,A33-1,52.618958,0.0 +2020-07-11,9,0,A33-2,52.618958,0.0 +2020-07-11,9,0,A34,-68.34639,0.0 +2020-07-11,9,0,AB3,151.915799,0.0 +2020-07-11,9,0,B1,29.966322,0.0 +2020-07-11,9,0,B2,-52.959788,0.0 +2020-07-11,9,0,B3,32.101957,0.0 +2020-07-11,9,0,B4,8.928071,0.0 +2020-07-11,9,0,B5,24.971794,0.0 +2020-07-11,9,0,B6,77.379026,0.0 +2020-07-11,9,0,B7,-130.7871,0.0 +2020-07-11,9,0,B8,-33.844278,0.0 +2020-07-11,9,0,B9,-8.936377,0.0 +2020-07-11,9,0,B10,-53.636847,0.0 +2020-07-11,9,0,B11,-72.250589,0.0 +2020-07-11,9,0,B12-1,-97.389172,0.0 +2020-07-11,9,0,B13-2,-73.700223,0.0 +2020-07-11,9,0,B14,-67.855292,0.0 +2020-07-11,9,0,B15,-87.149956,0.0 +2020-07-11,9,0,B16,-114.70228,0.0 +2020-07-11,9,0,B17,-134.282087,0.0 +2020-07-11,9,0,B18,-51.80612,0.0 +2020-07-11,9,0,B19,-130.751453,0.0 +2020-07-11,9,0,B20,-17.027488,0.0 +2020-07-11,9,0,B21,-204.404556,0.0 +2020-07-11,9,0,B22,-218.504856,0.0 +2020-07-11,9,0,B23,-242.884367,0.0 +2020-07-11,9,0,B24,86.315464,0.0 +2020-07-11,9,0,B25-1,-91.727599,0.0 +2020-07-11,9,0,B25-2,-91.727599,0.0 +2020-07-11,9,0,B26,130.7871,0.0 +2020-07-11,9,0,B27,-195.183032,0.0 +2020-07-11,9,0,B28,44.113658,0.0 +2020-07-11,9,0,B29,59.812075,0.0 +2020-07-11,9,0,B30,-103.079309,0.0 +2020-07-11,9,0,B31-1,-66.331747,0.0 +2020-07-11,9,0,B31-2,-66.331747,0.0 +2020-07-11,9,0,B32-1,-30.252597,0.0 +2020-07-11,9,0,B32-2,-30.252597,0.0 +2020-07-11,9,0,B33-1,-67.244899,0.0 +2020-07-11,9,0,B33-2,-67.244899,0.0 +2020-07-11,9,0,B34,-146.118691,0.0 +2020-07-11,9,0,C1,4.371928,0.0 +2020-07-11,9,0,C2,-25.087791,0.0 +2020-07-11,9,0,C3,-37.734593,0.0 +2020-07-11,9,0,C4,-26.461614,0.0 +2020-07-11,9,0,C5,-21.663627,0.0 +2020-07-11,9,0,C6,-41.370068,0.0 +2020-07-11,9,0,C7,-74.93515,0.0 +2020-07-11,9,0,C8,-66.511,0.0 +2020-07-11,9,0,C9,-76.160356,0.0 +2020-07-11,9,0,C10,-95.267905,0.0 +2020-07-11,9,0,C11,-67.650991,0.0 +2020-07-11,9,0,C12-1,-49.079108,0.0 +2020-07-11,9,0,C13-2,-47.218439,0.0 +2020-07-11,9,0,C14,-114.293069,0.0 +2020-07-11,9,0,C15,-136.678494,0.0 +2020-07-11,9,0,C16,-119.583001,0.0 +2020-07-11,9,0,C17,-142.299244,0.0 +2020-07-11,9,0,C18,-274.896328,0.0 +2020-07-11,9,0,C19,41.020257,0.0 +2020-07-11,9,0,C20,-234.5466,0.0 +2020-07-11,9,0,C21,14.468863,0.0 +2020-07-11,9,0,C22,145.536971,0.0 +2020-07-11,9,0,C23,98.02592,0.0 +2020-07-11,9,0,C24,-150.758564,0.0 +2020-07-11,9,0,C25-1,5.43025,0.0 +2020-07-11,9,0,C25-2,5.43025,0.0 +2020-07-11,9,0,C26,-31.66485,0.0 +2020-07-11,9,0,C27,134.428949,0.0 +2020-07-11,9,0,C28,-179.282386,0.0 +2020-07-11,9,0,C29,203.366815,0.0 +2020-07-11,9,0,C30,-64.237866,0.0 +2020-07-11,9,0,C31-1,-135.127317,0.0 +2020-07-11,9,0,C31-2,-135.127317,0.0 +2020-07-11,9,0,C32-1,-73.920511,0.0 +2020-07-11,9,0,C32-2,-73.920511,0.0 +2020-07-11,9,0,C33-1,-43.607818,0.0 +2020-07-11,9,0,C33-2,-43.607818,0.0 +2020-07-11,9,0,C34,-89.394134,0.0 +2020-07-11,9,0,CA-1,72.790198,0.0 +2020-07-11,9,0,CB-1,293.39921,0.0 +2020-07-11,9,0,C35,72.790198,0.0 +2020-07-11,10,0,A1,-72.961856,0.0 +2020-07-11,10,0,A2,68.157615,0.0 +2020-07-11,10,0,A3,159.427396,0.0 +2020-07-11,10,0,A4,116.177199,0.0 +2020-07-11,10,0,A5,118.260444,0.0 +2020-07-11,10,0,A6,70.125561,0.0 +2020-07-11,10,0,A7,-78.96269,0.0 +2020-07-11,10,0,A8,86.472694,0.0 +2020-07-11,10,0,A9,113.752802,0.0 +2020-07-11,10,0,A10,30.771082,0.0 +2020-07-11,10,0,A11,-11.079579,0.0 +2020-07-11,10,0,AB1,100.666563,0.0 +2020-07-11,10,0,A12-1,-63.073737,0.0 +2020-07-11,10,0,A13-2,-58.010848,0.0 +2020-07-11,10,0,A14,-11.783476,0.0 +2020-07-11,10,0,A15,-7.270229,0.0 +2020-07-11,10,0,A16,-21.755607,0.0 +2020-07-11,10,0,A17,-17.175662,0.0 +2020-07-11,10,0,A18,45.531061,0.0 +2020-07-11,10,0,A19,-79.070145,0.0 +2020-07-11,10,0,A20,37.395933,0.0 +2020-07-11,10,0,A21,-61.841823,0.0 +2020-07-11,10,0,A22,-89.582317,0.0 +2020-07-11,10,0,AB2,67.533716,0.0 +2020-07-11,10,0,A23,-203.871146,0.0 +2020-07-11,10,0,A24,165.559445,0.0 +2020-07-11,10,0,A25-1,-193.224772,0.0 +2020-07-11,10,0,A25-2,-193.224772,0.0 +2020-07-11,10,0,A26,78.96269,0.0 +2020-07-11,10,0,A27,-283.23887,0.0 +2020-07-11,10,0,A28,242.596755,0.0 +2020-07-11,10,0,A29,-192.646304,0.0 +2020-07-11,10,0,A30,-90.592565,0.0 +2020-07-11,10,0,A31-1,-85.43329,0.0 +2020-07-11,10,0,A31-2,-85.43329,0.0 +2020-07-11,10,0,A32-1,81.729354,0.0 +2020-07-11,10,0,A32-2,81.729354,0.0 +2020-07-11,10,0,A33-1,40.55789,0.0 +2020-07-11,10,0,A33-2,40.55789,0.0 +2020-07-11,10,0,A34,-67.557435,0.0 +2020-07-11,10,0,AB3,131.69164,0.0 +2020-07-11,10,0,B1,34.270611,0.0 +2020-07-11,10,0,B2,-58.546869,0.0 +2020-07-11,10,0,B3,32.399635,0.0 +2020-07-11,10,0,B4,7.686149,0.0 +2020-07-11,10,0,B5,25.367023,0.0 +2020-07-11,10,0,B6,81.946842,0.0 +2020-07-11,10,0,B7,-153.42652,0.0 +2020-07-11,10,0,B8,-39.015814,0.0 +2020-07-11,10,0,B9,-12.409006,0.0 +2020-07-11,10,0,B10,-60.463614,0.0 +2020-07-11,10,0,B11,-78.888452,0.0 +2020-07-11,10,0,B12-1,-106.324205,0.0 +2020-07-11,10,0,B13-2,-80.48365,0.0 +2020-07-11,10,0,B14,-77.143977,0.0 +2020-07-11,10,0,B15,-96.693034,0.0 +2020-07-11,10,0,B16,-128.292148,0.0 +2020-07-11,10,0,B17,-148.130107,0.0 +2020-07-11,10,0,B18,-56.614368,0.0 +2020-07-11,10,0,B19,-148.821757,0.0 +2020-07-11,10,0,B20,-21.377192,0.0 +2020-07-11,10,0,B21,-223.445949,0.0 +2020-07-11,10,0,B22,-237.335079,0.0 +2020-07-11,10,0,B23,-271.256636,0.0 +2020-07-11,10,0,B24,110.696837,0.0 +2020-07-11,10,0,B25-1,-88.550878,0.0 +2020-07-11,10,0,B25-2,-88.550878,0.0 +2020-07-11,10,0,B26,153.42652,0.0 +2020-07-11,10,0,B27,-192.129045,0.0 +2020-07-11,10,0,B28,61.458485,0.0 +2020-07-11,10,0,B29,55.799288,0.0 +2020-07-11,10,0,B30,-116.236694,0.0 +2020-07-11,10,0,B31-1,-77.179774,0.0 +2020-07-11,10,0,B31-2,-77.179774,0.0 +2020-07-11,10,0,B32-1,-26.385997,0.0 +2020-07-11,10,0,B32-2,-26.385997,0.0 +2020-07-11,10,0,B33-1,-66.776885,0.0 +2020-07-11,10,0,B33-2,-66.776885,0.0 +2020-07-11,10,0,B34,-161.461306,0.0 +2020-07-11,10,0,C1,3.540638,0.0 +2020-07-11,10,0,C2,-25.715104,0.0 +2020-07-11,10,0,C3,-41.932486,0.0 +2020-07-11,10,0,C4,-29.972747,0.0 +2020-07-11,10,0,C5,-24.064155,0.0 +2020-07-11,10,0,C6,-50.558508,0.0 +2020-07-11,10,0,C7,-72.501516,0.0 +2020-07-11,10,0,C8,-73.89788,0.0 +2020-07-11,10,0,C9,-84.076871,0.0 +2020-07-11,10,0,C10,-104.791428,0.0 +2020-07-11,10,0,C11,-74.197861,0.0 +2020-07-11,10,0,C12-1,-51.952763,0.0 +2020-07-11,10,0,C13-2,-49.047772,0.0 +2020-07-11,10,0,C14,-126.890466,0.0 +2020-07-11,10,0,C15,-152.89569,0.0 +2020-07-11,10,0,C16,-134.387598,0.0 +2020-07-11,10,0,C17,-160.777136,0.0 +2020-07-11,10,0,C18,-324.736913,0.0 +2020-07-11,10,0,C19,63.458849,0.0 +2020-07-11,10,0,C20,-277.862497,0.0 +2020-07-11,10,0,C21,22.689671,0.0 +2020-07-11,10,0,C22,178.601125,0.0 +2020-07-11,10,0,C23,115.103769,0.0 +2020-07-11,10,0,C24,-171.898438,0.0 +2020-07-11,10,0,C25-1,6.915573,0.0 +2020-07-11,10,0,C25-2,6.915573,0.0 +2020-07-11,10,0,C26,-30.098484,0.0 +2020-07-11,10,0,C27,146.262036,0.0 +2020-07-11,10,0,C28,-200.414994,0.0 +2020-07-11,10,0,C29,209.056258,0.0 +2020-07-11,10,0,C30,-58.894222,0.0 +2020-07-11,10,0,C31-1,-133.402462,0.0 +2020-07-11,10,0,C31-2,-133.402462,0.0 +2020-07-11,10,0,C32-1,-91.726748,0.0 +2020-07-11,10,0,C32-2,-91.726748,0.0 +2020-07-11,10,0,C33-1,-55.766053,0.0 +2020-07-11,10,0,C33-2,-55.766053,0.0 +2020-07-11,10,0,C34,-82.973778,0.0 +2020-07-11,10,0,CA-1,89.758689,0.0 +2020-07-11,10,0,CB-1,278.198081,0.0 +2020-07-11,10,0,C35,89.758689,0.0 +2020-07-11,11,0,A1,-95.695598,0.0 +2020-07-11,11,0,A2,78.819173,0.0 +2020-07-11,11,0,A3,175.0,0.0 +2020-07-11,11,0,A4,130.367212,0.0 +2020-07-11,11,0,A5,130.1144,0.0 +2020-07-11,11,0,A6,76.424243,0.0 +2020-07-11,11,0,A7,-70.832446,0.0 +2020-07-11,11,0,A8,101.042624,0.0 +2020-07-11,11,0,A9,129.785869,0.0 +2020-07-11,11,0,A10,43.50705,0.0 +2020-07-11,11,0,A11,-27.883438,0.0 +2020-07-11,11,0,AB1,118.281094,0.0 +2020-07-11,11,0,A12-1,-70.119498,0.0 +2020-07-11,11,0,A13-2,-66.659946,0.0 +2020-07-11,11,0,A14,-5.378268,0.0 +2020-07-11,11,0,A15,1.282356,0.0 +2020-07-11,11,0,A16,-12.15287,0.0 +2020-07-11,11,0,A17,-5.393814,0.0 +2020-07-11,11,0,A18,62.694376,0.0 +2020-07-11,11,0,A19,-80.225514,0.0 +2020-07-11,11,0,A20,50.688602,0.0 +2020-07-11,11,0,A21,-54.800059,0.0 +2020-07-11,11,0,A22,-89.065042,0.0 +2020-07-11,11,0,AB2,98.09105,0.0 +2020-07-11,11,0,A23,-203.768352,0.0 +2020-07-11,11,0,A24,174.106728,0.0 +2020-07-11,11,0,A25-1,-192.405359,0.0 +2020-07-11,11,0,A25-2,-192.405359,0.0 +2020-07-11,11,0,A26,70.832446,0.0 +2020-07-11,11,0,A27,-288.251029,0.0 +2020-07-11,11,0,A28,256.90753,0.0 +2020-07-11,11,0,A29,-195.209698,0.0 +2020-07-11,11,0,A30,-93.041331,0.0 +2020-07-11,11,0,A31-1,-83.085171,0.0 +2020-07-11,11,0,A31-2,-83.085171,0.0 +2020-07-11,11,0,A32-1,90.971668,0.0 +2020-07-11,11,0,A32-2,90.971668,0.0 +2020-07-11,11,0,A33-1,50.215268,0.0 +2020-07-11,11,0,A33-2,50.215268,0.0 +2020-07-11,11,0,A34,-71.708669,0.0 +2020-07-11,11,0,AB3,159.722819,0.0 +2020-07-11,11,0,B1,37.457756,0.0 +2020-07-11,11,0,B2,-67.582959,0.0 +2020-07-11,11,0,B3,32.042046,0.0 +2020-07-11,11,0,B4,5.416128,0.0 +2020-07-11,11,0,B5,25.398894,0.0 +2020-07-11,11,0,B6,90.320087,0.0 +2020-07-11,11,0,B7,-163.288881,0.0 +2020-07-11,11,0,B8,-45.42472,0.0 +2020-07-11,11,0,B9,-16.737686,0.0 +2020-07-11,11,0,B10,-68.03834,0.0 +2020-07-11,11,0,B11,-85.879811,0.0 +2020-07-11,11,0,B12-1,-116.113732,0.0 +2020-07-11,11,0,B13-2,-87.249662,0.0 +2020-07-11,11,0,B14,-84.069443,0.0 +2020-07-11,11,0,B15,-107.380658,0.0 +2020-07-11,11,0,B16,-141.171239,0.0 +2020-07-11,11,0,B17,-164.826955,0.0 +2020-07-11,11,0,B18,-66.239969,0.0 +2020-07-11,11,0,B19,-159.000713,0.0 +2020-07-11,11,0,B20,-24.221503,0.0 +2020-07-11,11,0,B21,-247.98611,0.0 +2020-07-11,11,0,B22,-263.126673,0.0 +2020-07-11,11,0,B23,-292.28618,0.0 +2020-07-11,11,0,B24,115.559963,0.0 +2020-07-11,11,0,B25-1,-87.848998,0.0 +2020-07-11,11,0,B25-2,-87.848998,0.0 +2020-07-11,11,0,B26,163.288881,0.0 +2020-07-11,11,0,B27,-201.943006,0.0 +2020-07-11,11,0,B28,49.512939,0.0 +2020-07-11,11,0,B29,72.429167,0.0 +2020-07-11,11,0,B30,-114.649353,0.0 +2020-07-11,11,0,B31-1,-78.177325,0.0 +2020-07-11,11,0,B31-2,-78.177325,0.0 +2020-07-11,11,0,B32-1,-37.420514,0.0 +2020-07-11,11,0,B32-2,-37.420514,0.0 +2020-07-11,11,0,B33-1,-81.390977,0.0 +2020-07-11,11,0,B33-2,-81.390977,0.0 +2020-07-11,11,0,B34,-162.052647,0.0 +2020-07-11,11,0,C1,3.517542,0.0 +2020-07-11,11,0,C2,-26.411629,0.0 +2020-07-11,11,0,C3,-45.867158,0.0 +2020-07-11,11,0,C4,-31.83571,0.0 +2020-07-11,11,0,C5,-26.404534,0.0 +2020-07-11,11,0,C6,-55.729624,0.0 +2020-07-11,11,0,C7,-75.384081,0.0 +2020-07-11,11,0,C8,-78.949897,0.0 +2020-07-11,11,0,C9,-91.071311,0.0 +2020-07-11,11,0,C10,-112.992769,0.0 +2020-07-11,11,0,C11,-79.584775,0.0 +2020-07-11,11,0,C12-1,-52.862298,0.0 +2020-07-11,11,0,C13-2,-51.094449,0.0 +2020-07-11,11,0,C14,-134.158901,0.0 +2020-07-11,11,0,C15,-164.101603,0.0 +2020-07-11,11,0,C16,-139.562787,0.0 +2020-07-11,11,0,C17,-169.947991,0.0 +2020-07-11,11,0,C18,-347.128946,0.0 +2020-07-11,11,0,C19,73.407258,0.0 +2020-07-11,11,0,C20,-293.157226,0.0 +2020-07-11,11,0,C21,23.007632,0.0 +2020-07-11,11,0,C22,187.394105,0.0 +2020-07-11,11,0,C23,119.991687,0.0 +2020-07-11,11,0,C24,-184.55412,0.0 +2020-07-11,11,0,C25-1,5.671525,0.0 +2020-07-11,11,0,C25-2,5.671525,0.0 +2020-07-11,11,0,C26,-28.615919,0.0 +2020-07-11,11,0,C27,149.265529,0.0 +2020-07-11,11,0,C28,-215.495783,0.0 +2020-07-11,11,0,C29,218.638241,0.0 +2020-07-11,11,0,C30,-62.672711,0.0 +2020-07-11,11,0,C31-1,-135.635169,0.0 +2020-07-11,11,0,C31-2,-135.635169,0.0 +2020-07-11,11,0,C32-1,-103.067269,0.0 +2020-07-11,11,0,C32-2,-103.067269,0.0 +2020-07-11,11,0,C33-1,-65.564673,0.0 +2020-07-11,11,0,C33-2,-65.564673,0.0 +2020-07-11,11,0,C34,-89.927289,0.0 +2020-07-11,11,0,CA-1,79.27239,0.0 +2020-07-11,11,0,CB-1,277.894738,0.0 +2020-07-11,11,0,C35,79.27239,0.0 +2020-07-11,12,0,A1,-97.09085,0.0 +2020-07-11,12,0,A2,78.724176,0.0 +2020-07-11,12,0,A3,175.0,0.0 +2020-07-11,12,0,A4,130.502713,0.0 +2020-07-11,12,0,A5,130.288315,0.0 +2020-07-11,12,0,A6,75.744155,0.0 +2020-07-11,12,0,A7,-72.597769,0.0 +2020-07-11,12,0,A8,100.094066,0.0 +2020-07-11,12,0,A9,128.937649,0.0 +2020-07-11,12,0,A10,42.056206,0.0 +2020-07-11,12,0,A11,-36.118061,0.0 +2020-07-11,12,0,AB1,125.022373,0.0 +2020-07-11,12,0,A12-1,-75.338049,0.0 +2020-07-11,12,0,A13-2,-71.718912,0.0 +2020-07-11,12,0,A14,-8.053894,0.0 +2020-07-11,12,0,A15,-4.979897,0.0 +2020-07-11,12,0,A16,-15.176877,0.0 +2020-07-11,12,0,A17,-12.057452,0.0 +2020-07-11,12,0,A18,59.961358,0.0 +2020-07-11,12,0,A19,-83.192129,0.0 +2020-07-11,12,0,A20,54.420478,0.0 +2020-07-11,12,0,A21,-71.457828,0.0 +2020-07-11,12,0,A22,-109.696463,0.0 +2020-07-11,12,0,AB2,115.15544,0.0 +2020-07-11,12,0,A23,-209.052637,0.0 +2020-07-11,12,0,A24,144.313309,0.0 +2020-07-11,12,0,A25-1,-180.284871,0.0 +2020-07-11,12,0,A25-2,-180.284871,0.0 +2020-07-11,12,0,A26,72.597769,0.0 +2020-07-11,12,0,A27,-264.273526,0.0 +2020-07-11,12,0,A28,227.657648,0.0 +2020-07-11,12,0,A29,-176.976571,0.0 +2020-07-11,12,0,A30,-87.296955,0.0 +2020-07-11,12,0,A31-1,-74.557741,0.0 +2020-07-11,12,0,A31-2,-74.557741,0.0 +2020-07-11,12,0,A32-1,78.065546,0.0 +2020-07-11,12,0,A32-2,78.065546,0.0 +2020-07-11,12,0,A33-1,36.544554,0.0 +2020-07-11,12,0,A33-2,36.544554,0.0 +2020-07-11,12,0,A34,-69.853045,0.0 +2020-07-11,12,0,AB3,194.934817,0.0 +2020-07-11,12,0,B1,39.537665,0.0 +2020-07-11,12,0,B2,-73.434493,0.0 +2020-07-11,12,0,B3,31.142978,0.0 +2020-07-11,12,0,B4,3.454123,0.0 +2020-07-11,12,0,B5,25.036567,0.0 +2020-07-11,12,0,B6,94.195178,0.0 +2020-07-11,12,0,B7,-174.447047,0.0 +2020-07-11,12,0,B8,-50.746662,0.0 +2020-07-11,12,0,B9,-20.860478,0.0 +2020-07-11,12,0,B10,-74.575688,0.0 +2020-07-11,12,0,B11,-91.555381,0.0 +2020-07-11,12,0,B12-1,-123.846671,0.0 +2020-07-11,12,0,B13-2,-92.956471,0.0 +2020-07-11,12,0,B14,-90.952576,0.0 +2020-07-11,12,0,B15,-117.623113,0.0 +2020-07-11,12,0,B16,-152.077174,0.0 +2020-07-11,12,0,B17,-179.141857,0.0 +2020-07-11,12,0,B18,-74.584053,0.0 +2020-07-11,12,0,B19,-168.445697,0.0 +2020-07-11,12,0,B20,-26.51041,0.0 +2020-07-11,12,0,B21,-270.254561,0.0 +2020-07-11,12,0,B22,-286.691871,0.0 +2020-07-11,12,0,B23,-310.539648,0.0 +2020-07-11,12,0,B24,111.061911,0.0 +2020-07-11,12,0,B25-1,-91.043982,0.0 +2020-07-11,12,0,B25-2,-91.043982,0.0 +2020-07-11,12,0,B26,174.447047,0.0 +2020-07-11,12,0,B27,-217.043319,0.0 +2020-07-11,12,0,B28,37.321277,0.0 +2020-07-11,12,0,B29,91.283876,0.0 +2020-07-11,12,0,B30,-113.392377,0.0 +2020-07-11,12,0,B31-1,-76.30983,0.0 +2020-07-11,12,0,B31-2,-76.30983,0.0 +2020-07-11,12,0,B32-1,-47.625458,0.0 +2020-07-11,12,0,B32-2,-47.625458,0.0 +2020-07-11,12,0,B33-1,-94.501813,0.0 +2020-07-11,12,0,B33-2,-94.501813,0.0 +2020-07-11,12,0,B34,-164.707623,0.0 +2020-07-11,12,0,C1,5.083144,0.0 +2020-07-11,12,0,C2,-31.409114,0.0 +2020-07-11,12,0,C3,-45.034207,0.0 +2020-07-11,12,0,C4,-33.282062,0.0 +2020-07-11,12,0,C5,-25.726804,0.0 +2020-07-11,12,0,C6,-51.048257,0.0 +2020-07-11,12,0,C7,-81.994484,0.0 +2020-07-11,12,0,C8,-82.176997,0.0 +2020-07-11,12,0,C9,-91.946915,0.0 +2020-07-11,12,0,C10,-115.587767,0.0 +2020-07-11,12,0,C11,-82.592796,0.0 +2020-07-11,12,0,C12-1,-57.162081,0.0 +2020-07-11,12,0,C13-2,-52.417661,0.0 +2020-07-11,12,0,C14,-138.362464,0.0 +2020-07-11,12,0,C15,-167.254786,0.0 +2020-07-11,12,0,C16,-149.588902,0.0 +2020-07-11,12,0,C17,-178.908204,0.0 +2020-07-11,12,0,C18,-350.060457,0.0 +2020-07-11,12,0,C19,62.109092,0.0 +2020-07-11,12,0,C20,-297.982047,0.0 +2020-07-11,12,0,C21,6.419057,0.0 +2020-07-11,12,0,C22,171.560767,0.0 +2020-07-11,12,0,C23,106.925072,0.0 +2020-07-11,12,0,C24,-187.561115,0.0 +2020-07-11,12,0,C25-1,-0.84435,0.0 +2020-07-11,12,0,C25-2,-0.84435,0.0 +2020-07-11,12,0,C26,-20.205516,0.0 +2020-07-11,12,0,C27,139.16797,0.0 +2020-07-11,12,0,C28,-223.878251,0.0 +2020-07-11,12,0,C29,201.371447,0.0 +2020-07-11,12,0,C30,-59.403477,0.0 +2020-07-11,12,0,C31-1,-126.553911,0.0 +2020-07-11,12,0,C31-2,-126.553911,0.0 +2020-07-11,12,0,C32-1,-103.13631,0.0 +2020-07-11,12,0,C32-2,-103.13631,0.0 +2020-07-11,12,0,C33-1,-69.073822,0.0 +2020-07-11,12,0,C33-2,-69.073822,0.0 +2020-07-11,12,0,C34,-84.796523,0.0 +2020-07-11,12,0,CA-1,39.832181,0.0 +2020-07-11,12,0,CB-1,234.452059,0.0 +2020-07-11,12,0,C35,39.832181,0.0 +2020-07-11,13,0,A1,-102.936153,0.0 +2020-07-11,13,0,A2,77.186431,0.0 +2020-07-11,13,0,A3,175.0,0.0 +2020-07-11,13,0,A4,130.69725,0.0 +2020-07-11,13,0,A5,130.685452,0.0 +2020-07-11,13,0,A6,77.309841,0.0 +2020-07-11,13,0,A7,-79.539612,0.0 +2020-07-11,13,0,A8,99.315034,0.0 +2020-07-11,13,0,A9,128.291387,0.0 +2020-07-11,13,0,A10,41.215433,0.0 +2020-07-11,13,0,A11,-40.116413,0.0 +2020-07-11,13,0,AB1,127.88294,0.0 +2020-07-11,13,0,A12-1,-78.361763,0.0 +2020-07-11,13,0,A13-2,-74.250042,0.0 +2020-07-11,13,0,A14,-9.877447,0.0 +2020-07-11,13,0,A15,-6.986305,0.0 +2020-07-11,13,0,A16,-17.980655,0.0 +2020-07-11,13,0,A17,-15.046787,0.0 +2020-07-11,13,0,A18,64.215684,0.0 +2020-07-11,13,0,A19,-92.073785,0.0 +2020-07-11,13,0,A20,59.004401,0.0 +2020-07-11,13,0,A21,-81.037492,0.0 +2020-07-11,13,0,A22,-122.906299,0.0 +2020-07-11,13,0,AB2,131.79142,0.0 +2020-07-11,13,0,A23,-219.700136,0.0 +2020-07-11,13,0,A24,143.145561,0.0 +2020-07-11,13,0,A25-1,-169.114631,0.0 +2020-07-11,13,0,A25-2,-169.114631,0.0 +2020-07-11,13,0,A26,79.539612,0.0 +2020-07-11,13,0,A27,-252.75776,0.0 +2020-07-11,13,0,A28,234.416405,0.0 +2020-07-11,13,0,A29,-163.432594,0.0 +2020-07-11,13,0,A30,-89.325166,0.0 +2020-07-11,13,0,A31-1,-71.551284,0.0 +2020-07-11,13,0,A31-2,-71.551284,0.0 +2020-07-11,13,0,A32-1,76.671168,0.0 +2020-07-11,13,0,A32-2,76.671168,0.0 +2020-07-11,13,0,A33-1,34.567629,0.0 +2020-07-11,13,0,A33-2,34.567629,0.0 +2020-07-11,13,0,A34,-76.922834,0.0 +2020-07-11,13,0,AB3,223.761968,0.0 +2020-07-11,13,0,B1,9.657172,0.0 +2020-07-11,13,0,B2,-63.573052,0.0 +2020-07-11,13,0,B3,47.046823,0.0 +2020-07-11,13,0,B4,17.937599,0.0 +2020-07-11,13,0,B5,37.912189,0.0 +2020-07-11,13,0,B6,98.535548,0.0 +2020-07-11,13,0,B7,-173.785755,0.0 +2020-07-11,13,0,B8,-39.437107,0.0 +2020-07-11,13,0,B9,-8.00188,0.0 +2020-07-11,13,0,B10,-67.533216,0.0 +2020-07-11,13,0,B11,-96.916732,0.0 +2020-07-11,13,0,B12-1,-129.849405,0.0 +2020-07-11,13,0,B13-2,-99.649416,0.0 +2020-07-11,13,0,B14,-89.614787,0.0 +2020-07-11,13,0,B15,-116.819602,0.0 +2020-07-11,13,0,B16,-149.383879,0.0 +2020-07-11,13,0,B17,-176.990735,0.0 +2020-07-11,13,0,B18,-71.258903,0.0 +2020-07-11,13,0,B19,-167.739763,0.0 +2020-07-11,13,0,B20,-22.222224,0.0 +2020-07-11,13,0,B21,-271.588113,0.0 +2020-07-11,13,0,B22,-290.544599,0.0 +2020-07-11,13,0,B23,-318.154531,0.0 +2020-07-11,13,0,B24,118.22966,0.0 +2020-07-11,13,0,B25-1,-92.451914,0.0 +2020-07-11,13,0,B25-2,-92.451914,0.0 +2020-07-11,13,0,B26,173.785755,0.0 +2020-07-11,13,0,B27,-231.873966,0.0 +2020-07-11,13,0,B28,47.415709,0.0 +2020-07-11,13,0,B29,105.373903,0.0 +2020-07-11,13,0,B30,-113.485901,0.0 +2020-07-11,13,0,B31-1,-76.406136,0.0 +2020-07-11,13,0,B31-2,-76.406136,0.0 +2020-07-11,13,0,B32-1,-46.45986,0.0 +2020-07-11,13,0,B32-2,-46.45986,0.0 +2020-07-11,13,0,B33-1,-96.081227,0.0 +2020-07-11,13,0,B33-2,-96.081227,0.0 +2020-07-11,13,0,B34,-167.716099,0.0 +2020-07-11,13,0,C1,6.721455,0.0 +2020-07-11,13,0,C2,-36.860319,0.0 +2020-07-11,13,0,C3,-42.563244,0.0 +2020-07-11,13,0,C4,-34.548558,0.0 +2020-07-11,13,0,C5,-24.02725,0.0 +2020-07-11,13,0,C6,-44.451997,0.0 +2020-07-11,13,0,C7,-98.078501,0.0 +2020-07-11,13,0,C8,-84.362965,0.0 +2020-07-11,13,0,C9,-90.358148,0.0 +2020-07-11,13,0,C10,-115.578052,0.0 +2020-07-11,13,0,C11,-84.145958,0.0 +2020-07-11,13,0,C12-1,-63.317972,0.0 +2020-07-11,13,0,C13-2,-54.239656,0.0 +2020-07-11,13,0,C14,-140.05892,0.0 +2020-07-11,13,0,C15,-169.078355,0.0 +2020-07-11,13,0,C16,-159.697629,0.0 +2020-07-11,13,0,C17,-189.145922,0.0 +2020-07-11,13,0,C18,-344.837999,0.0 +2020-07-11,13,0,C19,45.08145,0.0 +2020-07-11,13,0,C20,-292.530468,0.0 +2020-07-11,13,0,C21,-10.093809,0.0 +2020-07-11,13,0,C22,150.142103,0.0 +2020-07-11,13,0,C23,71.686923,0.0 +2020-07-11,13,0,C24,-190.33418,0.0 +2020-07-11,13,0,C25-1,-8.519235,0.0 +2020-07-11,13,0,C25-2,-8.519235,0.0 +2020-07-11,13,0,C26,-6.021499,0.0 +2020-07-11,13,0,C27,126.266467,0.0 +2020-07-11,13,0,C28,-188.23049,0.0 +2020-07-11,13,0,C29,203.529274,0.0 +2020-07-11,13,0,C30,-70.462807,0.0 +2020-07-11,13,0,C31-1,-127.465362,0.0 +2020-07-11,13,0,C31-2,-127.465362,0.0 +2020-07-11,13,0,C32-1,-94.786919,0.0 +2020-07-11,13,0,C32-2,-94.786919,0.0 +2020-07-11,13,0,C33-1,-67.819649,0.0 +2020-07-11,13,0,C33-2,-67.819649,0.0 +2020-07-11,13,0,C34,-101.969193,0.0 +2020-07-11,13,0,CA-1,4.408996,0.0 +2020-07-11,13,0,CB-1,234.295165,0.0 +2020-07-11,13,0,C35,4.408996,0.0 +2020-07-11,14,0,A1,-122.002251,0.0 +2020-07-11,14,0,A2,79.066161,0.0 +2020-07-11,14,0,A3,175.0,0.0 +2020-07-11,14,0,A4,131.141645,0.0 +2020-07-11,14,0,A5,133.103606,0.0 +2020-07-11,14,0,A6,62.492697,0.0 +2020-07-11,14,0,A7,-93.553353,0.0 +2020-07-11,14,0,A8,88.198398,0.0 +2020-07-11,14,0,A9,116.335533,0.0 +2020-07-11,14,0,A10,20.732232,0.0 +2020-07-11,14,0,A11,21.602056,0.0 +2020-07-11,14,0,AB1,106.815432,0.0 +2020-07-11,14,0,A12-1,-62.853107,0.0 +2020-07-11,14,0,A13-2,-56.835313,0.0 +2020-07-11,14,0,A14,-22.564466,0.0 +2020-07-11,14,0,A15,-34.193064,0.0 +2020-07-11,14,0,A16,-34.543909,0.0 +2020-07-11,14,0,A17,-46.344358,0.0 +2020-07-11,14,0,A18,13.985635,0.0 +2020-07-11,14,0,A19,-71.09401,0.0 +2020-07-11,14,0,A20,34.946183,0.0 +2020-07-11,14,0,A21,-115.483606,0.0 +2020-07-11,14,0,A22,-148.038236,0.0 +2020-07-11,14,0,AB2,41.711129,0.0 +2020-07-11,14,0,A23,-231.388469,0.0 +2020-07-11,14,0,A24,99.271679,0.0 +2020-07-11,14,0,A25-1,-165.374742,0.0 +2020-07-11,14,0,A25-2,-165.374742,0.0 +2020-07-11,14,0,A26,93.553353,0.0 +2020-07-11,14,0,A27,-232.699681,0.0 +2020-07-11,14,0,A28,172.956882,0.0 +2020-07-11,14,0,A29,-146.181824,0.0 +2020-07-11,14,0,A30,-86.517857,0.0 +2020-07-11,14,0,A31-1,-65.163218,0.0 +2020-07-11,14,0,A31-2,-65.163218,0.0 +2020-07-11,14,0,A32-1,26.051902,0.0 +2020-07-11,14,0,A32-2,26.051902,0.0 +2020-07-11,14,0,A33-1,-26.828744,0.0 +2020-07-11,14,0,A33-2,-26.828744,0.0 +2020-07-11,14,0,A34,-78.582143,0.0 +2020-07-11,14,0,AB3,156.82067,0.0 +2020-07-11,14,0,B1,27.520556,0.0 +2020-07-11,14,0,B2,-49.370369,0.0 +2020-07-11,14,0,B3,57.149616,0.0 +2020-07-11,14,0,B4,26.364316,0.0 +2020-07-11,14,0,B5,44.102824,0.0 +2020-07-11,14,0,B6,89.647751,0.0 +2020-07-11,14,0,B7,-177.786349,0.0 +2020-07-11,14,0,B8,-33.486745,0.0 +2020-07-11,14,0,B9,-0.27505,0.0 +2020-07-11,14,0,B10,-65.89372,0.0 +2020-07-11,14,0,B11,-101.099764,0.0 +2020-07-11,14,0,B12-1,-133.588723,0.0 +2020-07-11,14,0,B13-2,-105.815519,0.0 +2020-07-11,14,0,B14,-93.769128,0.0 +2020-07-11,14,0,B15,-125.198259,0.0 +2020-07-11,14,0,B16,-148.90316,0.0 +2020-07-11,14,0,B17,-180.796761,0.0 +2020-07-11,14,0,B18,-77.728559,0.0 +2020-07-11,14,0,B19,-164.943729,0.0 +2020-07-11,14,0,B20,-21.077551,0.0 +2020-07-11,14,0,B21,-284.917469,0.0 +2020-07-11,14,0,B22,-306.03761,0.0 +2020-07-11,14,0,B23,-321.850563,0.0 +2020-07-11,14,0,B24,61.253635,0.0 +2020-07-11,14,0,B25-1,-124.283929,0.0 +2020-07-11,14,0,B25-2,-124.283929,0.0 +2020-07-11,14,0,B26,177.786349,0.0 +2020-07-11,14,0,B27,-209.393978,0.0 +2020-07-11,14,0,B28,22.917238,0.0 +2020-07-11,14,0,B29,67.196524,0.0 +2020-07-11,14,0,B30,-119.769832,0.0 +2020-07-11,14,0,B31-1,-101.066624,0.0 +2020-07-11,14,0,B31-2,-101.066624,0.0 +2020-07-11,14,0,B32-1,-61.73761,0.0 +2020-07-11,14,0,B32-2,-61.73761,0.0 +2020-07-11,14,0,B33-1,-113.50069,0.0 +2020-07-11,14,0,B33-2,-113.50069,0.0 +2020-07-11,14,0,B34,-160.130168,0.0 +2020-07-11,14,0,C1,12.580102,0.0 +2020-07-11,14,0,C2,-50.36384,0.0 +2020-07-11,14,0,C3,-36.65099,0.0 +2020-07-11,14,0,C4,-34.094498,0.0 +2020-07-11,14,0,C5,-20.178813,0.0 +2020-07-11,14,0,C6,-19.975638,0.0 +2020-07-11,14,0,C7,-122.146081,0.0 +2020-07-11,14,0,C8,-85.096071,0.0 +2020-07-11,14,0,C9,-85.584931,0.0 +2020-07-11,14,0,C10,-113.911433,0.0 +2020-07-11,14,0,C11,-86.151305,0.0 +2020-07-11,14,0,C12-1,-75.445761,0.0 +2020-07-11,14,0,C13-2,-61.16053,0.0 +2020-07-11,14,0,C14,-137.915195,0.0 +2020-07-11,14,0,C15,-162.014103,0.0 +2020-07-11,14,0,C16,-167.598941,0.0 +2020-07-11,14,0,C17,-192.053991,0.0 +2020-07-11,14,0,C18,-306.091974,0.0 +2020-07-11,14,0,C19,0.577839,0.0 +2020-07-11,14,0,C20,-262.653692,0.0 +2020-07-11,14,0,C21,-30.314402,0.0 +2020-07-11,14,0,C22,111.113566,0.0 +2020-07-11,14,0,C23,14.271013,0.0 +2020-07-11,14,0,C24,-120.229027,0.0 +2020-07-11,14,0,C25-1,-58.598383,0.0 +2020-07-11,14,0,C25-2,-58.598383,0.0 +2020-07-11,14,0,C26,18.946081,0.0 +2020-07-11,14,0,C27,37.760302,0.0 +2020-07-11,14,0,C28,-88.63936,0.0 +2020-07-11,14,0,C29,119.549291,0.0 +2020-07-11,14,0,C30,-76.688989,0.0 +2020-07-11,14,0,C31-1,-133.957123,0.0 +2020-07-11,14,0,C31-2,-133.957123,0.0 +2020-07-11,14,0,C32-1,-69.293225,0.0 +2020-07-11,14,0,C32-2,-69.293225,0.0 +2020-07-11,14,0,C33-1,-49.152693,0.0 +2020-07-11,14,0,C33-2,-49.152693,0.0 +2020-07-11,14,0,C34,-91.811011,0.0 +2020-07-11,14,0,CA-1,-17.506223,0.0 +2020-07-11,14,0,CB-1,157.956459,0.0 +2020-07-11,14,0,C35,-17.506223,0.0 +2020-07-11,15,0,A1,-123.455865,0.0 +2020-07-11,15,0,A2,76.231198,0.0 +2020-07-11,15,0,A3,175.0,0.0 +2020-07-11,15,0,A4,133.082941,0.0 +2020-07-11,15,0,A5,132.853396,0.0 +2020-07-11,15,0,A6,69.913037,0.0 +2020-07-11,15,0,A7,-103.456285,0.0 +2020-07-11,15,0,A8,88.762336,0.0 +2020-07-11,15,0,A9,119.235635,0.0 +2020-07-11,15,0,A10,26.037148,0.0 +2020-07-11,15,0,A11,6.220403,0.0 +2020-07-11,15,0,AB1,127.302899,0.0 +2020-07-11,15,0,A12-1,-66.961756,0.0 +2020-07-11,15,0,A13-2,-61.123564,0.0 +2020-07-11,15,0,A14,-20.534832,0.0 +2020-07-11,15,0,A15,-25.198928,0.0 +2020-07-11,15,0,A16,-32.136703,0.0 +2020-07-11,15,0,A17,-36.869726,0.0 +2020-07-11,15,0,A18,38.859505,0.0 +2020-07-11,15,0,A19,-91.531041,0.0 +2020-07-11,15,0,A20,47.266537,0.0 +2020-07-11,15,0,A21,-109.335191,0.0 +2020-07-11,15,0,A22,-147.980543,0.0 +2020-07-11,15,0,AB2,85.271985,0.0 +2020-07-11,15,0,A23,-243.901277,0.0 +2020-07-11,15,0,A24,147.582842,0.0 +2020-07-11,15,0,A25-1,-188.007617,0.0 +2020-07-11,15,0,A25-2,-188.007617,0.0 +2020-07-11,15,0,A26,103.456285,0.0 +2020-07-11,15,0,A27,-271.597682,0.0 +2020-07-11,15,0,A28,220.737889,0.0 +2020-07-11,15,0,A29,-180.121718,0.0 +2020-07-11,15,0,A30,-91.475964,0.0 +2020-07-11,15,0,A31-1,-82.232221,0.0 +2020-07-11,15,0,A31-2,-82.232221,0.0 +2020-07-11,15,0,A32-1,52.489015,0.0 +2020-07-11,15,0,A32-2,52.489015,0.0 +2020-07-11,15,0,A33-1,2.222546,0.0 +2020-07-11,15,0,A33-2,2.222546,0.0 +2020-07-11,15,0,A34,-72.724036,0.0 +2020-07-11,15,0,AB3,201.470347,0.0 +2020-07-11,15,0,B1,24.483459,0.0 +2020-07-11,15,0,B2,-59.25801,0.0 +2020-07-11,15,0,B3,54.818639,0.0 +2020-07-11,15,0,B4,23.068907,0.0 +2020-07-11,15,0,B5,42.806697,0.0 +2020-07-11,15,0,B6,99.38896,0.0 +2020-07-11,15,0,B7,-179.812257,0.0 +2020-07-11,15,0,B8,-37.968014,0.0 +2020-07-11,15,0,B9,-3.743811,0.0 +2020-07-11,15,0,B10,-69.369266,0.0 +2020-07-11,15,0,B11,-103.102907,0.0 +2020-07-11,15,0,B12-1,-137.244395,0.0 +2020-07-11,15,0,B13-2,-106.903287,0.0 +2020-07-11,15,0,B14,-94.492421,0.0 +2020-07-11,15,0,B15,-125.675097,0.0 +2020-07-11,15,0,B16,-154.606698,0.0 +2020-07-11,15,0,B17,-186.250201,0.0 +2020-07-11,15,0,B18,-77.641459,0.0 +2020-07-11,15,0,B19,-171.45766,0.0 +2020-07-11,15,0,B20,-21.434685,0.0 +2020-07-11,15,0,B21,-290.490613,0.0 +2020-07-11,15,0,B22,-312.054306,0.0 +2020-07-11,15,0,B23,-331.473371,0.0 +2020-07-11,15,0,B24,92.628337,0.0 +2020-07-11,15,0,B25-1,-110.38129,0.0 +2020-07-11,15,0,B25-2,-110.38129,0.0 +2020-07-11,15,0,B26,179.812257,0.0 +2020-07-11,15,0,B27,-228.291624,0.0 +2020-07-11,15,0,B28,30.964265,0.0 +2020-07-11,15,0,B29,93.439894,0.0 +2020-07-11,15,0,B30,-120.261172,0.0 +2020-07-11,15,0,B31-1,-90.613124,0.0 +2020-07-11,15,0,B31-2,-90.613124,0.0 +2020-07-11,15,0,B32-1,-59.164372,0.0 +2020-07-11,15,0,B32-2,-59.164372,0.0 +2020-07-11,15,0,B33-1,-111.95306,0.0 +2020-07-11,15,0,B33-2,-111.95306,0.0 +2020-07-11,15,0,B34,-170.288828,0.0 +2020-07-11,15,0,C1,10.288091,0.0 +2020-07-11,15,0,C2,-43.506943,0.0 +2020-07-11,15,0,C3,-41.453687,0.0 +2020-07-11,15,0,C4,-33.460696,0.0 +2020-07-11,15,0,C5,-23.318216,0.0 +2020-07-11,15,0,C6,-31.315398,0.0 +2020-07-11,15,0,C7,-114.845775,0.0 +2020-07-11,15,0,C8,-84.625213,0.0 +2020-07-11,15,0,C9,-90.543967,0.0 +2020-07-11,15,0,C10,-117.350301,0.0 +2020-07-11,15,0,C11,-86.426549,0.0 +2020-07-11,15,0,C12-1,-76.017109,0.0 +2020-07-11,15,0,C13-2,-67.440959,0.0 +2020-07-11,15,0,C14,-137.952472,0.0 +2020-07-11,15,0,C15,-174.102417,0.0 +2020-07-11,15,0,C16,-156.588231,0.0 +2020-07-11,15,0,C17,-193.272413,0.0 +2020-07-11,15,0,C18,-304.856521,0.0 +2020-07-11,15,0,C19,10.315818,0.0 +2020-07-11,15,0,C20,-239.696243,0.0 +2020-07-11,15,0,C21,-84.778587,0.0 +2020-07-11,15,0,C22,37.722951,0.0 +2020-07-11,15,0,C23,15.481814,0.0 +2020-07-11,15,0,C24,-191.326925,0.0 +2020-07-11,15,0,C25-1,-26.14829,0.0 +2020-07-11,15,0,C25-2,-26.14829,0.0 +2020-07-11,15,0,C26,24.445775,0.0 +2020-07-11,15,0,C27,111.755945,0.0 +2020-07-11,15,0,C28,-232.742296,0.0 +2020-07-11,15,0,C29,190.097211,0.0 +2020-07-11,15,0,C30,-71.841266,0.0 +2020-07-11,15,0,C31-1,-138.297077,0.0 +2020-07-11,15,0,C31-2,-138.297077,0.0 +2020-07-11,15,0,C32-1,-121.69397,0.0 +2020-07-11,15,0,C32-2,-121.69397,0.0 +2020-07-11,15,0,C33-1,-112.594363,0.0 +2020-07-11,15,0,C33-2,-112.594363,0.0 +2020-07-11,15,0,C34,-97.190734,0.0 +2020-07-11,15,0,CA-1,67.755639,0.0 +2020-07-11,15,0,CB-1,236.451039,0.0 +2020-07-11,15,0,C35,67.755639,0.0 +2020-07-11,16,0,A1,-136.653751,0.0 +2020-07-11,16,0,A2,86.322712,0.0 +2020-07-11,16,0,A3,175.0,0.0 +2020-07-11,16,0,A4,135.841861,0.0 +2020-07-11,16,0,A5,133.284381,0.0 +2020-07-11,16,0,A6,58.213994,0.0 +2020-07-11,16,0,A7,-86.60968,0.0 +2020-07-11,16,0,A8,94.257631,0.0 +2020-07-11,16,0,A9,121.861076,0.0 +2020-07-11,16,0,A10,31.497147,0.0 +2020-07-11,16,0,A11,8.477086,0.0 +2020-07-11,16,0,AB1,129.668471,0.0 +2020-07-11,16,0,A12-1,-61.138203,0.0 +2020-07-11,16,0,A13-2,-58.36719,0.0 +2020-07-11,16,0,A14,-15.586711,0.0 +2020-07-11,16,0,A15,-24.056086,0.0 +2020-07-11,16,0,A16,-21.179679,0.0 +2020-07-11,16,0,A17,-29.774218,0.0 +2020-07-11,16,0,A18,34.048514,0.0 +2020-07-11,16,0,A19,-70.814904,0.0 +2020-07-11,16,0,A20,49.314562,0.0 +2020-07-11,16,0,A21,-103.144866,0.0 +2020-07-11,16,0,A22,-142.208632,0.0 +2020-07-11,16,0,AB2,80.236288,0.0 +2020-07-11,16,0,A23,-216.0114,0.0 +2020-07-11,16,0,A24,102.826423,0.0 +2020-07-11,16,0,A25-1,-151.345085,0.0 +2020-07-11,16,0,A25-2,-151.345085,0.0 +2020-07-11,16,0,A26,86.60968,0.0 +2020-07-11,16,0,A27,-217.960852,0.0 +2020-07-11,16,0,A28,184.932321,0.0 +2020-07-11,16,0,A29,-134.89625,0.0 +2020-07-11,16,0,A30,-83.064602,0.0 +2020-07-11,16,0,A31-1,-61.862643,0.0 +2020-07-11,16,0,A31-2,-61.862643,0.0 +2020-07-11,16,0,A32-1,28.732744,0.0 +2020-07-11,16,0,A32-2,28.732744,0.0 +2020-07-11,16,0,A33-1,-19.167131,0.0 +2020-07-11,16,0,A33-2,-19.167131,0.0 +2020-07-11,16,0,A34,-76.835398,0.0 +2020-07-11,16,0,AB3,190.312239,0.0 +2020-07-11,16,0,B1,31.976493,0.0 +2020-07-11,16,0,B2,-55.528974,0.0 +2020-07-11,16,0,B3,60.695733,0.0 +2020-07-11,16,0,B4,27.387147,0.0 +2020-07-11,16,0,B5,46.37772,0.0 +2020-07-11,16,0,B6,102.305148,0.0 +2020-07-11,16,0,B7,-175.898565,0.0 +2020-07-11,16,0,B8,-33.347495,0.0 +2020-07-11,16,0,B9,2.423305,0.0 +2020-07-11,16,0,B10,-65.242704,0.0 +2020-07-11,16,0,B11,-102.592302,0.0 +2020-07-11,16,0,B12-1,-136.362282,0.0 +2020-07-11,16,0,B13-2,-106.576288,0.0 +2020-07-11,16,0,B14,-91.518743,0.0 +2020-07-11,16,0,B15,-119.515108,0.0 +2020-07-11,16,0,B16,-150.514787,0.0 +2020-07-11,16,0,B17,-178.924891,0.0 +2020-07-11,16,0,B18,-69.14099,0.0 +2020-07-11,16,0,B19,-172.89254,0.0 +2020-07-11,16,0,B20,-18.677542,0.0 +2020-07-11,16,0,B21,-279.762458,0.0 +2020-07-11,16,0,B22,-301.614211,0.0 +2020-07-11,16,0,B23,-332.115792,0.0 +2020-07-11,16,0,B24,90.801742,0.0 +2020-07-11,16,0,B25-1,-111.194548,0.0 +2020-07-11,16,0,B25-2,-111.194548,0.0 +2020-07-11,16,0,B26,175.898565,0.0 +2020-07-11,16,0,B27,-225.015251,0.0 +2020-07-11,16,0,B28,56.62736,0.0 +2020-07-11,16,0,B29,89.304098,0.0 +2020-07-11,16,0,B30,-124.00711,0.0 +2020-07-11,16,0,B31-1,-92.000897,0.0 +2020-07-11,16,0,B31-2,-92.000897,0.0 +2020-07-11,16,0,B32-1,-45.963146,0.0 +2020-07-11,16,0,B32-2,-45.963146,0.0 +2020-07-11,16,0,B33-1,-98.490405,0.0 +2020-07-11,16,0,B33-2,-98.490405,0.0 +2020-07-11,16,0,B34,-174.69089,0.0 +2020-07-11,16,0,C1,14.701101,0.0 +2020-07-11,16,0,C2,-51.984866,0.0 +2020-07-11,16,0,C3,-36.046842,0.0 +2020-07-11,16,0,C4,-31.194824,0.0 +2020-07-11,16,0,C5,-19.965824,0.0 +2020-07-11,16,0,C6,-10.561908,0.0 +2020-07-11,16,0,C7,-128.740636,0.0 +2020-07-11,16,0,C8,-81.43987,0.0 +2020-07-11,16,0,C9,-84.254926,0.0 +2020-07-11,16,0,C10,-112.30807,0.0 +2020-07-11,16,0,C11,-84.873388,0.0 +2020-07-11,16,0,C12-1,-85.834814,0.0 +2020-07-11,16,0,C13-2,-75.245368,0.0 +2020-07-11,16,0,C14,-127.629482,0.0 +2020-07-11,16,0,C15,-167.729854,0.0 +2020-07-11,16,0,C16,-150.00893,0.0 +2020-07-11,16,0,C17,-190.701919,0.0 +2020-07-11,16,0,C18,-270.086859,0.0 +2020-07-11,16,0,C19,-7.551553,0.0 +2020-07-11,16,0,C20,-197.805938,0.0 +2020-07-11,16,0,C21,-115.125835,0.0 +2020-07-11,16,0,C22,-19.224379,0.0 +2020-07-11,16,0,C23,-48.375051,0.0 +2020-07-11,16,0,C24,-132.407262,0.0 +2020-07-11,16,0,C25-1,-62.986143,0.0 +2020-07-11,16,0,C25-2,-62.986143,0.0 +2020-07-11,16,0,C26,43.140636,0.0 +2020-07-11,16,0,C27,29.381688,0.0 +2020-07-11,16,0,C28,-154.062712,0.0 +2020-07-11,16,0,C29,106.617072,0.0 +2020-07-11,16,0,C30,-73.235384,0.0 +2020-07-11,16,0,C31-1,-118.921556,0.0 +2020-07-11,16,0,C31-2,-118.921556,0.0 +2020-07-11,16,0,C32-1,-127.629689,0.0 +2020-07-11,16,0,C32-2,-127.629689,0.0 +2020-07-11,16,0,C33-1,-128.034863,0.0 +2020-07-11,16,0,C33-2,-128.034863,0.0 +2020-07-11,16,0,C34,-89.564616,0.0 +2020-07-11,16,0,CA-1,-50.419941,0.0 +2020-07-11,16,0,CB-1,118.357479,0.0 +2020-07-11,16,0,C35,-50.419941,0.0 +2020-07-11,17,0,A1,-158.124526,0.0 +2020-07-11,17,0,A2,97.543482,0.0 +2020-07-11,17,0,A3,175.0,0.0 +2020-07-11,17,0,A4,140.372698,0.0 +2020-07-11,17,0,A5,134.363807,0.0 +2020-07-11,17,0,A6,43.44572,0.0 +2020-07-11,17,0,A7,-69.803979,0.0 +2020-07-11,17,0,A8,97.481982,0.0 +2020-07-11,17,0,A9,122.814313,0.0 +2020-07-11,17,0,A10,34.402492,0.0 +2020-07-11,17,0,A11,39.833939,0.0 +2020-07-11,17,0,AB1,139.888933,0.0 +2020-07-11,17,0,A12-1,-42.717097,0.0 +2020-07-11,17,0,A13-2,-43.135618,0.0 +2020-07-11,17,0,A14,-8.440958,0.0 +2020-07-11,17,0,A15,-21.975129,0.0 +2020-07-11,17,0,A16,-7.755757,0.0 +2020-07-11,17,0,A17,-21.489941,0.0 +2020-07-11,17,0,A18,28.199871,0.0 +2020-07-11,17,0,A19,-44.396586,0.0 +2020-07-11,17,0,A20,52.595215,0.0 +2020-07-11,17,0,A21,-96.060285,0.0 +2020-07-11,17,0,A22,-136.119747,0.0 +2020-07-11,17,0,AB2,55.537269,0.0 +2020-07-11,17,0,A23,-186.988462,0.0 +2020-07-11,17,0,A24,66.120434,0.0 +2020-07-11,17,0,A25-1,-122.461239,0.0 +2020-07-11,17,0,A25-2,-122.461239,0.0 +2020-07-11,17,0,A26,69.803979,0.0 +2020-07-11,17,0,A27,-174.90945,0.0 +2020-07-11,17,0,A28,135.540455,0.0 +2020-07-11,17,0,A29,-97.00539,0.0 +2020-07-11,17,0,A30,-77.90406,0.0 +2020-07-11,17,0,A31-1,-46.881805,0.0 +2020-07-11,17,0,A31-2,-46.881805,0.0 +2020-07-11,17,0,A32-1,5.251852,0.0 +2020-07-11,17,0,A32-2,5.251852,0.0 +2020-07-11,17,0,A33-1,-41.788767,0.0 +2020-07-11,17,0,A33-2,-41.788767,0.0 +2020-07-11,17,0,A34,-82.39594,0.0 +2020-07-11,17,0,AB3,158.242434,0.0 +2020-07-11,17,0,B1,32.082476,0.0 +2020-07-11,17,0,B2,-54.529058,0.0 +2020-07-11,17,0,B3,63.360329,0.0 +2020-07-11,17,0,B4,29.524108,0.0 +2020-07-11,17,0,B5,47.897567,0.0 +2020-07-11,17,0,B6,107.060296,0.0 +2020-07-11,17,0,B7,-162.844177,0.0 +2020-07-11,17,0,B8,-28.501658,0.0 +2020-07-11,17,0,B9,7.686959,0.0 +2020-07-11,17,0,B10,-58.744381,0.0 +2020-07-11,17,0,B11,-98.016496,0.0 +2020-07-11,17,0,B12-1,-130.68043,0.0 +2020-07-11,17,0,B13-2,-101.422634,0.0 +2020-07-11,17,0,B14,-83.482093,0.0 +2020-07-11,17,0,B15,-105.862794,0.0 +2020-07-11,17,0,B16,-141.337169,0.0 +2020-07-11,17,0,B17,-164.04862,0.0 +2020-07-11,17,0,B18,-55.17745,0.0 +2020-07-11,17,0,B19,-169.641812,0.0 +2020-07-11,17,0,B20,-14.836235,0.0 +2020-07-11,17,0,B21,-255.07518,0.0 +2020-07-11,17,0,B22,-276.208657,0.0 +2020-07-11,17,0,B23,-321.763415,0.0 +2020-07-11,17,0,B24,103.546984,0.0 +2020-07-11,17,0,B25-1,-127.511863,0.0 +2020-07-11,17,0,B25-2,-127.511863,0.0 +2020-07-11,17,0,B26,162.844177,0.0 +2020-07-11,17,0,B27,-233.002761,0.0 +2020-07-11,17,0,B28,91.373133,0.0 +2020-07-11,17,0,B29,53.488854,0.0 +2020-07-11,17,0,B30,-128.249181,0.0 +2020-07-11,17,0,B31-1,-103.813546,0.0 +2020-07-11,17,0,B31-2,-103.813546,0.0 +2020-07-11,17,0,B32-1,-25.277377,0.0 +2020-07-11,17,0,B32-2,-25.277377,0.0 +2020-07-11,17,0,B33-1,-75.461823,0.0 +2020-07-11,17,0,B33-2,-75.461823,0.0 +2020-07-11,17,0,B34,-169.350819,0.0 +2020-07-11,17,0,C1,18.004684,0.0 +2020-07-11,17,0,C2,-59.79762,0.0 +2020-07-11,17,0,C3,-30.008888,0.0 +2020-07-11,17,0,C4,-30.349494,0.0 +2020-07-11,17,0,C5,-16.134498,0.0 +2020-07-11,17,0,C6,6.236011,0.0 +2020-07-11,17,0,C7,-156.303338,0.0 +2020-07-11,17,0,C8,-79.547041,0.0 +2020-07-11,17,0,C9,-77.21194,0.0 +2020-07-11,17,0,C10,-106.55161,0.0 +2020-07-11,17,0,C11,-83.103964,0.0 +2020-07-11,17,0,C12-1,-95.961172,0.0 +2020-07-11,17,0,C13-2,-80.629013,0.0 +2020-07-11,17,0,C14,-124.439694,0.0 +2020-07-11,17,0,C15,-157.978058,0.0 +2020-07-11,17,0,C16,-155.950371,0.0 +2020-07-11,17,0,C17,-189.984375,0.0 +2020-07-11,17,0,C18,-217.596972,0.0 +2020-07-11,17,0,C19,-62.793093,0.0 +2020-07-11,17,0,C20,-157.144071,0.0 +2020-07-11,17,0,C21,-162.718362,0.0 +2020-07-11,17,0,C22,-94.721445,0.0 +2020-07-11,17,0,C23,-113.570444,0.0 +2020-07-11,17,0,C24,-106.976883,0.0 +2020-07-11,17,0,C25-1,-92.439053,0.0 +2020-07-11,17,0,C25-2,-92.439053,0.0 +2020-07-11,17,0,C26,81.103338,0.0 +2020-07-11,17,0,C27,-31.593452,0.0 +2020-07-11,17,0,C28,-131.437046,0.0 +2020-07-11,17,0,C29,47.306552,0.0 +2020-07-11,17,0,C30,-74.900005,0.0 +2020-07-11,17,0,C31-1,-98.144945,0.0 +2020-07-11,17,0,C31-2,-98.144945,0.0 +2020-07-11,17,0,C32-1,-95.885792,0.0 +2020-07-11,17,0,C32-2,-95.885792,0.0 +2020-07-11,17,0,C33-1,-113.135022,0.0 +2020-07-11,17,0,C33-2,-113.135022,0.0 +2020-07-11,17,0,C34,-87.867995,0.0 +2020-07-11,17,0,CA-1,-143.709851,0.0 +2020-07-11,17,0,CB-1,22.207483,0.0 +2020-07-11,17,0,C35,-143.709851,0.0 +2020-07-11,18,0,A1,-175.0,0.0 +2020-07-11,18,0,A2,95.724188,0.0 +2020-07-11,18,0,A3,167.62187,0.0 +2020-07-11,18,0,A4,139.829086,0.0 +2020-07-11,18,0,A5,129.935671,0.0 +2020-07-11,18,0,A6,39.694965,0.0 +2020-07-11,18,0,A7,-69.127348,0.0 +2020-07-11,18,0,A8,92.434718,0.0 +2020-07-11,18,0,A9,118.215111,0.0 +2020-07-11,18,0,A10,35.297374,0.0 +2020-07-11,18,0,A11,25.509137,0.0 +2020-07-11,18,0,AB1,119.207134,0.0 +2020-07-11,18,0,A12-1,-45.921952,0.0 +2020-07-11,18,0,A13-2,-47.562654,0.0 +2020-07-11,18,0,A14,-10.699504,0.0 +2020-07-11,18,0,A15,-24.869985,0.0 +2020-07-11,18,0,A16,-7.682445,0.0 +2020-07-11,18,0,A17,-22.062342,0.0 +2020-07-11,18,0,A18,24.984883,0.0 +2020-07-11,18,0,A19,-43.366832,0.0 +2020-07-11,18,0,A20,50.527175,0.0 +2020-07-11,18,0,A21,-97.459502,0.0 +2020-07-11,18,0,A22,-136.538806,0.0 +2020-07-11,18,0,AB2,45.145356,0.0 +2020-07-11,18,0,A23,-178.365581,0.0 +2020-07-11,18,0,A24,55.377842,0.0 +2020-07-11,18,0,A25-1,-110.547964,0.0 +2020-07-11,18,0,A25-2,-110.547964,0.0 +2020-07-11,18,0,A26,69.127348,0.0 +2020-07-11,18,0,A27,-158.865184,0.0 +2020-07-11,18,0,A28,121.290461,0.0 +2020-07-11,18,0,A29,-82.546601,0.0 +2020-07-11,18,0,A30,-76.318582,0.0 +2020-07-11,18,0,A31-1,-41.235629,0.0 +2020-07-11,18,0,A31-2,-41.235629,0.0 +2020-07-11,18,0,A32-1,-2.33099,0.0 +2020-07-11,18,0,A32-2,-2.33099,0.0 +2020-07-11,18,0,A33-1,-46.866659,0.0 +2020-07-11,18,0,A33-2,-46.866659,0.0 +2020-07-11,18,0,A34,-85.083418,0.0 +2020-07-11,18,0,AB3,146.268373,0.0 +2020-07-11,18,0,B1,28.794267,0.0 +2020-07-11,18,0,B2,-45.871814,0.0 +2020-07-11,18,0,B3,62.860116,0.0 +2020-07-11,18,0,B4,31.101725,0.0 +2020-07-11,18,0,B5,47.375024,0.0 +2020-07-11,18,0,B6,97.281415,0.0 +2020-07-11,18,0,B7,-157.030149,0.0 +2020-07-11,18,0,B8,-23.610608,0.0 +2020-07-11,18,0,B9,10.36585,0.0 +2020-07-11,18,0,B10,-53.177372,0.0 +2020-07-11,18,0,B11,-92.419482,0.0 +2020-07-11,18,0,B12-1,-122.630027,0.0 +2020-07-11,18,0,B13-2,-96.219305,0.0 +2020-07-11,18,0,B14,-79.141412,0.0 +2020-07-11,18,0,B15,-99.205083,0.0 +2020-07-11,18,0,B16,-131.42252,0.0 +2020-07-11,18,0,B17,-151.782698,0.0 +2020-07-11,18,0,B18,-49.185553,0.0 +2020-07-11,18,0,B19,-161.37838,0.0 +2020-07-11,18,0,B20,-13.020787,0.0 +2020-07-11,18,0,B21,-237.966994,0.0 +2020-07-11,18,0,B22,-258.13564,0.0 +2020-07-11,18,0,B23,-304.813415,0.0 +2020-07-11,18,0,B24,89.485185,0.0 +2020-07-11,18,0,B25-1,-130.923391,0.0 +2020-07-11,18,0,B25-2,-130.923391,0.0 +2020-07-11,18,0,B26,157.030149,0.0 +2020-07-11,18,0,B27,-229.314092,0.0 +2020-07-11,18,0,B28,95.050277,0.0 +2020-07-11,18,0,B29,45.420131,0.0 +2020-07-11,18,0,B30,-128.465849,0.0 +2020-07-11,18,0,B31-1,-100.392684,0.0 +2020-07-11,18,0,B31-2,-100.392684,0.0 +2020-07-11,18,0,B32-1,-19.386566,0.0 +2020-07-11,18,0,B32-2,-19.386566,0.0 +2020-07-11,18,0,B33-1,-66.705341,0.0 +2020-07-11,18,0,B33-2,-66.705341,0.0 +2020-07-11,18,0,B34,-169.332151,0.0 +2020-07-11,18,0,C1,18.262629,0.0 +2020-07-11,18,0,C2,-60.328293,0.0 +2020-07-11,18,0,C3,-25.251731,0.0 +2020-07-11,18,0,C4,-28.966393,0.0 +2020-07-11,18,0,C5,-13.231973,0.0 +2020-07-11,18,0,C6,12.577497,0.0 +2020-07-11,18,0,C7,-160.301449,0.0 +2020-07-11,18,0,C8,-75.091275,0.0 +2020-07-11,18,0,C9,-69.506686,0.0 +2020-07-11,18,0,C10,-98.002026,0.0 +2020-07-11,18,0,C11,-77.913652,0.0 +2020-07-11,18,0,C12-1,-100.498437,0.0 +2020-07-11,18,0,C13-2,-82.501091,0.0 +2020-07-11,18,0,C14,-119.447759,0.0 +2020-07-11,18,0,C15,-151.543569,0.0 +2020-07-11,18,0,C16,-156.042484,0.0 +2020-07-11,18,0,C17,-188.612617,0.0 +2020-07-11,18,0,C18,-190.724291,0.0 +2020-07-11,18,0,C19,-84.765952,0.0 +2020-07-11,18,0,C20,-132.871592,0.0 +2020-07-11,18,0,C21,-206.784594,0.0 +2020-07-11,18,0,C22,-157.244473,0.0 +2020-07-11,18,0,C23,-153.58794,0.0 +2020-07-11,18,0,C24,-98.045851,0.0 +2020-07-11,18,0,C25-1,-108.67231,0.0 +2020-07-11,18,0,C25-2,-108.67231,0.0 +2020-07-11,18,0,C26,117.801449,0.0 +2020-07-11,18,0,C27,-66.080096,0.0 +2020-07-11,18,0,C28,-123.884617,0.0 +2020-07-11,18,0,C29,13.403611,0.0 +2020-07-11,18,0,C30,-75.283706,0.0 +2020-07-11,18,0,C31-1,-81.835837,0.0 +2020-07-11,18,0,C31-2,-81.835837,0.0 +2020-07-11,18,0,C32-1,-106.851793,0.0 +2020-07-11,18,0,C32-2,-106.851793,0.0 +2020-07-11,18,0,C33-1,-140.443583,0.0 +2020-07-11,18,0,C33-2,-140.443583,0.0 +2020-07-11,18,0,C34,-87.716294,0.0 +2020-07-11,18,0,CA-1,-181.516232,0.0 +2020-07-11,18,0,CB-1,-30.486684,0.0 +2020-07-11,18,0,C35,-181.516232,0.0 +2020-07-11,19,0,A1,-175.0,0.0 +2020-07-11,19,0,A2,101.069704,0.0 +2020-07-11,19,0,A3,171.261505,0.0 +2020-07-11,19,0,A4,145.545897,0.0 +2020-07-11,19,0,A5,132.088261,0.0 +2020-07-11,19,0,A6,40.416713,0.0 +2020-07-11,19,0,A7,-57.128326,0.0 +2020-07-11,19,0,A8,97.124688,0.0 +2020-07-11,19,0,A9,124.803319,0.0 +2020-07-11,19,0,A10,43.097932,0.0 +2020-07-11,19,0,A11,21.425216,0.0 +2020-07-11,19,0,AB1,128.482202,0.0 +2020-07-11,19,0,A12-1,-43.429347,0.0 +2020-07-11,19,0,A13-2,-47.037689,0.0 +2020-07-11,19,0,A14,-3.505543,0.0 +2020-07-11,19,0,A15,-16.892017,0.0 +2020-07-11,19,0,A16,3.425719,0.0 +2020-07-11,19,0,A17,-10.158584,0.0 +2020-07-11,19,0,A18,38.726319,0.0 +2020-07-11,19,0,A19,-38.806143,0.0 +2020-07-11,19,0,A20,62.855438,0.0 +2020-07-11,19,0,A21,-89.906038,0.0 +2020-07-11,19,0,A22,-134.918928,0.0 +2020-07-11,19,0,AB2,63.100412,0.0 +2020-07-11,19,0,A23,-165.74823,0.0 +2020-07-11,19,0,A24,55.21881,0.0 +2020-07-11,19,0,A25-1,-84.35931,0.0 +2020-07-11,19,0,A25-2,-84.35931,0.0 +2020-07-11,19,0,A26,57.128326,0.0 +2020-07-11,19,0,A27,-134.347508,0.0 +2020-07-11,19,0,A28,113.384022,0.0 +2020-07-11,19,0,A29,-65.138891,0.0 +2020-07-11,19,0,A30,-69.208617,0.0 +2020-07-11,19,0,A31-1,-25.667164,0.0 +2020-07-11,19,0,A31-2,-25.667164,0.0 +2020-07-11,19,0,A32-1,-2.525818,0.0 +2020-07-11,19,0,A32-2,-2.525818,0.0 +2020-07-11,19,0,A33-1,-44.40362,0.0 +2020-07-11,19,0,A33-2,-44.40362,0.0 +2020-07-11,19,0,A34,-83.641383,0.0 +2020-07-11,19,0,AB3,160.367794,0.0 +2020-07-11,19,0,B1,21.020144,0.0 +2020-07-11,19,0,B2,-43.094758,0.0 +2020-07-11,19,0,B3,68.72267,0.0 +2020-07-11,19,0,B4,36.176518,0.0 +2020-07-11,19,0,B5,51.714796,0.0 +2020-07-11,19,0,B6,102.086384,0.0 +2020-07-11,19,0,B7,-147.577181,0.0 +2020-07-11,19,0,B8,-17.628981,0.0 +2020-07-11,19,0,B9,17.098475,0.0 +2020-07-11,19,0,B10,-47.170985,0.0 +2020-07-11,19,0,B11,-90.887667,0.0 +2020-07-11,19,0,B12-1,-120.613443,0.0 +2020-07-11,19,0,B13-2,-94.608552,0.0 +2020-07-11,19,0,B14,-73.482466,0.0 +2020-07-11,19,0,B15,-89.916308,0.0 +2020-07-11,19,0,B16,-124.894558,0.0 +2020-07-11,19,0,B17,-141.571265,0.0 +2020-07-11,19,0,B18,-39.383315,0.0 +2020-07-11,19,0,B19,-158.993708,0.0 +2020-07-11,19,0,B20,-9.761314,0.0 +2020-07-11,19,0,B21,-221.726259,0.0 +2020-07-11,19,0,B22,-241.826483,0.0 +2020-07-11,19,0,B23,-300.051367,0.0 +2020-07-11,19,0,B24,98.014959,0.0 +2020-07-11,19,0,B25-1,-132.728925,0.0 +2020-07-11,19,0,B25-2,-132.728925,0.0 +2020-07-11,19,0,B26,147.577181,0.0 +2020-07-11,19,0,B27,-241.135199,0.0 +2020-07-11,19,0,B28,121.388657,0.0 +2020-07-11,19,0,B29,46.191304,0.0 +2020-07-11,19,0,B30,-126.958708,0.0 +2020-07-11,19,0,B31-1,-97.966721,0.0 +2020-07-11,19,0,B31-2,-97.966721,0.0 +2020-07-11,19,0,B32-1,-5.108342,0.0 +2020-07-11,19,0,B32-2,-5.108342,0.0 +2020-07-11,19,0,B33-1,-51.642828,0.0 +2020-07-11,19,0,B33-2,-51.642828,0.0 +2020-07-11,19,0,B34,-168.091292,0.0 +2020-07-11,19,0,C1,16.734821,0.0 +2020-07-11,19,0,C2,-58.8562,0.0 +2020-07-11,19,0,C3,-23.242572,0.0 +2020-07-11,19,0,C4,-30.051697,0.0 +2020-07-11,19,0,C5,-11.919993,0.0 +2020-07-11,19,0,C6,8.850562,0.0 +2020-07-11,19,0,C7,-160.44668,0.0 +2020-07-11,19,0,C8,-74.838108,0.0 +2020-07-11,19,0,C9,-66.213318,0.0 +2020-07-11,19,0,C10,-94.230154,0.0 +2020-07-11,19,0,C11,-75.652721,0.0 +2020-07-11,19,0,C12-1,-100.369945,0.0 +2020-07-11,19,0,C13-2,-78.775699,0.0 +2020-07-11,19,0,C14,-114.961116,0.0 +2020-07-11,19,0,C15,-154.710184,0.0 +2020-07-11,19,0,C16,-158.450461,0.0 +2020-07-11,19,0,C17,-198.786954,0.0 +2020-07-11,19,0,C18,-195.847021,0.0 +2020-07-11,19,0,C19,-77.564556,0.0 +2020-07-11,19,0,C20,-124.199326,0.0 +2020-07-11,19,0,C21,-229.297812,0.0 +2020-07-11,19,0,C22,-187.130116,0.0 +2020-07-11,19,0,C23,-194.977578,0.0 +2020-07-11,19,0,C24,-95.982115,0.0 +2020-07-11,19,0,C25-1,-128.159933,0.0 +2020-07-11,19,0,C25-2,-128.159933,0.0 +2020-07-11,19,0,C26,160.44668,0.0 +2020-07-11,19,0,C27,-103.934888,0.0 +2020-07-11,19,0,C28,-123.546982,0.0 +2020-07-11,19,0,C29,-19.886277,0.0 +2020-07-11,19,0,C30,-77.648611,0.0 +2020-07-11,19,0,C31-1,-64.131762,0.0 +2020-07-11,19,0,C31-2,-64.131762,0.0 +2020-07-11,19,0,C32-1,-116.546061,0.0 +2020-07-11,19,0,C32-2,-116.546061,0.0 +2020-07-11,19,0,C33-1,-155.280254,0.0 +2020-07-11,19,0,C33-2,-155.280254,0.0 +2020-07-11,19,0,C34,-91.283389,0.0 +2020-07-11,19,0,CA-1,-263.588436,0.0 +2020-07-11,19,0,CB-1,-93.161602,0.0 +2020-07-11,19,0,C35,-263.588436,0.0 +2020-07-11,20,0,A1,-175.0,0.0 +2020-07-11,20,0,A2,96.819466,0.0 +2020-07-11,20,0,A3,161.342668,0.0 +2020-07-11,20,0,A4,137.921947,0.0 +2020-07-11,20,0,A5,125.168583,0.0 +2020-07-11,20,0,A6,34.249807,0.0 +2020-07-11,20,0,A7,-52.160117,0.0 +2020-07-11,20,0,A8,90.755262,0.0 +2020-07-11,20,0,A9,116.088145,0.0 +2020-07-11,20,0,A10,38.483863,0.0 +2020-07-11,20,0,A11,58.764133,0.0 +2020-07-11,20,0,AB1,154.862412,0.0 +2020-07-11,20,0,A12-1,-23.372908,0.0 +2020-07-11,20,0,A13-2,-26.856246,0.0 +2020-07-11,20,0,A14,1.903359,0.0 +2020-07-11,20,0,A15,-11.814035,0.0 +2020-07-11,20,0,A16,8.672643,0.0 +2020-07-11,20,0,A17,-5.247471,0.0 +2020-07-11,20,0,A18,42.168211,0.0 +2020-07-11,20,0,A19,-31.592209,0.0 +2020-07-11,20,0,A20,66.893815,0.0 +2020-07-11,20,0,A21,-83.955321,0.0 +2020-07-11,20,0,A22,-130.51229,0.0 +2020-07-11,20,0,AB2,70.666591,0.0 +2020-07-11,20,0,A23,-155.245412,0.0 +2020-07-11,20,0,A24,53.738309,0.0 +2020-07-11,20,0,A25-1,-76.475154,0.0 +2020-07-11,20,0,A25-2,-76.475154,0.0 +2020-07-11,20,0,A26,52.160117,0.0 +2020-07-11,20,0,A27,-114.499215,0.0 +2020-07-11,20,0,A28,104.253348,0.0 +2020-07-11,20,0,A29,-71.729745,0.0 +2020-07-11,20,0,A30,-42.76947,0.0 +2020-07-11,20,0,A31-1,-26.139915,0.0 +2020-07-11,20,0,A31-2,-26.139915,0.0 +2020-07-11,20,0,A32-1,-5.556908,0.0 +2020-07-11,20,0,A32-2,-5.556908,0.0 +2020-07-11,20,0,A33-1,-46.349717,0.0 +2020-07-11,20,0,A33-2,-46.349717,0.0 +2020-07-11,20,0,A34,-41.27853,0.0 +2020-07-11,20,0,AB3,166.832954,0.0 +2020-07-11,20,0,B1,25.90029,0.0 +2020-07-11,20,0,B2,-50.176746,0.0 +2020-07-11,20,0,B3,63.5911,0.0 +2020-07-11,20,0,B4,31.097708,0.0 +2020-07-11,20,0,B5,47.761576,0.0 +2020-07-11,20,0,B6,106.750795,0.0 +2020-07-11,20,0,B7,-129.069057,0.0 +2020-07-11,20,0,B8,-21.115017,0.0 +2020-07-11,20,0,B9,13.495106,0.0 +2020-07-11,20,0,B10,-48.196947,0.0 +2020-07-11,20,0,B11,-88.197172,0.0 +2020-07-11,20,0,B12-1,-117.991396,0.0 +2020-07-11,20,0,B13-2,-90.859507,0.0 +2020-07-11,20,0,B14,-68.769447,0.0 +2020-07-11,20,0,B15,-87.062212,0.0 +2020-07-11,20,0,B16,-122.292918,0.0 +2020-07-11,20,0,B17,-140.856019,0.0 +2020-07-11,20,0,B18,-42.29044,0.0 +2020-07-11,20,0,B19,-148.771924,0.0 +2020-07-11,20,0,B20,-9.317732,0.0 +2020-07-11,20,0,B21,-218.6005,0.0 +2020-07-11,20,0,B22,-238.586177,0.0 +2020-07-11,20,0,B23,-285.653935,0.0 +2020-07-11,20,0,B24,80.436932,0.0 +2020-07-11,20,0,B25-1,-121.978213,0.0 +2020-07-11,20,0,B25-2,-121.978213,0.0 +2020-07-11,20,0,B26,129.069057,0.0 +2020-07-11,20,0,B27,-218.321261,0.0 +2020-07-11,20,0,B28,97.54652,0.0 +2020-07-11,20,0,B29,51.349517,0.0 +2020-07-11,20,0,B30,-102.837824,0.0 +2020-07-11,20,0,B31-1,-91.803875,0.0 +2020-07-11,20,0,B31-2,-91.803875,0.0 +2020-07-11,20,0,B32-1,-15.081492,0.0 +2020-07-11,20,0,B32-2,-15.081492,0.0 +2020-07-11,20,0,B33-1,-60.238444,0.0 +2020-07-11,20,0,B33-2,-60.238444,0.0 +2020-07-11,20,0,B34,-134.264176,0.0 +2020-07-11,20,0,C1,15.552618,0.0 +2020-07-11,20,0,C2,-55.49892,0.0 +2020-07-11,20,0,C3,-23.396258,0.0 +2020-07-11,20,0,C4,-29.227213,0.0 +2020-07-11,20,0,C5,-12.111173,0.0 +2020-07-11,20,0,C6,5.569568,0.0 +2020-07-11,20,0,C7,-159.439422,0.0 +2020-07-11,20,0,C8,-72.628597,0.0 +2020-07-11,20,0,C9,-65.038127,0.0 +2020-07-11,20,0,C10,-91.875879,0.0 +2020-07-11,20,0,C11,-73.313149,0.0 +2020-07-11,20,0,C12-1,-96.910212,0.0 +2020-07-11,20,0,C13-2,-76.695324,0.0 +2020-07-11,20,0,C14,-113.757734,0.0 +2020-07-11,20,0,C15,-152.049916,0.0 +2020-07-11,20,0,C16,-154.559882,0.0 +2020-07-11,20,0,C17,-193.41796,0.0 +2020-07-11,20,0,C18,-192.848376,0.0 +2020-07-11,20,0,C19,-75.46924,0.0 +2020-07-11,20,0,C20,-123.826716,0.0 +2020-07-11,20,0,C21,-221.64116,0.0 +2020-07-11,20,0,C22,-178.798967,0.0 +2020-07-11,20,0,C23,-189.251247,0.0 +2020-07-11,20,0,C24,-95.906894,0.0 +2020-07-11,20,0,C25-1,-124.727336,0.0 +2020-07-11,20,0,C25-2,-124.727336,0.0 +2020-07-11,20,0,C26,159.439422,0.0 +2020-07-11,20,0,C27,-97.375534,0.0 +2020-07-11,20,0,C28,-117.77816,0.0 +2020-07-11,20,0,C29,-17.8093,0.0 +2020-07-11,20,0,C30,-74.866234,0.0 +2020-07-11,20,0,C31-1,-65.389547,0.0 +2020-07-11,20,0,C31-2,-65.389547,0.0 +2020-07-11,20,0,C32-1,-111.9678,0.0 +2020-07-11,20,0,C32-2,-111.9678,0.0 +2020-07-11,20,0,C33-1,-149.504132,0.0 +2020-07-11,20,0,C33-2,-149.504132,0.0 +2020-07-11,20,0,C34,-86.933766,0.0 +2020-07-11,20,0,CA-1,-236.048391,0.0 +2020-07-11,20,0,CB-1,-82.336435,0.0 +2020-07-11,20,0,C35,-236.048391,0.0 +2020-07-11,21,0,A1,-175.0,0.0 +2020-07-11,21,0,A2,98.803571,0.0 +2020-07-11,21,0,A3,164.716169,0.0 +2020-07-11,21,0,A4,140.811509,0.0 +2020-07-11,21,0,A5,127.073799,0.0 +2020-07-11,21,0,A6,39.54915,0.0 +2020-07-11,21,0,A7,-46.546011,0.0 +2020-07-11,21,0,A8,97.315776,0.0 +2020-07-11,21,0,A9,122.983777,0.0 +2020-07-11,21,0,A10,47.135694,0.0 +2020-07-11,21,0,A11,19.571801,0.0 +2020-07-11,21,0,AB1,138.655677,0.0 +2020-07-11,21,0,A12-1,-38.255803,0.0 +2020-07-11,21,0,A13-2,-42.682807,0.0 +2020-07-11,21,0,A14,3.328431,0.0 +2020-07-11,21,0,A15,-7.580839,0.0 +2020-07-11,21,0,A16,11.945009,0.0 +2020-07-11,21,0,A17,0.874519,0.0 +2020-07-11,21,0,A18,53.117733,0.0 +2020-07-11,21,0,A19,-37.844293,0.0 +2020-07-11,21,0,A20,72.781691,0.0 +2020-07-11,21,0,A21,-79.48801,0.0 +2020-07-11,21,0,A22,-128.779979,0.0 +2020-07-11,21,0,AB2,98.917656,0.0 +2020-07-11,21,0,A23,-151.873648,0.0 +2020-07-11,21,0,A24,49.013215,0.0 +2020-07-11,21,0,A25-1,-78.942772,0.0 +2020-07-11,21,0,A25-2,-78.942772,0.0 +2020-07-11,21,0,A26,46.546011,0.0 +2020-07-11,21,0,A27,-118.146371,0.0 +2020-07-11,21,0,A28,111.507919,0.0 +2020-07-11,21,0,A29,-77.674609,0.0 +2020-07-11,21,0,A30,-40.471762,0.0 +2020-07-11,21,0,A31-1,-20.852704,0.0 +2020-07-11,21,0,A31-2,-20.852704,0.0 +2020-07-11,21,0,A32-1,2.559853,0.0 +2020-07-11,21,0,A32-2,2.559853,0.0 +2020-07-11,21,0,A33-1,-35.058078,0.0 +2020-07-11,21,0,A33-2,-35.058078,0.0 +2020-07-11,21,0,A34,-38.528238,0.0 +2020-07-11,21,0,AB3,195.615854,0.0 +2020-07-11,21,0,B1,20.16498,0.0 +2020-07-11,21,0,B2,-44.949247,0.0 +2020-07-11,21,0,B3,60.121725,0.0 +2020-07-11,21,0,B4,30.0757,0.0 +2020-07-11,21,0,B5,45.501849,0.0 +2020-07-11,21,0,B6,96.459084,0.0 +2020-07-11,21,0,B7,-125.203557,0.0 +2020-07-11,21,0,B8,-20.265227,0.0 +2020-07-11,21,0,B9,11.821646,0.0 +2020-07-11,21,0,B10,-47.016611,0.0 +2020-07-11,21,0,B11,-85.03535,0.0 +2020-07-11,21,0,B12-1,-113.276737,0.0 +2020-07-11,21,0,B13-2,-88.086971,0.0 +2020-07-11,21,0,B14,-67.855466,0.0 +2020-07-11,21,0,B15,-88.276903,0.0 +2020-07-11,21,0,B16,-117.606925,0.0 +2020-07-11,21,0,B17,-138.330156,0.0 +2020-07-11,21,0,B18,-46.510349,0.0 +2020-07-11,21,0,B19,-138.952042,0.0 +2020-07-11,21,0,B20,-9.700709,0.0 +2020-07-11,21,0,B21,-216.90635,0.0 +2020-07-11,21,0,B22,-236.485999,0.0 +2020-07-11,21,0,B23,-270.926905,0.0 +2020-07-11,21,0,B24,57.208426,0.0 +2020-07-11,21,0,B25-1,-100.359987,0.0 +2020-07-11,21,0,B25-2,-100.359987,0.0 +2020-07-11,21,0,B26,125.203557,0.0 +2020-07-11,21,0,B27,-196.90971,0.0 +2020-07-11,21,0,B28,70.162951,0.0 +2020-07-11,21,0,B29,80.533856,0.0 +2020-07-11,21,0,B30,-81.827712,0.0 +2020-07-11,21,0,B31-1,-73.000158,0.0 +2020-07-11,21,0,B31-2,-73.000158,0.0 +2020-07-11,21,0,B32-1,-26.484117,0.0 +2020-07-11,21,0,B32-2,-26.484117,0.0 +2020-07-11,21,0,B33-1,-70.022216,0.0 +2020-07-11,21,0,B33-2,-70.022216,0.0 +2020-07-11,21,0,B34,-115.020288,0.0 +2020-07-11,21,0,C1,15.565137,0.0 +2020-07-11,21,0,C2,-54.29697,0.0 +2020-07-11,21,0,C3,-21.077541,0.0 +2020-07-11,21,0,C4,-27.361382,0.0 +2020-07-11,21,0,C5,-10.79116,0.0 +2020-07-11,21,0,C6,9.177493,0.0 +2020-07-11,21,0,C7,-154.956753,0.0 +2020-07-11,21,0,C8,-68.341879,0.0 +2020-07-11,21,0,C9,-60.396666,0.0 +2020-07-11,21,0,C10,-86.106668,0.0 +2020-07-11,21,0,C11,-69.223812,0.0 +2020-07-11,21,0,C12-1,-91.833847,0.0 +2020-07-11,21,0,C13-2,-72.088141,0.0 +2020-07-11,21,0,C14,-105.412889,0.0 +2020-07-11,21,0,C15,-141.098682,0.0 +2020-07-11,21,0,C16,-145.183727,0.0 +2020-07-11,21,0,C17,-181.396896,0.0 +2020-07-11,21,0,C18,-168.010709,0.0 +2020-07-11,21,0,C19,-82.585906,0.0 +2020-07-11,21,0,C20,-103.687066,0.0 +2020-07-11,21,0,C21,-218.808512,0.0 +2020-07-11,21,0,C22,-186.752258,0.0 +2020-07-11,21,0,C23,-190.021263,0.0 +2020-07-11,21,0,C24,-84.629423,0.0 +2020-07-11,21,0,C25-1,-122.939459,0.0 +2020-07-11,21,0,C25-2,-122.939459,0.0 +2020-07-11,21,0,C26,154.956753,0.0 +2020-07-11,21,0,C27,-99.640063,0.0 +2020-07-11,21,0,C28,-106.389673,0.0 +2020-07-11,21,0,C29,-17.135348,0.0 +2020-07-11,21,0,C30,-75.704715,0.0 +2020-07-11,21,0,C31-1,-67.492184,0.0 +2020-07-11,21,0,C31-2,-67.492184,0.0 +2020-07-11,21,0,C32-1,-103.312877,0.0 +2020-07-11,21,0,C32-2,-103.312877,0.0 +2020-07-11,21,0,C33-1,-138.755469,0.0 +2020-07-11,21,0,C33-2,-138.755469,0.0 +2020-07-11,21,0,C34,-87.563285,0.0 +2020-07-11,21,0,CA-1,-238.937286,0.0 +2020-07-11,21,0,CB-1,-66.563217,0.0 +2020-07-11,21,0,C35,-238.937286,0.0 +2020-07-11,22,0,A1,-175.0,0.0 +2020-07-11,22,0,A2,102.933282,0.0 +2020-07-11,22,0,A3,167.357195,0.0 +2020-07-11,22,0,A4,143.60565,0.0 +2020-07-11,22,0,A5,128.372234,0.0 +2020-07-11,22,0,A6,41.705075,0.0 +2020-07-11,22,0,A7,-33.287665,0.0 +2020-07-11,22,0,A8,104.749124,0.0 +2020-07-11,22,0,A9,130.075934,0.0 +2020-07-11,22,0,A10,56.960242,0.0 +2020-07-11,22,0,A11,11.513066,0.0 +2020-07-11,22,0,AB1,154.550912,0.0 +2020-07-11,22,0,A12-1,-36.078559,0.0 +2020-07-11,22,0,A13-2,-42.198454,0.0 +2020-07-11,22,0,A14,12.56214,0.0 +2020-07-11,22,0,A15,5.92307,0.0 +2020-07-11,22,0,A16,24.591356,0.0 +2020-07-11,22,0,A17,17.854172,0.0 +2020-07-11,22,0,A18,71.378259,0.0 +2020-07-11,22,0,A19,-34.224763,0.0 +2020-07-11,22,0,A20,83.345182,0.0 +2020-07-11,22,0,A21,-59.56794,0.0 +2020-07-11,22,0,A22,-112.398379,0.0 +2020-07-11,22,0,AB2,127.973452,0.0 +2020-07-11,22,0,A23,-136.09187,0.0 +2020-07-11,22,0,A24,67.763807,0.0 +2020-07-11,22,0,A25-1,-71.752212,0.0 +2020-07-11,22,0,A25-2,-71.752212,0.0 +2020-07-11,22,0,A26,33.287665,0.0 +2020-07-11,22,0,A27,-122.761915,0.0 +2020-07-11,22,0,A28,125.925033,0.0 +2020-07-11,22,0,A29,-82.038022,0.0 +2020-07-11,22,0,A30,-40.723892,0.0 +2020-07-11,22,0,A31-1,-12.596193,0.0 +2020-07-11,22,0,A31-2,-12.596193,0.0 +2020-07-11,22,0,A32-1,15.442037,0.0 +2020-07-11,22,0,A32-2,15.442037,0.0 +2020-07-11,22,0,A33-1,-18.163607,0.0 +2020-07-11,22,0,A33-2,-18.163607,0.0 +2020-07-11,22,0,A34,-41.176108,0.0 +2020-07-11,22,0,AB3,208.833127,0.0 +2020-07-11,22,0,B1,5.970949,0.0 +2020-07-11,22,0,B2,-53.916899,0.0 +2020-07-11,22,0,B3,52.725357,0.0 +2020-07-11,22,0,B4,24.281666,0.0 +2020-07-11,22,0,B5,40.91175,0.0 +2020-07-11,22,0,B6,101.982735,0.0 +2020-07-11,22,0,B7,-116.729713,0.0 +2020-07-11,22,0,B8,-23.152741,0.0 +2020-07-11,22,0,B9,7.213966,0.0 +2020-07-11,22,0,B10,-46.264998,0.0 +2020-07-11,22,0,B11,-80.125687,0.0 +2020-07-11,22,0,B12-1,-108.071858,0.0 +2020-07-11,22,0,B13-2,-81.66577,0.0 +2020-07-11,22,0,B14,-62.525324,0.0 +2020-07-11,22,0,B15,-78.892502,0.0 +2020-07-11,22,0,B16,-114.551908,0.0 +2020-07-11,22,0,B17,-131.160966,0.0 +2020-07-11,22,0,B18,-39.000725,0.0 +2020-07-11,22,0,B19,-138.076507,0.0 +2020-07-11,22,0,B20,-9.498886,0.0 +2020-07-11,22,0,B21,-200.554582,0.0 +2020-07-11,22,0,B22,-218.366068,0.0 +2020-07-11,22,0,B23,-262.431574,0.0 +2020-07-11,22,0,B24,86.22933,0.0 +2020-07-11,22,0,B25-1,-96.030167,0.0 +2020-07-11,22,0,B25-2,-96.030167,0.0 +2020-07-11,22,0,B26,116.729713,0.0 +2020-07-11,22,0,B27,-207.265962,0.0 +2020-07-11,22,0,B28,90.963168,0.0 +2020-07-11,22,0,B29,73.794482,0.0 +2020-07-11,22,0,B30,-72.227317,0.0 +2020-07-11,22,0,B31-1,-69.830175,0.0 +2020-07-11,22,0,B31-2,-69.830175,0.0 +2020-07-11,22,0,B32-1,-12.529414,0.0 +2020-07-11,22,0,B32-2,-12.529414,0.0 +2020-07-11,22,0,B33-1,-53.553765,0.0 +2020-07-11,22,0,B33-2,-53.553765,0.0 +2020-07-11,22,0,B34,-100.020683,0.0 +2020-07-11,22,0,C1,14.026055,0.0 +2020-07-11,22,0,C2,-49.150289,0.0 +2020-07-11,22,0,C3,-19.351387,0.0 +2020-07-11,22,0,C4,-24.975687,0.0 +2020-07-11,22,0,C5,-9.925437,0.0 +2020-07-11,22,0,C6,7.695796,0.0 +2020-07-11,22,0,C7,-135.738788,0.0 +2020-07-11,22,0,C8,-62.301575,0.0 +2020-07-11,22,0,C9,-55.164064,0.0 +2020-07-11,22,0,C10,-78.524367,0.0 +2020-07-11,22,0,C11,-63.050488,0.0 +2020-07-11,22,0,C12-1,-83.608159,0.0 +2020-07-11,22,0,C13-2,-65.695396,0.0 +2020-07-11,22,0,C14,-96.095316,0.0 +2020-07-11,22,0,C15,-128.989305,0.0 +2020-07-11,22,0,C16,-132.18124,0.0 +2020-07-11,22,0,C17,-165.561347,0.0 +2020-07-11,22,0,C18,-159.422851,0.0 +2020-07-11,22,0,C19,-68.853705,0.0 +2020-07-11,22,0,C20,-100.131436,0.0 +2020-07-11,22,0,C21,-194.419215,0.0 +2020-07-11,22,0,C22,-161.521321,0.0 +2020-07-11,22,0,C23,-166.708061,0.0 +2020-07-11,22,0,C24,-87.911301,0.0 +2020-07-11,22,0,C25-1,-103.861762,0.0 +2020-07-11,22,0,C25-2,-103.861762,0.0 +2020-07-11,22,0,C26,135.738788,0.0 +2020-07-11,22,0,C27,-80.381796,0.0 +2020-07-11,22,0,C28,-100.677956,0.0 +2020-07-11,22,0,C29,-5.662099,0.0 +2020-07-11,22,0,C30,-69.819697,0.0 +2020-07-11,22,0,C31-1,-54.82839,0.0 +2020-07-11,22,0,C31-2,-54.82839,0.0 +2020-07-11,22,0,C32-1,-95.987531,0.0 +2020-07-11,22,0,C32-2,-95.987531,0.0 +2020-07-11,22,0,C33-1,-128.269381,0.0 +2020-07-11,22,0,C33-2,-128.269381,0.0 +2020-07-11,22,0,C34,-85.680303,0.0 +2020-07-11,22,0,CA-1,-272.479298,0.0 +2020-07-11,22,0,CB-1,-63.971819,0.0 +2020-07-11,22,0,C35,-272.479298,0.0 +2020-07-11,23,0,A1,-175.0,0.0 +2020-07-11,23,0,A2,105.516485,0.0 +2020-07-11,23,0,A3,163.336285,0.0 +2020-07-11,23,0,A4,141.239101,0.0 +2020-07-11,23,0,A5,125.730518,0.0 +2020-07-11,23,0,A6,31.669963,0.0 +2020-07-11,23,0,A7,-23.065527,0.0 +2020-07-11,23,0,A8,101.397481,0.0 +2020-07-11,23,0,A9,125.109866,0.0 +2020-07-11,23,0,A10,52.508081,0.0 +2020-07-11,23,0,A11,27.477292,0.0 +2020-07-11,23,0,AB1,136.922674,0.0 +2020-07-11,23,0,A12-1,-28.841694,0.0 +2020-07-11,23,0,A13-2,-35.747461,0.0 +2020-07-11,23,0,A14,11.77429,0.0 +2020-07-11,23,0,A15,-1.768588,0.0 +2020-07-11,23,0,A16,25.312726,0.0 +2020-07-11,23,0,A17,11.569707,0.0 +2020-07-11,23,0,A18,52.459484,0.0 +2020-07-11,23,0,A19,-15.372467,0.0 +2020-07-11,23,0,A20,76.870522,0.0 +2020-07-11,23,0,A21,-67.069404,0.0 +2020-07-11,23,0,A22,-117.189853,0.0 +2020-07-11,23,0,AB2,103.843787,0.0 +2020-07-11,23,0,A23,-119.82212,0.0 +2020-07-11,23,0,A24,14.015453,0.0 +2020-07-11,23,0,A25-1,-41.876933,0.0 +2020-07-11,23,0,A25-2,-41.876933,0.0 +2020-07-11,23,0,A26,23.065527,0.0 +2020-07-11,23,0,A27,-75.32666,0.0 +2020-07-11,23,0,A28,70.679966,0.0 +2020-07-11,23,0,A29,-37.522387,0.0 +2020-07-11,23,0,A30,-37.804273,0.0 +2020-07-11,23,0,A31-1,7.445161,0.0 +2020-07-11,23,0,A31-2,7.445161,0.0 +2020-07-11,23,0,A32-1,-13.385242,0.0 +2020-07-11,23,0,A32-2,-13.385242,0.0 +2020-07-11,23,0,A33-1,-47.842859,0.0 +2020-07-11,23,0,A33-2,-47.842859,0.0 +2020-07-11,23,0,A34,-53.495727,0.0 +2020-07-11,23,0,AB3,194.055024,0.0 +2020-07-11,23,0,B1,3.911154,0.0 +2020-07-11,23,0,B2,-41.956265,0.0 +2020-07-11,23,0,B3,53.315857,0.0 +2020-07-11,23,0,B4,27.169373,0.0 +2020-07-11,23,0,B5,41.008553,0.0 +2020-07-11,23,0,B6,89.501605,0.0 +2020-07-11,23,0,B7,-100.55562,0.0 +2020-07-11,23,0,B8,-16.416802,0.0 +2020-07-11,23,0,B9,11.496689,0.0 +2020-07-11,23,0,B10,-39.095768,0.0 +2020-07-11,23,0,B11,-73.625295,0.0 +2020-07-11,23,0,B12-1,-98.522765,0.0 +2020-07-11,23,0,B13-2,-75.821932,0.0 +2020-07-11,23,0,B14,-56.05218,0.0 +2020-07-11,23,0,B15,-72.461194,0.0 +2020-07-11,23,0,B16,-100.81248,0.0 +2020-07-11,23,0,B17,-117.463991,0.0 +2020-07-11,23,0,B18,-36.693463,0.0 +2020-07-11,23,0,B19,-120.171196,0.0 +2020-07-11,23,0,B20,-7.116217,0.0 +2020-07-11,23,0,B21,-182.808968,0.0 +2020-07-11,23,0,B22,-199.895305,0.0 +2020-07-11,23,0,B23,-234.437654,0.0 +2020-07-11,23,0,B24,42.606411,0.0 +2020-07-11,23,0,B25-1,-85.741496,0.0 +2020-07-11,23,0,B25-2,-85.741496,0.0 +2020-07-11,23,0,B26,100.55562,0.0 +2020-07-11,23,0,B27,-167.232248,0.0 +2020-07-11,23,0,B28,71.50077,0.0 +2020-07-11,23,0,B29,73.043977,0.0 +2020-07-11,23,0,B30,-46.221201,0.0 +2020-07-11,23,0,B31-1,-61.546904,0.0 +2020-07-11,23,0,B31-2,-61.546904,0.0 +2020-07-11,23,0,B32-1,-17.554328,0.0 +2020-07-11,23,0,B32-2,-17.554328,0.0 +2020-07-11,23,0,B33-1,-55.250479,0.0 +2020-07-11,23,0,B33-2,-55.250479,0.0 +2020-07-11,23,0,B34,-62.876799,0.0 +2020-07-11,23,0,C1,15.291689,0.0 +2020-07-11,23,0,C2,-50.103534,0.0 +2020-07-11,23,0,C3,-14.97551,0.0 +2020-07-11,23,0,C4,-22.070063,0.0 +2020-07-11,23,0,C5,-7.354668,0.0 +2020-07-11,23,0,C6,17.982645,0.0 +2020-07-11,23,0,C7,-139.165103,0.0 +2020-07-11,23,0,C8,-56.183621,0.0 +2020-07-11,23,0,C9,-47.706085,0.0 +2020-07-11,23,0,C10,-70.049855,0.0 +2020-07-11,23,0,C11,-57.624253,0.0 +2020-07-11,23,0,C12-1,-77.199409,0.0 +2020-07-11,23,0,C13-2,-59.254821,0.0 +2020-07-11,23,0,C14,-88.940886,0.0 +2020-07-11,23,0,C15,-105.633453,0.0 +2020-07-11,23,0,C16,-124.982671,0.0 +2020-07-11,23,0,C17,-141.921926,0.0 +2020-07-11,23,0,C18,-127.031512,0.0 +2020-07-11,23,0,C19,-86.892045,0.0 +2020-07-11,23,0,C20,-96.94316,0.0 +2020-07-11,23,0,C21,-150.61222,0.0 +2020-07-11,23,0,C22,-114.438088,0.0 +2020-07-11,23,0,C23,-176.324886,0.0 +2020-07-11,23,0,C24,-29.768406,0.0 +2020-07-11,23,0,C25-1,-127.765901,0.0 +2020-07-11,23,0,C25-2,-127.765901,0.0 +2020-07-11,23,0,C26,139.165103,0.0 +2020-07-11,23,0,C27,-151.057971,0.0 +2020-07-11,23,0,C28,22.865278,0.0 +2020-07-11,23,0,C29,-72.748521,0.0 +2020-07-11,23,0,C30,-73.109451,0.0 +2020-07-11,23,0,C31-1,-31.095373,0.0 +2020-07-11,23,0,C31-2,-31.095373,0.0 +2020-07-11,23,0,C32-1,-30.28732,0.0 +2020-07-11,23,0,C32-2,-30.28732,0.0 +2020-07-11,23,0,C33-1,-59.790938,0.0 +2020-07-11,23,0,C33-2,-59.790938,0.0 +2020-07-11,23,0,C34,-86.022549,0.0 +2020-07-11,23,0,CA-1,-384.632183,0.0 +2020-07-11,23,0,CB-1,-164.068783,0.0 +2020-07-11,23,0,C35,-384.632183,0.0 diff --git a/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/bidding_plugin_test_multiperiod_rankine/overall_simulation_output.csv b/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/bidding_plugin_test_multiperiod_rankine/overall_simulation_output.csv new file mode 100644 index 000000000..68d94fbba --- /dev/null +++ b/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/bidding_plugin_test_multiperiod_rankine/overall_simulation_output.csv @@ -0,0 +1,2 @@ +Total demand,Total fixed costs,Total generation costs,Total costs,Total load shedding,Total over generation,Total reserve shortfall,Total renewables curtailment,Total on/offs,Total sum on/off ramps,Total sum nominal ramps,Maximum observed demand,Overall renewables penetration rate,Cumulative average price,Total energy payments,Total reserve payments,Total uplift payments,Total payments,Cumulative average payments +239062.522036,2765678.791352,1004245.579963,3769924.371316,0.0,0.0,0.0,819.046837,80,1076.0,10548.133041,6624.16567,32.168128,15.769617,5268711.5961,0.0,0.0,5268711.5961,22.039053 diff --git a/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/bidding_plugin_test_multiperiod_rankine/plots/daily_costs.png b/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/bidding_plugin_test_multiperiod_rankine/plots/daily_costs.png new file mode 100644 index 0000000000000000000000000000000000000000..ea04d822c000ebc2c86a68961452d250cab798d3 GIT binary patch literal 33105 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

~H@+QHEz3%Sr_(^li&xQF?6h5C=_nBs3 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 F{{}tbcPRh> literal 0 HcmV?d00001 diff --git a/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/bidding_plugin_test_multiperiod_rankine/plots/stackgraph_2020-07-11.png b/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/bidding_plugin_test_multiperiod_rankine/plots/stackgraph_2020-07-11.png new file mode 100644 index 0000000000000000000000000000000000000000..57649123edfe398853e5f21d8ef44f9f29818a36 GIT binary patch literal 41147 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 min_power + ) + m.usc_mp.fs.plant_max_power_eq = Constraint( + expr=m.usc_mp.fs.plant_power_out[0] <= max_power + ) + + m.usc_mp.fs.hxc.heat_duty.setlb(min_storage_heat_duty * 1e6) + m.usc_mp.fs.hxd.heat_duty.setlb(min_storage_heat_duty * 1e6) + + m.usc_mp.fs.hxc.heat_duty.setub(max_storage_heat_duty * 1e6) + m.usc_mp.fs.hxd.heat_duty.setub(max_storage_heat_duty * 1e6) + + # Unfix data + m.usc_mp.fs.boiler.inlet.flow_mol[0].unfix() + + # Unfix storage system data + m.usc_mp.fs.ess_hp_split.split_fraction[0, "to_hxc"].unfix() + m.usc_mp.fs.ess_bfp_split.split_fraction[0, "to_hxd"].unfix() + for salt_hxc in [m.usc_mp.fs.hxc]: + salt_hxc.shell_inlet.unfix() + salt_hxc.tube_inlet.flow_mass.unfix() # kg/s, 1 DOF + salt_hxc.area.unfix() # 1 DOF + + for salt_hxd in [m.usc_mp.fs.hxd]: + salt_hxd.tube_inlet.unfix() + salt_hxd.shell_inlet.flow_mass.unfix() # kg/s, 1 DOF + salt_hxd.area.unfix() # 1 DOF + + for unit in [m.usc_mp.fs.cooler]: + unit.inlet.unfix() + m.usc_mp.fs.cooler.outlet.enth_mol[0].unfix() # 1 DOF + + # Fix storage heat exchangers area and salt temperatures + m.usc_mp.fs.hxc.area.fix(1904) + m.usc_mp.fs.hxd.area.fix(2830) + m.usc_mp.fs.hxc.tube_outlet.temperature[0].fix(831) + m.usc_mp.fs.hxd.shell_inlet.temperature[0].fix(831) + m.usc_mp.fs.hxd.shell_outlet.temperature[0].fix(513.15) + + return m + + +def create_usc_mp_block(pmin=None, pmax=None): + print('>>> Creating USC model and initialization for each time period') + + if pmin is None: + pmin = int(0.65 * 436) + 1 + if pmax is None: + pmax = 436 + 30 + + m = create_usc_model(pmin, pmax) + b1 = m.usc_mp + + # Add coupling variables + b1.previous_power = Var( + domain=NonNegativeReals, + initialize=300, + bounds=(pmin, pmax), + doc="Previous period power (MW)" + ) + + inventory_max = 1e7 + inventory_min = 75000 + tank_max = 6739292 # Units in kg + + b1.previous_salt_inventory_hot = Var( + domain=NonNegativeReals, + initialize=inventory_min, + bounds=(0, inventory_max), + doc="Hot salt at the beginning of the hour (or time period), kg" + ) + b1.salt_inventory_hot = Var( + domain=NonNegativeReals, + initialize=inventory_min, + bounds=(0, inventory_max), + doc="Hot salt inventory at the end of the hour (or time period), kg" + ) + b1.previous_salt_inventory_cold = Var( + domain=NonNegativeReals, + initialize=tank_max-inventory_min, + bounds=(0, inventory_max), + doc="Cold salt at the beginning of the hour (or time period), kg" + ) + b1.salt_inventory_cold = Var( + domain=NonNegativeReals, + initialize=tank_max-inventory_min, + bounds=(0, inventory_max), + doc="Cold salt inventory at the end of the hour (or time period), kg" + ) + + @b1.fs.Constraint(doc="Plant ramping down constraint") + def constraint_ramp_down(b): + return ( + b1.previous_power - 60 <= + b1.fs.plant_power_out[0]) + + @b1.fs.Constraint(doc="Plant ramping up constraint") + def constraint_ramp_up(b): + return ( + b1.previous_power + 60 >= + b1.fs.plant_power_out[0]) + + @b1.fs.Constraint(doc="Inventory balance at the end of the time period") + def constraint_salt_inventory_hot(b): + return ( + b1.salt_inventory_hot == + b1.previous_salt_inventory_hot + + (3600*b1.fs.hxc.tube_inlet.flow_mass[0] + - 3600*b1.fs.hxd.shell_inlet.flow_mass[0]) + ) + + @b1.fs.Constraint(doc="Max salt flow to hxd based on available hot salt") + def constraint_salt_maxflow_hot(b): + return ( + 3600*b1.fs.hxd.shell_inlet.flow_mass[0] <= + b1.previous_salt_inventory_hot + ) + + @b1.fs.Constraint(doc="Max salt flow to hxc based on available cold salt") + def constraint_salt_maxflow_cold(b): + return ( + 3600*b1.fs.hxc.tube_inlet.flow_mass[0] <= + b1.previous_salt_inventory_cold + ) + + @b1.fs.Constraint(doc="Maximum salt inventory at any time") + def constraint_salt_inventory(b): + return ( + b1.salt_inventory_hot + + b1.salt_inventory_cold == b1.fs.salt_amount) + + return m + + +# The tank level and power output are linked between the contiguous time periods +def get_usc_link_variable_pairs(b1, b2): + """ + b1: current time block + b2: next time block + """ + return [(b1.usc_mp.salt_inventory_hot, + b2.usc_mp.previous_salt_inventory_hot), + (b1.usc_mp.fs.plant_power_out[0], + b2.usc_mp.previous_power)] + + +# The tank level at the end of the last time period must be the same as at the +# beginning of the first time period +def get_usc_periodic_variable_pairs(b1, b2): + """ + b1: final time block + b2: first time block + """ + # return + return [(b1.usc_mp.salt_inventory_hot, + b2.usc_mp.previous_salt_inventory_hot)] + +# Create the multiperiod model object. You can pass arguments to your +# "process_model_func" for each time period using a dict of dicts as +# shown here. In this case, it is setting up empty dictionaries for +# each time period. + + +def create_multiperiod_usc_model(n_time_points=4, pmin=None, pmax=None): + """ + Create a multi-period usc_mp cycle object. This object contains a pyomo + model with a block for each time instance. + + n_time_points: Number of time blocks to create + """ + multiperiod_usc = MultiPeriodModel( + n_time_points, + lambda: create_usc_mp_block(pmin=None, pmax=None), + get_usc_link_variable_pairs, + get_usc_periodic_variable_pairs + ) + + # If you have no arguments, you don't actually need to pass in + # anything. NOTE: building the model will initialize each time block + multiperiod_usc.build_multi_period_model() + return multiperiod_usc diff --git a/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/multiperiod_usc_storage_pricetaker.py b/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/multiperiod_usc_storage_pricetaker.py new file mode 100644 index 000000000..041427fa7 --- /dev/null +++ b/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/multiperiod_usc_storage_pricetaker.py @@ -0,0 +1,452 @@ + +# import multiperiod object and rankine example +from idaes.apps.multiperiod.multiperiod import MultiPeriodModel +from idaes.apps.multiperiod.examples.simple_rankine_cycle import ( + create_model, set_inputs, initialize_model, + close_flowsheet_loop, add_operating_cost) + +import pyomo.environ as pyo +from pyomo.environ import (Block, Param, Constraint, Objective, Reals, + NonNegativeReals, TransformationFactory, Expression, + maximize, RangeSet, value, log, exp, Var) +from pyomo.util.infeasible import (log_infeasible_constraints, + log_close_to_bounds) +import numpy as np +import copy +# from random import random +from idaes.core.util.model_statistics import degrees_of_freedom + +from dispatches.models.fossil_case.ultra_supercritical_plant.storage import ( + usc_storage_nlp_mp as usc) + +# For plots +from matplotlib import pyplot as plt +import matplotlib +matplotlib.rc('font', size=24) +plt.rc('axes', titlesize=24) + + +def create_ss_rankine_model(): + p_lower_bound = 350 # MW + p_upper_bound = 450 # MW + boiler_heat_max = 918e6 # in W + boiler_heat_min = 626e6 # 586e6 # in W + + m = pyo.ConcreteModel() + m.rankine = usc.main() + # set bounds for net cycle power output + m.rankine.fs.plant_power_out[0].unfix() + # m.rankine.fs.eq_min_power = pyo.Constraint( + # expr=m.rankine.fs.plant_power_out[0] >= p_lower_bound) + + # m.rankine.fs.eq_max_power = pyo.Constraint( + # expr=m.rankine.fs.plant_power_out[0] <= p_upper_bound) + + m.rankine.fs.boiler.inlet.flow_mol[0].unfix() # normally fixed + # m.rankine.fs.boiler.inlet.flow_mol[0].setlb(1) + m.rankine.fs.boiler.inlet.flow_mol[0].setlb(11804) + m.rankine.fs.boiler.inlet.flow_mol[0].setub(17854) + + m.rankine.fs.boiler.heat_duty[0].setlb(boiler_heat_min) + m.rankine.fs.boiler.heat_duty[0].setub(boiler_heat_max) + + # Unfix all data + m.rankine.fs.ess_hp_split.split_fraction[0, "to_hxc"].unfix() + m.rankine.fs.ess_bfp_split.split_fraction[0, "to_hxd"].unfix() + for salt_hxc in [m.rankine.fs.hxc]: + salt_hxc.inlet_1.unfix() + salt_hxc.inlet_2.flow_mass.unfix() # kg/s, 1 DOF + salt_hxc.area.unfix() # 1 DOF + + for salt_hxd in [m.rankine.fs.hxd]: + salt_hxd.inlet_2.unfix() + salt_hxd.inlet_1.flow_mass.unfix() # kg/s, 1 DOF + salt_hxd.area.unfix() # 1 DOF + + for unit in [m.rankine.fs.cooler]: + unit.inlet.unfix() + m.rankine.fs.cooler.outlet.enth_mol[0].unfix() # 1 DOF + + # Fix storage heat exchangers area and salt temperatures + # m.rankine.fs.salt_hot_temperature = 831 + m.rankine.fs.hxc.area.fix(1904) # 1904 + m.rankine.fs.hxd.area.fix(1095) # 1095 + m.rankine.fs.hxc.outlet_2.temperature[0].fix(831) + m.rankine.fs.hxd.inlet_1.temperature[0].fix(831) + m.rankine.fs.hxd.outlet_1.temperature[0].fix(513.15) + + return m + + +# with open('rts_results_all_prices.npy', 'rb') as f: +# dispatch = np.load(f) +# price = np.load(f) + +# plt.figure(figsize=(12, 8)) +# prices_used = copy.copy(price) +# prices_used[prices_used > 200] = 200 +# x = list(range(0, len(prices_used))) +# plt.bar(x, (prices_used)) +# plt.xlabel("Hour") +# plt.ylabel("LMP $/MWh") + +# weekly_prices = prices_used.reshape(52, 168) +# plt.figure(figsize=(12, 8)) +# for week in [0, 15, 25, 35, 45, 51]: +# plt.plot(weekly_prices[week]) +# plt.title("6 Representative Weeks") +# plt.xlabel("Hour") +# plt.ylabel("LMP $/MWh") + +# plt.figure(figsize=(12, 8)) +# for week in range(0, 52): +# plt.plot(weekly_prices[week], color="blue", alpha=0.1) +# plt.title("52 Representative Weeks") +# plt.xlabel("Hour") +# plt.ylabel("LMP $/MWh") + +# turbine_ramp_rate = 100 +# battery_ramp_rate = 50 +def create_mp_rankine_block(): + m = create_ss_rankine_model() + b1 = m.rankine + # DOF = 1 + print('DOFs within mp create 1 =', degrees_of_freedom(m)) + # Add coupling variable (next_power_output) + # b1.previous_power = Var( + # # b1.fs.time, + # domain=NonNegativeReals, + # initialize=400, + # bounds=(100, 450), + # # bounds=(0, 6739292), + # doc="Previous period power (MW)" + # ) + + b1.previous_salt_inventory_hot = Var( + # b1.fs.time, + domain=NonNegativeReals, + initialize=1, + bounds=(0, 1e7), + # bounds=(0, 1e12), + # bounds=(0, 6739292), + doc="Hot salt at the beginning of the hour (or time period), kg" + ) + b1.salt_inventory_hot = Var( + # b1.fs.time, + domain=NonNegativeReals, + initialize=80, + bounds=(0, 1e7), + # bounds=(0, 1e12), + # bounds=(0, 6739292), + doc="Hot salt inventory at the end of the hour (or time period), kg" + ) + b1.previous_salt_inventory_cold = Var( + # b1.fs.time, + domain=NonNegativeReals, + initialize=1, + bounds=(0, 1e7), + # bounds=(0, 1e12), + # bounds=(0, 6739292), + doc="Cold salt at the beginning of the hour (or time period), kg" + ) + b1.salt_inventory_cold = Var( + # b1.fs.time, + domain=NonNegativeReals, + initialize=80, + bounds=(0, 1e7), + # bounds=(0, 1e12), + # bounds=(0, 6739292), + doc="Cold salt inventory at the end of the hour (or time period), kg" + ) + + # @b1.fs.Constraint(doc="Plant ramping down constraint") + # def constraint_ramp_down(b): + # return ( + # b1.previous_power - 40 >= + # b1.fs.plant_power_out[0]) + + # @b1.fs.Constraint(doc="Plant ramping up constraint") + # def constraint_ramp_up(b): + # return ( + # b1.previous_power + 40 <= + # b1.fs.plant_power_out[0]) + + @b1.fs.Constraint(doc="Inventory balance at the end of the time period") + def constraint_salt_inventory_hot(b): + return ( + b1.salt_inventory_hot == + b1.previous_salt_inventory_hot + + 3600*b1.fs.hxc.inlet_2.flow_mass[0] + - 3600*b1.fs.hxd.inlet_1.flow_mass[0]) + + @b1.fs.Constraint(doc="Inventory balance at the end of the time period") + def constraint_salt_inventory_cold(b): + return ( + b1.salt_inventory_cold == + b1.previous_salt_inventory_cold + - 3600*b1.fs.hxc.inlet_2.flow_mass[0] + + 3600*b1.fs.hxd.inlet_1.flow_mass[0]) + + # @b1.fs.Constraint(doc="Maximum salt inventory at any time") + # def constraint_salt_inventory(b): + # return ( + # b1.salt_inventory_hot + + # b1.salt_inventory_cold == b1.fs.salt_amount) + # print('DOFs after mp create =', degrees_of_freedom(m)) + + @b1.fs.Constraint(doc="Maximum previous salt inventory at any time") + def constraint_salt_previous_inventory(b): + return ( + b1.previous_salt_inventory_hot + + b1.previous_salt_inventory_cold == b1.fs.salt_amount) + print('DOFs after mp create =', degrees_of_freedom(m)) + # raise Exception() + return m + +# the power output and battery state are linked between time periods + + +def get_rankine_link_variable_pairs(b1, b2): + """ + b1: current time block + b2: next time block + """ + return [(b1.rankine.salt_inventory_hot, + b2.rankine.previous_salt_inventory_hot)]#, + # (b1.rankine.fs.plant_power_out[0], + # b2.rankine.previous_power)] + +# the final power output and battery state must be the same +# as the intial power output and battery state + + +def get_rankine_periodic_variable_pairs(b1, b2): + """ + b1: final time block + b2: first time block + """ + # return + return [(b1.rankine.salt_inventory_hot, + b2.rankine.previous_salt_inventory_hot)]#, + # (b1.rankine.fs.plant_power_out[0], + # b2.rankine.previous_power)] + +number_hours = 4 +n_time_points = 1 * number_hours # hours in a week + +# create the multiperiod model object +mp_rankine = MultiPeriodModel( + n_time_points=n_time_points, + process_model_func=create_mp_rankine_block, + linking_variable_func=get_rankine_link_variable_pairs, + periodic_variable_func=get_rankine_periodic_variable_pairs + ) + +# you can pass arguments to your `process_model_func` +# for each time period using a dict of dicts as shown here. +# In this case, it is setting up empty dictionaries for each time period. + +# OPTIONAL KEYWORD ARGUMENTS +# time_points = np.arange(0,n_time_points) +# data_points = [{} for i in range(n_time_points)] +# data_kwargs = dict(zip(time_points,data_points)) +# mp_rankine.build_multi_period_model(data_kwargs); + +# if you have no arguments, you don't actually need to pass in anything. +mp_rankine.build_multi_period_model() +# NOTE: building the model will initialize each time block + +# retrieve pyomo model and active process blocks (i.e. time blocks) +m = mp_rankine.pyomo_model +blks = mp_rankine.get_active_process_blocks() + +# power = [310, 325, 420, 400] # , 310, 325, 420, 400] +# lmp = [21, 22, 50, 100] # , 22.4929, 21.8439, 23.4379, 23.4379] +power = [310, 325, 420, 400] #, 310, 325, 420, 400, 310, 325, 420, 400, + # 310, 325, 420, 400, 310, 325, 420, 400, 310, 325, 420, 400] +lmp = [10, 20, 50, 100] #, 21, 22, 50, 100, 21, 22, 50, 100, + # 21, 22, 50, 100, 21, 22, 50, 100, 21, 22, 50, 100] +# lmp = [22.4929, 21.8439, 23.4379, 23.4379, 23.4379, 21.6473, 21.6473] + +count = 0 +# add market data for each block +for blk in blks: + # dummy_water_cost = 1.5e-2 # $/mol + blk_rankine = blk.rankine + blk.lmp_signal = pyo.Param(default=0, mutable=True) + blk.net_power = Expression(expr=( + blk.rankine.fs.plant_power_out[0] + + (-1e-6) * blk.rankine.fs.es_turbine.work_mechanical[0])) + blk.revenue = lmp[count]*blk.net_power + # blk.revenue = blk.lmp_signal*blk_rankine.fs.plant_power_out[0] + blk.operating_cost = pyo.Expression( + expr=( + (blk_rankine.fs.operating_cost + + blk_rankine.fs.plant_fixed_operating_cost + + blk_rankine.fs.plant_variable_operating_cost) / (365 * 24) + # + blk_rankine.fs.condenser_mix.makeup.flow_mol[0] * dummy_water_cost * 3600 + ) + ) + blk.cost = pyo.Expression(expr=-(blk.revenue - blk.operating_cost)) + # blk.fix_power = pyo.Constraint( + # expr=power[count] == blk.net_power + # ) + # Cycle efficiency + blk.cycle_efficiency = Expression( + expr=blk.net_power / \ + blk.rankine.fs.plant_heat_duty[0] * 100 + ) + # blk.fix_power = pyo.Constraint( + # expr=blk.dispatch == ( + # blk.rankine.fs.plant_power_out[0] + # + (-1e-6) * blk.rankine.fs.es_turbine.work_mechanical[0] + # ) + # ) + count += 1 + +m.obj = pyo.Objective(expr=sum([blk.cost for blk in blks])) +blks[0].rankine.previous_salt_inventory_hot.fix(1) +# blks[0].rankine.previous_salt_inventory_cold.fix(1) +# blks[0].rankine.previous_power.fix(400) + +n_weeks = 1 +opt = pyo.SolverFactory('ipopt') +hot_tank_level = [] +net_power = [] + +for week in range(n_weeks): + print("Solving for week: ", week) + # for (i, blk) in enumerate(blks): + # blk.lmp_signal = weekly_prices[week][i] + opt.solve(m, tee=True) + hot_tank_level.append( + [pyo.value(blks[i].rankine.salt_inventory_hot) + for i in range(n_time_points)]) + net_power.append( + # [pyo.value(blks[i].rankine.fs.plant_power_out[0]) + [pyo.value(blks[i].net_power) + for i in range(n_time_points)]) +log_close_to_bounds(m) +log_infeasible_constraints(m) + +c = 0 +for blk in blks: + print() + print('Period {}'.format(c+1)) + print(' Previous hot salt inventory: {:.4f}'.format( + value(blks[c].rankine.previous_salt_inventory_hot))) + print(' Hot salt inventory: {:.4f}'.format( + value(blks[c].rankine.salt_inventory_hot))) + print(' Boiler heat duty: {:.4f}'.format( + value(blks[c].rankine.fs.boiler.heat_duty[0]) * 1e-6)) + print(' Boiler flow mol (mol/s): {:.4f}'.format( + value(blks[c].rankine.fs.boiler.outlet.flow_mol[0]))) + print(' Cycle efficiency (%): {:.4f}'.format( + value(blks[c].cycle_efficiency))) + print(' Net power (MW): {} (Plant Power Out: {:.4f}, ES Turbine: {:.4f})'.format( + value(blks[c].net_power), + value(blks[c].rankine.fs.plant_power_out[0]), + value(blks[c].rankine.fs.es_turbine.work_mechanical[0])*(-1e-6))) + print(' Salt from HXC (kg) [kg/s]: {:.4f} [{:.4f}]'.format( + value(blks[c].rankine.fs.hxc.outlet_2.flow_mass[0]) * 3600, + value(blks[c].rankine.fs.hxc.outlet_2.flow_mass[0]))) + print(' Salt from HXD (kg) [kg/s]: {:.4f} [{:.4f}]'.format( + value(blks[c].rankine.fs.hxd.outlet_1.flow_mass[0]) * 3600, + value(blks[c].rankine.fs.hxd.outlet_1.flow_mass[0]))) + print(' HXC Duty (MW): {:.4f}'.format( + value(blks[c].rankine.fs.hxc.heat_duty[0]) * 1e-6)) + print(' HXD Duty (MW): {:.4f}'.format( + value(blks[c].rankine.fs.hxd.heat_duty[0]) * 1e-6)) + print(' Split fraction to HXC: {:.4f}'.format( + value(blks[c].rankine.fs.ess_hp_split.split_fraction[0, "to_hxc"]))) + print(' Split fraction to HXD: {:.4f}'.format( + value(blks[c].rankine.fs.ess_bfp_split.split_fraction[0, "to_hxd"]))) + print(' Steam flow HXC (mol/s): {:.4f}'.format( + value(blks[c].rankine.fs.hxc.outlet_1.flow_mol[0]))) + print(' Steam flow HXD (mol/s): {:.4f}'.format( + value(blks[c].rankine.fs.hxd.outlet_2.flow_mol[0]))) + print(' Makeup water flow: {:.6f}'.format( + value(blks[c].rankine.fs.condenser_mix.makeup.flow_mol[0]))) + print(' Delta T in HXC (K): {:.4f}'.format( + value(blks[c].rankine.fs.hxc.delta_temperature_in[0]))) + print(' Delta T out HXC (K): {:.4f}'.format( + value(blks[c].rankine.fs.hxc.delta_temperature_out[0]))) + print(' Delta T in HXD (K): {:.4f}'.format( + value(blks[c].rankine.fs.hxd.delta_temperature_in[0]))) + print(' Delta T out HXD (K): {:.4f}'.format( + value(blks[c].rankine.fs.hxd.delta_temperature_out[0]))) + c += 1 + +n_weeks_to_plot = 1 +hours = np.arange(n_time_points*n_weeks_to_plot) +# lmp_array = weekly_prices[0:n_weeks_to_plot].flatten() +lmp_array = np.asarray(lmp[0:n_time_points]) +hot_tank_array = np.asarray(hot_tank_level[0:n_weeks_to_plot]).flatten() + +# Convert array to list to include hot tank level at time zero +lmp_list = [0] + lmp_array.tolist() +hot_tank_array0 = value(blks[0].rankine.previous_salt_inventory_hot) +hours_list = hours.tolist() + [number_hours] +hot_tank_list = [hot_tank_array0] + hot_tank_array.tolist() + +color = ['tab:green', 'b', 'r'] +plt.rcParams['lines.linewidth'] = 2 +font = {'size':16} +plt.rc('font', **font) + +fig1, ax1 = plt.subplots(figsize=(10, 5)) +ax1.spines["top"].set_visible(False) +ax1.spines["right"].set_visible(False) +ax1.grid(linestyle=':', which='both', + color='#696969', alpha=0.20) +ax1.set_xlabel('Time Period (hr)') +ax1.set_ylabel('Hot Tank Level [kg]', color=color[2]) +ax1.step(# [x + 1 for x in hours], hot_tank_array, + hours_list, hot_tank_list, + marker='.', ms=8, + ls='-', lw=1, + color=color[2]) +ax1.tick_params(axis='y', labelcolor=color[2]) +ax1.set_xticks(np.arange(0, n_time_points*n_weeks_to_plot + 1, step=1)) + +ax2 = ax1.twinx() +ax2.set_ylabel('LMP [$/MWh]', + color=color[1]) +ax2.step(# [x + 1 for x in hours], lmp_array, + hours_list, lmp_list, + marker='o', ls='-', lw=1, + color=color[1]) +ax2.tick_params(axis='y', labelcolor=color[1]) +plt.savefig('hot_tank_lmp_vs_hours.png') + +power_array = np.asarray(net_power[0:n_weeks_to_plot]).flatten() +# Convert array to list to include net power at time zero +power_array0 = 0 # zero since the plant is not operating +power_list = [power_array0] + power_array.tolist() + +fig2, ax3 = plt.subplots(figsize=(10, 5)) +ax3.spines["top"].set_visible(False) +ax3.spines["right"].set_visible(False) +ax3.grid(linestyle=':', which='both', + color='#696969', alpha=0.20) +ax3.set_xlabel('Time Period (hr)') +ax3.set_ylabel('Net Power [MW]', color=color[0]) +ax3.step(# [x + 1 for x in hours], power_array + hours_list, power_list, + marker='.', ms=8, + ls='-', lw=1, + color=color[0]) +ax3.tick_params(axis='y', + labelcolor=color[0]) +ax3.set_xticks(np.arange(0, n_time_points*n_weeks_to_plot + 1, step=1)) + +ax4 = ax3.twinx() +ax4.set_ylabel('LMP [$/MWh]', + color=color[1]) +ax4.step([x + 1 for x in hours], lmp_array, + marker='o', ls='-', lw=1, + color=color[1]) +ax4.tick_params(axis='y', + labelcolor=color[1]) +plt.savefig('net_power_lmp_vs_hours.png') +plt.show() diff --git a/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/nlp_multiperiod_usc_static_doubleloop.py b/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/nlp_multiperiod_usc_static_doubleloop.py new file mode 100644 index 000000000..3978c9054 --- /dev/null +++ b/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/nlp_multiperiod_usc_static_doubleloop.py @@ -0,0 +1,563 @@ + +# import multiperiod object and rankine example +from multiperiod import MultiPeriodModel +# from idaes.apps.multiperiod.examples.simple_rankine_cycle import ( +# create_model, set_inputs, initialize_model, +# close_flowsheet_loop, add_operating_cost) + +import pyomo.environ as pyo +from pyomo.environ import (Block, Param, Constraint, Objective, Reals, + NonNegativeReals, TransformationFactory, Expression, + maximize, RangeSet, value, log, exp, Var) +from pyomo.util.infeasible import (log_infeasible_constraints, + log_close_to_bounds) +import numpy as np +import copy +# from random import random +from idaes.core.util.model_statistics import degrees_of_freedom + +import usc_storage_nlp_mp_new_area as usc + +# For plots +from matplotlib import pyplot as plt +import matplotlib +matplotlib.rc('font', size=24) +plt.rc('axes', titlesize=24) + +method = "with_efficiency" # options: with_efficiency and without_efficiency +max_power = 436 # in MW +min_power = int(0.65 * max_power) # 283 in MW +max_power_storage = 29 # in MW +min_power_storage = 2 # in MW +max_power_total = max_power + max_power_storage +min_power_total = min_power + min_power_storage +min_storage_heat_duty = 0.01 # in MW +max_storage_heat_duty = 150 # in MW +load_from_file = 'initialized_usc_storage_mlp_mp.json' + +# Add number of days and hours per week +number_days = 1 +hours_per_day = 24 +number_hours = hours_per_day * number_days +n_time_points = 1 * number_hours # hours in a week + +lx = False +if lx: + scaling_obj = 1 + scaling_factor = 1e-3 +else: + scaling_obj = 1e-3 + scaling_factor = 1e-3 + +print() +print('Scaling_factor:', scaling_factor) + +tank_scenario = "hot_empty" # scenarios: "hot_empty", "hot_full", "hot_half_full" +tank_min = 1 * scaling_factor# in kg +tank_max = 6739292 * scaling_factor# in kg + +power_dispatch = [400, 386, 430, 410, + 450, 395, 380, 325, + 300, 0, 0, 0, + 0, 0, 0, 0, + 320, 360, 415, 450, + 455, 440, 445, 430] +# Select lmp source data and scaling factor according to that +use_rts_data = False +use_mod_rts_data = True +if use_rts_data: + print('>>>>>> Using RTS lmp data') + with open('rts_results_all_prices_base_case.npy', 'rb') as f: + dispatch = np.load(f) + price = np.load(f) +elif use_mod_rts_data: + # price = [22.9684, 21.1168, 20.4, 20.419, + # 20.419, 21.2877, 23.07, 25, + # 18.4634, 0, 0, 0, + # 0, 0, 0, 0, + # 19.0342, 23.07, 200, 200, + # 200, 200, 200, 200] + price = [22.9684, 21.1168, 20.4, 20.419, + 20.419, 21.2877, 23.07, 25, + 18.4634, 0, 0, 0, + 0, 0, 0, 0, + 19.0342, 23.07, 22.9684, 21.1168, + 19.0342, 23.07, 22.9684, 21.1168] + # 100, 100, 100, 100] +else: + print('>>>>>> Using NREL lmp data') + price = np.load("nrel_scenario_average_hourly.npy") + +def create_ss_rankine_model(): + + m = pyo.ConcreteModel() + m.rankine = usc.main(method=method, + max_power=max_power, + load_from_file=load_from_file) + + # Set bounds for plant power + m.rankine.fs.plant_min_power_eq = pyo.Constraint( + expr=m.rankine.fs.plant_power_out[0] >= min_power + ) + m.rankine.fs.plant_max_power_eq = pyo.Constraint( + expr=m.rankine.fs.plant_power_out[0] <= max_power + ) + + # Set bounds for discharge turbine + m.rankine.fs.es_turbine_min_power_eq = pyo.Constraint( + expr=m.rankine.fs.es_turbine.work[0] * (-1e-6) >= min_power_storage + ) + m.rankine.fs.es_turbine_max_power_eq = pyo.Constraint( + expr=m.rankine.fs.es_turbine.work[0] * (-1e-6) <= max_power_storage + ) + + m.rankine.fs.hxc.heat_duty.setlb(min_storage_heat_duty * 1e6) + m.rankine.fs.hxd.heat_duty.setlb(min_storage_heat_duty * 1e6) + m.rankine.fs.hxc.heat_duty.setub(max_storage_heat_duty * 1e6) + # m.rankine.fs.hxd.heat_duty.setub(max_storage_heat_duty * 1e6 * (1 - 0.01)) + + # Unfix data + m.rankine.fs.boiler.inlet.flow_mol[0].unfix() + + # Unfix storage system data + m.rankine.fs.ess_hp_split.split_fraction[0, "to_hxc"].unfix() + m.rankine.fs.ess_bfp_split.split_fraction[0, "to_hxd"].unfix() + for salt_hxc in [m.rankine.fs.hxc]: + salt_hxc.inlet_1.unfix() + salt_hxc.inlet_2.flow_mass.unfix() # kg/s, 1 DOF + salt_hxc.area.unfix() # 1 DOF + + for salt_hxd in [m.rankine.fs.hxd]: + salt_hxd.inlet_2.unfix() + salt_hxd.inlet_1.flow_mass.unfix() # kg/s, 1 DOF + salt_hxd.area.unfix() # 1 DOF + + for unit in [m.rankine.fs.cooler]: + unit.inlet.unfix() + m.rankine.fs.cooler.outlet.enth_mol[0].unfix() # 1 DOF + + # Fix storage heat exchangers area and salt temperatures + m.rankine.fs.hxc.area.fix(1904) + m.rankine.fs.hxd.area.fix(2830) + m.rankine.fs.hxc.outlet_2.temperature[0].fix(831) + m.rankine.fs.hxd.inlet_1.temperature[0].fix(831) + m.rankine.fs.hxd.outlet_1.temperature[0].fix(513.15) + + return m + + +def create_mp_rankine_block(): + print('>>> Creating USC model and initialization for each time period') + m = create_ss_rankine_model() + b1 = m.rankine + + # print('DOFs within mp create 1 =', degrees_of_freedom(m)) + + # Add coupling variables + b1.previous_power = Var( + domain=NonNegativeReals, + initialize=400, + bounds=(min_power, max_power_total), + doc="Previous period power (MW)" + ) + + inventory_max = 1e7 * scaling_factor + b1.previous_salt_inventory_hot = Var( + domain=NonNegativeReals, + initialize=1, + bounds=(0, inventory_max), + doc="Hot salt at the beginning of the hour (or time period), kg" + ) + b1.salt_inventory_hot = Var( + domain=NonNegativeReals, + initialize=80, + bounds=(0, inventory_max), + doc="Hot salt inventory at the end of the hour (or time period), kg" + ) + b1.previous_salt_inventory_cold = Var( + domain=NonNegativeReals, + initialize=1, + bounds=(0, inventory_max), + doc="Cold salt at the beginning of the hour (or time period), kg" + ) + b1.salt_inventory_cold = Var( + domain=NonNegativeReals, + initialize=80, + bounds=(0, inventory_max), + doc="Cold salt inventory at the end of the hour (or time period), kg" + ) + + @b1.fs.Constraint(doc="Plant ramping down constraint") + def constraint_ramp_down(b): + return ( + b1.previous_power - 60 <= + b1.fs.plant_power_out[0]) + + @b1.fs.Constraint(doc="Plant ramping up constraint") + def constraint_ramp_up(b): + return ( + b1.previous_power + 60 >= + b1.fs.plant_power_out[0]) + + @b1.fs.Constraint(doc="Inventory balance at the end of the time period") + def constraint_salt_inventory_hot(b): + return ( + b1.salt_inventory_hot == + b1.previous_salt_inventory_hot + + (3600*b1.fs.hxc.inlet_2.flow_mass[0] + - 3600*b1.fs.hxd.inlet_1.flow_mass[0]) * scaling_factor + ) + + @b1.fs.Constraint(doc="Maximum salt inventory at any time") + def constraint_salt_inventory(b): + return ( + b1.salt_inventory_hot + + b1.salt_inventory_cold == b1.fs.salt_amount * scaling_factor) + # print('DOFs after mp create =', degrees_of_freedom(m)) + + return m + + +# The tank level and power output are linked between time periods +def get_rankine_link_variable_pairs(b1, b2): + """ + b1: current time block + b2: next time block + """ + return [(b1.rankine.salt_inventory_hot, + b2.rankine.previous_salt_inventory_hot), + (b1.rankine.fs.plant_power_out[0], + b2.rankine.previous_power)] + + +# The final tank level and power output must be the same as the initial +# tank level and power output state +def get_rankine_periodic_variable_pairs(b1, b2): + """ + b1: final time block + b2: first time block + """ + # return + return [(b1.rankine.salt_inventory_hot, + b2.rankine.previous_salt_inventory_hot)]#, + # # (b1.rankine.fs.plant_power_out[0], + # # b2.rankine.previous_power)] + + +# Create the multiperiod model object. You can pass arguments to your +# "process_model_func" for each time period using a dict of dicts as +# shown here. In this case, it is setting up empty dictionaries for +# each time period. + +mp_rankine = MultiPeriodModel( + n_time_points=n_time_points, + process_model_func=create_mp_rankine_block, + linking_variable_func=get_rankine_link_variable_pairs, + # periodic_variable_func=get_rankine_periodic_variable_pairs +) + +# OPTIONAL KEYWORD ARGUMENTS +# time_points = np.arange(0,n_time_points) +# data_points = [{} for i in range(n_time_points)] +# data_kwargs = dict(zip(time_points,data_points)) +# mp_rankine.build_multi_period_model(data_kwargs); + +# If you have no arguments, you don't actually need to pass in +# anything. NOTE: building the model will initialize each time block +mp_rankine.build_multi_period_model() + +# Retrieve pyomo model and active process blocks (i.e. time blocks) +m = mp_rankine.pyomo_model +blks = mp_rankine.get_active_process_blocks() + +if use_rts_data: + lmp = price[0:number_hours].tolist() +elif use_mod_rts_data: + lmp = price +# print(lmp) + +# Add lmp market data for each block +count = 0 +for blk in blks: + blk_rankine = blk.rankine + blk.lmp_signal = Param(default=0, mutable=True) + blk.revenue = lmp[count]*blk.rankine.fs.net_power * scaling_factor + # blk.revenue = blk.lmp_signal*blk_rankine.fs.plant_power_out[0] + blk.operating_cost = pyo.Expression( + expr=( + (blk_rankine.fs.operating_cost + + blk_rankine.fs.plant_fixed_operating_cost + + blk_rankine.fs.plant_variable_operating_cost) / (365 * 24) + ) * scaling_factor + ) + blk.cost = pyo.Expression(expr=-(blk.revenue - blk.operating_cost)) + blk_rankine.fs.plant_power_dispatch_eq = pyo.Constraint( + expr=blk.rankine.fs.net_power >= power_dispatch[count] + ) + count += 1 + +m.obj = pyo.Objective(expr=sum([blk.cost for blk in blks]) * scaling_obj) + +# Initial state for salt tank for different scenarios +if tank_scenario == "hot_empty": + blks[0].rankine.previous_salt_inventory_hot.fix(tank_min) + blks[0].rankine.previous_salt_inventory_cold.fix(tank_max-tank_min) +elif tank_scenario == "hot_half_full": + blks[0].rankine.previous_salt_inventory_hot.fix(tank_max/2) + blks[0].rankine.previous_salt_inventory_cold.fix(tank_max/2) +elif tank_scenario == "hot_full": + blks[0].rankine.previous_salt_inventory_hot.fix(tank_max-tank_min) + blks[0].rankine.previous_salt_inventory_cold.fix(tank_min) +else: + print("Unrecognized scenario! Try hot_empty, hot_full, or hot_half_full") + +blks[0].rankine.previous_power.fix(400) + +# Plot results +n_weeks = 1 +opt = pyo.SolverFactory('ipopt') +hot_tank_level = [] +cold_tank_level = [] +net_power = [] +hxc_duty = [] +hxd_duty = [] +for week in range(n_weeks): + print() + print(">>>>>> Solving for week {}: {} hours of operation in {} day(s) ".format(week + 1, number_hours, number_days)) + # for (i, blk) in enumerate(blks): + # blk.lmp_signal = weekly_prices[week][i] + results = opt.solve(m, tee=True) + hot_tank_level.append( + [(pyo.value(blks[i].rankine.salt_inventory_hot) / scaling_factor) * 1e-3 + for i in range(n_time_points)]) + cold_tank_level.append( + [(pyo.value(blks[i].rankine.salt_inventory_cold) / scaling_factor) * 1e-3 + for i in range(n_time_points)]) + # cold_tank_level.append( + # [((tank_max - pyo.value(blks[i].rankine.salt_inventory_hot)) / scaling_factor) * 1e-3 + # for i in range(n_time_points)]) + net_power.append( + [pyo.value(blks[i].rankine.fs.net_power) + for i in range(n_time_points)]) + hxc_duty.append( + [pyo.value(blks[i].rankine.fs.hxc.heat_duty[0]) * 1e-6 + for i in range(n_time_points)]) + hxd_duty.append( + [pyo.value(blks[i].rankine.fs.hxd.heat_duty[0]) * 1e-6 + for i in range(n_time_points)]) + +log_close_to_bounds(m) +# log_infeasible_constraints(m) +print(results) + +c = 0 +print('Objective: {:.4f}'.format(value(m.obj))) +for blk in blks: + print() + print('Period {}'.format(c+1)) + print(' Net power: {:.4f}'.format( + value(blks[c].rankine.fs.net_power))) + print(' Plant Power Out: {:.4f}'.format( + value(blks[c].rankine.fs.plant_power_out[0]))) + print(' ES Turbine Power: {:.4f}'.format( + value(blks[c].rankine.fs.es_turbine.work_mechanical[0])*(-1e-6))) + print(' Cost ($): {:.4f}'.format(value(blks[c].cost) / scaling_factor)) + print(' Revenue ($): {:.4f}'.format(value(blks[c].revenue) / scaling_factor)) + print(' Operating cost ($): {:.4f}'.format(value(blks[c].operating_cost) / scaling_factor)) + print(' Specific Operating cost ($/MWh): {:.4f}'.format( + (value(blks[c].operating_cost) /scaling_factor) / value(blks[c].rankine.fs.net_power))) + print(' Cycle efficiency (%): {:.4f}'.format( + value(blks[c].rankine.fs.cycle_efficiency))) + print(' Boiler efficiency (%): {:.4f}'.format( + value(blks[c].rankine.fs.boiler_eff) * 100)) + print(' Boiler heat duty: {:.4f}'.format( + value(blks[c].rankine.fs.boiler.heat_duty[0]) * 1e-6)) + print(' Boiler flow mol (mol/s): {:.4f}'.format( + value(blks[c].rankine.fs.boiler.outlet.flow_mol[0]))) + print(' Previous salt inventory (mton): {:.4f}'.format( + (value(blks[c].rankine.previous_salt_inventory_hot) / scaling_factor) * 1e-3)) + print(' Salt from HXC (mton): {:.4f}'.format( + value(blks[c].rankine.fs.hxc.outlet_2.flow_mass[0]) * 3600 * 1e-3)) + print(' Salt from HXD (mton): {:.4f}'.format( + value(blks[c].rankine.fs.hxd.outlet_1.flow_mass[0]) * 3600 * 1e-3)) + print(' HXC Duty (MW): {:.4f}'.format( + value(blks[c].rankine.fs.hxc.heat_duty[0]) * 1e-6)) + print(' HXD Duty (MW): {:.4f}'.format( + value(blks[c].rankine.fs.hxd.heat_duty[0]) * 1e-6)) + print(' Split fraction to HXC: {:.4f}'.format( + value(blks[c].rankine.fs.ess_hp_split.split_fraction[0, "to_hxc"]))) + print(' Split fraction to HXD: {:.4f}'.format( + value(blks[c].rankine.fs.ess_bfp_split.split_fraction[0, "to_hxd"]))) + print(' Salt flow HXC (kg/s): {:.4f}'.format( + value(blks[c].rankine.fs.hxc.outlet_2.flow_mass[0]))) + print(' Salt flow HXD (kg/s): {:.4f}'.format( + value(blks[c].rankine.fs.hxd.outlet_1.flow_mass[0]))) + print(' Steam flow HXC (mol/s): {:.4f}'.format( + value(blks[c].rankine.fs.hxc.outlet_1.flow_mol[0]))) + print(' Steam flow HXD (mol/s): {:.4f}'.format( + value(blks[c].rankine.fs.hxd.outlet_2.flow_mol[0]))) + print(' Delta T in HXC (kg): {:.4f}'.format( + value(blks[c].rankine.fs.hxc.delta_temperature_in[0]))) + print(' Delta T out HXC (kg): {:.4f}'.format( + value(blks[c].rankine.fs.hxc.delta_temperature_out[0]))) + print(' Delta T in HXD (kg): {:.4f}'.format( + value(blks[c].rankine.fs.hxd.delta_temperature_in[0]))) + print(' Delta T out HXD (kg): {:.4f}'.format( + value(blks[c].rankine.fs.hxd.delta_temperature_out[0]))) + c += 1 + +n_weeks_to_plot = 1 +hours = np.arange(n_time_points*n_weeks_to_plot) +# lmp_array = weekly_prices[0:n_weeks_to_plot].flatten() +lmp_array = np.asarray(lmp[0:n_time_points]) +hot_tank_array = np.asarray(hot_tank_level[0:n_weeks_to_plot]).flatten() +cold_tank_array = np.asarray(cold_tank_level[0:n_weeks_to_plot]).flatten() + +# Convert array to list to include hot tank level at time zero +lmp_list = [0] + lmp_array.tolist() +hot_tank_array0 = (value(blks[0].rankine.previous_salt_inventory_hot) / scaling_factor) * 1e-3 +cold_tank_array0 = (value(blks[0].rankine.previous_salt_inventory_cold) / scaling_factor) * 1e-3 +hours_list = hours.tolist() + [number_hours] +hot_tank_list = [hot_tank_array0] + hot_tank_array.tolist() +cold_tank_list = [cold_tank_array0] + cold_tank_array.tolist() + +font = {'size':16} +plt.rc('font', **font) +fig1, ax1 = plt.subplots(figsize=(12, 8)) + +color = ['r', 'b', 'tab:green', 'k', 'tab:orange'] +ax1.set_xlabel('Time Period (hr)') +ax1.set_ylabel('Salt Tank Level (metric ton)', + color=color[3]) +ax1.spines["top"].set_visible(False) +ax1.spines["right"].set_visible(False) +ax1.grid(linestyle=':', which='both', + color='gray', alpha=0.30) +plt.axhline((tank_max / scaling_factor)*1e-3, ls=':', lw=1.75, + color=color[4]) +plt.text(number_hours / 2 - 1.5, (tank_max/scaling_factor)*1e-3 + 100, 'max salt', + color=color[4]) +ax1.step(# [x + 1 for x in hours], hot_tank_array, + hours_list, hot_tank_list, + marker='^', ms=4, label='Hot Salt', + lw=1, color=color[0]) +ax1.step(# [x + 1 for x in hours], hot_tank_array, + hours_list, cold_tank_list, + marker='v', ms=4, label='Cold Salt', + lw=1, color=color[1]) +ax1.legend(loc="center right", frameon=False) +ax1.tick_params(axis='y')#, + # labelcolor=color[3]) +ax1.set_xticks(np.arange(0, n_time_points*n_weeks_to_plot + 1, step=2)) + +ax2 = ax1.twinx() +ax2.set_ylabel('LMP ($/MWh)', + color=color[2]) +ax2.step([x + 1 for x in hours], lmp_array, + marker='o', ms=3, alpha=0.5, + ls='-', lw=1, + color=color[2]) +ax2.tick_params(axis='y', + labelcolor=color[2]) +plt.savefig('multiperiod_usc_storage_new_area_rts1_salt_tank_level_{}h.png'.format(hours_per_day)) + + +font = {'size':18} +plt.rc('font', **font) + +power_array = np.asarray(net_power[0:n_weeks_to_plot]).flatten() +# Convert array to list to include net power at time zero +power_array0 = value(blks[0].rankine.previous_power) +power_list = [power_array0] + power_array.tolist() + +fig2, ax3 = plt.subplots(figsize=(12, 8)) +ax3.set_xlabel('Time Period (hr)') +ax3.set_ylabel('Net Power Output (MW)', + color=color[1]) +ax3.spines["top"].set_visible(False) +ax3.spines["right"].set_visible(False) +ax3.grid(linestyle=':', which='both', + color='gray', alpha=0.30) +plt.text(number_hours / 2 - 3, max_power - 5.5, 'max plant power', + color=color[4]) +plt.text(number_hours / 2 - 2.8, max_power_total + 1, 'max net power', + color=color[4]) +plt.axhline(max_power, ls='-.', lw=1.75, + color=color[4]) +plt.axhline(max_power_total, ls=':', lw=1.75, + color=color[4]) +ax3.step(hours_list, power_list, + marker='o', ms=4, + lw=1, color=color[1]) +ax3.tick_params(axis='y', + labelcolor=color[1]) +ax3.set_xticks(np.arange(0, n_time_points*n_weeks_to_plot + 1, step=2)) + +ax4 = ax3.twinx() +ax4.set_ylabel('LMP ($/MWh)', + color=color[2]) +ax4.step([x + 1 for x in hours], lmp_array, + marker='o', ms=3, alpha=0.5, + ls='-', lw=1, + color=color[2]) +ax4.tick_params(axis='y', + labelcolor=color[2]) +plt.savefig('multiperiod_usc_storage_new_area_rts1_power_{}h.png'.format(hours_per_day)) + + +zero_point = True +hxc_array = np.asarray(hxc_duty[0:n_weeks_to_plot]).flatten() +hxd_array = np.asarray(hxd_duty[0:n_weeks_to_plot]).flatten() +hxc_duty0 = 0 # zero since the plant is not operating +hxc_duty_list = [hxc_duty0] + hxc_array.tolist() +hxd_duty0 = 0 # zero since the plant is not operating +hxd_duty_list = [hxd_duty0] + hxd_array.tolist() + +fig3, ax5 = plt.subplots(figsize=(12, 8)) +ax5.set_xlabel('Time Period (hr)') +ax5.set_ylabel('Storage Heat Duty (MW)', + color=color[3]) +ax5.spines["top"].set_visible(False) +ax5.spines["right"].set_visible(False) +ax5.grid(linestyle=':', which='both', + color='gray', alpha=0.30) +plt.text(number_hours / 2 - 2.2, max_storage_heat_duty + 1, 'max storage', + color=color[4]) +plt.text(number_hours / 2 - 2, min_storage_heat_duty - 6.5, 'min storage', + color=color[4]) +plt.axhline(max_storage_heat_duty, ls=':', lw=1.75, + color=color[4]) +plt.axhline(min_storage_heat_duty, ls=':', lw=1.75, + color=color[4]) +if zero_point: + ax5.step(hours_list, hxc_duty_list, + marker='^', ms=4, label='Charge', + color=color[0]) + ax5.step(hours_list, hxd_duty_list, + marker='v', ms=4, label='Discharge', + color=color[1]) +else: + ax5.step([x + 1 for x in hours], hxc_array, + marker='^', ms=4, lw=1, + label='Charge', + color=color[0]) + ax5.step([x + 1 for x in hours], hxd_array, + marker='v', ms=4, lw=1, + label='Discharge', + color=color[1]) +ax5.legend(loc="center right", frameon=False) +ax5.tick_params(axis='y', + labelcolor=color[3]) +ax5.set_xticks(np.arange(0, n_time_points*n_weeks_to_plot + 1, step=2)) + +ax6 = ax5.twinx() +ax6.set_ylabel('LMP ($/MWh)', + color=color[2]) +ax6.step([x + 1 for x in hours], lmp_array, + marker='o', ms=3, alpha=0.5, + ls='-', color=color[2]) +ax6.tick_params(axis='y', + labelcolor=color[2]) +plt.savefig('multiperiod_usc_storage_new_area_rts1_hxduty_{}h.png'.format(hours_per_day)) + +plt.show() diff --git a/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/plot_doubleloop_results.py b/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/plot_doubleloop_results.py new file mode 100644 index 000000000..b99302302 --- /dev/null +++ b/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/plot_doubleloop_results.py @@ -0,0 +1,200 @@ +import os +from types import ModuleType +import pandas as pd +from importlib import resources +import numpy as np +import matplotlib.pyplot as plt +from matplotlib.ticker import MultipleLocator, FormatStrFormatter, AutoMinorLocator +try: + from importlib import resources # Python 3.8+ +except ImportError: + import importlib_resources as resources # Python 3.7 +from dispatches.models.fossil_case.ultra_supercritical_plant import storage +from dispatches.models.fossil_case.ultra_supercritical_plant.storage import bidding_plugin_test_multiperiod_rankine + +# result_dir = 'bidding_plugin_test_multiperiod_rankine3d2s_0420' + + + +# comparison_result_dir = "no_plugin_result" +# result_dir = "double_loop_plugin_multiperiod_wind_battery" +# rts_dir = "/home/xgao1/DowlingLab/RTS-GMLC/RTS_Data/SourceData" + +fossil_gen = "102_STEAM_3" +bus = 102 + +MAJOR_TICK_SIZE = "xx-large" +MINOR_TICK_SIZE = "xx-large" +LABEL_SIZE = "xx-large" +LEGEND_SIZE = "xx-large" +TITLE_SIZE = "xx-large" + +# tracker_df = pd.read_csv(os.path.join(result_dir, "tracking_model_detail_new.csv")) +# tracker_df = pd.read_csv(os.path.join("tracking_results.csv")) +# tracker_df = tracker_df.loc[tracker_df["Horizon [hr]"]==0] +# tracker_df["Time Index"] = range(len(tracker_df)) +# tracker_df + +# fig, ax = plt.subplots(figsize=(10,5)) +# tracker_df.plot(x="Time Index", y="Power Dispatch [MW]", ax=ax, label='RT Dispatches') +# tracker_df.plot(x="Time Index", y="Power Output [MW]", ax=ax, label='Power Output') + +# ax.set_xlabel("Time [hr]", fontsize=LABEL_SIZE) +# ax.set_ylabel("Power Output [MW]", fontsize=LABEL_SIZE) +# ax.xaxis.set_minor_locator(MultipleLocator(4)) +# ax.xaxis.set_major_locator(MultipleLocator(24)) + +# ax.tick_params(axis='both', which='major', labelsize=MAJOR_TICK_SIZE) +# ax.tick_params(axis='both', which='minor', labelsize=MINOR_TICK_SIZE) + +# plt.rc('legend', fontsize = LEGEND_SIZE) +# plt.grid(False) +# plt.savefig('dispatch_results_3day_0413.png') + +# ax.grid() +# ax.set_title(f"{fossil_gen} Plugin Power Output", fontsize=TITLE_SIZE) +with resources.path(storage, "tracking_results.csv") as data_file_path: + assert data_file_path.is_file() + tracking_model_df = pd.read_csv(str(data_file_path)) +# with resources.path(bidding_plugin_test_multiperiod_rankine, "tracker_detail.csv") as data_file_path2: +# assert data_file_path2.is_file() +# tracking_model_df2 = pd.read_csv(str(data_file_path2)) + +# tracking_model_df = pd.read_csv(os.path.join(result_dir, "tracking_model_detail_new.csv")) +tracking_model_df = tracking_model_df.loc[tracking_model_df["Horizon [hr]"]==0] +# tracking_model_df2 = tracking_model_df2.loc[tracking_model_df2["Horizon [hr]"]==0] +tracking_model_df["Time Index"] = range(len(tracking_model_df)) +# tracking_model_df +tracking_model_df["Storage Tank Level [%]"] = tracking_model_df["Hot Tank Level [MT]"]/67392.92 +tracking_model_df["Boiler Duty [MWth]"] = tracking_model_df["Plant Heat Duty [MWth]"] + +fig, ax = plt.subplots(figsize=(12, 6)) +ax2 = ax.twinx() +cols = ["Plant Power [MW]", "Storage Power [MW]", "Time Index"] +ylabels = ["Plant Power [MW]", "Storage Power [MW]"] +tracking_model_df[cols].plot(x="Time Index", kind='bar', width=1, stacked=True, ax=ax, label=ylabels, ylim=(0, 600)) +# tracking_model_df[cols].plot.area(x="Time Index", ax=ax) +# tracking_model_df.plot(x="Time Index", y="Power Dispatch [MW]", drawstyle="steps-mid",ax=ax, label='RT Dispatches [MWe]', color="black", ylim=(0, 600)) +# plt.savefig('tracking_dispatch_results_3day.png') +# plt.show() + +tracking_model_df.plot(x="Time Index", y="Storage Tank Level [%]", drawstyle="steps-mid", ax=ax, label='Storage Level [%]', color="red", ylim=(0, 600)) +tracking_model_df.plot(x="Time Index", y="Boiler Duty [MWth]", ax=ax, label='Boiler Duty [$MW_{th}$]', color="pink", ylim=(0, 600)) +# legend1 = pyplot.legend(plot_lines[0], ["algo1", "algo2", "algo3"], loc=1) +# tracking_model_df.plot(x="Time Index", y="Storage Tank Level [%]", drawstyle="steps-mid", ax=ax, color="red") +# tracking_model_df.plot(x="Time Index", y="Power Prices [$/MWh]", ax=ax2, label='LMP [$/MWh]', color="gold", ylim=(0, 40)) +# legend1 = plt.legend(fontsize=LEGEND_SIZE, ncol=2, loc = "upper left", bbox_to_anchor=(0.7,1.2)) +# tracker_df.legend(fontsize=LEGEND_SIZE, ncol=2, loc = "upper left", bbox_to_anchor=(0.7,1.2)) +ax.set_xlabel("Time [hr]", fontsize=LABEL_SIZE) +# ax.set_ylabel("Power [MW]", fontsize=LABEL_SIZE) +ax2.set_ylabel("LMP [$/MWh]", fontsize=LABEL_SIZE) +ax.xaxis.set_minor_locator(MultipleLocator(4)) +ax.xaxis.set_major_locator(MultipleLocator(24)) +ax2.xaxis.set_minor_locator(MultipleLocator(4)) +ax2.xaxis.set_major_locator(MultipleLocator(24)) +ax.legend(fontsize=LEGEND_SIZE, ncol=2, loc = "upper left", bbox_to_anchor=(0.26,1.3)) + +ax.tick_params(axis='both', which='major', labelsize=MAJOR_TICK_SIZE) +ax.tick_params(axis='both', which='minor', labelsize=MINOR_TICK_SIZE) +ax2.tick_params(axis='both', which='minor', labelsize=MINOR_TICK_SIZE) +ax2.tick_params(axis='both', which='major', labelsize=MAJOR_TICK_SIZE) + +# ax.grid() +# plt.ylim([0, 500]) +# plt.grid(False) +plt.legend(fontsize=LEGEND_SIZE, ncol=2, loc = "upper left", bbox_to_anchor=(-0.01,1.2)) +plt.savefig('doubleloop_standard_0422_3d.png') +plt.show() + +fig, ax = plt.subplots(figsize=(10, 5)) +ax2 = ax.twinx() +# cols = ["Plant Power [MW]", "Storage Power [MW]", "Time Index"] +# tracking_model_df[cols].plot(x="Time Index", kind='bar', width=1, stacked=True, ax=ax) +# tracking_model_df[cols].plot.area(x="Time Index", ax=ax) +# tracker_df.plot(x="Time Index", y="Power Dispatch [MW]", drawstyle="steps-mid",ax=ax, label='RT Dispatches', color="black") +# plt.savefig('tracking_dispatch_results_3day.png') +# plt.show() +# tracking_model_df.plot(x="Time Index", y="Power Prices [$/MWh]", ax=ax, label='LMP [$/MWh]', color="green", ylim=(0,40)) +# tracking_model_df.plot(x="Time Index", y="Storage Tank Level [%]", drawstyle="steps-mid", ax=ax, label='Tank Level [%]', color="red") +tracking_model_df.plot(x="Time Index", y="Hot Tank Level [MT]", drawstyle="steps-mid",ax=ax2, label='Tank Level [MT]', color="red", ylim=(0,3e6)) +# +# tracking_model_df.plot(x="Time Index", y="Storage Tank Level [%]", drawstyle="steps-mid", ax=ax, color="red") +# tracking_model_df.plot(x="Time Index", y="Storage Tank Level [%]", drawstyle="steps-mid", ax=ax, color="red") + +ax.set_xlabel("Time [hr]", fontsize=LABEL_SIZE) +# ax.set_ylabel("LMP [$/MWh]", fontsize=LABEL_SIZE) +ax2.set_ylabel("Salt Level [MT]", fontsize=LABEL_SIZE) +ax.xaxis.set_minor_locator(MultipleLocator(4)) +ax.xaxis.set_major_locator(MultipleLocator(24)) + +ax.tick_params(axis='both', which='major', labelsize=MAJOR_TICK_SIZE) +ax.tick_params(axis='both', which='minor', labelsize=MINOR_TICK_SIZE) + +# ax.grid() +# plt.legend(fontsize=LEGEND_SIZE, ncol=2, loc = "upper center", bbox_to_anchor=(0.5,1.35)) +# plt.ylim([0, 500]) +# plt.grid(False) +plt.savefig('LMP_SaltLevel_0422_3d.png') +plt.show() +# **************************************************** + +# ax.set_title(f"{fossil_gen} Plugin Tracking Power States", fontsize=TITLE_SIZE) + +# bidding_model_df = pd.read_csv(os.path.join(result_dir, "bidding_model_detail_3day.csv")) +# bidding_model_df = bidding_model_df.loc[bidding_model_df["Horizon [hr]"]<24] +# bidding_model_df["Time Index"] = range(len(bidding_model_df)) +# #bidding_model_df + +# fig, ax = plt.subplots(figsize=(10, 5)) +# cols = ["Plant Power [MW]", "Storage Power [MW]", "Time Index"] +# bidding_model_df[cols].plot(x="Time Index", kind='bar', width=1, stacked=True, ax=ax) +# bidding_model_df[cols].plot.area(x="Time Index", ax=ax) +# # tracker_df.plot(x="Time Index", y="Power Dispatch [MW]", ax=ax, label='RT Dispatches', color="black") +# # bidding_model_df.plot(x="Time Index", y="Storage Tank Level [%]", drawstyle="steps-mid", ax=ax, color="red") +# bidding_model_df.plot(x="Time Index", y="Total Power Output [MW]", drawstyle="steps-mid", ax=ax, color="black") + +# ax.set_xlabel("Time [hr]", fontsize=LABEL_SIZE) +# ax.set_ylabel("Power [MW]", fontsize=LABEL_SIZE) +# ax.xaxis.set_minor_locator(MultipleLocator(4)) +# ax.xaxis.set_major_locator(MultipleLocator(24)) + +# ax.tick_params(axis='both', which='major', labelsize=MAJOR_TICK_SIZE) +# ax.tick_params(axis='both', which='minor', labelsize=MINOR_TICK_SIZE) + +# plt.rc('legend', fontsize = LEGEND_SIZE) + +# ax.grid() +# ax.set_title(f"{fossil_gen} Plugin Bidding Power States", fontsize=TITLE_SIZE) + +fig, ax = plt.subplots(figsize=(10, 5)) +ax2 = ax.twinx() +# cols = ["Plant Power [MW]", "Storage Power [MW]", "Time Index"] +# tracking_model_df[cols].plot(x="Time Index", kind='bar', width=1, stacked=True, ax=ax) +# tracking_model_df[cols].plot.area(x="Time Index", ax=ax) +# tracker_df.plot(x="Time Index", y="Power Dispatch [MW]", drawstyle="steps-mid",ax=ax, label='RT Dispatches', color="black") +# plt.savefig('tracking_dispatch_results_3day.png') +# plt.show() +# tracking_model_df.plot(x="Time Index", y="Power Prices [$/MWh]", ax=ax, label='LMP [$/MWh]', color="green", ylim=(0,40)) +tracking_model_df.plot(x="Time Index", y="HXC Duty", drawstyle="steps-mid", ax=ax2, label='Charge Heat Exchanger [$MW_{th}$]', color="red", ylim=(0,200)) +tracking_model_df.plot(x="Time Index", y="HXD Duty", drawstyle="steps-mid",ax=ax2, label='Discharge Heat Exchanger [$MW_{th}$]', color="blue", ylim=(0,200)) + +ax.legend(loc = "upper left", bbox_to_anchor=(0.01,1)) + +# tracking_model_df.plot(x="Time Index", y="Storage Tank Level [%]", drawstyle="steps-mid", ax=ax, color="red") +# tracking_model_df.plot(x="Time Index", y="Storage Tank Level [%]", drawstyle="steps-mid", ax=ax, color="red") + +ax.set_xlabel("Time [hr]", fontsize=LABEL_SIZE) +# ax.set_ylabel("LMP [$/MWh]", fontsize=LABEL_SIZE) +ax2.set_ylabel("Heat Duty [$MW_{th}$]", fontsize=LABEL_SIZE) +ax.xaxis.set_minor_locator(MultipleLocator(4)) +ax.xaxis.set_major_locator(MultipleLocator(24)) + +ax.tick_params(axis='both', which='major', labelsize=MAJOR_TICK_SIZE) +ax.tick_params(axis='both', which='minor', labelsize=MINOR_TICK_SIZE) + +# ax.grid() +# plt.legend(fontsize=LEGEND_SIZE, ncol=2, loc = "upper center", bbox_to_anchor=(0.5,1.35)) +# plt.ylim([0, 500]) +# plt.grid(False) +plt.savefig('hx_duties_0422_3d.png') +plt.show() diff --git a/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/plugin_double_loop_usc.py b/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/plugin_double_loop_usc.py new file mode 100644 index 000000000..9b5601542 --- /dev/null +++ b/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/plugin_double_loop_usc.py @@ -0,0 +1,121 @@ +# custom plugin file for running the rankine cycle with a battery as a +# multi-period model in the Prescient double-loop +import pickle +import pandas as pd +import pyomo.environ as pyo +from pyomo.common.config import ConfigDict, ConfigValue +from pyomo.common.fileutils import this_file_dir + +from idaes.apps.grid_integration import Tracker +from idaes.apps.grid_integration import Bidder +from idaes.apps.grid_integration import PlaceHolderForecaster +from idaes.apps.grid_integration import DoubleLoopCoordinator + +from multiperiod_double_loop_usc import MultiPeriodUsc +from idaes.apps.grid_integration.model_data import GeneratorModelData +import os.path + +# with open("usc_gen_data.pkl", "rb") as f: +# gen_data = pickle.load(f) + +generator_data = { + "gen_name": "102_STEAM_3", + "generator_type": "thermal", + "p_min": 286, + "p_max": 460, + "min_down_time": 4, + "min_up_time": 8, + "ramp_up_60min": 60, + "ramp_down_60min": 60, + "shutdown_capacity": 286, + "startup_capacity": 286, + "production_cost_bid_pairs": [ + (286, 22.16602), + (350, 19.0723), + (400, 18.29703), + (430, 17.71727), + (460, 17.71727), + ], + "startup_cost_pairs": [(4, 7355.42), (10, 10488.35), (12, 11383.41)], + "fixed_commitment": 1, +} +model_data = GeneratorModelData(**generator_data) + +# default_bid_curve = gen_data["Original Marginal Cost Curve"] +# pmin = gen_data["PMin MW"] +# pmax = gen_data["PMax MW"] +# gen_name = gen_data["generator_name"] +# raise Exception() +tracking_horizon = 12 # hours +bidding_horizon = 48 # hours +n_scenario = 2 # for bidding +n_tracking_hour = 1 # advance n_tracking_hour (i.e. assume we solve every hour) + +# create forecaster +price_forecasts_df = pd.read_csv(os.path.join(this_file_dir(), "C:\\grid\\source_code\\idaes-pse\\idaes\\apps\\grid_integration\\examples\\lmp_forecasts_concat.csv")) +forecaster = PlaceHolderForecaster(price_forecasts_df=price_forecasts_df) +# create solver +solver = pyo.SolverFactory("ipopt") +solver.options = { + "max_iter": 200, +} + + +# Setup trackers, bidder, and coordinator +################################################################################# +# Tracker +mp_usc_tracker = MultiPeriodUsc( + horizon=tracking_horizon, + model_data=model_data + # pmin=pmin, + # pmax=pmax, + # default_bid_curve=default_bid_curve, + # generator_name=gen_name, +) +thermal_tracker = Tracker( + tracking_model_object=mp_usc_tracker, + n_tracking_hour=n_tracking_hour, + solver=solver, +) + +# Projection Tracker +mp_usc_projection_tracker = MultiPeriodUsc( + horizon=tracking_horizon, + model_data=model_data + # pmin=pmin, + # pmax=pmax, + # default_bid_curve=default_bid_curve, + # generator_name=gen_name, +) +thermal_projection_tracker = Tracker( + tracking_model_object=mp_usc_projection_tracker, + n_tracking_hour=n_tracking_hour, + solver=solver, +) + +# Bidder +mp_usc_bidder = MultiPeriodUsc( + horizon=bidding_horizon, + model_data=model_data + # pmin=pmin, + # pmax=pmax, + # default_bid_curve=default_bid_curve, + # generator_name=gen_name, +) +thermal_bidder = Bidder( + bidding_model_object=mp_usc_bidder, + n_scenario=n_scenario, + solver=solver, + forecaster=forecaster, +) + +# Coordinator +coordinator = DoubleLoopCoordinator( + bidder=thermal_bidder, + tracker=thermal_tracker, + projection_tracker=thermal_projection_tracker, +) + +## Prescient requires the following functions in this module +get_configuration = coordinator.get_configuration +register_plugins = coordinator.register_plugins diff --git a/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/run_double_loop_usc.py b/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/run_double_loop_usc.py new file mode 100644 index 000000000..7c43a37c8 --- /dev/null +++ b/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/run_double_loop_usc.py @@ -0,0 +1,203 @@ +############################################################################## +# DISPATCHES was produced under the DOE Design Integration and Synthesis +# Platform to Advance Tightly Coupled Hybrid Energy Systems program (DISPATCHES), +# and is copyright (c) 2021 by the software owners: The Regents of the University +# of California, through Lawrence Berkeley National Laboratory, National +# Technology & Engineering Solutions of Sandia, LLC, Alliance for Sustainable +# Energy, LLC, Battelle Energy Alliance, LLC, University of Notre Dame du Lac, et +# al. All rights reserved. +# +# Please see the files COPYRIGHT.md and LICENSE.md for full copyright and license +# information, respectively. Both files are also available online at the URL: +# "https://github.com/gmlc-dispatches/dispatches". +# +############################################################################## + +""" +This script uses the multiperiod object for the integrated fossil case study +to set up and run the double-loop framework. +""" + +__author__ = "Naresh Susarla" + +import os +from types import ModuleType +import pandas as pd +from importlib import resources +import numpy as np +import matplotlib.pyplot as plt +from matplotlib.ticker import MultipleLocator, FormatStrFormatter, AutoMinorLocator +try: + from importlib import resources # Python 3.8+ +except ImportError: + import importlib_resources as resources # Python 3.7 + +# Import Pyomo packages +import pyomo.environ as pyo + +# Import IDAES packages +from idaes.apps.grid_integration import Tracker +from idaes.apps.grid_integration import Bidder +from idaes.apps.grid_integration import PlaceHolderForecaster +from idaes.apps.grid_integration import DoubleLoopCoordinator +# from idaes.apps.grid_integration.model_data import GeneratorModelData +from idaes.apps.grid_integration.model_data import ( + GeneratorModelData as _UpstreamGeneratorModelData, + RealValueValidator, + AtLeastPminValidator +) + +# Import Prescient simulator +from prescient.simulator import Prescient + +# Import integrated ultra-supercritical power plant with energy storage model +from dispatches_sample_data import rts_gmlc +from dispatches.models.fossil_case.ultra_supercritical_plant import storage +from dispatches.models.fossil_case.ultra_supercritical_plant.storage.multiperiod_double_loop_usc import MultiPeriodUsc + +class GeneratorModelData(_UpstreamGeneratorModelData): + p_min_agc = RealValueValidator(min_val=0) + p_max_agc = AtLeastPminValidator() + + def __init__(self, **kwargs): + super().__init__(**kwargs) + self.p_min_agc = self.p_min + self.p_max_agc = self.p_max + +generator_data = { + "gen_name": "102_STEAM_3", + "generator_type": "thermal", + "p_min": 286, + "p_max": 460, + "min_down_time": 4, + "min_up_time": 8, + "ramp_up_60min": 60, + "ramp_down_60min": 60, + "shutdown_capacity": 286, + "startup_capacity": 286, + "production_cost_bid_pairs": [ + (286, 22.16602), + (350, 19.0723), + (400, 18.29703), + (430, 17.71727), + (460, 17.71727), + ], + "startup_cost_pairs": [(4, 7355.42), (10, 10488.35), (12, 11383.41)], + "fixed_commitment": 1, +} +model_data = GeneratorModelData(**generator_data) + +tracking_horizon = 4 # hours +bidding_horizon = 48 # hours +n_scenario = 2 # for bidding +n_tracking_hour = 1 # advance n_tracking_hour (i.e. assume we solve every hour) +num_days = 2 + +# create forecaster +# price_forecasts_df = pd.read_csv( +# os.path.join( +# this_file_dir(), +# "C:\\grid\\source_code\\idaes-pse\\idaes\\apps\\grid_integration\\examples\\lmp_forecasts_concat.csv")) + +with resources.open_text("idaes.apps.grid_integration.examples", "lmp_forecasts_concat.csv") as f: + price_forecasts_df = pd.read_csv(f) +forecaster = PlaceHolderForecaster(price_forecasts_df=price_forecasts_df) + +# create solver +solver = pyo.SolverFactory("ipopt") +solver.options = { + "max_iter": 200, +} + + +# Setup trackers, bidder, and coordinator +################################################################################# +# Tracker +mp_usc_tracker = MultiPeriodUsc( + horizon=tracking_horizon, + model_data=model_data +) + +thermal_tracker = Tracker( + tracking_model_object=mp_usc_tracker, + n_tracking_hour=n_tracking_hour, + solver=solver, +) + +# Projection Tracker +mp_usc_projection_tracker = MultiPeriodUsc( + horizon=tracking_horizon, + model_data=model_data +) + +thermal_projection_tracker = Tracker( + tracking_model_object=mp_usc_projection_tracker, + n_tracking_hour=n_tracking_hour, + solver=solver, +) + +# Bidder +mp_usc_bidder = MultiPeriodUsc( + horizon=bidding_horizon, + model_data=model_data +) +thermal_bidder = Bidder( + bidding_model_object=mp_usc_bidder, + n_scenario=n_scenario, + solver=solver, + forecaster=forecaster, +) + +# Coordinator +coordinator = DoubleLoopCoordinator( + bidder=thermal_bidder, + tracker=thermal_tracker, + projection_tracker=thermal_projection_tracker, +) + + +class PrescientPluginModule(ModuleType): + def __init__(self, get_configuration, register_plugins): + self.get_configuration = get_configuration + self.register_plugins = register_plugins + + +plugin_module = PrescientPluginModule( + get_configuration=coordinator.get_configuration, + register_plugins=coordinator.register_plugins, +) + + +# If installing the dispatches-sample-data +rts_gmlc_data_dir = str(rts_gmlc.source_data_path) +# rts_gmlc_data_dir = "C:\\grid\\source_code\\Prescient\\downloads\\rts_gmlc\\RTS-GMLC\\RTS_Data\\SourceData" + +options = { + "data_path": rts_gmlc_data_dir, + "input_format": "rts-gmlc", + "simulate_out_of_sample": True, + "run_sced_with_persistent_forecast_errors": True, + "output_directory": "bidding_multiperiod_usc", + "start_date": "2020-07-10", + "num_days": num_days, + "sced_horizon": tracking_horizon, + "ruc_horizon": bidding_horizon, + "compute_market_settlements": True, + "day_ahead_pricing": "LMP", + "ruc_mipgap": 0.05, + "symbolic_solver_labels": True, + "reserve_factor": 0.0, + "deterministic_ruc_solver": "gurobi", + "output_ruc_solutions": True, + "sced_solver": "gurobi", + "print_sced": True, + "enforce_sced_shutdown_ramprate": True, + "plugin": { + "doubleloop": { + "module": plugin_module, + "bidding_generator": "102_STEAM_3", + } + }, +} + +Prescient().simulate(**options) diff --git a/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/run_prescient_double_loop_usc.py b/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/run_prescient_double_loop_usc.py new file mode 100644 index 000000000..48733a42c --- /dev/null +++ b/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/run_prescient_double_loop_usc.py @@ -0,0 +1,90 @@ +from prescient.simulator import Prescient + +#point to rts_gmlc scenario data +print(" ") +print("------Start Prescient Simulation-------") +print(" ") +# raise Exception() +# rts_gmlc_data_dir = "C:\\grid\\source_code\\Prescient\\downloads\\rts_gmlc\\deterministic_with_network_scenarios" +rts_gmlc_data_dir = "C:\\grid\\source_code\\Prescient\\downloads\\rts_gmlc\\RTS-GMLC\\RTS_Data\\SourceData" + +options = { + "data_path": rts_gmlc_data_dir, + "input_format": "rts-gmlc", + "simulate_out_of_sample": True, + "run_sced_with_persistent_forecast_errors": True, + "output_directory": "bidding_plugin_test_multiperiod_rankine", + "start_date": "2020-07-10", + "num_days": 1, + "sced_horizon": 12, + "ruc_horizon": 48, + "compute_market_settlements": True, + "day_ahead_pricing": "LMP", + "ruc_mipgap": 0.01, + "symbolic_solver_labels": True, + "reserve_factor": 0.0, + "deterministic_ruc_solver": "gurobi", + "output_ruc_solutions": True, + "sced_solver": "gurobi", + "print_sced": True, + # "output_sced_loads": True, + "enforce_sced_shutdown_ramprate": True, + "plugin": { + "doubleloop": { + "module": "plugin_double_loop_usc.py", + "bidding_generator": "102_STEAM_3", + } + }, +} + +Prescient().simulate(**options) + +# # plot every bid curve over 96 hours +# from mpl_toolkits.mplot3d import Axes3D +# from matplotlib import cm +# costs = bid_profiles_sorted.iloc[:,0:6].to_numpy() +# powers = bid_profiles_sorted.iloc[:,6:-1].to_numpy() +# costs = np.array([costs[i][~np.isnan(costs[i])] for i in range(len(costs))]) +# powers = np.array([powers[i][~np.isnan(powers[i])] for i in range(len(powers))]) +# times = list(range(len(costs))) + +# plt.figure(figsize = (8,8)) +# t = np.arange(len(times)) +# ax = plt.subplot(projection='3d') +# for t in times: +# costs_plt = costs[t] +# powers_plt = powers[t] +# ax.plot(np.ones(len(costs_plt))*t, powers_plt,costs_plt,color="black") +# ax.set_xlabel("Hour") +# ax.set_ylabel("\nPower [MW]") +# ax.set_zlabel("\n Cost [$/MWh]",linespacing=3.0) +# plt.tight_layout() + + + +# rts_gmlc_data_dir = "/home/xgao1/DowlingLab/RTS-GMLC/RTS_Data/SourceData" +# options = { +# ​​​​​​"data_path": rts_gmlc_data_dir, +# "input_format":"rts-gmlc", +# "simulate_out_of_sample": True, +# "run_sced_with_persistent_forecast_errors": True, +# "output_directory": "bidding_plugin_test_multiperiod_rankine", +# "start_date": "01-02-2020", +# "num_days": 1, +# "sced_horizon": 4, +# "ruc_horizon": 48, +# "compute_market_settlements": True, +# "day_ahead_pricing": "LMP", +#     "ruc_mipgap": 0.05, +# "symbolic_solver_labels": True, +# "reserve_factor": 0.0, +# "deterministic_ruc_solver": "gurobi", +# "sced_solver": "gurobi", +# "plugin": {​​​​​​ +# "doubleloop": {​​​​​​ +# "module": "plugin_wind_battery_doubleloop.py", +# "bidding_generator": "309_WIND_1", +# }​​​​​​ +# }​​​​​​, +# }​​​​​​ + diff --git a/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/usc_gen_data.pkl b/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/usc_gen_data.pkl new file mode 100644 index 0000000000000000000000000000000000000000..ffd052b24a4c11b5aea96b18b94401ec6c2a7bf3 GIT binary patch literal 631 zcmZo*nVQ4I00y;FGs$}xgCi4|bZI>sJ8kVI&KLP%zAs)9$+6n6&& zh_)U9kc>-yc^;CS08B0@F}FY=D6u3JXpTNm;S_iK4^TOg;F83m5(SUc#1e(@#G+gU zU#E~zpt+m=rh!0@kXvbLjzU0DW^$^6ioP#Ymf>abvLQ`oB6g+YkBFN)kT2fG25?_#90y4q=u~^B` z$vwe6$l^dl>|b_UC7nE`g(40#2ktSx^whl6qQsK?qWHYT+|(&O+=d25@xdXkj=u56 zQ+k+!K)&hfeX9>tPCZ0a5J1p$g9V#U&s&3RUiWaipq;7Zlh&`H3ko zi5-Wl+Zo@s_3#Dcm!}pf1gECwrskCtPXWfJH=}PHqc@Z91V(RW-*t?oz&K1SO3%zo z%mHhLs&RKP7HV?X-eBU*CwCZ@Ejc@~j7Q;;h+K(`@R1W~>P0)q_ literal 0 HcmV?d00001 diff --git a/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/fe_ccs/CO2_capture.py b/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/fe_ccs/CO2_capture.py new file mode 100644 index 000000000..4720974e3 --- /dev/null +++ b/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/fe_ccs/CO2_capture.py @@ -0,0 +1,506 @@ +############################################################################## +# Institute for the Design of Advanced Energy Systems Process Systems +# Engineering Framework (IDAES PSE Framework) Copyright (c) 2018-2020, by the +# software owners: The Regents of the University of California, through +# Lawrence Berkeley National Laboratory, National Technology & Engineering +# Solutions of Sandia, LLC, Carnegie Mellon University, West Virginia +# University Research Corporation, et al. All rights reserved. +# +# Please see the files COPYRIGHT.txt and LICENSE.txt for full copyright and +# license information, respectively. Both files are also available online +# at the URL "https://github.com/IDAES/idaes-pse". +############################################################################## +""" +IDAES carbon capture system block, hybrid mass balances and surrogate models + +The unit has 1 inlet stream for fluegas: inlet +The unit has 2 outlet streams: pureCO2 and exhaust_gas + +The state variables are component flow mol, temperature, and pressure. +The state variables can be accessed thotough ports named: + +* inlet - flue gas from NGCC plant +* pure_CO2 - stream for compression train +* exhaust_gas - exhaust gas to DAC system or stack + +Surrogate models are used to compute solvent flow rate and specific reboiler duty. +The inlet variables to estimate such output variables are: lean loading and PZ molality. + +Inlet Vars: + +* flue gas (component molar flowrate [H20, CO2, O2, N2], temperature, pressure) +* solvent lean loading (0.1 to 0.6, mol CO2/mol PZ) +* solvent molality (PZ = 3, 5, 7 mol) + +Output Vars: + +* specific reboiler duty (GJ/t CO2 or MJ/kg CO2) +* lean solvent flowrate in kmol/s (0-100) +* L/G ratio for absorber columns (0 - 12) (only for Surrogate.PZ_ref1_90_capture) +* exhaust_gas (component molar flowrate [H20, CO2, O2, N2], temperature, pressure) +* pureCO2 (component molar flowrate [H20, CO2, O2, N2], temperature, pressure) + +Surrogate models, the team explored different surrogate models. We developed +different models using commercial software for running simulations for 90% CO2 Capture, +95 % CO2 capture, and 97% CO2 Capture. Then, we provide data from a public source (ref 1) +and finally, we develop a simple correction factor to provide data to train data for 5 molal PZAS technology. +The models available are: + +* PZ_90_capture: Conventional plant configuration to capture 90% capture +* PZ_95_capture: Conventional plant configuration to capture 95% capture +* PZ_97_capture: Conventional plant configuration to capture 97% capture +* PZ_90to97_capture: Conventional plant configuration to between 90 to 97% capture (using data obtained for previous surrogates) +* rel_PZAS_5mol_capture: using results for 5 molal PZ_90_capture applied a correction factor for SRD (using FEED studies). +* PZ_ref1_90_capture: Literature review, data obtained for reference 1 (see below). + +Users can select any of these models while constructing the models, see examples --> +idaes/power_generation/flowsheets/ngcc/ngcc_withCCS.py +and/or idaes/power_generation/carbon_capture/piperazine_surrogates/tests/test_co2capture.py + +Reference 1 (public data used to train surrogate models = PZ_ref1_90_capture): +Gaspar J. von Solms N., Thomsen K., Fosbol F. (2016) Multivariable Optimization + of the Piperazine CO2 Post-Combustion Process. Energy Procedia 86(2016)229-238 +""" +# Import IDAES cores +from idaes.core import declare_process_block_class, UnitModelBlockData, useDefault +import idaes.core.util.scaling as iscale +# Additional import for the unit operation +import pyomo.environ as pyo +from pyomo.environ import Var, units as pyunits, Constraint, exp, log +from pyomo.network import Port +import idaes.logger as idaeslog +# import gen_sm as ifit +from pyomo.common.config import ConfigBlock, ConfigValue, In +from enum import Enum +from idaes.power_generation.carbon_capture.piperazine_surrogates import L_G_ratio # surrogate model for L_G_ratio + +__author__ = "M. Zamarripa" +__version__ = "1.0.0" + +class Surrogates(Enum): + PZ_90_capture = 0 + PZ_95_capture = 1 + PZ_97_capture = 2 + PZ_90to97_capture = 3 + rel_PZAS_5mol_capture = 4 + PZ_ref1_90_capture = 5 + MEA = 6 + +class Technology(Enum): + ngcc = 0 # natural gas combined cycle + scpc = 1 # supercritical coal fired power plant + +# ---------------------------------------------------------------------------- +@declare_process_block_class("CO2Capture") +class CO2CaptureData(UnitModelBlockData): + ''' + CO2Capture surrogate model based on total flow of CO2 rich stream flow only + Assumptions: (toDo: update Assumptions) + Fixed composition, temperature, and pressure of feed stream + Fixed CO2 purity in the CO2 product stream + ''' + CONFIG = ConfigBlock() + CONFIG.declare("dynamic", ConfigValue( + domain=In([useDefault, True, False]), + default=useDefault, + description="Dynamic model flag", + doc="""Indicates whether this model will be dynamic or not, + **default** = useDefault. + **Valid values:** { + **useDefault** - get flag from parent (default = False), + **True** - set as a dynamic model, + **False** - set as a steady-state model.}""")) + CONFIG.declare("has_holdup", ConfigValue( + default=False, + domain=In([True, False]), + description="Holdup construction flag", + doc="""Indicates whether holdup terms should be constructed or not. + Must be True if dynamic = True, + **default** - False. + **Valid values:** { + **True** - construct holdup terms, + **False** - do not construct holdup terms}""")) + CONFIG.declare("CO2_capture_rate_surrogates", ConfigValue( + default=Surrogates.PZ_90_capture, + domain=In(Surrogates), + description='surrogate models to be used in SRD eqn', + doc='4 surrogates have been used, 90, 95, 97, and 90to97')) + CONFIG.declare("flue_gas_source", ConfigValue( + default=Technology.ngcc, + domain=In(Technology), + description='surrogate models to be used in SRD eqn', + doc='4 surrogates have been used, 90, 95, 97, and 90to97')) + + + def build(self): + # Call UnitModel.build to setup dynamics + super().build() + + self.component_list = ['CO2', 'H2O', 'O2', 'N2'] + + self.make_vars() + self.add_material_balances() + + # Add ports: 3 (1 for inlet and 2 for outlets) + self.inlet = Port(noruleinit=True, + doc="A port for co2 rich inlet stream") + self.pureCO2 = Port(noruleinit=True, + doc="A port for pure CO2 outlet stream") + self.exhaust_gas = Port(noruleinit=True, + doc="A port for vent gas outlet stream") + + # Add state vars to the ports + # self.inlet.add(self.inlet_flow_mol, "flow_mol") + self.inlet.add(self.inlet_temperature, "temperature") + self.inlet.add(self.inlet_pressure, "pressure") + self.inlet.add(self.inlet_flow_mol_comp, "flow_mol_comp") + + # self.pureco2.add(self.pureco2_flow_mol, "flow_mol") + self.pureCO2.add(self.pureCO2_temperature, "temperature") + self.pureCO2.add(self.pureCO2_pressure, "pressure") + self.pureCO2.add(self.pureCO2_flow_mol_comp, "flow_mol_comp") + + # self.exhaust_gas.add(self.exhaust_gas_flow_mol, "flow_mol") + self.exhaust_gas.add(self.exhaust_gas_temperature, "temperature") + self.exhaust_gas.add(self.exhaust_gas_pressure, "pressure") + self.exhaust_gas.add(self.exhaust_gas_flow_mol_comp, "flow_mol_comp") + + def make_vars(self): + ''' + This section builds port vars (Fc, T, P), CO2 capture rate + + ''' + + # units declaration for vars + flow_units = pyunits.mol/pyunits.s + pressure_units = pyunits.Pa + temperature_units = pyunits.K + heat_duty_units = pyunits.J/pyunits.s + + # Component mole flows [mol/s] + self.inlet_flow_mol_comp = Var( + self.flowsheet().config.time, + self.component_list, + initialize=1400/len(self.component_list), + units=flow_units, + doc='Inlet stream: Component mole flow [mol/s]') + + self.pureCO2_flow_mol_comp = Var( + self.flowsheet().config.time, + self.component_list, + initialize=1200/len(self.component_list), + units=flow_units, + doc='PureCO2 stream: Component mole flow [mol/s]') + + self.exhaust_gas_flow_mol_comp = Var( + self.flowsheet().config.time, + self.component_list, + initialize=100/len(self.component_list), + units=flow_units, + doc='exhaust_gas stream: Component mole flow [mol/s]') + + # Temperature [K] + self.inlet_temperature = Var(self.flowsheet().config.time, + initialize=110, + units=temperature_units, + doc='Inlet temperature [K]') + + self.pureCO2_temperature = Var(self.flowsheet().config.time, + initialize=110, + units=temperature_units, + doc='PureCO2 temperature [K]') + + self.exhaust_gas_temperature = Var(self.flowsheet().config.time, + initialize=110, + units=temperature_units, + doc='exhaust_gas temperature [K]') + + # Pressue [Pa] + self.inlet_pressure = Var(self.flowsheet().config.time, + initialize=17, + units=pressure_units, + doc='Inlet pressure [Pa]') + + self.pureCO2_pressure = Var(self.flowsheet().config.time, + initialize=17, + units=pressure_units, + doc='PureCO2 pressure [Pa]') + + self.exhaust_gas_pressure = Var(self.flowsheet().config.time, + initialize=17, + units=pressure_units, + doc='exhaust_gas pressure [Pa]') + # CO2 Capture rate + self.CO2_capture_rate = Var(self.flowsheet().config.time, + initialize=0.9, + doc='CO2 capture rate') + # lean loading + self.lean_loading = Var(self.flowsheet().config.time, + initialize=0.1, + bounds=(0.1, 6.0), + doc='lean loading') + # Pz molality + self.Pz_mol = Var(self.flowsheet().config.time, + # domain=pyo.Integers, + initialize=3, + bounds=(3, 7), + doc='Pz molality') + + self.SRD = Var(self.flowsheet().config.time, + initialize=8, + bounds=(0, 100), + doc='Specific reboiler duty GJ/ton CO2 or MJ/kg CO2') + + def add_material_balances(self): + ''' This section is for material balance constraints''' + + # pureCO2 mass balance + @self.Constraint(self.flowsheet().config.time, + self.component_list, + doc="pureCO2 mass balances") + def pureCO2_eqn(b, t, c): + if c == "CO2": + return b.pureCO2_flow_mol_comp[t, c] == \ + b.inlet_flow_mol_comp[t, c] * b.CO2_capture_rate[t] + else: + return b.pureCO2_flow_mol_comp[t, c] == 0.0 + + # water drop in flue gas + @self.Expression(self.flowsheet().config.time, doc="water drop") + def water_drop(b, t): + return b.inlet_flow_mol_comp[0, 'H2O']*0.5 + + # Overall mass balances + @self.Constraint(self.flowsheet().config.time, + self.component_list, + doc="Inlet component mole flow eqn") + def flow_mol_comp_inlet_eqn(b, t, c): + if c == "H2O": + return b.inlet_flow_mol_comp[t, c] == \ + b.exhaust_gas_flow_mol_comp[t, c] + b.water_drop[t] + elif c == "CO2": + return b.inlet_flow_mol_comp[t, c] == \ + b.exhaust_gas_flow_mol_comp[t, c] \ + + b.pureCO2_flow_mol_comp[t, c] + else: + return b.inlet_flow_mol_comp[t, c] == \ + b.exhaust_gas_flow_mol_comp[t, c] + + # Pressure equations + @self.Constraint(self.flowsheet().config.time, + doc="Pressure drop") + def exh_pressure_eqn(b, t): + return b.inlet_pressure[t] == b.exhaust_gas_pressure[t] + + @self.Constraint(self.flowsheet().config.time, + doc="Pressure drop") + def pureCO2_pressure_eqn(b, t): + return b.inlet_pressure[t] == b.pureCO2_pressure[t] + + # Temperature equations + @self.Constraint(self.flowsheet().config.time, + doc="Temperature") + def pureCO2_temp_eqn(b, t): + return b.inlet_temperature[t] == b.pureCO2_temperature[t] + + @self.Constraint(self.flowsheet().config.time, + doc="Temperature") + def exh_temp_eqn(b, t): + return b.inlet_temperature[t] == b.exhaust_gas_temperature[t] + + + @self.Constraint(self.flowsheet().config.time, + doc="Specific reboiler duty in GJ/t CO2 or MJ/ kg CO2") + def SRD_eqn(b, t): + CO2leanloading = b.lean_loading[t] + molality = b.Pz_mol[t] + Capture = b.CO2_capture_rate[t] + if b.config.flue_gas_source == Technology.ngcc: + if b.config.CO2_capture_rate_surrogates == Surrogates.PZ_90_capture: + return b.SRD[t] == - 3.6233485374100991016633 * log(molality/4.) + 0.33347583941977870791717E-001 * (molality/4.)**3 + 6.8390136776297296705707 * (molality*CO2leanloading/4.)**0.5 - 5.7867174977020807702388 * (molality*CO2leanloading/4.)**2 + 5.1342721429236659602680 * (molality*CO2leanloading/4.)**3 + 0.19963960036749664461730 * (molality/CO2leanloading/4.) + elif b.config.CO2_capture_rate_surrogates == Surrogates.PZ_95_capture: + return b.SRD[t] == - 2.1195314593911489531308 * log(molality/4.) + 2.3838807672964539285942 * exp(CO2leanloading) + 0.17427301681432125213256 * (molality/4.)**2 + 0.12496410061822192660852 * (molality/CO2leanloading/4.) + 0.93458997890860340262975 * (CO2leanloading/molality/0.25) + elif b.config.CO2_capture_rate_surrogates == Surrogates.PZ_97_capture: + return b.SRD[t] == - 912.90813190561812007218 * CO2leanloading + 963.87626280230563224904 * exp(CO2leanloading) - 840.95461087585590576055 * (molality/2.)**2 - 614.38277546147764951456 * CO2leanloading**2 + 274.40532024830611135258 * (molality/2.)**3 - 0.61984641382653959951199 * (molality*CO2leanloading/2.)**3 + 0.26430328623580695568407 * (molality/CO2leanloading/2.) - 11.869291574687059309667 * (CO2leanloading/molality/0.5) - 0.23630953358941128236714E-002 * (molality/CO2leanloading/2.)**2 + elif b.config.CO2_capture_rate_surrogates == Surrogates.PZ_90to97_capture: + return b.SRD[t] == - 0.10526756950236890175709 * Capture + 0.52057178809591142520929 * lean_loading + 0.98788205977359255793857 * molality + 2.0990364304677582296677 * Capture**0.5 + 3.5938248110847506033849 * lean_loading**0.5 - 6.3111812164050720141972 * molality**0.5 + 2.4029805693688151002618 * lean_loading**3 - 0.10937466124959506139080E-001 * Capture/molality - 41.496993880686794398116 * lean_loading/Capture + 0.36946342949766633467767E-001 * molality/lean_loading + elif b.config.CO2_capture_rate_surrogates == Surrogates.rel_PZAS_5mol_capture: + return (- 22.312295301354438947783 * CO2leanloading + 117.51384451486856619340 * CO2leanloading**2 - 269.05987870514132964672 * CO2leanloading**3 + 234.98153128275288281657 * CO2leanloading**4 + 3.9380879255782788028739) + elif b.config.CO2_capture_rate_surrogates == Surrogates.PZ_ref1_90_capture: + return b.SRD[t] == (- 15565.227507172588957474 * CO2leanloading + + 8.9237367058697429911263 * log(CO2leanloading) + + 15285.362653727905126289 * exp(CO2leanloading) + - 6741.0217492965430210461 * CO2leanloading**2 + - 3865.5900513667870654899 * CO2leanloading**3 + + 0.17312045830047528404555E-002 * molality**3 + - 1.2960483459315448317994 * CO2leanloading*molality + - 15235.956076189686427824) + else: + raise Exception('solvent is not supported for this technology') + elif b.config.flue_gas_source == Technology.scpc: + if b.config.CO2_capture_rate_surrogates == Surrogates.MEA: + return b.SRD[t] == 1135585.36238969 * CO2leanloading - 440.509698856962 * log(CO2leanloading) - 1127184.48012032 * exp(CO2leanloading) + 533953.122356288 * CO2leanloading**2 + 248202.546339126 * CO2leanloading**3 + 1125580.12992624 + else: + raise Exception('solvent not supported for this technology') + else: + raise Exception('Flue gas source is not supported') + + @self.Expression(self.flowsheet().config.time, + doc="Reboiler duty in MW") + def reboiler_duty(b, t): # mol/s /1000 = kgmol/s * 44 kg/kgmol = kg / s + return b.SRD[t] * (b.pureCO2_flow_mol_comp[t, "CO2"] + * 44.01 / 1000) + + @self.Expression(self.flowsheet().config.time, + doc="Lean loading flowrate - kmol.hr") + def LL_flowrate(b, t): + CO2leanloading = b.lean_loading[t] + molality = b.Pz_mol[t] + Capture = b.CO2_capture_rate[t] + if b.config.flue_gas_source == Technology.ngcc: + if b.config.CO2_capture_rate_surrogates == Surrogates.PZ_90_capture: + return - 33769665655.708782196045 * CO2leanloading - 85501806.085839942097664 * log(CO2leanloading) + 32051499965.332691192627 * exp(CO2leanloading) + 1399851299.6695346832275 * CO2leanloading**0.5 + 207401.67766238830517977 * (molality/4.)**2 - 13931345844.245344161987 * CO2leanloading**2 - 7882628979.2478094100952 * CO2leanloading**3 - 1216008.0524285589344800 * (molality*CO2leanloading/4.) - 721743.35243441292550415 * (molality/CO2leanloading/4.)**0.5 + 3619336.4956937171518803 * (CO2leanloading/molality/0.25) - 32534484771.443439483643 + elif b.config.CO2_capture_rate_surrogates == Surrogates.PZ_95_capture: + return - 8128346023.5960435867310 * CO2leanloading + 8097036304.4302654266357 * exp(CO2leanloading) + 143943.79958957055350766 * (molality/4.)**2 - 3906104299.9280681610107 * CO2leanloading**2 - 1694548695.5476403236389 * CO2leanloading**3 - 326827.12907762406393886 * (molality*CO2leanloading/4.)**2 + 14089575.472042093053460 * (CO2leanloading/molality/0.25) - 4257.3482804741406653193 * (molality/CO2leanloading/4.)**2 - 22772347.982399865984917 * (CO2leanloading/molality/0.25)**2 + 131.22409336241202026940 * (molality/CO2leanloading/4.)**3 + 22174561.087608262896538 * (CO2leanloading/molality/0.25)**3 - 8094525387.7033281326294 + elif b.config.CO2_capture_rate_surrogates == Surrogates.PZ_97_capture: + return - 11073017307.372232437134 * CO2leanloading + 868882.20868137793149799 * log(CO2leanloading) - 73653243483.647430419922 * exp(molality/2.) + 11052450134.832271575928 * exp(CO2leanloading) + 141797181109.30328369141 * (molality/2.)**2 - 5395322021.3101339340210 * CO2leanloading**2 - 920354.31067807460203767 * (molality*CO2leanloading/2.) - 117144381.90464735031128 * (molality*CO2leanloading/2.)**3 - 6153045658.4519367218018 * (CO2leanloading/molality/0.5)**3 + elif b.config.CO2_capture_rate_surrogates == Surrogates.PZ_90to97_capture: + return 21493.893918343124823878 * Capture - 18837259.090658042579889 * lean_loading - 303798.35064064717153087 * molality - 547220.78199295536614954 * Capture**0.5 + 7997911.0828296802937984 * lean_loading**0.5 + 1594229.8231671806424856 * molality**0.5 + 16593654.797202151268721 * lean_loading**2 + 58165.759382280644786078 * Capture*lean_loading + 60595.207259644026635215 * Capture/molality + 60446137.647265411913395 * (lean_loading/molality)**2 + # No data for PZAS, using same as PZ 95 capture + elif b.config.CO2_capture_rate_surrogates == Surrogates.rel_PZAS_5mol_capture: + return - 8128346023.5960435867310 * CO2leanloading + 8097036304.4302654266357 * exp(CO2leanloading) + 143943.79958957055350766 * (molality/4.)**2 - 3906104299.9280681610107 * CO2leanloading**2 - 1694548695.5476403236389 * CO2leanloading**3 - 326827.12907762406393886 * (molality*CO2leanloading/4.)**2 + 14089575.472042093053460 * (CO2leanloading/molality/0.25) - 4257.3482804741406653193 * (molality/CO2leanloading/4.)**2 - 22772347.982399865984917 * (CO2leanloading/molality/0.25)**2 + 131.22409336241202026940 * (molality/CO2leanloading/4.)**3 + 22174561.087608262896538 * (CO2leanloading/molality/0.25)**3 - 8094525387.7033281326294 + elif b.config.CO2_capture_rate_surrogates == Surrogates.PZ_ref1_90_capture: + A2 = b.lean_loading[t] + B2 = b.Pz_mol[t] + return (291019.778242091 * A2 - 4.98043194086976 * B2 - 287661.899241911 * exp(A2) + 130101.667827899 * A2**2 + 71279.9986297754 * A2**3 + 0.0148339624265494 * (B2/A2)**2 + 287396.698159522) + else: + raise Exception('CO2 surrogate model is not supported') + elif b.config.flue_gas_source == Technology.scpc: + if b.config.CO2_capture_rate_surrogates == Surrogates.MEA: + return 1 # No data available for solvent flowrate + else: + raise Exception('solvent not supported for this technology') + else: + raise Exception('Flue gas source is not supported') + + if self.config.CO2_capture_rate_surrogates == Surrogates.PZ_ref1_90_capture: + # This surrogate model is only valid for reference 1 + @self.Expression(self.flowsheet().config.time, + doc="L/G ratio") + def L_Gratio(b, t): + x1 = b.lean_loading[t] + x2 = b.Pz_mol[t] + return L_G_ratio.f(b.lean_loading[t], b.Pz_mol[t]) + + @self.Expression(self.flowsheet().config.time, + doc="lean loading cost $/year") + def solvent_cost(b, t): + basis = 1 # 1 kg H2O basis for estimating mol fractions + PZ_MW = 86.1356 + H2O_MW = 18.0153 # kg/kgmol + mol_H2O = basis / H2O_MW * 1000 # mol fraction + mol_CO2 = b.lean_loading[t] * b.Pz_mol[t] + PZ_mol_frac = b.Pz_mol[t]/(b.Pz_mol[t] + mol_H2O + mol_CO2) + H2O_mol_frac = mol_H2O / (b.Pz_mol[t] + mol_H2O + mol_CO2) + CO2_mol_frac = mol_CO2 / (b.Pz_mol[t] + mol_H2O + mol_CO2) + PZ_cost = 9 * PZ_MW # PZ $9/kg - converting to $/kmol + PZ_makeup = 0.02 # 2 % of total flowrate + return b.LL_flowrate[t] * PZ_makeup * PZ_mol_frac * 24 * 365 * PZ_cost + + def initialize(blk, + outlvl=idaeslog.NOTSET, + solver='ipopt', + optarg={'tol': 1e-6}): + ''' + CO2 pure pyomo block initialization routine + + Keyword Arguments: + outlvl : sets output level of initialisation routine + + optarg : solver options dictionary object (default={'tol': 1e-6}) + solver : str indicating whcih solver to use during + initialization (default = 'ipopt') + + Returns: + None + ''' + iscale.calculate_scaling_factors(blk) # remove to solve using baron + init_log = idaeslog.getInitLogger(blk.name, outlvl, tag="unit") + solve_log = idaeslog.getSolveLogger(blk.name, outlvl, tag="unit") + opt = pyo.SolverFactory(solver) + opt.options = optarg + + init_log.info_low("Starting initialization...") + + blk.inlet.flow_mol_comp[0, 'CO2'].fix() + blk.inlet.flow_mol_comp[0, 'O2'].fix() + blk.inlet.flow_mol_comp[0, 'H2O'].fix() + blk.inlet.flow_mol_comp[0, 'N2'].fix() + blk.CO2_capture_rate.fix() + + # solve model + with idaeslog.solver_log(solve_log, idaeslog.DEBUG) as slc: + res = opt.solve(blk, tee=slc.tee) + init_log.info_high( + "Initialization Step 1 {}.".format(idaeslog.condition(res)) + ) + init_log.info_high("Initialization Step 1 Complete.") + + # ToDo: release state + init_log.info("Initialization Complete.") + + def calculate_scaling_factors(self): + super().calculate_scaling_factors() + + iscale.set_scaling_factor(self.inlet_flow_mol_comp[0.0, 'CO2'], 1e-3) + iscale.set_scaling_factor(self.inlet_flow_mol_comp[0.0, 'H2O'], 1e-3) + iscale.set_scaling_factor(self.inlet_flow_mol_comp[0.0, 'O2'], 1e-3) + iscale.set_scaling_factor(self.inlet_flow_mol_comp[0.0, 'N2'], 1e-3) + iscale.set_scaling_factor(self.pureCO2_flow_mol_comp[0.0, 'CO2'], 1e-3) + iscale.set_scaling_factor(self.pureCO2_flow_mol_comp[0.0, 'H2O'], 1e-3) + iscale.set_scaling_factor(self.pureCO2_flow_mol_comp[0.0, 'O2'], 1e-3) + iscale.set_scaling_factor(self.pureCO2_flow_mol_comp[0.0, 'N2'], 1e-3) + iscale.set_scaling_factor(self.exhaust_gas_flow_mol_comp[0.0, 'CO2'], + 1e-3) + iscale.set_scaling_factor(self.exhaust_gas_flow_mol_comp[0.0, 'H2O'], + 1e-3) + iscale.set_scaling_factor(self.exhaust_gas_flow_mol_comp[0.0, 'O2'], + 1e-3) + iscale.set_scaling_factor(self.exhaust_gas_flow_mol_comp[0.0, 'N2'], + 1e-3) + iscale.set_scaling_factor(self.inlet_temperature[0.0], 1e-2) + iscale.set_scaling_factor(self.pureCO2_temperature[0.0], 1e-2) + iscale.set_scaling_factor(self.exhaust_gas_temperature[0.0], 1e-2) + iscale.set_scaling_factor(self.inlet_pressure[0.0], 1e-5) + iscale.set_scaling_factor(self.pureCO2_pressure[0.0], 1e-5) + iscale.set_scaling_factor(self.exhaust_gas_pressure[0.0], 1e-5) + + for t, c in self.exh_pressure_eqn.items(): + sf = iscale.get_scaling_factor( + self.inlet_pressure[t], default=1, warning=True) + iscale.constraint_scaling_transform(c, sf) + + for t, c in self.pureCO2_pressure_eqn.items(): + sf = iscale.get_scaling_factor( + self.inlet_pressure[t], default=1, warning=True) + iscale.constraint_scaling_transform(c, sf) + + for t, c in self.pureCO2_temp_eqn.items(): + sf = iscale.get_scaling_factor( + self.inlet_temperature[t], default=1, warning=True) + iscale.constraint_scaling_transform(c, sf) + + for t, c in self.exh_temp_eqn.items(): + sf = iscale.get_scaling_factor( + self.inlet_temperature[t], default=1, warning=True) + iscale.constraint_scaling_transform(c, sf) + + for t, c in self.flow_mol_comp_inlet_eqn.items(): + sf = iscale.get_scaling_factor( + self.inlet_flow_mol_comp[t], default=1, warning=True) + iscale.constraint_scaling_transform(c, sf) + + for t, c in self.pureCO2_eqn.items(): + sf = iscale.get_scaling_factor( + self.inlet_flow_mol_comp[t], default=1, warning=True) + iscale.constraint_scaling_transform(c, sf) diff --git a/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/fe_ccs/co2_capture_system.py b/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/fe_ccs/co2_capture_system.py new file mode 100644 index 000000000..a7ce59e9a --- /dev/null +++ b/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/fe_ccs/co2_capture_system.py @@ -0,0 +1,384 @@ +############################################################################### +# Institute for the Design of Advanced Energy Systems Process Systems +# Engineering Framework (IDAES PSE Framework) Copyright (c) 2018-2020, by the +# software owners: The Regents of the University of California, through +# Lawrence Berkeley National Laboratory, National Technology & Engineering +# Solutions of Sandia, LLC, Carnegie Mellon University, West Virginia +# University Research Corporation, et al. All rights reserved. +# +# Please see the files COPYRIGHT.txt and LICENSE.txt for full copyright and +# license information, respectively. Both files are also available online +# at the URL "https://github.com/IDAES/idaes-pse". +############################################################################### +""" +IDAES carbon capture system block, hybrid mass balances and surrogate models + +The unit has 1 inlet stream for rich CO2 inlet: inlet +the unit has 2 outlet streams: pureCO2 and exhaust_gas + +The state variables are component flow mol, temperature, and pressure. +The state variables can be accessed thotough ports named: + inlet - flue gas from NGCC plant + pure_CO2 - stream for compression train + exhaust_gas - exhaust gas to DAC system or stack + +Surrogate models are used to compute operating costs as a function of solvent +flow rate, and specific reboiler duty. The inlet variables to estimate such +output variables are: lean loading and PZ molality. +Inlet Vars: + +* solvent lean loading (0.1 to 0.6) +* solvent molality (PZ = 3, 5, 7 mol) + +Output Vars: + +* L/G ratio for absorber columns (0 - 12) +* lean solvent flowrate in kmol/s (0-100) +* specific reboiler duty (GJ/t CO2) + +Reference: +Gaspar J. von Solms N., Thomsen K., Fosbol F. (2016) Multivariable Optimization + of the Piperazine CO2 Post-Combustion Process. Energy Procedia 86(2016)229-238 +""" +# Import IDAES cores +from idaes.core import declare_process_block_class, UnitModelBlockData +import idaes.core.util.scaling as iscale +# Additional import for the unit operation +import pyomo.environ as pyo +from pyomo.environ import Var, units as pyunits, exp, log +from pyomo.network import Port +import idaes.logger as idaeslog + +__author__ = "M. Zamarripa" +__version__ = "1.0.0" + + +# ---------------------------------------------------------------------------- +@declare_process_block_class("CO2Capture") +class CO2CaptureData(UnitModelBlockData): + ''' + CO2Capture surrogate model based on total flow of CO2 rich stream flow only + Assumptions: (toDo: update Assumptions) + Fixed composition, temperature, and pressure of feed stream + Fixed CO2 purity in the CO2 product stream + + ''' + + def build(self): + + self.component_list = ['CO2', 'H2O', 'O2', 'N2', 'Ar'] + + self.make_vars() + self.add_material_balances() + # self.add_surrogates() + # self.add_costing() + + # Add ports: 3 (1 for inlet and 2 for outlets) + self.inlet = Port(noruleinit=True, + doc="A port for co2 rich inlet stream") + self.pureCO2 = Port(noruleinit=True, + doc="A port for pure CO2 outlet stream") + self.exhaust_gas = Port(noruleinit=True, + doc="A port for vent gas outlet stream") + + # Add state vars to the ports + # self.inlet.add(self.inlet_flow_mol, "flow_mol") + self.inlet.add(self.inlet_temperature, "temperature") + self.inlet.add(self.inlet_pressure, "pressure") + self.inlet.add(self.inlet_flow_mol_comp, "flow_mol_comp") + + # self.pureco2.add(self.pureco2_flow_mol, "flow_mol") + self.pureCO2.add(self.pureCO2_temperature, "temperature") + self.pureCO2.add(self.pureCO2_pressure, "pressure") + self.pureCO2.add(self.pureCO2_flow_mol_comp, "flow_mol_comp") + + # self.exhaust_gas.add(self.exhaust_gas_flow_mol, "flow_mol") + self.exhaust_gas.add(self.exhaust_gas_temperature, "temperature") + self.exhaust_gas.add(self.exhaust_gas_pressure, "pressure") + self.exhaust_gas.add(self.exhaust_gas_flow_mol_comp, "flow_mol_comp") + + def make_vars(self): + ''' + This section builds port vars (Fc, T, P), CO2 capture rate + + ''' + # units declaration for vars + flow_units = pyunits.mol/pyunits.s + pressure_units = pyunits.Pa + temperature_units = pyunits.K + # heat_duty_units = pyunits.J/pyunits.s + + # Component mole flows [mol/s] + self.inlet_flow_mol_comp = Var( + self.flowsheet().config.time, + self.component_list, + initialize=1400/len(self.component_list), + units=flow_units, + doc='Inlet stream: Component mole flow [mol/s]') + + self.pureCO2_flow_mol_comp = Var( + self.flowsheet().config.time, + self.component_list, + initialize=1200/len(self.component_list), + units=flow_units, + doc='PureCO2 stream: Component mole flow [mol/s]') + + self.exhaust_gas_flow_mol_comp = Var( + self.flowsheet().config.time, + self.component_list, + initialize=100/len(self.component_list), + units=flow_units, + doc='exhaust_gas stream: Component mole flow [mol/s]') + + # Temperature [K] + self.inlet_temperature = Var(self.flowsheet().config.time, + initialize=110, + units=temperature_units, + doc='Inlet temperature [K]') + + self.pureCO2_temperature = Var(self.flowsheet().config.time, + initialize=110, + units=temperature_units, + doc='PureCO2 temperature [K]') + + self.exhaust_gas_temperature = Var(self.flowsheet().config.time, + initialize=110, + units=temperature_units, + doc='exhaust_gas temperature [K]') + + # Pressue [Pa] + self.inlet_pressure = Var(self.flowsheet().config.time, + initialize=17, + units=pressure_units, + doc='Inlet pressure [Pa]') + + self.pureCO2_pressure = Var(self.flowsheet().config.time, + initialize=17, + units=pressure_units, + doc='PureCO2 pressure [Pa]') + + self.exhaust_gas_pressure = Var(self.flowsheet().config.time, + initialize=17, + units=pressure_units, + doc='exhaust_gas pressure [Pa]') + # CO2 Capture rate + self.CO2_capture_rate = Var(self.flowsheet().config.time, + initialize=0.9, + doc='CO2 capture rate') + # lean loading + self.lean_loading = Var(self.flowsheet().config.time, + initialize=0.1, + bounds=(0.1, 6.0), + doc='lean loading') + # Pz molality + self.Pz_mol = Var(self.flowsheet().config.time, + initialize=3, + bounds=(3, 7), + doc='Pz molality') + + self.SRD = Var(self.flowsheet().config.time, + initialize=8, + bounds=(0, 100), + doc='Specific reformer duty GJ/ton CO2') + + def add_material_balances(self): + ''' This section is for material balance constraints''' + + # pureCO2 mass balance + @self.Constraint(self.flowsheet().config.time, + self.component_list, + doc="pureCO2 mass balances") + def pureCO2_eqn(b, t, c): + if c == "CO2": + return b.pureCO2_flow_mol_comp[t, "CO2"] == \ + b.inlet_flow_mol_comp[t, "CO2"] * b.CO2_capture_rate[t] + else: + return b.pureCO2_flow_mol_comp[t, c] == 0.0 + + # water drop in flue gas + @self.Expression(self.flowsheet().config.time, doc="water drop") + def water_drop(b, t): + return b.inlet_flow_mol_comp[0, 'H2O']*0.5 + + # Overall mass balances + @self.Constraint(self.flowsheet().config.time, + self.component_list, + doc="Inlet component mole flow eqn") + def flow_mol_comp_inlet_eqn(b, t, c): + if c == "H2O": + return b.inlet_flow_mol_comp[t, c] == \ + b.exhaust_gas_flow_mol_comp[t, c] + b.water_drop[t] + elif c == "CO2": + return b.inlet_flow_mol_comp[t, c] == \ + b.exhaust_gas_flow_mol_comp[t, c] \ + + b.pureCO2_flow_mol_comp[t, "CO2"] + else: + return b.inlet_flow_mol_comp[t, c] == \ + b.exhaust_gas_flow_mol_comp[t, c] + + # Pressure equations + @self.Constraint(self.flowsheet().config.time, + doc="Pressure drop") + def exh_pressure_eqn(b, t): + return b.inlet_pressure[t] == b.exhaust_gas_pressure[t] + + @self.Constraint(self.flowsheet().config.time, + doc="Pressure drop") + def pureCO2_pressure_eqn(b, t): + return b.inlet_pressure[t] == b.pureCO2_pressure[t] + + # Temperature equations + @self.Constraint(self.flowsheet().config.time, + doc="Temperature") + def pureCO2_temp_eqn(b, t): + return b.inlet_temperature[t] == b.pureCO2_temperature[t] + + @self.Constraint(self.flowsheet().config.time, + doc="Temperature") + def exh_temp_eqn(b, t): + return b.inlet_temperature[t] == b.exhaust_gas_temperature[t] + + # surrogates and additional constraints/expressions + ''' This section is to add the surrogate models''' + + @self.Constraint(self.flowsheet().config.time, + doc="Specific reboiler duty in GJ/t CO2 or MJ/kg CO2") + def SRD_eqn(b, t): + x1 = b.lean_loading[t] + x2 = b.Pz_mol[t] + # return b.SRD[t] == (1135585.36238969 * x1 + # - 440.509698856962 * log(x1) + # - 1127184.48012032 * exp(x1) + # + 533953.122356288 * x1**2 + # + 248202.546339126 * x1**3 + # + 1125580.12992624) + return b.SRD[t] == (- 15565.227507172588957474 * x1 + + 8.9237367058697429911263 * log(x1) + + 15285.362653727905126289 * exp(x1) + - 6741.0217492965430210461 * x1**2 + - 3865.5900513667870654899 * x1**3 + + 0.17312045830047528404555E-002 * x2**3 + - 1.2960483459315448317994 * x1*x2 + - 15235.956076189686427824) + + @self.Expression(self.flowsheet().config.time, + doc="Reboiler duty in MW") + def reboiler_duty(b, t): # mol/s/1000 = kgmol/s * 44 kg/kgmol = kg/s + return b.SRD[t] * (b.pureCO2_flow_mol_comp[t, "CO2"] + * 44.01 / 1000) + + @self.Expression(self.flowsheet().config.time, + doc="Lean loading flowrate - kmol.hr") + def LL_flowrate(b, t): + x1 = b.lean_loading[t] + x2 = b.Pz_mol[t] + return (- 4402167.2503122268244624 * x1 + - 4.4210697568168892956919 * x2 + + 42394.191672889020992443 * log(x1) + + 4021949.9049337119795382 * exp(x1) + - 1394566.6646474981680512 * x1**2 + - 1225122.9083037786185741 * x1**3 + - 3898754.8073137737810612) + + def initialize(blk, + outlvl=idaeslog.NOTSET, + solver='ipopt', + optarg={'tol': 1e-6}): + ''' + CO2 pure pyomo block initialization routine + + Keyword Arguments: + outlvl : sets output level of initialisation routine + + optarg : solver options dictionary object (default={'tol': 1e-6}) + solver : str indicating whcih solver to use during + initialization (default = 'ipopt') + + Returns: + None + ''' + iscale.calculate_scaling_factors(blk) # remove to solve using baron + init_log = idaeslog.getInitLogger(blk.name, outlvl, tag="unit") + solve_log = idaeslog.getSolveLogger(blk.name, outlvl, tag="unit") + opt = pyo.SolverFactory(solver) + opt.options = optarg + + init_log.info_low("Starting initialization...") + + blk.inlet.flow_mol_comp[0, 'CO2'].fix() + blk.inlet.flow_mol_comp[0, 'O2'].fix() + blk.inlet.flow_mol_comp[0, 'Ar'].fix() + blk.inlet.flow_mol_comp[0, 'H2O'].fix() + blk.inlet.flow_mol_comp[0, 'N2'].fix() + blk.CO2_capture_rate.fix() + + # solve model + with idaeslog.solver_log(solve_log, idaeslog.DEBUG) as slc: + res = opt.solve(blk, tee=slc.tee) + init_log.info_high( + "Initialization Step 1 {}.".format(idaeslog.condition(res)) + ) + init_log.info_high("Initialization Step 1 Complete.") + + # ToDo: release state + init_log.info("Initialization Complete.") + + def calculate_scaling_factors(self): + super().calculate_scaling_factors() + + iscale.set_scaling_factor(self.inlet_flow_mol_comp[0.0, 'CO2'], 1e-3) + iscale.set_scaling_factor(self.inlet_flow_mol_comp[0.0, 'H2O'], 1e-3) + iscale.set_scaling_factor(self.inlet_flow_mol_comp[0.0, 'O2'], 1e-3) + iscale.set_scaling_factor(self.inlet_flow_mol_comp[0.0, 'N2'], 1e-3) + iscale.set_scaling_factor(self.inlet_flow_mol_comp[0.0, 'Ar'], 1e-3) + iscale.set_scaling_factor(self.pureCO2_flow_mol_comp[0.0, 'CO2'], 1e-3) + iscale.set_scaling_factor(self.pureCO2_flow_mol_comp[0.0, 'H2O'], 1e-3) + iscale.set_scaling_factor(self.pureCO2_flow_mol_comp[0.0, 'O2'], 1e-3) + iscale.set_scaling_factor(self.pureCO2_flow_mol_comp[0.0, 'N2'], 1e-3) + iscale.set_scaling_factor(self.pureCO2_flow_mol_comp[0.0, 'Ar'], 1e-3) + iscale.set_scaling_factor(self.exhaust_gas_flow_mol_comp[0.0, 'CO2'], + 1e-3) + iscale.set_scaling_factor(self.exhaust_gas_flow_mol_comp[0.0, 'H2O'], + 1e-3) + iscale.set_scaling_factor(self.exhaust_gas_flow_mol_comp[0.0, 'O2'], + 1e-3) + iscale.set_scaling_factor(self.exhaust_gas_flow_mol_comp[0.0, 'N2'], + 1e-3) + iscale.set_scaling_factor(self.exhaust_gas_flow_mol_comp[0.0, 'Ar'], + 1e-3) + iscale.set_scaling_factor(self.inlet_temperature[0.0], 1e-2) + iscale.set_scaling_factor(self.pureCO2_temperature[0.0], 1e-2) + iscale.set_scaling_factor(self.exhaust_gas_temperature[0.0], 1e-2) + iscale.set_scaling_factor(self.inlet_pressure[0.0], 1e-5) + iscale.set_scaling_factor(self.pureCO2_pressure[0.0], 1e-5) + iscale.set_scaling_factor(self.exhaust_gas_pressure[0.0], 1e-5) + + for t, c in self.exh_pressure_eqn.items(): + sf = iscale.get_scaling_factor( + self.inlet_pressure[t], default=1, warning=True) + iscale.constraint_scaling_transform(c, sf) + + for t, c in self.pureCO2_pressure_eqn.items(): + sf = iscale.get_scaling_factor( + self.inlet_pressure[t], default=1, warning=True) + iscale.constraint_scaling_transform(c, sf) + + for t, c in self.pureCO2_temp_eqn.items(): + sf = iscale.get_scaling_factor( + self.inlet_temperature[t], default=1, warning=True) + iscale.constraint_scaling_transform(c, sf) + + for t, c in self.exh_temp_eqn.items(): + sf = iscale.get_scaling_factor( + self.inlet_temperature[t], default=1, warning=True) + iscale.constraint_scaling_transform(c, sf) + + for t, c in self.flow_mol_comp_inlet_eqn.items(): + sf = iscale.get_scaling_factor( + self.inlet_flow_mol_comp[t], default=1, warning=True) + iscale.constraint_scaling_transform(c, sf) + + for t, c in self.pureCO2_eqn.items(): + sf = iscale.get_scaling_factor( + self.inlet_flow_mol_comp[t], default=1, warning=True) + iscale.constraint_scaling_transform(c, sf) diff --git a/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/fe_ccs/discharge_design_ccs.py b/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/fe_ccs/discharge_design_ccs.py new file mode 100644 index 000000000..c51f55d64 --- /dev/null +++ b/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/fe_ccs/discharge_design_ccs.py @@ -0,0 +1,1770 @@ +################################################################################# +# DISPATCHES was produced under the DOE Design Integration and Synthesis +# Platform to Advance Tightly Coupled Hybrid Energy Systems program (DISPATCHES), +# and is copyright (c) 2022 by the software owners: The Regents of the University +# of California, through Lawrence Berkeley National Laboratory, National +# Technology & Engineering Solutions of Sandia, LLC, Alliance for Sustainable +# Energy, LLC, Battelle Energy Alliance, LLC, University of Notre Dame du Lac, et +# al. All rights reserved. +# +# Please see the files COPYRIGHT.md and LICENSE.md for full copyright and license +# information, respectively. Both files are also available online at the URL: +# "https://github.com/gmlc-dispatches/dispatches". +# +################################################################################# + +"""This is a Generalized Disjunctive Programming model for the +conceptual design of an ultra supercritical coal-fired power plant +integrated with a discharge storage system + +""" + +__author__ = "Naresh Susarla and Soraya Rawlings" + +import logging + +# Import Python libraries +from math import pi +from IPython import embed + +# Import Pyomo libraries +import pyomo.environ as pyo +from pyomo.environ import (Block, Param, Constraint, Objective, + TransformationFactory, SolverFactory, + Expression, value, log, exp, Var) +from pyomo.environ import units as pyunits +from pyomo.network import Arc +from pyomo.util.calc_var_value import calculate_variable_from_constraint +from pyomo.gdp import Disjunct, Disjunction +from pyomo.network.plugins import expand_arcs +from pyomo.contrib.fbbt.fbbt import _prop_bnds_root_to_leaf_map +from pyomo.core.expr.numeric_expr import ExternalFunctionExpression + +# Import IDAES libraries +import idaes.logger as idaeslog +import idaes.core.util.scaling as iscale +from idaes.core.util.initialization import propagate_state +from idaes.core.solvers.get_solver import get_solver +from idaes.core.util.model_statistics import degrees_of_freedom +from idaes.core import UnitModelCostingBlock +from idaes.models.unit_models import HeatExchanger, Heater, MomentumMixingType +from idaes.models.unit_models.heat_exchanger import delta_temperature_underwood_callback +from idaes.models_extra.power_generation.unit_models.helm import (HelmTurbineStage, + HelmSplitter, + HelmMixer) +from idaes.models.costing.SSLW import ( + SSLWCosting, + SSLWCostingData +) +from idaes.core.util.exceptions import ConfigurationError + +# Import ultra supercritical power plant model +from dispatches.case_studies.fossil_case.ultra_supercritical_plant import ( + ultra_supercritical_powerplant as usc) + +# Import properties package for Solar salt +from dispatches.properties import solarsalt_properties +from pyomo.util.infeasible import (log_infeasible_constraints, + log_close_to_bounds) +from IPython import embed +logging.basicConfig(level=logging.INFO) + + +scaling_obj = 1 + +def create_discharge_model(m, add_efficiency=None, power_max=None): + """Create flowsheet and add unit models. + + """ + + # Create a block to add charge storage model + m.fs.discharge = Block() + + # Add model data + _add_data(m) + + # Add Solar salt properties + m.fs.solar_salt_properties = solarsalt_properties.SolarsaltParameterBlock() + + ########################################################################### + # Add unit models + ########################################################################### + + # Declare splitter to divert condensate to discharge storage heat + # exchanger + m.fs.discharge.es_split = HelmSplitter( + property_package=m.fs.prop_water, + outlet_list=["to_fwh", "to_hxd"], + ) + + # Declare discharge storage heat exchanger + m.fs.discharge.hxd = HeatExchanger( + delta_temperature_callback=delta_temperature_underwood_callback, + hot_side_name="shell", + cold_side_name="tube", + shell={"property_package": m.fs.solar_salt_properties}, + tube={"property_package": m.fs.prop_water}, + ) + + + ########################################################################### + # Add constraints + ########################################################################### + _make_constraints(m, add_efficiency=add_efficiency, power_max=power_max) + + _solar_salt_ohtc_calculation(m) + + ########################################################################### + # Declare disjuncts + ########################################################################### + # Disjunction 1 for the sink of discharge HX consists of 2 disjuncts: + # 1. condpump_source_disjunct ======> condensate from condenser pump + # 2. fwh4_source_disjunct ======> condensate from feed water heater 4 + # 3. booster_source_disjunct ======> condensate from booster pump + # 4. bfp_source_disjunct ======> condensate from boiler feed water pump + # 5. fwh9_source_disjunct ======> condensate from feed water heater 9 + + # Declare disjuncts in disjunction 1 + m.fs.discharge.condpump_source_disjunct = Disjunct( + rule=condpump_source_disjunct_equations) + m.fs.discharge.fwh4_source_disjunct = Disjunct( + rule=fwh4_source_disjunct_equations) + m.fs.discharge.booster_source_disjunct = Disjunct( + rule=booster_source_disjunct_equations) + m.fs.discharge.bfp_source_disjunct = Disjunct( + rule=bfp_source_disjunct_equations) + m.fs.discharge.fwh9_source_disjunct = Disjunct( + rule=fwh9_source_disjunct_equations) + + # Declare disjuncts in disjunction 2 + m.fs.discharge.iplp_source_disjunct = Disjunct( + rule=iplp_source_disjunct_equations) + m.fs.discharge.hxd_source_disjunct = Disjunct( + rule=hxd_source_disjunct_equations) + + ########################################################################### + # Create stream arcs + ########################################################################### + + m.fs.discharge.essplit_to_hxd = Arc( + source=m.fs.discharge.es_split.to_hxd, + destination=m.fs.discharge.hxd.tube_inlet, + doc="Connection from ES splitter to HXD" + ) + TransformationFactory("network.expand_arcs").apply_to(m.fs.discharge) + + return m + + +def _add_data(m): + """Add data to the model + """ + + # Add Chemical Engineering cost index for 2019 + m.CE_index = 607.5 + + # Add operating hours + m.fs.discharge.hours_per_day = pyo.Param( + initialize=6, + doc='Number of hours of charging per day' + ) + + # Define number of years over which the costs are annualized + m.fs.discharge.num_of_years = pyo.Param( + initialize=30, + doc='Number of years for cost annualization') + + # Add data to compute overall heat transfer coefficient for the + # Solar salt storage heat exchanger using the Sieder-Tate + # correlation. Parameters for tube diameter and thickness assumed + # from the data in (2017) He et al., Energy Procedia 105, 980-985 + m.fs.discharge.data_hxd = { + 'tube_inner_dia': 0.032, + 'tube_outer_dia': 0.036, + 'k_steel': 21.5, + 'number_tubes': 20, + 'shell_inner_dia': 1 + } + m.fs.discharge.hxd_tube_inner_dia = pyo.Param( + initialize=m.fs.discharge.data_hxd['tube_inner_dia'], + doc='Tube inner diameter in m') + m.fs.discharge.hxd_tube_outer_dia = pyo.Param( + initialize=m.fs.discharge.data_hxd['tube_outer_dia'], + doc='Tube outer diameter in m') + m.fs.discharge.hxd_k_steel = pyo.Param( + initialize=m.fs.discharge.data_hxd['k_steel'], + doc='Thermal conductivity of steel in W/m.K') + m.fs.discharge.hxd_n_tubes = pyo.Param( + initialize=m.fs.discharge.data_hxd['number_tubes'], + doc='Number of tubes') + m.fs.discharge.hxd_shell_inner_dia = pyo.Param( + initialize=m.fs.discharge.data_hxd['shell_inner_dia'], + doc='Shell inner diameter in m') + + # Calculate sectional area of storage heat exchanger + m.fs.discharge.hxd_tube_cs_area = pyo.Expression( + expr=(pi / 4) * + (m.fs.discharge.hxd_tube_inner_dia**2), + doc="Tube inside cross sectional area in m2") + m.fs.discharge.hxd_tube_out_area = pyo.Expression( + expr=(pi / 4) * + (m.fs.discharge.hxd_tube_outer_dia**2), + doc="Tube cross sectional area including thickness in m2") + m.fs.discharge.hxd_shell_eff_area = pyo.Expression( + expr=( + (pi / 4) * + m.fs.discharge.hxd_shell_inner_dia**2 - + m.fs.discharge.hxd_n_tubes * + m.fs.discharge.hxd_tube_out_area + ), + doc="Effective shell cross sectional area in m2") + + m.fs.discharge.hxd_tube_dia_ratio = ( + m.fs.discharge.hxd_tube_outer_dia / m.fs.discharge.hxd_tube_inner_dia) + m.fs.discharge.hxd_log_tube_dia_ratio = log(m.fs.discharge.hxd_tube_dia_ratio) + + # Add fuel cost data + m.data_cost = { + 'coal_price': 2.11e-9, + } + m.fs.discharge.coal_price = pyo.Param( + initialize=m.data_cost['coal_price'], + doc='Coal price based on HHV in $/J') + + # Add parameters to calculate the Solar salt pump costing. Since + # the unit is not explicitly modeled, the IDAES cost method is not + # used for this equipment. The primary purpose of the salt pump + # is to move the molten salt without changing the pressure. Thus, + # the pressure head is computed assuming that the salt is moved on + # an average of 5m linear distance. + m.data_salt_pump = { + 'FT': 1.5, + 'FM': 2.0, + 'head': 3.281*5, + 'motor_FT': 1, + 'nm': 1 + } + m.fs.discharge.spump_FT = pyo.Param( + initialize=m.data_salt_pump['FT'], + doc='Pump Type Factor for vertical split case') + m.fs.discharge.spump_FM = pyo.Param( + initialize=m.data_salt_pump['FM'], + doc='Pump Material Factor Stainless Steel') + m.fs.discharge.spump_head = pyo.Param( + initialize=m.data_salt_pump['head'], + doc='Pump Head 5m in ft.') + m.fs.discharge.spump_motorFT = pyo.Param( + initialize=m.data_salt_pump['motor_FT'], + doc='Motor Shaft Type Factor') + m.fs.discharge.spump_nm = pyo.Param( + initialize=m.data_salt_pump['nm'], + doc='Motor Shaft Type Factor') + + +def _make_constraints(m, add_efficiency=None, power_max=None): + """Declare constraints for the discharge model + + """ + + m.fs.discharge_power_out = pyo.Var( + initialize=30, + bounds=(0, 200), + doc="Coal heat duty supplied to boiler in MW") + + m.fs.net_power = pyo.Expression( + expr=(m.fs.plant_power_out[0] + m.fs.discharge_power_out) + ) + + m.fs.boiler_efficiency = pyo.Var(initialize=0.9, + bounds=(0, 1), + doc="Boiler efficiency") + m.fs.boiler_efficiency_eq = pyo.Constraint( + expr=m.fs.boiler_efficiency == ( + 0.2143 * + (m.fs.net_power / power_max) + + 0.7357 + ), + doc="Boiler efficiency in fraction" + ) + m.fs.coal_heat_duty = pyo.Var( + initialize=1000, + bounds=(0, 1e5), + doc="Coal heat duty supplied to boiler in MW") + + if add_efficiency: + m.fs.coal_heat_duty_eq = pyo.Constraint( + expr=m.fs.coal_heat_duty * + m.fs.boiler_efficiency == + m.fs.plant_heat_duty[0] + ) + else: + m.fs.coal_heat_duty_eq = pyo.Constraint( + expr=m.fs.coal_heat_duty == m.fs.plant_heat_duty[0] + ) + + m.fs.cycle_efficiency = pyo.Var(initialize=0.4, + bounds=(0, 1), + doc="Cycle efficiency") + m.fs.cycle_efficiency_eq = pyo.Constraint( + expr=( + m.fs.cycle_efficiency * + m.fs.coal_heat_duty + ) == m.fs.net_power, + doc="Cycle efficiency" + ) + + +def _solar_salt_ohtc_calculation(m): + """Block of equations to compute overall heat transfer coefficient for + Solar salt heat exchanger + + """ + + # Calculate Reynolds number for the salt + m.fs.discharge.hxd.salt_reynolds_number = pyo.Expression( + expr=( + (m.fs.discharge.hxd.shell_inlet.flow_mass[0] * + m.fs.discharge.hxd_tube_outer_dia) / + (m.fs.discharge.hxd_shell_eff_area * + m.fs.discharge.hxd.hot_side.properties_in[0].visc_d_phase["Liq"]) + ), + doc="Salt Reynolds Number") + + # Calculate Prandtl number for the salt + m.fs.discharge.hxd.salt_prandtl_number = pyo.Expression( + expr=( + m.fs.discharge.hxd.hot_side.properties_in[0].cp_mass["Liq"] * + m.fs.discharge.hxd.hot_side.properties_in[0].visc_d_phase["Liq"] / + m.fs.discharge.hxd.hot_side.properties_in[0].therm_cond_phase["Liq"] + ), + doc="Salt Prandtl Number") + + # Calculate Prandtl Wall number for the salt + m.fs.discharge.hxd.salt_prandtl_wall = pyo.Expression( + expr=( + m.fs.discharge.hxd.hot_side.properties_out[0].cp_mass["Liq"] * + m.fs.discharge.hxd.hot_side.properties_out[0].visc_d_phase["Liq"] / + m.fs.discharge.hxd.hot_side.properties_out[0].therm_cond_phase["Liq"] + ), + doc="Salt Prandtl Number at wall") + + # Calculate Nusselt number for the salt + m.fs.discharge.hxd.salt_nusselt_number = pyo.Expression( + expr=( + 0.35 * + (m.fs.discharge.hxd.salt_reynolds_number**0.6) * + (m.fs.discharge.hxd.salt_prandtl_number**0.4) * + ((m.fs.discharge.hxd.salt_prandtl_number / + m.fs.discharge.hxd.salt_prandtl_wall) ** 0.25) * + (2**0.2) + ), + doc="Salt Nusslet Number from 2019, App Ener (233-234), 126") + + # Calculate Reynolds number for the steam + m.fs.discharge.hxd.steam_reynolds_number = pyo.Expression( + expr=( + m.fs.discharge.hxd.tube_inlet.flow_mol[0] * + m.fs.discharge.hxd.cold_side.properties_in[0].mw * + m.fs.discharge.hxd_tube_inner_dia / + (m.fs.discharge.hxd_tube_cs_area * + m.fs.discharge.hxd_n_tubes * + m.fs.discharge.hxd.cold_side.properties_in[0].visc_d_phase["Vap"]) + ), + doc="Steam Reynolds Number") + + # Calculate Reynolds number for the steam + m.fs.discharge.hxd.steam_prandtl_number = pyo.Expression( + expr=( + (m.fs.discharge.hxd.cold_side.properties_in[0].cp_mol / + m.fs.discharge.hxd.cold_side.properties_in[0].mw) * + m.fs.discharge.hxd.cold_side. + properties_in[0].visc_d_phase["Vap"] / + m.fs.discharge.hxd.cold_side.properties_in[0].therm_cond_phase["Vap"] + ), + doc="Steam Prandtl Number") + + # Calculate Reynolds number for the steam + m.fs.discharge.hxd.steam_nusselt_number = pyo.Expression( + expr=( + 0.023 * + (m.fs.discharge.hxd.steam_reynolds_number**0.8) * + (m.fs.discharge.hxd.steam_prandtl_number**(0.33)) * + ( + (m.fs.discharge.hxd.cold_side.properties_in[0].visc_d_phase["Vap"] / + m.fs.discharge.hxd.cold_side.properties_out[0].visc_d_phase["Liq"]) ** 0.14 + ) + ), + doc="Steam Nusslet Number from 2001 Zavoico, Sandia") + + # Calculate heat transfer coefficients for the salt and steam + # sides of discharge heat exchanger + m.fs.discharge.hxd.h_salt = pyo.Expression( + expr=( + m.fs.discharge.hxd.hot_side.properties_in[0].therm_cond_phase["Liq"] * + m.fs.discharge.hxd.salt_nusselt_number / + m.fs.discharge.hxd_tube_outer_dia + ), + doc="Salt side convective heat transfer coefficient in W/m.K") + m.fs.discharge.hxd.h_steam = pyo.Expression( + expr=( + m.fs.discharge.hxd.cold_side.properties_in[0].therm_cond_phase["Vap"] * + m.fs.discharge.hxd.steam_nusselt_number / + m.fs.discharge.hxd_tube_inner_dia + ), + doc="Steam side convective heat transfer coefficient in W/m.K") + + # Calculate overall heat transfer coefficient for Solar salt heat + # exchanger + @m.fs.discharge.hxd.Constraint(m.fs.time) + def constraint_hxd_ohtc(b, t): + return ( + m.fs.discharge.hxd.overall_heat_transfer_coefficient[t] * ( + 2 * m.fs.discharge.hxd_k_steel * + m.fs.discharge.hxd.h_steam + + m.fs.discharge.hxd_tube_outer_dia * + m.fs.discharge.hxd_log_tube_dia_ratio * + m.fs.discharge.hxd.h_salt * + m.fs.discharge.hxd.h_steam + + m.fs.discharge.hxd_tube_dia_ratio * + m.fs.discharge.hxd.h_salt * + 2 * m.fs.discharge.hxd_k_steel + ) + ) == (2 * m.fs.discharge.hxd_k_steel * + m.fs.discharge.hxd.h_salt * + m.fs.discharge.hxd.h_steam) + + +def disconnect_arcs(m): + """Disconnect arcs from ultra-supercritical plant base model to + connect the Solar salt discharge storage system + + """ + + for arc_s in [ + m.fs.condpump_to_fwh1, + m.fs.fwh4_to_fwh5, + m.fs.booster_to_fwh6, + m.fs.bfp_to_fwh8, + m.fs.fwh9_to_boiler, + m.fs.t6split_to_bfpt, + # m.fs.rh2_to_turb5, + # m.fs.cond_to_condpump + # m.fs.bfpt_to_condmix + ]: + arc_s.expanded_block.enth_mol_equality.deactivate() + arc_s.expanded_block.flow_mol_equality.deactivate() + arc_s.expanded_block.pressure_equality.deactivate() + + +def add_disjunction(m): + """Add disjunction for the selection of condensate source to integrate + the discharge storage system to the power plant model + + """ + + # Add disjunction 2 for ccs steam source selection + m.fs.ccs_source_disjunction = Disjunction( + expr=[ + m.fs.discharge.iplp_source_disjunct, + m.fs.discharge.hxd_source_disjunct + ] + ) + + # Add disjunction 1 for condensate source selection + m.fs.hxd_source_disjunction = Disjunction( + expr=[ + m.fs.discharge.booster_source_disjunct, + m.fs.discharge.bfp_source_disjunct, + m.fs.discharge.fwh4_source_disjunct, + m.fs.discharge.fwh9_source_disjunct, + m.fs.discharge.condpump_source_disjunct + ] + ) + + # Expand arcs within the disjuncts + expand_arcs.obj_iter_kwds['descend_into'] = (Block, Disjunct) + TransformationFactory("network.expand_arcs").apply_to(m.fs.discharge) + + return m + + +# def rh2_source_disjunct_equations(disj): +# """Block of equations for disjunct 1 in disjunction 1 for the selection +# of condensate water source from condenser pump + +# """ + +# m = disj.model() + +# # Declare turbine for storage system +# m.fs.discharge.rh2_source_disjunct.es_turbine = HelmTurbineStage( +# property_package=m.fs.prop_water +# ) + +# m.fs.discharge.rh2_source_disjunct.es_turbine.efficiency_isentropic.fix(0.8) + +# for est in [m.fs.discharge.rh2_source_disjunct.es_turbine.control_volume]: +# iscale.set_scaling_factor(est.work, 1e-6) + +# # + (m.fs.discharge.es_turbine.control_volume.work[0] * (-1e-6)) +# # Add a constraint to storage turbine to ensure that the outlet +# # temperature is at the saturation temperature +# @m.fs.discharge.rh2_source_disjunct.es_turbine.Constraint( +# m.fs.time, +# doc="Turbine outlet should be a saturated steam") +# def constraint_esturbine_temperature_out(b, t): +# return ( +# b.control_volume.properties_out[t].temperature == +# b.control_volume.properties_out[t].temperature_sat + 1 +# ) +# @m.fs.discharge.rh2_source_disjunct.Constraint( +# m.fs.time, +# doc="Turbine outlet should be a saturated steam") +# def constraint_storage_power_out(b, t): +# return ( +# m.fs.discharge_power_out == +# (b.es_turbine.control_volume.work[0] * (-1e-6)) +# ) + +# m.fs.discharge.rh2_source_disjunct.hxd_to_esturbine = Arc( +# source=m.fs.discharge.hxd.tube_outlet, +# destination=m.fs.discharge.rh2_source_disjunct.es_turbine.inlet, +# doc="Connection from HXD to ES turbine" +# ) + +# # Add splitter to send a fraction of steam to the charge storage +# # system +# m.fs.discharge.rh2_source_disjunct.ccs_split = HelmSplitter( +# property_package=m.fs.prop_water, +# outlet_list=["to_ccs", "to_turb"], +# ) + +# m.fs.discharge.rh2_source_disjunct.rh2_to_rhsplit = Arc( +# source=m.fs.reheater[2].outlet, +# destination=m.fs.discharge.rh2_source_disjunct.ccs_split.inlet, +# doc="Connection from RH2 to T5 split" +# ) +# m.fs.discharge.rh2_source_disjunct.rhsplit_to_bfpt = Arc( +# source=m.fs.discharge.rh2_source_disjunct.ccs_split.to_turb, +# destination=m.fs.turbine[5].inlet, +# doc="Connection from RH split to T5" +# ) +# m.fs.discharge.rh2_source_disjunct.rhsplit_to_ccs = Arc( +# source=m.fs.discharge.rh2_source_disjunct.ccs_split.to_ccs, +# destination=m.fs.ccs_reboiler.inlet, +# doc="Connection from bfpt split to ccs reboiler" +# ) + +# for unit_k in [m.fs.discharge.rh2_source_disjunct.es_turbine]: +# unit_k.inlet.flow_mol[:].setlb(0) +# unit_k.inlet.flow_mol[:].setub(10000) +# unit_k.outlet.flow_mol[:].setlb(0) +# unit_k.outlet.flow_mol[:].setub(10000) + +# unit_k.control_volume.work[:].setub(0) +# unit_k.control_volume.work[:].setlb(-1e9) +# # unit_k.inlet.pressure[:].setlb(0) +# # unit_k.inlet.pressure[:].setub(1e12) +# # unit_k.outlet.pressure[:].setlb(0) +# # unit_k.outlet.pressure[:].setub(1e12) +# unit_k.deltaP[:].setlb(0) +# unit_k.deltaP[:].setub(1e9) + + +def iplp_source_disjunct_equations(disj): + """Block of equations for disjunct 1 in disjunction 1 for the selection + of condensate water source from condenser pump + + """ + + m = disj.model() + + # Declare turbine for storage system + m.fs.discharge.iplp_source_disjunct.es_turbine = HelmTurbineStage( + property_package=m.fs.prop_water + ) + + m.fs.discharge.iplp_source_disjunct.es_turbine.efficiency_isentropic.fix(0.8) + + for est in [m.fs.discharge.iplp_source_disjunct.es_turbine.control_volume]: + iscale.set_scaling_factor(est.work, 1e-6) + + # + (m.fs.discharge.es_turbine.control_volume.work[0] * (-1e-6)) + # Add a constraint to storage turbine to ensure that the outlet + # temperature is at the saturation temperature + @m.fs.discharge.iplp_source_disjunct.es_turbine.Constraint( + m.fs.time, + doc="Turbine outlet should be a saturated steam") + def constraint_esturbine_temperature_out(b, t): + return ( + b.control_volume.properties_out[t].temperature == + b.control_volume.properties_out[t].temperature_sat + 1 + ) + # m.fs.discharge.iplp_source_disjunct.es_turbine.control_volume.properties_out[0].enth_mol.fix(20000) + # m.fs.discharge.iplp_source_disjunct.es_turbine.ratioP[0].fix(0.02) + @m.fs.discharge.iplp_source_disjunct.Constraint( + m.fs.time, + doc="Turbine outlet should be a saturated steam") + def constraint_storage_power_out(b, t): + return ( + m.fs.discharge_power_out == + (b.es_turbine.control_volume.work[0] * (-1e-6)) + ) + + m.fs.discharge.iplp_source_disjunct.hxd_to_esturbine = Arc( + source=m.fs.discharge.hxd.tube_outlet, + destination=m.fs.discharge.iplp_source_disjunct.es_turbine.inlet, + doc="Connection from HXD to ES turbine" + ) + + # Add splitter to send a fraction of steam to the charge storage + # system + m.fs.discharge.iplp_source_disjunct.ccs_split = HelmSplitter( + property_package=m.fs.prop_water, + outlet_list=["to_ccs", "to_turb"], + ) + + m.fs.discharge.iplp_source_disjunct.t6split_to_ccsplit = Arc( + source=m.fs.turbine_splitter[6].outlet_3, + destination=m.fs.discharge.iplp_source_disjunct.ccs_split.inlet, + doc="Connection from Turbine 6 outlet 3 to ccs split" + ) + m.fs.discharge.iplp_source_disjunct.bfptsplit_to_bfpt = Arc( + source=m.fs.discharge.iplp_source_disjunct.ccs_split.to_turb, + destination=m.fs.bfpt.inlet, + doc="Connection from ccs split to bfpt" + ) + m.fs.discharge.iplp_source_disjunct.ccsplit_to_ccs = Arc( + source=m.fs.discharge.iplp_source_disjunct.ccs_split.to_ccs, + destination=m.fs.ccs_reboiler.inlet, + doc="Connection from bfpt split to ccs reboiler" + ) + + +def hxd_source_disjunct_equations(disj): + """Block of equations for disjunct 1 in disjunction 1 for the selection + of condensate water source from condenser pump + + """ + + m = disj.model() + + # Define arcs to connect units within disjunct + m.fs.discharge_power_out.fix(0) + + # m.fs.discharge.hxd_source_disjunct.rh2_to_turb5 = Arc( + # source=m.fs.reheater[2].outlet, + # destination=m.fs.turbine[5].inlet + # ) + m.fs.discharge.hxd_source_disjunct.t6split_to_bfpt = Arc( + source=m.fs.turbine_splitter[6].outlet_3, + destination=m.fs.bfpt.inlet + ) + m.fs.discharge.hxd_source_disjunct.hxd_to_ccs = Arc( + source=m.fs.discharge.hxd.tube_outlet, + destination=m.fs.ccs_reboiler.inlet, + doc="Connection from Turbine 6 outlet 3 to ccs split" + ) + +def condpump_source_disjunct_equations(disj): + """Block of equations for disjunct 1 in disjunction 1 for the selection + of condensate water source from condenser pump + + """ + + m = disj.model() + + # Define arcs to connect units within disjunct + m.fs.discharge.condpump_source_disjunct.condpump_to_essplit = Arc( + source=m.fs.cond_pump.outlet, + destination=m.fs.discharge.es_split.inlet, + doc="Connection from Condenser pump to ES splitter" + ) + m.fs.discharge.condpump_source_disjunct.essplit_to_fwh1 = Arc( + source=m.fs.discharge.es_split.to_fwh, + destination=m.fs.fwh[1].tube_inlet, + doc="Connection from ES splitter to FWH1" + ) + + m.fs.discharge.condpump_source_disjunct.fwh4_to_fwh5 = Arc( + source=m.fs.fwh[4].tube_outlet, + destination=m.fs.fwh[5].tube_inlet, + doc="Connection from FWH4 to FWH5" + ) + + m.fs.discharge.condpump_source_disjunct.booster_to_fwh6 = Arc( + source=m.fs.booster.outlet, + destination=m.fs.fwh[6].tube_inlet, + doc="Connection from booster pump to FWH6" + ) + + m.fs.discharge.condpump_source_disjunct.bfp_to_fwh8 = Arc( + source=m.fs.bfp.outlet, + destination=m.fs.fwh[8].tube_inlet, + doc="Connection from BFP to FWH8" + ) + + m.fs.discharge.condpump_source_disjunct.fwh9_to_boiler = Arc( + source=m.fs.fwh[9].tube_outlet, + destination=m.fs.boiler.inlet, + doc="Connection from FWH9 to boiler" + ) + + +def fwh4_source_disjunct_equations(disj): + """Block of equations for disjunct 2 in disjunction 1 for the selection + of condensate water source from feed water heater 4 + + """ + + m = disj.model() + + # Define arcs to connect units within disjunct + m.fs.discharge.fwh4_source_disjunct.fwh4_to_essplit = Arc( + source=m.fs.fwh[4].tube_outlet, + destination=m.fs.discharge.es_split.inlet, + doc="Connection from FWH4 to ES splitter" + ) + m.fs.discharge.fwh4_source_disjunct.essplit_to_fwh5 = Arc( + source=m.fs.discharge.es_split.to_fwh, + destination=m.fs.fwh[5].tube_inlet, + doc="Connection from ES splitter to FWH5" + ) + + m.fs.discharge.fwh4_source_disjunct.condpump_to_fwh1 = Arc( + source=m.fs.cond_pump.outlet, + destination=m.fs.fwh[1].tube_inlet, + doc="Connection from condenser pump to FWH1" + ) + + m.fs.discharge.fwh4_source_disjunct.booster_to_fwh6 = Arc( + source=m.fs.booster.outlet, + destination=m.fs.fwh[6].tube_inlet, + doc="Connection from booster pump to FWH6" + ) + + m.fs.discharge.fwh4_source_disjunct.bfp_to_fwh8 = Arc( + source=m.fs.bfp.outlet, + destination=m.fs.fwh[8].tube_inlet, + doc="Connection from BFP to FWH8" + ) + + m.fs.discharge.fwh4_source_disjunct.fwh9_to_boiler = Arc( + source=m.fs.fwh[9].tube_outlet, + destination=m.fs.boiler.inlet, + doc="Connection from FWH9 to boiler" + ) + + +def booster_source_disjunct_equations(disj): + """Block of equations for disjunct 3 in disjunction 1 for the + selection of condensate water source from booster pump + + """ + + m = disj.model() + + # Define arcs to connect units within disjunct + m.fs.discharge.booster_source_disjunct.booster_to_essplit = Arc( + source=m.fs.booster.outlet, + destination=m.fs.discharge.es_split.inlet, + doc="Connection from Booster pump to ES splitter" + ) + m.fs.discharge.booster_source_disjunct.essplit_to_fwh6 = Arc( + source=m.fs.discharge.es_split.to_fwh, + destination=m.fs.fwh[6].tube_inlet, + doc="Connection from ES splitter to FWH6" + ) + + m.fs.discharge.booster_source_disjunct.fwh4_to_fwh5 = Arc( + source=m.fs.fwh[4].tube_outlet, + destination=m.fs.fwh[5].tube_inlet, + doc="Connection from FWH4 to FWH5" + ) + + m.fs.discharge.booster_source_disjunct.condpump_to_fwh1 = Arc( + source=m.fs.cond_pump.outlet, + destination=m.fs.fwh[1].tube_inlet, + doc="Connection from condenser pump to FWH1" + ) + + m.fs.discharge.booster_source_disjunct.bfp_to_fwh8 = Arc( + source=m.fs.bfp.outlet, + destination=m.fs.fwh[8].tube_inlet, + doc="Connection from BFP to FWH8" + ) + + m.fs.discharge.booster_source_disjunct.fwh9_to_boiler = Arc( + source=m.fs.fwh[9].tube_outlet, + destination=m.fs.boiler.inlet, + doc="Connection from FWH9 to boiler" + ) + + +def bfp_source_disjunct_equations(disj): + """Block of equations for disjunct 2 in disjunction 1 for the + selection of condensate water source from boiler feed water pump + + """ + + m = disj.model() + + # Define arcs to connect units within disjunct + m.fs.discharge.bfp_source_disjunct.bfp_to_essplit = Arc( + source=m.fs.bfp.outlet, + destination=m.fs.discharge.es_split.inlet, + doc="Connection from BFP to ES splitter" + ) + m.fs.discharge.bfp_source_disjunct.essplit_to_fwh8 = Arc( + source=m.fs.discharge.es_split.to_fwh, + destination=m.fs.fwh[8].tube_inlet, + doc="Connection from ES splitter to FWH8" + ) + + m.fs.discharge.bfp_source_disjunct.fwh4_to_fwh5 = Arc( + source=m.fs.fwh[4].tube_outlet, + destination=m.fs.fwh[5].tube_inlet, + doc="Connection from FWH4 to FWH5" + ) + + m.fs.discharge.bfp_source_disjunct.condpump_to_fwh1 = Arc( + source=m.fs.cond_pump.outlet, + destination=m.fs.fwh[1].tube_inlet, + doc="Connection from condenser pump to FWH1" + ) + + m.fs.discharge.bfp_source_disjunct.booster_to_fwh6 = Arc( + source=m.fs.booster.outlet, + destination=m.fs.fwh[6].tube_inlet, + doc="Connection from booster pump to FWH6" + ) + + m.fs.discharge.bfp_source_disjunct.fwh9_to_boiler = Arc( + source=m.fs.fwh[9].tube_outlet, + destination=m.fs.boiler.inlet, + doc="Connection from FWH9 to boiler" + ) + + +def fwh9_source_disjunct_equations(disj): + """Block of equations for disjunct 2 in disjunction 1 for the + selection of condensate water source from feed water heater 9 + + """ + + m = disj.model() + + # Define arcs to connect units within disjunct + m.fs.discharge.fwh9_source_disjunct.fwh9_to_essplit = Arc( + source=m.fs.fwh[9].tube_outlet, + destination=m.fs.discharge.es_split.inlet, + doc="Connection from FWH9 to the ES SPlitter" + ) + m.fs.discharge.fwh9_source_disjunct.essplit_to_boiler = Arc( + source=m.fs.discharge.es_split.to_fwh, + destination=m.fs.boiler.inlet, + doc="Connection from ES splitter to Boiler" + ) + + m.fs.discharge.fwh9_source_disjunct.fwh4_to_fwh5 = Arc( + source=m.fs.fwh[4].tube_outlet, + destination=m.fs.fwh[5].tube_inlet, + doc="Connection from FWH4 to FWH5" + ) + + m.fs.discharge.fwh9_source_disjunct.condpump_to_fwh1 = Arc( + source=m.fs.cond_pump.outlet, + destination=m.fs.fwh[1].tube_inlet, + doc="Connection from condenser pump to FWH1" + ) + + m.fs.discharge.fwh9_source_disjunct.booster_to_fwh6 = Arc( + source=m.fs.booster.outlet, + destination=m.fs.fwh[6].tube_inlet, + doc="Connection from booster to FWH6" + ) + + m.fs.discharge.fwh9_source_disjunct.bfp_to_fwh8 = Arc( + source=m.fs.bfp.outlet, + destination=m.fs.fwh[8].tube_inlet, + doc="Connection from BFP to FWH8" + ) + + +def set_model_input(m): + """Define model inputs such as fixed variables and parameter + values. The arameter values in this block, unless otherwise stated + explicitly, are either assumed or estimated for a total power out + of 437 MW. The inputs fixed in this function are the necessary + inputs to obtain a square model (0 degrees of freedom). + + Unless stated otherwise, the units are: temperature in K, pressure + in Pa, flow in mol/s, massic flow in kg/s, and heat and heat duty + in W + + """ + + ########################################################################### + # Fix data in discharge system + ########################################################################### + # Add heat exchanger area from supercritical plant model_input. For + # conceptual design optimization, area is unfixed and optimized + m.fs.discharge.hxd.area.fix(2000) + + # Define storage fluid conditions. The fluid inlet flow is fixed + # during initialization, but is unfixed and determined during + # optimization + m.fs.discharge.hxd.shell_inlet.flow_mass.fix(200) + m.fs.discharge.hxd.shell_inlet.temperature.fix(831.15) + m.fs.discharge.hxd.shell_inlet.pressure.fix(101325) + + m.fs.discharge.es_split.inlet.flow_mol.fix(17854) + m.fs.discharge.es_split.inlet.enth_mol.fix(52232) + m.fs.discharge.es_split.inlet.pressure.fix(3.4958e7) + + ########################################################################### + # Fix data in condensate source splitter + ########################################################################### + # The model is built for a fixed flow of condensate through the + # discharge heat exchanger. This condensate flow is unfixed and + # determined during design optimization + m.fs.discharge.es_split.split_fraction[0, "to_hxd"].fix(0.2) + + ########################################################################### + # Inputs for flue gas and capture units + ########################################################################### + m.fs.fg_to_ccs_splitfraction[:].fix(1) + m.fs.ccs_reboiler.inlet.pressure[0].fix(31126000) + m.fs.ccs_reboiler.inlet.enth_mol[0].fix(61493) + m.fs.ccs_reboiler.inlet.flow_mol[0].fix(10740) + m.fs.ccs_reboiler.outlet.pressure[0].fix(7000) + # m.fs.ccs_reboiler.outlet.enth_mol[0].fix(3000) + +def set_scaling_factors(m): + """Scaling factors in the flowsheet + + """ + + # Include scaling factors for solar discharge heat exchanger + iscale.set_scaling_factor( + m.fs.ccs_reboiler.control_volume.heat, 1e-6) + for htf in [m.fs.discharge.hxd]: + iscale.set_scaling_factor(htf.area, 1e-2) + iscale.set_scaling_factor( + htf.overall_heat_transfer_coefficient, 1e-3) + iscale.set_scaling_factor(htf.tube.heat, 1e-6) + iscale.set_scaling_factor(htf.shell.heat, 1e-6) + + + +def initialize(m, solver=None, optarg=None, outlvl=idaeslog.NOTSET): + """Initialize the units included in the discharge model + + """ + + # Include scaling factors + iscale.calculate_scaling_factors(m) + + # Initialize splitter + m.fs.discharge.es_split.initialize(outlvl=outlvl, + optarg=optarg) + + propagate_state(m.fs.discharge.essplit_to_hxd) + m.fs.discharge.hxd.initialize(outlvl=outlvl, + optarg=optarg) + + # propagate_state(m.fs.discharge.hxd_to_esturbine) + # m.fs.discharge.es_turbine.initialize(outlvl=outlvl, + # optarg=optarg) + + # Check and raise an error if the degrees of freedom are not 0 + if not degrees_of_freedom(m) == 0: + raise ConfigurationError( + "The degrees of freedom after building the model are not 0. " + "You have {} degrees of freedom. " + "Please check your inputs to ensure a square problem " + "before initializing the model.".format(degrees_of_freedom(m)) + ) + + # Solve initialization + init_results = solver.solve(m, options=optarg) + print("Discharge model initialization solver termination:", + init_results.solver.termination_condition) + print("************* Discharge Model Initialized ******************") + + +def build_costing(m, solver=None): + """Add cost correlations for the storage design analysis + + This function is used to estimate the capital and operating cost + of integrating a discharge storage system to the power plant and + it contains cost correlations to estimate: (i) the capital cost of + discharge heat exchanger and Solar salt pump, and (ii) the + operating costs for 1 year + + """ + + ########################################################################### + # Add capital cost + # 1. Calculate discharge heat exchanger cost + # 2. Calculate Solar salt pump purchase cost + # 3. Calculate total capital cost of discharge system + + # Main assumptions + # 1. Salt life is assumed to outlast the plant life + # 2. The economic objective is to minimize total annualized cost. So, cash + # flows, discount rate, and NPV are not included in this study. + ########################################################################### + # Add capital cost: 1. Calculate discharge heat exchanger cost + ########################################################################### + # Calculate and initialize Solar salt discharge heat exchanger + # cost, which is estimated using the IDAES costing method with + # default options, i.e. a U-tube heat exchanger, stainless steel + # material, and a tube length of 12ft. Refer to costing + # documentation to change any of the default options. The purchase + # cost of heat exchanger has to be annualized when used + m.fs.costing = SSLWCosting() + + m.fs.discharge.hxd.costing = UnitModelCostingBlock( + flowsheet_costing_block=m.fs.costing, + costing_method=SSLWCostingData.cost_heat_exchanger, + ) + + ########################################################################### + # Add capital cost: 2. Calculate Solar salt pump purchase cost + ########################################################################### + # Pump for moving Solar salt is not explicity modeled. To compute + # the capital costs for this pump the capital cost expressions are + # added below. All cost expressions are from the same reference + # as the IDAES costing framework and is given below: Seider, + # Seader, Lewin, Windagdo, 3rd Ed. John Wiley and Sons, Chapter + # 22. Cost Accounting and Capital Cost Estimation, Section 22.2 Cost + # Indexes and Capital Investment + + # ---------- Solar salt ---------- + # Calculate purchase cost of Solar salt pump + m.fs.discharge.spump_Qgpm = pyo.Expression( + expr=(m.fs.discharge.hxd. + hot_side.properties_in[0].flow_mass * + (264.17 * pyo.units.gallon / pyo.units.m**3) * + (60 * pyo.units.s / pyo.units.min) / + (m.fs.discharge.hxd. + hot_side.properties_in[0].dens_mass["Liq"])), + doc="Conversion of Solar salt flow mass to volumetric flow in gallons/min" + ) + m.fs.discharge.dens_lbft3 = pyo.units.convert( + m.fs.discharge.hxd.hot_side.properties_in[0].dens_mass["Liq"], + to_units=pyo.units.pound / pyo.units.foot**3 + ) + m.fs.discharge.spump_sf = pyo.Expression( + expr=(m.fs.discharge.spump_Qgpm * + (m.fs.discharge.spump_head ** 0.5)), + doc="Pump size factor" + ) + # Expression for pump base purchase cost + m.fs.discharge.pump_CP = pyo.Expression( + expr=( + m.fs.discharge.spump_FT * m.fs.discharge.spump_FM * + exp( + 9.7171 - + 0.6019 * log(m.fs.discharge.spump_sf) + + 0.0519 * ((log(m.fs.discharge.spump_sf))**2) + ) + ), + doc="Base purchase cost of Solar salt pump in $" + ) + # Expression for pump efficiency + m.fs.discharge.spump_np = pyo.Expression( + expr=( + -0.316 + + 0.24015 * log(m.fs.discharge.spump_Qgpm) - + 0.01199 * ((log(m.fs.discharge.spump_Qgpm))**2) + ), + doc="Fractional efficiency of the pump in horsepower" + ) + m.fs.discharge.motor_pc = pyo.Expression( + expr=( + (m.fs.discharge.spump_Qgpm * + m.fs.discharge.spump_head * + m.fs.discharge.dens_lbft3) / + (33000 * + m.fs.discharge.spump_np * + m.fs.discharge.spump_nm) + ), + doc="Power consumption of motor in horsepower" + ) + + # Defining a local variable for the log of motor's power consumption + # This will help writing the motor's purchase cost expressions conciesly + _log_motor_pc = log(m.fs.discharge.motor_pc) + + # Expression for motor's purchase cost + m.fs.discharge.motor_CP = pyo.Expression( + expr=( + m.fs.discharge.spump_motorFT * + exp( + 5.8259 + + 0.13141 * _log_motor_pc + + 0.053255 * (_log_motor_pc**2) + + 0.028628 * (_log_motor_pc**3) - + 0.0035549 * (_log_motor_pc**4) + ) + ), + doc="Base cost of Solar salt pump's motor in $" + ) + + # Calculate and initialize total cost of Solar salt pump + m.fs.discharge.spump_purchase_cost = pyo.Var( + initialize=100000, + bounds=(0, 1e7), + doc="Total purchase cost of Solar salt pump in $" + ) + + def solar_spump_purchase_cost_rule(b): + return ( + m.fs.discharge.spump_purchase_cost == ( + m.fs.discharge.pump_CP + + m.fs.discharge.motor_CP) * + (m.CE_index / 394) + ) + m.fs.discharge.spump_purchase_cost_eq = pyo.Constraint( + rule=solar_spump_purchase_cost_rule) + + calculate_variable_from_constraint( + m.fs.discharge.spump_purchase_cost, + m.fs.discharge.spump_purchase_cost_eq) + + ########################################################################### + # Add capital cost: 3. Calculate total capital cost for discharge system + ########################################################################### + + # Add capital cost variable at flowsheet level to handle the Solar + # salt capital cost + m.fs.discharge.capital_cost = pyo.Var( + initialize=1000000, + bounds=(0, 1e10), + doc="Annualized capital cost in $/year") + + # Calculate and initialize annualized capital cost for the Solar + # salt discharge storage system + def solar_cap_cost_rule(b): + return ( + m.fs.discharge.capital_cost * + m.fs.discharge.num_of_years + ) == (m.fs.discharge.spump_purchase_cost + + m.fs.discharge.hxd.costing.capital_cost) + m.fs.discharge.cap_cost_eq = pyo.Constraint( + rule=solar_cap_cost_rule) + + calculate_variable_from_constraint( + m.fs.discharge.capital_cost, + m.fs.discharge.cap_cost_eq) + + ########################################################################### + # Add operating cost + ########################################################################### + m.fs.discharge.operating_hours = pyo.Expression( + expr=365 * 3600 * m.fs.discharge.hours_per_day, + doc="Number of operating hours per year") + m.fs.discharge.operating_cost = pyo.Var( + initialize=1000000, + bounds=(0, 1e11), + doc="Operating cost in $/year") + + def op_cost_rule(b): + return m.fs.discharge.operating_cost == ( + m.fs.discharge.operating_hours * + m.fs.discharge.coal_price * + m.fs.coal_heat_duty * 1e6 + ) + m.fs.discharge.op_cost_eq = pyo.Constraint(rule=op_cost_rule) + + # Initialize operating cost + calculate_variable_from_constraint( + m.fs.discharge.operating_cost, + m.fs.discharge.op_cost_eq) + + # Check and raise an error if the degrees of freedom are not 0 + if not degrees_of_freedom(m) == 0: + raise ConfigurationError( + "The degrees of freedom after building costing block are not 0. " + "You have {} degrees of freedom. " + "Please check your inputs to ensure a square problem " + "before initializing the model.".format(degrees_of_freedom(m)) + ) + + # Solve cost initialization + print() + # Add options to NLP solver + optarg = {"tol": 1e-8, + "max_iter": 300} + cost_results = solver.solve(m, options=optarg) + print("Cost initialization solver termination:", + cost_results.solver.termination_condition) + print("******************** Costing Initialized *************************") + print() + print() + + +def add_bounds(m, power_max=None): + """Add bounds to all units in discharge model + + """ + + m.flow_max = m.main_flow * 3 # Units in mol/s + m.storage_flow_max = 0.2 * m.flow_max # Units in mol/s + m.salt_flow_max = 1000 # Units in kg/s + m.heat_duty_bound = 200e6 # Units in MW + m.power_max = power_max # Units in MW + + # Add bounds to Solar salt discharge heat exchanger + for hxd in [m.fs.discharge.hxd]: + hxd.tube_inlet.flow_mol.setlb(0) + hxd.tube_inlet.flow_mol.setub(m.storage_flow_max) + hxd.shell_inlet.flow_mass.setlb(0) + hxd.shell_inlet.flow_mass.setub(m.salt_flow_max) + hxd.tube_outlet.flow_mol.setlb(0) + hxd.tube_outlet.flow_mol.setub(m.storage_flow_max) + hxd.shell_outlet.flow_mass.setlb(0) + hxd.shell_outlet.flow_mass.setub(m.salt_flow_max) + hxd.shell_inlet.pressure.setlb(101320) + hxd.shell_inlet.pressure.setub(101330) + hxd.shell_outlet.pressure.setlb(101320) + hxd.shell_outlet.pressure.setub(101330) + hxd.heat_duty.setlb(0) + hxd.heat_duty.setub(m.heat_duty_bound) + hxd.shell.heat.setlb(-m.heat_duty_bound) + hxd.shell.heat.setub(0) + hxd.tube.heat.setlb(0) + hxd.tube.heat.setub(m.heat_duty_bound) + hxd.shell.properties_in[0].enth_mass.setlb(0) + hxd.shell.properties_in[0].enth_mass.setub(1.5e6) + hxd.shell.properties_out[0].enth_mass.setlb(0) + hxd.shell.properties_out[0].enth_mass.setub(1.5e6) + hxd.overall_heat_transfer_coefficient.setlb(0) + hxd.overall_heat_transfer_coefficient.setub(10000) + hxd.area.setlb(0) + hxd.area.setub(5000) + hxd.costing.pressure_factor.setlb(0) + hxd.costing.pressure_factor.setub(1e5) + hxd.costing.capital_cost.setlb(0) + hxd.costing.capital_cost.setub(1e7) + hxd.costing.base_cost_per_unit.setlb(0) + hxd.costing.base_cost_per_unit.setub(1e6) + hxd.costing.material_factor.setlb(0) + hxd.costing.material_factor.setub(10) + hxd.delta_temperature_in.setlb(10) + hxd.delta_temperature_out.setlb(9) + hxd.delta_temperature_in.setub(298) + hxd.delta_temperature_out.setub(500) + + # Add bounds needed in units declared in condensate source + # disjunction + for split in [m.fs.discharge.es_split]: + split.inlet.flow_mol[:].setlb(0) + split.inlet.flow_mol[:].setub(m.flow_max) + split.to_hxd.flow_mol[:].setlb(0) + split.to_hxd.flow_mol[:].setub(m.storage_flow_max) + split.to_fwh.flow_mol[:].setlb(0) + split.to_fwh.flow_mol[:].setub(m.flow_max) + split.split_fraction[0.0, "to_hxd"].setlb(0) + split.split_fraction[0.0, "to_hxd"].setub(1) + split.split_fraction[0.0, "to_fwh"].setlb(0) + split.split_fraction[0.0, "to_fwh"].setub(1) + + # m.fs.plant_power_out[0].setlb(300) + # m.fs.plant_power_out[0].setub(m.power_max) + + # m.fs.turbine_splitter[6].split_fraction[0.0, "outlet_3"].setlb(0) + # m.fs.turbine_splitter[6].split_fraction[0.0, "outlet_3"].setub(1) + m.fs.turbine_splitter[6].outlet_3.flow_mol.setlb(0) + m.fs.turbine_splitter[6].outlet_3.flow_mol.setub(m.flow_max) + + for unit_k in [m.fs.booster]: + unit_k.inlet.flow_mol[:].setlb(0) + unit_k.inlet.flow_mol[:].setub(m.flow_max) + unit_k.outlet.flow_mol[:].setlb(0) + unit_k.outlet.flow_mol[:].setub(m.flow_max) + + for unit_k in [m.fs.discharge.iplp_source_disjunct.es_turbine]: + unit_k.inlet.flow_mol[:].setlb(0) + unit_k.inlet.flow_mol[:].setub(m.storage_flow_max) + unit_k.outlet.flow_mol[:].setlb(0) + unit_k.outlet.flow_mol[:].setub(m.storage_flow_max) + + # unit_k.inlet.pressure[:].setlb(0) + # unit_k.inlet.pressure[:].setub(1e12) + # unit_k.outlet.pressure[:].setlb(0) + # unit_k.outlet.pressure[:].setub(1e12) + # unit_k.ratioP[:].setlb(0) + # unit_k.ratioP[:].setub(1e12) + + for unit_k in [m.fs.ccs_reboiler]: + unit_k.inlet.flow_mol[:].setlb(0) + unit_k.inlet.flow_mol[:].setub(m.flow_max) + unit_k.outlet.flow_mol[:].setlb(0) + unit_k.outlet.flow_mol[:].setub(m.flow_max) + + for k in m.set_turbine: + m.fs.turbine[k].work.setlb(-1e10) + m.fs.turbine[k].work.setub(0) + + for unit_k in [m.fs.discharge.iplp_source_disjunct.es_turbine]: + unit_k.inlet.flow_mol[:].setlb(20) + unit_k.inlet.flow_mol[:].setub(m.storage_flow_max) + unit_k.outlet.flow_mol[:].setlb(20) + unit_k.outlet.flow_mol[:].setub(m.storage_flow_max) + + unit_k.control_volume.work[:].setub(0) + unit_k.control_volume.work[:].setlb(-1e8) + # unit_k.inlet.pressure[:].setlb(0) + # unit_k.inlet.pressure[:].setub(1e12) + # unit_k.outlet.pressure[:].setlb(0) + # unit_k.outlet.pressure[:].setub(1e12) + unit_k.deltaP[:].setlb(0) + unit_k.deltaP[:].setub(1e12) + + for split1 in [m.fs.discharge.iplp_source_disjunct.ccs_split]: + split1.inlet.flow_mol[:].setlb(0) + split1.inlet.flow_mol[:].setub(m.flow_max) + split1.to_ccs.flow_mol[:].setlb(0) + split1.to_ccs.flow_mol[:].setub(m.flow_max) + split1.to_turb.flow_mol[:].setlb(0) + split1.to_turb.flow_mol[:].setub(m.flow_max) + split1.split_fraction[0.0, "to_ccs"].setlb(0) + split1.split_fraction[0.0, "to_ccs"].setub(1) + split1.split_fraction[0.0, "to_turb"].setlb(0) + split1.split_fraction[0.0, "to_turb"].setub(1) + + # for split1 in [m.fs.discharge.iplp_source_disjunct.bfpt_split]: + # split1.inlet.flow_mol[:].setlb(0) + # split1.inlet.flow_mol[:].setub(m.flow_max) + # split1.to_ccs.flow_mol[:].setlb(0) + # split1.to_ccs.flow_mol[:].setub(m.flow_max) + # split1.to_bfpt.flow_mol[:].setlb(0) + # split1.to_bfpt.flow_mol[:].setub(m.flow_max) + # split1.split_fraction[0.0, "to_ccs"].setlb(0) + # split1.split_fraction[0.0, "to_ccs"].setub(1) + # split1.split_fraction[0.0, "to_bfpt"].setlb(0) + # split1.split_fraction[0.0, "to_bfpt"].setub(1) + + # for split2 in [m.fs.discharge.hxd_source_disjunct.ccs_split]: + # split2.inlet.flow_mol[:].setlb(0) + # split2.inlet.flow_mol[:].setub(m.storage_flow_max) + # split2.to_ccs.flow_mol[:].setlb(0) + # split2.to_ccs.flow_mol[:].setub(m.storage_flow_max) + # split2.to_esturb.flow_mol[:].setlb(0) + # split2.to_esturb.flow_mol[:].setub(m.storage_flow_max) + # split2.split_fraction[0.0, "to_ccs"].setlb(0) + # split2.split_fraction[0.0, "to_ccs"].setub(1) + # split2.split_fraction[0.0, "to_esturb"].setlb(0) + # split2.split_fraction[0.0, "to_esturb"].setub(1) + + +def main(m_usc, solver=None, optarg=None): + + # Add boiler and cycle efficiencies to the model + add_efficiency = True + + # Add maximum power produced by power plant in MW. For this + # analysis, the maximum power is fixed to 436 MW + power_max = 436 + + # Create a flowsheet, add properties, unit models, and arcs + m = create_discharge_model(m_usc, + add_efficiency=add_efficiency, + power_max=power_max) + + # Give all the required inputs to the model + set_model_input(m) + + # Add scaling factor + set_scaling_factors(m) + + # Initialize the model with a sequential initialization + initialize(m, solver=solver, optarg=optarg) + + # Add cost correlations + build_costing(m, solver=solver) + + # Add bounds + add_bounds(m, power_max=power_max) + + # Disconnect arcs to include discharge storage system + disconnect_arcs(m) + + # Add disjunction + add_disjunction(m) + + return m + + +def print_model(_, nlp_model, nlp_data): + """Print the disjunction selected during the solution of the NLP + subproblem + + """ + + nlp = nlp_model.fs.discharge + print(' ___________________________________________') + print(' Disjunction 1:') + if nlp.condpump_source_disjunct.binary_indicator_var.value == 1: + print(' Condensate from condenser pump is selected') + elif nlp.booster_source_disjunct.binary_indicator_var.value == 1: + print(' Condensate from booster pump is selected') + elif nlp.bfp_source_disjunct.binary_indicator_var.value == 1: + print(' Condensate from boiler feed pump is selected') + elif nlp.fwh9_source_disjunct.binary_indicator_var.value == 1: + print(' Condensate from FWH9 is selected') + elif nlp.fwh4_source_disjunct.binary_indicator_var.value == 1: + print(' Condensate from FWH4 is selected') + else: + print(' Error: There are no more alternatives') + print(' ___________________________________________') + print(' Disjunction 2:') + if nlp.iplp_source_disjunct.binary_indicator_var.value == 1: + print(' CCS Steam from IP LP crossover is selected') + elif nlp.hxd_source_disjunct.binary_indicator_var.value == 1: + print(' CCS Steam from HXD is selected') + else: + print(' Error: There are no more alternatives') + print(' ___________________________________________') + print() + + +def run_nlps(m, + solver=None, + fluid=None, + source=None): + """This function fixes the indicator variables of the disjuncts so to + solve NLP problems + + """ + + # Disjunction 1 for the water source selection + if fluid == "cond_pump": + m.fs.discharge.condpump_source_disjunct.indicator_var.fix(1) + m.fs.discharge.fwh4_source_disjunct.indicator_var.fix(0) + m.fs.discharge.booster_source_disjunct.indicator_var.fix(0) + m.fs.discharge.bfp_source_disjunct.indicator_var.fix(0) + m.fs.discharge.fwh9_source_disjunct.indicator_var.fix(0) + elif fluid == "fwh4": + m.fs.discharge.condpump_source_disjunct.indicator_var.fix(0) + m.fs.discharge.fwh4_source_disjunct.indicator_var.fix(1) + m.fs.discharge.booster_source_disjunct.indicator_var.fix(0) + m.fs.discharge.bfp_source_disjunct.indicator_var.fix(0) + m.fs.discharge.fwh9_source_disjunct.indicator_var.fix(0) + elif fluid == "booster": + m.fs.discharge.condpump_source_disjunct.indicator_var.fix(0) + m.fs.discharge.fwh4_source_disjunct.indicator_var.fix(0) + m.fs.discharge.booster_source_disjunct.indicator_var.fix(1) + m.fs.discharge.bfp_source_disjunct.indicator_var.fix(0) + m.fs.discharge.fwh9_source_disjunct.indicator_var.fix(0) + elif fluid == "bfp": + m.fs.discharge.condpump_source_disjunct.indicator_var.fix(0) + m.fs.discharge.fwh4_source_disjunct.indicator_var.fix(0) + m.fs.discharge.booster_source_disjunct.indicator_var.fix(0) + m.fs.discharge.bfp_source_disjunct.indicator_var.fix(1) + m.fs.discharge.fwh9_source_disjunct.indicator_var.fix(0) + elif fluid == "fwh9": + m.fs.discharge.condpump_source_disjunct.indicator_var.fix(0) + m.fs.discharge.fwh4_source_disjunct.indicator_var.fix(0) + m.fs.discharge.booster_source_disjunct.indicator_var.fix(0) + m.fs.discharge.bfp_source_disjunct.indicator_var.fix(0) + m.fs.discharge.fwh9_source_disjunct.indicator_var.fix(1) + else: + print('Unrecognized storage fluid name!') + + # Disjunction 2 for the ccs source selection + if source == "iplp": + m.fs.discharge.iplp_source_disjunct.indicator_var.fix(1) + m.fs.discharge.hxd_source_disjunct.indicator_var.fix(0) + elif source == "hxd": + m.fs.discharge.iplp_source_disjunct.indicator_var.fix(0) + m.fs.discharge.hxd_source_disjunct.indicator_var.fix(1) + else: + print('Unrecognized source unit name!') + + TransformationFactory('gdp.fix_disjuncts').apply_to(m) + print("The degrees of freedom after gdp transformation ", + degrees_of_freedom(m)) + + results = solver.solve( + m, + tee=True, + symbolic_solver_labels=True, + options={ + "linear_solver": "ma27", + "max_iter": 150 + } + ) + log_close_to_bounds(m) + + + return m, results + +def run_gdp(m): + """Declare solver GDPopt and its options + """ + + # Add options to GDPopt + opt = SolverFactory('gdpopt') + _prop_bnds_root_to_leaf_map[ExternalFunctionExpression] = lambda x, y, z: None + + # Solve model + results = opt.solve( + m, + tee=True, + algorithm='LOA', + init_algorithm="no_init", + subproblem_presolve=False, + mip_solver='gurobi', + nlp_solver='ipopt', + call_after_subproblem_solve=print_model, + nlp_solver_args=dict( + tee=True, + options={ + "max_iter": 150} + ) + ) + + return results + + +def print_results(m, results): + + print('====================================================') + print('Results ') + print() + print('Obj (M$/year): {:.2f}'.format( + (pyo.value(m.obj) / scaling_obj) * 1e-6)) + print('Discharge capital cost (M$/y): {:.2f}'.format( + pyo.value(m.fs.discharge.capital_cost) * 1e-6)) + print('Net Power (MW): {:.2f}'.format( + pyo.value(m.fs.net_power))) + print('Plant Power (MW): {:.2f}'.format( + pyo.value(m.fs.plant_power_out[0]))) + print('Discharge Turbine Power (MW): {:.2f}'.format( + pyo.value(m.fs.discharge.iplp_source_disjunct.es_turbine.control_volume.work[0]) * (-1e-6))) + print('Boiler Efficiency (%): {:.2f}'.format( + pyo.value(m.fs.boiler_efficiency) * 100)) + print('Boiler Steam Flow: {:.2f}'.format( + pyo.value(m.fs.boiler.inlet.flow_mol[0]))) + print('Makeup Water Flow: {:.2f}'.format( + pyo.value(m.fs.condenser_mix.makeup.flow_mol[0]))) + print('CCS Reboiler Steam Flow: {:.2f}'.format( + pyo.value(m.fs.ccs_reboiler.inlet.flow_mol[0]))) + print('Flue Gas Flow: {:.2f}'.format( + pyo.value(m.fs.fg_flow_mol[0]))) + print('CO2 captured: {:.2f}'.format( + pyo.value(m.fs.co2_captured))) + print('CCS Inlet Steam Temperature: {:.2f}'.format( + pyo.value(m.fs.ccs_reboiler.control_volume.properties_in[0].temperature))) + print('CCS Outlet Steam Temperature: {:.2f}'.format( + pyo.value(m.fs.ccs_reboiler.control_volume.properties_out[0].temperature))) + print('HXD Inlet Water Temperature: {:.2f}'.format( + pyo.value(m.fs.discharge.hxd.cold_side.properties_in[0].temperature))) + print('HXD Outlet Water Temperature: {:.2f}'.format( + pyo.value(m.fs.discharge.hxd.cold_side.properties_out[0].temperature))) + print() + print("**Discrete design decisions (Disjunction)") + for d in m.component_data_objects(ctype=Disjunct, + active=True, + sort=True, descend_into=True): + if abs(d.binary_indicator_var.value - 1) < 1e-6: + print(d.name, ' should be selected!') + print('Discharge heat exchanger area (m2): {:.2f}'.format( + pyo.value(m.fs.discharge.hxd.area))) + print('Discharge heat exchanger heat duty (MW): {:.2f}'.format( + pyo.value(m.fs.discharge.hxd.heat_duty[0]) * 1e-6)) + print('====================================================') + print() + print('Solver details') + print(results) + print() + + +def add_flugas_calculations(m): + m.fs.co2_mw = Param( + initialize=44.01, + doc='molar weight of CO2 in g/mol' + ) + m.fs.SR = Param( + initialize=1.2, + doc='Stoichiometric ratio used to calculate coal flow rate' + ) + m.fs.coal_LHV = Param( + initialize=29544, + doc='LHV for Illinois no. 6 Bituminous coal from Baseline Rev 4, J/g' + ) + m.fs.carbon_wt = Param( + initialize=0.4972, + doc='Carbon in dry weight basis of the coal from Baseline Rev 4' + ) + m.fs.co2_molefrac = Param( + initialize=0.14, + doc='Mole fraction of CO2 in the flue gas of USC, 1999 DOE report' + ) + m.fs.fg_flow_mol = Var( + m.fs.config.time, + initialize=1000, + bounds=(0, 1e6), + doc='Molar flow rate of flue gas') + + @m.fs.Constraint(m.fs.time, + doc="Mole flow of flue gas constraint") + def eq_fluegas_flow(b, t): + return ( + m.fs.fg_flow_mol[t] * (m.fs.co2_mw * + m.fs.coal_LHV * + m.fs.co2_molefrac) == + (m.fs.carbon_wt * m.fs.SR * (m.fs.reheater[2].heat_duty[t] + + m.fs.reheater[1].heat_duty[t] + + m.fs.boiler.heat_duty[t])) + ) + + return m + +def add_capture_calculations(m): + + m.fs.fg_to_ccs_splitfraction = Var( + m.fs.config.time, + initialize=0.5, + bounds=(0, 1), + doc='Split of total flue gas sent to CCS') + + # m.fs.co2_captured = Var( + # m.fs.config.time, + # initialize=500, + # bounds=(0, 1e5), + # doc='Weight of CO2 captured CCS') + + # A specific reboiler duty of 3 GJ/tonne of CO2 captured is assumed for the + # CCS unit performing at 95% capture rate and using an advanced solvent + # such as Gen2 + # Units: 3 GJ/tonne = 3000 J/g + m.fs.SRD = Param( + initialize=3000, + doc='Specific Reboiler Duty for 95% Capture in J/g CO2 captured' + ) + + m.fs.emission_tax = Param( + initialize=150e-6, + doc='Assumed carbon emission tax of $150/tonne or $150e-6/g of CO2' + ) + + m.fs.ccs_reboiler = Heater( + property_package=m.fs.prop_water, + has_pressure_change=True, + ) + + m.fs.co2_captured = Expression( + expr=(m.fs.co2_molefrac * m.fs.fg_flow_mol[0] + * m.fs.fg_to_ccs_splitfraction[0] * m.fs.co2_mw), + doc="Weight of CO2 captured") + + m.fs.co2_emitted = Expression( + expr=(m.fs.co2_molefrac * m.fs.fg_flow_mol[0] + * (1 - m.fs.fg_to_ccs_splitfraction[0]) * m.fs.co2_mw), + doc="Weight of CO2 captured") + + # @m.fs.Constraint(m.fs.time, + # doc="Weight of CO2 captured") + # def eq_min_co2_captured(b, t): + # return ( + # m.fs.fg_to_ccs_splitfraction[t] >= 0.5) + + @m.fs.Constraint(m.fs.time, + doc="Reboiler heat duty constraint") + def eq_reboiler_heat_duty(b, t): + return ( + m.fs.ccs_reboiler.heat_duty[t] == + -1 * m.fs.co2_captured * m.fs.SRD) + + return m + +def model_analysis(m, heat_duty=None): + """Solve the conceptual design optimization problem + + """ + + # Fix variables in the flowsheet + # m.fs.net_power.fix(400) + m.fs.plant_power_out.fix(400) + m.fs.boiler.outlet.pressure.fix(m.main_steam_pressure) + m.fs.discharge.hxd.heat_duty.fix(heat_duty * 1e6) + + # Unfix variables that were fixed iduring initialization + m.fs.boiler.inlet.flow_mol.unfix() + m.fs.discharge.es_split.split_fraction[0, "to_hxd"].unfix() + m.fs.discharge.es_split.inlet.unfix() + m.fs.discharge.hxd.shell_inlet.flow_mass.unfix() + m.fs.discharge.hxd.area.unfix() + + # m.fs.fg_to_ccs_splitfraction[:].fix(1) + m.fs.fg_to_ccs_splitfraction[:].unfix() + m.fs.ccs_reboiler.inlet.pressure[0].unfix() + m.fs.ccs_reboiler.inlet.enth_mol[0].unfix() + m.fs.ccs_reboiler.inlet.flow_mol[0].unfix() + # m.fs.ccs_reboiler.inlet.enth_mol[0].fix(3000) + # m.fs.ccs_reboiler.outlet.enth_mol[0].unfix() + # m.fs.discharge_power_out.fix(10) + # Add total cost as the objective function + m.obj = Objective( + expr=( + m.fs.discharge.capital_cost + + m.fs.discharge.operating_cost + + m.fs.co2_emitted * m.fs.discharge.operating_hours * m.fs.emission_tax + # - m.fs.net_power * 20 + ) * scaling_obj + ) + + +if __name__ == "__main__": + + # optarg = {"max_iter": 300} + optarg = {"tol": 1e-8, + "max_iter": 300, + "halt_on_ampl_error": "yes"} + solver = get_solver('ipopt', optarg) + + # Build ultra-supercritical plant base model + m_usc = usc.build_plant_model() + + # Initialize ultra-supercritical plant base model + usc.initialize(m_usc) + + # Add boiler fireside + m_usc = add_flugas_calculations(m_usc) + m_usc = add_capture_calculations(m_usc) + + # Build discharge model + m = main(m_usc, solver=solver, optarg=optarg) + + # Solve design model optimization problem + heat_duty_data = 148.5 + model_analysis(m, heat_duty=heat_duty_data) + + # Solve model using GDPopt + print() + print('**********Start solution of GDP discharge model using GDPopt') + print('DOFs before GDP discharge model solution: ', degrees_of_freedom(m)) + print() + # results = run_gdp(m) + + # fluid = "cond_pump" + # fluid = "fwh4" + # fluid = "booster" + fluid = "bfp" + # fluid = "fwh9" + + source = "iplp" + # source = "hxd" + + results = run_nlps(m, + solver=solver, + fluid=fluid, + source=source) + + # Print results + print_results(m, results) diff --git a/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/fe_ccs/ultra_supercritical_powerplant_w_ccs.py b/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/fe_ccs/ultra_supercritical_powerplant_w_ccs.py new file mode 100644 index 000000000..dee517402 --- /dev/null +++ b/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/fe_ccs/ultra_supercritical_powerplant_w_ccs.py @@ -0,0 +1,395 @@ +############################################################################## +# DISPATCHES was produced under the DOE Design Integration and Synthesis +# Platform to Advance Tightly Coupled Hybrid Energy Systems program +# (DISPATCHES), and is copyright (c) 2021 by the software owners: +# The Regents of the University of California, through Lawrence Berkeley +# National Laboratory, National Technology & Engineering Solutions of Sandia, +# LLC, Alliance for Sustainable Energy, LLC, Battelle Energy Alliance, LLC, +# University of Notre Dame du Lac, et al. All rights reserved. +# +# Please see the files COPYRIGHT.md and LICENSE.md for full copyright and +# license information, respectively. Both files are also available online +# at the URL: "https://github.com/gmlc-dispatches/dispatches". +# +############################################################################## + +""" +This is a simple model for an ultrasupercritical coal-fired power plant +integrated with a boiler fire-side unit model and a CO2 capture system. +The boiler fire-side model accounts for flue-gas generation. +The CO2 capture system uses surrogates for a solvent-based piperazine system. +The capture rate is fixed to 90%. +""" + +from pyomo.network import Arc +from pyomo.environ import TransformationFactory, value +# IDAES Imports +from idaes.core.util.model_statistics import degrees_of_freedom +from idaes.core.util.initialization import propagate_state +from idaes.power_generation.unit_models.boiler_fireside import BoilerFireside +from idaes.generic_models.unit_models import Heater, MomentumMixingType +from idaes.core.util import get_solver +import idaes.core.util.scaling as iscale +import idaes.logger as idaeslog +from idaes.power_generation.unit_models.helm import HelmMixer, HelmSplitter +from idaes.power_generation.properties import FlueGasParameterBlock +# Dispatches Imports +from dispatches.models.fossil_case.ultra_supercritical_plant import ( + ultra_supercritical_powerplant as usc) +# from idaes.power_generation.carbon_capture.piperazine_surrogates.\ +# co2_capture_system import CO2Capture +from dispatches.models.fossil_case.ultra_supercritical_plant.\ + co2_capture_system import CO2Capture + + +def add_fireside(m): + + m.fs.prop_fluegas = FlueGasParameterBlock() + + boiler_input_dict = {1: '614623556', # replaced later by boiler + 'pl': '126983008', # replaced later by reheater[1] + 'roof': '96959378', # replaced later by reheater[2] + 'flyash': '0.0001', # flyash mass fraction + 'NOx': '140'} # NOx PPM + + m.fs.boiler_fireside = BoilerFireside( + default={"dynamic": False, + "property_package": m.fs.prop_fluegas, + "calculate_PA_SA_flows": True, + "number_of_zones": 1, + "has_platen_superheater": True, + "has_roof_superheater": True, + "surrogate_dictionary": boiler_input_dict}) + m.fs.boiler_fireside.eq_surr_waterwall_heat.deactivate() + m.fs.boiler_fireside.eq_surr_platen_heat.deactivate() + m.fs.boiler_fireside.eq_surr_roof_heat.deactivate() + + @m.fs.boiler_fireside.Constraint(m.fs.time, + m.fs.boiler_fireside.zones, + doc="Waterwall heat duty") + def eq_main_boiler_heat(b, t, z): + return ( + b.waterwall_heat[t, z] * + b.fcorrection_heat_ww[t] == + m.fs.boiler.heat_duty[0]) + + @m.fs.boiler_fireside.Constraint(m.fs.time, + doc="Reheater heat duty") + def eq_reheater_1_heat(b, t): + return ( + b.platen_heat[t] * + b.fcorrection_heat_platen[t] == + m.fs.reheater[1].heat_duty[0]) + + @m.fs.boiler_fireside.Constraint(m.fs.time, + doc="Additional reheater heat duty") + def eq_reheater_2_heat(b, t): + return ( + b.roof_heat[t] * + b.fcorrection_heat_ww[t] == + m.fs.reheater[2].heat_duty[0]) + + # Fixing Coal composition + m.fs.boiler_fireside.mf_C_coal_dry.fix(0.718471768285811) + m.fs.boiler_fireside.mf_H_coal_dry.fix(0.0507156542319396) + m.fs.boiler_fireside.mf_O_coal_dry.fix(0.0791164206018258) + m.fs.boiler_fireside.mf_N_coal_dry.fix(0.0140876817310943) + m.fs.boiler_fireside.mf_S_coal_dry.fix(0.0282880649160374) + m.fs.boiler_fireside.mf_Ash_coal_dry.fix(0.109320410233292) + m.fs.boiler_fireside.hhv_coal_dry.fix(2.581e+007) + m.fs.boiler_fireside.frac_moisture_vaporized[:].fix(0.6) + m.fs.boiler_fireside.mf_H2O_coal_raw[:].fix(0.111367051) # moisture + m.fs.boiler_fireside.flowrate_coal_raw[:].fix(100.0) # kg/s + + m.fs.boiler_fireside.wall_temperature_waterwall[:, :].fix(690) + m.fs.boiler_fireside.wall_temperature_platen[:].fix(750) + m.fs.boiler_fireside.wall_temperature_roof[:].fix(650) + m.fs.boiler_fireside.fcorrection_heat_ww.fix(0.95) + m.fs.boiler_fireside.fcorrection_heat_platen.fix(0.95) + + # ----------------------------------------------------------- + # Estimates for unit model initialization only + # ----------------------------------------------------------- + # Approximated flue gas = 21290.6999 # mol/s + flow_mol_pa = 21290.6999*0.34 # approx. 1/3 as Primary air + flow_mol_sa = 21290.6999*0.66 # approx. 2/3 as Secondary air + + m.fs.state_args_PA = { + "flow_mol_comp": { + "H2O": 0.0078267*flow_mol_pa, + "CO2": 0.000337339*flow_mol_pa, + "N2": 0.783994*flow_mol_pa, + "O2": 0.20784*flow_mol_pa, + "SO2": 1e-5*flow_mol_pa, + "NO": 1e-5*flow_mol_pa + }, + "temperature": 333.15, + "pressure": 101325.00 + } + + m.fs.state_args_SA = { + "flow_mol_comp": { + "H2O": 0.0078267*flow_mol_sa, + "CO2": 0.000337339*flow_mol_sa, + "N2": 0.783994*flow_mol_sa, + "O2": 0.20784*flow_mol_sa, + "SO2": 1e-5*flow_mol_sa, + "NO": 1e-5*flow_mol_sa + }, + "temperature": 650.15, + "pressure": 101325.00 + } + # ----------------------------------------------------------- + + m.fs.boiler_fireside.primary_air_inlet.pressure[:].fix(101325.00) + m.fs.boiler_fireside.secondary_air_inlet.pressure[:].fix(101325.00) + m.fs.boiler_fireside.primary_air_inlet.temperature[:].fix(333.15) + m.fs.boiler_fireside.secondary_air_inlet.temperature[:].fix(650.15) + m.fs.boiler_fireside.temperature_coal[:].fix(335.15) + m.fs.boiler_fireside.flue_gas_outlet.temperature.setub(5000) + m.fs.boiler_fireside.SR.fix(1.2) + m.fs.boiler_fireside.ratio_PA2coal.fix(2.45) + m.fs.boiler_fireside.SR_lf.fix(1.0) + m.fs.boiler_fireside.deltaP.fix(1000) + return m + + +def add_co2capture(m): + m.fs.co2_capture_unit = CO2Capture() + + # Adding constraints to connect flue_gas_outlet to co2_capture_unit_inlet + # An arc cannot be used because of the fixed components with capture unit + # The following are equality constraints for component flows, pressure, + # and temperature. + m.fg_comp_list = ['CO2', 'H2O', 'N2', 'O2', 'NO', 'SO2'] + m.css_comp_list = ['CO2', 'H2O', 'N2', 'O2'] + + @m.fs.co2_capture_unit.Constraint(m.fs.time, + m.css_comp_list, + doc="Flow equality constraints") + def eq_flow_mol_comp(b, t, c): + return ( + m.fs.boiler_fireside.flue_gas_outlet.flow_mol_comp[t, c] == + m.fs.co2_capture_unit.inlet.flow_mol_comp[t, c]) + + @m.fs.co2_capture_unit.Constraint(m.fs.time, + doc="Fixing Ar flow") + def eq_ar_flow_mol_comp(b, t): + return ( + m.fs.co2_capture_unit.inlet.flow_mol_comp[t, 'Ar'] == 0.0089 * + sum(m.fs.boiler_fireside.flue_gas_outlet.flow_mol_comp[t, c] + for c in m.fg_comp_list)) + + # The Flue gas is assumed to be stripped out of NOx and SOx before capture + # The inlet to the CO2 capture unit the flue gas temperature is at 303.15 K + m.fs.co2_capture_unit.inlet.temperature.fix(303.15) # K + + @m.fs.co2_capture_unit.Constraint(m.fs.time, + doc="Pressure equality constraints") + def eq_pressure(b, t): + return ( + m.fs.boiler_fireside.flue_gas_outlet.pressure[t] == + m.fs.co2_capture_unit.inlet.pressure[t]) + + m.fs.co2_capture_unit.CO2_capture_rate.fix(0.9) # 90 % CO2 Capture + m.fs.co2_capture_unit.Pz_mol.fix(5) + m.fs.co2_capture_unit.lean_loading.fix(0.25) + + # Add a dummy heater block to extract steam for specific reformer duty + m.fs.ccs_reformer = Heater( + default={ + "dynamic": False, + "property_package": m.fs.prop_water, + "has_pressure_change": True + } + ) + # Add a splitter to take the main steam from boiler for CO2 Capture + m.fs.ccs_splitter = HelmSplitter( + default={ + "property_package": m.fs.prop_water + } + ) + # Add a mixer to add the ccs exhaust to condenser + m.fs.ccs_mix = HelmMixer( + default={ + "momentum_mixing_type": MomentumMixingType.minimize, + "inlet_list": ["bfpt", "ccs"], + "property_package": m.fs.prop_water, + } + ) + + # Add constraint to equate the co2 capture reformer duty with ccs heater + @m.fs.Constraint(m.fs.time, + doc="Reformer duty equality constraint") + def eq_reformerduty(b, t): + return ( + 0 == m.fs.ccs_reformer.heat_duty[t] + + m.fs.co2_capture_unit.reboiler_duty[t]*1e6) + + @m.fs.Constraint(m.fs.time) + def constraint_reformer_out_pressure(b, t): + return ( + b.ccs_reformer.control_volume.properties_out[t].pressure == + b.condenser_mix.main_state[t].pressure + ) + + @m.fs.Constraint(m.fs.time) + def constraint_reformer_out_enthalpy(b, t): + return ( + b.ccs_reformer.control_volume.properties_out[t].enth_mol == + b.ccs_reformer.control_volume.properties_out[t]. + enth_mol_sat_phase["Liq"] + ) + + # Deactivate the connection from boiler to Turbine 1 and add splitter + # Also, deactvate the bfpt outlet to condesner to add a mixer + # for ccs sexhaust steam# + for arc_s in [m.fs.boiler_to_turb1, m.fs.bfpt_to_condmix]: + arc_s.expanded_block.enth_mol_equality.deactivate() + arc_s.expanded_block.flow_mol_equality.deactivate() + arc_s.expanded_block.pressure_equality.deactivate() + + m.fs.boiler_to_ccsplitter = Arc( + source=m.fs.boiler.outlet, + destination=m.fs.ccs_splitter.inlet, + doc="Connection from boiler to ccs splitter" + ) + m.fs.ccsplitter_to_turb1 = Arc( + source=m.fs.ccs_splitter.outlet_1, + destination=m.fs.turbine[1].inlet, + doc="Connection from boiler to ccs splitter" + ) + m.fs.ccsplitter_to_capture = Arc( + source=m.fs.ccs_splitter.outlet_2, + destination=m.fs.ccs_reformer.inlet, + doc="Connection from boiler to ccs splitter" + ) + # add ccs exhaust steam to condenser + m.fs.bfpt_to_ccsmix = Arc( + source=m.fs.bfpt.outlet, + destination=m.fs.ccs_mix.bfpt + ) + m.fs.capture_to_ccsmix = Arc( + source=m.fs.ccs_reformer.outlet, + destination=m.fs.ccs_mix.ccs + ) + m.fs.ccsmix_to_condmix = Arc( + source=m.fs.ccs_mix.outlet, + destination=m.fs.condenser_mix.bfpt + ) + TransformationFactory("network.expand_arcs").apply_to(m.fs) + + return m + + +def initialize_usc_w_capture(m, fileinput=None, outlvl=idaeslog.NOTSET, + solver=None, optarg={}): + + iscale.calculate_scaling_factors(m) + + m.fs.boiler.heat_duty[0].fix() + m.fs.reheater[1].heat_duty[0].fix() + m.fs.reheater[2].heat_duty[0].fix() + + m.fs.boiler_fireside.initialize( + state_args_PA=m.fs.state_args_PA, + state_args_SA=m.fs.state_args_SA) + + m.fs.boiler.heat_duty[0].unfix() + m.fs.reheater[1].heat_duty[0].unfix() + m.fs.reheater[2].heat_duty[0].unfix() + + # The initialize method in CO2Capture unit model fixes inlet state + # and does not unfix it. So, to use the initialize method, the + # constraints are deactivated before initializing and activated later. + # The inlet state is unfixed before activating the constraints. + # TODO: update this section when the initialize method in CO2Capture model + # is updated. + m.fs.co2_capture_unit.eq_flow_mol_comp.deactivate() + m.fs.co2_capture_unit.eq_ar_flow_mol_comp.deactivate() + m.fs.co2_capture_unit.eq_pressure.deactivate() + m.fs.co2_capture_unit.inlet.pressure[:].fix(101325) # Pa (1 atm) + + m.fs.co2_capture_unit.inlet.flow_mol_comp[0, 'CO2'].fix(5328) + m.fs.co2_capture_unit.inlet.flow_mol_comp[0, 'H2O'].fix(3138) + m.fs.co2_capture_unit.inlet.flow_mol_comp[0, 'Ar'].fix(341) + m.fs.co2_capture_unit.inlet.flow_mol_comp[0, 'O2'].fix(1256) + m.fs.co2_capture_unit.inlet.flow_mol_comp[0, 'N2'].fix(28524) + + m.fs.co2_capture_unit.initialize(outlvl=idaeslog.INFO) + + m.fs.co2_capture_unit.inlet.pressure[:].unfix() # Pa (1 atm) + m.fs.co2_capture_unit.inlet.flow_mol_comp[:, 'CO2'].unfix() + m.fs.co2_capture_unit.inlet.flow_mol_comp[:, 'O2'].unfix() + m.fs.co2_capture_unit.inlet.flow_mol_comp[:, 'Ar'].unfix() + m.fs.co2_capture_unit.inlet.flow_mol_comp[:, 'H2O'].unfix() + m.fs.co2_capture_unit.inlet.flow_mol_comp[:, 'N2'].unfix() + m.fs.co2_capture_unit.eq_flow_mol_comp.activate() + m.fs.co2_capture_unit.eq_ar_flow_mol_comp.activate() + m.fs.co2_capture_unit.eq_pressure.activate() + + propagate_state(m.fs.boiler_to_ccsplitter) + m.fs.ccs_splitter.split_fraction[:, "outlet_2"].fix(0.24) + m.fs.ccs_splitter.initialize() + m.fs.ccs_splitter.split_fraction[:, "outlet_2"].unfix() + + propagate_state(m.fs.ccsplitter_to_capture) + m.fs.constraint_reformer_out_pressure.deactivate() + m.fs.eq_reformerduty.deactivate() + m.fs.constraint_reformer_out_enthalpy.deactivate() + m.fs.ccs_reformer.heat_duty[0].fix(-853190892.2399481) + m.fs.ccs_reformer.outlet.pressure[:].fix(6000) + m.fs.ccs_reformer.inlet.flow_mol.fix(14541.6) + m.fs.ccs_reformer.initialize() + + m.fs.eq_reformerduty.activate() + m.fs.constraint_reformer_out_pressure.activate() + m.fs.constraint_reformer_out_enthalpy.activate() + m.fs.ccs_reformer.outlet.pressure[:].unfix() + m.fs.ccs_reformer.heat_duty[0].unfix() + m.fs.ccs_reformer.inlet.flow_mol.unfix() + + propagate_state(m.fs.bfpt_to_ccsmix) + propagate_state(m.fs.capture_to_ccsmix) + m.fs.ccs_mix.initialize() + + propagate_state(m.fs.ccsmix_to_condmix) + m.fs.condenser_mix.initialize() + + # Increasing the flow through boiler to account for parasitic power + # required for CO2 capture + m.fs.boiler.inlet.flow_mol.fix(m.main_flow*2.015) + + res = solver.solve(m) + + print("Model Initialization = ", + res.solver.termination_condition) + print("************** USC model w Capture Initialized ***************") + + +def build_usc_w_ccs(solver): + + m = usc.build_plant_model() + usc.initialize(m) + m = add_fireside(m) + m = add_co2capture(m) + assert degrees_of_freedom(m) == 0 + + initialize_usc_w_capture(m, solver=solver) + assert degrees_of_freedom(m) == 0 + + return m + + +if __name__ == "__main__": + + optarg = { + "max_iter": 300, + "halt_on_ampl_error": "yes", + } + solver = get_solver("ipopt", optarg) + + m = build_usc_w_ccs(solver) + + results = solver.solve(m, tee=True) + print('Plant Power (MW) =', value(m.fs.plant_power_out[0])) diff --git a/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/gdp_mp/gdp_multiperiod_usc_pricetaker_unfixed_area.py b/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/gdp_mp/gdp_multiperiod_usc_pricetaker_unfixed_area.py new file mode 100644 index 000000000..671bfa847 --- /dev/null +++ b/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/gdp_mp/gdp_multiperiod_usc_pricetaker_unfixed_area.py @@ -0,0 +1,317 @@ +############################################################################## +# DISPATCHES was produced under the DOE Design Integration and Synthesis +# Platform to Advance Tightly Coupled Hybrid Energy Systems program (DISPATCHES), +# and is copyright (c) 2021 by the software owners: The Regents of the University +# of California, through Lawrence Berkeley National Laboratory, National +# Technology & Engineering Solutions of Sandia, LLC, Alliance for Sustainable +# Energy, LLC, Battelle Energy Alliance, LLC, University of Notre Dame du Lac, et +# al. All rights reserved. +# +# Please see the files COPYRIGHT.md and LICENSE.md for full copyright and license +# information, respectively. Both files are also available online at the URL: +# "https://github.com/gmlc-dispatches/dispatches". +# +############################################################################## + +"""This script uses the IDAES multiperiod class to create a steady +state GDP multiperiod model for the integrated ultra-supercritical +power plant GDP model. The purpose of this script is to create a GDP +multiperiod model that can be use for market analysis using a +pricetaker assumption. The integrated storage with ultra-supercritical +power plant model is used a steady state model for creating the +multiperiod model. + +""" + +import json + +import pyomo.environ as pyo +from pyomo.environ import units as pyunits +from pyomo.environ import (Constraint, NonNegativeReals, Var) + +from idaes.apps.grid_integration.multiperiod.multiperiod import MultiPeriodModel +from idaes.core.util.model_statistics import degrees_of_freedom +import idaes.core.util.scaling as iscale +from idaes.core.solvers.get_solver import get_solver + + +__author__ = "Soraya Rawlings" + +# Use GDP design for charge and discharge heat exchanger from 4-12 +# disjunctions model when True. If False, use the GDP design from 4-5 +# disjunctions model. +new_design = True + +if new_design: + print('>>>>> Solving for new storage design') + import usc_storage_gdp_mp_unfixed_area_new_storage_design as usc_gdp + # Add design data from .json file + data_path = 'uscp_design_data_new_storage_design.json' +else: + print('>>>>> Solving for original storage design') + import usc_storage_gdp_mp_unfixed_area as usc_gdp + # Add design data from .json file + data_path = 'uscp_design_data.json' + + +with open(data_path) as design_data: + design_data_dict = json.load(design_data) + +min_power = design_data_dict["plant_min_power"] # in MW +max_power = design_data_dict["plant_max_power"] # in MW + + +def create_ss_model(): + + optarg = { + "max_iter": 300, + # "halt_on_ampl_error": "yes", + } + solver = get_solver('ipopt', optarg) + + # Add options to model + deact_arcs_after_init = True # needed for GDP model + method = "with_efficiency" # adds boiler and cycle efficiencies + load_init_file = False + + # Add data from .json data file + cold_salt_temp = design_data_dict["cold_salt_temperature"] # in K + min_storage_heat_duty = design_data_dict["min_storage_heat_duty"] # in MW + max_storage_heat_duty = design_data_dict["max_storage_heat_duty"] # in MW + path_init_file = design_data_dict["gdp_init_file_path"] + + m = pyo.ConcreteModel() + m.usc = usc_gdp.main(method=method, + max_power=max_power, + load_init_file=load_init_file, + path_init_file=path_init_file, + deact_arcs_after_init=deact_arcs_after_init, + solver=solver) + + + # Set bounds for power produced by the plant alone + m.usc.fs.plant_min_power_eq = pyo.Constraint( + expr=m.usc.fs.plant_power_out[0] >= min_power + ) + m.usc.fs.plant_max_power_eq = pyo.Constraint( + expr=m.usc.fs.plant_power_out[0] <= max_power + ) + + # Set bounds in charge and discharge heat exchangers + charge_mode = m.usc.fs.charge_mode_disjunct + discharge_mode = m.usc.fs.discharge_mode_disjunct + hxc_heat_duty = (1e-6) * (pyunits.MW / pyunits.W) * charge_mode.hxc.heat_duty[0] + hxd_heat_duty = (1e-6) * (pyunits.MW / pyunits.W) * discharge_mode.hxd.heat_duty[0] + m.usc.fs.charge_mode_disjunct.storage_heat_duty_lb = pyo.Constraint( + expr=hxc_heat_duty >= min_storage_heat_duty + 40 + ) + m.usc.fs.discharge_mode_disjunct.storage_heat_duty_lb = pyo.Constraint( + expr=hxd_heat_duty >= min_storage_heat_duty + 40 + ) + m.usc.fs.charge_mode_disjunct.storage_heat_duty_ub = pyo.Constraint( + expr=hxc_heat_duty <= max_storage_heat_duty + ) + m.usc.fs.discharge_mode_disjunct.storage_heat_duty_ub = pyo.Constraint( + expr=hxd_heat_duty <= max_storage_heat_duty * (1 - 0.01) + ) + + # Unfix boiler data fixed during initialization + m.usc.fs.boiler.inlet.flow_mol[0].unfix() + + if not deact_arcs_after_init: + m.usc.fs.turbine[3].inlet.unfix() + m.usc.fs.fwh[8].tube_inlet.unfix() + + # Unfix global variables fixed during initialization + m.usc.fs.hx_pump_work.unfix() + m.usc.fs.discharge_turbine_work.unfix() + + # Unfix storage system data. Note that the area of the charge and + # discharge heat exchangers is unfixed and calculated during the + # solution of the model. + # m.usc.fs.fuel_cost.unfix() + m.usc.fs.charge_mode_disjunct.ess_charge_split.split_fraction[0, "to_hxc"].unfix() + m.usc.fs.discharge_mode_disjunct.ess_discharge_split.split_fraction[0, "to_hxd"].unfix() + for salt_hxc in [charge_mode.hxc]: + salt_hxc.shell_inlet.unfix() + salt_hxc.tube_inlet.flow_mass.unfix() + salt_hxc.area.unfix() + + for salt_hxd in [discharge_mode.hxd]: + salt_hxd.tube_inlet.unfix() + salt_hxd.shell_inlet.flow_mass.unfix() + salt_hxd.area.unfix() + + if not new_design: + for unit in [charge_mode.cooler]: + unit.inlet.unfix() + m.usc.fs.charge_mode_disjunct.cooler.outlet.enth_mol[0].unfix() + + # Fix molten salt cold temperature in the discharge heat exchanger. + # charge_mode.hxc.area.fix(hxc_area) + # charge_mode.hxc.outlet_2.temperature[0].fix(hot_salt_temp) + # discharge_mode.hxd.area.fix(hxd_area) + # discharge_mode.hxd.shell_inlet.temperature[0].fix(hot_salt_temp) + discharge_mode.hxd.shell_outlet.temperature[0].fix(cold_salt_temp) + + return m + + +def create_mp_block(): + """Create ultra-supercritical plant model and initialization for each + time period + + """ + + print('>>> Creating USC model and initialization for each time period') + + m = create_ss_model() + b1 = m.usc + + # print('DOFs within mp create 1 =', degrees_of_freedom(m)) + + # Add data for .json data file + ramp_rate = design_data_dict["ramp_rate"] + factor_mton = design_data_dict["factor_mton"] # factor for conversion kg to metric ton + max_power_total = 700 # random high value + + # Add coupling variables + b1.previous_power = pyo.Var( + domain=NonNegativeReals, + initialize=400, + bounds=(min_power, max_power_total), + doc="Previous period power in MW" + ) + + max_inventory = 1e7 * factor_mton # in mton + min_inventory = 75000 * factor_mton # in mton + max_salt_amount = design_data_dict["max_salt_amount"] * factor_mton # in mton + tank_max = max_salt_amount + + b1.previous_salt_inventory_hot = pyo.Var( + domain=NonNegativeReals, + initialize=min_inventory, + bounds=(0, max_inventory), + doc="Hot salt at the beginning of the period in mton" + ) + b1.salt_inventory_hot = pyo.Var( + domain=NonNegativeReals, + initialize=min_inventory, + bounds=(0, max_inventory), + doc="Hot salt inventory at the end of the period in mton" + ) + b1.previous_salt_inventory_cold = pyo.Var( + domain=NonNegativeReals, + initialize=tank_max - min_inventory, + bounds=(0, max_inventory), + doc="Cold salt at the beginning of the period in mton" + ) + b1.salt_inventory_cold = pyo.Var( + domain=NonNegativeReals, + initialize=tank_max - min_inventory, + bounds=(0, max_inventory), + doc="Cold salt inventory at the end of the in mton" + ) + + @b1.fs.Constraint(doc="Plant ramping down constraint") + def constraint_ramp_down(b): + return ( + b1.previous_power - ramp_rate <= + b.plant_power_out[0]) + + @b1.fs.Constraint(doc="Plant ramping up constraint") + def constraint_ramp_up(b): + return ( + b1.previous_power + ramp_rate >= + b.plant_power_out[0]) + + @b1.fs.Constraint(doc="Inventory balance at the end of the time period") + def constraint_salt_inventory_hot(b): + return ( + 1e-3 * b1.salt_inventory_hot == ( + b1.previous_salt_inventory_hot + + (3600 * b.salt_storage) * factor_mton # in mton + ) * 1e-3 + ) + + @b1.fs.Constraint(doc="Maximum salt inventory at any time") + def constraint_salt_inventory(b): + return ( + 1e-3 * b.salt_amount == ( + b1.salt_inventory_hot + + b1.salt_inventory_cold + ) * 1e-3 + ) + + # Scale variables and constraints + # iscale.set_scaling_factor(b1.fs.fuel_cost, 1e-3) + # iscale.set_scaling_factor(b1.fs.plant_fixed_operating_cost, 1e-3) + # iscale.set_scaling_factor(b1.fs.plant_variable_operating_cost, 1e-3) + # # iscale.set_scaling_factor(b1.fs.plant_capital_cost, 1e-3) + + iscale.set_scaling_factor(b1.fs.salt_amount, 1e-3) + iscale.set_scaling_factor(b1.salt_inventory_hot, 1e-3) + iscale.set_scaling_factor(b1.salt_inventory_cold, 1e-3) + iscale.set_scaling_factor(b1.previous_salt_inventory_hot, 1e-3) + iscale.set_scaling_factor(b1.previous_salt_inventory_cold, 1e-3) + # iscale.set_scaling_factor(b1.fs.constraint_salt_inventory_hot, 1e-3) + + # iscale.set_scaling_factor(b1.fs.charge_mode_disjunct.capital_cost, 1e-3) + # iscale.set_scaling_factor(b1.fs.discharge_mode_disjunct.capital_cost, 1e-3) + # iscale.set_scaling_factor(b1.fs.storage_capital_cost, 1e-3) + + # Calculate scaling factors + iscale.calculate_scaling_factors(m) + + return m + + +# The tank level and power output are linked between contiguous time +# periods. +def get_usc_link_variable_pairs(b1, b2): + """ + b1: current time block + b2: next time block + """ + return [ + (b1.usc.salt_inventory_hot, b2.usc.previous_salt_inventory_hot), + (b1.usc.fs.plant_power_out[0], b2.usc.previous_power) + ] + + +# The tank level at the end of the last period must be the same as the +# level at the beginning of the first period and power output must be +# the same as the initial tank level. +def get_usc_periodic_variable_pairs(b1, b2): + """ + b1: final time block + b2: first time block + """ + + return [(b1.usc.salt_inventory_hot, b2.usc.previous_salt_inventory_hot)] + + +# Create the multiperiod model object. You can pass arguments to your +# "process_model_func" for each time period using a dict of dicts as +# shown here. In this case, it is setting up empty dictionaries for +# each time period. +def create_gdp_multiperiod_usc_model(n_time_points=None, pmin=None, pmax=None): + """Create a multiperiod usc_mp cycle object. This object contains a + Pyomo model with a block for each time instance + + n_time_points: Number of time blocks to create + + """ + + multiperiod_usc = MultiPeriodModel( + n_time_points=n_time_points, + process_model_func=create_mp_block, + linking_variable_func=get_usc_link_variable_pairs, + periodic_variable_func=get_usc_periodic_variable_pairs + ) + + # If you have no arguments, you don't actually need to pass in + # anything. NOTE: building the model will initialize each time block + multiperiod_usc.build_multi_period_model() + + return multiperiod_usc diff --git a/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/gdp_mp/pricetaker_with_gdp_multiperiod_integrated_storage_usc.py b/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/gdp_mp/pricetaker_with_gdp_multiperiod_integrated_storage_usc.py new file mode 100644 index 000000000..05baf6fea --- /dev/null +++ b/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/gdp_mp/pricetaker_with_gdp_multiperiod_integrated_storage_usc.py @@ -0,0 +1,1080 @@ +############################################################################## +# DISPATCHES was produced under the DOE Design Integration and Synthesis +# Platform to Advance Tightly Coupled Hybrid Energy Systems program (DISPATCHES), +# and is copyright (c) 2021 by the software owners: The Regents of the University +# of California, through Lawrence Berkeley National Laboratory, National +# Technology & Engineering Solutions of Sandia, LLC, Alliance for Sustainable +# Energy, LLC, Battelle Energy Alliance, LLC, University of Notre Dame du Lac, et +# al. All rights reserved. +# +# Please see the files COPYRIGHT.md and LICENSE.md for full copyright and license +# information, respectively. Both files are also available online at the URL: +# "https://github.com/gmlc-dispatches/dispatches". +# +############################################################################## + +"""This script uses the multiperiod model in the GDP integrated +ultra-supercritical power plant model with energy storage and performs +market analysis using the pricetaker assumption. The electricity +prices or LMP (locational marginal prices) are assumed to not +change. The prices used in this study are obtained from a synthetic +database. + +""" + +__author__ = "Soraya Rawlings" + +import csv +import json +import os +import copy +import numpy as np +import logging + +import pyomo.environ as pyo +from pyomo.environ import (Constraint, Expression, + Var, Objective, + SolverFactory, + value, RangeSet, maximize) +from pyomo.contrib.fbbt.fbbt import _prop_bnds_root_to_leaf_map +from pyomo.core.expr.numeric_expr import ExternalFunctionExpression +from pyomo.util.infeasible import (log_infeasible_constraints, + log_close_to_bounds) + +from idaes.core.solvers.get_solver import get_solver + +from gdp_multiperiod_usc_pricetaker_unfixed_area import create_gdp_multiperiod_usc_model + +# For plots +from matplotlib import pyplot as plt +import matplotlib +matplotlib.rc('font', size=24) +font = {'size':16} +plt.rc('axes', titlesize=24) +plt.rc('font', **font) + + +def _get_lmp(hours_per_day=None, nhours=None): + + # Select lmp source data and scaling factor according to that + use_rts_data = False + if use_rts_data: + use_mod_rts_data = False + else: + use_mod_rts_data = True + + nhigh_lmp = 0 + nlow_lmp = 0 + if use_rts_data: + print('>> Using RTS lmp data') + with open('rts_results_all_prices_base_case.npy', 'rb') as f: + dispatch = np.load(f) + price = np.load(f) + lmp = price[0:nhours].tolist() + elif use_mod_rts_data: + # price = [22.9684, 21.1168, 20.4, 20.419, 0, 0, 200, 200] + price = [ + # 22.9684, 21.1168, 20.4, 20.419, + 52.9684, 21.1168, 10.4, 5.419, + # 20.419, 21.2877, 23.07, 25, + # 18.4634, 0, 0, 0, + 0, 0, 0, 0, + # 19.0342, 23.07, 200, 200, + 200, 200, 200, 200, + ] + max_lmp = max(price) + min_lmp = min(price) + for i in price: + if i >= (max_lmp - 5): + nhigh_lmp += 1 + elif i <= (min_lmp + 5): + nlow_lmp += 1 + print('** {} lmp prices ($/MWh) between [max_lmp, max_lmp - 5]: [{}, {}]'.format( + nhigh_lmp, max_lmp, max_lmp - 5)) + print(' {} lmp prices ($/MWh) between [min_lmp, min_lmp + 5]: [{}, {}]'.format( + nlow_lmp, min_lmp, min_lmp + 5)) + print() + + if len(price) < hours_per_day: + print() + print('**ERROR: I need more LMP data!') + raise Exception + lmp = price + else: + print('>> Using NREL lmp data') + price = np.load("nrel_scenario_average_hourly.npy") + # print(lmp) + + return lmp, nhigh_lmp, nlow_lmp + + +def print_model(solver_obj, + mdl, + mdl_data, + csvfile, + lmp=None, + nweeks=None, + nhours=None, + n_time_points=None): + + # m_iter = mdl_data.master_iteration + m_iter = solver_obj.iteration + + mdl.disjunction1_selection = {} + hot_tank_level_iter = [] + cold_tank_level_iter = [] + boiler_heat_duty_iter = [] + hxc_duty_iter = [] + hxd_duty_iter = [] + + print(' ___________________________________________') + print(' Schedule') + print(' Obj ($): {:.4f}'.format( + (value(mdl.obj) / scaling_cost) / scaling_obj)) + print(' Cycles: {} charge, {} discharge, {} no storage'.format( + sum(mdl.blocks[blk].process.usc.fs.charge_mode_disjunct.binary_indicator_var.value + for blk in mdl.blocks), + sum(mdl.blocks[blk].process.usc.fs.discharge_mode_disjunct.binary_indicator_var.value + for blk in mdl.blocks), + sum(mdl.blocks[blk].process.usc.fs.no_storage_mode_disjunct.binary_indicator_var.value + for blk in mdl.blocks))) + + for blk in mdl.blocks: + blk_process_charge = mdl.blocks[blk].process.usc.fs.charge_mode_disjunct + blk_process_discharge = mdl.blocks[blk].process.usc.fs.discharge_mode_disjunct + blk_process_no_storage = mdl.blocks[blk].process.usc.fs.no_storage_mode_disjunct + if blk_process_charge.binary_indicator_var.value == 1: + print(' Period {}: Charge (HXC: {:.2f} MW, {:.2f} m2)'.format( + blk, + value(blk_process_charge.hxc.heat_duty[0]) * 1e-6, + value(blk_process_charge.hxc.area))) + if blk_process_discharge.binary_indicator_var.value == 1: + print(' Period {}: Discharge (HXD: {:.2f} MW, {:.2f} m2)'.format( + blk, + value(blk_process_discharge.hxd.heat_duty[0]) * 1e-6, + value(blk_process_discharge.hxd.area))) + if blk_process_no_storage.binary_indicator_var.value == 1: + print(' Period {}: No storage'.format(blk)) + + print() + for blk in mdl.blocks: + blk_process = mdl.blocks[blk].process.usc + blk_process_charge = mdl.blocks[blk].process.usc.fs.charge_mode_disjunct + blk_process_discharge = mdl.blocks[blk].process.usc.fs.discharge_mode_disjunct + blk_process_no_storage = mdl.blocks[blk].process.usc.fs.no_storage_mode_disjunct + print(' Time period {} '.format(blk+1)) + print(' Charge: {}'.format( + blk_process_charge.binary_indicator_var.value)) + print(' Discharge: {}'.format( + blk_process_discharge.binary_indicator_var.value)) + print(' No storage: {}'.format( + blk_process_no_storage.binary_indicator_var.value)) + if blk_process_charge.binary_indicator_var.value == 1: + mdl.disjunction1_selection[m_iter] = 'Charge' + print(' HXC area (m2): {:.4f}'.format( + value(blk_process_charge.hxc.area))) + print(' HXC Duty (MW): {:.4f}'.format( + value(blk_process_charge.hxc.heat_duty[0]) * 1e-6)) + print(' HXC Delta temperature in/out (K): {:.4f}/{:.4f}'.format( + value(blk_process_charge.hxc.delta_temperature_in[0]), + value(blk_process_charge.hxc.delta_temperature_out[0]))) + print(' HXC salt temperature (K) in/out: {:.4f}/{:.4f}'.format( + value(blk_process_charge.hxc.tube_inlet.temperature[0]), + value(blk_process_charge.hxc.tube_outlet.temperature[0]))) + print(' Salt flow HXC (kg/s): {:.4f}'.format( + value(blk_process_charge.hxc.tube_outlet.flow_mass[0]))) + print(' HXC steam temperature (K) in/out: {:.4f}/{:.4f}'.format( + value(blk_process_charge.hxc.hot_side.properties_in[0].temperature), + value(blk_process_charge.hxc.hot_side.properties_out[0].temperature) + )) + print(' Steam flow HXC (mol/s): {:.4f}'.format( + value(blk_process_charge.hxc.shell_outlet.flow_mol[0]))) + if not new_design: + print(' Cooling heat duty (MW): {:.4f}'.format( + value(blk_process_charge.cooler.heat_duty[0]) * 1e-6)) + elif blk_process_discharge.binary_indicator_var.value == 1: + mdl.disjunction1_selection[m_iter] = 'Discharge' + print(' HXD area (m2): {:.4f}'.format( + value(blk_process_discharge.hxd.area))) + print(' HXD Duty (MW): {:.4f}'.format( + value(blk_process_discharge.hxd.heat_duty[0]) * 1e-6)) + print(' HXD Delta temperature in/out (K): {:.4f}/{:.4f}'.format( + value(blk_process_discharge.hxd.delta_temperature_in[0]), + value(blk_process_discharge.hxd.delta_temperature_out[0]))) + print(' HXD salt temperature (K) in/out: {:.4f}/{:.4f}'.format( + value(blk_process_discharge.hxd.shell_inlet.temperature[0]), + value(blk_process_discharge.hxd.shell_outlet.temperature[0]))) + print(' Salt flow HXD (kg/s): {:.4f}'.format( + value(blk_process_discharge.hxd.shell_outlet.flow_mass[0]))) + print(' HXD steam temperature (K) in/out: {:.4f}/{:.4f}'.format( + value(blk_process_discharge.hxd.cold_side.properties_in[0].temperature), + value(blk_process_discharge.hxd.cold_side.properties_out[0].temperature) + )) + print(' Steam flow HXD (mol/s): {:.4f}'.format( + value(blk_process_discharge.hxd.tube_outlet.flow_mol[0]))) + print(' ES turbine work (MW): {:.4f}'.format( + value(blk_process_discharge.es_turbine.work_mechanical[0]) * -1e-6)) + elif blk_process_no_storage.binary_indicator_var.value == 1: + mdl.disjunction1_selection[m_iter] = 'No_storage' + print(' Salt flow (kg/s): {:.4f}'.format( + value(blk_process.fs.salt_storage))) + else: + print(' No other operation mode is available!') + print(' Net power: {:.4f}'.format(value(blk_process.fs.net_power))) + print(' Coal heat duty: {:.4f}'.format(value(blk_process.fs.coal_heat_duty))) + print(' Discharge turbine work (MW): {:.4f}'.format( + value(blk_process.fs.discharge_turbine_work))) + if not new_design: + print(' Cooler heat duty: {:.4f}'.format( + value(blk_process.fs.cooler_heat_duty))) + print(' Efficiencies (%): boiler: {:.4f}, cycle: {:.4f}'.format( + value(blk_process.fs.boiler_efficiency) * 100, + value(blk_process.fs.cycle_efficiency) * 100)) + print(' Boiler heat duty: {:.4f}'.format( + value(blk_process.fs.boiler.heat_duty[0]) * 1e-6)) + print(' Boiler flow mol (mol/s): {:.4f}'.format( + value(blk_process.fs.boiler.outlet.flow_mol[0]))) + print(' Salt to storage (kg/s) [mton]: {:.4f} [{:.4f}]'.format( + value(blk_process.fs.salt_storage), + value(blk_process.fs.salt_storage) * 3600 * factor_mton)) + print(' Hot salt inventory (mton): {:.4f}, previous: {:.4f}'.format( + value(blk_process.salt_inventory_hot), + value(blk_process.previous_salt_inventory_hot))) + print(' Makeup water flow (mol/s): {:.4f}'.format( + value(blk_process.fs.condenser_mix.makeup.flow_mol[0]))) + # print(' Revenue (M$/year): {:.4f}'.format( + # value(mdl.blocks[blk].process.revenue))) + # print(' Total op cost ($/h): {:.4f}'.format( + # value(mdl.blocks[blk].process.total_cost))) + print(' Storage cost ($/h): {:.4f}'.format( + value(blk_process.fs.storage_capital_cost))) + print(' Fuel cost ($/h): {:.4f}'.format( + value(blk_process.fs.fuel_cost))) + print(' Plant fixed op cost ($/h): {:.4f}'.format( + value(blk_process.fs.plant_fixed_operating_cost))) + print(' Plant variable op cost ($/h): {:.4f}'.format( + value(blk_process.fs.plant_variable_operating_cost))) + print() + + # Save data for each NLP subproblem and plot results + mdl.objective_val = {} + mdl.boiler_heat_duty_val = {} + mdl.discharge_turbine_work_val = {} + mdl.hxc_area_val = {} + mdl.hxd_area_val = {} + mdl.hot_salt_temp_val = {} + mdl.objective_val[m_iter] = (value(mdl.obj) / scaling_cost) / scaling_obj + mdl.period = blk + mdl.boiler_heat_duty_val[m_iter] = 1e-6 * value(blk_process.fs.boiler.heat_duty[0]) + mdl.discharge_turbine_work_val[m_iter] = value(blk_process.fs.discharge_turbine_work) + mdl.hxc_area_val[m_iter] = value(blk_process_charge.hxc.area) + mdl.hxd_area_val[m_iter] = value(blk_process_discharge.hxd.area) + mdl.hot_salt_temp_val[m_iter] = value(blk_process_charge.hxc.tube_outlet.temperature[0]) + + if save_results: + writer = csv.writer(csvfile) + writer.writerow( + (m_iter, + mdl.period, + mdl.disjunction1_selection[m_iter], + mdl.boiler_heat_duty_val[m_iter], + mdl.discharge_turbine_work_val[m_iter], + mdl.hxc_area_val[m_iter], + mdl.hxd_area_val[m_iter], + mdl.hot_salt_temp_val[m_iter], + mdl.objective_val[m_iter]) + ) + csvfile.flush() + + print(' ___________________________________________') + + hot_tank_level_iter.append( + [(pyo.value(mdl.blocks[i].process.usc.salt_inventory_hot)) # in mton + for i in range(n_time_points)]) + cold_tank_level_iter.append( + [(pyo.value(mdl.blocks[i].process.usc.salt_inventory_cold)) # in mton + for i in range(n_time_points)]) + boiler_heat_duty_iter.append([pyo.value(mdl.blocks[i].process.usc.fs.boiler.heat_duty[0]) * 1e-6 + for i in range(n_time_points)]) + hxc_duty_iter.append([pyo.value(mdl.blocks[i].process.usc.fs.charge_mode_disjunct.indicator_var) * + pyo.value(mdl.blocks[i].process.usc.fs.charge_mode_disjunct.hxc.heat_duty[0]) * 1e-6 + for i in range(n_time_points)]) + hxd_duty_iter.append([pyo.value(mdl.blocks[i].process.usc.fs.discharge_mode_disjunct.indicator_var) * + pyo.value(mdl.blocks[i].process.usc.fs.discharge_mode_disjunct.hxd.heat_duty[0]) * 1e-6 + for i in range(n_time_points)]) + + # Save list of colors to be used in plots + c = ['darkred', 'midnightblue', 'tab:green', 'k', 'gray'] + + # Save and convert array to list to include values at time zero + hours = np.arange(n_time_points * nweeks) + lmp_array = np.asarray(lmp[0:n_time_points]) + hot_tank_array = np.asarray(hot_tank_level_iter[0:nweeks]).flatten() + cold_tank_array = np.asarray(cold_tank_level_iter[0:nweeks]).flatten() + hot_tank_array0 = value(mdl.blocks[0].process.usc.previous_salt_inventory_hot) + cold_tank_array0 = value(mdl.blocks[0].process.usc.previous_salt_inventory_cold) + hours_list = hours.tolist() + [nhours] + hot_tank_list = [hot_tank_array0] + hot_tank_array.tolist() + cold_tank_list = [cold_tank_array0] + cold_tank_array.tolist() + hxc_array = np.asarray(hxc_duty_iter[0:nweeks]).flatten() + hxd_array = np.asarray(hxd_duty_iter[0:nweeks]).flatten() + hxc_duty_list = [0] + hxc_array.tolist() + hxd_duty_list = [0] + hxd_array.tolist() + boiler_heat_duty_array = np.asarray(boiler_heat_duty_iter[0:nweeks]).flatten() + boiler_heat_duty_list = [0] + boiler_heat_duty_array.tolist() + + # Plot salt tank profiles and heat duty of boiler and storage heat + # exchangers at each master iteration. + fig1, ax1 = plt.subplots(figsize=(12, 8)) + ax1.set_xlabel('Time Period (hr)') + ax1.set_ylabel('Salt Amount (metric ton)', color=c[3]) + ax1.spines["top"].set_visible(False) + ax1.spines["right"].set_visible(False) + ax1.grid(linestyle=':', which='both', color=c[4], alpha=0.40) + # ax1.set_ylim((0, 7000)) + plt.axhline(tank_max, ls=':', lw=1.5, color=c[4]) + ax1.step(hours_list, hot_tank_list, marker='o', ms=8, lw=1.5, color=c[0], alpha=0.85, + label='Hot Tank') + ax1.fill_between(hours_list, hot_tank_list, step="pre", color=c[0], alpha=0.35) + ax1.step(hours_list, cold_tank_list, marker='o', ms=8, lw=1.5, color=c[1], alpha=0.65, + label='Cold Tank') + ax1.fill_between(hours_list, cold_tank_list, step="pre", color=c[1], alpha=0.10) + ax1.legend(loc="upper left", frameon=False) + ax1.tick_params(axis='y') + ax1.set_xticks(np.arange(0, n_time_points*nweeks + 1, step=1)) + ax2 = ax1.twinx() + ax2.set_ylim((-25, 225)) + ax2.set_ylabel('Locational Marginal Price ($/MWh)', color=c[2]) + ax2.step([x + 1 for x in hours], lmp_array, marker='o', ms=8, alpha=0.5, ls='-', lw=1.5, color=c[2]) + ax2.tick_params(axis='y', labelcolor=c[2]) + plt.savefig('results/gdp_mp_unfixed_area_{}h/salt_tank_level_master_iter{}.png'.format( + nhours, m_iter)) + plt.close(fig1) + + fig2, ax3 = plt.subplots(figsize=(12, 8)) + ax3.set_xlabel('Time Period (hr)') + ax3.set_ylabel('Heat Duty (MW)', color=c[3]) + ax3.spines["top"].set_visible(False) + ax3.spines["right"].set_visible(False) + ax3.grid(linestyle=':', which='both', color=c[4], alpha=0.40) + ax3.set_ylim((-25, 825)) + ax3.step(hours_list, boiler_heat_duty_list, marker='o', ms=8, ls='-', lw=1.5, alpha=0.55, color=c[3], + label='Boiler') + ax3.fill_between(hours_list, boiler_heat_duty_list, step="pre", color=c[3], alpha=0.15) + plt.axhline(max_storage_heat_duty, ls=':', lw=1.5, color=c[4]) + plt.axhline(min_storage_heat_duty, ls=':', lw=1.5, color=c[4]) + ax3.step(hours_list, hxc_duty_list, marker='o', ms=8, color=c[0], alpha=0.75, + label='Charge') + ax3.fill_between(hours_list, hxc_duty_list, step="pre", color=c[0], alpha=0.25) + ax3.step(hours_list, hxd_duty_list, marker='o', ms=8, color=c[1], alpha=0.75, + label='Discharge') + ax3.fill_between(hours_list, hxd_duty_list, step="pre", color=c[1], alpha=0.25) + ax3.legend(loc="center right", frameon=False) + ax3.tick_params(axis='y') + ax3.set_xticks(np.arange(0, n_time_points*nweeks + 1, step=1)) + ax4 = ax3.twinx() + ax4.set_ylim((-25, 225)) + ax4.set_ylabel('Locational Marginal Price ($/MWh)', color=c[2]) + ax4.step([x + 1 for x in hours], lmp_array, marker='o', ms=8, alpha=0.7, ls='-', lw=1.5, color=c[2]) + ax4.tick_params(axis='y', labelcolor=c[2]) + plt.savefig('results/gdp_mp_unfixed_area_{}h/heat_duty_master_iter{}.png'.format( + nhours, m_iter)) + plt.close(fig2) + + log_close_to_bounds(mdl) + log_infeasible_constraints(mdl) + + +def create_csv_header(nhours): + + csvfile = open('results/gdp_mp_unfixed_area_{}h/results_subnlps_master_iter.csv'.format(nhours), + 'w', newline='') + writer = csv.writer(csvfile) + writer.writerow( + ('Iteration', + 'TimePeriod(hr)', + 'OperationMode', + 'BoilerHeatDuty(MW)', + 'DischargeWork(MW)', + 'HXCArea', + 'HXDArea', + 'SaltHotTemp', + 'Obj($/hr)') + ) + return csvfile + + +def run_pricetaker_analysis(hours_per_day=None, + nhours=None, + ndays=None, + nweeks=None, + n_time_points=None, + pmin=None, + tank_status=None, + tank_min=None, + tank_max=None): + + # Get LMP data + lmp, nhigh_lmp, nlow_lmp = _get_lmp(hours_per_day=hours_per_day, nhours=nhours) + + # Create the multiperiod model object. You can pass arguments to + # the "process_model_func" for each time period using a dict of + # dicts as shown here. In this case, it is setting up empty + # dictionaries for each time period. + gdp_multiperiod_usc = create_gdp_multiperiod_usc_model( + n_time_points=n_time_points, + pmin=pmin, + pmax=None + ) + + # Retrieve pyomo model and active process blocks + m = gdp_multiperiod_usc.pyomo_model + blks = gdp_multiperiod_usc.get_active_process_blocks() + + ################################################################## + # Add nonanticipativity constraints + ################################################################## + m.hours_set = RangeSet(0, nhours - 1) + m.hours_set2 = RangeSet(0, nhours - 2) + + # Add constraint to save calculate charge and discharge area in a + # global variable + @m.Constraint(m.hours_set2) + def constraint_charge_previous_area(b, h): + return ( + b.blocks[h + 1].process.usc.fs.charge_area == + b.blocks[h].process.usc.fs.charge_area + ) + + @m.Constraint(m.hours_set2) + def constraint_discharge_previous_area(b, h): + return ( + b.blocks[h + 1].process.usc.fs.discharge_area == + b.blocks[h].process.usc.fs.discharge_area + ) + + # @m.Constraint(m.hours_set) + # def constraint_charge_area_lb(b, h): + # return ( + # b.blocks[h].process.usc.fs.charge_area >= 1000 + # ) + # @m.Constraint(m.hours_set) + # def constraint_discharge_area_lb(b, h): + # return ( + # b.blocks[h].process.usc.fs.discharge_area >= 1000 + # ) + + # Declare constraint to ensure that the discharge heat exchanger + # has the same temperature for the hot salt than the one obtained + # during charge cycle. + @m.Constraint(m.hours_set) + def constraint_discharge_hot_salt_temperature(b, h): + return ( + b.blocks[h].process.usc.fs.discharge_mode_disjunct.hxd.shell_inlet.temperature[0] == + b.blocks[h].process.usc.fs.hot_salt_temp + ) + + ################################################################## + # Add logical constraints + ################################################################## + discharge_min_salt = 379 # in mton, 8MW min es turbine + # discharge_min_salt = 1 # in mton, 8MW min es turbine + min_hot_salt = 2000 + @m.Constraint(m.hours_set) + def _constraint_no_discharge_with_min_hot_tank(b, h): + if h <= 2: + a = min_hot_salt + else: + a = discharge_min_salt + return ( + (b.blocks[h].process.usc.fs.discharge_mode_disjunct.binary_indicator_var * a) <= + blks[h].usc.previous_salt_inventory_hot + ) + + # Add a minimum number of charge, discharge, and no storage + # operation modes. Note: For charge, the minimum number of cycles + # is based on the number of low lmp values obtained above, while + # for discharge, the minimum number of cycles is based on the + # number of high lmp values. + @m.Constraint() + def _constraint_min_charge(b): + return sum(b.blocks[h].process.usc.fs.charge_mode_disjunct.binary_indicator_var + for h in b.hours_set) >= nlow_lmp + @m.Constraint() + def _constraint_min_discharge(b): + return sum(b.blocks[h].process.usc.fs.discharge_mode_disjunct.binary_indicator_var + for h in b.hours_set) >= nhigh_lmp - 1 + # @m.Constraint() + # def _constraint_min_no_storage(b): + # return sum(b.blocks[h].process.usc.fs.no_storage_mode_disjunct.binary_indicator_var + # for h in b.hours_set) >= 1 + + + # if tank_status == "hot_empty": + # # Add logical constraint to help reduce the alternatives to explore + # # when periodic behavior is expected + # @m.Constraint() + # def _logic_constraint_no_discharge_time0(b): + # return b.blocks[0].process.usc.fs.discharge_mode_disjunct.binary_indicator_var == 0 + # @m.Constraint() + # def _logic_constraint_no_charge_at_timen(b): + # return ( + # (b.blocks[0].process.usc.fs.charge_mode_disjunct.binary_indicator_var + # + b.blocks[nhours - 1].process.usc.fs.charge_mode_disjunct.binary_indicator_var) <= 1 + # ) + # # @m.Constraint() + # # def _logic_constraint_no_storage_time0_no_charge_at_timen(m): + # # return ( + # # (m.blocks[0].process.usc.fs.no_storage_mode_disjunct.binary_indicator_var + # # + m.blocks[nhours - 1].process.usc.fs.charge_mode_disjunct.binary_indicator_var) <= 1 + # # ) + # elif tank_status == "hot_full": + # @m.Constraint() + # def _logic_constraint_no_discharge_at_timen(m): + # return ( + # (m.blocks[0].process.usc.fs.discharge_mode_disjunct.binary_indicator_var + # + m.blocks[nhours - 1].process.usc.fs.discharge_mode_disjunct.binary_indicator_var) <= 1 + # ) + + # Add lmp market data for each block + count = 0 + for blk in blks: + blk.revenue = pyo.Expression( + expr=(lmp[count] * blk.usc.fs.net_power) + ) + + # # Add expression to calculate total operating costs. Note that + # # these costs are scaled using a scaling cost factor + # blk.total_cost = pyo.Expression( + # expr=( + # blk.usc.fs.fuel_cost + + # blk.usc.fs.plant_fixed_operating_cost + + # blk.usc.fs.plant_variable_operating_cost + + # blk.usc.fs.storage_capital_cost + # ) + # ) + + # # Declare expression to calculate the total profit. All the + # # costs are in $ per hour + # blk.profit = pyo.Expression( + # expr=( + # blk.revenue - + # blk.total_cost + # # (lmp[count] * blk.usc.fs.net_power) - + # # ( + # # blk.usc.fs.fuel_cost + + # # blk.usc.fs.plant_fixed_operating_cost + + # # blk.usc.fs.plant_variable_operating_cost + + # # blk.usc.fs.storage_capital_cost + # # ) + # ) * scaling_cost + # ) + count += 1 + + # m.obj = pyo.Objective( + # expr=sum([blk.profit for blk in blks]) * scaling_obj, + # sense=maximize + # ) + m.obj = pyo.Objective( + expr=sum( + [blk.revenue - + (blk.usc.fs.fuel_cost + + blk.usc.fs.plant_fixed_operating_cost + + blk.usc.fs.plant_variable_operating_cost) - + blk.usc.fs.storage_capital_cost + for blk in blks] + ) * scaling_obj, + sense=maximize + ) + + # Initial state for linking variables: power and salt + # tank. Different tank scenarios are included for the Solar salt + # tank levels and the previous tank level of the tank is based on + # that. + if tank_status == "hot_empty": + blks[0].usc.previous_salt_inventory_hot.fix(tank_min) + blks[0].usc.previous_salt_inventory_cold.fix(tank_max-tank_min) + elif tank_status == "hot_half_full": + blks[0].usc.previous_salt_inventory_hot.fix(tank_max/2) + blks[0].usc.previous_salt_inventory_cold.fix(tank_max/2) + elif tank_status == "hot_full": + blks[0].usc.previous_salt_inventory_hot.fix(tank_max-tank_min) + blks[0].usc.previous_salt_inventory_cold.fix(tank_min) + else: + print("Unrecognized scenario! Try hot_empty, hot_full, or hot_half_full") + + blks[0].usc.previous_power.fix(447.66) + + # Initialize disjunctions + print() + print() + print('>>Initializing disjuncts') + if tank_status == "hot_empty": + for k in range(nhours): + # if k <= (nhours / 3) - 1: + # blks[k].usc.fs.charge_mode_disjunct.binary_indicator_var.set_value(0) + # blks[k].usc.fs.discharge_mode_disjunct.binary_indicator_var.set_value(0) + # blks[k].usc.fs.no_storage_mode_disjunct.binary_indicator_var.set_value(1) + # elif k <= 2 * (nhours / 3) - 1: + # blks[k].usc.fs.charge_mode_disjunct.binary_indicator_var.set_value(1) + # blks[k].usc.fs.discharge_mode_disjunct.binary_indicator_var.set_value(0) + # blks[k].usc.fs.no_storage_mode_disjunct.binary_indicator_var.set_value(0) + if k <= (nhours / 2) - 1: + blks[k].usc.fs.charge_mode_disjunct.binary_indicator_var.set_value(1) + blks[k].usc.fs.discharge_mode_disjunct.binary_indicator_var.set_value(0) + blks[k].usc.fs.no_storage_mode_disjunct.binary_indicator_var.set_value(0) + # if k >= (nhours / 2) - 1: + # blks[k].usc.fs.charge_mode_disjunct.binary_indicator_var.set_value(1) + # blks[k].usc.fs.discharge_mode_disjunct.binary_indicator_var.set_value(0) + # blks[k].usc.fs.no_storage_mode_disjunct.binary_indicator_var.set_value(0) + else: + blks[k].usc.fs.charge_mode_disjunct.binary_indicator_var.set_value(0) + blks[k].usc.fs.discharge_mode_disjunct.binary_indicator_var.set_value(1) + blks[k].usc.fs.no_storage_mode_disjunct.binary_indicator_var.set_value(0) + elif tank_status == "hot_full": + blks[0].usc.fs.charge_mode_disjunct.binary_indicator_var.set_value(0) + blks[0].usc.fs.discharge_mode_disjunct.binary_indicator_var.set_value(1) + blks[0].usc.fs.no_storage_mode_disjunct.binary_indicator_var.set_value(0) + for k in range(nhours): + if k >= 1: + blks[k].usc.fs.charge_mode_disjunct.binary_indicator_var.set_value(0) + blks[k].usc.fs.discharge_mode_disjunct.binary_indicator_var.set_value(0) + blks[k].usc.fs.no_storage_mode_disjunct.binary_indicator_var.set_value(1) + else: + blks[0].usc.fs.charge_mode_disjunct.binary_indicator_var.set_value(1) + blks[0].usc.fs.discharge_mode_disjunct.binary_indicator_var.set_value(0) + blks[0].usc.fs.no_storage_mode_disjunct.binary_indicator_var.set_value(0) + for k in range(nhours): + if k >= 1: + blks[k].usc.fs.charge_mode_disjunct.binary_indicator_var.set_value(0) + blks[k].usc.fs.discharge_mode_disjunct.binary_indicator_var.set_value(0) + blks[k].usc.fs.no_storage_mode_disjunct.binary_indicator_var.set_value(1) + + # Select solver and solve the model + csvfile = create_csv_header(nhours=nhours) + + opt = pyo.SolverFactory('gdpopt') + _prop_bnds_root_to_leaf_map[ExternalFunctionExpression] = lambda x, y, z: None + + net_power = [] + hot_tank_level = [] + cold_tank_level = [] + hxc_duty = [] + hxd_duty = [] + boiler_heat_duty = [] + discharge_work = [] + for week in range(nweeks): + print() + print(">> Solving for week {}: {} hours of operation in {} day(s) ". + format(week + 1, nhours, ndays)) + results = opt.solve( + m, + tee=True, + algorithm='RIC', + mip_solver='gurobi_direct', + nlp_solver='ipopt', + # # OA_penalty_factor=1e4, + # # max_slack=1e4, + # zero_tolerance=1e-10, + # integer_tolerance=1e-4, + # variable_tolerance=1e-6, + init_algorithm="no_init", + subproblem_presolve=False, + time_limit="56000", + iterlim=500, + call_after_subproblem_solve=( + lambda c, a, b: print_model(c, a, b, + csvfile, nweeks=nweeks, + nhours=nhours, lmp=lmp, + n_time_points=n_time_points) + ), + nlp_solver_args=dict( + tee=True, + symbolic_solver_labels=True, + options={"linear_solver": "ma27", + "max_iter": 150, + "halt_on_ampl_error": "yes" + } + ) + ) + + hot_tank_level.append([pyo.value(blks[i].usc.salt_inventory_hot) # in mton + for i in range(n_time_points)]) + cold_tank_level.append([pyo.value(blks[i].usc.salt_inventory_cold) # in mton + for i in range(n_time_points)]) + net_power.append([pyo.value(blks[i].usc.fs.net_power) + for i in range(n_time_points)]) + boiler_heat_duty.append([pyo.value(blks[i].usc.fs.boiler.heat_duty[0]) * 1e-6 + for i in range(n_time_points)]) + discharge_work.append([pyo.value(blks[i].usc.fs.discharge_turbine_work) + for i in range(n_time_points)]) + hxc_duty.append([pyo.value(blks[i].usc.fs.charge_mode_disjunct.indicator_var) * + pyo.value(blks[i].usc.fs.charge_mode_disjunct.hxc.heat_duty[0]) * 1e-6 + for i in range(n_time_points)]) + hxd_duty.append([pyo.value(blks[i].usc.fs.discharge_mode_disjunct.indicator_var) * + pyo.value(blks[i].usc.fs.discharge_mode_disjunct.hxd.heat_duty[0]) * 1e-6 + for i in range(n_time_points)]) + + csvfile.close() + + return (m, + blks, + lmp, + net_power, + results, + hot_tank_level, + cold_tank_level, + hxc_duty, + hxd_duty, + boiler_heat_duty, + discharge_work) + +def print_results(m, blks, results): + # Print and plot results + c = 0 + print('Objective: {:.4f}'.format(value(m.obj) / scaling_obj)) + for blk in blks: + print() + print('Period {}'.format(c+1)) + storage_work = blks[c].usc.fs.discharge_turbine_work + charge_mode = blks[c].usc.fs.charge_mode_disjunct + discharge_mode = blks[c].usc.fs.discharge_mode_disjunct + perc = 100 + factor = 1 + + print(' Charge mode: {}'.format( + blks[c].usc.fs.charge_mode_disjunct.binary_indicator_var.value)) + print(' Discharge mode: {}'.format( + blks[c].usc.fs.discharge_mode_disjunct.binary_indicator_var.value)) + print(' No storage mode: {}'.format( + blks[c].usc.fs.no_storage_mode_disjunct.binary_indicator_var.value)) + if blks[c].usc.fs.charge_mode_disjunct.binary_indicator_var.value == 1: + print(' HXC area (m2): {:.4f}'.format( + value(charge_mode.hxc.area))) + print(' HXC Duty (MW): {:.4f}'.format( + value(charge_mode.hxc.heat_duty[0]) * 1e-6)) + print(' HXC salt temperature (K) in/out: {:.4f}/{:.4f}'.format( + value(charge_mode.hxc.tube_inlet.temperature[0]), + value(charge_mode.hxc.tube_outlet.temperature[0]))) + print(' HXC steam temperature (K) in/out: {:.4f}/{:.4f}'.format( + value(charge_mode.hxc.hot_side.properties_in[0].temperature), + value(charge_mode.hxc.hot_side.properties_out[0].temperature))) + print(' HXC salt flow (kg/s) [mton/h]: {:.4f} [{:.4f}]'.format( + value(charge_mode.hxc.tube_outlet.flow_mass[0]), + value(charge_mode.hxc.tube_outlet.flow_mass[0]) * 3600 * factor_mton)) + print(' HXC steam flow (mol/s): {:.4f}'.format( + value(charge_mode.hxc.shell_outlet.flow_mol[0]))) + print(' HXC Delta T (K): in: {:.4f}, out: {:.4f}'.format( + value(charge_mode.hxc.delta_temperature_in[0]), + value(charge_mode.hxc.delta_temperature_out[0]))) + elif blks[c].usc.fs.discharge_mode_disjunct.binary_indicator_var.value == 1: + print(' HXD area (m2): {:.4f}'.format( + value(discharge_mode.hxd.area))) + print(' HXD Duty (MW): {:.4f}'.format( + value(discharge_mode.hxd.heat_duty[0]) * 1e-6)) + print(' HXD salt temperature (K) in/out: {:.4f}/{:.4f}'.format( + value(discharge_mode.hxd.shell_inlet.temperature[0]), + value(discharge_mode.hxd.shell_outlet.temperature[0]))) + print(' HXD steam temperature (K) in/out: {:.4f}/{:.4f}'.format( + value(discharge_mode.hxd.cold_side.properties_in[0].temperature), + value(discharge_mode.hxd.cold_side.properties_out[0].temperature))) + print(' HXD salt flow (kg/s) [mton/h]: {:.4f} [{:.4f}]'.format( + value(discharge_mode.hxd.shell_outlet.flow_mass[0]), + value(discharge_mode.hxd.shell_outlet.flow_mass[0]) * 3600 * factor_mton)) + print(' HXD steam flow (mol/s): {:.4f}'.format( + value(discharge_mode.hxd.tube_outlet.flow_mol[0]))) + print(' HXD Delta T (K): in: {:.4f}, out: {:.4f}'.format( + value(discharge_mode.hxd.delta_temperature_in[0]), + value(discharge_mode.hxd.delta_temperature_out[0]))) + print(' ES turbine work (MW): {:.4f}'.format( + value(discharge_mode.es_turbine.work_mechanical[0]) * -1e-6)) + elif blks[c].usc.fs.no_storage_mode_disjunct.binary_indicator_var.value == 1: + print(' **Note: no storage heat exchangers exist, so the units have the init values ') + print(' HXC area (m2): {:.4f}'.format( + value(charge_mode.hxc.area))) + print(' HXC Duty (MW): {:.4f}'.format( + value(charge_mode.hxc.heat_duty[0]) * 1e-6)) + print(' HXC salt flow (kg/s): {:.4f} '.format( + value(charge_mode.hxc.tube_outlet.flow_mass[0]))) + print(' HXD area (m2): {:.4f}'.format( + value(discharge_mode.hxd.area))) + print(' HXD Duty (MW): {:.4f}'.format( + value(discharge_mode.hxd.heat_duty[0]) * 1e-6)) + print(' HXD salt flow (kg/s): {:.4f}'.format( + value(discharge_mode.hxd.shell_outlet.flow_mass[0]))) + else: + print(' No other operation modes!') + + print(' Net power: {:.4f}'.format( + value(blks[c].usc.fs.net_power))) + print(' Plant Power Out: {:.4f}'.format( + value(blks[c].usc.fs.plant_power_out[0]))) + print(' Discharge turbine work (MW): {:.4f}'.format( + value(storage_work) * factor)) + # print(' Profit ($): {:.4f}'.format( + # value(blks[c].profit) / scaling_cost)) + # print(' Revenue ($): {:.4f}'.format( + # value(blks[c].revenue))) + # print(' Operating cost ($): {:.4f}'.format( + # value(blks[c].total_cost))) + print(' Efficiencies (%): boiler: {:.4f}, cycle: {:.4f}'.format( + value(blks[c].usc.fs.boiler_efficiency) * 100, + value(blks[c].usc.fs.cycle_efficiency) * perc)) + print(' Boiler heat duty: {:.4f}'.format( + value(blks[c].usc.fs.boiler.heat_duty[0]) * 1e-6)) + print(' Boiler flow mol (mol/s): {:.4f}'.format( + value(blks[c].usc.fs.boiler.outlet.flow_mol[0]))) + print(' Hot salt inventory (mton): previous: {:.4f}, current: {:.4f}'.format( + value(blks[c].usc.previous_salt_inventory_hot), + value(blks[c].usc.salt_inventory_hot))) + print(' Cold salt inventory (mton): previous: {:.4f}, current: {:.4f}'.format( + value(blks[c].usc.previous_salt_inventory_cold), + value(blks[c].usc.salt_inventory_cold))) + c += 1 + + print(results) + +def plot_results(m, + blks, + lmp, + ndays=None, + nweeks=None, + n_time_points=None, + net_power=None, + tank_max=None, + hot_tank_level=None, + cold_tank_level=None, + hxc_duty=None, + hxd_duty=None, + boiler_heat_duty=None, + discharge_work=None): + + + c = ['darkred', 'midnightblue', 'tab:green', 'k', 'gray'] + hours = np.arange(n_time_points * nweeks) + lmp_array = np.asarray(lmp[0:n_time_points]) + hot_tank_array = np.asarray(hot_tank_level[0:nweeks]).flatten() + cold_tank_array = np.asarray(cold_tank_level[0:nweeks]).flatten() + + # First, convert array to list to include the + # value at period zero, which for this analysis is zero since the + # plant is not operating. + hot_tank_array0 = value(blks[0].usc.previous_salt_inventory_hot) + cold_tank_array0 = value(blks[0].usc.previous_salt_inventory_cold) + hours_list = hours.tolist() + [nhours] + hot_tank_list = [hot_tank_array0] + hot_tank_array.tolist() + cold_tank_list = [cold_tank_array0] + cold_tank_array.tolist() + hxc_array = np.asarray(hxc_duty[0:nweeks]).flatten() + hxd_array = np.asarray(hxd_duty[0:nweeks]).flatten() + hxc_duty_list = [0] + hxc_array.tolist() + hxd_duty_list = [0] + hxd_array.tolist() + boiler_heat_duty_array = np.asarray(boiler_heat_duty[0:nweeks]).flatten() + boiler_heat_duty_list = [0] + boiler_heat_duty_array.tolist() + power_array = np.asarray(net_power[0:nweeks]).flatten() + power_array0 = value(blks[0].usc.previous_power) + power_list = [power_array0] + power_array.tolist() + discharge_work_array = np.asarray(discharge_work[0:nweeks]).flatten() + discharge_work_list = [0] + discharge_work_array.tolist() + + # Plot molten salt tank levels for each period. First, convert + # array to list to include hot tank level at initial period zero. + fig3, ax1 = plt.subplots(figsize=(12, 8)) + ax1.set_xlabel('Time Period (hr)') + ax1.set_ylabel('Salt Amount (metric ton)', color=c[3]) + ax1.spines["top"].set_visible(False) + ax1.spines["right"].set_visible(False) + ax1.grid(linestyle=':', which='both', color=c[4], alpha=0.40) + plt.axhline(tank_max, ls=':', lw=1.5, color=c[4]) + ax1.step(hours_list, hot_tank_list, marker='o', ms=8, lw=1.5, color=c[0], alpha=0.85, + label='Hot Tank') + ax1.fill_between(hours_list, hot_tank_list, step="pre", color=c[0], alpha=0.35) + ax1.step(hours_list, cold_tank_list, marker='o', ms=8, lw=1.5, color=c[1], alpha=0.65, + label='Cold Tank') + ax1.fill_between(hours_list, cold_tank_list, step="pre", color=c[1], alpha=0.10) + ax1.legend(loc="upper left", frameon=False) + ax1.tick_params(axis='y') + ax1.set_xticks(np.arange(0, n_time_points*nweeks + 1, step=1)) + ax2 = ax1.twinx() + ax2.set_ylim((-25, 225)) + ax2.set_ylabel('Locational Marginal Price ($/MWh)', color=c[2]) + ax2.step([x + 1 for x in hours], lmp_array, marker='o', ms=8, alpha=0.7, ls='-', lw=1.5, color=c[2]) + ax2.tick_params(axis='y', labelcolor=c[2]) + plt.savefig('results/gdp_mp_unfixed_area_{}h/final_salt_tank_level.png'.format( + nhours)) + + # Plot charge and discharge heat exchangers heat duty values for + # each time period. + fig4, ax3 = plt.subplots(figsize=(12, 8)) + ax3.set_xlabel('Time Period (hr)') + ax3.set_ylabel('Heat Duty (MW)', color=c[3]) + ax3.spines["top"].set_visible(False) + ax3.spines["right"].set_visible(False) + ax3.grid(linestyle=':', which='both', color=c[4], alpha=0.40) + ax3.set_ylim((-25, 825)) + ax3.step(hours_list, boiler_heat_duty_list, marker='o', ms=8, ls='-', lw=1.5, alpha=0.85, color=c[3], + label='Boiler') + ax3.fill_between(hours_list, boiler_heat_duty_list, step="pre", color=c[3], alpha=0.15) + plt.axhline(max_storage_heat_duty, ls=':', lw=1.5, color=c[4]) + # plt.axhline(min_storage_heat_duty, ls=':', lw=1.5, color=c[4]) + ax3.step(hours_list, hxc_duty_list, marker='o', ms=8, color=c[0], alpha=0.75, + label='Charge') + ax3.fill_between(hours_list, hxc_duty_list, step="pre", color=c[0], alpha=0.25) + ax3.step(hours_list, hxd_duty_list, marker='o', ms=8, color=c[1], alpha=0.75, + label='Discharge') + ax3.fill_between(hours_list, hxd_duty_list, step="pre", color=c[1], alpha=0.25) + ax3.legend(loc="center left", frameon=False) + ax3.tick_params(axis='y') + ax3.set_xticks(np.arange(0, n_time_points*nweeks + 1, step=1)) + ax4 = ax3.twinx() + ax4.set_ylim((-25, 225)) + ax4.set_ylabel('Locational Marginal Price ($/MWh)', color=c[2]) + ax4.step([x + 1 for x in hours], lmp_array, marker='o', ms=8, alpha=0.7, ls='-', lw=1.5, color=c[2]) + ax4.tick_params(axis='y', labelcolor=c[2]) + plt.savefig('results/gdp_mp_unfixed_area_{}h/final_heat_duty.png'.format(nhours)) + + # Plot net power and discharge power production for each period. + fig4, ax5 = plt.subplots(figsize=(12, 8)) + ax5.set_xlabel('Time Period (hr)') + ax5.set_ylabel('Power Output (MW)', color=c[1]) + ax5.spines["top"].set_visible(False) + ax5.spines["right"].set_visible(False) + ax5.grid(linestyle=':', which='both', color=c[4], alpha=0.40) + plt.axhline(max_power, ls=':', lw=1.5, color=c[4]) + ax5.step(hours_list, power_list, marker='o', ms=8, lw=1.5, color=c[3], + label='Plant Net Power') + ax5.fill_between(hours_list, power_list, step="pre", color=c[3], alpha=0.15) + ax5.step(hours_list, discharge_work_list, marker='o', ms=8, color=c[1], alpha=0.85, + label='Discharge Turbine') + ax5.fill_between(hours_list, discharge_work_list, step="pre", color=c[1], alpha=0.15) + ax5.tick_params(axis='y', labelcolor=c[1]) + ax5.set_xticks(np.arange(0, n_time_points*nweeks + 1, step=2)) + ax6 = ax5.twinx() + ax2.set_ylim((-25, 225)) + ax6.set_ylabel('Locational Marginal Price ($/MWh)', color=c[2]) + ax6.step([x + 1 for x in hours], lmp_array, marker='o', ms=8, alpha=0.7, ls='-', lw=1.5, color=c[2]) + ax6.tick_params(axis='y', labelcolor=c[2]) + plt.savefig('results/gdp_mp_unfixed_area_{}h/final_power.png'.format(nhours)) + + plt.show() + +def _mkdir(dir): + """Create directory to save results + + """ + + try: + os.mkdir(dir) + print('Directory {} created'.format(dir)) + except: + print('Directory {} not created because it already exists!'.format(dir)) + pass + + +if __name__ == '__main__': + + optarg = { + "max_iter": 300, + # "halt_on_ampl_error": "yes", + } + solver = get_solver('ipopt', optarg) + + # Save results in a .csv file for each master iteration + save_results = True + + # Use GDP design for charge and discharge heat exchanger from 4-12 + # disjunctions model when True. If False, use the GDP design from + # 4-5 disjunctions model. **Note** When changing this, make sure + # to change it in the GDP multiperiod python script too. + new_design = True + + lx = True + if lx: + if new_design: + # scaling_obj = 1e-2 + # # scaling_cost = 1e-3 # before changing the obj function + # scaling_cost = 1e-3 + scaling_obj = 1e-5 + # scaling_cost = 1e-3 # before changing the obj function + scaling_cost = 1 + else: + # scaling_obj = 1e-2 # 6h, 12h + scaling_obj = 1e-4 # 12h + scaling_cost = 1e-3 + else: + scaling_obj = 1 + scaling_cost = 1 + print() + print('Scaling cost:', scaling_cost) + print('Scaling obj:', scaling_obj) + + # Add design data from .json file + if new_design: + data_path = 'uscp_design_data_new_storage_design.json' + else: + data_path = 'uscp_design_data.json' + + with open(data_path) as design_data: + design_data_dict = json.load(design_data) + + max_salt_amount = design_data_dict["max_salt_amount"] # in kg + max_storage_heat_duty = design_data_dict["max_storage_heat_duty"] # in MW + min_storage_heat_duty = design_data_dict["min_storage_heat_duty"] # in MW + factor_mton = design_data_dict["factor_mton"] # factor for conversion kg to metric ton + max_power = design_data_dict["plant_max_power"] # in MW + pmin = design_data_dict["plant_min_power"] # in MW + + hours_per_day = 12 + ndays = 1 + nhours = hours_per_day * ndays + nweeks = 1 + + # Add number of hours per week + n_time_points = nweeks * nhours + + tank_status = "hot_empty" + tank_min = 1 * factor_mton # in mton + tank_max = max_salt_amount * factor_mton # in mton + + # Create a directory to save the results for each NLP sbproblem + # and plots + _mkdir('results') + _mkdir('results/gdp_mp_unfixed_area_{}h'.format(nhours)) + + (m, + blks, + lmp, + net_power, + results, + hot_tank_level, + cold_tank_level, + hxc_duty, + hxd_duty, + boiler_heat_duty, + discharge_work) = run_pricetaker_analysis(hours_per_day=hours_per_day, + nhours=nhours, + ndays=ndays, + nweeks=nweeks, + n_time_points=n_time_points, + pmin=pmin, + tank_status=tank_status, + tank_min=tank_min, + tank_max=tank_max) + + print_results(m, + blks, + results) + + plot_results(m, + blks, + lmp, + ndays=ndays, + nweeks=nweeks, + n_time_points=n_time_points, + hot_tank_level=hot_tank_level, + cold_tank_level=cold_tank_level, + net_power=net_power, + hxc_duty=hxc_duty, + hxd_duty=hxd_duty, + tank_max=tank_max, + boiler_heat_duty=boiler_heat_duty, + discharge_work=discharge_work) diff --git a/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/gdp_mp/ultra_supercritical_powerplant_w_ccs.py b/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/gdp_mp/ultra_supercritical_powerplant_w_ccs.py new file mode 100644 index 000000000..108ade9c9 --- /dev/null +++ b/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/gdp_mp/ultra_supercritical_powerplant_w_ccs.py @@ -0,0 +1,268 @@ +############################################################################## +# DISPATCHES was produced under the DOE Design Integration and Synthesis +# Platform to Advance Tightly Coupled Hybrid Energy Systems program +# (DISPATCHES), and is copyright (c) 2021 by the software owners: +# The Regents of the University of California, through Lawrence Berkeley +# National Laboratory, National Technology & Engineering Solutions of Sandia, +# LLC, Alliance for Sustainable Energy, LLC, Battelle Energy Alliance, LLC, +# University of Notre Dame du Lac, et al. All rights reserved. +# +# Please see the files COPYRIGHT.md and LICENSE.md for full copyright and +# license information, respectively. Both files are also available online +# at the URL: "https://github.com/gmlc-dispatches/dispatches". +# +############################################################################## + +""" +This is a simple model for an ultrasupercritical coal-fired power plant +integrated with a boiler fire-side unit model and a CO2 capture system. +The boiler fire-side model accounts for flue-gas generation. +The CO2 capture system uses surrogates for a solvent-based piperazine system. +The capture rate is fixed to 90%. +""" + +# IDAES Imports +from idaes.core.util.model_statistics import degrees_of_freedom +from idaes.power_generation.unit_models.boiler_fireside import BoilerFireside +from idaes.core.util import get_solver +import idaes.core.util.scaling as iscale +import idaes.logger as idaeslog + +import ultra_supercritical_powerplant as usc + +from idaes.power_generation.carbon_capture.piperazine_surrogates.\ + co2_capture_system import CO2Capture +from idaes.power_generation.properties import FlueGasParameterBlock + + +def add_fireside(m): + + m.fs.prop_fluegas = FlueGasParameterBlock() + + boiler_input_dict = {1: '614623556', + 'pl': '126983008', + 'roof': '96959378', + 'flyash': '0.0001', # flyash mass fraction + 'NOx': '140'} # NOx PPM + + m.fs.boiler_fireside = BoilerFireside( + default={"dynamic": False, + "property_package": m.fs.prop_fluegas, + "calculate_PA_SA_flows": True, + "number_of_zones": 1, + "has_platen_superheater": True, + "has_roof_superheater": True, + "surrogate_dictionary": boiler_input_dict}) + m.fs.boiler_fireside.eq_surr_waterwall_heat.deactivate() + m.fs.boiler_fireside.eq_surr_platen_heat.deactivate() + m.fs.boiler_fireside.eq_surr_roof_heat.deactivate() + + @m.fs.boiler_fireside.Constraint(m.fs.time, + m.fs.boiler_fireside.zones, + doc="Waterwall heat duty") + def eq_main_boiler_heat(b, t, z): + return ( + b.waterwall_heat[t, z] * + b.fcorrection_heat_ww[t] == + m.fs.boiler.heat_duty[0]) + + @m.fs.boiler_fireside.Constraint(m.fs.time, + doc="Reheater heat duty") + def eq_reheater_1_heat(b, t): + return ( + b.platen_heat[t] * + b.fcorrection_heat_platen[t] == + m.fs.reheater[1].heat_duty[0]) + + @m.fs.boiler_fireside.Constraint(m.fs.time, + doc="Additional reheater heat duty") + def eq_reheater_2_heat(b, t): + return ( + b.roof_heat[t] * + b.fcorrection_heat_ww[t] == + m.fs.reheater[2].heat_duty[0]) + + # Fixing Coal composition + m.fs.boiler_fireside.mf_C_coal_dry.fix(0.718471768285811) + m.fs.boiler_fireside.mf_H_coal_dry.fix(0.0507156542319396) + m.fs.boiler_fireside.mf_O_coal_dry.fix(0.0791164206018258) + m.fs.boiler_fireside.mf_N_coal_dry.fix(0.0140876817310943) + m.fs.boiler_fireside.mf_S_coal_dry.fix(0.0282880649160374) + m.fs.boiler_fireside.mf_Ash_coal_dry.fix(0.109320410233292) + m.fs.boiler_fireside.hhv_coal_dry.fix(2.581e+007) + m.fs.boiler_fireside.frac_moisture_vaporized[:].fix(0.6) + m.fs.boiler_fireside.mf_H2O_coal_raw[:].fix(0.111367051) # moisture + m.fs.boiler_fireside.flowrate_coal_raw[:].fix(100.0) # kg/s + + m.fs.boiler_fireside.wall_temperature_waterwall[:, :].fix(690) + m.fs.boiler_fireside.wall_temperature_platen[:].fix(750) + m.fs.boiler_fireside.wall_temperature_roof[:].fix(650) + m.fs.boiler_fireside.fcorrection_heat_ww.fix(0.95) + m.fs.boiler_fireside.fcorrection_heat_platen.fix(0.95) + + # SCPC simulation approx flue gas = 21290.6999 # mol/s + flow_mol_pa = 21290.6999*0.34 # approx. 1/3 as Primary air + flow_mol_sa = 21290.6999*0.66 # approx. 2/3 as Secondary air + + m.fs.state_args_PA = { + "flow_mol_comp": { + "H2O": 0.0078267*flow_mol_pa, + "CO2": 0.000337339*flow_mol_pa, + "N2": 0.783994*flow_mol_pa, + "O2": 0.20784*flow_mol_pa, + "SO2": 1e-5*flow_mol_pa, + "NO": 1e-5*flow_mol_pa + }, + "temperature": 333.15, + "pressure": 101325.00 + } + + m.fs.state_args_SA = { + "flow_mol_comp": { + "H2O": 0.0078267*flow_mol_sa, + "CO2": 0.000337339*flow_mol_sa, + "N2": 0.783994*flow_mol_sa, + "O2": 0.20784*flow_mol_sa, + "SO2": 1e-5*flow_mol_sa, + "NO": 1e-5*flow_mol_sa + }, + "temperature": 650.15, + "pressure": 101325.00 + } + + m.fs.boiler_fireside.primary_air_inlet.pressure[:].fix(101325.00) + m.fs.boiler_fireside.secondary_air_inlet.pressure[:].fix(101325.00) + m.fs.boiler_fireside.primary_air_inlet.temperature[:].fix(333.15) + m.fs.boiler_fireside.secondary_air_inlet.temperature[:].fix(650.15) + m.fs.boiler_fireside.temperature_coal[:].fix(335.15) + m.fs.boiler_fireside.flue_gas_outlet.temperature.setub(5000) + m.fs.boiler_fireside.SR.fix(1.2) + m.fs.boiler_fireside.ratio_PA2coal.fix(2.45) + m.fs.boiler_fireside.SR_lf.fix(1.0) + m.fs.boiler_fireside.deltaP.fix(1000) + return m + + +def add_co2capture(m): + m.fs.co2_capture_unit = CO2Capture() + + # Adding constraints to connect flue_gas_outlet to co2_capture_unit_inlet + # An arc cannot be used because of the fixed components with capture unit + # The following are equality constraints for component flows, pressure, + # and temperature. + # TODO: update the model with a translator block to update components + m.fg_comp_list = ['CO2', 'H2O', 'N2', 'O2', 'NO', 'SO2'] + m.css_comp_list = ['CO2', 'H2O', 'N2', 'O2'] + + @m.fs.co2_capture_unit.Constraint(m.fs.time, + m.css_comp_list, + doc="Flow equality constraints") + def eq_flow_mol_comp(b, t, c): + return ( + m.fs.boiler_fireside.flue_gas_outlet.flow_mol_comp[t, c] == + m.fs.co2_capture_unit.inlet.flow_mol_comp[t, c]) + + @m.fs.co2_capture_unit.Constraint(m.fs.time, + doc="Fixing Ar flow") + def eq_ar_flow_mol_comp(b, t): + return ( + m.fs.co2_capture_unit.inlet.flow_mol_comp[t, 'Ar'] == 0.0089 * + sum(m.fs.boiler_fireside.flue_gas_outlet.flow_mol_comp[t, c] + for c in m.fg_comp_list)) + + @m.fs.co2_capture_unit.Constraint(m.fs.time, + doc="Temperature equality constraints") + def eq_temperature(b, t): + return ( + m.fs.boiler_fireside.flue_gas_outlet.temperature[t] == + m.fs.co2_capture_unit.inlet.temperature[t]) + + @m.fs.co2_capture_unit.Constraint(m.fs.time, + doc="Pressure equality constraints") + def eq_pressure(b, t): + return ( + m.fs.boiler_fireside.flue_gas_outlet.pressure[t] == + m.fs.co2_capture_unit.inlet.pressure[t]) + + m.fs.co2_capture_unit.CO2_capture_rate.fix(0.9) # 90 % CO2 Capture + m.fs.co2_capture_unit.Pz_mol.fix(5) + m.fs.co2_capture_unit.lean_loading.fix(0.25) + + return m + + +def initialize_usc_w_capture(m, fileinput=None, outlvl=idaeslog.NOTSET, + solver=None, optarg={}): + + iscale.calculate_scaling_factors(m) + + m.fs.boiler.heat_duty[0].fix() + m.fs.reheater[1].heat_duty[0].fix() + m.fs.reheater[2].heat_duty[0].fix() + + m.fs.boiler_fireside.initialize( + state_args_PA=m.fs.state_args_PA, + state_args_SA=m.fs.state_args_SA) + + m.fs.boiler.heat_duty[0].unfix() + m.fs.reheater[1].heat_duty[0].unfix() + m.fs.reheater[2].heat_duty[0].unfix() + + # The initialize method in CO2Capture unit model fixes inlet state + # and does not unfix it. So, to use the initialize method, the + # constraints are deactivated before initializing and activated later. + # The inlet state is unfixed before activating the constraints. + # TODO: update this section when the initialize method in CO2Capture model + # is updated. + m.fs.co2_capture_unit.eq_flow_mol_comp.deactivate() + m.fs.co2_capture_unit.eq_ar_flow_mol_comp.deactivate() + m.fs.co2_capture_unit.eq_temperature.deactivate() + m.fs.co2_capture_unit.eq_pressure.deactivate() + m.fs.co2_capture_unit.inlet.temperature[:].fix(303.1) # K (30 C) + m.fs.co2_capture_unit.inlet.pressure[:].fix(101325) # Pa (1 atm) + + m.fs.co2_capture_unit.initialize(outlvl=idaeslog.INFO) + + m.fs.co2_capture_unit.inlet.temperature[:].unfix() # K (30 C) + m.fs.co2_capture_unit.inlet.pressure[:].unfix() # Pa (1 atm) + m.fs.co2_capture_unit.inlet.flow_mol_comp[:, 'CO2'].unfix() + m.fs.co2_capture_unit.inlet.flow_mol_comp[:, 'O2'].unfix() + m.fs.co2_capture_unit.inlet.flow_mol_comp[:, 'Ar'].unfix() + m.fs.co2_capture_unit.inlet.flow_mol_comp[:, 'H2O'].unfix() + m.fs.co2_capture_unit.inlet.flow_mol_comp[:, 'N2'].unfix() + m.fs.co2_capture_unit.eq_flow_mol_comp.activate() + m.fs.co2_capture_unit.eq_ar_flow_mol_comp.activate() + m.fs.co2_capture_unit.eq_temperature.activate() + m.fs.co2_capture_unit.eq_pressure.activate() + + res = solver.solve(m) + print("Model Initialization = ", + res.solver.termination_condition) + print("************** USC model w Capture Initialized ***************") + + +def build_usc_w_ccs(): + + m = usc.build_plant_model() + solver = usc.initialize(m) + m = add_fireside(m) + m = add_co2capture(m) + assert degrees_of_freedom(m) == 0 + + initialize_usc_w_capture(m, solver=solver) + assert degrees_of_freedom(m) == 0 + + return m + + +if __name__ == "__main__": + + optarg = { + "max_iter": 300, + "halt_on_ampl_error": "yes", + } + solver = get_solver("ipopt", optarg) + + m = build_usc_w_ccs() + + results = solver.solve(m, tee=True) diff --git a/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/gdp_mp/usc_storage_gdp_mp_unfixed_area_new_storage_design.py b/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/gdp_mp/usc_storage_gdp_mp_unfixed_area_new_storage_design.py new file mode 100644 index 000000000..98546d4c0 --- /dev/null +++ b/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/gdp_mp/usc_storage_gdp_mp_unfixed_area_new_storage_design.py @@ -0,0 +1,2123 @@ +############################################################################## +# DISPATCHES was produced under the DOE Design Integration and Synthesis +# Platform to Advance Tightly Coupled Hybrid Energy Systems program (DISPATCHES), +# and is copyright (c) 2021 by the software owners: The Regents of the University +# of California, through Lawrence Berkeley National Laboratory, National +# Technology & Engineering Solutions of Sandia, LLC, Alliance for Sustainable +# Energy, LLC, Battelle Energy Alliance, LLC, University of Notre Dame du Lac, et +# al. All rights reserved. +# +# Please see the files COPYRIGHT.md and LICENSE.md for full copyright and license +# information, respectively. Both files are also available online at the URL: +# "https://github.com/gmlc-dispatches/dispatches". +# +############################################################################## + +"""This is a GDP model for the conceptual design of an ultra +supercritical coal-fired power plant based on a flowsheet presented in +1999 USDOE Report #DOE/FE-0400 + +This model uses some of the simpler unit models from the power +generation unit model library. + +Some of the parameters in the model such as feed water heater areas, +overall heat transfer coefficient, turbine efficiencies at multiple +stages have all been estimated for a total power out of 437 MW. + +Additional main assumptions are as follows: +(1) The flowsheet and main steam conditions, i. e. pressure & + temperature are adopted from the aforementioned DOE report +(2) Heater unit models are used to model main steam boiler, reheater, + and condenser. +(3) Multi-stage turbines are modeled as multiple lumped single stage + turbines + +""" + +__author__ = "Soraya Rawlings" + +# Import Python libraries +from math import pi +import logging +import json + +# Import Pyomo libraries +import pyomo.environ as pyo +from pyomo.environ import (Block, Param, Constraint, Objective, Reals, + NonNegativeReals, TransformationFactory, Expression, + maximize, RangeSet, value, log, Var, SolverFactory) +from pyomo.gdp import Disjunct, Disjunction +from pyomo.environ import units as pyunits +from pyomo.network import Arc +from pyomo.network.plugins import expand_arcs +from pyomo.util.calc_var_value import calculate_variable_from_constraint +from pyomo.util.infeasible import (log_infeasible_constraints, + log_close_to_bounds) +from pyomo.contrib.fbbt.fbbt import _prop_bnds_root_to_leaf_map +from pyomo.core.expr.numeric_expr import ExternalFunctionExpression + +# Import IDAES libraries +import idaes.logger as idaeslog +import idaes.core.util.scaling as iscale +from idaes.core import MaterialBalanceType +from idaes.core.util.initialization import propagate_state +from idaes.core.solvers.get_solver import get_solver +from idaes.core.util import model_serializer as ms +from idaes.core.util.model_statistics import degrees_of_freedom +from idaes.models.unit_models import (HeatExchanger, + MomentumMixingType, + Heater) +from idaes.models.unit_models import PressureChanger +from idaes.models.unit_models.heat_exchanger import delta_temperature_underwood_callback +from idaes.models.unit_models.pressure_changer import ThermodynamicAssumption +from idaes.models_extra.power_generation.unit_models.helm import (HelmMixer, + HelmTurbineStage, + HelmSplitter) +from idaes.core import UnitModelCostingBlock +from idaes.models.costing.SSLW import SSLWCosting, SSLWCostingData +from idaes.core.util.exceptions import ConfigurationError + +# Import ultra supercritical power plant model +# from dispatches.models.fossil_case.ultra_supercritical_plant import ( +# ultra_supercritical_powerplant_mixcon as usc) +from dispatches.case_studies.fossil_case.ultra_supercritical_plant import ( + ultra_supercritical_powerplant as usc) + +# Import Solar salt property package +from dispatches.properties import solarsalt_properties + +from IPython import embed +logging.basicConfig(level=logging.INFO) + + +# Open json file to add data to the model +with open('uscp_design_data_new_storage_design.json') as design_data: + design_data_dict = json.load(design_data) + + +def create_gdp_model(m, + method=None, + max_power=None, + deact_arcs_after_init=None, + energy_loss=None): + """Create flowsheet and add unit models. + """ + + # Add data to the model + add_data(m) + + # Add molten salt properties (Solar and Hitec salt) + m.fs.solar_salt_properties = solarsalt_properties.SolarsaltParameterBlock() + + ########################################################################### + # Add global variables + ########################################################################### + + m.fs.salt_amount = pyo.Param( + initialize=m.max_salt_amount, + doc="Solar salt amount in mton" + ) + + m.fs.salt_storage = pyo.Var( + bounds=(-m.max_salt_flow, m.max_salt_flow), + initialize=1, + doc="Solar salt amount in storage" + ) + m.fs.hx_pump_work = pyo.Var( + bounds=(0, 1e3), + initialize=1 + ) + m.fs.discharge_turbine_work = pyo.Var( + bounds=(0, 1e3), + initialize=1 + ) + + if energy_loss: + energy_loss_val = 1.5 + else: + energy_loss_val = 0 + m.fs.energy_loss = pyo.Param( + initialize=energy_loss_val, + doc="Discharge energy loss in MW" + ) + + m.fs.charge_area = pyo.Var( + initialize=m.hxc_area_init, + bounds=(m.min_area, m.max_area), + doc="Charge heat exchanger area in m2" + ) + m.fs.hot_salt_temp = pyo.Var( + initialize=m.hot_salt_temp, + bounds=(m.min_salt_temp, m.max_salt_temp), + doc="Hot salt temperature from charge heat exchanger in K" + ) + m.fs.discharge_area = pyo.Var( + initialize=m.hxd_area_init, + bounds=(m.min_area, m.max_area), + doc="Discharge heat exchanger area in m2" + ) + ########################################################################### + # Add disjunction + ########################################################################### + + m.fs.discharge_mode_disjunct = Disjunct(rule=discharge_mode_disjunct_equations) + m.fs.charge_mode_disjunct = Disjunct(rule=charge_mode_disjunct_equations) + m.fs.no_storage_mode_disjunct = Disjunct(rule=no_storage_mode_disjunct_equations) + + ########################################################################### + # Add constraints + ########################################################################### + + if deact_arcs_after_init: + print(' **Arcs from reheater 1 to turbine 3 and BFP to FWH8 are deactivated after initialization') + else: + print(' **Arcs from reheater 1 to turbine 3 and BFP to FWH8 are deactivated in create_gdp_model before initialization') + _deactivate_arcs(m) + + _make_constraints(m, method=method, max_power=max_power) + return m + +def add_data(m): + + # Add global data + m.hxc_area = design_data_dict["hxc_area"] # in MW + m.hxd_area = design_data_dict["hxd_area"] # in MW + m.min_power = design_data_dict["plant_min_power"] # in MW + m.max_power = design_data_dict["plant_max_power"] # in MW + m.ramp_rate = design_data_dict["ramp_rate"] + m.min_power_storage = design_data_dict["min_discharge_turbine_power"] # in MW + m.max_power_storage = design_data_dict["max_discharge_turbine_power"] # in MW + m.hot_salt_temp = design_data_dict["hot_salt_temperature"] # in K + # m.min_area = design_data_dict["min_storage_area_design"] # in m2 + m.min_area = 1000 + m.max_area = design_data_dict["max_storage_area_design"] # in m2 + m.cold_salt_temp = design_data_dict["cold_salt_temperature"] # in K + m.min_storage_heat_duty = design_data_dict["min_storage_heat_duty"] # in MW + m.max_storage_heat_duty = design_data_dict["max_storage_heat_duty"] # in MW + m.min_salt_temp = design_data_dict["min_solar_salt_temperature"] # in K + m.max_salt_temp = design_data_dict["max_solar_salt_temperature"] # in K + m.max_salt_flow = design_data_dict["max_salt_flow"] # in kg/s + m.factor_mton = design_data_dict["factor_mton"] # factor to convert kg to metric ton + m.max_salt_amount = design_data_dict["max_salt_amount"] * m.factor_mton # in mton + + # Add initial values + m.hxc_area_init = m.hxc_area + m.hxd_area_init = m.hxd_area + + # Chemical engineering cost index for 2019 + m.CE_index = 607.5 + + # Define the number of hours per day to operate the storage system + # and the number of years over which the capital costs are + # annualized + m.fs.hours_per_day = pyo.Param( + initialize=design_data_dict["operating_hours_per_day"], + doc='Estimated number of hours of charging per day' + ) + m.fs.num_of_years = pyo.Param( + initialize=design_data_dict["number_of_years"], + doc='Number of years for capital cost annualization') + + # Define the data for the design of the storage heat + # exchangers. The design is: Shell-n-tube counter-flow heat + # exchanger design parameters. Data to compute overall heat + # transfer coefficient for the charge heat exchanger using the + # Sieder-Tate Correlation. Parameters for tube diameter and + # thickness assumed from the data in (2017) He et al., Energy + # Procedia 105, 980-985. + m.fs.data_storage_hx = { + 'tube_inner_dia': 0.032, + 'tube_outer_dia': 0.036, + 'k_steel': 21.5, + 'number_tubes': 20, + 'shell_inner_dia': 1 + } + + m.fs.tube_inner_dia = pyo.Param( + initialize=m.fs.data_storage_hx['tube_inner_dia'], + units=pyunits.m, + doc='Tube inner diameter in m') + m.fs.tube_outer_dia = pyo.Param( + initialize=m.fs.data_storage_hx['tube_outer_dia'], + units=pyunits.m, + doc='Tube outer diameter in m') + m.fs.k_steel = pyo.Param( + initialize=m.fs.data_storage_hx['k_steel'], + units=pyunits.W / (pyunits.m * pyunits.K), + doc='Thermal conductivity of steel in W/m.K') + m.fs.n_tubes = pyo.Param( + initialize=m.fs.data_storage_hx['number_tubes'], + doc='Number of tubes') + m.fs.shell_inner_dia = pyo.Param( + initialize=m.fs.data_storage_hx['shell_inner_dia'], + units=pyunits.m, + doc='Shell inner diameter in m') + + # Calculate sectional area of storage heat exchangers + m.fs.tube_cs_area = pyo.Expression( + expr=(pi / 4) * + (m.fs.tube_inner_dia ** 2), + doc="Tube cross sectional area") + m.fs.tube_out_area = pyo.Expression( + expr=(pi / 4) * + (m.fs.tube_outer_dia ** 2), + doc="Tube cross sectional area including thickness in m2") + m.fs.shell_eff_area = pyo.Expression( + expr=( + (pi / 4) * + (m.fs.shell_inner_dia ** 2) - + m.fs.n_tubes * + m.fs.tube_out_area), + doc="Effective shell cross sectional area in m2") + + # Calculate ratios for overall heat transfer coefficients + m.fs.tube_dia_ratio = (m.fs.tube_outer_dia / m.fs.tube_inner_dia) + m.fs.log_tube_dia_ratio = log(m.fs.tube_dia_ratio) + + # Data for main flowsheet operation. The q baseline_charge + # corresponds to heat duty of a plant with no storage and + # producing 400 MW power + m.data_cost = { + 'coal_price': 2.11e-9, + 'solar_salt_price': 0.49, + } + m.fs.coal_price = pyo.Param( + initialize=m.data_cost['coal_price'], + doc='Coal price based on HHV for Illinois No.6 (NETL Report) in $/J') + m.fs.solar_salt_price = pyo.Param( + initialize=m.data_cost['solar_salt_price'], + doc='Solar salt price in $/kg') + + +def _make_constraints(m, method=None, max_power=None): + + m.fs.production_cons.deactivate() + @m.fs.Constraint(m.fs.time) + def production_cons_with_storage(b, t): + return ( + ( + (-1e-6) * (pyunits.MW / pyunits.W) * + sum(b.turbine[p].work_mechanical[t] for p in m.set_turbine) + - b.hx_pump_work + ) == + b.plant_power_out[t] + ) + + m.fs.net_power = pyo.Expression( + expr=( + m.fs.plant_power_out[0] + + m.fs.discharge_turbine_work + ) + ) + + m.fs.boiler_efficiency = pyo.Var( + initialize=0.9, + bounds=(0, 1), + doc="Boiler efficiency in fraction" + ) + m.fs.boiler_efficiency_eq = pyo.Constraint( + expr=m.fs.boiler_efficiency == ( + 0.2143 * (m.fs.net_power / max_power) + + 0.7357 + ), + doc="Boiler efficiency in fraction" + ) + + # m.fs.coal_heat_duty = pyo.Var( + # initialize=1000, + # bounds=(0, 1e5), + # doc="Coal heat duty supplied to boiler in MW") + + if method == "with_efficiency": + # m.fs.coal_heat_duty_eq = pyo.Constraint( + # expr=m.fs.coal_heat_duty * m.fs.boiler_efficiency == + # m.fs.plant_heat_duty[0] + # ) + m.fs.coal_heat_duty = pyo.Expression( + expr=m.fs.plant_heat_duty[0] / m.fs.boiler_efficiency + ) + else: + # m.fs.coal_heat_duty_eq = pyo.Constraint( + # expr=m.fs.coal_heat_duty == + # m.fs.plant_heat_duty[0] + # ) + m.fs.coal_heat_duty = pyo.Expression( + expr=m.fs.plant_heat_duty[0] + ) + + m.fs.cycle_efficiency = pyo.Var( + initialize=0.4, + bounds=(0, 1), + doc="Cycle efficiency in fraction" + ) + m.fs.cycle_efficiency_eq = pyo.Constraint( + expr=m.fs.cycle_efficiency * m.fs.coal_heat_duty == m.fs.net_power, + doc="Cycle efficiency in fraction" + ) + + +def add_disjunction(m): + """Add storage fluid selection and steam source disjunctions to the + model + """ + + m.fs.operation_mode_disjunction = Disjunction( + expr=[m.fs.no_storage_mode_disjunct, + m.fs.charge_mode_disjunct, + m.fs.discharge_mode_disjunct]) + + # Expand arcs within the disjuncts + expand_arcs.obj_iter_kwds['descend_into'] = (Block, Disjunct) + TransformationFactory("network.expand_arcs").apply_to(m.fs) + + return m + + +def no_storage_mode_disjunct_equations(disj): + m = disj.model() + + # Connect cycle + m.fs.no_storage_mode_disjunct.rh1_to_turb3 = Arc( + source=m.fs.reheater[1].outlet, + destination=m.fs.turbine[3].inlet, + doc="Connection from reheater 1 to turbine 3" + ) + m.fs.no_storage_mode_disjunct.fwh9_to_boiler = Arc( + source=m.fs.fwh[9].tube_outlet, + destination=m.fs.boiler.inlet, + doc="Connection from FWH9 to boiler" + ) + m.fs.no_storage_mode_disjunct.condpump_to_fwh1 = Arc( + source=m.fs.cond_pump.outlet, + destination=m.fs.fwh[1].tube_inlet, + doc="Connection from condenser pump to FWH1" + ) + + # Set global constraints that depend on the charge and discharge + # operation modes to zero since the units do not exist in no + # storage mode + m.fs.no_storage_mode_disjunct.eq_salt_amount_in_storage = pyo.Constraint( + expr=m.fs.salt_storage == 0 + ) + # m.fs.no_storage_mode_disjunct.eq_cooler_heat_duty = pyo.Constraint( + # expr=m.fs.cooler_heat_duty == 0 + # ) + m.fs.no_storage_mode_disjunct.eq_hx_pump_work = pyo.Constraint( + expr=m.fs.hx_pump_work == 0 + ) + m.fs.no_storage_mode_disjunct.eq_discharge_turbine_work = pyo.Constraint( + expr=m.fs.discharge_turbine_work == 0 + ) + + +def charge_mode_disjunct_equations(disj): + m = disj.model() + + # Declare units for the charge storage system: A splitter to + # divert some steam from high pressure inlet and intermediate + # pressure inlet to charge the storage heat exchanger, a charge + # heat exchanger, a pump, and a mixer. A pump is used to increase + # the pressure of the water to allow mixing it at a desired + # location within the plant. + m.fs.charge_mode_disjunct.ess_charge_split = HelmSplitter( + property_package=m.fs.prop_water, + outlet_list=["to_hxc", "to_turbine"] + ) + + m.fs.charge_mode_disjunct.hxc = HeatExchanger( + delta_temperature_callback=delta_temperature_underwood_callback, + hot_side_name="shell", + cold_side_name="tube", + shell={"property_package": m.fs.prop_water}, + tube={"property_package": m.fs.solar_salt_properties} + ) + + m.fs.charge_mode_disjunct.hx_pump = PressureChanger( + property_package=m.fs.prop_water, + material_balance_type=MaterialBalanceType.componentTotal, + thermodynamic_assumption=ThermodynamicAssumption.pump, + ) + + m.fs.charge_mode_disjunct.mixer2 = HelmMixer( + momentum_mixing_type=MomentumMixingType.none, + inlet_list=["from_fwh9", "from_hx_pump"], + property_package=m.fs.prop_water, + ) + + # Calculate the overall heat transfer coefficient for the Solar + # salt charge heat exchanger. For that, first calculate Reynolds + # number, Prandtl number, and Nusselt number. + solar_hxc = m.fs.charge_mode_disjunct.hxc + solar_hxc.salt_reynolds_number = pyo.Expression( + expr=( + (solar_hxc.tube_inlet.flow_mass[0] * + m.fs.tube_outer_dia) / + (m.fs.shell_eff_area * + solar_hxc.cold_side.properties_in[0].visc_d_phase["Liq"]) + ), + doc="Salt Reynolds Number") + solar_hxc.salt_prandtl_number = pyo.Expression( + expr=( + solar_hxc.cold_side.properties_in[0].cp_mass["Liq"] * + solar_hxc.cold_side.properties_in[0].visc_d_phase["Liq"] / + solar_hxc.cold_side.properties_in[0].therm_cond_phase["Liq"] + ), + doc="Salt Prandtl Number") + solar_hxc.salt_prandtl_wall = pyo.Expression( + expr=( + solar_hxc.cold_side.properties_out[0].cp_mass["Liq"] * + solar_hxc.cold_side.properties_out[0].visc_d_phase["Liq"] / + solar_hxc.cold_side.properties_out[0].therm_cond_phase["Liq"] + ), + doc="Salt Prandtl Number at wall") + solar_hxc.salt_nusselt_number = pyo.Expression( + expr=( + 0.35 * + (solar_hxc.salt_reynolds_number**0.6) * + (solar_hxc.salt_prandtl_number**0.4) * + ((solar_hxc.salt_prandtl_number / + solar_hxc.salt_prandtl_wall) ** 0.25) * + (2**0.2) + ), + doc="Salt Nusslet Number from 2019, App Ener (233-234), 126") + solar_hxc.steam_reynolds_number = pyo.Expression( + expr=( + solar_hxc.shell_inlet.flow_mol[0] * + solar_hxc.hot_side.properties_in[0].mw * + m.fs.tube_inner_dia / + (m.fs.tube_cs_area * + m.fs.n_tubes * + solar_hxc.hot_side.properties_in[0].visc_d_phase["Vap"]) + ), + doc="Steam Reynolds Number") + solar_hxc.steam_prandtl_number = pyo.Expression( + expr=( + (solar_hxc.hot_side.properties_in[0].cp_mol / + solar_hxc.hot_side.properties_in[0].mw) * + solar_hxc.hot_side.properties_in[0].visc_d_phase["Vap"] / + solar_hxc.hot_side.properties_in[0].therm_cond_phase["Vap"] + ), + doc="Steam Prandtl Number") + solar_hxc.steam_nusselt_number = pyo.Expression( + expr=( + 0.023 * + (solar_hxc.steam_reynolds_number**0.8) * + (solar_hxc.steam_prandtl_number**(0.33)) * + ((solar_hxc.hot_side.properties_in[0].visc_d_phase["Vap"] / + solar_hxc.hot_side.properties_out[0].visc_d_phase["Liq"]) ** 0.14) + ), + doc="Steam Nusslet Number from 2001 Zavoico, Sandia") + + # Calculate heat transfer coefficients for the salt and steam + # sides of charge heat exchanger + solar_hxc.h_salt = pyo.Expression( + expr=( + solar_hxc.cold_side.properties_in[0].therm_cond_phase["Liq"] * + solar_hxc.salt_nusselt_number / + m.fs.tube_outer_dia + ), + doc="Salt side convective heat transfer coefficient [W/mK]") + solar_hxc.h_steam = pyo.Expression( + expr=( + solar_hxc.hot_side.properties_in[0].therm_cond_phase["Vap"] * + solar_hxc.steam_nusselt_number / + m.fs.tube_inner_dia + ), + doc="Steam side convective heat transfer coefficient [W/mK]") + + @m.fs.charge_mode_disjunct.hxc.Constraint( + doc="Solar salt charge heat exchanger overall heat transfer coefficient") + def constraint_hxc_ohtc(b): + return ( + b.overall_heat_transfer_coefficient[0] * + (2 * m.fs.k_steel * + b.h_steam + + m.fs.tube_outer_dia * + m.fs.log_tube_dia_ratio * + b.h_salt * + b.h_steam + + m.fs.tube_dia_ratio * + b.h_salt * + 2 * m.fs.k_steel) + ) == (2 * m.fs.k_steel * + b.h_salt * + b.h_steam) + + + # Add constraint to ensure that the mixer 2 outlet is at the + # minimum pressure + m.fs.charge_mode_disjunct.mixer2_pressure_constraint = pyo.Constraint( + expr=m.fs.charge_mode_disjunct.mixer2.from_fwh9_state[0].pressure == + m.fs.charge_mode_disjunct.mixer2.mixed_state[0].pressure, + doc="Mixer 2 outlet pressure equal to min inlet pressure") + + # Add pump pressure constraint + m.fs.charge_mode_disjunct.constraint_hxpump_presout = pyo.Constraint( + expr=m.fs.charge_mode_disjunct.hx_pump.outlet.pressure[0] >= + m.main_steam_pressure * 1.1231 + # expr=m.fs.charge_mode_disjunct.hx_pump.outlet.pressure[0] == + # m.main_steam_pressure * 1.1231 + ) + + # Reconnect condenser pump to FWH1 + m.fs.charge_mode_disjunct.condpump_to_fwh1 = Arc( + source=m.fs.cond_pump.outlet, + destination=m.fs.fwh[1].tube_inlet, + doc="Connection from condenser pump to FWH1" + ) + + # Declare arcs to connect storage charge system to the plant + m.fs.charge_mode_disjunct.rh1_to_esscharg = Arc( + source=m.fs.reheater[1].outlet, + destination=m.fs.charge_mode_disjunct.ess_charge_split.inlet, + doc="Connection from reheater 1 to HP splitter" + ) + m.fs.charge_mode_disjunct.esscharg_to_turb3 = Arc( + source=m.fs.charge_mode_disjunct.ess_charge_split.to_turbine, + destination=m.fs.turbine[3].inlet, + doc="Connection from HP splitter to turbine 3" + ) + m.fs.charge_mode_disjunct.esscharg_to_hxc = Arc( + source=m.fs.charge_mode_disjunct.ess_charge_split.to_hxc, + destination=m.fs.charge_mode_disjunct.hxc.shell_inlet, + doc="Connection from HP splitter to HXC inlet 1" + ) + m.fs.charge_mode_disjunct.hxc_to_hxpump = Arc( + source=m.fs.charge_mode_disjunct.hxc.shell_outlet, + destination=m.fs.charge_mode_disjunct.hx_pump.inlet, + doc="Connection from HXC to HX pump" + ) + + # Declare arcs to connect the mixer 2 to the plant + m.fs.charge_mode_disjunct.fwh9_to_mix2 = Arc( + source=m.fs.fwh[9].tube_outlet, + destination=m.fs.charge_mode_disjunct.mixer2.from_fwh9, + doc="Connection from FWH9 outlet to mixer2" + ) + m.fs.charge_mode_disjunct.hxpump_to_mix2 = Arc( + source=m.fs.charge_mode_disjunct.hx_pump.outlet, + destination=m.fs.charge_mode_disjunct.mixer2.from_hx_pump, + doc="Connection from HX pump to mixer 2" + ) + m.fs.charge_mode_disjunct.mix2_to_boiler = Arc( + source=m.fs.charge_mode_disjunct.mixer2.outlet, + destination=m.fs.boiler.inlet, + doc="Connection from fwh9 outlet to boiler" + ) + + # Declare constraints to save global variables + m.fs.charge_mode_disjunct.eq_salt_amount_in_charge_storage = pyo.Constraint( + expr=m.fs.salt_storage == m.fs.charge_mode_disjunct.hxc.tube_inlet.flow_mass[0] + ) + m.fs.charge_mode_disjunct.eq_hx_pump_work = pyo.Constraint( + expr=m.fs.hx_pump_work == ( + (1e-6) * (pyunits.MW / pyunits.W) * + m.fs.charge_mode_disjunct.hx_pump.control_volume.work[0] + ) + ) + m.fs.charge_mode_disjunct.eq_discharge_turbine_work = pyo.Constraint( + expr=m.fs.discharge_turbine_work == 0 + ) + + # m.fs.charge_mode_disjunct.eq_charge_heat_duty = pyo.Constraint( + # expr=( + # (1e-6) * (pyunits.MW / pyunits.W) * + # m.fs.charge_mode_disjunct.hxc.heat_duty[0] + # ) <= m.max_storage_heat_duty + # ) + + # Save area and hot salt temperature in global variable + m.fs.charge_mode_disjunct.eq_charge_area = pyo.Constraint( + expr=m.fs.charge_area == m.fs.charge_mode_disjunct.hxc.area + ) + m.fs.charge_mode_disjunct.eq_hot_salt_temperature = pyo.Constraint( + expr=m.fs.hot_salt_temp == m.fs.charge_mode_disjunct.hxc.tube_outlet.temperature[0] + ) + + +def discharge_mode_disjunct_equations(disj): + m = disj.model() + + # Declare units for the discharge storage system: A splitter to + # divert some condensate from the feed water heater train to be + # heated up in the discharge heat exchanger, a discharge heat + # exchanger, and a turbine to produce extra energy. + m.fs.discharge_mode_disjunct.ess_discharge_split = HelmSplitter( + property_package=m.fs.prop_water, + outlet_list=["to_hxd", "to_fwh1"] + ) + + m.fs.discharge_mode_disjunct.hxd = HeatExchanger( + delta_temperature_callback=delta_temperature_underwood_callback, + hot_side_name="shell", + cold_side_name="tube", + shell={"property_package": m.fs.solar_salt_properties}, + tube={"property_package": m.fs.prop_water} + ) + + m.fs.discharge_mode_disjunct.es_turbine = HelmTurbineStage( + property_package=m.fs.prop_water + ) + m.fs.discharge_mode_disjunct.eq_turbine_temperature_out = pyo.Constraint( + expr=( + m.fs.discharge_mode_disjunct.es_turbine.control_volume.properties_out[0].temperature == + m.fs.discharge_mode_disjunct.es_turbine.control_volume.properties_out[0].temperature_sat + 1 + ) + ) + + # Calculate the overall heat transfer coefficient for the Solar + # salt charge heat exchanger. For that, first calculate Reynolds + # number, Prandtl number, and Nusselt number. + solar_hxd = m.fs.discharge_mode_disjunct.hxd + solar_hxd.salt_reynolds_number = pyo.Expression( + expr=( + solar_hxd.shell_inlet.flow_mass[0] + * m.fs.tube_outer_dia + / (m.fs.shell_eff_area + * solar_hxd.hot_side.properties_in[0].visc_d_phase["Liq"]) + ), + doc="Salt Reynolds Number" + ) + solar_hxd.salt_prandtl_number = pyo.Expression( + expr=( + solar_hxd.hot_side.properties_in[0].cp_mass["Liq"] + * solar_hxd.hot_side.properties_in[0].visc_d_phase["Liq"] + / solar_hxd.hot_side.properties_in[0].therm_cond_phase["Liq"] + ), + doc="Salt Prandtl Number" + ) + # Assuming that the wall conditions are same as those at the outlet + solar_hxd.salt_prandtl_wall = pyo.Expression( + expr=( + solar_hxd.hot_side.properties_out[0].cp_mass["Liq"] + * solar_hxd.hot_side.properties_out[0].visc_d_phase["Liq"] + / solar_hxd.hot_side.properties_out[0].therm_cond_phase["Liq"] + ), + doc="Wall Salt Prandtl Number" + ) + solar_hxd.salt_nusselt_number = pyo.Expression( + expr=( + 0.35 * (solar_hxd.salt_reynolds_number**0.6) + * (solar_hxd.salt_prandtl_number**0.4) + * ((solar_hxd.salt_prandtl_number + / solar_hxd.salt_prandtl_wall)**0.25) + * (2**0.2) + ), + doc="Solar Salt Nusslet Number from 2019, App Ener (233-234), 126" + ) + solar_hxd.steam_reynolds_number = pyo.Expression( + expr=( + solar_hxd.tube_inlet.flow_mol[0] + * solar_hxd.cold_side.properties_in[0].mw + * m.fs.tube_inner_dia + / (m.fs.tube_cs_area + * m.fs.n_tubes + * solar_hxd.cold_side.properties_in[0].visc_d_phase["Liq"]) + ), + doc="Steam Reynolds Number" + ) + solar_hxd.steam_prandtl_number = pyo.Expression( + expr=( + (solar_hxd.cold_side.properties_in[0].cp_mol + / solar_hxd.cold_side.properties_in[0].mw) + * solar_hxd.cold_side.properties_in[0].visc_d_phase["Liq"] + / solar_hxd.cold_side.properties_in[0].therm_cond_phase["Liq"] + ), + doc="Steam Prandtl Number" + ) + solar_hxd.steam_nusselt_number = pyo.Expression( + expr=( + 0.023 * (solar_hxd.steam_reynolds_number ** 0.8) + * (solar_hxd.steam_prandtl_number ** (0.33)) + * ((solar_hxd.cold_side.properties_in[0].visc_d_phase["Liq"] + / solar_hxd.cold_side.properties_out[0].visc_d_phase["Vap"] + ) ** 0.14) + ), + doc="Steam Nusslet Number from 2001 Zavoico, Sandia" + ) + + # Calculate discharge heat exchanger salt and steam side heat + # transfer coefficients + solar_hxd.h_salt = pyo.Expression( + expr=( + solar_hxd.hot_side.properties_in[0].therm_cond_phase["Liq"] + * solar_hxd.salt_nusselt_number / m.fs.tube_outer_dia + ), + doc="Salt side convective heat transfer coefficient [W/mK]" + ) + solar_hxd.h_steam = pyo.Expression( + expr=( + solar_hxd.cold_side.properties_in[0].therm_cond_phase["Liq"] + * solar_hxd.steam_nusselt_number / m.fs.tube_inner_dia + ), + doc="Steam side convective heat transfer coefficient [W/mK]" + ) + + @m.fs.discharge_mode_disjunct.hxd.Constraint( + doc="Solar salt discharge heat exchanger overall heat transfer coefficient") + def constraint_hxd_ohtc(b): + return ( + b.overall_heat_transfer_coefficient[0] * + (2 * m.fs.k_steel * + b.h_steam + + m.fs.tube_outer_dia * + m.fs.log_tube_dia_ratio * + b.h_salt * + b.h_steam + + m.fs.tube_dia_ratio * + b.h_salt * + 2 * m.fs.k_steel) + ) == (2 * m.fs.k_steel * + b.h_salt * + b.h_steam) + + # Reconnect arcs that were disconnected in the global model + m.fs.discharge_mode_disjunct.rh1_to_turb3 = Arc( + source=m.fs.reheater[1].outlet, + destination=m.fs.turbine[3].inlet + ) + m.fs.discharge_mode_disjunct.fwh9_to_boiler = Arc( + source=m.fs.fwh[9].tube_outlet, + destination=m.fs.boiler.inlet + ) + + # Declare arcs to connect discharge heat exchanger to plant + m.fs.discharge_mode_disjunct.condpump_to_essdisch = Arc( + source=m.fs.cond_pump.outlet, + destination=m.fs.discharge_mode_disjunct.ess_discharge_split.inlet, + doc="Connection from condenser pump outlet to BFP splitter" + ) + m.fs.discharge_mode_disjunct.essdisch_to_fwh1 = Arc( + source=m.fs.discharge_mode_disjunct.ess_discharge_split.to_fwh1, + destination=m.fs.fwh[1].tube_inlet, + doc="Connection from condenser pump splitter to FWH1" + ) + m.fs.discharge_mode_disjunct.essdisch_to_hxd = Arc( + source=m.fs.discharge_mode_disjunct.ess_discharge_split.to_hxd, + destination=m.fs.discharge_mode_disjunct.hxd.tube_inlet, + doc="Connection from condenser pump splitter to discharge heat exchanger" + ) + m.fs.discharge_mode_disjunct.hxd_to_esturbine = Arc( + source=m.fs.discharge_mode_disjunct.hxd.tube_outlet, + destination=m.fs.discharge_mode_disjunct.es_turbine.inlet, + doc="Connection from discharge heat exchanger to ES turbine" + ) + + + # Save the amount of salt used in the discharge heat exchanger + m.fs.discharge_mode_disjunct.eq_salt_amount_in_discharge_storage = pyo.Constraint( + expr=m.fs.salt_storage == -m.fs.discharge_mode_disjunct.hxd.shell_inlet.flow_mass[0] + ) + + # Fix HX pump work to zero since it does not exist during + # discharge mode and the value is saved in a global variable + m.fs.discharge_mode_disjunct.eq_hx_pump_work = pyo.Constraint( + expr=m.fs.hx_pump_work == 0 + ) + + m.fs.discharge_mode_disjunct.eq_discharge_turbine_work = pyo.Constraint( + expr=m.fs.discharge_turbine_work == ( + (-1e-6) * (pyunits.MW / pyunits.W) * + m.fs.discharge_mode_disjunct.es_turbine.work[0] + ) + ) + + # m.fs.discharge_mode_disjunct.eq_discharge_heat_duty = pyo.Constraint( + # expr=( + # (1e-6) * (pyunits.MW / pyunits.W) * + # m.fs.discharge_mode_disjunct.hxd.heat_duty[0] + + # m.fs.energy_loss + # ) <= m.max_storage_heat_duty + # ) + + m.fs.discharge_mode_disjunct.eq_charge_area = pyo.Constraint( + expr=m.fs.discharge_area == m.fs.discharge_mode_disjunct.hxd.area + ) + + +def _deactivate_arcs(m): + """Deactivate arcs""" + + # Disconnect arcs from ultra supercritical plant base model to + # connect the charge heat exchanger + for arc_s in [m.fs.rh1_to_turb3, + m.fs.fwh9_to_boiler, + m.fs.condpump_to_fwh1]: + arc_s.expanded_block.enth_mol_equality.deactivate() + arc_s.expanded_block.flow_mol_equality.deactivate() + arc_s.expanded_block.pressure_equality.deactivate() + + +def set_model_input(m): + """Define model inputs and fixed variables or parameter values + + The parameter values in this block, unless otherwise stated + explicitly, are either assumed or estimated for a total power out + of 437 MW. + + Unless stated otherwise, the units are: temperature in K, pressure + in Pa, flow in mol/s, massic flow in kg/s, and heat and heat duty + in W + + """ + + ########################################################################### + # Storage heat exchanger section + ########################################################################### + # Add heat exchanger area from supercritical plant model_input. For + # conceptual design optimization, area is unfixed and optimized + m.fs.charge_mode_disjunct.hxc.area.fix(2500) + m.fs.discharge_mode_disjunct.hxd.area.fix(2500) + + # Define storage fluid conditions. The fluid inlet flow is fixed + # during initialization, but is unfixed and determined during + # optimization + m.fs.charge_mode_disjunct.hxc.tube_inlet.flow_mass.fix(140) + m.fs.charge_mode_disjunct.hxc.tube_inlet.temperature.fix(513.15) + m.fs.charge_mode_disjunct.hxc.tube_inlet.pressure.fix(101325) + + m.fs.discharge_mode_disjunct.hxd.shell_inlet.flow_mass.fix(200) + m.fs.discharge_mode_disjunct.hxd.shell_inlet.temperature.fix(853.15) + m.fs.discharge_mode_disjunct.hxd.shell_inlet.pressure.fix(101325) + + # HX pump efficiecncy assumption + m.fs.charge_mode_disjunct.hx_pump.efficiency_pump.fix(0.80) + # m.fs.charge.hx_pump.outlet.pressure[0].fix(m.main_steam_pressure * 1.1231) + + # m.fs.discharge_mode_disjunct.es_turbine.ratioP.fix(0.0286) + m.fs.discharge_mode_disjunct.es_turbine.efficiency_isentropic.fix(0.8) + + ########################################################################### + # ESS VHP and HP splitters # + ########################################################################### + # The model is built for a fixed flow of steam through the + # charger. This flow of steam to the charger is unfixed and + # determine during design optimization + m.fs.charge_mode_disjunct.ess_charge_split.split_fraction[0, "to_hxc"].fix(0.1) + m.fs.discharge_mode_disjunct.ess_discharge_split.split_fraction[0, "to_hxd"].fix(0.1) + + # Fix global variables + # m.fs.hx_pump_work.fix(0) + # m.fs.discharge_turbine_work.fix(0) + + +def set_scaling_factors(m): + """Scaling factors in the flowsheet + + """ + + # Include scaling factors for Solar salt charge and discharge heat + # exchanger. + for fluid in [m.fs.charge_mode_disjunct.hxc, + m.fs.discharge_mode_disjunct.hxd]: + iscale.set_scaling_factor(fluid.area, 1e-2) + iscale.set_scaling_factor( + fluid.overall_heat_transfer_coefficient, 1e-3) + iscale.set_scaling_factor(fluid.shell.heat, 1e-6) + iscale.set_scaling_factor(fluid.tube.heat, 1e-6) + + iscale.set_scaling_factor(m.fs.charge_mode_disjunct.hx_pump.control_volume.work, 1e-6) + iscale.set_scaling_factor(m.fs.discharge_mode_disjunct.es_turbine.control_volume.work, 1e-6) + + # Calculate scaling factors + iscale.calculate_scaling_factors(m) + + +def set_var_scaling(m): + iscale.set_scaling_factor(m.fs.fuel_cost, 1e-3) + iscale.set_scaling_factor(m.fs.plant_fixed_operating_cost, 1e-3) + iscale.set_scaling_factor(m.fs.plant_variable_operating_cost, 1e-3) + # iscale.set_scaling_factor(m.fs.plant_capital_cost, 1e-3) + + iscale.set_scaling_factor(m.fs.salt_amount, 1e-3) + iscale.set_scaling_factor(m.fs.salt_inventory_hot, 1e-3) + iscale.set_scaling_factor(m.fs.salt_inventory_cold, 1e-3) + iscale.set_scaling_factor(m.fs.previous_salt_inventory_hot, 1e-3) + iscale.set_scaling_factor(m.fs.previous_salt_inventory_cold, 1e-3) + + iscale.set_scaling_factor(m.fs.constraint_salt_inventory_hot, 1e-3) + + iscale.set_scaling_factor(m.fs.charge_mode_disjunct.capital_cost, 1e-3) + iscale.set_scaling_factor(m.fs.discharge_mode_disjunct.capital_cost, 1e-3) + # iscale.set_scaling_factor(m.fs.storage_capital_cost, 1e-3) + + # Calculate scaling factors + iscale.calculate_scaling_factors(m) + + +def initialize(m, + solver=None, + deact_arcs_after_init=None, + outlvl=idaeslog.WARNING, + optarg={"tol": 1e-8, "max_iter": 300}): + """Initialize the units included in the charge model + """ + print() + print('>> Start initialization of charge units in ultra-supercritical plant') + # print(' {} DOFs before initialization'.format(degrees_of_freedom(m))) + + optarg = { + "max_iter": 300, + "halt_on_ampl_error": "yes", + } + solver = get_solver(solver, optarg) + + # Include scaling factors + set_scaling_factors(m) + # iscale.calculate_scaling_factors(m) + + # Initialize all units in charge mode operation + propagate_state(m.fs.charge_mode_disjunct.rh1_to_esscharg) + m.fs.charge_mode_disjunct.ess_charge_split.initialize(outlvl=outlvl, + optarg=solver.options) + propagate_state(m.fs.charge_mode_disjunct.esscharg_to_hxc) + m.fs.charge_mode_disjunct.hxc.initialize(outlvl=outlvl, + optarg=solver.options) + + if not deact_arcs_after_init: + # Reinitialize and fix turbine 3 inlet since the arc is + # disconnected + propagate_state(m.fs.charge_mode_disjunct.esscharg_to_turb3) + m.fs.turbine[3].inlet.fix() + m.fs.turbine[3].initialize(outlvl=outlvl, + optarg=solver.options) + + propagate_state(m.fs.charge_mode_disjunct.hxc_to_hxpump) + m.fs.charge_mode_disjunct.hx_pump.initialize(outlvl=outlvl, + optarg=solver.options) + + # Fix value of global variable + m.fs.hx_pump_work.fix((1e-6) * (pyunits.MW / pyunits.W) * + m.fs.charge_mode_disjunct.hx_pump.control_volume.work[0].value) + + propagate_state(m.fs.charge_mode_disjunct.fwh9_to_mix2) + propagate_state(m.fs.charge_mode_disjunct.hxpump_to_mix2) + m.fs.charge_mode_disjunct.mixer2.initialize(outlvl=outlvl) + + # Initialize all units in discharge mode operation + propagate_state(m.fs.discharge_mode_disjunct.condpump_to_essdisch) + m.fs.discharge_mode_disjunct.ess_discharge_split.initialize(outlvl=outlvl, + optarg=solver.options) + propagate_state(m.fs.discharge_mode_disjunct.essdisch_to_hxd) + m.fs.discharge_mode_disjunct.hxd.initialize(outlvl=outlvl, + optarg=solver.options) + propagate_state(m.fs.discharge_mode_disjunct.hxd_to_esturbine) + m.fs.discharge_mode_disjunct.es_turbine.initialize(outlvl=outlvl, + optarg=solver.options) + # Fix value of global variable + m.fs.discharge_turbine_work.fix((-1e-6) * (pyunits.MW / pyunits.W) * + m.fs.discharge_mode_disjunct.es_turbine.work[0].value) + + if not deact_arcs_after_init: + # Reinitialize FWH8 using bfp outlet + m.fs.fwh[8].fwh_vfrac_constraint.deactivate() + m.fs.fwh[8].tube_inlet.flow_mol.fix(m.fs.bfp.outlet.flow_mol[0]) + m.fs.fwh[8].tube_inlet.enth_mol.fix(m.fs.bfp.outlet.enth_mol[0]) + m.fs.fwh[8].tube_inlet.pressure.fix(m.fs.bfp.outlet.pressure[0]) + m.fs.fwh[8].initialize(outlvl=outlvl, + optarg=solver.options) + m.fs.fwh[8].fwh_vfrac_constraint.activate() + + # Check and raise an error if the degrees of freedom are not 0 + # print(' {} DOFs before initialization solution'.format(degrees_of_freedom(m))) + if not degrees_of_freedom(m) == 0: + raise ConfigurationError( + "The degrees of freedom after building the model are not 0. " + "You have {} degrees of freedom. " + "Please check your inputs to ensure a square problem " + "before initializing the model.".format(degrees_of_freedom(m)) + ) + + res = solver.solve(m, + tee=False, + symbolic_solver_labels=True, + options=optarg) + + print(" **Solver termination for Charge Model Initialization:", + res.solver.termination_condition) + # print(' {} DOFs after initialization solution'.format(degrees_of_freedom(m))) + print('>> End initialization of charge units in ultra-supercritical plant') + print() + + +def build_costing(m): + """Add cost correlations for the storage design analysis. + + This function is used to estimate the capital and operatig cost of + integrating an energy storage system. It contains cost + correlations to estimate: (i) the capital cost of charge heat + exchanger and salt inventory and (ii) the operating costs for 1 + year. + + """ + + ############################################################## + # Add capital cost + # 1. Calculate change and discharge heat exchangers costs + # 2. Calculate total capital cost for charge and discharge heat + # exchangers + ############################################################## + + # Add IDAES costing method + m.fs.costing = SSLWCosting() + + ###### 1. Calculate charge and discharge heat exchangers costs + # Calculate and initialize the Solar salt charge and discharge + # heat exchangers coss, which are estimated using the IDAES + # costing method with default options, i.e., a U-tube heat + # exchanger, stainless steel material, and a tube length of + # 12ft. Refer to costing documentation to change any of the + # default options. The purchase cost of heat exchanger has to be + # annualized when used + for storage_hx in [m.fs.charge_mode_disjunct.hxc, + m.fs.discharge_mode_disjunct.hxd]: + storage_hx.costing = UnitModelCostingBlock( + flowsheet_costing_block=m.fs.costing, + costing_method=SSLWCostingData.cost_heat_exchanger + ) + + ###### 2. Calculate total capital cost for charge and discharge + ###### heat exchangers + m.fs.charge_mode_disjunct.capital_cost = pyo.Var( + initialize=1000000, + bounds=(0, 1e7), + doc="Capital cost of charge heat exchanger in $/h") + def charge_solar_cap_cost_rule(b): + return b.capital_cost == ( + m.fs.charge_mode_disjunct.hxc.costing.capital_cost / + (m.fs.num_of_years * 365 * 24) + ) + m.fs.charge_mode_disjunct.cap_cost_eq = pyo.Constraint( + rule=charge_solar_cap_cost_rule) + + m.fs.discharge_mode_disjunct.capital_cost = pyo.Var( + initialize=1000000, + bounds=(0, 1e7), + doc="Capital cost of discharge heat exhcnager in $/h") + def discharge_solar_cap_cost_rule(b): + return b.capital_cost == ( + m.fs.discharge_mode_disjunct.hxd.costing.capital_cost / + (m.fs.num_of_years * 365 * 24) + ) + m.fs.discharge_mode_disjunct.cap_cost_eq = pyo.Constraint( + rule=discharge_solar_cap_cost_rule) + + # Save total storage annual capital cost at global level + m.fs.storage_capital_cost = pyo.Var( + initialize=1000000, + bounds=(0, 1e7), + doc="Annualized capital cost for solar salt in $/h") + + m.fs.no_storage_mode_disjunct.capital_cost_eq_constraint = pyo.Constraint( + expr=m.fs.storage_capital_cost == 0 + ) + m.fs.charge_mode_disjunct.capital_cost_eq_constraint = pyo.Constraint( + expr=m.fs.storage_capital_cost == m.fs.charge_mode_disjunct.capital_cost + ) + m.fs.discharge_mode_disjunct.capital_cost_eq_constraint = pyo.Constraint( + expr=m.fs.storage_capital_cost == m.fs.discharge_mode_disjunct.capital_cost + ) + + ########################################################################### + # Annual operating cost + ########################################################################### + m.fs.operating_hours = pyo.Expression( + expr=365 * 3600 * m.fs.hours_per_day, + doc="Number of operating hours per year") + m.fs.fuel_cost = pyo.Var( + initialize=1000000, + bounds=(0, 1e12), + doc="Operating cost in $/h") + + def fuel_cost_rule(b): + return b.fuel_cost == ( + b.operating_hours * + b.coal_price * + (b.coal_heat_duty * 1e6) + ) / (365 * 24) + m.fs.fuel_cost_eq = pyo.Constraint(rule=fuel_cost_rule) + + ########################################################################### + # Add capital and operating cost for full plant + ########################################################################### + + # Calculate capital cost for power plant + # m.fs.plant_capital_cost = pyo.Var( + # initialize=1000000, + # bounds=(0, 1e12), + # doc="Plant capital cost in $/hour") + m.fs.plant_fixed_operating_cost = pyo.Var( + initialize=1000000, + bounds=(0, 1e12), + doc="Plant fixed operating cost in $/hour") + m.fs.plant_variable_operating_cost = pyo.Var( + initialize=1000000, + bounds=(0, 1e12), + doc="Plant variable operating cost in $/hour") + + # def plant_cap_cost_rule(b): + # return m.fs.plant_capital_cost == ( + # ((2688973 * m.fs.plant_power_out[0] + # + 618968072) / + # (m.fs.num_of_years * 365 * 24) + # ) * (m.CE_index / 575.4) + # ) + # m.fs.plant_cap_cost_eq = pyo.Constraint(rule=plant_cap_cost_rule) + + def op_fixed_plant_cost_rule(b): + return b.plant_fixed_operating_cost == ( + ((16657.5 * b.plant_power_out[0] + + 6109833.3) / + (b.num_of_years * 365 * 24) + ) * (m.CE_index / 575.4) + ) + m.fs.op_fixed_plant_cost_eq = pyo.Constraint(rule=op_fixed_plant_cost_rule) + + def op_variable_plant_cost_rule(b): + return b.plant_variable_operating_cost == ( + (31754.7 * b.plant_power_out[0] + ) * (m.CE_index / 575.4) + ) / (365 * 24) + m.fs.op_variable_plant_cost_eq = pyo.Constraint( + rule=op_variable_plant_cost_rule) + + return m + + +def initialize_with_costing(m): + + optarg = { + "tol": 1e-8, + "max_iter": 300, + "halt_on_ampl_error": "yes", + } + solver = get_solver('ipopt', optarg) + + # Fix operating cost variable to initialize cost in a square + # problem + # m.fs.fuel_cost.fix(1e6) + + # Initialize capital costs for charge and discharge heat + # exchangers + calculate_variable_from_constraint( + m.fs.charge_mode_disjunct.capital_cost, + m.fs.charge_mode_disjunct.cap_cost_eq) + calculate_variable_from_constraint( + m.fs.discharge_mode_disjunct.capital_cost, + m.fs.discharge_mode_disjunct.cap_cost_eq) + + # Initialize operating cost + calculate_variable_from_constraint( + m.fs.fuel_cost, + m.fs.fuel_cost_eq) + + # # Initialize capital cost of power plant + # calculate_variable_from_constraint( + # m.fs.plant_capital_cost, + # m.fs.plant_cap_cost_eq) + + # Initialize plant fixed and variable operating costs + calculate_variable_from_constraint( + m.fs.plant_fixed_operating_cost, + m.fs.op_fixed_plant_cost_eq) + calculate_variable_from_constraint( + m.fs.plant_variable_operating_cost, + m.fs.op_variable_plant_cost_eq) + + print() + print('>> Start initialization of costing correlations') + + # Check and raise an error if the degrees of freedom are not 0 + # print(' {} DOFs before cost initialization'.format(degrees_of_freedom(m))) + if not degrees_of_freedom(m) == 0: + raise ConfigurationError( + "The degrees of freedom after building the model are not 0. " + "You have {} degrees of freedom. " + "Please check your inputs to ensure a square problem " + "before initializing the model.".format(degrees_of_freedom(m)) + ) + + res = solver.solve(m, + tee=False, + symbolic_solver_labels=True, + options=optarg) + print(" **Solver termination in cost initialization: ", + res.solver.termination_condition) + print('>> End initialization of costing correlations') + print() + + +def calculate_bounds(m): + m.fs.temperature_degrees = 5 + + # Calculate bounds for solar salt from properties expressions + m.fs.solar_salt_temperature_max = 853.15 + m.fs.temperature_degrees # in K + m.fs.solar_salt_temperature_min = 513.15 - m.fs.temperature_degrees # in K + # Note: min/max interchanged because at max temperature we obtain the min value + m.fs.solar_salt_enth_mass_max = ( + (m.fs.solar_salt_properties.cp_param_1.value * + (m.fs.solar_salt_temperature_max - 273.15)) + + (m.fs.solar_salt_properties.cp_param_2.value * 0.5 * \ + (m.fs.solar_salt_temperature_max - 273.15)**2) + ) + m.fs.solar_salt_enth_mass_min = ( + (m.fs.solar_salt_properties.cp_param_1.value * + (m.fs.solar_salt_temperature_min - 273.15)) + + (m.fs.solar_salt_properties.cp_param_2.value * 0.5 * \ + (m.fs.solar_salt_temperature_min - 273.15)**2) + ) + + m.fs.salt_enth_mass_max = m.fs.solar_salt_enth_mass_max + m.fs.salt_enth_mass_min = m.fs.solar_salt_enth_mass_min + + # print(' **Calculate bounds for solar salt') + # print(' Mass enthalpy max: {: >4.4f}, min: {: >4.4f}'.format( + # m.fs.solar_salt_enth_mass_max, m.fs.solar_salt_enth_mass_min)) + + +def add_bounds(m): + """Add bounds to units in charge model + + """ + + calculate_bounds(m) + + # Unless stated otherwise, the temperature is in K, pressure in + # Pa, flow in mol/s, massic flow in kg/s, and heat and heat duty + # in W + m.flow_max = m.main_flow * 3 # Units in mol/s + m.flow_min = 11804 # Units in mol/s + m.heat_duty_max = (m.max_storage_heat_duty * 1e6) # Units in MW + m.factor = 2.5 + m.flow_max_storage = 0.2 * m.flow_max + m.flow_min_storage = 1e-3 + + # Turbines + for k in m.set_turbine: + m.fs.turbine[k].work.setlb(-1e10) + m.fs.turbine[k].work.setub(0) + + # Booster + for unit_k in [m.fs.booster]: + unit_k.inlet.flow_mol[:].setlb(m.flow_min_storage) + unit_k.inlet.flow_mol[:].setub(m.flow_max) + unit_k.outlet.flow_mol[:].setlb(m.flow_min_storage) + unit_k.outlet.flow_mol[:].setub(m.flow_max) + + # Turbine splitters flow + for k in m.set_turbine_splitter: + m.fs.turbine_splitter[k].inlet.flow_mol[:].setlb(m.flow_min_storage) + m.fs.turbine_splitter[k].inlet.flow_mol[:].setub(m.flow_max) + m.fs.turbine_splitter[k].outlet_1.flow_mol[:].setlb(m.flow_min_storage) + m.fs.turbine_splitter[k].outlet_1.flow_mol[:].setub(m.flow_max) + m.fs.turbine_splitter[k].outlet_2.flow_mol[:].setlb(m.flow_min_storage) + m.fs.turbine_splitter[k].outlet_2.flow_mol[:].setub(m.flow_max) + + # Add bounds to all units in charge mode + for unit_in_charge in [m.fs.charge_mode_disjunct]: + # Charge heat exchanger (HXC) + unit_in_charge.hxc.shell_inlet.flow_mol.setlb(m.flow_min_storage) + unit_in_charge.hxc.shell_inlet.flow_mol.setub(m.flow_max_storage) + unit_in_charge.hxc.tube_inlet.flow_mass.setlb(m.flow_min_storage) + unit_in_charge.hxc.tube_inlet.flow_mass.setub(m.max_salt_flow) + unit_in_charge.hxc.shell_outlet.flow_mol.setlb(m.flow_min_storage) + unit_in_charge.hxc.shell_outlet.flow_mol.setub(m.flow_max_storage) + unit_in_charge.hxc.tube_outlet.flow_mass.setlb(m.flow_min_storage) + unit_in_charge.hxc.tube_outlet.flow_mass.setub(m.max_salt_flow) + unit_in_charge.hxc.tube_inlet.pressure.setlb(101320) + unit_in_charge.hxc.tube_inlet.pressure.setub(101330) + unit_in_charge.hxc.tube_outlet.pressure.setlb(101320) + unit_in_charge.hxc.tube_outlet.pressure.setub(101330) + unit_in_charge.hxc.heat_duty.setlb(0) + unit_in_charge.hxc.heat_duty.setub(m.heat_duty_max) + unit_in_charge.hxc.shell.heat.setlb(-m.heat_duty_max) + unit_in_charge.hxc.shell.heat.setub(0) + unit_in_charge.hxc.tube.heat.setlb(0) + unit_in_charge.hxc.tube.heat.setub(m.heat_duty_max) + unit_in_charge.hxc.tube.properties_in[:].enth_mass.setlb( + m.fs.salt_enth_mass_min / m.factor) + unit_in_charge.hxc.tube.properties_in[:].enth_mass.setub( + m.fs.salt_enth_mass_max * m.factor) + unit_in_charge.hxc.tube.properties_out[:].enth_mass.setlb( + m.fs.salt_enth_mass_min / m.factor) + unit_in_charge.hxc.tube.properties_out[:].enth_mass.setub( + m.fs.salt_enth_mass_max * m.factor) + # unit_in_charge.hxc.tube.properties_in[:].enth_mass.setlb(1) + # unit_in_charge.hxc.tube.properties_in[:].enth_mass.setub(1.5e6) + # unit_in_charge.hxc.tube.properties_out[:].enth_mass.setlb(1) + # unit_in_charge.hxc.tube.properties_out[:].enth_mass.setub(1.5e6) + unit_in_charge.hxc.overall_heat_transfer_coefficient.setlb(1) + unit_in_charge.hxc.overall_heat_transfer_coefficient.setub(10000) + unit_in_charge.hxc.area.setlb(m.min_area) + unit_in_charge.hxc.area.setub(m.max_area) + unit_in_charge.hxc.delta_temperature_in.setlb(9) + unit_in_charge.hxc.delta_temperature_out.setlb(5) + unit_in_charge.hxc.delta_temperature_in.setub(120) + unit_in_charge.hxc.delta_temperature_out.setub(100) + unit_in_charge.hxc.costing.pressure_factor.setlb(0) + unit_in_charge.hxc.costing.pressure_factor.setub(1e6) + unit_in_charge.hxc.costing.capital_cost.setlb(0) + unit_in_charge.hxc.costing.capital_cost.setub(1e8) + unit_in_charge.hxc.costing.base_cost_per_unit.setlb(0) + unit_in_charge.hxc.costing.base_cost_per_unit.setub(1e8) + unit_in_charge.hxc.costing.material_factor.setlb(0) + unit_in_charge.hxc.costing.material_factor.setub(100) + + # HX pump + for unit_k in [unit_in_charge.hx_pump]: + unit_k.inlet.flow_mol.setlb(0) + unit_k.inlet.flow_mol.setub(m.flow_max_storage) + unit_k.outlet.flow_mol.setlb(0) + unit_k.outlet.flow_mol.setub(m.flow_max_storage) + unit_k.deltaP.setlb(0) + unit_k.deltaP.setub(1e10) + unit_in_charge.hx_pump.work_mechanical[0].setlb(0) + unit_in_charge.hx_pump.work_mechanical[0].setub(1e10) + unit_in_charge.hx_pump.ratioP.setlb(0) + unit_in_charge.hx_pump.ratioP.setub(100) + unit_in_charge.hx_pump.work_fluid[0].setlb(0) + unit_in_charge.hx_pump.work_fluid[0].setub(1e8) + unit_in_charge.hx_pump.efficiency_pump[0].setlb(0) + unit_in_charge.hx_pump.efficiency_pump[0].setub(1) + + # HP splitter + unit_in_charge.ess_charge_split.inlet.flow_mol[:].setlb(m.flow_min_storage) + unit_in_charge.ess_charge_split.inlet.flow_mol[:].setub(m.flow_max) + unit_in_charge.ess_charge_split.to_hxc.flow_mol[:].setlb(m.flow_min_storage) + unit_in_charge.ess_charge_split.to_hxc.flow_mol[:].setub(m.flow_max_storage) + unit_in_charge.ess_charge_split.to_turbine.flow_mol[:].setlb(m.flow_min_storage) + unit_in_charge.ess_charge_split.to_turbine.flow_mol[:].setub(m.flow_max) + unit_in_charge.ess_charge_split.split_fraction[0.0, "to_hxc"].setlb(0) + unit_in_charge.ess_charge_split.split_fraction[0.0, "to_hxc"].setub(1) + unit_in_charge.ess_charge_split.split_fraction[0.0, "to_turbine"].setlb(0) + unit_in_charge.ess_charge_split.split_fraction[0.0, "to_turbine"].setub(1) + + # Mixer 2 + unit_in_charge.mixer2.from_fwh9.flow_mol.setlb(m.flow_min_storage) + unit_in_charge.mixer2.from_fwh9.flow_mol.setub(m.flow_max) + unit_in_charge.mixer2.from_hx_pump.flow_mol.setlb(0) + unit_in_charge.mixer2.from_hx_pump.flow_mol.setub(m.flow_max_storage) + unit_in_charge.mixer2.outlet.flow_mol.setlb(0) + unit_in_charge.mixer2.outlet.flow_mol.setub(m.flow_max) + + + # Add bounds to all units in discharge mode + for unit_in_discharge in [m.fs.discharge_mode_disjunct]: + # Discharge heat exchanger (HXD) + unit_in_discharge.hxd.shell_inlet.flow_mass.setlb(m.flow_min_storage) + unit_in_discharge.hxd.shell_inlet.flow_mass.setub(m.max_salt_flow) + unit_in_discharge.hxd.shell_outlet.flow_mass.setlb(m.flow_min_storage) + unit_in_discharge.hxd.shell_outlet.flow_mass.setub(m.max_salt_flow) + unit_in_discharge.hxd.tube_inlet.flow_mol.setlb(m.flow_min_storage) + unit_in_discharge.hxd.tube_inlet.flow_mol.setub(m.flow_max_storage) + unit_in_discharge.hxd.tube_outlet.flow_mol.setlb(m.flow_min_storage) + unit_in_discharge.hxd.tube_outlet.flow_mol.setub(m.flow_max_storage) + unit_in_discharge.hxd.shell_inlet.pressure.setlb(101320) + unit_in_discharge.hxd.shell_inlet.pressure.setub(101330) + unit_in_discharge.hxd.shell_outlet.pressure.setlb(101320) + unit_in_discharge.hxd.shell_outlet.pressure.setub(101330) + unit_in_discharge.hxd.heat_duty.setlb(0) + unit_in_discharge.hxd.heat_duty.setub(m.heat_duty_max) + unit_in_discharge.hxd.tube.heat.setlb(0) + unit_in_discharge.hxd.tube.heat.setub(m.heat_duty_max) + unit_in_discharge.hxd.shell.heat.setlb(-m.heat_duty_max) + unit_in_discharge.hxd.shell.heat.setub(0) + unit_in_discharge.hxd.shell.properties_in[:].enth_mass.setlb( + m.fs.salt_enth_mass_min / m.factor) + unit_in_discharge.hxd.shell.properties_in[:].enth_mass.setub( + m.fs.salt_enth_mass_max * m.factor) + unit_in_discharge.hxd.shell.properties_out[:].enth_mass.setlb( + m.fs.salt_enth_mass_min / m.factor) + unit_in_discharge.hxd.shell.properties_out[:].enth_mass.setub( + m.fs.salt_enth_mass_max * m.factor) + # unit_in_discharge.hxd.shell.properties_in[:].enth_mass.setlb(1) + # unit_in_discharge.hxd.shell.properties_in[:].enth_mass.setub(1.5e6) + # unit_in_discharge.hxd.shell.properties_out[:].enth_mass.setlb(1) + # unit_in_discharge.hxd.shell.properties_out[:].enth_mass.setub(1.5e6) + unit_in_discharge.hxd.overall_heat_transfer_coefficient.setlb(1) + unit_in_discharge.hxd.overall_heat_transfer_coefficient.setub(10000) + unit_in_discharge.hxd.area.setlb(m.min_area) + unit_in_discharge.hxd.area.setub(m.max_area) + unit_in_discharge.hxd.delta_temperature_in.setlb(5) + unit_in_discharge.hxd.delta_temperature_out.setlb(10) + unit_in_discharge.hxd.delta_temperature_in.setub(350) + unit_in_discharge.hxd.delta_temperature_out.setub(500) + unit_in_discharge.hxd.costing.pressure_factor.setlb(0) + unit_in_discharge.hxd.costing.pressure_factor.setub(1e5) + unit_in_discharge.hxd.costing.capital_cost.setlb(0) + unit_in_discharge.hxd.costing.capital_cost.setub(1e8) + unit_in_discharge.hxd.costing.base_cost_per_unit.setlb(0) + unit_in_discharge.hxd.costing.base_cost_per_unit.setub(1e8) + unit_in_discharge.hxd.costing.material_factor.setlb(0) + unit_in_discharge.hxd.costing.material_factor.setub(100) + + + # BFP splitter + unit_in_discharge.ess_discharge_split.inlet.flow_mol[:].setlb(m.flow_min_storage) + unit_in_discharge.ess_discharge_split.inlet.flow_mol[:].setub(m.flow_max) + unit_in_discharge.ess_discharge_split.to_hxd.flow_mol[:].setlb(m.flow_min_storage) + unit_in_discharge.ess_discharge_split.to_hxd.flow_mol[:].setub(m.flow_max_storage) + unit_in_discharge.ess_discharge_split.to_fwh1.flow_mol[:].setlb(0) + unit_in_discharge.ess_discharge_split.to_fwh1.flow_mol[:].setub(m.flow_max) + unit_in_discharge.ess_discharge_split.split_fraction[0.0, "to_hxd"].setlb(0) + unit_in_discharge.ess_discharge_split.split_fraction[0.0, "to_hxd"].setub(1) + unit_in_discharge.ess_discharge_split.split_fraction[0.0, "to_fwh1"].setlb(0) + unit_in_discharge.ess_discharge_split.split_fraction[0.0, "to_fwh1"].setub(1) + + # ES Turbine + unit_in_discharge.es_turbine.inlet.flow_mol[:].setlb(m.flow_min_storage) + unit_in_discharge.es_turbine.inlet.flow_mol[:].setub(m.flow_max_storage) + unit_in_discharge.es_turbine.outlet.flow_mol[:].setlb(m.flow_min_storage) + unit_in_discharge.es_turbine.outlet.flow_mol[:].setub(m.flow_max_storage) + unit_in_discharge.es_turbine.deltaP.setlb(-1e10) + unit_in_discharge.es_turbine.deltaP.setub(1e10) + unit_in_discharge.es_turbine.work.setlb(-1e12) + unit_in_discharge.es_turbine.work.setub(0) + unit_in_discharge.es_turbine.efficiency_isentropic.setlb(0) + unit_in_discharge.es_turbine.efficiency_isentropic.setub(1) + unit_in_discharge.es_turbine.ratioP.setlb(0) + unit_in_discharge.es_turbine.ratioP.setub(100) + unit_in_discharge.es_turbine.efficiency_mech.setlb(0) + unit_in_discharge.es_turbine.efficiency_mech.setub(1) + unit_in_discharge.es_turbine.shaft_speed.setlb(0) + unit_in_discharge.es_turbine.shaft_speed.setub(1000) + + +def main(method=None, + max_power=None, + load_init_file=None, + path_init_file=None, + deact_arcs_after_init=None, + energy_loss=None, + solver=None): + + if load_init_file: + # Build ultra-supercritical plant model and initialize it + m = usc.build_plant_model() + + # Create a flowsheet, add properties, unit models, and arcs + m = create_gdp_model(m, + method=method, + max_power=max_power, + deact_arcs_after_init=deact_arcs_after_init, + energy_loss=energy_loss) + + # Set required inputs to the model to have a square problem for + # initialization + set_model_input(m) + + # Add scaling factors + set_scaling_factors(m) + + # Add cost correlations + m = build_costing(m) + + # Initialize using .json file (with bounds) + ms.from_json(m, fname=path_init_file) + print() + print('>>>>> Initializing model using .json file: {}'.format(path_init_file)) + + # Add bounds + add_bounds(m) + + else: + # Build ultra-supercritical plant model and initialize it + m = usc.build_plant_model() + print() + print('>> Start initialization of ultra-supercritical plant base model') + usc.initialize(m) + print('>> End initialization of ultra-supercritical plant base model') + + # Create a flowsheet, add properties, unit models, and arcs + m = create_gdp_model(m, + method=method, + max_power=max_power, + deact_arcs_after_init=deact_arcs_after_init, + energy_loss=energy_loss) + + # Set required inputs to the model to have a square problem for + # initialization + set_model_input(m) + + # Add scaling factors + set_scaling_factors(m) + + # Initialize the model with a sequential initialization and custom + # routines + initialize(m, deact_arcs_after_init=deact_arcs_after_init) + + # Add cost correlations + m = build_costing(m) + # print('DOF after costing: ', degrees_of_freedom(m)) + + # Initialize costing + initialize_with_costing(m) + + # Add bounds + add_bounds(m) + + # Calculate and store initialization file + ms.to_json(m, fname=path_init_file) + print() + print('>>>>> Saving initialization .json file in {}'.format(path_init_file)) + + + # Add disjunctions + add_disjunction(m) + + if deact_arcs_after_init: + # Deactivate arcs + _deactivate_arcs(m) + + return m + + +def print_results(m, results): + + m.fs.condenser_mix.makeup.display() + + print('================================') + print() + print("***************** Optimization Results ******************") + print('Obj ($/h): {:.4f}'.format(value(m.obj) / m.scaling_obj)) + print('Revenue ($/h): {:.4f}'.format( + value(m.fs.revenue))) + # print('Plant capital cost ($/h): {:.4f}'.format( + # value(m.fs.plant_capital_cost))) + print('Plant fixed operating costs ($/h): {:.4f}'.format( + value(m.fs.plant_fixed_operating_cost))) + print('Plant variable operating costs ($/h): {:.4f}'.format( + value(m.fs.plant_variable_operating_cost))) + print('Coal Cost (fuel) ($/h): {:.4f}'.format( + value(m.fs.fuel_cost))) + print('Storage Capital Cost ($/h): {:.4f}'.format( + value(m.fs.storage_capital_cost))) + print() + print("***************** Tank Results ******************") + print('Hot Salt Inventory (mton): {:.4f}, prev: {:.4f}'.format( + value(m.fs.salt_inventory_hot), + value(m.fs.previous_salt_inventory_hot))) + print('Cold Salt Inventory (mton): {:.4f}, prev: {:.4f}'.format( + value(m.fs.salt_inventory_cold), + value(m.fs.previous_salt_inventory_cold))) + print('Salt to storage (mton): {:.4f}'.format( + value(m.fs.salt_storage))) + print('Salt Amount (mton): {:.4f}'.format( + value(m.fs.salt_amount))) + print('') + print("***************** Power Plant Operation ******************") + print('') + print('Net Power (MW): {:.4f}'.format( + value(m.fs.net_power))) + print('Plant Power (MW): {:.4f}'.format( + value(m.fs.plant_power_out[0]))) + print('Discharge turbine power (MW) [ES turbine Power]: {:.4f} [{:.4f}]'.format( + value(m.fs.discharge_turbine_work), + value(m.fs.discharge_mode_disjunct.es_turbine.work_mechanical[0]) * (-1e-6))) + print('HX pump work (MW): {:.4f}'.format( + value(m.fs.hx_pump_work))) + print('Boiler feed water flow (mol/s): {:.4f}'.format( + value(m.fs.boiler.inlet.flow_mol[0]))) + print('Boiler (plant) heat duty (MW_th): {:.4f}'.format( + value(m.fs.plant_heat_duty[0]))) + print('Makeup water flow: {:.4f}'.format( + value(m.fs.condenser_mix.makeup.flow_mol[0]))) + print() + # print('Boiler efficiency (%): boiler: {:.4f}'.format( + # value(m.fs.boiler_efficiency) * 100)) + print('Boiler/Cycle efficiencies (%): boiler: {:.4f}, cycle: {:.4f}'.format( + value(m.fs.boiler_efficiency) * 100, + value(m.fs.cycle_efficiency) * 100)) + print() + if m.fs.charge_mode_disjunct.binary_indicator_var.value == 1: + print("***************** Charge Heat Exchanger (HXC) ******************") + print('HXC area (m2): {:.4f}'.format( + value(m.fs.charge_mode_disjunct.hxc.area))) + print('HXC heat duty (MW): {:.4f}'.format( + value(m.fs.charge_mode_disjunct.hxc.heat_duty[0]) * 1e-6)) + print('HXC salt flow (kg/s): {:.4f}'.format( + value(m.fs.charge_mode_disjunct.hxc.tube_inlet.flow_mass[0]))) + print('HXC steam flow to storage (mol/s): {:.4f}'.format( + value(m.fs.charge_mode_disjunct.hxc.shell_inlet.flow_mol[0]))) + print('HXC salt temperature (K): in: {:.4f}, out: {:.4f}'.format( + value(m.fs.charge_mode_disjunct.hxc.tube_inlet.temperature[0]), + value(m.fs.charge_mode_disjunct.hxc.tube_outlet.temperature[0]))) + print('HXC water temperature (K): in: {:.4f}, out: {:.4f}'.format( + value(m.fs.charge_mode_disjunct.hxc.hot_side.properties_in[0].temperature), + value(m.fs.charge_mode_disjunct.hxc.hot_side.properties_out[0].temperature))) + print('HXC delta temperature (K): in: {:.4f}, out: {:.4f}'.format( + value(m.fs.charge_mode_disjunct.hxc.delta_temperature_in[0]), + value(m.fs.charge_mode_disjunct.hxc.delta_temperature_out[0]))) + print('') + elif m.fs.discharge_mode_disjunct.binary_indicator_var.value == 1: + print("*************** Discharge Heat Exchanger (HXD) ****************") + print('') + print('HXD area (m2): {:.4f}'.format( + value(m.fs.discharge_mode_disjunct.hxd.area))) + print('HXD heat duty (MW): {:.4f}'.format( + value(m.fs.discharge_mode_disjunct.hxd.heat_duty[0]) * 1e-6)) + print('HXD salt flow (kg/s): {:.4f}'.format( + value(m.fs.discharge_mode_disjunct.hxd.shell_inlet.flow_mass[0]))) + print('HXD Steam flow to storage (mol/s): {:.4f}'.format( + value(m.fs.discharge_mode_disjunct.hxd.tube_inlet.flow_mol[0]))) + print('HXD salt temperature (K): in: {:.4f}, out: {:.4f}'.format( + value(m.fs.discharge_mode_disjunct.hxd.shell_inlet.temperature[0]), + value(m.fs.discharge_mode_disjunct.hxd.shell_outlet.temperature[0]))) + print('HXD water temperature (K): in: {:.4f}, out: {:.4f}'.format( + value(m.fs.discharge_mode_disjunct.hxd.cold_side.properties_in[0].temperature), + value(m.fs.discharge_mode_disjunct.hxd.cold_side.properties_out[0].temperature))) + print('HXD delta temperature (K): in: {:.4f}, out: {:.4f}'.format( + value(m.fs.discharge_mode_disjunct.hxd.delta_temperature_in[0]), + value(m.fs.discharge_mode_disjunct.hxd.delta_temperature_out[0]))) + print('ES Turbine work (MW): {:.4f}'.format( + value(m.fs.discharge_mode_disjunct.es_turbine.work[0]) * -1e-6)) + print('') + + print('') + print('Solver details') + print(results) + print(' ') + print('==============================================================') + + +def print_reports(m): + + print('') + for unit_k in [m.fs.boiler, m.fs.reheater[1], + m.fs.reheater[2], + m.fs.bfp, m.fs.bfpt, + m.fs.booster, + m.fs.condenser_mix, + m.fs.charge.hxc]: + unit_k.display() + + for k in RangeSet(11): + m.fs.turbine[k].report() + for k in RangeSet(11): + m.fs.turbine[k].display() + for j in RangeSet(9): + m.fs.fwh[j].report() + for j in m.set_fwh_mixer: + m.fs.fwh_mixer[j].display() + +def print_model(_, nlp_model, nlp_data): + + print(' ___________________________________________') + if nlp_model.fs.charge_mode_disjunct.indicator_var.value == 1: + print(' Disjunction 1: Charge mode is selected') + print(' HXC area (m2): {:.4f}'.format( + value(nlp_model.fs.charge_mode_disjunct.hxc.area))) + print(' HXC heat duty (MW): {:.4f}'.format( + value(nlp_model.fs.charge_mode_disjunct.hxc.heat_duty[0]) * 1e-6)) + print(' HXC salt flow (kg/s): {:.4f}'.format( + value(nlp_model.fs.charge_mode_disjunct.hxc.tube_inlet.flow_mass[0]))) + print(' HXC steam flow (mol/s): {:.4f}'.format( + value(nlp_model.fs.charge_mode_disjunct.hxc.shell_inlet.flow_mol[0]))) + print(' HXC Salt temperature in/out (K): {:.4f}/{:.4f}'.format( + value(nlp_model.fs.charge_mode_disjunct.hxc.tube_inlet.temperature[0]), + value(nlp_model.fs.charge_mode_disjunct.hxc.tube_outlet.temperature[0]))) + print(' HXC Delta temperature in/out (K): {:.4f}/{:.4f}'.format( + value(nlp_model.fs.charge_mode_disjunct.hxc.delta_temperature_in[0]), + value(nlp_model.fs.charge_mode_disjunct.hxc.delta_temperature_out[0]))) + elif nlp_model.fs.discharge_mode_disjunct.indicator_var.value == 1: + print(' Disjunction 1: Discharge mode is selected') + print(' HXD area (m2): {:.4f}'.format( + value(nlp_model.fs.discharge_mode_disjunct.hxd.area))) + print(' HXD heat duty (MW): {:.4f}'.format( + value(nlp_model.fs.discharge_mode_disjunct.hxd.heat_duty[0]) * 1e-6)) + print(' HXD salt flow (kg/s): {:.4f}'.format( + value(nlp_model.fs.discharge_mode_disjunct.hxd.shell_inlet.flow_mass[0]))) + print(' HXD steam flow (mol/s): {:.4f}'.format( + value(nlp_model.fs.discharge_mode_disjunct.hxd.tube_inlet.flow_mol[0]))) + print(' HXD Salt temperature in/out (K): {:.4f}/{:.4f}'.format( + value(nlp_model.fs.discharge_mode_disjunct.hxd.shell_inlet.temperature[0]), + value(nlp_model.fs.discharge_mode_disjunct.hxd.shell_outlet.temperature[0]))) + print(' HXD Delta temperature in/out (K): {:.4f}/{:.4f}'.format( + value(nlp_model.fs.discharge_mode_disjunct.hxd.delta_temperature_in[0]), + value(nlp_model.fs.discharge_mode_disjunct.hxd.delta_temperature_out[0]))) + print(' ES turbine work (MW): {:.4f}'.format( + value(nlp_model.fs.discharge_mode_disjunct.es_turbine.work_mechanical[0]) * (-1e-6))) + elif nlp_model.fs.no_storage_mode_disjunct.indicator_var.value == 1: + print(' Disjunction 1: No storage mode is selected') + else: + print(' No other operation alternative!') + + print() + print(' Obj (M$/year): {:.4f}'.format( + value(nlp_model.obj) / nlp_model.scaling_obj)) + print(' Revenue ($/h): {:.4f}'.format( + value(nlp_model.fs.revenue))) + # print(' Plant capital cost ($/h): {:.4f}'.format( + # value(nlp_model.fs.plant_capital_cost))) + print(' Plant fixed operating costs ($/h): {:.4f}'.format( + value(nlp_model.fs.plant_fixed_operating_cost))) + print(' Plant variable operating costs ($/h): {:.4f}'.format( + value(nlp_model.fs.plant_variable_operating_cost))) + print(' Coal Cost (fuel) ($/h): {:.4f}'.format( + value(nlp_model.fs.fuel_cost))) + print(' Storage Capital Cost ($/h): {:.4f}'.format( + value(nlp_model.fs.storage_capital_cost))) + print(' Net Power (MW): {:.4f}'.format( + value(nlp_model.fs.net_power))) + print(' Plant Power (MW): {:.4f}'.format( + value(nlp_model.fs.plant_power_out[0]))) + print(' Discharge turbine work (MW): {:.4f}'.format( + value(nlp_model.fs.discharge_turbine_work))) + print(' HX pump work (MW): {:.4f}'.format( + value(nlp_model.fs.hx_pump_work))) + # print(' Boiler efficiency (%): {:.4f}'.format( + # value(nlp_model.fs.boiler_efficiency) * 100)) + print(' Boiler/cycle efficiency (%): {:.4f}/{:.4f}'.format( + value(nlp_model.fs.boiler_efficiency) * 100, + value(nlp_model.fs.cycle_efficiency) * 100)) + print(' Hot Previous Salt Inventory (mton): {:.4f}'.format( + value(nlp_model.fs.previous_salt_inventory_hot))) + print(' Cold Previous Salt Inventory (mton): {:.4f}'.format( + value(nlp_model.fs.previous_salt_inventory_cold))) + print(' Salt to storage (kg/s) [mton]: {:.4f} [{:.4f}]'.format( + value(nlp_model.fs.salt_storage), + value(nlp_model.fs.salt_storage) * 3600 * nlp_model.factor_mton)) + print(' Hot Salt Inventory (mton): {:.4f}'.format( + value(nlp_model.fs.salt_inventory_hot))) + print(' Cold Salt Inventory (mton): {:.4f}'.format( + value(nlp_model.fs.salt_inventory_cold))) + + + print(' ___________________________________________') + + log_close_to_bounds(nlp_model) + # log_infeasible_constraints(nlp_model) + + +def run_nlps(m, + solver=None, + operation_mode=None): + """This function fixes the indicator variables of the disjuncts so to + solve NLP problems + + """ + + print() + print('>>> You are solving an NLP problem by fixing the operation disjuncts!') + if operation_mode == "charge": + print(' ** Solving for charge mode') + m.fs.charge_mode_disjunct.indicator_var.fix(True) + m.fs.discharge_mode_disjunct.indicator_var.fix(False) + m.fs.no_storage_mode_disjunct.indicator_var.fix(False) + elif operation_mode == "discharge": + print(' ** Solving for discharge mode') + m.fs.charge_mode_disjunct.indicator_var.fix(False) + m.fs.discharge_mode_disjunct.indicator_var.fix(True) + m.fs.no_storage_mode_disjunct.indicator_var.fix(False) + elif operation_mode == "no_storage": + print(' ** Solving for no storage mode') + m.fs.charge_mode_disjunct.indicator_var.fix(False) + m.fs.discharge_mode_disjunct.indicator_var.fix(False) + m.fs.no_storage_mode_disjunct.indicator_var.fix(True) + else: + print('<(x.x)> Unrecognized operation mode! Try charge, discharge, or no_storage') + print() + print() + + TransformationFactory('gdp.fix_disjuncts').apply_to(m) + print("The degrees of freedom after gdp transformation ", + degrees_of_freedom(m)) + + results = solver.solve( + m, + tee=True, + symbolic_solver_labels=True, + options={ + "linear_solver": "ma27", + "max_iter": 150 + } + ) + + log_close_to_bounds(m) + log_infeasible_constraints(m) + + print_results(m, results) + + return m, results + + +def run_gdp(m): + + print('>>> You are solving GDP model using GDPopt') + print(' {} DOFs before solving GDP model '.format(degrees_of_freedom(m))) + + opt = SolverFactory('gdpopt') + _prop_bnds_root_to_leaf_map[ExternalFunctionExpression] = lambda x, y, z: None + + results = opt.solve( + m, + tee=True, + algorithm='RIC', + # OA_penalty_factor=1e4, + # max_slack=1e4, + call_after_subproblem_solve=print_model, + mip_solver='gurobi_direct', + nlp_solver='ipopt', + init_algorithm="no_init", + time_limit="2400", + subproblem_presolve=False, + nlp_solver_args=dict( + tee=True, + symbolic_solver_labels=True, + options={ + "linear_solver": "ma27", + "max_iter": 150 + } + ) + ) + + print_results(m, results) + # print_reports(m) + + return results + + +def model_analysis(m, + solver=None, + power=None, + max_power=None, + tank_scenario=None, + fix_power=None, + operation_mode=None, + method=None, + deact_arcs_after_init=None): + """Unfix variables for analysis. This section is deactived for the + simulation of square model + """ + + if fix_power: + m.fs.power_demand_eq = pyo.Constraint( + expr=m.fs.net_power == power + ) + else: + m.fs.plant_power_min = pyo.Constraint( + expr=m.fs.plant_power_out[0] >= m.min_power + ) + m.fs.plant_power_max = pyo.Constraint( + expr=m.fs.plant_power_out[0] <= max_power + ) + hxc_heat_duty = (1e-6) * (pyunits.MW / pyunits.W) * m.fs.charge_mode_disjunct.hxc.heat_duty[0] + hxd_heat_duty = (1e-6) * (pyunits.MW / pyunits.W) * m.fs.discharge_mode_disjunct.hxd.heat_duty[0] + m.fs.charge_mode_disjunct.storage_min_heat_duty = pyo.Constraint( + expr=hxc_heat_duty >= m.min_storage_heat_duty + ) + m.fs.discharge_mode_disjunct.storage_min_heat_duty = pyo.Constraint( + expr=hxd_heat_duty >= m.min_storage_heat_duty + ) + # m.fs.charge_mode_disjunct.storage_max_heat_duty = pyo.Constraint( + # expr=hxc_heat_duty <= m.max_storage_heat_duty + # ) + # m.fs.discharge_mode_disjunct.storage_max_heat_duty = pyo.Constraint( + # expr=hxd_heat_duty <= m.max_storage_heat_duty * (1 - 0.01) + # ) + + # Fix and unfix boiler data + m.fs.boiler.outlet.pressure.fix(m.main_steam_pressure) + m.fs.boiler.inlet.flow_mol.unfix() + + # Unfix data fixed during initialization + # m.fs.fuel_cost.unfix() + m.fs.charge_mode_disjunct.ess_charge_split.split_fraction[0, "to_hxc"].unfix() + m.fs.discharge_mode_disjunct.ess_discharge_split.split_fraction[0, "to_hxd"].unfix() + + if not deact_arcs_after_init: + m.fs.turbine[3].inlet.unfix() + m.fs.fwh[8].tube_inlet.unfix() + + for salt_hxc in [m.fs.charge_mode_disjunct.hxc]: + salt_hxc.shell_inlet.unfix() + salt_hxc.tube_inlet.flow_mass.unfix() + salt_hxc.area.unfix() + + for salt_hxd in [m.fs.discharge_mode_disjunct.hxd]: + salt_hxd.tube_inlet.unfix() + salt_hxd.shell_inlet.flow_mass.unfix() + salt_hxd.area.unfix() + + # Unfix global variables + m.fs.hx_pump_work.unfix() + m.fs.discharge_turbine_work.unfix() + + # Fix storage heat exchangers design + m.fs.charge_mode_disjunct.hxc.tube_outlet.temperature[0].fix(m.hot_salt_temp) + m.fs.discharge_mode_disjunct.hxd.shell_inlet.temperature[0].fix(m.hot_salt_temp) + m.fs.discharge_mode_disjunct.hxd.shell_outlet.temperature[0].fix(m.cold_salt_temp) + + # Add salt inventory variables + min_tank = 1 * m.factor_mton # in mton + max_tank = m.max_salt_amount - min_tank # in mton + max_inventory = 1e7 * m.factor_mton # in mton + min_inventory = 75000 * m.factor_mton # in mton + + # Add variables and mass balances for the hot storage tank + m.fs.previous_salt_inventory_hot = pyo.Var( + domain=NonNegativeReals, + initialize=min_inventory, + bounds=(0, max_inventory), + doc="Hot salt inventory at the beginning of time period in mton" + ) + m.fs.salt_inventory_hot = pyo.Var( + domain=NonNegativeReals, + initialize=min_inventory, + bounds=(0, max_inventory), + doc="Hot salt inventory at the end of time period in mton" + ) + m.fs.previous_salt_inventory_cold = pyo.Var( + domain=NonNegativeReals, + initialize=max_tank - min_inventory, + bounds=(0, max_inventory), + doc="Cold salt inventory at the beginning of time period in mton" + ) + m.fs.salt_inventory_cold = pyo.Var( + domain=NonNegativeReals, + initialize=max_tank - min_inventory, + bounds=(0, max_inventory), + doc="Cold salt inventory at the end of time period in mton" + ) + + @m.fs.Constraint(doc="Inventory balance at the end of the time period") + def constraint_salt_inventory_hot(b): + return b.salt_inventory_hot == ( + b.previous_salt_inventory_hot + + (3600 * m.fs.salt_storage) * m.factor_mton + ) + + @m.fs.Constraint(doc="Maximum previous salt inventory at any time") + def constraint_salt_inventory(b): + return b.salt_amount == ( + b.salt_inventory_hot + + b.salt_inventory_cold + ) + + # Fix the previous salt inventory based on the tank scenario + if tank_scenario == "hot_empty": + m.fs.previous_salt_inventory_hot.fix(min_tank) + m.fs.previous_salt_inventory_cold.fix(max_tank) + elif tank_scenario == "hot_half_full": + m.fs.previous_salt_inventory_hot.fix(max_tank / 2) + m.fs.previous_salt_inventory_cold.fix(max_tank / 2) + elif tank_scenario == "hot_full": + m.fs.previous_salt_inventory_hot.fix(max_tank) + m.fs.previous_salt_inventory_cold.fix(min_tank) + else: + print('Unrecognized scenario! Try hot_empty, hot_full, or hot_half_full') + + # Add LMP data + m.fs.lmp = pyo.Var( + m.fs.time, + domain=Reals, + initialize=80, + doc="Hourly LMP in $/MWh" + ) + + # Fix LMP data according to the case we want to solve. When + # solving GDP model, a random value is selected + if operation_mode == "charge": + m_chg.fs.lmp[0].fix(22.9684) + elif operation_mode == "discharge": + m_chg.fs.lmp[0].fix(200) + elif operation_mode == "no_storage": + m_chg.fs.lmp[0].fix(50) + else: + m_chg.fs.lmp[0].fix(22.9684) + print(' **Use fixed LMP signal value of {} $/MWh'.format( + value(m.fs.lmp[0]))) + print() + + + m.fs.revenue = pyo.Expression( + expr=(m.fs.lmp[0] * m.fs.net_power), + doc="Revenue function in $/h assuming 1 hr operation" + ) + + # Set scaling factors to variables including during model analysis + set_var_scaling(m) + + # Add a total cost function as the objective function. Also, + # include a scaling factor to the objective. + m.scaling_obj = 1e-3 + m.obj = Objective( + expr=( + m.fs.revenue - + (m.fs.fuel_cost + + m.fs.plant_fixed_operating_cost + + m.fs.plant_variable_operating_cost) - + (m.fs.storage_capital_cost + # + m.fs.plant_capital_cost + ) + ) * m.scaling_obj, + sense=maximize + ) + + if operation_mode is not None: + # Solve NLP problem with fix operation mode disjunct + run_nlps(m, + solver=solver, + operation_mode=operation_mode) + else: + # Solve using GDPopt + run_gdp(m) + + +if __name__ == "__main__": + + optarg = { + "max_iter": 300, + # "halt_on_ampl_error": "yes", + } + solver = get_solver('ipopt', optarg) + + # How to run this model: + # load_init_file: Set to True if you wish to initialize using a .json file and + # indicate the path of the .json file in path_init_file + # fix_power: Select True if you want to fix the power output of the plant. + # If True, then provide the power value in power_demand + # method: Select between "with_efficiency" or "without_efficiency" + # tank_scenario: Select the initial value for the salt tank levels: + # "hot_empty", "hot_full", "hot_half_full" (hot refers to hot salt) + # operation_mode: Select None if you want to solve the GDP formulation (GDPopt solver) + # If you wish to solve for one mode, select an operation mode and the + # respective NLP problem is solved. The modes are: "charge", "discharge", + # or "no_storage" + # deact_arcs_after_init: Set to True if you wish to deactivate the arcs that are + # connecting reheater 1 to turbine 3 and bfp to FWH8 after + # initialization. If False, the arcs are deactivated in + # create_gdp_model and turbine 3 and FWH8 inlets are fixed during + # initialization. + + max_power = design_data_dict["plant_max_power"] # in MW + power_demand = 400 # in MW + load_init_file = False + if load_init_file: + path_init_file = design_data_dict["gdp_init_file_path"] + else: + path_init_file = None + + fix_power = False + method = "with_efficiency" + tank_scenario = "hot_empty" + operation_mode = None + deact_arcs_after_init = True # when False, cost initialization takes about 20 sec more + energy_loss = True + + m_chg = main(method=method, + max_power=max_power, + load_init_file=load_init_file, + path_init_file=path_init_file, + deact_arcs_after_init=deact_arcs_after_init, + energy_loss=energy_loss) + + m = model_analysis(m_chg, + solver, + power=power_demand, + max_power=max_power, + tank_scenario=tank_scenario, + fix_power=fix_power, + operation_mode=operation_mode, + method=method, + deact_arcs_after_init=deact_arcs_after_init) diff --git a/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/gdp_mp/uscp_design_data_new_storage_design.json b/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/gdp_mp/uscp_design_data_new_storage_design.json new file mode 100644 index 000000000..464febed2 --- /dev/null +++ b/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/gdp_mp/uscp_design_data_new_storage_design.json @@ -0,0 +1,25 @@ +{ + "gdp_init_file_path": "initialized_usc_storage_gdp_mp_unfixed_area.json", + "plant_max_power": 436, + "plant_min_power": 283, + "ramp_rate": 60, + "hxc_area": 1896, + "hxd_area": 1978, + "min_discharge_turbine_power": 8, + "max_discharge_turbine_power": 34, + "min_storage_heat_duty": 10, + "max_storage_heat_duty": 250, + "max_salt_amount": 6739292, + "max_salt_flow": 500, + "hot_salt_temperature": 831, + "cold_salt_temperature": 513.15, + "min_storage_area": 0, + "max_storage_area": 6000, + "min_storage_area_design": 250, + "max_storage_area_design": 3000, + "min_solar_salt_temperature": 513.15, + "max_solar_salt_temperature": 853.15, + "factor_mton": 1e-3, + "operating_hours_per_day": 24, + "number_of_years": 30 +} From d5828fb09ab57c9bd349f7f5f58bd07da947c495 Mon Sep 17 00:00:00 2001 From: MarcusHolly Date: Thu, 14 Dec 2023 10:52:00 -0500 Subject: [PATCH 02/14] 1st round of changes to run_double_loop_usc --- .../double_loop/run_double_loop_usc.py | 49 +++++++------------ 1 file changed, 19 insertions(+), 30 deletions(-) diff --git a/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/run_double_loop_usc.py b/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/run_double_loop_usc.py index 7c43a37c8..aabea3032 100644 --- a/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/run_double_loop_usc.py +++ b/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/run_double_loop_usc.py @@ -46,14 +46,23 @@ RealValueValidator, AtLeastPminValidator ) +from idaes.apps.grid_integration.examples.utils import ( + rts_gmlc_generator_dataframe, + rts_gmlc_bus_dataframe, + prescient_5bus, + daily_da_price_means, + daily_rt_price_means, + daily_da_price_stds, + daily_rt_price_stds, +) # Import Prescient simulator from prescient.simulator import Prescient # Import integrated ultra-supercritical power plant with energy storage model from dispatches_sample_data import rts_gmlc -from dispatches.models.fossil_case.ultra_supercritical_plant import storage -from dispatches.models.fossil_case.ultra_supercritical_plant.storage.multiperiod_double_loop_usc import MultiPeriodUsc +from dispatches.case_studies.fossil_case.ultra_supercritical_plant.storage import multiperiod_integrated_storage_usc +from dispatches.case_studies.fossil_case.ultra_supercritical_plant.storage.multiperiod_double_loop_usc import MultiPeriodUsc class GeneratorModelData(_UpstreamGeneratorModelData): p_min_agc = RealValueValidator(min_val=0) @@ -66,24 +75,9 @@ def __init__(self, **kwargs): generator_data = { "gen_name": "102_STEAM_3", - "generator_type": "thermal", + "bus": "Carter", "p_min": 286, "p_max": 460, - "min_down_time": 4, - "min_up_time": 8, - "ramp_up_60min": 60, - "ramp_down_60min": 60, - "shutdown_capacity": 286, - "startup_capacity": 286, - "production_cost_bid_pairs": [ - (286, 22.16602), - (350, 19.0723), - (400, 18.29703), - (430, 17.71727), - (460, 17.71727), - ], - "startup_cost_pairs": [(4, 7355.42), (10, 10488.35), (12, 11383.41)], - "fixed_commitment": 1, } model_data = GeneratorModelData(**generator_data) @@ -93,15 +87,12 @@ def __init__(self, **kwargs): n_tracking_hour = 1 # advance n_tracking_hour (i.e. assume we solve every hour) num_days = 2 -# create forecaster -# price_forecasts_df = pd.read_csv( -# os.path.join( -# this_file_dir(), -# "C:\\grid\\source_code\\idaes-pse\\idaes\\apps\\grid_integration\\examples\\lmp_forecasts_concat.csv")) - -with resources.open_text("idaes.apps.grid_integration.examples", "lmp_forecasts_concat.csv") as f: - price_forecasts_df = pd.read_csv(f) -forecaster = PlaceHolderForecaster(price_forecasts_df=price_forecasts_df) +forecaster = PlaceHolderForecaster( + daily_da_price_means=daily_da_price_means, + daily_rt_price_means=daily_rt_price_means, + daily_da_price_stds=daily_da_price_stds, + daily_rt_price_stds=daily_rt_price_stds, +) # create solver solver = pyo.SolverFactory("ipopt") @@ -114,19 +105,18 @@ def __init__(self, **kwargs): ################################################################################# # Tracker mp_usc_tracker = MultiPeriodUsc( - horizon=tracking_horizon, model_data=model_data ) thermal_tracker = Tracker( tracking_model_object=mp_usc_tracker, + tracking_horizon=tracking_horizon, n_tracking_hour=n_tracking_hour, solver=solver, ) # Projection Tracker mp_usc_projection_tracker = MultiPeriodUsc( - horizon=tracking_horizon, model_data=model_data ) @@ -138,7 +128,6 @@ def __init__(self, **kwargs): # Bidder mp_usc_bidder = MultiPeriodUsc( - horizon=bidding_horizon, model_data=model_data ) thermal_bidder = Bidder( From cff1a1c9d79eb2041dbf60c0f3e7eb9f3161b946 Mon Sep 17 00:00:00 2001 From: MarcusHolly Date: Mon, 18 Dec 2023 13:43:49 -0500 Subject: [PATCH 03/14] run_double_loop_usc.py is working --- .../storage/double_loop/run_double_loop_usc.py | 5 +++++ ...grated_storage_with_ultrasupercritical_power_plant.py | 9 ++++++--- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/run_double_loop_usc.py b/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/run_double_loop_usc.py index aabea3032..d0941cffc 100644 --- a/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/run_double_loop_usc.py +++ b/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/run_double_loop_usc.py @@ -83,6 +83,8 @@ def __init__(self, **kwargs): tracking_horizon = 4 # hours bidding_horizon = 48 # hours +day_ahead_horizon = 48 # hours +real_time_horizon = 4 # hours n_scenario = 2 # for bidding n_tracking_hour = 1 # advance n_tracking_hour (i.e. assume we solve every hour) num_days = 2 @@ -122,6 +124,7 @@ def __init__(self, **kwargs): thermal_projection_tracker = Tracker( tracking_model_object=mp_usc_projection_tracker, + tracking_horizon=tracking_horizon, n_tracking_hour=n_tracking_hour, solver=solver, ) @@ -132,6 +135,8 @@ def __init__(self, **kwargs): ) thermal_bidder = Bidder( bidding_model_object=mp_usc_bidder, + day_ahead_horizon=day_ahead_horizon, + real_time_horizon=real_time_horizon, n_scenario=n_scenario, solver=solver, forecaster=forecaster, diff --git a/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/integrated_storage_with_ultrasupercritical_power_plant.py b/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/integrated_storage_with_ultrasupercritical_power_plant.py index 6a50938b7..b7eacde59 100644 --- a/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/integrated_storage_with_ultrasupercritical_power_plant.py +++ b/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/integrated_storage_with_ultrasupercritical_power_plant.py @@ -47,7 +47,7 @@ from idaes.core import MaterialBalanceType from idaes.core.util.initialization import propagate_state from idaes.core.solvers import get_solver -from idaes.core.util.model_statistics import degrees_of_freedom +from idaes.core.util.model_statistics import degrees_of_freedom, variables_near_bounds_generator import idaes.core.util.scaling as iscale import idaes.logger as idaeslog @@ -74,6 +74,9 @@ logging.basicConfig(level=logging.INFO) logging.getLogger('pyomo.repn.plugins.nl_writer').setLevel(logging.ERROR) +from dispatches.case_studies.fossil_case.ultra_supercritical_plant.storage.double_loop.model_diagnostic import ( + print_infeasible_bounds, print_infeasible_constraints) + def create_integrated_model(m, max_power=None): """This method uses the ultra-supercritical power plant model to @@ -580,7 +583,7 @@ def set_model_input(m): # Add heat exchanger area from supercritical plant # model_input. For conceptual design optimization, area is unfixed # and optimized - m.fs.hxc.area.fix(2500) + m.fs.hxc.area.fix(2000) m.fs.hxd.area.fix(2000) # Define storage fluid conditions. The fluid inlet flow is fixed @@ -601,7 +604,7 @@ def set_model_input(m): m.fs.cooler.outlet.enth_mol[0].fix(10000) m.fs.cooler.deltaP[0].fix(0) - # HX pump efficiecncy assumption + # HX pump efficiency assumption m.fs.hx_pump.efficiency_pump.fix(0.80) m.fs.es_turbine.ratioP.fix(0.0286) From 7d8eb4e2299dc1f9f3bc8090521d6f2c39862a9d Mon Sep 17 00:00:00 2001 From: MarcusHolly Date: Tue, 19 Dec 2023 00:12:37 -0500 Subject: [PATCH 04/14] Clean up imports --- .../integrated_storage_with_ultrasupercritical_power_plant.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/integrated_storage_with_ultrasupercritical_power_plant.py b/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/integrated_storage_with_ultrasupercritical_power_plant.py index b7eacde59..363d1f754 100644 --- a/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/integrated_storage_with_ultrasupercritical_power_plant.py +++ b/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/integrated_storage_with_ultrasupercritical_power_plant.py @@ -74,9 +74,6 @@ logging.basicConfig(level=logging.INFO) logging.getLogger('pyomo.repn.plugins.nl_writer').setLevel(logging.ERROR) -from dispatches.case_studies.fossil_case.ultra_supercritical_plant.storage.double_loop.model_diagnostic import ( - print_infeasible_bounds, print_infeasible_constraints) - def create_integrated_model(m, max_power=None): """This method uses the ultra-supercritical power plant model to From d00c66c6037de107fe76c8b967aeebe30151ac55 Mon Sep 17 00:00:00 2001 From: MarcusHolly Date: Tue, 19 Dec 2023 08:15:29 -0500 Subject: [PATCH 05/14] Fix typos --- .../double_loop/multiperiod_double_loop_usc.py | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/multiperiod_double_loop_usc.py b/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/multiperiod_double_loop_usc.py index e5029bd8e..2846b94ab 100644 --- a/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/multiperiod_double_loop_usc.py +++ b/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/multiperiod_double_loop_usc.py @@ -15,7 +15,7 @@ """ This script describes a multiperiod class to build an object for the -integrated ultra-supercritical power plant and motlen-salt based +integrated ultra-supercritical power plant and molten-salt based thermal energy storage model. """ @@ -34,7 +34,7 @@ def __init__( ): """ Arguments: - horizon::Int64 - number of time points to use for associated multi-period model + horizon: Int64 - number of time points to use for associated multi-period model Returns: Float64: Value of power output in last time step @@ -46,11 +46,11 @@ def __init__( def populate_model(self, b, horizon): """ - Create a integrated ultra-supercritical power plant and molten salt + Create an integrated ultra-supercritical power plant and molten salt thermal energy storage model using the `MultiPeriod` package. Arguments: - blk: this is an empty block passed in from eithe a bidder or tracker + blk: this is an empty block passed in from either a bidder or tracker Returns: None @@ -157,7 +157,7 @@ def get_last_delivered_power(b, last_implemented_time_step): step Returns: - Float64: Value of power output in last time step + Float64: Value of power output in the last time step """ blk = b return pyo.value(blk.P_T[last_implemented_time_step]) @@ -220,7 +220,6 @@ def record_results(self, b, date=None, hour=None, **kwargs): result_dict["Date"] = date result_dict["Hour"] = hour - # simulation inputs result_dict["Horizon [hr]"] = int(t) From 1ab2df6c1cb201a2b9c0ffe7ba5533a429ca8b65 Mon Sep 17 00:00:00 2001 From: Brandon Paul Date: Wed, 20 Dec 2023 10:43:29 -0800 Subject: [PATCH 06/14] update initialization methods --- .../storage/fe_ccs/discharge_design_ccs.py | 187 ++++++++++++++++-- 1 file changed, 168 insertions(+), 19 deletions(-) diff --git a/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/fe_ccs/discharge_design_ccs.py b/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/fe_ccs/discharge_design_ccs.py index c51f55d64..e810ddde9 100644 --- a/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/fe_ccs/discharge_design_ccs.py +++ b/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/fe_ccs/discharge_design_ccs.py @@ -59,14 +59,17 @@ from idaes.core.util.exceptions import ConfigurationError # Import ultra supercritical power plant model -from dispatches.case_studies.fossil_case.ultra_supercritical_plant import ( - ultra_supercritical_powerplant as usc) +# from dispatches.case_studies.fossil_case.ultra_supercritical_plant import ( + # ultra_supercritical_powerplant as usc) +import ultra_supercritical_powerplant as usc # Import properties package for Solar salt -from dispatches.properties import solarsalt_properties +# from dispatches.properties import solarsalt_properties +import solarsalt_properties from pyomo.util.infeasible import (log_infeasible_constraints, log_close_to_bounds) from IPython import embed +logging.getLogger('pyomo.repn.plugins.nl_writer').setLevel(logging.ERROR) logging.basicConfig(level=logging.INFO) @@ -961,33 +964,146 @@ def initialize(m, solver=None, optarg=None, outlvl=idaeslog.NOTSET): """Initialize the units included in the discharge model """ - # Include scaling factors - iscale.calculate_scaling_factors(m) + iscale.calculate_scaling_factors(m) # Initialize splitter + propagate_state(m.fs.discharge.fwh4_source_disjunct.fwh4_to_essplit) + propagate_state(m.fs.discharge.condpump_source_disjunct.condpump_to_essplit) + propagate_state(m.fs.discharge.booster_source_disjunct.booster_to_essplit) + propagate_state(m.fs.discharge.bfp_source_disjunct.bfp_to_essplit) + propagate_state(m.fs.discharge.fwh9_source_disjunct.fwh9_to_essplit) m.fs.discharge.es_split.initialize(outlvl=outlvl, optarg=optarg) + # Deactivate feed water heat constraints for initialization + for i in m.set_fwh: + m.fs.fwh[i].fwh_vfrac_constraint.deactivate() + + # Initialize feed water heat 1 + propagate_state(m.fs.discharge.condpump_source_disjunct.essplit_to_fwh1) + propagate_state(m.fs.discharge.fwh4_source_disjunct.condpump_to_fwh1) + propagate_state(m.fs.discharge.booster_source_disjunct.condpump_to_fwh1) + propagate_state(m.fs.discharge.bfp_source_disjunct.condpump_to_fwh1) + propagate_state(m.fs.discharge.fwh9_source_disjunct.condpump_to_fwh1) + m.fs.fwh[1].initialize(outlvl=outlvl, + optarg=solver.options) + + # Initialize feed water heat 5 + propagate_state(m.fs.discharge.condpump_source_disjunct.fwh4_to_fwh5) + propagate_state(m.fs.discharge.fwh4_source_disjunct.essplit_to_fwh5) + propagate_state(m.fs.discharge.booster_source_disjunct.fwh4_to_fwh5) + propagate_state(m.fs.discharge.bfp_source_disjunct.fwh4_to_fwh5) + propagate_state(m.fs.discharge.fwh9_source_disjunct.fwh4_to_fwh5) + m.fs.fwh[5].initialize(outlvl=outlvl, + optarg=solver.options) + + # Initialize feed water heat 6 + propagate_state(m.fs.discharge.condpump_source_disjunct.booster_to_fwh6) + propagate_state(m.fs.discharge.fwh4_source_disjunct.booster_to_fwh6) + propagate_state(m.fs.discharge.booster_source_disjunct.essplit_to_fwh6) + propagate_state(m.fs.discharge.bfp_source_disjunct.booster_to_fwh6) + propagate_state(m.fs.discharge.fwh9_source_disjunct.booster_to_fwh6) + m.fs.fwh[6].initialize(outlvl=outlvl, + optarg=solver.options) + + # Initialize feed water heat 8 + propagate_state(m.fs.discharge.condpump_source_disjunct.bfp_to_fwh8) + propagate_state(m.fs.discharge.fwh4_source_disjunct.bfp_to_fwh8) + propagate_state(m.fs.discharge.booster_source_disjunct.bfp_to_fwh8) + propagate_state(m.fs.discharge.bfp_source_disjunct.essplit_to_fwh8) + propagate_state(m.fs.discharge.fwh9_source_disjunct.bfp_to_fwh8) + m.fs.fwh[8].initialize(outlvl=outlvl, + optarg=solver.options) + + # Initialize boiler + propagate_state(m.fs.discharge.condpump_source_disjunct.fwh9_to_boiler) + propagate_state(m.fs.discharge.fwh4_source_disjunct.fwh9_to_boiler) + propagate_state(m.fs.discharge.booster_source_disjunct.fwh9_to_boiler) + propagate_state(m.fs.discharge.bfp_source_disjunct.fwh9_to_boiler) + propagate_state(m.fs.discharge.fwh9_source_disjunct.essplit_to_boiler) + m.fs.boiler.initialize(outlvl=outlvl, + optarg=solver.options) + + # Initialize discharge heat exchanger propagate_state(m.fs.discharge.essplit_to_hxd) m.fs.discharge.hxd.initialize(outlvl=outlvl, optarg=optarg) + + # Deactivate IP-LP source turbine constraint for initialization + m.fs.discharge.iplp_source_disjunct.es_turbine.constraint_esturbine_temperature_out.deactivate() + + # Initialize IP-LP source turbine + propagate_state(m.fs.discharge.iplp_source_disjunct.hxd_to_esturbine) + + m.fs.discharge.iplp_source_disjunct.es_turbine.initialize(outlvl=outlvl, + optarg=optarg) + + # Initialize turbine splitter 6 + m.fs.turbine_splitter[6].initialize(outlvl=outlvl, + optarg=solver.options) + + # Initialize IP-LP source CCS splitter + propagate_state(m.fs.discharge.iplp_source_disjunct.t6split_to_ccsplit) + m.fs.discharge.iplp_source_disjunct.ccs_split.initialize(outlvl=outlvl, + optarg=solver.options) + + # Initialize boiler feed pump turbine + propagate_state(m.fs.discharge.hxd_source_disjunct.t6split_to_bfpt) + propagate_state(m.fs.discharge.iplp_source_disjunct.bfptsplit_to_bfpt) + m.fs.bfpt.initialize(outlvl=outlvl, + optarg=solver.options) + + # Deactivate CCS reboiler constraint for initialization + # m.fs.eq_reboiler_heat_duty.deactivate() + + # Initialize CCS reboiler + propagate_state(m.fs.discharge.hxd_source_disjunct.hxd_to_ccs) + propagate_state(m.fs.discharge.iplp_source_disjunct.ccsplit_to_ccs) + m.fs.ccs_reboiler.initialize(outlvl=outlvl, + optarg=solver.options) + + # Reactivate feed water heater and IP-LP source turbine constraints + for j in m.set_fwh: + m.fs.fwh[j].fwh_vfrac_constraint.activate() + m.fs.discharge.iplp_source_disjunct.es_turbine.constraint_esturbine_temperature_out.activate() + m.fs.eq_reboiler_heat_duty.activate() + + # Fix disjuncts for initialization + m.fs.discharge.condpump_source_disjunct.indicator_var.fix(False) + m.fs.discharge.fwh4_source_disjunct.indicator_var.fix(False) + m.fs.discharge.booster_source_disjunct.indicator_var.fix(False) + m.fs.discharge.bfp_source_disjunct.indicator_var.fix(False) + m.fs.discharge.fwh9_source_disjunct.indicator_var.fix(False) + + m.fs.discharge.iplp_source_disjunct.indicator_var.fix(False) + m.fs.discharge.hxd_source_disjunct.indicator_var.fix(False) + + # Add options to GDPopt + m_init = m.clone() + m_init_var_names = [v for v in m_init.component_data_objects(Var)] + m_orig_var_names = [v for v in m.component_data_objects(Var)] - # propagate_state(m.fs.discharge.hxd_to_esturbine) - # m.fs.discharge.es_turbine.initialize(outlvl=outlvl, - # optarg=optarg) - + TransformationFactory("gdp.fix_disjuncts").apply_to(m_init) + # Check and raise an error if the degrees of freedom are not 0 - if not degrees_of_freedom(m) == 0: + if not degrees_of_freedom(m_init) == 0: raise ConfigurationError( "The degrees of freedom after building the model are not 0. " "You have {} degrees of freedom. " "Please check your inputs to ensure a square problem " "before initializing the model.".format(degrees_of_freedom(m)) ) - + # Solve initialization - init_results = solver.solve(m, options=optarg) + init_results = solver.solve(m_init, options=optarg) + print("Discharge model initialization solver termination = ", + init_results.solver.termination_condition) + + for v1, v2 in zip(m_init_var_names, m_orig_var_names): + v2.value == v1.value + + print("Discharge model initialization solver termination:", init_results.solver.termination_condition) print("************* Discharge Model Initialized ******************") @@ -1194,11 +1310,34 @@ def op_cost_rule(b): ) # Solve cost initialization - print() - # Add options to NLP solver + + # Add options to GDPopt + m_init = m.clone() + m_init_var_names = [v for v in m_init.component_data_objects(Var)] + m_orig_var_names = [v for v in m.component_data_objects(Var)] + + TransformationFactory("gdp.fix_disjuncts").apply_to(m_init) + + # Check and raise an error if the degrees of freedom are not 0 + if not degrees_of_freedom(m_init) == 0: + raise ConfigurationError( + "The degrees of freedom after building the model are not 0. " + "You have {} degrees of freedom. " + "Please check your inputs to ensure a square problem " + "before initializing the model.".format(degrees_of_freedom(m)) + ) + + # Solve initialization + # Add options to NLP solver optarg = {"tol": 1e-8, "max_iter": 300} - cost_results = solver.solve(m, options=optarg) + cost_results = solver.solve(m_init, options=optarg) + print("Cost pre-initialization solver termination = ", + cost_results.solver.termination_condition) + + for v1, v2 in zip(m_init_var_names, m_orig_var_names): + v2.value == v1.value + print() print("Cost initialization solver termination:", cost_results.solver.termination_condition) print("******************** Costing Initialized *************************") @@ -1387,6 +1526,16 @@ def main(m_usc, solver=None, optarg=None): # Add cost correlations build_costing(m, solver=solver) + # Unfix disjuncts after initialization + m.fs.discharge.condpump_source_disjunct.indicator_var.unfix() + m.fs.discharge.fwh4_source_disjunct.indicator_var.unfix() + m.fs.discharge.booster_source_disjunct.indicator_var.unfix() + m.fs.discharge.bfp_source_disjunct.indicator_var.unfix() + m.fs.discharge.fwh9_source_disjunct.indicator_var.unfix() + + m.fs.discharge.iplp_source_disjunct.indicator_var.unfix() + m.fs.discharge.hxd_source_disjunct.indicator_var.unfix() + # Add bounds add_bounds(m, power_max=power_max) @@ -1740,11 +1889,11 @@ def model_analysis(m, heat_duty=None): # Build discharge model m = main(m_usc, solver=solver, optarg=optarg) - + # Solve design model optimization problem heat_duty_data = 148.5 model_analysis(m, heat_duty=heat_duty_data) - + # Solve model using GDPopt print() print('**********Start solution of GDP discharge model using GDPopt') @@ -1760,11 +1909,11 @@ def model_analysis(m, heat_duty=None): source = "iplp" # source = "hxd" - + results = run_nlps(m, solver=solver, fluid=fluid, source=source) - + # Print results print_results(m, results) From e482a452691b899567a70d7f7a3685cd5ab82d0d Mon Sep 17 00:00:00 2001 From: Brandon Paul Date: Wed, 20 Dec 2023 12:45:22 -0800 Subject: [PATCH 07/14] revert imports --- .../storage/fe_ccs/discharge_design_ccs.py | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/fe_ccs/discharge_design_ccs.py b/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/fe_ccs/discharge_design_ccs.py index e810ddde9..bf220d365 100644 --- a/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/fe_ccs/discharge_design_ccs.py +++ b/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/fe_ccs/discharge_design_ccs.py @@ -59,13 +59,11 @@ from idaes.core.util.exceptions import ConfigurationError # Import ultra supercritical power plant model -# from dispatches.case_studies.fossil_case.ultra_supercritical_plant import ( - # ultra_supercritical_powerplant as usc) -import ultra_supercritical_powerplant as usc +from dispatches.case_studies.fossil_case.ultra_supercritical_plant import ( + ultra_supercritical_powerplant as usc) # Import properties package for Solar salt -# from dispatches.properties import solarsalt_properties -import solarsalt_properties +from dispatches.properties import solarsalt_properties from pyomo.util.infeasible import (log_infeasible_constraints, log_close_to_bounds) from IPython import embed From 0d93d50d430ff6df47c243299454647ecc4df522 Mon Sep 17 00:00:00 2001 From: MarcusHolly Date: Thu, 21 Dec 2023 16:01:36 -0500 Subject: [PATCH 08/14] Clean up code and imports --- .../multiperiod_usc_storage_pricetaker.py | 70 +++++++++------- .../nlp_multiperiod_usc_static_doubleloop.py | 83 +++++++++++-------- 2 files changed, 88 insertions(+), 65 deletions(-) diff --git a/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/multiperiod_usc_storage_pricetaker.py b/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/multiperiod_usc_storage_pricetaker.py index 041427fa7..584c818b0 100644 --- a/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/multiperiod_usc_storage_pricetaker.py +++ b/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/multiperiod_usc_storage_pricetaker.py @@ -1,23 +1,33 @@ - -# import multiperiod object and rankine example -from idaes.apps.multiperiod.multiperiod import MultiPeriodModel -from idaes.apps.multiperiod.examples.simple_rankine_cycle import ( - create_model, set_inputs, initialize_model, - close_flowsheet_loop, add_operating_cost) +############################################################################## +# DISPATCHES was produced under the DOE Design Integration and Synthesis +# Platform to Advance Tightly Coupled Hybrid Energy Systems program (DISPATCHES), +# and is copyright (c) 2021 by the software owners: The Regents of the University +# of California, through Lawrence Berkeley National Laboratory, National +# Technology & Engineering Solutions of Sandia, LLC, Alliance for Sustainable +# Energy, LLC, Battelle Energy Alliance, LLC, University of Notre Dame du Lac, et +# al. All rights reserved. +# +# Please see the files COPYRIGHT.md and LICENSE.md for full copyright and license +# information, respectively. Both files are also available online at the URL: +# "https://github.com/gmlc-dispatches/dispatches". +# +############################################################################## + +from idaes.apps.grid_integration.multiperiod.multiperiod import ( + MultiPeriodModel) import pyomo.environ as pyo -from pyomo.environ import (Block, Param, Constraint, Objective, Reals, - NonNegativeReals, TransformationFactory, Expression, - maximize, RangeSet, value, log, exp, Var) +from pyomo.environ import (Param, Reals, + NonNegativeReals, + value, Var) from pyomo.util.infeasible import (log_infeasible_constraints, log_close_to_bounds) import numpy as np -import copy -# from random import random + from idaes.core.util.model_statistics import degrees_of_freedom -from dispatches.models.fossil_case.ultra_supercritical_plant.storage import ( - usc_storage_nlp_mp as usc) +from dispatches.case_studies.fossil_case.ultra_supercritical_plant.storage import ( + integrated_storage_with_ultrasupercritical_power_plant as usc) # For plots from matplotlib import pyplot as plt @@ -54,13 +64,13 @@ def create_ss_rankine_model(): m.rankine.fs.ess_hp_split.split_fraction[0, "to_hxc"].unfix() m.rankine.fs.ess_bfp_split.split_fraction[0, "to_hxd"].unfix() for salt_hxc in [m.rankine.fs.hxc]: - salt_hxc.inlet_1.unfix() - salt_hxc.inlet_2.flow_mass.unfix() # kg/s, 1 DOF + salt_hxc.shell_inlet.unfix() + salt_hxc.tube_inlet.flow_mass.unfix() # kg/s, 1 DOF salt_hxc.area.unfix() # 1 DOF for salt_hxd in [m.rankine.fs.hxd]: - salt_hxd.inlet_2.unfix() - salt_hxd.inlet_1.flow_mass.unfix() # kg/s, 1 DOF + salt_hxd.tube_inlet.unfix() + salt_hxd.shell_inlet.flow_mass.unfix() # kg/s, 1 DOF salt_hxd.area.unfix() # 1 DOF for unit in [m.rankine.fs.cooler]: @@ -71,9 +81,9 @@ def create_ss_rankine_model(): # m.rankine.fs.salt_hot_temperature = 831 m.rankine.fs.hxc.area.fix(1904) # 1904 m.rankine.fs.hxd.area.fix(1095) # 1095 - m.rankine.fs.hxc.outlet_2.temperature[0].fix(831) - m.rankine.fs.hxd.inlet_1.temperature[0].fix(831) - m.rankine.fs.hxd.outlet_1.temperature[0].fix(513.15) + m.rankine.fs.hxc.tube_outlet.temperature[0].fix(831) + m.rankine.fs.hxd.shell_inlet.temperature[0].fix(831) + m.rankine.fs.hxd.shell_outlet.temperature[0].fix(513.15) return m @@ -176,16 +186,16 @@ def constraint_salt_inventory_hot(b): return ( b1.salt_inventory_hot == b1.previous_salt_inventory_hot - + 3600*b1.fs.hxc.inlet_2.flow_mass[0] - - 3600*b1.fs.hxd.inlet_1.flow_mass[0]) + + 3600*b1.fs.hxc.tube_inlet.flow_mass[0] + - 3600*b1.fs.hxd.shell_inlet.flow_mass[0]) @b1.fs.Constraint(doc="Inventory balance at the end of the time period") def constraint_salt_inventory_cold(b): return ( b1.salt_inventory_cold == b1.previous_salt_inventory_cold - - 3600*b1.fs.hxc.inlet_2.flow_mass[0] - + 3600*b1.fs.hxd.inlet_1.flow_mass[0]) + - 3600*b1.fs.hxc.tube_inlet.flow_mass[0] + + 3600*b1.fs.hxd.shell_inlet.flow_mass[0]) # @b1.fs.Constraint(doc="Maximum salt inventory at any time") # def constraint_salt_inventory(b): @@ -348,11 +358,11 @@ def get_rankine_periodic_variable_pairs(b1, b2): value(blks[c].rankine.fs.plant_power_out[0]), value(blks[c].rankine.fs.es_turbine.work_mechanical[0])*(-1e-6))) print(' Salt from HXC (kg) [kg/s]: {:.4f} [{:.4f}]'.format( - value(blks[c].rankine.fs.hxc.outlet_2.flow_mass[0]) * 3600, - value(blks[c].rankine.fs.hxc.outlet_2.flow_mass[0]))) + value(blks[c].rankine.fs.hxc.tube_outlet.flow_mass[0]) * 3600, + value(blks[c].rankine.fs.hxc.tube_outlet.flow_mass[0]))) print(' Salt from HXD (kg) [kg/s]: {:.4f} [{:.4f}]'.format( - value(blks[c].rankine.fs.hxd.outlet_1.flow_mass[0]) * 3600, - value(blks[c].rankine.fs.hxd.outlet_1.flow_mass[0]))) + value(blks[c].rankine.fs.hxd.shell_outlet.flow_mass[0]) * 3600, + value(blks[c].rankine.fs.hxd.shell_outlet.flow_mass[0]))) print(' HXC Duty (MW): {:.4f}'.format( value(blks[c].rankine.fs.hxc.heat_duty[0]) * 1e-6)) print(' HXD Duty (MW): {:.4f}'.format( @@ -362,9 +372,9 @@ def get_rankine_periodic_variable_pairs(b1, b2): print(' Split fraction to HXD: {:.4f}'.format( value(blks[c].rankine.fs.ess_bfp_split.split_fraction[0, "to_hxd"]))) print(' Steam flow HXC (mol/s): {:.4f}'.format( - value(blks[c].rankine.fs.hxc.outlet_1.flow_mol[0]))) + value(blks[c].rankine.fs.hxc.shell_outlet.flow_mol[0]))) print(' Steam flow HXD (mol/s): {:.4f}'.format( - value(blks[c].rankine.fs.hxd.outlet_2.flow_mol[0]))) + value(blks[c].rankine.fs.hxd.tube_outlet.flow_mol[0]))) print(' Makeup water flow: {:.6f}'.format( value(blks[c].rankine.fs.condenser_mix.makeup.flow_mol[0]))) print(' Delta T in HXC (K): {:.4f}'.format( diff --git a/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/nlp_multiperiod_usc_static_doubleloop.py b/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/nlp_multiperiod_usc_static_doubleloop.py index 3978c9054..33d50764a 100644 --- a/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/nlp_multiperiod_usc_static_doubleloop.py +++ b/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/nlp_multiperiod_usc_static_doubleloop.py @@ -1,22 +1,30 @@ - -# import multiperiod object and rankine example -from multiperiod import MultiPeriodModel -# from idaes.apps.multiperiod.examples.simple_rankine_cycle import ( -# create_model, set_inputs, initialize_model, -# close_flowsheet_loop, add_operating_cost) +############################################################################## +# DISPATCHES was produced under the DOE Design Integration and Synthesis +# Platform to Advance Tightly Coupled Hybrid Energy Systems program (DISPATCHES), +# and is copyright (c) 2021 by the software owners: The Regents of the University +# of California, through Lawrence Berkeley National Laboratory, National +# Technology & Engineering Solutions of Sandia, LLC, Alliance for Sustainable +# Energy, LLC, Battelle Energy Alliance, LLC, University of Notre Dame du Lac, et +# al. All rights reserved. +# +# Please see the files COPYRIGHT.md and LICENSE.md for full copyright and license +# information, respectively. Both files are also available online at the URL: +# "https://github.com/gmlc-dispatches/dispatches". +# +############################################################################## + +from idaes.apps.grid_integration.multiperiod.multiperiod import ( + MultiPeriodModel) import pyomo.environ as pyo -from pyomo.environ import (Block, Param, Constraint, Objective, Reals, - NonNegativeReals, TransformationFactory, Expression, - maximize, RangeSet, value, log, exp, Var) -from pyomo.util.infeasible import (log_infeasible_constraints, - log_close_to_bounds) +from pyomo.environ import (Param, Reals, + NonNegativeReals, + value, Var) +from pyomo.util.infeasible import log_close_to_bounds import numpy as np -import copy -# from random import random -from idaes.core.util.model_statistics import degrees_of_freedom -import usc_storage_nlp_mp_new_area as usc +from dispatches.case_studies.fossil_case.ultra_supercritical_plant.storage import ( + integrated_storage_with_ultrasupercritical_power_plant as usc) # For plots from matplotlib import pyplot as plt @@ -24,7 +32,9 @@ matplotlib.rc('font', size=24) plt.rc('axes', titlesize=24) -method = "with_efficiency" # options: with_efficiency and without_efficiency +import logging +logging.getLogger('pyomo.repn.plugins.nl_writer').setLevel(logging.ERROR) + max_power = 436 # in MW min_power = int(0.65 * max_power) # 283 in MW max_power_storage = 29 # in MW @@ -33,7 +43,8 @@ min_power_total = min_power + min_power_storage min_storage_heat_duty = 0.01 # in MW max_storage_heat_duty = 150 # in MW -load_from_file = 'initialized_usc_storage_mlp_mp.json' +# TODO: Verify that this is the right data file +load_from_file = '../final_report/initialized_usc_storage_nlp_mp_unfixed_area.json' # Add number of days and hours per week number_days = 1 @@ -91,8 +102,7 @@ def create_ss_rankine_model(): m = pyo.ConcreteModel() - m.rankine = usc.main(method=method, - max_power=max_power, + m.rankine = usc.main(max_power=max_power, load_from_file=load_from_file) # Set bounds for plant power @@ -123,13 +133,13 @@ def create_ss_rankine_model(): m.rankine.fs.ess_hp_split.split_fraction[0, "to_hxc"].unfix() m.rankine.fs.ess_bfp_split.split_fraction[0, "to_hxd"].unfix() for salt_hxc in [m.rankine.fs.hxc]: - salt_hxc.inlet_1.unfix() - salt_hxc.inlet_2.flow_mass.unfix() # kg/s, 1 DOF + salt_hxc.shell_inlet.unfix() + salt_hxc.tube_inlet.flow_mass.unfix() # kg/s, 1 DOF salt_hxc.area.unfix() # 1 DOF for salt_hxd in [m.rankine.fs.hxd]: - salt_hxd.inlet_2.unfix() - salt_hxd.inlet_1.flow_mass.unfix() # kg/s, 1 DOF + salt_hxd.tube_inlet.unfix() + salt_hxd.shell_inlet.flow_mass.unfix() # kg/s, 1 DOF salt_hxd.area.unfix() # 1 DOF for unit in [m.rankine.fs.cooler]: @@ -139,9 +149,9 @@ def create_ss_rankine_model(): # Fix storage heat exchangers area and salt temperatures m.rankine.fs.hxc.area.fix(1904) m.rankine.fs.hxd.area.fix(2830) - m.rankine.fs.hxc.outlet_2.temperature[0].fix(831) - m.rankine.fs.hxd.inlet_1.temperature[0].fix(831) - m.rankine.fs.hxd.outlet_1.temperature[0].fix(513.15) + m.rankine.fs.hxc.tube_outlet.temperature[0].fix(831) + m.rankine.fs.hxd.shell_inlet.temperature[0].fix(831) + m.rankine.fs.hxd.shell_outlet.temperature[0].fix(513.15) return m @@ -204,8 +214,8 @@ def constraint_salt_inventory_hot(b): return ( b1.salt_inventory_hot == b1.previous_salt_inventory_hot - + (3600*b1.fs.hxc.inlet_2.flow_mass[0] - - 3600*b1.fs.hxd.inlet_1.flow_mass[0]) * scaling_factor + + (3600*b1.fs.hxc.tube_inlet.flow_mass[0] + - 3600*b1.fs.hxd.shell_inlet.flow_mass[0]) * scaling_factor ) @b1.fs.Constraint(doc="Maximum salt inventory at any time") @@ -316,6 +326,9 @@ def get_rankine_periodic_variable_pairs(b1, b2): # Plot results n_weeks = 1 opt = pyo.SolverFactory('ipopt') +opt.options = { + "max_iter": 100, +} hot_tank_level = [] cold_tank_level = [] net_power = [] @@ -365,7 +378,7 @@ def get_rankine_periodic_variable_pairs(b1, b2): print(' Revenue ($): {:.4f}'.format(value(blks[c].revenue) / scaling_factor)) print(' Operating cost ($): {:.4f}'.format(value(blks[c].operating_cost) / scaling_factor)) print(' Specific Operating cost ($/MWh): {:.4f}'.format( - (value(blks[c].operating_cost) /scaling_factor) / value(blks[c].rankine.fs.net_power))) + (value(blks[c].operating_cost) / scaling_factor) / value(blks[c].rankine.fs.net_power))) print(' Cycle efficiency (%): {:.4f}'.format( value(blks[c].rankine.fs.cycle_efficiency))) print(' Boiler efficiency (%): {:.4f}'.format( @@ -377,9 +390,9 @@ def get_rankine_periodic_variable_pairs(b1, b2): print(' Previous salt inventory (mton): {:.4f}'.format( (value(blks[c].rankine.previous_salt_inventory_hot) / scaling_factor) * 1e-3)) print(' Salt from HXC (mton): {:.4f}'.format( - value(blks[c].rankine.fs.hxc.outlet_2.flow_mass[0]) * 3600 * 1e-3)) + value(blks[c].rankine.fs.hxc.tube_outlet.flow_mass[0]) * 3600 * 1e-3)) print(' Salt from HXD (mton): {:.4f}'.format( - value(blks[c].rankine.fs.hxd.outlet_1.flow_mass[0]) * 3600 * 1e-3)) + value(blks[c].rankine.fs.hxd.shell_outlet.flow_mass[0]) * 3600 * 1e-3)) print(' HXC Duty (MW): {:.4f}'.format( value(blks[c].rankine.fs.hxc.heat_duty[0]) * 1e-6)) print(' HXD Duty (MW): {:.4f}'.format( @@ -389,13 +402,13 @@ def get_rankine_periodic_variable_pairs(b1, b2): print(' Split fraction to HXD: {:.4f}'.format( value(blks[c].rankine.fs.ess_bfp_split.split_fraction[0, "to_hxd"]))) print(' Salt flow HXC (kg/s): {:.4f}'.format( - value(blks[c].rankine.fs.hxc.outlet_2.flow_mass[0]))) + value(blks[c].rankine.fs.hxc.tube_outlet.flow_mass[0]))) print(' Salt flow HXD (kg/s): {:.4f}'.format( - value(blks[c].rankine.fs.hxd.outlet_1.flow_mass[0]))) + value(blks[c].rankine.fs.hxd.shell_outlet.flow_mass[0]))) print(' Steam flow HXC (mol/s): {:.4f}'.format( - value(blks[c].rankine.fs.hxc.outlet_1.flow_mol[0]))) + value(blks[c].rankine.fs.hxc.shell_outlet.flow_mol[0]))) print(' Steam flow HXD (mol/s): {:.4f}'.format( - value(blks[c].rankine.fs.hxd.outlet_2.flow_mol[0]))) + value(blks[c].rankine.fs.hxd.tube_outlet.flow_mol[0]))) print(' Delta T in HXC (kg): {:.4f}'.format( value(blks[c].rankine.fs.hxc.delta_temperature_in[0]))) print(' Delta T out HXC (kg): {:.4f}'.format( From b029d2e610b683af6bcf2098bad74295714d78c0 Mon Sep 17 00:00:00 2001 From: Brandon Paul Date: Fri, 22 Dec 2023 06:08:12 -0800 Subject: [PATCH 09/14] update uscpp_w_css to latest IDAES --- .../ultra_supercritical_powerplant_w_ccs.py | 49 ++++++++----------- 1 file changed, 21 insertions(+), 28 deletions(-) diff --git a/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/fe_ccs/ultra_supercritical_powerplant_w_ccs.py b/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/fe_ccs/ultra_supercritical_powerplant_w_ccs.py index dee517402..a0f96809f 100644 --- a/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/fe_ccs/ultra_supercritical_powerplant_w_ccs.py +++ b/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/fe_ccs/ultra_supercritical_powerplant_w_ccs.py @@ -26,20 +26,19 @@ # IDAES Imports from idaes.core.util.model_statistics import degrees_of_freedom from idaes.core.util.initialization import propagate_state -from idaes.power_generation.unit_models.boiler_fireside import BoilerFireside -from idaes.generic_models.unit_models import Heater, MomentumMixingType -from idaes.core.util import get_solver +from idaes.models_extra.power_generation.unit_models.boiler_fireside import BoilerFireside +from idaes.models.unit_models import Heater, MomentumMixingType +from idaes.core.solvers import get_solver import idaes.core.util.scaling as iscale import idaes.logger as idaeslog -from idaes.power_generation.unit_models.helm import HelmMixer, HelmSplitter -from idaes.power_generation.properties import FlueGasParameterBlock +from idaes.models_extra.power_generation.unit_models.helm import HelmMixer, HelmSplitter +from idaes.models_extra.power_generation.properties import FlueGasParameterBlock # Dispatches Imports -from dispatches.models.fossil_case.ultra_supercritical_plant import ( +from dispatches.case_studies.fossil_case.ultra_supercritical_plant import ( ultra_supercritical_powerplant as usc) # from idaes.power_generation.carbon_capture.piperazine_surrogates.\ # co2_capture_system import CO2Capture -from dispatches.models.fossil_case.ultra_supercritical_plant.\ - co2_capture_system import CO2Capture +from co2_capture_system import CO2Capture def add_fireside(m): @@ -53,13 +52,13 @@ def add_fireside(m): 'NOx': '140'} # NOx PPM m.fs.boiler_fireside = BoilerFireside( - default={"dynamic": False, - "property_package": m.fs.prop_fluegas, - "calculate_PA_SA_flows": True, - "number_of_zones": 1, - "has_platen_superheater": True, - "has_roof_superheater": True, - "surrogate_dictionary": boiler_input_dict}) + dynamic=False, + property_package=m.fs.prop_fluegas, + calculate_PA_SA_flows=True, + number_of_zones=1, + has_platen_superheater=True, + has_roof_superheater=True, + surrogate_dictionary=boiler_input_dict) m.fs.boiler_fireside.eq_surr_waterwall_heat.deactivate() m.fs.boiler_fireside.eq_surr_platen_heat.deactivate() m.fs.boiler_fireside.eq_surr_roof_heat.deactivate() @@ -197,25 +196,19 @@ def eq_pressure(b, t): # Add a dummy heater block to extract steam for specific reformer duty m.fs.ccs_reformer = Heater( - default={ - "dynamic": False, - "property_package": m.fs.prop_water, - "has_pressure_change": True - } + dynamic=False, + property_package=m.fs.prop_water, + has_pressure_change=True ) # Add a splitter to take the main steam from boiler for CO2 Capture m.fs.ccs_splitter = HelmSplitter( - default={ - "property_package": m.fs.prop_water - } + property_package=m.fs.prop_water ) # Add a mixer to add the ccs exhaust to condenser m.fs.ccs_mix = HelmMixer( - default={ - "momentum_mixing_type": MomentumMixingType.minimize, - "inlet_list": ["bfpt", "ccs"], - "property_package": m.fs.prop_water, - } + momentum_mixing_type=MomentumMixingType.minimize, + inlet_list=["bfpt", "ccs"], + property_package=m.fs.prop_water, ) # Add constraint to equate the co2 capture reformer duty with ccs heater From 52255abba5461253bbc19cd10672ff606fd777ba Mon Sep 17 00:00:00 2001 From: MarcusHolly Date: Fri, 22 Dec 2023 09:22:36 -0500 Subject: [PATCH 10/14] Add headers --- .../double_loop/plot_doubleloop_results.py | 15 +++++++++++++++ .../storage/double_loop/plugin_double_loop_usc.py | 15 +++++++++++++++ .../double_loop/run_prescient_double_loop_usc.py | 15 +++++++++++++++ 3 files changed, 45 insertions(+) diff --git a/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/plot_doubleloop_results.py b/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/plot_doubleloop_results.py index b99302302..47eea0479 100644 --- a/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/plot_doubleloop_results.py +++ b/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/plot_doubleloop_results.py @@ -1,3 +1,18 @@ +################################################################################# +# DISPATCHES was produced under the DOE Design Integration and Synthesis +# Platform to Advance Tightly Coupled Hybrid Energy Systems program (DISPATCHES), +# and is copyright (c) 2022 by the software owners: The Regents of the University +# of California, through Lawrence Berkeley National Laboratory, National +# Technology & Engineering Solutions of Sandia, LLC, Alliance for Sustainable +# Energy, LLC, Battelle Energy Alliance, LLC, University of Notre Dame du Lac, et +# al. All rights reserved. +# +# Please see the files COPYRIGHT.md and LICENSE.md for full copyright and license +# information, respectively. Both files are also available online at the URL: +# "https://github.com/gmlc-dispatches/dispatches". +# +################################################################################# + import os from types import ModuleType import pandas as pd diff --git a/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/plugin_double_loop_usc.py b/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/plugin_double_loop_usc.py index 9b5601542..7cec60dd4 100644 --- a/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/plugin_double_loop_usc.py +++ b/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/plugin_double_loop_usc.py @@ -1,3 +1,18 @@ +################################################################################# +# DISPATCHES was produced under the DOE Design Integration and Synthesis +# Platform to Advance Tightly Coupled Hybrid Energy Systems program (DISPATCHES), +# and is copyright (c) 2022 by the software owners: The Regents of the University +# of California, through Lawrence Berkeley National Laboratory, National +# Technology & Engineering Solutions of Sandia, LLC, Alliance for Sustainable +# Energy, LLC, Battelle Energy Alliance, LLC, University of Notre Dame du Lac, et +# al. All rights reserved. +# +# Please see the files COPYRIGHT.md and LICENSE.md for full copyright and license +# information, respectively. Both files are also available online at the URL: +# "https://github.com/gmlc-dispatches/dispatches". +# +################################################################################# + # custom plugin file for running the rankine cycle with a battery as a # multi-period model in the Prescient double-loop import pickle diff --git a/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/run_prescient_double_loop_usc.py b/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/run_prescient_double_loop_usc.py index 48733a42c..814c7a1ea 100644 --- a/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/run_prescient_double_loop_usc.py +++ b/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/run_prescient_double_loop_usc.py @@ -1,3 +1,18 @@ +################################################################################# +# DISPATCHES was produced under the DOE Design Integration and Synthesis +# Platform to Advance Tightly Coupled Hybrid Energy Systems program (DISPATCHES), +# and is copyright (c) 2022 by the software owners: The Regents of the University +# of California, through Lawrence Berkeley National Laboratory, National +# Technology & Engineering Solutions of Sandia, LLC, Alliance for Sustainable +# Energy, LLC, Battelle Energy Alliance, LLC, University of Notre Dame du Lac, et +# al. All rights reserved. +# +# Please see the files COPYRIGHT.md and LICENSE.md for full copyright and license +# information, respectively. Both files are also available online at the URL: +# "https://github.com/gmlc-dispatches/dispatches". +# +################################################################################# + from prescient.simulator import Prescient #point to rts_gmlc scenario data From 0fe948fb9fb60d96d381f4a9c3fa0987bb21ebb7 Mon Sep 17 00:00:00 2001 From: Brandon Paul Date: Fri, 22 Dec 2023 07:54:53 -0800 Subject: [PATCH 11/14] fix some variable references in CO2_capture script --- .../ultra_supercritical_plant/storage/fe_ccs/CO2_capture.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/fe_ccs/CO2_capture.py b/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/fe_ccs/CO2_capture.py index 4720974e3..eeed3d2fd 100644 --- a/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/fe_ccs/CO2_capture.py +++ b/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/fe_ccs/CO2_capture.py @@ -323,7 +323,7 @@ def SRD_eqn(b, t): elif b.config.CO2_capture_rate_surrogates == Surrogates.PZ_97_capture: return b.SRD[t] == - 912.90813190561812007218 * CO2leanloading + 963.87626280230563224904 * exp(CO2leanloading) - 840.95461087585590576055 * (molality/2.)**2 - 614.38277546147764951456 * CO2leanloading**2 + 274.40532024830611135258 * (molality/2.)**3 - 0.61984641382653959951199 * (molality*CO2leanloading/2.)**3 + 0.26430328623580695568407 * (molality/CO2leanloading/2.) - 11.869291574687059309667 * (CO2leanloading/molality/0.5) - 0.23630953358941128236714E-002 * (molality/CO2leanloading/2.)**2 elif b.config.CO2_capture_rate_surrogates == Surrogates.PZ_90to97_capture: - return b.SRD[t] == - 0.10526756950236890175709 * Capture + 0.52057178809591142520929 * lean_loading + 0.98788205977359255793857 * molality + 2.0990364304677582296677 * Capture**0.5 + 3.5938248110847506033849 * lean_loading**0.5 - 6.3111812164050720141972 * molality**0.5 + 2.4029805693688151002618 * lean_loading**3 - 0.10937466124959506139080E-001 * Capture/molality - 41.496993880686794398116 * lean_loading/Capture + 0.36946342949766633467767E-001 * molality/lean_loading + return b.SRD[t] == - 0.10526756950236890175709 * Capture + 0.52057178809591142520929 * CO2leanloading + 0.98788205977359255793857 * molality + 2.0990364304677582296677 * Capture**0.5 + 3.5938248110847506033849 * CO2leanloading**0.5 - 6.3111812164050720141972 * molality**0.5 + 2.4029805693688151002618 * CO2leanloading**3 - 0.10937466124959506139080E-001 * Capture/molality - 41.496993880686794398116 * CO2leanloading/Capture + 0.36946342949766633467767E-001 * molality/CO2leanloading elif b.config.CO2_capture_rate_surrogates == Surrogates.rel_PZAS_5mol_capture: return (- 22.312295301354438947783 * CO2leanloading + 117.51384451486856619340 * CO2leanloading**2 - 269.05987870514132964672 * CO2leanloading**3 + 234.98153128275288281657 * CO2leanloading**4 + 3.9380879255782788028739) elif b.config.CO2_capture_rate_surrogates == Surrogates.PZ_ref1_90_capture: @@ -365,7 +365,7 @@ def LL_flowrate(b, t): elif b.config.CO2_capture_rate_surrogates == Surrogates.PZ_97_capture: return - 11073017307.372232437134 * CO2leanloading + 868882.20868137793149799 * log(CO2leanloading) - 73653243483.647430419922 * exp(molality/2.) + 11052450134.832271575928 * exp(CO2leanloading) + 141797181109.30328369141 * (molality/2.)**2 - 5395322021.3101339340210 * CO2leanloading**2 - 920354.31067807460203767 * (molality*CO2leanloading/2.) - 117144381.90464735031128 * (molality*CO2leanloading/2.)**3 - 6153045658.4519367218018 * (CO2leanloading/molality/0.5)**3 elif b.config.CO2_capture_rate_surrogates == Surrogates.PZ_90to97_capture: - return 21493.893918343124823878 * Capture - 18837259.090658042579889 * lean_loading - 303798.35064064717153087 * molality - 547220.78199295536614954 * Capture**0.5 + 7997911.0828296802937984 * lean_loading**0.5 + 1594229.8231671806424856 * molality**0.5 + 16593654.797202151268721 * lean_loading**2 + 58165.759382280644786078 * Capture*lean_loading + 60595.207259644026635215 * Capture/molality + 60446137.647265411913395 * (lean_loading/molality)**2 + return 21493.893918343124823878 * Capture - 18837259.090658042579889 * CO2leanloading - 303798.35064064717153087 * molality - 547220.78199295536614954 * Capture**0.5 + 7997911.0828296802937984 * CO2leanloading**0.5 + 1594229.8231671806424856 * molality**0.5 + 16593654.797202151268721 * CO2leanloading**2 + 58165.759382280644786078 * Capture*CO2leanloading + 60595.207259644026635215 * Capture/molality + 60446137.647265411913395 * (CO2leanloading/molality)**2 # No data for PZAS, using same as PZ 95 capture elif b.config.CO2_capture_rate_surrogates == Surrogates.rel_PZAS_5mol_capture: return - 8128346023.5960435867310 * CO2leanloading + 8097036304.4302654266357 * exp(CO2leanloading) + 143943.79958957055350766 * (molality/4.)**2 - 3906104299.9280681610107 * CO2leanloading**2 - 1694548695.5476403236389 * CO2leanloading**3 - 326827.12907762406393886 * (molality*CO2leanloading/4.)**2 + 14089575.472042093053460 * (CO2leanloading/molality/0.25) - 4257.3482804741406653193 * (molality/CO2leanloading/4.)**2 - 22772347.982399865984917 * (CO2leanloading/molality/0.25)**2 + 131.22409336241202026940 * (molality/CO2leanloading/4.)**3 + 22174561.087608262896538 * (CO2leanloading/molality/0.25)**3 - 8094525387.7033281326294 From 8a36ac7c7f13c632de67e84753ee366819b0311e Mon Sep 17 00:00:00 2001 From: MarcusHolly Date: Fri, 22 Dec 2023 13:35:05 -0500 Subject: [PATCH 12/14] Clean up more imports --- .../multiperiod_integrated_storage_usc.py | 1 - .../multiperiod_usc_storage_pricetaker.py | 4 +- .../double_loop/plot_doubleloop_results.py | 4 +- .../double_loop/plugin_double_loop_usc.py | 65 +++++++++---------- 4 files changed, 35 insertions(+), 39 deletions(-) diff --git a/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/multiperiod_integrated_storage_usc.py b/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/multiperiod_integrated_storage_usc.py index 10b0b2c48..83537e7af 100644 --- a/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/multiperiod_integrated_storage_usc.py +++ b/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/multiperiod_integrated_storage_usc.py @@ -25,7 +25,6 @@ __author__ = "Naresh Susarla and Soraya Rawlings" -from pathlib import Path try: from importlib import resources # Python 3.8+ except ImportError: diff --git a/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/multiperiod_usc_storage_pricetaker.py b/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/multiperiod_usc_storage_pricetaker.py index 584c818b0..bb7a72939 100644 --- a/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/multiperiod_usc_storage_pricetaker.py +++ b/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/multiperiod_usc_storage_pricetaker.py @@ -17,7 +17,7 @@ MultiPeriodModel) import pyomo.environ as pyo -from pyomo.environ import (Param, Reals, +from pyomo.environ import (Param, Reals, Expression, NonNegativeReals, value, Var) from pyomo.util.infeasible import (log_infeasible_constraints, @@ -283,7 +283,7 @@ def get_rankine_periodic_variable_pairs(b1, b2): for blk in blks: # dummy_water_cost = 1.5e-2 # $/mol blk_rankine = blk.rankine - blk.lmp_signal = pyo.Param(default=0, mutable=True) + blk.lmp_signal = Param(default=0, mutable=True) blk.net_power = Expression(expr=( blk.rankine.fs.plant_power_out[0] + (-1e-6) * blk.rankine.fs.es_turbine.work_mechanical[0])) diff --git a/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/plot_doubleloop_results.py b/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/plot_doubleloop_results.py index 47eea0479..a9a212b18 100644 --- a/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/plot_doubleloop_results.py +++ b/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/plot_doubleloop_results.py @@ -24,8 +24,8 @@ from importlib import resources # Python 3.8+ except ImportError: import importlib_resources as resources # Python 3.7 -from dispatches.models.fossil_case.ultra_supercritical_plant import storage -from dispatches.models.fossil_case.ultra_supercritical_plant.storage import bidding_plugin_test_multiperiod_rankine +from dispatches.case_studies.fossil_case.ultra_supercritical_plant import storage +from dispatches.case_studies.fossil_case.ultra_supercritical_plant.storage.double_loop import bidding_plugin_test_multiperiod_rankine # result_dir = 'bidding_plugin_test_multiperiod_rankine3d2s_0420' diff --git a/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/plugin_double_loop_usc.py b/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/plugin_double_loop_usc.py index 7cec60dd4..89a54c864 100644 --- a/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/plugin_double_loop_usc.py +++ b/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/double_loop/plugin_double_loop_usc.py @@ -21,6 +21,16 @@ from pyomo.common.config import ConfigDict, ConfigValue from pyomo.common.fileutils import this_file_dir +from idaes.apps.grid_integration.examples.utils import ( + rts_gmlc_generator_dataframe, + rts_gmlc_bus_dataframe, + prescient_5bus, + daily_da_price_means, + daily_rt_price_means, + daily_da_price_stds, + daily_rt_price_stds, +) + from idaes.apps.grid_integration import Tracker from idaes.apps.grid_integration import Bidder from idaes.apps.grid_integration import PlaceHolderForecaster @@ -28,6 +38,11 @@ from multiperiod_double_loop_usc import MultiPeriodUsc from idaes.apps.grid_integration.model_data import GeneratorModelData +from idaes.apps.grid_integration.model_data import ( + GeneratorModelData as _UpstreamGeneratorModelData, + RealValueValidator, + AtLeastPminValidator +) import os.path # with open("usc_gen_data.pkl", "rb") as f: @@ -35,24 +50,9 @@ generator_data = { "gen_name": "102_STEAM_3", - "generator_type": "thermal", + "bus": "Carter", "p_min": 286, "p_max": 460, - "min_down_time": 4, - "min_up_time": 8, - "ramp_up_60min": 60, - "ramp_down_60min": 60, - "shutdown_capacity": 286, - "startup_capacity": 286, - "production_cost_bid_pairs": [ - (286, 22.16602), - (350, 19.0723), - (400, 18.29703), - (430, 17.71727), - (460, 17.71727), - ], - "startup_cost_pairs": [(4, 7355.42), (10, 10488.35), (12, 11383.41)], - "fixed_commitment": 1, } model_data = GeneratorModelData(**generator_data) @@ -63,12 +63,18 @@ # raise Exception() tracking_horizon = 12 # hours bidding_horizon = 48 # hours +day_ahead_horizon = 48 # hours +real_time_horizon = 4 # hours n_scenario = 2 # for bidding n_tracking_hour = 1 # advance n_tracking_hour (i.e. assume we solve every hour) -# create forecaster -price_forecasts_df = pd.read_csv(os.path.join(this_file_dir(), "C:\\grid\\source_code\\idaes-pse\\idaes\\apps\\grid_integration\\examples\\lmp_forecasts_concat.csv")) -forecaster = PlaceHolderForecaster(price_forecasts_df=price_forecasts_df) +# create forecasterprice_forecasts_df = pd.read_csv(os.path.join(this_file_dir(), "C:\\grid\\source_code\\idaes-pse\\idaes\\apps\\grid_integration\\examples\\lmp_forecasts_concat.csv")) +forecaster = PlaceHolderForecaster( + daily_da_price_means=daily_da_price_means, + daily_rt_price_means=daily_rt_price_means, + daily_da_price_stds=daily_da_price_stds, + daily_rt_price_stds=daily_rt_price_stds, +) # create solver solver = pyo.SolverFactory("ipopt") solver.options = { @@ -80,45 +86,36 @@ ################################################################################# # Tracker mp_usc_tracker = MultiPeriodUsc( - horizon=tracking_horizon, model_data=model_data - # pmin=pmin, - # pmax=pmax, - # default_bid_curve=default_bid_curve, - # generator_name=gen_name, ) + thermal_tracker = Tracker( tracking_model_object=mp_usc_tracker, + tracking_horizon=tracking_horizon, n_tracking_hour=n_tracking_hour, solver=solver, ) # Projection Tracker mp_usc_projection_tracker = MultiPeriodUsc( - horizon=tracking_horizon, model_data=model_data - # pmin=pmin, - # pmax=pmax, - # default_bid_curve=default_bid_curve, - # generator_name=gen_name, ) + thermal_projection_tracker = Tracker( tracking_model_object=mp_usc_projection_tracker, + tracking_horizon=tracking_horizon, n_tracking_hour=n_tracking_hour, solver=solver, ) # Bidder mp_usc_bidder = MultiPeriodUsc( - horizon=bidding_horizon, model_data=model_data - # pmin=pmin, - # pmax=pmax, - # default_bid_curve=default_bid_curve, - # generator_name=gen_name, ) thermal_bidder = Bidder( bidding_model_object=mp_usc_bidder, + day_ahead_horizon=day_ahead_horizon, + real_time_horizon=real_time_horizon, n_scenario=n_scenario, solver=solver, forecaster=forecaster, From 4ea69886e6f62d9418a81b2d8eefd01b7f1f8106 Mon Sep 17 00:00:00 2001 From: MarcusHolly Date: Tue, 2 Jan 2024 10:56:22 -0500 Subject: [PATCH 13/14] Update duplicate files --- .../storage/multiperiod_double_loop_usc.py | 129 +++----- .../multiperiod_integrated_storage_usc.py | 308 +++++------------- 2 files changed, 129 insertions(+), 308 deletions(-) diff --git a/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/multiperiod_double_loop_usc.py b/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/multiperiod_double_loop_usc.py index d4070aab1..2846b94ab 100644 --- a/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/multiperiod_double_loop_usc.py +++ b/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/multiperiod_double_loop_usc.py @@ -1,7 +1,7 @@ ################################################################################# -# DISPATCHES was produced under the DOE Design Integration and Synthesis Platform -# to Advance Tightly Coupled Hybrid Energy Systems program (DISPATCHES), and is -# copyright (c) 2020-2023 by the software owners: The Regents of the University +# DISPATCHES was produced under the DOE Design Integration and Synthesis +# Platform to Advance Tightly Coupled Hybrid Energy Systems program (DISPATCHES), +# and is copyright (c) 2022 by the software owners: The Regents of the University # of California, through Lawrence Berkeley National Laboratory, National # Technology & Engineering Solutions of Sandia, LLC, Alliance for Sustainable # Energy, LLC, Battelle Energy Alliance, LLC, University of Notre Dame du Lac, et @@ -10,11 +10,12 @@ # Please see the files COPYRIGHT.md and LICENSE.md for full copyright and license # information, respectively. Both files are also available online at the URL: # "https://github.com/gmlc-dispatches/dispatches". +# ################################################################################# """ This script describes a multiperiod class to build an object for the -integrated ultra-supercritical power plant and motlen-salt based +integrated ultra-supercritical power plant and molten-salt based thermal energy storage model. """ @@ -23,46 +24,8 @@ import pyomo.environ as pyo import pandas as pd from collections import deque -import idaes.logger as idaeslog - -# IDAES imports -from idaes.apps.grid_integration.multiperiod.multiperiod import MultiPeriodModel - -# DISPATCHES imports from dispatches.case_studies.fossil_case.ultra_supercritical_plant \ - .storage.multiperiod_integrated_storage_usc import (create_usc_model, - usc_unfix_dof, - usc_custom_init, - get_usc_link_variable_pairs) - - -def create_multiperiod_usc_model(n_time_points=4, pmin=None, pmax=None): - """ - Create a multi-period usc_mp cycle object. This object contains a pyomo - model with a block for each time instance. - - n_time_points: Number of time blocks to create - """ - multiperiod_usc = MultiPeriodModel( - n_time_points=n_time_points, - process_model_func=create_usc_model, - initialization_func=usc_custom_init, - unfix_dof_func=usc_unfix_dof, - linking_variable_func=get_usc_link_variable_pairs, - use_stochastic_build=False, - outlvl=idaeslog.INFO, - ) - - flowsheet_options={"pmin": pmin, - "pmax": pmax} - - # create the multiperiod object - multiperiod_usc.build_multi_period_model( - model_data_kwargs={t: flowsheet_options for t in range(n_time_points)}, - flowsheet_options=flowsheet_options, - ) - - return multiperiod_usc + .storage.multiperiod_integrated_storage_usc import create_multiperiod_usc_model class MultiPeriodUsc: @@ -71,7 +34,7 @@ def __init__( ): """ Arguments: - horizon::Int64 - number of time points to use for associated multi-period model + horizon: Int64 - number of time points to use for associated multi-period model Returns: Float64: Value of power output in last time step @@ -81,13 +44,13 @@ def __init__( self.result_listimp = [] self.model_data = model_data - def populate_model(self, blk, horizon): + def populate_model(self, b, horizon): """ - Create a integrated ultra-supercritical power plant and molten salt + Create an integrated ultra-supercritical power plant and molten salt thermal energy storage model using the `MultiPeriod` package. Arguments: - blk: this is an empty block passed in from eithe a bidder or tracker + blk: this is an empty block passed in from either a bidder or tracker Returns: None @@ -95,6 +58,7 @@ def populate_model(self, blk, horizon): tank_min = 76000 # in kg tank_max = 6739292 # in kg + blk = b if not blk.is_constructed(): blk.construct() @@ -105,9 +69,9 @@ def populate_model(self, blk, horizon): blk.usc_mp = multiperiod_usc active_blks = multiperiod_usc.get_active_process_blocks() - active_blks[0].fs.previous_salt_inventory_hot.fix(tank_min) - active_blks[0].fs.previous_salt_inventory_cold.fix(tank_max-tank_min) - active_blks[0].fs.previous_power.fix(380) + active_blks[0].usc_mp.previous_salt_inventory_hot.fix(tank_min) + active_blks[0].usc_mp.previous_salt_inventory_cold.fix(tank_max-tank_min) + active_blks[0].usc_mp.previous_power.fix(380) # create expression that references underlying power variables blk.HOUR = pyo.Set(initialize=range(horizon)) @@ -128,34 +92,33 @@ def populate_model(self, blk, horizon): blk.hxd_steam_Tout = pyo.Expression(blk.HOUR) blk.hxd_steam_vfrac = pyo.Expression(blk.HOUR) for (t, b) in enumerate(active_blks): - blk.P_T[t] = b.fs.net_power - blk.hot_level[t] = b.fs.salt_inventory_hot + blk.P_T[t] = b.usc_mp.fs.net_power + blk.hot_level[t] = b.usc_mp.salt_inventory_hot blk.storage_power[t] = ((-1e-6) - * b.fs.es_turbine.work_mechanical[0]) - blk.plant_duty[t] = b.fs.plant_heat_duty[0] + * b.usc_mp.fs.es_turbine.work_mechanical[0]) + blk.plant_duty[t] = b.usc_mp.fs.plant_heat_duty[0] blk.tot_cost[t] = ( - b.fs.operating_cost - + (b.fs.plant_fixed_operating_cost - + b.fs.plant_variable_operating_cost) / (365 * 24) + b.usc_mp.fs.operating_cost + + (b.usc_mp.fs.plant_fixed_operating_cost + + b.usc_mp.fs.plant_variable_operating_cost) / (365 * 24) ) - blk.plant_power[t] = b.fs.plant_power_out[0] - blk.hxc_salt[t] = b.fs.hxc.tube_inlet.flow_mass[0] - blk.hxc_duty[t] = b.fs.hxc.heat_duty[0] - blk.hxc_salt_Tin[t] = b.fs.hxc.tube_inlet.temperature[0] - blk.hxc_salt_Tout[t] = b.fs.hxc.tube_outlet.temperature[0] - blk.hxd_salt[t] = b.fs.hxd.shell_inlet.flow_mass[0] - blk.hxd_duty[t] = b.fs.hxd.heat_duty[0] - blk.hxd_salt_Tin[t] = b.fs.hxd.shell_inlet.temperature[0] - blk.hxd_salt_Tout[t] = b.fs.hxd.shell_outlet.temperature[0] - blk.hxd_steam_Tout[t] = b.fs.hxd.cold_side.properties_out[0].temperature - blk.hxd_steam_vfrac[t] = b.fs.hxd.cold_side.properties_out[0].vapor_frac + blk.plant_power[t] = b.usc_mp.fs.plant_power_out[0] + blk.hxc_salt[t] = b.usc_mp.fs.hxc.tube_inlet.flow_mass[0] + blk.hxc_duty[t] = b.usc_mp.fs.hxc.heat_duty[0] + blk.hxc_salt_Tin[t] = b.usc_mp.fs.hxc.tube_inlet.temperature[0] + blk.hxc_salt_Tout[t] = b.usc_mp.fs.hxc.tube_outlet.temperature[0] + blk.hxd_salt[t] = b.usc_mp.fs.hxd.shell_inlet.flow_mass[0] + blk.hxd_duty[t] = b.usc_mp.fs.hxd.heat_duty[0] + blk.hxd_salt_Tin[t] = b.usc_mp.fs.hxd.shell_inlet.temperature[0] + blk.hxd_salt_Tout[t] = b.usc_mp.fs.hxd.shell_outlet.temperature[0] + blk.hxd_steam_Tout[t] = b.usc_mp.fs.hxd.cold_side.properties_out[0].temperature + blk.hxd_steam_vfrac[t] = b.usc_mp.fs.hxd.cold_side.properties_out[0].vapor_frac self.multiperiod_usc = multiperiod_usc return - @staticmethod - def update_model(b, implemented_power_output, realized_soc): + def update_model(self, b, implemented_power_output, realized_soc): """ Update `blk` variables using the actual implemented power output. @@ -168,7 +131,8 @@ def update_model(b, implemented_power_output, realized_soc): Returns: None """ - multiperiod_usc = b.usc_mp + blk = b + multiperiod_usc = blk.usc_mp active_blks = multiperiod_usc.get_active_process_blocks() implemented_power = round(implemented_power_output[-1]) @@ -176,8 +140,8 @@ def update_model(b, implemented_power_output, realized_soc): print("Implemented Power (MPC)", implemented_power) print("Realized SOC (MPC)", realized_soc) - active_blks[0].fs.previous_power.fix(implemented_power) - active_blks[0].fs.previous_salt_inventory_hot.fix(realized_soc) + active_blks[0].usc_mp.previous_power.fix(implemented_power) + active_blks[0].usc_mp.previous_salt_inventory_hot.fix(realized_soc) return @@ -193,10 +157,10 @@ def get_last_delivered_power(b, last_implemented_time_step): step Returns: - Float64: Value of power output in last time step + Float64: Value of power output in the last time step """ - # blk = b - return pyo.value(b.P_T[last_implemented_time_step]) + blk = b + return pyo.value(blk.P_T[last_implemented_time_step]) @staticmethod def get_implemented_profile(b, last_implemented_time_step): @@ -211,18 +175,18 @@ def get_implemented_profile(b, last_implemented_time_step): Returns: profile: the intended profile, {unit: [...]} """ - # blk = b - multiperiod_usc = b.usc_mp + blk = b + multiperiod_usc = blk.usc_mp active_blks = multiperiod_usc.get_active_process_blocks() implemented_power_output = deque( [ - pyo.value(active_blks[t].fs.net_power) + pyo.value(active_blks[t].usc_mp.fs.net_power) for t in range(last_implemented_time_step + 1) ] ) realized_soc = deque( [ - pyo.value(active_blks[t].fs.salt_inventory_hot) + pyo.value(active_blks[t].usc_mp.salt_inventory_hot) for t in range(last_implemented_time_step + 1) ] ) @@ -232,7 +196,7 @@ def get_implemented_profile(b, last_implemented_time_step): "realized_soc": realized_soc, } - def record_results(self, blk, date=None, hour=None, **kwargs): + def record_results(self, b, date=None, hour=None, **kwargs): """ Record the operations stats for the model. @@ -246,7 +210,7 @@ def record_results(self, blk, date=None, hour=None, **kwargs): None """ - # blk = b + blk = b df_list = [] df_listimp = [] for t in blk.HOUR: @@ -256,7 +220,6 @@ def record_results(self, blk, date=None, hour=None, **kwargs): result_dict["Date"] = date result_dict["Hour"] = hour - # simulation inputs result_dict["Horizon [hr]"] = int(t) diff --git a/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/multiperiod_integrated_storage_usc.py b/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/multiperiod_integrated_storage_usc.py index 80d4084f8..83537e7af 100644 --- a/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/multiperiod_integrated_storage_usc.py +++ b/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/multiperiod_integrated_storage_usc.py @@ -1,7 +1,7 @@ ################################################################################# -# DISPATCHES was produced under the DOE Design Integration and Synthesis Platform -# to Advance Tightly Coupled Hybrid Energy Systems program (DISPATCHES), and is -# copyright (c) 2020-2023 by the software owners: The Regents of the University +# DISPATCHES was produced under the DOE Design Integration and Synthesis +# Platform to Advance Tightly Coupled Hybrid Energy Systems program (DISPATCHES), +# and is copyright (c) 2022 by the software owners: The Regents of the University # of California, through Lawrence Berkeley National Laboratory, National # Technology & Engineering Solutions of Sandia, LLC, Alliance for Sustainable # Energy, LLC, Battelle Energy Alliance, LLC, University of Notre Dame du Lac, et @@ -10,6 +10,7 @@ # Please see the files COPYRIGHT.md and LICENSE.md for full copyright and license # information, respectively. Both files are also available online at the URL: # "https://github.com/gmlc-dispatches/dispatches". +# ################################################################################# """ @@ -24,23 +25,21 @@ __author__ = "Naresh Susarla and Soraya Rawlings" -from importlib import resources # Python 3.8+ -from idaes.core.util import from_json, to_json -import idaes.logger as idaeslog +try: + from importlib import resources # Python 3.8+ +except ImportError: + import importlib_resources as resources # Python 3.7 + -from pyomo.environ import (NonNegativeReals, Constraint, Var, ConcreteModel) +from pyomo.environ import (NonNegativeReals, ConcreteModel, Constraint, Var) from idaes.apps.grid_integration.multiperiod.multiperiod import ( MultiPeriodModel) -from dispatches.case_studies.fossil_case.ultra_supercritical_plant import ( - ultra_supercritical_powerplant as usc) from dispatches.case_studies.fossil_case.ultra_supercritical_plant.storage import ( - integrated_storage_with_ultrasupercritical_power_plant as usc_w_tes) - + integrated_storage_with_ultrasupercritical_power_plant as usc) +from dispatches.case_studies.fossil_case.ultra_supercritical_plant import storage -def create_usc_model(m=None, pmin=None, pmax=None): - if m is None: - m = ConcreteModel(name="Integrated Model") +def create_usc_model(pmin, pmax): # Set bounds for plant power min_storage_heat_duty = 10 # in MW @@ -48,206 +47,70 @@ def create_usc_model(m=None, pmin=None, pmax=None): max_power = 436 # in MW min_power = int(0.65 * max_power) # 283 in MW - if pmin is None: - pmin = int(0.65 * 436) + 1 - if pmax is None: - pmax = 436 + 30 - - m = usc.build_plant_model(m) - - # Create a flowsheet, add properties, unit models, and arcs - m = usc_w_tes.create_integrated_model(m, max_power=max_power) - - # Give all the required inputs to the model - usc_w_tes.set_model_input(m) - - # Add scaling factor - usc_w_tes.set_scaling_factors(m) - # Initialize the model with a sequential initialization and custom - # Add cost correlations - m = usc_w_tes.build_costing(m) + m = ConcreteModel() - # Add bounds - usc_w_tes.add_bounds(m) - + with resources.path(storage, "initialized_integrated_storage_usc.json") as data_file_path: + assert data_file_path.is_file() + m.usc_mp = usc.main(max_power=max_power, + load_from_file=str(data_file_path)) - m.fs.plant_min_power_eq = Constraint( - expr=m.fs.plant_power_out[0] >= min_power + m.usc_mp.fs.plant_min_power_eq = Constraint( + expr=m.usc_mp.fs.plant_power_out[0] >= min_power ) - m.fs.plant_max_power_eq = Constraint( - expr=m.fs.plant_power_out[0] <= max_power + m.usc_mp.fs.plant_max_power_eq = Constraint( + expr=m.usc_mp.fs.plant_power_out[0] <= max_power ) - m.fs.hxc.heat_duty.setlb(min_storage_heat_duty * 1e6) - m.fs.hxd.heat_duty.setlb(min_storage_heat_duty * 1e6) - - m.fs.hxc.heat_duty.setub(max_storage_heat_duty * 1e6) - m.fs.hxd.heat_duty.setub(max_storage_heat_duty * 1e6) - - # Add coupling variables - m.fs.previous_power = Var( - domain=NonNegativeReals, - initialize=300, - bounds=(pmin, pmax), - doc="Previous period power (MW)" - ) - - inventory_max = 1e7 - inventory_min = 75000 - tank_max = 6739292 # Units in kg + m.usc_mp.fs.hxc.heat_duty.setlb(min_storage_heat_duty * 1e6) + m.usc_mp.fs.hxd.heat_duty.setlb(min_storage_heat_duty * 1e6) - m.fs.previous_salt_inventory_hot = Var( - domain=NonNegativeReals, - initialize=inventory_min, - bounds=(0, inventory_max), - doc="Hot salt at the beginning of the hour (or time period), kg" - ) - m.fs.salt_inventory_hot = Var( - domain=NonNegativeReals, - initialize=inventory_min, - bounds=(0, inventory_max), - doc="Hot salt inventory at the end of the hour (or time period), kg" - ) - m.fs.previous_salt_inventory_cold = Var( - domain=NonNegativeReals, - initialize=tank_max-inventory_min, - bounds=(0, inventory_max), - doc="Cold salt at the beginning of the hour (or time period), kg" - ) - m.fs.salt_inventory_cold = Var( - domain=NonNegativeReals, - initialize=tank_max-inventory_min, - bounds=(0, inventory_max), - doc="Cold salt inventory at the end of the hour (or time period), kg" - ) + m.usc_mp.fs.hxc.heat_duty.setub(max_storage_heat_duty * 1e6) + m.usc_mp.fs.hxd.heat_duty.setub(max_storage_heat_duty * 1e6) - @m.fs.Constraint(doc="Plant ramping down constraint") - def constraint_ramp_down(b): - return ( - m.fs.previous_power - 60 <= - m.fs.plant_power_out[0]) - - @m.fs.Constraint(doc="Plant ramping up constraint") - def constraint_ramp_up(b): - return ( - m.fs.previous_power + 60 >= - m.fs.plant_power_out[0]) - - @m.fs.Constraint(doc="Inventory balance at the end of the time period") - def constraint_salt_inventory_hot(b): - return ( - m.fs.salt_inventory_hot == - m.fs.previous_salt_inventory_hot - + (3600*m.fs.hxc.tube_inlet.flow_mass[0] - - 3600*m.fs.hxd.shell_inlet.flow_mass[0]) - ) - - @m.fs.Constraint(doc="Max salt flow to hxd based on available hot salt") - def constraint_salt_maxflow_hot(b): - return ( - 3600*m.fs.hxd.shell_inlet.flow_mass[0] <= - m.fs.previous_salt_inventory_hot - ) - - @m.fs.Constraint(doc="Max salt flow to hxc based on available cold salt") - def constraint_salt_maxflow_cold(b): - return ( - 3600*m.fs.hxc.tube_inlet.flow_mass[0] <= - m.fs.previous_salt_inventory_cold - ) - - @m.fs.Constraint(doc="Maximum salt inventory at any time") - def constraint_salt_inventory(b): - return ( - m.fs.salt_inventory_hot + - m.fs.salt_inventory_cold == m.fs.salt_amount) - - return m - - -def usc_unfix_dof(m): # Unfix data - m.fs.boiler.inlet.flow_mol[0].unfix() + m.usc_mp.fs.boiler.inlet.flow_mol[0].unfix() # Unfix storage system data - m.fs.ess_hp_split.split_fraction[0, "to_hxc"].unfix() - m.fs.ess_bfp_split.split_fraction[0, "to_hxd"].unfix() - for salt_hxc in [m.fs.hxc]: + m.usc_mp.fs.ess_hp_split.split_fraction[0, "to_hxc"].unfix() + m.usc_mp.fs.ess_bfp_split.split_fraction[0, "to_hxd"].unfix() + for salt_hxc in [m.usc_mp.fs.hxc]: salt_hxc.shell_inlet.unfix() salt_hxc.tube_inlet.flow_mass.unfix() # kg/s, 1 DOF salt_hxc.area.unfix() # 1 DOF - for salt_hxd in [m.fs.hxd]: + for salt_hxd in [m.usc_mp.fs.hxd]: salt_hxd.tube_inlet.unfix() salt_hxd.shell_inlet.flow_mass.unfix() # kg/s, 1 DOF salt_hxd.area.unfix() # 1 DOF - for unit in [m.fs.cooler]: + for unit in [m.usc_mp.fs.cooler]: unit.inlet.unfix() - m.fs.cooler.outlet.enth_mol[0].unfix() # 1 DOF + m.usc_mp.fs.cooler.outlet.enth_mol[0].unfix() # 1 DOF # Fix storage heat exchangers area and salt temperatures - m.fs.hxc.area.fix(1904) - m.fs.hxd.area.fix(2830) - m.fs.hxc.tube_outlet.temperature[0].fix(831) - m.fs.hxd.shell_inlet.temperature[0].fix(831) - m.fs.hxd.shell_outlet.temperature[0].fix(513.15) - - - -def usc_custom_init(m): - - blk = usc.build_plant_model() - usc.initialize(blk) - - # Create a flowsheet, add properties, unit models, and arcs - max_power = 436 # in MW - min_power = int(0.65 * 436) - pmin = int(0.65 * 436) + 1 - pmax = 436 + 30 - min_storage_heat_duty = 10 # in MW - max_storage_heat_duty = 200 # in MW - - - blk = usc_w_tes.create_integrated_model(blk, max_power=max_power) - - # Give all the required inputs to the model - usc_w_tes.set_model_input(blk) + m.usc_mp.fs.hxc.area.fix(1904) + m.usc_mp.fs.hxd.area.fix(2830) + m.usc_mp.fs.hxc.tube_outlet.temperature[0].fix(831) + m.usc_mp.fs.hxd.shell_inlet.temperature[0].fix(831) + m.usc_mp.fs.hxd.shell_outlet.temperature[0].fix(513.15) - # Add scaling factor - usc_w_tes.set_scaling_factors(blk) - - # Initialize the model with a sequential initialization and custom - # routines - usc_w_tes.initialize(blk) - - # Add cost correlations - blk = usc_w_tes.build_costing(blk) - - # Initialize with bounds - usc_w_tes.initialize_with_costing(blk) - - blk.fs.plant_min_power_eq = Constraint( - expr=blk.fs.plant_power_out[0] >= min_power - ) - blk.fs.plant_max_power_eq = Constraint( - expr=blk.fs.plant_power_out[0] <= max_power - ) + return m - blk.fs.hxc.heat_duty.setlb(min_storage_heat_duty * 1e6) - blk.fs.hxd.heat_duty.setlb(min_storage_heat_duty * 1e6) - blk.fs.hxc.heat_duty.setub(max_storage_heat_duty * 1e6) - blk.fs.hxd.heat_duty.setub(max_storage_heat_duty * 1e6) +def create_usc_mp_block(pmin=None, pmax=None): + print('>>> Creating USC model and initialization for each time period') if pmin is None: pmin = int(0.65 * 436) + 1 if pmax is None: pmax = 436 + 30 + m = create_usc_model(pmin, pmax) + b1 = m.usc_mp + # Add coupling variables - blk.fs.previous_power = Var( + b1.previous_power = Var( domain=NonNegativeReals, initialize=300, bounds=(pmin, pmax), @@ -258,76 +121,73 @@ def usc_custom_init(m): inventory_min = 75000 tank_max = 6739292 # Units in kg - blk.fs.previous_salt_inventory_hot = Var( + b1.previous_salt_inventory_hot = Var( domain=NonNegativeReals, initialize=inventory_min, bounds=(0, inventory_max), doc="Hot salt at the beginning of the hour (or time period), kg" ) - blk.fs.salt_inventory_hot = Var( + b1.salt_inventory_hot = Var( domain=NonNegativeReals, initialize=inventory_min, bounds=(0, inventory_max), doc="Hot salt inventory at the end of the hour (or time period), kg" ) - blk.fs.previous_salt_inventory_cold = Var( + b1.previous_salt_inventory_cold = Var( domain=NonNegativeReals, initialize=tank_max-inventory_min, bounds=(0, inventory_max), doc="Cold salt at the beginning of the hour (or time period), kg" ) - blk.fs.salt_inventory_cold = Var( + b1.salt_inventory_cold = Var( domain=NonNegativeReals, initialize=tank_max-inventory_min, bounds=(0, inventory_max), doc="Cold salt inventory at the end of the hour (or time period), kg" ) - @blk.fs.Constraint(doc="Plant ramping down constraint") + @b1.fs.Constraint(doc="Plant ramping down constraint") def constraint_ramp_down(b): return ( - blk.fs.previous_power - 60 <= - blk.fs.plant_power_out[0]) + b1.previous_power - 60 <= + b1.fs.plant_power_out[0]) - @blk.fs.Constraint(doc="Plant ramping up constraint") + @b1.fs.Constraint(doc="Plant ramping up constraint") def constraint_ramp_up(b): return ( - blk.fs.previous_power + 60 >= - blk.fs.plant_power_out[0]) + b1.previous_power + 60 >= + b1.fs.plant_power_out[0]) - @blk.fs.Constraint(doc="Inventory balance at the end of the time period") + @b1.fs.Constraint(doc="Inventory balance at the end of the time period") def constraint_salt_inventory_hot(b): return ( - blk.fs.salt_inventory_hot == - blk.fs.previous_salt_inventory_hot - + (3600*blk.fs.hxc.tube_inlet.flow_mass[0] - - 3600*blk.fs.hxd.shell_inlet.flow_mass[0]) + b1.salt_inventory_hot == + b1.previous_salt_inventory_hot + + (3600*b1.fs.hxc.tube_inlet.flow_mass[0] + - 3600*b1.fs.hxd.shell_inlet.flow_mass[0]) ) - @blk.fs.Constraint(doc="Max salt flow to hxd based on available hot salt") + @b1.fs.Constraint(doc="Max salt flow to hxd based on available hot salt") def constraint_salt_maxflow_hot(b): return ( - 3600*blk.fs.hxd.shell_inlet.flow_mass[0] <= - blk.fs.previous_salt_inventory_hot + 3600*b1.fs.hxd.shell_inlet.flow_mass[0] <= + b1.previous_salt_inventory_hot ) - @blk.fs.Constraint(doc="Max salt flow to hxc based on available cold salt") + @b1.fs.Constraint(doc="Max salt flow to hxc based on available cold salt") def constraint_salt_maxflow_cold(b): return ( - 3600*blk.fs.hxc.tube_inlet.flow_mass[0] <= - blk.fs.previous_salt_inventory_cold + 3600*b1.fs.hxc.tube_inlet.flow_mass[0] <= + b1.previous_salt_inventory_cold ) - @blk.fs.Constraint(doc="Maximum salt inventory at any time") + @b1.fs.Constraint(doc="Maximum salt inventory at any time") def constraint_salt_inventory(b): return ( - blk.fs.salt_inventory_hot + - blk.fs.salt_inventory_cold == blk.fs.salt_amount) + b1.salt_inventory_hot + + b1.salt_inventory_cold == b1.fs.salt_amount) - init_model = to_json(blk, return_dict=True) - from_json(m, sd=init_model) - - return + return m # The tank level and power output are linked between the contiguous time periods @@ -336,10 +196,10 @@ def get_usc_link_variable_pairs(b1, b2): b1: current time block b2: next time block """ - return [(b1.fs.salt_inventory_hot, - b2.fs.previous_salt_inventory_hot), - (b1.fs.plant_power_out[0], - b2.fs.previous_power)] + return [(b1.usc_mp.salt_inventory_hot, + b2.usc_mp.previous_salt_inventory_hot), + (b1.usc_mp.fs.plant_power_out[0], + b2.usc_mp.previous_power)] # The tank level at the end of the last time period must be the same as at the @@ -350,8 +210,8 @@ def get_usc_periodic_variable_pairs(b1, b2): b2: first time block """ # return - return [(b1.fs.salt_inventory_hot, - b2.fs.previous_salt_inventory_hot)] + return [(b1.usc_mp.salt_inventory_hot, + b2.usc_mp.previous_salt_inventory_hot)] # Create the multiperiod model object. You can pass arguments to your # "process_model_func" for each time period using a dict of dicts as @@ -367,15 +227,13 @@ def create_multiperiod_usc_model(n_time_points=4, pmin=None, pmax=None): n_time_points: Number of time blocks to create """ multiperiod_usc = MultiPeriodModel( - n_time_points=n_time_points, - process_model_func=create_usc_model, - initialization_func=usc_custom_init, - unfix_dof_func=usc_unfix_dof, - linking_variable_func=get_usc_link_variable_pairs, - flowsheet_options={"pmin": pmin, - "pmax": pmax}, - use_stochastic_build=True, - outlvl=idaeslog.INFO, + n_time_points, + lambda: create_usc_mp_block(pmin=None, pmax=None), + get_usc_link_variable_pairs, + get_usc_periodic_variable_pairs ) + # If you have no arguments, you don't actually need to pass in + # anything. NOTE: building the model will initialize each time block + multiperiod_usc.build_multi_period_model() return multiperiod_usc From 07212b368489f469c6eebb7ceb921004eba028b1 Mon Sep 17 00:00:00 2001 From: MarcusHolly Date: Tue, 2 Jan 2024 11:39:20 -0500 Subject: [PATCH 14/14] Revert "Update duplicate files" This reverts commit 4ea69886e6f62d9418a81b2d8eefd01b7f1f8106. --- .../storage/multiperiod_double_loop_usc.py | 129 +++++--- .../multiperiod_integrated_storage_usc.py | 308 +++++++++++++----- 2 files changed, 308 insertions(+), 129 deletions(-) diff --git a/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/multiperiod_double_loop_usc.py b/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/multiperiod_double_loop_usc.py index 2846b94ab..d4070aab1 100644 --- a/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/multiperiod_double_loop_usc.py +++ b/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/multiperiod_double_loop_usc.py @@ -1,7 +1,7 @@ ################################################################################# -# DISPATCHES was produced under the DOE Design Integration and Synthesis -# Platform to Advance Tightly Coupled Hybrid Energy Systems program (DISPATCHES), -# and is copyright (c) 2022 by the software owners: The Regents of the University +# DISPATCHES was produced under the DOE Design Integration and Synthesis Platform +# to Advance Tightly Coupled Hybrid Energy Systems program (DISPATCHES), and is +# copyright (c) 2020-2023 by the software owners: The Regents of the University # of California, through Lawrence Berkeley National Laboratory, National # Technology & Engineering Solutions of Sandia, LLC, Alliance for Sustainable # Energy, LLC, Battelle Energy Alliance, LLC, University of Notre Dame du Lac, et @@ -10,12 +10,11 @@ # Please see the files COPYRIGHT.md and LICENSE.md for full copyright and license # information, respectively. Both files are also available online at the URL: # "https://github.com/gmlc-dispatches/dispatches". -# ################################################################################# """ This script describes a multiperiod class to build an object for the -integrated ultra-supercritical power plant and molten-salt based +integrated ultra-supercritical power plant and motlen-salt based thermal energy storage model. """ @@ -24,8 +23,46 @@ import pyomo.environ as pyo import pandas as pd from collections import deque +import idaes.logger as idaeslog + +# IDAES imports +from idaes.apps.grid_integration.multiperiod.multiperiod import MultiPeriodModel + +# DISPATCHES imports from dispatches.case_studies.fossil_case.ultra_supercritical_plant \ - .storage.multiperiod_integrated_storage_usc import create_multiperiod_usc_model + .storage.multiperiod_integrated_storage_usc import (create_usc_model, + usc_unfix_dof, + usc_custom_init, + get_usc_link_variable_pairs) + + +def create_multiperiod_usc_model(n_time_points=4, pmin=None, pmax=None): + """ + Create a multi-period usc_mp cycle object. This object contains a pyomo + model with a block for each time instance. + + n_time_points: Number of time blocks to create + """ + multiperiod_usc = MultiPeriodModel( + n_time_points=n_time_points, + process_model_func=create_usc_model, + initialization_func=usc_custom_init, + unfix_dof_func=usc_unfix_dof, + linking_variable_func=get_usc_link_variable_pairs, + use_stochastic_build=False, + outlvl=idaeslog.INFO, + ) + + flowsheet_options={"pmin": pmin, + "pmax": pmax} + + # create the multiperiod object + multiperiod_usc.build_multi_period_model( + model_data_kwargs={t: flowsheet_options for t in range(n_time_points)}, + flowsheet_options=flowsheet_options, + ) + + return multiperiod_usc class MultiPeriodUsc: @@ -34,7 +71,7 @@ def __init__( ): """ Arguments: - horizon: Int64 - number of time points to use for associated multi-period model + horizon::Int64 - number of time points to use for associated multi-period model Returns: Float64: Value of power output in last time step @@ -44,13 +81,13 @@ def __init__( self.result_listimp = [] self.model_data = model_data - def populate_model(self, b, horizon): + def populate_model(self, blk, horizon): """ - Create an integrated ultra-supercritical power plant and molten salt + Create a integrated ultra-supercritical power plant and molten salt thermal energy storage model using the `MultiPeriod` package. Arguments: - blk: this is an empty block passed in from either a bidder or tracker + blk: this is an empty block passed in from eithe a bidder or tracker Returns: None @@ -58,7 +95,6 @@ def populate_model(self, b, horizon): tank_min = 76000 # in kg tank_max = 6739292 # in kg - blk = b if not blk.is_constructed(): blk.construct() @@ -69,9 +105,9 @@ def populate_model(self, b, horizon): blk.usc_mp = multiperiod_usc active_blks = multiperiod_usc.get_active_process_blocks() - active_blks[0].usc_mp.previous_salt_inventory_hot.fix(tank_min) - active_blks[0].usc_mp.previous_salt_inventory_cold.fix(tank_max-tank_min) - active_blks[0].usc_mp.previous_power.fix(380) + active_blks[0].fs.previous_salt_inventory_hot.fix(tank_min) + active_blks[0].fs.previous_salt_inventory_cold.fix(tank_max-tank_min) + active_blks[0].fs.previous_power.fix(380) # create expression that references underlying power variables blk.HOUR = pyo.Set(initialize=range(horizon)) @@ -92,33 +128,34 @@ def populate_model(self, b, horizon): blk.hxd_steam_Tout = pyo.Expression(blk.HOUR) blk.hxd_steam_vfrac = pyo.Expression(blk.HOUR) for (t, b) in enumerate(active_blks): - blk.P_T[t] = b.usc_mp.fs.net_power - blk.hot_level[t] = b.usc_mp.salt_inventory_hot + blk.P_T[t] = b.fs.net_power + blk.hot_level[t] = b.fs.salt_inventory_hot blk.storage_power[t] = ((-1e-6) - * b.usc_mp.fs.es_turbine.work_mechanical[0]) - blk.plant_duty[t] = b.usc_mp.fs.plant_heat_duty[0] + * b.fs.es_turbine.work_mechanical[0]) + blk.plant_duty[t] = b.fs.plant_heat_duty[0] blk.tot_cost[t] = ( - b.usc_mp.fs.operating_cost - + (b.usc_mp.fs.plant_fixed_operating_cost - + b.usc_mp.fs.plant_variable_operating_cost) / (365 * 24) + b.fs.operating_cost + + (b.fs.plant_fixed_operating_cost + + b.fs.plant_variable_operating_cost) / (365 * 24) ) - blk.plant_power[t] = b.usc_mp.fs.plant_power_out[0] - blk.hxc_salt[t] = b.usc_mp.fs.hxc.tube_inlet.flow_mass[0] - blk.hxc_duty[t] = b.usc_mp.fs.hxc.heat_duty[0] - blk.hxc_salt_Tin[t] = b.usc_mp.fs.hxc.tube_inlet.temperature[0] - blk.hxc_salt_Tout[t] = b.usc_mp.fs.hxc.tube_outlet.temperature[0] - blk.hxd_salt[t] = b.usc_mp.fs.hxd.shell_inlet.flow_mass[0] - blk.hxd_duty[t] = b.usc_mp.fs.hxd.heat_duty[0] - blk.hxd_salt_Tin[t] = b.usc_mp.fs.hxd.shell_inlet.temperature[0] - blk.hxd_salt_Tout[t] = b.usc_mp.fs.hxd.shell_outlet.temperature[0] - blk.hxd_steam_Tout[t] = b.usc_mp.fs.hxd.cold_side.properties_out[0].temperature - blk.hxd_steam_vfrac[t] = b.usc_mp.fs.hxd.cold_side.properties_out[0].vapor_frac + blk.plant_power[t] = b.fs.plant_power_out[0] + blk.hxc_salt[t] = b.fs.hxc.tube_inlet.flow_mass[0] + blk.hxc_duty[t] = b.fs.hxc.heat_duty[0] + blk.hxc_salt_Tin[t] = b.fs.hxc.tube_inlet.temperature[0] + blk.hxc_salt_Tout[t] = b.fs.hxc.tube_outlet.temperature[0] + blk.hxd_salt[t] = b.fs.hxd.shell_inlet.flow_mass[0] + blk.hxd_duty[t] = b.fs.hxd.heat_duty[0] + blk.hxd_salt_Tin[t] = b.fs.hxd.shell_inlet.temperature[0] + blk.hxd_salt_Tout[t] = b.fs.hxd.shell_outlet.temperature[0] + blk.hxd_steam_Tout[t] = b.fs.hxd.cold_side.properties_out[0].temperature + blk.hxd_steam_vfrac[t] = b.fs.hxd.cold_side.properties_out[0].vapor_frac self.multiperiod_usc = multiperiod_usc return - def update_model(self, b, implemented_power_output, realized_soc): + @staticmethod + def update_model(b, implemented_power_output, realized_soc): """ Update `blk` variables using the actual implemented power output. @@ -131,8 +168,7 @@ def update_model(self, b, implemented_power_output, realized_soc): Returns: None """ - blk = b - multiperiod_usc = blk.usc_mp + multiperiod_usc = b.usc_mp active_blks = multiperiod_usc.get_active_process_blocks() implemented_power = round(implemented_power_output[-1]) @@ -140,8 +176,8 @@ def update_model(self, b, implemented_power_output, realized_soc): print("Implemented Power (MPC)", implemented_power) print("Realized SOC (MPC)", realized_soc) - active_blks[0].usc_mp.previous_power.fix(implemented_power) - active_blks[0].usc_mp.previous_salt_inventory_hot.fix(realized_soc) + active_blks[0].fs.previous_power.fix(implemented_power) + active_blks[0].fs.previous_salt_inventory_hot.fix(realized_soc) return @@ -157,10 +193,10 @@ def get_last_delivered_power(b, last_implemented_time_step): step Returns: - Float64: Value of power output in the last time step + Float64: Value of power output in last time step """ - blk = b - return pyo.value(blk.P_T[last_implemented_time_step]) + # blk = b + return pyo.value(b.P_T[last_implemented_time_step]) @staticmethod def get_implemented_profile(b, last_implemented_time_step): @@ -175,18 +211,18 @@ def get_implemented_profile(b, last_implemented_time_step): Returns: profile: the intended profile, {unit: [...]} """ - blk = b - multiperiod_usc = blk.usc_mp + # blk = b + multiperiod_usc = b.usc_mp active_blks = multiperiod_usc.get_active_process_blocks() implemented_power_output = deque( [ - pyo.value(active_blks[t].usc_mp.fs.net_power) + pyo.value(active_blks[t].fs.net_power) for t in range(last_implemented_time_step + 1) ] ) realized_soc = deque( [ - pyo.value(active_blks[t].usc_mp.salt_inventory_hot) + pyo.value(active_blks[t].fs.salt_inventory_hot) for t in range(last_implemented_time_step + 1) ] ) @@ -196,7 +232,7 @@ def get_implemented_profile(b, last_implemented_time_step): "realized_soc": realized_soc, } - def record_results(self, b, date=None, hour=None, **kwargs): + def record_results(self, blk, date=None, hour=None, **kwargs): """ Record the operations stats for the model. @@ -210,7 +246,7 @@ def record_results(self, b, date=None, hour=None, **kwargs): None """ - blk = b + # blk = b df_list = [] df_listimp = [] for t in blk.HOUR: @@ -220,6 +256,7 @@ def record_results(self, b, date=None, hour=None, **kwargs): result_dict["Date"] = date result_dict["Hour"] = hour + # simulation inputs result_dict["Horizon [hr]"] = int(t) diff --git a/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/multiperiod_integrated_storage_usc.py b/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/multiperiod_integrated_storage_usc.py index 83537e7af..80d4084f8 100644 --- a/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/multiperiod_integrated_storage_usc.py +++ b/dispatches/case_studies/fossil_case/ultra_supercritical_plant/storage/multiperiod_integrated_storage_usc.py @@ -1,7 +1,7 @@ ################################################################################# -# DISPATCHES was produced under the DOE Design Integration and Synthesis -# Platform to Advance Tightly Coupled Hybrid Energy Systems program (DISPATCHES), -# and is copyright (c) 2022 by the software owners: The Regents of the University +# DISPATCHES was produced under the DOE Design Integration and Synthesis Platform +# to Advance Tightly Coupled Hybrid Energy Systems program (DISPATCHES), and is +# copyright (c) 2020-2023 by the software owners: The Regents of the University # of California, through Lawrence Berkeley National Laboratory, National # Technology & Engineering Solutions of Sandia, LLC, Alliance for Sustainable # Energy, LLC, Battelle Energy Alliance, LLC, University of Notre Dame du Lac, et @@ -10,7 +10,6 @@ # Please see the files COPYRIGHT.md and LICENSE.md for full copyright and license # information, respectively. Both files are also available online at the URL: # "https://github.com/gmlc-dispatches/dispatches". -# ################################################################################# """ @@ -25,21 +24,23 @@ __author__ = "Naresh Susarla and Soraya Rawlings" -try: - from importlib import resources # Python 3.8+ -except ImportError: - import importlib_resources as resources # Python 3.7 - +from importlib import resources # Python 3.8+ +from idaes.core.util import from_json, to_json +import idaes.logger as idaeslog -from pyomo.environ import (NonNegativeReals, ConcreteModel, Constraint, Var) +from pyomo.environ import (NonNegativeReals, Constraint, Var, ConcreteModel) from idaes.apps.grid_integration.multiperiod.multiperiod import ( MultiPeriodModel) +from dispatches.case_studies.fossil_case.ultra_supercritical_plant import ( + ultra_supercritical_powerplant as usc) from dispatches.case_studies.fossil_case.ultra_supercritical_plant.storage import ( - integrated_storage_with_ultrasupercritical_power_plant as usc) -from dispatches.case_studies.fossil_case.ultra_supercritical_plant import storage + integrated_storage_with_ultrasupercritical_power_plant as usc_w_tes) + +def create_usc_model(m=None, pmin=None, pmax=None): -def create_usc_model(pmin, pmax): + if m is None: + m = ConcreteModel(name="Integrated Model") # Set bounds for plant power min_storage_heat_duty = 10 # in MW @@ -47,70 +48,206 @@ def create_usc_model(pmin, pmax): max_power = 436 # in MW min_power = int(0.65 * max_power) # 283 in MW + if pmin is None: + pmin = int(0.65 * 436) + 1 + if pmax is None: + pmax = 436 + 30 + + m = usc.build_plant_model(m) + + # Create a flowsheet, add properties, unit models, and arcs + m = usc_w_tes.create_integrated_model(m, max_power=max_power) + + # Give all the required inputs to the model + usc_w_tes.set_model_input(m) + + # Add scaling factor + usc_w_tes.set_scaling_factors(m) - m = ConcreteModel() + # Initialize the model with a sequential initialization and custom + # Add cost correlations + m = usc_w_tes.build_costing(m) - with resources.path(storage, "initialized_integrated_storage_usc.json") as data_file_path: - assert data_file_path.is_file() - m.usc_mp = usc.main(max_power=max_power, - load_from_file=str(data_file_path)) + # Add bounds + usc_w_tes.add_bounds(m) + - m.usc_mp.fs.plant_min_power_eq = Constraint( - expr=m.usc_mp.fs.plant_power_out[0] >= min_power + m.fs.plant_min_power_eq = Constraint( + expr=m.fs.plant_power_out[0] >= min_power ) - m.usc_mp.fs.plant_max_power_eq = Constraint( - expr=m.usc_mp.fs.plant_power_out[0] <= max_power + m.fs.plant_max_power_eq = Constraint( + expr=m.fs.plant_power_out[0] <= max_power ) - m.usc_mp.fs.hxc.heat_duty.setlb(min_storage_heat_duty * 1e6) - m.usc_mp.fs.hxd.heat_duty.setlb(min_storage_heat_duty * 1e6) + m.fs.hxc.heat_duty.setlb(min_storage_heat_duty * 1e6) + m.fs.hxd.heat_duty.setlb(min_storage_heat_duty * 1e6) + + m.fs.hxc.heat_duty.setub(max_storage_heat_duty * 1e6) + m.fs.hxd.heat_duty.setub(max_storage_heat_duty * 1e6) + + # Add coupling variables + m.fs.previous_power = Var( + domain=NonNegativeReals, + initialize=300, + bounds=(pmin, pmax), + doc="Previous period power (MW)" + ) + + inventory_max = 1e7 + inventory_min = 75000 + tank_max = 6739292 # Units in kg - m.usc_mp.fs.hxc.heat_duty.setub(max_storage_heat_duty * 1e6) - m.usc_mp.fs.hxd.heat_duty.setub(max_storage_heat_duty * 1e6) + m.fs.previous_salt_inventory_hot = Var( + domain=NonNegativeReals, + initialize=inventory_min, + bounds=(0, inventory_max), + doc="Hot salt at the beginning of the hour (or time period), kg" + ) + m.fs.salt_inventory_hot = Var( + domain=NonNegativeReals, + initialize=inventory_min, + bounds=(0, inventory_max), + doc="Hot salt inventory at the end of the hour (or time period), kg" + ) + m.fs.previous_salt_inventory_cold = Var( + domain=NonNegativeReals, + initialize=tank_max-inventory_min, + bounds=(0, inventory_max), + doc="Cold salt at the beginning of the hour (or time period), kg" + ) + m.fs.salt_inventory_cold = Var( + domain=NonNegativeReals, + initialize=tank_max-inventory_min, + bounds=(0, inventory_max), + doc="Cold salt inventory at the end of the hour (or time period), kg" + ) + @m.fs.Constraint(doc="Plant ramping down constraint") + def constraint_ramp_down(b): + return ( + m.fs.previous_power - 60 <= + m.fs.plant_power_out[0]) + + @m.fs.Constraint(doc="Plant ramping up constraint") + def constraint_ramp_up(b): + return ( + m.fs.previous_power + 60 >= + m.fs.plant_power_out[0]) + + @m.fs.Constraint(doc="Inventory balance at the end of the time period") + def constraint_salt_inventory_hot(b): + return ( + m.fs.salt_inventory_hot == + m.fs.previous_salt_inventory_hot + + (3600*m.fs.hxc.tube_inlet.flow_mass[0] + - 3600*m.fs.hxd.shell_inlet.flow_mass[0]) + ) + + @m.fs.Constraint(doc="Max salt flow to hxd based on available hot salt") + def constraint_salt_maxflow_hot(b): + return ( + 3600*m.fs.hxd.shell_inlet.flow_mass[0] <= + m.fs.previous_salt_inventory_hot + ) + + @m.fs.Constraint(doc="Max salt flow to hxc based on available cold salt") + def constraint_salt_maxflow_cold(b): + return ( + 3600*m.fs.hxc.tube_inlet.flow_mass[0] <= + m.fs.previous_salt_inventory_cold + ) + + @m.fs.Constraint(doc="Maximum salt inventory at any time") + def constraint_salt_inventory(b): + return ( + m.fs.salt_inventory_hot + + m.fs.salt_inventory_cold == m.fs.salt_amount) + + return m + + +def usc_unfix_dof(m): # Unfix data - m.usc_mp.fs.boiler.inlet.flow_mol[0].unfix() + m.fs.boiler.inlet.flow_mol[0].unfix() # Unfix storage system data - m.usc_mp.fs.ess_hp_split.split_fraction[0, "to_hxc"].unfix() - m.usc_mp.fs.ess_bfp_split.split_fraction[0, "to_hxd"].unfix() - for salt_hxc in [m.usc_mp.fs.hxc]: + m.fs.ess_hp_split.split_fraction[0, "to_hxc"].unfix() + m.fs.ess_bfp_split.split_fraction[0, "to_hxd"].unfix() + for salt_hxc in [m.fs.hxc]: salt_hxc.shell_inlet.unfix() salt_hxc.tube_inlet.flow_mass.unfix() # kg/s, 1 DOF salt_hxc.area.unfix() # 1 DOF - for salt_hxd in [m.usc_mp.fs.hxd]: + for salt_hxd in [m.fs.hxd]: salt_hxd.tube_inlet.unfix() salt_hxd.shell_inlet.flow_mass.unfix() # kg/s, 1 DOF salt_hxd.area.unfix() # 1 DOF - for unit in [m.usc_mp.fs.cooler]: + for unit in [m.fs.cooler]: unit.inlet.unfix() - m.usc_mp.fs.cooler.outlet.enth_mol[0].unfix() # 1 DOF + m.fs.cooler.outlet.enth_mol[0].unfix() # 1 DOF # Fix storage heat exchangers area and salt temperatures - m.usc_mp.fs.hxc.area.fix(1904) - m.usc_mp.fs.hxd.area.fix(2830) - m.usc_mp.fs.hxc.tube_outlet.temperature[0].fix(831) - m.usc_mp.fs.hxd.shell_inlet.temperature[0].fix(831) - m.usc_mp.fs.hxd.shell_outlet.temperature[0].fix(513.15) + m.fs.hxc.area.fix(1904) + m.fs.hxd.area.fix(2830) + m.fs.hxc.tube_outlet.temperature[0].fix(831) + m.fs.hxd.shell_inlet.temperature[0].fix(831) + m.fs.hxd.shell_outlet.temperature[0].fix(513.15) + - return m +def usc_custom_init(m): + + blk = usc.build_plant_model() + usc.initialize(blk) + + # Create a flowsheet, add properties, unit models, and arcs + max_power = 436 # in MW + min_power = int(0.65 * 436) + pmin = int(0.65 * 436) + 1 + pmax = 436 + 30 + min_storage_heat_duty = 10 # in MW + max_storage_heat_duty = 200 # in MW + + + blk = usc_w_tes.create_integrated_model(blk, max_power=max_power) + + # Give all the required inputs to the model + usc_w_tes.set_model_input(blk) + + # Add scaling factor + usc_w_tes.set_scaling_factors(blk) -def create_usc_mp_block(pmin=None, pmax=None): - print('>>> Creating USC model and initialization for each time period') + # Initialize the model with a sequential initialization and custom + # routines + usc_w_tes.initialize(blk) + + # Add cost correlations + blk = usc_w_tes.build_costing(blk) + + # Initialize with bounds + usc_w_tes.initialize_with_costing(blk) + + blk.fs.plant_min_power_eq = Constraint( + expr=blk.fs.plant_power_out[0] >= min_power + ) + blk.fs.plant_max_power_eq = Constraint( + expr=blk.fs.plant_power_out[0] <= max_power + ) + + blk.fs.hxc.heat_duty.setlb(min_storage_heat_duty * 1e6) + blk.fs.hxd.heat_duty.setlb(min_storage_heat_duty * 1e6) + + blk.fs.hxc.heat_duty.setub(max_storage_heat_duty * 1e6) + blk.fs.hxd.heat_duty.setub(max_storage_heat_duty * 1e6) if pmin is None: pmin = int(0.65 * 436) + 1 if pmax is None: pmax = 436 + 30 - m = create_usc_model(pmin, pmax) - b1 = m.usc_mp - # Add coupling variables - b1.previous_power = Var( + blk.fs.previous_power = Var( domain=NonNegativeReals, initialize=300, bounds=(pmin, pmax), @@ -121,73 +258,76 @@ def create_usc_mp_block(pmin=None, pmax=None): inventory_min = 75000 tank_max = 6739292 # Units in kg - b1.previous_salt_inventory_hot = Var( + blk.fs.previous_salt_inventory_hot = Var( domain=NonNegativeReals, initialize=inventory_min, bounds=(0, inventory_max), doc="Hot salt at the beginning of the hour (or time period), kg" ) - b1.salt_inventory_hot = Var( + blk.fs.salt_inventory_hot = Var( domain=NonNegativeReals, initialize=inventory_min, bounds=(0, inventory_max), doc="Hot salt inventory at the end of the hour (or time period), kg" ) - b1.previous_salt_inventory_cold = Var( + blk.fs.previous_salt_inventory_cold = Var( domain=NonNegativeReals, initialize=tank_max-inventory_min, bounds=(0, inventory_max), doc="Cold salt at the beginning of the hour (or time period), kg" ) - b1.salt_inventory_cold = Var( + blk.fs.salt_inventory_cold = Var( domain=NonNegativeReals, initialize=tank_max-inventory_min, bounds=(0, inventory_max), doc="Cold salt inventory at the end of the hour (or time period), kg" ) - @b1.fs.Constraint(doc="Plant ramping down constraint") + @blk.fs.Constraint(doc="Plant ramping down constraint") def constraint_ramp_down(b): return ( - b1.previous_power - 60 <= - b1.fs.plant_power_out[0]) + blk.fs.previous_power - 60 <= + blk.fs.plant_power_out[0]) - @b1.fs.Constraint(doc="Plant ramping up constraint") + @blk.fs.Constraint(doc="Plant ramping up constraint") def constraint_ramp_up(b): return ( - b1.previous_power + 60 >= - b1.fs.plant_power_out[0]) + blk.fs.previous_power + 60 >= + blk.fs.plant_power_out[0]) - @b1.fs.Constraint(doc="Inventory balance at the end of the time period") + @blk.fs.Constraint(doc="Inventory balance at the end of the time period") def constraint_salt_inventory_hot(b): return ( - b1.salt_inventory_hot == - b1.previous_salt_inventory_hot - + (3600*b1.fs.hxc.tube_inlet.flow_mass[0] - - 3600*b1.fs.hxd.shell_inlet.flow_mass[0]) + blk.fs.salt_inventory_hot == + blk.fs.previous_salt_inventory_hot + + (3600*blk.fs.hxc.tube_inlet.flow_mass[0] + - 3600*blk.fs.hxd.shell_inlet.flow_mass[0]) ) - @b1.fs.Constraint(doc="Max salt flow to hxd based on available hot salt") + @blk.fs.Constraint(doc="Max salt flow to hxd based on available hot salt") def constraint_salt_maxflow_hot(b): return ( - 3600*b1.fs.hxd.shell_inlet.flow_mass[0] <= - b1.previous_salt_inventory_hot + 3600*blk.fs.hxd.shell_inlet.flow_mass[0] <= + blk.fs.previous_salt_inventory_hot ) - @b1.fs.Constraint(doc="Max salt flow to hxc based on available cold salt") + @blk.fs.Constraint(doc="Max salt flow to hxc based on available cold salt") def constraint_salt_maxflow_cold(b): return ( - 3600*b1.fs.hxc.tube_inlet.flow_mass[0] <= - b1.previous_salt_inventory_cold + 3600*blk.fs.hxc.tube_inlet.flow_mass[0] <= + blk.fs.previous_salt_inventory_cold ) - @b1.fs.Constraint(doc="Maximum salt inventory at any time") + @blk.fs.Constraint(doc="Maximum salt inventory at any time") def constraint_salt_inventory(b): return ( - b1.salt_inventory_hot + - b1.salt_inventory_cold == b1.fs.salt_amount) + blk.fs.salt_inventory_hot + + blk.fs.salt_inventory_cold == blk.fs.salt_amount) - return m + init_model = to_json(blk, return_dict=True) + from_json(m, sd=init_model) + + return # The tank level and power output are linked between the contiguous time periods @@ -196,10 +336,10 @@ def get_usc_link_variable_pairs(b1, b2): b1: current time block b2: next time block """ - return [(b1.usc_mp.salt_inventory_hot, - b2.usc_mp.previous_salt_inventory_hot), - (b1.usc_mp.fs.plant_power_out[0], - b2.usc_mp.previous_power)] + return [(b1.fs.salt_inventory_hot, + b2.fs.previous_salt_inventory_hot), + (b1.fs.plant_power_out[0], + b2.fs.previous_power)] # The tank level at the end of the last time period must be the same as at the @@ -210,8 +350,8 @@ def get_usc_periodic_variable_pairs(b1, b2): b2: first time block """ # return - return [(b1.usc_mp.salt_inventory_hot, - b2.usc_mp.previous_salt_inventory_hot)] + return [(b1.fs.salt_inventory_hot, + b2.fs.previous_salt_inventory_hot)] # Create the multiperiod model object. You can pass arguments to your # "process_model_func" for each time period using a dict of dicts as @@ -227,13 +367,15 @@ def create_multiperiod_usc_model(n_time_points=4, pmin=None, pmax=None): n_time_points: Number of time blocks to create """ multiperiod_usc = MultiPeriodModel( - n_time_points, - lambda: create_usc_mp_block(pmin=None, pmax=None), - get_usc_link_variable_pairs, - get_usc_periodic_variable_pairs + n_time_points=n_time_points, + process_model_func=create_usc_model, + initialization_func=usc_custom_init, + unfix_dof_func=usc_unfix_dof, + linking_variable_func=get_usc_link_variable_pairs, + flowsheet_options={"pmin": pmin, + "pmax": pmax}, + use_stochastic_build=True, + outlvl=idaeslog.INFO, ) - # If you have no arguments, you don't actually need to pass in - # anything. NOTE: building the model will initialize each time block - multiperiod_usc.build_multi_period_model() return multiperiod_usc