[Dart-dev] [4052] DART/trunk/models/POP: Committed after assimilating a single obs in the middle of the atlantic with

nancy at ucar.edu nancy at ucar.edu
Wed Sep 16 14:23:15 MDT 2009


An HTML attachment was scrubbed...
URL: http://mailman.ucar.edu/pipermail/dart-dev/attachments/20090916/7529d888/attachment-0001.html 
-------------- next part --------------
Modified: DART/trunk/models/POP/dart_pop_mod.f90
===================================================================
--- DART/trunk/models/POP/dart_pop_mod.f90	2009-09-15 20:59:18 UTC (rev 4051)
+++ DART/trunk/models/POP/dart_pop_mod.f90	2009-09-16 20:23:15 UTC (rev 4052)
@@ -72,21 +72,23 @@
 
 character(len=100) :: log_filename, pointer_filename
 logical :: lredirect_stdout, luse_pointer_files
+logical :: luse_nf_64bit_offset
 integer :: num_iotasks
 
 namelist /io_nml/ num_iotasks, lredirect_stdout, log_filename, &
-    luse_pointer_files, pointer_filename
+    luse_pointer_files, pointer_filename, luse_nf_64bit_offset
 
 !------------------------------------------------------------------
 ! The POP restart manager namelist variables
 !------------------------------------------------------------------
 
 character(len=100) :: restart_outfile ! length consistent with POP
-character(len= 64) :: restart_freq_opt, restart_fmt
+character(len= 64) :: restart_freq_opt, restart_start_opt, restart_fmt
 logical :: leven_odd_on, pressure_correction
-integer :: restart_freq, even_odd_freq
+integer :: restart_freq, restart_start, even_odd_freq
 
-namelist /restart_nml/ restart_freq_opt, restart_freq, restart_outfile, &
+namelist /restart_nml/ restart_freq_opt, restart_freq, &
+     restart_start_opt, restart_start, restart_outfile, &
     restart_fmt, leven_odd_on, even_odd_freq, pressure_correction
 
 !------------------------------------------------------------------
@@ -94,9 +96,13 @@
 !------------------------------------------------------------------
 
 character(len=100) :: init_ts_file ! length consistent with POP
-character(len= 64) :: init_ts_option, init_ts_file_fmt
+character(len=100) :: init_ts_outfile
+character(len= 64) :: init_ts_option, init_ts_suboption
+character(len= 64) :: init_ts_file_fmt, init_ts_outfile_fmt
 
-namelist /init_ts_nml/ init_ts_option, init_ts_file, init_ts_file_fmt 
+namelist /init_ts_nml/ init_ts_option, init_ts_suboption, &
+                       init_ts_file, init_ts_file_fmt, & 
+                       init_ts_outfile, init_ts_outfile_fmt
 
 !------------------------------------------------------------------
 ! The POP domain namelist 
@@ -145,16 +151,21 @@
 !
 !------------------------------------------------------------------
 
-character(len=100) :: horiz_grid_file, vert_grid_file, topography_file, &
+character(len=100) :: horiz_grid_file, vert_grid_file, &
+                      topography_file, topography_outfile, &
+                      bathymetry_file, region_info_file, &
                       bottom_cell_file, region_mask_file
 character(len= 64) :: horiz_grid_opt, sfc_layer_opt, vert_grid_opt, &
                       topography_opt
 logical :: partial_bottom_cells, topo_smooth, flat_bottom, lremove_points
+integer :: kmt_kmin, n_topo_smooth
 
 namelist /grid_nml/ horiz_grid_opt, horiz_grid_file, sfc_layer_opt, &
-    vert_grid_opt, vert_grid_file, topography_opt, topography_file, &
-    partial_bottom_cells, bottom_cell_file, region_mask_file, &
-    topo_smooth, flat_bottom, lremove_points
+    vert_grid_opt, vert_grid_file, topography_opt, kmt_kmin, &
+    topography_file, topography_outfile, bathymetry_file, &
+    partial_bottom_cells, bottom_cell_file, n_topo_smooth, &
+    region_mask_file, topo_smooth, flat_bottom, lremove_points, &
+    region_info_file
 
 !======================================================================
 contains
@@ -174,11 +185,15 @@
 read(iunit, nml = time_manager_nml, iostat = io)
 call check_namelist_read(iunit, io, 'time_manager_nml')
 
-if ( allow_leapyear ) then
+! FIXME : Real observations are always GREGORIAN dates ...
+! but stomping on that here gets in the way of running
+! a perfect_model experiment for pre-1601 AD cases.
+
+! STOMP if ( allow_leapyear ) then
    call set_calendar_type('gregorian')
-else
-   call set_calendar_type('noleap')
-endif
+! STOMP else
+! STOMP    call set_calendar_type('noleap')
+! STOMP endif
 
 ! Read POP I/O information (for restart file ... grid dimensions)
 ! Read POP initial information (for input/restart filename)
@@ -352,9 +367,12 @@
 
 if ( trim(restart_freq_opt) == 'nday' ) then
    set_model_time_step = set_time(0, restart_freq) ! (seconds, days)
+else if ( trim(restart_freq_opt) == 'nyear' ) then
+   ! FIXME ... CCSM_POP uses a bogus value for this
+   set_model_time_step = set_time(0, 1) ! (seconds, days)
 else
    call error_handler(E_ERR,'set_model_time_step', &
-              'restart_freq_opt must be days', source, revision, revdate)
+              'restart_freq_opt must be nday', source, revision, revdate)
 endif
 
 end function set_model_time_step

Modified: DART/trunk/models/POP/model_mod.f90
===================================================================
--- DART/trunk/models/POP/model_mod.f90	2009-09-15 20:59:18 UTC (rev 4051)
+++ DART/trunk/models/POP/model_mod.f90	2009-09-16 20:23:15 UTC (rev 4052)
@@ -187,8 +187,8 @@
 ! of size num_reg_x*num_reg_y*max_reg_list_num are needed. The initialization
 ! fails and returns an error if max_reg_list_num is too small. A value of
 ! 30 is sufficient for the x3 POP grid with 180 regular lon and lat boxes 
-! and a value of ??? is sufficient for for the x1 grid.
-integer, parameter :: max_reg_list_num = 30
+! and a value of 80 is sufficient for for the x1 grid.
+integer, parameter :: max_reg_list_num = 80
 
 ! The dipole interpolation keeps a list of how many and which dipole quads
 ! overlap each regular lon-lat box. The number for the u and t grids are stored
@@ -431,6 +431,10 @@
    enddo
 enddo
 
+! DEBUG to determine max_reg_list_num values for new grids ...
+! write(*,*)'u_dipole_num is ',maxval(u_dipole_num)
+! write(*,*)'t_dipole_num is ',maxval(t_dipole_num)
+
 ! Invert the temporary data structure. The total number of entries will be the sum 
 ! of the number of dipole cells for each regular cell. 
 u_total = sum(u_dipole_num)
@@ -649,8 +653,8 @@
    
    do ind_y = reg_lat_ind(1), reg_lat_ind(2)
       ! Make sure the list storage isn't full
-      if(reg_list_num(index_x, ind_y) > max_reg_list_num) then
-         msgstring = 'max_reg_list_num is too small'
+      if(reg_list_num(index_x, ind_y) >= max_reg_list_num) then
+         write(msgstring,*) 'max_reg_list_num (',max_reg_list_num,') is too small ... increase'
          call error_handler(E_ERR, 'update_reg_list', msgstring, source, revision, revdate)
       endif
 
@@ -1368,9 +1372,16 @@
    ! An odd number of corners should be impossible.
    if(num_corners == 1 .or. num_corners == 3) then
       ! Put in some development error checking; shouldn't be able to hit 3 or 4 sides
-      write(msgstring, *) 'Num corners in in_quad is ', num_sides, &
+      write(*,*)'xcorners = ',x_corners,';'
+      write(*,*)'ycorners = ',y_corners,';'
+      write(*,*)'lon = ',lon,';'
+      write(*,*)'lat = ',lat,';'
+      write(*,*)'intercepts = ',intercepts,';'
+      write(*,*)'exact_corner = ',exact_corner,';'
+      write(msgstring, *) 'Num corners in in_quad is ', num_corners, &
          'Please contact DART development team'
-      call error_handler(E_ERR, 'in_quad', msgstring, source, revision, revdate)
+      call error_handler(E_MSG, 'in_quad', msgstring, source, revision, revdate)
+      in_quad = .false.   ! DEBUG FIXME TJH ... not the right thing to do.
    ! Four corners means we are not in; 
    else if(num_corners == 4) then
       in_quad = .false.
@@ -1457,18 +1468,29 @@
 ! This can probably be made much cleaner and more efficient.
 
 real(r8) :: slope, y_intercept, x(2), x_ray
+real(r8) :: xmin, xmax, ymin, ymax
+real(r8) :: rdummytiny, rdummyepsilon, rdummyabs, rdummyfraction
+integer :: idummydigits, idummyprecision, idummyexponent
 
+xmin = minval(x_in)
+xmax = maxval(x_in)
+
 ! May have to adjust the longitude intent in values, so copy
 x = x_in
 x_ray = x_ray_in
 
 ! See if the side wraps around in longitude
-if(maxval(x) - minval(x) > 180.0_r8) then
-   if(x(1) < 180.0_r8) x(1) = x(1) + 360.0_r8
-   if(x(2) < 180.0_r8) x(2) = x(2) + 360.0_r8
+if(xmax - xmin > 180.0_r8) then
+   if( x(1) < 180.0_r8)  x(1) =  x(1) + 360.0_r8
+   if( x(2) < 180.0_r8)  x(2) =  x(2) + 360.0_r8
    if(x_ray < 180.0_r8) x_ray = x_ray + 360.0_r8
 endif
 
+xmin = minval(x)
+xmax = maxval(x)
+ymin = minval(y)
+ymax = maxval(y)
+
 ! Initialize all the possible returns 
 cant_be_in_box = .false.
 on_side        = .false.
@@ -1478,8 +1500,45 @@
 ! First easy check, if x_ray is not between x(1) and x(2) it can't intersect
 if(x_ray < minval(x) .or. x_ray > maxval(x)) return
 
+if((x_ray < xmin) .or. (x_ray > xmax)) then
+   write(*,*)'minval vs xmin makes a difference'
+   return
+endif
+
+!if(x(2) == x(1)) then
+!        continue
+!else
+!   if (x(2) - x(1) == 0.0) &
+!        write(*,*)'x difference is zero', x
+!   if (abs(x(2) -x(1)) < epsilon(x(1))) &
+!        write(*,*)'x is almost equal', x
+!endif
+!
+!if(y(2) == y(1)) then
+!        continue
+!else
+!   if (y(2) - y(1) == 0.0) then
+!        write(*,*)'y difference is zero', y
+!   endif
+!   if (abs(y(2) -y(1)) < epsilon(y(1))) then
+!        write(*,*)'y is almost equal', y
+!   endif
+!   if (abs(y(2) -y(1)) < tiny(y(1))) then
+!        write(*,*)'y is almost equal', y
+!   endif
+!   rdummyabs       = abs(y(2) - y(1))
+!   rdummytiny      = tiny(y(1))
+!   rdummyepsilon   = epsilon(y(1))
+!   idummydigits    = digits(y(1))
+!   idummyprecision = precision(y(1))
+!   idummyexponent  = exponent(rdummyabs)
+!   rdummyfraction  = fraction(rdummyabs)
+!endif
+
+rdummyabs = abs(x(2) - x(1))
 ! First subblock, slope is undefined
-if(x(2) == x(1)) then
+! if(x(2) == x(1)) then
+if(rdummyabs < 1.0E-12_r8 ) then   ! near enough equal
    ! Check for exactly on this side
    if(x_ray /= x(1)) then
       ! Doesn't intersect vertical line
@@ -1487,7 +1546,7 @@
    else
       ! The ray is colinear with the side
       ! If y_ray is between endpoints then point is on this side
-      if(y_ray <= maxval(y) .and. y_ray >= minval(y)) then
+      if(y_ray <= ymax .and. y_ray >= ymin) then
          on_side = .true.
          return
       ! If not on side but colinear with side, point cant be in quad
@@ -1499,8 +1558,13 @@
 
 else
 
-   ! Second possibility; slope is defined
-   slope = (y(2) - y(1)) / (x(2) - x(1))
+   rdummyabs = abs(y(2) - y(1))
+   if ( rdummyabs < 1.0E-12_r8 ) then
+           slope = 0.0_r8
+   else
+      ! Second possibility; slope is defined
+      slope = (y(2) - y(1)) / (x(2) - x(1))
+   endif
    ! Intercept of downward ray and line through points is at x_ray and...
    y_intercept = y(1) + slope * (x_ray - x(1))
 
@@ -1521,10 +1585,10 @@
 
    ! Slope of line is not 0 or undefined so y endpoints differ
    ! If intercept is on segment and is below the point
-   if(y_intercept > maxval(y) .or. y_intercept < minval(y)) then
+   if(y_intercept > ymax .or. y_intercept < ymin) then
       ! Intersects line containing side outside of side
       return
-   else if(y_intercept < maxval(y) .and. y_intercept > minval(y)) then
+   else if(y_intercept < ymax .and. y_intercept > ymin) then
       ! Intercepts inside the side
       intercepts = 1
       return

Added: DART/trunk/models/POP/shell_scripts/assimilate.csh
===================================================================
--- DART/trunk/models/POP/shell_scripts/assimilate.csh	                        (rev 0)
+++ DART/trunk/models/POP/shell_scripts/assimilate.csh	2009-09-16 20:23:15 UTC (rev 4052)
@@ -0,0 +1,206 @@
+#!/usr/local/bin/tcsh
+#
+# Data Assimilation Research Testbed -- DART
+# Copyright 2004-2009, Data Assimilation Research Section
+# University Corporation for Atmospheric Research
+# Licensed under the GPL -- www.gpl.org/licenses/gpl.html
+#
+# <next few lines under version control, do not edit>
+# $URL$
+# $Id$
+# $Revision$
+# $Date$
+
+#-----------------------------------------------------------------------------
+# assimilate.csh
+#
+# 
+#
+# just see what we have to work with.
+# Check the ENVIRONMENT section of:
+# /fis01/cgd/oce/yeager/home/ccsm_runs/ccsm4.0_IE/dart.001hy/poe.stdout.921054
+#-----------------------------------------------------------------------------
+# CASE=dart.001hy
+# CASEROOT=/fis01/cgd/oce/yeager/home/ccsm_runs/ccsm4.0_IE/dart.001hy
+# CCSMROOT=/blhome/yeager/ccsm4_0_beta21ie
+# GRID=T62_gx1v6
+# CASETOOLS=/fis01/cgd/oce/yeager/home/ccsm_runs/ccsm4.0_IE/dart.001hy/Tools
+# CASEBUILD=/fis01/cgd/oce/yeager/home/ccsm_runs/ccsm4.0_IE/dart.001hy/Buildconf
+# SCRIPTSROOT=/blhome/yeager/ccsm4_0_beta21ie/scripts
+# UTILROOT=/blhome/yeager/ccsm4_0_beta21ie/scripts/ccsm_utils
+# BLDROOT=/blhome/yeager/ccsm4_0_beta21ie/scripts/ccsm_utils/Build
+# CODEROOT=/blhome/yeager/ccsm4_0_beta21ie/models
+# SHAREROOT=/blhome/yeager/ccsm4_0_beta21ie/models/csm_share
+# COMP_OCN=pop2
+# OCN_GRID=gx1v6
+# OCN_NX=320
+# OCN_NY=384
+# STOP_OPTION=ndays
+# STOP_N=5
+# STOP_DATE=-999
+# REST_OPTION=ndays
+# REST_N=5
+# REST_DATE=-999
+# RUN_TYPE=hybrid
+# RUN_STARTDATE=2000-01-01
+# RUN_REFCASE=c.b12.001
+# RUN_REFDATE=0002-01-01
+# NINST_OCN=7
+
+set ensemble_size = ${NINST_OCN}
+
+# Create temporary working directory for the assimilation
+set temp_dir = assimilate_dir.$$
+echo "temp_dir is $temp_dir"
+
+# Create a clean temporary directory and go there
+\rm -rf  $temp_dir
+mkdir -p $temp_dir
+cd       $temp_dir
+
+#-------------------------------------------------------------------------
+# Determine time of model state ... from file name of first member
+# of the form "./${CASE}.pop.$ensemble_member.r.2000-01-06-00000.nc"
+#-------------------------------------------------------------------------
+
+set FILE = `head -1 ../rpointer.ocn.1.restart`
+set FILE = $FILE:t
+set FILE = $FILE:r
+set OCN_DATE_EXT = `echo $FILE:e`
+set OCN_DATE_STR = `echo $FILE:e | sed -e "s#-# #g"`
+set OCN_DATE = `echo $OCN_DATE_STR`
+@ OCN_YEAR    = $OCN_DATE[1]
+@ OCN_MONTH   = $OCN_DATE[2]
+@ OCN_DAY     = $OCN_DATE[3]
+@ OCN_SECONDS = $OCN_DATE[4]
+
+echo "valid time of model is $OCN_YEAR $OCN_MONTH $OCN_DAY $OCN_SECONDS"
+
+#-----------------------------------------------------------------------------
+# Set variables containing various directory names where we will GET things
+#-----------------------------------------------------------------------------
+
+set DARTDIR = ${HOME}/DART/models/POP/work
+
+set DART_OBS_DIR = `printf %04d%02d ${OCN_YEAR} ${OCN_MONTH}`
+set  OBSDIR = /ptmp/dart/Obs_sets/GTSPP/${DART_OBS_DIR}
+
+#-------------------------------------------------------------------------
+# Populate a run-time directory with the bits needed to run DART 
+# Either get them from the CCSM 'run' directory or some stock repository
+# The grid files are absolute paths ... so they need not move.
+#-------------------------------------------------------------------------
+
+foreach FILE ( input.nml filter pop_to_dart dart_to_pop ) 
+
+   if ( -e   ../${FILE} ) then
+      cp -pv ../${FILE} .
+   else if ( -e ${DARTDIR}/${FILE} ) then
+      cp -pv    ${DARTDIR}/${FILE} .
+   else
+      echo "DART required file $FILE not found ... ERROR"
+      stop
+   endif
+
+end
+
+# what about advance_time 
+# move inflation info (if they exist) ...
+
+#-------------------------------------------------------------------------
+# Block 1: convert N POP restart files to DART initial conditions file(s)
+# pop_to_dart is serial code, we can do all of these at the same time
+# and just wait for them to finish IFF it were not for the fact we'd have
+# to have unique namelists for all of them.
+#
+# At the end of the block, we have DART restart files  filter_ics.[1-N]
+# that came from pointer files ../rpointer.ocn.[1-N].restart
+#
+# DART namelist settings appropriate/required:
+# &filter_nml:           restart_in_file_name   = 'filter_ics'
+# &ensemble_manager_nml: single_restart_file_in = '.false.'
+# &pop_to_dart_nml:      pop_to_dart_input_file = 'dart.ud',
+#-------------------------------------------------------------------------
+
+set member = 1
+while ( $member <= $ensemble_size )
+
+   set DART_IC_FILE = `printf filter_ics.%04d $member`
+   set OCN_RESTART_FILENAME = `head -1 ../rpointer.ocn.$member.restart`
+   ln -sf ../$OCN_RESTART_FILENAME pop.r.nc
+   ln -sf ../pop2_in.$member       pop_in
+
+   ./pop_to_dart
+
+   mv dart.ud $DART_IC_FILE
+   @ member++
+end
+
+#-------------------------------------------------------------------------
+# Block 2: Actually run the assimilation.
+# Will result in a set of files : 'filter_restart.xxxx'
+#
+# DART namelist settings required:
+# &filter_nml:           async                  = 0,
+# &filter_nml:           adv_ens_command        = "./no_model_advance.csh",
+# &filter_nml:           restart_in_file_name   = 'filter_ics'
+# &filter_nml:           restart_out_file_name  = 'filter_restart'
+# &filter_nml:           obs_sequence_in_name   = 'obs_seq.out'
+# &filter_nml:           obs_sequence_out_name  = 'obs_seq.final'
+# &filter_nml:           init_time_days         = -1,
+# &filter_nml:           init_time_seconds      = -1,
+# &filter_nml:           first_obs_days         = -1,
+# &filter_nml:           first_obs_seconds      = -1,
+# &filter_nml:           last_obs_days          = -1,
+# &filter_nml:           last_obs_seconds       = -1,
+# &ensemble_manager_nml: single_restart_file_in = '.false.'
+#
+#-------------------------------------------------------------------------
+
+# Determine proper observation sequence file.
+
+set OBSFNAME = `printf obs_seq.0Z.%04d%02d%02d ${OCN_YEAR} ${OCN_MONTH} ${OCN_DAY}`
+# set OBSFNAME = obs_seq.0Z.20000106.1obs
+set OBS_FILE = ${OBSDIR}/${OBSFNAME} 
+
+ln -sfv ${OBS_FILE} obs_seq.out
+
+mpirun.lsf ./filter
+
+mv Prior_Diag.nc      ../Prior_Diag.${OCN_DATE_EXT}.nc
+mv Posterior_Diag.nc  ../Posterior_Diag.${OCN_DATE_EXT}.nc
+mv obs_seq.final      ../obs_seq.${OCN_DATE_EXT}.final
+
+#  move inflation info (if they exist) ...
+
+#-------------------------------------------------------------------------
+# Block 3: Update the POP restart files ... sequentially (sigh) ...
+#
+# DART namelist settings required:
+# &filter_nml:           restart_out_file_name  = 'filter_restart'
+# &ensemble_manager_nml: single_restart_file_in = '.false.'
+# &dart_to_pop_nml:      dart_to_pop_input_file = 'dart.ic',
+# &dart_to_pop_nml:      advance_time_present   = .false.
+#-------------------------------------------------------------------------
+
+set member = 1
+while ( $member <= $ensemble_size )
+
+   set DART_RESTART_FILE = `printf filter_restart.%04d $member`
+   set OCN_RESTART_FILENAME = `head -1 ../rpointer.ocn.$member.restart`
+   ln -sf ../$OCN_RESTART_FILENAME pop.r.nc
+   ln -sf ../pop2_in.$member       pop_in
+
+   ln -sf $DART_RESTART_FILE dart.ic
+
+   ./dart_to_pop
+
+   @ member++
+end
+
+#-------------------------------------------------------------------------
+# Cleanup
+#-------------------------------------------------------------------------
+
+ls -lrt
+


Property changes on: DART/trunk/models/POP/shell_scripts/assimilate.csh
___________________________________________________________________
Added: svn:executable
   + *
Added: mime-type
   + text/plain
Added: svn:keywords
   + Date Rev Author URL Id
Added: svn:eol-style
   + native

Modified: DART/trunk/models/POP/work/input.nml
===================================================================
--- DART/trunk/models/POP/work/input.nml	2009-09-15 20:59:18 UTC (rev 4051)
+++ DART/trunk/models/POP/work/input.nml	2009-09-16 20:23:15 UTC (rev 4052)
@@ -13,19 +13,18 @@
    restart_out_file_name = "perfect_restart",
    obs_seq_in_file_name  = "obs_seq.in",
    obs_seq_out_file_name = "obs_seq.perfect",
-   adv_ens_command       = "./advance_model.csh"  /
+   adv_ens_command       = "./advance_model.csh"
+  /
 
-#  trace_execution          = .true.,
-
 &filter_nml
-   async                    = 2,
+   async                    = 4,
    adv_ens_command          = "./advance_model.csh",
-   ens_size                 = 10,
-   start_from_restart       = .false.,
+   ens_size                 =  7,
+   start_from_restart       = .true.,
    output_restart           = .true.,
-   obs_sequence_in_name     = "obs_seq.perfect",
+   obs_sequence_in_name     = "obs_seq.out",
    obs_sequence_out_name    = "obs_seq.final",
-   restart_in_file_name     = "perfect_restart",
+   restart_in_file_name     = "filter_ics",
    restart_out_file_name    = "filter_restart",
    init_time_days           = -1,
    init_time_seconds        = -1,
@@ -33,8 +32,8 @@
    first_obs_seconds        = -1,
    last_obs_days            = -1,
    last_obs_seconds         = -1,
-   num_output_state_members = 0,
-   num_output_obs_members   = 0,
+   num_output_state_members = 7,
+   num_output_obs_members   = 7,
    output_interval          = 1,
    num_groups               = 1,
    input_qc_threshold       =  4.0,
@@ -42,6 +41,7 @@
    output_forward_op_errors = .false.,
    output_timestamps        = .false.,
    output_inflation         = .true.,
+   trace_execution          = .true.,
 
    inf_flavor                  = 0,                       0,
    inf_initial_from_restart    = .false.,                 .false.,
@@ -57,14 +57,15 @@
    inf_lower_bound             = 1.0,                     1.0,
    inf_upper_bound             = 1000000.0,               1000000.0,
    inf_sd_lower_bound          = 0.0,                     0.0
-/
+  /
 
 &smoother_nml
    num_lags              = 0,
    start_from_restart    = .false.,
    output_restart        = .false.,
    restart_in_file_name  = 'smoother_ics',
-   restart_out_file_name = 'smoother_restart'  /
+   restart_out_file_name = 'smoother_restart'
+  /
 
 # cutoff of 0.03 (radians) is about 200km
 &assim_tools_nml
@@ -74,32 +75,37 @@
    spread_restoration              = .false.,
    sampling_error_correction       = .false.,
    adaptive_localization_threshold = -1,
-   print_every_nth_obs             = 0  /
+   print_every_nth_obs             = 0
+  /
 
 &ensemble_manager_nml
-   single_restart_file_in  = .true.,
+   single_restart_file_in  = .false.,
    single_restart_file_out = .false.,
-   perturbation_amplitude  = 0.2  /
+   perturbation_amplitude  = 0.2
+  /
 
 &cov_cutoff_nml
-   select_localization = 1  /
+   select_localization = 1
+  /
 
 &reg_factor_nml
    select_regression    = 1,
    input_reg_file       = "time_mean_reg",
    save_reg_diagnostics = .false.,
-   reg_diagnostics_file = "reg_diagnostics"  /
+   reg_diagnostics_file = "reg_diagnostics"
+  /
 
 &obs_sequence_nml
-   write_binary_obs_sequence = .false.  /
+   write_binary_obs_sequence = .false.
+  /
 
 &obs_kind_nml
-   assimilate_these_obs_types = 'TEMPERATURE',
-                                'SALINITY',
+   assimilate_these_obs_types = 'FLOAT_TEMPERATURE',
+                                'FLOAT_SALINITY',
                                 'U_CURRENT_COMPONENT',
                                 'V_CURRENT_COMPONENT',
      evaluate_these_obs_types = 'SEA_SURFACE_HEIGHT',
- /
+  /
 
 #          xxx_these_obs_types = 'SALINITY',
 #                                'TEMPERATURE',
@@ -138,10 +144,12 @@
    output_obs_kind_mod_file = '../../../obs_kind/obs_kind_mod.f90',
      input_obs_def_mod_file = '../../../obs_def/DEFAULT_obs_def_mod.F90',
     output_obs_def_mod_file = '../../../obs_def/obs_def_mod.f90',
-   input_files              = '../../../obs_def/obs_def_ocean_mod.f90'  /
+   input_files              = '../../../obs_def/obs_def_ocean_mod.f90'
+  /
 
 &assim_model_nml
-   write_binary_restart_files = .true.  /
+   write_binary_restart_files = .true.
+  /
 
 &model_nml
    assimilation_period_days     = 1, 
@@ -149,22 +157,16 @@
    model_perturbation_amplitude = 0.2, 
    output_state_vector          = .false.,
    debug                        = 0,  
- /
+  /
 
-  #pop_to_dart_restart_file = 'pop.r.x1A.19000102',
-  #pop_to_dart_restart_file = 'pop.r.nc',
-  #pop_to_dart_restart_file = '../utils/pop.r.latlon.19000712',
-
 &pop_to_dart_nml
-   pop_to_dart_restart_file = 'pop.r.nc',
-   pop_to_dart_output_file  = 'dart.ics',
- /
+   pop_to_dart_output_file  = 'dart.ud',
+  /
 
 &dart_to_pop_nml
-   dart_to_pop_input_file   = 'test.ic',
-   dart_to_pop_restart_file = 'pop.r.nc',
-   advance_time_present     = .true.
- /
+   dart_to_pop_input_file   = 'dart.ic',
+   advance_time_present     = .false.
+  /
 
 &location_nml
    horiz_dist_only             = .true.,
@@ -174,13 +176,15 @@
    approximate_distance        = .false.,
    nlon                        = 71,
    nlat                        = 36,
-   output_box_info             = .true.  /
+   output_box_info             = .true.
+  /
 
 &utilities_nml
    TERMLEVEL = 1,
    module_details = .false.,
    logfilename = 'dart_log.out',
-   nmlfilename = 'dart_log.nml'  /
+   nmlfilename = 'dart_log.nml'
+  /
 
 &restart_file_tool_nml
    input_file_name              = "filter_restart",
@@ -197,7 +201,8 @@
    overwrite_advance_time       = .false.,
    new_advance_days             = -1,
    new_advance_secs             = -1,
-   gregorian_cal                = .true.  /
+   gregorian_cal                = .true.
+  /
 
 &obs_sequence_tool_nml
    num_input_files = 7,
@@ -209,7 +214,8 @@
                      '../observations/adcp_v_pseudo.obs_seq.out',
                      '../observations/tmi_pseudo.obs_seq.out',
    filename_out    = 'obs_seq.out',
-   gregorian_cal   = .true.  /
+   gregorian_cal   = .true.
+  /
 
 # other possible obs tool namelist items:
 #
@@ -285,5 +291,26 @@
             -530.2654, -618.0071, -718.9376, -834.6679, -966.8794, 
             -1117.289, -1287.607, -1479.480, -1694.436, -1933.820, 
             -2198.734, -2489.986, -2808.042, -3153.009, -3524.622, 
-            -3922.264, -4344.997, -4791.606, -5260.660, -5750.303   /
+            -3922.264, -4344.997, -4791.606, -5260.660, -5750.303
+  /
 
+&schedule_nml
+   calendar        = 'Gregorian',
+   first_bin_start =  1999, 12, 31, 12, 0, 0 ,
+   first_bin_end   =  2000,  1,  1, 12, 0, 0 ,
+   last_bin_end    =  2000,  1,  7, 12, 0, 0 ,
+   bin_interval_days    = 1,
+   bin_interval_seconds = 0,
+   max_num_bins         = 1000,
+   print_table          = .true.
+  /
+
+&obs_seq_to_netcdf_nml
+   obs_sequence_name = '/gpfs/ptmp/thoar/dart.001hy/run/obs_seq.2000-01-06-00000.final'
+   lonlim1    =    0.0,
+   lonlim2    =  360.0,
+   latlim1    =  -90.0,
+   latlim2    =   90.0,
+   verbose    = .false.
+  /
+


More information about the Dart-dev mailing list