- Timestamp:
- 2020-06-02T09:03:47+02:00 (3 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/UKMO/NEMO_4.0.1_GM_rossby_radius_cutoff/src/OCE/LDF/ldftra.F90
r12861 r13002 72 72 REAL(wp), PUBLIC :: rn_Ue !: lateral diffusive velocity [m/s] 73 73 REAL(wp), PUBLIC :: rn_Le !: lateral diffusive length [m] 74 INTEGER, PUBLIC :: nn_ldfeiv_shape !: shape of bounding coefficient (Treguier et al formulation only) 74 75 75 76 ! ! Flag to control the type of lateral diffusive operator … … 503 504 !! 504 505 NAMELIST/namtra_eiv/ ln_ldfeiv , ln_ldfeiv_dia, & ! eddy induced velocity (eiv) 505 & nn_aei_ijk_t, rn_Ue, rn_Le ! eiv coefficient 506 & nn_aei_ijk_t, rn_Ue, rn_Le, & ! eiv coefficient 507 & nn_ldfeiv_shape 506 508 !!---------------------------------------------------------------------- 507 509 ! … … 597 599 IF(lwp) WRITE(numout,*) ' = F( growth rate of baroclinic instability )' 598 600 IF(lwp) WRITE(numout,*) ' maximum allowed value: aei0 = ', aei0, ' m2/s' 601 IF(lwp) WRITE(numout,*) ' shape of bounding coefficient : ',nn_ldfeiv_shape 599 602 ! 600 603 l_ldfeiv_time = .TRUE. ! will be calculated by call to ldf_tra routine in step.F90 … … 654 657 ! 655 658 INTEGER :: ji, jj, jk ! dummy loop indices 656 REAL(wp) :: zfw, ze3w, zn2, z1_f20, zaht, zaht_min, zzaei ! local scalars657 REAL(wp), DIMENSION(jpi,jpj) :: zn, zah, zhw, zRo, zRo_lim, zaeiw ! 2D workspace659 REAL(wp) :: zfw, ze3w, zn2, z1_f20, zaht, zaht_min, zzaei, z2_3 ! local scalars 660 REAL(wp), DIMENSION(jpi,jpj) :: zn, zah, zhw, zRo, zRo_lim, zaeiw, zratio ! 2D workspace 658 661 !!---------------------------------------------------------------------- 659 662 ! … … 713 716 END DO 714 717 END DO 718 IF( iom_use('N_2d') ) CALL iom_put('N_2d',zn(:,:)/ht_0(:,:)) 715 719 CALL iom_put('RossRad',zRo) 716 720 ! !== Bound on eiv coeff. ==! 717 721 z1_f20 = 1._wp / ( 2._wp * omega * sin( rad * 20._wp ) ) 722 z2_3 = 2._wp/3._wp 718 723 DO jj = 2, jpjm1 719 724 DO ji = fs_2, fs_jpim1 ! vector opt. 720 725 zzaei = MIN( 1._wp, ABS( ff_t(ji,jj) * z1_f20 ) ) * zaeiw(ji,jj) ! tropical decrease 726 zaeiw(ji,jj) = MIN( zzaei, paei0 ) 727 END DO 728 END DO 729 730 !! temporary fudge for diagnostic purposes: 731 !! zaeiw(:,:) = paei0 732 733 SELECT CASE(nn_ldfeiv_shape) 734 CASE(1) !! Abrupt cut-off on Rossby radius: 721 735 ! JD : modifications here to introduce scaling by local rossby radius of deformation vs local grid scale 722 736 ! arbitrary decision that GM is de-activated if local rossy radius larger than 2 times local grid scale 723 737 ! based on Hallberg (2013) 724 IF ( l_Ro_cutoff .AND. zRo(ji,jj) >= ( 2._wp * MIN( e1t(ji,jj), e2t(ji,jj) ) ) ) THEN 738 DO jj = 2, jpjm1 739 DO ji = fs_2, fs_jpim1 ! vector opt. 740 IF ( l_Ro_cutoff .AND. zRo(ji,jj) >= ( 2._wp * MIN( e1t(ji,jj), e2t(ji,jj) ) ) ) THEN 725 741 ! TODO : use a version of zRo that integrates over a few time steps ? 726 zaeiw(ji,jj) = 0._wp 727 ELSE 728 zaeiw(ji,jj) = MIN( zzaei, paei0 ) 729 ENDIF 730 END DO 731 END DO 742 zaeiw(ji,jj) = 0._wp 743 ELSE 744 zaeiw(ji,jj) = MIN( zaeiw(ji,jj), paei0 ) 745 ENDIF 746 END DO 747 END DO 748 749 CASE(2) !! Rossby radius ramp type 1: 750 DO jj = 2, jpjm1 751 DO ji = fs_2, fs_jpim1 ! vector opt. 752 zratio(ji,jj) = zRo(ji,jj)/MIN(e1t(ji,jj),e2t(ji,jj)) 753 zaeiw(ji,jj) = MIN( zaeiw(ji,jj), MAX( 0._wp, MIN( 1._wp, z2_3*(2._wp - zratio(ji,jj)) ) ) * paei0 ) 754 END DO 755 END DO 756 CALL iom_put('RR_GS',zratio) 757 758 CASE(3) !! Rossby radius ramp type 2: 759 DO jj = 2, jpjm1 760 DO ji = fs_2, fs_jpim1 ! vector opt. 761 zratio(ji,jj) = MIN(e1t(ji,jj),e2t(ji,jj))/zRo(ji,jj) 762 zaeiw(ji,jj) = MIN( zaeiw(ji,jj), MAX( 0._wp, MIN( 1._wp, z2_3*( zratio(ji,jj) - 0.5_wp ) ) ) * paei0 ) 763 END DO 764 END DO 765 CALL iom_put('GS_RR',zratio) 766 767 END SELECT 768 732 769 CALL lbc_lnk( 'ldftra', zaeiw(:,:), 'W', 1. ) ! lateral boundary condition 733 770 !
Note: See TracChangeset
for help on using the changeset viewer.