|
|
Ocean State Estimation Projects
|
Adjoint Development for ROMS/SCRUM |
 |
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.
 |
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.
 |
PUBLICATIONS
N/A
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)
[ 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
|