Changeset 14834 for NEMO/trunk/src/OCE/SBC
- Timestamp:
- 2021-05-11T11:24:44+02:00 (3 years ago)
- Location:
- NEMO/trunk/src/OCE/SBC
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/trunk/src/OCE/SBC/sbccpl.F90
r14718 r14834 1301 1301 IF( llnewtau ) THEN 1302 1302 zcoef = 1. / ( zrhoa * zcdrag ) 1303 DO_2D( 1, 1, 1, 1)1303 DO_2D( nn_hls, nn_hls, nn_hls, nn_hls ) 1304 1304 frcv(jpr_w10m)%z3(ji,jj,1) = SQRT( frcv(jpr_taum)%z3(ji,jj,1) * zcoef ) 1305 1305 END_2D -
NEMO/trunk/src/OCE/SBC/sbcmod.F90
r14229 r14834 475 475 END SELECT 476 476 477 IF( ln_icebergs ) THEN 478 CALL icb_stp( kt, Kmm ) ! compute icebergs 479 ! Icebergs do not melt over the haloes. 480 ! So emp values over the haloes are no more consistent with the inner domain values. 481 ! A lbc_lnk is therefore needed to ensure reproducibility and restartability. 482 ! see ticket #2113 for discussion about this lbc_lnk. 483 IF( .NOT. ln_passive_mode ) CALL lbc_lnk( 'sbcmod', emp, 'T', 1.0_wp ) ! ensure restartability with icebergs 477 IF( ln_icebergs ) CALL icb_stp( kt, Kmm ) ! compute icebergs 478 479 ! Icebergs do not melt over the haloes. 480 ! So emp values over the haloes are no more consistent with the inner domain values. 481 ! A lbc_lnk is therefore needed to ensure reproducibility and restartability. 482 ! see ticket #2113 for discussion about this lbc_lnk. 483 ! The lbc_lnk is also needed for SI3 with nn_hls > 1 as emp is not yet defined for these points in iceupdate.F90 484 IF( (ln_icebergs .AND. .NOT. ln_passive_mode) .OR. (nn_ice == 2 .AND. nn_hls == 2) ) THEN 485 CALL lbc_lnk( 'sbcmod', emp, 'T', 1.0_wp ) 484 486 ENDIF 485 487 -
NEMO/trunk/src/OCE/SBC/sbcrnf.F90
r14718 r14834 211 211 IF( ln_rnf_depth .OR. ln_rnf_depth_ini ) THEN !== runoff distributed over several levels ==! 212 212 IF( ln_linssh ) THEN !* constant volume case : just apply the runoff input flow 213 DO_2D ( 1, 1, 1, 1)213 DO_2D_OVR( nn_hls-1, nn_hls, nn_hls-1, nn_hls ) 214 214 DO jk = 1, nk_rnf(ji,jj) 215 215 phdivn(ji,jj,jk) = phdivn(ji,jj,jk) - ( rnf(ji,jj) + rnf_b(ji,jj) ) * zfact * r1_rho0 / h_rnf(ji,jj) … … 217 217 END_2D 218 218 ELSE !* variable volume case 219 DO_2D ( 1, 1, 1, 1 )! update the depth over which runoffs are distributed219 DO_2D_OVR( nn_hls, nn_hls, nn_hls, nn_hls ) ! update the depth over which runoffs are distributed 220 220 h_rnf(ji,jj) = 0._wp 221 221 DO jk = 1, nk_rnf(ji,jj) ! recalculates h_rnf to be the depth in metres … … 229 229 ENDIF 230 230 ELSE !== runoff put only at the surface ==! 231 h_rnf (:,:) = e3t (:,:,1,Kmm) ! update h_rnf to be depth of top box 232 phdivn(:,:,1) = phdivn(:,:,1) - ( rnf(:,:) + rnf_b(:,:) ) * zfact * r1_rho0 / e3t(:,:,1,Kmm) 231 DO_2D_OVR( nn_hls, nn_hls, nn_hls, nn_hls ) 232 h_rnf (ji,jj) = e3t (ji,jj,1,Kmm) ! update h_rnf to be depth of top box 233 phdivn(ji,jj,1) = phdivn(ji,jj,1) - ( rnf(ji,jj) + rnf_b(ji,jj) ) * zfact * r1_rho0 / e3t(ji,jj,1,Kmm) 234 END_2D 233 235 ENDIF 234 236 ! … … 363 365 ! 364 366 nk_rnf(:,:) = 0 ! set the number of level over which river runoffs are applied 365 DO_2D( 1, 1, 1, 1)367 DO_2D( nn_hls, nn_hls, nn_hls, nn_hls ) 366 368 IF( h_rnf(ji,jj) > 0._wp ) THEN 367 369 jk = 2 … … 376 378 ENDIF 377 379 END_2D 378 DO_2D( 1, 1, 1, 1) ! set the associated depth380 DO_2D( nn_hls, nn_hls, nn_hls, nn_hls ) ! set the associated depth 379 381 h_rnf(ji,jj) = 0._wp 380 382 DO jk = 1, nk_rnf(ji,jj) … … 406 408 WHERE( zrnfcl(:,:,1) > 0._wp ) h_rnf(:,:) = zacoef * zrnfcl(:,:,1) ! compute depth for all runoffs 407 409 ! 408 DO_2D( 1, 1, 1, 1) ! take in account min depth of ocean rn_hmin410 DO_2D( nn_hls, nn_hls, nn_hls, nn_hls ) ! take in account min depth of ocean rn_hmin 409 411 IF( zrnfcl(ji,jj,1) > 0._wp ) THEN 410 412 jk = mbkt(ji,jj) … … 414 416 ! 415 417 nk_rnf(:,:) = 0 ! number of levels on which runoffs are distributed 416 DO_2D( 1, 1, 1, 1)418 DO_2D( nn_hls, nn_hls, nn_hls, nn_hls ) 417 419 IF( zrnfcl(ji,jj,1) > 0._wp ) THEN 418 420 jk = 2 … … 425 427 END_2D 426 428 ! 427 DO_2D( 1, 1, 1, 1) ! set the associated depth429 DO_2D( nn_hls, nn_hls, nn_hls, nn_hls ) ! set the associated depth 428 430 h_rnf(ji,jj) = 0._wp 429 431 DO jk = 1, nk_rnf(ji,jj) -
NEMO/trunk/src/OCE/SBC/sbcssr.F90
r14718 r14834 98 98 ! 99 99 IF( nn_sstr == 1 ) THEN !* Temperature restoring term 100 DO_2D( 1, 1, 1, 1)100 DO_2D( nn_hls, nn_hls, nn_hls, nn_hls ) 101 101 zqrp = rn_dqdt * ( sst_m(ji,jj) - sf_sst(1)%fnow(ji,jj,1) ) * tmask(ji,jj,1) 102 102 qns(ji,jj) = qns(ji,jj) + zqrp … … 108 108 ! use fraction of ice ( fr_i ) to adjust relaxation under ice if nn_sssr_ice .ne. 1 109 109 ! n.b. coefice is initialised and fixed to 1._wp if nn_sssr_ice = 1 110 DO_2D( 1, 1, 1, 1)110 DO_2D( nn_hls, nn_hls, nn_hls, nn_hls ) 111 111 SELECT CASE ( nn_sssr_ice ) 112 112 CASE ( 0 ) ; coefice(ji,jj) = 1._wp - fr_i(ji,jj) ! no/reduced damping under ice … … 118 118 IF( nn_sssr == 1 ) THEN !* Salinity damping term (salt flux only (sfx)) 119 119 zsrp = rn_deds / rday ! from [mm/day] to [kg/m2/s] 120 DO_2D( 1, 1, 1, 1)120 DO_2D( nn_hls, nn_hls, nn_hls, nn_hls ) 121 121 zerp = zsrp * ( 1. - 2.*rnfmsk(ji,jj) ) & ! No damping in vicinity of river mouths 122 122 & * coefice(ji,jj) & ! Optional control of damping under sea-ice … … 129 129 zsrp = rn_deds / rday ! from [mm/day] to [kg/m2/s] 130 130 zerp_bnd = rn_sssr_bnd / rday ! - - 131 DO_2D( 1, 1, 1, 1)131 DO_2D( nn_hls, nn_hls, nn_hls, nn_hls ) 132 132 zerp = zsrp * ( 1. - 2.*rnfmsk(ji,jj) ) & ! No damping in vicinity of river mouths 133 133 & * coefice(ji,jj) & ! Optional control of damping under sea-ice
Note: See TracChangeset
for help on using the changeset viewer.