[935] | 1 | MODULE 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 ! |
---|
[1119] | 18 | USE trc ! |
---|
[1073] | 19 | USE sms_pisces ! |
---|
[935] | 20 | |
---|
| 21 | IMPLICIT NONE |
---|
| 22 | PRIVATE |
---|
| 23 | |
---|
[1073] | 24 | PUBLIC p4z_lim |
---|
[2528] | 25 | PUBLIC p4z_lim_init |
---|
[935] | 26 | |
---|
| 27 | !! * Shared module variables |
---|
[1073] | 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 !: |
---|
[935] | 41 | |
---|
| 42 | |
---|
| 43 | !!* Substitution |
---|
[1800] | 44 | # include "top_substitute.h90" |
---|
[935] | 45 | !!---------------------------------------------------------------------- |
---|
[2528] | 46 | !! NEMO/TOP 3.3 , NEMO Consortium (2010) |
---|
[1152] | 47 | !! $Id$ |
---|
[2528] | 48 | !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) |
---|
[935] | 49 | !!---------------------------------------------------------------------- |
---|
| 50 | |
---|
| 51 | CONTAINS |
---|
| 52 | |
---|
[2528] | 53 | SUBROUTINE p4z_lim( kt ) |
---|
[935] | 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 | !!--------------------------------------------------------------------- |
---|
[2528] | 62 | INTEGER, INTENT(in) :: kt |
---|
[935] | 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 | |
---|
[2528] | 70 | ! Tuning of the iron concentration to a minimum |
---|
| 71 | ! level that is set to the detection limit |
---|
| 72 | ! ------------------------------------- |
---|
[935] | 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 | |
---|
[2528] | 85 | ! Computation of a variable Ks for iron on diatoms taking into account |
---|
| 86 | ! that increasing biomass is made of generally bigger cells |
---|
| 87 | ! ------------------------------------------------ |
---|
[935] | 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 | |
---|
[2528] | 106 | ! Michaelis-Menten Limitation term for nutrients Small flagellates |
---|
| 107 | ! ----------------------------------------------- |
---|
[935] | 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 | |
---|
[2528] | 129 | ! Michaelis-Menten Limitation term for nutrients Diatoms |
---|
| 130 | ! ---------------------------------------------- |
---|
[935] | 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 |
---|
[2528] | 157 | ztemp = MAX( 0., tsn(ji,jj,jk,jp_tem) ) |
---|
[935] | 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 | !! |
---|
[1119] | 176 | !! ** Method : Read the nampislim namelist and check the parameters |
---|
[2528] | 177 | !! called at the first timestep (nit000) |
---|
[935] | 178 | !! |
---|
[1119] | 179 | !! ** input : Namelist nampislim |
---|
[935] | 180 | !! |
---|
| 181 | !!---------------------------------------------------------------------- |
---|
| 182 | |
---|
[1119] | 183 | NAMELIST/nampislim/ conc0, conc1, conc2, conc2m, conc3, conc3m, & |
---|
[935] | 184 | & concnnh4, concdnh4, xksi1, xksi2, xkdoc, caco3r |
---|
| 185 | |
---|
| 186 | REWIND( numnat ) ! read numnat |
---|
[1119] | 187 | READ ( numnat, nampislim ) |
---|
[935] | 188 | |
---|
| 189 | IF(lwp) THEN ! control print |
---|
| 190 | WRITE(numout,*) ' ' |
---|
[1119] | 191 | WRITE(numout,*) ' Namelist parameters for nutrient limitations, nampislim' |
---|
[935] | 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 | !!====================================================================== |
---|
| 213 | CONTAINS |
---|
| 214 | SUBROUTINE p4z_lim ! Empty routine |
---|
| 215 | END SUBROUTINE p4z_lim |
---|
| 216 | #endif |
---|
| 217 | |
---|
| 218 | !!====================================================================== |
---|
| 219 | END MODULE p4zlim |
---|