New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
WorkingGroups/TAM/ReferenceManual/CodingNorm – NEMO
wiki:WorkingGroups/TAM/ReferenceManual/CodingNorm

Version 1 (modified by avidard, 15 years ago) (diff)

--

Status of the NEMOTAM development is available at http://www.cerfacs.fr/globc/nemovar/index.php/Hand_Coding 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 <tt>mod.F90</tt> (that contains the subroutine sub), a corresponding module <tt>mod_tam.F90</tt> has to be created and it should contain the tangent linear subroutine called <tt>sub_tan</tt>, the adjoint subroutine <tt>sub_adj</tt> and the corresponding testing routine <tt>sub_adj_tst</tt>.
  • For a given active direct variable <tt>var</tt>, the corresponding tangent linear and adjoint variable should be named <tt>var_tl</tt> and <tt>var_ad</tt> respectively. The underscore is omitted for local active variable. To summarize, active variables <tt>un<\tt>, <tt>pun<\tt> and <tt>zun<\tt> will give <tt>un_tl<\tt>, <tt>pun_tl<\tt> and <tt>zuntl<\tt> 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)