################### Begin Class CO2Optimizer ###################
classCO2Optimizer(Optimizer):
"""
This creates an instance of a CarbonTracker optimization object. The base class it derives from is the optimizer object.
Additionally, this CO2Optimizer implements a special localization option following the CT2007 method.
All other methods are inherited from the base class Optimizer.
"""
defset_localization(self,loctype='None'):
""" determine which localization to use """
ifloctype=='CT2007':
self.localization=True
self.localizetype='CT2007'
#T-test values for two-tailed student's T-test using 95% confidence interval for some options of nmembers
ifself.nmembers==50:
self.tvalue=2.0086
elifself.nmembers==100:
self.tvalue=1.9840
elifself.nmembers==150:
self.tvalue=1.97591
elifself.nmembers==200:
self.tvalue=1.9719
else:self.tvalue=0
else:
self.localization=False
self.localizetype='None'
logging.info("Current localization option is set to %s"%self.localizetype)
ifself.localization==True:
ifself.tvalue==0:
logging.error("Critical tvalue for localization not set for %i ensemble members"%(self.nmembers))
sys.exit(2)
else:logging.info("Used critical tvalue %0.05f is based on 95%% probability and %i ensemble members in a two-tailed student's T-test"%(self.tvalue,self.nmembers))