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

Changeset 12667


Ignore:
Timestamp:
2020-04-03T16:22:29+02:00 (4 years ago)
Author:
gm
Message:

Shallow Water Eq. update

Location:
NEMO/branches/2020/dev_r12527_Gurvan_ShallowWater
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2020/dev_r12527_Gurvan_ShallowWater/cfgs/AM98/EXPREF/file_def_nemo-oce.xml

    r12614 r12667  
    1717      <file_group id="6h" output_freq="6h"  output_level="10" enabled=".TRUE."/> <!-- 6h files --> 
    1818      
    19       <file_group id="1d" output_freq="1d"  output_level="10" enabled=".TRUE."/> <!-- 1d files --> 
     19      <file_group id="1d" output_freq="1d"  output_level="10" enabled=".TRUE."/> <!-- 1d files -->       
    2020      <file_group id="3d" output_freq="3d"  output_level="10" enabled=".TRUE."/> <!-- 3d files -->     
    21       <file_group id="5d" output_freq="5d"  output_level="10" enabled=".TRUE."/> <!-- 5d files -->    
    22       
    23       <file_group id="1m" output_freq="1mo" output_level="10" enabled=".TRUE."> <!-- real monthly files --> 
     21      <file_group id="5d" output_freq="5d"  output_level="10" enabled=".TRUE."> <!-- 5d files -->  
    2422       
    25         <file id="file1" name_suffix="_grid_T" description="ocean T grid variables" > 
     23      <file id="file1" name_suffix="_grid_T" description="ocean T grid variables" > 
    2624          <field field_ref="ht"           name="ht"       operation = "instant" /> 
    2725          <field field_ref="sKE"          name="sKE"      operation = "instant" /> 
     
    5351       
    5452      </file_group> 
    55  
     53         
     54      <file_group id="1m" output_freq="1mo" output_level="10" enabled=".TRUE."/> <!-- real monthly files --> 
    5655      <file_group id="2m" output_freq="2mo" output_level="10" enabled=".TRUE."/> <!-- real 2m files --> 
    5756      <file_group id="3m" output_freq="3mo" output_level="10" enabled=".TRUE."/> <!-- real 3m files --> 
  • NEMO/branches/2020/dev_r12527_Gurvan_ShallowWater/cfgs/AM98/EXPREF/namelist_cfg

    r12614 r12667  
    5151   rn_rfr           = 1.e-7   ! layer drag coefficient        [1/s]  
    5252   ! 
    53    rn_beta = 2.E-11   ! beta-plan coriolis parameter  [1/m.s]  
    54    rn_f0   = 0.7E-4   ! f-plan coriolis parameter     [1/s]  
     53   rn_beta = 2.e-11   ! beta-plan coriolis parameter  [1/m.s]  
     54   rn_f0   = 0.7e-4   ! f-plan coriolis parameter     [1/s]  
    5555/ 
    5656!----------------------------------------------------------------------- 
     
    147147&namdyn_vor    !   Vorticity / Coriolis scheme                          (default: NO selection) 
    148148!----------------------------------------------------------------------- 
    149    ln_dynvor_ene = .true.  !  energy conserving scheme 
    150 !   ln_dynvor_ens = .true.   !  enstrophy conserving scheme 
     149   ln_dynvor_ene = .true.   !  energy conserving scheme 
     150   ln_dynvor_ens = .false.  !  enstrophy conserving scheme 
     151   ln_dynvor_een = .false.  !  energy & enstrophy scheme 
     152      nn_een_e3f = 0          ! =0  e3f = mi(mj(e3t))/4 
     153      !                       ! =1  e3f = mi(mj(e3t))/mi(mj( tmask)) 
     154   ln_dynvor_msk = .false.  !  vorticity multiplied by fmask (=T) 
     155      !                     !  (f-point vorticity schemes only) 
    151156/ 
    152157!----------------------------------------------------------------------- 
  • NEMO/branches/2020/dev_r12527_Gurvan_ShallowWater/src/SWE/diawri.F90

    r12614 r12667  
    180180              &                     + e3t(ji,jj  ,1,Kmm) * e1e2t(ji,jj  ) + e3t(ji+1,jj  ,1,Kmm) * e1e2t(ji+1,jj  )  ) * r1_e1e2f(ji,jj) 
    181181         END_2D 
     182         z2d(:,:) = z2d(:,:) * ssfmask(:,:) 
    182183         CALL lbc_lnk( 'diawri', z2d, 'F', 1._wp ) 
    183184         CALL iom_put( "hf", z2d )    
  • NEMO/branches/2020/dev_r12527_Gurvan_ShallowWater/src/SWE/dynvor.F90

    r12614 r12667  
    2121   !!             -   ! 2018-03  (G. Madec)  add two new schemes (ln_dynvor_enT and ln_dynvor_eet) 
    2222   !!             -   ! 2018-04  (G. Madec)  add pre-computed gradient for metric term calculation 
     23   !!            4.x  ! 2020-03  (G. Madec, A. Nasser)  make ln_dynvor_msk truly efficient on relative vorticity 
    2324   !!---------------------------------------------------------------------- 
    2425 
     
    226227      ! 
    227228      ! 
    228       SELECT CASE( kvor )                 !==  volume weighted vorticity considered  ==! 
    229       CASE ( np_RVO )                           !* relative vorticity 
    230          DO jk = 1, jpkm1                                 ! Horizontal slab 
     229      SELECT CASE( kvor )                 !== relative vorticity considered  ==! 
     230      CASE ( np_RVO , np_CRV )                  !* relative vorticity at f-point is used 
     231         DO jk = 1, jpkm1                                ! Horizontal slab 
    231232            DO_2D_10_10 
    232233               zwz(ji,jj,jk) = (  e2v(ji+1,jj) * pv(ji+1,jj,jk) - e2v(ji,jj) * pv(ji,jj,jk)  & 
    233234                  &             - e1u(ji,jj+1) * pu(ji,jj+1,jk) + e1u(ji,jj) * pu(ji,jj,jk)  ) * r1_e1e2f(ji,jj) 
    234235            END_2D 
    235             IF( ln_dynvor_msk ) THEN                     ! mask/unmask relative vorticity  
     236            IF( ln_dynvor_msk ) THEN                     ! mask relative vorticity  
    236237               DO_2D_10_10 
    237238                  zwz(ji,jj,jk) = zwz(ji,jj,jk) * fmask(ji,jj,jk) 
     
    239240            ENDIF 
    240241         END DO 
    241  
    242242         CALL lbc_lnk( 'dynvor', zwz, 'F', 1. ) 
    243  
    244       CASE ( np_CRV )                           !* Coriolis + relative vorticity 
    245          DO jk = 1, jpkm1                                 ! Horizontal slab 
    246             DO_2D_10_10 
    247                zwz(ji,jj,jk) = (   e2v(ji+1,jj) * pv(ji+1,jj,jk) - e2v(ji,jj) * pv(ji,jj,jk)   & 
    248                   &              - e1u(ji,jj+1) * pu(ji,jj+1,jk) + e1u(ji,jj) * pu(ji,jj,jk)   ) * r1_e1e2f(ji,jj) 
    249             END_2D 
    250             IF( ln_dynvor_msk ) THEN                     ! mask/unmask relative vorticity  
    251                DO_2D_10_10 
    252                   zwz(ji,jj,jk) = zwz(ji,jj,jk) * fmask(ji,jj,jk) 
    253                END_2D 
    254             ENDIF 
    255          END DO 
    256  
    257          CALL lbc_lnk( 'dynvor', zwz, 'F', 1. ) 
    258  
     243         ! 
    259244      END SELECT 
    260245 
    261246      !                                                ! =============== 
    262247      DO jk = 1, jpkm1                                 ! Horizontal slab 
    263       !                                                ! =============== 
    264  
     248         !                                             ! =============== 
     249         ! 
    265250         SELECT CASE( kvor )                 !==  volume weighted vorticity considered  ==! 
     251         ! 
    266252         CASE ( np_COR )                           !* Coriolis (planetary vorticity) 
    267253            zwt(:,:) = ff_t(:,:) * e1e2t(:,:)*e3t(:,:,jk,Kmm) 
     
    356342                  &          - e1u(ji  ,jj+1) * pu(ji  ,jj+1,jk) + e1u(ji,jj) * pu(ji,jj,jk)  ) * r1_e1e2f(ji,jj) 
    357343            END_2D 
     344            IF( ln_dynvor_msk ) THEN                     ! mask the relative vorticity 
     345               DO_2D_10_10 
     346                  zwz(ji,jj) = zwz(ji,jj) * fmask(ji,jj,jk) 
     347               END_2D 
     348            ENDIF 
    358349         CASE ( np_MET )                           !* metric term 
    359350            DO_2D_10_10 
     
    366357                  &                        - e1u(ji,jj+1) * pu(ji,jj+1,jk) + e1u(ji,jj) * pu(ji,jj,jk)  ) * r1_e1e2f(ji,jj) 
    367358            END_2D 
     359            IF( ln_dynvor_msk ) THEN                     ! mask the relative vorticity (NOT the Coriolis term) 
     360               DO_2D_10_10 
     361                  zwz(ji,jj) = ( zwz(ji,jj) - ff_f(ji,jj) ) * fmask(ji,jj,jk) + ff_f(ji,jj) 
     362               END_2D 
     363            ENDIF 
    368364         CASE ( np_CME )                           !* Coriolis + metric 
    369365            DO_2D_10_10 
     
    375371         END SELECT 
    376372         ! 
    377          IF( ln_dynvor_msk ) THEN          !==  mask/unmask vorticity ==! 
    378             DO_2D_10_10 
    379                zwz(ji,jj) = zwz(ji,jj) * fmask(ji,jj,jk) 
    380             END_2D 
    381          ENDIF 
    382  
    383          IF( ln_sco ) THEN 
    384             zwz(:,:) = zwz(:,:) / e3f(:,:,jk) 
    385             zwx(:,:) = e2u(:,:) * e3u(:,:,jk,Kmm) * pu(:,:,jk) 
    386             zwy(:,:) = e1v(:,:) * e3v(:,:,jk,Kmm) * pv(:,:,jk) 
    387          ELSE 
    388             zwx(:,:) = e2u(:,:) * pu(:,:,jk) 
    389             zwy(:,:) = e1v(:,:) * pv(:,:,jk) 
    390          ENDIF 
     373         !                                   !==  horizontal fluxes and potential vorticity ==! 
     374         zwx(:,:) = e2u(:,:) * e3u(:,:,jk,Kmm) * pu(:,:,jk) 
     375         zwy(:,:) = e1v(:,:) * e3v(:,:,jk,Kmm) * pv(:,:,jk) 
     376         zwz(:,:) = zwz(:,:) / e3f(:,:,jk) 
     377         ! 
    391378         !                                   !==  compute and add the vorticity term trend  =! 
    392379         DO_2D_00_00 
     
    452439                  &          - e1u(ji  ,jj+1) * pu(ji  ,jj+1,jk) + e1u(ji,jj) * pu(ji,jj,jk)  ) * r1_e1e2f(ji,jj) 
    453440            END_2D 
     441            IF( ln_dynvor_msk ) THEN                     ! mask the relative vorticity 
     442               DO_2D_10_10 
     443                  zwz(ji,jj) = ff_f(ji,jj) * fmask(ji,jj,jk) 
     444               END_2D 
     445            ENDIF 
    454446         CASE ( np_MET )                           !* metric term 
    455447            DO_2D_10_10 
     
    461453               zwz(ji,jj) = ff_f(ji,jj) + (  e2v(ji+1,jj  ) * pv(ji+1,jj  ,jk) - e2v(ji,jj) * pv(ji,jj,jk)  & 
    462454                  &                        - e1u(ji  ,jj+1) * pu(ji  ,jj+1,jk) + e1u(ji,jj) * pu(ji,jj,jk)  ) * r1_e1e2f(ji,jj) 
    463 !!an                  &                        * fmask(ji,jj,jk) 
    464             END_2D 
     455            END_2D 
     456            IF( ln_dynvor_msk ) THEN                     ! mask the relative vorticity (NOT the Coriolis term) 
     457               DO_2D_10_10 
     458                  zwz(ji,jj) = ( zwz(ji,jj) - ff_f(ji,jj) ) * fmask(ji,jj,jk) + ff_f(ji,jj) 
     459               END_2D 
     460            ENDIF 
    465461         CASE ( np_CME )                           !* Coriolis + metric 
    466462            DO_2D_10_10 
     
    472468         END SELECT 
    473469         ! 
    474          IF( ln_dynvor_msk ) THEN           !==  mask/unmask vorticity ==! 
    475             DO_2D_10_10 
    476                zwz(ji,jj) = zwz(ji,jj) * fmask(ji,jj,jk) 
    477             END_2D 
    478          ENDIF 
    479          ! 
    480          IF( ln_sco ) THEN                   !==  horizontal fluxes  ==! 
    481             zwz(:,:) = zwz(:,:) / e3f(:,:,jk) 
    482             zwx(:,:) = e2u(:,:) * e3u(:,:,jk,Kmm) * pu(:,:,jk) 
    483             zwy(:,:) = e1v(:,:) * e3v(:,:,jk,Kmm) * pv(:,:,jk) 
    484          ELSE 
    485             zwx(:,:) = e2u(:,:) * pu(:,:,jk) 
    486             zwy(:,:) = e1v(:,:) * pv(:,:,jk) 
    487          ENDIF 
     470         ! 
     471         !                                   !==  horizontal fluxes and potential vorticity ==! 
     472         zwx(:,:) = e2u(:,:) * e3u(:,:,jk,Kmm) * pu(:,:,jk) 
     473         zwy(:,:) = e1v(:,:) * e3v(:,:,jk,Kmm) * pv(:,:,jk) 
     474         zwz(:,:) = zwz(:,:) / e3f(:,:,jk) 
     475         ! 
    488476         !                                   !==  compute and add the vorticity term trend  =! 
    489477         DO_2D_00_00 
     
    725713      ! 
    726714      DO jk = 1, jpkm1                                 ! Horizontal slab 
    727  
    728       !                                   !==  horizontal fluxes  ==! 
     715         ! 
     716         !                                   !==  horizontal fluxes  ==! 
    729717         zwx(:,:) = e2u(:,:) * e3u(:,:,jk,Kmm) * pu(:,:,jk) 
    730718         zwy(:,:) = e1v(:,:) * e3v(:,:,jk,Kmm) * pv(:,:,jk) 
     
    801789      ENDIF 
    802790 
    803       IF( ln_dynvor_msk )   CALL ctl_stop( 'dyn_vor_init:   masked vorticity is not currently not available') 
     791!!an      IF( ln_dynvor_msk )   CALL ctl_stop( 'dyn_vor_init:   masked vorticity is not currently not available') 
    804792 
    805793!!gm  this should be removed when choosing a unique strategy for fmask at the coast 
Note: See TracChangeset for help on using the changeset viewer.