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 14971 – NEMO

Changeset 14971


Ignore:
Timestamp:
2021-06-11T10:22:51+02:00 (3 years ago)
Author:
jchanut
Message:

#2638, keep up with the trunk

Location:
NEMO/branches/2021/dev_r14608_AGRIF_domcfg
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2021/dev_r14608_AGRIF_domcfg/cfgs/SHARED/field_def_nemo-oce.xml

    r14958 r14971  
    11081108    <field id="vtrd_tot"       long_name="j-trend: total momentum trend before atf"        unit="m/s^2"                        /> 
    11091109    <field id="vtrd_atf"       long_name="j-trend: asselin time filter trend"              unit="m/s^2"                        /> 
     1110  </field_group> 
     1111 
     1112  <!-- shared variables available with TOP interface --> 
     1113  <field_group id="top_shared" grid_ref="grid_T_3D"> 
     1114    <field id="xeps"           long_name="Broadband light attenuation"                     unit="-"                            /> 
     1115    <field id="Heup"           long_name="Euphotic layer depth"                            unit="m"     grid_ref="grid_T_2D"   /> 
    11101116  </field_group> 
    11111117 
  • NEMO/branches/2021/dev_r14608_AGRIF_domcfg/cfgs/SHARED/namelist_ref

    r14958 r14971  
    12341234   !                       !           = 2 roughness uses rn_hsri and is weighted by 1-fr_i 
    12351235   !                       !           = 3 roughness uses rn_hsri and is weighted by 1-MIN(1,4*fr_i) 
     1236   nn_mxlice     =     1   !  mixing under sea ice 
     1237                           !     = 0 No scaling under sea-ice 
     1238                           !     = 1 scaling with constant Ice-ocean roughness (rn_hsri) 
     1239                           !     = 2 scaling with mean sea-ice thickness 
     1240                           !     = 3 scaling with max sea-ice thickness 
    12361241   nn_bc_surf    =     1   !  surface condition (0/1=Dir/Neum) 
    12371242   nn_bc_bot     =     1   !  bottom condition (0/1=Dir/Neum) 
  • NEMO/branches/2021/dev_r14608_AGRIF_domcfg/cfgs/SHARED/namelist_top_ref

    r14032 r14971  
    101101/ 
    102102!----------------------------------------------------------------------- 
     103&namtrc_opt      !  light availability in the water column 
     104!----------------------------------------------------------------------- 
     105!              !  file name       ! frequency (hours) ! variable  ! time interp. !  clim  ! 'yearly'/ ! weights  ! rotation ! land/sea mask ! 
     106!              !                  !  (if <0  months)  !   name    !   (logical)  !  (T/F) ! 'monthly' ! filename ! pairing  ! filename      ! 
     107   sn_par      = 'par.orca'       ,     24            , 'fr_par'  ,  .true.      , .true. , 'yearly'  , ''       , ''       , '' 
     108   cn_dir      = './'        ! root directory for the location of the dynamical files 
     109   ln_varpar   =  .true.     ! Read PAR from file 
     110   parlux      =  0.43       ! Fraction of shortwave as PAR 
     111   light_loc   = 'center'    ! Light location in the water cell ('center', 'integral') 
     112/ 
     113!----------------------------------------------------------------------- 
    103114&namtrc_dmp      !   passive tracer newtonian damping                   (ln_trcdmp=T) 
    104115!----------------------------------------------------------------------- 
  • NEMO/branches/2021/dev_r14608_AGRIF_domcfg/src/OCE/SBC/sbcwave.F90

    r14433 r14971  
    2424   USE bdy_oce        ! open boundary condition variables 
    2525   USE domvvl         ! domain: variable volume layers 
     26   USE zdf_oce,  ONLY : ln_zdfswm ! Qiao wave enhanced mixing  
    2627   ! 
    2728   USE iom            ! I/O manager library 
     
    310311            IF( jp_vsd > 0 )   vt0sd(:,:) = sf_sd(jp_vsd)%fnow(:,:,1) * tmask(:,:,1)  ! 2D meridional Stokes Drift at T point 
    311312         ENDIF 
     313 
     314         ! Read also wave number if needed, so that it is available in 
     315         ! coupling routines 
     316         IF( ln_zdfswm .AND. .NOT. cpl_wnum ) THEN     !==wavenumber==! 
     317            CALL fld_read( kt, nn_fsbc, sf_wn )             ! read wave parameters from external forcing 
     318            wnum(:,:) = sf_wn(1)%fnow(:,:,1) * tmask(:,:,1) 
     319         ENDIF 
     320  
    312321         ! 
    313322         IF( jpfld == 4 .OR. ln_wave_test )   & 
     
    506515            ENDIF 
    507516            ! 
    508             ! 3. Wave number (only needed for Qiao parametrisation, ln_zdfqiao=T) 
    509             IF( .NOT. cpl_wnum ) THEN 
     517            ! 3. Wave number (only needed for Qiao parametrisation, ln_zdfswm=T) 
     518            IF( ln_zdfswm .AND. .NOT. cpl_wnum ) THEN 
    510519               ALLOCATE( sf_wn(1), STAT=ierror )           !* allocate and fill sf_wave with sn_wnum 
    511520               IF( ierror > 0 )   CALL ctl_stop( 'STOP', 'sbc_wave_init: unable to allocate sf_wn structure' ) 
  • NEMO/branches/2021/dev_r14608_AGRIF_domcfg/src/OCE/ZDF/zdfgls.F90

    r14958 r14971  
    2626   USE zdfmxl         ! mixed layer 
    2727   USE sbcwave , ONLY : hsw   ! significant wave height 
     28#if defined key_si3 
     29   USE ice, ONLY: hm_i, h_i 
     30#endif 
     31#if defined key_cice 
     32   USE sbc_ice, ONLY: h_i 
     33#endif 
    2834   ! 
    2935   USE lbclnk         ! ocean lateral boundary conditions (or mpp link) 
     
    5157   LOGICAL  ::   ln_length_lim     ! use limit on the dissipation rate under stable stratification (Galperin et al. 1988) 
    5258   LOGICAL  ::   ln_sigpsi         ! Activate Burchard (2003) modification for k-eps closure & wave breaking mixing 
     59   INTEGER  ::   nn_mxlice         ! type of scaling under sea-ice (=0/1/2/3) 
    5360   INTEGER  ::   nn_bc_surf        ! surface boundary condition (=0/1) 
    5461   INTEGER  ::   nn_bc_bot         ! bottom boundary condition (=0/1) 
     
    224231      ! 
    225232      ! adapt roughness where there is sea ice 
    226       DO_2D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1 ) 
    227          zhsro(ji,jj) = ( (1._wp-zice_fra(ji,jj)) * zhsro(ji,jj) + zice_fra(ji,jj) * rn_hsri )*tmask(ji,jj,1)  + & 
    228             &           (1._wp - tmask(ji,jj,1))*rn_hsro 
    229       END_2D 
     233      SELECT CASE( nn_mxlice )       ! Type of scaling under sea-ice 
     234      ! 
     235      CASE( 1 )                      ! scaling with constant sea-ice roughness 
     236         DO_2D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1 ) 
     237            zhsro(ji,jj) = ( (1._wp-zice_fra(ji,jj)) * zhsro(ji,jj) + zice_fra(ji,jj) * rn_hsri )*tmask(ji,jj,1)  + (1._wp - tmask(ji,jj,1))*rn_hsro 
     238         END_2D 
     239         ! 
     240      CASE( 2 )                      ! scaling with mean sea-ice thickness 
     241#if defined key_si3 
     242         DO_2D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1 ) 
     243            zhsro(ji,jj) = ( (1._wp-zice_fra(ji,jj)) * zhsro(ji,jj) + zice_fra(ji,jj) * hm_i(ji,jj) )*tmask(ji,jj,1)  + (1._wp - tmask(ji,jj,1))*rn_hsro 
     244         END_2D 
     245#endif 
     246         ! 
     247      CASE( 3 )                      ! scaling with max sea-ice thickness 
     248#if defined key_si3 || defined key_cice 
     249         DO_2D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1 ) 
     250            zhsro(ji,jj) = ( (1._wp-zice_fra(ji,jj)) * zhsro(ji,jj) + zice_fra(ji,jj) * MAXVAL(h_i(ji,jj,:)) )*tmask(ji,jj,1)  + (1._wp - tmask(ji,jj,1))*rn_hsro 
     251         END_2D 
     252#endif 
     253         ! 
     254      END SELECT 
    230255      ! 
    231256      DO_3D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 2, jpkm1 )  !==  Compute dissipation rate  ==! 
     
    329354         END_2D 
    330355         ! 
     356         IF( ln_isfcav) THEN     ! top boundary   (ocean cavity) 
     357            DO_2D_OVR( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1 ) 
     358               IF( mikt(ji,jj) > 1 )THEN 
     359                  itop   = mikt(ji,jj)       ! k   top w-point 
     360                  itopp1 = mikt(ji,jj) + 1   ! k+1 1st w-point below the top one 
     361                  !                                                ! mask at the 
     362                  !                                                ocean surface 
     363                  !                                                points 
     364                  z_en = MAX( rc02r * ustar2_top(ji,jj), rn_emin ) * ( 1._wp - tmask(ji,jj,1) ) 
     365                  ! 
     366                  ! Dirichlet condition applied at: 
     367                  !     top level (itop)         &      Just below it (itopp1) 
     368                  zd_lw(ji,jj,itop) = 0._wp   ;   zd_lw(ji,jj,itopp1) = 0._wp 
     369                  zd_up(ji,jj,itop) = 0._wp   ;   zd_up(ji,jj,itopp1) = 0._wp 
     370                  zdiag(ji,jj,itop) = 1._wp   ;   zdiag(ji,jj,itopp1) = 1._wp 
     371                  en   (ji,jj,itop) = z_en    ;   en   (ji,jj,itopp1) = z_en 
     372               ENDIF 
     373            END_2D 
     374         ENDIF 
    331375         ! 
    332376      CASE ( 1 )             ! Neumann boundary condition (set d(e)/dz) 
     
    352396         END_2D 
    353397         ! 
     398         IF( ln_isfcav) THEN     ! top boundary   (ocean cavity) 
     399            DO_2D_OVR( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1 ) 
     400               IF( mikt(ji,jj) > 1 )THEN 
     401                  itop   = mikt(ji,jj)       ! k   top w-point 
     402                  itopp1 = mikt(ji,jj) + 1   ! k+1 1st w-point below the top one 
     403                  !                                                ! mask at the 
     404                  !                                                ocean surface 
     405                  !                                                points 
     406                  z_en = MAX( rc02r * ustar2_top(ji,jj), rn_emin ) * ( 1._wp - tmask(ji,jj,1) ) 
     407                  ! 
     408                  ! Bottom level Dirichlet condition: 
     409                  !     Bottom level (ibot)      &      Just above it (ibotm1) 
     410                  !         Dirichlet            !         Neumann 
     411                  zd_lw(ji,jj,itop) = 0._wp   !   ! Remove zd_up from zdiag 
     412                  zdiag(ji,jj,itop) = 1._wp   ;   zdiag(ji,jj,itopp1) = zdiag(ji,jj,itopp1) + zd_up(ji,jj,itopp1) 
     413                  zd_up(ji,jj,itop) = 0._wp   ;   zd_up(ji,jj,itopp1) = 0._wp 
     414                  en   (ji,jj,itop) = z_en 
     415               ENDIF 
     416            END_2D 
     417         ENDIF 
    354418         ! 
    355419      END SELECT 
     
    607671         END_2D 
    608672         ! 
     673         IF( ln_isfcav) THEN     ! top boundary   (ocean cavity) 
     674            DO_2D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1 ) 
     675               IF ( mikt(ji,jj) > 1 ) THEN 
     676                  itop   = mikt(ji,jj)       ! k   top w-point 
     677                  itopp1 = mikt(ji,jj) + 1   ! k+1 1st w-point below the top one 
     678                  ! 
     679                  zdep(ji,jj) = vkarmn * r_z0_top 
     680                  psi (ji,jj,itop) = rc0**rpp * en(ji,jj,itop)**rmm *zdep(ji,jj)**rnn 
     681                  zd_lw(ji,jj,itop) = 0._wp 
     682                  zd_up(ji,jj,itop) = 0._wp 
     683                  zdiag(ji,jj,itop) = 1._wp 
     684                  ! 
     685                  ! Just above last level, Dirichlet condition again (GOTM like) 
     686                  zdep(ji,jj) = vkarmn * ( r_z0_top + e3t(ji,jj,itopp1,Kmm) ) 
     687                  psi (ji,jj,itopp1) = rc0**rpp * en(ji,jj,itop  )**rmm *zdep(ji,jj)**rnn 
     688                  zd_lw(ji,jj,itopp1) = 0._wp 
     689                  zd_up(ji,jj,itopp1) = 0._wp 
     690                  zdiag(ji,jj,itopp1) = 1._wp 
     691               END IF 
     692            END_2D 
     693         END IF 
     694         ! 
    609695      CASE ( 1 )             ! Neumman boundary condition 
    610696         ! 
     
    631717            psi(ji,jj,ibotm1) = psi(ji,jj,ibotm1) + zflxb / e3w(ji,jj,ibotm1,Kmm) 
    632718         END_2D 
     719         ! 
     720         IF( ln_isfcav) THEN     ! top boundary   (ocean cavity) 
     721            DO_2D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1 ) 
     722               IF ( mikt(ji,jj) > 1 ) THEN 
     723                  itop   = mikt(ji,jj)       ! k   top w-point 
     724                  itopp1 = mikt(ji,jj) + 1   ! k+1 1st w-point below the top one 
     725                  ! 
     726                  ! Bottom level Dirichlet condition: 
     727                  zdep(ji,jj) = vkarmn * r_z0_top 
     728                  psi (ji,jj,itop) = rc0**rpp * en(ji,jj,itop)**rmm *zdep(ji,jj)**rnn 
     729                  ! 
     730                  zd_lw(ji,jj,itop) = 0._wp 
     731                  zd_up(ji,jj,itop) = 0._wp 
     732                  zdiag(ji,jj,itop) = 1._wp 
     733                  ! 
     734                  ! Just below cavity level: Neumann condition with flux 
     735                  ! injection 
     736                  zdiag(ji,jj,itopp1) = zdiag(ji,jj,itopp1) + zd_up(ji,jj,itopp1) ! Remove zd_up from zdiag 
     737                  zd_up(ji,jj,itopp1) = 0._wp 
     738                  ! 
     739                  ! Set psi vertical flux below cavity: 
     740                  zdep(ji,jj) = r_z0_top + 0.5_wp*e3t(ji,jj,itopp1,Kmm) 
     741                  zflxb = rsbc_psi2 * ( p_avm(ji,jj,itop) + p_avm(ji,jj,itopp1))   & 
     742                     &  * (0.5_wp*(en(ji,jj,itop)+en(ji,jj,itopp1)))**rmm * zdep(ji,jj)**(rnn-1._wp) 
     743                  psi(ji,jj,itopp1) = psi(ji,jj,itopp1) + zflxb / e3w(ji,jj,itopp1,Kmm) 
     744               END IF 
     745            END_2D 
     746         END IF 
     747 
    633748         ! 
    634749      END SELECT 
     
    799914      NAMELIST/namzdf_gls/rn_emin, rn_epsmin, ln_length_lim,       & 
    800915         &            rn_clim_galp, ln_sigpsi, rn_hsro, rn_hsri,   & 
    801          &            rn_crban, rn_charn, rn_frac_hs,              & 
     916         &            nn_mxlice, rn_crban, rn_charn, rn_frac_hs,   & 
    802917         &            nn_bc_surf, nn_bc_bot, nn_z0_met, nn_z0_ice, & 
    803918         &            nn_stab_func, nn_clos 
     
    839954         WRITE(numout,*) '      Type of closure                               nn_clos        = ', nn_clos 
    840955         WRITE(numout,*) '      Surface roughness (m)                         rn_hsro        = ', rn_hsro 
    841          WRITE(numout,*) '      Ice-ocean roughness (used if nn_z0_ice/=0)    rn_hsri        = ', rn_hsri 
     956         WRITE(numout,*) '      type of scaling under sea-ice                 nn_mxlice      = ', nn_mxlice 
     957         IF( nn_mxlice == 1 ) & 
     958            WRITE(numout,*) '      Ice-ocean roughness (used if nn_z0_ice/=0) rn_hsri        = ', rn_hsri 
     959         SELECT CASE( nn_mxlice )             ! Type of scaling under sea-ice 
     960            CASE( 0 )   ;   WRITE(numout,*) '   ==>>>   No scaling under sea-ice' 
     961            CASE( 1 )   ;   WRITE(numout,*) '   ==>>>   scaling with constant sea-ice thickness' 
     962            CASE( 2 )   ;   WRITE(numout,*) '   ==>>>   scaling with mean     sea-ice thickness' 
     963            CASE( 3 )   ;   WRITE(numout,*) '   ==>>>   scaling with max      sea-ice thickness' 
     964            CASE DEFAULT 
     965               CALL ctl_stop( 'zdf_tke_init: wrong value for nn_mxlice, should be 0,1,2,3 ') 
     966         END SELECT 
    842967         WRITE(numout,*) 
    843968      ENDIF 
  • NEMO/branches/2021/dev_r14608_AGRIF_domcfg/src/OCE/ZDF/zdfphy.F90

    r14958 r14971  
    213213      IF( ioptio /= 1 )    CALL ctl_stop( 'zdf_phy_init: one and only one vertical diffusion option has to be defined ' ) 
    214214      IF( ln_isfcav ) THEN 
    215       IF( ln_zdfric .OR. ln_zdfgls )    CALL ctl_stop( 'zdf_phy_init: zdfric and zdfgls never tested with ice shelves cavities ' ) 
     215      IF( ln_zdfric )      CALL ctl_stop( 'zdf_phy_init: zdfric never tested with ice shelves cavities ' ) 
    216216      ENDIF 
    217217      !                                ! shear production term flag 
  • NEMO/branches/2021/dev_r14608_AGRIF_domcfg/tests/CANAL/EXPREF/file_def_nemo-oce.xml

    r14224 r14971  
    2626     <field field_ref="utau"  /> 
    2727     <field field_ref="uoce" /> 
    28      <field_group group_ref="trendU"  />   
    2928   </file> 
    3029    
     
    3231     <field field_ref="vtau"  /> 
    3332     <field field_ref="voce" /> 
    34      <field_group group_ref="trendV"  />   
    3533   </file> 
    3634    
Note: See TracChangeset for help on using the changeset viewer.