Changeset 12340 for NEMO/branches/2019/dev_r11943_MERGE_2019/src/OCE/ISF
- Timestamp:
- 2020-01-27T15:31:53+01:00 (4 years ago)
- Location:
- NEMO/branches/2019/dev_r11943_MERGE_2019/src/OCE/ISF
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2019/dev_r11943_MERGE_2019/src/OCE/ISF/isfcavmlt.F90
r12077 r12340 31 31 PUBLIC isfcav_mlt 32 32 33 !! * Substitutions 34 # include "do_loop_substitute.h90" 33 35 !!---------------------------------------------------------------------- 34 36 !! NEMO/OCE 4.0 , NEMO Consortium (2018) … … 208 210 ! compute upward heat flux zhtflx and upward water flux zwflx 209 211 ! Resolution of a 3d equation from equation 24, 25 and 26 (note conduction through the ice has been added to Eq 24) 210 DO jj = 1, jpj 211 DO ji = 1, jpi 212 ! 213 ! compute coeficient to solve the 2nd order equation 214 zeps1 = rau0_rcp * pgt(ji,jj) 215 zeps2 = rLfusisf * rau0 * pgs(ji,jj) 216 zeps3 = rhoisf * rcpisf * rkappa / MAX(risfdep(ji,jj),zeps) 217 zeps4 = risf_lamb2 + risf_lamb3 * risfdep(ji,jj) 218 zeps6 = zeps4 - pttbl(ji,jj) 219 zeps7 = zeps4 - rtsurf 220 ! 221 ! solve the 2nd order equation to find zsfrz 222 zaqe = risf_lamb1 * (zeps1 + zeps3) 223 zaqer = 0.5_wp / MIN(zaqe,-zeps) 224 zbqe = zeps1 * zeps6 + zeps3 * zeps7 - zeps2 225 zcqe = zeps2 * pstbl(ji,jj) 226 zdis = zbqe * zbqe - 4.0_wp * zaqe * zcqe 227 ! 228 ! Presumably zdis can never be negative because gammas is very small compared to gammat 229 zsfrz=(-zbqe - SQRT(zdis)) * zaqer 230 IF ( zsfrz < 0.0_wp ) zsfrz=(-zbqe + SQRT(zdis)) * zaqer ! check this if this if is needed 231 ! 232 ! compute t freeze (eq. 25) 233 ztfrz(ji,jj) = zeps4 + risf_lamb1 * zsfrz 234 ! 235 ! thermal driving 236 zthd(ji,jj) = ( pttbl(ji,jj) - ztfrz(ji,jj) ) 237 ! 238 ! compute the upward water and heat flux (eq. 24 and eq. 26) 239 pqfwf(ji,jj) = rau0 * pgs(ji,jj) * ( zsfrz - pstbl(ji,jj) ) / MAX(zsfrz,zeps) ! fresh water flux (> 0 out) 240 pqoce(ji,jj) = rau0_rcp * pgt(ji,jj) * zthd (ji,jj) ! ocean-ice heat flux (> 0 out) 241 pqhc (ji,jj) = rcp * pqfwf(ji,jj) * ztfrz(ji,jj) ! heat content flux (> 0 out) 242 ! 243 zqcon(ji,jj) = zeps3 * ( ztfrz(ji,jj) - rtsurf ) 244 ! 245 END DO 246 END DO 212 DO_2D_11_11 213 ! 214 ! compute coeficient to solve the 2nd order equation 215 zeps1 = rau0_rcp * pgt(ji,jj) 216 zeps2 = rLfusisf * rau0 * pgs(ji,jj) 217 zeps3 = rhoisf * rcpisf * rkappa / MAX(risfdep(ji,jj),zeps) 218 zeps4 = risf_lamb2 + risf_lamb3 * risfdep(ji,jj) 219 zeps6 = zeps4 - pttbl(ji,jj) 220 zeps7 = zeps4 - rtsurf 221 ! 222 ! solve the 2nd order equation to find zsfrz 223 zaqe = risf_lamb1 * (zeps1 + zeps3) 224 zaqer = 0.5_wp / MIN(zaqe,-zeps) 225 zbqe = zeps1 * zeps6 + zeps3 * zeps7 - zeps2 226 zcqe = zeps2 * pstbl(ji,jj) 227 zdis = zbqe * zbqe - 4.0_wp * zaqe * zcqe 228 ! 229 ! Presumably zdis can never be negative because gammas is very small compared to gammat 230 zsfrz=(-zbqe - SQRT(zdis)) * zaqer 231 IF ( zsfrz < 0.0_wp ) zsfrz=(-zbqe + SQRT(zdis)) * zaqer ! check this if this if is needed 232 ! 233 ! compute t freeze (eq. 25) 234 ztfrz(ji,jj) = zeps4 + risf_lamb1 * zsfrz 235 ! 236 ! thermal driving 237 zthd(ji,jj) = ( pttbl(ji,jj) - ztfrz(ji,jj) ) 238 ! 239 ! compute the upward water and heat flux (eq. 24 and eq. 26) 240 pqfwf(ji,jj) = rau0 * pgs(ji,jj) * ( zsfrz - pstbl(ji,jj) ) / MAX(zsfrz,zeps) ! fresh water flux (> 0 out) 241 pqoce(ji,jj) = rau0_rcp * pgt(ji,jj) * zthd (ji,jj) ! ocean-ice heat flux (> 0 out) 242 pqhc (ji,jj) = rcp * pqfwf(ji,jj) * ztfrz(ji,jj) ! heat content flux (> 0 out) 243 ! 244 zqcon(ji,jj) = zeps3 * ( ztfrz(ji,jj) - rtsurf ) 245 ! 246 END_2D 247 247 ! 248 248 ! output conductive heat flux through the ice -
NEMO/branches/2019/dev_r11943_MERGE_2019/src/OCE/ISF/isfcpl.F90
r12077 r12340 40 40 END TYPE 41 41 ! 42 !! * Substitutions 43 # include "do_loop_substitute.h90" 42 44 !!---------------------------------------------------------------------- 43 45 !! NEMO/OCE 4.0 , NEMO Consortium (2018) … … 360 362 ! ----------------------------------------------------------------------------------------- 361 363 ! case we open a cell but no neigbour cells available to get an estimate of T and S 362 DO jk = 1,jpk-1 363 DO jj = 1,jpj 364 DO ji = 1,jpi 365 IF (tmask(ji,jj,jk) == 1._wp .AND. ts(ji,jj,jk,2,Kmm) == 0._wp) & 366 & CALL ctl_stop('STOP', 'failing to fill all new weet cell, & 367 & try increase nn_drown or activate XXXX & 368 & in your domain cfg computation' ) 369 END DO 370 END DO 371 END DO 364 DO_3D_11_11( 1,jpk-1 ) 365 IF (tmask(ji,jj,jk) == 1._wp .AND. ts(ji,jj,jk,2,Kmm) == 0._wp) & 366 & CALL ctl_stop('STOP', 'failing to fill all new weet cell, & 367 & try increase nn_drown or activate XXXX & 368 & in your domain cfg computation' ) 369 END_3D 372 370 ! 373 371 END SUBROUTINE isfcpl_tra … … 404 402 DO jk = 1, jpk ! Horizontal slab 405 403 ! 1.1: get volume flux before coupling (>0 out) 406 DO jj = 2, jpjm1 407 DO ji = 2, jpim1 408 zqvolb(ji,jj,jk) = ( e2u(ji,jj) * ze3u_b(ji,jj,jk) * uu(ji,jj,jk,Kmm) - e2u(ji-1,jj ) * ze3u_b(ji-1,jj ,jk) * uu(ji-1,jj ,jk,Kmm) & 409 & + e1v(ji,jj) * ze3v_b(ji,jj,jk) * vv(ji,jj,jk,Kmm) - e1v(ji ,jj-1) * ze3v_b(ji ,jj-1,jk) * vv(ji ,jj-1,jk,Kmm) ) & 410 & * ztmask_b(ji,jj,jk) 411 END DO 412 ENDDO 404 DO_2D_00_00 405 zqvolb(ji,jj,jk) = ( e2u(ji,jj) * ze3u_b(ji,jj,jk) * uu(ji,jj,jk,Kmm) - e2u(ji-1,jj ) * ze3u_b(ji-1,jj ,jk) * uu(ji-1,jj ,jk,Kmm) & 406 & + e1v(ji,jj) * ze3v_b(ji,jj,jk) * vv(ji,jj,jk,Kmm) - e1v(ji ,jj-1) * ze3v_b(ji ,jj-1,jk) * vv(ji ,jj-1,jk,Kmm) ) & 407 & * ztmask_b(ji,jj,jk) 408 END_2D 413 409 ! 414 410 ! 1.2: get volume flux after coupling (>0 out) … … 418 414 vv(:,:,jk,Kmm) = vv(:,:,jk,Kmm) * vmask(:,:,jk) 419 415 ! compute volume flux divergence after coupling 420 DO jj = 2, jpjm1 421 DO ji = 2, jpim1 422 zqvoln(ji,jj,jk) = ( e2u(ji,jj) * e3u(ji,jj,jk,Kmm) * uu(ji,jj,jk,Kmm) - e2u(ji-1,jj ) * e3u(ji-1,jj ,jk,Kmm) * uu(ji-1,jj ,jk,Kmm) & 423 & + e1v(ji,jj) * e3v(ji,jj,jk,Kmm) * vv(ji,jj,jk,Kmm) - e1v(ji ,jj-1) * e3v(ji ,jj-1,jk,Kmm) * vv(ji ,jj-1,jk,Kmm) ) & 424 & * tmask(ji,jj,jk) 425 END DO 426 ENDDO 416 DO_2D_00_00 417 zqvoln(ji,jj,jk) = ( e2u(ji,jj) * e3u(ji,jj,jk,Kmm) * uu(ji,jj,jk,Kmm) - e2u(ji-1,jj ) * e3u(ji-1,jj ,jk,Kmm) * uu(ji-1,jj ,jk,Kmm) & 418 & + e1v(ji,jj) * e3v(ji,jj,jk,Kmm) * vv(ji,jj,jk,Kmm) - e1v(ji ,jj-1) * e3v(ji ,jj-1,jk,Kmm) * vv(ji ,jj-1,jk,Kmm) ) & 419 & * tmask(ji,jj,jk) 420 END_2D 427 421 ! 428 422 ! 1.3: get 3d volume flux difference (before - after cpl) (>0 out) … … 433 427 ! 2.0: include the contribution of the vertical velocity in the volume flux correction 434 428 ! 435 DO jj = 2, jpjm1 436 DO ji = 2, jpim1 437 ! 438 ikt = mikt(ji,jj) 439 IF ( ikt > 1 .AND. ssmask(ji,jj) == 1 ) THEN 440 risfcpl_vol(ji,jj,ikt) = risfcpl_vol(ji,jj,ikt) + SUM(zqvolb(ji,jj,1:ikt-1)) ! test sign 441 ENDIF 442 ! 443 END DO 444 ENDDO 429 DO_2D_00_00 430 ! 431 ikt = mikt(ji,jj) 432 IF ( ikt > 1 .AND. ssmask(ji,jj) == 1 ) THEN 433 risfcpl_vol(ji,jj,ikt) = risfcpl_vol(ji,jj,ikt) + SUM(zqvolb(ji,jj,1:ikt-1)) ! test sign 434 ENDIF 435 ! 436 END_2D 445 437 ! 446 438 CALL lbc_lnk( 'iscpl', risfcpl_vol, 'T', 1. ) -
NEMO/branches/2019/dev_r11943_MERGE_2019/src/OCE/ISF/isfdiags.F90
r12077 r12340 24 24 PUBLIC isf_diags_flx 25 25 26 !! * Substitutions 27 # include "do_loop_substitute.h90" 26 28 !!---------------------------------------------------------------------- 27 29 !! NEMO/OCE 4.0 , NEMO Consortium (2018) … … 98 100 zvar3d(:,:,:) = 0._wp 99 101 ! 100 DO jj = 1,jpj 101 DO ji = 1,jpi 102 ikt = ktop(ji,jj) 103 ikb = kbot(ji,jj) 104 DO jk = ikt, ikb - 1 105 zvar3d(ji,jj,jk) = zvar2d(ji,jj) * e3t(ji,jj,jk,Kmm) 106 END DO 107 zvar3d(ji,jj,ikb) = zvar2d(ji,jj) * e3t(ji,jj,ikb,Kmm) * pfrac(ji,jj) 102 DO_2D_11_11 103 ikt = ktop(ji,jj) 104 ikb = kbot(ji,jj) 105 DO jk = ikt, ikb - 1 106 zvar3d(ji,jj,jk) = zvar2d(ji,jj) * e3t(ji,jj,jk,Kmm) 108 107 END DO 109 END DO 108 zvar3d(ji,jj,ikb) = zvar2d(ji,jj) * e3t(ji,jj,ikb,Kmm) * pfrac(ji,jj) 109 END_2D 110 110 ! 111 111 CALL iom_put( TRIM(cdvar) , zvar3d(:,:,:)) -
NEMO/branches/2019/dev_r11943_MERGE_2019/src/OCE/ISF/isfdynatf.F90
r12077 r12340 23 23 24 24 PUBLIC isf_dynatf 25 !! * Substitutions 26 # include "do_loop_substitute.h90" 25 27 26 28 CONTAINS … … 78 80 ! 79 81 ! add the increment in the tbl 80 DO jk = 1, jpkm1 81 DO jj = 1, jpj 82 DO ji = 1, jpi 83 IF( ktop(ji,jj) <= jk .AND. jk < kbot(ji,jj) ) THEN 84 pe3t_f(ji,jj,jk) = pe3t_f(ji,jj,jk) - zfwfinc(ji,jj) * e3t(ji,jj,jk,Kmm) 85 ELSEIF ( jk == kbot(ji,jj) ) THEN 86 pe3t_f(ji,jj,jk) = pe3t_f(ji,jj,jk) - zfwfinc(ji,jj) * e3t(ji,jj,jk,Kmm) * pfrac(ji,jj) 87 ENDIF 88 END DO 89 END DO 90 END DO 82 DO_3D_11_11( 1, jpkm1 ) 83 IF( ktop(ji,jj) <= jk .AND. jk < kbot(ji,jj) ) THEN 84 pe3t_f(ji,jj,jk) = pe3t_f(ji,jj,jk) - zfwfinc(ji,jj) * e3t(ji,jj,jk,Kmm) 85 ELSEIF ( jk == kbot(ji,jj) ) THEN 86 pe3t_f(ji,jj,jk) = pe3t_f(ji,jj,jk) - zfwfinc(ji,jj) * e3t(ji,jj,jk,Kmm) * pfrac(ji,jj) 87 ENDIF 88 END_3D 91 89 ! 92 90 END SUBROUTINE isf_dynatf_mlt -
NEMO/branches/2019/dev_r11943_MERGE_2019/src/OCE/ISF/isfhdiv.F90
r12077 r12340 24 24 25 25 PUBLIC isf_hdiv 26 !! * Substitutions 27 # include "do_loop_substitute.h90" 26 28 27 29 CONTAINS … … 97 99 ! 98 100 ! update divergence at each level affected by ice shelf top boundary layer 99 DO jj = 1,jpj 100 DO ji = 1,jpi 101 ikt = ktop(ji,jj) 102 ikb = kbot(ji,jj) 103 ! level fully include in the ice shelf boundary layer 104 DO jk = ikt, ikb - 1 105 phdiv(ji,jj,jk) = phdiv(ji,jj,jk) + zhdiv(ji,jj) 106 END DO 107 ! level partially include in ice shelf boundary layer 108 phdiv(ji,jj,ikb) = phdiv(ji,jj,ikb) + zhdiv(ji,jj) * pfrac(ji,jj) 101 DO_2D_11_11 102 ikt = ktop(ji,jj) 103 ikb = kbot(ji,jj) 104 ! level fully include in the ice shelf boundary layer 105 DO jk = ikt, ikb - 1 106 phdiv(ji,jj,jk) = phdiv(ji,jj,jk) + zhdiv(ji,jj) 109 107 END DO 110 END DO 108 ! level partially include in ice shelf boundary layer 109 phdiv(ji,jj,ikb) = phdiv(ji,jj,ikb) + zhdiv(ji,jj) * pfrac(ji,jj) 110 END_2D 111 111 ! 112 112 END SUBROUTINE isf_hdiv_mlt -
NEMO/branches/2019/dev_r11943_MERGE_2019/src/OCE/ISF/isfload.F90
r12077 r12340 24 24 25 25 PUBLIC isf_load 26 !! * Substitutions 27 # include "do_loop_substitute.h90" 26 28 27 29 CONTAINS … … 91 93 ! !- Surface value + ice shelf gradient 92 94 pisfload(:,:) = 0._wp ! compute pressure due to ice shelf load 93 DO jj = 1, jpj ! (used to compute hpgi/j for all the level from 1 to miku/v) 94 DO ji = 1, jpi ! divided by 2 later 95 ikt = mikt(ji,jj) 95 DO_2D_11_11 96 ikt = mikt(ji,jj) 97 ! 98 IF ( ikt > 1 ) THEN 96 99 ! 97 IF ( ikt > 1 ) THEN 98 ! 99 ! top layer of the ice shelf 100 pisfload(ji,jj) = pisfload(ji,jj) + (znad + zrhd(ji,jj,1) ) * e3w(ji,jj,1,Kmm) 101 ! 102 ! core layers of the ice shelf 103 DO jk = 2, ikt-1 104 pisfload(ji,jj) = pisfload(ji,jj) + (2._wp * znad + zrhd(ji,jj,jk-1) + zrhd(ji,jj,jk)) * e3w(ji,jj,jk,Kmm) 105 END DO 106 ! 107 ! deepest part of the ice shelf (between deepest T point and ice/ocean interface 108 pisfload(ji,jj) = pisfload(ji,jj) + (2._wp * znad + zrhdtop_isf(ji,jj) + zrhd(ji,jj,ikt-1)) & 109 & * ( risfdep(ji,jj) - gdept(ji,jj,ikt-1,Kmm) ) 110 ! 111 END IF 112 END DO 113 END DO 100 ! top layer of the ice shelf 101 pisfload(ji,jj) = pisfload(ji,jj) + (znad + zrhd(ji,jj,1) ) * e3w(ji,jj,1,Kmm) 102 ! 103 ! core layers of the ice shelf 104 DO jk = 2, ikt-1 105 pisfload(ji,jj) = pisfload(ji,jj) + (2._wp * znad + zrhd(ji,jj,jk-1) + zrhd(ji,jj,jk)) * e3w(ji,jj,jk,Kmm) 106 END DO 107 ! 108 ! deepest part of the ice shelf (between deepest T point and ice/ocean interface 109 pisfload(ji,jj) = pisfload(ji,jj) + (2._wp * znad + zrhdtop_isf(ji,jj) + zrhd(ji,jj,ikt-1)) & 110 & * ( risfdep(ji,jj) - gdept(ji,jj,ikt-1,Kmm) ) 111 ! 112 END IF 113 END_2D 114 114 ! 115 115 END SUBROUTINE isf_load_uniform -
NEMO/branches/2019/dev_r11943_MERGE_2019/src/OCE/ISF/isftbl.F90
r12336 r12340 23 23 24 24 PUBLIC isf_tbl, isf_tbl_avg, isf_tbl_lvl, isf_tbl_ktop, isf_tbl_kbot 25 !! * Substitutions 26 # include "do_loop_substitute.h90" 25 27 26 28 CONTAINS … … 70 72 ! compute tbl property at T point 71 73 pvarout(1,:) = 0._wp 72 DO jj = 1, jpj 73 DO ji = 2, jpi 74 pvarout(ji,jj) = 0.5_wp * (zvarout(ji,jj) + zvarout(ji-1,jj)) 75 END DO 76 END DO 74 DO_2D_11_01 75 pvarout(ji,jj) = 0.5_wp * (zvarout(ji,jj) + zvarout(ji-1,jj)) 76 END_2D 77 77 ! lbclnk not needed as a final communication is done after the computation of fwf 78 78 ! … … 90 90 ! pvarout is an averaging of wet point 91 91 pvarout(:,1) = 0._wp 92 DO jj = 2, jpj 93 DO ji = 1, jpi 94 pvarout(ji,jj) = 0.5_wp * (zvarout(ji,jj) + zvarout(ji,jj-1)) 95 END DO 96 END DO 92 DO_2D_01_11 93 pvarout(ji,jj) = 0.5_wp * (zvarout(ji,jj) + zvarout(ji,jj-1)) 94 END_2D 97 95 ! lbclnk not needed as a final communication is done after the computation of fwf 98 96 ! … … 128 126 ! 129 127 ! compute tbl top.bottom level and thickness 130 DO jj = 1,jpj 131 DO ji = 1,jpi 132 ! 133 ! tbl top/bottom indices initialisation 134 ikt = ktop(ji,jj) ; ikb = kbot(ji,jj) 135 ! 136 ! level fully include in the ice shelf boundary layer 137 pvarout(ji,jj) = SUM( pvarin(ji,jj,ikt:ikb-1) * pe3(ji,jj,ikt:ikb-1) ) / phtbl(ji,jj) 138 ! 139 ! level partially include in ice shelf boundary layer 140 pvarout(ji,jj) = pvarout(ji,jj) + pvarin(ji,jj,ikb) * pe3(ji,jj,ikb) / phtbl(ji,jj) * pfrac(ji,jj) 141 ! 142 END DO 143 END DO 128 DO_2D_11_11 129 ! 130 ! tbl top/bottom indices initialisation 131 ikt = ktop(ji,jj) ; ikb = kbot(ji,jj) 132 ! 133 ! level fully include in the ice shelf boundary layer 134 pvarout(ji,jj) = SUM( pvarin(ji,jj,ikt:ikb-1) * pe3(ji,jj,ikt:ikb-1) ) / phtbl(ji,jj) 135 ! 136 ! level partially include in ice shelf boundary layer 137 pvarout(ji,jj) = pvarout(ji,jj) + pvarin(ji,jj,ikb) * pe3(ji,jj,ikb) / phtbl(ji,jj) * pfrac(ji,jj) 138 ! 139 END_2D 144 140 145 141 END SUBROUTINE isf_tbl_avg … … 168 164 ! 169 165 ! get htbl 170 DO jj = 1,jpj 171 DO ji = 1,jpi 172 ! 173 ! tbl top/bottom indices initialisation 174 ikt = ktop(ji,jj) 175 ! 176 ! limit the tbl to water thickness. 177 phtbl(ji,jj) = MIN( phtbl(ji,jj), phw(ji,jj) ) 178 ! 179 ! thickness of boundary layer must be at least the top level thickness 180 phtbl(ji,jj) = MAX( phtbl(ji,jj), pe3(ji,jj,ikt) ) 181 ! 182 END DO 183 END DO 166 DO_2D_11_11 167 ! 168 ! tbl top/bottom indices initialisation 169 ikt = ktop(ji,jj) 170 ! 171 ! limit the tbl to water thickness. 172 phtbl(ji,jj) = MIN( phtbl(ji,jj), phw(ji,jj) ) 173 ! 174 ! thickness of boundary layer must be at least the top level thickness 175 phtbl(ji,jj) = MAX( phtbl(ji,jj), pe3(ji,jj,ikt) ) 176 ! 177 END_2D 184 178 ! 185 179 ! get ktbl … … 187 181 ! 188 182 ! get pfrac 189 DO jj = 1,jpj 190 DO ji = 1,jpi 191 ! 192 ! tbl top/bottom indices initialisation 193 ikt = ktop(ji,jj) ; ikb = kbot(ji,jj) 194 ! 195 ! proportion of the bottom cell included in ice shelf boundary layer 196 pfrac(ji,jj) = ( phtbl(ji,jj) - SUM( pe3(ji,jj,ikt:ikb-1) ) ) / pe3(ji,jj,ikb) 197 ! 198 END DO 199 END DO 183 DO_2D_11_11 184 ! 185 ! tbl top/bottom indices initialisation 186 ikt = ktop(ji,jj) ; ikb = kbot(ji,jj) 187 ! 188 ! proportion of the bottom cell included in ice shelf boundary layer 189 pfrac(ji,jj) = ( phtbl(ji,jj) - SUM( pe3(ji,jj,ikt:ikb-1) ) ) / pe3(ji,jj,ikb) 190 ! 191 END_2D 200 192 ! 201 193 END SUBROUTINE isf_tbl_lvl … … 223 215 ! 224 216 ! get ktbl 225 DO jj = 1,jpj 226 DO ji = 1,jpi 227 ! 228 ! determine the deepest level influenced by the boundary layer 229 ikt = ktop(ji,jj) 230 ikb = ikt 231 DO WHILE ( SUM(pe3(ji,jj,ikt:ikb-1)) < phtbl(ji,jj ) ) ; ikb = ikb + 1 ; END DO 232 kbot(ji,jj) = ikb - 1 233 ! 234 END DO 235 END DO 217 DO_2D_11_11 218 ! 219 ! determine the deepest level influenced by the boundary layer 220 ikt = ktop(ji,jj) 221 ikb = ikt 222 DO WHILE ( SUM(pe3(ji,jj,ikt:ikb-1)) < phtbl(ji,jj ) ) ; ikb = ikb + 1 ; END DO 223 kbot(ji,jj) = ikb - 1 224 ! 225 END_2D 236 226 ! 237 227 END SUBROUTINE isf_tbl_kbot … … 259 249 ! test: this routine run with pdep = 0 should return 1 260 250 ! 261 DO jj = 1, jpj 262 DO ji = 1, jpi 263 ! comput ktop 264 ikt = 2 265 DO WHILE ( gdepw_0(ji,jj,ikt) <= pdep(ji,jj ) ) ; ikt = ikt + 1 ; END DO 266 ktop(ji,jj) = ikt - 1 267 ! 268 ! update pdep 269 pdep(ji,jj) = gdepw_0(ji,jj,ktop(ji,jj)) 270 END DO 271 END DO 251 DO_2D_11_11 252 ! comput ktop 253 ikt = 2 254 DO WHILE ( gdepw_0(ji,jj,ikt) <= pdep(ji,jj ) ) ; ikt = ikt + 1 ; END DO 255 ktop(ji,jj) = ikt - 1 256 ! 257 ! update pdep 258 pdep(ji,jj) = gdepw_0(ji,jj,ktop(ji,jj)) 259 END_2D 272 260 ! 273 261 END SUBROUTINE isf_tbl_ktop
Note: See TracChangeset
for help on using the changeset viewer.