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 8544 for branches/UKMO/ROMS_WAD_7832/NEMOGCM/CONFIG/CS15mini/MY_SRC/dynspg_ts.F90 – NEMO

Ignore:
Timestamp:
2017-09-19T17:41:15+02:00 (7 years ago)
Author:
deazer
Message:

Added reference level (above all potential wet points) to avoid negative depth bathymetry as a work around.
Require reference level to be emedded into the domain configuration file
uses ht_0 instead of ht_wd. This si still in the code but should be removed in time.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/UKMO/ROMS_WAD_7832/NEMOGCM/CONFIG/CS15mini/MY_SRC/dynspg_ts.F90

    r8403 r8544  
    421421              DO ji = 2, jpim1  
    422422                ll_tmp1 = MIN(   sshn(ji,jj)               ,   sshn(ji+1,jj) ) >                & 
    423                      &    MAX( -ht_wd(ji,jj)               , -ht_wd(ji+1,jj) ) .AND.            & 
    424                      &    MAX(   sshn(ji,jj) + ht_wd(ji,jj),   sshn(ji+1,jj) + ht_wd(ji+1,jj) ) & 
     423                     &    MAX( -ht_0(ji,jj)               , -ht_0(ji+1,jj) ) .AND.            & 
     424                     &    MAX(   sshn(ji,jj) + ht_0(ji,jj),   sshn(ji+1,jj) + ht_0(ji+1,jj) ) & 
    425425                     &                                                         > rn_wdmin1 + rn_wdmin2 
    426426                ll_tmp2 = ( ABS( sshn(ji+1,jj)             -   sshn(ji  ,jj))  > 1.E-12 ).AND.( & 
    427427                     &    MAX(   sshn(ji,jj)               ,   sshn(ji+1,jj) ) >                & 
    428                      &    MAX( -ht_wd(ji,jj)               , -ht_wd(ji+1,jj) ) + rn_wdmin1 + rn_wdmin2 ) 
     428                     &    MAX( -ht_0(ji,jj)               , -ht_0(ji+1,jj) ) + rn_wdmin1 + rn_wdmin2 ) 
    429429    
    430430                IF(ll_tmp1) THEN 
     
    432432                ELSE IF(ll_tmp2) THEN 
    433433                  ! no worries about  sshn(ji+1,jj) -  sshn(ji  ,jj) = 0, it won't happen ! here 
    434                   zcpx(ji,jj) = ABS( (sshn(ji+1,jj) + ht_wd(ji+1,jj) - sshn(ji,jj) - ht_wd(ji,jj)) & 
     434                  zcpx(ji,jj) = ABS( (sshn(ji+1,jj) + ht_0(ji+1,jj) - sshn(ji,jj) - ht_0(ji,jj)) & 
    435435                              &    / (sshn(ji+1,jj) -  sshn(ji  ,jj)) ) 
    436436                  zcpx(ji,jj) = max(min( zcpx(ji,jj) , 1.0_wp),0.0_wp) 
     
    441441          
    442442                ll_tmp1 = MIN(   sshn(ji,jj)               ,   sshn(ji,jj+1) ) >                & 
    443                      &    MAX( -ht_wd(ji,jj)               , -ht_wd(ji,jj+1) ) .AND.            & 
    444                      &    MAX(   sshn(ji,jj) + ht_wd(ji,jj),   sshn(ji,jj+1) + ht_wd(ji,jj+1) ) & 
     443                     &    MAX( -ht_0(ji,jj)               , -ht_0(ji,jj+1) ) .AND.            & 
     444                     &    MAX(   sshn(ji,jj) + ht_0(ji,jj),   sshn(ji,jj+1) + ht_0(ji,jj+1) ) & 
    445445                     &                                                         > rn_wdmin1 + rn_wdmin2 
    446446                ll_tmp2 = ( ABS( sshn(ji,jj)               -   sshn(ji,jj+1))  > 1.E-12 ).AND.( & 
    447447                     &    MAX(   sshn(ji,jj)               ,   sshn(ji,jj+1) ) >                & 
    448                      &    MAX( -ht_wd(ji,jj)               , -ht_wd(ji,jj+1) ) + rn_wdmin1 + rn_wdmin2 ) 
     448                     &    MAX( -ht_0(ji,jj)               , -ht_0(ji,jj+1) ) + rn_wdmin1 + rn_wdmin2 ) 
    449449    
    450450                IF(ll_tmp1) THEN 
     
    452452                ELSE IF(ll_tmp2) THEN 
    453453                  ! no worries about  sshn(ji,jj+1) -  sshn(ji,jj  ) = 0, it won't happen ! here 
    454                   zcpy(ji,jj) = ABS( (sshn(ji,jj+1) + ht_wd(ji,jj+1) - sshn(ji,jj) - ht_wd(ji,jj)) & 
     454                  zcpy(ji,jj) = ABS( (sshn(ji,jj+1) + ht_0(ji,jj+1) - sshn(ji,jj) - ht_0(ji,jj)) & 
    455455                              &    / (sshn(ji,jj+1) -  sshn(ji,jj  )) ) 
    456456                  zcpy(ji,jj) = max(min( zcpy(ji,jj) , 1.0_wp),0.0_wp) 
     
    697697                           ztwdmask(ji,jj) = 1._wp 
    698698                        ELSE IF ( zsshp2_e(ji,jj) + ht_0(ji,jj) >  rn_wdmin1 ) THEN 
    699                            !CEODztwdmask(ji,jj) = ( zsshp2_e(ji,jj) + ht_0(ji,jj) -  rn_wdmin1 ) * zwdramp 
    700                            ztwdmask(ji,jj) = (tanh(5._wp*( ( zsshp2_e(ji,jj) + ht_0(ji,jj) -  rn_wdmin1 )/rn_wdmin1)) )  
     699                           ztwdmask(ji,jj) = (tanh(50._wp*( ( zsshp2_e(ji,jj) + ht_0(ji,jj) -  rn_wdmin1 )/rn_wdmin1)) )  
    701700                        ELSE  
    702701                           ztwdmask(ji,jj) = 0._wp 
     
    889888              DO ji = 2, jpim1  
    890889                ll_tmp1 = MIN( zsshp2_e(ji,jj)               , zsshp2_e(ji+1,jj) ) >                & 
    891                      &    MAX(   -ht_wd(ji,jj)               ,   -ht_wd(ji+1,jj) ) .AND.            & 
    892                      &    MAX( zsshp2_e(ji,jj) + ht_wd(ji,jj), zsshp2_e(ji+1,jj) + ht_wd(ji+1,jj) ) & 
     890                     &    MAX(   -ht_0(ji,jj)               ,   -ht_0(ji+1,jj) ) .AND.            & 
     891                     &    MAX( zsshp2_e(ji,jj) + ht_0(ji,jj), zsshp2_e(ji+1,jj) + ht_0(ji+1,jj) ) & 
    893892                     &                                                             > rn_wdmin1 + rn_wdmin2 
    894893                ll_tmp2 = (ABS(zsshp2_e(ji,jj)               - zsshp2_e(ji+1,jj))  > 1.E-12 ).AND.( & 
    895894                     &    MAX( zsshp2_e(ji,jj)               , zsshp2_e(ji+1,jj) ) >                & 
    896                      &    MAX(   -ht_wd(ji,jj)               ,   -ht_wd(ji+1,jj) ) + rn_wdmin1 + rn_wdmin2 ) 
     895                     &    MAX(   -ht_0(ji,jj)               ,   -ht_0(ji+1,jj) ) + rn_wdmin1 + rn_wdmin2 ) 
    897896    
    898897                IF(ll_tmp1) THEN 
     
    900899                ELSE IF(ll_tmp2) THEN 
    901900                  ! no worries about  zsshp2_e(ji+1,jj) - zsshp2_e(ji  ,jj) = 0, it won't happen ! here 
    902                   zcpx(ji,jj) = ABS( (zsshp2_e(ji+1,jj) +    ht_wd(ji+1,jj) - zsshp2_e(ji,jj) - ht_wd(ji,jj)) & 
     901                  zcpx(ji,jj) = ABS( (zsshp2_e(ji+1,jj) +    ht_0(ji+1,jj) - zsshp2_e(ji,jj) - ht_0(ji,jj)) & 
    903902                              &    / (zsshp2_e(ji+1,jj) - zsshp2_e(ji  ,jj)) ) 
    904903                ELSE 
     
    907906          
    908907                ll_tmp1 = MIN( zsshp2_e(ji,jj)               , zsshp2_e(ji,jj+1) ) >                & 
    909                      &    MAX(   -ht_wd(ji,jj)               ,   -ht_wd(ji,jj+1) ) .AND.            & 
    910                      &    MAX( zsshp2_e(ji,jj) + ht_wd(ji,jj), zsshp2_e(ji,jj+1) + ht_wd(ji,jj+1) ) & 
     908                     &    MAX(   -ht_0(ji,jj)               ,   -ht_0(ji,jj+1) ) .AND.            & 
     909                     &    MAX( zsshp2_e(ji,jj) + ht_0(ji,jj), zsshp2_e(ji,jj+1) + ht_0(ji,jj+1) ) & 
    911910                     &                                                             > rn_wdmin1 + rn_wdmin2 
    912911                ll_tmp2 = (ABS(zsshp2_e(ji,jj)               - zsshp2_e(ji,jj+1))  > 1.E-12 ).AND.( & 
    913912                     &    MAX( zsshp2_e(ji,jj)               , zsshp2_e(ji,jj+1) ) >                & 
    914                      &    MAX(   -ht_wd(ji,jj)               ,   -ht_wd(ji,jj+1) ) + rn_wdmin1 + rn_wdmin2 ) 
     913                     &    MAX(   -ht_0(ji,jj)               ,   -ht_0(ji,jj+1) ) + rn_wdmin1 + rn_wdmin2 ) 
    915914    
    916915                IF(ll_tmp1) THEN 
     
    918917                ELSE IF(ll_tmp2) THEN 
    919918                  ! no worries about  zsshp2_e(ji,jj+1) - zsshp2_e(ji,jj  ) = 0, it won't happen ! here 
    920                   zcpy(ji,jj) = ABS( (zsshp2_e(ji,jj+1) +    ht_wd(ji,jj+1) - zsshp2_e(ji,jj) - ht_wd(ji,jj)) & 
     919                  zcpy(ji,jj) = ABS( (zsshp2_e(ji,jj+1) +    ht_0(ji,jj+1) - zsshp2_e(ji,jj) - ht_0(ji,jj)) & 
    921920                              &    / (zsshp2_e(ji,jj+1) - zsshp2_e(ji,jj  )) ) 
    922921                ELSE 
     
    10661065 
    10671066                  IF( ln_wd ) THEN 
    1068 !CEOD                    zhura = MAX(hu_0(ji,jj) + zsshu_a(ji,jj), rn_wdmin1) 
    1069 !CEOD                    zhvra = MAX(hv_0(ji,jj) + zsshv_a(ji,jj), rn_wdmin1) 
    10701067                    zhura = hu_0(ji,jj) + zsshu_a(ji,jj) 
    10711068                    zhvra = hv_0(ji,jj) + zsshv_a(ji,jj) 
     
    11081105         IF( .NOT.ln_linssh ) THEN                     !* Update ocean depth (variable volume case only) 
    11091106            IF( ln_wd ) THEN 
    1110 !CEOD              hu_e (:,:) = MAX(hu_0(:,:) + zsshu_a(:,:), rn_wdmin1) 
    1111 !CEOD              hv_e (:,:) = MAX(hv_0(:,:) + zsshv_a(:,:), rn_wdmin1) 
    11121107              hu_e (:,:) = hu_0(:,:) + zsshu_a(:,:) 
    11131108              hv_e (:,:) = hv_0(:,:) + zsshv_a(:,:) 
Note: See TracChangeset for help on using the changeset viewer.