Source code for hestia_earth.calculation.emissions.noxToAirFertilizerAndExcretaStehfestBouwman2006Tier1

from hestia_earth.calculation.abstract_model import Model
from hestia_earth.utils.api import download_hestia
from hestia_earth.calculation.utils import residue_nitrogen, summation, format_lookup

MODEL_KEY = 'noxToAirFertilizerAndExcretaStehfestBouwman2006Tier1'


[docs]class NOXToAirFertilizerAndExcretaStehfestBouwman2006Tier1(Model): def __init__(self): # Define model tier self.tier = 1 self.term = download_hestia(MODEL_KEY) # Define model requirements self.n_inputs = None self.n_outputs = None self.country = None # Instantiate variables self.noxToAirAllOrigins = None # Define model coeffients self.nox_conv_factors = format_lookup('region.csv', 'ef_nox') def calculate_noxToAirAllOrigins(self): # Calculate total NOX emission self.noxToAirAllOrigins = float(self.nox_conv_factors[self.country]) * (self.n_inputs + self.n_outputs) return self.noxToAirAllOrigins def complete(self, completeness): self.n_inputs = 0 if self.n_inputs == {} and completeness['fertilizer'] else self.n_inputs self.n_outputs = 0 if self.n_outputs == {} and completeness['cropResidue'] else self.n_outputs def check_noxToAirAllOrigins(self, cycle): # Check that we have all the inputs inputs = cycle['inputs'].evalues() self.n_inputs = summation([sum(input['value']) if 'units' in input['term'] and input['term']['units'] == 'kg N' else {} for input in inputs]) self.n_outputs = residue_nitrogen(cycle['products']) self.country = cycle['site']['country']['@id'] self.complete(cycle['dataCompleteness']) return self.n_inputs != {} and self.n_outputs != {} and self.country != {} and self.country in\ self.nox_conv_factors