Changes between Version 1 and Version 2 of Ticket #825


Ignore:
Timestamp:
09/20/19 05:15:24 (5 years ago)
Author:
arango
Comment:

Legend:

Unmodified
Added
Removed
Modified
  • Ticket #825

    • Property ResolutionDone
    • Property Status newclosed
  • Ticket #825 – Description

    v1 v2  
    9393}}}
    9494
    95 * The routine '''check_multifile''' was updated to include more '''TYPE(T_IO)''' structures to process for information about multiple files or not.  Two new generic subroutines '''multifile_info_s1d''' and '''multifile_info_s2d''' where written to inquire about 1D and 2D''' TYPE(T_IO)''' structures, repectively. They are called in a compact way in '''check_multifile''':
     95* The routine '''check_multifile''' was updated to include more '''TYPE(T_IO)''' structures to process for information about multiple files or not.  Two new generic subroutines '''multifile_info_s1d''' and '''multifile_info_s2d''' were written to inquire about 1D and 2D''' TYPE(T_IO)''' structures, repectively. They are called in a compact way in '''check_multifile''':
    9696 {{{
    9797#ifdef FORWARD_READ
     
    168168 or using provided scripts '''check_openfiles.bash''' or '''check_openfiles.sh''' located in '''ROMS/Bin'''.
    169169
    170 * Use the multiple filename entries in roms.in and end with the verical bar (|) symbol. For example:
     170* Use the multiple filename entries in '''roms.in''' and end with the vertical bar (|) symbol. For example:
    171171 {{{
    172172     FWDNAME == wc13_fwd_outer0_0001.nc |
     
    196196                wc13_fct_B_0007.nc
    197197}}}
    198  if appropriate.
     198 if appropriate. The files need to be ordered in ascending time coordinate.
     199
     200* The multipe output files are activated in '''roms.in''' by setting any of their parameters ('''NDEFHIS''', '''NDEFQCK''', '''NDEFAVG''', '''NDEFDIA''') to be greater than zero.  ROMS creates new files every specified number of timesteps. The parameters '''NDEFADJ''' and '''NDEFTLM''' are special and some algorithms do not allow its values to be greater than zero.
     201
     202* Started to solve the issue with '''DSTART''' in the adjoint-based algorithms.  The management of '''DSTART''' has evolved over the years. It is set in '''roms.in''' standard input file. Nowadays, we need to set its value to the actual initialization time (in days) every time that we run any of the 4D-Var drivers or their associated analysis tools.  The reason for it is that '''tl_initial''', '''rp_initial''', and '''ad_initial''' rarely reads an initial conditions NetCDF file for the '''TLM''', '''RPM''', and '''ADM''', respectively.  Usually, those initial conditions are initialized from rest ('''zeros''') or computed by the 4D-Var driver.  Therefore, we need to use '''DSTART''' to compute the correct and crucial time-stepping parameters:  '''time(ng)''', '''tdays(ng)''', '''ntstart(ng)''', '''ntend(ng)''', and '''ntfirst(ng)''' since we are not reading an initial NetCDF file to set '''time(ng)''' for those kernels.
     203
     204 My current strategy is to use the initialization time from the nonlinear model or forward trajectory, which is now saved in '''INItime(ng)'''.   It is already coded but not activated because it requires rigorous testing.  I am not fully satisfied yet.  This capability is activated with the new '''GENERIC_DSTART''' C-preprocessing option.   '''Please do not activate this option'''!  You may get different and wrong results.  There is a tricky bug somewhere that I haven't been able to find. In '''tl_initial.F''', we have:
     205 {{{
     206# ifdef GENERIC_DSTART
     207!
     208!  Rarely, the tangent linear model is initialized from a NetCDF file,
     209!  so we do not know its actual initialization time. Usually, it is
     210!  computed from DSTART, implying that its value is correct in the ROMS
     211!  input script. Therefore, the user needs to check and update its value
     212!  to every time that ROMS is executed. Alternatively, if available, we
     213!  can use the initialization time from the nonlinear model, INItime.
     214!  This variable is assigned when computing or processing the basic
     215!  state trajectory needed to linearize the adjoint model.
     216!
     217      IF (INItime(ng).lt.0.0_dp) THEN
     218        my_dstart=dstart                    ! ROMS input script
     219      ELSE
     220        my_dstart=INItime(ng)/86400.0_dp    ! NLM IC time is known
     221      END IF
     222      tdays(ng)=my_dstart
     223# else
     224      tdays(ng)=dstart
     225# endif
     226      time(ng)=tdays(ng)*day2sec
     227}}}
     228
     229 The reason why I am looking at it is that we want an unrestrained value of '''DSTART''' because of the multiple-file option that now is allowed in the adjoint-based algorithms.  Recall that '''DSTART''' controls the split file enumeration and the starting value for '''iic(ng)'''. If '''DSTART''' is set to the initial conditions time value, the count always starts at zero.
     230
     231* Corrected few tiny bugs in the 2D applications set-up.  Many thanks to Brian Powell for bringing these issues to my attention.