Prado EFO PVA
evap.py
Go to the documentation of this file.
1 # -*- coding: utf-8 -*-
2 """
3 Created on Thu May 7 06:13:47 2020
4 
5 @author: cd
6 """
7 
8 import abc
9 import numpy as np
10 from efo.lookup import LkupTblAnn
11 from efo.time import TimeCont
12 
13 class EvapBase(metaclass=abc.ABCMeta):
14  def __init__(self, name, time):
15  self.namename = name
16  self.TT = time
17  self.evapevap = np.empty(self.TT.nSteps)
18  super().__init__()
19  @abc.abstractmethod
20  def calc_evap(self, stor):
21  pass
22  @classmethod
23  def __subclasshook__(cls,C):
24  if cls is EvapBase:
25  attrs = set(dir(C))
26  if set(cls.__abstractmethods__) <= attrs:
27  return True
28  return NotImplemented
29 
30 
32  def __init__(self, name, time, hypso, monDayHr, lkupVals, *,
33  typ='step', timeUnit=None):
34  # Call super class constructor
35  super().__init__(name, time)
36  # Create lookup table
37  self.evapRateTblevapRateTbl = LkupTblAnn(name+'RateTbl', time, monDayHr, lkupVals,
38  typ=typ, timeUnit=timeUnit)
39  self.hypsohypso = hypso
40  def calc_evap(self, stor):
41  curEvapRate = self.evapRateTblevapRateTbl.get_val(self.TT.curDT)
42  area = self.hypsohypso.stor2area(stor)
43  self.evapevap[self.TT.step] = curEvapRate/12 * area * self.TT.nHrs/24
44  return self.evapevap[self.TT.step]
45 
46 
def __subclasshook__(cls, C)
Definition: evap.py:23
def __init__(self, name, time)
Definition: evap.py:14
def calc_evap(self, stor)
Definition: evap.py:20
def calc_evap(self, stor)
Definition: evap.py:40
def __init__(self, name, time, hypso, monDayHr, lkupVals, *typ='step', timeUnit=None)
Definition: evap.py:33