[Dart-dev] DART/branches Revision: 12378

dart at ucar.edu dart at ucar.edu
Thu Jan 25 11:12:40 MST 2018


nancy at ucar.edu
2018-01-25 11:12:39 -0700 (Thu, 25 Jan 2018)
161
warning - lots of debug statements.  looks like we can't
do the conversion between geopotential and geometric heights
correctly - overflows to negative values.




Modified: DART/branches/recam/models/cam-fv/model_mod.f90
===================================================================
--- DART/branches/recam/models/cam-fv/model_mod.f90	2018-01-24 23:50:07 UTC (rev 12377)
+++ DART/branches/recam/models/cam-fv/model_mod.f90	2018-01-25 18:12:39 UTC (rev 12378)
@@ -777,7 +777,7 @@
 call get_quad_vals(state_handle, ens_size, varid, obs_qty, four_lons, four_lats, &
                    lon_lat_vert, which_vert, quad_vals, status_array)
 
-print*, 'STATUS GET QUADS', status_array
+!print*, 'STATUS GET QUADS', status_array
 
 !>@todo FIXME : Here we are failing if any ensemble member fails. Instead
 !>              we should be using track status...
@@ -790,7 +790,7 @@
 call quad_lon_lat_evaluate(interp_handle, lon_fract, lat_fract, ens_size, &
                            quad_vals, interp_vals, status_array)
 
-print*, 'STATUS MI EVAL', status_array(1)
+!print*, 'STATUS MI EVAL', status_array(1)
 
 ! print*, 'lon_ind_below ', four_lons(1)
 ! print*, 'lon_ind_above ', four_lons(2)
@@ -850,7 +850,7 @@
 
 call quad_lon_lat_locate(interp_handle, lon_lat_vert(1), lon_lat_vert(2), &
                          four_lons, four_lats, lon_fract, lat_fract, istatus(1))
-print*, 'STATUS ARRAY IV', istatus(1)
+!print*, 'STATUS ARRAY IV', istatus(1)
 if (istatus(1) /= 0) then
    istatus(:) = 3  ! cannot locate enclosing horizontal quad
    return
@@ -858,12 +858,12 @@
 
 call get_quad_vals(state_handle, ens_size, varid, obs_qty, four_lons, four_lats, &
                    lon_lat_vert, which_vert, quad_vals, istatus)
-print*, 'ISTATUS VALS', istatus
+!print*, 'ISTATUS VALS', istatus
 if (any(istatus /= 0)) return
 
 call quad_lon_lat_evaluate(interp_handle, lon_fract, lat_fract, ens_size, &
                            quad_vals, interp_vals, istatus)
-print*, 'ISTATUS EVAL', istatus
+!print*, 'ISTATUS EVAL', istatus
 if (any(istatus /= 0)) then
    istatus(:) = 8   ! cannot evaluate in the quad
    return
@@ -885,7 +885,7 @@
 ! assume ok to begin with
 my_status = 0
 
-print*, 'which_vert, vert_value', which_vert, vert_value
+!print*, 'which_vert, vert_value', which_vert, vert_value
 
 ! obs with a vertical type of pressure:
 !  lower pressures are higher; watch the less than/greater than tests
@@ -1350,16 +1350,23 @@
                              height_array, my_status)
       if (any(my_status /= 0)) return   !>@todo FIXME let successful members continue?
 
+      if (debug_level > 100) then
+         do k = 1,nlevels
+            print*, 'ISHEIGHT: ', k, height_array(k,1)
+         enddo
+      endif
+
       do imember=1, ens_size
          call height_to_level(nlevels, height_array(:, imember), vert_val, &
                               bot_levs(imember), top_levs(imember), vert_fracts(imember), &
                               my_status(imember))
       enddo
+      if (any(my_status /= 0)) return   !>@todo FIXME let successful members continue?
 
       if (debug_level > 100) then
          do k = 1,ens_size
-            print*, 'ISHEIGHT bot_levs(k), top_levs(k), vert_fracts(k)', &
-                     k, bot_levs(k), top_levs(k), vert_fracts(k), height_array(k,1)
+            print*, 'ISHEIGHT ens#, bot_levs(#), top_levs(#), vert_fracts(#), top/bot height(#)', &
+                     k, bot_levs(k), top_levs(k), vert_fracts(k), height_array(1,k), height_array(nlevels, k)
          enddo
       endif
       
@@ -1438,7 +1445,7 @@
 call get_quad_values(1, lon_index, lat_index, QTY_SURFACE_ELEVATION, qty, surface_elevation)
 
 ! DEBUG
-!print*, 'lon lat surf elev ', lon_index, lat_index, surface_elevation
+print*, 'lon lat surf elev ', lon_index, lat_index, surface_elevation
 
 call compute_virtual_temperature(ens_handle, ens_size, lon_index, lat_index, nlevels, qty, tv, status1)
 
@@ -1462,11 +1469,15 @@
 ! compute the height columns for each ensemble member
 do imember = 1, ens_size
    call build_heights(nlevels, surface_pressure(imember), surface_elevation(1), &
-                      tv(:, imember), height_array(:, imember), mbar=mbar)
+                      tv(:, imember), height_array(:, imember), mbar=mbar(:, imember))
 enddo
 
-do k = 1, nlevels
-   print*, 'height(level)', k, height_array(k, 1)
+


More information about the Dart-dev mailing list