Changeset 12861
- Timestamp:
- 2020-05-04T17:07:38+02:00 (3 years ago)
- Location:
- NEMO/branches/UKMO/NEMO_4.0.1_GM_rossby_radius_cutoff
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/UKMO/NEMO_4.0.1_GM_rossby_radius_cutoff/cfgs/SHARED/field_def_nemo-oce.xml
r11536 r12861 70 70 <field id="bn2" long_name="squared Brunt-Vaisala frequency" unit="s-1" grid_ref="grid_T_3D" /> 71 71 <field id="rhop" long_name="potential density (sigma0)" standard_name="sea_water_sigma_theta" unit="kg/m3" grid_ref="grid_T_3D" /> 72 <field id="RoRad" long_name="Rossby radius" unit="m" /> 72 73 73 74 <!-- Energy - horizontal divergence --> -
NEMO/branches/UKMO/NEMO_4.0.1_GM_rossby_radius_cutoff/src/OCE/LDF/ldftra.F90
r11715 r12861 84 84 LOGICAL , PUBLIC :: l_ldftra_time = .FALSE. !: flag for time variation of the lateral eddy diffusivity coef. 85 85 LOGICAL , PUBLIC :: l_ldfeiv_time = .FALSE. !: flag for time variation of the eiv coef. 86 LOGICAL , PUBLIC :: l_Ro_cutoff = .FALSE. !: flag for Rossby-radius cutoff in calcn of eiv coeff 86 87 87 88 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: ahtu, ahtv !: eddy diffusivity coef. at U- and V-points [m2/s] … … 408 409 !!---------------------------------------------------------------------- 409 410 ! 410 IF( ln_ldfeiv .AND. nn_aei_ijk_t == 21 ) THEN ! eddy induced velocity coefficients 411 IF( ln_ldfeiv .AND. ( nn_aei_ijk_t == 21 .OR. nn_aei_ijk_t == 22 ) ) THEN 412 ! ! eddy induced velocity coefficients 411 413 ! ! =F(growth rate of baroclinic instability) 412 414 ! ! max value aeiv_0 ; decreased to 0 within 20N-20S 413 CALL ldf_eiv( kt, aei0, aeiu, aeiv )415 CALL ldf_eiv( kt, aei0, aeiu, aeiv, l_Ro_cutoff ) 414 416 ENDIF 415 417 ! … … 424 426 ahtv(:,:,1) = aeiv(:,:,1) 425 427 ELSE ! compute aht. 426 CALL ldf_eiv( kt, aht0, ahtu, ahtv )428 CALL ldf_eiv( kt, aht0, ahtu, ahtv, .false. ) 427 429 ENDIF 428 430 ! … … 524 526 WRITE(numout,*) ' eiv streamfunction & velocity diag. ln_ldfeiv_dia = ', ln_ldfeiv_dia 525 527 WRITE(numout,*) ' coefficients :' 526 WRITE(numout,*) ' type of time-space variation nn_aei_ijk_t = ', nn_a ht_ijk_t528 WRITE(numout,*) ' type of time-space variation nn_aei_ijk_t = ', nn_aei_ijk_t 527 529 WRITE(numout,*) ' lateral diffusive velocity (if cst) rn_Ue = ', rn_Ue, ' m/s' 528 530 WRITE(numout,*) ' lateral diffusive length (if cst) rn_Le = ', rn_Le, ' m' … … 559 561 zah_max = zUfac * (ra*rad)**inn ! maximum reachable coefficient (value at the Equator) 560 562 563 l_Ro_cutoff = .FALSE. 561 564 SELECT CASE( nn_aei_ijk_t ) !* Specification of space-time variations 562 565 ! … … 597 600 l_ldfeiv_time = .TRUE. ! will be calculated by call to ldf_tra routine in step.F90 598 601 ! 602 CASE( 22 ) !-- time varying 2D field with cutoff --! 603 IF(lwp) WRITE(numout,*) ' ==>>> eddy induced velocity coef. = F( latitude, longitude, time )' 604 IF(lwp) WRITE(numout,*) ' = F( growth rate of baroclinic instability )' 605 IF(lwp) WRITE(numout,*) ' maximum allowed value: aei0 = ', aei0, ' m2/s' 606 IF(lwp) WRITE(numout,*) ' Applied only where Rossby radius resolved by 2.dx' 607 ! 608 l_Ro_cutoff = .TRUE. 609 l_ldfeiv_time = .TRUE. ! will be calculated by call to ldf_tra routine in step.F90 610 ! 599 611 CASE( -30 ) !-- fixed 3D shape read in file --! 600 612 IF(lwp) WRITE(numout,*) ' ==>>> eddy induced velocity coef. = F(i,j,k) read in eddy_diffusivity_3D.nc file' … … 625 637 626 638 627 SUBROUTINE ldf_eiv( kt, paei0, paeiu, paeiv )639 SUBROUTINE ldf_eiv( kt, paei0, paeiu, paeiv, l_Ro_cutoff ) 628 640 !!---------------------------------------------------------------------- 629 641 !! *** ROUTINE ldf_eiv *** … … 639 651 REAL(wp) , INTENT(inout) :: paei0 ! max value [m2/s] 640 652 REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(inout) :: paeiu, paeiv ! eiv coefficient [m2/s] 653 LOGICAL , INTENT(in ) :: l_Ro_cutoff ! Rossby radius cutoff yes/no 641 654 ! 642 655 INTEGER :: ji, jj, jk ! dummy loop indices 643 656 REAL(wp) :: zfw, ze3w, zn2, z1_f20, zaht, zaht_min, zzaei ! local scalars 644 REAL(wp), DIMENSION(jpi,jpj) :: zn, zah, zhw, zRo, z aeiw ! 2D workspace657 REAL(wp), DIMENSION(jpi,jpj) :: zn, zah, zhw, zRo, zRo_lim, zaeiw ! 2D workspace 645 658 !!---------------------------------------------------------------------- 646 659 ! … … 649 662 zah(:,:) = 0._wp 650 663 zRo(:,:) = 0._wp 664 zRo_lim(:,:) = 0._wp 651 665 ! ! Compute lateral diffusive coefficient at T-point 652 666 IF( ln_traldf_triad ) THEN … … 692 706 DO ji = fs_2, fs_jpim1 ! vector opt. 693 707 zfw = MAX( ABS( 2. * omega * SIN( rad * gphit(ji,jj) ) ) , 1.e-10 ) 694 ! Rossby radius at w-point taken betwenn 2 km and 40km 695 zRo(ji,jj) = MAX( 2.e3 , MIN( .4 * zn(ji,jj) / zfw, 40.e3 ) ) 708 ! Rossby radius at w-point taken between 2 km and 40km 709 zRo(ji,jj) = .4 * zn(ji,jj) / zfw 710 zRo_lim(ji,jj) = MAX( 2.e3 , MIN( zRo(ji,jj), 40.e3 ) ) 696 711 ! Compute aeiw by multiplying Ro^2 and T^-1 697 zaeiw(ji,jj) = zRo (ji,jj) * zRo(ji,jj) * SQRT( zah(ji,jj) / zhw(ji,jj) ) * tmask(ji,jj,1)698 END DO 699 END DO 700 712 zaeiw(ji,jj) = zRo_lim(ji,jj) * zRo_lim(ji,jj) * SQRT( zah(ji,jj) / zhw(ji,jj) ) * tmask(ji,jj,1) 713 END DO 714 END DO 715 CALL iom_put('RossRad',zRo) 701 716 ! !== Bound on eiv coeff. ==! 702 717 z1_f20 = 1._wp / ( 2._wp * omega * sin( rad * 20._wp ) ) … … 704 719 DO ji = fs_2, fs_jpim1 ! vector opt. 705 720 zzaei = MIN( 1._wp, ABS( ff_t(ji,jj) * z1_f20 ) ) * zaeiw(ji,jj) ! tropical decrease 706 zaeiw(ji,jj) = MIN( zzaei , paei0 ) ! Max value = paei0 721 ! JD : modifications here to introduce scaling by local rossby radius of deformation vs local grid scale 722 ! arbitrary decision that GM is de-activated if local rossy radius larger than 2 times local grid scale 723 ! based on Hallberg (2013) 724 IF ( l_Ro_cutoff .AND. zRo(ji,jj) >= ( 2._wp * MIN( e1t(ji,jj), e2t(ji,jj) ) ) ) THEN 725 ! 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 707 730 END DO 708 731 END DO
Note: See TracChangeset
for help on using the changeset viewer.