[Dart-dev] [4451] DART/trunk: Introduces a single new obs_kind for NCOMMAS.
nancy at ucar.edu
nancy at ucar.edu
Tue Aug 3 13:49:34 MDT 2010
Revision: 4451
Author: thoar
Date: 2010-08-03 13:49:34 -0600 (Tue, 03 Aug 2010)
Log Message:
-----------
Introduces a single new obs_kind for NCOMMAS.
Modified Paths:
--------------
DART/trunk/models/NCOMMAS/model_mod.f90
DART/trunk/obs_kind/DEFAULT_obs_kind_mod.F90
-------------- next part --------------
Modified: DART/trunk/models/NCOMMAS/model_mod.f90
===================================================================
--- DART/trunk/models/NCOMMAS/model_mod.f90 2010-08-03 15:53:48 UTC (rev 4450)
+++ DART/trunk/models/NCOMMAS/model_mod.f90 2010-08-03 19:49:34 UTC (rev 4451)
@@ -37,19 +37,19 @@
open_file, file_exist, find_textfile_dims, &
file_to_text
-use obs_kind_mod, only : KIND_U_WIND_COMPONENT, & ! index 1
- KIND_V_WIND_COMPONENT, & ! index 2
- KIND_VERTICAL_VELOCITY, & ! index 3
- KIND_POTENTIAL_TEMPERATURE, & ! index 4
- KIND_RADAR_REFLECTIVITY, & ! index 5
- KIND_VERTICAL_VORTICITY, & ! index 6
- KIND_PERT_EXNER, & ! index 7
- KIND_VAPOR_MIXING_RATIO, & ! index 8
- KIND_CLOUD_MIXING_RATIO, & ! index 9
- KIND_RAIN_MIXING_RATIO, & ! index 10
- KIND_ICE_MIXING_RATIO, & ! index 11
- KIND_SNOW_MIXING_RATIO, & ! index 12
- KIND_GRAUPEL_MIXING_RATIO ! index 13
+use obs_kind_mod, only : KIND_U_WIND_COMPONENT, & ! index 1
+ KIND_V_WIND_COMPONENT, & ! index 2
+ KIND_VERTICAL_VELOCITY, & ! index 3
+ KIND_POTENTIAL_TEMPERATURE, & ! index 4
+ KIND_RADAR_REFLECTIVITY, & ! index 5
+ KIND_VERTICAL_VORTICITY, & ! index 6
+ KIND_EXNER_FUNCTION, & ! index 7
+ KIND_VAPOR_MIXING_RATIO, & ! index 8
+ KIND_CLOUDWATER_MIXING_RATIO, & ! index 9
+ KIND_RAINWATER_MIXING_RATIO, & ! index 10
+ KIND_ICE_MIXING_RATIO, & ! index 11
+ KIND_SNOW_MIXING_RATIO, & ! index 12
+ KIND_GRAUPEL_MIXING_RATIO ! index 13
use mpi_utilities_mod, only: my_task_id
@@ -125,7 +125,7 @@
! scalar PSFC long_name = "SURFACE PRESSURE"
! scalar TSFC long_name = "SURFACE TEMPERATURE AT GROUND"
! scalar QSFC long_name = "SURFACE MIXING RATIO AT GROUND"
-! U long_name = "X-WIND COMPONENT" float U(TIME, ZC, YC, XE)
+! U long_name = "X-WIND COMPONENT" float U(TIME, ZC, YC, XE)
! V long_name = "Y-WIND COMPONENT" float V(TIME, ZC, YE, XC)
! W long_name = "Z-WIND COMPONENT" float W(TIME, ZE, YC, XC)
! TH long_name = "POTENTIAL TEMPERATURE" float TH(TIME, ZC, YC, XC)
@@ -189,29 +189,24 @@
! locations of cell centers (C) and edges (E) for each axis.
real(r8), allocatable :: ZC(:), ZE(:)
-! These arrays store the longitude and latitude of the lower left corner of
-! each of the dipole u quadrilaterals and t quadrilaterals.
-real(r8), allocatable :: ULAT(:,:), ULON(:,:)
-real(r8), allocatable :: VLAT(:,:), VLON(:,:)
-real(r8), allocatable :: WLAT(:,:), WLON(:,:)
+! These arrays store the longitude and latitude of the lower left corner
+real(r8), allocatable :: ULAT(:,:), ULON(:,:) ! XE,YC
+real(r8), allocatable :: VLAT(:,:), VLON(:,:) ! XC,YE
+real(r8), allocatable :: WLAT(:,:), WLON(:,:) ! XC,YC
-real(r8) :: endTime
-real(r8) :: ocean_dynamics_timestep = 900.0_r4
-integer :: timestepcount = 0
-type(time_type) :: model_time, model_timestep
+integer :: model_size ! the state vector length
+type(time_type) :: model_time ! valid time of the model state
+type(time_type) :: model_timestep ! smallest time to adv model
+real(r8), allocatable :: ens_mean(:) ! may be needed for forward ops
-integer :: model_size ! the state vector length
-
-real(r8), allocatable :: ens_mean(:)
-
-
INTERFACE vector_to_prog_var
MODULE PROCEDURE vector_to_2d_prog_var
MODULE PROCEDURE vector_to_3d_prog_var
END INTERFACE
-
!------------------------------------------------
+! These bits are left over from the POP dipole grid.
+!------------------------------------------------
! The regular grid used for dipole interpolation divides the sphere into
! a set of regularly spaced lon-lat boxes. The number of boxes in
@@ -255,15 +250,19 @@
contains
+
+
!==================================================================
! All the REQUIRED interfaces come first - just by convention.
!==================================================================
+
+
function get_model_size()
!------------------------------------------------------------------
-!
-! Returns the size of the model as an integer. Required for all
-! applications.
+! Done - TJH.
+! Returns the size of the model as an integer.
+! Required for all applications.
integer :: get_model_size
@@ -277,7 +276,7 @@
subroutine adv_1step(x, time)
!------------------------------------------------------------------
-!
+! Done - TJH.
! Does a single timestep advance of the model. The input value of
! the vector x is the starting condition and x is updated to reflect
! the changed state after a timestep. The time argument is intent
@@ -318,7 +317,7 @@
type(location_type), intent(out) :: location
integer, intent(out), optional :: var_type
-real(r8) :: lat, lon, height
+real(r8):: lat, lon, height
integer :: lon_index, lat_index, height_index, local_var
call get_state_indices(index_in, lat_index, lon_index, height_index, local_var)
@@ -1957,13 +1956,13 @@
base_offset = start_index(5)
else if(obs_type == KIND_VERTICAL_VORTICITY) then
base_offset = start_index(6)
-else if(obs_type == KIND_PERT_EXNER) then
+else if(obs_type == KIND_EXNER_FUNCTION) then
base_offset = start_index(7)
else if(obs_type == KIND_VAPOR_MIXING_RATIO) then
base_offset = start_index(8)
-else if(obs_type == KIND_CLOUD_MIXING_RATIO) then
+else if(obs_type == KIND_CLOUDWATER_MIXING_RATIO) then
base_offset = start_index(9)
-else if(obs_type == KIND_RAIN_MIXING_RATIO) then
+else if(obs_type == KIND_RAINWATER_MIXING_RATIO) then
base_offset = start_index(10)
else if(obs_type == KIND_ICE_MIXING_RATIO) then
base_offset = start_index(11)
@@ -2688,16 +2687,16 @@
var_type = KIND_VERTICAL_VORTICITY ! index 6
startind = start_index(V_index)
else if (index_in < start_index(V_index+1)) then
- var_type = KIND_PERT_EXNER ! index 7
+ var_type = KIND_EXNER_FUNCTION ! index 7
startind = start_index(V_index)
else if (index_in < start_index(V_index+1)) then
var_type = KIND_VAPOR_MIXING_RATIO ! index 8
startind = start_index(V_index)
else if (index_in < start_index(V_index+1)) then
- var_type = KIND_CLOUD_MIXING_RATIO ! index 9
+ var_type = KIND_CLOUDWATER_MIXING_RATIO ! index 9
startind = start_index(V_index)
else if (index_in < start_index(V_index+1)) then
- var_type = KIND_RAIN_MIXING_RATIO ! index 10
+ var_type = KIND_RAINWATER_MIXING_RATIO ! index 10
startind = start_index(V_index)
else if (index_in < start_index(V_index+1)) then
var_type = KIND_ICE_MIXING_RATIO ! index 11
Modified: DART/trunk/obs_kind/DEFAULT_obs_kind_mod.F90
===================================================================
--- DART/trunk/obs_kind/DEFAULT_obs_kind_mod.F90 2010-08-03 15:53:48 UTC (rev 4450)
+++ DART/trunk/obs_kind/DEFAULT_obs_kind_mod.F90 2010-08-03 19:49:34 UTC (rev 4451)
@@ -162,6 +162,10 @@
KIND_SOIL_TEMPERATURE = 74, & ! missing from WRF model_mod (?)
KIND_SOIL_LIQUID_WATER = 75 ! missing from WRF model_mod (?)
+! kinds for NCOMMAS (Lou W., Ted M.)
+integer, parameter, public :: &
+ KIND_VERTICAL_VORTICITY = 76
+
! kinds for vortex tracking (WRF - yongsheng)
integer, parameter, public :: &
KIND_VORTEX_LON = 81, &
@@ -347,6 +351,7 @@
obs_kind_names(43) = obs_kind_type(KIND_1D_PARAMETER, 'KIND_1D_PARAMETER')
obs_kind_names(44) = obs_kind_type(KIND_2D_PARAMETER, 'KIND_2D_PARAMETER')
obs_kind_names(45) = obs_kind_type(KIND_3D_PARAMETER, 'KIND_3D_PARAMETER')
+
obs_kind_names(50) = obs_kind_type(KIND_SALINITY, 'KIND_SALINITY')
obs_kind_names(51) = obs_kind_type(KIND_U_CURRENT_COMPONENT, 'KIND_U_CURRENT_COMPONENT')
obs_kind_names(52) = obs_kind_type(KIND_V_CURRENT_COMPONENT, 'KIND_V_CURRENT_COMPONENT')
@@ -354,15 +359,19 @@
obs_kind_names(54) = obs_kind_type(KIND_DRY_LAND, 'KIND_DRY_LAND')
obs_kind_names(55) = obs_kind_type(KIND_SEA_SURFACE_PRESSURE, 'KIND_SEA_SURFACE_PRESSURE')
obs_kind_names(56) = obs_kind_type(KIND_W_CURRENT_COMPONENT, 'KIND_W_CURRENT_COMPONENT')
+
obs_kind_names(60) = obs_kind_type(KIND_INFRARED_RADIANCE, 'KIND_INFRARED_RADIANCE')
obs_kind_names(61) = obs_kind_type(KIND_INFRARED_BRIGHT_TEMP, 'KIND_INFRARED_BRIGHT_TEMP')
obs_kind_names(62) = obs_kind_type(KIND_LANDMASK, 'KIND_LANDMASK')
+
obs_kind_names(70) = obs_kind_type(KIND_SKIN_TEMPERATURE, 'KIND_SKIN_TEMPERATURE')
obs_kind_names(71) = obs_kind_type(KIND_NADIR_RADIANCE, 'KIND_NADIR_RADIANCE')
obs_kind_names(72) = obs_kind_type(KIND_TRACER_1_MIXING_RATIO, 'KIND_TRACER_1_MIXING_RATIO')
obs_kind_names(73) = obs_kind_type(KIND_TRACER_2_MIXING_RATIO, 'KIND_TRACER_2_MIXING_RATIO')
obs_kind_names(74) = obs_kind_type(KIND_SOIL_TEMPERATURE, 'KIND_SOIL_TEMPERATURE')
obs_kind_names(75) = obs_kind_type(KIND_SOIL_LIQUID_WATER, 'KIND_SOIL_LIQUID_WATER')
+obs_kind_names(76) = obs_kind_type(KIND_VERTICAL_VORTICITY, 'KIND_VERTICAL_VORTICITY')
+
obs_kind_names(81) = obs_kind_type(KIND_VORTEX_LON, 'KIND_VORTEX_LON')
obs_kind_names(82) = obs_kind_type(KIND_VORTEX_LAT, 'KIND_VORTEX_LAT')
obs_kind_names(83) = obs_kind_type(KIND_VORTEX_PMIN, 'KIND_VORTEX_PMIN')
More information about the Dart-dev
mailing list