Files
access_log/src/swd/intensity_data.cr
T

239 lines
7.8 KiB
Crystal

class SWD
module IntensityData
# @see {co2.js/data/output/average-intensities.json}
AVERAGE_INTENSITY_BY_ISO_CODE = {
"AE": 467.51,
"AF": 123.71,
"AG": 611.11,
"AL": 24.42,
"AM": 243.52,
"AO": 167.22,
"AR": 344.83,
"AS": 647.06,
"AT": 102.62,
"AU": 553.76,
"AW": 550.0,
"AZ": 632.89,
"BA": 638.05,
"BB": 600.0,
"BD": 694.63,
"BE": 117.58,
"BF": 554.91,
"BG": 264.21,
"BH": 902.41,
"BI": 230.77,
"BJ": 590.0,
"BN": 892.67,
"BO": 468.02,
"BR": 106.06,
"BS": 653.66,
"BT": 24.19,
"BW": 849.42,
"BY": 323.63,
"BZ": 155.56,
"CA": 184.99,
"CD": 27.04,
"CF": 0.0,
"CG": 713.73,
"CH": 36.72,
"CI": 393.53,
"CK": 250.0,
"CL": 265.52,
"CM": 285.71,
"CN": 557.5,
"CO": 285.8,
"CR": 63.01,
"CU": 638.98,
"CV": 480.0,
"CY": 512.24,
"CZ": 413.86,
"DE": 342.06,
"DJ": 450.0,
"DK": 143.3,
"DM": 600.0,
"DO": 565.97,
"DZ": 633.65,
"EC": 209.7,
"EE": 341.02,
"EG": 574.5,
"ER": 590.91,
"ES": 146.15,
"ET": 23.55,
"FI": 72.25,
"FJ": 278.26,
"FK": 1000.0,
"FO": 354.17,
"FR": 44.18,
"GA": 429.47,
"GB": 215.79,
"GD": 666.67,
"GE": 143.06,
"GF": 204.08,
"GH": 452.86,
"GL": 111.11,
"GM": 666.67,
"GN": 182.72,
"GP": 493.9,
"GQ": 605.1,
"GR": 319.76,
"GT": 272.66,
"GU": 611.11,
"GW": 625.0,
"GY": 634.33,
"HK": 681.99,
"HN": 289.5,
"HR": 174.48,
"HT": 534.65,
"HU": 182.82,
"ID": 682.43,
"IE": 279.79,
"IL": 567.26,
"IN": 708.96,
"IQ": 689.4,
"IR": 648.68,
"IS": 28.33,
"IT": 287.75,
"JM": 561.25,
"JO": 539.21,
"JP": 483.73,
"KE": 84.83,
"KG": 152.65,
"KH": 497.46,
"KI": 500.0,
"KM": 642.86,
"KN": 636.36,
"KP": 344.26,
"KR": 415.65,
"KW": 637.24,
"KY": 642.86,
"KZ": 801.79,
"LA": 232.12,
"LB": 369.47,
"LC": 650.0,
"LK": 509.78,
"LR": 435.9,
"LS": 20.83,
"LT": 139.34,
"LU": 134.62,
"LV": 136.22,
"LY": 830.53,
"MA": 577.65,
"MD": 629.56,
"ME": 413.51,
"MG": 477.27,
"MK": 568.97,
"ML": 394.5,
"MM": 569.69,
"MN": 784.01,
"MO": 448.98,
"MQ": 516.78,
"MR": 481.71,
"MS": 1000.0,
"MT": 484.16,
"MU": 633.03,
"MV": 611.77,
"MW": 54.65,
"MX": 483.14,
"MY": 604.43,
"MZ": 127.81,
"NA": 47.62,
"NC": 585.76,
"NE": 687.5,
"NG": 507.85,
"NI": 288.33,
"NL": 252.7,
"NO": 30.75,
"NP": 23.36,
"NR": 750.0,
"NZ": 120.11,
"OM": 545.33,
"PA": 258.74,
"PE": 263.27,
"PF": 436.62,
"PG": 513.74,
"PH": 613.38,
"PK": 398.61,
"PL": 614.98,
"PM": 600.0,
"PR": 664.53,
"PS": 460.78,
"PT": 111.8,
"PY": 24.86,
"QA": 602.83,
"RE": 525.22,
"RO": 245.55,
"RS": 670.8,
"RU": 446.17,
"RW": 301.89,
"SA": 691.95,
"SB": 636.36,
"SC": 571.43,
"SD": 214.33,
"SE": 35.89,
"SG": 498.74,
"SI": 227.11,
"SK": 96.49,
"SL": 47.62,
"SN": 535.4,
"SO": 523.81,
"SR": 383.18,
"SS": 610.17,
"ST": 555.56,
"SV": 99.29,
"SY": 682.27,
"SZ": 142.86,
"TC": 653.85,
"TD": 615.39,
"TG": 478.26,
"TH": 555.43,
"TJ": 98.7,
"TM": 1306.3,
"TN": 560.25,
"TO": 571.43,
"TR": 469.7,
"TT": 682.11,
"TW": 635.15,
"TZ": 371.59,
"UA": 250.47,
"UG": 57.39,
"US": 383.55,
"UY": 96.7,
"UZ": 1121.18,
"VC": 600.0,
"VE": 180.25,
"VG": 647.06,
"VI": 641.79,
"VN": 486.13,
"VU": 500.0,
"WS": 400.0,
"XK": 958.72,
"YE": 586.32,
"ZA": 713.9,
"ZM": 111.0,
"ZW": 298.44
}
# @see {co2.js/data/output/marginal-intensities-2021.json}
MARGINAL_INTENSITY_BY_ISO_CODE = {"AF": 414.0, "AL": 0.0, "DZ": 528.0, "AS": 753.0, "AD": 188.0, "AO": 1476.0, "AI": 753.0, "AG": 753.0, "AR": 478.0, "AM": 390.0, "AW": 753.0, "AU": 808.0, "AT": 242.0, "AZ": 534.0, "BS": 753.0, "BH": 726.0, "BD": 528.0, "BB": 749.0, "BY": 400.0, "BE": 252.0, "BZ": 403.0, "BJ": 745.0, "BM": 753.0, "BT": 0.0, "BO": 604.0, "BQ": 753.0, "BA": 1197.0, "BW": 1486.0, "BR": 284.0, "VG": 753.0, "BN": 681.0, "BG": 911.0, "BF": 753.0, "BI": 414.0, "KH": 1046.0, "CM": 659.0, "CA": 372.0, "KY": 753.0, "CV": 753.0, "CY": 751.0, "CF": 188.0, "TD": 753.0, "CL": 657.0, "CN": 899.0, "CO": 410.0, "KM": 753.0, "CD": 0.0, "CG": 659.0, "CK": 753.0, "CR": 108.0, "CI": 466.0, "HR": 294.0, "CU": 559.0, "CW": 876.0, "CZ": 902.0, "DK": 362.0, "DJ": 753.0, "DM": 753.0, "DO": 601.0, "EC": 560.0, "EG": 554.0, "SV": 547.0, "GQ": 632.0, "ER": 915.0, "EE": 1057.0, "SZ": 0.0, "ET": 0.0, "FK": 753.0, "FO": 753.0, "FJ": 640.0, "FI": 267.0, "FR": 158.0, "GF": 423.0, "PF": 753.0, "GA": 946.0, "GM": 753.0, "GE": 289.0, "DE": 650.0, "GH": 495.0, "GI": 779.0, "GR": 507.0, "GL": 264.0, "GD": 753.0, "GP": 753.0, "GU": 753.0, "GT": 798.0, "GN": 753.0, "GW": 753.0, "GY": 847.0, "HT": 1048.0, "HN": 662.0, "HU": 296.0, "IS": 0.0, "IN": 951.0, "ID": 783.0, "IR": 592.0, "IQ": 1080.0, "IE": 380.0, "IM": 436.0, "IL": 394.0, "IT": 414.0, "JM": 711.0, "JP": 471.0, "JO": 529.0, "KZ": 797.0, "KE": 574.0, "KI": 753.0, "KP": 754.0, "KR": 555.0, "XK": 1145.0, "KW": 675.0, "KG": 217.0, "LA": 1069.0, "LV": 240.0, "LB": 794.0, "LS": 0.0, "LR": 677.0, "LY": 668.0, "LI": 151.0, "LT": 211.0, "LU": 220.0, "MG": 876.0, "MW": 489.0, "MY": 551.0, "MV": 753.0, "ML": 1076.0, "MT": 520.0, "MH": 753.0, "MQ": 753.0, "MR": 753.0, "MU": 700.0, "YT": 753.0, "MX": 531.0, "FM": 753.0, "MD": 541.0, "MC": 158.0, "MN": 1366.0, "ME": 899.0, "MS": 753.0, "MA": 729.0, "MZ": 234.0, "MM": 719.0, "NA": 355.0, "NR": 753.0, "NP": 0.0, "NL": 326.0, "NC": 779.0, "NZ": 246.0, "NI": 675.0, "NE": 772.0, "NG": 526.0, "NU": 753.0, "MK": 851.0, "MP": 753.0, "NO": 47.0, "OM": 479.0, "PK": 592.0, "PW": 753.0, "PS": 719.0, "PA": 477.0, "PG": 597.0, "PY": 0.0, "PE": 473.0, "PH": 672.0, "PL": 828.0, "PT": 389.0, "PR": 596.0, "QA": 503.0, "RE": 772.0, "RO": 489.0, "RU": 476.0, "RW": 712.0, "SH": 753.0, "KN": 753.0, "LC": 753.0, "MF": 753.0, "PM": 753.0, "VC": 753.0, "WS": 753.0, "SM": 414.0, "ST": 753.0, "SA": 592.0, "SN": 870.0, "RS": 1086.0, "SC": 753.0, "SL": 489.0, "SG": 379.0, "SX": 753.0, "SK": 332.0, "SI": 620.0, "SB": 753.0, "SO": 753.0, "ZA": 1070.0, "SS": 890.0, "ES": 402.0, "LK": 731.0, "SD": 736.0, "SR": 1029.0, "SE": 68.0, "CH": 48.0, "SY": 713.0, "TW": 484.0, "TJ": 255.0, "TZ": 531.0, "TH": 450.0, "TL": 753.0, "TG": 859.0, "TO": 753.0, "TT": 559.0, "TN": 468.0, "TR": 376.0, "TM": 927.0, "TC": 753.0, "TV": 753.0, "UG": 279.0, "UA": 768.0, "AE": 556.0, "GB": 380.0, "US": 416.0, "UY": 174.0, "UZ": 612.0, "VU": 753.0, "VE": 711.0, "VN": 560.0, "VI": 650.0, "YE": 807.0, "ZM": 416.0, "ZW": 1575.0}
# Return the marginal intensity for a country when provided an ISO
# code
def self.marginal_by_iso(iso : String) : Float64?
MARGINAL_INTENSITY_BY_ISO_CODE[iso] if MARGINAL_INTENSITY_BY_ISO_CODE.has_key? iso
end
# Return the average intensity for a country when provided an ISO
# code
def self.average_by_iso(iso : String) : Float64?
AVERAGE_INTENSITY_BY_ISO_CODE[iso] if AVERAGE_INTENSITY_BY_ISO_CODE.has_key? iso
end
def self.by_iso(iso : String, type : Symbol = :marginal) : Float64?
case type
when :average then average_by_iso(iso)
else marginal_by_iso(iso)
end
end
end
end