ROMS/TOMS Developers

Algorithms Update Web Log
« Previous PageNext Page »

arango - August 22, 2006 @ 13:30
Restart/4DVar Initialization- Comments (0)

I made few changes:

  • Introduced changes in get_state.F to allow reading vertical viscosity and diffusion coefficients, if available, during initialization when GLS_MIXING, LMD_MIXING, or MY25_MIXING are activated. Otherwise, during restart or 4DVAR these coefficients will have the background value during the predictor corrector which require sometimes to reduce the time-step to avoid the model to blow-up.
  • Added new CPP option RAMP_TIDES to activate ramping of tidal forcing for one day during initialization. This is usually a good idea to avoid a sharp shock to the system. This was hardwired in routine set_tides.F.
  • Added open boundary sponge for applications SW06_COARSE and SW06_FINE in routine horz_mix.F.
For the current updated file list .

arango - August 20, 2006 @ 11:24
4DVar Observations Processing- Comments (0)

Corrected few routines to allow assimilating observations from a master NetCDF file containing data outside the assimilation time window:

  • Fixed a bug in obs_initial.F to allow processing of the observations from a NetCDF file containing surveys outside of the assimilation time window. The model now search for the available observations and ignores outbound time records. This is nice because there is not need to write the observation file to specific time records used in the assimilation window. Only one observation file is needed. Since the datum dimension is unlimited, this observation file can grow in real-time applications.
  • Modified obs_write.F, ad_misfit.F, and ad_htobs.F to report better the observations as they are processed. I was not reporting the observation processing information during the adjoint execution. Now will see something like:
       Number of State Observations Processed: ObsTime = 194.8962
    
       Variable IstrObs IendObs Count Rejected
    
       temp 1047 1084 38 0
       salt 1085 1122 38 0
    
       Total 76 0
       Obs Tally 986 0
    
       Wrote background state at observation locations, datum = 0001047 - 0001122
    

    Notice that now the processing of each state variable is in terms of datum record in the observation NetCDF file. Also, I am now reporting the tally count of all observations processed.

  • Corrected a segmentation fault in nf_fread2d.F and nf_fread3d.F in some new cluster systems. The problem was with the inconsistency in the use of the intent(inout) for gtype and all the subroutine calls.
For the current updated file list .

arango - August 18, 2006 @ 10:50
Updated Algorithms, Version 3.0- Comments (0)

I updated few routines to correct few things:

  • Fixed a problem with incremental 4DVar (IS4DVAR) that forced the inner loop to converge after two iterations of the inner loop regardless of the values used for the convergence of the total cost function, CostFunFac. This parameter is set in s4dvar.in and represents the percentage of total cost function change between successive iterations in the inner loop. The comparison between old and new values was wrong. Many thanks to Javier and Brian for noticing this.
  • Corrected the fifth argument call for routine get_state for several drivers. Now a dummy variable is used instead of a numerical value. This variable has the intent(inout) declaration in get_state. This problem was giving us segmentation violation in a cluster using MPI. Many thanks to Brian for finding this one.
For the current updated file list .

arango - August 16, 2006 @ 18:02
4DVAR Conjugate Gradient Step-Size- Comments (0)

The minimization in the descent algorithm for inner loop iteration n is given by

     last page eq1

where αn is the step size and dn are the conjugate direction vectors:

     last page eq2

     last page eq3

or

     last page eq4

The steepest descent occurs when β = 0. This happens either every NiterSD iterations or when dot2 > CGtol * dot1, where

     last page eq5

     last page eq6

The refined step size is computed in the second inner loop pass, m = 2, as

     last page eq7

arango - August 16, 2006 @ 17:59
ROMS/TOMS Incremental 4DVAR Diagram- Comments (0)

The ROMS/TOMS incremental, strong contraint 4DVAR (IS4DVAR) driver, is4dvar_ocean.h, is as follows:

IS4DVAR Tree