Skip to content

Structure and Workflow

The PISCES model is an open source code written in Fortran 2008. It follows a modular structure, with each module or routine representing either a biogeochemical compartment or a coherent group of processes.

An overview of the PISCES model workflow is provided below (Figures 1 and 2), summarizing the steps involved in calculating biogeochemical processes and the corresponding Fortran routines used for each compartment and process group.

Main_Workflow
Figure 1. Main synthetic workflow of the PISCES model.

PISCES

Initialization

  • trcnam_pisces: This routine reads the general namelist block (nampismod), which defines the PISCES version and specifies which optional features are enabled. In particular, it determines which of the three available versions is activated (i.e., PISCES-Operational, PISCES-Research or PISCES-Simple), and whether the sediment module and/or the prognostic ligand are enabled.
  • trcini_pisces: This routine initializes the prognostic variables when the run does not start from a restart file or when the variables are not provided from an available (typically observation-based) initial distribution. It also calls the subroutines responsible for allocating arrays and reading the various blocks of the PISCES namelist. These subroutines are distributed across different PISCES modules, depending on the corresponding compartments and process groups they are related to.
  • p4z_rst: This subroutine, contained in the module p4zsms.F90, handles the reading and writing of PISCES variables - excluding the prognostic variables - to and from the restart file.
  • trcice_pisces: This module initializes the PISCES tracers in sea ice (only available for NEMO).

Time Stepping

Fundamentally, PISCES operates at the same time step as the hydrodynamic model and is therefore called at the same frequency as the tracer transport. However, a significant number of biogeochemical processes can be calculated at a sub-time step of the ocean model time step (see box below and Figure 2).

As illustrated in Figure 1, two key modules manage the time stepping of PISCES:

  • trcwri_pisces handles the writing of prognostic variables to output files using the XIOS server
  • trcsms_pisces is the main routine, handling the computation of the biogeochemical sources and sinks by calling the relevant PISCES subroutines.

In addition to these two PISCES-specific modules, two generic routines are also invoked:

  • trcsink calculates vertical particle sedimentation in the water column
  • trcbc manages the external sources of biogeochemical tracers (surface, coastal and open boundary conditions). This routine is specific to the TOP1 coupling interface of NEMO (not included in CROCO).

Figure 2 shows the various PISCES modules called by the main time-stepping routine, p4zsms. The routines on the blue background follow the same time step as the ocean model, while the routines on the green and pink backgrounds can be calculated at sub-time steps (time splitting).

Main_Workflow
Figure 2. Workflow of the biogeochemical processes in PISCES.

Fortran routines beginning with:

Time-splitting scheme

Many biogeochemical sources and sinks operate on characteristic timescales of several hours. To prevent potential numerical instabilities, a time-splitting scheme is implemented within p4zsms. This scheme, which can be configured via the PISCES namelist parameter nrdttrc in the nampisbio section, allows the sources and sinks to be called using a smaller time step than that of the ocean model (modules higlighted with a red and green backgrounds on Figure 2). For example, if you set nrdttrc = 2, then the concerned biogeochemical processes are calculated twice for each time step of the ocean model.

It is recommended to activate this time-splitting algorithm when the model time step exceeds one hour.


Sediment Module

All routine names of this module begin with sed and can be found in the SED directory (Figure 1). The workflow specific to the PISCES sediment module is described in Figure 3.

Main_Workflow
Figure 3. Workflow of the diagenetic processes (SED).

Initialization

As in PISCES, initialization of the sediment module is performed at the beginning of the simulation and is therefore executed only once. This is performed by two different routines:

  • sedini reads the sediment namelist blocks. It allocates the necessary general arrays. It also computes the vertical geometry of the sediment column based on parameters prescribed in the namelist.
  • sedinitrc initializes the prognostic variables by either reading them from a restart file or by setting them to uniform constant values.

Time Stepping

The sediment module runs with the same time step as the main PISCES model. As shown in Figure 3, time stepping is managed by the sedstp module, which calls various subroutines to compute biogeochemical sources and sinks, vertical advection and diffusion, and exchanges with the overlying water column.

Because many chemical reactions in sediments occur on very short timescales — from seconds to minutes — an implicit time integration method based on Rosenbrock schemes (ROSK) is used to solve these reactions. The order of the Rosenbrock scheme can be specified through a namelist parameter (nrosorder). For slower reactions, a conventional explicit time-stepping scheme is applied.


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