[Dart-dev] [3870] DART/trunk/models/wrf/model_mod.f90: Use the soil stagger size when writing out any variables on the
nancy at ucar.edu
nancy at ucar.edu
Mon May 11 16:28:58 MDT 2009
An HTML attachment was scrubbed...
URL: http://mailman.ucar.edu/pipermail/dart-dev/attachments/20090511/8d6b754f/attachment.html
-------------- next part --------------
Modified: DART/trunk/models/wrf/model_mod.f90
===================================================================
--- DART/trunk/models/wrf/model_mod.f90 2009-05-08 21:15:22 UTC (rev 3869)
+++ DART/trunk/models/wrf/model_mod.f90 2009-05-11 22:28:58 UTC (rev 3870)
@@ -174,6 +174,7 @@
!JPH -- single column model flag
logical :: scm = .false. ! using the single column model
+! JPH note that soil_data and h_diab are never used and can be removed.
namelist /model_nml/ output_state_vector, num_moist_vars, &
num_domains, calendar_type, surf_obs, soil_data, h_diab, &
default_state_variables, wrf_state_variables, &
@@ -228,7 +229,6 @@
integer :: n_moist
integer :: domain_size
logical :: surf_obs
- logical :: soil_data
integer :: vert_coord
real(r8), dimension(:), pointer :: znu, dn, dnw, zs
real(r8), dimension(:,:), pointer :: mub, latitude, longitude, hgt
@@ -328,7 +328,6 @@
endif
wrf%dom(:)%surf_obs = surf_obs
-wrf%dom(:)%soil_data = soil_data
!---------------------------
! end obsolete
@@ -497,9 +496,6 @@
! start and stop of each variable in vector
allocate(wrf%dom(id)%var_index(2,wrf%dom(id)%number_of_wrf_variables))
-! dimension of variables
-! allocate(wrf%dom(id)%var_size(3,wrf%dom(id)%number_of_wrf_variables))
-
!---------------------------
! end block to be obsolete
!---------------------------
@@ -3263,17 +3259,33 @@
dimids_3D(4:5) = (/MemberDimID,unlimitedDimID/)
+ ! get first two dimensions based on stagger (could do this
+ ! differently)
select case (trim(wrf%dom(id)%stagger(ind)))
case ('Z') ! mass grid staggered vertical
- dimids_3D(1:3)=(/weDimID(id),snDimId(id),btStagDimID(id)/)
+ dimids_3D(1:2)=(/weDimID(id),snDimId(id)/)
case ('X') ! U grid unstaggered vertical
- dimids_3D(1:3)=(/weStagDimID(id),snDimId(id),btDimID(id)/)
+ dimids_3D(1:2)=(/weStagDimID(id),snDimId(id)/)
case ('Y') ! V grid unstaggered vertical
- dimids_3D(1:3)=(/weDimID(id),snStagDimId(id),btDimID(id)/)
+ dimids_3D(1:2)=(/weDimID(id),snStagDimId(id)/)
case default
- dimids_3D(1:3)=(/weDimID(id),snDimId(id),btDimID(id)/)
+ dimids_3D(1:2)=(/weDimID(id),snDimId(id)/)
end select
+ ! vertical dimension can be stag, unstag, or staggered soil
+ ! need to use if/then/else instead of select because testing
+ ! is against variables
+ if ( wrf%dom(id)%var_size(3,my_index) == wrf%dom(id)%bts ) then
+ dimids_3D(3)=btStagDimID(id)
+ elseif ( wrf%dom(id)%var_size(3,my_index) == wrf%dom(id)%bt ) then
+ dimids_3D(3)=btDimID(id)
+ elseif ( wrf%dom(id)%var_size(3,my_index) == wrf%dom(id)%sls ) then
+ dimids_3D(3)=slSDimID(id)
+ else
+ write(errstring,*)'Could not determine dim_id for vertical dimension to output variable '//varname
+ call error_handler(E_ERR,'nc_write_atts',errstring,source, revision,revdate)
+ endif
+
if ( debug ) write(*,*) '3D with dim ids ',dimids_3D
call nc_check(nf90_def_var(ncid=ncFileID, name=varname, &
More information about the Dart-dev
mailing list