Changeset 10975 for NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/TOP/PISCES/P4Z/p5zmicro.F90
- Timestamp:
- 2019-05-13T18:34:33+02:00 (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/TOP/PISCES/P4Z/p5zmicro.F90
r10362 r10975 60 60 CONTAINS 61 61 62 SUBROUTINE p5z_micro( kt, knt )62 SUBROUTINE p5z_micro( kt, knt, Kbb, Krhs ) 63 63 !!--------------------------------------------------------------------- 64 64 !! *** ROUTINE p5z_micro *** … … 70 70 INTEGER, INTENT(in) :: kt ! ocean time step 71 71 INTEGER, INTENT(in) :: knt 72 INTEGER, INTENT(in) :: Kbb, Krhs ! time level indices 72 73 ! 73 74 INTEGER :: ji, jj, jk … … 102 103 DO jj = 1, jpj 103 104 DO ji = 1, jpi 104 zcompaz = MAX( ( tr b(ji,jj,jk,jpzoo) - 1.e-9 ), 0.e0 )105 zcompaz = MAX( ( tr(ji,jj,jk,jpzoo,Kbb) - 1.e-9 ), 0.e0 ) 105 106 zfact = xstep * tgfunc2(ji,jj,jk) * zcompaz 106 107 107 108 ! Michaelis-Menten mortality rates of microzooplankton 108 109 ! ----------------------------------------------------- 109 zrespz = resrat * zfact * ( tr b(ji,jj,jk,jpzoo) / ( xkmort + trb(ji,jj,jk,jpzoo) ) &110 zrespz = resrat * zfact * ( tr(ji,jj,jk,jpzoo,Kbb) / ( xkmort + tr(ji,jj,jk,jpzoo,Kbb) ) & 110 111 & + 3. * nitrfac(ji,jj,jk) ) 111 112 … … 113 114 ! no real reason except that it seems to be more stable and may mimic predation. 114 115 ! ------------------------------------------------------------------------------ 115 ztortz = mzrat * 1.e6 * zfact * tr b(ji,jj,jk,jpzoo) * (1. - nitrfac(ji,jj,jk))116 ztortz = mzrat * 1.e6 * zfact * tr(ji,jj,jk,jpzoo,Kbb) * (1. - nitrfac(ji,jj,jk)) 116 117 117 118 ! Computation of the abundance of the preys 118 119 ! A threshold can be specified in the namelist 119 120 ! -------------------------------------------- 120 zcompadi = MIN( MAX( ( tr b(ji,jj,jk,jpdia) - xthreshdia ), 0.e0 ), xsizedia )121 zcompaph = MAX( ( tr b(ji,jj,jk,jpphy) - xthreshphy ), 0.e0 )122 zcompaz = MAX( ( tr b(ji,jj,jk,jpzoo) - xthreshzoo ), 0.e0 )123 zcompapi = MAX( ( tr b(ji,jj,jk,jppic) - xthreshpic ), 0.e0 )124 zcompapoc = MAX( ( tr b(ji,jj,jk,jppoc) - xthreshpoc ), 0.e0 )121 zcompadi = MIN( MAX( ( tr(ji,jj,jk,jpdia,Kbb) - xthreshdia ), 0.e0 ), xsizedia ) 122 zcompaph = MAX( ( tr(ji,jj,jk,jpphy,Kbb) - xthreshphy ), 0.e0 ) 123 zcompaz = MAX( ( tr(ji,jj,jk,jpzoo,Kbb) - xthreshzoo ), 0.e0 ) 124 zcompapi = MAX( ( tr(ji,jj,jk,jppic,Kbb) - xthreshpic ), 0.e0 ) 125 zcompapoc = MAX( ( tr(ji,jj,jk,jppoc,Kbb) - xthreshpoc ), 0.e0 ) 125 126 126 127 ! Microzooplankton grazing … … 130 131 zfoodlim = MAX( 0. , zfood - min(xthresh,0.5*zfood) ) 131 132 zdenom = zfoodlim / ( xkgraz + zfoodlim ) 132 zgraze = grazrat * xstep * tgfunc2(ji,jj,jk) * tr b(ji,jj,jk,jpzoo) * (1. - nitrfac(ji,jj,jk))133 zgraze = grazrat * xstep * tgfunc2(ji,jj,jk) * tr(ji,jj,jk,jpzoo,Kbb) * (1. - nitrfac(ji,jj,jk)) 133 134 134 135 ! An active switching parameterization is used here. … … 155 156 ! ------------------------------------------------------- 156 157 zgraznc = zgraze * ztmp1 * zdenom 157 zgraznn = zgraznc * tr b(ji,jj,jk,jpnph) / (trb(ji,jj,jk,jpphy) + rtrn)158 zgraznp = zgraznc * tr b(ji,jj,jk,jppph) / (trb(ji,jj,jk,jpphy) + rtrn)159 zgraznf = zgraznc * tr b(ji,jj,jk,jpnfe) / (trb(ji,jj,jk,jpphy) + rtrn)158 zgraznn = zgraznc * tr(ji,jj,jk,jpnph,Kbb) / (tr(ji,jj,jk,jpphy,Kbb) + rtrn) 159 zgraznp = zgraznc * tr(ji,jj,jk,jppph,Kbb) / (tr(ji,jj,jk,jpphy,Kbb) + rtrn) 160 zgraznf = zgraznc * tr(ji,jj,jk,jpnfe,Kbb) / (tr(ji,jj,jk,jpphy,Kbb) + rtrn) 160 161 zgrazpc = zgraze * ztmp2 * zdenom 161 zgrazpn = zgrazpc * tr b(ji,jj,jk,jpnpi) / (trb(ji,jj,jk,jppic) + rtrn)162 zgrazpp = zgrazpc * tr b(ji,jj,jk,jpppi) / (trb(ji,jj,jk,jppic) + rtrn)163 zgrazpf = zgrazpc * tr b(ji,jj,jk,jppfe) / (trb(ji,jj,jk,jppic) + rtrn)162 zgrazpn = zgrazpc * tr(ji,jj,jk,jpnpi,Kbb) / (tr(ji,jj,jk,jppic,Kbb) + rtrn) 163 zgrazpp = zgrazpc * tr(ji,jj,jk,jpppi,Kbb) / (tr(ji,jj,jk,jppic,Kbb) + rtrn) 164 zgrazpf = zgrazpc * tr(ji,jj,jk,jppfe,Kbb) / (tr(ji,jj,jk,jppic,Kbb) + rtrn) 164 165 zgrazz = zgraze * ztmp5 * zdenom 165 166 zgrazpoc = zgraze * ztmp3 * zdenom 166 zgrazpon = zgrazpoc * tr b(ji,jj,jk,jppon) / ( trb(ji,jj,jk,jppoc) + rtrn )167 zgrazpop = zgrazpoc * tr b(ji,jj,jk,jppop) / ( trb(ji,jj,jk,jppoc) + rtrn )168 zgrazpof = zgrazpoc* tr b(ji,jj,jk,jpsfe) / (trb(ji,jj,jk,jppoc) + rtrn)167 zgrazpon = zgrazpoc * tr(ji,jj,jk,jppon,Kbb) / ( tr(ji,jj,jk,jppoc,Kbb) + rtrn ) 168 zgrazpop = zgrazpoc * tr(ji,jj,jk,jppop,Kbb) / ( tr(ji,jj,jk,jppoc,Kbb) + rtrn ) 169 zgrazpof = zgrazpoc* tr(ji,jj,jk,jpsfe,Kbb) / (tr(ji,jj,jk,jppoc,Kbb) + rtrn) 169 170 zgrazdc = zgraze * ztmp4 * zdenom 170 zgrazdn = zgrazdc * tr b(ji,jj,jk,jpndi) / (trb(ji,jj,jk,jpdia) + rtrn)171 zgrazdp = zgrazdc * tr b(ji,jj,jk,jppdi) / (trb(ji,jj,jk,jpdia) + rtrn)172 zgrazdf = zgrazdc * tr b(ji,jj,jk,jpdfe) / (trb(ji,jj,jk,jpdia) + rtrn)171 zgrazdn = zgrazdc * tr(ji,jj,jk,jpndi,Kbb) / (tr(ji,jj,jk,jpdia,Kbb) + rtrn) 172 zgrazdp = zgrazdc * tr(ji,jj,jk,jppdi,Kbb) / (tr(ji,jj,jk,jpdia,Kbb) + rtrn) 173 zgrazdf = zgrazdc * tr(ji,jj,jk,jpdfe,Kbb) / (tr(ji,jj,jk,jpdia,Kbb) + rtrn) 173 174 ! 174 175 zgraztotc = zgraznc + zgrazpoc + zgrazdc + zgrazz + zgrazpc … … 247 248 ! Update of the TRA arrays 248 249 ! ------------------------ 249 tr a(ji,jj,jk,jppo4) = tra(ji,jj,jk,jppo4) + zgrarep250 tr a(ji,jj,jk,jpnh4) = tra(ji,jj,jk,jpnh4) + zgraren251 tr a(ji,jj,jk,jpdoc) = tra(ji,jj,jk,jpdoc) + zgradoc250 tr(ji,jj,jk,jppo4,Krhs) = tr(ji,jj,jk,jppo4,Krhs) + zgrarep 251 tr(ji,jj,jk,jpnh4,Krhs) = tr(ji,jj,jk,jpnh4,Krhs) + zgraren 252 tr(ji,jj,jk,jpdoc,Krhs) = tr(ji,jj,jk,jpdoc,Krhs) + zgradoc 252 253 ! 253 254 IF( ln_ligand ) THEN 254 tr a(ji,jj,jk,jplgw) = tra(ji,jj,jk,jplgw) + zgradoc * ldocz255 tr(ji,jj,jk,jplgw,Krhs) = tr(ji,jj,jk,jplgw,Krhs) + zgradoc * ldocz 255 256 zzligprod(ji,jj,jk) = zgradoc * ldocz 256 257 ENDIF 257 258 ! 258 tr a(ji,jj,jk,jpdon) = tra(ji,jj,jk,jpdon) + zgradon259 tr a(ji,jj,jk,jpdop) = tra(ji,jj,jk,jpdop) + zgradop260 tr a(ji,jj,jk,jpoxy) = tra(ji,jj,jk,jpoxy) - o2ut * zgrarem261 tr a(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) + zgraref259 tr(ji,jj,jk,jpdon,Krhs) = tr(ji,jj,jk,jpdon,Krhs) + zgradon 260 tr(ji,jj,jk,jpdop,Krhs) = tr(ji,jj,jk,jpdop,Krhs) + zgradop 261 tr(ji,jj,jk,jpoxy,Krhs) = tr(ji,jj,jk,jpoxy,Krhs) - o2ut * zgrarem 262 tr(ji,jj,jk,jpfer,Krhs) = tr(ji,jj,jk,jpfer,Krhs) + zgraref 262 263 zfezoo(ji,jj,jk) = zgraref 263 tr a(ji,jj,jk,jpzoo) = tra(ji,jj,jk,jpzoo) + zepsherv * zgraztotc - zrespirc - ztortz - zgrazz264 tr a(ji,jj,jk,jpphy) = tra(ji,jj,jk,jpphy) - zgraznc265 tr a(ji,jj,jk,jpnph) = tra(ji,jj,jk,jpnph) - zgraznn266 tr a(ji,jj,jk,jppph) = tra(ji,jj,jk,jppph) - zgraznp267 tr a(ji,jj,jk,jppic) = tra(ji,jj,jk,jppic) - zgrazpc268 tr a(ji,jj,jk,jpnpi) = tra(ji,jj,jk,jpnpi) - zgrazpn269 tr a(ji,jj,jk,jpppi) = tra(ji,jj,jk,jpppi) - zgrazpp270 tr a(ji,jj,jk,jpdia) = tra(ji,jj,jk,jpdia) - zgrazdc271 tr a(ji,jj,jk,jpndi) = tra(ji,jj,jk,jpndi) - zgrazdn272 tr a(ji,jj,jk,jppdi) = tra(ji,jj,jk,jppdi) - zgrazdp273 tr a(ji,jj,jk,jpnch) = tra(ji,jj,jk,jpnch) - zgraznc * trb(ji,jj,jk,jpnch)/(trb(ji,jj,jk,jpphy)+rtrn)274 tr a(ji,jj,jk,jppch) = tra(ji,jj,jk,jppch) - zgrazpc * trb(ji,jj,jk,jppch)/(trb(ji,jj,jk,jppic)+rtrn)275 tr a(ji,jj,jk,jpdch) = tra(ji,jj,jk,jpdch) - zgrazdc * trb(ji,jj,jk,jpdch)/(trb(ji,jj,jk,jpdia)+rtrn)276 tr a(ji,jj,jk,jpdsi) = tra(ji,jj,jk,jpdsi) - zgrazdc * trb(ji,jj,jk,jpdsi)/(trb(ji,jj,jk,jpdia)+rtrn)277 tr a(ji,jj,jk,jpgsi) = tra(ji,jj,jk,jpgsi) + zgrazdc * trb(ji,jj,jk,jpdsi)/(trb(ji,jj,jk,jpdia)+rtrn)278 tr a(ji,jj,jk,jpnfe) = tra(ji,jj,jk,jpnfe) - zgraznf279 tr a(ji,jj,jk,jppfe) = tra(ji,jj,jk,jppfe) - zgrazpf280 tr a(ji,jj,jk,jpdfe) = tra(ji,jj,jk,jpdfe) - zgrazdf281 tr a(ji,jj,jk,jppoc) = tra(ji,jj,jk,jppoc) + ztortz + zgrapoc - zgrazpoc264 tr(ji,jj,jk,jpzoo,Krhs) = tr(ji,jj,jk,jpzoo,Krhs) + zepsherv * zgraztotc - zrespirc - ztortz - zgrazz 265 tr(ji,jj,jk,jpphy,Krhs) = tr(ji,jj,jk,jpphy,Krhs) - zgraznc 266 tr(ji,jj,jk,jpnph,Krhs) = tr(ji,jj,jk,jpnph,Krhs) - zgraznn 267 tr(ji,jj,jk,jppph,Krhs) = tr(ji,jj,jk,jppph,Krhs) - zgraznp 268 tr(ji,jj,jk,jppic,Krhs) = tr(ji,jj,jk,jppic,Krhs) - zgrazpc 269 tr(ji,jj,jk,jpnpi,Krhs) = tr(ji,jj,jk,jpnpi,Krhs) - zgrazpn 270 tr(ji,jj,jk,jpppi,Krhs) = tr(ji,jj,jk,jpppi,Krhs) - zgrazpp 271 tr(ji,jj,jk,jpdia,Krhs) = tr(ji,jj,jk,jpdia,Krhs) - zgrazdc 272 tr(ji,jj,jk,jpndi,Krhs) = tr(ji,jj,jk,jpndi,Krhs) - zgrazdn 273 tr(ji,jj,jk,jppdi,Krhs) = tr(ji,jj,jk,jppdi,Krhs) - zgrazdp 274 tr(ji,jj,jk,jpnch,Krhs) = tr(ji,jj,jk,jpnch,Krhs) - zgraznc * tr(ji,jj,jk,jpnch,Kbb)/(tr(ji,jj,jk,jpphy,Kbb)+rtrn) 275 tr(ji,jj,jk,jppch,Krhs) = tr(ji,jj,jk,jppch,Krhs) - zgrazpc * tr(ji,jj,jk,jppch,Kbb)/(tr(ji,jj,jk,jppic,Kbb)+rtrn) 276 tr(ji,jj,jk,jpdch,Krhs) = tr(ji,jj,jk,jpdch,Krhs) - zgrazdc * tr(ji,jj,jk,jpdch,Kbb)/(tr(ji,jj,jk,jpdia,Kbb)+rtrn) 277 tr(ji,jj,jk,jpdsi,Krhs) = tr(ji,jj,jk,jpdsi,Krhs) - zgrazdc * tr(ji,jj,jk,jpdsi,Kbb)/(tr(ji,jj,jk,jpdia,Kbb)+rtrn) 278 tr(ji,jj,jk,jpgsi,Krhs) = tr(ji,jj,jk,jpgsi,Krhs) + zgrazdc * tr(ji,jj,jk,jpdsi,Kbb)/(tr(ji,jj,jk,jpdia,Kbb)+rtrn) 279 tr(ji,jj,jk,jpnfe,Krhs) = tr(ji,jj,jk,jpnfe,Krhs) - zgraznf 280 tr(ji,jj,jk,jppfe,Krhs) = tr(ji,jj,jk,jppfe,Krhs) - zgrazpf 281 tr(ji,jj,jk,jpdfe,Krhs) = tr(ji,jj,jk,jpdfe,Krhs) - zgrazdf 282 tr(ji,jj,jk,jppoc,Krhs) = tr(ji,jj,jk,jppoc,Krhs) + ztortz + zgrapoc - zgrazpoc 282 283 prodpoc(ji,jj,jk) = prodpoc(ji,jj,jk) + ztortz + zgrapoc 283 284 conspoc(ji,jj,jk) = conspoc(ji,jj,jk) - zgrazpoc 284 tr a(ji,jj,jk,jppon) = tra(ji,jj,jk,jppon) + no3rat3 * ztortz + zgrapon - zgrazpon285 tr a(ji,jj,jk,jppop) = tra(ji,jj,jk,jppop) + po4rat3 * ztortz + zgrapop - zgrazpop286 tr a(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + ferat3 * ztortz + zgrapof - zgrazpof285 tr(ji,jj,jk,jppon,Krhs) = tr(ji,jj,jk,jppon,Krhs) + no3rat3 * ztortz + zgrapon - zgrazpon 286 tr(ji,jj,jk,jppop,Krhs) = tr(ji,jj,jk,jppop,Krhs) + po4rat3 * ztortz + zgrapop - zgrazpop 287 tr(ji,jj,jk,jpsfe,Krhs) = tr(ji,jj,jk,jpsfe,Krhs) + ferat3 * ztortz + zgrapof - zgrazpof 287 288 ! 288 289 ! calcite production … … 291 292 ! 292 293 zprcaca = part * zprcaca 293 tr a(ji,jj,jk,jpdic) = tra(ji,jj,jk,jpdic) + zgrarem - zprcaca294 tr a(ji,jj,jk,jptal) = tra(ji,jj,jk,jptal) - 2. * zprcaca &294 tr(ji,jj,jk,jpdic,Krhs) = tr(ji,jj,jk,jpdic,Krhs) + zgrarem - zprcaca 295 tr(ji,jj,jk,jptal,Krhs) = tr(ji,jj,jk,jptal,Krhs) - 2. * zprcaca & 295 296 & + rno3 * zgraren 296 tr a(ji,jj,jk,jpcal) = tra(ji,jj,jk,jpcal) + zprcaca297 tr(ji,jj,jk,jpcal,Krhs) = tr(ji,jj,jk,jpcal,Krhs) + zprcaca 297 298 END DO 298 299 END DO … … 321 322 WRITE(charout, FMT="('micro')") 322 323 CALL prt_ctl_trc_info(charout) 323 CALL prt_ctl_trc(tab4d=tr a, mask=tmask, clinfo=ctrcnm)324 CALL prt_ctl_trc(tab4d=tr(:,:,:,:,Krhs), mask=tmask, clinfo=ctrcnm) 324 325 ENDIF 325 326 !
Note: See TracChangeset
for help on using the changeset viewer.