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 for branches/UKMO/dev_r8814_surge_modelling_Nemo4/NEMOGCM/NEMO/OPA_SRC/DYN – NEMO

Ignore:
Timestamp:
2017-12-18T18:29:02+01:00 (7 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/NEMO/OPA_SRC/DYN
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • 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   
Note: See TracChangeset for help on using the changeset viewer.