[Dart-dev] DART/branches Revision: 11370

dart at ucar.edu dart at ucar.edu
Fri Mar 17 15:58:10 MDT 2017


nancy at ucar.edu
2017-03-17 15:58:10 -0600 (Fri, 17 Mar 2017)
282
adding a version of the assim_tools that supports jon poterjoy's
particle filter.  the code needs to be reviewed before integrating
into the default version.  updated some status messages in the
standard version to try to make the log info more helpful for users.
no code changes.




Modified: DART/branches/rma_trunk/assimilation_code/modules/assimilation/assim_tools_mod.f90
===================================================================
--- DART/branches/rma_trunk/assimilation_code/modules/assimilation/assim_tools_mod.f90	2017-03-16 22:37:26 UTC (rev 11369)
+++ DART/branches/rma_trunk/assimilation_code/modules/assimilation/assim_tools_mod.f90	2017-03-17 21:58:10 UTC (rev 11370)
@@ -274,21 +274,46 @@
    close_obs_caching = .false.
 endif
 
-if (adjust_obs_impact) then
-   call allocate_impact_table(obs_impact_table)
-   call read_impact_table(obs_impact_filename, obs_impact_table, allow_any_impact_values)
-   call error_handler(E_MSG, 'assim_tools_init: ', &
-                      'Using observation impact table from file "'//trim(obs_impact_filename)//'"')
-endif
+! log what the user has selected via the namelist choices
+! E_MSG only prints from PE0 by default, but go ahead and only
+! construct the messages on PE0 as well.
+if (do_output()) then 
 
-if (do_output()) then
-   write(msgstring, '(A,F18.6)') 'The cutoff namelist value is ', cutoff
-   call error_handler(E_MSG,'assim_tools_init:', msgstring)
-   write(msgstring, '(A)') 'cutoff is the localization half-width parameter,'
-   call error_handler(E_MSG,'assim_tools_init:', msgstring)
-   write(msgstring, '(A,F18.6)') 'so the effective localization radius is ', cutoff*2.0_r8
-   call error_handler(E_MSG,'assim_tools_init:', msgstring)
+   select case (filter_kind)
+    case (1)
+      msgstring = 'Ensemble Adjustment Kalman Filter (EAKF)'
+    case (2)
+      msgstring = 'Ensemble Kalman Filter (ENKF)'
+    case (3)
+      msgstring = 'Kernel filter'
+    case (4)
+      msgstring = 'observation space particle filter'
+    case (5)
+      msgstring = 'random draw from posterior'
+    case (6)
+      msgstring = 'deterministic draw from posterior with fixed kurtosis'
+    case (7)
+      msgstring = 'Boxcar'
+    case (8)
+      msgstring = 'Rank Histogram Filter'
+    case default 
+      call error_handler(E_ERR, 'assim_tools_init:', 'illegal filter_kind value, valid values are 1-8', &
+                         source, revision, revdate)
+   end select
+   call error_handler(E_MSG, 'assim_tools_init:', 'Selected filter type is '//trim(msgstring))
 
+   if (adjust_obs_impact) then
+      call allocate_impact_table(obs_impact_table)
+      call read_impact_table(obs_impact_filename, obs_impact_table, allow_any_impact_values)
+      call error_handler(E_MSG, 'assim_tools_init:', &
+                         'Using observation impact table from file "'//trim(obs_impact_filename)//'"')
+   endif
+
+   write(msgstring,  '(A,F18.6)') 'The cutoff namelist value is ', cutoff
+   write(msgstring2, '(A)') 'cutoff is the localization half-width parameter,'
+   write(msgstring3, '(A,F18.6)') 'so the effective localization radius is ', cutoff*2.0_r8
+   call error_handler(E_MSG,'assim_tools_init:', msgstring, text2=msgstring2, text3=msgstring3)
+
    if (has_special_cutoffs) then
       call error_handler(E_MSG, '', '')
       call error_handler(E_MSG,'assim_tools_init:','Observations with special localization treatment:')
@@ -310,11 +335,11 @@
 
    if(adaptive_localization_threshold > 0) then
       write(msgstring, '(A,I10,A)') 'Using adaptive localization, threshold ', &
-         adaptive_localization_threshold, ' obs'
+                                     adaptive_localization_threshold, ' obs'
       call error_handler(E_MSG,'assim_tools_init:', msgstring)
       if(adaptive_cutoff_floor > 0.0_r8) then
          write(msgstring, '(A,F18.6)') 'Minimum cutoff will not go below ', &
-            adaptive_cutoff_floor
+                                        adaptive_cutoff_floor
          call error_handler(E_MSG,'assim_tools_init:', 'Using adaptive localization cutoff floor.', &
                             text2=msgstring)
       endif
@@ -332,12 +357,12 @@
    if (task_count() > 1) then
        if(distribute_mean) then
           call error_handler(E_MSG,'assim_tools_init:', 'Distributing one copy of the ensemble mean across all tasks', &
-                             text2='(uses less memory per task but may run slower if doing vertical coordinate conversion,', &
-                             text3='controlled by namelist item "distribute_mean")')
+                             text2='uses less memory per task but may run slower if doing vertical ', &
+                             text3='coordinate conversion; controlled by namelist item "distribute_mean"')
        else
           call error_handler(E_MSG,'assim_tools_init:', 'Replicating a copy of the ensemble mean on every task', &
-                             text2='(uses more memory per task but may run faster if doing vertical coordinate conversion,', &
-                             text3='controlled by namelist item "distribute_mean")')
+                             text2='(uses more memory per task but may run faster if doing vertical ', &
+                             text3='coordinate conversion; controlled by namelist item "distribute_mean"')
        endif
    endif
 endif

Added: DART/branches/rma_trunk/assimilation_code/modules/assimilation/assim_tools_mod.pf.f90
===================================================================
--- DART/branches/rma_trunk/assimilation_code/modules/assimilation/assim_tools_mod.pf.f90	                        (rev 0)
+++ DART/branches/rma_trunk/assimilation_code/modules/assimilation/assim_tools_mod.pf.f90	2017-03-17 21:58:10 UTC (rev 11370)
@@ -0,0 +1,3920 @@


More information about the Dart-dev mailing list