<p><b>laura@ucar.edu</b> 2013-03-07 16:46:16 -0700 (Thu, 07 Mar 2013)</p><p>Corrected the extrapolation of the meteorological data when the height of the top level of the input meteorological data is less than the MPAS model top, and extrapolation to the MPAS model top is needed. In this case, we use the top 2 levels of the input meteorological data to interpolate to the MPAS top layer. When the height of the top level of the input meteorological data is greater than the MPAS model top, interpolation to the MPAS top layer remains the same as in the previous revision.<br>
</p><hr noshade><pre><font color="gray">Modified: branches/atmos_physics/src/core_init_nhyd_atmos/mpas_init_atm_test_cases.F
===================================================================
--- branches/atmos_physics/src/core_init_nhyd_atmos/mpas_init_atm_test_cases.F        2013-03-07 23:30:26 UTC (rev 2570)
+++ branches/atmos_physics/src/core_init_nhyd_atmos/mpas_init_atm_test_cases.F        2013-03-07 23:46:16 UTC (rev 2571)
@@ -3452,23 +3452,6 @@
       where (fg % xice % array &gt;= 0.5) fg % seaice % array = 1.0
 
 
-      !
-      ! For now, hard-wire soil layer depths and thicknesses
-      !
-
-      !LDF begin:
-      !fg % dzs % array(1,:) = 0.10
-      !fg % dzs % array(2,:) = 0.30
-      !fg % dzs % array(3,:) = 0.60
-      !fg % dzs % array(4,:) = 1.00
-
-      !fg % dz % array(1,:) = 0.05
-      !fg % dz % array(2,:) = 0.25
-      !fg % dz % array(3,:) = 0.70
-      !fg % dz % array(4,:) = 1.50
-      !LDF end.
-
-
       !  
       ! Compute normal wind component and store in fg%u
       !  
@@ -3498,7 +3481,9 @@
          call mpas_quicksort(config_nfglevels, sorted_arr)
          do k=1,grid%nVertLevels
             target_z = 0.5 * (grid % zgrid % array(k,iCell) + grid % zgrid % array(k+1,iCell))
-            state % theta_m % array(k,iCell) = vertical_interp(target_z, config_nfglevels, sorted_arr, order=1, extrap=1)
+!           state % theta_m % array(k,iCell) = vertical_interp(target_z, config_nfglevels, sorted_arr, order=1, extrap=1)
+            state % theta_m % array(k,iCell) = vertical_interp(target_z, config_nfglevels-1, &amp;
+                                      sorted_arr(:,1:config_nfglevels-1), order=1, extrap=1)
          end do
 
 
@@ -3513,7 +3498,9 @@
          call mpas_quicksort(config_nfglevels, sorted_arr)
          do k=1,grid%nVertLevels
             target_z = 0.5 * (grid % zgrid % array(k,iCell) + grid % zgrid % array(k+1,iCell))
-            state % scalars % array(state % index_qv,k,iCell) = vertical_interp(target_z, config_nfglevels, sorted_arr, order=1, extrap=0)
+!           state % scalars % array(state % index_qv,k,iCell) = vertical_interp(target_z, config_nfglevels, sorted_arr, order=1, extrap=0)
+            state % scalars % array(state % index_qv,k,iCell) = vertical_interp(target_z, config_nfglevels-1, &amp;
+                                                       sorted_arr(:,1:config_nfglevels-1), order=1, extrap=1)
             diag % rh % array(k,iCell) = state % scalars % array(state % index_qv,k,iCell)
          end do
 
@@ -3529,7 +3516,9 @@
          call mpas_quicksort(config_nfglevels, sorted_arr)
          do k=1,grid%nVertLevels
             target_z = 0.5 * (grid % zgrid % array(k,iCell) + grid % zgrid % array(k+1,iCell))
-            fg % gfs_z % array(k,iCell) = vertical_interp(target_z, config_nfglevels, sorted_arr, order=1, extrap=1)
+!           fg % gfs_z % array(k,iCell) = vertical_interp(target_z, config_nfglevels, sorted_arr, order=1, extrap=1)
+            fg % gfs_z % array(k,iCell) = vertical_interp(target_z, config_nfglevels-1, &amp;
+                                 sorted_arr(:,1:config_nfglevels-1), order=1, extrap=1)
          end do
 
 
@@ -3547,7 +3536,9 @@
          call mpas_quicksort(config_nfglevels, sorted_arr)
          do k=1,grid%nVertLevels
             target_z = 0.5 * (grid % zgrid % array(k,iCell) + grid % zgrid % array(k+1,iCell))
-            diag % pressure % array(k,iCell) = exp(vertical_interp(target_z, config_nfglevels, sorted_arr, order=1, extrap=1))
+!           diag % pressure % array(k,iCell) = exp(vertical_interp(target_z, config_nfglevels, sorted_arr, order=1, extrap=1))
+            diag % pressure % array(k,iCell) = exp(vertical_interp(target_z, config_nfglevels-1, &amp;
+                                         sorted_arr(:,1:config_nfglevels-1), order=1, extrap=1))
          end do
 
 
@@ -3584,7 +3575,9 @@
          call mpas_quicksort(config_nfglevels, sorted_arr)
          do k=1,grid%nVertLevels
             target_z = 0.25 * (grid % zgrid % array(k,cellsOnEdge(1,iEdge)) + grid % zgrid % array(k+1,cellsOnEdge(1,iEdge)) + grid % zgrid % array(k,cellsOnEdge(2,iEdge)) + grid % zgrid % array(k+1,cellsOnEdge(2,iEdge)))
-            state % u % array(k,iEdge) = vertical_interp(target_z, config_nfglevels, sorted_arr, order=1, extrap=0)
+!           state % u % array(k,iEdge) = vertical_interp(target_z, config_nfglevels, sorted_arr, order=1, extrap=0)
+            state % u % array(k,iEdge) = vertical_interp(target_z, config_nfglevels-1, &amp; 
+                                sorted_arr(:,1:config_nfglevels-1), order=1, extrap=1)
          end do
 
       end do
@@ -5456,7 +5449,7 @@
       if (present(extrap)) then
          extrap_type = extrap
       else
-         interp_order = 1
+         extrap_type = 1
       end if
 
       if (present(surface_val)) then

</font>
</pre>