HWRF  trunk@4391
Public Member Functions | Public Attributes | List of all members
hwrf.wps.Ungrib Class Reference

This is a HWRF task that extracts the meteorological fields from GRIB formatted files and write the fields to intermediate files. More...

Detailed Description

This is a HWRF task that extracts the meteorological fields from GRIB formatted files and write the fields to intermediate files.

It is a wrapper around the WPS ungrib.exe program.

Definition at line 637 of file wps.py.

Inheritance diagram for hwrf.wps.Ungrib:
hwrf.wps.WPSTask hwrf.hwrftask.HWRFTask produtil.datastore.Task produtil.datastore.Datum

Public Member Functions

def __init__ (self, args, kwargs)
 Creates a new Ungrib. More...
 
def one_time (self)
 If True, we are pretending that hour 0 is valid for all times. More...
 
def gribs_per_time (self)
 How many grib files are processed for each time? This is 2 if an item2 or in_item2 were given in the config or constructor, respectively. More...
 
def inputiter (self)
 Iterates over all input files needed. More...
 
def input_at
 Finds input data for a specific time and GRIB file. More...
 
def get_grib
 Link or copies all the input GRIB files to the current working directory. More...
 
def run (self)
 Links inputs and runs ungrib. More...
 
def check_outfiles (self)
 Checks the expected ungrib output files to make sure they all exist and are non-empty. More...
 
def deliver_products (self, args, kwargs)
 Does nothing. More...
 
def products (self, kwargs)
 Ungrib delivers no products. More...
 
- Public Member Functions inherited from hwrf.wps.WPSTask
def __init__ (self, dstore, conf, section, sim, domains, taskname=None, wpsdir=None, starttime=None, increment=None, endtime=None, parent_atime=None, geogrid_from=None, kwargs)
 Create a new WPSTask. More...
 
def io_suffix (self, stream)
 Guesses the file suffix (.nc, etc.) for the specified stream. More...
 
def getsim (self)
 The WRFSimulation object for which we are preparing input. More...
 
def check_geogrid (self)
 Checks to see if the geogrid MOAD output file is present and non-empty in the current working directory. More...
 
def link_geogrid (self)
 Links geogrid output from the specified Geogrid task to the current working directory. More...
 
def times (self)
 Iterates over all output times. More...
 
def domains (self)
 Iterates over the domains in this WPSTask.
 
def link_fix
 Links all fix files for ungrib to the current working directory. More...
 
def make_product_structure (self, stream)
 Generates the self._products data structure used by the products method. More...
 
def make_products (self)
 This subroutine should be implemented in subclasses. More...
 
def products
 Iterates over all products. More...
 
def make_namelist (self)
 Returns the namelist.wps contents as a string. More...
 
def undeliver_products
 Deletes all delivered products and marks them as unavailable. More...
 
def deliver_products
 This is called from self.run to deliver all products to the intercom directory. More...
 
- Public Member Functions inherited from hwrf.hwrftask.HWRFTask
def __init__ (self, dstore, conf, section, taskname=None, workdir=None, outdir=None, storminfo=UNSPECIFIED, taskvars=UNSPECIFIED, kwargs)
 Creates an HWRFTask. More...
 
def isfakestorm (self)
 
def ismultistorm (self)
 
def get_workdir (self)
 Returns the directory the class should work in, as set by the "workdir" metadata value. More...
 
def set_workdir (self, val)
 Sets the directory the class should work in. More...
 
def get_outdir (self)
 Gets the directory that should receive output data. More...
 
def set_outdir (self, val)
 Sets the directory that should receive output data. More...
 
def realtime (self)
 Is this job a real-time forecast job? More...
 
def redirect (self)
 Should subprograms' outputs be redirected to separate files?
 
def scrub (self)
 Should temporary files be deleted as soon as they are not needed?
 
def tvset (self, opt, val)
 Sets a taskvar option's value. More...
 
def tvdel (self, opt)
 Deletes an object-local value set by tvset. More...
 
def tvget (self, opt)
 Gets a taskvar's value. More...
 
def tvhave
 Is a taskvar set? More...
 
def taskvars (self)
 The dict of object-local values used for string substitution. More...
 
def confint
 Alias for self.conf.getint for section self.section. More...
 
def confstr
 Alias for self.conf.getstr for section self.section. More...
 
def conffloat
 Alias for self.conf.getfloat for section self.section. More...
 
def confbool
 Alias for self.conf.getbool for section self.section. More...
 
def confget
 Alias for self.conf.get for section self.section. More...
 
def confitems
 Alias for self.conf.items for section self.section. More...
 
def confstrinterp (self, string, section=None, kwargs)
 Alias for self.icstr for backward compatibility. More...
 
def conftimestrinterp (self, string, ftime, atime=None, section=None, kwargs)
 Alias for self.timestr for backward comaptibility. More...
 
def confraw
 Get a raw configuration value before string expansion. More...
 
def icstr (self, string, section=None, kwargs)
 Expands a string in the given conf section. More...
 
def timestr (self, string, ftime, atime=None, section=None, kwargs)
 Expands a string in the given conf section, including time vars. More...
 
def getdir
 Alias for hwrf.config.HWRFConfig.get() for the "dir" section. More...
 
def getexe
 Alias for hwrf.config.HWRFConfig.get() for the "exe" section. More...
 
def getconf (self)
 Returns this HWRFTask's hwrf.config.HWRFConfig object. More...
 
def getsection (self)
 Returns this HWRFTask's section name in the HWRFConfig. More...
 
def log
 Obtain a logging domain. More...
 
def inputiter (self)
 Iterates over all inputs required by this task. More...
 
- Public Member Functions inherited from produtil.datastore.Task
def __init__ (self, dstore, taskname, logger=None, kwargs)
 Task constructor. More...
 
def jlogfile (self)
 returns the jlogfile logger. More...
 
def postmsg (self, message, args, kwargs)
 same as produtil.log.jlogger.info() More...
 
def setstate (self, val)
 Sets the state of this job. More...
 
def getstate (self)
 Returns the job state. More...
 
def strstate (self)
 A string representation of the job state. More...
 
def gettaskname (self)
 Returns the task name part of the database ID, which is the same as the prodname. More...
 
def products (self, args, kwargs)
 Iterate over the products this task produces. More...
 
def log (self)
 Returns the logger object for this task. More...
 
def clean (self)
 Cleans up any unneeded data used by this task. More...
 
def unrun (self)
 Undoes the effect of run(). More...
 
def run (self)
 Performs the work this Task should do and generates all products. More...
 
def is_completed (self)
 Is this task complete? More...
 
def completed (self)
 Read-only property: is this task completed? Same as is_completed() More...
 
def runpart (self)
 Run some of this task's work, deliver some products. More...
 
- Public Member Functions inherited from produtil.datastore.Datum
def __init__ (self, dstore, prodname, category, meta=None, cache=30, location=None, kwargs)
 Datum constructor. More...
 
def __enter__ (self)
 Acquires this object's thread lock. More...
 
def __exit__ (self, etype, evalue, traceback)
 Releases this object's thread lock. More...
 
def validate (self)
 Validates this object's Datastore, prodname and category. More...
 
def getid (self)
 Returns the database ID of this datum. More...
 
def getdatastore (self)
 Returns the datastore of this datum. More...
 
def transaction (self)
 Creates, but does not lock, a Transaction for this datum's datastore. More...
 
def getprodtype (self)
 Returns the product type of this Datum. More...
 
def getprodname (self)
 Returns the product name part of the database ID. More...
 
def getcategory (self)
 Returns the product category part of the database ID. More...
 
def getlocation (self)
 Returns the "location" field of this Datum's database entry. More...
 
def setlocation (self, v)
 Sets the "location" field of this Datum's database entry. More...
 
def __hash__ (self)
 Integer hash function. More...
 
def __str__ (self)
 Human-readable description of this Datum. More...
 
def __repr__ (self)
 Python code-like description of this Datum. More...
 
def __cmp__ (self, other)
 Compares two Datums' prodnames and categories. More...
 
def set_loc_avail (self, loc, avail)
 Sets the location and availability of this Datum in a single transaction. More...
 
def update (self)
 Discards all cached metadata and refreshes it from the Datastore. More...
 
def __getitem__ (self, k)
 Returns the value of the specified metadata key or raises KeyError. More...
 
def meta
 Return the value of a metadata key. More...
 
def get
 Alias for self.meta() Returns the value of the specified metadata key or returns default if it is unset. More...
 
def __setitem__ (self, k, v)
 Sets the value of the specified metadata key. More...
 
def __delitem__ (self, k)
 Deletes the specified metadata key, which must not be "available" or "location". More...
 
def __contains__ (self, k)
 Determines if a metadata key is set. More...
 
def iteritems (self)
 Iterates over all metadata (key,value) pairs for this Datum, including "available" and "location". More...
 

Public Attributes

 inputs
 the hwrf.input.DataCatalog to use for obtaining input data
 
 in_atime
 Parent model analysis time.
 
 in_ftime
 Parent model forecast hour that maps to the analysis time of this model.
 
 in_dataset
 Input dataset for the first GRIB source.
 
 in_dataset2
 Input dataset for the second GRIB source.
 
 in_item
 Input item for the first GRIB source.
 
 in_item2
 Input item for the second GRIB source.
 
 state
 
- Public Attributes inherited from hwrf.wps.WPSTask
 location
 
 nl
 an hwrf.namelist.Conf2Namelist with the namelist.wps information
 
 starttime
 Simulation start time. More...
 
 endtime
 Simulation end time. More...
 
 increment
 Simulation boundary input interval.
 
 parent_atime
 Parent model analysis time.
 
- Public Attributes inherited from hwrf.hwrftask.HWRFTask
 storminfo
 The hwrf.storminfo.StormInfo describing the vitals information for the storm processed by this HWRFTask. More...
 

Additional Inherited Members

- Properties inherited from hwrf.wps.WPSTask
 nocolons
 Read-only property that guesses whether colons should be omitted from filenames (True) or not (False) More...
 
 maxdom = property(_maxdom,None,None,"The number of WRF domains.")
 The number of WRF domains. More...
 
 MOAD = property(_MOAD,None,None,"Returns the Mother of All Domains (MOAD)")
 The Mother Of All Domains (MOAD) as an hwrf.wrf.WRFDomain.
 
 sim
 Read-only property: the hwrf.wrf.WRFSimulation for this WPSTask. More...
 
- Properties inherited from hwrf.hwrftask.HWRFTask
 workdir
 The directory in which this task should be run. More...
 
 outdir
 The directory in which this task should deliver its final output. More...
 
 conf
 This HWRFTask's hwrf.config.HWRFConfig object. More...
 
 section
 The confsection in self.section for this HWRFTask (read-only) More...
 
- Properties inherited from produtil.datastore.Task
 state
 Read-write property: the job state. More...
 
 taskname
 Read-only property: the name of this task. More...
 
- Properties inherited from produtil.datastore.Datum
 prodname = property(getprodname,None,None,)
 Read-only property, an alias for getprodname(): the product name part of the database ID. More...
 
 category = property(getcategory,None,None,)
 Read-only property, an alias for getcategory(), the category name part of the database ID. More...
 
 prodtype
 Read-only property, an alias for getprodtype(), the product type. More...
 
 did
 Read-only property, an alias for getid(). More...
 
 dstore
 Read-only property, an alias for getdatastore(), the Datastore in which this Datum resides. More...
 
 location
 Read-write property, an alias for getlocation() and setlocation(). More...
 

Constructor & Destructor Documentation

def hwrf.wps.Ungrib.__init__ (   self,
  args,
  kwargs 
)

Creates a new Ungrib.

All arguments are passed to the WRFTask constructor. The only new arguments are:

  • in_ftime - Optional: the parent model forecast hour to use for analysis time data in this Ungrib.
  • in_item, in_dataset - Optional: the item and dataset, in hwrf.input terminology, to use to request the GRIB1/2 input files.
  • in_item2, in_dataset2 - Optional: same as in_item and in_dataset, but for a second GRIB file that is appended to the first.
  • inputs - Optional: an hwrf.input.DataCatalog to provide input file locations. Default: construct one using the catalog name from the "catalog" option in this objects config section.
Parameters
args,kwargspassed to WPSTask.__init__

Definition at line 642 of file wps.py.

Member Function Documentation

def hwrf.wps.Ungrib.check_outfiles (   self)

Checks the expected ungrib output files to make sure they all exist and are non-empty.

Definition at line 1019 of file wps.py.

Referenced by hwrf.wps.Ungrib.run().

def hwrf.wps.Ungrib.deliver_products (   self,
  args,
  kwargs 
)

Does nothing.

Ungrib has no products to deliver.

Parameters
args,kwargsIgnored.

Definition at line 1037 of file wps.py.

Referenced by hwrf.ww3.WW3Init.run().

def hwrf.wps.Ungrib.get_grib (   self,
  require = False 
)

Link or copies all the input GRIB files to the current working directory.

Note that if two grib files are requested, then this is done by copying the data.

Parameters
requireif True, then hwrf.exceptions.UngribNoInput is raised when inputs cannot be found.

Definition at line 802 of file wps.py.

Referenced by hwrf.wps.Ungrib.run().

def hwrf.wps.Ungrib.gribs_per_time (   self)

How many grib files are processed for each time? This is 2 if an item2 or in_item2 were given in the config or constructor, respectively.

Otherwise it is 1.

Definition at line 742 of file wps.py.

Referenced by hwrf.wps.Ungrib.get_grib().

def hwrf.wps.Ungrib.input_at (   self,
  dt,
  igrib = 1,
  require = False 
)

Finds input data for a specific time and GRIB file.

Parameters
dtthe forecast time as a datetime.datetime, relative to the in_ftime
igrib1 or 2, which input file is used (in_item or in_item2 This is needed for models like GFS and GEFS that split their GRIB files into two parts.
requireif True, then hwrf.exceptions.UngribNoInput is raised when inputs cannot be found.

Definition at line 767 of file wps.py.

Referenced by hwrf.wps.Ungrib.get_grib().

def hwrf.wps.Ungrib.inputiter (   self)

Iterates over all input files needed.

This is meant to be plugged in to an hwrf.input.InputSource to obtain input data in the scripts.exhwrf_input job.

Definition at line 750 of file wps.py.

def hwrf.wps.Ungrib.one_time (   self)

If True, we are pretending that hour 0 is valid for all times.

This is equivalent to constant boundary conditions. If in_ftime is non-zero, then that hour is used instead.

Definition at line 735 of file wps.py.

Referenced by hwrf.wps.Ungrib.inputiter().

def hwrf.wps.Ungrib.products (   self,
  kwargs 
)

Ungrib delivers no products.

Everything is kept in the WPS temporary directory and reused by metgrid. The Metgrid implementation assumes it is running in the same directory as Ungrib, so no call to products() is needed.

Parameters
kwargsIgnored.

Definition at line 1040 of file wps.py.

Referenced by hwrf.wrf.ExternalWRFTask.__init__(), hwrf.wrf.ExternalWRFTask.unrun(), and hwrf.wrf.ExternalWRFTask.wrf_check().

def hwrf.wps.Ungrib.run (   self)

Links inputs and runs ungrib.

Ungrib has no deliverables: it only places files in the local directory for a later Metgrid.run() to pick up and use.

Definition at line 986 of file wps.py.

Referenced by produtil.datastore.Task.runpart().


The documentation for this class was generated from the following file: