New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
Changeset 10167 – NEMO

Changeset 10167


Ignore:
Timestamp:
2018-10-03T15:52:45+02:00 (6 years ago)
Author:
jchanut
Message:

ztilde update, #2126: Add diagnostics

Location:
NEMO/branches/2018/dev_r10057_ENHANCE03_ZTILDE
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2018/dev_r10057_ENHANCE03_ZTILDE/cfgs/SHARED/field_def_nemo-oce.xml

    r10164 r10167  
    2424        <field id="e3t_star"     long_name="Barotropic T-cell thickness anomaly" standard_name="barotropic_cell_thickness_anomaly" unit="m"   grid_ref="grid_T_3D" /> 
    2525        <field id="e3t_tilde"    long_name="Baroclinic T-cell thickness anomaly" standard_name="baroclinic_cell_thickness_anomaly" unit="m"   grid_ref="grid_T_3D" /> 
     26        <field id="stiff_tilde"  long_name="Vertical grid stiffness"             operation="maximum" unit=" "   /> 
     27        <field id="dh_tilde"     long_name="Vertical grid horiz. Laplacian"      operation="maximum" unit=" "   /> 
     28        <field id="dz_tilde"     long_name="Vertical grid vert. Laplacian"       operation="maximum" unit=" "   /> 
    2629        <field id="e3t_0"        long_name="Initial T-cell thickness"            standard_name="ref_cell_thickness" unit="m"   grid_ref="grid_T_3D" /> 
    2730 
     
    354357        <field id="uocet"        long_name="ocean transport along i-axis times temperature (CRS)"                                               unit="degC*m/s"   grid_ref="grid_U_3D" /> 
    355358        <field id="uoces"        long_name="ocean transport along i-axis times salinity (CRS)"                                                  unit="1e-3*m/s"   grid_ref="grid_U_3D" /> 
     359        <field id="un_lf_tilde"  long_name="Low frequency current along i-axis"                                                                 unit="m/s"   grid_ref="grid_U_3D" /> 
    356360 
    357361        <!-- u-eddy diffusivity coefficients (available if ln_traldf_OFF=F) --> 
     
    408412        <field id="vocet"        long_name="ocean transport along j-axis times temperature (CRS)"                                               unit="degC*m/s"   grid_ref="grid_V_3D" /> 
    409413        <field id="voces"        long_name="ocean transport along j-axis times salinity (CRS)"                                                  unit="1e-3*m/s"   grid_ref="grid_V_3D" /> 
     414        <field id="vn_lf_tilde"  long_name="Low frequency current along j-axis"                                                                 unit="m/s"        grid_ref="grid_V_3D" /> 
    410415 
    411416        <!-- v-eddy diffusivity coefficients (available if ln_traldf_OFF=F) --> 
     
    454459        <field id="woce"         long_name="ocean vertical velocity"                       standard_name="upward_sea_water_velocity"              unit="m/s"  /> 
    455460        <field id="wocetr_eff"   long_name="effective ocean vertical transport"                                                                   unit="m3/s" /> 
     461        <field id="depw_tilde"   long_name="Baroclinic interface anomaly"                  standard_name="interface_anomaly"                      unit="m"    /> 
    456462 
    457463        <!-- woce_eiv: available with EIV  (ln_ldfeiv=T and ln_ldfeiv_dia=T)  --> 
  • NEMO/branches/2018/dev_r10057_ENHANCE03_ZTILDE/src/OCE/DIA/diawri.F90

    r10164 r10167  
    5858   USE diurnal_bulk    ! diurnal warm layer 
    5959   USE cool_skin       ! Cool skin 
    60    USE domvvl 
    6160 
    6261   IMPLICIT NONE 
     
    134133      CALL iom_put( "e3w" , e3w_n(:,:,:) ) 
    135134      ! 
    136       IF ( (ln_vvl_ztilde).OR.(ln_vvl_layer) ) THEN 
    137          IF( iom_use("e3t_star") ) THEN    ! Barotropic cell thickness anomaly 
    138             z3d(:,:,:) = (e3t_n(:,:,:)-tilde_e3t_n(:,:,:)-e3t_0(:,:,:))*tmask(:,:,:)  
    139             CALL iom_put( "e3t_star" , z3d(:,:,:) ) 
    140          ENDIF 
    141          IF( iom_use("e3t_tilde") )  THEN  ! Baroclinic cell thickness anomaly 
    142             CALL iom_put( "e3t_tilde" , tilde_e3t_n(:,:,:) ) 
    143          ENDIF 
    144       ENDIF 
    145  
    146135      IF( iom_use("e3tdef") )   & 
    147136         CALL iom_put( "e3tdef"  , ( ( e3t_n(:,:,:) - e3t_0(:,:,:) ) / e3t_0(:,:,:) * 100 * tmask(:,:,:) ) ** 2 ) 
  • NEMO/branches/2018/dev_r10057_ENHANCE03_ZTILDE/src/OCE/DOM/domvvl.F90

    r10164 r10167  
    230230            frq_rst_e3t(:,:) = 0.0_wp  
    231231            frq_rst_hdv(:,:) = 1.0_wp / rdt 
     232            rn_lf_cutoff     = 2.0_wp * rpi * rdt / 86400._wp 
    232233            tildemask(:,:) = 0._wp 
    233234         ENDIF 
     
    289290      IF( ln_vvl_layer ) THEN 
    290291         IF ( ln_vvl_zstar_on_shelf ) THEN 
    291             zhmin = 100._wp 
    292             zhmax = 150._wp 
     292            zhmin = 50._wp 
     293            zhmax = 100._wp 
    293294            DO jj = 1, jpj 
    294295               DO ji = 1, jpi 
     
    10001001         ht_n(:,:) = ht_n(:,:) + e3t_n(:,:,jk) * tmask(:,:,jk) 
    10011002      END DO 
     1003 
     1004      ! Output some diagnostics: 
     1005      ! ------------------------ 
     1006      IF (ln_vvl_ztilde .OR. ln_vvl_layer)  CALL dom_vvl_dia( kt ) 
    10021007 
    10031008      ! write restart file 
     
    25132518   END SUBROUTINE nonosc_2d 
    25142519 
     2520   SUBROUTINE dom_vvl_dia( kt ) 
     2521      !!---------------------------------------------------------------------- 
     2522      !!                ***  ROUTINE dom_vvl_dia  *** 
     2523      !!                    
     2524      !! ** Purpose :  Output some diagnostics in ztilde/zlayer cases 
     2525      !! 
     2526      !!---------------------------------------------------------------------- 
     2527      !! * Arguments 
     2528      INTEGER, INTENT( in )               :: kt       ! time step 
     2529      !! * Local declarations 
     2530      INTEGER                             :: ji,jj,jk,jkbot ! dummy loop indices 
     2531      REAL(wp)                            :: ztmp1 
     2532      REAL(wp), DIMENSION(4)              :: zr1 
     2533      REAL(wp), DIMENSION(jpi,jpj       ) :: zout2d 
     2534      REAL(wp), DIMENSION(jpi,jpj,jpk)    :: zwdw, zout 
     2535      !!---------------------------------------------------------------------- 
     2536      IF( ln_timing )  CALL timing_start('dom_vvl_dia') 
     2537      ! 
     2538      ! Compute internal interfaces depths: 
     2539      !------------------------------------ 
     2540      IF ( iom_use("dh_tilde").OR.iom_use("depw_tilde").OR.iom_use("stiff_tilde")) THEN 
     2541         zwdw(:,:,1) = 0.e0 
     2542         DO jj = 1, jpj 
     2543            DO ji = 1, jpi 
     2544               DO jk = 2, jpkm1 
     2545                  zwdw(ji,jj,jk) =  zwdw(ji,jj,jk-1) + &  
     2546                                 & (tilde_e3t_n(ji,jj,jk-1)+e3t_0(ji,jj,jk-1)) * tmask(ji,jj,jk-1) 
     2547               END DO 
     2548            END DO 
     2549         END DO 
     2550      ENDIF 
     2551      ! 
     2552      ! Output interface depth anomaly: 
     2553      ! ------------------------------- 
     2554      IF ( iom_use("depw_tilde") ) CALL iom_put( "depw_tilde", (zwdw(:,:,:)-gdepw_0(:,:,:))*tmask(:,:,:) ) 
     2555      ! 
     2556      ! Output grid stiffness (T-points): 
     2557      ! --------------------------------- 
     2558      IF ( iom_use("stiff_tilde"  ) ) THEN 
     2559         zr1(:)   = 0.e0 
     2560         zout(:,:,:) = 0.e0    
     2561         zout2d(:,:) = 0.e0    
     2562         DO ji = 2, jpim1 
     2563            DO jj = 2, jpjm1 
     2564               ! Exclude last level because of partial bottom cells 
     2565               jkbot = MIN(mbkt(ji,jj)-1,mbkt(ji-1,jj)-1,mbkt(ji+1,jj)-1,mbkt(ji,jj-1)-1,mbkt(ji,jj+1)-1) 
     2566               DO jk = 1, jkbot 
     2567                  zr1(1) = umask(ji-1,jj  ,jk) *abs( (zwdw(ji  ,jj  ,jk  )-zwdw(ji-1,jj  ,jk  )  &  
     2568                       &                             +zwdw(ji  ,jj  ,jk+1)-zwdw(ji-1,jj  ,jk+1)) & 
     2569                       &                            /(zwdw(ji  ,jj  ,jk  )+zwdw(ji-1,jj  ,jk  )  & 
     2570                       &                             -zwdw(ji  ,jj  ,jk+1)-zwdw(ji-1,jj  ,jk+1) + rsmall) ) 
     2571                  zr1(2) = umask(ji  ,jj  ,jk) *abs( (zwdw(ji+1,jj  ,jk  )-zwdw(ji  ,jj  ,jk  )  & 
     2572                       &                             +zwdw(ji+1,jj  ,jk+1)-zwdw(ji  ,jj  ,jk+1)) & 
     2573                       &                            /(zwdw(ji+1,jj  ,jk  )+zwdw(ji  ,jj  ,jk  )  & 
     2574                       &                             -zwdw(ji+1,jj  ,jk+1)-zwdw(ji  ,jj  ,jk+1) + rsmall) ) 
     2575                  zr1(3) = vmask(ji  ,jj  ,jk) *abs( (zwdw(ji  ,jj+1,jk  )-zwdw(ji  ,jj  ,jk  )  & 
     2576                       &                             +zwdw(ji  ,jj+1,jk+1)-zwdw(ji  ,jj  ,jk+1)) & 
     2577                       &                            /(zwdw(ji  ,jj+1,jk  )+zwdw(ji  ,jj  ,jk  )  & 
     2578                       &                             -zwdw(ji  ,jj+1,jk+1)-zwdw(ji  ,jj  ,jk+1) + rsmall) ) 
     2579                  zr1(4) = vmask(ji  ,jj-1,jk) *abs( (zwdw(ji  ,jj  ,jk  )-zwdw(ji  ,jj-1,jk  )  & 
     2580                       &                             +zwdw(ji  ,jj  ,jk+1)-zwdw(ji  ,jj-1,jk+1)) & 
     2581                       &                            /(zwdw(ji  ,jj  ,jk  )+zwdw(ji  ,jj-1,jk  )  & 
     2582                       &                             -zwdw(ji,  jj  ,jk+1)-zwdw(ji  ,jj-1,jk+1) + rsmall) ) 
     2583                  ztmp1 = MAXVAL( zr1(1:4) ) 
     2584                  zout(ji,jj,jk) = ztmp1 
     2585                  zout2d(ji,jj)  = MAX( zout2d(ji,jj), ztmp1 ) 
     2586               END DO 
     2587            END DO 
     2588         END DO 
     2589         CALL lbc_lnk( zout2d(:,:), 'T', 1. ) 
     2590         CALL iom_put( "stiff_tilde", zout2d(:,:) )  
     2591      END IF 
     2592      ! Output Horizontal Laplacian of interfaces depths (W-points): 
     2593      ! ------------------------------------------------------------ 
     2594      IF ( iom_use("dh_tilde")   ) THEN 
     2595         ! 
     2596         zout(:,:,1  )=0._wp 
     2597         zout(:,:,:)=0._wp 
     2598         DO jk = 2, jpkm1 
     2599            DO jj = 1, jpjm1 
     2600               DO ji = 1, fs_jpim1   ! vector opt.                   
     2601                  ua(ji,jj,jk) =  umask(ji,jj,jk) * e2_e1u(ji,jj) & 
     2602                                  &  * ( zwdw(ji,jj,jk) - zwdw(ji+1,jj  ,jk) ) 
     2603                  va(ji,jj,jk) =  vmask(ji,jj,jk) * e1_e2v(ji,jj) &  
     2604                                  &  * ( zwdw(ji,jj,jk) - zwdw(ji  ,jj+1,jk) ) 
     2605               END DO 
     2606            END DO 
     2607         END DO 
     2608             
     2609         DO jk = 2, jpkm1 
     2610            DO jj = 2, jpjm1 
     2611               DO ji = fs_2, fs_jpim1   ! vector opt. 
     2612                  ztmp1 = ( (ua(ji-1,jj  ,jk) - ua(ji,jj,jk))    & 
     2613                     &  +   (va(ji  ,jj-1,jk) - va(ji,jj,jk)) ) * SQRT(r1_e1e2t(ji,jj)) 
     2614                  zout(ji,jj,jk) = ABS(ztmp1)*tmask(ji,jj,jk)            
     2615               END DO 
     2616            END DO 
     2617         END DO  
     2618         ! Mask open boundaries: 
     2619#if defined key_bdy 
     2620         IF (lk_bdy) THEN 
     2621            DO jk = 1, jpkm1 
     2622               zout(:,:,jk) = zout(:,:,jk) * bdytmask(:,:) 
     2623            END DO 
     2624         ENDIF 
     2625#endif 
     2626         zout2d(:,:) = 0.e0  
     2627         DO jk=1,jpkm1 
     2628            zout2d(:,:) = max( zout2d(:,:), zout(:,:,jk)) 
     2629         END DO 
     2630         CALL lbc_lnk( zout2d(:,:), 'T', 1. ) 
     2631         ! 
     2632         CALL iom_put( "dh_tilde", zout2d(:,:) ) 
     2633      ENDIF 
     2634      ! 
     2635      ! Output vertical Laplacian of interfaces depths (W-points): 
     2636      ! ---------------------------------------------------------- 
     2637      IF ( iom_use("dz_tilde"  ) ) THEN 
     2638         zout(:,:,1  ) = 0._wp 
     2639         zout(:,:,:) = 0._wp 
     2640         DO ji = 2, jpim1 
     2641            DO jj = 2, jpjm1 
     2642               DO jk=2,mbkt(ji,jj)-1 
     2643                  zout(ji,jj,jk) = 2._wp*ABS(tilde_e3t_n(ji,jj,jk)+e3t_0(ji,jj,jk)-tilde_e3t_n(ji,jj,jk-1)-e3t_0(ji,jj,jk-1)) &  
     2644                                  &   /(tilde_e3t_n(ji,jj,jk)+e3t_0(ji,jj,jk)+tilde_e3t_n(ji,jj,jk-1)+e3t_0(ji,jj,jk-1)) & 
     2645                                  &   * tmask(ji,jj,jk) 
     2646               END DO  
     2647            END DO 
     2648         END DO 
     2649         zout2d(:,:) = 0.e0  
     2650         DO jk=1,jpkm1 
     2651            zout2d(:,:) = max( zout2d(:,:), zout(:,:,jk)) 
     2652         END DO 
     2653         CALL lbc_lnk( zout2d(:,:), 'T', 1. ) 
     2654         CALL iom_put( "dz_tilde", zout2d(:,:) )  
     2655 
     2656      END IF 
     2657      ! 
     2658      ! 
     2659      ! Output low pass U-velocity: 
     2660      ! --------------------------- 
     2661      IF ( iom_use("un_lf_tilde"  ).AND.ln_vvl_ztilde ) THEN 
     2662         zout(:,:,jpk) = 0.e0   
     2663         DO jk=1,jpkm1 
     2664            zout(:,:,jk) = un_lf(:,:,jk,1)/e3u_n(:,:,jk)*r1_e2u(:,:) 
     2665         END DO 
     2666         CALL iom_put( "un_lf_tilde", zout(:,:,:) ) 
     2667      END IF 
     2668      ! 
     2669      ! Output low pass V-velocity: 
     2670      ! --------------------------- 
     2671      IF ( iom_use("vn_lf_tilde"  ).AND.ln_vvl_ztilde ) THEN 
     2672         zout(:,:,jpk) = 0.e0   
     2673         DO jk=1,jpkm1 
     2674            zout(:,:,jk) = vn_lf(:,:,jk,1)/e3v_n(:,:,jk)*r1_e1v(:,:) 
     2675         END DO 
     2676         CALL iom_put( "vn_lf_tilde", zout(:,:,:) ) 
     2677      END IF    
     2678      ! 
     2679      ! Barotropic cell thickness anomaly: 
     2680      ! ----------------------------------  
     2681      IF( iom_use("e3t_star") ) THEN 
     2682         zout(:,:,:) = (e3t_n(:,:,:)-tilde_e3t_n(:,:,:)-e3t_0(:,:,:))*tmask(:,:,:)  
     2683         CALL iom_put( "e3t_star" , zout(:,:,:) ) 
     2684      ENDIF 
     2685      ! 
     2686      ! Baroclinic cell thickness anomaly: 
     2687      ! ----------------------------------  
     2688      IF( iom_use("e3t_tilde") )  THEN 
     2689         CALL iom_put( "e3t_tilde" , tilde_e3t_n(:,:,:) ) 
     2690      ENDIF 
     2691      ! 
     2692      IF( ln_timing )  CALL timing_stop('dom_vvl_dia') 
     2693      ! 
     2694   END SUBROUTINE dom_vvl_dia 
     2695 
    25152696   !!====================================================================== 
    25162697END MODULE domvvl 
Note: See TracChangeset for help on using the changeset viewer.