Ocean State Estimation Projects


images/rule5.jpg
Description Results Publications Team Members
images/rule5.jpg

Adjoint Development for ROMS/SCRUM

images/onrsmall.jpg

Real-time ocean forecasting involves assembling an initial state which often requires merging many types of data which are usually gathered over non-synoptic timescales. The most appealing method for generating a dynamically consistent initial state is the application of the adjoint.

The adjoint is an elegant tool for determining the structure of data sensitivity to model parameters. It will be used to fit an ocean model to observations for use in initializing forecasts and fusing data in hindcasts. The representers, the structure of the sensitivity of a single datum to the model parameters (Bennett, 1992, Academic Press), provide important diagnostics for designing sampling strategies, and for testing model predictability limits.

We are presently applying a Green's function inverse technique in the CalCOFI domain (funded by NASA) using the Regional Ocean Modeling System (ROMS), which is a descendent of SCRUM (Song and Haidvogel, 1994) that is being jointly developed by UCLA and Rutgers. It is of interest to develop the more elegant adjoint model to compare it with the Green's function technique and to address model sensitivity to individual data and avoid the complications of finite differencing.

We intend to develop the ROMS/SCRUM adjoint by applying the Tangent linear and Adjoint Model Compiler (TAMC) of Giering and Kaminski. Giering has successfully applied the compiler to the MIT ocean circulation model, and other applications are in progress. The compiler requires that ocean models written in FORTRAN use no GOTO statements (or alternate ENTRY or RETURN statements) so we will have to change the structure of SCRUM somewhat to allow its application, although the serial version of SCRUM was written to be ``adjoint-ready". The code resulting from the adjoint compiler must be further modified by hand to make it work. It will also need to be tested against the finite-difference sensitivities. The final step is to embed the adjoint in an optimization procedure to fit the model to data, using either iterative methods like conjugate gradients or LSQR, or the representer method of Bennett (1992).

Our long term technical goal is to develop an adjoint for ROMS/SCRUM that is suitable for general use by SCRUM modelers. This is complementary to the Kalman filter techniques being developed by Rutgers scientists, and to the Green's functions techniques that we are implementing here at CRD. Our long-term scientific goal is to model and predict the mesoscale circulation and the ecosystem response to physical forcing in the California Current CalCOFI region through ROMS/SCRUM primitive equation modeling/assimilation.

images/rule5.jpg

RESULTS

We have made our initial attempt to apply the TAMC to ROMS/SCRUM. Both versions of ROMS (the UCLA and the Rutgers versions), which are written for parallel machines, and the serial model SCRUM 4.0 (Rutgers) are not able to be used simply with the TAMC. Parallel loops are not proccessed correctly by TAMC. The frequent use of certain constant and scratch arrays in the parallel code are not understood by TAMC. The tracer array in ROMS has 5 indices t(x,y,z,t,tracer_type); but TAMC is only able to process the array if it is defined without the tracer_type index. In general, it seems that the structure of the parallel code is not in the class of codes that the TAMC compiler can process. The serial version (SCRUM 4) appears to be more suitable for TAMC, although after preliminary testing it is clear that major changes to the structure of the code are needed in order to make it completely compatible with the TAMC.

All three codes (ROMS/UCLA, ROMS/Rutgers and SCRUM/serial) are now configured and running for the CalCOFI domain for future comparisons. Changes were applied to the boundary conditions of ROMS/Rutgers and SCRUM/serial to make the simulations "comparable" to ROMS/UCLA (our base code).

In order to develop a useful adjoint, the following must be accomplished. Because the parallel codes would have to be completely re-structured, the serial code is the best bet for generating an adjoint. The serial adjoint would only be useful if the serial code mimics the parallel code in all basic physics, boundary conditions, forcing, etc. It thus needs to be updated to assure this is true. The best way to generate the serial adjoint seems to be to process subroutines individually with TAMC, with the idea of the revised forward code being capatible with TAMC (allowing the adjoint to be generated with each new version/application of the forward code). This will require a lot of tedious programming. Rutgers has agreed to work with SIO towards this goal. But it is unclear if the adjoint can be generated with a reasonable amount of effort. Further investigation of the abilities of TAMC may lead us to change our strategies, perhaps even applying it directly to the parallel code, which presently seems to be an unfeasible task.

Continuing work on this project is available for perusal in http format.

images/rule5.jpg

PUBLICATIONS

N/A

images/rule5.jpg

TEAM MEMBERS

Dr. Bruce D. Cornuelle (PORD-CRD/SIO)

Mr. Emanuele Di Lorenzo (CRD/SIO)

Dr. Hernan G. Arango (Rutgers University)

Dr. Arthur J. Miller (CRD/SIO)

Dr. Douglas J. Neilson (CRD/SIO)

images/rule5.jpg

[ ROMS/SCRUM Adjoint | CALCOFI Mesoscale | CALCOFI Ecosystem | ECPC ]
[ CORC | Iceland/Faroe Fit | Estimation Projects Home Page ]
[Team Members | Publications ]
Email us at dneilson@ucsd.edu