[Dart-dev] [5092] DART/trunk/models/tiegcm/model_mod.f90: updates from tomoko:

nancy at ucar.edu nancy at ucar.edu
Thu Jul 21 15:43:26 MDT 2011


Revision: 5092
Author:   nancy
Date:     2011-07-21 15:43:25 -0600 (Thu, 21 Jul 2011)
Log Message:
-----------
updates from tomoko:
ZG (geopotential height) is added to the DART state vector NetCDF outputs.
A couple of small bugs are fixed
- logical expression: TO state_num_1d > 0 FROM state_num_1d > 1 

Modified Paths:
--------------
    DART/trunk/models/tiegcm/model_mod.f90

-------------- next part --------------
Modified: DART/trunk/models/tiegcm/model_mod.f90
===================================================================
--- DART/trunk/models/tiegcm/model_mod.f90	2011-07-19 22:18:16 UTC (rev 5091)
+++ DART/trunk/models/tiegcm/model_mod.f90	2011-07-21 21:43:25 UTC (rev 5092)
@@ -15,7 +15,7 @@
 !
 !------------------------------------------------------------------
 ! DART Modules
-use        types_mod, only : r8, digits12, missing_r8, i4
+use        types_mod, only : r8, digits12, missing_r8, i4, PI
 use time_manager_mod, only : time_type, set_calendar_type, set_time_missing,        &
                              set_time, get_time, print_time,                        &
                              set_date, get_date, print_date,                        & 
@@ -807,7 +807,7 @@
 
 integer :: TNVarID, TN_NMVarID, UNVarID, UN_NMVarID, VNVarID, VN_NMVarID
 integer :: O1VarID, O1_NMVarID, O2VarID, O2_NMVarID 
-integer :: NEVarID, F107VarID
+integer :: NEVarID, F107VarID, ZGVarID
 integer :: lonDimID, latDimID, levDimID, ilevDimID
 integer :: lonVarID, latVarID, levVarID, ilevVarID
 integer :: paraDimID 
@@ -940,7 +940,7 @@
    call nc_check(nf90_def_dim(ncid=ncFileID, name="ilev", &
              & len = nilev, dimid =  ilevDimID), 'nc_write_model_atts')
 
-   if (state_num_1d > 1) then          
+   if (state_num_1d > 0) then          
    call nc_check(nf90_def_dim(ncid=ncFileID, name="onedparameter", &
              & len = state_num_1d, dimid = paraDimID), 'nc_write_model_atts')
    endif
@@ -999,7 +999,7 @@
    ! Create attributes for the state vector
    !----------------------------------------------------------------------------
 
-   if (state_num_1d > 1) then          
+   if (state_num_1d > 0) then          
    call nc_check(nf90_def_var(ncid=ncFileID, name="F107", xtype=nf90_real, &
        dimids = (/ paraDimID, MemberDimID, unlimitedDimID /), &
        varid  = F107VarID), 'nc_write_model_atts')
@@ -1007,6 +1007,15 @@
           'nc_write_model_atts')
    endif
           
+   call nc_check(nf90_def_var(ncid=ncFileID, name="ZG", xtype=nf90_real, &
+       dimids = (/ lonDimID, latDimID, levDimID, MemberDimID, unlimitedDimID /), &
+       varid  = ZGVarID), 'nc_write_model_atts')
+   call nc_check(nf90_put_att(ncFileID, ZGVarID, "long_name", &
+          "geopotential height calculated with varying gravity"), &
+          'nc_write_model_atts')
+   call nc_check(nf90_put_att(ncFileID, ZGVarID, "units", "cm"), &
+          'nc_write_model_atts')
+
    call nc_check(nf90_def_var(ncid=ncFileID, name="TN", xtype=nf90_real, &
        dimids = (/ lonDimID, latDimID, levDimID, MemberDimID, unlimitedDimID /), &
        varid  = TNVarID), 'nc_write_model_atts')
@@ -1161,7 +1170,7 @@
 integer         :: StateVarID
 integer         :: TNVarID, TN_NMVarID, UNVarID, UN_NMVarID, VNVarID, VN_NMVarID  
 integer         :: O1VarID, O1_NMVarID, O2VarID, O2_NMVarID
-integer         :: NEVarID, F107VarID
+integer         :: NEVarID, F107VarID, ZGVarID
 
 type(model_type):: var 
 
@@ -1211,7 +1220,7 @@
    ! call check(nf90_put_var( ncFileID, psVarID, global_Var%ps, &
    !                          start=(/ 1, 1, copyindex, timeindex /) ), "ps put_var")
     
-   if (state_num_1d > 1) then          
+   if (state_num_1d > 0) then          
    call nc_check(NF90_inq_varid(ncFileID, 'F107', F107VarID),       &
           'nc_write_model_vars', 'F107 inq_varid') 
    call nc_check(nf90_put_var( ncFileID, F107VarID, var%vars_1d(1), & 
@@ -1219,10 +1228,17 @@
           'nc_write_model_vars', 'F107 put_var') 
    endif
 
+   call nc_check(NF90_inq_varid(ncFileID, 'ZG',    ZGVarID),    &
+          'nc_write_model_vars', 'ZG inq_varid')
+   call nc_check(nf90_put_var( ncFileID, ZGVarID,               & 
+                 var%vars_3d(:,:,:,TYPE_local_ZG+1),            & 
+                 start=(/ 1, 1, 1, copyindex, timeindex /) ),   &
+          'nc_write_model_vars', 'ZG put_var')     
+
    call nc_check(NF90_inq_varid(ncFileID, 'TN',    TNVarID),    &
           'nc_write_model_vars', 'TN inq_varid')
    call nc_check(nf90_put_var( ncFileID, TNVarID,               & 
-                 var%vars_3d(:,:,:,TYPE_local_TN),              & 
+                 var%vars_3d(:,:,:,TYPE_local_TN+1),            & 
                  start=(/ 1, 1, 1, copyindex, timeindex /) ),   &
           'nc_write_model_vars', 'TN put_var')     
 
@@ -1477,7 +1493,7 @@
 if ( .not. module_initialized ) call static_init_model
                                                                                       
 deallocate(var%vars_3d)
-if (state_num_1d > 1) deallocate(var%vars_1d)
+if (state_num_1d > 0) deallocate(var%vars_1d)
                                                                                   
 end subroutine end_model_instance
 
@@ -2352,7 +2368,7 @@
     time_step_seconds = step
  endif
 
- if ((state_num_1d > 1) .and. present(var)) then
+ if ((state_num_1d > 0) .and. present(var)) then
   var%vars_1d(1) = f107    !        f10.7 cm flux
  endif
 
@@ -2420,7 +2436,7 @@
      if (estimate_parameter) then
          dist(k) = dist(k)*0.25_r8
      else !not estimate_parameter
-         dist(k) = 1.0e9
+         dist(k) = 2.0_r8 * PI
      endif
 
   endif


More information about the Dart-dev mailing list