[Dart-dev] [3843] DART/trunk/models/wrf/model_mod.f90: Make the string lengths for netcdf variable names NF90_MAX_NAME long.

nancy at ucar.edu nancy at ucar.edu
Mon May 4 16:27:04 MDT 2009


An HTML attachment was scrubbed...
URL: http://mailman.ucar.edu/pipermail/dart-dev/attachments/20090504/49bbbc7d/attachment.html 
-------------- next part --------------
Modified: DART/trunk/models/wrf/model_mod.f90
===================================================================
--- DART/trunk/models/wrf/model_mod.f90	2009-05-04 20:47:45 UTC (rev 3842)
+++ DART/trunk/models/wrf/model_mod.f90	2009-05-04 22:27:03 UTC (rev 3843)
@@ -256,6 +256,10 @@
 ! JPH move map stuff into common (can move back into S/R later?)
 real(r8) :: stdlon,truelat1,truelat2 !,latinc,loninc
 
+! have a single, module global error string (rather than 
+! replicate it in each subroutine and use up more stack space)
+character(len=129) :: errstring
+
 contains
 
 !#######################################################################
@@ -273,7 +277,6 @@
 integer               :: my_index
 integer               :: var_element_list(max_state_variables)
 
-character(len=129) :: errstring
 
 !----------------------------------------------------------------------
 
@@ -630,7 +633,6 @@
 
 integer :: i, id
 logical, parameter :: debug = .false.
-character(len=129) :: errstring
 
 integer :: type_w, type_gz
 
@@ -786,8 +788,6 @@
 integer, dimension(2) :: ll, lr, ul, ur, ll_v, lr_v, ul_v, ur_v
 integer            :: rc, ill, ilr, iul, iur, i1, i2
 
-character(len=129) :: errstring
-
 real(r8), dimension(2) :: fld
 real(r8), allocatable, dimension(:) :: v_h, v_p
 
@@ -2260,8 +2260,6 @@
 real(r8)            :: dx,dy,dz,dxm,dym,dzm
 integer, dimension(2) :: ll, lr, ul, ur
 
-character(len=129) :: errstring
-
 real(r8), allocatable, dimension(:) :: v_h, v_p
 
 ! local vars, used in calculating pressure and height
@@ -2589,8 +2587,6 @@
 integer :: get_wrf_index
 integer :: in
 
-character(len=129) :: errstring
-
 write(errstring,*)'function get_wrf_index should not be called -- still needs updating!'
 call error_handler(E_ERR,'get_wrf_index', errstring, &
      source, revision, revdate)
@@ -2753,7 +2749,7 @@
 integer :: var_id
 integer :: i, id
 
-character(len=129) :: errstring, title
+character(len=129) :: title
 
 character(len=8)      :: crdate      ! needed by F90 DATE_AND_TIME intrinsic
 character(len=10)     :: crtime      ! needed by F90 DATE_AND_TIME intrinsic
@@ -2767,10 +2763,11 @@
 integer :: nlines, linelen
 integer :: LineLenDimID, nlinesDimID, nmlVarID
 integer :: ind, my_index
-character(len=129) :: attname, varname, unitsval
+character(len=NF90_MAX_NAME) :: attname, varname
+character(len=129) :: unitsval
 integer, dimension(5) :: dimids_3D
 integer, dimension(4) :: dimids_2D
-logical               :: debug = .true.
+logical               :: debug = .false.
 
 !-----------------------------------------------------------------
 
@@ -3462,7 +3459,7 @@
 integer :: i,j
 real(r8), allocatable, dimension(:,:)   :: temp2d
 real(r8), allocatable, dimension(:,:,:) :: temp3d
-character(len=10) :: varname
+character(len=NF90_MAX_NAME) :: varname
 character(len=1) :: idom
 integer, dimension(2) :: dimsizes_2D
 integer, dimension(3) :: dimsizes_3D
@@ -4584,7 +4581,6 @@
 
 !     Local variables:
 
-      character(len=129) :: errstring
       INTEGER :: k
       INTEGER :: klo, khi
 
@@ -4791,7 +4787,10 @@
       goto 1
       endif
       h=xa(khi)-xa(klo)
-      if (h.eq.0.) pause 'bad xa input in splint'
+      if (h.eq.0.) then
+         write(*,*) 'bad xa input in splint'
+         stop
+      endif 
       a=(xa(khi)-x)/h
       b=(x-xa(klo))/h
       y=a*ya(klo)+b*ya(khi)+((a**3-a)*y2a(klo)+(b**3-b)*y2a(khi))*(h**2)/6.
@@ -5519,11 +5518,11 @@
 
 implicit none
 
-integer, intent(in)   :: ncid
-integer, intent(out)  :: bt,bts,sn,sns,we,wes,sls
-logical, parameter    :: debug = .false.
-integer               :: var_id 
-character (len=80)    :: name
+integer, intent(in)            :: ncid
+integer, intent(out)           :: bt,bts,sn,sns,we,wes,sls
+logical, parameter             :: debug = .false.
+integer                        :: var_id 
+character (len=NF90_MAX_NAME)  :: name
 
 ! get wrf grid dimensions
 
@@ -5939,10 +5938,11 @@
 implicit none
 
 integer, intent(in) :: id
-character(len=129), intent(in) :: state_table(num_state_table_columns,max_state_variables) 
+character(len=*), intent(in) :: state_table(num_state_table_columns,max_state_variables) 
 integer, intent(out), optional :: var_element_list(max_state_variables)
 integer :: ivar, num_vars
-character(len=129) :: my_string
+! was this for debugging?  seems unused.
+!character(len=129) :: my_string
 logical :: debug = .false.
 
 if ( present(var_element_list) ) var_element_list = -1
@@ -5951,7 +5951,7 @@
 num_vars = 0
 do while ( trim(state_table(5,ivar)) /= 'NULL' ) 
 
-   my_string = state_table(5,ivar)
+   !my_string = state_table(5,ivar)
 
    if ( variable_is_on_domain(state_table(5,ivar),id) ) then
       num_vars = num_vars + 1
@@ -6002,13 +6002,13 @@
 
    implicit none
 
-   character(len=129), intent(in)    :: bounds_table(num_bounds_table_columns,max_state_variables) 
-   character(len=129), intent(in)    :: wrf_var_name
-   real(r8),           intent(out)   :: lb,ub
-   character(len=10),  intent(out)   :: instructions
+   character(len=*), intent(in)    :: bounds_table(num_bounds_table_columns,max_state_variables) 
+   character(len=*), intent(in)    :: wrf_var_name
+   real(r8),         intent(out)   :: lb,ub
+   character(len=10),intent(out)   :: instructions
 
-   character(len=30)                 :: wrf_varname_trim, bounds_varname_trim
-   character(len=30)                 :: bound_trim
+   character(len=30)               :: wrf_varname_trim, bounds_varname_trim
+   character(len=30)               :: bound_trim
    integer :: ivar
    logical :: debug = .false.
 
@@ -6066,10 +6066,10 @@
 
 implicit none
 
-integer,            intent(in) :: id
-character(len=129), intent(in) :: domain_id_string
+integer,           intent(in) :: id
+character(len=*),  intent(in) :: domain_id_string
 
-integer                        :: domain_int, i
+integer                       :: domain_int, i
 
 variable_is_on_domain = .false.
 
@@ -6102,11 +6102,11 @@
 
 implicit none
 
-integer, intent(in)               :: ncid, id
-integer, intent(in)               :: bt, bts, sn, sns, we, wes
-character(len=129), intent(in)    :: wrf_var_name
-integer, intent(out)              :: var_size(3)
-character(len=129),intent(out)    :: stagger
+integer,           intent(in)   :: ncid, id
+integer,           intent(in)   :: bt, bts, sn, sns, we, wes
+character(len=*),  intent(in)   :: wrf_var_name
+integer,           intent(out)  :: var_size(3)
+character(len=129),intent(out)  :: stagger
 
 logical, parameter    :: debug = .false.
 integer               :: var_id, ndims, dimids(10) 
@@ -6166,7 +6166,7 @@
 implicit none
 
 integer, intent(in)               :: ncid, id
-character(len=129), intent(in)    :: wrf_var_name
+character(len=*),   intent(in)    :: wrf_var_name
 character(len=129), intent(out)   :: description, units
 
 logical, parameter    :: debug = .false.
@@ -6243,7 +6243,6 @@
 !---
 
 integer :: i,j,m
-character(len=129) :: errstring
 
 i=size(a2d,1)
 j=size(a2d,2)
@@ -6277,7 +6276,6 @@
 !---
 
 integer :: i,j,k,m
-character(len=129) :: errstring
 
 i=size(a3d,1)
 j=size(a3d,2)
@@ -6315,7 +6313,6 @@
 !---
 
 integer :: i,j,m
-character(len=129) :: errstring
 
 i=size(a2d,1)
 j=size(a2d,2)
@@ -6349,7 +6346,6 @@
 !---
 
 integer :: i,j,k,m
-character(len=129) :: errstring
 
 i=size(a3d,1)
 j=size(a3d,2)
@@ -6386,9 +6382,9 @@
 integer,           intent(out) :: year, month, day, hour, minute, second
 character(len=19), intent(in)  :: tstring
 
-read(tstring(1:4),'(i4)') year
-read(tstring(6:7),'(i2)') month
-read(tstring(9:10),'(i2)') day
+read(tstring( 1: 4),'(i4)') year
+read(tstring( 6: 7),'(i2)') month
+read(tstring( 9:10),'(i2)') day
 read(tstring(12:13),'(i2)') hour
 read(tstring(15:16),'(i2)') minute
 read(tstring(18:19),'(i2)') second


More information about the Dart-dev mailing list