239 lines
7.8 KiB
Crystal
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
|