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_PISCESis 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_PISCESis based on the ORCA2 global ocean configuration (i.e.,ORCA2_ICE_PISCESlisted 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_PISCESis 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_ligandactivates the representation of prognostic iron-binding ligands (p4z/p5zonly)ln_sedimentenables the explicit sediment module (p4zonly).
!-----------------------------------------------------------------------
&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.F90routine. -
3D fields: Tracers are initialized from 3D distributions which are read from input files. To activate that capability, the boolean variable
ln_trcdtain the blocknamtrcof the namelistnamelist_top_cfgshould be set to.true.. Then, this type of initialization is enabled tracer by tracer.In this example, DIC and Alkalinity are initialized from 3D distributions as the corresponding boolean variable (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.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 thenamtrc_dtablock ofnamelist_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
In that third case, neither of the two other initialization methods can be used.ln_rsttrin thenamelist_topfile.
-
NEMO TOP Working Group. Top – tracers in ocean paradigm – the nemo tracers engine. October 2018. doi:10.5281/zenodo.1471700. ↩