Changeset 13161


Ignore:
Timestamp:
2020-06-26T15:02:13+02:00 (6 weeks ago)
Author:
davestorkey
Message:

UKMO/NEMO_4.0.1_GM_rossby_radius_cutoff : new control structure, new diagnostics and new bathymetric ramp option.

Location:
NEMO/branches/UKMO/NEMO_4.0.1_GM_rossby_radius_cutoff
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/UKMO/NEMO_4.0.1_GM_rossby_radius_cutoff/cfgs/SHARED/field_def_nemo-oce.xml

    r13002 r13161  
    7272        <field id="N_2d"         long_name="Depth-mean N"                                                              unit="m/s" /> 
    7373        <field id="RossRad"      long_name="Rossby radius"                                                             unit="m" /> 
     74        <field id="RossRadlim"   long_name="Rossby radius (limited)"                                                   unit="m" /> 
     75        <field id="Tclinic_recip" long_name="recip of baroclinic timescale"                                            unit="s-1" /> 
    7476        <field id="RR_GS"        long_name="Rossby radius / min(dx,dy)"                                                unit="1" /> 
    75         <field id="GS_RR"        long_name="min(dx,dy) / Rossby radius"                                                unit="1" /> 
    7677 
    7778        <!-- Energy - horizontal divergence --> 
  • NEMO/branches/UKMO/NEMO_4.0.1_GM_rossby_radius_cutoff/src/OCE/DIA/diawri.F90

    r11715 r13161  
    391391      CALL iom_put( "bn2", rn2 )                      ! Brunt-Vaisala buoyancy frequency (N^2) 
    392392      ! 
     393      IF( (.NOT.l_ldfeiv_time) .AND. ( iom_use('RossRad')  .OR. iom_use('RossRadlim') & 
     394            &                     .OR. iom_use('TclinicR') .OR. iom_use('RR_GG')      & 
     395            &                     .OR. iom_use('aeiu_2d')  .OR. iom_use('aeiv_2d') ) ) THEN 
     396         CALL ldf_eiv(kt, 75.0, z2d, z3d(:,:,1)) 
     397         CALL iom_put('aeiu_2d', z2d) 
     398         CALL iom_put('aeiv_2d', z3d(:,:,1)) 
     399      ENDIF 
    393400 
    394401      IF (ln_diatmb)   CALL dia_tmb                   ! tmb values  
  • NEMO/branches/UKMO/NEMO_4.0.1_GM_rossby_radius_cutoff/src/OCE/LDF/ldftra.F90

    r13038 r13161  
    426426            ahtv(:,:,1) = aeiv(:,:,1) 
    427427         ELSE                                            ! compute aht.  
    428             CALL ldf_eiv( kt, aht0, ahtu, ahtv, .false. ) 
     428            CALL ldf_eiv( kt, aht0, ahtu, ahtv ) 
    429429         ENDIF 
    430430         ! 
     
    641641      !!---------------------------------------------------------------------- 
    642642      INTEGER                         , INTENT(in   ) ::   kt             ! ocean time-step index 
    643       REAL(wp)                        , INTENT(inout) ::   paei0          ! max value            [m2/s] 
     643      REAL(wp)                        , INTENT(in   ) ::   paei0          ! max value            [m2/s] 
    644644      REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(inout) ::   paeiu, paeiv   ! eiv coefficient      [m2/s] 
    645645      ! 
    646646      INTEGER  ::   ji, jj, jk    ! dummy loop indices 
    647647      REAL(wp) ::   zfw, ze3w, zn2, z1_f20, zaht, zaht_min, zzaei, z2_3    ! local scalars 
    648       REAL(wp), DIMENSION(jpi,jpj) ::   zn, zah, zhw, zRo, zRo_lim, zaeiw, zratio   ! 2D workspace 
     648      REAL(wp), DIMENSION(jpi,jpj) ::   zn, zah, zhw, zRo, zRo_lim, zTclinic_recip, zaeiw, zratio   ! 2D workspace 
    649649      !!---------------------------------------------------------------------- 
    650650      ! 
     
    654654      zRo(:,:) = 0._wp 
    655655      zRo_lim(:,:) = 0._wp 
     656      zTclinic_recip(:,:) = 0._wp 
     657      zratio(:,:) = 0._wp  
     658      zaeiw(:,:) = 0._wp     
    656659      !                       ! Compute lateral diffusive coefficient at T-point 
    657660      IF( ln_traldf_triad ) THEN 
     
    701704            zRo_lim(ji,jj) = MAX(  2.e3 , MIN( zRo(ji,jj), 40.e3 )  ) 
    702705            ! Compute aeiw by multiplying Ro^2 and T^-1 
    703             zaeiw(ji,jj) = zRo_lim(ji,jj) * zRo_lim(ji,jj) * SQRT( zah(ji,jj) / zhw(ji,jj) ) * tmask(ji,jj,1) 
    704          END DO 
    705       END DO 
    706       IF( iom_use('N_2d') ) CALL iom_put('N_2d',zn(:,:)/ht_0(:,:)) 
     706            zTclinic_recip(ji,jj) = SQRT( MAX(zah(ji,jj),0._wp) / zhw(ji,jj) ) * tmask(ji,jj,1) 
     707            zaeiw(ji,jj) = zRo_lim(ji,jj) * zRo_lim(ji,jj) * zTclinic_recip(ji,jj)  
     708         END DO 
     709      END DO 
     710      IF( iom_use('N_2d') ) CALL iom_put('N_2d',zn(:,:)/zhw(:,:)) 
    707711      CALL iom_put('RossRad',zRo) 
     712      CALL iom_put('RossRadlim',zRo_lim) 
     713      CALL iom_put('Tclinic_recip',zTclinic_recip) 
    708714      !                                         !==  Bound on eiv coeff.  ==! 
    709715      z1_f20 = 1._wp / (  2._wp * omega * sin( rad * 20._wp )  ) 
     
    748754               END DO 
    749755            END DO 
    750             CALL iom_put('GS_RR',zratio) 
     756 
     757         CASE(4) !! bathymetry ramp: 
     758            DO jj = 2, jpjm1 
     759               DO ji = fs_2, fs_jpim1   ! vector opt. 
     760                  zaeiw(ji,jj) = MIN( zaeiw(ji,jj), MAX( 0._wp, MIN( 1._wp, 0.001*(ht_0(ji,jj) - 2000._wp) ) ) * paei0 ) 
     761               END DO 
     762            END DO 
    751763 
    752764      END SELECT 
     
    766778         paeiv(:,:,jk) = paeiv(:,:,1) * vmask(:,:,jk) 
    767779      END DO 
    768       !   
     780      ! 
    769781   END SUBROUTINE ldf_eiv 
    770782 
Note: See TracChangeset for help on using the changeset viewer.