[MITgcm-devel] adseaice_lsr
Martin Losch
Martin.Losch at awi.de
Tue Sep 27 11:03:33 EDT 2011
Hi there,
I have had this suspicion for quite some time now, but only because Jean-Michel cleaned up the seaice_lsr code considerably, the adseaice_lsr becomes vaguely comprehensible:
I think that the adjoint code of adseaice_lsr does not do, what it is supposed to do. In particular, when you run, e.g., ./testreport -adm -t lab_sea, you'll get taf-code for adseaice_lsr, that has a section:
[ ... ]
C ITERATION
do m = 1, solv_max_iters
C RESET ADJOINT INPUT VARIABLES
[ ... ]
C ADJOINT LOOP KERNEL
C$taf INCOMPLETE cuu,cvv,uice,urt,utmp,vice,vrt,vtmp
print *, 'ml-adseaice_lsr', m, doiterate4u, doiterate4v
if (doiterate4u .or. doiterate4v) then
[ here the adjoint stuff happens ]
endif
[ ... ]
enddo
[ ... ]
The print statement that I put there, tells me that both doiterate4u and doiterate4v are always false and you'll never do any adjoint computations within the "adjoint" loop.
What do you think? It might have to do with the use of the CADJ ITERATION directive, which might need adjustment after Jean-Michel's changes. According to the TAF manual, it should look something like:
C$TAF LOOP=iteration uice = sometape
C$TAF LOOP=iteration vice = sometape
otherwise (without "sometape") you get some recomputations (which are probably OK, too).
What puzzles me is that apparently the results of the adjoint do not change, so we might have had this issue even before Jean-Michel's changes?
Martin
More information about the MITgcm-devel
mailing list