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.
Changeset 11713 for NEMO/trunk/src/TOP – NEMO

Changeset 11713 for NEMO/trunk/src/TOP


Ignore:
Timestamp:
2019-10-17T17:49:19+02:00 (5 years ago)
Author:
nicolasmartin
Message:

Revamp TOP README and implement a TODO list
Review tracers.rst by adding snippets of source files
Add drafthtml target for Makefile related to draft building tag for sphinx-build to
display todo items at the top of the guide homepage

Misc:

  • Use dedicated :file: role instead of ... for file or directory
  • Update BibTeX entries of NEMO reference publications by using :title: role
  • Dump of RELEASE_NOTES.rst
  • New file todos.rst to list all items declared with todo directive
  • Modify conf.py to add a conditional test for draft tag
File:
1 edited

Legend:

Unmodified
Added
Removed
  • NEMO/trunk/src/TOP/README.rst

    r11708 r11713  
    44 
    55.. contents:: 
    6    :local: 
    7  
    8 TOP (Tracers in the Ocean Paradigm) is the NEMO hardwired interface toward biogeochemical models and 
    9 provide the physical constraints/boundaries for oceanic tracers. 
    10 It consists of a modular framework to handle multiple ocean tracers, including also a variety of built-in modules. 
     6   :local: 
     7 
     8TOP (Tracers in the Ocean Paradigm) is the NEMO hardwired interface toward 
     9biogeochemical models and provide the physical constraints/boundaries for oceanic tracers. 
     10It consists of a modular framework to handle multiple ocean tracers, 
     11including also a variety of built-in modules. 
    1112 
    1213This component of the NEMO framework allows one to exploit available modules (see below) and 
    1314further develop a range of applications, spanning from the implementation of a dye passive tracer to 
    1415evaluate dispersion processes (by means of MY_TRC), track water masses age (AGE module), 
    15 assess the ocean interior penetration of persistent chemical compounds (e.g., gases like CFC or even PCBs), 
    16 up to the full set of equations involving marine biogeochemical cycles. 
     16assess the ocean interior penetration of persistent chemical compounds 
     17(e.g., gases like CFC or even PCBs), up to the full set of equations involving 
     18marine biogeochemical cycles. 
    1719 
    1820Structure 
    1921========= 
    2022 
    21 TOP interface has the following location in the source code ``./src/MBG/`` and 
     23TOP interface has the following location in the source code :file:`./src/TOP` and 
    2224the following modules are available: 
    2325 
    24 ``TRP`` 
    25    Interface to NEMO physical core for computing tracers transport 
    26  
    27 ``CFC`` 
    28    Inert carbon tracers (CFC11,CFC12,SF6) 
    29  
    30 ``C14`` 
    31    Radiocarbon passive tracer 
    32  
    33 ``AGE`` 
    34    Water age tracking 
    35  
    36 ``MY_TRC`` 
    37    Template for creation of new modules and external BGC models coupling 
    38  
    39 ``PISCES`` 
    40    Built in BGC model. 
    41    See [https://www.geosci-model-dev.net/8/2465/2015/gmd-8-2465-2015-discussion.html Aumont et al. (2015)] for 
    42    a throughout description. | 
    43  
    44 The usage of TOP is activated i) by including in the configuration definition  the component ``MBG`` and 
    45 ii) by adding the macro ``key_top`` in the configuration CPP file 
    46 (see for more details [http://forge.ipsl.jussieu.fr/nemo/wiki/Users "Learn more about the model"]). 
     26:file:`TRP` 
     27   Interface to NEMO physical core for computing tracers transport 
     28 
     29:file:`CFC` 
     30   Inert carbon tracers (CFC11,CFC12,SF6) 
     31 
     32:file:`C14` 
     33   Radiocarbon passive tracer 
     34 
     35:file:`AGE` 
     36   Water age tracking 
     37 
     38:file:`MY_TRC` 
     39   Template for creation of new modules and external BGC models coupling 
     40 
     41:file:`PISCES` 
     42   Built in BGC model. See :cite:`gmd-8-2465-2015` for a throughout description. 
     43 
     44The usage of TOP is activated 
     45*i)* by including in the configuration definition the component ``TOP`` and 
     46*ii)* by adding the macro ``key_top`` in the configuration CPP file 
     47(see for more details :forge:`"Learn more about the model" <wiki/Users>`). 
    4748 
    4849As an example, the user can refer to already available configurations in the code, 
     
    5152(see also Section 4) . 
    5253 
    53 Note that, since version 4.0, TOP interface core functionalities are activated by means of logical keys and 
     54Note that, since version 4.0, 
     55TOP interface core functionalities are activated by means of logical keys and 
    5456all submodules preprocessing macros from previous versions were removed. 
    5557 
     
    5759 
    5860``key_iomput`` 
    59    use XIOS I/O 
     61   use XIOS I/O 
    6062 
    6163``key_agrif`` 
    62    enable AGRIF coupling 
     64   enable AGRIF coupling 
    6365 
    6466``key_trdtrc`` & ``key_trdmxl_trc`` 
    65    trend computation for tracers 
     67   trend computation for tracers 
    6668 
    6769Synthetic Workflow 
    6870================== 
    6971 
    70 A synthetic description of the TOP interface workflow is given below to summarize the steps involved in 
    71 the computation of biogeochemical and physical trends and their time integration and outputs, 
     72A synthetic description of the TOP interface workflow is given below to 
     73summarize the steps involved in the computation of biogeochemical and physical trends and 
     74their time integration and outputs, 
    7275by reporting also the principal Fortran subroutine herein involved. 
    7376 
    74 **Model initialization (OPA_SRC/nemogcm.F90)** 
    75  
    76 call to trc_init (trcini.F90) 
    77  
    78   ↳ call trc_nam (trcnam.F90) to initialize TOP tracers and run setting 
    79  
    80   ↳ call trc_ini_sms, to initialize each submodule 
    81  
    82   ↳ call trc_ini_trp, to initialize transport for tracers 
    83  
    84   ↳ call trc_ice_ini, to initialize tracers in seaice 
    85  
    86   ↳ call trc_ini_state, read passive tracers from a restart or input data 
    87  
    88   ↳ call trc_sub_ini, setup substepping if {{{nn_dttrc /= 1}}} 
    89  
    90 **Time marching procedure (OPA_SRC/stp.F90)** 
    91  
    92 call to trc_stp.F90 (trcstp.F90) 
    93  
    94   ↳ call trc_sub_stp, averaging physical variables for sub-stepping 
    95  
    96   ↳ call trc_wri, call XIOS for output of data 
    97  
    98   ↳ call trc_sms, compute BGC trends for each submodule 
    99  
    100     ↳ call trc_sms_my_trc, includes also surface and coastal BCs trends 
    101  
    102   ↳ call trc_trp (TRP/trctrp.F90), compute physical trends 
    103  
    104     ↳ call trc_sbc, get trend due to surface concentration/dilution 
    105  
    106     ↳ call trc_adv, compute tracers advection 
    107  
    108     ↳ call to trc_ldf, compute tracers lateral diffusion 
    109  
    110     ↳ call to trc_zdf, vertical mixing and after tracer fields 
    111  
    112     ↳ call to trc_nxt, tracer fields at next time step. Lateral Boundary Conditions are solved in here. 
    113  
    114     ↳ call to trc_rad, Correct artificial negative concentrations 
    115  
    116   ↳ call trc_rst_wri, output tracers restart files 
     77Model initialization (:file:`./src/OCE/nemogcm.F90`) 
     78---------------------------------------------------- 
     79 
     80Call to ``trc_init`` subroutine (:file:`./src/TOP/trcini.F90`) to initialize TOP. 
     81 
     82.. literalinclude:: ../../../src/TOP/trcini.F90 
     83   :language:        fortran 
     84   :lines:           41-86 
     85   :emphasize-lines: 21,30-32,38-40 
     86   :caption:         ``trc_init`` subroutine 
     87 
     88Time marching procedure (:file:`./src/OCE/step.F90`) 
     89---------------------------------------------------- 
     90 
     91Call to ``trc_stp`` subroutine (:file:`./src/TOP/trcstp.F90`) to compute/update passive tracers. 
     92 
     93.. literalinclude:: ../../../src/TOP/trcstp.F90 
     94   :language:        fortran 
     95   :lines:           46-125 
     96   :emphasize-lines: 42,55-57 
     97   :caption:         ``trc_stp`` subroutine 
     98 
     99BGC trends computation for each submodule (:file:`./src/TOP/trcsms.F90`) 
     100------------------------------------------------------------------------ 
     101 
     102.. literalinclude:: ../../../src/TOP/trcsms.F90 
     103   :language:        fortran 
     104   :lines:           21 
     105   :caption:         :file:`trcsms` snippet 
     106 
     107Physical trends computation (:file:`./src/TOP/TRP/trctrp.F90`) 
     108-------------------------------------------------------------- 
     109 
     110.. literalinclude:: ../../../src/TOP/TRP/trctrp.F90 
     111   :language:        fortran 
     112   :lines:           46-95 
     113   :emphasize-lines: 17,21,29,33-35 
     114   :caption:         ``trc_trp`` subroutine 
    117115 
    118116Namelists walkthrough 
    119117===================== 
    120118 
    121 namelist_top 
    122 ------------ 
    123  
    124 Here below are listed the features/options of the TOP interface accessible through the namelist_top_ref and 
    125 modifiable by means of namelist_top_cfg (as for NEMO physical ones). 
    126  
    127 Note that ## is used to refer to a number in an array field. 
     119:file:`namelist_top` 
     120-------------------- 
     121 
     122Here below are listed the features/options of the TOP interface accessible through 
     123the :file:`namelist_top_ref` and modifiable by means of :file:`namelist_top_cfg` 
     124(as for NEMO physical ones). 
     125 
     126Note that ``##`` is used to refer to a number in an array field. 
    128127 
    129128.. literalinclude:: ../../namelists/namtrc_run 
     
    166165   :language: fortran 
    167166 
    168 Two main types of data structure are used within TOP interface to initialize tracer properties (1) and 
     167Two main types of data structure are used within TOP interface 
     168to initialize tracer properties (1) and 
    169169to provide related initial and boundary conditions (2). 
    170170 
    171 **1. TOP tracers initialization**: sn_tracer (namtrc) 
     1711. TOP tracers initialization: ``sn_tracer`` (``&namtrc``) 
     172^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 
    172173 
    173174Beside providing name and metadata for tracers, 
    174 here are also defined the use of initial ({{{sn_tracer%llinit}}}) and 
    175 boundary ({{{sn_tracer%llsbc, sn_tracer%llcbc, sn_tracer%llobc}}}) conditions. 
    176  
    177 In the following, an example of the full structure definition is given for two idealized tracers both with 
    178 initial conditions given, while the first has only surface boundary forcing and 
     175here are also defined the use of initial (``sn_tracer%llinit``) and 
     176boundary (``sn_tracer%llsbc, sn_tracer%llcbc, sn_tracer%llobc``) conditions. 
     177 
     178In the following, an example of the full structure definition is given for 
     179two idealized tracers both with initial conditions given, 
     180while the first has only surface boundary forcing and 
    179181the second both surface and coastal forcings: 
    180182 
    181183.. code-block:: fortran 
    182184 
    183    !             !    name   !           title of the field            !   units    ! initial data ! sbc   !   cbc  !   obc  ! 
    184    sn_tracer(1)  = 'TRC1'    , 'Tracer 1 Concentration                ',   ' - '    ,  .true.      , .true., .false., .true. 
    185    sn_tracer(2)  = 'TRC2 '   , 'Tracer 2 Concentration                ',   ' - '    ,  .true.      , .true., .true. , .false. 
     185   !             !    name   !           title of the field            !   units    ! initial data ! sbc   !   cbc  !   obc  ! 
     186   sn_tracer(1)  = 'TRC1'    , 'Tracer 1 Concentration                ',   ' - '    ,  .true.      , .true., .false., .true. 
     187   sn_tracer(2)  = 'TRC2 '   , 'Tracer 2 Concentration                ',   ' - '    ,  .true.      , .true., .true. , .false. 
    186188 
    187189As tracers in BGC models are increasingly growing, 
     
    190192.. code-block:: fortran 
    191193 
    192    !             !    name   !           title of the field            !   units    ! initial data ! 
    193    sn_tracer(1)  = 'TRC1'    , 'Tracer 1 Concentration                ',   ' - '    ,   .true. 
    194    sn_tracer(2)  = 'TRC2 '   , 'Tracer 2 Concentration                ',   ' - '    ,   .true. 
    195    ! sbc 
    196    sn_tracer(1)%llsbc = .true. 
    197    sn_tracer(2)%llsbc = .true. 
    198    ! cbc 
    199    sn_tracer(2)%llcbc = .true. 
     194   !             !    name   !           title of the field            !   units    ! initial data ! 
     195   sn_tracer(1)  = 'TRC1'    , 'Tracer 1 Concentration                ',   ' - '    ,   .true. 
     196   sn_tracer(2)  = 'TRC2 '   , 'Tracer 2 Concentration                ',   ' - '    ,   .true. 
     197   ! sbc 
     198   sn_tracer(1)%llsbc = .true. 
     199   sn_tracer(2)%llsbc = .true. 
     200   ! cbc 
     201   sn_tracer(2)%llcbc = .true. 
    200202 
    201203The data structure is internally initialized by code with dummy names and 
    202 all initialization/forcing logical fields set to .false. . 
    203  
    204 **2. Structures to read input initial and boundary conditions**: namtrc_dta (sn_trcdta), namtrc_bc (sn_trcsbc/sn_trccbc/sn_trcobc) 
     204all initialization/forcing logical fields set to ``.false.`` . 
     205 
     2062. Structures to read input initial and boundary conditions: ``&namtrc_dta`` (``sn_trcdta``), ``&namtrc_bc`` (``sn_trcsbc`` / ``sn_trccbc`` / ``sn_trcobc``) 
     207^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 
    205208 
    206209The overall data structure (Fortran type) is based on the general one defined for NEMO core in the SBC component 
    207 (see details in User Manual SBC Chapter on Input Data specification). 
    208  
    209 Input fields are prescribed within namtrc_dta (with sn_trcdta structure), 
    210 while Boundary Conditions are applied to the model by means of namtrc_bc, 
    211 with dedicated structure fields for surface (sn_trcsbc), riverine (sn_trccbc), and 
    212 lateral open (sn_trcobc) boundaries. 
     210(see details in ``SBC`` Chapter of :doc:`Reference Manual <citations>` on Input Data specification). 
     211 
     212Input fields are prescribed within ``&namtrc_dta`` (with ``sn_trcdta`` structure), 
     213while Boundary Conditions are applied to the model by means of ``&namtrc_bc``, 
     214with dedicated structure fields for surface (``sn_trcsbc``), riverine (``sn_trccbc``), and 
     215lateral open (``sn_trcobc``) boundaries. 
    213216 
    214217The following example illustrates the data structure in the case of initial condition for 
    215 a single tracer contained in the file named tracer_1_data.nc (.nc is implicitly assumed in namelist filename), 
    216 with a doubled initial value, and located in the usr/work/model/inputdata/ folder: 
     218a single tracer contained in the file named :file:`tracer_1_data.nc` 
     219(``.nc`` is implicitly assumed in namelist filename), 
     220with a doubled initial value, and located in the :file:`usr/work/model/inputdata` folder: 
    217221 
    218222.. code-block:: fortran 
    219223 
    220    !               !  file name             ! frequency (hours) ! variable  ! time interp. !  clim  ! 'yearly'/ ! weights  ! rotation ! land/sea mask ! 
    221    !               !                        !  (if <0  months)  !   name    !   (logical)  !  (T/F) ! 'monthly' ! filename ! pairing  ! filename      ! 
    222      sn_trcdta(1)  = 'tracer_1_data'        ,        -12        ,  'TRC1'   ,    .false.   , .true. , 'yearly'  , ''       , ''       , '' 
    223      rf_trfac(1) = 2.0 
    224      cn_dir = “usr/work/model/inputdata/” 
    225  
    226 Note that, the Lateral Open Boundaries conditions are applied on the segments defined for the physical core of NEMO 
    227 (see BDY description in the User Manual). 
    228  
    229 namelist_trc 
    230 ------------ 
    231  
    232 Here below the description of namelist_trc_ref used to handle Carbon tracers modules, namely CFC and C14. 
    233  
    234 |||| &'''namcfc'''     !   CFC || 
    235  
    236 |||| &'''namc14_typ'''     !  C14 - type of C14 tracer, default values of C14/C and pco2 || 
    237  
    238 |||| &'''namc14_sbc'''     !  C14 - surface BC || 
    239  
    240 |||| &'''namc14_fcg'''     !  files & dates || 
     224   !               !  file name             ! frequency (hours) ! variable  ! time interp. !  clim  ! 'yearly'/ ! weights  ! rotation ! land/sea mask ! 
     225   !               !                        !  (if <0  months)  !   name    !   (logical)  !  (T/F) ! 'monthly' ! filename ! pairing  ! filename      ! 
     226     sn_trcdta(1)  = 'tracer_1_data'        ,        -12        ,  'TRC1'   ,    .false.   , .true. , 'yearly'  , ''       , ''       , '' 
     227     rf_trfac(1) = 2.0 
     228     cn_dir = 'usr/work/model/inputdata/' 
     229 
     230Note that, the Lateral Open Boundaries conditions are applied on 
     231the segments defined for the physical core of NEMO 
     232(see ``BDY`` description in the :doc:`Reference Manual <citations>`). 
     233 
     234:file:`namelist_trc` 
     235-------------------- 
     236 
     237Here below the description of :file:`namelist_trc_ref` used to handle Carbon tracers modules, 
     238namely CFC and C14. 
     239 
     240.. literalinclude:: ../../../cfgs/SHARED/namelist_trc_ref 
     241   :language: fortran 
     242   :lines: 7,17,26,34 
     243   :caption: :file:`namelist_trc_ref` snippet 
    241244 
    242245``MY_TRC`` interface for coupling external BGC models 
    243246===================================================== 
    244247 
    245 The generalized interface is pivoted on MY_TRC module that contains template files to build the coupling between 
     248The generalized interface is pivoted on MY_TRC module that contains template files to 
     249build the coupling between 
    246250NEMO and any external BGC model. 
    247251 
    248 The call to MY_TRC is activated by setting ``ln_my_trc = .true.`` (in namtrc) 
     252The call to MY_TRC is activated by setting ``ln_my_trc = .true.`` (in ``&namtrc``) 
    249253 
    250254The following 6 fortran files are available in MY_TRC with the specific purposes here described. 
    251255 
    252 ``par_my_trc.F90`` 
    253    This module allows to define additional arrays and public variables to be used within the MY_TRC interface 
    254  
    255 ``trcini_my_trc.F90`` 
    256    Here are initialized user defined namelists and the call to the external BGC model initialization procedures to 
    257    populate general tracer array (trn and trb). Here are also likely to be defined suport arrays related to 
    258    system metrics that could be needed by the BGC model. 
    259  
    260 ``trcnam_my_trc.F90`` 
    261    This routine is called at the beginning of trcini_my_trc and should contain the initialization of 
    262    additional namelists for the BGC model or user-defined code. 
    263  
    264 ``trcsms_my_trc.F90`` 
    265    The routine performs the call to Boundary Conditions and its main purpose is to 
    266    contain the Source-Minus-Sinks terms due to the biogeochemical processes of the external model. 
    267    Be aware that lateral boundary conditions are applied in trcnxt routine. 
    268    IMPORTANT: the routines to compute the light penetration along the water column and 
    269    the tracer vertical sinking should be defined/called in here, as generalized modules are still missing in 
    270    the code. 
    271  
    272 ``trcice_my_trc.F90`` 
    273    Here it is possible to prescribe the tracers concentrations in the seaice that will be used as 
    274    boundary conditions when ice melting occurs (nn_ice_tr =1 in namtrc_ice). 
    275    See e.g. the correspondent PISCES subroutine. 
    276  
    277 ``trcwri_my_trc.F90`` 
    278    This routine performs the output of the model tracers (only those defined in namtrc) using IOM module 
    279    (see Manual Chapter “Output and Diagnostics”). 
    280    It is possible to place here the output of additional variables produced by the model, 
    281    if not done elsewhere in the code, using the call to iom_put. 
     256:file:`par_my_trc.F90` 
     257   This module allows to define additional arrays and public variables to 
     258   be used within the MY_TRC interface 
     259 
     260:file:`trcini_my_trc.F90` 
     261   Here are initialized user defined namelists and 
     262   the call to the external BGC model initialization procedures to populate general tracer array 
     263   (``trn`` and ``trb``). 
     264   Here are also likely to be defined support arrays related to system metrics that 
     265   could be needed by the BGC model. 
     266 
     267:file:`trcnam_my_trc.F90` 
     268   This routine is called at the beginning of ``trcini_my_trc`` and 
     269   should contain the initialization of additional namelists for the BGC model or user-defined code. 
     270 
     271:file:`trcsms_my_trc.F90` 
     272   The routine performs the call to Boundary Conditions and its main purpose is to 
     273   contain the Source-Minus-Sinks terms due to the biogeochemical processes of the external model. 
     274   Be aware that lateral boundary conditions are applied in trcnxt routine. 
     275 
     276   .. warning:: 
     277      The routines to compute the light penetration along the water column and 
     278      the tracer vertical sinking should be defined/called in here, 
     279      as generalized modules are still missing in the code. 
     280 
     281:file:`trcice_my_trc.F90` 
     282   Here it is possible to prescribe the tracers concentrations in the sea-ice that 
     283   will be used as boundary conditions when ice melting occurs (``nn_ice_tr = 1`` in ``&namtrc_ice``). 
     284   See e.g. the correspondent PISCES subroutine. 
     285 
     286:file:`trcwri_my_trc.F90` 
     287   This routine performs the output of the model tracers (only those defined in ``&namtrc``) using 
     288   IOM module (see chapter “Output and Diagnostics” in the :doc:`Reference Manual <citations>`). 
     289   It is possible to place here the output of additional variables produced by the model, 
     290   if not done elsewhere in the code, using the call to ``iom_put``. 
    282291 
    283292Coupling an external BGC model using NEMO framework 
     
    286295The coupling with an external BGC model through the NEMO compilation framework can be achieved in 
    287296different ways according to the degree of coding complexity of the Biogeochemical model, like e.g., 
    288 the whole code is made only by one file or it has multiple modules and interfaces spread across several subfolders. 
    289  
    290 Beside the 6 core files of MY_TRC module, let’s assume an external BGC model named *MYBGC* and constituted by 
    291 a rather essential coding structure, likely few Fortran files. 
     297the whole code is made only by one file or 
     298it has multiple modules and interfaces spread across several subfolders. 
     299 
     300Beside the 6 core files of MY_TRC module, let’s assume an external BGC model named *MYBGC* and 
     301constituted by a rather essential coding structure, likely few Fortran files. 
    292302The new coupled configuration name is *NEMO_MYBGC*. 
    293303 
    294 The best solution is to have all files (the modified ``MY_TRC`` routines and the BGC model ones) placed in 
    295 a unique folder with root ``MYBGCPATH`` and to use the makenemo external readdressing of ``MY_SRC`` folder. 
    296  
    297 The coupled configuration listed in ``work_cfgs.txt`` will look like 
     304The best solution is to have all files (the modified ``MY_TRC`` routines and the BGC model ones) 
     305placed in a unique folder with root ``MYBGCPATH`` and 
     306to use the makenemo external readdressing of ``MY_SRC`` folder. 
     307 
     308The coupled configuration listed in :file:`work_cfgs.txt` will look like 
    298309 
    299310:: 
    300311 
    301    NEMO_MYBGC OPA_SRC TOP_SRC 
     312   NEMO_MYBGC OCE TOP 
    302313 
    303314and the related ``cpp_MYBGC.fcm`` content will be 
     
    305316.. code-block:: perl 
    306317 
    307    bld::tool::fppkeys key_iomput key_mpp_mpi key_top 
    308  
    309 the compilation with ``makenemo`` will be executed through the following syntax 
     318   bld::tool::fppkeys key_iomput key_mpp_mpi key_top 
     319 
     320the compilation with :file:`makenemo` will be executed through the following syntax 
    310321 
    311322.. code-block:: console 
    312323 
    313    $ makenemo -n 'NEMO_MYBGC' -m '<arch_my_machine>' -j 8 -e '<MYBGCPATH>' 
    314  
    315 The makenemo feature “-e” was introduced to readdress at compilation time the standard MY_SRC folder 
    316 (usually found in NEMO configurations) with a user defined external one. 
    317  
    318 The compilation of more articulated BGC model code & infrastructure, like in the case of BFM 
    319 ([http://www.bfm-community.eu/publications/bfmnemomanual_r1.0_201508.pdf BFM-NEMO coupling manual]), 
    320 requires some additional features. 
     324   $ makenemo -n 'NEMO_MYBGC' -m '<arch_my_machine>' -j 8 -e '<MYBGCPATH>' 
     325 
     326The makenemo feature ``-e`` was introduced to 
     327readdress at compilation time the standard MY_SRC folder (usually found in NEMO configurations) with 
     328a user defined external one. 
     329 
     330The compilation of more articulated BGC model code & infrastructure, 
     331like in the case of BFM (|BFM man|_), requires some additional features. 
    321332 
    322333As before, let’s assume a coupled configuration name *NEMO_MYBGC*, 
    323 but in this case MYBGC model root becomes ``<MYBGCPATH>`` that contains 4 different subfolders for 
    324 biogeochemistry, named ``initialization``, ``pelagic``, and ``benthic``, and 
    325 a separate one named ``nemo_coupling`` including the modified ``MY_SRC`` routines. 
     334but in this case MYBGC model root becomes :file:`MYBGC` path that 
     335contains 4 different subfolders for biogeochemistry, 
     336named :file:`initialization`, :file:`pelagic`, and :file:`benthic`, 
     337and a separate one named :file:`nemo_coupling` including the modified `MY_SRC` routines. 
    326338The latter folder containing the modified NEMO coupling interface will be still linked using 
    327 the makenemo “-e” option. 
     339the makenemo ``-e`` option. 
    328340 
    329341In order to include the BGC model subfolders in the compilation of NEMO code, 
    330 it will be necessary to extend the configuration ``cpp_NEMO_MYBGC.fcm`` file to include the specific paths of 
    331 ``MYBGC`` folders, as in the following example 
     342it will be necessary to extend the configuration :file:`cpp_NEMO_MYBGC.fcm` file to include the specific paths of :file:`MYBGC` folders, as in the following example 
    332343 
    333344.. code-block:: perl 
    334345 
    335    bld::tool::fppkeys  key_iomput key_mpp_mpi key_top 
    336  
    337    src::MYBGC::initialization         <MYBGCPATH>/initialization 
    338    src::MYBGC::pelagic                <MYBGCPATH>/pelagic 
    339    src::MYBGC::benthic                <MYBGCPATH>/benthic 
    340  
    341    bld::pp::MYBGC      1 
    342    bld::tool::fppflags::MYBGC   %FPPFLAGS 
    343    bld::tool::fppkeys           %bld::tool::fppkeys MYBGC_MACROS 
     346   bld::tool::fppkeys  key_iomput key_mpp_mpi key_top 
     347 
     348   src::MYBGC::initialization         <MYBGCPATH>/initialization 
     349   src::MYBGC::pelagic                <MYBGCPATH>/pelagic 
     350   src::MYBGC::benthic                <MYBGCPATH>/benthic 
     351 
     352   bld::pp::MYBGC      1 
     353   bld::tool::fppflags::MYBGC   %FPPFLAGS 
     354   bld::tool::fppkeys           %bld::tool::fppkeys MYBGC_MACROS 
    344355 
    345356where *MYBGC_MACROS* is the space delimited list of macros used in *MYBGC* model for 
    346357selecting/excluding specific parts of the code. 
    347 The BGC model code will be preprocessed in the configuration ``BLD`` folder as for NEMO, 
    348 but with an independent path, like ``NEMO_MYBGC/BLD/MYBGC/<subforlders>``. 
     358The BGC model code will be preprocessed in the configuration :file:`BLD` folder as for NEMO, 
     359but with an independent path, like :file:`NEMO_MYBGC/BLD/MYBGC/<subforlders>`. 
    349360 
    350361The compilation will be performed similarly to in the previous case with the following 
     
    352363.. code-block:: console 
    353364 
    354    $ makenemo -n 'NEMO_MYBGC' -m '<arch_my_machine>' -j 8 -e '<MYBGCPATH>/nemo_coupling' 
    355  
    356 Note that, the additional lines specific for the BGC model source and build paths can be written into 
    357 a separate file, e.g. named ``MYBGC.fcm``, and then simply included in the ``cpp_NEMO_MYBGC.fcm`` as follow 
    358  
    359 .. code-block:: perl 
    360  
    361    bld::tool::fppkeys  key_zdftke key_dynspg_ts key_iomput key_mpp_mpi key_top 
    362    inc <MYBGCPATH>/MYBGC.fcm 
    363  
    364 This will enable a more portable compilation structure for all MYBGC related configurations. 
    365  
    366 **Important**: the coupling interface contained in nemo_coupling cannot be added using the FCM syntax, 
    367 as the same files already exists in NEMO and they are overridden only with the readdressing of MY_SRC contents to 
    368 avoid compilation conflicts due to duplicate routines. 
    369  
    370 All modifications illustrated above, can be easily implemented using shell or python scripting to 
    371 edit the NEMO configuration CPP.fcm file and to create the BGC model specific FCM compilation file with code paths. 
     365   $ makenemo -n 'NEMO_MYBGC' -m '<arch_my_machine>' -j 8 -e '<MYBGCPATH>/nemo_coupling' 
     366 
     367.. note:: 
     368   The additional lines specific for the BGC model source and build paths can be written into 
     369   a separate file, e.g. named :file:`MYBGC.fcm`, 
     370   and then simply included in the :file:`cpp_NEMO_MYBGC.fcm` as follow 
     371 
     372   .. code-block:: perl 
     373 
     374      bld::tool::fppkeys  key_zdftke key_dynspg_ts key_iomput key_mpp_mpi key_top 
     375      inc <MYBGCPATH>/MYBGC.fcm 
     376 
     377   This will enable a more portable compilation structure for all MYBGC related configurations. 
     378 
     379.. warning:: 
     380   The coupling interface contained in :file:`nemo_coupling` cannot be added using the FCM syntax, 
     381   as the same files already exists in NEMO and they are overridden only with 
     382   the readdressing of MY_SRC contents to avoid compilation conflicts due to duplicate routines. 
     383 
     384All modifications illustrated above, can be easily implemented using shell or python scripting 
     385to edit the NEMO configuration :file:`CPP.fcm` file and 
     386to create the BGC model specific FCM compilation file with code paths. 
     387 
     388.. |BFM man| replace:: BFM-NEMO coupling manual 
Note: See TracChangeset for help on using the changeset viewer.