[Dart-dev] DART/branches Revision: 12738

dart at ucar.edu dart at ucar.edu
Thu Jul 12 09:24:47 MDT 2018


nancy at ucar.edu
2018-07-12 09:24:47 -0600 (Thu, 12 Jul 2018)
459
the "_rad_" files right now are identical copies of the
retrieval versions.  they are skeletons to investigate getting
cloud cleared radiances from the same L2 files that we're
getting retrievals from.  the change to the mkmf_convert_*
files is to add "-fno-underscoring" which is gfortran specific
and shouldn't be in these makefiles, but it does allow us
to build these programs on our macs with gfortran and the
hdfeos libraries downloaded from macports.




Added: DART/branches/radiance/observations/obs_converters/AIRS/airs_obs_rad_mod.f90
===================================================================
--- DART/branches/radiance/observations/obs_converters/AIRS/airs_obs_rad_mod.f90	                        (rev 0)
+++ DART/branches/radiance/observations/obs_converters/AIRS/airs_obs_rad_mod.f90	2018-07-12 15:24:47 UTC (rev 12738)
@@ -0,0 +1,564 @@
+! DART software - Copyright UCAR. This open source software is provided
+! by UCAR, "as is", without charge, subject to all terms of use at
+! http://www.image.ucar.edu/DAReS/DART/DART_download
+!
+! $Id$
+
+module airs_obs_mod
+
+use types_mod,        only : r4, r8, digits12, deg2rad, rad2deg
+
+use obs_def_mod,      only : obs_def_type, get_obs_def_time, read_obs_def,     &
+                             write_obs_def, destroy_obs_def,                   &
+                             interactive_obs_def, copy_obs_def,                &
+                             set_obs_def_time, set_obs_def_type_of_obs,               &
+                             set_obs_def_error_variance, set_obs_def_location, &
+                             get_obs_def_location
+
+use time_manager_mod, only : time_type, get_date, set_date,            &
+                             get_time, set_time, set_calendar_type,    &
+                             GREGORIAN, print_date, print_time,        &
+                             operator(+), operator(>=)
+
+use    utilities_mod, only : get_unit, open_file, close_file, file_exist, &
+                             register_module, error_handler,              &
+                             E_ERR, E_MSG, is_longitude_between
+
+use     location_mod, only : location_type, set_location, VERTISPRESSURE, &
+                             get_location
+
+use     obs_kind_mod, only : get_index_for_type_of_obs, &
+                             QTY_TEMPERATURE, QTY_SPECIFIC_HUMIDITY
+
+use obs_kind_mod,     only : AIRS_TEMPERATURE, AIRS_SPECIFIC_HUMIDITY
+
+use obs_sequence_mod, only : init_obs_sequence, init_obs, insert_obs_in_seq, &
+                             set_obs_values, set_qc, obs_sequence_type,      &
+                             obs_type, copy_obs, set_copy_meta_data,         &
+                             set_qc_meta_data, set_obs_def, get_first_obs,   &
+                             get_last_obs, get_obs_def
+
+use airs_JPL_mod   ! need ', only' list here
+
+implicit none
+private
+
+public :: real_obs_sequence, create_output_filename
+
+! version controlled file description for error handling, do not edit
+character(len=256), parameter :: source   = &
+   "$URL$"
+character(len=32 ), parameter :: revision = "$Revision$"
+character(len=128), parameter :: revdate  = "$Date$"
+
+logical, save :: module_initialized = .false.
+character(len=129) :: msgstring
+
+logical :: DEBUG = .false.
+
+real(r8), parameter :: mb_to_Pa = 100.0_r8  ! millibars to pascals
+
+! the sizes of the Temperature arrays are:
+!   (AIRS_RET_STDPRESSURELAY, AIRS_RET_GEOXTRACK, AIRS_RET_GEOTRACK)
+! the sizes of the MMR arrays are:
+!   (AIRS_RET_H2OPRESSURELAY, AIRS_RET_GEOXTRACK, AIRS_RET_GEOTRACK)
+! the rest of the arrays are:
+!   (AIRS_RET_GEOXTRACK, AIRS_RET_GEOTRACK)
+
+! MMR is converted into Q:  Q = MMR / (1 + MMR)
+real ::   Q    (AIRS_RET_H2OPRESSURELAY, AIRS_RET_GEOXTRACK, AIRS_RET_GEOTRACK)
+real ::   Q_err(AIRS_RET_H2OPRESSURELAY, AIRS_RET_GEOXTRACK, AIRS_RET_GEOTRACK)
+
+
+contains
+
+
+subroutine initialize_module
+!-------------------------------------------------
+call register_module(source, revision, revdate)
+
+call set_calendar_type(GREGORIAN)
+
+module_initialized = .true.
+
+end subroutine initialize_module
+
+
+
+function real_obs_sequence ( granule, lon1, lon2, lat1, lat2, &
+                             min_MMR_threshold, top_pressure_level, &
+                             row_thin, col_thin)
+!------------------------------------------------------------------------------
+!  extract the temperature and humidity observations from a granule
+!  and convert to DART observation format.  allow caller to specify
+!  a bounding box and only extract data within that region.
+
+type(airs_granule_type), intent(in) :: granule


More information about the Dart-dev mailing list