Source code for hestia_earth.calculation.emissions.pToDrainageWaterSalcaPrasuhn2006

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

MODEL_KEY = 'pToDrainageWaterSalcaPrasuhn2006'


[docs]class PToDrainageWaterSalcaPrasuhn2006(Model): def __init__(self): # Define model tier self.tier = 1 self.term = download_hestia(MODEL_KEY) # Define model requirements self.orgP = None self.drainageClass = None self.pToSurfacewaterAllOrigins = None self.lqd_slurry_sluge = None # Instantiate variables self.pToDrainageWaterAllOrigins = None def access_lqd_slurry_sluge(self, cycle): slurryAndSludgeAsN = summation(cycle['inputs']['slurryAndSludgeAsN']['value']) cattleLiquidManureAsN = summation(cycle['inputs']['cattleLiquidManureAsN']['value']) pigsLiquidManureAsN = summation(cycle['inputs']['pigsLiquidManureAsN']['value']) lqd_slurry_sluge = [slurryAndSludgeAsN, cattleLiquidManureAsN, pigsLiquidManureAsN] self.lqd_slurry_sluge = summation(lqd_slurry_sluge) def calculate_pToDrainageWaterAllOrigins(self): if self.pToSurfacewaterAllOrigins != {}: self.pToDrainageWaterAllOrigins =\ 0.07 * (1 + 0 if self.orgP == 0 else self.orgP * 0.2/80 * (0 if self.lqd_slurry_sluge == {} else self.lqd_slurry_sluge)) * \ (6 if self.drainageClass > 3 else 0) return self.pToDrainageWaterAllOrigins def complete(self, completeness): self.orgP = 0 if self.orgP == {} and completeness['fertilizer'] else self.orgP self.lqd_slurry_sluge = 0 if self.lqd_slurry_sluge == {} and completeness['fertilizer'] else\ self.lqd_slurry_sluge def check_pToDrainageWaterAllOrigins(self, cycle): inputs = cycle['inputs'].evalues() self.orgP = summation([sum(input['value']) if 'units' in input['term'] and input['term']['units'] == 'kg P2O5' and input['term']['termType'] == 'organicFertilizer' else {} for input in inputs]) self.drainageClass = most_relevant_measurement(cycle['site']['measurements']['drainageClass'], cycle['endDate']) self.pToSurfacewaterAllOrigins = summation(cycle['emissions']['pToSurfacewaterAllOrigins']['value']) self.access_lqd_slurry_sluge(cycle) self.complete(cycle['dataCompleteness']) return self.orgP != {} and self.pToSurfacewaterAllOrigins != {} and self.drainageClass != {}