- Timestamp:
- 2020-11-05T15:18:53+01:00 (4 years ago)
- Location:
- NEMO/branches/2020/dev_12905_xios_restart
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2020/dev_12905_xios_restart
- Property svn:externals
-
old new 3 3 ^/utils/build/mk@HEAD mk 4 4 ^/utils/tools@HEAD tools 5 ^/vendors/AGRIF/dev @HEADext/AGRIF5 ^/vendors/AGRIF/dev_r12970_AGRIF_CMEMS ext/AGRIF 6 6 ^/vendors/FCM@HEAD ext/FCM 7 7 ^/vendors/IOIPSL@HEAD ext/IOIPSL 8 8 9 9 # SETTE 10 ^/utils/CI/sette@ HEADsette10 ^/utils/CI/sette@13559 sette
-
- Property svn:externals
-
NEMO/branches/2020/dev_12905_xios_restart/src/OCE/LDF/ldftra.F90
r12489 r13727 95 95 !! * Substitutions 96 96 # include "do_loop_substitute.h90" 97 # include "domzgr_substitute.h90" 97 98 !!---------------------------------------------------------------------- 98 99 !! NEMO/OCE 4.0 , NEMO Consortium (2018) … … 245 246 ENDIF 246 247 ! 247 IF( ln_ldfeiv .AND. .NOT.( ln_traldf_iso .OR. ln_traldf_triad ) ) & 248 & CALL ctl_stop( 'ln_ldfeiv=T requires iso-neutral laplacian diffusion' ) 249 IF( ln_isfcav .AND. ln_traldf_triad ) & 250 & 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' ) 251 249 ! 252 250 IF( nldf_tra == np_lap_i .OR. nldf_tra == np_lap_it .OR. & … … 316 314 IF(lwp) WRITE(numout,*) ' ==>>> eddy diffusivity = F(i,j) read in eddy_diffusivity.nc file' 317 315 CALL iom_open( 'eddy_diffusivity_2D.nc', inum ) 318 CALL iom_get ( inum, jpdom_ data, 'ahtu_2D', ahtu(:,:,1))319 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 ) 320 318 CALL iom_close( inum ) 321 319 DO jk = 2, jpkm1 … … 344 342 IF(lwp) WRITE(numout,*) ' ==>>> eddy diffusivity = F(i,j,k) read in eddy_diffusivity.nc file' 345 343 CALL iom_open( 'eddy_diffusivity_3D.nc', inum ) 346 CALL iom_get ( inum, jpdom_ data, 'ahtu_3D', ahtu)347 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 ) 348 346 CALL iom_close( inum ) 349 347 ! … … 429 427 zaht_min = 0.2_wp * aht0 ! minimum value for aht 430 428 zDaht = aht0 - zaht_min 431 DO_2D _11_11429 DO_2D( 1, 1, 1, 1 ) 432 430 !!gm CAUTION : here we assume lat/lon grid in 20deg N/S band (like all ORCA cfg) 433 431 !! ==>>> The Coriolis value is identical for t- & u_points, and for v- and f-points … … 540 538 IF( ln_traldf_blp ) CALL ctl_stop( 'ldf_eiv_init: eddy induced velocity ONLY with laplacian diffusivity' ) 541 539 ! 540 IF( .NOT.( ln_traldf_iso .OR. ln_traldf_triad ) ) & 541 & CALL ctl_stop( 'ln_ldfeiv=T requires iso-neutral laplacian diffusion' ) 542 542 ! != allocate the aei arrays 543 543 ALLOCATE( aeiu(jpi,jpj,jpk), aeiv(jpi,jpj,jpk), STAT=ierr ) … … 571 571 IF(lwp) WRITE(numout,*) ' ==>>> eddy induced velocity coef. = F(i,j) read in eddy_diffusivity_2D.nc file' 572 572 CALL iom_open ( 'eddy_induced_velocity_2D.nc', inum ) 573 CALL iom_get ( inum, jpdom_ data, 'aeiu', aeiu(:,:,1))574 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 ) 575 575 CALL iom_close( inum ) 576 576 DO jk = 2, jpkm1 … … 595 595 IF(lwp) WRITE(numout,*) ' ==>>> eddy induced velocity coef. = F(i,j,k) read in eddy_diffusivity_3D.nc file' 596 596 CALL iom_open ( 'eddy_induced_velocity_3D.nc', inum ) 597 CALL iom_get ( inum, jpdom_ data, 'aeiu', aeiu)598 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 ) 599 599 CALL iom_close( inum ) 600 600 ! … … 647 647 ! ! Compute lateral diffusive coefficient at T-point 648 648 IF( ln_traldf_triad ) THEN 649 DO_3D _00_00(1, jpk )649 DO_3D( 0, 0, 0, 0, 1, jpk ) 650 650 ! Take the max of N^2 and zero then take the vertical sum 651 651 ! of the square root of the resulting N^2 ( required to compute … … 661 661 END_3D 662 662 ELSE 663 DO_3D _00_00(1, jpk )663 DO_3D( 0, 0, 0, 0, 1, jpk ) 664 664 ! Take the max of N^2 and zero then take the vertical sum 665 665 ! of the square root of the resulting N^2 ( required to compute … … 677 677 ENDIF 678 678 679 DO_2D _00_00679 DO_2D( 0, 0, 0, 0 ) 680 680 zfw = MAX( ABS( 2. * omega * SIN( rad * gphit(ji,jj) ) ) , 1.e-10 ) 681 681 ! Rossby radius at w-point taken betwenn 2 km and 40km … … 687 687 ! !== Bound on eiv coeff. ==! 688 688 z1_f20 = 1._wp / ( 2._wp * omega * sin( rad * 20._wp ) ) 689 DO_2D _00_00689 DO_2D( 0, 0, 0, 0 ) 690 690 zzaei = MIN( 1._wp, ABS( ff_t(ji,jj) * z1_f20 ) ) * zaeiw(ji,jj) ! tropical decrease 691 691 zaeiw(ji,jj) = MIN( zzaei , paei0 ) ! Max value = paei0 692 692 END_2D 693 CALL lbc_lnk( 'ldftra', zaeiw(:,:), 'W', 1. ) ! lateral boundary condition693 CALL lbc_lnk( 'ldftra', zaeiw(:,:), 'W', 1.0_wp ) ! lateral boundary condition 694 694 ! 695 DO_2D _00_00695 DO_2D( 0, 0, 0, 0 ) !== aei at u- and v-points ==! 696 696 paeiu(ji,jj,1) = 0.5_wp * ( zaeiw(ji,jj) + zaeiw(ji+1,jj ) ) * umask(ji,jj,1) 697 697 paeiv(ji,jj,1) = 0.5_wp * ( zaeiw(ji,jj) + zaeiw(ji ,jj+1) ) * vmask(ji,jj,1) 698 698 END_2D 699 CALL lbc_lnk_multi( 'ldftra', paeiu(:,:,1), 'U', 1. , paeiv(:,:,1), 'V', 1.) ! lateral boundary condition699 CALL lbc_lnk_multi( 'ldftra', paeiu(:,:,1), 'U', 1.0_wp , paeiv(:,:,1), 'V', 1.0_wp ) ! lateral boundary condition 700 700 701 701 DO jk = 2, jpkm1 !== deeper values equal the surface one ==! … … 749 749 zpsi_uw(:,:,jpk) = 0._wp ; zpsi_vw(:,:,jpk) = 0._wp 750 750 ! 751 DO_3D _10_10(2, jpkm1 )751 DO_3D( 1, 0, 1, 0, 2, jpkm1 ) 752 752 zpsi_uw(ji,jj,jk) = - r1_4 * e2u(ji,jj) * ( wslpi(ji,jj,jk ) + wslpi(ji+1,jj,jk) ) & 753 753 & * ( aeiu (ji,jj,jk-1) + aeiu (ji ,jj,jk) ) * wumask(ji,jj,jk) … … 756 756 END_3D 757 757 ! 758 DO_3D _10_10(1, jpkm1 )758 DO_3D( 1, 0, 1, 0, 1, jpkm1 ) 759 759 pu(ji,jj,jk) = pu(ji,jj,jk) - ( zpsi_uw(ji,jj,jk) - zpsi_uw(ji,jj,jk+1) ) 760 760 pv(ji,jj,jk) = pv(ji,jj,jk) - ( zpsi_vw(ji,jj,jk) - zpsi_vw(ji,jj,jk+1) ) 761 761 END_3D 762 DO_3D _00_00(1, jpkm1 )762 DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 763 763 pw(ji,jj,jk) = pw(ji,jj,jk) + ( zpsi_uw(ji,jj,jk) - zpsi_uw(ji-1,jj ,jk) & 764 764 & + zpsi_vw(ji,jj,jk) - zpsi_vw(ji ,jj-1,jk) ) … … 793 793 !!gm to be redesigned.... 794 794 ! !== eiv stream function: output ==! 795 CALL lbc_lnk_multi( 'ldftra', psi_uw, 'U', -1. , psi_vw, 'V', -1.)795 CALL lbc_lnk_multi( 'ldftra', psi_uw, 'U', -1.0_wp , psi_vw, 'V', -1.0_wp ) 796 796 ! 797 797 !!gm CALL iom_put( "psi_eiv_uw", psi_uw ) ! output … … 812 812 CALL iom_put( "voce_eiv", zw3d ) 813 813 ! 814 DO_3D _00_00( 1, jpkm1 )814 DO_3D( 0, 0, 0, 0, 1, jpkm1 ) ! e1 e2 w_eiv = dk[psix] + dk[psix] 815 815 zw3d(ji,jj,jk) = ( psi_vw(ji,jj,jk) - psi_vw(ji ,jj-1,jk) & 816 816 & + psi_uw(ji,jj,jk) - psi_uw(ji-1,jj ,jk) ) / e1e2t(ji,jj) 817 817 END_3D 818 CALL lbc_lnk( 'ldftra', zw3d, 'T', 1. ) ! lateral boundary condition818 CALL lbc_lnk( 'ldftra', zw3d, 'T', 1.0_wp ) ! lateral boundary condition 819 819 CALL iom_put( "woce_eiv", zw3d ) 820 820 ! … … 839 839 zw2d(:,:) = 0._wp 840 840 zw3d(:,:,:) = 0._wp 841 DO_3D _00_00(1, jpkm1 )841 DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 842 842 zw3d(ji,jj,jk) = zw3d(ji,jj,jk) + ( psi_uw(ji,jj,jk+1) - psi_uw(ji ,jj,jk) ) & 843 843 & * ( ts (ji,jj,jk,jp_tem,Kmm) + ts (ji+1,jj,jk,jp_tem,Kmm) ) 844 844 zw2d(ji,jj) = zw2d(ji,jj) + zw3d(ji,jj,jk) 845 845 END_3D 846 CALL lbc_lnk( 'ldftra', zw2d, 'U', -1. )847 CALL lbc_lnk( 'ldftra', zw3d, 'U', -1. )846 CALL lbc_lnk( 'ldftra', zw2d, 'U', -1.0_wp ) 847 CALL lbc_lnk( 'ldftra', zw3d, 'U', -1.0_wp ) 848 848 CALL iom_put( "ueiv_heattr" , zztmp * zw2d ) ! heat transport in i-direction 849 849 CALL iom_put( "ueiv_heattr3d", zztmp * zw3d ) ! heat transport in i-direction … … 860 860 zw2d(:,:) = 0._wp 861 861 zw3d(:,:,:) = 0._wp 862 DO_3D _00_00(1, jpkm1 )862 DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 863 863 zw3d(ji,jj,jk) = zw3d(ji,jj,jk) + ( psi_vw(ji,jj,jk+1) - psi_vw(ji,jj ,jk) ) & 864 864 & * ( ts (ji,jj,jk,jp_tem,Kmm) + ts (ji,jj+1,jk,jp_tem,Kmm) ) 865 865 zw2d(ji,jj) = zw2d(ji,jj) + zw3d(ji,jj,jk) 866 866 END_3D 867 CALL lbc_lnk( 'ldftra', zw2d, 'V', -1. )867 CALL lbc_lnk( 'ldftra', zw2d, 'V', -1.0_wp ) 868 868 CALL iom_put( "veiv_heattr", zztmp * zw2d ) ! heat transport in j-direction 869 869 CALL iom_put( "veiv_heattr", zztmp * zw3d ) ! heat transport in j-direction … … 875 875 zw2d(:,:) = 0._wp 876 876 zw3d(:,:,:) = 0._wp 877 DO_3D _00_00(1, jpkm1 )877 DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 878 878 zw3d(ji,jj,jk) = zw3d(ji,jj,jk) * ( psi_uw(ji,jj,jk+1) - psi_uw(ji ,jj,jk) ) & 879 879 & * ( ts (ji,jj,jk,jp_sal,Kmm) + ts (ji+1,jj,jk,jp_sal,Kmm) ) 880 880 zw2d(ji,jj) = zw2d(ji,jj) + zw3d(ji,jj,jk) 881 881 END_3D 882 CALL lbc_lnk( 'ldftra', zw2d, 'U', -1. )883 CALL lbc_lnk( 'ldftra', zw3d, 'U', -1. )882 CALL lbc_lnk( 'ldftra', zw2d, 'U', -1.0_wp ) 883 CALL lbc_lnk( 'ldftra', zw3d, 'U', -1.0_wp ) 884 884 CALL iom_put( "ueiv_salttr", zztmp * zw2d ) ! salt transport in i-direction 885 885 CALL iom_put( "ueiv_salttr3d", zztmp * zw3d ) ! salt transport in i-direction … … 887 887 zw2d(:,:) = 0._wp 888 888 zw3d(:,:,:) = 0._wp 889 DO_3D _00_00(1, jpkm1 )889 DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 890 890 zw3d(ji,jj,jk) = zw3d(ji,jj,jk) + ( psi_vw(ji,jj,jk+1) - psi_vw(ji,jj ,jk) ) & 891 891 & * ( ts (ji,jj,jk,jp_sal,Kmm) + ts (ji,jj+1,jk,jp_sal,Kmm) ) 892 892 zw2d(ji,jj) = zw2d(ji,jj) + zw3d(ji,jj,jk) 893 893 END_3D 894 CALL lbc_lnk( 'ldftra', zw2d, 'V', -1. )894 CALL lbc_lnk( 'ldftra', zw2d, 'V', -1.0_wp ) 895 895 CALL iom_put( "veiv_salttr", zztmp * zw2d ) ! salt transport in j-direction 896 896 CALL iom_put( "veiv_salttr", zztmp * zw3d ) ! salt transport in j-direction
Note: See TracChangeset
for help on using the changeset viewer.