[775] | 1 | MODULE p4zprod |
---|
| 2 | !!====================================================================== |
---|
| 3 | !! *** MODULE p4zprod *** |
---|
| 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_prod : |
---|
| 14 | !!---------------------------------------------------------------------- |
---|
| 15 | USE oce_trc ! |
---|
| 16 | USE trp_trc ! |
---|
| 17 | USE sms ! |
---|
| 18 | USE p4zday ! |
---|
| 19 | |
---|
| 20 | IMPLICIT NONE |
---|
| 21 | PRIVATE |
---|
[341] | 22 | |
---|
[775] | 23 | PUBLIC p4z_prod ! called in p4zbio.F90 |
---|
[186] | 24 | |
---|
[775] | 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 | !!---------------------------------------------------------------------- |
---|
[186] | 32 | |
---|
[775] | 33 | CONTAINS |
---|
[186] | 34 | |
---|
[775] | 35 | SUBROUTINE p4z_prod |
---|
| 36 | !!--------------------------------------------------------------------- |
---|
| 37 | !! *** ROUTINE p4z_prod *** |
---|
| 38 | !! |
---|
| 39 | !! ** Purpose : Compute the phytoplankton production depending on |
---|
| 40 | !! light, temperature and nutrient availability |
---|
| 41 | !! |
---|
| 42 | !! ** Method : - ??? |
---|
| 43 | !!--------------------------------------------------------------------- |
---|
| 44 | INTEGER :: ji, jj, jk |
---|
| 45 | REAL(wp) :: zsilfac, zfact |
---|
| 46 | REAL(wp) :: zprdiachl, zprbiochl, zsilim, ztn, zadap, zadap2 |
---|
| 47 | REAL(wp) :: zlim, zsilfac2, zsiborn, zprod |
---|
| 48 | REAL(wp) :: zmxltst, zmxlday, zlim1 |
---|
| 49 | REAL(wp), DIMENSION(jpi,jpj) :: zmixnano , zmixdiat |
---|
| 50 | REAL(wp), DIMENSION(jpi,jpj,jpk) :: zpislopen, zpislope2n |
---|
| 51 | REAL(wp), DIMENSION(jpi,jpj,jpk) :: zsopt , zpislopead |
---|
| 52 | REAL(wp), DIMENSION(jpi,jpj,jpk) :: zprdia , zprbio |
---|
| 53 | REAL(wp), DIMENSION(jpi,jpj,jpk) :: zetot2 , zpislopead2 |
---|
| 54 | !!--------------------------------------------------------------------- |
---|
[186] | 55 | |
---|
[775] | 56 | ! Computation of the optimal production |
---|
| 57 | ! ------------------------------------- |
---|
[186] | 58 | |
---|
[775] | 59 | # if defined key_off_degrad |
---|
| 60 | prmax(:,:,:) = 0.6 / rjjss * tgfunc(:,:,:) * facvol(:,:,:) |
---|
| 61 | # else |
---|
| 62 | prmax(:,:,:) = 0.6 / rjjss * tgfunc(:,:,:) |
---|
| 63 | # endif |
---|
| 64 | |
---|
| 65 | CALL p4z_day ! Computation of the day length |
---|
| 66 | |
---|
| 67 | |
---|
| 68 | DO jk = 1, jpkm1 |
---|
| 69 | DO jj = 1, jpj |
---|
| 70 | DO ji = 1, jpi |
---|
| 71 | |
---|
| 72 | ! Computation of the P-I slope for nanos and diatoms |
---|
| 73 | ! -------------------------------------------------- |
---|
| 74 | |
---|
| 75 | ztn = MAX( 0., tn(ji,jj,jk) - 15. ) |
---|
| 76 | zadap = 1.+ 2.* ztn / ( 2.+ ztn ) |
---|
| 77 | zadap2 = 1.e0 |
---|
| 78 | |
---|
| 79 | zfact = EXP( -0.21 * emoy(ji,jj,jk) ) |
---|
| 80 | |
---|
| 81 | zpislopead (ji,jj,jk) = pislope * ( 1.+ zadap * zfact ) |
---|
| 82 | zpislopead2(ji,jj,jk) = pislope2 * ( 1.+ zadap2 * zfact ) |
---|
| 83 | |
---|
| 84 | zpislopen(ji,jj,jk) = zpislopead(ji,jj,jk) * trn(ji,jj,jk,jpnch) & |
---|
| 85 | & / ( trn(ji,jj,jk,jpphy) * 12. + rtrn ) & |
---|
| 86 | & / ( prmax(ji,jj,jk) * rjjss * xlimphy(ji,jj,jk) + rtrn ) |
---|
| 87 | |
---|
| 88 | zpislope2n(ji,jj,jk) = zpislopead2(ji,jj,jk) * trn(ji,jj,jk,jpdch) & |
---|
| 89 | & / ( trn(ji,jj,jk,jpdia) * 12. + rtrn ) & |
---|
| 90 | & / ( prmax(ji,jj,jk) * rjjss * xlimdia(ji,jj,jk) + rtrn ) |
---|
| 91 | |
---|
[186] | 92 | END DO |
---|
[775] | 93 | END DO |
---|
| 94 | END DO |
---|
[186] | 95 | |
---|
[775] | 96 | DO jk = 1, jpkm1 |
---|
| 97 | DO jj = 1, jpj |
---|
| 98 | DO ji = 1, jpi |
---|
[186] | 99 | |
---|
[775] | 100 | ! Computation of production function |
---|
| 101 | ! ---------------------------------- |
---|
| 102 | |
---|
| 103 | zprbio(ji,jj,jk) = prmax(ji,jj,jk) * ( 1.- EXP( -zpislopen (ji,jj,jk) * etot(ji,jj,jk) ) ) |
---|
| 104 | zprdia(ji,jj,jk) = prmax(ji,jj,jk) * ( 1.- EXP( -zpislope2n(ji,jj,jk) * etot(ji,jj,jk) ) ) |
---|
| 105 | |
---|
[186] | 106 | END DO |
---|
[775] | 107 | END DO |
---|
| 108 | END DO |
---|
[186] | 109 | |
---|
[775] | 110 | DO jk = 1, jpkm1 |
---|
| 111 | DO jj = 1, jpj |
---|
| 112 | DO ji = 1, jpi |
---|
| 113 | |
---|
| 114 | ! Si/C of diatoms |
---|
| 115 | ! ------------------------ |
---|
| 116 | ! Si/C increases with iron stress and silicate availability |
---|
| 117 | ! Si/C is arbitrariliy increased for very high Si concentrations |
---|
| 118 | ! to mimic the very high ratios observed in the Southern Ocean (silpot2) |
---|
| 119 | |
---|
| 120 | zlim1 = trn(ji,jj,jk,jpsil) / ( trn(ji,jj,jk,jpsil) + xksi1 ) |
---|
| 121 | zlim = xdiatno3(ji,jj,jk) + xdiatnh4(ji,jj,jk) |
---|
| 122 | |
---|
| 123 | zsilim = MIN( zprdia(ji,jj,jk) / ( rtrn + prmax(ji,jj,jk) ), & |
---|
| 124 | & trn(ji,jj,jk,jpfer) / ( concdfe(ji,jj,jk) + trn(ji,jj,jk,jpfer) ), & |
---|
| 125 | & trn(ji,jj,jk,jppo4) / ( concdnh4 + trn(ji,jj,jk,jppo4) ), & |
---|
| 126 | & zlim ) |
---|
| 127 | zsilfac = 5.4 * EXP( -4.23 * zsilim ) * MAX( 0.e0, MIN( 1., 2.2 * ( zlim1 - 0.5 ) ) ) + 1.e0 |
---|
| 128 | zsiborn = MAX( 0.e0, ( trn(ji,jj,jk,jpsil) - 15.e-6 ) ) |
---|
| 129 | zsilfac2 = 1.+ 3.* zsiborn / ( zsiborn + xksi2 ) |
---|
| 130 | zsilfac = MIN( 6.4,zsilfac * zsilfac2) |
---|
| 131 | |
---|
| 132 | zsopt(ji,jj,jk) = grosip * trn(ji,jj,jk,jpsil) / ( trn(ji,jj,jk,jpsil) + xksi1 ) * zsilfac |
---|
| 133 | |
---|
[186] | 134 | END DO |
---|
[775] | 135 | END DO |
---|
| 136 | END DO |
---|
| 137 | |
---|
| 138 | ! Computation of the limitation term due to |
---|
| 139 | ! A mixed layer deeper than the euphotic depth |
---|
| 140 | ! -------------------------------------------- |
---|
| 141 | |
---|
| 142 | DO jj = 1, jpj |
---|
| 143 | DO ji = 1, jpi |
---|
| 144 | zmxltst = MAX( 0.e0, hmld(ji,jj) - zmeu(ji,jj) ) |
---|
| 145 | zmxlday = zmxltst**2 / rjjss |
---|
| 146 | zmixnano(ji,jj) = 1.- zmxlday / ( 1.+ zmxlday ) |
---|
| 147 | zmixdiat(ji,jj) = 1.- zmxlday / ( 3.+ zmxlday ) |
---|
| 148 | END DO |
---|
| 149 | END DO |
---|
[339] | 150 | |
---|
[775] | 151 | DO jk = 1, jpkm1 |
---|
| 152 | DO jj = 1, jpj |
---|
| 153 | DO ji = 1, jpi |
---|
| 154 | IF( fsdepw(ji,jj,jk+1) <= hmld(ji,jj) ) THEN |
---|
| 155 | |
---|
| 156 | ! Mixed-layer effect on production |
---|
| 157 | ! -------------------------------- |
---|
| 158 | zprbio(ji,jj,jk) = zprbio(ji,jj,jk) * zmixnano(ji,jj) |
---|
| 159 | zprdia(ji,jj,jk) = zprdia(ji,jj,jk) * zmixdiat(ji,jj) |
---|
| 160 | ENDIF |
---|
[186] | 161 | END DO |
---|
[775] | 162 | END DO |
---|
| 163 | END DO |
---|
| 164 | |
---|
| 165 | DO jk = 1, jpkm1 |
---|
| 166 | DO jj = 1, jpj |
---|
| 167 | DO ji = 1, jpi |
---|
| 168 | |
---|
| 169 | ! Computation of the maximum light intensity |
---|
| 170 | ! ------------------------------------------ |
---|
| 171 | zetot2(ji,jj,jk) = etot(ji,jj,jk) * 24. / ( strn(ji,jj) + rtrn ) |
---|
| 172 | IF( strn(ji,jj) < 1.e0 ) zetot2(ji,jj,jk) = etot(ji,jj,jk) |
---|
| 173 | |
---|
[186] | 174 | END DO |
---|
[775] | 175 | END DO |
---|
| 176 | END DO |
---|
[186] | 177 | |
---|
[775] | 178 | DO jk = 1, jpkm1 |
---|
| 179 | DO jj = 1, jpj |
---|
| 180 | DO ji = 1, jpi |
---|
[617] | 181 | |
---|
[775] | 182 | ! Computation of the various production terms for nanophyto. |
---|
| 183 | ! ---------------------------------------------------------- |
---|
| 184 | zpislopen(ji,jj,jk) = zpislopead(ji,jj,jk) & |
---|
| 185 | & * trn(ji,jj,jk,jpnch) / ( rtrn + trn(ji,jj,jk,jpphy) * 12.) & |
---|
| 186 | & / ( prmax(ji,jj,jk) * rjjss * MAX( 0.1, xlimphy(ji,jj,jk) ) + rtrn ) |
---|
[186] | 187 | |
---|
[775] | 188 | zprbiochl = prmax(ji,jj,jk) * ( 1.- EXP( -zpislopen(ji,jj,jk) * zetot2(ji,jj,jk) ) ) |
---|
[186] | 189 | |
---|
[775] | 190 | prorca(ji,jj,jk) = zprbio(ji,jj,jk) * xlimphy(ji,jj,jk) * trn(ji,jj,jk,jpphy) * rfact2 |
---|
[339] | 191 | |
---|
[775] | 192 | pronew(ji,jj,jk) = prorca(ji,jj,jk) * xnanono3(ji,jj,jk) & |
---|
| 193 | & / ( xnanono3(ji,jj,jk) + xnanonh4(ji,jj,jk) + rtrn ) |
---|
| 194 | proreg(ji,jj,jk) = prorca(ji,jj,jk) - pronew(ji,jj,jk) |
---|
[186] | 195 | |
---|
[775] | 196 | zprod = rjjss * prorca(ji,jj,jk) * zprbiochl * trn(ji,jj,jk,jpphy) & |
---|
| 197 | & * MAX( 0.1, xlimphy(ji,jj,jk) ) |
---|
[186] | 198 | |
---|
[775] | 199 | prorca5(ji,jj,jk) = (fecnm)**2 * zprod / chlcnm & |
---|
| 200 | & / ( zpislopead(ji,jj,jk) * zetot2(ji,jj,jk) * trn(ji,jj,jk,jpnfe) + rtrn ) |
---|
| 201 | |
---|
| 202 | prorca6(ji,jj,jk) = chlcnm * 144. * zprod & |
---|
| 203 | & / ( zpislopead(ji,jj,jk) * zetot2(ji,jj,jk) * trn(ji,jj,jk,jpnch) + rtrn ) |
---|
| 204 | |
---|
[186] | 205 | END DO |
---|
[775] | 206 | END DO |
---|
| 207 | END DO |
---|
[186] | 208 | |
---|
[775] | 209 | DO jk = 1, jpkm1 |
---|
| 210 | DO jj = 1, jpj |
---|
| 211 | DO ji = 1, jpi |
---|
[617] | 212 | |
---|
[775] | 213 | ! Computation of the various production terms for diatoms |
---|
| 214 | ! ------------------------------------------------------- |
---|
| 215 | zpislope2n(ji,jj,jk) = zpislopead2(ji,jj,jk) * trn(ji,jj,jk,jpdch) & |
---|
| 216 | & / ( rtrn + trn(ji,jj,jk,jpdia) * 12.) & |
---|
| 217 | & / ( prmax(ji,jj,jk) * rjjss * MAX( 0.1, xlimdia(ji,jj,jk) ) + rtrn ) |
---|
[651] | 218 | |
---|
[775] | 219 | zprdiachl = prmax(ji,jj,jk) * ( 1.- EXP( -zetot2(ji,jj,jk) * zpislope2n(ji,jj,jk) ) ) |
---|
[339] | 220 | |
---|
[775] | 221 | prorca2(ji,jj,jk) = zprdia(ji,jj,jk) * xlimdia(ji,jj,jk) * trn(ji,jj,jk,jpdia) * rfact2 |
---|
| 222 | |
---|
| 223 | pronew2(ji,jj,jk) = prorca2(ji,jj,jk) * xdiatno3(ji,jj,jk) & |
---|
| 224 | & / ( xdiatno3(ji,jj,jk) + xdiatnh4(ji,jj,jk) + rtrn ) |
---|
| 225 | proreg2(ji,jj,jk) = prorca2(ji,jj,jk) - pronew2(ji,jj,jk) |
---|
| 226 | prorca3(ji,jj,jk) = prorca2(ji,jj,jk) * zsopt(ji,jj,jk) |
---|
| 227 | |
---|
| 228 | zprod=rjjss * prorca2(ji,jj,jk) * zprdiachl * trn(ji,jj,jk,jpdia) * MAX( 0.1, xlimdia(ji,jj,jk) ) |
---|
| 229 | |
---|
| 230 | prorca4(ji,jj,jk) = (fecdm)**2 * zprod / chlcdm & |
---|
| 231 | & / ( zpislopead2(ji,jj,jk) * zetot2(ji,jj,jk) * trn(ji,jj,jk,jpdfe) + rtrn ) |
---|
| 232 | |
---|
| 233 | prorca7(ji,jj,jk) = chlcdm * 144. * zprod & |
---|
| 234 | & / ( zpislopead2(ji,jj,jk) * zetot2(ji,jj,jk) * trn(ji,jj,jk,jpdch) + rtrn ) |
---|
| 235 | |
---|
[186] | 236 | END DO |
---|
[775] | 237 | END DO |
---|
| 238 | END DO |
---|
| 239 | ! |
---|
| 240 | END SUBROUTINE p4z_prod |
---|
| 241 | |
---|
| 242 | #else |
---|
| 243 | !!====================================================================== |
---|
| 244 | !! Dummy module : No PISCES bio-model |
---|
| 245 | !!====================================================================== |
---|
| 246 | CONTAINS |
---|
| 247 | SUBROUTINE p4z_prod ! Empty routine |
---|
| 248 | END SUBROUTINE p4z_prod |
---|
| 249 | #endif |
---|
| 250 | |
---|
| 251 | !!====================================================================== |
---|
| 252 | END MODULE p4zprod |
---|