[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