User’s Guide for the Data Processing and
Error Analysis System (DPEAS)

Version 3.x

Andrew S. Jones
CSU/CIRA
Fort Collins, CO

October 10, 2011


Introduction

DPEAS was created to overcome the inherent difficulties of working with multiple data formats. The software design is centered on the HDF-EOS format. It has proven to be highly successful at tackling the cross-sensor data use issues (Jones and Vonder Haar, 2002). In brief, the DPEAS parallel computing environment allows for more efficient complex processing capabilities with easy access to inexpensive scalable computing resources.

 

Through memory resident HDF-EOS-like data structures, DPEAS can cache and manage all I/O operations directly. Therefore, the system handles the HDF-EOS data format natively and other foreign data formats are translated to the internalized HDF-EOS-based cached data structures. This results in significant I/O performance advantages, in that much of the I/O can be cached, removing redundant I/O operations. The system can handle global data sets with up to 7 dimensions, and is currently conformant to HDF-EOS version 2.17. Additional input translators are available when necessary for foreign data streams, but otherwise, all I/O is based on the HDF-EOS format. DPEAS has been tested in a 24-processor configuration, and simulation tests have shown that it is capable of scaling to approximately 2000 processors with hardware capabilities available at CIRA. The software system is a mixed language application using standard Fortran 95, ANSI C, and C++ running on the MS Windows 2003 and Windows 7 OS. DPEAS has also been ported to Linux and IBM AIX OSes for operational use at NOAA NESDIS. Parallelization capabilities are performed by dynamically propagating the executable to additional computing nodes as needed. Thus, the system behaves in a self-cloning manner, replicating itself as needed, and reporting to the host program when program segments are complete. The replication process is controlled by configuration data in simple text files. Asynchronous and independent parallel do loop constructs are supported in the input script semantics, thus allowing for easy parallelization of the science analysis code without extensive user training. From the user’s perspective, the application is a simple Fortran executable that they are able to modify and recompile through designated user interface modules. The parallelization is normally performed on a swath or sectorized swath file basis (also commonly known as a data granule in NASA parlance). Due to the relatively large granularity of the parallelization, network traffic is reduced, and the user interface can be made more powerful and flexible while making efficient use of available computer resources. A Fortran interpreter is used for the program script input files, thus providing a “science user”-friendly interface. Since the script’s Fortran subset language is already familiar, little training is needed for most science users.

 

DPEAS is being used at CIRA to merge satellite data in near-real time from several sensors. These merged products are being used by CIRA scientists to develop enhanced cross-sensor satellite products and algorithms. Currently the system is being tested at NOAA/NESDIS/OSDPD under a grant with the NOAA High Performance Computing and Communications (HPCC) Program. Work is also progressing to use parts of DPEAS for the CloudSat Data Processing System (CDPS) to satisfy that project’s HDF-EOS format requirements and parallel computing needs.

 

DPEAS Overview

DPEAS Components

The Data Processing and Error Analysis System (DPEAS) consists of 3 major components:

1.    Data Processing Engine (DPE)

2.    Error Analysis System (EAS)

3.    Data Fusion System (DFS)

The DPE controls all processing and execution scheduling, and enables DPEAS to submit multiple jobs simultaneously to multiple machines for parallel execution. The EAS and DFS are in development and will be incorporated into future versions of DPEAS.

DPEAS Usage

DPEAS is a multithreaded console application, thus it can be used as a normal command, such as: .\DPEAS\Release\DPEAS.exe ..\input\test\my_input_file.f90, where my_input_file.f90 is your DPEAS input file. All input file paths should be specified relative to the directory location of the DPEAS executable, DPEAS.exe.

DPEAS Directory Structure

The following DPEAS subdirectories are necessary for DPEAS to function correctly. Do not attempt to run DPEAS without these directories:

1.    \DPEAS\scripts

The com directory is used to store general use command procedures. The command procedures should help with certain functions, such as automated error checking of submitted DPEAS jobs.

2.    \DPEAS\setup\config\build

The build directory is used to store information regarding the DPEAS build version. This directory should not be modified by the user. DPEAS updates these files as needed. No user intervention is needed.

3.    \DPEAS\setup\config\database

The database directory is used by DPEAS to write the DPEAS database files for each DPEAS node. Statistics from the database files are used to optimize the DPEAS data processing. This directory should not be modified by the user. DPEAS updates these files as needed. No user intervention is needed.

4.    \DPEAS\setup\config\resource

The resource directory is used to specify available nodes for use in DPEAS processing. Each DPEAS node should have its own resource file. The resource files are also ASCII text files. The resource files can be modified at any time (even while DPEAS is executing).

5.    \DPEAS\data\input

This is the main user input directory. It is suggested (but not required) that all user-created DPEAS input script files should reside in this directory. The input files are ASCII text files and thus are editable by any common ASCII file editor (e.g., NOTEPAD). A common error is to assume that the input files are fortran source files and are therefore in need of compilation. This is not the case. The input files are merely interpreted ASCII script files that use the familiar Fortran 90 syntax. This should allow users (at least those with some fortran background) to have instant familiarity with the DPEAS user interface. Just remember that DPEAS uses pseudo-fortran code as its input files – that doesn’t mean it needs a compiler – DPEAS will interpret the code for you in real-time, skipping the normal compilation step. This creates all sorts of benefits that will be become apparent with use of the DPEAS system.

6.    \DPEAS\work

The work directory is used by DPEAS to write temporary working files. Normally DPEAS will clean up these files as needed so that no user intervention is needed.

DPEAS Modules

The following diagram is a useful schematic of the interrelationships between the primary DPEAS software modules.

DPEAS Multinode Processing

DPEAS is capable of running on several nodes simultaneously. DPEAS implements the multinode processing with a MASTER/SLAVE paradigm. Resource files are used to specify attributes of the master and slave nodes. The node on which the DPEAS executable resides is the master node. The master node delegates data processing chores to the DPEAS slave nodes. Multinode processing is implemented using an “independent DO loop construct”, an idea borrowed from High Performance Fortran (HPF). Primary level do loops in a DPEAS master input file are intrinsically assumed to be independent DO loops, thus iterations of the do loop may be performed in any order. Remaining nested DO loops are processed by the designated slave node. Inter-process communication is prohibited between the independent DO loop block and the host DPEAS program variables, thus variable values modified within an independent DO loop are not available to the host DPEAS program. To turn off the automatic parallelization of DPEAS input, add “call DPE_SLAVE” at the start of the execution part of the input file. An example of the DPEAS data processing flow is shown below. Each block is a group of Fortran 90 statements that are interpreted during DPEAS execution.


DPEAS Input Syntax

The DPEAS input file format emulates the F90 free source form. The standard F90 free source form is used, with the exception that multiple statements on one line using the “;” delimiter are prohibited. F90 fixed source form is not supported. The DPEAS syntax is a subset of the standard F90 syntax with some limited extensions. Complete syntax information is provided in DPEAS_syntax.htm. DPEAS is not a fortran compiler or a complete fortran interpreter. Most syntax errors are detected; however, users should make every effort to send DPEAS “clean” input. Statements can contain up to 7200 characters per line.

DPEAS Examples

Example input script files are contained under the “.\examples” directory. Ideally, all script files should emulate the style of the provided examples, but users are free to experiment with other programming styles if they wish.

 

! DPEAS input syntax example

 

   character (len = 255), pointer :: file (:)   ! file names

   character (len = 255) :: input_files = '\\DORADO\E\TEMP\*.dat'

   integer :: i                                 ! dummy integer

   integer :: n                                 ! number of files

 

   call get_files (input_files, file, n)

   do i = 1, n

      call ssmi2hdfeos (file (i), output_dir)

   enddo

 

DPEAS Data Structure

The DPEAS data structure serves as a global memory-residing data structure for the various DPEAS procedures. The root data module is the DPE_DATA_MODULE module. Several additional modules within that module group contains procedures for the manipulation of the DPEAS data structure.  The DPEAS data structure components are documented in the DPE_DATA_STRUCTURE_MODULE code. The structure can be very complex to the initiated and it is suggested that users use a closely related programming example if they wish to manipulate the DPEAS data structures.

Extending DPEAS

DPEAS can be customized with user written procedures. The best way to learn is by example. The DPEAS modules test_call_module.f90 and dpe_user_module.f90 are a good starting point, as are any of the other DPEAS intrinsic procedures. New procedures should be referenced by the programming hooks that are provided in the file dpe_user_module.f90.

Installing DPEAS

DPEAS system requirements

1)    Windows 2003 / Windows 7

2)    Microsoft Visual Studio 2008

3)    Intel Visual Fortran 11.1

4)    Approximately 725 MB of disk space for the DPEAS project workspace and related files

5)    Approximately 200 MB of memory for recompilation.

6)    Batch Job Server 2.1A – [optional].

DPEAS installation and use

The DPEAS software is distributed via CD-R. Installation instructions are available in the file named “DPEAS installation notes.txt” , which is located in the root directory of the DPEAS CD-R. Currently, the software is only available to research collaborators. For more information, please contact Andy Jones (mailto:jones@cira.colostate.edu).

Using DPEAS

There are two primary methods of using DPEAS.

1)    As a simple command line executable: See the previous DPEAS usage discussion.

2)    Within the MS Visual Studio Developer Environment: Since DPEAS is primarily a data processing development system, often times this is the most common use. Simply double click the file "DPEAS.sln" to startup the DPEAS Solution Workspace. The program should be fully functional and should not require rebuilding. The settings of the project determine which arguments are passed to the DPEAS executable. Please see the MS Visual Studio on-line help on how to modify these project settings.

Project Compiler Settings

Due to system resource requirements, it is suggested that you build any project modifications incrementally. However, to perform a full rebuild, delete all the files under the “.\Debug” and/or “.\Release\” directories. This will delete the original object files and allow a clean rebuild. You should not need to rebuild the DPEAS library.

 

The following notes may be useful in compiling your own DPEAS procedures. It is important to not change the settings below when compiling DPEAS or unexpected compilation errors may occur.

Known compiler bugs

There are no known bugs in the DPEAS 3.x version.

Acknowledgements

Due to the scope of DPEAS, several people and groups have contributed to its development. In particular, the extensive HDF libraries provided by NCSA, the HDF-EOS libraries by NASA, various CIRA McIDAS and navigation routines written by Duane Whitcomb and Dale Reinke, and a TIFF format image output procedure originally written by Stan Kidder. In addition, the OLS read routine was provided by Mark Ringerud, and I was assisted by Lt. Steve Barlow in developing the TRMM TMI and VIRS translator routines. Dale Reinke also assisted with the HDF-EOS 2.5 implementation. Stan Kidder created the first draft of the NESDIS SSMI data translator.

__________________________________________________________

A sample of the DPEAS Intrinsic Routines (for complete information see the DPEAS Programmer’s Guide.doc).

ARCHIVE

Purpose: Archive files from a source directory to a target directory. The number of files to move is determined by the target file size. This allows for archival to size-limited off-line archival storage. The archive operation is performed on all subdirectories simultaneously in sequential filename order and is capable of handling mirror set replication behaviors as well. If used, the limit specified is a soft-limit since all files that share the same YYYYDDD (or 7 character) filename prefix are moved in a contiguous manner.

subroutine archive (source, target, limit)

character (len = MAX_PATH), intent (IN) :: source                    ! source name spec.

character (len = MAX_PATH), intent (IN) :: target                    ! target name spec.

double precision, intent (IN), optional :: limit                     ! target size limits (bytes)

COMPOSITE

Purpose: Composite an input file according to a specific method and precalculated weights. Methods supported include: 1) “UNIFORM” – uniform weights are used; this results in a simple average of the input data files, and 2) “OVERLAY” – uniform weights are used, then a simple time filter is applied to use only the most recent data in the overlay. In the “OVERLAY” method, the temporal weighting can be controlled by the optional half_life and zero_offset arguments. The temporal weight is computed as: exp (-half_life * delta time) + zero_offset. Negative temporal weights are truncated to zero. By default, or if the half_life is defined as zero, a temporal “if statement” is used (i.e., only the most recent data is retained). The weight_file argument specifies a HDF file containing static weights to use within the compositing process. If the weight_file argument is omitted, uniform static weights are generated dynamically by this routine. If the start time is given, the time prefix of the static output file name may be updated. The start argument is required by the “OVERLAY” method. The start time can be specified as “NOW” if the current time is desired. If the control argument is omitted, the default behavior is to create all possible composite output variables. The control argument is a binary flag that corresponds to the integers specified for each appropriate composite variable (for the specified composite method) in the dpe_composite_method_module. The bits are specified with the rightmost bit being the least significant. The output data file is reinitialized with each invocation of this routine; therefore, prior composite results are not intermixed with the new composite output results.

subroutine composite (input_file, output_file, method, weight_file, start, control)

character (len = MAX_PATH), intent (IN) :: input_file                ! input file name

character (len = MAX_PATH), intent (INOUT) :: output_file            ! output file name

character (len = MAX_PATH), intent (IN) :: method                    ! composite method

character (len = MAX_PATH), intent (IN), optional :: weight_file     ! weight file name

character (len = MAX_PATH), intent (IN), optional :: start           ! composite start time

double precision, intent (IN), optional :: half_life                 ! temporal half life

double precision, intent (IN), optional :: zero_offset               ! temporal zero offset value

integer, intent (IN), optional :: control                            ! output control flag

COMPOSITE_WEIGHTS

Purpose: Generate the static composite weights for a particular input file. Methods supported include: 1) “UNIFORM” – uniform weights are used; this generates a weight file containing weight values of “1” for each valid data element contained in the input data file.

subroutine composite_weights (input_file, output_file, method)

character (len = MAX_PATH), intent (IN) :: input_file                ! input file name

character (len = MAX_PATH), intent (INOUT) :: output_file            ! output file name

character (len = MAX_PATH), intent (IN) :: method                    ! composite method

COPYFILE

Purpose: Copy an existing file to a new file using a modified file name specification. If the file already exists, the copy operation is still performed.

subroutine copyfile (input_file, context, file_spec, dir_spec, prefix_spec, suffix_spec, file_type_spec)

character (len = MAX_PATH), intent (IN) :: input_file                ! input file name

character (len = MAX_PATH), intent (IN), optional :: context         ! search context

character (len = MAX_PATH), intent (IN), optional :: file_spec       ! file name specification

character (len = MAX_PATH), intent (IN), optional :: dir_spec        ! directory name specification

character (len = MAX_PATH), intent (IN), optional :: prefix_spec     ! prefix name specification

character (len = MAX_PATH), intent (IN), optional :: suffix_spec     ! suffix name specification

character (len = MAX_PATH), intent (IN), optional :: file_type_spec  ! file type name specification

DEALLOCATE_HDFEOS

Purpose: Deallocate an HDF-EOS data file from the DPEAS data structure, or optionally delete a component of an HDF-EOS data file such as a grid, point, or swath, or a specific data item.

subroutine deallocate_hdfeos (input_file, name, grid, point, swath, item)

character (len = MAX_PATH), intent (IN) :: input_file          ! input file name

character (len = MAX_PATH), intent (IN), optional :: name      ! grid, point, or swath name

character (len = MAX_PATH), intent (IN), optional :: grid      ! grid name

character (len = MAX_PATH), intent (IN), optional :: point     ! point name

character (len = MAX_PATH), intent (IN), optional :: swath     ! swath name

character (len = MAX_PATH), intent (IN), optional :: item      ! data item name

DPE_MIRROR

Purpose: Perform a full update of a particular mirror set source. To update all available mirror set sources, set mirror_source to “*”. The mirror sets are defined in the DPEAS resource files. The mirror set information format is:

Mirror%source(1) = “\\node name\share name\source directory name\”

Mirror%target(1) = “\\node name\share name\target directory name\”

Mirror%replicate(1) = .TRUE.

where if mirror%replicate is TRUE, then replication is performed (i.e., if target files do not exist on the source, then the target files are deleted), otherwise if mirror%replicate is FALSE, the synchronization is performed (i.e., if target files do not exist on the source, then the target files are copied to the source location). The synchonization mode does not delete any files, and is the default setting if mirror%replicate is not explicitly defined in the resource file. Please use the replication-mirroring mode with caution, since it enables an automatic deletion process.

subroutine dpe_mirror (mirror_source)

character (len = MAX_PATH), intent (IN) :: mirror_source       ! mirror set source

DPE_MODE_ASYNCHRONOUS

Purpose: Set the job behavior to be asynchronous at the end of each do loop (i.e., the next line of code does not wait for the prior active do loop to complete).

subroutine dpe_mode_asynchronous

DPE_MODE_SYNCHRONOUS

Purpose: Set the job behavior to synchronize at the end of each do loop. This is the default behavior in DPEAS.

subroutine dpe_mode_synchronous

DPE_REQUIREMENTS

Purpose: Update the job resource requirements from their nominal default values. This routine is used to control the DPEAS job submission logic so that only nodes with sufficient resources are sent the jobs that require a large amount of resources. Normally, the default resource requirement values are adequate since most jobs are cpu limited, but sometimes large memory or multi-threaded jobs need additional control. This routine provides that control.

subroutine dpe_requirements (cpu, memory)

integer, intent (IN) :: cpu      ! cpu(s) required

integer, intent (IN) :: memory   ! memory (MB) required

DPE_SLAVE

Purpose: Make the current node a slave node. This routine is primarily for internal use by the DPEAS system. If used on a master node it will disable the parallelization of subsequent do loop blocks.

subroutine dpe_slave

DPE_TEST_CALL

Purpose: This routine is a test subroutine for debugging the DPEAS argument functions. This is also a good example of a DPEAS subroutine driver.

subroutine dpe_test_call (test1, test2, string1, string2)

integer, intent (OUT) :: test1 (3)

integer, intent (INOUT) :: test2

character (len = 30), optional, intent (INOUT) :: string1

character (len = 30), optional, intent (INOUT) :: string2 (2)

DPE_TEST_HDFEOS

Purpose: Perform a system test of the HDF-EOS library. A test file is generated which is named DPE_TEST_HDFEOS.hdf  in the computer’s TEMP directory. The variable imax controls the size of the test.

subroutine dpe_test_hdfeos (imax)

integer, intent (IN) :: imax

DPE_TEST_LOAD

Purpose: Perform a system test with the specified CPU and I/O load factors.

subroutine dpe_test_load (cpu_io_ratio, load_factor)

real, intent (IN) :: cpu_io_ratio      ! CPU/IO ratio, range (0.0 – 1.0)

real, intent (IN) :: load_factor       ! load amount, range (0.0 – 1.0)

DPE_WRITE_DATA_STRUCTURE

Purpose: Writes the entire contents of the DPEAS data structure list to the default output device as a formatted list. This routine is useful for debugging the DPEAS data structure.

subroutine dpe_write_data_structure

DPE_WRITE_DB_STATISTICS

Purpose: Write the DPEAS statistical summary information from all specified input database directories. This routine is useful for consolidating multiple DPEAS installation reports. This routine takes up to 99 database directory path names. The directory path should be specified using UNC, e.g., “\\DORADO\D\Jones\Projects\DPEAS\”. Note that if subtotals = .TRUE. then the routine will print all of the database subtotal statistics for each database file it encounters, otherwise if subtotals = .FALSE. it will not print the subtotal statistics and will merely list the aggregate statistics totals.

subroutine dpe_write_db_statistics (subtotals, path01, path02, pathnn…)

logical, intent (IN) :: subtotals                     ! logical subtotal flag

character (len = MAX_PATH), intent (IN) :: path01     ! database directory path 1

character (len = MAX_PATH), intent (IN) :: path02     ! database directory path 2

character (len = MAX_PATH), intent (IN) :: path03     ! database directory path 3

DPE_WRITE_MIRROR_SETS

Purpose: Write all defined DPEAS mirror sets to the default output device as a formatted list. This routine is useful for debugging the DPEAS mirror set specifications.

subroutine dpe_write_mirror_sets

DPE_WRITE_VARIABLES

Purpose: Write all internal DPEAS variables to the default output device as a formatted list. This routine is useful for debugging the DPEAS internal variables.

subroutine dpe_write_variables

FILENAME

Purpose: Return a modified file name specification.

subroutine filename (file_name, file_spec, dir_spec, prefix_spec, suffix_spec, file_type_spec)

character (len = MAX_PATH), intent (OUT) :: file_name                ! output file name

character (len = MAX_PATH), intent (IN) :: file_spec                 ! input file name

character (len = MAX_PATH), intent (IN), optional :: dir_spec        ! directory name specification

character (len = MAX_PATH), intent (IN), optional :: prefix_spec     ! prefix name specification

character (len = MAX_PATH), intent (IN), optional :: suffix_spec     ! suffix name specification

character (len = MAX_PATH), intent (IN), optional :: file_type_spec  ! file type name specification

GET_FILES

Purpose: Return a list of files that match a target file specification. Note that this routine dynamically allocates space for the files using a pointer data type. A unique search context identifier can optionally be specified so that previously returned file names are not returned in subsequent searches. This is particularly useful for near real-time processing of data streams where the input directory is being constantly updated with new files. Context information is maintained between multiple instances of the program and coordination of the context information between nodes occurs automatically. Thus, all context identification specifications should be unique to each input script.

 

Optionally filter the results using additional time filter criteria. All time filter criteria are optional and can be specified in many possible combinations. All times are based on the filenaming conventions. The time filter should not be applied to non-YYYYDDDHHMMSS... filenames.

 

Time filter argument definitions:

  • Start: The start time of the period can be specified as an ASCII text string in an absolute ('YYYY-DDD HH:MM:SS.CC' or 'YYYY-MON-DD HH:MM:SS.CC' or 'YYYY-MM-DD HH:MM:SS.CC') or delta ('DDD HH:MM:SS.CC') time formats, or by ASCII text file names following the YYYYDDDHHMMSS... nomenclature.
  • Period: The period is the length of time per cycle. It is specified by an ASCII text string in delta time format.
  • Duration: The duration is the length of the time filter "window". It is specified by an ASCII text string in delta time format.
  • Offset: The offset is applied to the start time of the period, and offsets all time window cycles. It is specified by an ASCII text string in delta time format. It can be negative (e.g., "- 01:00:00.0").
  • Occurrences: The number of occurrences controls how many cycles are filtered. If set to 0, then the file nearest to the center of the time filter "window" is returned from each filter cycle.

 

Time filter argument default values:

  • Start: The current time is used.
  • Period: An infinite period is used.
  • Duration: An infinite duration is used.
  • Offset: Set to zero.
  • Occurrences: An infinite number of occurrences are tested.

If all time filter arguments are omitted, no time filtering is performed on the files.

Optionally, prefilter the file name list so that file name duplicates are removed. The argument, Unique_filename_length, specifies the maximum offset position for the uniqueness test.

Optionally, return the nearest matching file according to the file name nomenclature. The argument, match, specifies the target file name that is to be matched. You may modify the match by using the optional time filter arguments. The match argument supersedes the start filter argument. By default, the "duration" and "offset" arguments are set to search all available files for the match.

Optionally, specify the (first-in-first-out) FIFO processing order for unique file names. The default is .FALSE. Therefore the last unique file name is used by default (i.e., last-in-first-out, LIFO). If FIFO = .TRUE. the first unique file name found is used instead.

subroutine get_files (target_file_spec, file, number_of_files)

character (len = MAX_PATH), intent (IN) :: target_file_spec       ! target file specification

character (len = MAX_PATH), pointer :: file (:)                   ! file names

integer, intent (OUT) :: number_of_files                          ! number of files found

character (len = MAX_PATH), intent (IN), optional :: context      ! context ID specification

character (len = MAX_PATH), intent (IN), optional :: start        ! filter start time

character (len = MAX_PATH), intent (IN), optional :: period       ! filter period

character (len = MAX_PATH), intent (IN), optional :: duration     ! sample duration

character (len = MAX_PATH), intent (IN), optional :: offset       ! filter time offset

integer, intent (IN), optional :: occurrences                     ! number of periods

integer, intent (IN), optional :: unique_filename_length          ! unique filename length

character (len = MAX_PATH), intent (IN), optional :: match        ! target to match

logical, intent (IN), optional :: fifo                            ! FIFO logical flag

 

READ_HDFEOS

Purpose: Read an HDF-EOS data file and insert the file into the main DPEAS data structure. The optional ONLY argument allows for the selective reading of HDF-EOS data files to minimize unnecessary I/O. The ONLY argument is specified as a comma-delimited list of HDF-EOS data field names that are to be read.

subroutine read_hdfeos (input_file, only)

character (len = MAX_PATH), intent (IN) :: input_file       ! input file name

character (len = MAX_PATH), intent (IN), optional :: only   ! data to read

REMAP

Purpose: Remap an HDF-EOS data file to a specified projection space (given by HDF-EOS projection parameters contained in the PROJ_FILE input file). All data contained in the HDF-EOS file are remapped. One-dimensional arrays that have a defined geographical mapping are converted to two-dimensional arrays to reflect the spatial remapping. Note: that this routine promotes the output data item numbertype to either FLOAT32 or FLOAT64 depending on the input data item numbertype. The remapped data are written to an internal DPEAS data structure with the name OUTPUT_FILE. Data structure names within the HDF-EOS data file are unchanged. This routine performs no explicit I/O. To save the remapped data to a file on the drive use the WRITE_HDFEOS routine with the value contained in OUTPUT_FILE as its argument. If the BIN argument is .TRUE. use the binning method instead of the interpolation method. The arrays that are (or are not) processed are controlled by the ONLY2D argument value.

The following input data arrays are not defined by this routine for remapping under the following ONLY2D conditions:

if ONLY2D = .TRUE.

1)    Arrays with the suffix "_Calibration".

2)    Arrays with the suffix "_Attenna_Pattern_Correction".

3)    Arrays that have non-geographical dimensions.

if ONLY2D = .FALSE.

1)    No arrays are skipped. Arrays of all ranks are defined (caution: some multidimensional arrays with non-geographical dimensions can become quite large).

If the OVERLAY option is .TRUE. the remap operation does not average overlapping pixels but “overlays” them. The last value will be the only value retained, all previous remapping operations are discarded if overlapping conditions exist. The default is OVERLAY = .FALSE., which means that the bilinear interpolation algorithm will return average values where pixels overlap. This is the normal case. The OVERLAY = .TRUE. option can be useful for high resolution remap sectors using low resolution data.

subroutine remap (input_file, proj_file, output_file, bin, only2d)

character (len = MAX_PATH), intent (IN) :: input_file             ! input file name

character (len = MAX_PATH), intent (IN) :: proj_file              ! projection file name

character (len = MAX_PATH), intent (INOUT) :: output_file         ! output file name

logical, intent (IN), optional :: bin                             ! bin control flag

logical, intent (IN), optional :: only2d                          ! only2D control flag

logical, intent (IN), optional :: overlay                         ! overlay control flag

SPLIT_HDFEOS

Purpose: Split an HDF-EOS file into smaller swath files "lines" long.

subroutine split_hdfeos (input_file, output_dir, lines)

character (len = MAX_PATH), intent (IN) :: input_file             ! input file name

character (len = MAX_PATH), intent (IN) :: output_dir             ! output directory name

integer, intent (IN) :: lines                                     ! number of lines to split

SYSTEM

Purpose: Pass a command to the operating system, pause until the command is done.

subroutine system (command)

character (len = MAX_SYSTEM_COMMAND), intent (IN) :: command      ! command line

TIME

Purpose: Write a message containing the current local time and the elapsed time from the previous call.

subroutine time

WRITE_GIF

Purpose: Write a DPEAS data structure data item to a digital image in GIF 87a format, optionally scale the data, and fill missing values in the image with the fillcount value. This routine will not create an output image file if the data field contains only missing data flags.

subroutine write_gif (input_file, name, item, output_dir, min, max, inc, fillcount)

character (len = MAX_PATH), intent (IN) :: input_file       ! input file name

character (len = MAX_PATH), intent (IN) :: name             ! swath or grid name

character (len = MAX_PATH), intent (IN) :: item             ! data item name

character (len = MAX_PATH), intent (IN) :: output_dir       ! output directory

real, intent (IN), optional :: min                          ! minimum value

real, intent (IN), optional :: max                          ! maximum value

real, intent (IN), optional :: inc                          ! increment value

integer, intent (IN), optional :: fillcount                 ! fill count value

WRITE_HDFEOS

Purpose: Write an HDF-EOS data file from the main DPEAS data structure to disk. All data components of the HDF-EOS data file are written.

subroutine write_hdfeos (output_file)

character (len = MAX_PATH), intent (IN) :: output_file      ! output file name

WRITE_RAMDAS

Purpose: Write a DPEAS data structure data item to a tab-delimited text file in the RAMDAS output format.

subroutine write_ramdas (input_file, name, item, output_dir)

character (len = MAX_PATH), intent (IN) :: input_file       ! input file name

character (len = MAX_PATH), intent (IN) :: name             ! swath or grid name

character (len = MAX_PATH), intent (IN) :: item             ! data item name

character (len = MAX_PATH), intent (IN) :: output_dir       ! output directory

WRITE_TEXT

Purpose: Write a DPEAS data structure data item to a text file in tab-delimited ASCII format. The first column of data is that specified by the data item name, all associated data items are written in the following columns. Currently, only arrays that match the target data item array in rank and dimension size are written.

subroutine write_text (input_file, name, item, output_dir)

character (len = MAX_PATH), intent (IN) :: input_file       ! input file name

character (len = MAX_PATH), intent (IN) :: name             ! swath or grid name

character (len = MAX_PATH), intent (IN) :: item             ! data item name

character (len = MAX_PATH), intent (IN) :: output_dir       ! output directory

WRITE_TIFF

Purpose: Write a DPEAS data structure data item to a digital image in TIFF format, optionally scale the data, and fill missing values in the image with the fillcount value. This routine will not create an output image file if the data field contains only missing data flags.

subroutine write_tiff (input_file, name, item, output_dir, min, max, inc, fillcount)

character (len = MAX_PATH), intent (IN) :: input_file       ! input file name

character (len = MAX_PATH), intent (IN) :: name             ! swath or grid name

character (len = MAX_PATH), intent (IN) :: item             ! data item name

character (len = MAX_PATH), intent (IN) :: output_dir       ! output directory

real, intent (IN), optional :: min                          ! minimum value

real, intent (IN), optional :: max                          ! maximum value

real, intent (IN), optional :: inc                          ! increment value

integer, intent (IN), optional :: fillcount                 ! fill count value

WWW_UPDATE

Purpose: Purge any old files and update the web directory information. This routine uses the file’s last-written date for purging purposes. If the keep argument is not present, no files are purged. The directory name specification can include a filename, but only the directory name information is used. If the plot argument is .TRUE., a simple plot is made of the file times (as determined by the filename nomenclature) to the standard output, and some diagnostics are printed for data gaps and overlaps. The plot capability is especially useful to quickly examine data sampling characteristics. No plots are generated by default (i.e., plot = .FALSE.).

subroutine www_update (www_dir, dir_spec, keep)

character (len = MAX_PATH), intent (IN) :: www_dir          ! WWW output directory

character (len = MAX_PATH), intent (IN) :: dir_spec         ! directory name specification

real, intent (IN), optional :: keep                         ! number of days to keep

logical, intent (IN), optional :: plot                      ! plot the file times

DPEAS Translators

AGRMET2HDFEOS

Purpose: Convert AFWA AGRMET model output from GRIB format to an HDF-EOS grid format. This routine can handle 3HR and polar stereographic GRIB files at “8th mesh”. This routine automatically generates a file name based on the data time. When the output_file argument is present, the output file name is returned and points to the internal HDF-EOS data structure that has been created (but not written to disk; i.e., no hard I/O is performed when output_file is specified). If called with the output_file argument, the created HDF-EOS data structure remains after the call to this routine and it is the caller’s responsibility to deallocate the created HDF-EOS data structure. The DPEAS_SAT_NAME and DPEAS_SENSOR_NAME are used to contain the model name and the model output type information.

subroutine agrmet2hdfeos (input_file, output_dir, output_file)

character (len = MAX_PATH), intent (IN) :: input_file             ! input file name

character (len = MAX_PATH), intent (IN) :: output_dir             ! output directory

character (len = MAX_PATH), intent (OUT), optional :: output_file ! output file name

 

DPEAS_SAT_NAME

AGRMET

 

DPEAS_SENSOR_NAME

3HR

Grid: AGRMET

VARIABLE NAME

UNITS

DESCRIPTION

Time

TAI93

Time

SM_000010

-

Relative soil moisture (0-10 cm)

SM_010040

-

Relative soil moisture (10-40 cm)

SM_040100

-

Relative soil moisture (40-100 cm)

SM_100200

-

Relative soil moisture (100-200 cm)

SM_VOL_TOTAL_000010

m^3/m^3

Volumetric soil moisture (liquid and frozen) (0-10 cm)

SM_VOL_TOTAL_010040

m^3/m^3

Volumetric soil moisture (liquid and frozen) (10-40 cm)

SM_VOL_TOTAL_040100

m^3/m^3

Volumetric soil moisture (liquid and frozen) (40-100 cm)

SM_VOL_TOTAL_100200

m^3/m^3

Volumetric soil moisture (liquid and frozen) (100-200 cm)

SM_VOL_LIQUID_000010

m^3/m^3

Volumetric soil moisture (liquid) (0-10 cm)

SM_VOL_LIQUID_010040

m^3/m^3

Volumetric soil moisture (liquid) (10-40 cm)

SM_VOL_LIQUID_040100

m^3/m^3

Volumetric soil moisture (liquid) (40-100 cm)

SM_VOL_LIQUID_100200

m^3/m^3

Volumetric soil moisture (liquid) (100-200 cm)

TSOIL_000010

K

Soil temperature (0-10 cm)

TSOIL_010040

K

Soil temperature (10-40 cm)

TSOIL_040100

K

Soil temperature (40-100 cm)

TSOIL_100200

K

Soil temperature (100-200 cm)

TMP_SFC

K

Skin temperature

TOPO_SFC

m

Model terrain height

VEG_GREENNESS_FRACTION_SFC

%

Vegetation greenness fraction

SNOW_LWE_SFC

mm

Snow liquid water equivalent

SNOW_DEPTH_SFC

m

Snow depth

CANOPY_MOISTURE_CONTENT_SFC

m

Canopy moisture content

DSW_SFC

W/m^2

Downwelling shortwave radiation at the surface

DLW_SFC

W/m^2

Downwelling longwave radiation at the surface

LANDSEA_MASK_SFC

-

Land/sea mask

SOIL_TYPE_SFC

Class category

Soil Type

VEG_TYPE_SFC

Class category

Vegetation Type

PRECIP_SFC

mm

Precipitation (3h accumulation)

STORM_SURFACE_RUNOFF_SFC

mm

Storm surface runoff (3h accumulation)

BASEFLOW_GROUNDWATER_RUNOFF_000200

mm

Baseflow groundwater runoff (3h accumulation)

DSW_SFC_3H_AVG

W/m^2

Downwelling shortwave radiation at the surface, 3h average

DLW_SFC_3H_AVG

W/m^2

Downwelling longwave radiation at the surface, 3h average

TMP_SFC_3H_AVG

K

Skin temperature, 3h average

ALBEDO_SFC_3H_AVG

%

Albedo, 3h average

LHF_SFC_3H_AVG

W/m^2

Latent heat flux, 3h average

SHF_SFC_3H_AVG

W/m^2

Sensible heat flux, 3h average

GHF_SFC_3H_AVG

W/m^2

Ground heat flux, 3h average

 

 

 

DPEAS_SAT_NAME

AGRMET

 

DPEAS_SENSOR_NAME

NH or SH

Grid: AGRMET

VARIABLE NAME

UNITS

DESCRIPTION

Time

TAI93

Time

TSOIL_000010_24H_AVG

K

Soil temperature (0-10 cm), 24h average

TSOIL_010040_24H_AVG

K

Soil temperature (10-40 cm), 24h average

TSOIL_040100_24H_AVG

K

Soil temperature (40-100 cm), 24h average

TSOIL_100200_24H_AVG

K

Soil temperature (100-200 cm), 24h average

TMAX_2M

K

24h maximum temperature at 2 meters

TMIN_2M

K

24h minimum temperature at 2 meters

TMP_2M_24H_AVG

K

Temperature at 2 meters, 24h average

RH_AT_TMIN_2M

%

Relative humidity at the 24h minimum temperature

WIND_RUN_10M

km

Wind run, 24h accumulation

SM_VOL_TOTAL_000010_24H_AVG

m^3/m^3

Volumetric soil moisture (liquid and frozen) (0-10 cm), 24h average

SM_VOL_TOTAL_010040_24H_AVG

m^3/m^3

Volumetric soil moisture (liquid and frozen) (10-40 cm), 24h average

SM_VOL_TOTAL_040100_24H_AVG

m^3/m^3

Volumetric soil moisture (liquid and frozen) (40-100 cm). 24h average

SM_VOL_TOTAL_100200_24H_AVG

m^3/m^3

Volumetric soil moisture (liquid and frozen) (100-200 cm), 24h average

PRECIP_MERGED_SFC

mm

Merged precipitation analysis, 24h accumulation

PRECIP_EST_ALL_SFC

mm

Estimated precipitation – all sources, 24h accumulation

PRECIP_REAL_SFC

mm

Precipitation – real amounts, 24h accumulation

PRECIP_EST_CDFSII_SFC

mm

Estimated precipitation – CDFSII method, 24h accumulation

EVAP_ACTUAL_SFC_24H_AVG

mm

Actual evapotranspiration, 24h accumulation

EVAP_POTENTIAL_SFC_24H_AVG

mm

Potential evapotranspiration, 24h accumulation

DSW_SFC_24H_AVG

W/m^2

Downwelling shortwave radiation at the surface, 24h average

DLW_SFC_24H_AVG

W/m^2

Downwelling longwave radiation at the surface, 24h average

SNOW_DEPTH_SFC

m

Snow depth

 

AMSU2HDFEOS

Purpose: Convert an AMSU data file in NESDIS HDFEOS format to a “pure” HDF-EOS format. This routine can handle AMSU-A and AMSU-B sensor data files. This routine automatically generates a file name based on the data time. All available multispectral data matching the input file specification is combined into one multichannel HDF-EOS file. When the output_file argument is present, the output file name is returned and points to the internal HDF-EOS data structure that has been created (but not written to disk; i.e., no hard I/O is performed when output_file is specified). If called with the output_file argument, the created HDF-EOS data structure remains after the call to this routine and it is the caller’s responsibility to deallocate the created HDF-EOS data structure. If called without the sat_number argument, a default value of “15” is used.

subroutine amsu2hdfeos (input_file, output_dir, output_file)

character (len = MAX_PATH), intent (IN) :: input_file             ! input file name

character (len = MAX_PATH), intent (IN) :: output_dir             ! output directory

character (len = MAX_PATH), intent (OUT), optional :: output_file ! output file name

 

DPEAS_SAT_NAME

NOAA

 

DPEAS_SENSOR_NAME

AMSUA

Swath: AMSUA

VARIABLE NAME

UNITS

DESCRIPTION

Latitude

degrees

Latitude (-90.0 to 90.0)

Longitude

degrees

Longitude (-180.0 to 180.0)

Time

TAI93

Time

Scan_Line

-

Scan line counter

Orbit_Mode

-

Orbit mode flag

Surface_Type

Class Category

Surface type flag

Solar_Zenith_Angle

degrees

Solar zenith angle

Zenith_Angle

degrees

Zenith angle

TB_Chan_01 thru TB_Chan_15

K

MW antenna temperature

TB_Chan_01_Calibration, etc.

-

MW antenna temperature calibration information

CLW

mm

Cloud liquid water

SIce

%

Sea ice coverage

TPW

mm

Total precipitable water

TSFC

K

Skin temperature

E23

-

MW emissivity at 23 GHz

E31

-

MW emissivity at 31 GHz

E50

-

MW emissivity at 50 GHz

 

 

 

DPEAS_SAT_NAME

NOAA

 

DPEAS_SENSOR_NAME

AMSUB

Swath: AMSUB

VARIABLE NAME

UNITS

DESCRIPTION

Latitude

degrees

Latitude (-90.0 to 90.0)

Longitude

degrees

Longitude (-180.0 to 180.0)

Time

TAI93

Time

Scan_Line

-

Scan line counter

Orbit_Mode

-

Orbit mode flag

Surface_Type

Class Category

Surface type flag

Solar_Zenith_Angle

degrees

Solar zenith angle

Zenith_Angle

degrees

Zenith angle

TB_Chan_01 thru TB_Chan_05

K

MW antenna temperature

TB_Chan_01_Calibration, etc.

-

MW antenna temperature calibration information

RR

mm/h

Rainfall rate

SnowD

%

Snow Coverage

IWP

mm

Ice water path

 

AVHRR2HDFEOS

Purpose: Convert an AVHRR GAC or LAC data file in McIDAS format to HDF-EOS. This routine automatically generates a file name based on the data time. All available multispectral data matching the input file specification is combined into one multichannel HDF-EOS file. When the output_file argument is present, the output file name is returned and points to the internal HDF-EOS data structure that has been created (but not written to disk; i.e., no hard I/O is performed when output_file is specified). If called with the output_file argument, the created HDF-EOS data structure remains after the call to this routine and it is the caller’s responsibility to deallocate the created HDF-EOS data structure.

subroutine avhrr2hdfeos (input_file, output_dir, output_file, min_lat, max_lat, min_lon, max_lon, min_time, max_time)

character (len = MAX_PATH), intent (IN) :: input_file             ! input file name

character (len = MAX_PATH), intent (IN) :: output_dir             ! output directory

character (len = MAX_PATH), intent (OUT), optional :: output_file ! output file name

real, intent (IN), optional :: min_lat                            ! minimum latitude

real, intent (IN), optional :: max_lat                            ! maximum latitude

real, intent (IN), optional :: min_lon                            ! minimum longitude

real, intent (IN), optional :: max_lon                            ! maximum longitude

character (len = 23), intent (IN), optional :: min_time           ! minimum time

character (len = 23), intent (IN), optional :: max_time           ! maximum time

 

DPEAS_SAT_NAME

NOAA

 

DPEAS_SENSOR_NAME

AVHRR

Swath: AVHRR

VARIABLE NAME

UNITS

DESCRIPTION

Latitude

degrees

Latitude (-90.0 to 90.0)

Longitude

degrees

Longitude (-180.0 to 180.0)

Time

TAI93

Time

Scan_Line

-

Scan line counter

SSP_Altitude

km

Satellite Subpoint Altitude

SSP_Latitude

degrees

Satellite Subpoint Latitude (-90.0 to 90.0)

SSP_Longitude

degrees

Satellite Subpoint Longitude (-180.0 to 180.0)

Zenith_Angle

degrees

Zenith angle

Line_Prefix

-

McIDAS line prefix

McArea

-

McIDAS area header

McCal

-

McIDAS calibration header

McTiroNav

-

McIDAS navigation header

COUNT_VIS_01

Count

Visible sensor counts

COUNT_VIS_01_Calibration

-

Visible calibration information

COUNT_NIR_02

Count

Near IR sensor counts

COUNT_NIR_02_Calibration

-

Near IR calibration information

TB_IR_03 thru TB_IR_05

K

IR brightness temperature

TB_IR_03_Calibration, etc.

-

IR brightness temperature calibration information

 

GOES2HDFEOS

Purpose: Convert a GOES data file in McIDAS format to HDF-EOS. This routine automatically generates a file name based on the data time. All available multispectral data matching the input file specification is combined into one multichannel HDF-EOS file. When the output_file argument is present, the output file name is returned and points to the internal HDF-EOS data structure that has been created (but not written to disk; i.e., no hard I/O is performed when output_file is specified). If called with the output_file argument, the created HDF-EOS data structure remains after the call to this routine and it is the caller’s responsibility to deallocate the created HDF-EOS data structure.

subroutine goes2hdfeos (input_file, output_dir, output_file, min_lat, max_lat, min_lon, max_lon, min_time, max_time)

character (len = MAX_PATH), intent (IN) :: input_file             ! input file name

character (len = MAX_PATH), intent (IN) :: output_dir             ! output directory

character (len = MAX_PATH), intent (OUT), optional :: output_file ! output file name

real, intent (IN), optional :: min_lat                            ! minimum latitude

real, intent (IN), optional :: max_lat                            ! maximum latitude

real, intent (IN), optional :: min_lon                            ! minimum longitude

real, intent (IN), optional :: max_lon                            ! maximum longitude

character (len = 23), intent (IN), optional :: min_time           ! minimum time

character (len = 23), intent (IN), optional :: max_time           ! maximum time

 

DPEAS_SAT_NAME

GOES

 

DPEAS_SENSOR_NAME

IMAGER

Swath: IMAGER

VARIABLE NAME

UNITS

DESCRIPTION

Latitude

degrees

Latitude (-90.0 to 90.0)

Longitude

degrees

Longitude (-180.0 to 180.0)

Scan_Line

-

Scan line counter

SSP_Altitude

km

Satellite Subpoint Altitude

SSP_Latitude

degrees

Satellite Subpoint Latitude (-90.0 to 90.0)

SSP_Longitude

degrees

Satellite Subpoint Longitude (-180.0 to 180.0)

Zenith_Angle

degrees

Zenith angle

COUNT_VIS

Count

Visible sensor counts

COUNT_VIS_Time

TAI93

Time

COUNT_VIS_Calibration

-

Visible calibration information

COUNT_VIS_Line_Prefix

-

McIDAS line prefix

COUNT_VIS_McArea

-

McIDAS area header

COUNT_VIS_McCal

-

McIDAS calibration header

COUNT_VIS_McCira

-

McIDAS CIRA header

COUNT_VIS_McDoc

-

McIDAS Document header

COUNT_VIS_McGVARNav

-

McIDAS navigation header

TB_IR_02 thru TB_IR_05

K

IR brightness temperature for channel “NN”

TB_IR_NN_Time

TAI93

Time

TB_IR_NN_Calibration

-

IR calibration information

TB_IR_NN_Line_Prefix

-

McIDAS line prefix

TB_IR_NN_McArea

-

McIDAS area header

TB_IR_NN_McCal

-

McIDAS calibration header

TB_IR_NN_McCira

-

McIDAS CIRA header

TB_IR_NN_McDoc

-

McIDAS Document header

TB_IR_NN_McGVARNav

-

McIDAS navigation header

 

OLS2HDFEOS

Purpose: Convert an OLS data file in NGDC OIS format to HDF-EOS. This routine automatically generates a file name based on the data time. Since an entire OLS orbit swath is read, considerable amounts of memory may be used, although when the output_file argument is not present, the data are automatically separated into more manageable 1000 line swath sectors. However, when the output_file argument is present, the output file name is returned and points to the internal HDF-EOS data structure that has been created (but not written to disk; i.e., no hard I/O is performed when output_file is specified). If called with the output_file argument, the created HDF-EOS data structure remains after the call to this routine and it is the caller’s responsibility to deallocate the created HDF-EOS data structure.

subroutine ols2hdfeos (input_file, output_dir, output_file, min_lat, max_lat, min_lon, max_lon, min_time, max_time)

character (len = MAX_PATH), intent (IN) :: input_file             ! input file name

character (len = MAX_PATH), intent (IN) :: output_dir             ! output directory

character (len = MAX_PATH), intent (OUT), optional :: output_file ! output file name

real, intent (IN), optional :: min_lat                            ! minimum latitude

real, intent (IN), optional :: max_lat                            ! maximum latitude

real, intent (IN), optional :: min_lon                            ! minimum longitude

real, intent (IN), optional :: max_lon                            ! maximum longitude

character (len = 23), intent (IN), optional :: min_time           ! minimum time

character (len = 23), intent (IN), optional :: max_time           ! maximum time

 

DPEAS_SAT_NAME

DMSP

 

DPEAS_SENSOR_NAME

OLS

Swath: OLS

VARIABLE NAME

UNITS

DESCRIPTION

Latitude

degrees

Latitude (-90.0 to 90.0)

Longitude

degrees

Longitude (-180.0 to 180.0)

Time

TAI93

Time

Scan_Line

-

Scan line counter

Scan_Direction

-

Scan direction counter

SSP_Altitude

km

Satellite subpoint Altitude

SSP_Latitude

degrees

Satellite subpoint Latitude (-90.0 to 90.0)

SSP_Longitude

degrees

Satellite subpoint Longitude (-180.0 to 180.0)

Zenith_Angle

degrees

Zenith angle

COUNT_VIS

Count

Visible sensor counts

COUNT_VIS_Calibration

-

Visible calibration information

TB_IR

K

IR brightness temperature

TB_IR_Calibration

-

IR calibration information

 

SSMI2HDFEOS

Purpose: Convert a SSM/I data file in CIRA/NVAP format or in the NESDIS HDF-EOS format to a “pure” HDF-EOS format. The NESDIS data also contain the operational NESDIS products. This routine automatically generates file names based on the data time. Since an entire day of data is read, considerable amounts of memory may be used, although when the output_file argument is not present, the data are automatically separated into smaller, more manageable individual orbital swaths. However, when the output_file argument is present, the output file name is returned and points to the internal HDF-EOS data structure that has been created (but not written to disk; i.e., no hard I/O is performed when output_file is specified). If called with the output_file argument, the created HDF-EOS data structure remains after the call to this routine and it is the caller’s responsibility to deallocate the created HDF-EOS data structure.

subroutine ssmi2hdfeos (input_file, output_dir, output_file, min_lat, max_lat, min_lon, max_lon, min_time, max_time)

character (len = MAX_PATH), intent (IN) :: input_file             ! input file name

character (len = MAX_PATH), intent (IN) :: output_dir             ! output directory

integer, intent (IN), optional :: sat_number                      ! satellite number (only used with NESDIS input data)

character (len = MAX_PATH), intent (OUT), optional :: output_file ! output file name

real, intent (IN), optional :: min_lat                            ! minimum latitude

real, intent (IN), optional :: max_lat                            ! maximum latitude

real, intent (IN), optional :: min_lon                            ! minimum longitude

real, intent (IN), optional :: max_lon                            ! maximum longitude

character (len = 23), intent (IN), optional :: min_time           ! minimum time

character (len = 23), intent (IN), optional :: max_time           ! maximum time

 

DPEAS_SAT_NAME

DMSP

CIRA/NVAP format

DPEAS_SENSOR_NAME

SSMI

Swath: SSMI

VARIABLE NAME

UNITS

DESCRIPTION

Latitude

degrees

Latitude (-90.0 to 90.0)

Longitude

degrees

Longitude (-180.0 to 180.0)

Time

TAI93

Time

Scan_Line

-

Scan line counter

Zenith_Angle

degrees

Zenith angle

TB_19V, 19H, 22V, 37V, 37H, 85V, 85H

K

MW brightness temperatures

TB_19V_Calibration, etc.

-

MW brightness temperature calibration information

 

 

 

DPEAS_SAT_NAME

DMSP

NESDIS HDF-EOS format

DPEAS_SENSOR_NAME

SSMI

Swath: SSMI

VARIABLE NAME

UNITS

DESCRIPTION

Latitude

degrees

Latitude (-90.0 to 90.0)

Longitude

degrees

Longitude (-180.0 to 180.0)

QC

-

Quality control flag

Orbit_Mode

-

Orbit mode

Surface_Type

Class Category

Surface type

CSType

Class Category

Calculated surface type

Time

TAI93

Time

Scan_Line

-

Scan line counter

Zenith_Angle

degrees

Zenith angle

TB_19V, 19H, 22V, 37V, 37H, 85V, 85H

K

MW brightness temperatures (note: 85 GHz data are spatially averaged)

TB_19V_Calibration, etc.

-

MW brightness temperature calibration information

CLW

mm

Cloud liquid water

RR

mm/h

Rainfall rate

OWS

m/s

Ocean wind speed

SMoist

%

Soil moisture

SIce

%

Sea ice concentration

TPW

mm

Total precipitable water

Stemp

K

Surface temperature

SnowD

mm

Snow depth

 

SSMIS22HDFEOS

Purpose: Convert a SSMIS data file in “raw” format to HDF-EOS. This routine automatically generates file names based on the data time. When the output_file argument is present, the output file name is returned and points to the internal HDF-EOS data structure that has been created (but not written to disk; i.e., no hard I/O is performed when output_file is specified). If called with the output_file argument, the created HDF-EOS data structure remains after the call to this routine and it is the caller’s responsibility to deallocate the created HDF-EOS data structure.

subroutine ssmis2hdfeos (input_file, output_dir, output_file, min_lat, max_lat, min_lon, max_lon, min_time, max_time)

character (len = MAX_PATH), intent (IN) :: input_file             ! input file name

character (len = MAX_PATH), intent (IN) :: output_dir             ! output directory

character (len = MAX_PATH), intent (OUT), optional :: output_file ! output file name

real, intent (IN), optional :: min_lat                            ! minimum latitude

real, intent (IN), optional :: max_lat                            ! maximum latitude

real, intent (IN), optional :: min_lon                            ! minimum longitude

real, intent (IN), optional :: max_lon                            ! maximum longitude

character (len = 23), intent (IN), optional :: min_time           ! minimum time

character (len = 23), intent (IN), optional :: max_time           ! maximum time

 

DPEAS_SAT_NAME

DMSP

 

DPEAS_SENSOR_NAME

SSMIS

Swath: SSMIS_IMG

VARIABLE NAME

UNITS

DESCRIPTION

Latitude

degrees

Latitude (-90.0 to 90.0)

Longitude

degrees

Longitude (-180.0 to 180.0)

Time

TAI93

Time

Scan_Line

-

Scan line counter

Scene

-

Scene

Surface_Tag

Class Category

Surface tag

Rain_Flag

Class Category

Rain flag

Ch8 thru Ch11, Ch17 thru Ch18

K

MW brightness temperatures

Ch8_Calibration, etc.

-

MW brightness temperature calibration information

 

 

 

DPEAS_SAT_NAME

DMSP

 

DPEAS_SENSOR_NAME

SSMIS

Swath: SSMIS_ENV

VARIABLE NAME

UNITS

DESCRIPTION

Latitude

degrees

Latitude (-90.0 to 90.0)

Longitude

degrees

Longitude (-180.0 to 180.0)

Time

TAI93

Time

Scan_Line

-

Scan line counter

Scene

-

Scene

Sea_Ice

?

Sea Ice

Surface_Tag

Class Category

Surface tag

Ch12 thru Ch16, Ch15_5x5 thru Ch18_5x5,
Ch17_5x4 thru Ch18_5x4

K

MW brightness temperatures

Ch12_Calibration, etc.

-

MW brightness temperature calibration information

Rain_Flag1, Rain_Flag2

-

Rain flags

EDR_Bit_Flags

-

EDR bit flags

 

 

 

DPEAS_SAT_NAME

DMSP

 

DPEAS_SENSOR_NAME

SSMIS

Swath: SSMIS_LAS

VARIABLE NAME

UNITS

DESCRIPTION

Latitude

degrees

Latitude (-90.0 to 90.0)

Longitude

degrees

Longitude (-180.0 to 180.0)

Time

TAI93

Time

Scan_Line

-

Scan line counter

Scene

-

Scene

Ht_1000mb

?

1000 mb height

Surface_Tag

Class Category

Surface tag

TQC

-

Temperature quality control flags

HQC

-

Humidity quality control flags

Terrain_Ht

?

Terrain height

Ch1_3x3 thru Ch11_3x3, Ch18_5x5, Ch24_5x5

K

MW brightness temperatures

Ch1_3x3_Calibration, etc.

-

MW brightness temperature calibration information

 

 

 

DPEAS_SAT_NAME

DMSP

 

DPEAS_SENSOR_NAME

SSMIS

Swath: SSMIS_UAS

VARIABLE NAME

UNITS

DESCRIPTION

Latitude

degrees

Latitude (-90.0 to 90.0)

Longitude

degrees

Longitude (-180.0 to 180.0)

Time

TAI93

Time

Scan_Line

-

Scan line counter

Scene

-

Scene

TQC

?

Temperature quality control flags

SQGFS

?

?

BDOTKSQ

?

?

Ch19_6x6 thru Ch24_6x6

K

MW brightness temperatures

Ch19_6x6_Calibration, etc.

-

MW brightness temperature calibration information

 

SSMT22HDFEOS

Purpose: Convert a SSM/T-2 data file in NESDIS Level 1B format to HDF-EOS. This routine automatically generates file names based on the data time. When the output_file argument is present, the output file name is returned and points to the internal HDF-EOS data structure that has been created (but not written to disk; i.e., no hard I/O is performed when output_file is specified). If called with the output_file argument, the created HDF-EOS data structure remains after the call to this routine and it is the caller’s responsibility to deallocate the created HDF-EOS data structure.

subroutine ssmt22hdfeos (input_file, output_dir, output_file, min_lat, max_lat, min_lon, max_lon, min_time, max_time)

character (len = MAX_PATH), intent (IN) :: input_file             ! input file name

character (len = MAX_PATH), intent (IN) :: output_dir             ! output directory

character (len = MAX_PATH), intent (OUT), optional :: output_file ! output file name

real, intent (IN), optional :: min_lat                            ! minimum latitude

real, intent (IN), optional :: max_lat                            ! maximum latitude

real, intent (IN), optional :: min_lon                            ! minimum longitude

real, intent (IN), optional :: max_lon                            ! maximum longitude

character (len = 23), intent (IN), optional :: min_time           ! minimum time

character (len = 23), intent (IN), optional :: max_time           ! maximum time

 

DPEAS_SAT_NAME

DMSP

 

DPEAS_SENSOR_NAME

SSMT2

Swath: SSMT2

VARIABLE NAME

UNITS

DESCRIPTION

Latitude

degrees

Latitude (-90.0 to 90.0)

Longitude

degrees

Longitude (-180.0 to 180.0)

Time

TAI93

Time

Scan_Line

-

Scan line counter

Zenith_Angle

degrees

Zenith angle

TB_183_1, 183_3, 183_7, 92, 150

K

MW brightness temperatures

TB_183_1_Calibration, etc.

-

MW brightness temperature calibration information

TB_183_1_Antenna_Pattern_Correction, etc.

mm

MW antenna pattern correction

 

TMI2HDFEOS

Purpose: Convert a TRMM TMI data file in HDF Level 1B format to HDF-EOS. This routine automatically generates file names based on the data time. When the output_file argument is present, the output file name is returned and points to the internal HDF-EOS data structure that has been created (but not written to disk; i.e., no hard I/O is performed when output_file is specified). If called with the output_file argument, the created HDF-EOS data structure remains after the call to this routine and it is the caller’s responsibility to deallocate the created HDF-EOS data structure.

subroutine tmi2hdfeos (input_file, output_dir, output_file, min_lat, max_lat, min_lon, max_lon, min_time, max_time)

character (len = MAX_PATH), intent (IN) :: input_file             ! input file name

character (len = MAX_PATH), intent (IN) :: output_dir             ! output directory

character (len = MAX_PATH), intent (OUT), optional :: output_file ! output file name

real, intent (IN), optional :: min_lat                            ! minimum latitude

real, intent (IN), optional :: max_lat                            ! maximum latitude

real, intent (IN), optional :: min_lon                            ! minimum longitude

real, intent (IN), optional :: max_lon                            ! maximum longitude

character (len = 23), intent (IN), optional :: min_time           ! minimum time

character (len = 23), intent (IN), optional :: max_time           ! maximum time

 

DPEAS_SAT_NAME

TRMM

 

DPEAS_SENSOR_NAME

TMI

Swath: TMI

VARIABLE NAME

UNITS

DESCRIPTION

Latitude

degrees

Latitude (-90.0 to 90.0)

Longitude

degrees

Longitude (-180.0 to 180.0)

Time

TAI93

Time

Scan_Line

-

Scan line counter

SSP_Altitude

km

Satellite subpoint Altitude

SSP_Latitude

degrees

Satellite subpoint Latitude (-90.0 to 90.0)

SSP_Longitude

degrees

Satellite subpoint Longitude (-180.0 to 180.0)

Zenith_Angle

degrees

Zenith angle

TB_10V, 10H, 19V, 19H, 21V, 37V, 37H, 85V, 85H

K

MW brightness temperatures

TB_10V_Calibration, etc.

-

MW brightness temperature calibration information

 

VIRS2HDFEOS

Purpose: Convert a TRMM VIRS data file in HDF Level 1B format to HDF-EOS. This routine automatically generates file names based on the data time. When the output_file argument is present, the output file name is returned and points to the internal HDF-EOS data structure that has been created (but not written to disk; i.e., no hard I/O is performed when output_file is specified). If called with the output_file argument, the created HDF-EOS data structure remains after the call to this routine and it is the caller’s responsibility to deallocate the created HDF-EOS data structure.

subroutine virs2hdfeos (input_file, output_dir, output_file, min_lat, max_lat, min_lon, max_lon, min_time, max_time)

character (len = MAX_PATH), intent (IN) :: input_file             ! input file name

character (len = MAX_PATH), intent (IN) :: output_dir             ! output directory

character (len = MAX_PATH), intent (OUT), optional :: output_file ! output file name

real, intent (IN), optional :: min_lat                            ! minimum latitude

real, intent (IN), optional :: max_lat                            ! maximum latitude

real, intent (IN), optional :: min_lon                            ! minimum longitude

real, intent (IN), optional :: max_lon                            ! maximum longitude

character (len = 23), intent (IN), optional :: min_time           ! minimum time

character (len = 23), intent (IN), optional :: max_time           ! maximum time

 

DPEAS_SAT_NAME

TRMM

 

DPEAS_SENSOR_NAME

VIRS

Swath: VIRS

VARIABLE NAME

UNITS

DESCRIPTION

Latitude

degrees

Latitude (-90.0 to 90.0)

Longitude

degrees

Longitude (-180.0 to 180.0)

Time

TAI93

Time

Scan_Line

-

Scan line counter

Zenith_Angle

degrees

Zenith angle

RAD_VIS_0.63

mW / (m^2 sr cm^-1)

VIS radiance

RAD_VIS_0.63_Calibration

-

VIS calibration information

TB_NIR_1.6, TB_NIR_3.75

K

Near IR brightness temperature

TB_NIR_1.6_Calibration, etc.

-

Near IR brightness temperature calibration information

TB_IR_10.8, TB_IR_12.0

K

IR brightness temperature

TB_IR_10.8_Calibration, etc.

-

IR brightness temperature calibration information

 

DPEAS Applications – Forsythe

DPEAS Applications - Jones

GOLDBERG

Purpose: Perform the AMSU-A antenna brightness temperature corrections, limb corrections, Goldberg atmospheric temperature profile retrieval, and retrieve the Grody CLW and TPW amounts.

subroutine goldberg (input_file, output_dir, output_file)

character (len = MAX_PATH), intent (IN) :: input_file                ! AMSUA HDFEOS input file name

character (len = MAX_PATH), intent (IN) :: output_dir                ! output directory

character (len = MAX_PATH), intent (OUT) :: output_file              ! output file name

 

DPEAS_SAT_NAME

NOAA

 

DPEAS_SENSOR_NAME

AMSUA

Swath: GOLDBERG

VARIABLE NAME

UNITS

DESCRIPTION

Latitude

degrees

Latitude (-90.0 to 90.0)

Longitude

degrees

Longitude (-180.0 to 180.0)

Surface_Type

Class Category

Surface type flag

TB_Chan_01 thru TB_Chan_15

K

MW brightness temperature

TMP_10_Pa thru TMP_100000_Pa

K

Atmospheric temperature profile

CLW

mm

Cloud liquid water

TPW

mm

Total precipitable water

 

MEM

Purpose: Create NOAA Microwave Emissivity Model (MEM) output. config = ‘AMSU2’ for the landem2 model, and config = ‘AMSU3’ for the landem3 model.

subroutine mem (config, output_dir, output_file, )

character (len = MAX_PATH), intent (IN) :: config                    ! emissivity band configuration option

character (len = MAX_PATH), intent (IN) :: output_dir                ! output directory

character (len = MAX_PATH), intent (OUT) :: output_file              ! output file name

character (len = MAX_PATH), intent (IN) :: agrmet_file               ! AGRMET HDFEOS input file name

character (len = MAX_PATH), intent (IN) :: amsua_file                ! AMSUA HDFEOS input file name

character (len = MAX_PATH), intent (IN) :: amsub_file                ! AMSUB HDFEOS input file name

 

DPEAS_SAT_NAME

NOAA

 

DPEAS_SENSOR_NAME

AMSUA

Grid: MEM

VARIABLE NAME

UNITS

DESCRIPTION

Time_AGRMET

TAI93

AGRMET Time

SM_000010

-

AGRMET Relative soil moisture (0-10 cm)

SM_010040

-

AGRMET Relative soil moisture (10-40 cm)

SM_040100

-

AGRMET Relative soil moisture (40-100 cm)

SM_100200

-

AGRMET Relative soil moisture (100-200 cm)

SM_VOL_TOTAL_000010

m^3/m^3

AGRMET Volumetric soil moisture (liquid and frozen) (0-10 cm)

SM_VOL_TOTAL_010040

m^3/m^3

AGRMET Volumetric soil moisture (liquid and frozen) (10-40 cm)

SM_VOL_TOTAL_040100

m^3/m^3

AGRMET Volumetric soil moisture (liquid and frozen) (40-100 cm)

SM_VOL_TOTAL_100200

m^3/m^3

AGRMET Volumetric soil moisture (liquid and frozen) (100-200 cm)

SM_VOL_LIQUID_000010

m^3/m^3

AGRMET Volumetric soil moisture (liquid) (0-10 cm)

SM_VOL_LIQUID_010040

m^3/m^3

AGRMET Volumetric soil moisture (liquid) (10-40 cm)

SM_VOL_LIQUID_040100

m^3/m^3

AGRMET Volumetric soil moisture (liquid) (40-100 cm)

SM_VOL_LIQUID_100200

m^3/m^3

AGRMET Volumetric soil moisture (liquid) (100-200 cm)

TSOIL_000010

K

AGRMET Soil temperature (0-10 cm)

TSOIL_010040

K

AGRMET Soil temperature (10-40 cm)

TSOIL_040100

K

AGRMET Soil temperature (40-100 cm)

TSOIL_100200

K

AGRMET Soil temperature (100-200 cm)

TMP_SFC

K

AGRMET Skin temperature

TOPO_SFC

m

AGRMET Model terrain height

VEG_GREENNESS_FRACTION_SFC

%

AGRMET Vegetation greenness fraction

SNOW_LWE_SFC

mm

AGRMET Snow liquid water equivalent

SNOW_DEPTH_SFC

m

AGRMET Snow depth

CANOPY_MOISTURE_CONTENT_SFC

m

AGRMET Canopy moisture content

DSW_SFC

W/m^2

AGRMET Downwelling shortwave radiation at the surface

DLW_SFC

W/m^2

AGRMET Downwelling longwave radiation at the surface

LANDSEA_MASK_SFC

-

AGRMET Land/sea mask

SOIL_TYPE_SFC

Class category

AGRMET Soil Type

VEG_TYPE_SFC

Class category

AGRMET Vegetation Type

PRECIP_SFC

mm

AGRMET Precipitation (3h accumulation)

STORM_SURFACE_RUNOFF_SFC

mm

AGRMET Storm surface runoff (3h accumulation)

BASEFLOW_GROUNDWATER_RUNOFF_000200

mm

AGRMET Baseflow groundwater runoff (3h accumulation)

DSW_SFC_3H_AVG

W/m^2

AGRMET Downwelling shortwave radiation at the surface, 3h average

DLW_SFC_3H_AVG

W/m^2

AGRMET Downwelling longwave radiation at the surface, 3h average

TMP_SFC_3H_AVG

K

AGRMET Skin temperature, 3h average

ALBEDO_SFC_3H_AVG

%

AGRMET Albedo, 3h average

LHF_SFC_3H_AVG

W/m^2

AGRMET Latent heat flux, 3h average

SHF_SFC_3H_AVG

W/m^2

AGRMET Sensible heat flux, 3h average

GHF_SFC_3H_AVG

W/m^2

AGRMET Ground heat flux, 3h average

Time

TAI93

Time (nominally the AMSU-A time)

Time_AMSUA

TAI93

AMSUA Time

Scan_Line

-

AMSUA Scan line counter

Orbit_Mode

-

AMSUA Orbit mode flag

Surface_Type

Class Category

AMSUA Surface type flag

Solar_Zenith_Angle

degrees

AMSUA Solar zenith angle

Zenith_Angle_AMSUA

degrees

AMSUA Zenith angle

TB_Chan_01 thru TB_Chan_15

K

AMSUA MW antenna temperature

TB_Chan_01_Calibration, etc.

-

AMSUA MW antenna temperature calibration information

CLW

mm

AMSUA Cloud liquid water

SIce

%

AMSUA Sea ice coverage

TPW

mm

AMSUA Total precipitable water

TSFC

K

AMSUA Skin temperature

E23

-

AMSUA MW emissivity at 23 GHz

E31

-

AMSUA MW emissivity at 31 GHz

E50

-

AMSUA MW emissivity at 50 GHz

Time_AMSUB

TAI93

AMSUB Time

Scan_Line

-

AMSUB Scan line counter

Orbit_Mode

-

AMSUB Orbit mode flag

Surface_Type

Class Category

AMSUB Surface type flag

Solar_Zenith_Angle

degrees

AMSUB Solar zenith angle

Zenith_Angle_AMSUB

degrees

AMSUB Zenith angle

TB_Chan_01 thru TB_Chan_05

K

AMSUB MW antenna temperature

TB_Chan_01_Calibration, etc.

-

AMSUB MW antenna temperature calibration information

RR

mm/h

AMSUB Rainfall rate

SnowD

%

AMSUB Snow Coverage

IWP

mm

AMSUB Ice water path

EMIS_23V_SFC thru EMIS_150V_SFC

[23, 31, 50, 89, and 150 GHz]

-

MEM Vertical Emissivities

EMIS_23H_SFC thru EMIS_150H_SFC

[23, 31, 50, 89, and 150 GHz]

-

MEM Horizontal Emissivities

EMIS_23R_SFC thru EMIS_150R_SFC

[23, 31, 50, 89, and 150 GHz]

-

MEM Rotated Emissivities

SNOW_TYPE_SFC

Class Category

MEM Snow Surface Type

 

NVAP2HDFEOS

Purpose: Read the NVAP water vapor data set (1988-1998 average mixing ratio at 7 pressure levels). The match argument is used to determine the month of data to process according to the file name nomenclature. For example, specification of a YYYYDDD* file name string allows the matching target month to be computed. Only monthly one-degree resolution results are available from the NVAP data set.

subroutine nvap2hdfeos (input_file, output_dir, output_file)

character (len = MAX_PATH), intent (IN) :: input_file                ! AMSUA HDFEOS input file name

character (len = MAX_PATH), intent (IN) :: output_dir                ! output directory

character (len = MAX_PATH), intent (OUT) :: output_file              ! output file name

character (len = MAX_PATH), intent (IN) :: match                     ! target to match

 

DPEAS_DATASET_NAME

NVAP

 

DPEAS_DATA_NAME

WATER_VAPOR

Grid: NVAP

VARIABLE NAME

UNITS

DESCRIPTION

Time

TAI93

Time

MIXR_100mb

g/Kg

Water vapor mixing Ratio at 100 mb

MIXR_200mb

g/Kg

Water vapor mixing Ratio at 200 mb

MIXR_300mb

g/Kg

Water vapor mixing Ratio at 300 mb

MIXR_500mb

g/Kg

Water vapor mixing Ratio at 500 mb

MIXR_700mb

g/Kg

Water vapor mixing Ratio at 700 mb

MIXR_850mb

g/Kg

Water vapor mixing Ratio at 850 mb

MIXR_1000mb

g/Kg

Water vapor mixing Ratio at 1000 mb

 

SIMULATE_AMSR

Purpose: Simulate the AMSR data set using TRMM TMI data as a seed. Optionally, a parameter file can be used to define the base and perturbation state for the simulation process. Please see the source code for additional information.

subroutine simulate_amsr (input_file, output_dir, output_file, parameter_file)

character (len = MAX_PATH), intent (IN) :: input_file                ! TMI HDFEOS input file name

character (len = MAX_PATH), intent (IN) :: output_dir                ! output directory

character (len = MAX_PATH), intent (OUT) :: output_file              ! output file name

character (len = MAX_PATH), intent (IN), optional :: parameter_file  ! parameter file name

SOIL_MOISTURE

Purpose: Retrieve the surface soil moisture and other associated surface variables. Optionally, a parameter file can be used to define the base state for the initalization of the retrieval process, and set various retrieval options. Please see the source code for additional information.

subroutine soil_moisture (input_file, output_dir, output_file, parameter_file)

character (len = MAX_PATH), intent (IN) :: input_file                ! AMSR HDFEOS input file name

character (len = MAX_PATH), intent (IN) :: output_dir                ! output directory

character (len = MAX_PATH), intent (OUT) :: output_file              ! output file name

character (len = MAX_PATH), intent (IN), optional :: parameter_file  ! parameter file name

DPEAS Applications – Kidder

AMSU2MCIDAS

Purpose: Convert an AMSU HDFEOS data file into individual McIDAS area files (one McIDAS file per AMSU channel and/or NESDIS product). The AMSU file should have previously been read into DPEAS using the AMSU2HDFEOS or the READ_HDFEOS routines. The tbus_dir argument specifies the location of the polar TBUS files that are needed during the McIDAS file creation process.

subroutine amsu2mcidas (input_file, output_dir, tbus_dir)

character (len = MAX_PATH), intent (IN) :: input_file          ! AMSU HDFEOS input file name

character (len = MAX_PATH), intent (IN) :: output_dir          ! output directory

character (len = MAX_PATH), intent (IN) :: tbus_dir            ! TBUS directory name

APPLY_TPW_CORRECTION

Purpose: Apply the total precipitable water corrections. Note: This routine reads the ASCII TPW correction statistics files created by the "create_tpw_correction" routine.

subroutine apply_tpw_correction (input_file, correction_dir, output_dir, output_file)

character (len = MAX_PATH), intent (IN) :: input_file          ! input file name specification

character (len = MAX_PATH), intent (IN) :: correction_dir      ! correction directory name

character (len = MAX_PATH), intent (IN) :: output_dir          ! output directory

character (len = MAX_PATH), intent (OUT) :: output_file        ! output file name

COPY_NESDIS_TBUS_FILE

Purpose: Copy a NESDIS TBUS file and rename to conform to CIRA naming conventions. This routine expects the new TBUS file to be called “<tbus_dir>tbus.new” and renames the file to “<tbus_dir>NESDIS\tbus.yyddd” where yyddd are determined from the file contents.

subroutine copy_nesdis_tbus_file (tbus_dir)

character (len = MAX_PATH), intent (IN) :: tbus_dir            ! output TBUS directory name

CREATE_TPW_CORRECTION

Purpose: Create the total precipitable water pentad correction statistics. Notes:This routine creates the ASCII TPW correction statistics files used by the "apply_tpw_correction" routine.

subroutine create_tpw_correction (input_file_spec, output_dir)

character (len = MAX_PATH), intent (IN) :: input_file_spec        ! input file name specification

character (len = MAX_PATH), intent (IN) :: output_dir             ! output directory