- Timestamp:
- 2020-11-27T17:26:33+01:00 (4 years ago)
- Location:
- NEMO/branches/2020/tickets_icb_1900
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2020/tickets_icb_1900
- Property svn:externals
-
NEMO/branches/2020/tickets_icb_1900/src/OCE/LDF/ldftra.F90
r13237 r13899 246 246 ENDIF 247 247 ! 248 IF( ln_ldfeiv .AND. .NOT.( ln_traldf_iso .OR. ln_traldf_triad ) ) & 249 & CALL ctl_stop( 'ln_ldfeiv=T requires iso-neutral laplacian diffusion' ) 250 IF( ln_isfcav .AND. ln_traldf_triad ) & 251 & CALL ctl_stop( ' ice shelf cavity and traldf_triad not tested' ) 248 IF( ln_isfcav .AND. ln_traldf_triad ) CALL ctl_stop( ' ice shelf cavity and traldf_triad not tested' ) 252 249 ! 253 250 IF( nldf_tra == np_lap_i .OR. nldf_tra == np_lap_it .OR. & … … 317 314 IF(lwp) WRITE(numout,*) ' ==>>> eddy diffusivity = F(i,j) read in eddy_diffusivity.nc file' 318 315 CALL iom_open( 'eddy_diffusivity_2D.nc', inum ) 319 CALL iom_get ( inum, jpdom_ data, 'ahtu_2D', ahtu(:,:,1))320 CALL iom_get ( inum, jpdom_ data, 'ahtv_2D', ahtv(:,:,1))316 CALL iom_get ( inum, jpdom_global, 'ahtu_2D', ahtu(:,:,1), cd_type = 'U', psgn = 1._wp ) 317 CALL iom_get ( inum, jpdom_global, 'ahtv_2D', ahtv(:,:,1), cd_type = 'V', psgn = 1._wp ) 321 318 CALL iom_close( inum ) 322 319 DO jk = 2, jpkm1 … … 345 342 IF(lwp) WRITE(numout,*) ' ==>>> eddy diffusivity = F(i,j,k) read in eddy_diffusivity.nc file' 346 343 CALL iom_open( 'eddy_diffusivity_3D.nc', inum ) 347 CALL iom_get ( inum, jpdom_ data, 'ahtu_3D', ahtu)348 CALL iom_get ( inum, jpdom_ data, 'ahtv_3D', ahtv)344 CALL iom_get ( inum, jpdom_global, 'ahtu_3D', ahtu, cd_type = 'U', psgn = 1._wp ) 345 CALL iom_get ( inum, jpdom_global, 'ahtv_3D', ahtv, cd_type = 'V', psgn = 1._wp ) 349 346 CALL iom_close( inum ) 350 347 ! … … 430 427 zaht_min = 0.2_wp * aht0 ! minimum value for aht 431 428 zDaht = aht0 - zaht_min 432 DO_2D _11_11429 DO_2D( 1, 1, 1, 1 ) 433 430 !!gm CAUTION : here we assume lat/lon grid in 20deg N/S band (like all ORCA cfg) 434 431 !! ==>>> The Coriolis value is identical for t- & u_points, and for v- and f-points … … 541 538 IF( ln_traldf_blp ) CALL ctl_stop( 'ldf_eiv_init: eddy induced velocity ONLY with laplacian diffusivity' ) 542 539 ! 540 IF( .NOT.( ln_traldf_iso .OR. ln_traldf_triad ) ) & 541 & CALL ctl_stop( 'ln_ldfeiv=T requires iso-neutral laplacian diffusion' ) 543 542 ! != allocate the aei arrays 544 543 ALLOCATE( aeiu(jpi,jpj,jpk), aeiv(jpi,jpj,jpk), STAT=ierr ) … … 572 571 IF(lwp) WRITE(numout,*) ' ==>>> eddy induced velocity coef. = F(i,j) read in eddy_diffusivity_2D.nc file' 573 572 CALL iom_open ( 'eddy_induced_velocity_2D.nc', inum ) 574 CALL iom_get ( inum, jpdom_ data, 'aeiu', aeiu(:,:,1))575 CALL iom_get ( inum, jpdom_ data, 'aeiv', aeiv(:,:,1))573 CALL iom_get ( inum, jpdom_global, 'aeiu', aeiu(:,:,1), cd_type = 'U', psgn = 1._wp ) 574 CALL iom_get ( inum, jpdom_global, 'aeiv', aeiv(:,:,1), cd_type = 'V', psgn = 1._wp ) 576 575 CALL iom_close( inum ) 577 576 DO jk = 2, jpkm1 … … 596 595 IF(lwp) WRITE(numout,*) ' ==>>> eddy induced velocity coef. = F(i,j,k) read in eddy_diffusivity_3D.nc file' 597 596 CALL iom_open ( 'eddy_induced_velocity_3D.nc', inum ) 598 CALL iom_get ( inum, jpdom_ data, 'aeiu', aeiu)599 CALL iom_get ( inum, jpdom_ data, 'aeiv', aeiv)597 CALL iom_get ( inum, jpdom_global, 'aeiu', aeiu, cd_type = 'U', psgn = 1._wp ) 598 CALL iom_get ( inum, jpdom_global, 'aeiv', aeiv, cd_type = 'V', psgn = 1._wp ) 600 599 CALL iom_close( inum ) 601 600 ! … … 648 647 ! ! Compute lateral diffusive coefficient at T-point 649 648 IF( ln_traldf_triad ) THEN 650 DO_3D _00_00(1, jpk )649 DO_3D( 0, 0, 0, 0, 1, jpk ) 651 650 ! Take the max of N^2 and zero then take the vertical sum 652 651 ! of the square root of the resulting N^2 ( required to compute … … 662 661 END_3D 663 662 ELSE 664 DO_3D _00_00(1, jpk )663 DO_3D( 0, 0, 0, 0, 1, jpk ) 665 664 ! Take the max of N^2 and zero then take the vertical sum 666 665 ! of the square root of the resulting N^2 ( required to compute … … 678 677 ENDIF 679 678 680 DO_2D _00_00679 DO_2D( 0, 0, 0, 0 ) 681 680 zfw = MAX( ABS( 2. * omega * SIN( rad * gphit(ji,jj) ) ) , 1.e-10 ) 682 681 ! Rossby radius at w-point taken betwenn 2 km and 40km … … 688 687 ! !== Bound on eiv coeff. ==! 689 688 z1_f20 = 1._wp / ( 2._wp * omega * sin( rad * 20._wp ) ) 690 DO_2D _00_00689 DO_2D( 0, 0, 0, 0 ) 691 690 zzaei = MIN( 1._wp, ABS( ff_t(ji,jj) * z1_f20 ) ) * zaeiw(ji,jj) ! tropical decrease 692 691 zaeiw(ji,jj) = MIN( zzaei , paei0 ) ! Max value = paei0 … … 694 693 CALL lbc_lnk( 'ldftra', zaeiw(:,:), 'W', 1.0_wp ) ! lateral boundary condition 695 694 ! 696 DO_2D _00_00695 DO_2D( 0, 0, 0, 0 ) !== aei at u- and v-points ==! 697 696 paeiu(ji,jj,1) = 0.5_wp * ( zaeiw(ji,jj) + zaeiw(ji+1,jj ) ) * umask(ji,jj,1) 698 697 paeiv(ji,jj,1) = 0.5_wp * ( zaeiw(ji,jj) + zaeiw(ji ,jj+1) ) * vmask(ji,jj,1) … … 750 749 zpsi_uw(:,:,jpk) = 0._wp ; zpsi_vw(:,:,jpk) = 0._wp 751 750 ! 752 DO_3D _10_10(2, jpkm1 )751 DO_3D( 1, 0, 1, 0, 2, jpkm1 ) 753 752 zpsi_uw(ji,jj,jk) = - r1_4 * e2u(ji,jj) * ( wslpi(ji,jj,jk ) + wslpi(ji+1,jj,jk) ) & 754 753 & * ( aeiu (ji,jj,jk-1) + aeiu (ji ,jj,jk) ) * wumask(ji,jj,jk) … … 757 756 END_3D 758 757 ! 759 DO_3D _10_10(1, jpkm1 )758 DO_3D( 1, 0, 1, 0, 1, jpkm1 ) 760 759 pu(ji,jj,jk) = pu(ji,jj,jk) - ( zpsi_uw(ji,jj,jk) - zpsi_uw(ji,jj,jk+1) ) 761 760 pv(ji,jj,jk) = pv(ji,jj,jk) - ( zpsi_vw(ji,jj,jk) - zpsi_vw(ji,jj,jk+1) ) 762 761 END_3D 763 DO_3D _00_00(1, jpkm1 )762 DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 764 763 pw(ji,jj,jk) = pw(ji,jj,jk) + ( zpsi_uw(ji,jj,jk) - zpsi_uw(ji-1,jj ,jk) & 765 764 & + zpsi_vw(ji,jj,jk) - zpsi_vw(ji ,jj-1,jk) ) … … 813 812 CALL iom_put( "voce_eiv", zw3d ) 814 813 ! 815 DO_3D _00_00( 1, jpkm1 )814 DO_3D( 0, 0, 0, 0, 1, jpkm1 ) ! e1 e2 w_eiv = dk[psix] + dk[psix] 816 815 zw3d(ji,jj,jk) = ( psi_vw(ji,jj,jk) - psi_vw(ji ,jj-1,jk) & 817 816 & + psi_uw(ji,jj,jk) - psi_uw(ji-1,jj ,jk) ) / e1e2t(ji,jj) … … 840 839 zw2d(:,:) = 0._wp 841 840 zw3d(:,:,:) = 0._wp 842 DO_3D _00_00(1, jpkm1 )841 DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 843 842 zw3d(ji,jj,jk) = zw3d(ji,jj,jk) + ( psi_uw(ji,jj,jk+1) - psi_uw(ji ,jj,jk) ) & 844 843 & * ( ts (ji,jj,jk,jp_tem,Kmm) + ts (ji+1,jj,jk,jp_tem,Kmm) ) … … 861 860 zw2d(:,:) = 0._wp 862 861 zw3d(:,:,:) = 0._wp 863 DO_3D _00_00(1, jpkm1 )862 DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 864 863 zw3d(ji,jj,jk) = zw3d(ji,jj,jk) + ( psi_vw(ji,jj,jk+1) - psi_vw(ji,jj ,jk) ) & 865 864 & * ( ts (ji,jj,jk,jp_tem,Kmm) + ts (ji,jj+1,jk,jp_tem,Kmm) ) … … 876 875 zw2d(:,:) = 0._wp 877 876 zw3d(:,:,:) = 0._wp 878 DO_3D _00_00(1, jpkm1 )877 DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 879 878 zw3d(ji,jj,jk) = zw3d(ji,jj,jk) * ( psi_uw(ji,jj,jk+1) - psi_uw(ji ,jj,jk) ) & 880 879 & * ( ts (ji,jj,jk,jp_sal,Kmm) + ts (ji+1,jj,jk,jp_sal,Kmm) ) … … 888 887 zw2d(:,:) = 0._wp 889 888 zw3d(:,:,:) = 0._wp 890 DO_3D _00_00(1, jpkm1 )889 DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 891 890 zw3d(ji,jj,jk) = zw3d(ji,jj,jk) + ( psi_vw(ji,jj,jk+1) - psi_vw(ji,jj ,jk) ) & 892 891 & * ( ts (ji,jj,jk,jp_sal,Kmm) + ts (ji,jj+1,jk,jp_sal,Kmm) )
Note: See TracChangeset
for help on using the changeset viewer.