Changeset 15090
- Timestamp:
- 2021-07-06T16:25:18+02:00 (3 years ago)
- Location:
- NEMO/trunk/src
- Files:
-
- 41 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/trunk/src/OCE/ZDF/zdfmxl.F90
r14834 r15090 144 144 ! w-level of the turbocline and mixing layer (iom_use) 145 145 imld(:,:) = mbkt(A2D(nn_hls)) + 1 ! Initialization to the number of w ocean point 146 DO_3DS( 1, 1, 1, 1, jpkm1, nlb10, -1 ) ! from the bottom to nlb10146 DO_3DS( nn_hls, nn_hls, nn_hls, nn_hls, jpkm1, nlb10, -1 ) ! from the bottom to nlb10 147 147 IF( avt (ji,jj,jk) < avt_c * wmask(ji,jj,jk) ) imld(ji,jj) = jk ! Turbocline 148 148 END_3D 149 149 ! depth of the mixing layer 150 DO_2D_OVR( 1, 1, 1, 1)150 DO_2D_OVR( nn_hls, nn_hls, nn_hls, nn_hls ) 151 151 iik = imld(ji,jj) 152 152 hmld (ji,jj) = gdepw(ji,jj,iik ,Kmm) * ssmask(ji,jj) ! Turbocline depth -
NEMO/trunk/src/OFF/dtadyn.F90
r15023 r15090 419 419 gdepw(:,:,1,Kmm) = 0.0_wp 420 420 ! 421 DO_3D( 1, 1, 1, 1, 2, jpk )421 DO_3D( nn_hls, nn_hls, nn_hls, nn_hls, 2, jpk ) 422 422 zcoef = (tmask(ji,jj,jk) - wmask(ji,jj,jk)) 423 423 gdepw(ji,jj,jk,Kmm) = gdepw(ji,jj,jk-1,Kmm) + e3t(ji,jj,jk-1,Kmm) … … 503 503 ! 504 504 nk_rnf(:,:) = 0 ! set the number of level over which river runoffs are applied 505 DO_2D( 1, 1, 1, 1)505 DO_2D( nn_hls, nn_hls, nn_hls, nn_hls ) 506 506 IF( h_rnf(ji,jj) > 0._wp ) THEN 507 507 jk = 2 … … 517 517 END_2D 518 518 ! 519 DO_2D( 1, 1, 1, 1 ) ! set the associated depth 519 ! set the associated depth 520 DO_2D( nn_hls, nn_hls, nn_hls, nn_hls ) 520 521 h_rnf(ji,jj) = 0._wp 521 522 DO jk = 1, nk_rnf(ji,jj) … … 552 553 !!---------------------------------------------------------------------- 553 554 ! 554 DO_2D( 1, 1, 1, 1 ) ! update the depth over which runoffs are distributed 555 ! update the depth over which runoffs are distributed 556 DO_2D( nn_hls, nn_hls, nn_hls, nn_hls ) 555 557 h_rnf(ji,jj) = 0._wp 556 558 DO jk = 1, nk_rnf(ji,jj) ! recalculates h_rnf to be the depth in metres -
NEMO/trunk/src/TOP/C14/trcsms_c14.F90
r13970 r15090 81 81 ! ------------------------------------------------------------------- 82 82 83 DO_2D( 1, 1, 1, 1)83 DO_2D( nn_hls, nn_hls, nn_hls, nn_hls ) 84 84 IF( tmask(ji,jj,1) > 0. ) THEN 85 85 ! … … 128 128 ! 129 129 ! Add the surface flux to the trend of jp_c14 130 DO_2D( 1, 1, 1, 1)130 DO_2D( nn_hls, nn_hls, nn_hls, nn_hls ) 131 131 tr(ji,jj,1,jp_c14,Krhs) = tr(ji,jj,1,jp_c14,Krhs) + qtr_c14(ji,jj) / e3t(ji,jj,1,Kmm) 132 132 END_2D 133 133 ! 134 134 ! Computation of decay effects on jp_c14 135 DO_3D( 1, 1, 1, 1, 1, jpk )135 DO_3D( nn_hls, nn_hls, nn_hls, nn_hls, 1, jpk ) 136 136 ! 137 137 tr(ji,jj,jk,jp_c14,Krhs) = tr(ji,jj,jk,jp_c14,Krhs) - rlam14 * tr(ji,jj,jk,jp_c14,Kbb) * tmask(ji,jj,jk) -
NEMO/trunk/src/TOP/C14/trcwri_c14.F90
r14239 r15090 60 60 zz3d(:,:,:) = 0._wp 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 IF( tmask(ji,jj,jk) > 0._wp) THEN 64 64 z3d (ji,jj,jk) = tr(ji,jj,jk,jp_c14,Kmm) … … 71 71 z2d(:,:) =0._wp 72 72 jk = 1 73 DO_2D( 1, 1, 1, 1)73 DO_2D( nn_hls, nn_hls, nn_hls, nn_hls ) 74 74 ztemp = zres(ji,jj) / c14sbc(ji,jj) 75 75 IF( ztemp > 0._wp .AND. tmask(ji,jj,jk) > 0._wp ) z2d(ji,jj) = LOG( ztemp ) -
NEMO/trunk/src/TOP/CFC/trcini_cfc.F90
r13295 r15090 132 132 !--------------------------------------------------------------------------------------- 133 133 zyd = ylatn - ylats 134 DO_2D( 1, 1, 1, 1)134 DO_2D( nn_hls, nn_hls, nn_hls, nn_hls ) 135 135 IF( gphit(ji,jj) >= ylatn ) THEN ; xphem(ji,jj) = 1.e0 136 136 ELSEIF( gphit(ji,jj) <= ylats ) THEN ; xphem(ji,jj) = 0.e0 -
NEMO/trunk/src/TOP/CFC/trcsms_cfc.F90
r13497 r15090 126 126 127 127 ! !------------! 128 DO_2D( 1, 1, 1, 1 )! i-j loop !128 DO_2D( nn_hls, nn_hls, nn_hls, nn_hls ) ! i-j loop ! 129 129 ! !------------! 130 130 ! space interpolation -
NEMO/trunk/src/TOP/PISCES/P2Z/p2zexp.F90
r13295 r15090 121 121 ELSE 122 122 ! 123 DO_2D( 1, 1, 1, 1)123 DO_2D( nn_hls, nn_hls, nn_hls, nn_hls ) 124 124 zsedpocd = zsedpoca(ji,jj) - 2. * sedpocn(ji,jj) + sedpocb(ji,jj) ! time laplacian on tracers 125 125 sedpocb(ji,jj) = sedpocn(ji,jj) + rn_atfp * zsedpocd ! sedpocb <-- filtered sedpocn … … 174 174 zdm0 = 0._wp 175 175 zrro = 1._wp 176 DO_3D( 1, 1, 1, 1, jpkb, jpkm1 )176 DO_3D( nn_hls, nn_hls, nn_hls, nn_hls, jpkb, jpkm1 ) 177 177 zfluo = ( gdepw(ji,jj,jk ,Kmm) / gdepw(ji,jj,jpkb,Kmm) )**xhr 178 178 zfluu = ( gdepw(ji,jj,jk+1,Kmm) / gdepw(ji,jj,jpkb,Kmm) )**xhr … … 191 191 dminl(:,:) = 0._wp 192 192 dmin3(:,:,:) = zdm0 193 DO_3D( 1, 1, 1, 1, 1, jpk )193 DO_3D( nn_hls, nn_hls, nn_hls, nn_hls, 1, jpk ) 194 194 IF( tmask(ji,jj,jk) == 0._wp ) THEN 195 195 dminl(ji,jj) = dminl(ji,jj) + dmin3(ji,jj,jk) … … 198 198 END_3D 199 199 200 DO_2D( 1, 1, 1, 1)200 DO_2D( nn_hls, nn_hls, nn_hls, nn_hls ) 201 201 IF( tmask(ji,jj,1) == 0 ) dmin3(ji,jj,1) = 0._wp 202 202 END_2D -
NEMO/trunk/src/TOP/PISCES/P2Z/p2zopt.F90
r13497 r15090 95 95 ! ! Photosynthetically Available Radiation (PAR) 96 96 zcoef = 12 * redf / rcchl / rpig ! -------------------------------------- 97 DO_3D( 1, 1, 1, 1, 2, jpk ) ! local par at w-levels97 DO_3D( nn_hls, nn_hls, nn_hls, nn_hls, 2, jpk ) 98 98 zpig = LOG( MAX( TINY(0.), tr(ji,jj,jk-1,jpphy,Kmm) ) * zcoef ) 99 99 zkr = xkr0 + xkrp * EXP( xlr * zpig ) … … 102 102 zparg(ji,jj,jk) = zparg(ji,jj,jk-1) * EXP( -zkg * e3t(ji,jj,jk-1,Kmm) ) 103 103 END_3D 104 DO_3D( 1, 1, 1, 1, 1, jpkm1 )! mean par at t-levels104 DO_3D( nn_hls, nn_hls, nn_hls, nn_hls, 1, jpkm1 ) ! mean par at t-levels 105 105 zpig = LOG( MAX( TINY(0.), tr(ji,jj,jk,jpphy,Kmm) ) * zcoef ) 106 106 zkr = xkr0 + xkrp * EXP( xlr * zpig ) … … 114 114 ! ! -------------- 115 115 neln(:,:) = 1 ! euphotic layer level 116 DO_3D( 1, 1, 1, 1, 1, jpkm1 )! (i.e. 1rst T-level strictly below EL bottom)116 DO_3D( nn_hls, nn_hls, nn_hls, nn_hls, 1, jpkm1 ) ! (i.e. 1rst T-level strictly below EL bottom) 117 117 IF( etot(ji,jj,jk) >= zpar100(ji,jj) ) neln(ji,jj) = jk + 1 118 118 END_3D 119 119 ! ! Euphotic layer depth 120 DO_2D( 1, 1, 1, 1 )120 DO_2D( nn_hls, nn_hls, nn_hls, nn_hls ) 121 121 heup(ji,jj) = gdepw(ji,jj,neln(ji,jj),Kmm) 122 122 END_2D -
NEMO/trunk/src/TOP/PISCES/P2Z/p2zsed.F90
r13295 r15090 89 89 90 90 ! tracer flux divergence at t-point added to the general trend 91 DO_3D( 1, 1, 1, 1, 1, jpkm1 )91 DO_3D( nn_hls, nn_hls, nn_hls, nn_hls, 1, jpkm1 ) 92 92 ztra(ji,jj,jk) = - ( zwork(ji,jj,jk) - zwork(ji,jj,jk+1) ) / e3t(ji,jj,jk,Kmm) 93 93 tr(ji,jj,jk,jpdet,Krhs) = tr(ji,jj,jk,jpdet,Krhs) + ztra(ji,jj,jk) -
NEMO/trunk/src/TOP/PISCES/P4Z/p4zagg.F90
r13295 r15090 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/trunk/src/TOP/PISCES/P4Z/p4zbc.F90
r13295 r15090 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/trunk/src/TOP/PISCES/P4Z/p4zbio.F90
r13295 r15090 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/trunk/src/TOP/PISCES/P4Z/p4zche.F90
r14086 r15090 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/trunk/src/TOP/PISCES/P4Z/p4zfechem.F90
r13472 r15090 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/trunk/src/TOP/PISCES/P4Z/p4zflx.F90
r13295 r15090 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/trunk/src/TOP/PISCES/P4Z/p4zint.F90
r14086 r15090 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/trunk/src/TOP/PISCES/P4Z/p4zligand.F90
r13295 r15090 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/trunk/src/TOP/PISCES/P4Z/p4zlim.F90
r13434 r15090 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/trunk/src/TOP/PISCES/P4Z/p4zlys.F90
r13295 r15090 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/trunk/src/TOP/PISCES/P4Z/p4zmeso.F90
r13295 r15090 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/trunk/src/TOP/PISCES/P4Z/p4zmicro.F90
r13295 r15090 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/trunk/src/TOP/PISCES/P4Z/p4zmort.F90
r13295 r15090 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/trunk/src/TOP/PISCES/P4Z/p4zopt.F90
r14213 r15090 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/trunk/src/TOP/PISCES/P4Z/p4zpoc.F90
r13295 r15090 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/trunk/src/TOP/PISCES/P4Z/p4zprod.F90
r13295 r15090 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/trunk/src/TOP/PISCES/P4Z/p4zrem.F90
r13295 r15090 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/trunk/src/TOP/PISCES/P4Z/p4zsed.F90
r13546 r15090 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/trunk/src/TOP/PISCES/P4Z/p4zsink.F90
r13295 r15090 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/trunk/src/TOP/PISCES/P4Z/p4zsms.F90
r15023 r15090 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/trunk/src/TOP/PISCES/P4Z/p5zlim.F90
r13434 r15090 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/trunk/src/TOP/PISCES/P4Z/p5zmeso.F90
r13295 r15090 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/trunk/src/TOP/PISCES/P4Z/p5zmicro.F90
r13295 r15090 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/trunk/src/TOP/PISCES/P4Z/p5zmort.F90
r13295 r15090 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/trunk/src/TOP/PISCES/P4Z/p5zprod.F90
r13295 r15090 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) -
NEMO/trunk/src/TOP/PISCES/trcwri_pisces.F90
r14239 r15090 69 69 zo2min (:,:) = tr(:,:,1,jpoxy,Kmm) * tmask(:,:,1) 70 70 zdepo2min(:,:) = gdepw(:,:,1,Kmm) * tmask(:,:,1) 71 DO_3D( 1, 1, 1, 1, 2, jpkm1 )71 DO_3D( nn_hls, nn_hls, nn_hls, nn_hls, 2, jpkm1 ) 72 72 IF( tmask(ji,jj,jk) == 1 ) then 73 73 IF( tr(ji,jj,jk,jpoxy,Kmm) < zo2min(ji,jj) ) then -
NEMO/trunk/src/TOP/TRP/trcatf.F90
r14172 r15090 239 239 ENDIF 240 240 ! 241 DO jn = 1, jptra 242 DO_3D( 1, 1, 1, 1, 1, jpkm1 )241 DO jn = 1, jptra 242 DO_3D( nn_hls, nn_hls, nn_hls, nn_hls, 1, jpkm1 ) 243 243 ze3t_b = 1._wp + r3t(ji,jj,Kbb) * tmask(ji,jj,jk) 244 244 ze3t_n = 1._wp + r3t(ji,jj,Kmm) * tmask(ji,jj,jk) … … 313 313 ! 314 314 DO jn = 1, jptra 315 DO_3D( 1, 1, 1, 1, 1, jpkm1 )315 DO_3D( nn_hls, nn_hls, nn_hls, nn_hls, 1, jpkm1 ) 316 316 ze3t_b = e3t(ji,jj,jk,Kbb) 317 317 ze3t_n = e3t(ji,jj,jk,Kmm) -
NEMO/trunk/src/TOP/TRP/trcsink.F90
r13295 r15090 74 74 iiter(:,:) = 1 75 75 ELSE 76 DO_2D( 1, 1, 1, 1)76 DO_2D( nn_hls, nn_hls, nn_hls, nn_hls ) 77 77 iiter(ji,jj) = 1 78 78 DO jk = 1, jpkm1 … … 86 86 ENDIF 87 87 88 DO_3D( 1, 1, 1, 1, 1,jpkm1 )88 DO_3D( nn_hls, nn_hls, nn_hls, nn_hls, 1, jpkm1 ) 89 89 IF( tmask(ji,jj,jk) == 1.0 ) THEN 90 90 zwsmax = 0.5 * e3t(ji,jj,jk,Kmm) * rday / rsfact … … 146 146 DO jn = 1, 2 147 147 ! first guess of the slopes interior values 148 DO_2D( 1, 1, 1, 1)148 DO_2D( nn_hls, nn_hls, nn_hls, nn_hls ) 149 149 ! 150 150 zstep = rsfact / REAL( kiter(ji,jj), wp ) / 2. … … 186 186 END DO 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 zflx = ( psinkflx(ji,jj,jk) - psinkflx(ji,jj,jk+1) ) / e3t(ji,jj,jk,Kmm) 190 190 ztrb(ji,jj,jk) = ztrb(ji,jj,jk) + 2. * zflx -
NEMO/trunk/src/TOP/TRP/trdmxl_trc.F90
r14433 r15090 124 124 isum = 0 ; zvlmsk(:,:) = 0.e0 125 125 126 IF( jpktrd_trc < jpk ) THEN ! description ???127 DO_2D( 1, 1, 1, 1 )126 IF( jpktrd_trc < jpk ) THEN 127 DO_2D( nn_hls, nn_hls, nn_hls, nn_hls ) 128 128 IF( nmld_trc(ji,jj) <= jpktrd_trc ) THEN 129 129 zvlmsk(ji,jj) = tmask(ji,jj,1) … … 148 148 ! ... Weights for vertical averaging 149 149 wkx_trc(:,:,:) = 0.e0 150 DO_3D( 1, 1, 1, 1, 1, jpktrd_trc ) ! initialize wkx_trc with vertical scale factor in mixed-layer150 DO_3D( nn_hls, nn_hls, nn_hls, nn_hls, 1, jpktrd_trc ) ! description ??? 151 151 IF( jk - nmld_trc(ji,jj) < 0 ) wkx_trc(ji,jj,jk) = e3t(ji,jj,jk,Kmm) * tmask(ji,jj,jk) 152 152 END_3D … … 259 259 ! 260 260 DO jn = 1, jptra 261 DO_2D( 1, 1, 1, 1 )261 DO_2D( nn_hls, nn_hls, nn_hls, nn_hls ) ! description ??? 262 262 ik = nmld_trc(ji,jj) 263 263 IF( ln_trdtrc(jn) ) & -
NEMO/trunk/src/TOP/TRP/trdmxl_trc_rst.F90
r13286 r15090 12 12 USE iom ! I/O module 13 13 USE trc ! for ctrcnm 14 USE trd mxl_trc_oce ! for lk_trdmxl_trc14 USE trdtrc_oce ! for lk_trdmxl_trc 15 15 16 16 IMPLICIT NONE … … 53 53 clpath = TRIM(cn_trcrst_outdir) 54 54 IF( clpath(LEN_TRIM(clpath):) /= '/' ) clpath = TRIM(clpath) // '/' 55 IF(lwp) WRITE(numout,*) ' open ocean restart_mld_trc NetCDF ' TRIM(clpath)//TRIM(clname)55 IF(lwp) WRITE(numout,*) ' open ocean restart_mld_trc NetCDF ', TRIM(clpath)//TRIM(clname) 56 56 CALL iom_open( TRIM(clpath)//TRIM(clname), nummldw_trc, ldwrt = .TRUE. ) 57 57 ENDIF -
NEMO/trunk/src/TOP/trcais.F90
r15004 r15090 170 170 IF( ln_trc_ais(jn) ) THEN 171 171 jl = n_trc_indais(jn) 172 DO_2D( 1, 1, 1, 1)172 DO_2D( nn_hls, nn_hls, nn_hls, nn_hls ) 173 173 zfact = 1. / e3t(ji,jj,1,Kmm) 174 174 ptr(ji,jj,jk,jn,Krhs) = ptr(ji,jj,1,jn,Krhs) + fwficb(ji,jj) * r1_rho0 * ptr(ji,jj,1,jn,Kmm) * zfact … … 182 182 IF( ln_trc_ais(jn) ) THEN 183 183 jl = n_trc_indais(jn) 184 DO_2D( 1, 1, 1, 1)184 DO_2D( nn_hls, nn_hls, nn_hls, nn_hls ) 185 185 IF( ln_isfpar_mlt ) THEN 186 186 zcalv = fwfisf_par(ji,jj) * r1_rho0 / rhisf_tbl_par(ji,jj) … … 214 214 IF( ln_trc_ais(jn) ) THEN 215 215 jl = n_trc_indais(jn) 216 DO_2D( 1, 1, 1, 1)216 DO_2D( nn_hls, nn_hls, nn_hls, nn_hls ) 217 217 DO jk = 1, icblev 218 218 zcalv = fwficb(ji,jj) * r1_rho0 … … 229 229 IF( ln_trc_ais(jn) ) THEN 230 230 jl = n_trc_indais(jn) 231 DO_2D( 1, 1, 1, 1)231 DO_2D( nn_hls, nn_hls, nn_hls, nn_hls ) 232 232 IF( ln_isfpar_mlt ) THEN 233 233 zcalv = - fwfisf_par(ji,jj) * r1_rho0 / rhisf_tbl_par(ji,jj) -
NEMO/trunk/src/TOP/trcopt.F90
r14558 r15090 86 86 ! Attenuation coef. function of Chlorophyll and wavelength (RGB) 87 87 ! -------------------------------------------------------------- 88 DO_3D( 1, 1, 1, 1, 1, jpkm1 )88 DO_3D( nn_hls, nn_hls, nn_hls, nn_hls, 1, jpkm1 ) 89 89 ztmp = ( zchl(ji,jj,jk) + rtrn ) * 1.e6 90 90 ztmp = MIN( 10. , MAX( 0.05, ztmp ) ) … … 108 108 ! 109 109 DO jk = 2, nksrp + 1 110 DO_2D( 1, 1, 1, 1)110 DO_2D( nn_hls, nn_hls, nn_hls, nn_hls ) 111 111 ze0(ji,jj,jk) = ze0(ji,jj,jk-1) * EXP( -e3t(ji,jj,jk-1,Kmm) * (1. / rn_si0) ) 112 112 ze1(ji,jj,jk) = ze1(ji,jj,jk-1) * EXP( -ekb (ji,jj,jk-1 ) ) … … 147 147 ! Weighted broadband attenuation coefficient 148 148 ! ------------------------------------------ 149 DO_3D( 1, 1, 1, 1, 1, jpkm1 )149 DO_3D( nn_hls, nn_hls, nn_hls, nn_hls, 1, jpkm1 ) 150 150 ztmp = ze1(ji,jj,jk)* ekb(ji,jj,jk) + ze2(ji,jj,jk) * ekg(ji,jj,jk) + ze3(ji,jj,jk) * ekr(ji,jj,jk) 151 151 xeps(ji,jj,jk) = ztmp / e3t(ji,jj,jk,Kmm) / (etot(ji,jj,jk) + rtrn) … … 163 163 heup_01(:,:) = gdepw(:,:,2,Kmm) 164 164 ! 165 DO_3D( 1, 1, 1, 1, 2, nksrp )165 DO_3D( nn_hls, nn_hls, nn_hls, nn_hls, 2, nksrp ) 166 166 IF( etot_ndcy(ji,jj,jk) * tmask(ji,jj,jk) >= zqsr100(ji,jj) ) THEN 167 167 ! Euphotic level (1st T-level strictly below Euphotic layer) … … 214 214 pe3(:,:,1) = zqsr(:,:) * EXP( -0.5 * ekr(:,:,1) ) 215 215 ! 216 DO_3D( 1, 1, 1, 1, 2, nksrp )216 DO_3D( nn_hls, nn_hls, nn_hls, nn_hls, 2, nksrp ) 217 217 pe1(ji,jj,jk) = pe1(ji,jj,jk-1) * EXP( -0.5 * ( ekb(ji,jj,jk-1) + ekb(ji,jj,jk) ) ) 218 218 pe2(ji,jj,jk) = pe2(ji,jj,jk-1) * EXP( -0.5 * ( ekg(ji,jj,jk-1) + ekg(ji,jj,jk) ) ) … … 226 226 we3(:,:) = zqsr(:,:) 227 227 ! 228 DO_3D( 1, 1, 1, 1, 1, nksrp )228 DO_3D( nn_hls, nn_hls, nn_hls, nn_hls, 1, nksrp ) 229 229 ! integrate PAR over current t-level 230 230 pe1(ji,jj,jk) = we1(ji,jj) / (ekb(ji,jj,jk) + rtrn) * (1. - EXP( -ekb(ji,jj,jk) ))
Note: See TracChangeset
for help on using the changeset viewer.