Changeset 8544


Ignore:
Timestamp:
2017-09-19T17:41:15+02:00 (3 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.

Location:
branches/UKMO/ROMS_WAD_7832/NEMOGCM/CONFIG
Files:
1 added
8 edited

Legend:

Unmodified
Added
Removed
  • branches/UKMO/ROMS_WAD_7832/NEMOGCM/CONFIG/CS15mini/EXP00/namelist_cfg

    r8403 r8544  
    479479   rn_wdmin1         =  0.20     ! Minimum wet depth on dried cells 
    480480   rn_wdmin2         =  0.0001  ! Tolerance of min wet depth on dried cells 
    481    rn_ssh_ref        =  0.0     ! reference level 
    482481   rn_wdld           =  2.5     ! Land elevation below which wetting/drying is a 
    483482   nn_wdit           =   20     ! Max iterations for W/D limiter 
  • branches/UKMO/ROMS_WAD_7832/NEMOGCM/CONFIG/CS15mini/MY_SRC/domvvl.F90

    r8403 r8544  
    889889                  vn   (:,:,:)   = vb  (:,:,:) 
    890890               ELSEIF( ln_wd .or. ln_rwd   ) THEN ! if not test case 
    891                   sshb(:,:) = 0.0_wp ! slwa 
    892                   sshn(:,:) = 0.0_wp ! slwa 
     891                  sshn(:,:) = -rn_ssh_ref 
     892                  sshb(:,:) = -rn_ssh_ref 
    893893 
    894894                  DO jj = 1, jpj 
    895895                     DO ji = 1, jpi 
    896                         IF( ht_wd(ji,jj) <=  rn_wdmin1 ) THEN ! if total depth is less than min depth 
    897  
    898                            sshb(ji,jj) = rn_wdmin1 - ht_wd(ji,jj)        
    899                            sshn(ji,jj) = rn_wdmin1 - ht_wd(ji,jj) 
    900                            ssha(ji,jj) = rn_wdmin1 - ht_wd(ji,jj) 
     896                        IF( ht_0(ji,jj)-rn_ssh_ref <  rn_wdmin1 ) THEN ! if total depth is less than min depth 
     897 
     898                           sshb(ji,jj) = rn_wdmin1 - (ht_0(ji,jj) ) 
     899                           sshn(ji,jj) = rn_wdmin1 - (ht_0(ji,jj) ) 
     900                           ssha(ji,jj) = rn_wdmin1 - (ht_0(ji,jj) ) 
    901901                        ENDIF 
    902902                     ENDDO 
  • branches/UKMO/ROMS_WAD_7832/NEMOGCM/CONFIG/CS15mini/MY_SRC/domzgr.F90

    r8403 r8544  
    3030   USE usrdef_zgr     ! user defined vertical coordinate system 
    3131   USE depth_e3       ! depth <=> e3 
    32    USE wet_dry, ONLY: ln_wd, ln_rwd, ht_wd 
     32   USE wet_dry, ONLY: ln_wd, ln_rwd, ht_wd,rn_ssh_ref 
    3333   ! 
    3434   USE in_out_manager ! I/O manager 
     
    260260      ! bathymetry with orography (wetting and drying only) 
    261261      IF( ln_wd .OR. ln_rwd )  CALL iom_get( inum, jpdom_data, 'ht_wd' , ht_wd  , lrowattr=ln_use_jattr ) 
     262      IF( ln_wd .OR. ln_rwd )  CALL iom_get( inum,  'rn_wd_ref_depth' , rn_ssh_ref   ) 
    262263      ! 
    263264      CALL iom_close( inum ) 
  • branches/UKMO/ROMS_WAD_7832/NEMOGCM/CONFIG/CS15mini/MY_SRC/dynhpg.F90

    r8403 r8544  
    455455           DO ji = 2, jpim1  
    456456             ll_tmp1 = MIN(   sshn(ji,jj)               ,   sshn(ji+1,jj) ) >                & 
    457                   &    MAX( -ht_wd(ji,jj)               , -ht_wd(ji+1,jj) ) .AND.            & 
    458                   &    MAX(   sshn(ji,jj) + ht_wd(ji,jj),   sshn(ji+1,jj) + ht_wd(ji+1,jj) ) & 
     457                  &    MAX( -ht_0(ji,jj)               , -ht_0(ji+1,jj) ) .AND.            & 
     458                  &    MAX(   sshn(ji,jj) + ht_0(ji,jj),   sshn(ji+1,jj) + ht_0(ji+1,jj) ) & 
    459459                  &                                                         > rn_wdmin1 + rn_wdmin2 
    460460             ll_tmp2 = ( ABS( sshn(ji,jj)               -   sshn(ji+1,jj) ) > 1.E-12 ) .AND. (             & 
    461461                  &    MAX(   sshn(ji,jj)               ,   sshn(ji+1,jj) ) >                & 
    462                   &    MAX( -ht_wd(ji,jj)               , -ht_wd(ji+1,jj) ) + rn_wdmin1 + rn_wdmin2 ) 
     462                  &    MAX( -ht_0(ji,jj)               , -ht_0(ji+1,jj) ) + rn_wdmin1 + rn_wdmin2 ) 
    463463 
    464464             IF(ll_tmp1) THEN 
     
    466466             ELSE IF(ll_tmp2) THEN 
    467467               ! no worries about  sshn(ji+1,jj) -  sshn(ji  ,jj) = 0, it won't happen ! here 
    468                zcpx(ji,jj) = ABS( (sshn(ji+1,jj) + ht_wd(ji+1,jj) - sshn(ji,jj) - ht_wd(ji,jj)) & 
     468               zcpx(ji,jj) = ABS( (sshn(ji+1,jj) + ht_0(ji+1,jj) - sshn(ji,jj) - ht_0(ji,jj)) & 
    469469                           &    / (sshn(ji+1,jj) -  sshn(ji  ,jj)) ) 
    470470             ELSE 
     
    473473       
    474474             ll_tmp1 = MIN(   sshn(ji,jj)               ,   sshn(ji,jj+1) ) >                & 
    475                   &    MAX( -ht_wd(ji,jj)               , -ht_wd(ji,jj+1) ) .AND.            & 
    476                   &    MAX(   sshn(ji,jj) + ht_wd(ji,jj),   sshn(ji,jj+1) + ht_wd(ji,jj+1) ) & 
     475                  &    MAX( -ht_0(ji,jj)               , -ht_0(ji,jj+1) ) .AND.            & 
     476                  &    MAX(   sshn(ji,jj) + ht_0(ji,jj),   sshn(ji,jj+1) + ht_0(ji,jj+1) ) & 
    477477                  &                                                         > rn_wdmin1 + rn_wdmin2 
    478478             ll_tmp2 = ( ABS( sshn(ji,jj)               -   sshn(ji,jj+1) ) > 1.E-12 ) .AND. (             & 
    479479                  &    MAX(   sshn(ji,jj)               ,   sshn(ji,jj+1) ) >                & 
    480                   &    MAX( -ht_wd(ji,jj)               , -ht_wd(ji,jj+1) ) + rn_wdmin1 + rn_wdmin2 ) 
     480                  &    MAX( -ht_0(ji,jj)               , -ht_0(ji,jj+1) ) + rn_wdmin1 + rn_wdmin2 ) 
    481481 
    482482             IF(ll_tmp1) THEN 
     
    484484             ELSE IF(ll_tmp2) THEN 
    485485               ! no worries about  sshn(ji,jj+1) -  sshn(ji,jj  ) = 0, it won't happen ! here 
    486                zcpy(ji,jj) = ABS( (sshn(ji,jj+1) + ht_wd(ji,jj+1) - sshn(ji,jj) - ht_wd(ji,jj)) & 
     486               zcpy(ji,jj) = ABS( (sshn(ji,jj+1) + ht_0(ji,jj+1) - sshn(ji,jj) - ht_0(ji,jj)) & 
    487487                           &    / (sshn(ji,jj+1) -  sshn(ji,jj  )) ) 
    488488             ELSE 
     
    707707           DO ji = 2, jpim1  
    708708             ll_tmp1 = MIN(   sshn(ji,jj)               ,   sshn(ji+1,jj) ) >                & 
    709                   &    MAX( -ht_wd(ji,jj)               , -ht_wd(ji+1,jj) ) .AND.            & 
    710                   &    MAX(   sshn(ji,jj) + ht_wd(ji,jj),   sshn(ji+1,jj) + ht_wd(ji+1,jj) ) & 
     709                  &    MAX( -ht_0(ji,jj)               , -ht_0(ji+1,jj) ) .AND.            & 
     710                  &    MAX(   sshn(ji,jj) + ht_0(ji,jj),   sshn(ji+1,jj) + ht_0(ji+1,jj) ) & 
    711711                  &                                                         > rn_wdmin1 + rn_wdmin2 
    712712             ll_tmp2 = ( ABS( sshn(ji,jj)               -   sshn(ji+1,jj) ) > 1.E-12 ) .AND. (             & 
    713713                  &    MAX(   sshn(ji,jj)               ,   sshn(ji+1,jj) ) >                & 
    714                   &    MAX( -ht_wd(ji,jj)               , -ht_wd(ji+1,jj) ) + rn_wdmin1 + rn_wdmin2 ) 
     714                  &    MAX( -ht_0(ji,jj)               , -ht_0(ji+1,jj) ) + rn_wdmin1 + rn_wdmin2 ) 
    715715 
    716716             IF(ll_tmp1) THEN 
     
    718718             ELSE IF(ll_tmp2) THEN 
    719719               ! no worries about  sshn(ji+1,jj) -  sshn(ji  ,jj) = 0, it won't happen ! here 
    720                zcpx(ji,jj) = ABS( (sshn(ji+1,jj) + ht_wd(ji+1,jj) - sshn(ji,jj) - ht_wd(ji,jj)) & 
     720               zcpx(ji,jj) = ABS( (sshn(ji+1,jj) + ht_0(ji+1,jj) - sshn(ji,jj) - ht_0(ji,jj)) & 
    721721                           &    / (sshn(ji+1,jj) -  sshn(ji  ,jj)) ) 
    722722             ELSE 
     
    725725       
    726726             ll_tmp1 = MIN(   sshn(ji,jj)               ,   sshn(ji,jj+1) ) >                & 
    727                   &    MAX( -ht_wd(ji,jj)               , -ht_wd(ji,jj+1) ) .AND.            & 
    728                   &    MAX(   sshn(ji,jj) + ht_wd(ji,jj),   sshn(ji,jj+1) + ht_wd(ji,jj+1) ) & 
     727                  &    MAX( -ht_0(ji,jj)               , -ht_0(ji,jj+1) ) .AND.            & 
     728                  &    MAX(   sshn(ji,jj) + ht_0(ji,jj),   sshn(ji,jj+1) + ht_0(ji,jj+1) ) & 
    729729                  &                                                         > rn_wdmin1 + rn_wdmin2 
    730730             ll_tmp2 = ( ABS( sshn(ji,jj)               -   sshn(ji,jj+1) ) > 1.E-12 ) .AND. (             & 
    731731                  &    MAX(   sshn(ji,jj)               ,   sshn(ji,jj+1) ) >                & 
    732                   &    MAX( -ht_wd(ji,jj)               , -ht_wd(ji,jj+1) ) + rn_wdmin1 + rn_wdmin2 ) 
     732                  &    MAX( -ht_0(ji,jj)               , -ht_0(ji,jj+1) ) + rn_wdmin1 + rn_wdmin2 ) 
    733733 
    734734             IF(ll_tmp1) THEN 
     
    736736             ELSE IF(ll_tmp2) THEN 
    737737               ! no worries about  sshn(ji,jj+1) -  sshn(ji,jj  ) = 0, it won't happen ! here 
    738                zcpy(ji,jj) = ABS( (sshn(ji,jj+1) + ht_wd(ji,jj+1) - sshn(ji,jj) - ht_wd(ji,jj)) & 
     738               zcpy(ji,jj) = ABS( (sshn(ji,jj+1) + ht_0(ji,jj+1) - sshn(ji,jj) - ht_0(ji,jj)) & 
    739739                           &    / (sshn(ji,jj+1) -  sshn(ji,jj  )) ) 
    740740             ELSE 
     
    10061006           DO ji = 2, jpim1  
    10071007             ll_tmp1 = MIN(   sshn(ji,jj)               ,   sshn(ji+1,jj) ) >                & 
    1008                   &    MAX( -ht_wd(ji,jj)               , -ht_wd(ji+1,jj) ) .AND.            & 
    1009                   &    MAX(   sshn(ji,jj) + ht_wd(ji,jj),   sshn(ji+1,jj) + ht_wd(ji+1,jj) ) & 
     1008                  &    MAX( -ht_0(ji,jj)               , -ht_0(ji+1,jj) ) .AND.            & 
     1009                  &    MAX(   sshn(ji,jj) + ht_0(ji,jj),   sshn(ji+1,jj) + ht_0(ji+1,jj) ) & 
    10101010                  &                                                         > rn_wdmin1 + rn_wdmin2 
    10111011             ll_tmp2 = ( ABS( sshn(ji,jj)               -   sshn(ji+1,jj) ) > 1.E-12 ) .AND. (             & 
    10121012                  &    MAX(   sshn(ji,jj)               ,   sshn(ji+1,jj) ) >                & 
    1013                   &    MAX( -ht_wd(ji,jj)               , -ht_wd(ji+1,jj) ) + rn_wdmin1 + rn_wdmin2 ) 
     1013                  &    MAX( -ht_0(ji,jj)               , -ht_0(ji+1,jj) ) + rn_wdmin1 + rn_wdmin2 ) 
    10141014 
    10151015             IF(ll_tmp1) THEN 
     
    10171017             ELSE IF(ll_tmp2) THEN 
    10181018               ! no worries about  sshn(ji+1,jj) -  sshn(ji  ,jj) = 0, it won't happen ! here 
    1019                zcpx(ji,jj) = ABS( (sshn(ji+1,jj) + ht_wd(ji+1,jj) - sshn(ji,jj) - ht_wd(ji,jj)) & 
     1019               zcpx(ji,jj) = ABS( (sshn(ji+1,jj) + ht_0(ji+1,jj) - sshn(ji,jj) - ht_0(ji,jj)) & 
    10201020                           &    / (sshn(ji+1,jj) -  sshn(ji  ,jj)) ) 
    10211021               
     
    10261026       
    10271027             ll_tmp1 = MIN(   sshn(ji,jj)               ,   sshn(ji,jj+1) ) >                & 
    1028                   &    MAX( -ht_wd(ji,jj)               , -ht_wd(ji,jj+1) ) .AND.            & 
    1029                   &    MAX(   sshn(ji,jj) + ht_wd(ji,jj),   sshn(ji,jj+1) + ht_wd(ji,jj+1) ) & 
     1028                  &    MAX( -ht_0(ji,jj)               , -ht_0(ji,jj+1) ) .AND.            & 
     1029                  &    MAX(   sshn(ji,jj) + ht_0(ji,jj),   sshn(ji,jj+1) + ht_0(ji,jj+1) ) & 
    10301030                  &                                                         > rn_wdmin1 + rn_wdmin2 
    10311031             ll_tmp2 = ( ABS( sshn(ji,jj)               -   sshn(ji,jj+1) ) > 1.E-12 ) .AND. (             & 
    10321032                  &    MAX(   sshn(ji,jj)               ,   sshn(ji,jj+1) ) >                & 
    1033                   &    MAX( -ht_wd(ji,jj)               , -ht_wd(ji,jj+1) ) + rn_wdmin1 + rn_wdmin2 ) 
     1033                  &    MAX( -ht_0(ji,jj)               , -ht_0(ji,jj+1) ) + rn_wdmin1 + rn_wdmin2 ) 
    10341034 
    10351035             IF(ll_tmp1) THEN 
     
    10371037             ELSE IF(ll_tmp2) THEN 
    10381038               ! no worries about  sshn(ji,jj+1) -  sshn(ji,jj  ) = 0, it won't happen ! here 
    1039                zcpy(ji,jj) = ABS( (sshn(ji,jj+1) + ht_wd(ji,jj+1) - sshn(ji,jj) - ht_wd(ji,jj)) & 
     1039               zcpy(ji,jj) = ABS( (sshn(ji,jj+1) + ht_0(ji,jj+1) - sshn(ji,jj) - ht_0(ji,jj)) & 
    10401040                           &    / (sshn(ji,jj+1) -  sshn(ji,jj  )) ) 
    10411041                zcpy(ji,jj) = max(min( zcpy(ji,jj) , 1.0_wp),0.0_wp) 
  • 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(:,:) 
  • branches/UKMO/ROMS_WAD_7832/NEMOGCM/CONFIG/CS15mini/MY_SRC/usrdef_istate.F90

    r8403 r8544  
    1414   !!---------------------------------------------------------------------- 
    1515   USE par_oce        ! ocean space and time domain 
     16   USE dom_oce        ! ocean space and time domain 
    1617   USE phycst         ! physical constants 
    1718   USE wet_dry        ! Wetting and drying 
     
    8586 
    8687! subtract the height of z=0 above the geoid (this allows z = 0 to be higher than all points that may become wet)    
    87       pssh(:,:) = pssh(:,:) - rn_ssh_ref 
     88      pssh(:,:) =  -rn_ssh_ref 
    8889 
    8990      ! 
     
    9293      do jj = 1,jpj 
    9394         do ji = 1,jpi 
    94             IF( ht_wd(ji,jj) + pssh(ji,jj) < rn_wdmin1 ) THEN 
    95                pssh(ji,jj) = ptmask(ji,jj,1)*( rn_wdmin1 - ht_wd(ji,jj) ) 
     95            IF( ht_0(ji,jj) + pssh(ji,jj) < rn_wdmin1 ) THEN 
     96               pssh(ji,jj) = ptmask(ji,jj,1)*( rn_wdmin1 - (ht_0(ji,jj)) ) 
    9697            ENDIF 
    9798         end do 
  • branches/UKMO/ROMS_WAD_7832/NEMOGCM/CONFIG/CS15mini/MY_SRC/wet_dry.F90

    r8403 r8544  
    7373      !!---------------------------------------------------------------------- 
    7474      NAMELIST/namwad/ ln_wd, ln_rwd, rn_wdmin0, ln_rwd, rn_wdmin1, rn_wdmin2, rn_wdld, nn_wdit, ln_wd_diag, ln_rwd_bc, & 
    75                      & rn_ssh_ref, rn_ht_0, jn_wd_i, jn_wd_j, jn_wd_k,ln_rwd_rmp 
     75                     & rn_ht_0, jn_wd_i, jn_wd_j, jn_wd_k,ln_rwd_rmp 
    7676 
    7777      INTEGER  ::   ios                 ! Local integer output status for namelist read 
     
    104104         WRITE(numout,*) '      T => baroclinic u,v = 0 at dry pts: ln_rwd_bc = ', ln_rwd_bc      
    105105         WRITE(numout,*) '      use a ramp for rwd limiter:      ln_rwd_rmp   = ', ln_rwd_rmp 
    106          WRITE(numout,*) '      height of z = 0 above the geoid: rn_ssh_ref   = ', rn_ssh_ref 
    107106         WRITE(numout,*) '      the height (z) at which ht_0 = 0:rn_ht_0      = ', rn_ht_0   
    108107         WRITE(numout,*) '      i-index for diagnostic point     jn_wd_i      = ', jn_wd_i 
     
    111110      ENDIF 
    112111      ! 
    113 ! CEOD .OR. ln_rwd added to prevent segmentation errors  
    114112      IF(ln_wd .OR. ln_rwd) THEN 
    115113         ALLOCATE( wdmask(jpi,jpj), ht_wd(jpi,jpj),  STAT=ierr ) 
     
    189187 
    190188             IF( tmask(ji, jj, 1) < 0.5_wp ) CYCLE   ! we don't care about land cells 
    191              IF( ht_wd(ji,jj) > zdepwd )      CYCLE   ! and cells which are unlikely to dry 
     189             IF( ht_0(ji,jj)-rn_ssh_ref > zdepwd )      CYCLE   ! and cells which are unlikely to dry 
    192190 
    193191              zflxp(ji,jj) = max(zflxu(ji,jj), 0._wp) - min(zflxu(ji-1,jj),   0._wp) + & 
     
    196194                           & min(zflxv(ji,jj), 0._wp) - max(zflxv(ji,  jj-1), 0._wp)  
    197195 
    198               zdep2 = ht_wd(ji,jj) + sshb1(ji,jj) - rn_wdmin1 
     196              zdep2 = ht_0(ji,jj) + sshb1(ji,jj) - rn_wdmin1 
    199197              IF(zdep2 .le. 0._wp) THEN  !add more safty, but not necessary 
    200                 sshb1(ji,jj) = rn_wdmin1 - ht_wd(ji,jj) 
     198                sshb1(ji,jj) = rn_wdmin1 - ht_0(ji,jj) 
    201199                IF(zflxu(ji,  jj) > 0._wp) zwdlmtu(ji  ,jj) = 0._wp 
    202200                IF(zflxu(ji-1,jj) < 0._wp) zwdlmtu(ji-1,jj) = 0._wp 
     
    211209! slwa 
    212210! HPG limiter from jholt 
    213       wdramp(:,:) = min((ht_wd(:,:) + sshb1(:,:) - rn_wdmin1)/(rn_wdmin0 - rn_wdmin1),1.0_wp) 
     211      wdramp(:,:) = min((ht_0(:,:) + sshb1(:,:) - rn_wdmin1)/(rn_wdmin0 - rn_wdmin1),1.0_wp) 
    214212!      write(6,*)'wdramp ',wdramp(10,10),wdramp(10,11) 
    215213!jth assume don't need a lbc_lnk here 
     
    238236         
    239237                 IF( tmask(ji, jj, 1) < 0.5_wp ) CYCLE  
    240                  IF( ht_wd(ji,jj) > zdepwd )      CYCLE 
     238                 IF( ht_0(ji,jj) > zdepwd )      CYCLE 
    241239         
    242240                 ztmp = e1e2t(ji,jj) 
     
    248246           
    249247                 zdep1 = (zzflxp + zzflxn) * z2dt / ztmp 
    250                  zdep2 = ht_wd(ji,jj) + sshb1(ji,jj) - rn_wdmin1 - z2dt * sshemp(ji,jj) 
     248                 zdep2 = ht_0(ji,jj) + sshb1(ji,jj) - rn_wdmin1 - z2dt * sshemp(ji,jj) 
    251249           
    252250                 IF( zdep1 > zdep2 ) THEN 
     
    362360 
    363361             IF( tmask(ji, jj, 1 ) < 0.5_wp) CYCLE   ! we don't care about land cells 
    364              IF( ht_wd(ji,jj) > zdepwd )      CYCLE   ! and cells which are unlikely to dry 
     362             IF( ht_0(ji,jj) > zdepwd )      CYCLE   ! and cells which are unlikely to dry 
    365363 
    366364              zflxp(ji,jj) = max(zflxu(ji,jj), 0._wp) - min(zflxu(ji-1,jj),   0._wp) + & 
     
    369367                           & min(zflxv(ji,jj), 0._wp) - max(zflxv(ji,  jj-1), 0._wp)  
    370368 
    371               zdep2 = ht_wd(ji,jj) + sshn_e(ji,jj) - rn_wdmin1 
     369              zdep2 = ht_0(ji,jj) + sshn_e(ji,jj) - rn_wdmin1 
    372370              IF(zdep2 .le. 0._wp) THEN  !add more safety, but not necessary 
    373                 sshn_e(ji,jj) = rn_wdmin1 - ht_wd(ji,jj) 
     371                sshn_e(ji,jj) = rn_wdmin1 - ht_0(ji,jj) 
    374372                IF(zflxu(ji,  jj) > 0._wp) zwdlmtu(ji  ,jj) = 0._wp 
    375373                IF(zflxu(ji-1,jj) < 0._wp) zwdlmtu(ji-1,jj) = 0._wp 
     
    393391         
    394392                 IF( tmask(ji, jj, 1 ) < 0.5_wp) CYCLE  
    395                  IF( ht_wd(ji,jj) > zdepwd )      CYCLE 
     393                 IF( ht_0(ji,jj) > zdepwd )      CYCLE 
    396394         
    397395                 ztmp = e1e2t(ji,jj) 
     
    403401           
    404402                 zdep1 = (zzflxp + zzflxn) * z2dt / ztmp 
    405                  zdep2 = ht_wd(ji,jj) + sshn_e(ji,jj) - rn_wdmin1 - z2dt * zssh_frc(ji,jj) 
     403                 zdep2 = ht_0(ji,jj) + sshn_e(ji,jj) - rn_wdmin1 - z2dt * zssh_frc(ji,jj) 
    406404           
    407405                 IF(zdep1 > zdep2) THEN 
  • branches/UKMO/ROMS_WAD_7832/NEMOGCM/CONFIG/TEST_CASES/cfg.txt

    r7715 r8544  
    44SAS_BIPER OPA_SRC SAS_SRC LIM_SRC_3 NST_SRC 
    55ISOMIP OPA_SRC 
     6WAD7_SCOORD 
     7WAD7_SCOORD 
     8WAD7SCOORD 
     9WAD7SCOORD OPA_SRC 
     10WAD7 OPA_SRC 
     11WAD7LONG OPA_SRC 
Note: See TracChangeset for help on using the changeset viewer.