__all__ = ['cloud_rain_center_time',
'cloud_rain_plus', 'cloud_rain_center_time_plus']
__doc__ = """
.. _Write
:mod:`Write` -- CAMx cloud/rain variable transformations
==================================================
.. module:: Write
:platform: Unix, Windows
:synopsis: Provides :ref:`PseudoNetCDF` variable transformations
for CAMx cloud/rain files. See sci_var.PseudoNetCDFFile
for interface details
.. moduleauthor:: Barron Henderson <barronh@unc.edu>
"""
from numpy import array
from PseudoNetCDF.MetaNetCDF import add_derived, time_avg_new_unit
from PseudoNetCDF.sci_var import PseudoNetCDFVariable
from .Memmap import cloud_rain as reg_cloud_rain
[docs]
class cloud_rain_center_time(time_avg_new_unit):
__reader__ = reg_cloud_rain
[docs]
class cloud_rain_plus(add_derived):
__childclass__ = reg_cloud_rain
__addvars__ = ['PRECIP_RATE', 'FCLOUD']
def __PRECIP_RATE__(self):
if 'PRECIP' in self.variables.keys():
val = self.variables['PRECIP']
else:
val = self.variables['RAIN'] + \
self.variables['SNOW'] + self.variables['GRAUPEL']
var = PseudoNetCDFVariable(
self, 'PRECIP_RATE', 'f', ('TSTEP', 'LAY', 'ROW', 'COL'),
values=(val * 10)**1.27)
var.units = 'mm/h'
var.long_name = 'PRECIP_RATE'.ljust(16)
var.var_desc = 'PRECIP_RATE'.ljust(16)
return var
def __FCLOUD__(self):
val = self.variables['CLOUD'] >= 5
var = PseudoNetCDFVariable(
self, 'FCLOUD', 'i', ('TSTEP', 'LAY', 'ROW', 'COL'),
values=array(val, dtype='i'))
var.units = 'None'
var.long_name = 'FCLOUD'.ljust(16)
var.var_desc = 'FCLOUD'.ljust(16)
return var
[docs]
class cloud_rain_center_time_plus(cloud_rain_plus):
__childclass__ = cloud_rain_center_time