[Dart-dev] DART/branches Revision: 10924

dart at ucar.edu dart at ucar.edu
Fri Jan 20 10:03:13 MST 2017


hendric at ucar.edu
2017-01-20 10:03:10 -0700 (Fri, 20 Jan 2017)
19
condensing logic.




Modified: DART/branches/rma_single_file/io/state_space_diag_mod.f90
===================================================================
--- DART/branches/rma_single_file/io/state_space_diag_mod.f90	2017-01-19 23:12:40 UTC (rev 10923)
+++ DART/branches/rma_single_file/io/state_space_diag_mod.f90	2017-01-20 17:03:10 UTC (rev 10924)
@@ -655,7 +655,7 @@
 
 integer :: VarID
 
-character(len=128) :: filename
+character(len=128) :: filename, basename
 
 if (.not. module_initialized) call init_state_space_diag()
 
@@ -679,61 +679,34 @@
        id1,is1,timeindex,ncFileID%ncid
 call error_handler(E_DBG,'aoutput_diagnostics', msgstring, source, revision, revdate)
 
-write(filename,*) 'ncFileID', ncFileID%ncid
-if (copy_type == ENS_MEAN) then
-   call nc_check(NF90_inq_varid(ncFileID%ncid, "state_mean", VarID), & 
-                 'aoutput_diagnostics', 'inq_varid state_mean, '//trim(filename))
-   call nc_check(NF90_put_var(ncFileID%ncid, VarID, model_state,  &
-                 start=(/ 1, timeindex /)),  &
-                 'aoutput_diagnostics', 'put_var state_mean, '//trim(filename))
-   return
-endif
+if (present(copy_type)) then
+   SELECT CASE (copy_type)
+      CASE (ENS_MEAN)
+         basename = "state_mean"
+      CASE (ENS_SPREAD)
+         basename = "state_sd"
+      CASE (PRIOR_INF_MEAN)
+         basename = "state_priorinf_mean"
+      CASE (PRIOR_INF_SPREAD) 
+         basename = "state_priorinf_sd"
+      CASE (POST_INF_MEAN)
+         basename = "state_postinf_mean"
+      CASE (POST_INF_SPREAD) 
+         basename = "state_postinf_sd"
+      CASE DEFAULT
+         print*, "CASE NOT FOUND"
+         call exit(0) 
+   END SELECT
 
-if (copy_type == ENS_SPREAD) then
-   call nc_check(NF90_inq_varid(ncFileID%ncid, "state_sd", VarID), & 
-                 'aoutput_diagnostics', 'inq_varid state_sd, '//trim(filename))
+   write(filename,*) 'ncFileID', ncFileID%ncid
+   call nc_check(NF90_inq_varid(ncFileID%ncid, basename, VarID), & 
+                 'aoutput_diagnostics', 'inq_varid '//basename//trim(filename))
    call nc_check(NF90_put_var(ncFileID%ncid, VarID, model_state,  &
                  start=(/ 1, timeindex /)),  &
-                 'aoutput_diagnostics', 'put_var state_sd, '//trim(filename))
+                 'aoutput_diagnostics', 'put_var '//basename//trim(filename))
    return
 endif
 
-if (copy_type == PRIOR_INF_MEAN) then
-   call nc_check(NF90_inq_varid(ncFileID%ncid, "state_priorinf_mean", VarID), & 
-                 'aoutput_diagnostics', 'inq_varid state_priorinf_mean, '//trim(filename))
-   call nc_check(NF90_put_var(ncFileID%ncid, VarID, model_state,  &
-                 start=(/ 1, timeindex /)),  &
-                 'aoutput_diagnostics', 'put_var state_priorinf_mean, '//trim(filename))
-   return
-endif
-
-if (copy_type == PRIOR_INF_SPREAD) then
-   call nc_check(NF90_inq_varid(ncFileID%ncid, "state_priorinf_sd", VarID), & 
-                 'aoutput_diagnostics', 'inq_varid state_priorinf_sd, '//trim(filename))
-   call nc_check(NF90_put_var(ncFileID%ncid, VarID, model_state,  &
-                 start=(/ 1, timeindex /)),  &
-                 'aoutput_diagnostics', 'put_var state_priorinf_sd, '//trim(filename))
-   return
-endif
-
-if (copy_type == POST_INF_MEAN) then
-   call nc_check(NF90_inq_varid(ncFileID%ncid, "state_postinf_mean", VarID), & 
-                 'aoutput_diagnostics', 'inq_varid state_postinf_mean, '//trim(filename))
-   call nc_check(NF90_put_var(ncFileID%ncid, VarID, model_state,  &
-                 start=(/ 1, timeindex /)),  &
-                 'aoutput_diagnostics', 'put_var state_postinf_mean, '//trim(filename))
-   return
-endif
-
-if (copy_type == POST_INF_SPREAD) then
-   call nc_check(NF90_inq_varid(ncFileID%ncid, "state_postinf_sd", VarID), & 
-                 'aoutput_diagnostics', 'inq_varid state_postinf_sd, '//trim(filename))
-   call nc_check(NF90_put_var(ncFileID%ncid, VarID, model_state,  &
-                 start=(/ 1, timeindex /)),  &
-                 'aoutput_diagnostics', 'put_var state_postinf_sd, '//trim(filename))
-   return
-endif
-
 ! model_mod:nc_write_model_vars knows nothing about assim_model_types,
 ! so we must pass the components.
 ! No need to do this anymore
@@ -1212,7 +1185,7 @@
    ! Get this state copy to task 0; then output it
    call get_copy(map_task_to_pe(ens_handle, 0), ens_handle, j, temp_ens, temp_time)
    if(my_task_id() == 0) call aoutput_diagnostics( out_unit, temp_time, temp_ens, &


More information about the Dart-dev mailing list