Skip to content

NEMO

PISCES Activation

PISCES in NEMO requires the use of the TOP1 coupling interface. The NEMO code must therefore be compiled with the CPP key key_top in order to activate the PISCES model. Three reference configurations of NEMO using PISCES are available and distributed with the NEMO code:

  • ORCA2_ICE_PISCES is an online reference configuration for the global ocean with a 2°x2° curvilinear horizontal mesh and 31 vertical levels, distributed using z-coordinate system and with 10 levels in the top 100m. The model is forced with CORE-II normal year atmospheric forcing and it uses the NCAR bulk formulae.
  • ORCA2_OFF_PISCES is based on the ORCA2 global ocean configuration (i.e., ORCA2_ICE_PISCES listed above) along with the passive tracer transport module (TOP). However, the dynamical fields are pre-calculated and read with specific time frequency. This enables offline coupling of the TOP component of NEMO with PISCES.
  • GYRE_PISCES is an idealized configuration representing a Northern hemisphere double gyres system, in the Beta-plane approximation with a regular 1° horizontal resolution and 31 vertical levels, with the PISCES model (PISCES-Simple). Analytical forcing for heat, freshwater and wind-stress fields are applied.

Any new configurations can be built from these reference configurations following the procedure described in the Setting up a new configuration section of the NEMO user guide.

PISCES inputs for ORCA2

The input data required to run the NEMO-PISCES reference configurations can be retrieved from this public repository, in the "extras" section.

1. TOP Namelist Settings

In NEMO, PISCES is activated by setting the boolean variable ln_pisces to .true. in the namelist_top_cfg file.

!-----------------------------------------------------------------------
&namtrc          !   tracers definition
!-----------------------------------------------------------------------
   jp_bgc        =  24
!
   ln_pisces     =  .true.

Additionally, the namelist_top_cfg should be adapted according to the specific version of PISCES being used. In particular, the number of tracers set by jp_bgc should be set to the appropriate value for the selected version, as well as the name of tracers and their boundary conditions. Examples of namelist_top_cfg for the three versions of PISCES are provided below and can be found in the EXPREF directory of the ORCA2_OFF_PISCES reference configuration.

namelist_top_cfg PISCES-Operational
!-----------------------------------------------------------------------
&namtrc          !   tracers definition
!-----------------------------------------------------------------------
   jp_bgc        =  24
!
   ln_pisces     =  .true.
   ln_my_trc     =  .false.
   ln_age        =  .false.
   ln_cfc11      =  .false.
   ln_cfc12      =  .false.
   ln_c14        =  .false.
!
   ln_trcdta     =  .true.  !  Initialisation from data input file (T) or not (F)
   ln_trcbc      =  .true.  !  Enables Boundary conditions
!                !           !                                           !             !         !
!                !    name   !           title of the field              !   units     ! init    ! sbc    ! cbc    !  obc    !  ais
   sn_tracer(1)   = 'DIC     ' , 'Dissolved inorganic Concentration      ',  'mol-C/L' , .true.  , .false., .true. , .false. , .false.
   sn_tracer(2)   = 'Alkalini' , 'Total Alkalinity Concentration         ',  'eq/L '   , .true.  , .false., .true. , .false. , .false.
   sn_tracer(3)   = 'O2      ' , 'Dissolved Oxygen Concentration         ',  'mol-C/L' , .true.  , .false., .false., .false. , .false.
   sn_tracer(4)   = 'CaCO3   ' , 'Calcite Concentration                  ',  'mol-C/L' , .false. , .false., .false., .false. , .false.
   sn_tracer(5)   = 'PO4     ' , 'Phosphate Concentration                ',  'mol-C/L' , .true.  , .true. , .true. , .false. , .false.
   sn_tracer(6)   = 'POC     ' , 'Small organic carbon Concentration     ',  'mol-C/L' , .false. , .false., .false., .false. , .false.
   sn_tracer(7)   = 'Si      ' , 'Silicate Concentration                 ',  'mol-C/L' , .true.  , .true. , .true. , .false. , .false.
   sn_tracer(8)   = 'PHY     ' , 'Nanophytoplankton Concentration        ',  'mol-C/L' , .false. , .false., .false., .false. , .false.
   sn_tracer(9)   = 'ZOO     ' , 'Microzooplankton Concentration         ',  'mol-C/L' , .false. , .false., .false., .false. , .false.
   sn_tracer(10)  = 'DOC     ' , 'Dissolved organic Concentration        ',  'mol-C/L' , .true.  , .false., .true. , .false. , .false.
   sn_tracer(11)  = 'PHY2    ' , 'Diatoms Concentration                  ',  'mol-C/L' , .false. , .false., .false., .false. , .false.
   sn_tracer(12)  = 'ZOO2    ' , 'Mesozooplankton Concentration          ',  'mol-C/L' , .false. , .false., .false., .false. , .false.
   sn_tracer(13)  = 'DSi     ' , 'Diatoms Silicate Concentration         ',  'mol-C/L' , .false. , .false., .false., .false. , .false.
   sn_tracer(14)  = 'Fer     ' , 'Dissolved Iron Concentration           ',  'mol-C/L' , .true.  , .true. , .true. , .false. , .true.
   sn_tracer(15)  = 'BFe     ' , 'Big iron particles Concentration       ',  'mol-C/L' , .false. , .false., .false., .false. , .false.
   sn_tracer(16)  = 'GOC     ' , 'Big organic carbon Concentration       ',  'mol-C/L' , .false. , .false., .false., .false. , .false.
   sn_tracer(17)  = 'SFe     ' , 'Small iron particles Concentration     ',  'mol-C/L' , .false. , .false., .false., .false. , .false.
   sn_tracer(18)  = 'DFe     ' , 'Diatoms iron  Concentration            ',  'mol-C/L' , .false. , .false., .false., .false. , .false.
   sn_tracer(19)  = 'GSi     ' , 'Sinking biogenic Silicate Concentration',  'mol-C/L' , .false. , .false., .false., .false. , .false.
   sn_tracer(20)  = 'NFe     ' , 'Nano iron Concentration                ',  'mol-C/L' , .false. , .false., .false., .false. , .false.
   sn_tracer(21)  = 'NCHL    ' , 'Nano chlorophyl Concentration          ',  'mol-C/L' , .false. , .false., .false., .false. , .false.
   sn_tracer(22)  = 'DCHL    ' , 'Diatoms chlorophyl Concentration       ',  'mol-C/L' , .false. , .false., .false., .false. , .false.
   sn_tracer(23)  = 'NO3     ' , 'Nitrates Concentration                 ',  'mol-C/L' , .true.  , .true. , .true. , .false. , .false.
   sn_tracer(24)  = 'NH4     ' , 'Ammonium Concentration                 ',  'mol-C/L' , .false. , .false., .false., .false. , .false.
namelist_top_cfg PISCES-Research + prognostic ligands (LGW)
!-----------------------------------------------------------------------
&namtrc          !   tracers definition
!-----------------------------------------------------------------------
   jp_bgc        =  40
!
   ln_pisces     =  .true.
   ln_my_trc     =  .false.
   ln_age        =  .false.
   ln_cfc11      =  .false.
   ln_cfc12      =  .false.
   ln_c14        =  .false.
!
   ln_trcdta     =  .true.  !  Initialisation from data input file (T) or not (F)
   ln_trcbc      =  .true.  !  Enables Boundary conditions
!                !           !                                           !             !         !
!                !    name   !           title of the field              !   units     ! init    ! sbc    ! cbc    !  obc    !  ais
   sn_tracer(1)   = 'DIC     ' , 'Dissolved inorganic Concentration      ',  'mol-C/L' , .true.  , .false., .true. , .false. , .false.
   sn_tracer(2)   = 'Alkalini' , 'Total Alkalinity Concentration         ',  'eq/L '   , .true.  , .false., .true. , .false. , .false.
   sn_tracer(3)   = 'O2      ' , 'Dissolved Oxygen Concentration         ',  'mol-C/L' , .true.  , .false., .false., .false. , .false.
   sn_tracer(4)   = 'CaCO3   ' , 'Calcite Concentration                  ',  'mol-C/L' , .false. , .false., .false., .false. , .false.
   sn_tracer(5)   = 'PO4     ' , 'Phosphate Concentration                ',  'mol-C/L' , .true.  , .true. , .true. , .false. , .false.
   sn_tracer(6)   = 'POC     ' , 'Small organic carbon Concentration     ',  'mol-C/L' , .false. , .false., .false., .false. , .false.
   sn_tracer(7)   = 'Si      ' , 'Silicate Concentration                 ',  'mol-C/L' , .true.  , .true. , .true. , .false. , .false.
   sn_tracer(8)   = 'PHY     ' , 'Nanophytoplankton Concentration        ',  'mol-C/L' , .false. , .false., .false., .false. , .false.
   sn_tracer(9)   = 'ZOO     ' , 'Microzooplankton Concentration         ',  'mol-C/L' , .false. , .false., .false., .false. , .false.
   sn_tracer(10)  = 'DOC     ' , 'Dissolved organic Concentration        ',  'mol-C/L' , .true.  , .false., .true. , .false. , .false.
   sn_tracer(11)  = 'PHY2    ' , 'Diatoms Concentration                  ',  'mol-C/L' , .false. , .false., .false., .false. , .false.
   sn_tracer(12)  = 'ZOO2    ' , 'Mesozooplankton Concentration          ',  'mol-C/L' , .false. , .false., .false., .false. , .false.
   sn_tracer(13)  = 'DSi     ' , 'Diatoms Silicate Concentration         ',  'mol-C/L' , .false. , .false., .false., .false. , .false.
   sn_tracer(14)  = 'Fer     ' , 'Dissolved Iron Concentration           ',  'mol-C/L' , .true.  , .true. , .true. , .false. , .true.
   sn_tracer(15)  = 'BFe     ' , 'Big iron particles Concentration       ',  'mol-C/L' , .false. , .false., .false., .false. , .false.
   sn_tracer(16)  = 'GOC     ' , 'Big organic carbon Concentration       ',  'mol-C/L' , .false. , .false., .false., .false. , .false.
   sn_tracer(17)  = 'SFe     ' , 'Small iron particles Concentration     ',  'mol-C/L' , .false. , .false., .false., .false. , .false.
   sn_tracer(18)  = 'DFe     ' , 'Diatoms iron  Concentration            ',  'mol-C/L' , .false. , .false., .false., .false. , .false.
   sn_tracer(19)  = 'GSi     ' , 'Sinking biogenic Silicate Concentration',  'mol-C/L' , .false. , .false., .false., .false. , .false.
   sn_tracer(20)  = 'NFe     ' , 'Nano iron Concentration                ',  'mol-C/L' , .false. , .false., .false., .false. , .false.
   sn_tracer(21)  = 'NCHL    ' , 'Nano chlorophyl Concentration          ',  'mol-C/L' , .false. , .false., .false., .false. , .false.
   sn_tracer(22)  = 'DCHL    ' , 'Diatoms chlorophyl Concentration       ',  'mol-C/L' , .false. , .false., .false., .false. , .false.
   sn_tracer(23)  = 'NO3     ' , 'Nitrates Concentration                 ',  'mol-C/L' , .true.  , .true. , .true. , .false. , .false.
   sn_tracer(24)  = 'NH4     ' , 'Ammonium Concentration                 ',  'mol-C/L' , .false. , .false., .false., .false. , .false.
   sn_tracer(25)  = 'DON     ' , 'Dissolved Organic N Concentration      ',  'mol-C/L' , .true.  , .false., .true. , .false. , .false.
   sn_tracer(26)  = 'DOP     ' , 'Dissolved organic P Concentration      ',  'mol-C/L' , .true.  , .false., .true. , .false. , .false.
   sn_tracer(27)  = 'PON     ' , 'Small PON Concentration                ',  'mol-C/L' , .false. , .false., .false., .false. , .false.
   sn_tracer(28)  = 'POP     ' , 'Small POP Concentration                ',  'mol-C/L' , .false. , .false., .false., .false. , .false.
   sn_tracer(29)  = 'PHYN    ' , 'PHYN Concentration                     ',  'mol-C/L' , .false. , .false., .false., .false. , .false.
   sn_tracer(30)  = 'PHYP    ' , 'PHYP Concentration                     ',  'mol-C/L' , .false. , .false., .false., .false. , .false.
   sn_tracer(31)  = 'DIAN    ' , 'DIAN Concentration                     ',  'mol-C/L' , .false. , .false., .false., .false. , .false.
   sn_tracer(32)  = 'DIAP    ' , 'DIAP Concentration                     ',  'mol-C/L' , .false. , .false., .false., .false. , .false.
   sn_tracer(33)  = 'PIC     ' , 'PICO Concentration                     ',  'mol-C/L' , .false. , .false., .false., .false. , .false.
   sn_tracer(34)  = 'PICN    ' , 'PICO N Concentration                   ',  'mol-C/L' , .false. , .false., .false., .false. , .false.
   sn_tracer(35)  = 'PICP    ' , 'PICO P Concentration                   ',  'mol-C/L' , .false. , .false., .false., .false. , .false.
   sn_tracer(36)  = 'PFe     ' , 'PICO Fe Concentration                  ',  'mol-C/L' , .false. , .false., .false., .false. , .false.
   sn_tracer(37)  = 'PCHL    ' , 'PICO Chl Concentration                 ',  'mol-C/L' , .false. , .false., .false., .false. , .false.
   sn_tracer(38)  = 'GON     ' , 'Big PON Concentration                  ',  'mol-C/L' , .false. , .false., .false., .false. , .false.
   sn_tracer(39)  = 'GOP     ' , 'Big POP Concentration                  ',  'mol-C/L' , .false. , .false., .false., .false. , .false.
   sn_tracer(40)  = 'LGW     ' , 'Weak ligands Concentration             ',  'mol-C/L' , .false. , .false., .false., .false. , .false.
namelist_top_cfg PISCES-Simple
!-----------------------------------------------------------------------
&namtrc          !   tracers definition
!-----------------------------------------------------------------------
   jp_bgc        =  9
!
   ln_pisces     =  .true.
   ln_my_trc     =  .false.
   ln_age        =  .false.
   ln_cfc11      =  .false.
   ln_cfc12      =  .false.
   ln_c14        =  .false.
!
   ln_trcdta     =  .true.  !  Initialisation from data input file (T) or not (F)
   ln_trcbc      =  .true.  !  Enables Boundary conditions
!                !           !                                           !             !         !
!                !    name   !           title of the field              !   units     ! init    ! sbc    ! cbc    !  obc    !  ais
   sn_tracer(1)  = 'DIC     ' , 'Dissolved inorganic Concentration      ',  'mol-C/L' , .true.  , .false., .true. , .false. , .false.
   sn_tracer(2)  = 'Alkalini' , 'Total Alkalinity Concentration         ',  'eq/L '   , .true.  , .false., .true. , .false. , .false.
   sn_tracer(3)  = 'O2      ' , 'Dissolved Oxygen Concentration         ',  'mol-C/L' , .true.  , .false., .false., .false. , .false.
   sn_tracer(4)  = 'POC     ' , 'Small organic carbon Concentration     ',  'mol-C/L' , .false. , .false., .false., .false. , .false.
   sn_tracer(5)  = 'PHY     ' , 'Nanophytoplankton Concentration        ',  'mol-C/L' , .false. , .false., .false., .false. , .false.
   sn_tracer(6)  = 'ZOO     ' , 'Microzooplankton Concentration         ',  'mol-C/L' , .false. , .false., .false., .false. , .false.
   sn_tracer(7)  = 'DOC     ' , 'Dissolved organic Concentration        ',  'mol-C/L' , .true.  , .false., .true. , .false. , .false.
   sn_tracer(8)  = 'NO3     ' , 'Nitrates Concentration                 ',  'mol-C/L' , .true.  , .true. , .true. , .false. , .false.
   sn_tracer(9)  = 'Fer     ' , 'Dissolved Iron Concentration           ',  'mol-C/L' , .true.  , .true. , .true. , .false. , .true.

Note

In the namtrc section of namelist_top_cfg, sbc, cbc and obc refer to surface, coastal and open boundary conditions, respectively, while ais refers to the nutrient input from freshwater fluxes from the Antarctic ice sheet (icebergs and ice shelves).

2. PISCES Namelist Settings

The desired version of PISCES can be selected in the namelist_pisces_cfg file by setting the corresponding boolean (i.e., ln_p2z, ln_p4z and ln_p5z) to .true. in the nampismod block.

!-----------------------------------------------------------------------
&nampismod     !  Model used 
!-----------------------------------------------------------------------
  ln_p2z    = .false.      !  PISCES SIMPLIFIED model used
  ln_p4z    = .true.       !  PISCES model used
  ln_p5z    = .false.      !  PISCES QUOTA model used
  ln_ligand = .false.      !  Enable  organic ligands
  ln_sediment = .false.    !  Enable sediment module

Note

Only one version of PISCES can be enabled at a time.

Optional modules can also be enabled using boolean flags in this namelist section:

  • ln_ligand activates the representation of prognostic iron-binding ligands (p4z/p5z only)
  • ln_sediment enables the explicit sediment module (p4z only).
!-----------------------------------------------------------------------
&nampismod     !  Model used 
!-----------------------------------------------------------------------
  ln_p2z    = .false.      !  PISCES SIMPLIFIED model used
  ln_p4z    = .true.       !  PISCES model used
  ln_p5z    = .false.      !  PISCES QUOTA model used
  ln_ligand = .false.      !  Enable  organic ligands
  ln_sediment = .false.    !  Enable sediment module

Implication of enabling prognostic ligands

Enabling ln_ligand implies increasing by 1 the number of tracers (jp_bgc) in namelist_top_cfg (i.e., 25 for PISCES-Operational, 40 for PISCES-Research) and to add the ligand tracer name (LGW) and its order number in the namtrc block of the namelist_top_cfgfile.

Outputs

As standard in NEMO, outputs are managed by the XIOS IO server. More information about using XIOS in NEMO can be found in the dedicated section of the NEMO user guide. Output settings, such as variables, frequency and more, are configured in XML files. File XML examples for PISCES are provided in the EXPREF directory of the reference configurations.

Initialization and Restart

Initialization of PISCES prognostic tracers can be performed according to three different means:

  • Constant fields: This is the default option when the run does not start from a restart file or initialisation data. Prognostic tracers are initialized from constant values over the whole domain. This initialisation is performed in the trcini_pisces.F90 routine.
  • 3D fields: Tracers are initialized from 3D distributions which are read from input files. To activate that capability, the boolean variable ln_trcdta in the block namtrc of the namelist namelist_top_cfg should be set to .true.. Then, this type of initialization is enabled tracer by tracer.

       ln_trcdta     =  .true.  !  Initialisation from data input file (T) or not (F)
       ln_trcbc      =  .true.  !  Enables Boundary conditions
    !                !           !                                           !             !         !
    !                !    name   !           title of the field              !   units     ! init    ! sbc    ! cbc    !  obc    !  ais
       sn_tracer(1)   = 'DIC     ' , 'Dissolved inorganic Concentration      ',  'mol-C/L' , .true.  , .false., .true. , .false. , .false.
       sn_tracer(2)   = 'Alkalini' , 'Total Alkalinity Concentration         ',  'eq/L '   , .true.  , .false., .true. , .false. , .false.
    
    In this example, DIC and Alkalinity are initialized from 3D distributions as the corresponding boolean variable (init) is set to .true. for both. Initialization of the tracers for which this capability is not activated is made according to the default option (i.e., constant fields). The necessary input files are documented in the namtrc_dta block of namelist_top_cfg.
    !-----------------------------------------------------------------------
    &namtrc_dta      !    Initialisation from data input file
    !-----------------------------------------------------------------------
    !          !  file name  ! frequency (hours) ! variable  ! time interp. !  clim  ! 'yearly'/ ! weights  ! rotation ! land/sea mask !
    !          !             !  (if <0  months)  !   name    !   (logical)  !  (T/F) ! 'monthly' ! filename ! pairing  ! filename      !
       sn_trcdta(1)  = 'data_DIC_nomask.nc',        -12        ,  'PiDIC'  ,    .false.   , .true. , 'yearly'  , 'weights_3D_r360x180_bilin.nc'       , ''   , ''
       sn_trcdta(2)  = 'data_ALK_nomask.nc',        -12        ,  'TALK'   ,    .false.   , .true. , 'yearly'  , 'weights_3D_r360x180_bilin.nc'       , ''   , ''
    

  • Restart: Tracers are initialized from a restart file created by a previous simulation. This option is activated by enabling the boolean variable ln_rsttr in the namelist_top file.

    !-----------------------------------------------------------------------
    &namtrc_run      !   run information
    !-----------------------------------------------------------------------
       ln_top_euler  = .false.   !  use Euler time-stepping for TOP
       ln_rsttr      = .true.    !  start from a restart file (T) or not (F)
    
    In that third case, neither of the two other initialization methods can be used.



  1. NEMO TOP Working Group. Top – tracers in ocean paradigm – the nemo tracers engine. October 2018. doi:10.5281/zenodo.1471700