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/branches/2020/dev_r14116_HPC-04_mcastril_Mixed_Precision_implementation_final/src/TOP/PISCES/P4Z – NEMO

source: NEMO/branches/2020/dev_r14116_HPC-04_mcastril_Mixed_Precision_implementation_final/src/TOP/PISCES/P4Z/p4zbio.F90 @ 14219

Last change on this file since 14219 was 14219, checked in by mcastril, 4 years ago

Add Mixed Precision support by Oriol Tintó

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