- Timestamp:
- 2021-07-15T11:11:28+02:00 (3 years ago)
- Location:
- NEMO/branches/UKMO/NEMO_r4.2RC_GO8_package/src/TOP/PISCES/P4Z
- Files:
-
- 25 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/UKMO/NEMO_r4.2RC_GO8_package/src/TOP/PISCES/P4Z/p4zagg.F90
r13295 r15122 60 60 IF( ln_p4z ) THEN 61 61 ! 62 DO_3D( 1, 1, 1, 1, 1, jpkm1 )62 DO_3D( nn_hls, nn_hls, nn_hls, nn_hls, 1, jpkm1 ) 63 63 ! 64 64 zfact = xstep * xdiss(ji,jj,jk) … … 102 102 ELSE ! ln_p5z 103 103 ! 104 DO_3D( 1, 1, 1, 1, 1, jpkm1 )104 DO_3D( nn_hls, nn_hls, nn_hls, nn_hls, 1, jpkm1 ) 105 105 ! 106 106 zfact = xstep * xdiss(ji,jj,jk) -
NEMO/branches/UKMO/NEMO_r4.2RC_GO8_package/src/TOP/PISCES/P4Z/p4zbc.F90
r13295 r15122 112 112 IF( ll_river ) THEN 113 113 jl = n_trc_indcbc(jpno3) 114 DO_2D( 1, 1, 1, 1)114 DO_2D( nn_hls, nn_hls, nn_hls, nn_hls ) 115 115 DO jk = 1, nk_rnf(ji,jj) 116 116 zcoef = rn_rfact / ( e1e2t(ji,jj) * h_rnf(ji,jj) * rn_cbc_time ) * tmask(ji,jj,1) … … 145 145 ALLOCATE( zironice(jpi,jpj) ) 146 146 ! 147 DO_2D( 1, 1, 1, 1)147 DO_2D( nn_hls, nn_hls, nn_hls, nn_hls ) 148 148 zdep = rfact / e3t(ji,jj,1,Kmm) 149 149 zwflux = fmmflx(ji,jj) / 1000._wp … … 313 313 CALL lbc_lnk( 'p4zbc', zcmask , 'T', 1.0_wp ) ! lateral boundary conditions on cmask (sign unchanged) 314 314 ! 315 DO_3D( 1, 1, 1, 1, 1, jpk )315 DO_3D( nn_hls, nn_hls, nn_hls, nn_hls, 1, jpk ) 316 316 zexpide = MIN( 8.,( gdept(ji,jj,jk,Kmm) / 500. )**(-1.5) ) 317 317 zdenitide = -0.9543 + 0.7662 * LOG( zexpide ) - 0.235 * LOG( zexpide )**2 -
NEMO/branches/UKMO/NEMO_r4.2RC_GO8_package/src/TOP/PISCES/P4Z/p4zbio.F90
r13295 r15122 72 72 xdiss(:,:,:) = 1. 73 73 !!gm the use of nmld should be better here? 74 DO_3D( 1, 1, 1, 1, 2, jpkm1 )74 DO_3D( nn_hls, nn_hls, nn_hls, nn_hls, 2, jpkm1 ) 75 75 !!gm : use nmln and test on jk ... less memory acces 76 76 IF( gdepw(ji,jj,jk+1,Kmm) > hmld(ji,jj) ) xdiss(ji,jj,jk) = 0.01 -
NEMO/branches/UKMO/NEMO_r4.2RC_GO8_package/src/TOP/PISCES/P4Z/p4zche.F90
r14086 r15122 179 179 ! 0.04°C relative to an exact computation 180 180 ! --------------------------------------------------------------------- 181 DO_3D( 1, 1, 1, 1, 1, jpk )181 DO_3D( nn_hls, nn_hls, nn_hls, nn_hls, 1, jpk ) 182 182 zpres = gdept(ji,jj,jk,Kmm) / 1000. 183 183 za1 = 0.04 * ( 1.0 + 0.185 * ts(ji,jj,jk,jp_tem,Kmm) + 0.035 * (salinprac(ji,jj,jk) - 35.0) ) … … 188 188 ! CHEMICAL CONSTANTS - SURFACE LAYER 189 189 ! ---------------------------------- 190 DO_2D( 1, 1, 1, 1)190 DO_2D( nn_hls, nn_hls, nn_hls, nn_hls ) 191 191 ! ! SET ABSOLUTE TEMPERATURE 192 192 ztkel = tempis(ji,jj,1) + 273.15 … … 204 204 ! OXYGEN SOLUBILITY - DEEP OCEAN 205 205 ! ------------------------------- 206 DO_3D( 1, 1, 1, 1, 1, jpk )206 DO_3D( nn_hls, nn_hls, nn_hls, nn_hls, 1, jpk ) 207 207 ztkel = tempis(ji,jj,jk) + 273.15 208 208 zsal = salinprac(ji,jj,jk) + ( 1.- tmask(ji,jj,jk) ) * 35. … … 223 223 ! CHEMICAL CONSTANTS - DEEP OCEAN 224 224 ! ------------------------------- 225 DO_3D( 1, 1, 1, 1, 1, jpk )225 DO_3D( nn_hls, nn_hls, nn_hls, nn_hls, 1, jpk ) 226 226 ! SET PRESSION ACCORDING TO SAUNDER (1980) 227 227 zplat = SIN ( ABS(gphit(ji,jj)*3.141592654/180.) ) … … 451 451 IF( ln_timing ) CALL timing_start('ahini_for_at') 452 452 ! 453 DO_3D( 1, 1, 1, 1, 1, jpk )453 DO_3D( nn_hls, nn_hls, nn_hls, nn_hls, 1, jpk ) 454 454 p_alkcb = tr(ji,jj,jk,jptal,Kbb) * 1000. / (rhop(ji,jj,jk) + rtrn) 455 455 p_dictot = tr(ji,jj,jk,jpdic,Kbb) * 1000. / (rhop(ji,jj,jk) + rtrn) … … 549 549 550 550 ! TOTAL H+ scale: conversion factor for Htot = aphscale * Hfree 551 DO_3D( 1, 1, 1, 1, 1, jpk )551 DO_3D( nn_hls, nn_hls, nn_hls, nn_hls, 1, jpk ) 552 552 IF (rmask(ji,jj,jk) == 1.) THEN 553 553 p_alktot = tr(ji,jj,jk,jptal,Kbb) * 1000. / (rhop(ji,jj,jk) + rtrn) … … 578 578 579 579 DO jn = 1, jp_maxniter_atgen 580 DO_3D( 1, 1, 1, 1, 1, jpk )580 DO_3D( nn_hls, nn_hls, nn_hls, nn_hls, 1, jpk ) 581 581 IF (rmask(ji,jj,jk) == 1.) THEN 582 582 zfact = rhop(ji,jj,jk) / 1000. + rtrn -
NEMO/branches/UKMO/NEMO_r4.2RC_GO8_package/src/TOP/PISCES/P4Z/p4zfechem.F90
r13472 r15122 92 92 ! Chemistry is supposed to be fast enough to be at equilibrium 93 93 ! ------------------------------------------------------------ 94 DO_3D( 1, 1, 1, 1, 1, jpkm1)94 DO_3D( nn_hls, nn_hls, nn_hls, nn_hls, 1, jpkm1) 95 95 zTL1(ji,jj,jk) = ztotlig(ji,jj,jk) 96 96 zkeq = fekeq(ji,jj,jk) … … 107 107 108 108 zdust = 0. ! if no dust available 109 DO_3D( 1, 1, 1, 1, 1, jpkm1)109 DO_3D( nn_hls, nn_hls, nn_hls, nn_hls, 1, jpkm1) 110 110 ! Scavenging rate of iron. This scavenging rate depends on the load of particles of sea water. 111 111 ! This parameterization assumes a simple second order kinetics (k[Particles][Fe]). … … 173 173 IF( ln_ligand ) THEN 174 174 ! 175 DO_3D( 1, 1, 1, 1, 1, jpkm1)175 DO_3D( nn_hls, nn_hls, nn_hls, nn_hls, 1, jpkm1) 176 176 zlam1a = ( 0.369 * 0.3 * tr(ji,jj,jk,jpdoc,Kbb) + 102.4 * tr(ji,jj,jk,jppoc,Kbb) ) * xdiss(ji,jj,jk) & 177 177 & + ( 114. * 0.3 * tr(ji,jj,jk,jpdoc,Kbb) ) -
NEMO/branches/UKMO/NEMO_r4.2RC_GO8_package/src/TOP/PISCES/P4Z/p4zflx.F90
r13295 r15122 110 110 IF( l_co2cpl ) satmco2(:,:) = atm_co2(:,:) 111 111 112 DO_2D( 1, 1, 1, 1)112 DO_2D( nn_hls, nn_hls, nn_hls, nn_hls ) 113 113 ! DUMMY VARIABLES FOR DIC, H+, AND BORATE 114 114 zfact = rhop(ji,jj,1) / 1000. + rtrn … … 126 126 ! ------------------------------------------- 127 127 128 DO_2D( 1, 1, 1, 1)128 DO_2D( nn_hls, nn_hls, nn_hls, nn_hls ) 129 129 ztc = MIN( 35., ts(ji,jj,1,jp_tem,Kmm) ) 130 130 ztc2 = ztc * ztc … … 145 145 146 146 147 DO_2D( 1, 1, 1, 1)147 DO_2D( nn_hls, nn_hls, nn_hls, nn_hls ) 148 148 ztkel = tempis(ji,jj,1) + 273.15 149 149 zsal = salinprac(ji,jj,1) + ( 1.- tmask(ji,jj,1) ) * 35. -
NEMO/branches/UKMO/NEMO_r4.2RC_GO8_package/src/TOP/PISCES/P4Z/p4zint.F90
r14086 r15122 50 50 ! Computation of the silicon dependant half saturation constant for silica uptake 51 51 ! --------------------------------------------------- 52 DO_2D( 1, 1, 1, 1)52 DO_2D( nn_hls, nn_hls, nn_hls, nn_hls ) 53 53 zvar = tr(ji,jj,1,jpsil,Kbb) * tr(ji,jj,1,jpsil,Kbb) 54 54 xksimax(ji,jj) = MAX( xksimax(ji,jj), ( 1.+ 7.* zvar / ( xksilim * xksilim + zvar ) ) * 1e-6 ) -
NEMO/branches/UKMO/NEMO_r4.2RC_GO8_package/src/TOP/PISCES/P4Z/p4zligand.F90
r13295 r15122 52 52 IF( ln_timing ) CALL timing_start('p4z_ligand') 53 53 ! 54 DO_3D( 1, 1, 1, 1, 1, jpkm1)54 DO_3D( nn_hls, nn_hls, nn_hls, nn_hls, 1, jpkm1) 55 55 ! 56 56 ! ------------------------------------------------------------------ -
NEMO/branches/UKMO/NEMO_r4.2RC_GO8_package/src/TOP/PISCES/P4Z/p4zlim.F90
r13434 r15122 98 98 IF( ln_timing ) CALL timing_start('p4z_lim') 99 99 ! 100 DO_3D( 1, 1, 1, 1, 1, jpkm1)100 DO_3D( nn_hls, nn_hls, nn_hls, nn_hls, 1, jpkm1) 101 101 102 102 ! Tuning of the iron concentration to a minimum level that is set to the detection limit … … 173 173 ! Compute the fraction of nanophytoplankton that is made of calcifiers 174 174 ! -------------------------------------------------------------------- 175 DO_3D( 1, 1, 1, 1, 1, jpkm1)175 DO_3D( nn_hls, nn_hls, nn_hls, nn_hls, 1, jpkm1) 176 176 zlim1 = ( tr(ji,jj,jk,jpno3,Kbb) * concnnh4 + tr(ji,jj,jk,jpnh4,Kbb) * concnno3 ) & 177 177 & / ( concnno3 * concnnh4 + concnnh4 * tr(ji,jj,jk,jpno3,Kbb) + concnno3 * tr(ji,jj,jk,jpnh4,Kbb) ) … … 193 193 END_3D 194 194 ! 195 DO_3D( 1, 1, 1, 1, 1, jpkm1)195 DO_3D( nn_hls, nn_hls, nn_hls, nn_hls, 1, jpkm1) 196 196 ! denitrification factor computed from O2 levels 197 197 nitrfac(ji,jj,jk) = MAX( 0.e0, 0.4 * ( 6.e-6 - tr(ji,jj,jk,jpoxy,Kbb) ) & -
NEMO/branches/UKMO/NEMO_r4.2RC_GO8_package/src/TOP/PISCES/P4Z/p4zlys.F90
r13295 r15122 74 74 75 75 CALL solve_at_general( zhinit, zhi, Kbb ) 76 77 DO_3D( 1, 1, 1, 1, 1, jpkm1 ) 76 DO_3D( nn_hls, nn_hls, nn_hls, nn_hls, 1, jpkm1) 78 77 zco3(ji,jj,jk) = tr(ji,jj,jk,jpdic,Kbb) * ak13(ji,jj,jk) * ak23(ji,jj,jk) / (zhi(ji,jj,jk)**2 & 79 78 & + ak13(ji,jj,jk) * zhi(ji,jj,jk) + ak13(ji,jj,jk) * ak23(ji,jj,jk) + rtrn ) … … 87 86 ! --------------------------------------------------------- 88 87 89 DO_3D( 1, 1, 1, 1, 1, jpkm1)88 DO_3D( nn_hls, nn_hls, nn_hls, nn_hls, 1, jpkm1) 90 89 91 90 ! DEVIATION OF [CO3--] FROM SATURATION VALUE -
NEMO/branches/UKMO/NEMO_r4.2RC_GO8_package/src/TOP/PISCES/P4Z/p4zmeso.F90
r13295 r15122 81 81 IF( ln_timing ) CALL timing_start('p4z_meso') 82 82 ! 83 DO_3D( 1, 1, 1, 1, 1, jpkm1)83 DO_3D( nn_hls, nn_hls, nn_hls, nn_hls, 1, jpkm1) 84 84 zcompam = MAX( ( tr(ji,jj,jk,jpmes,Kbb) - 1.e-9 ), 0.e0 ) 85 85 zfact = xstep * tgfunc2(ji,jj,jk) * zcompam -
NEMO/branches/UKMO/NEMO_r4.2RC_GO8_package/src/TOP/PISCES/P4Z/p4zmicro.F90
r13295 r15122 79 79 IF( ln_timing ) CALL timing_start('p4z_micro') 80 80 ! 81 DO_3D( 1, 1, 1, 1, 1, jpkm1)81 DO_3D( nn_hls, nn_hls, nn_hls, nn_hls, 1, jpkm1) 82 82 zcompaz = MAX( ( tr(ji,jj,jk,jpzoo,Kbb) - 1.e-9 ), 0.e0 ) 83 83 zfact = xstep * tgfunc2(ji,jj,jk) * zcompaz -
NEMO/branches/UKMO/NEMO_r4.2RC_GO8_package/src/TOP/PISCES/P4Z/p4zmort.F90
r13295 r15122 77 77 ! 78 78 prodcal(:,:,:) = 0._wp ! calcite production variable set to zero 79 DO_3D( 1, 1, 1, 1, 1, jpkm1)79 DO_3D( nn_hls, nn_hls, nn_hls, nn_hls, 1, jpkm1) 80 80 zcompaph = MAX( ( tr(ji,jj,jk,jpphy,Kbb) - 1e-8 ), 0.e0 ) 81 81 ! When highly limited by macronutrients, very small cells … … 152 152 ! ------------------------------------------------------------ 153 153 154 DO_3D( 1, 1, 1, 1, 1, jpkm1)154 DO_3D( nn_hls, nn_hls, nn_hls, nn_hls, 1, jpkm1) 155 155 156 156 zcompadi = MAX( ( tr(ji,jj,jk,jpdia,Kbb) - 1e-9), 0. ) -
NEMO/branches/UKMO/NEMO_r4.2RC_GO8_package/src/TOP/PISCES/P4Z/p4zopt.F90
r14213 r15122 85 85 IF( ln_p5z ) zchl3d(:,:,:) = zchl3d(:,:,:) + tr(:,:,:,jppch,Kbb) 86 86 ! 87 DO_3D( 1, 1, 1, 1, 1, jpkm1)87 DO_3D( nn_hls, nn_hls, nn_hls, nn_hls, 1, jpkm1) 88 88 zchl = ( zchl3d(ji,jj,jk) + rtrn ) * 1.e6 89 89 zchl = MIN( 10. , MAX( 0.05, zchl ) ) … … 156 156 heup_01(:,:) = gdepw(:,:,2,Kmm) 157 157 158 DO_3D( 1, 1, 1, 1, 2, nksr)158 DO_3D( nn_hls, nn_hls, nn_hls, nn_hls, 2, nksr) 159 159 IF( etot_ndcy(ji,jj,jk) * tmask(ji,jj,jk) >= zqsr100(ji,jj) ) THEN 160 160 neln(ji,jj) = jk+1 ! Euphotic level : 1rst T-level strictly below Euphotic layer … … 174 174 zetmp2 (:,:) = 0.e0 175 175 176 DO_3D( 1, 1, 1, 1, 1, nksr)176 DO_3D( nn_hls, nn_hls, nn_hls, nn_hls, 1, nksr) 177 177 IF( gdepw(ji,jj,jk+1,Kmm) <= hmld(ji,jj) ) THEN 178 178 zetmp1 (ji,jj) = zetmp1 (ji,jj) + etot (ji,jj,jk) * e3t(ji,jj,jk,Kmm) ! remineralisation … … 185 185 zpar(:,:,:) = etot_ndcy(:,:,:) ! diagnostic : PAR with no diurnal cycle 186 186 ! 187 DO_3D( 1, 1, 1, 1, 1, nksr)187 DO_3D( nn_hls, nn_hls, nn_hls, nn_hls, 1, nksr) 188 188 IF( gdepw(ji,jj,jk+1,Kmm) <= hmld(ji,jj) ) THEN 189 189 z1_dep = 1. / ( zdepmoy(ji,jj) + rtrn ) … … 197 197 zetmp4 (:,:) = 0.e0 198 198 ! 199 DO_3D( 1, 1, 1, 1, 1, nksr)199 DO_3D( nn_hls, nn_hls, nn_hls, nn_hls, 1, nksr) 200 200 IF( gdepw(ji,jj,jk+1,Kmm) <= MIN(hmld(ji,jj), heup_01(ji,jj)) ) THEN 201 201 zetmp3 (ji,jj) = zetmp3 (ji,jj) + enano (ji,jj,jk) * e3t(ji,jj,jk,Kmm) ! production … … 207 207 ediatm(:,:,:) = ediat(:,:,:) 208 208 ! 209 DO_3D( 1, 1, 1, 1, 1, nksr)209 DO_3D( nn_hls, nn_hls, nn_hls, nn_hls, 1, nksr) 210 210 IF( gdepw(ji,jj,jk+1,Kmm) <= hmld(ji,jj) ) THEN 211 211 z1_dep = 1. / ( zdepmoy(ji,jj) + rtrn ) … … 217 217 IF( ln_p5z ) THEN 218 218 ALLOCATE( zetmp5(jpi,jpj) ) ; zetmp5 (:,:) = 0.e0 219 DO_3D( 1, 1, 1, 1, 1, nksr)219 DO_3D( nn_hls, nn_hls, nn_hls, nn_hls, 1, nksr) 220 220 IF( gdepw(ji,jj,jk+1,Kmm) <= MIN(hmld(ji,jj), heup_01(ji,jj)) ) THEN 221 221 zetmp5(ji,jj) = zetmp5 (ji,jj) + epico(ji,jj,jk) * e3t(ji,jj,jk,Kmm) ! production … … 225 225 epicom(:,:,:) = epico(:,:,:) 226 226 ! 227 DO_3D( 1, 1, 1, 1, 1, nksr)227 DO_3D( nn_hls, nn_hls, nn_hls, nn_hls, 1, nksr) 228 228 IF( gdepw(ji,jj,jk+1,Kmm) <= hmld(ji,jj) ) THEN 229 229 z1_dep = 1. / ( zdepmoy(ji,jj) + rtrn ) … … 300 300 pe3(:,:,1) = zqsr(:,:) * EXP( -0.5 * ekr(:,:,1) ) 301 301 ! 302 DO_3D( 1, 1, 1, 1, 2, nksr)302 DO_3D( nn_hls, nn_hls, nn_hls, nn_hls, 2, nksr) 303 303 pe1(ji,jj,jk) = pe1(ji,jj,jk-1) * EXP( -0.5 * ( ekb(ji,jj,jk-1) + ekb(ji,jj,jk) ) ) 304 304 pe2(ji,jj,jk) = pe2(ji,jj,jk-1) * EXP( -0.5 * ( ekg(ji,jj,jk-1) + ekg(ji,jj,jk) ) ) -
NEMO/branches/UKMO/NEMO_r4.2RC_GO8_package/src/TOP/PISCES/P4Z/p4zpoc.F90
r13295 r15122 107 107 ! ----------------------------------------------------------------------- 108 108 ztremint(:,:,:) = zremigoc(:,:,:) 109 DO_3D( 1, 1, 1, 1, 2, jpkm1)109 DO_3D( nn_hls, nn_hls, nn_hls, nn_hls, 1, jpkm1) 110 110 IF (tmask(ji,jj,jk) == 1.) THEN 111 111 zdep = hmld(ji,jj) … … 192 192 193 193 IF( ln_p4z ) THEN 194 DO_3D( 1, 1, 1, 1, 1, jpkm1)194 DO_3D( nn_hls, nn_hls, nn_hls, nn_hls, 1, jpkm1) 195 195 ! POC disaggregation by turbulence and bacterial activity. 196 196 ! -------------------------------------------------------- … … 212 212 END_3D 213 213 ELSE 214 DO_3D( 1, 1, 1, 1, 1, jpkm1)214 DO_3D( nn_hls, nn_hls, nn_hls, nn_hls, 1, jpkm1) 215 215 ! POC disaggregation by turbulence and bacterial activity. 216 216 ! -------------------------------------------------------- … … 260 260 ! ---------------------------------------------------------------- 261 261 ! 262 DO_3D( 1, 1, 1, 1, 1, jpkm1)262 DO_3D( nn_hls, nn_hls, nn_hls, nn_hls, 1, jpkm1) 263 263 zdep = hmld(ji,jj) 264 264 IF (tmask(ji,jj,jk) == 1. .AND. gdept(ji,jj,jk,Kmm) <= zdep ) THEN … … 275 275 ! --------------------------------------------------------------------- 276 276 ztremint(:,:,:) = zremipoc(:,:,:) 277 DO_3D( 1, 1, 1, 1, 1, jpkm1)277 DO_3D( nn_hls, nn_hls, nn_hls, nn_hls, 1, jpkm1) 278 278 IF (tmask(ji,jj,jk) == 1.) THEN 279 279 zdep = hmld(ji,jj) … … 310 310 ! ----------------------------------------------------------------------- 311 311 ! 312 DO_3D( 1, 1, 1, 1, 2, jpkm1)312 DO_3D( nn_hls, nn_hls, nn_hls, nn_hls, 2, jpkm1) 313 313 IF (tmask(ji,jj,jk) == 1.) THEN 314 314 zdep = hmld(ji,jj) … … 384 384 385 385 IF( ln_p4z ) THEN 386 DO_3D( 1, 1, 1, 1, 1, jpkm1)386 DO_3D( nn_hls, nn_hls, nn_hls, nn_hls, 1, jpkm1) 387 387 IF (tmask(ji,jj,jk) == 1.) THEN 388 388 ! POC disaggregation by turbulence and bacterial activity. … … 401 401 END_3D 402 402 ELSE 403 DO_3D( 1, 1, 1, 1, 1, jpkm1)403 DO_3D( nn_hls, nn_hls, nn_hls, nn_hls, 1, jpkm1) 404 404 ! POC disaggregation by turbulence and bacterial activity. 405 405 ! -------------------------------------------------------- -
NEMO/branches/UKMO/NEMO_r4.2RC_GO8_package/src/TOP/PISCES/P4Z/p4zprod.F90
r13295 r15122 110 110 ! day length in hours 111 111 zstrn(:,:) = 0. 112 DO_2D( 1, 1, 1, 1)112 DO_2D( nn_hls, nn_hls, nn_hls, nn_hls ) 113 113 zargu = TAN( zcodel ) * TAN( gphit(ji,jj) * rad ) 114 114 zargu = MAX( -1., MIN( 1., zargu ) ) … … 117 117 118 118 ! Impact of the day duration and light intermittency on phytoplankton growth 119 DO_3D( 1, 1, 1, 1, 1, jpkm1)119 DO_3D( nn_hls, nn_hls, nn_hls, nn_hls, 1, jpkm1) 120 120 IF( etot_ndcy(ji,jj,jk) > 1.E-3 ) THEN 121 121 zval = MAX( 1., zstrn(ji,jj) ) … … 135 135 136 136 ! Computation of the P-I slope for nanos and diatoms 137 DO_3D( 1, 1, 1, 1, 1, jpkm1)137 DO_3D( nn_hls, nn_hls, nn_hls, nn_hls, 1, jpkm1) 138 138 IF( etot_ndcy(ji,jj,jk) > 1.E-3 ) THEN 139 139 ztn = MAX( 0., ts(ji,jj,jk,jp_tem,Kmm) - 15. ) … … 150 150 END_3D 151 151 152 DO_3D( 1, 1, 1, 1, 1, jpkm1)152 DO_3D( nn_hls, nn_hls, nn_hls, nn_hls, 1, jpkm1) 153 153 IF( etot_ndcy(ji,jj,jk) > 1.E-3 ) THEN 154 154 ! Computation of production function for Carbon … … 171 171 ! Computation of a proxy of the N/C ratio 172 172 ! --------------------------------------- 173 DO_3D( 1, 1, 1, 1, 1, jpkm1)173 DO_3D( nn_hls, nn_hls, nn_hls, nn_hls, 1, jpkm1) 174 174 zval = MIN( xnanopo4(ji,jj,jk), ( xnanonh4(ji,jj,jk) + xnanono3(ji,jj,jk) ) ) & 175 175 & * zprmaxn(ji,jj,jk) / ( zprbio(ji,jj,jk) + rtrn ) … … 181 181 182 182 183 DO_3D( 1, 1, 1, 1, 1, jpkm1)183 DO_3D( nn_hls, nn_hls, nn_hls, nn_hls, 1, jpkm1) 184 184 185 185 IF( etot_ndcy(ji,jj,jk) > 1.E-3 ) THEN … … 205 205 ! Sea-ice effect on production 206 206 207 DO_3D( 1, 1, 1, 1, 1, jpkm1)207 DO_3D( nn_hls, nn_hls, nn_hls, nn_hls, 1, jpkm1) 208 208 zprbio(ji,jj,jk) = zprbio(ji,jj,jk) * ( 1. - fr_i(ji,jj) ) 209 209 zprdia(ji,jj,jk) = zprdia(ji,jj,jk) * ( 1. - fr_i(ji,jj) ) … … 211 211 212 212 ! Computation of the various production terms 213 DO_3D( 1, 1, 1, 1, 1, jpkm1)213 DO_3D( nn_hls, nn_hls, nn_hls, nn_hls, 1, jpkm1) 214 214 IF( etot_ndcy(ji,jj,jk) > 1.E-3 ) THEN 215 215 ! production terms for nanophyto. (C) … … 237 237 238 238 ! Computation of the chlorophyll production terms 239 DO_3D( 1, 1, 1, 1, 1, jpkm1)239 DO_3D( nn_hls, nn_hls, nn_hls, nn_hls, 1, jpkm1) 240 240 IF( etot_ndcy(ji,jj,jk) > 1.E-3 ) THEN 241 241 ! production terms for nanophyto. ( chlorophyll ) … … 260 260 261 261 ! Update the arrays TRA which contain the biological sources and sinks 262 DO_3D( 1, 1, 1, 1, 1, jpkm1)262 DO_3D( nn_hls, nn_hls, nn_hls, nn_hls, 1, jpkm1) 263 263 IF( etot_ndcy(ji,jj,jk) > 1.E-3 ) THEN 264 264 zproreg = zprorcan(ji,jj,jk) - zpronewn(ji,jj,jk) … … 288 288 IF( ln_ligand ) THEN 289 289 zpligprod1(:,:,:) = 0._wp ; zpligprod2(:,:,:) = 0._wp 290 DO_3D( 1, 1, 1, 1, 1, jpkm1)290 DO_3D( nn_hls, nn_hls, nn_hls, nn_hls, 1, jpkm1) 291 291 IF( etot_ndcy(ji,jj,jk) > 1.E-3 ) THEN 292 292 zdocprod = excretd * zprorcad(ji,jj,jk) + excretn * zprorcan(ji,jj,jk) -
NEMO/branches/UKMO/NEMO_r4.2RC_GO8_package/src/TOP/PISCES/P4Z/p4zrem.F90
r13295 r15122 89 89 ! that was modeling explicitely bacteria 90 90 ! ------------------------------------------------------- 91 DO_3D( 1, 1, 1, 1, 1, jpkm1)91 DO_3D( nn_hls, nn_hls, nn_hls, nn_hls, 1, jpkm1) 92 92 zdep = MAX( hmld(ji,jj), heup(ji,jj) ) 93 93 IF( gdept(ji,jj,jk,Kmm) < zdep ) THEN … … 103 103 104 104 IF( ln_p4z ) THEN 105 DO_3D( 1, 1, 1, 1, 1, jpkm1)105 DO_3D( nn_hls, nn_hls, nn_hls, nn_hls, 1, jpkm1) 106 106 ! DOC ammonification. Depends on depth, phytoplankton biomass 107 107 ! and a limitation term which is supposed to be a parameterization of the bacterial activity. … … 134 134 END_3D 135 135 ELSE 136 DO_3D( 1, 1, 1, 1, 1, jpkm1)136 DO_3D( nn_hls, nn_hls, nn_hls, nn_hls, 1, jpkm1) 137 137 ! DOC ammonification. Depends on depth, phytoplankton biomass 138 138 ! and a limitation term which is supposed to be a parameterization of the bacterial activity. … … 178 178 179 179 180 DO_3D( 1, 1, 1, 1, 1, jpkm1)180 DO_3D( nn_hls, nn_hls, nn_hls, nn_hls, 1, jpkm1) 181 181 ! NH4 nitrification to NO3. Ceased for oxygen concentrations 182 182 ! below 2 umol/L. Inhibited at strong light … … 200 200 ENDIF 201 201 202 DO_3D( 1, 1, 1, 1, 1, jpkm1)202 DO_3D( nn_hls, nn_hls, nn_hls, nn_hls, 1, jpkm1) 203 203 204 204 ! Bacterial uptake of iron. No iron is available in DOC. So … … 226 226 ! --------------------------------------------------------------- 227 227 228 DO_3D( 1, 1, 1, 1, 1, jpkm1)228 DO_3D( nn_hls, nn_hls, nn_hls, nn_hls, 1, jpkm1) 229 229 zdep = MAX( hmld(ji,jj), heup_01(ji,jj) ) 230 230 zsatur = MAX( rtrn, ( sio3eq(ji,jj,jk) - tr(ji,jj,jk,jpsil,Kbb) ) / ( sio3eq(ji,jj,jk) + rtrn ) ) -
NEMO/branches/UKMO/NEMO_r4.2RC_GO8_package/src/TOP/PISCES/P4Z/p4zsed.F90
r13546 r15122 94 94 ! OA: Warning, the following part is necessary to avoid CFL problems above the sediments 95 95 ! -------------------------------------------------------------------- 96 DO_2D( 1, 1, 1, 1)96 DO_2D( nn_hls, nn_hls, nn_hls, nn_hls ) 97 97 ikt = mbkt(ji,jj) 98 98 zdep = e3t(ji,jj,ikt,Kmm) / xstep … … 104 104 ! Computation of the fraction of organic matter that is permanently buried from Dunne's model 105 105 ! ------------------------------------------------------- 106 DO_2D( 1, 1, 1, 1)106 DO_2D( nn_hls, nn_hls, nn_hls, nn_hls ) 107 107 IF( tmask(ji,jj,1) == 1 ) THEN 108 108 ikt = mbkt(ji,jj) … … 130 130 IF( .NOT.lk_sed ) zrivsil = 1._wp - sedsilfrac 131 131 132 DO_2D( 1, 1, 1, 1)132 DO_2D( nn_hls, nn_hls, nn_hls, nn_hls ) 133 133 ikt = mbkt(ji,jj) 134 134 zdep = xstep / e3t(ji,jj,ikt,Kmm) … … 142 142 ! 143 143 IF( .NOT.lk_sed ) THEN 144 DO_2D( 1, 1, 1, 1)144 DO_2D( nn_hls, nn_hls, nn_hls, nn_hls ) 145 145 ikt = mbkt(ji,jj) 146 146 zdep = xstep / e3t(ji,jj,ikt,Kmm) … … 160 160 ENDIF 161 161 ! 162 DO_2D( 1, 1, 1, 1)162 DO_2D( nn_hls, nn_hls, nn_hls, nn_hls ) 163 163 ikt = mbkt(ji,jj) 164 164 zdep = xstep / e3t(ji,jj,ikt,Kmm) … … 172 172 ! 173 173 IF( ln_p5z ) THEN 174 DO_2D( 1, 1, 1, 1)174 DO_2D( nn_hls, nn_hls, nn_hls, nn_hls ) 175 175 ikt = mbkt(ji,jj) 176 176 zdep = xstep / e3t(ji,jj,ikt,Kmm) … … 187 187 ! The 0.5 factor in zpdenit is to avoid negative NO3 concentration after 188 188 ! denitrification in the sediments. Not very clever, but simpliest option. 189 DO_2D( 1, 1, 1, 1)189 DO_2D( nn_hls, nn_hls, nn_hls, nn_hls ) 190 190 ikt = mbkt(ji,jj) 191 191 zdep = xstep / e3t(ji,jj,ikt,Kmm) … … 224 224 ENDDO 225 225 IF( ln_p4z ) THEN 226 DO_3D( 1, 1, 1, 1, 1, jpkm1)226 DO_3D( nn_hls, nn_hls, nn_hls, nn_hls, 1, jpkm1) 227 227 ! ! Potential nitrogen fixation dependant on temperature and iron 228 228 ztemp = ts(ji,jj,jk,jp_tem,Kmm) … … 240 240 END_3D 241 241 ELSE ! p5z 242 DO_3D( 1, 1, 1, 1, 1, jpkm1)242 DO_3D( nn_hls, nn_hls, nn_hls, nn_hls, 1, jpkm1) 243 243 ! ! Potential nitrogen fixation dependant on temperature and iron 244 244 ztemp = ts(ji,jj,jk,jp_tem,Kmm) … … 261 261 ! ---------------------------------------- 262 262 IF( ln_p4z ) THEN 263 DO_3D( 1, 1, 1, 1, 1, jpkm1)263 DO_3D( nn_hls, nn_hls, nn_hls, nn_hls, 1, jpkm1) 264 264 zfact = nitrpot(ji,jj,jk) * nitrfix 265 265 tr(ji,jj,jk,jpnh4,Krhs) = tr(ji,jj,jk,jpnh4,Krhs) + zfact / 3.0 … … 278 278 END_3D 279 279 ELSE ! p5z 280 DO_3D( 1, 1, 1, 1, 1, jpkm1)280 DO_3D( nn_hls, nn_hls, nn_hls, nn_hls, 1, jpkm1) 281 281 zfact = nitrpot(ji,jj,jk) * nitrfix 282 282 tr(ji,jj,jk,jpnh4,Krhs) = tr(ji,jj,jk,jpnh4,Krhs) + zfact / 3.0 -
NEMO/branches/UKMO/NEMO_r4.2RC_GO8_package/src/TOP/PISCES/P4Z/p4zsink.F90
r13295 r15122 81 81 ! by data and from the coagulation theory 82 82 ! ----------------------------------------------------------- 83 DO_3D( 1, 1, 1, 1, 1, jpkm1)83 DO_3D( nn_hls, nn_hls, nn_hls, nn_hls, 1, jpkm1) 84 84 zmax = MAX( heup_01(ji,jj), hmld(ji,jj) ) 85 85 zfact = MAX( 0., gdepw(ji,jj,jk+1,Kmm) - zmax ) / wsbio2scale -
NEMO/branches/UKMO/NEMO_r4.2RC_GO8_package/src/TOP/PISCES/P4Z/p4zsms.F90
r15023 r15122 130 130 xnegtr(:,:,:) = 1.e0 131 131 DO jn = jp_pcs0, jp_pcs1 132 DO_3D( 1, 1, 1, 1, 1, jpk)132 DO_3D( nn_hls, nn_hls, nn_hls, nn_hls, 1, jpk) 133 133 IF( ( tr(ji,jj,jk,jn,Kbb) + tr(ji,jj,jk,jn,Krhs) ) < 0.e0 ) THEN 134 134 ztra = ABS( tr(ji,jj,jk,jn,Kbb) ) / ( ABS( tr(ji,jj,jk,jn,Krhs) ) + rtrn ) -
NEMO/branches/UKMO/NEMO_r4.2RC_GO8_package/src/TOP/PISCES/P4Z/p5zlim.F90
r13434 r15122 131 131 zratchl = 6.0 132 132 ! 133 DO_3D( 1, 1, 1, 1, 1, jpkm1)133 DO_3D( nn_hls, nn_hls, nn_hls, nn_hls, 1, jpkm1) 134 134 ! 135 135 ! Tuning of the iron concentration to a minimum level that is set to the detection limit … … 318 318 ! phytoplankton (see Daines et al., 2013). 319 319 ! -------------------------------------------------------------------------------------------------- 320 DO_3D( 1, 1, 1, 1, 1, jpkm1)320 DO_3D( nn_hls, nn_hls, nn_hls, nn_hls, 1, jpkm1) 321 321 ! Size estimation of nanophytoplankton 322 322 ! ------------------------------------ … … 367 367 ! Compute the fraction of nanophytoplankton that is made of calcifiers 368 368 ! -------------------------------------------------------------------- 369 DO_3D( 1, 1, 1, 1, 1, jpkm1)369 DO_3D( nn_hls, nn_hls, nn_hls, nn_hls, 1, jpkm1) 370 370 zlim1 = tr(ji,jj,jk,jpnh4,Kbb) / ( tr(ji,jj,jk,jpnh4,Kbb) + concnnh4 ) + tr(ji,jj,jk,jpno3,Kbb) & 371 371 & / ( tr(ji,jj,jk,jpno3,Kbb) + concnno3 ) * ( 1.0 - tr(ji,jj,jk,jpnh4,Kbb) & … … 385 385 END_3D 386 386 ! 387 DO_3D( 1, 1, 1, 1, 1, jpkm1)387 DO_3D( nn_hls, nn_hls, nn_hls, nn_hls, 1, jpkm1) 388 388 ! denitrification factor computed from O2 levels 389 389 nitrfac(ji,jj,jk) = MAX( 0.e0, 0.4 * ( 6.e-6 - tr(ji,jj,jk,jpoxy,Kbb) ) & -
NEMO/branches/UKMO/NEMO_r4.2RC_GO8_package/src/TOP/PISCES/P4Z/p5zmeso.F90
r13295 r15122 98 98 IF ( bmetexc2 ) zmetexcess = 1.0 99 99 100 DO_3D( 1, 1, 1, 1, 1, jpkm1)100 DO_3D( nn_hls, nn_hls, nn_hls, nn_hls, 1, jpkm1) 101 101 zcompam = MAX( ( tr(ji,jj,jk,jpmes,Kbb) - 1.e-9 ), 0.e0 ) 102 102 zfact = xstep * tgfunc2(ji,jj,jk) * zcompam -
NEMO/branches/UKMO/NEMO_r4.2RC_GO8_package/src/TOP/PISCES/P4Z/p5zmicro.F90
r13295 r15122 96 96 IF ( bmetexc ) zmetexcess = 1.0 97 97 ! 98 DO_3D( 1, 1, 1, 1, 1, jpkm1)98 DO_3D( nn_hls, nn_hls, nn_hls, nn_hls, 1, jpkm1) 99 99 zcompaz = MAX( ( tr(ji,jj,jk,jpzoo,Kbb) - 1.e-9 ), 0.e0 ) 100 100 zfact = xstep * tgfunc2(ji,jj,jk) * zcompaz -
NEMO/branches/UKMO/NEMO_r4.2RC_GO8_package/src/TOP/PISCES/P4Z/p5zmort.F90
r13295 r15122 82 82 ! 83 83 prodcal(:,:,:) = 0. !: calcite production variable set to zero 84 DO_3D( 1, 1, 1, 1, 1, jpkm1)84 DO_3D( nn_hls, nn_hls, nn_hls, nn_hls, 1, jpkm1) 85 85 zcompaph = MAX( ( tr(ji,jj,jk,jpphy,Kbb) - 1e-9 ), 0.e0 ) 86 86 ! Squared mortality of Phyto similar to a sedimentation term during … … 148 148 IF( ln_timing ) CALL timing_start('p5z_pico') 149 149 ! 150 DO_3D( 1, 1, 1, 1, 1, jpkm1)150 DO_3D( nn_hls, nn_hls, nn_hls, nn_hls, 1, jpkm1) 151 151 zcompaph = MAX( ( tr(ji,jj,jk,jppic,Kbb) - 1e-9 ), 0.e0 ) 152 152 ! Squared mortality of Phyto similar to a sedimentation term during … … 207 207 ! 208 208 209 DO_3D( 1, 1, 1, 1, 1, jpkm1)209 DO_3D( nn_hls, nn_hls, nn_hls, nn_hls, 1, jpkm1) 210 210 211 211 zcompadi = MAX( ( tr(ji,jj,jk,jpdia,Kbb) - 1E-9), 0. ) -
NEMO/branches/UKMO/NEMO_r4.2RC_GO8_package/src/TOP/PISCES/P4Z/p5zprod.F90
r13295 r15122 125 125 ! day length in hours 126 126 zstrn(:,:) = 0. 127 DO_2D( 1, 1, 1, 1)127 DO_2D( nn_hls, nn_hls, nn_hls, nn_hls ) 128 128 zargu = TAN( zcodel ) * TAN( gphit(ji,jj) * rad ) 129 129 zargu = MAX( -1., MIN( 1., zargu ) ) … … 132 132 133 133 ! Impact of the day duration on phytoplankton growth 134 DO_3D( 1, 1, 1, 1, 1, jpkm1)134 DO_3D( nn_hls, nn_hls, nn_hls, nn_hls, 1, jpkm1) 135 135 IF( etot_ndcy(ji,jj,jk) > 1.E-3 ) THEN 136 136 zval = MAX( 1., zstrn(ji,jj) ) … … 152 152 WHERE( zstrn(:,:) < 1.e0 ) zstrn(:,:) = 24. 153 153 154 DO_3D( 1, 1, 1, 1, 1, jpkm1)154 DO_3D( nn_hls, nn_hls, nn_hls, nn_hls, 1, jpkm1) 155 155 IF( etot_ndcy(ji,jj,jk) > 1.E-3 ) THEN 156 156 ! Computation of the P-I slope for nanos and diatoms … … 186 186 END_3D 187 187 188 DO_3D( 1, 1, 1, 1, 1, jpkm1)188 DO_3D( nn_hls, nn_hls, nn_hls, nn_hls, 1, jpkm1) 189 189 190 190 IF( etot_ndcy(ji,jj,jk) > 1.E-3 ) THEN … … 208 208 209 209 ! Sea-ice effect on production 210 DO_3D( 1, 1, 1, 1, 1, jpkm1)210 DO_3D( nn_hls, nn_hls, nn_hls, nn_hls, 1, jpkm1) 211 211 zprbio(ji,jj,jk) = zprbio(ji,jj,jk) * ( 1. - fr_i(ji,jj) ) 212 212 zprpic(ji,jj,jk) = zprpic(ji,jj,jk) * ( 1. - fr_i(ji,jj) ) … … 216 216 217 217 ! Computation of the various production terms of nanophytoplankton 218 DO_3D( 1, 1, 1, 1, 1, jpkm1)218 DO_3D( nn_hls, nn_hls, nn_hls, nn_hls, 1, jpkm1) 219 219 IF( etot_ndcy(ji,jj,jk) > 1.E-3 ) THEN 220 220 ! production terms for nanophyto. … … 249 249 250 250 ! Computation of the various production terms of picophytoplankton 251 DO_3D( 1, 1, 1, 1, 1, jpkm1)251 DO_3D( nn_hls, nn_hls, nn_hls, nn_hls, 1, jpkm1) 252 252 IF( etot_ndcy(ji,jj,jk) > 1.E-3 ) THEN 253 253 ! production terms for picophyto. … … 282 282 283 283 ! Computation of the various production terms of diatoms 284 DO_3D( 1, 1, 1, 1, 1, jpkm1)284 DO_3D( nn_hls, nn_hls, nn_hls, nn_hls, 1, jpkm1) 285 285 IF( etot_ndcy(ji,jj,jk) > 1.E-3 ) THEN 286 286 ! production terms for diatomees … … 316 316 END_3D 317 317 318 DO_3D( 1, 1, 1, 1, 1, jpkm1)318 DO_3D( nn_hls, nn_hls, nn_hls, nn_hls, 1, jpkm1) 319 319 IF( etot_ndcy(ji,jj,jk) > 1.E-3 ) THEN 320 320 ! production terms for nanophyto. ( chlorophyll ) … … 347 347 348 348 ! Update the arrays TRA which contain the biological sources and sinks 349 DO_3D( 1, 1, 1, 1, 1, jpkm1)349 DO_3D( nn_hls, nn_hls, nn_hls, nn_hls, 1, jpkm1) 350 350 zprontot = zpronewn(ji,jj,jk) + zproregn(ji,jj,jk) 351 351 zproptot = zpronewp(ji,jj,jk) + zproregp(ji,jj,jk) … … 410 410 IF( ln_ligand ) THEN 411 411 zpligprod1(:,:,:) = 0._wp ; zpligprod2(:,:,:) = 0._wp 412 DO_3D( 1, 1, 1, 1, 1, jpkm1)412 DO_3D( nn_hls, nn_hls, nn_hls, nn_hls, 1, jpkm1) 413 413 zdocprod = excretd * zprorcad(ji,jj,jk) + excretn * zprorcan(ji,jj,jk) + excretp * zprorcap(ji,jj,jk) 414 414 zfeup = texcretn * zprofen(ji,jj,jk) + texcretd * zprofed(ji,jj,jk) + texcretp * zprofep(ji,jj,jk)
Note: See TracChangeset
for help on using the changeset viewer.