Status of the NEMOTAM development is available in the Hand Coding? section. Developers can choose one of the modules marked as "to do" and start coding it (do not forget to change its status to avoid duplicate).

The NEMOTAM modules should follow the NEMO and NEMOVAR convention.

However additional rules hes to be followed:

  • For a given direct module mod.F90 (that contains the subroutine sub), a corresponding module mod_tam.F90 has to be created and it should contain the tangent linear subroutine called sub_tan, the adjoint subroutine sub_adj and the corresponding testing routine sub_adj_tst.
  • For a given active direct variable var, the corresponding tangent linear and adjoint variable should be named var_tl and var_ad respectively. The underscore is omitted for local active variable. To summarize, active variables un, pun and zun will give un_tl, pun_tl and zuntl in the tangent module
  • For historical reasons, some modules do not follow these rules, feel free to update them.

If the TAM module is a direct translation of the corresponding OPATAM routine, a good practice is to account for it in the first line of the history (i.e. stating that the 8.2 version was done by e.g. Huey, Dewey, and Louie)

 white , red:

  • usage of USE in TAM: it is preferred to use ONLY statement to have a more readable code.

Module Structure

We remind here the basic structure of a TAM module.

For most of the OPA modules we have:

 Module
  * subroutine1
  * subroutine2
  * ...
  * subroutine_init/ctl

It would correspond to the following layout in OPA_TAM:

 Module_tam
  * subroutine1_tan
  * subroutine2_tan
  * ...
  * subroutine1_adj
  * subroutine2_adj
  * ...
  * subroutine_tam_init/ctl
  * ...
  * subroutine_adj_tst1
  * subroutine_adj_tst2
  * ...

Last modified 11 years ago Last modified on 2009-10-23T15:32:52+02:00