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

Changeset 9120


Ignore:
Timestamp:
2017-12-18T18:29:02+01:00 (6 years ago)
Author:
clne
Message:

Initial work on 2D surge configuration. Works for tide-only, no SBC yet

Location:
branches/UKMO/dev_r8814_surge_modelling_Nemo4/NEMOGCM
Files:
12 added
18 edited

Legend:

Unmodified
Added
Removed
  • branches/UKMO/dev_r8814_surge_modelling_Nemo4/NEMOGCM/CONFIG/SHARED/field_def_nemo-opa.xml

    r8698 r9120  
    203203         <field id="taum"         long_name="wind stress module"                    standard_name="magnitude_of_surface_downward_stress"                                 unit="N/m2"                           /> 
    204204         <field id="wspd"         long_name="wind speed module"                     standard_name="wind_speed"                                                           unit="m/s"                            /> 
     205         <field id="uwnd"         long_name="u component of wind"       unit="m/s"         /> 
     206         <field id="vwnd"         long_name="v component of wind"       unit="m/s"        /> 
    205207          
    206208         <!-- * variable relative to atmospheric pressure forcing : available with ln_apr_dyn --> 
  • branches/UKMO/dev_r8814_surge_modelling_Nemo4/NEMOGCM/CONFIG/SHARED/namelist_ref

    r8599 r9120  
    9494   ! 
    9595   ln_crs      = .false.   !  Logical switch for coarsening module 
     96   ln_2d        = .false.  !  (=T) run in 2D barotropic mode (no tracer processes or vertical diffusion) 
    9697/ 
    9798!----------------------------------------------------------------------- 
  • branches/UKMO/dev_r8814_surge_modelling_Nemo4/NEMOGCM/CONFIG/cfg.txt

    r8600 r9120  
    1 AMM12 OPA_SRC 
    21C1D_PAPA OPA_SRC 
    32GYRE_PISCES OPA_SRC TOP_SRC 
     
    76ORCA2_OFF_TRC OPA_SRC OFF_SRC TOP_SRC 
    87ORCA2_LIM3_PISCES OPA_SRC LIM_SRC_3 TOP_SRC NST_SRC 
     8AMM12 OPA_SRC 
     9AMM7_SURGE OPA_SRC 
  • branches/UKMO/dev_r8814_surge_modelling_Nemo4/NEMOGCM/NEMO/OPA_SRC/DOM/dom_oce.F90

    r7914 r9120  
    3939   LOGICAL , PUBLIC ::   ln_iscpl       !: coupling with ice sheet 
    4040   LOGICAL , PUBLIC ::   ln_crs         !: Apply grid coarsening to dynamical model output or online passive tracers 
     41   LOGICAL , PUBLIC ::   ln_2d          ! (=T) run in 2D barotropic mode (no tracer processes or vertical diffusion) 
    4142 
    4243   !! Free surface parameters 
  • branches/UKMO/dev_r8814_surge_modelling_Nemo4/NEMOGCM/NEMO/OPA_SRC/DOM/domain.F90

    r7822 r9120  
    286286         &             nn_stock, nn_write , ln_mskland  , ln_clobber   , nn_chunksz, nn_euler  ,     & 
    287287         &             ln_cfmeta, ln_iscpl 
    288       NAMELIST/namdom/ ln_linssh, nn_closea, nn_msh, rn_isfhmin, rn_rdt, rn_atfp, ln_crs 
     288      NAMELIST/namdom/ ln_linssh, nn_closea, nn_msh, rn_isfhmin, rn_rdt, rn_atfp, ln_crs, ln_2d 
    289289#if defined key_netcdf4 
    290290      NAMELIST/namnc4/ nn_nchunks_i, nn_nchunks_j, nn_nchunks_k, ln_nc4zip 
     
    405405         WRITE(numout,*) '      asselin time filter parameter         rn_atfp    = ', rn_atfp 
    406406         WRITE(numout,*) '      online coarsening of dynamical fields ln_crs     = ', ln_crs 
    407       ENDIF 
     407         WRITE(numout,*) '      2D mode                               ln_2d      = ', ln_2d 
     408         IF(ln_2d) WRITE(numout,*) '   2D mode active: All tracer processes and vertical diffusion turned off' 
     409 
     410      ENDIF 
     411 
     412         
    408413       
    409414      call flush( numout ) 
  • branches/UKMO/dev_r8814_surge_modelling_Nemo4/NEMOGCM/NEMO/OPA_SRC/DOM/domzgr.F90

    r7753 r9120  
    135135 
    136136 
     137      IF (ln_2d .AND. .NOT.ln_sco)   CALL ctl_stop( ' 2D mode must be used with ln_sco' )  
     138 
    137139      !                                ! top/bottom ocean level indices for t-, u- and v-points (f-point also for top) 
    138140      CALL zgr_top_bot( k_top, k_bot )      ! with a minimum value set to 1 
  • branches/UKMO/dev_r8814_surge_modelling_Nemo4/NEMOGCM/NEMO/OPA_SRC/DOM/dtatsd.F90

    r7753 r9120  
    9090            WRITE(numout,*) '   T & S data not used' 
    9191         ENDIF 
     92         IF( ln_2d ) WRITE(numout,*) '   2D ocean - ocean will be started at rest and T&S = 0' 
     93 
    9294      ENDIF 
    9395      ! 
  • branches/UKMO/dev_r8814_surge_modelling_Nemo4/NEMOGCM/NEMO/OPA_SRC/DOM/istate.F90

    r7753 r9120  
    9494         !                                    ! Initialization of ocean to zero 
    9595         ! 
    96          IF( ln_tsd_init ) THEN                
     96         IF (ln_2d) THEN 
     97            tsn(:,:,:,:)= 0._wp                ! No tracers 
     98            sshb(:,:)   = 0._wp               ! set the ocean at rest 
     99            ub  (:,:,:) = 0._wp 
     100            vb  (:,:,:) = 0._wp           
     101         ELSE IF( ln_tsd_init ) THEN   
    97102            CALL dta_tsd( nit000, tsb )       ! read 3D T and S data at nit000 
    98103            ! 
  • branches/UKMO/dev_r8814_surge_modelling_Nemo4/NEMOGCM/NEMO/OPA_SRC/DYN/dynhpg.F90

    r7761 r9120  
    494494      END IF 
    495495 
    496       ! Surface value 
    497       DO jj = 2, jpjm1 
    498          DO ji = fs_2, fs_jpim1   ! vector opt. 
    499             ! hydrostatic pressure gradient along s-surfaces 
    500             zhpi(ji,jj,1) = zcoef0 * (  e3w_n(ji+1,jj  ,1) * ( znad + rhd(ji+1,jj  ,1) )    & 
    501                &                      - e3w_n(ji  ,jj  ,1) * ( znad + rhd(ji  ,jj  ,1) )  ) * r1_e1u(ji,jj) 
    502             zhpj(ji,jj,1) = zcoef0 * (  e3w_n(ji  ,jj+1,1) * ( znad + rhd(ji  ,jj+1,1) )    & 
    503                &                      - e3w_n(ji  ,jj  ,1) * ( znad + rhd(ji  ,jj  ,1) )  ) * r1_e2v(ji,jj) 
    504             ! s-coordinate pressure gradient correction 
    505             zuap = -zcoef0 * ( rhd    (ji+1,jj,1) + rhd    (ji,jj,1) + 2._wp * znad )   & 
    506                &           * ( gde3w_n(ji+1,jj,1) - gde3w_n(ji,jj,1) ) * r1_e1u(ji,jj) 
    507             zvap = -zcoef0 * ( rhd    (ji,jj+1,1) + rhd    (ji,jj,1) + 2._wp * znad )   & 
    508                &           * ( gde3w_n(ji,jj+1,1) - gde3w_n(ji,jj,1) ) * r1_e2v(ji,jj) 
    509  
    510  
    511             IF( ln_wd ) THEN 
    512  
    513               zhpi(ji,jj,1) = zhpi(ji,jj,1) * zcpx(ji,jj) 
    514               zhpj(ji,jj,1) = zhpj(ji,jj,1) * zcpy(ji,jj)  
    515               zuap = zuap * zcpx(ji,jj) 
    516               zvap = zvap * zcpy(ji,jj) 
    517             ENDIF 
    518  
    519             ! add to the general momentum trend 
    520             ua(ji,jj,1) = ua(ji,jj,1) + zhpi(ji,jj,1) + zuap 
    521             va(ji,jj,1) = va(ji,jj,1) + zhpj(ji,jj,1) + zvap 
    522          END DO 
    523       END DO 
    524  
    525       ! interior value (2=<jk=<jpkm1) 
    526       DO jk = 2, jpkm1 
    527          DO jj = 2, jpjm1 
    528             DO ji = fs_2, fs_jpim1   ! vector opt. 
    529                ! hydrostatic pressure gradient along s-surfaces 
    530                zhpi(ji,jj,jk) = zhpi(ji,jj,jk-1) + zcoef0 * r1_e1u(ji,jj)   & 
    531                   &           * (  e3w_n(ji+1,jj,jk) * ( rhd(ji+1,jj,jk) + rhd(ji+1,jj,jk-1) + 2*znad )   & 
    532                   &              - e3w_n(ji  ,jj,jk) * ( rhd(ji  ,jj,jk) + rhd(ji  ,jj,jk-1) + 2*znad )  ) 
    533                zhpj(ji,jj,jk) = zhpj(ji,jj,jk-1) + zcoef0 * r1_e2v(ji,jj)   & 
    534                   &           * (  e3w_n(ji,jj+1,jk) * ( rhd(ji,jj+1,jk) + rhd(ji,jj+1,jk-1) + 2*znad )   & 
    535                   &              - e3w_n(ji,jj  ,jk) * ( rhd(ji,jj,  jk) + rhd(ji,jj  ,jk-1) + 2*znad )  ) 
    536                ! s-coordinate pressure gradient correction 
    537                zuap = -zcoef0 * ( rhd    (ji+1,jj  ,jk) + rhd    (ji,jj,jk) + 2._wp * znad )   & 
    538                   &           * ( gde3w_n(ji+1,jj  ,jk) - gde3w_n(ji,jj,jk) ) * r1_e1u(ji,jj) 
    539                zvap = -zcoef0 * ( rhd    (ji  ,jj+1,jk) + rhd    (ji,jj,jk) + 2._wp * znad )   & 
    540                   &           * ( gde3w_n(ji  ,jj+1,jk) - gde3w_n(ji,jj,jk) ) * r1_e2v(ji,jj) 
    541  
    542                IF( ln_wd ) THEN 
    543                  zhpi(ji,jj,jk) = zhpi(ji,jj,jk) * zcpx(ji,jj) 
    544                  zhpj(ji,jj,jk) = zhpj(ji,jj,jk) * zcpy(ji,jj)  
    545                  zuap = zuap * zcpx(ji,jj) 
    546                  zvap = zvap * zcpy(ji,jj) 
    547                ENDIF 
    548  
    549                ! add to the general momentum trend 
    550                ua(ji,jj,jk) = ua(ji,jj,jk) + zhpi(ji,jj,jk) + zuap 
    551                va(ji,jj,jk) = va(ji,jj,jk) + zhpj(ji,jj,jk) + zvap 
    552             END DO 
    553          END DO 
    554       END DO 
     496    IF (ln_2d) THEN 
     497        ! Surface value 
     498        DO jj = 2, jpjm1 
     499           DO ji = fs_2, fs_jpim1   ! vector opt. 
     500              ! hydrostatic pressure gradient along s-surfaces 
     501              zhpi(ji,jj,1) = zcoef0 * (  e3w_n(ji+1,jj  ,1) * znad   & 
     502                 &                      - e3w_n(ji  ,jj  ,1) * znad ) * r1_e1u(ji,jj) 
     503              zhpj(ji,jj,1) = zcoef0 * (  e3w_n(ji  ,jj+1,1) * znad   & 
     504                 &                      - e3w_n(ji  ,jj  ,1) * znad ) * r1_e2v(ji,jj) 
     505              ! s-coordinate pressure gradient correction 
     506              zuap = -zcoef0 * ( 2._wp * znad )   & 
     507                 &           * ( gde3w_n(ji+1,jj,1) - gde3w_n(ji,jj,1) ) * r1_e1u(ji,jj) 
     508              zvap = -zcoef0 * ( 2._wp * znad )   & 
     509                 &           * ( gde3w_n(ji,jj+1,1) - gde3w_n(ji,jj,1) ) * r1_e2v(ji,jj) 
     510 
     511 
     512              IF( ln_wd ) THEN 
     513 
     514                zhpi(ji,jj,1) = zhpi(ji,jj,1) * zcpx(ji,jj) 
     515                zhpj(ji,jj,1) = zhpj(ji,jj,1) * zcpy(ji,jj)  
     516                zuap = zuap * zcpx(ji,jj) 
     517                zvap = zvap * zcpy(ji,jj) 
     518              ENDIF 
     519 
     520              ! add to the general momentum trend 
     521              ua(ji,jj,1) = ua(ji,jj,1) + zhpi(ji,jj,1) + zuap * umask(ji,jj,1) 
     522              va(ji,jj,1) = va(ji,jj,1) + zhpj(ji,jj,1) + zvap * vmask(ji,jj,1) 
     523           END DO 
     524        END DO 
     525 
     526        ! interior value (2=<jk=<jpkm1) 
     527        DO jk = 2, jpkm1 
     528           DO jj = 2, jpjm1 
     529              DO ji = fs_2, fs_jpim1   ! vector opt. 
     530                 ! hydrostatic pressure gradient along s-surfaces 
     531                 zhpi(ji,jj,jk) = zhpi(ji,jj,jk-1) + zcoef0 * r1_e1u(ji,jj)   & 
     532                    &           * (  e3w_n(ji+1,jj,jk) * ( 2*znad )   & 
     533                    &              - e3w_n(ji  ,jj,jk) * ( 2*znad )  ) 
     534                 zhpj(ji,jj,jk) = zhpj(ji,jj,jk-1) + zcoef0 * r1_e2v(ji,jj)   & 
     535                    &           * (  e3w_n(ji,jj+1,jk) * ( 2*znad )   & 
     536                    &              - e3w_n(ji,jj  ,jk) * ( 2*znad )  ) 
     537                 ! s-coordinate pressure gradient correction 
     538                 zuap = -zcoef0 * ( 2._wp * znad )   & 
     539                    &           * ( gde3w_n(ji+1,jj  ,jk) - gde3w_n(ji,jj,jk) ) * r1_e1u(ji,jj) 
     540                 zvap = -zcoef0 * ( 2._wp * znad )   & 
     541                    &           * ( gde3w_n(ji  ,jj+1,jk) - gde3w_n(ji,jj,jk) ) * r1_e2v(ji,jj) 
     542 
     543                 IF( ln_wd ) THEN 
     544                   zhpi(ji,jj,jk) = zhpi(ji,jj,jk) * zcpx(ji,jj) 
     545                   zhpj(ji,jj,jk) = zhpj(ji,jj,jk) * zcpy(ji,jj)  
     546                   zuap = zuap * zcpx(ji,jj) 
     547                   zvap = zvap * zcpy(ji,jj) 
     548                 ENDIF 
     549 
     550                 ! add to the general momentum trend 
     551                 ua(ji,jj,jk) = ua(ji,jj,jk) + zhpi(ji,jj,jk) + zuap * umask(ji,jj,1) 
     552                 va(ji,jj,jk) = va(ji,jj,jk) + zhpj(ji,jj,jk) + zvap * vmask(ji,jj,1) 
     553              END DO 
     554           END DO 
     555        END DO 
     556 
     557    ELSE 
     558 
     559        ! Surface value 
     560        DO jj = 2, jpjm1 
     561           DO ji = fs_2, fs_jpim1   ! vector opt. 
     562              ! hydrostatic pressure gradient along s-surfaces 
     563              zhpi(ji,jj,1) = zcoef0 * (  e3w_n(ji+1,jj  ,1) * ( znad + rhd(ji+1,jj  ,1) )    & 
     564                 &                      - e3w_n(ji  ,jj  ,1) * ( znad + rhd(ji  ,jj  ,1) )  ) * r1_e1u(ji,jj) 
     565              zhpj(ji,jj,1) = zcoef0 * (  e3w_n(ji  ,jj+1,1) * ( znad + rhd(ji  ,jj+1,1) )    & 
     566                 &                      - e3w_n(ji  ,jj  ,1) * ( znad + rhd(ji  ,jj  ,1) )  ) * r1_e2v(ji,jj) 
     567              ! s-coordinate pressure gradient correction 
     568              zuap = -zcoef0 * ( rhd    (ji+1,jj,1) + rhd    (ji,jj,1) + 2._wp * znad )   & 
     569                 &           * ( gde3w_n(ji+1,jj,1) - gde3w_n(ji,jj,1) ) * r1_e1u(ji,jj) 
     570              zvap = -zcoef0 * ( rhd    (ji,jj+1,1) + rhd    (ji,jj,1) + 2._wp * znad )   & 
     571                 &           * ( gde3w_n(ji,jj+1,1) - gde3w_n(ji,jj,1) ) * r1_e2v(ji,jj) 
     572 
     573 
     574              IF( ln_wd ) THEN 
     575 
     576                zhpi(ji,jj,1) = zhpi(ji,jj,1) * zcpx(ji,jj) 
     577                zhpj(ji,jj,1) = zhpj(ji,jj,1) * zcpy(ji,jj)  
     578                zuap = zuap * zcpx(ji,jj) 
     579                zvap = zvap * zcpy(ji,jj) 
     580              ENDIF 
     581 
     582              ! add to the general momentum trend 
     583              ua(ji,jj,1) = ua(ji,jj,1) + zhpi(ji,jj,1) + zuap 
     584              va(ji,jj,1) = va(ji,jj,1) + zhpj(ji,jj,1) + zvap 
     585           END DO 
     586        END DO 
     587 
     588        ! interior value (2=<jk=<jpkm1) 
     589        DO jk = 2, jpkm1 
     590           DO jj = 2, jpjm1 
     591              DO ji = fs_2, fs_jpim1   ! vector opt. 
     592                 ! hydrostatic pressure gradient along s-surfaces 
     593                 zhpi(ji,jj,jk) = zhpi(ji,jj,jk-1) + zcoef0 * r1_e1u(ji,jj)   & 
     594                    &           * (  e3w_n(ji+1,jj,jk) * ( rhd(ji+1,jj,jk) + rhd(ji+1,jj,jk-1) + 2*znad )   & 
     595                    &              - e3w_n(ji  ,jj,jk) * ( rhd(ji  ,jj,jk) + rhd(ji  ,jj,jk-1) + 2*znad )  ) 
     596                 zhpj(ji,jj,jk) = zhpj(ji,jj,jk-1) + zcoef0 * r1_e2v(ji,jj)   & 
     597                    &           * (  e3w_n(ji,jj+1,jk) * ( rhd(ji,jj+1,jk) + rhd(ji,jj+1,jk-1) + 2*znad )   & 
     598                    &              - e3w_n(ji,jj  ,jk) * ( rhd(ji,jj,  jk) + rhd(ji,jj  ,jk-1) + 2*znad )  ) 
     599                 ! s-coordinate pressure gradient correction 
     600                 zuap = -zcoef0 * ( rhd    (ji+1,jj  ,jk) + rhd    (ji,jj,jk) + 2._wp * znad )   & 
     601                    &           * ( gde3w_n(ji+1,jj  ,jk) - gde3w_n(ji,jj,jk) ) * r1_e1u(ji,jj) 
     602                 zvap = -zcoef0 * ( rhd    (ji  ,jj+1,jk) + rhd    (ji,jj,jk) + 2._wp * znad )   & 
     603                    &           * ( gde3w_n(ji  ,jj+1,jk) - gde3w_n(ji,jj,jk) ) * r1_e2v(ji,jj) 
     604 
     605                 IF( ln_wd ) THEN 
     606                   zhpi(ji,jj,jk) = zhpi(ji,jj,jk) * zcpx(ji,jj) 
     607                   zhpj(ji,jj,jk) = zhpj(ji,jj,jk) * zcpy(ji,jj)  
     608                   zuap = zuap * zcpx(ji,jj) 
     609                   zvap = zvap * zcpy(ji,jj) 
     610                 ENDIF 
     611 
     612                 ! add to the general momentum trend 
     613                 ua(ji,jj,jk) = ua(ji,jj,jk) + zhpi(ji,jj,jk) + zuap 
     614                 va(ji,jj,jk) = va(ji,jj,jk) + zhpj(ji,jj,jk) + zvap 
     615              END DO 
     616           END DO 
     617        END DO 
     618    END IF  ! if ln_2d 
     619 
    555620      ! 
    556621      CALL wrk_dealloc( jpi,jpj,jpk, zhpi, zhpj ) 
  • branches/UKMO/dev_r8814_surge_modelling_Nemo4/NEMOGCM/NEMO/OPA_SRC/DYN/dynkeg.F90

    r7753 r9120  
    177177         DO jj = 2, jpjm1 
    178178            DO ji = fs_2, fs_jpim1   ! vector opt. 
    179                ua(ji,jj,jk) = ua(ji,jj,jk) - ( zhke(ji+1,jj  ,jk) - zhke(ji,jj,jk) ) / e1u(ji,jj) 
    180                va(ji,jj,jk) = va(ji,jj,jk) - ( zhke(ji  ,jj+1,jk) - zhke(ji,jj,jk) ) / e2v(ji,jj) 
     179               ua(ji,jj,jk) = ua(ji,jj,jk) - ( zhke(ji+1,jj  ,jk) - zhke(ji,jj,jk) ) / e1u(ji,jj) * umask(ji,jj,jk) 
     180               va(ji,jj,jk) = va(ji,jj,jk) - ( zhke(ji  ,jj+1,jk) - zhke(ji,jj,jk) ) / e2v(ji,jj) * vmask(ji,jj,jk) 
    181181            END DO  
    182182         END DO 
  • branches/UKMO/dev_r8814_surge_modelling_Nemo4/NEMOGCM/NEMO/OPA_SRC/DYN/dynspg.F90

    r7753 r9120  
    142142            DO jj = 2, jpjm1 
    143143               DO ji = fs_2, fs_jpim1   ! vector opt. 
    144                   ua(ji,jj,jk) = ua(ji,jj,jk) + spgu(ji,jj) 
    145                   va(ji,jj,jk) = va(ji,jj,jk) + spgv(ji,jj) 
     144                  ua(ji,jj,jk) = ua(ji,jj,jk) + spgu(ji,jj) * umask(ji,jj,jk) 
     145                  va(ji,jj,jk) = va(ji,jj,jk) + spgv(ji,jj) * vmask(ji,jj,jk) 
    146146               END DO 
    147147            END DO 
  • branches/UKMO/dev_r8814_surge_modelling_Nemo4/NEMOGCM/NEMO/OPA_SRC/DYN/dynvor.F90

    r7913 r9120  
    304304               zx1 = zwx(ji-1,jj) + zwx(ji-1,jj+1) 
    305305               zx2 = zwx(ji  ,jj) + zwx(ji  ,jj+1) 
    306                pua(ji,jj,jk) = pua(ji,jj,jk) + r1_4 * r1_e1u(ji,jj) * ( zwz(ji  ,jj-1) * zy1 + zwz(ji,jj) * zy2 ) 
    307                pva(ji,jj,jk) = pva(ji,jj,jk) - r1_4 * r1_e2v(ji,jj) * ( zwz(ji-1,jj  ) * zx1 + zwz(ji,jj) * zx2 )  
     306               pua(ji,jj,jk) = pua(ji,jj,jk) + r1_4 * r1_e1u(ji,jj) * ( zwz(ji  ,jj-1) * zy1 + zwz(ji,jj) * zy2 ) * umask(ji,jj,jk) 
     307               pva(ji,jj,jk) = pva(ji,jj,jk) - r1_4 * r1_e2v(ji,jj) * ( zwz(ji-1,jj  ) * zx1 + zwz(ji,jj) * zx2 ) * vmask(ji,jj,jk) 
    308308            END DO   
    309309         END DO   
     
    424424               zvau =-r1_8 * r1_e2v(ji,jj) * (  zwx(ji-1,jj  ) + zwx(ji-1,jj+1)  & 
    425425                  &                           + zwx(ji  ,jj  ) + zwx(ji  ,jj+1)  ) 
    426                pua(ji,jj,jk) = pua(ji,jj,jk) + zuav * ( zwz(ji  ,jj-1) + zwz(ji,jj) ) 
    427                pva(ji,jj,jk) = pva(ji,jj,jk) + zvau * ( zwz(ji-1,jj  ) + zwz(ji,jj) ) 
     426               pua(ji,jj,jk) = pua(ji,jj,jk) + zuav * ( zwz(ji  ,jj-1) + zwz(ji,jj) ) * umask(ji,jj,jk) 
     427               pva(ji,jj,jk) = pva(ji,jj,jk) + zvau * ( zwz(ji-1,jj  ) + zwz(ji,jj) ) * vmask(ji,jj,jk) 
    428428            END DO   
    429429         END DO   
     
    591591               zva = - r1_12 * r1_e2v(ji,jj) * (  ztsw(ji,jj+1) * zwx(ji-1,jj+1) + ztse(ji,jj+1) * zwx(ji  ,jj+1)   & 
    592592                  &                             + ztnw(ji,jj  ) * zwx(ji-1,jj  ) + ztne(ji,jj  ) * zwx(ji  ,jj  ) ) 
    593                pua(ji,jj,jk) = pua(ji,jj,jk) + zua 
    594                pva(ji,jj,jk) = pva(ji,jj,jk) + zva 
     593               pua(ji,jj,jk) = pua(ji,jj,jk) + zua * umask(ji,jj,jk) 
     594               pva(ji,jj,jk) = pva(ji,jj,jk) + zva * vmask(ji,jj,jk) 
    595595            END DO   
    596596         END DO   
  • branches/UKMO/dev_r8814_surge_modelling_Nemo4/NEMOGCM/NEMO/OPA_SRC/DYN/dynzad.F90

    r7753 r9120  
    123123               zva = - ( zwvw(ji,jj,jk) + zwvw(ji,jj,jk+1) ) * r1_e1e2v(ji,jj) / e3v_n(ji,jj,jk) 
    124124               !                         ! add the trends to the general momentum trends 
    125                ua(ji,jj,jk) = ua(ji,jj,jk) + zua 
    126                va(ji,jj,jk) = va(ji,jj,jk) + zva 
     125               ua(ji,jj,jk) = ua(ji,jj,jk) + zua * umask(ji,jj,jk) 
     126               va(ji,jj,jk) = va(ji,jj,jk) + zva * vmask(ji,jj,jk) 
    127127            END DO   
    128128         END DO   
  • branches/UKMO/dev_r8814_surge_modelling_Nemo4/NEMOGCM/NEMO/OPA_SRC/SBC/tide.h90

    r4292 r9120  
    11   !!---------------------------------------------------------------------- 
    22   !! History :  3.2  !  2007  (O. Le Galloudec)  Original code 
     3   !!                 !  2017  (C O'Neill) Added components 20-31 
    34   !!---------------------------------------------------------------------- 
    45 
     
    2829   Wave(18) = tide(  'L2'     , 0.006694 ,    2   ,  2 , -1 ,  2 , -1 ,  0  , +180  ,  2   , -2   ,  0   ,  0   , 0 ,  215    ) 
    2930   Wave(19) = tide(  'T2'     , 0.006614 ,    2   ,  2 ,  0 , -1 ,  0 ,  1  ,    0  ,  0   ,  0   ,  0   ,  0   , 0 ,    0    ) 
     31   ! 
     32   Wave(20) = tide(  'MNS2'   , 0.000000 ,    2   ,  2 , -5 ,  4 ,  1 ,  0  ,    0  ,  4   , -4   ,  0   ,  0   , 0 ,    6    ) 
     33   Wave(21) = tide(  'Lam2'   , 0.001760 ,    2   ,  2 , -1 ,  0 ,  1 ,  0  , +180  ,  2   , -2   ,  0   ,  0   , 0 ,   78    ) 
     34   Wave(22) = tide(  'MSN2'   , 0.000000 ,    2   ,  2 ,  1 ,  0 ,  1 ,  0  ,    0  ,  2   , -2   ,  0   ,  2   , 0 ,    6    ) 
     35   Wave(23) = tide(  '2SM2'   , 0.000000 ,    2   ,  2 ,  2 , -2 ,  0 ,  0  ,    0  , -2   ,  2   ,  0   ,  0   , 0 ,   16    ) 
     36   Wave(24) = tide(  'MO3'    , 0.000000 ,    3   ,  3 , -4 ,  1 ,  0 ,  0  ,  +90  ,  2   , -2   ,  0   ,  0   , 0 ,   13    ) 
     37   Wave(25) = tide(  'MK3'    , 0.000000 ,    3   ,  3 , -2 ,  3 ,  0 ,  0  ,  -90  ,  2   , -2   , -1   ,  0   , 0 ,   10    ) 
     38   Wave(26) = tide(  'MN4'    , 0.000000 ,    4   ,  4 , -5 ,  4 ,  1 ,  0  ,    0  ,  4   , -4   ,  0   ,  0   , 0 ,    1    ) 
     39   Wave(27) = tide(  'MS4'    , 0.000000 ,    4   ,  4 , -2 ,  2 ,  0 ,  0  ,    0  ,  2   , -2   ,  0   ,  0   , 0 ,    2    ) 
     40   Wave(28) = tide(  'M6'     , 0.000000 ,    6   ,  6 , -6 ,  6 ,  0 ,  0  ,    0  ,  6   , -6   ,  0   ,  0   , 0 ,    4    ) 
     41   Wave(29) = tide(  '2MS6'   , 0.000000 ,    6   ,  6 , -4 ,  4 ,  0 ,  0  ,    0  ,  4   , -4   ,  0   ,  0   , 0 ,    6    ) 
     42   Wave(30) = tide(  '2MK6'   , 0.000000 ,    6   ,  6 , -4 ,  6 ,  0 ,  0  ,    0  ,  4   , -4   ,  0   , -2   , 0 ,    5    ) 
     43   Wave(31) = tide(  '3M2S2'  , 0.000000 ,    2   , 2  , -6 ,  6 ,  0 ,  0  ,    0  ,  6   , -6   ,  0   ,  0   , 0 ,   12    ) 
  • branches/UKMO/dev_r8814_surge_modelling_Nemo4/NEMOGCM/NEMO/OPA_SRC/SBC/tide_mod.F90

    r5215 r9120  
    1616   PUBLIC   tide_init_Wave   ! called by tideini and diaharm modules 
    1717 
    18    INTEGER, PUBLIC, PARAMETER ::   jpmax_harmo = 19   !: maximum number of harmonic 
     18   INTEGER, PUBLIC, PARAMETER ::   jpmax_harmo = 31   !: maximum number of harmonic 
    1919 
    2020   TYPE, PUBLIC ::    tide 
    21       CHARACTER(LEN=4) ::   cname_tide 
     21      CHARACTER(LEN=5) ::   cname_tide 
    2222      REAL(wp)         ::   equitide 
    2323      INTEGER          ::   nutide 
  • branches/UKMO/dev_r8814_surge_modelling_Nemo4/NEMOGCM/NEMO/OPA_SRC/SBC/tideini.F90

    r7646 r9120  
    4646      !!----------------------------------------------------------------------       
    4747      INTEGER  :: ji, jk 
    48       CHARACTER(LEN=4), DIMENSION(jpmax_harmo) :: clname 
     48      CHARACTER(LEN=5), DIMENSION(jpmax_harmo) :: clname 
    4949      INTEGER  ::   ios                 ! Local integer output status for namelist read 
    5050      ! 
  • branches/UKMO/dev_r8814_surge_modelling_Nemo4/NEMOGCM/NEMO/OPA_SRC/nemogcm.F90

    r8570 r9120  
    7878   USE dia25h         ! 25h mean output 
    7979   USE sbc_oce , ONLY : lk_oasis 
     80   USE dom_oce , ONLY : ln_2d 
    8081   USE wet_dry        ! Wetting and drying setting   (wad_init routine) 
    8182#if defined key_top 
     
    456457      !                                      ! Ocean physics 
    457458      !                                         ! Vertical physics 
    458                             CALL     zdf_init      ! namelist read 
     459      IF (.NOT. ln_2d)      CALL     zdf_init      ! namelist read 
    459460                            CALL zdf_bfr_init      ! bottom friction 
    460461      IF( lk_zdfric     )   CALL zdf_ric_init      ! Richardson number dependent Kz 
     
    465466          
    466467      !                                         ! Lateral physics 
    467                             CALL ldf_tra_init      ! Lateral ocean tracer physics 
     468      IF (.NOT. ln_2d)      CALL ldf_tra_init      ! Lateral ocean tracer physics 
    468469                            CALL ldf_eiv_init      ! eddy induced velocity param. 
    469470                            CALL ldf_dyn_init      ! Lateral ocean momentum physics 
    470471 
     472      IF (.NOT. ln_2d) THEN  ! No tracers in 2D mode 
    471473      !                                         ! Active tracers 
    472474                            CALL tra_qsr_init      ! penetrative solar radiation qsr 
     
    477479                            CALL tra_ldf_init      ! lateral mixing 
    478480                            CALL tra_zdf_init      ! vertical mixing and after tracer fields 
    479  
     481      ENDIF 
     482       
    480483      !                                         ! Dynamics 
    481484      IF( lk_c1d        )   CALL dyn_dmp_init      ! internal momentum damping 
     
    484487                            CALL dyn_ldf_init      ! lateral mixing 
    485488                            CALL dyn_hpg_init      ! horizontal gradient of Hydrostatic pressure 
    486                             CALL dyn_zdf_init      ! vertical diffusion 
     489      IF (.NOT. ln_2d)      CALL dyn_zdf_init      ! vertical diffusion 
    487490                            CALL dyn_spg_init      ! surface pressure gradient 
    488491 
  • branches/UKMO/dev_r8814_surge_modelling_Nemo4/NEMOGCM/NEMO/OPA_SRC/step.F90

    r7753 r9120  
    120120      !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
    121121      !  THERMODYNAMICS 
     122      IF ( .NOT. ln_2d ) THEN 
    122123                         CALL eos_rab( tsb, rab_b )       ! before local thermal/haline expension ratio at T-points 
    123124                         CALL eos_rab( tsn, rab_n )       ! now    local thermal/haline expension ratio at T-points 
    124125                         CALL bn2    ( tsb, rab_b, rn2b ) ! before Brunt-Vaisala frequency 
    125126                         CALL bn2    ( tsn, rab_n, rn2  ) ! now    Brunt-Vaisala frequency 
    126  
     127      ENDIF 
    127128      ! 
    128129      !  VERTICAL PHYSICS 
     
    184185      IF(.NOT.ln_linssh )   CALL dom_vvl_sf_nxt( kstp )  ! after vertical scale factors  
    185186                            CALL wzv           ( kstp )  ! now cross-level velocity  
    186                             CALL eos    ( tsn, rhd, rhop, gdept_n(:,:,:) )  ! now in situ density for hpg computation 
     187      IF( .NOT. ln_2d )     CALL eos    ( tsn, rhd, rhop, gdept_n(:,:,:) )  ! now in situ density for hpg computation 
    187188                             
    188189!!jc: fs simplification 
     
    222223 
    223224                         CALL dyn_bfr       ( kstp )  ! bottom friction 
    224                          CALL dyn_zdf       ( kstp )  ! vertical diffusion 
     225      IF (.NOT. ln_2d)   CALL dyn_zdf       ( kstp )  ! vertical diffusion 
    225226 
    226227      !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 
     
    252253      ! Active tracers                               
    253254      !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
     255      IF (.NOT. ln_2d) THEN  ! No tracers in 2D mode 
    254256                         tsa(:,:,:,:) = 0._wp         ! set tracer trends to zero 
    255257 
     
    274276                         CALL tra_zdf       ( kstp )  ! vertical mixing and after tracer fields 
    275277      IF( ln_zdfnpc  )   CALL tra_npc       ( kstp )  ! update after fields by non-penetrative convection 
     278      ENDIF ! not ln_2d 
    276279 
    277280      !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 
     
    292295!!  
    293296!!jc2: dynnxt must be the latest call. e3t_b are indeed updated in that routine 
    294                          CALL tra_nxt       ( kstp )  ! finalize (bcs) tracer fields at next time step and swap 
     297      IF (.NOT. ln_2d)   CALL tra_nxt       ( kstp )  ! finalize (bcs) tracer fields at next time step and swap 
    295298                         CALL dyn_nxt       ( kstp )  ! finalize (bcs) velocities at next time step and swap 
    296299                         CALL ssh_swp       ( kstp )  ! swap of sea surface height 
Note: See TracChangeset for help on using the changeset viewer.