@idm-plugin/ghg
Version:
idm plugin for greenhouse gas
501 lines (500 loc) • 15.2 kB
TypeScript
export interface EmissionFactor {
co2: number;
ch4?: number;
n2o?: number;
cj?: number;
lcv?: number;
wtt?: number;
E?: number;
rwd?: number;
}
export interface Fuel {
type: FuelType | string;
cons?: number;
consumption?: number;
areaRate?: number;
euetsRate?: number;
fuelEURate?: number;
customFactor?: EmissionFactor;
factor?: EmissionFactor;
}
/**
* ETS配额缴纳比例
*/
export declare const YearRatio: {
[key: number]: number;
};
/**
* FuelEU风帆奖励系数:
*
* 使用风力辅助推进系统 (WAPS) 的船舶在其最终计算的温室气体强度上获得直接降低。
* 奖励因子 (f 风力) 的范围从 0.01(降低 1%)到最大
* 0.05(降低 5%),具体取决于风力提供的推进功率的计算份额。
* 如果风力贡献占总推进功率的 15% 或更多,则适用最大 5% 的降低。
*/
export declare enum WindRewardFactor {
PROP5 = 0.99,
PROP10 = 0.97,
PROP15 = 0.95,
NONE = 1
}
/**
* 各种燃料的排放因子
* 参考官方文件: https://eur-lex.europa.eu/legal-content/EN/TXT/PDF/?uri=CELEX:02015R0757-20240101
* https://eur-lex.europa.eu/legal-content/EN/TXT/PDF/?uri=CELEX:32023R1805
*/
export declare const GHGEmissionFactor: {
[key: string]: EmissionFactor;
};
/**
* Global warming potential, 计算 MRV时使用
*/
export declare const GWP_AR5: {
[key: string]: number;
};
/**
* Global warming potential, 计算FuelEU时使用
*/
export declare const GWP_AR4: {
[key: string]: number;
};
export declare enum FuelType {
HFO = "HFO",
LFO = "LFO",
MGO = "MGO",
MDO = "MDO",
LNG_OTTO_MEDIUM_SPD = "LNG_OTTO_MEDIUM_SPD",
LNG_OTTO_SLOW_SPD = "LNG_OTTO_SLOW_SPD",
LNG_DIESEL_SLOW_SPD = "LNG_DIESEL_SLOW_SPD",
LNG_LBSI = "LNG_LBSI",
LPG_PROPANE = "LPG_PROPANE",
LPG_BUTANE = "LPG_BUTANE",
LNG = "LNG",
METHANOL = "METHANOL",
BIODIESEL = "BIODIESEL",
ETHANE = "ETHANE"
}
export declare enum EUMRVLegCategory {
EU_MRV_Non_EU = "Non EU",
EU_MRV_Arrived_EU = "Arrived EU",
EU_MRV_Departed_EU = "Departed EU",
EU_MRV_Between_EU = "Between EU"
}
export declare class EUTESHelper {
/**
* 计算MRV (Monitoring/Reporting/Verification) 和 TTW (Tank to Wake)
* @param cons 燃料消耗, 单位 mt
* @param fc 排放因子, 单位 gGHG/gFuel
* @param cj 燃料泄漏系数, 单位 %
* @param lcv 燃料热值, 单位 MJ/g
* @param ch4 是否是 CH4(甲烷)
* @returns {
* mrv, 燃料产生的温室气体排放量, 单位 mt
* ttw, 燃料从Tank到Wake的温室气体排放常量, 单位 gGHG/gFuel
* }
*/
static calculateMRV(cons: number, fc: number, cj: number | undefined, lcv: number, ch4?: boolean): {
mrv: number;
ttw: number;
};
/**
*计算WtT (Well to Tank) GHG Intensity
* @param factor
* @returns WtT GHG Intensity, 单位 gCO2eq/MJ
*/
static calculateWtT(factor: EmissionFactor): number;
/**
* 计算 CO2 MRV (Monitoring/Reporting/Verification)
* @param cons 油耗, 单位 mt
* @param type 油耗类型
* @param customFactor 自定义排放因子
* @param options 配置项
* @returns { mrv, ttw }
*/
static calculateCO2MRV(cons: number, type: FuelType | string, customFactor?: EmissionFactor, options?: {
requestId?: string;
}): {
mrv: number;
mrvGWP: number;
ttw: number;
ttwGWP: number;
fc: number;
cj: number | undefined;
lcv: number | undefined;
};
/**
* 计算 CH4 MRV (Monitoring/Reporting/Verification)
* @param cons 油耗, 单位 mt
* @param type 油耗类型
* @param customFactor 自定义排放因子
* @param options 配置项
* @returns { mrv, ttw }
*/
static calculateCH4MRV(cons: number, type: FuelType | string, customFactor?: EmissionFactor, options?: {
requestId?: string;
}): {
mrv: number;
mrvGWP: number;
ttw: number;
ttwGWP: number;
fc: number | undefined;
cj: number | undefined;
lcv: number | undefined;
};
/**
* 计算 N2O MRV (Monitoring/Reporting/Verification)
* @param cons 油耗, 单位 mt
* @param type 油耗类型
* @param customFactor 自定义排放因子
* @param options 配置项
* @returns { mrv, ttw }
*/
static calculateN2OMRV(cons: number, type: FuelType | string, customFactor?: EmissionFactor, options?: {
requestId?: string;
}): {
mrv: number;
mrvGWP: number;
ttw: number;
ttwGWP: number;
fc: number | undefined;
cj: number | undefined;
lcv: number | undefined;
};
/**
* 计算单一燃料的GHG MRV (Monitoring/Reporting/Verification)
* @param cons 油耗, 单位 mt
* @param type 油耗类型
* @param year 年份
* @param price 碳税价格
* @param options
* @return {
* ghg, MRV需要报告的温室气体排放量,2024之后需要报告CO2, CH4, N2O, 单位 mt
* ghg2, ETS需要报告的温室气体排放量,2026之后需要报告CO2, CH4, N2O, 单位 mt
* euas, 需要交纳的EUAS份额, 2026年以后需全额交纳, 单位 mt
* price, 碳税价格, 单位 €/tCO2, 常量
* year, 年份, 常量
* ratio, EUAS交纳比例, 常量
* cost, EUAS成本, 单位 €
* energy, 燃料转能量, 计算fuelEU时使用, 单位 TJ
* lcv, 燃料低位热值, 计算fuelEU时使用, 单位 MJ/g, 常量(不同燃料取值不同)
* wtt, Well to Tank, 计算fuelEU时使用, 单位 gCO2eq/MJ, 常量(不同燃料取值不同)
* ttw, Tank to Wake, 计算fuelEU时使用, 单位 gGHG/gFuel, 常量(不同燃料取值不同)
* co2, CO2排放量, 单位 mt
* ch4, CH4排放量, 单位 mt
* n2o, N2O排放量, 单位 mt
* }
* @deprecated
*/
static calculateGHGMRV(cons: number, type: FuelType | string, price?: number, year?: number, options?: {
requestId?: string;
factor?: EmissionFactor;
}): {
ghg: number;
ghg2: number;
euas: number;
price: number;
year: number;
ratio: number;
cost: number;
energy: number;
lcv: number;
wtt: number;
ttw: number;
co2: {
mrv: number;
mrvGWP: number;
ttw: number;
ttwGWP: number;
fc: number;
cj: number | undefined;
lcv: number | undefined;
};
ch4: {
mrv: number;
mrvGWP: number;
ttw: number;
ttwGWP: number;
fc: number | undefined;
cj: number | undefined;
lcv: number | undefined;
};
n2o: {
mrv: number;
mrvGWP: number;
ttw: number;
ttwGWP: number;
fc: number | undefined;
cj: number | undefined;
lcv: number | undefined;
};
};
/**
* 计算单一燃料的GHG MRV (Monitoring/Reporting/Verification)
* @param cons 油耗, 单位 mt
* @param type 油耗类型
* @param year 年份
* @param price 碳税价格
* @param options
* @return {
* ghg, MRV需要报告的温室气体排放量,2024之后需要报告CO2, CH4, N2O, 单位 mt
* ghg2, ETS需要报告的温室气体排放量,2026之后需要报告CO2, CH4, N2O, 单位 mt
* euas, 需要交纳的EUAS份额, 2026年以后需全额交纳, 单位 mt
* price, 碳税价格, 单位 €/tCO2, 常量
* year, 年份, 常量
* ratio, EUAS交纳比例, 常量
* cost, EUAS成本, 单位 €
* co2, CO2排放量, 单位 mt
* ch4, CH4排放量, 单位 mt
* n2o, N2O排放量, 单位 mt
* }
*/
static calculateSingleGHGMRV(cons: number, type: FuelType | string, price?: number, year?: number, options?: {
requestId?: string;
factor?: EmissionFactor;
}): {
ghg: number;
ghg2: number;
euas: number;
price: number;
year: number;
ratio: number;
cost: number;
co2: {
mrv: number;
mrvGWP: number;
ttw: number;
ttwGWP: number;
fc: number;
cj: number | undefined;
lcv: number | undefined;
};
ch4: {
mrv: number;
mrvGWP: number;
ttw: number;
ttwGWP: number;
fc: number | undefined;
cj: number | undefined;
lcv: number | undefined;
};
n2o: {
mrv: number;
mrvGWP: number;
ttw: number;
ttwGWP: number;
fc: number | undefined;
cj: number | undefined;
lcv: number | undefined;
};
factor: EmissionFactor;
};
/**
* 计算单一燃料的FuelEU
* @param cons 油耗, 单位 mt
* @param type 油耗类型
* @param options
* @return {
* energy, 燃料转能量, 计算fuelEU时使用, 单位 MJ
* lcv, 燃料低位热值, 计算fuelEU时使用, 单位 MJ/g, 常量(不同燃料取值不同)
* wtt, Well to Tank, 计算fuelEU时使用, 单位 gCO2eq/MJ, 常量(不同燃料取值不同)
* ttw, Tank to Wake, 计算fuelEU时使用, 单位 gGHG/gFuel, 常量(不同燃料取值不同)
* co2, CO2排放量, 单位 mt
* ch4, CH4排放量, 单位 mt
* n2o, N2O排放量, 单位 mt
* }
*/
static calculateSingleFuelEU(cons: number, type: FuelType | string, options?: {
requestId?: string;
factor?: EmissionFactor;
}): {
energy: number;
lcv: number;
wtt: number;
ttw: number;
rawTtw: {
co2: number;
ch4: number;
n2o: number;
};
cons: number;
factor: EmissionFactor;
};
/**
* 计算多燃料的GHG MRV
* @param fuels 按类型分组油耗类型及消耗
* @param ek 岸电消耗能量,单位 kwh 1kwh = 3.6MJ
* @param year 年份
* @param options
*/
static calculateMultiFuelEU(fuels: Fuel[], ek?: number, year?: number, options?: {
requestId?: string;
fwind?: WindRewardFactor | number;
}): {
year: number;
fwind: any;
energy: any;
energy2: any;
ek: number;
wtwEmission: number;
wttGhgi: number;
ttwGhgi: number;
actualGhgi: number;
targetGhgi: number;
balance: number;
penalty: number;
fuels: Record<string, any>;
};
/**
* 计算多燃料的GHG MRV
* @param fuels 按类型分组油耗类型及消耗
* @param year 年份
* @param price 碳税价格
* @param options
*/
static calculateMultiGHGMRV(fuels: Fuel[], year?: number, price?: number, options?: {
requestId?: string;
}): {
year: number;
price: number;
ratio: number;
ghg: any;
ghg2: any;
euas: any;
cost: any;
fuels: Record<string, any>;
};
/**
* 计算MRV及FuelEU
* @param fuels 按类型分组油耗类型及消耗
* @param year 年份
* @param price 碳税价格
* @param options
* @deprecated
*/
static calculateGHGMRV2(fuels: Fuel[], year?: number, price?: number, options?: {
requestId?: string;
fwind?: WindRewardFactor | number;
}): {
year: number;
price: number;
fwind: any;
ratio: number;
ghg: number;
ghg2: number;
euas: number;
cost: number;
energy: number;
wtwEmission: number;
wttGhgi: number;
ttwGhgi: number;
actualGhgi: number;
targetGhgi: number;
balance: number;
penalty: number;
fuels: {
cons: number;
ghg: number;
ghg2: number;
co2: number;
ch4: number;
n2o: number;
euas: number;
cost: number;
energy: number;
wtt: number;
ttw: any;
wtw: number;
lcv: number;
type: string;
wttEmission: number;
ttwEmission: number;
wtwEmission: number;
}[];
};
/**
* 计算 EUETS Ratio, 不同年份交纳的比例不同,2026年以后需全额交纳
* @param year
* @returns
* @deprecated use getEUETSRatio instead
*/
static getEUETSRadio(year: number): number;
/**
* 计算 EUETS Ratio, 不同年份交纳的比例不同,2026年以后需全额交纳
* @param year
* @returns
*/
static getEUETSRatio(year: number): number;
/**
* 计算 GHG Intensity Target, 单位 gCO₂eq/MJ
* @param year
* @returns
*/
static calculateGHGITarget(year: number): number;
/**
* 计算 EUMRV Leg Category
* @param departure 出发地
* @param destination 目的地
* @param fuelEU 是否是fuelEU, 注意 EUETS和fuelEU不同,fuelEU在Norway and Iceland将被视为第三国,在EEA执行50%标准
* @param options 配置项
* @returns
* @deprecated
*/
static calculateEUMRVLegCategory(departure?: {
lat: number;
lng: number;
}, destination?: {
lat: number;
lng: number;
}, fuelEU?: boolean, options?: {
requestId?: string;
}): Promise<{
category: EUMRVLegCategory;
areaRate: {
[key: string]: number;
};
}>;
/**
* 计算 EUMRV Category
* @param departure 出发地
* @param destination 目的地
* @param options 配置项
* @returns { category, areaRate } 是否在EU,以及对应计算比例
*/
static calculateEUMRVCategory(departure?: {
lat: number;
lng: number;
}, destination?: {
lat: number;
lng: number;
}, options?: {
requestId?: string;
}): Promise<{
category: EUMRVLegCategory;
areaRate: {
[key: string]: number;
};
}>;
/**
* 计算 Fuel EU Category
* 注意 EUETS和fuelEU不同,fuelEU在Norway and Iceland将被视为第三国,在EEA执行50%标准
* FuelEU delayed in Norway and Iceland(https://www.sdir.no/en/news/FuelEu_delayed_in_Norway/)
* @param departure 出发地
* @param destination 目的地
* @param options 配置项
* @returns { category, areaRate } 是否在EU,以及对应计算比例
*/
static calculateFuelEUCategory(departure?: {
lat: number;
lng: number;
}, destination?: {
lat: number;
lng: number;
}, options?: {
requestId?: string;
}): Promise<{
category: EUMRVLegCategory;
areaRate: {
[key: string]: number;
};
}>;
}