- Timestamp:
- 2016-10-04T17:46:55+02:00 (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2016/dev_r6393_NOC_WAD/NEMOGCM/NEMO/OPA_SRC/DYN/wet_dry.F90
r6678 r6986 46 46 PUBLIC wad_lmt ! routine called by sshwzv.F90 47 47 PUBLIC wad_lmt_bt ! routine called by dynspg_ts.F90 48 PUBLIC wad_istate ! routine called by istate.F90 and domvvl.F90 48 49 49 50 !! * Substitutions … … 132 133 133 134 zflag = 0 134 zdepwd = 150._wp !maximum depth on which that W/D could possibly happen135 zdepwd = 50._wp !maximum depth on which that W/D could possibly happen 135 136 136 137 … … 156 157 zflxv(:,:) = zflxv(:,:) * e1v(:,:) 157 158 159 wdmask(:,:) = 1 158 160 DO jj = 2, jpjm1 159 161 DO ji = 2, jpim1 … … 168 170 169 171 zdep2 = bathy(ji,jj) + sshb1(ji,jj) - rn_wdmin1 170 IF(zdep2 <0._wp) THEN !add more safty, but not necessary172 IF(zdep2 .le. 0._wp) THEN !add more safty, but not necessary 171 173 !zdep2 = 0._wp 172 174 sshb1(ji,jj) = rn_wdmin1 - bathy(ji,jj) 175 wdmask(ji,jj) = 0._wp 173 176 END IF 174 177 ENDDO … … 186 189 DO ji = 2, jpim1 187 190 188 wdmask(ji,jj) = 0189 191 IF(tmask(ji, jj, 1) < 0.5_wp) CYCLE 190 192 IF(bathy(ji,jj) > zdepwd) CYCLE … … 201 203 202 204 IF(zdep1 > zdep2) THEN 203 IF(jk1 .eq. 1) wdmask(ji,jj) = 1204 205 zflag = 1 206 wdmask(ji, jj) = 0 205 207 zcoef = ( ( zdep2 - rn_wdmin2 ) * ztmp - zzflxn * z2dt ) / ( zflxp(ji,jj) * z2dt ) 206 208 zcoef = max(zcoef, 0._wp) … … 231 233 CALL lbc_lnk( un, 'U', -1. ) 232 234 CALL lbc_lnk( vn, 'V', -1. ) 235 ! 236 un_b(:,:) = un_b(:,:) * zwdlmtu(:, :) 237 vn_b(:,:) = vn_b(:,:) * zwdlmtv(:, :) 238 CALL lbc_lnk( un_b, 'U', -1. ) 239 CALL lbc_lnk( vn_b, 'V', -1. ) 233 240 234 241 IF(zflag == 1 .AND. lwp) WRITE(numout,*) 'Need more iterations in wad_lmt!!!' … … 390 397 IF( nn_timing == 1 ) CALL timing_stop('wad_lmt') 391 398 END SUBROUTINE wad_lmt_bt 399 400 SUBROUTINE wad_istate 401 !!---------------------------------------------------------------------- 402 !! *** ROUTINE wad_istate *** 403 !! 404 !! ** Purpose : Initialization of the dynamics and tracers for WAD test 405 !! configurations (channels or bowls with initial ssh gradients) 406 !! 407 !! ** Method : - set temperature field 408 !! - set salinity field 409 !! - set ssh slope (needs to be repeated in domvvl_rst_init to 410 !! set vertical metrics ) 411 !!---------------------------------------------------------------------- 412 ! 413 INTEGER :: ji, jj ! dummy loop indices 414 !!---------------------------------------------------------------------- 415 ! 416 ! Uniform T & S in all test cases 417 tsn(:,:,:,jp_tem) = 10._wp 418 tsb(:,:,:,jp_tem) = 10._wp 419 tsn(:,:,:,jp_sal) = 35._wp 420 tsb(:,:,:,jp_sal) = 35._wp 421 SELECT CASE ( jp_cfg ) 422 ! ! ==================== 423 CASE ( 1 ) ! WAD 1 configuration 424 ! ! ==================== 425 ! 426 IF(lwp) WRITE(numout,*) 427 IF(lwp) WRITE(numout,*) 'istate_wad : Closed box with EW linear bottom slope' 428 IF(lwp) WRITE(numout,*) '~~~~~~~~~~' 429 ! 430 do ji = 1,jpi 431 sshn(ji,:) = ( -5.5_wp + 5.5_wp*FLOAT(mig(ji))/FLOAT(jpidta-1))*tmask(ji,:,1) 432 end do 433 ! ! ==================== 434 CASE ( 2 ) ! WAD 2 configuration 435 ! ! ==================== 436 ! 437 IF(lwp) WRITE(numout,*) 438 IF(lwp) WRITE(numout,*) 'istate_wad : Parobolic EW channel, mid-range initial ssh slope' 439 IF(lwp) WRITE(numout,*) '~~~~~~~~~~' 440 ! 441 do ji = 1,jpi 442 sshn(ji,:) = ( -5.5_wp + 3.9_wp*FLOAT(jpidta - mig(ji))/FLOAT(jpidta-1))*tmask(ji,:,1) 443 end do 444 ! ! ==================== 445 CASE ( 3 ) ! WAD 3 configuration 446 ! ! ==================== 447 ! 448 IF(lwp) WRITE(numout,*) 449 IF(lwp) WRITE(numout,*) 'istate_wad : Parobolic EW channel, extreme initial ssh slope' 450 IF(lwp) WRITE(numout,*) '~~~~~~~~~~' 451 ! 452 do ji = 1,jpi 453 sshn(ji,:) = ( -7.5_wp + 6.9_wp*FLOAT(jpidta - mig(ji))/FLOAT(jpidta-1))*tmask(ji,:,1) 454 end do 455 456 ! 457 ! ! ==================== 458 CASE ( 4 ) ! WAD 4 configuration 459 ! ! ==================== 460 ! 461 IF(lwp) WRITE(numout,*) 462 IF(lwp) WRITE(numout,*) 'istate_wad : Parobolic bowl, mid-range initial ssh slope' 463 IF(lwp) WRITE(numout,*) '~~~~~~~~~~' 464 ! 465 do ji = 1,jpi 466 sshn(ji,:) = ( -5.5_wp + 3.9_wp*FLOAT(jpidta - mig(ji))/FLOAT(jpidta-1))*tmask(ji,:,1) 467 ! very small displacement test: 468 !sshn(ji,:) = ( -0.05_wp + 0.05_wp*FLOAT(jpidta - mig(ji))/FLOAT(jpidta-1))*tmask(ji,:,1) 469 end do 470 471 ! 472 ! ! =========================== 473 CASE DEFAULT ! NONE existing configuration 474 ! ! =========================== 475 WRITE(ctmp1,*) 'WAD test with a ', jp_cfg,' option is not coded' 476 ! 477 CALL ctl_stop( ctmp1 ) 478 ! 479 END SELECT 480 ! 481 ! Apply minimum wetdepth criterion 482 ! 483 do jj = 1,jpj 484 do ji = 1,jpi 485 IF( bathy(ji,jj) + sshn(ji,jj) < 0.4_wp) THEN 486 sshn(ji,jj) = tmask(ji,jj,1)*(0.4_wp - bathy(ji,jj)) 487 ENDIF 488 end do 489 end do 490 sshb = sshn 491 ssha = sshn 492 ! 493 END SUBROUTINE wad_istate 494 495 !!===================================================================== 392 496 END MODULE wet_dry
Note: See TracChangeset
for help on using the changeset viewer.