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 5727 for branches/UKMO/2014_Surge_Modelling/NEMOGCM/NEMO/OPA_SRC/DYN/dynhpg.F90 – NEMO

Ignore:
Timestamp:
2015-09-10T19:05:13+02:00 (9 years ago)
Author:
rfurner
Message:

some bug fixes for wetting and drying elements...still not working though

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/UKMO/2014_Surge_Modelling/NEMOGCM/NEMO/OPA_SRC/DYN/dynhpg.F90

    r5066 r5727  
    395395        DO jj = 2, jpjm1 
    396396           DO ji = 2, jpim1 
    397              ll_tmp1 = MIN(sshn(ji,jj), sshn(ji+1,jj)) > MAX(-bathy(ji,jj), -bathy(ji+1,jj)) 
    398              ll_tmp2 = MAX(sshn(ji,jj), sshn(ji+1,jj)) > MAX(-bathy(ji,jj), -bathy(ji+1,jj)) +& 
     397             IF ( tmask(ji+1,jj,1) == 0._wp) THEN 
     398                zcpx(ji,jj) = 1.0_wp 
     399             ELSE 
     400                ll_tmp1 = MIN(sshn(ji,jj), sshn(ji+1,jj)) > MAX(-bathy(ji,jj), -bathy(ji+1,jj)) 
     401                ll_tmp2 = MAX(sshn(ji,jj), sshn(ji+1,jj)) > MAX(-bathy(ji,jj), -bathy(ji+1,jj)) +& 
     402                                                          & rn_wdmin1 + rn_wdmin2 
     403    
     404                IF(ll_tmp1) THEN 
     405                  zcpx(ji,jj) = 1.0_wp 
     406                ELSE IF(ll_tmp2) THEN 
     407                   ! no worries about sshn(ji+1,jj)-sshn(ji,jj) = 0, it won't happen ! here 
     408                   zcpx(ji,jj) = ABS((sshn(ji+1,jj) + bathy(ji+1,jj) - sshn(ji,jj) - bathy(ji,jj)) /& 
     409                               &     (sshn(ji+1,jj) - sshn(ji,jj))) 
     410                ELSE 
     411                  zcpx(ji,jj) = 0._wp 
     412                END IF 
     413             ENDIF 
     414         
     415             IF ( tmask(ji,jj+1,1) == 0._wp) THEN 
     416                zcpy(ji,jj) = 1.0_wp 
     417             ELSE 
     418                ll_tmp1 = MIN(sshn(ji,jj), sshn(ji,jj+1)) > MAX(-bathy(ji,jj), -bathy(ji,jj+1)) 
     419                ll_tmp2 = MAX(sshn(ji,jj), sshn(ji,jj+1)) > MAX(-bathy(ji,jj), -bathy(ji,jj+1)) +& 
    399420                                                       & rn_wdmin1 + rn_wdmin2 
    400421 
    401              IF(ll_tmp1) THEN 
    402                zcpx(ji,jj) = 1.0_wp 
    403              ELSE IF(ll_tmp2) THEN 
    404                ! no worries about sshn(ji+1,jj)-sshn(ji,jj) = 0, it won't happen ! here 
    405                zcpx(ji,jj) = ABS((sshn(ji+1,jj) + bathy(ji+1,jj) - sshn(ji,jj) - bathy(ji,jj)) /& 
    406                            &     (sshn(ji+1,jj) - sshn(ji,jj))) 
    407              ELSE 
    408                zcpx(ji,jj) = 0._wp 
    409              END IF 
    410       
    411              ll_tmp1 = MIN(sshn(ji,jj), sshn(ji,jj+1)) > MAX(-bathy(ji,jj), -bathy(ji,jj+1)) 
    412              ll_tmp2 = MAX(sshn(ji,jj), sshn(ji,jj+1)) > MAX(-bathy(ji,jj), -bathy(ji,jj+1)) +& 
    413                                                        & rn_wdmin1 + rn_wdmin2 
    414  
    415              IF(ll_tmp1) THEN 
    416                zcpy(ji,jj) = 1.0_wp 
    417              ELSE IF(ll_tmp2) THEN 
    418                ! no worries about sshn(ji,jj+1)-sshn(ji,jj) = 0, it won't happen ! here 
    419                zcpy(ji,jj) = ABS((sshn(ji,jj+1) + bathy(ji,jj+1) - sshn(ji,jj) - bathy(ji,jj)) /& 
    420                            &     (sshn(ji,jj+1) - sshn(ji,jj))) 
    421              ELSE 
    422                zcpy(ji,jj) = 0._wp 
    423              END IF 
     422                IF(ll_tmp1) THEN 
     423                  zcpy(ji,jj) = 1.0_wp 
     424                ELSE IF(ll_tmp2) THEN 
     425                  ! no worries about sshn(ji,jj+1)-sshn(ji,jj) = 0, it won't happen ! here 
     426                  zcpy(ji,jj) = ABS((sshn(ji,jj+1) + bathy(ji,jj+1) - sshn(ji,jj) - bathy(ji,jj)) /& 
     427                              &     (sshn(ji,jj+1) - sshn(ji,jj))) 
     428                ELSE 
     429                  zcpy(ji,jj) = 0._wp 
     430                END IF 
     431             ENDIF 
    424432           END DO 
    425433        END DO 
     
    450458 
    451459            ! add to the general momentum trend 
    452             ua(ji,jj,1) = ua(ji,jj,1) + zhpi(ji,jj,1) + zuap 
    453             va(ji,jj,1) = va(ji,jj,1) + zhpj(ji,jj,1) + zvap 
     460            ua(ji,jj,1) = ua(ji,jj,1) + ( zhpi(ji,jj,1) + zuap ) * umask(ji,jj,1) 
     461            va(ji,jj,1) = va(ji,jj,1) + ( zhpj(ji,jj,1) + zvap ) * vmask(ji,jj,1) 
    454462         END DO 
    455463      END DO 
     
    480488 
    481489               ! add to the general momentum trend 
    482                ua(ji,jj,jk) = ua(ji,jj,jk) + zhpi(ji,jj,jk) + zuap 
    483                va(ji,jj,jk) = va(ji,jj,jk) + zhpj(ji,jj,jk) + zvap 
     490               ua(ji,jj,jk) = ua(ji,jj,jk) + ( zhpi(ji,jj,jk) + zuap ) * umask(ji,jj,jk) 
     491               va(ji,jj,jk) = va(ji,jj,jk) + ( zhpj(ji,jj,jk) + zvap ) * vmask(ji,jj,jk) 
    484492            END DO 
    485493         END DO 
     
    546554#endif 
    547555      ! 
     556 
    548557      CALL wrk_dealloc( jpi,jpj,jpk, zhpi, zhpj ) 
    549558      IF(ln_wd) CALL wrk_dealloc( jpi,jpj, zcpx, zcpy ) 
     
    852861      REAL(wp), POINTER, DIMENSION(:,:,:) ::   zdept, zrhh 
    853862      REAL(wp), POINTER, DIMENSION(:,:,:) ::   zhpi, zu, zv, fsp, xsp, asp, bsp, csp, dsp 
     863      REAL(wp), POINTER, DIMENSION(:,:)   ::   sshu_n, sshv_n 
    854864      REAL(wp), POINTER, DIMENSION(:,:)   ::   zcpx, zcpy    !W/D pressure filter 
    855865      !!---------------------------------------------------------------------- 
     
    857867      CALL wrk_alloc( jpi,jpj,jpk, zhpi, zu, zv, fsp, xsp, asp, bsp, csp, dsp ) 
    858868      CALL wrk_alloc( jpi,jpj,jpk, zdept, zrhh ) 
     869      CALL wrk_alloc( jpi,jpj, sshu_n, sshv_n ) 
    859870      IF(ln_wd) CALL wrk_alloc( jpi,jpj, zcpx, zcpy ) 
    860871      ! 
     
    967978 
    968979      ! Z coordinate of U(ji,jj,1:jpkm1) and V(ji,jj,1:jpkm1) 
     980 
     981      ! The following modification "sshu_n -> sshn" is a big mistake, this 
     982      ! should never happen here, remember to correct this in NEMO v3.6 
     983      ! trunk.  H.L. 
     984 
     985      !prepare sshu_n and sshv_n 
     986      DO jj = 1, jpjm1 
     987        DO ji = 1, jpim1 
     988          sshu_n(ji,jj) = (e12u(ji,jj) * sshn(ji,jj) + e12u(ji+1, jj) * sshn(ji+1,jj)) * & 
     989                        & r1_e12u(ji,jj) * umask(ji,jj,1) * 0.5_wp 
     990          sshv_n(ji,jj) = (e12v(ji,jj) * sshn(ji,jj) + e12v(ji+1, jj) * sshn(ji,jj+1)) * & 
     991                        & r1_e12v(ji,jj) * vmask(ji,jj,1) * 0.5_wp 
     992        END DO 
     993      END DO 
     994 
     995      CALL lbc_lnk (sshu_n, 'U', 1.) 
     996      CALL lbc_lnk (sshv_n, 'V', 1.) 
     997 
    969998      DO jj = 2, jpjm1 
    970999        DO ji = 2, jpim1 
    971           zu(ji,jj,1) = - ( fse3u(ji,jj,1) - sshn(ji,jj) * znad)    ! probable bug: changed from sshu_n for ztilde compilation 
    972           zv(ji,jj,1) = - ( fse3v(ji,jj,1) - sshn(ji,jj) * znad)    ! probable bug: changed from sshv_n for ztilde compilation 
     1000!          zu(ji,jj,1) = - ( fse3u(ji,jj,1) - sshn(ji,jj) * znad)    ! probable bug: changed from sshu_n for ztilde compilation 
     1001!          zv(ji,jj,1) = - ( fse3v(ji,jj,1) - sshn(ji,jj) * znad)    ! probable bug: changed from sshv_n for ztilde compilation 
     1002          zu(ji,jj,1) = - ( fse3u(ji,jj,1) - sshu_n(ji,jj) * znad) 
     1003          zv(ji,jj,1) = - ( fse3v(ji,jj,1) - sshv_n(ji,jj) * znad) 
    9731004        END DO 
    9741005      END DO 
     
    11391170      CALL wrk_dealloc( jpi,jpj,jpk, zhpi, zu, zv, fsp, xsp, asp, bsp, csp, dsp ) 
    11401171      CALL wrk_dealloc( jpi,jpj,jpk, zdept, zrhh ) 
     1172      CALL wrk_dealloc( jpi,jpj, sshu_n, sshv_n ) 
    11411173      IF(ln_wd) CALL wrk_dealloc( jpi,jpj, zcpx, zcpy ) 
    11421174      ! 
Note: See TracChangeset for help on using the changeset viewer.