Changeset 8870


Ignore:
Timestamp:
2017-12-01T10:48:12+01:00 (3 years ago)
Author:
deazer
Message:

Changed WAD option names to Iterative and Directional
Removed old Diagnostics
Updated Domain CFG to allow domain generation with ref height for wad cases
Cleaned up TEST_CASES/cfg.txt file (need to not include WAD2 etc)
TEST caaes run ok
SETTE runs OK
AMM15 5 level runs OK

Location:
branches/UKMO/ROMS_WAD_7832/NEMOGCM
Files:
23 edited

Legend:

Unmodified
Added
Removed
  • branches/UKMO/ROMS_WAD_7832/NEMOGCM/CONFIG/SHARED/namelist_ref

    r8841 r8870  
    108108/ 
    109109!----------------------------------------------------------------------- 
    110 &namwad        !   Wetting and drying                                   (default F) 
    111 !----------------------------------------------------------------------- 
    112    ln_wd       = .false.   !  T/F activation of wetting and drying 
    113    rn_wdmin1   =  0.1      !  Minimum wet depth on dried cells 
    114    rn_wdmin2   =  0.01     !  Tolerance of min wet depth on dried cells 
    115    rn_wdld     =  20.0     !  Land elevation below which wetting/drying is allowed 
    116    nn_wdit     =  10       !  Max iterations for W/D limiter 
     110&namwad  !   Wetting and drying  default it no WAD 
     111!----------------------------------------------------------------------- 
     112   ln_wd_il          = .false   ! T/F activation of iterative limiter for  wetting and drying scheme 
     113   ln_wd_dl          = .false.   ! T/F activation of directional llimiter for wetting drying scheme 
     114   ln_wd_dl_bc       = .false.   ! T/F Directional limiteer Baroclinic option 
     115   ln_wd_dl_rmp      = .false.   ! T/F Turn on directional limiter ramp 
     116   rn_wdmin0         =  0.30    ! dpoth at which wetting/drying starts 
     117   rn_wdmin1         =  0.2     ! Minimum wet depth on dried cells 
     118   rn_wdmin2         =  0.0001  ! Tolerance of min wet depth on dried cells 
     119   rn_wdld           =  2.5     ! Land elevation below which wetting/drying is allowed 
     120   nn_wdit           =   20     ! Max iterations for W/D limiter 
    117121/ 
    118122!----------------------------------------------------------------------- 
  • branches/UKMO/ROMS_WAD_7832/NEMOGCM/CONFIG/TEST_CASES/WAD/EXP00/namelist_cfg

    r8865 r8870  
    444444&namwad  !   Wetting and drying 
    445445!----------------------------------------------------------------------- 
    446    ln_wd             = .false  ! T/F activation of NOC  wetting and drying scheme 
    447    ln_rwd            = .true.   ! T/F activation of ROMS wetting and drying scheme 
    448    ln_rwd_bc         = .true. 
    449    ln_rwd_rmp        = .true.   ! Turn on the limiter 
    450    ln_wd_diag        = .false.   ! T/F activation of diagnostics for ROMS wd scheme 
    451    rn_wdmin0         =  0.30     ! Minimum wet depth on dried cells 
     446   ln_wd_il          = .false   ! T/F activation of iterative limiter for  wetting and drying scheme 
     447   ln_wd_dl          = .true.   ! T/F activation of directional llimiter for wetting drying scheme 
     448   ln_wd_dl_bc       = .true.   ! T/F Directional limiteer Baroclinic option 
     449   ln_wd_dl_rmp      = .true.   ! T/F Turn on directional limiter ramp 
     450   rn_wdmin0         =  0.30    ! dpoth at which wetting/drying starts 
    452451   rn_wdmin1         =  0.2     ! Minimum wet depth on dried cells 
    453452   rn_wdmin2         =  0.0001  ! Tolerance of min wet depth on dried cells 
    454453   rn_wdld           =  2.5     ! Land elevation below which wetting/drying is allowed 
    455454   nn_wdit           =   20     ! Max iterations for W/D limiter 
    456    jn_wd_i           =  22      ! i index of diagnostics 
    457    jn_wd_j           =   3      ! j index of diagnostics 
    458   
    459 / 
     455/ 
  • branches/UKMO/ROMS_WAD_7832/NEMOGCM/CONFIG/TEST_CASES/WAD/MY_SRC/domain.F90

    r8865 r8870  
    674674      ENDIF 
    675675      ! 
    676       !IF( ln_wd  .or. ln_rwd ) THEN              ! wetting and drying domain 
    677       IF( ln_wd   ) THEN              ! wetting and drying domain 
     676      IF( ln_wd_il .or. ln_wd_dl   ) THEN              ! wetting and drying domain 
    678677         CALL iom_rstput( 0, 0, inum, 'ht_0'   , ht_0   , ktype = jp_r8 ) 
    679678      ENDIF 
  • branches/UKMO/ROMS_WAD_7832/NEMOGCM/CONFIG/TEST_CASES/WAD/MY_SRC/stpctl.F90

    r8865 r8870  
    2222   USE lib_mpp         ! distributed memory computing 
    2323   USE lib_fortran     ! Fortran routines library  
    24 !   USE wet_dry,  ONLY: ln_wd, ln_rwd , rn_ssh_ref    ! reference depth for negative bathy 
    2524 
    2625   IMPLICIT NONE 
     
    151150      DO jj = 1, jpj 
    152151         DO ji = 1, jpi 
    153 !            IF( (ln_wd .OR. ln_rwd)) THEN 
    154 !               IF( tmask(ji,jj,1) == 1) zsshmax = MAX( zsshmax, ABS(sshn(ji,jj)+rn_ssh_ref) ) 
    155 !            ELSE 
    156152               IF( tmask(ji,jj,1) == 1) zsshmax = MAX( zsshmax, ABS(sshn(ji,jj)) ) 
    157 !            ENDIF 
    158153         END DO 
    159154      END DO 
  • branches/UKMO/ROMS_WAD_7832/NEMOGCM/CONFIG/TEST_CASES/WAD/MY_SRC/usrdef_istate.F90

    r8865 r8870  
    178178      do jj = 1,jpj 
    179179         do ji = 1,jpi 
    180             IF( ht_wd(ji,jj) + pssh(ji,jj) < rn_wdmin1 ) THEN 
    181                pssh(ji,jj) = ptmask(ji,jj,1)*( rn_wdmin1 - ht_wd(ji,jj) ) 
     180            IF( ht_0(ji,jj) + pssh(ji,jj) < rn_wdmin1 ) THEN 
     181               pssh(ji,jj) = ptmask(ji,jj,1)*( rn_wdmin1 - ht_0(ji,jj) ) 
    182182            ENDIF 
    183183         end do 
  • branches/UKMO/ROMS_WAD_7832/NEMOGCM/CONFIG/TEST_CASES/cfg.txt

    r8865 r8870  
    44SAS_BIPER OPA_SRC SAS_SRC LIM_SRC_3 NST_SRC 
    55ISOMIP OPA_SRC 
    6 WAD7_SCOORD 
    7 WAD7_SCOORD 
    8 WAD7SCOORD 
    9 WAD7SCOORD OPA_SRC 
    10 WAD7 OPA_SRC 
    11 WAD7LONG OPA_SRC 
    12 WAD2 OPA_SRC 
  • branches/UKMO/ROMS_WAD_7832/NEMOGCM/NEMO/OPA_SRC/BDY/bdydyn2d.F90

    r8865 r8870  
    170170         ii = idx%nbi(jb,igrd) 
    171171         ij = idx%nbj(jb,igrd) 
    172          IF( ln_wd .OR. ln_rwd ) THEN 
     172         IF( ln_wd_il .OR. ln_wd_dl ) THEN 
    173173            spgu(ii, ij) = dta%ssh(jb)  - rn_ssh_ref  
    174174         ELSE 
  • branches/UKMO/ROMS_WAD_7832/NEMOGCM/NEMO/OPA_SRC/DIA/diawri.F90

    r8865 r8870  
    154154         CALL iom_put( "e3tdef"  , ( ( e3t_n(:,:,:) - e3t_0(:,:,:) ) / e3t_0(:,:,:) * 100 * tmask(:,:,:) ) ** 2 ) 
    155155 
    156       IF( (ln_wd .OR. ln_rwd)) THEN 
     156      IF( (ln_wd_il .OR. ln_wd_dl )) THEN 
    157157         CALL iom_put( "ssh" , sshn+rn_ssh_ref )                 ! sea surface height !bring it back to the reference need wad if here 
    158158      ELSE 
  • branches/UKMO/ROMS_WAD_7832/NEMOGCM/NEMO/OPA_SRC/DOM/domain.F90

    r8865 r8870  
    3939   USE domc1d         ! 1D configuration: column location 
    4040   USE dyncor_c1d     ! 1D configuration: Coriolis term    (cor_c1d routine) 
    41    USE wet_dry        ! wetting and drying 
     41   USE wet_dry,   ONLY :   ln_wd_il, ln_wd_dl 
    4242   ! 
    4343   USE in_out_manager ! I/O manager 
     
    674674      ENDIF 
    675675      ! 
    676       IF( ln_wd  .or. ln_rwd ) THEN              ! wetting and drying domain 
     676      IF( ln_wd_il  .or. ln_wd_dl ) THEN              ! wetting and drying domain 
    677677         CALL iom_rstput( 0, 0, inum, 'ht_0'   , ht_0   , ktype = jp_r8 ) 
    678678      ENDIF 
  • branches/UKMO/ROMS_WAD_7832/NEMOGCM/NEMO/OPA_SRC/DOM/domvvl.F90

    r8865 r8870  
    680680      ! 
    681681      INTEGER ::   ji, jj, jk                                       ! dummy loop indices 
    682       REAL(wp) ::  zlnwd                                            ! =1./0. when ln_wd = T/F 
     682      REAL(wp) ::  zlnwd                                            ! =1./0. when ln_wd_il = T/F 
    683683      !!---------------------------------------------------------------------- 
    684684      ! 
    685685      IF( nn_timing == 1 )   CALL timing_start('dom_vvl_interpol') 
    686686      ! 
    687       IF(ln_wd) THEN 
     687      IF(ln_wd_il) THEN 
    688688        zlnwd = 1.0_wp 
    689689      ELSE 
     
    877877            ! 
    878878 
    879 ! MJB ln_rwd edits start here - these are essential  
    880  
    881             IF( (ln_wd .OR. ln_rwd)) THEN  
     879! MJB ln_wd edits start here - these are essential  
     880 
     881            IF( (ln_wd_il .OR. ln_wd_dl)) THEN  
    882882 
    883883              ! Wetting and drying test case 
     
    888888                  un   (:,:,:)   = ub  (:,:,:) 
    889889                  vn   (:,:,:)   = vb  (:,:,:) 
    890                ELSEIF( ln_wd .or. ln_rwd   ) THEN ! if not test case 
     890               ELSEIF( ln_wd_il .or. ln_wd_dl   ) THEN ! if not test case 
    891891                  sshn(:,:) = -rn_ssh_ref 
    892892                  sshb(:,:) = -rn_ssh_ref 
     
    902902                     ENDDO 
    903903                  ENDDO 
    904                ENDIF !If wad elseif ln_wd or ln_rwd 
     904               ENDIF !If wad elseif ln_wd_il or ln_wd_dl 
    905905 
    906906               ! Adjust vertical metrics for all wad 
  • branches/UKMO/ROMS_WAD_7832/NEMOGCM/NEMO/OPA_SRC/DOM/domwri.F90

    r8865 r8870  
    1818   USE dom_oce         ! ocean space and time domain 
    1919   USE phycst ,   ONLY :   rsmall 
    20    USE wet_dry,   ONLY :   ln_wd, ln_rwd 
     20   USE wet_dry,   ONLY :   ln_wd_il, ln_wd_dl 
    2121   ! 
    2222   USE in_out_manager  ! I/O manager 
     
    198198      ENDIF 
    199199      ! 
    200       IF( ln_wd .OR. ln_rwd ) CALL iom_rstput( 0, 0, inum, 'ht_0'   , ht_0   , ktype = jp_r8 ) 
     200      IF( ln_wd_il .OR. ln_wd_dl ) CALL iom_rstput( 0, 0, inum, 'ht_0'   , ht_0   , ktype = jp_r8 ) 
    201201 
    202202      !                                     ! ============================ 
  • branches/UKMO/ROMS_WAD_7832/NEMOGCM/NEMO/OPA_SRC/DOM/domzgr.F90

    r8865 r8870  
    3030   USE usrdef_zgr     ! user defined vertical coordinate system 
    3131   USE depth_e3       ! depth <=> e3 
    32    USE wet_dry, ONLY: ln_wd, ln_rwd, rn_ssh_ref 
     32   USE wet_dry, ONLY: ln_wd_il, ln_wd_dl, rn_ssh_ref 
    3333   ! 
    3434   USE in_out_manager ! I/O manager 
     
    259259      ! 
    260260      ! reference depth for negative bathy (wetting and drying only) 
    261       IF( ln_wd .OR. ln_rwd )  CALL iom_get( inum,  'rn_wd_ref_depth' , rn_ssh_ref   ) 
     261      IF( ln_wd_il .OR. ln_wd_dl )  CALL iom_get( inum,  'rn_wd_ref_depth' , rn_ssh_ref   ) 
    262262      ! 
    263263      CALL iom_close( inum ) 
  • branches/UKMO/ROMS_WAD_7832/NEMOGCM/NEMO/OPA_SRC/DYN/dynhpg.F90

    r8865 r8870  
    438438      ! 
    439439      CALL wrk_alloc( jpi,jpj,jpk, zhpi, zhpj ) 
    440       IF( ln_wd ) CALL wrk_alloc( jpi,jpj, zcpx, zcpy ) 
     440      IF( ln_wd_il ) CALL wrk_alloc( jpi,jpj, zcpx, zcpy ) 
    441441      ! 
    442442      IF( kt == nit000 ) THEN 
     
    451451      ENDIF 
    452452      ! 
    453       IF( ln_wd ) THEN 
     453      IF( ln_wd_il ) THEN 
    454454        DO jj = 2, jpjm1 
    455455           DO ji = 2, jpim1  
     
    509509 
    510510 
    511             IF( ln_wd ) THEN 
     511            IF( ln_wd_il ) THEN 
    512512 
    513513              zhpi(ji,jj,1) = zhpi(ji,jj,1) * zcpx(ji,jj) 
     
    540540                  &           * ( gde3w_n(ji  ,jj+1,jk) - gde3w_n(ji,jj,jk) ) * r1_e2v(ji,jj) 
    541541 
    542                IF( ln_wd ) THEN 
     542               IF( ln_wd_il ) THEN 
    543543                 zhpi(ji,jj,jk) = zhpi(ji,jj,jk) * zcpx(ji,jj) 
    544544                 zhpj(ji,jj,jk) = zhpj(ji,jj,jk) * zcpy(ji,jj)  
     
    555555      ! 
    556556      CALL wrk_dealloc( jpi,jpj,jpk, zhpi, zhpj ) 
    557       IF( ln_wd ) CALL wrk_dealloc( jpi,jpj, zcpx, zcpy ) 
     557      IF( ln_wd_il ) CALL wrk_dealloc( jpi,jpj, zcpx, zcpy ) 
    558558      ! 
    559559   END SUBROUTINE hpg_sco 
     
    700700      CALL wrk_alloc( jpi, jpj, jpk, drhox, drhoy, drhoz, drhou, drhov, drhow ) 
    701701      CALL wrk_alloc( jpi, jpj, jpk, rho_i, rho_j, rho_k,  zhpi,  zhpj        ) 
    702       IF( ln_wd ) CALL wrk_alloc( jpi,jpj, zcpx, zcpy ) 
    703       ! 
    704       ! 
    705       IF( ln_wd ) THEN 
     702      IF( ln_wd_il ) CALL wrk_alloc( jpi,jpj, zcpx, zcpy ) 
     703      ! 
     704      ! 
     705      IF( ln_wd_il ) THEN 
    706706        DO jj = 2, jpjm1 
    707707           DO ji = 2, jpim1  
     
    915915            zhpi(ji,jj,1) = ( rho_k(ji+1,jj  ,1) - rho_k(ji,jj,1) - rho_i(ji,jj,1) ) * r1_e1u(ji,jj) 
    916916            zhpj(ji,jj,1) = ( rho_k(ji  ,jj+1,1) - rho_k(ji,jj,1) - rho_j(ji,jj,1) ) * r1_e2v(ji,jj) 
    917             IF( ln_wd ) THEN 
     917            IF( ln_wd_il ) THEN 
    918918              zhpi(ji,jj,1) = zhpi(ji,jj,1) * zcpx(ji,jj) 
    919919              zhpj(ji,jj,1) = zhpj(ji,jj,1) * zcpy(ji,jj)  
     
    938938                  &           + (  ( rho_k(ji,jj+1,jk) - rho_k(ji,jj,jk  ) )    & 
    939939                  &               -( rho_j(ji,jj  ,jk) - rho_j(ji,jj,jk-1) )  ) * r1_e2v(ji,jj) 
    940                IF( ln_wd ) THEN 
     940               IF( ln_wd_il ) THEN 
    941941                 zhpi(ji,jj,jk) = zhpi(ji,jj,jk) * zcpx(ji,jj) 
    942942                 zhpj(ji,jj,jk) = zhpj(ji,jj,jk) * zcpy(ji,jj)  
     
    952952      CALL wrk_dealloc( jpi, jpj, jpk, drhox, drhoy, drhoz, drhou, drhov, drhow ) 
    953953      CALL wrk_dealloc( jpi, jpj, jpk, rho_i, rho_j, rho_k,  zhpi,  zhpj        ) 
    954       IF( ln_wd ) CALL wrk_dealloc( jpi,jpj, zcpx, zcpy ) 
     954      IF( ln_wd_il ) CALL wrk_dealloc( jpi,jpj, zcpx, zcpy ) 
    955955      ! 
    956956   END SUBROUTINE hpg_djc 
     
    989989      CALL wrk_alloc( jpi,jpj,jpk,   zdept, zrhh ) 
    990990      CALL wrk_alloc( jpi,jpj,       zsshu_n, zsshv_n ) 
    991       IF( ln_wd ) CALL wrk_alloc( jpi,jpj, zcpx, zcpy ) 
     991      IF( ln_wd_il ) CALL wrk_alloc( jpi,jpj, zcpx, zcpy ) 
    992992      ! 
    993993      IF( kt == nit000 ) THEN 
     
    10021002      IF( ln_linssh )   znad = 0._wp 
    10031003 
    1004       IF( ln_wd ) THEN 
     1004      IF( ln_wd_il ) THEN 
    10051005        DO jj = 2, jpjm1 
    10061006           DO ji = 2, jpim1  
     
    12311231                 zdpdx2 = zcoef0 * r1_e1u(ji,jj) * REAL(jis-jid, wp) * (zpwes + zpwed) 
    12321232               ENDIF 
    1233                IF( ln_wd ) THEN 
     1233               IF( ln_wd_il ) THEN 
    12341234                  zdpdx1 = zdpdx1 * zcpx(ji,jj) * wdrampu(ji,jj) 
    12351235                  zdpdx2 = zdpdx2 * zcpx(ji,jj) * wdrampu(ji,jj) 
     
    12901290                  zdpdy2 = zcoef0 * r1_e2v(ji,jj) * REAL(jjs-jjd, wp) * (zpnss + zpnsd ) 
    12911291               ENDIF 
    1292                IF( ln_wd ) THEN 
     1292               IF( ln_wd_il ) THEN 
    12931293                  zdpdy1 = zdpdy1 * zcpy(ji,jj) * wdrampv(ji,jj)  
    12941294                  zdpdy2 = zdpdy2 * zcpy(ji,jj) * wdrampv(ji,jj)  
     
    13051305      CALL wrk_dealloc( jpi,jpj,jpk,   zdept, zrhh ) 
    13061306      CALL wrk_dealloc( jpi,jpj,       zsshu_n, zsshv_n ) 
    1307       IF( ln_wd ) CALL wrk_dealloc( jpi,jpj, zcpx, zcpy ) 
     1307      IF( ln_wd_il ) CALL wrk_dealloc( jpi,jpj, zcpx, zcpy ) 
    13081308      ! 
    13091309   END SUBROUTINE hpg_prj 
  • branches/UKMO/ROMS_WAD_7832/NEMOGCM/NEMO/OPA_SRC/DYN/dynspg_ts.F90

    r8865 r8870  
    153153      REAL(wp) ::   zhura, zhvra          !   -      - 
    154154      REAL(wp) ::   za0, za1, za2, za3    !   -      - 
    155       REAL(wp) ::   zwdramp                     ! local scalar - only used if ln_rwd = .True.  
     155      REAL(wp) ::   zwdramp                     ! local scalar - only used if ln_wd_dl = .True.  
    156156 
    157157      INTEGER  :: iwdg, jwdg, kwdg   ! short-hand values for the indices of the output point 
     
    178178      CALL wrk_alloc( jpi,jpj,   zsshu_a, zsshv_a                  ) 
    179179      CALL wrk_alloc( jpi,jpj,   zhf ) 
    180       IF( ln_wd ) CALL wrk_alloc( jpi, jpj, zcpx, zcpy ) 
    181       IF( ln_rwd ) CALL wrk_alloc( jpi, jpj, ztwdmask, zuwdmask, zvwdmask, zuwdav2, zvwdav2) 
    182  
    183       IF ( ln_wd_diag ) THEN  
    184          iwdg = jn_wd_i ; jwdg = jn_wd_j ; kwdg = jn_wd_k 
    185          WRITE(numout,*) 'kt, iwdg, jwdg, kwdg = ', kt, iwdg, jwdg, kwdg  
    186       END IF  
     180      IF( ln_wd_il ) CALL wrk_alloc( jpi, jpj, zcpx, zcpy ) 
     181      IF( ln_wd_dl ) CALL wrk_alloc( jpi, jpj, ztwdmask, zuwdmask, zvwdmask, zuwdav2, zvwdav2) 
     182 
    187183 
    188184      ! 
     
    417413      !                                   ! ---------------------------------------------------- 
    418414      IF( .NOT.ln_linssh ) THEN                 ! Variable volume : remove surface pressure gradient 
    419         IF( ln_wd ) THEN                        ! Calculating and applying W/D gravity filters 
     415        IF( ln_wd_il ) THEN                        ! Calculating and applying W/D gravity filters 
    420416           DO jj = 2, jpjm1 
    421417              DO ji = 2, jpim1  
     
    513509      ! 
    514510      ! Note that the "unclipped" bottom friction parameter is used even with explicit drag 
    515       IF( ln_wd ) THEN 
     511      IF( ln_wd_il ) THEN 
    516512        zu_frc(:,:) = zu_frc(:,:) + MAX(r1_hu_n(:,:) * bfrua(:,:),-1._wp / rdtbt) * zwx(:,:) *  wdrampu(ji,jj) 
    517513        zv_frc(:,:) = zv_frc(:,:) + MAX(r1_hv_n(:,:) * bfrva(:,:),-1._wp / rdtbt) * zwy(:,:) *  wdrampv(ji,jj) 
     
    651647      !                                             ! ==================== ! 
    652648 
    653       IF (ln_rwd) THEN 
     649      IF (ln_wd_dl) THEN 
    654650         zuwdmask(:,:) = 0._wp  ! set to zero for definiteness (not sure this is necessary)  
    655651         zvwdmask(:,:) = 0._wp  !  
     
    688684             
    689685            ! set wetting & drying mask at tracer points for this barotropic sub-step  
    690             IF ( ln_rwd ) THEN  
    691  
    692                IF ( ln_rwd_rmp ) THEN  
     686            IF ( ln_wd_dl ) THEN  
     687 
     688               IF ( ln_wd_dl_rmp ) THEN  
    693689                  DO jj = 1, jpj                                  
    694690                     DO ji = 1, jpi   ! vector opt.   
     
    715711               END IF  
    716712 
    717                IF ( ln_wd_diag ) WRITE(numout,*) 'kt, jn = ', kt, jn  
    718                IF ( ln_wd_diag ) WRITE(numout, *) 'zsshp2_e: (i,j), (i+1,j), (i,j+1) = ', zsshp2_e(iwdg,jwdg), zsshp2_e(iwdg+1,jwdg), zsshp2_e(iwdg,jwdg+1) 
    719                IF ( ln_wd_diag ) WRITE(numout, *) 'ht_0:     (i,j), (i+1,j), (i,j+1) = ', ht_0(iwdg,jwdg), ht_0(iwdg+1,jwdg), (iwdg,jwdg+1) 
    720                IF ( ln_wd_diag ) WRITE(numout, *) 'ztwdmask: (i,j), (i+1,j), (i,j+1) = ', ztwdmask(iwdg,jwdg), ztwdmask(iwdg+1,jwdg), ztwdmask(iwdg,jwdg+1)  
    721713            END IF  
    722714            
     
    773765         ENDIF 
    774766#endif 
    775          IF( ln_wd ) CALL wad_lmt_bt(zwx, zwy, sshn_e, zssh_frc, rdtbt) 
    776  
    777          IF ( ln_rwd ) THEN  
    778  
    779             IF ( ln_wd_diag ) THEN  
    780                WRITE(numout, *) 'zwx: (i,j), (i+1,j) = ', zwx(iwdg,jwdg), zwx(iwdg+1,jwdg) 
    781                WRITE(numout, *) 'zwy: (i,j), (i,j+1) = ', zwy(iwdg,jwdg), zwx(iwdg,jwdg+1) 
    782             END IF  
     767         IF( ln_wd_il ) CALL wad_lmt_bt(zwx, zwy, sshn_e, zssh_frc, rdtbt) 
     768 
     769         IF ( ln_wd_dl ) THEN  
     770 
    783771 
    784772! un_e and vn_e are set to zero at faces where the direction of the flow is from dry cells  
     
    804792            END DO 
    805793 
    806             IF ( ln_wd_diag ) THEN  
    807                WRITE(numout, *) 'zuwdmask: (i,j)     = ', zuwdmask(iwdg,jwdg) 
    808                WRITE(numout, *) 'zwx: (i,j)          = ', zwx(iwdg,jwdg) 
    809                WRITE(numout, *) 'e2u: (i,j)          = ', e2u(iwdg,jwdg) 
    810                WRITE(numout, *) 'ua_e: (i,j)         = ', ua_e(iwdg,jwdg) 
    811                WRITE(numout, *) 'un_e: (i,j)         = ', un_e(iwdg,jwdg) 
    812                WRITE(numout, *) 'zhup2_e: (i,j)      = ', zhup2_e(iwdg,jwdg) 
    813                WRITE(numout, *) 'zvwdmask: (i,j)     = ', zvwdmask(iwdg,jwdg) 
    814                WRITE(numout, *) 'zwy: (i,j)          = ', zwy(iwdg,jwdg)  
    815             END IF  
    816794 
    817795         END IF     
     
    822800         vn_adv(:,:) = vn_adv(:,:) + za2 * zwy(:,:) * r1_e1v(:,:) 
    823801          
    824          ! sum over sub-time-steps to decide which baroclinic velocities to set to zero (zuwdav2 is only used when ln_rwd_bc = True)  
    825          IF ( ln_rwd_bc ) THEN 
     802         ! sum over sub-time-steps to decide which baroclinic velocities to set to zero (zuwdav2 is only used when ln_wd_dl_bc = True)  
     803         IF ( ln_wd_dl_bc ) THEN 
    826804            zuwdav2(:,:) = zuwdav2(:,:) + za2 * zuwdmask(:,:) 
    827805            zvwdav2(:,:) = zvwdav2(:,:) + za2 * zvwdmask(:,:) 
    828  
    829             IF ( ln_wd_diag ) THEN  
    830                WRITE(numout, *) 'za2, r1_e2u(i,j)     = ', za2, r1_e2u(iwdg,jwdg)  
    831                WRITE(numout, *) 'un_adv: (i,j)        = ', un_adv(iwdg,jwdg) 
    832                WRITE(numout, *) 'zuwdav2: (i,j)       = ', zuwdav2(iwdg,jwdg) 
    833                WRITE(numout, *) 'zvwdav2: (i,j)       = ', zvwdav2(iwdg,jwdg) 
    834             END IF  
    835  
    836806         END IF  
    837807 
     
    889859         zsshp2_e(:,:) = za0 *  ssha_e(:,:) + za1 *  sshn_e (:,:) & 
    890860          &            + za2 *  sshb_e(:,:) + za3 *  sshbb_e(:,:) 
    891          IF( ln_wd ) THEN                   ! Calculating and applying W/D gravity filters 
     861         IF( ln_wd_il ) THEN                   ! Calculating and applying W/D gravity filters 
    892862           DO jj = 2, jpjm1 
    893863              DO ji = 2, jpim1  
     
    1019989         ! Surface pressure trend: 
    1020990 
    1021          IF( ln_wd ) THEN 
     991         IF( ln_wd_il ) THEN 
    1022992           DO jj = 2, jpjm1 
    1023993              DO ji = 2, jpim1  
     
    10691039               DO ji = fs_2, fs_jpim1   ! vector opt. 
    10701040 
    1071                   IF( ln_wd ) THEN 
    1072                     zhura = hu_0(ji,jj) + zsshu_a(ji,jj) 
    1073                     zhvra = hv_0(ji,jj) + zsshv_a(ji,jj) 
    1074                   ELSE 
    1075                     zhura = hu_0(ji,jj) + zsshu_a(ji,jj) 
    1076                     zhvra = hv_0(ji,jj) + zsshv_a(ji,jj) 
    1077                   END IF 
     1041                  zhura = hu_0(ji,jj) + zsshu_a(ji,jj) 
     1042                  zhvra = hv_0(ji,jj) + zsshv_a(ji,jj) 
     1043 
    10781044                  zhura = ssumask(ji,jj)/(zhura + 1._wp - ssumask(ji,jj)) 
    10791045                  zhvra = ssvmask(ji,jj)/(zhvra + 1._wp - ssvmask(ji,jj)) 
     
    10941060         ENDIF 
    10951061 
    1096 ! if ln_rwd: ua_e and va_e should not be masked ; they are used to determine the direction of flow into all cells 
    1097  
    1098 !         IF ( ln_rwd) THEN  
    1099 !            IF ( ln_wd_diag ) THEN  
    1100 !               WRITE(numout, *) 'ua_e: (i,j)         = ', ua_e(iwdg,jwdg) 
    1101 !               WRITE(numout, *) 'va_e: (i,j)         = ', va_e(iwdg,jwdg) 
    1102 !            END IF  
    1103 !            ua_e(:,:) = ua_e(:,:) * zuwdmask(:,:)  
    1104 !            va_e(:,:) = va_e(:,:) * zvwdmask(:,:)  
    1105 !            IF ( ln_wd_diag ) THEN  
    1106 !               WRITE(numout, *) 'ua_e: (i,j)         = ', ua_e(iwdg,jwdg) 
    1107 !               WRITE(numout, *) 'va_e: (i,j)         = ', va_e(iwdg,jwdg) 
    1108 !            END IF  
    1109 !         END IF  
    1110  
    11111062          
    11121063         IF( .NOT.ln_linssh ) THEN                     !* Update ocean depth (variable volume case only) 
    1113             IF( ln_wd ) THEN 
    1114               hu_e (:,:) = hu_0(:,:) + zsshu_a(:,:) 
    1115               hv_e (:,:) = hv_0(:,:) + zsshv_a(:,:) 
    1116             ELSE 
    1117               hu_e (:,:) = hu_0(:,:) + zsshu_a(:,:) 
    1118               hv_e (:,:) = hv_0(:,:) + zsshv_a(:,:) 
    1119             END IF 
     1064            hu_e (:,:) = hu_0(:,:) + zsshu_a(:,:) 
     1065            hv_e (:,:) = hv_0(:,:) + zsshv_a(:,:) 
    11201066            hur_e(:,:) = ssumask(:,:) / ( hu_e(:,:) + 1._wp - ssumask(:,:) ) 
    11211067            hvr_e(:,:) = ssvmask(:,:) / ( hv_e(:,:) + 1._wp - ssvmask(:,:) ) 
     
    11511097            va_b  (:,:) = va_b  (:,:) + za1 * va_e  (:,:)  
    11521098         ELSE                                              ! Sum transports 
    1153             IF (.NOT.ln_rwd) THEN   
     1099            IF (.NOT.ln_wd_dl) THEN   
    11541100               ua_b  (:,:) = ua_b  (:,:) + za1 * ua_e  (:,:) * hu_e (:,:) 
    11551101               va_b  (:,:) = va_b  (:,:) + za1 * va_e  (:,:) * hv_e (:,:) 
     
    11851131      ENDIF 
    11861132 
    1187       IF ( ln_wd_diag ) THEN  
    1188          WRITE(numout, *) 'ub2_b: (i,j)        = ', ub2_b(iwdg,jwdg) 
    1189          WRITE(numout, *) 'r1_hu_n: (i,j)      = ', r1_hu_n(iwdg,jwdg) 
    1190          WRITE(numout, *) 'zwx: (i,j)          = ', zwx(iwdg,jwdg) 
    1191          WRITE(numout, *) 'un_adv: (i,j)        = ', un_adv(iwdg,jwdg) 
    1192       END IF  
    11931133 
    11941134      ! 
     
    12221162      ENDIF 
    12231163 
    1224       IF ( ln_wd_diag ) THEN  
    1225          WRITE(numout, *) 'ua_b: (i,j) A        = ', ua_b(iwdg,jwdg) 
    1226          WRITE(numout, *) 'va_b: (i,j) B        = ', va_b(iwdg,jwdg) 
    1227       END IF  
    1228  
    1229 ! temporary debugging code  
    1230       IF ( ln_wd_diag ) THEN  
    1231          WRITE(numout, *) 'ua: (i,j,k)  B       = ', ua(iwdg,jwdg,kwdg) 
    1232          WRITE(numout, *) 'ua_b: (i,j)  B       = ', ua_b(iwdg,jwdg) 
    1233          WRITE(numout, *) 'un: (i,j,k)          = ', un(iwdg,jwdg,kwdg) 
    1234          WRITE(numout, *) 'un_b: (i,j)          = ', un_b(iwdg,jwdg) 
    1235          WRITE(numout, *) 'un_adv: (i,j)        = ', un_adv(iwdg,jwdg) 
    1236          WRITE(numout, *) 'va: (i,j,k)          = ', va(iwdg,jwdg,kwdg) 
    1237          WRITE(numout, *) 'va_b: (i,j,k)        = ', va_b(iwdg,jwdg) 
    1238          WRITE(numout, *) 'vn: (i,j,k)          = ', vn(iwdg,jwdg,kwdg) 
    1239          WRITE(numout, *) 'vn_b: (i,j)          = ', vn_b(iwdg,jwdg) 
    1240          WRITE(numout, *) 'vn_adv: (i,j)        = ', vn_adv(iwdg,jwdg) 
    1241       END IF  
    12421164 
    12431165      ! Correct velocities so that the barotropic velocity equals (un_adv, vn_adv) (in all cases)   
     
    12471169      END DO 
    12481170 
    1249       IF ( ln_rwd .and. ln_rwd_bc) THEN  
     1171      IF ( ln_wd_dl .and. ln_wd_dl_bc) THEN  
    12501172         DO jk = 1, jpkm1 
    12511173            un(:,:,jk) = ( un_adv(:,:) + zuwdav2(:,:)*(un(:,:,jk) - un_adv(:,:)) ) * umask(:,:,jk)  
     
    12541176      END IF  
    12551177 
    1256       IF ( ln_wd_diag ) THEN  
    1257          WRITE(numout, *) 'ua: (i,j,k)          = ', ua(iwdg,jwdg,kwdg) 
    1258          WRITE(numout, *) 'ua_b: (i,j,k)        = ', ua_b(iwdg,jwdg) 
    1259          WRITE(numout, *) 'un: (i,j,k)          = ', un(iwdg,jwdg,kwdg) 
    1260          WRITE(numout, *) 'va: (i,j,k)          = ', va(iwdg,jwdg,kwdg) 
    1261          WRITE(numout, *) 'va_b: (i,j,k)        = ', va_b(iwdg,jwdg) 
    1262          WRITE(numout, *) 'vn: (i,j,k)          = ', vn(iwdg,jwdg,kwdg) 
    1263       END IF  
    12641178       
    12651179      CALL iom_put(  "ubar", un_adv(:,:)      )    ! barotropic i-current 
     
    12901204      CALL wrk_dealloc( jpi,jpj,   zsshu_a, zsshv_a                                   ) 
    12911205      CALL wrk_dealloc( jpi,jpj,   zhf ) 
    1292       IF( ln_wd ) CALL wrk_dealloc( jpi, jpj, zcpx, zcpy ) 
    1293       IF( ln_rwd ) CALL wrk_dealloc( jpi, jpj, ztwdmask, zuwdmask, zvwdmask, zuwdav2, zvwdav2 ) 
     1206      IF( ln_wd_il ) CALL wrk_dealloc( jpi, jpj, zcpx, zcpy ) 
     1207      IF( ln_wd_dl ) CALL wrk_dealloc( jpi, jpj, ztwdmask, zuwdmask, zvwdmask, zuwdav2, zvwdav2 ) 
    12941208      ! 
    12951209      IF ( ln_diatmb ) THEN 
  • branches/UKMO/ROMS_WAD_7832/NEMOGCM/NEMO/OPA_SRC/DYN/sshwzv.F90

    r7753 r8870  
    9494      !                                           !   After Sea Surface Height   ! 
    9595      !                                           !------------------------------! 
    96       IF(ln_wd) THEN 
     96      IF(ln_wd_il) THEN 
    9797         CALL wad_lmt(sshb, zcoef * (emp_b(:,:) + emp(:,:)), z2dt) 
    9898      ENDIF 
  • branches/UKMO/ROMS_WAD_7832/NEMOGCM/NEMO/OPA_SRC/DYN/wet_dry.F90

    r8865 r8870  
    77   !! Wetting and drying includes initialisation routine and routines to 
    88   !! compute and apply flux limiters and preserve water depth positivity 
    9    !! only effects if wetting/drying is on (ln_wd == .true.) 
     9   !! only effects if wetting/drying is on (ln_wd_il == .true. or ln_wd_dl==.true. ) 
    1010   !!============================================================================== 
    1111   !! History :  3.6  ! 2014-09  ((H.Liu)  Original code 
     
    3838   REAL(wp), PUBLIC, ALLOCATABLE, DIMENSION(:,:) ::   wdramp, wdrampu, wdrampv ! for hpg limiting 
    3939 
    40    LOGICAL,  PUBLIC  ::   ln_wd       !: Wetting/drying activation switch (T:on,F:off) 
     40   LOGICAL,  PUBLIC  ::   ln_wd_il    !: Wetting/drying il activation switch (T:on,F:off) 
     41   LOGICAL,  PUBLIC  ::   ln_wd_dl    !: Wetting/drying dl activation switch (T:on,F:off) 
    4142   REAL(wp), PUBLIC  ::   rn_wdmin0   !: depth at which wetting/drying starts 
    42    LOGICAL,  PUBLIC  ::   ln_rwd      !: ROMS Wetting/drying activation switch (T:on,F:off) 
    4343   REAL(wp), PUBLIC  ::   rn_wdmin1   !: minimum water depth on dried cells 
    4444   REAL(wp), PUBLIC  ::   rn_wdmin2   !: tolerance of minimum water depth on dried cells 
     
    4646                                           !: will be considered 
    4747   INTEGER , PUBLIC  ::   nn_wdit     !: maximum number of iteration for W/D limiter 
    48    LOGICAL,  PUBLIC  ::   ln_rwd_bc   !: ROMS scheme: True implies 3D velocities are set to the barotropic values at points  
     48   LOGICAL,  PUBLIC  ::   ln_wd_dl_bc !: DL scheme: True implies 3D velocities are set to the barotropic values at points  
    4949                                      !: where the flow is from wet points on less than half the barotropic sub-steps   
    50    LOGICAL,  PUBLIC  ::   ln_rwd_rmp  !: use a ramp for the rwd flux limiter between 2 rn_wdmin1 and rn_wdmin1 (rather than a cut-off at rn_wdmin1)       
     50   LOGICAL,  PUBLIC  ::   ln_wd_dl_rmp !: use a ramp for the dl flux limiter between 2 rn_wdmin1 and rn_wdmin1 (rather than a cut-off at rn_wdmin1)       
    5151   REAL(wp), PUBLIC  ::   rn_ssh_ref  !: height of z=0 with respect to the geoid;  
    5252   REAL(wp), PUBLIC  ::   rn_ht_0     !: the height at which ht_0 = 0    
    5353 
    54    LOGICAL,  PUBLIC  ::   ln_wd_diag  ! True implies wad diagnostic at chosen point are printed out 
    55    INTEGER , PUBLIC  ::   jn_wd_i, jn_wd_j, jn_wd_k   ! indices at which diagnostic outputs are generated  
    5654 
    5755   PUBLIC   wad_init                  ! initialisation routine called by step.F90 
     
    7169      !! ** input   : - namwad namelist 
    7270      !!---------------------------------------------------------------------- 
    73       NAMELIST/namwad/ ln_wd, ln_rwd, rn_wdmin0, ln_rwd, rn_wdmin1, rn_wdmin2, rn_wdld, nn_wdit, ln_wd_diag, ln_rwd_bc, & 
    74                      &  rn_ht_0, jn_wd_i, jn_wd_j, jn_wd_k,ln_rwd_rmp 
     71      NAMELIST/namwad/ ln_wd_il, ln_wd_dl, rn_wdmin0, ln_wd_dl, rn_wdmin1, rn_wdmin2, rn_wdld, nn_wdit, ln_wd_dl_bc, & 
     72                     &  rn_ht_0,ln_wd_dl_rmp 
    7573 
    7674      INTEGER  ::   ios                 ! Local integer output status for namelist read 
     
    9391         WRITE(numout,*) '~~~~~~~~' 
    9492         WRITE(numout,*) '   Namelist namwad' 
    95          WRITE(numout,*) '      Logical for NOC  wd scheme         ln_wd      = ', ln_wd 
    96          WRITE(numout,*) '      Logical for ROMS wd scheme         ln_rwd     = ', ln_rwd 
     93         WRITE(numout,*) '      Logical for Iter Lim wd option ln_wd_il       = ', ln_wd_il 
     94         WRITE(numout,*) '      Logical for Dir. Lim wd option ln_wd_dl       = ', ln_wd_dl 
    9795         WRITE(numout,*) '      Depth at which wet/drying starts rn_wdmin0    = ', rn_wdmin0 
    9896         WRITE(numout,*) '      Minimum wet depth on dried cells rn_wdmin1    = ', rn_wdmin1 
     
    10098         WRITE(numout,*) '      land elevation threshold         rn_wdld      = ', rn_wdld 
    10199         WRITE(numout,*) '      Max iteration for W/D limiter    nn_wdit      = ', nn_wdit 
    102          WRITE(numout,*) '      Logical for WAD diagnostics      ln_wd_diag   = ', ln_wd_diag 
    103          WRITE(numout,*) '      T => baroclinic u,v = 0 at dry pts: ln_rwd_bc = ', ln_rwd_bc      
    104          WRITE(numout,*) '      use a ramp for rwd limiter:      ln_rwd_rmp   = ', ln_rwd_rmp 
     100         WRITE(numout,*) '      T => baroclinic u,v = 0 at dry pts: ln_wd_dl_bc = ', ln_wd_dl_bc      
     101         WRITE(numout,*) '      use a ramp for rwd limiter:      ln_wd_dl_rwd_rmp   = ', ln_wd_dl_rmp 
    105102         WRITE(numout,*) '      the height (z) at which ht_0 = 0:rn_ht_0      = ', rn_ht_0   
    106          WRITE(numout,*) '      i-index for diagnostic point     jn_wd_i      = ', jn_wd_i 
    107          WRITE(numout,*) '      j-index for diagnostic point     jn_wd_j      = ', jn_wd_j 
    108          WRITE(numout,*) '      k-index for diagnostic point     jn_wd_k      = ', jn_wd_k 
    109103      ENDIF 
    110104      ! 
    111       IF(ln_wd .OR. ln_rwd) THEN 
     105      IF(ln_wd_il .OR. ln_wd_dl) THEN 
    112106         ALLOCATE( wdmask(jpi,jpj),   STAT=ierr ) 
    113107         ALLOCATE( wdramp(jpi,jpj), wdrampu(jpi,jpj), wdrampv(jpi,jpj), STAT=ierr )  
     
    147141      IF( nn_timing == 1 )  CALL timing_start('wad_lmt') 
    148142 
    149       IF(ln_wd) THEN 
     143      IF(ln_wd_il) THEN 
    150144 
    151145        CALL wrk_alloc( jpi, jpj, zflxp, zflxn, zflxu, zflxv, zflxu1, zflxv1 ) 
     
    333327      IF( nn_timing == 1 )  CALL timing_start('wad_lmt_bt') 
    334328 
    335       IF(ln_wd) THEN 
     329      IF(ln_wd_il) THEN 
    336330 
    337331        CALL wrk_alloc( jpi, jpj, zflxp, zflxn, zflxu1, zflxv1 ) 
  • branches/UKMO/ROMS_WAD_7832/NEMOGCM/NEMO/OPA_SRC/TRA/trasbc.F90

    r8865 r8870  
    3434   USE wrk_nemo       ! Memory Allocation 
    3535   USE timing         ! Timing 
    36    USE wet_dry 
     36   USE wet_dry,   ONLY :   ln_wd_il, ln_wd_dl, rn_wdmin1 
    3737 
    3838   IMPLICIT NONE 
     
    123123      DO jj = 2, jpj 
    124124         DO ji = fs_2, fs_jpim1   ! vector opt. 
    125             IF ( ln_rwd_rmp ) THEN    ! If near WAD point limite the flux for now 
     125            IF ( ln_wd_il .or. ln_wd_dl ) THEN    ! If near WAD point limit the flux for now 
    126126               IF ( sshn(ji,jj) + ht_0(ji,jj) >  2._wp * rn_wdmin1 ) THEN 
    127127                  sbc_tsc(ji,jj,jp_tem) = r1_rau0_rcp * qns(ji,jj)   ! non solar heat flux 
  • branches/UKMO/ROMS_WAD_7832/NEMOGCM/NEMO/OPA_SRC/stpctl.F90

    r8865 r8870  
    2222   USE lib_mpp         ! distributed memory computing 
    2323   USE lib_fortran     ! Fortran routines library  
    24    USE wet_dry,  ONLY: ln_wd, ln_rwd, rn_ssh_ref    ! reference depth for negative bathy 
     24   USE wet_dry,  ONLY: ln_wd_il, ln_wd_dl, rn_ssh_ref    ! reference depth for negative bathy 
    2525 
    2626   IMPLICIT NONE 
     
    151151      DO jj = 1, jpj 
    152152         DO ji = 1, jpi 
    153             IF( (ln_wd .OR. ln_rwd)) THEN 
     153            IF( (ln_wd_il .OR. ln_wd_dl)) THEN 
    154154               IF( tmask(ji,jj,1) == 1) zsshmax = MAX( zsshmax, ABS(sshn(ji,jj)+rn_ssh_ref) ) 
    155155            ELSE 
  • branches/UKMO/ROMS_WAD_7832/NEMOGCM/TOOLS/DOMAINcfg/namelist_cfg

    r7200 r8870  
    5858   ppkth2      =  999999.              ! 
    5959   ppacr2      =  999999.              ! 
     60   rn_wd_ref_depth   =    0.0          !  Reference Depth for WAD cases (0 all other cases) 
    6061/ 
    6162!----------------------------------------------------------------------- 
  • branches/UKMO/ROMS_WAD_7832/NEMOGCM/TOOLS/DOMAINcfg/namelist_ref

    r7200 r8870  
    170170   ppkth2      =       48.029893720000 ! 
    171171   ppacr2      =       13.000000000000 ! 
    172 / 
    173 !----------------------------------------------------------------------- 
    174 &namwad        !   Wetting and drying                                   (default F) 
    175 !----------------------------------------------------------------------- 
    176    ln_wd       = .false.   !  T/F activation of wetting and drying 
    177    rn_wdmin1   =  0.1      !  Minimum wet depth on dried cells 
    178    rn_wdmin2   =  0.01     !  Tolerance of min wet depth on dried cells 
    179    rn_wdld     =  20.0     !  Land elevation below which wetting/drying is allowed 
    180    nn_wdit     =  10       !  Max iterations for W/D limiter 
     172   ln_wd       =             .false.   !  T/F activation of wetting and drying 
     173   rn_wd_ref_depth   =    0.0          !  Reference Depth for WAD cases (0 all other cases) 
    181174/ 
    182175!----------------------------------------------------------------------- 
  • branches/UKMO/ROMS_WAD_7832/NEMOGCM/TOOLS/DOMAINcfg/src/dom_oce.f90

    r6973 r8870  
    3131   !                                    !!* Namelist namdom : time & space domain * 
    3232   INTEGER , PUBLIC ::   nn_bathy        !: = 0/1 ,compute/read the bathymetry file 
     33   LOGICAL   PUBLIC ::   ln_wd           !: Is it a WAD domain? T/F Default T 
     34   REAL(wp), PUBLIC ::   rn_wd_ref_depth !: Reference depth for Wet and Dry 
    3335   REAL(wp), PUBLIC ::   rn_bathy        !: depth of flat bottom (active if nn_bathy=0; if =0 depth=jpkm1) 
    3436   REAL(wp), PUBLIC ::   rn_hmin         !: minimum ocean depth (>0) or minimum number of ocean levels (<0) 
  • branches/UKMO/ROMS_WAD_7832/NEMOGCM/TOOLS/DOMAINcfg/src/domain.f90

    r7200 r8870  
    160160         &             ppglam0, ppgphi0, ppe1_deg, ppe2_deg, ppe1_m, ppe2_m,                         & 
    161161         &             ppsur, ppa0, ppa1, ppkth, ppacr, ppdzmin, pphmax, ldbletanh,                  & 
    162          &             ppa2, ppkth2, ppacr2 
     162         &             ppa2, ppkth2, ppacr2, rn_wd_ref_depth, ln_wd 
    163163 
    164164 
     
    272272         WRITE(numout,*) '      flag read/compute bathymetry      nn_bathy     = ', nn_bathy 
    273273         WRITE(numout,*) '      Depth (if =0 bathy=jpkm1)         rn_bathy     = ', rn_bathy 
     274         WRITE(numout,*) '      WAD Domain?                       ln_wd        = ', ln_wd 
     275         WRITE(numout,*) '      WAD Reference depth)              rn_wd_ref_depth     = ', rn_wd_ref_depth 
    274276         WRITE(numout,*) '      min depth of the ocean    (>0) or    rn_hmin   = ', rn_hmin 
    275277         WRITE(numout,*) '      min number of ocean level (<0)       ' 
     
    431433      IF( ln_isfcav ) THEN   ;   icav = 1   ;   ELSE   ;   icav = 0   ;   ENDIF 
    432434      CALL iom_rstput( 0, 0, inum, 'ln_isfcav', REAL( icav, wp), ktype = jp_i4 ) 
     435      z2d(:,:) = hbatt(:,:) ! add back on reference height to get appox dep 
     436                                 !this is later corrected for with specified min depth bg user for above greoid 
     437                                 ! WAD points 
     438      !where (z2d   (:,:).lte.1e-5)  z2d(:,:) = -10.0 
     439      where (tmask  (:,:,1).eq.0)  z2d(:,:) = 0.0 
     440      IF( ln_wd ) THEN 
     441          CALL iom_rstput( 0, 0, inum, 'rn_wd_ref_depth'   , rn_wd_ref_depth  ) ! replace this later with variable 
     442          CALL iom_rstput( 0, 0, inum, 'ht_wd', z2d )        !    ht_wd 
     443      ENDIF 
     444 
    433445      ! 
    434446      !                             !==  horizontal mesh  ! 
  • branches/UKMO/ROMS_WAD_7832/NEMOGCM/TOOLS/DOMAINcfg/src/domzgr.f90

    r8841 r8870  
    19571957         WRITE(numout,*) '        Bottom cell (Zb) (m) = H*rn_zb_a + rn_zb_b' 
    19581958      ENDIF 
    1959  
     1959      ! CEOD 
     1960      ! Add on some reference level to make nagative bathy positive to create 
     1961      ! sensible e3t_0's 
     1962! Can used commented code here to force bathy near open bdy not to have any WAD 
     1963! points 
     1964 
     1965!CEOD MAKE points on the perimeter assuming a bondary is here on shallower than 
     1966!10m so that tide can be specified here. 
     1967!      DO jj = 1, jpj 
     1968!         DO ji = 1, jpi 
     1969!            !CEODIF( mig(ji) <= 2 .or. mjg(jj) <= 2  .or. mig(ji) >= jpiglo-2 .or.  mjg(jj) >=jpjglo-2) then 
     1970!            IF( mig(ji) <= 10   .or. mjg(jj) <=10  .or.  mjg(ji) >=jpiglo-10+1 .or. mjg(jj) >=jpjglo-10+1   ) then 
     1971!               IF( bathy(ji,jj) + rn_wd_ref_depth  > 0.0)   then 
     1972!                  bathy(ji,jj) = max(5.0,bathy(ji,jj)) ! 
     1973!               ENDIF 
     1974!               IF( bathy(ji,jj)  + rn_wd_ref_depth   <= 0.0)   then 
     1975!                  bathy(ji,jj) =  -rn_wd_ref_depth*2._wp ! Make sure it is land 
     1976!               ENDIF 
     1977!            ENDIF 
     1978!         END DO 
     1979!      END DO 
     1980 
     1981      IF( ln_wd) THEN 
     1982         bathy(:,:) = bathy(:,:) + rn_wd_ref_depth !  Arbitrary reference level for WAD, This needs 
     1983      ELSE 
     1984         bathy(:,:) = bathy(:,:)  !  Arbitrary reference level for WAD, This needs 
     1985      ENDIF 
     1986                                                !  to be accounted for in istate in the actual model and bdys etc. 
    19601987      hift(:,:) = rn_sbot_min                     ! set the minimum depth for the s-coordinate 
    19611988      hifu(:,:) = rn_sbot_min 
Note: See TracChangeset for help on using the changeset viewer.