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.
p4zbio.F90 in NEMO/trunk/src/TOP/PISCES/P4Z – NEMO

source: NEMO/trunk/src/TOP/PISCES/P4Z/p4zbio.F90

Last change on this file was 15459, checked in by cetlod, 2 years ago

Various bug fixes and more comments in PISCES routines ; sette test OK in debug mode, nn_hls=1/2, with tiling ; run.stat unchanged ; of course tracer.stat different

  • Property svn:keywords set to Id
File size: 6.3 KB
RevLine 
[3443]1MODULE p4zbio
2   !!======================================================================
3   !!                         ***  MODULE p4zbio  ***
[15459]4   !! TOP :   PISCES biogeochemical model
5   !!         This module is for both PISCES and PISCES-QUOTA
[3443]6   !!======================================================================
7   !! History :   1.0  !  2004     (O. Aumont) Original code
8   !!             2.0  !  2007-12  (C. Ethe, G. Madec)  F90
[15459]9   !!             3.6  ! 2015 (O. Aumont) PISCES-QUOTA
[3443]10   !!----------------------------------------------------------------------
11   !!   p4z_bio        :   computes the interactions between the different
12   !!                      compartments of PISCES
13   !!----------------------------------------------------------------------
14   USE oce_trc         !  shared variables between ocean and passive tracers
15   USE trc             !  passive tracers common variables
16   USE sms_pisces      !  PISCES Source Minus Sink variables
17   USE p4zsink         !  vertical flux of particulate matter due to sinking
18   USE p4zopt          !  optical model
[10227]19   USE p4zlim          !  Co-limitations of differents nutrients
[3443]20   USE p4zprod         !  Growth rate of the 2 phyto groups
21   USE p4zmort         !  Mortality terms for phytoplankton
22   USE p4zmicro        !  Sources and sinks of microzooplankton
23   USE p4zmeso         !  Sources and sinks of mesozooplankton
[10227]24   USE p5zlim          !  Co-limitations of differents nutrients
[7646]25   USE p5zprod         !  Growth rate of the 2 phyto groups
26   USE p5zmort         !  Mortality terms for phytoplankton
27   USE p5zmicro        !  Sources and sinks of microzooplankton
28   USE p5zmeso         !  Sources and sinks of mesozooplankton
[3443]29   USE p4zrem          !  Remineralisation of organic matter
[7646]30   USE p4zpoc          !  Remineralization of organic particles
31   USE p4zagg          !  Aggregation of particles
[3443]32   USE p4zfechem
[7646]33   USE p4zligand       !  Prognostic ligand model
[13286]34   USE prtctl          !  print control for debugging
[3443]35   USE iom             !  I/O manager
36 
37   IMPLICIT NONE
38   PRIVATE
39
40   PUBLIC  p4z_bio   
41
[12377]42   !! * Substitutions
43#  include "do_loop_substitute.h90"
[13237]44#  include "domzgr_substitute.h90"
[3443]45   !!----------------------------------------------------------------------
[10067]46   !! NEMO/TOP 4.0 , NEMO Consortium (2018)
[10069]47   !! $Id$
[10068]48   !! Software governed by the CeCILL license (see ./LICENSE)
[3443]49   !!----------------------------------------------------------------------
50CONTAINS
51
[12377]52   SUBROUTINE p4z_bio ( kt, knt, Kbb, Kmm, Krhs )
[3443]53      !!---------------------------------------------------------------------
54      !!                     ***  ROUTINE p4z_bio  ***
55      !!
56      !! ** Purpose :   Ecosystem model in the whole ocean: computes the
[15459]57      !!                different interactions between the different compartments
58      !!                of PISCES
[3443]59      !!
60      !! ** Method  : - ???
61      !!---------------------------------------------------------------------
[5385]62      INTEGER, INTENT(in) :: kt, knt
[12377]63      INTEGER, INTENT(in) :: Kbb, Kmm, Krhs  ! time level indices
[9124]64      !
[5385]65      INTEGER             :: ji, jj, jk, jn
[3443]66      CHARACTER (len=25) :: charout
67      !!---------------------------------------------------------------------
68      !
[9124]69      IF( ln_timing )   CALL timing_start('p4z_bio')
[3443]70
[15459]71      ! ASSIGN THE SHEAR RATE THAT IS USED FOR AGGREGATION
72      ! OF PHYTOPLANKTON AND DETRITUS. Shear rate is supposed to equal 1
73      ! in the mixed layer and 0.1 below the mixed layer.
[7753]74      xdiss(:,:,:) = 1.
[15090]75      DO_3D( nn_hls, nn_hls, nn_hls, nn_hls, 2, jpkm1 )
[12377]76         IF( gdepw(ji,jj,jk+1,Kmm) > hmld(ji,jj) )   xdiss(ji,jj,jk) = 0.01
77      END_3D
[3443]78
[12377]79      CALL p4z_opt     ( kt, knt, Kbb, Kmm       )     ! Optic: PAR in the water column
80      CALL p4z_sink    ( kt, knt, Kbb, Kmm, Krhs )     ! vertical flux of particulate organic matter
81      CALL p4z_fechem  ( kt, knt, Kbb, Kmm, Krhs )     ! Iron chemistry/scavenging
[7646]82      !
[15459]83      IF( ln_p4z ) THEN  ! PISCES standard
84         ! Phytoplankton only sources/sinks terms
[12377]85         CALL p4z_lim  ( kt, knt, Kbb, Kmm       )     ! co-limitations by the various nutrients
86         CALL p4z_prod ( kt, knt, Kbb, Kmm, Krhs )     ! phytoplankton growth rate over the global ocean.
87         !                                          ! (for each element : C, Si, Fe, Chl )
88         CALL p4z_mort ( kt,      Kbb,      Krhs )     ! phytoplankton mortality
[15459]89         ! zooplankton sources/sinks routines
[12377]90         CALL p4z_micro( kt, knt, Kbb,      Krhs )     ! microzooplankton
[15459]91         CALL p4z_meso ( kt, knt, Kbb, Kmm, Krhs )     ! mesozooplankton
92      ELSE  ! PISCES-QUOTA
93         ! Phytoplankton only sources/sinks terms
[12377]94         CALL p5z_lim  ( kt, knt, Kbb, Kmm       )     ! co-limitations by the various nutrients
95         CALL p5z_prod ( kt, knt, Kbb, Kmm, Krhs )     ! phytoplankton growth rate over the global ocean.
96         !                                          ! (for each element : C, Si, Fe, Chl )
97         CALL p5z_mort ( kt,      Kbb,      Krhs      )     ! phytoplankton mortality
[15459]98         !  zooplankton sources/sinks routines
[12377]99         CALL p5z_micro( kt, knt, Kbb,      Krhs )           ! microzooplankton
[15459]100         CALL p5z_meso ( kt, knt, Kbb, Kmm, Krhs )           ! mesozooplankton
[7646]101      ENDIF
102      !
[12377]103      CALL p4z_agg     ( kt, knt, Kbb,      Krhs )     ! Aggregation of particles
104      CALL p4z_rem     ( kt, knt, Kbb, Kmm, Krhs )     ! remineralization terms of organic matter+scavenging of Fe
105      CALL p4z_poc     ( kt, knt, Kbb, Kmm, Krhs )     ! Remineralization of organic particles
[9751]106      !
[15459]107      ! Ligand production. ln_ligand should be set .true. to activate
[9751]108      IF( ln_ligand )  &
[12377]109      & CALL p4z_ligand( kt, knt, Kbb,      Krhs )
[15459]110
111      ! Update of the size of the different phytoplankton groups
112      sized(:,:,:) = MAX(1.0, sizeda(:,:,:) )
113      sizen(:,:,:) = MAX(1.0, sizena(:,:,:) )
114      IF (ln_p5z) THEN
115         sizep(:,:,:) = MAX(1.0, sizepa(:,:,:) )
116      ENDIF
[5385]117      !                                                             !
[12377]118      IF(sn_cfctl%l_prttrc)   THEN  ! print mean trends (used for debugging)
[3443]119         WRITE(charout, FMT="('bio ')")
[13286]120         CALL prt_ctl_info( charout, cdcomp = 'top' )
121         CALL prt_ctl(tab4d_1=tr(:,:,:,:,Krhs), mask1=tmask, clinfo=ctrcnm)
[3443]122      ENDIF
123      !
[9124]124      IF( ln_timing )   CALL timing_stop('p4z_bio')
[3443]125      !
126   END SUBROUTINE p4z_bio
127
128   !!======================================================================
[5656]129END MODULE p4zbio
Note: See TracBrowser for help on using the repository browser.