- Timestamp:
- 2021-01-28T12:05:04+01:00 (3 years ago)
- Location:
- NEMO/branches/2021/dev_r14318_MOI-02_MOI-GLS-ICE/src/OCE/ZDF
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2021/dev_r14318_MOI-02_MOI-GLS-ICE/src/OCE/ZDF/zdfgls.F90
r14345 r14358 340 340 zdiag(:,:,2) = 1._wp 341 341 ! 342 IF( ln_isfcav) THEN ! top boundary (ocean cavity) 343 DO_2D( 0, 0, 0, 0 ) 344 IF( mikt(ji,jj) > 1 )THEN 345 itop = mikt(ji,jj) ! k top w-point 346 itopp1 = mikt(ji,jj) + 1 ! k+1 1st w-point below the top one 347 ! 348 z_en = MAX( rc02r * ustar2_top(ji,jj), rn_emin ) 349 ! 350 ! Dirichlet condition applied at: 351 ! top level (itop) & Just below it (itopp1) 352 zd_lw(ji,jj,itop) = 0._wp ; zd_lw(ji,jj,itopp1) = 0._wp 353 zd_up(ji,jj,itop) = 0._wp ; zd_up(ji,jj,itopp1) = 0._wp 354 zdiag(ji,jj,itop) = 1._wp ; zdiag(ji,jj,itopp1) = 1._wp 355 en (ji,jj,itop) = z_en ; en (ji,jj,itopp1) = z_en 356 ENDIF 357 END_2D 358 ENDIF 342 359 ! 343 360 CASE ( 1 ) ! Neumann boundary condition (set d(e)/dz) … … 361 378 en(:,:,2) = en(:,:,2) + zflxs(:,:) / e3w(:,:,2,Kmm) 362 379 ! 380 IF( ln_isfcav) THEN ! top boundary (ocean cavity) 381 DO_2D( 0, 0, 0, 0 ) 382 IF( mikt(ji,jj) > 1 )THEN 383 itop = mikt(ji,jj) ! k top w-point 384 itopp1 = mikt(ji,jj) + 1 ! k+1 1st w-point below the top one 385 ! 386 zd_lw(ji,jj,itop) = en(ji,jj,itop) 387 zd_up(ji,jj,itop) = 0._wp 388 zdiag(ji,jj,itop) = 1._wp 389 ! 390 zdiag(ji,jj,itopp1) = zdiag(ji,jj,itopp1) + zd_lw(ji,jj,itopp1) !Remove zd_lw from zdiag 391 zd_lw(ji,jj,itopp1) = 0._wp 392 393 zkar (ji,jj) = (rl_sf +(vkarmn-rl_sf)*(1.-EXP(-rtrans*(gdept(ji,jj,itop,Kmm)-gdepw(ji,jj,itop,Kmm))/r_z0_top))) 394 zflxs(ji,jj) = rsbc_tke2 * ustar2_top(ji,jj)**1.5_wp * zkar(ji,jj) & 395 & * ( (r_z0_top+(gdept(ji,jj,itop,Kmm)-gdepw(ji,jj,itop,Kmm)) ) / r_z0_top)**(1.5_wp*ra_sf) 396 en(ji,jj,itopp1) = en(ji,jj,itopp1) + zflxs(ji,jj)/e3w(ji,jj,itopp1,Kmm) 397 ENDIF 398 END_2D 399 ENDIF 363 400 ! 364 401 END SELECT … … 422 459 en (ji,jj,ibot) = z_en 423 460 END_2D 461 ! 424 462 IF( ln_isfcav) THEN ! top boundary (ocean cavity) 425 463 DO_2D( 0, 0, 0, 0 ) … … 555 593 zdiag(:,:,2) = 1._wp 556 594 ! 595 IF( ln_isfcav) THEN ! top boundary (ocean cavity) 596 DO_2D( 0, 0, 0, 0 ) 597 IF( mikt(ji,jj) > 1 )THEN 598 itop = mikt(ji,jj) ! k top w-point 599 itopp1 = mikt(ji,jj) + 1 ! k+1 1st w-point below the top one 600 ! 601 zdep(ji,jj) = vkarmn * r_z0_top 602 psi (ji,jj,itop) = rc0**rpp * en(ji,jj,itop)**rmm*zdep(ji,jj)**rnn 603 zd_lw(ji,jj,itop) = 0._wp 604 zd_up(ji,jj,itop) = 0._wp 605 zdiag(ji,jj,itop) = 1._wp 606 ! 607 zdep(ji,jj) = vkarmn * ( r_z0_top + e3t(ji,jj,itopp1,Kmm) ) 608 psi (ji,jj,itopp1) = rc0**rpp * en(ji,jj,itopp1)**rmm *zdep(ji,jj)**rnn 609 zd_lw(ji,jj,itopp1) = 0._wp 610 zd_up(ji,jj,itopp1) = 0._wp 611 zdiag(ji,jj,itopp1) = 1._wp 612 ENDIF 613 END_2D 614 ENDIF 615 ! 557 616 CASE ( 1 ) ! Neumann boundary condition on d(psi)/dz 558 617 ! … … 579 638 zflxs(:,:) = zdep(:,:) * zflxs(:,:) 580 639 psi (:,:,2) = psi(:,:,2) + zflxs(:,:) / e3w(:,:,2,Kmm) 640 ! 641 IF( ln_isfcav) THEN ! top boundary (ocean cavity) 642 DO_2D( 0, 0, 0, 0 ) 643 IF( mikt(ji,jj) > 1 )THEN 644 itop = mikt(ji,jj) ! k top w-point 645 itopp1 = mikt(ji,jj) + 1 ! k+1 1st w-point below the top one 646 ! 647 zdep(ji,jj) = vkarmn * r_z0_top 648 psi (ji,jj,itop) = rc0**rpp * en(ji,jj,itop)**rmm * zdep(ji,jj)**rnn 649 zd_lw(ji,jj,itop) = psi(ji,jj,itop) 650 zd_up(ji,jj,itop) = 0._wp 651 zdiag(ji,jj,itop) = 1._wp 652 ! 653 zdiag(ji,jj,itopp1) = zdiag(ji,jj,itopp1) + zd_lw(ji,jj,itopp1) 654 zd_lw(ji,jj,itopp1) = 0._wp 655 zdep(ji,jj) = vkarmn * ( r_z0_top + e3t(ji,jj,itopp1,Kmm) ) 656 zflxb = rsbc_psi2 * ( p_avm(ji,jj,itop) + p_avm(ji,jj,itopp1)) & 657 & * (0.5_wp*(en(ji,jj,itop)+en(ji,jj,itopp1)))**rmm * zdep(ji,jj)**(rnn-1._wp) 658 psi(ji,jj,itopp1) = psi(ji,jj,itopp1) + zflxb / e3w(ji,jj,itopp1,Kmm) 659 ENDIF 660 END_2D 661 ENDIF 662 581 663 ! 582 664 END SELECT -
NEMO/branches/2021/dev_r14318_MOI-02_MOI-GLS-ICE/src/OCE/ZDF/zdfphy.F90
r14072 r14358 207 207 IF( ioptio /= 1 ) CALL ctl_stop( 'zdf_phy_init: one and only one vertical diffusion option has to be defined ' ) 208 208 IF( ln_isfcav ) THEN 209 IF( ln_zdfric .OR. ln_zdfgls ) CALL ctl_stop( 'zdf_phy_init: zdfric and zdfglsnever tested with ice shelves cavities ' )209 IF( ln_zdfric ) CALL ctl_stop( 'zdf_phy_init: zdfric never tested with ice shelves cavities ' ) 210 210 ENDIF 211 211 ! ! shear production term flag
Note: See TracChangeset
for help on using the changeset viewer.