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

source: branches/dev_001_GM/NEMO/TOP_SRC/PISCES_SMS/p4zlim.F90 @ 775

Last change on this file since 775 was 775, checked in by gm, 16 years ago

dev_001_GM - PISCES in F90 : encapsulation of all p4z...F files in module F90 + doctor norme for local variables - compilation OK

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 6.4 KB
Line 
1MODULE p4zlim
2   !!======================================================================
3   !!                         ***  MODULE p4zlim  ***
4   !! TOP :   PISCES
5   !!======================================================================
6   !! History :   1.0  !  2004     (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_lim        : 
14   !!----------------------------------------------------------------------
15   USE oce_trc         !
16   USE trp_trc         !
17   USE sms             !
18
19   IMPLICIT NONE
20   PRIVATE
21
22   PUBLIC   p4z_lim    ! called in p4zprg.F90
23
24   !!* Substitution
25#  include "domzgr_substitute.h90"
26   !!----------------------------------------------------------------------
27   !! NEMO/TOP 2.0 , LOCEAN-IPSL (2007)
28   !! $Header:$
29   !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt)
30   !!----------------------------------------------------------------------
31
32CONTAINS
33
34   SUBROUTINE p4z_lim
35      !!---------------------------------------------------------------------
36      !!                     ***  ROUTINE p4z_lim  ***
37      !!
38      !! ** Purpose :   Compute the co-limitations by the various nutrients
39      !!              for the various phytoplankton species
40      !!
41      !! ** Method  : - ???
42      !!---------------------------------------------------------------------
43      INTEGER  ::   ji, jj, jk
44      REAL(wp) ::   zlim1, zlim2, zlim3, zlim4, zno3, zferlim
45      REAL(wp) ::   zconctemp, zconctemp2, zconctempn, zconctempn2
46      !!---------------------------------------------------------------------
47
48!  Tuning of the iron concentration to a minimum
49!  level that is set to the detection limit
50!  -------------------------------------
51
52      DO jk = 1, jpk
53         DO jj = 1, jpj
54            DO ji = 1, jpi
55               zno3   = trn(ji,jj,jk,jpno3) * 1.e6
56               zferlim = MAX( 1.5e-11*(zno3/40)**2, 3e-12 )
57               zferlim = MIN( zferlim, 1.5e-11 )
58               trn(ji,jj,jk,jpfer) = MAX( trn(ji,jj,jk,jpfer), zferlim )
59            END DO
60         END DO
61      END DO
62
63!  Computation of a variable Ks for iron on diatoms
64!  taking into account that increasing biomass is
65!  made of generally bigger cells
66!  ------------------------------------------------
67
68      DO jk = 1, jpkm1
69         DO jj = 1, jpj
70            DO ji = 1, jpi
71               zconctemp   = MAX( 0.e0 , trn(ji,jj,jk,jpdia)-5e-7 )
72               zconctemp2  = MIN( 5.e-7, trn(ji,jj,jk,jpdia)      )
73               zconctempn  = MAX( 0.e0 , trn(ji,jj,jk,jpphy)-1e-6 )
74               zconctempn2 = MIN( 1.e-6, trn(ji,jj,jk,jpphy)      )
75               concdfe(ji,jj,jk) = ( zconctemp2 * conc3 + 0.4e-9 * zconctemp)   &
76                  &              / ( zconctemp2 + zconctemp + rtrn )
77               concdfe(ji,jj,jk) = MAX( conc3, concdfe(ji,jj,jk) )
78               concnfe(ji,jj,jk) = ( zconctempn2 * conc2 + 0.08e-9 * zconctempn)   &
79                  &              / ( zconctempn2 + zconctempn + rtrn )
80               concnfe(ji,jj,jk) = MAX( conc2, concnfe(ji,jj,jk) )
81            END DO
82         END DO
83      END DO
84
85      DO jk = 1, jpkm1
86         DO jj = 1, jpj
87            DO ji = 1, jpi
88   
89!      Michaelis-Menten Limitation term for nutrients
90!      Small flagellates
91!      -----------------------------------------------
92
93               xnanono3(ji,jj,jk) = trn(ji,jj,jk,jpno3) * concnnh4           &
94                  &               / ( conc0 * concnnh4 + concnnh4 * trn(ji,jj,jk,jpno3)   &
95                  &                                    + conc0    * trn(ji,jj,jk,jpnh4) )
96               xnanonh4(ji,jj,jk) = trn(ji,jj,jk,jpnh4) * conc0              &
97                  &               / ( conc0 * concnnh4 + concnnh4 * trn(ji,jj,jk,jpno3)   &
98                  &                                    + conc0    * trn(ji,jj,jk,jpnh4) )
99               zlim1 = xnanono3(ji,jj,jk) + xnanonh4(ji,jj,jk)
100               zlim2 = trn(ji,jj,jk,jppo4) / ( trn(ji,jj,jk,jppo4) + concnnh4          ) 
101               zlim3 = trn(ji,jj,jk,jpfer) / ( trn(ji,jj,jk,jpfer) + concnfe(ji,jj,jk) )
102               xlimphy(ji,jj,jk) = MIN( zlim1, zlim2, zlim3 )
103               zlim1 = trn(ji,jj,jk,jpnh4) / ( concnnh4 + trn(ji,jj,jk,jpnh4) )
104               zlim3 = trn(ji,jj,jk,jpfer) / ( conc2    + trn(ji,jj,jk,jpfer) )
105               zlim4 = trn(ji,jj,jk,jpdoc) / ( xkdoc2   + trn(ji,jj,jk,jpdoc) )
106               xlimbac(ji,jj,jk) = MIN( zlim1, zlim2, zlim3 ) * zlim4
107
108            END DO
109         END DO
110      END DO
111
112      DO jk = 1, jpkm1
113         DO jj = 1, jpj
114            DO ji = 1, jpi
115
116!   Michaelis-Menten Limitation term for nutrients Diatoms
117!   ----------------------------------------------
118
119               xdiatno3(ji,jj,jk) = trn(ji,jj,jk,jpno3) * concdnh4                         &
120                  &               / ( conc1  * concdnh4 + concdnh4 * trn(ji,jj,jk,jpno3)   &
121                  &                                     + conc1    * trn(ji,jj,jk,jpnh4) )
122               xdiatnh4(ji,jj,jk) = trn(ji,jj,jk,jpnh4) * conc1                            &
123                  &               / ( conc1  * concdnh4 + concdnh4 * trn(ji,jj,jk,jpno3)   &
124                  &                                     + conc1   * trn(ji,jj,jk,jpnh4) )
125
126               zlim1 = xdiatno3(ji,jj,jk) + xdiatnh4(ji,jj,jk)
127               zlim2 = trn(ji,jj,jk,jppo4) / ( trn(ji,jj,jk,jppo4) + concdnh4          )
128               zlim3 = trn(ji,jj,jk,jpsil) / ( trn(ji,jj,jk,jpsil) + xksi   (ji,jj)    )
129               zlim4 = trn(ji,jj,jk,jpfer) / ( trn(ji,jj,jk,jpfer) + concdfe(ji,jj,jk) )
130               xlimdia(ji,jj,jk) = MIN( zlim1, zlim2, zlim3, zlim4 )
131
132            END DO
133         END DO
134      END DO
135      !
136   END SUBROUTINE p4z_lim
137
138#else
139   !!======================================================================
140   !!  Dummy module :                                   No PISCES bio-model
141   !!======================================================================
142CONTAINS
143   SUBROUTINE p4z_lim                   ! Empty routine
144   END SUBROUTINE p4z_lim
145#endif 
146
147   !!======================================================================
148END MODULE  p4zlim
Note: See TracBrowser for help on using the repository browser.