首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >燃料和火灾计算中的简单碳排放

燃料和火灾计算中的简单碳排放
EN

Code Review用户
提问于 2019-12-20 05:33:57
回答 2查看 117关注 0票数 3

我想得到以下简单的碳排放计算用最毕达通/直截了当的方式。

代码语言:javascript
复制
FUEL_FACTORS = {'diesel': {'energy_factor': 38.6,
                           'co2_emission_factor': 69.9,
                           'ch4_emission_factor': 0.1,
                           'n2o_emission_factor': 0.5
                          },
                'petrol': {'energy_factor': 34.2,
                           'co2_emission_factor': 67.4,
                           'ch4_emission_factor': 0.5,
                           'n2o_emission_factor': 1.8
                           },                
                'avgas':  {'energy_factor': 33.1,
                           'co2_emission_factor': 67.0,
                           'ch4_emission_factor': 0.05,
                           'n2o_emission_factor': 0.7}
                }

FIRE_FACTORS = {'gwp_co2': 1,
                'gwp_ch4': 25,
                'gwp_n2o': 298,
                'ch4_co2_mass_ratio': 7.182e-3,
                'n2o_co2_mass_ratio': 1.329e-5,
                }

def get_fuel_emission_factor(fuel):
    """Get fuel total CO2 emission factor."""
    factors = FUEL_FACTORS[fuel]
    energy_f = factors['energy_factor'] 
    fuel_emission_factor = 0
    for i in ['co2', 'ch4', 'n2o']:
        gas_emission_factor = factors[i + '_emission_factor']
        fuel_emission_factor += energy_f * gas_emission_factor * 1e-3
    return fuel_emission_factor

def fuel_to_co2(fuel, quantity):
    """Get total tCO2 emission by kL of fuel."""
    fuel_emission_factor = get_fuel_emission_factor(fuel)
    return fuel_emission_factor * quantity     


def burned_c_to_co2(tC):
    """Get CH4 and N2O emissions in tCO2 from tonnes of C burned"""
    ch4_emissions = tC * FIRE_FACTORS['gwp_ch4'] * FIRE_FACTORS['ch4_co2_mass_ratio']
    n2o_emissions = tC * FIRE_FACTORS['gwp_n2o'] * FIRE_FACTORS['n2o_co2_mass_ratio']
    return ch4_emissions + n2o_emissions

fuel_emissions = fuel_to_co2('petrol', 2.7395)
fire_emissions = burned_c_to_co2(5.74)
EN

回答 2

Code Review用户

发布于 2019-12-20 06:53:56

为温室气体GHG定义一个常数,以避免在单独的函数中对它们进行硬编码:

代码语言:javascript
复制
GHG = ('co2', 'ch4', 'n2o')  # greenhouse gases
  • get_fuel_emission_factor函数带累积的for循环简明地替换为生成器表达式上的内置sum函数: def get_fuel_emission_factor(燃料):“”获取燃料总CO2排放因子“”。因子= FUEL_FACTORS燃料,燃料返回和(温室气体中气体的因子能量_因子的*F‘{gas}_发射量_因子’/ 1000 )
  • fuel_to_co2函数内插变量技术可以应用于: def fuel_to_co2(燃料,数量):“通过kL获取燃料的总tCO2排放量”。返回get_fuel_emission_factor(燃料)*数量
票数 3
EN

Code Review用户

发布于 2019-12-20 10:10:24

我看到的最大问题是您的函数严重依赖dicts的结构,这可能最终不是一个问题,例如,如果这些函数是脚本的一部分,您不希望在将来更改或重复使用。如果您想要改进,我的建议是使用TDD,因为您的功能非常适合TDD。当您循环通过TDD步骤时,您将反复改进您的设计。我认为这将是一项有价值的运动。最后,您可以比较这两种解决方案,并判断它们的不同之处。我建议你在做最后的比较之前先把代码放在视线之外一段时间。

票数 0
EN
页面原文内容由Code Review提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codereview.stackexchange.com/questions/234365

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档