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.
p4zdiat.F90 in branches/dev_001_GM/NEMO/TOP_SRC/PISCES – NEMO

source: branches/dev_001_GM/NEMO/TOP_SRC/PISCES/p4zdiat.F90 @ 3197

Last change on this file since 3197 was 858, checked in by cetlod, 16 years ago

include the new version of PISCES model , see ticket:91

  • Property svn:eol-style set to native
  • Property svn:executable set to *
  • Property svn:keywords set to Author Date Id Revision
File size: 5.4 KB
Line 
1MODULE p4zdiat
2   !!======================================================================
3   !!                         ***  MODULE p4zdiat  ***
4   !! TOP :   PISCES Compute the mortality terms for diatoms
5   !!======================================================================
6   !! History :   1.0  !  2002     (O. Aumont)  Original code
7   !!             2.0  !  2007-12  (C. Ethe, G. Madec)  F90
8   !!----------------------------------------------------------------------
9#if defined key_pisces
10   !!----------------------------------------------------------------------
11   !!   'key_pisces'                                       PISCES bio-model
12   !!----------------------------------------------------------------------
13   !!   p4z_diat       :   Compute the mortality terms for diatoms
14   !!----------------------------------------------------------------------
15   USE oce_trc         !
16   USE trp_trc         !
17   USE sms             !
18   USE prtctl_trc
19
20   IMPLICIT NONE
21   PRIVATE
22
23   PUBLIC   p4z_diat    ! called in p4zbio.F90
24
25   !!* Substitution
26#  include "domzgr_substitute.h90"
27   !!----------------------------------------------------------------------
28   !! NEMO/TOP 2.0 , LOCEAN-IPSL (2007)
29   !! $Header:$
30   !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt)
31   !!----------------------------------------------------------------------
32
33CONTAINS
34
35   SUBROUTINE p4z_diat
36      !!---------------------------------------------------------------------
37      !!                     ***  ROUTINE p4z_diat  ***
38      !!
39      !! ** Purpose :   Compute the mortality terms for diatoms
40      !!
41      !! ** Method  : - ???
42      !!---------------------------------------------------------------------
43      INTEGER  ::  ji, jj, jk
44      REAL(wp) ::  zfactfe,zfactsi,zfactch, zstep, zcompadi
45      REAL(wp) ::  zrespp2, ztortp2, zmortp2
46      CHARACTER (len=25) :: charout
47 
48      !!---------------------------------------------------------------------
49
50        zstep = rfact2 / rjjss      ! Time step duration for biology
51
52
53!    Aggregation term for diatoms is increased in case of nutrient
54!    stress as observed in reality. The stressed cells become more
55!    sticky and coagulate to sink quickly out of the euphotic zone
56!     ------------------------------------------------------------
57
58      DO jk = 1, jpkm1
59         DO jj = 1, jpj
60            DO ji = 1, jpi
61
62               zcompadi = MAX( ( trn(ji,jj,jk,jpdia) - 1e-8), 0. )
63
64!    Aggregation term for diatoms is increased in case of nutrient
65!    stress as observed in reality. The stressed cells become more
66!    sticky and coagulate to sink quickly out of the euphotic zone
67!     ------------------------------------------------------------
68
69               zrespp2  = 1.e6 * zstep * (  wchl + wchld * ( 1.- xlimdia(ji,jj,jk) )  )    &
70# if defined key_off_degrad
71                  &       * facvol(ji,jj,jk)       &
72# endif
73                  &       * xdiss(ji,jj,jk) * zcompadi * trn(ji,jj,jk,jpdia)
74                                                                               
75
76!     Phytoplankton mortality.
77!     ------------------------
78               ztortp2  = mprat2 * zstep * trn(ji,jj,jk,jpdia)     &
79# if defined key_off_degrad
80                  &        * facvol(ji,jj,jk)       &
81# endif
82                  &      / ( xkmort + trn(ji,jj,jk,jpdia) ) * zcompadi
83
84                zmortp2 = zrespp2 + ztortp2
85
86!   Update the arrays tra which contains the biological sources and sinks
87!   ---------------------------------------------------------------------
88               zfactch = trn(ji,jj,jk,jpdch) / ( trn(ji,jj,jk,jpdia) + rtrn )
89               zfactfe = trn(ji,jj,jk,jpdfe) / ( trn(ji,jj,jk,jpdia) + rtrn )
90               zfactsi = trn(ji,jj,jk,jpbsi) / ( trn(ji,jj,jk,jpdia) + rtrn )
91
92               tra(ji,jj,jk,jpdia) = tra(ji,jj,jk,jpdia) - zmortp2 
93               tra(ji,jj,jk,jpdch) = tra(ji,jj,jk,jpdch) - zmortp2 * zfactch
94               tra(ji,jj,jk,jpdfe) = tra(ji,jj,jk,jpdfe) - zmortp2 * zfactfe
95               tra(ji,jj,jk,jpbsi) = tra(ji,jj,jk,jpbsi) - zmortp2 * zfactsi
96               tra(ji,jj,jk,jpdsi) = tra(ji,jj,jk,jpdsi) + zmortp2 * zfactsi
97#if defined key_kriest
98               tra(ji,jj,jk,jppoc) = tra(ji,jj,jk,jppoc) + zmortp2 
99               tra(ji,jj,jk,jpnum) = tra(ji,jj,jk,jpnum) + ztortp2 * xkr_ndiat + zrespp2 * xkr_naggr
100               tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + zmortp2 * zfactfe
101#else
102               tra(ji,jj,jk,jpgoc) = tra(ji,jj,jk,jpgoc) + zrespp2 + 0.5 * ztortp2
103               tra(ji,jj,jk,jppoc) = tra(ji,jj,jk,jppoc) + 0.5 * ztortp2
104               tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + 0.5 * ztortp2 * zfactfe
105               tra(ji,jj,jk,jpbfe) = tra(ji,jj,jk,jpbfe) + ( zrespp2 + 0.5 * ztortp2 ) * zfactfe
106#endif
107            END DO
108         END DO
109      END DO
110      !
111        IF(ln_ctl)   THEN  ! print mean trends (used for debugging)
112         WRITE(charout, FMT="('diat')")
113         CALL prt_ctl_trc_info(charout)
114         CALL prt_ctl_trc(tab4d=tra, mask=tmask, clinfo=ctrcnm)
115       ENDIF
116             
117   END SUBROUTINE p4z_diat
118
119#else
120   !!======================================================================
121   !!  Dummy module :                                   No PISCES bio-model
122   !!======================================================================
123CONTAINS
124   SUBROUTINE p4z_diat                    ! Empty routine
125   END SUBROUTINE p4z_diat
126#endif 
127
128   !!======================================================================
129END MODULE  p4zdiat
Note: See TracBrowser for help on using the repository browser.