Changeset 13658 for NEMO/branches/UKMO/NEMO_4.0.2_IODRAG/src/OCE
- Timestamp:
- 2020-10-21T17:14:23+02:00 (4 years ago)
- Location:
- NEMO/branches/UKMO/NEMO_4.0.2_IODRAG/src/OCE
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/UKMO/NEMO_4.0.2_IODRAG/src/OCE/DYN/dynnxt.F90
r12658 r13658 48 48 USE prtctl ! Print control 49 49 USE timing ! Timing 50 USE zdfdrg, ONLY: ln_drgice_imp, rCdU_top 50 51 #if defined key_agrif 51 52 USE agrif_oce_interp … … 99 100 REAL(wp) :: zve3a, zve3n, zve3b, zvf, z1_2dt ! - - 100 101 REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: zue, zve 102 REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: zutau, zvtau 101 103 REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: ze3u_f, ze3v_f, zua, zva 102 104 !!---------------------------------------------------------------------- … … 354 356 ENDIF 355 357 ! 358 IF ( iom_use("utau") ) THEN 359 IF ( ln_drgice_imp.OR.ln_isfcav ) THEN 360 ALLOCATE(zutau(jpi,jpj)) 361 DO jj = 2, jpjm1 362 DO ji = 2, jpim1 363 jk = miku(ji,jj) 364 zutau(ji,jj) = utau(ji,jj) & 365 & + 0.5_wp * rau0 * (rCdU_top(ji+1,jj)+rCdU_top(ji,jj)) * ua(ji,jj,jk) 366 END DO 367 END DO 368 CALL lbc_lnk( 'dynnxt' , zutau, 'U', -1.) 369 CALL iom_put( "utau", zutau(:,:) ) 370 DEALLOCATE(zutau) 371 ELSE 372 CALL iom_put( "utau", utau(:,:) ) 373 ENDIF 374 ENDIF 375 ! 376 IF ( iom_use("vtau") ) THEN 377 IF ( ln_drgice_imp.OR.ln_isfcav ) THEN 378 ALLOCATE(zvtau(jpi,jpj)) 379 DO jj = 2, jpjm1 380 DO ji = 2, jpim1 381 jk = mikv(ji,jj) 382 zvtau(ji,jj) = vtau(ji,jj) & 383 & + 0.5_wp * rau0 * (rCdU_top(ji,jj+1)+rCdU_top(ji,jj)) * va(ji,jj,jk) 384 END DO 385 END DO 386 CALL lbc_lnk( 'dynnxt' , zvtau, 'V', -1.) 387 CALL iom_put( "vtau", zvtau(:,:) ) 388 DEALLOCATE(zvtau) 389 ELSE 390 CALL iom_put( "vtau", vtau(:,:) ) 391 ENDIF 392 ENDIF 393 ! 356 394 IF(ln_ctl) CALL prt_ctl( tab3d_1=un, clinfo1=' nxt - Un: ', mask1=umask, & 357 395 & tab3d_2=vn, clinfo2=' Vn: ' , mask2=vmask ) -
NEMO/branches/UKMO/NEMO_4.0.2_IODRAG/src/OCE/DYN/dynspg_ts.F90
r12658 r13658 1465 1465 ! !== Set the barotropic drag coef. ==! 1466 1466 ! 1467 IF( ln_isfcav ) THEN ! top+bottom friction (ocean cavities)1467 IF( ln_isfcav.OR.ln_drgice_imp ) THEN ! top+bottom friction (ocean cavities) 1468 1468 1469 1469 DO jj = 2, jpjm1 … … 1528 1528 ! !== TOP stress contribution from baroclinic velocities ==! (no W/D case) 1529 1529 ! 1530 IF( ln_isfcav ) THEN1530 IF( ln_isfcav.OR.ln_drgice_imp ) THEN 1531 1531 ! 1532 1532 IF( ln_bt_fw ) THEN ! FORWARD integration: use NOW top baroclinic velocity -
NEMO/branches/UKMO/NEMO_4.0.2_IODRAG/src/OCE/DYN/dynzdf.F90
r12658 r13658 141 141 END DO 142 142 END DO 143 IF( ln_isfcav ) THEN ! Ocean cavities (ISF)143 IF( ln_isfcav.OR.ln_drgice_imp ) THEN ! Ocean cavities (ISF) 144 144 DO jj = 2, jpjm1 145 145 DO ji = fs_2, fs_jpim1 ! vector opt. … … 258 258 END DO 259 259 END DO 260 IF ( ln_isfcav ) THEN ! top friction (always implicit)260 IF ( ln_isfcav.OR.ln_drgice_imp ) THEN ! top friction (always implicit) 261 261 DO jj = 2, jpjm1 262 262 DO ji = 2, jpim1 … … 423 423 END DO 424 424 END DO 425 IF ( ln_isfcav ) THEN425 IF ( ln_isfcav.OR.ln_drgice_imp ) THEN 426 426 DO jj = 2, jpjm1 427 427 DO ji = 2, jpim1 -
NEMO/branches/UKMO/NEMO_4.0.2_IODRAG/src/OCE/SBC/sbc_ice.F90
r12658 r13658 70 70 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: wndm_ice !: wind speed module at T-point [m/s] 71 71 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: sstfrz !: wind speed module at T-point [m/s] 72 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: rCdU_ice !: ice-ocean drag at T-point (<0) [m/s] 72 73 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: tsfc_ice !: sea ice surface skin temperature (on categories) 73 74 #endif … … 132 133 & qemp_ice(jpi,jpj) , qevap_ice(jpi,jpj,jpl) , qemp_oce (jpi,jpj) , & 133 134 & qns_oce (jpi,jpj) , qsr_oce (jpi,jpj) , emp_oce (jpi,jpj) , & 134 & emp_ice (jpi,jpj) , tsfc_ice (jpi,jpj,jpl) , sstfrz (jpi,jpj) , STAT= ierr(2) ) 135 & emp_ice (jpi,jpj) , sstfrz (jpi,jpj) , rCdU_ice (jpi,jpj) , & 136 & tsfc_ice (jpi,jpj,jpl) , STAT= ierr(2) ) 135 137 #endif 136 138 -
NEMO/branches/UKMO/NEMO_4.0.2_IODRAG/src/OCE/SBC/sbcmod.F90
r12658 r13658 564 564 ENDIF 565 565 ! 566 CALL iom_put( "utau", utau ) ! i-wind stress (stress can be updated at each time step in sea-ice)567 CALL iom_put( "vtau", vtau ) ! j-wind stress568 !569 566 IF(ln_ctl) THEN ! print mean trends (used for debugging) 570 567 CALL prt_ctl(tab2d_1=fr_i , clinfo1=' fr_i - : ', mask1=tmask ) -
NEMO/branches/UKMO/NEMO_4.0.2_IODRAG/src/OCE/ZDF/zdfdrg.F90
r12658 r13658 32 32 USE lib_mpp ! distributed memory computing 33 33 USE prtctl ! Print control 34 USE sbc_oce, ONLY: nn_ice 34 35 35 36 IMPLICIT NONE … … 46 47 LOGICAL :: ln_loglayer ! logarithmic drag: Cd = vkarmn/log(z/z0) 47 48 LOGICAL , PUBLIC :: ln_drgimp ! implicit top/bottom friction flag 48 49 LOGICAL , PUBLIC :: ln_drgice_imp ! implicit ice-ocean drag 49 50 ! !!* Namelist namdrg_top & _bot: TOP or BOTTOM coefficient namelist * 50 51 REAL(wp) :: rn_Cd0 !: drag coefficient [ - ] … … 231 232 INTEGER :: ios, ioptio ! local integers 232 233 !! 233 NAMELIST/namdrg/ ln_OFF, ln_lin, ln_non_lin, ln_loglayer, ln_drgimp 234 NAMELIST/namdrg/ ln_OFF, ln_lin, ln_non_lin, ln_loglayer, ln_drgimp, ln_drgice_imp 234 235 !!---------------------------------------------------------------------- 235 236 ! … … 254 255 WRITE(numout,*) ' logarithmic drag: Cd = vkarmn/log(z/z0) ln_loglayer = ', ln_loglayer 255 256 WRITE(numout,*) ' implicit friction ln_drgimp = ', ln_drgimp 257 WRITE(numout,*) ' implicit ice-ocean drag ln_drgice_imp =', ln_drgice_imp 256 258 ENDIF 257 259 ! … … 264 266 IF( ioptio /= 1 ) CALL ctl_stop( 'zdf_drg_init: Choose ONE type of drag coef in namdrg' ) 265 267 ! 268 IF ( ln_drgice_imp.AND.(.NOT.ln_drgimp) ) & 269 & CALL ctl_stop( 'zdf_drg_init: ln_drgice_imp=T requires ln_drgimp=T' ) 270 ! 271 IF ( ln_drgice_imp.AND.( nn_ice /=2 ) ) & 272 & CALL ctl_stop( 'zdf_drg_init: ln_drgice_imp=T requires si3' ) 266 273 ! 267 274 ! !== BOTTOM drag setting ==! (applied at seafloor) … … 274 281 ! !== TOP drag setting ==! (applied at the top of ocean cavities) 275 282 ! 276 IF( ln_isfcav ) THEN ! Ocean cavities: top friction setting 277 ALLOCATE( rCd0_top(jpi,jpj), rCdU_top(jpi,jpj) ) 283 IF( ln_isfcav.OR.ln_drgice_imp ) THEN ! Ocean cavities: top friction setting 284 ALLOCATE( rCdU_top(jpi,jpj) ) 285 ENDIF 286 ! 287 IF( ln_isfcav ) THEN 288 ALLOCATE( rCd0_top(jpi,jpj)) 278 289 CALL drg_init( 'TOP ' , mikt , & ! <== in 279 290 & r_Cdmin_top, r_Cdmax_top, r_z0_top, r_ke0_top, rCd0_top, rCdU_top ) ! ==> out -
NEMO/branches/UKMO/NEMO_4.0.2_IODRAG/src/OCE/ZDF/zdfphy.F90
r12658 r13658 28 28 USE sbc_oce ! surface module (only for nn_isf in the option compatibility test) 29 29 USE sbcrnf ! surface boundary condition: runoff variables 30 USE sbc_ice ! sea ice drag 30 31 #if defined key_agrif 31 32 USE agrif_oce_interp ! interpavm … … 252 253 ENDIF 253 254 ! 255 IF ( ln_drgice_imp) THEN 256 IF ( ln_isfcav ) THEN 257 rCdU_top(:,:) = rCdU_top(:,:) + ssmask(:,:) * tmask(:,:,1) * rCdU_ice(:,:) 258 ELSE 259 rCdU_top(:,:) = rCdU_ice(:,:) 260 ENDIF 261 ENDIF 262 ! 254 263 ! !== Kz from chosen turbulent closure ==! (avm_k, avt_k) 255 264 !
Note: See TracChangeset
for help on using the changeset viewer.