Double Gyre, 4DVar Test

Information about ongoing ROMS/TOMS applications

Moderators: arango, robertson

Post Reply
User avatar
Site Admin
Posts: 1128
Joined: Wed Feb 26, 2003 4:41 pm
Location: IMCS, Rutgers University

Double Gyre, 4DVar Test

#1 Post by arango » Tue May 08, 2007 9:35 pm

Idealized Double Gyre, 4DVar Twin Experiments

We use the idealized double gyre application (DOUBLE_GYRE) to test all the adjoint-based algorithms. The double gyre is set-up in a 1000x2000 km2 rectangular basin with a constant depth of 500 m. The basic configuration parameters are:

Code: Select all

   grid = 54 x 108 x 4
     dx = 18.5185 km
     dy = 18.5185 km
     dt = 3600 s (24 timesteps per day)
  depth = 500 m
  visc2 = 1280 m2/s (steady solution)
A high viscosity value is used to suppress eddy activity and achieve a steady state solution. The model is spun-up for 20 years. Then, the viscosity is lowered to 160 m2/s and run for another 10 years to compute the unsteady solution which is used to compute the background error correlation standard deviations. This is used to dimensionalize the background error covariance used in the IS4DVAR spatial convolutions. The model is further run for one day to get the true ocean state used in the one-day data assimilation twin experiments. The observations to assimilate are extracted at day 1 and at every grid point for SSH, u, v, temperture and salinity from this one-day run.

The first guess (backgound) for the assimilation experiments (basic state initial conditions) is the average of the 10-year unsteady solution.

All the NetCDF files needed to run the IS4DVAR algorithm are provided here :arrow: See tar file double_gyre.tar.gz containing the following files:
  • Data/ Background state computed as the 10-year time average of the unsteady solution. It is used as first guess initial conditions for the nonlinear model. In operational prediction, the first guess is usually the previous forecast.
  • Data/ Eigenpairs used to approximate the Hessian matrix during preconditioning. These eigenvalues and eigenvectors are computed from the Lanczos/conjugate gradient algorithm when IS4DVAR and LANCZOS CPP options are activated. For more information, please visit the following link. :arrow:
  • Data/ Unsteady initial conditions for the nonlinear model to compute the true state used to extract twin experiment observations. The nonlinear model is run for just one day. The observations are extracted from the day one history record.
  • Data/ Generic zero fields initial conditions used to initialize the tangent linear and adjoint models. The adjoint model is always initialized from rest. The tangent linear model is intialized from rest at the start of the inner loop.
  • Data/ Background error covariance normalization coefficients. They only need to be computed once for a particular set of decorrelation scales. Please check the following link :arrow: for detailed information.
  • Data/ Background error covariance standard deviation computed from the 10-year unsteady solution. It is used to dimensionalize the Background error correlations during the spatial convolutions.
  • OBS/ Sea surface height and sea surface temperature observations at every grid point, day 1.
  • OBS/ Sea surface height, 3D momentum, temperature, and salinity observations at every grid point, day 1.
  • IS4DVAR/ IS4DVAR file configuration script. It needs to be excuted every time before running the IS4DVAR algorithm. See its contents for more information.
The following developers link :arrow: provides information about the IS4DVAR algorithm that uses the conjugate gradient without the Lanczos algorithm. The advantage of this algorithm is that reports the value of the cost function at every iteration. The Lanczos algorithm only can compute the value of the cost function at the last inner loop. Both algorithms produces similar solutions. The Lanczos algorithm is more expensive due to the additional IO. It only needs to be run once to estimate the eigenpairs used during preconditioning.

Notice that the following directory structure is recommended to set-up your application. For example,

Code: Select all

      Projects/                                    Root Application directory
              /double_gyre/                        Double gyre application
                          /Data                    Input NetCDF files
                          /Forward                 Nonlinear model solution
                          /IS4DVAR                 Is4DVAR estimation
                          /OBS                     Data assimilation observations
Several subdirectories may be added for other adjoint-based applications.

User avatar
Posts: 521
Joined: Tue Jul 01, 2003 4:12 am
Location: NIWA

#2 Post by m.hadfield » Mon May 14, 2007 11:52 pm

I still don't get it :?

We have a Forward subdirectory into which we install a forward model executable? In ROMS/Include/double_gyre.h there are a whole set of #if blocks. The first is headed "#if defined NLM_DRIVER". Is this the one you use to generated the forward model? Then there's one headed #if defined PICARD_TEST" and several others with more complicated conditions. Presumably I can build each of these by setting the appropriate preprocessor macros and install the executable into its own subdirectory? So I build the ones I need then run to build the input scripts and to run the process??

Post Reply