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/nemo_v3_3_beta/NEMOGCM/NEMO/TOP_SRC/PISCES – NEMO

source: branches/nemo_v3_3_beta/NEMOGCM/NEMO/TOP_SRC/PISCES/p4zlim.F90 @ 2287

Last change on this file since 2287 was 2287, checked in by smasson, 14 years ago

update licence of all NEMO files...

  • Property svn:keywords set to Id
File size: 9.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        :   Compute the nutrients limitation terms
14   !!   p4z_lim_init   :   Read the namelist
15   !!----------------------------------------------------------------------
16   USE trc
17   USE oce_trc         !
18   USE trc         !
19   USE sms_pisces      !
20
21   IMPLICIT NONE
22   PRIVATE
23
24   PUBLIC p4z_lim   
25   PUBLIC p4z_lim_init   
26
27   !! * Shared module variables
28   REAL(wp), PUBLIC ::   &
29     conc0     = 2.e-6_wp      ,  &  !:
30     conc1     = 10.e-6_wp     ,  &  !:
31     conc2     = 2.e-11_wp     ,  &  !:
32     conc2m    = 8.E-11_wp     ,  &  !:
33     conc3     = 1.e-10_wp     ,  &  !:
34     conc3m    = 4.e-10_wp     ,  &  !:
35     concnnh4  = 1.e-7_wp      ,  &  !:
36     concdnh4  = 5.e-7_wp      ,  &  !:
37     xksi1     = 2.E-6_wp      ,  &  !:
38     xksi2     = 3.33E-6_wp    ,  &  !:
39     xkdoc     = 417.E-6_wp    ,  &  !:
40     caco3r    = 0.3_wp              !:
41
42
43   !!* Substitution
44#  include "top_substitute.h90"
45   !!----------------------------------------------------------------------
46   !! NEMO/TOP 3.3 , NEMO Consortium (2010)
47   !! $Id$
48   !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt)
49   !!----------------------------------------------------------------------
50
51CONTAINS
52
53   SUBROUTINE p4z_lim( kt )
54      !!---------------------------------------------------------------------
55      !!                     ***  ROUTINE p4z_lim  ***
56      !!
57      !! ** Purpose :   Compute the co-limitations by the various nutrients
58      !!              for the various phytoplankton species
59      !!
60      !! ** Method  : - ???
61      !!---------------------------------------------------------------------
62      INTEGER, INTENT(in)  :: kt
63      INTEGER  ::   ji, jj, jk
64      REAL(wp) ::   zlim1, zlim2, zlim3, zlim4, zno3, zferlim
65      REAL(wp) ::   zconctemp, zconctemp2, zconctempn, zconctempn2
66      REAL(wp) ::   ztemp, zdenom
67      !!---------------------------------------------------------------------
68
69
70      !  Tuning of the iron concentration to a minimum
71      !  level that is set to the detection limit
72      !  -------------------------------------
73
74      DO jk = 1, jpkm1
75         DO jj = 1, jpj
76            DO ji = 1, jpi
77               zno3=trn(ji,jj,jk,jpno3)
78               zferlim = MAX( 1.5e-11*(zno3/40E-6)**2, 3e-12 )
79               zferlim = MIN( zferlim, 1.5e-11 )
80               trn(ji,jj,jk,jpfer) = MAX( trn(ji,jj,jk,jpfer), zferlim )
81            END DO
82         END DO
83      END DO
84
85      !  Computation of a variable Ks for iron on diatoms taking into account
86      !  that increasing biomass is made of generally bigger cells
87      !  ------------------------------------------------
88
89      DO jk = 1, jpkm1
90         DO jj = 1, jpj
91            DO ji = 1, jpi
92               zconctemp   = MAX( 0.e0 , trn(ji,jj,jk,jpdia)-5e-7 )
93               zconctemp2  = trn(ji,jj,jk,jpdia) - zconctemp
94               zconctempn  = MAX( 0.e0 , trn(ji,jj,jk,jpphy)-1e-6 )
95               zconctempn2 = trn(ji,jj,jk,jpphy) - zconctempn
96               concdfe(ji,jj,jk) = ( zconctemp2 * conc3 + conc3m * zconctemp)   &
97                  &              / ( trn(ji,jj,jk,jpdia) + rtrn )
98               concdfe(ji,jj,jk) = MAX( conc3, concdfe(ji,jj,jk) )
99               concnfe(ji,jj,jk) = ( zconctempn2 * conc2 + conc2m * zconctempn)   &
100                  &              / ( trn(ji,jj,jk,jpphy) + rtrn )
101               concnfe(ji,jj,jk) = MAX( conc2, concnfe(ji,jj,jk) )
102            END DO
103         END DO
104      END DO
105
106     !  Michaelis-Menten Limitation term for nutrients Small flagellates
107     !      -----------------------------------------------
108      DO jk = 1, jpkm1
109         DO jj = 1, jpj
110            DO ji = 1, jpi
111              zdenom = 1. / &
112                  & ( conc0 * concnnh4 + concnnh4 * trn(ji,jj,jk,jpno3) + conc0 * trn(ji,jj,jk,jpnh4) )
113               xnanono3(ji,jj,jk) = trn(ji,jj,jk,jpno3) * concnnh4 * zdenom
114               xnanonh4(ji,jj,jk) = trn(ji,jj,jk,jpnh4) * conc0    * zdenom
115
116               zlim1 = xnanono3(ji,jj,jk) + xnanonh4(ji,jj,jk)
117               zlim2 = trn(ji,jj,jk,jppo4) / ( trn(ji,jj,jk,jppo4) + concnnh4          ) 
118               zlim3 = trn(ji,jj,jk,jpfer) / ( trn(ji,jj,jk,jpfer) + concnfe(ji,jj,jk) )
119               xlimphy(ji,jj,jk) = MIN( zlim1, zlim2, zlim3 )
120               zlim1 = trn(ji,jj,jk,jpnh4) / ( concnnh4 + trn(ji,jj,jk,jpnh4) )
121               zlim3 = trn(ji,jj,jk,jpfer) / ( conc2    + trn(ji,jj,jk,jpfer) )
122               zlim4 = trn(ji,jj,jk,jpdoc) / ( xkdoc   + trn(ji,jj,jk,jpdoc) )
123               xlimbac(ji,jj,jk) = MIN( zlim1, zlim2, zlim3 ) * zlim4
124
125            END DO
126         END DO
127      END DO
128
129      !   Michaelis-Menten Limitation term for nutrients Diatoms
130      !   ----------------------------------------------
131      DO jk = 1, jpkm1
132         DO jj = 1, jpj
133            DO ji = 1, jpi
134              zdenom = 1. / &
135                  & ( conc1 * concdnh4 + concdnh4 * trn(ji,jj,jk,jpno3) + conc1 * trn(ji,jj,jk,jpnh4) )
136
137               xdiatno3(ji,jj,jk) = trn(ji,jj,jk,jpno3) * concdnh4 * zdenom
138               xdiatnh4(ji,jj,jk) = trn(ji,jj,jk,jpnh4) * conc1    * zdenom 
139
140               zlim1 = xdiatno3(ji,jj,jk) + xdiatnh4(ji,jj,jk)
141               zlim2 = trn(ji,jj,jk,jppo4) / ( trn(ji,jj,jk,jppo4) + concdnh4          )
142               zlim3 = trn(ji,jj,jk,jpsil) / ( trn(ji,jj,jk,jpsil) + xksi   (ji,jj)    )
143               zlim4 = trn(ji,jj,jk,jpfer) / ( trn(ji,jj,jk,jpfer) + concdfe(ji,jj,jk) )
144               xlimdia(ji,jj,jk) = MIN( zlim1, zlim2, zlim3, zlim4 )
145
146            END DO
147         END DO
148      END DO
149
150
151      ! Compute the fraction of nanophytoplankton that is made of calcifiers
152      ! --------------------------------------------------------------------
153
154      DO jk = 1, jpkm1
155         DO jj = 1, jpj
156            DO ji = 1, jpi
157               ztemp = MAX( 0., tsn(ji,jj,jk,jp_tem) )
158               xfracal(ji,jj,jk) = caco3r * xlimphy(ji,jj,jk)   &
159                  &                       * MAX( 0.0001, ztemp / ( 2.+ ztemp ) )   &
160                  &                       * MAX( 1., trn(ji,jj,jk,jpphy) * 1.e6 / 2. )
161               xfracal(ji,jj,jk) = MIN( 0.8 , xfracal(ji,jj,jk) )
162               xfracal(ji,jj,jk) = MAX( 0.01, xfracal(ji,jj,jk) )
163            END DO
164         END DO
165      END DO
166      !
167   END SUBROUTINE p4z_lim
168
169   SUBROUTINE p4z_lim_init
170
171      !!----------------------------------------------------------------------
172      !!                  ***  ROUTINE p4z_lim_init  ***
173      !!
174      !! ** Purpose :   Initialization of nutrient limitation parameters
175      !!
176      !! ** Method  :   Read the nampislim namelist and check the parameters
177      !!      called at the first timestep (nit000)
178      !!
179      !! ** input   :   Namelist nampislim
180      !!
181      !!----------------------------------------------------------------------
182
183      NAMELIST/nampislim/ conc0, conc1, conc2, conc2m, conc3, conc3m,   &
184         &             concnnh4, concdnh4, xksi1, xksi2, xkdoc, caco3r
185
186      REWIND( numnat )                     ! read numnat
187      READ  ( numnat, nampislim )
188
189      IF(lwp) THEN                         ! control print
190         WRITE(numout,*) ' '
191         WRITE(numout,*) ' Namelist parameters for nutrient limitations, nampislim'
192         WRITE(numout,*) ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~'
193         WRITE(numout,*) '    mean rainratio                            caco3r    =', caco3r
194         WRITE(numout,*) '    NO3, PO4 half saturation                  conc0      =', conc0
195         WRITE(numout,*) '    half saturation constant for Si uptake    xksi1     =', xksi1
196         WRITE(numout,*) '    half saturation constant for Si/C         xksi2     =', xksi2
197         WRITE(numout,*) '    2nd half-sat. of DOC remineralization     xkdoc    =', xkdoc
198         WRITE(numout,*) '    Phosphate half saturation for diatoms     conc1     =', conc1
199         WRITE(numout,*) '    Iron half saturation for phyto            conc2     =', conc2
200         WRITE(numout,*) '    Max iron half saturation for phyto        conc2m    =', conc2m
201         WRITE(numout,*) '    Iron half saturation for diatoms          conc3     =', conc3
202         WRITE(numout,*) '    Maxi iron half saturation for diatoms     conc3m    =', conc3m
203         WRITE(numout,*) '    NH4 half saturation for phyto             concnnh4  =', concnnh4
204         WRITE(numout,*) '    NH4 half saturation for diatoms           concdnh4  =', concdnh4
205      ENDIF
206
207   END SUBROUTINE p4z_lim_init
208
209#else
210   !!======================================================================
211   !!  Dummy module :                                   No PISCES bio-model
212   !!======================================================================
213CONTAINS
214   SUBROUTINE p4z_lim                   ! Empty routine
215   END SUBROUTINE p4z_lim
216#endif 
217
218   !!======================================================================
219END MODULE  p4zlim
Note: See TracBrowser for help on using the repository browser.