[Dart-dev] DART/branches Revision: 12750

dart at ucar.edu dart at ucar.edu
Mon Jul 16 10:44:28 MDT 2018


nancy at ucar.edu
2018-07-16 10:44:28 -0600 (Mon, 16 Jul 2018)
330
ok, these link.  haven't been run.  but the forward operator
has the code from the example_fwd.f90 file, partitioned between
a setup/init routine and per-obs-forward operator code.

i rebuilt the hdfeos libs myself (as opposed to using the
macports version) to work around trailing underscore problems.
the converter links now.





Modified: DART/branches/radiance/observations/forward_operators/obs_def_rttov_mod.f90
===================================================================
--- DART/branches/radiance/observations/forward_operators/obs_def_rttov_mod.f90	2018-07-13 17:59:49 UTC (rev 12749)
+++ DART/branches/radiance/observations/forward_operators/obs_def_rttov_mod.f90	2018-07-16 16:44:28 UTC (rev 12750)
@@ -74,12 +74,23 @@
 use obs_def_utilities_mod, only : track_status
 use ensemble_manager_mod,  only : ensemble_type
 
-!FIXME
-use rttov_interface_mod,   only : a, b, c
+use rttov_interface_mod,   only : dart_rttov_setup, &
+                                  dart_rttov_do_forward_model, &
+                                  dart_rttov_takedown   ! unused at present?
 
 implicit none
 private
 
+!FIXME: the converters only need the metadata routines.
+! filter needs them all.  but with a complicated forward
+! operator, the convert now needs to be built with the
+! entire rttov library even though it will never call it.
+! how can we exclude the get_expected code from the
+! converter?  preprocessor options?  split this file
+! into two separate ones?  forward operator vs obs metadata?  
+! then the converters just use the metadata and filter
+! uses both...  or something.
+
 public ::            set_rttov_metadata, &
                      get_rttov_metadata, &
                     read_rttov_metadata, &
@@ -108,9 +119,9 @@
 type obs_metadata
    private
    real(r8)            :: sat_az     ! azimuth of satellite position
-   real(r8)            :: sat_ze     ! azimuth of satellite position
-   real(r8)            :: sun_az     ! zenith of solar position
-   real(r8)            :: sun_ze     ! zenith of solar position
+   real(r8)            :: sat_ze     ! zenith of satellite position
+   real(r8)            :: sun_az     ! azimuth of solar position
+   real(r8)            :: sun_ze     ! zenith of solar position 
    integer             :: platform   ! see rttov user guide, table 2
    integer             :: sat_id     ! see rttov user guide, table 2
    integer             :: sensor     ! see rttov user guide, table 3

Modified: DART/branches/radiance/observations/forward_operators/rttov_interface_mod.f90
===================================================================
--- DART/branches/radiance/observations/forward_operators/rttov_interface_mod.f90	2018-07-13 17:59:49 UTC (rev 12749)
+++ DART/branches/radiance/observations/forward_operators/rttov_interface_mod.f90	2018-07-16 16:44:28 UTC (rev 12750)
@@ -49,6 +49,8 @@
 !    Copyright 2017, EUMETSAT, All Rights Reserved.
 !
 
+  use types_mod, only : r8
+
   ! rttov_const contains useful RTTOV constants
   USE rttov_const, ONLY :     &
          errorstatus_success, &
@@ -87,6 +89,11 @@
   INTEGER(KIND=jpim), PARAMETER :: iup   = 20   ! unit for input profile file
   INTEGER(KIND=jpim), PARAMETER :: ioout = 0    ! stdout for now
 
+!FIXME: this is in module global storage for now
+! should be what?  passed in and out?  allocated in
+! the setup and returned?  larger single structure
+! to collect these together in a single (opaque) type?
+
   ! RTTOV variables/structures
   !====================
   TYPE(rttov_options)              :: opts                     ! Options structure
@@ -103,7 +110,7 @@
   INTEGER(KIND=jpim)               :: errorstatus              ! Return error status of RTTOV subroutine calls
 
   INTEGER(KIND=jpim) :: alloc_status
-  CHARACTER(LEN=11)  :: NameOfRoutine = 'example_fwd'
+  CHARACTER(LEN=*), parameter  :: NameOfRoutine = 'rttov_interfaces'   !FIXME unused
 
   ! variables for input
   !====================
@@ -140,11 +147,18 @@
   ! To take advantage of multi-threaded execution you must have compiled
   ! RTTOV with openmp enabled. See the user guide and the compiler flags.
 
-  errorstatus = 0_jpim
+public :: dart_rttov_setup, &
+          dart_rttov_do_forward_model, &
+          dart_rttov_takedown
 
+
+contains
+
   !=====================================================
   !========== Interactive inputs == start ==============
 
+!--------------------------------------------------------------------------
+!
 !FIXME the channels are in the obs metadata, and nlevels are
 ! model (and model configuration) dependent.  it seems most
 ! efficient to list all expected channels and the number
@@ -152,6 +166,7 @@
 ! set up once at init time, rather than on demand.  this decision
 ! can be changed once we get this working.


More information about the Dart-dev mailing list