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 6667 for branches/2016/dev_r6409_SIMPLIF_2_usrdef/NEMOGCM/NEMO/OPA_SRC/DYN/wet_dry.F90 – NEMO

Ignore:
Timestamp:
2016-06-06T07:57:00+02:00 (8 years ago)
Author:
gm
Message:

#1692 - branch SIMPLIF_2_usrdef: reduced domain_cfg.nc file: GYRE OK using usrdef or reading file

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2016/dev_r6409_SIMPLIF_2_usrdef/NEMOGCM/NEMO/OPA_SRC/DYN/wet_dry.F90

    r6152 r6667  
    1  
    21MODULE wet_dry 
    32   !!============================================================================== 
     
    76   !! only effects if wetting/drying is on (ln_wd == .true.) 
    87   !!============================================================================== 
    9    !! History :    
    10    !!  NEMO      3.6  ! 2014-09  ((H.Liu)  Original code 
     8   !! History :  3.6  ! 2014-09  ((H.Liu)  Original code 
    119   !!                 ! will add the runoff and periodic BC case later 
    1210   !!---------------------------------------------------------------------- 
     
    8482         WRITE(numout,*) '      land elevation threshold         rn_wdld      = ', rn_wdld 
    8583         WRITE(numout,*) '      Max iteration for W/D limiter    nn_wdit      = ', nn_wdit 
    86        ENDIF 
    87  
     84      ENDIF 
     85      ! 
    8886      IF(ln_wd) THEN 
    8987         ALLOCATE( wduflt(jpi,jpj), wdvflt(jpi,jpj), wdmask(jpi,jpj), STAT=ierr ) 
    9088         IF( ierr /= 0 ) CALL ctl_stop('STOP', 'wad_init : Array allocation error') 
    9189      ENDIF 
     90      ! 
    9291   END SUBROUTINE wad_init 
     92 
    9393 
    9494   SUBROUTINE wad_lmt( sshb1, sshemp, z2dt ) 
     
    116116      REAL(wp), POINTER,  DIMENSION(:,:) ::   zflxu,  zflxv            ! local 2D workspace 
    117117      REAL(wp), POINTER,  DIMENSION(:,:) ::   zflxu1, zflxv1           ! local 2D workspace 
    118  
    119118      !!---------------------------------------------------------------------- 
    120119      ! 
     
    124123      IF(ln_wd) THEN 
    125124 
    126         CALL wrk_alloc( jpi, jpj, zflxp, zflxn, zflxu, zflxv, zflxu1, zflxv1 ) 
    127         CALL wrk_alloc( jpi, jpj, zwdlmtu, zwdlmtv) 
     125        CALL wrk_alloc( jpi,jpj,  zflxp, zflxn, zflxu, zflxv, zflxu1, zflxv1 ) 
     126        CALL wrk_alloc( jpi,jpj,  zwdlmtu, zwdlmtv) 
    128127        ! 
    129128        
     
    156155        zflxv(:,:) = zflxv(:,:) * e1v(:,:) 
    157156        
    158         DO jj = 2, jpjm1 
     157         DO jj = 2, jpjm1 
    159158           DO ji = 2, jpim1  
    160159 
    161              IF(tmask(ji, jj, 1) < 0.5_wp) CYCLE   ! we don't care about land cells 
    162              IF(bathy(ji,jj) > zdepwd) CYCLE       ! and cells which will unlikely go dried out 
     160             IF( tmask(ji,jj,1) == 0._wp  )  CYCLE   ! we don't care about land cells 
     161             IF( ht_0 (ji,jj)   >  zdepwd )   CYCLE   ! and cells which will unlikely go dried out 
    163162 
    164163              zflxp(ji,jj) = max(zflxu(ji,jj), 0._wp) - min(zflxu(ji-1,jj),   0._wp) + & 
     
    167166                           & min(zflxv(ji,jj), 0._wp) - max(zflxv(ji,  jj-1), 0._wp)  
    168167 
    169               zdep2 = bathy(ji,jj) + sshb1(ji,jj) - rn_wdmin1 
     168              zdep2 = ht_0(ji,jj) + sshb1(ji,jj) - rn_wdmin1 
    170169              IF(zdep2 < 0._wp) THEN  !add more safty, but not necessary 
    171170                !zdep2 = 0._wp 
    172                 sshb1(ji,jj) = rn_wdmin1 - bathy(ji,jj) 
     171                sshb1(ji,jj) = rn_wdmin1 - ht_0(ji,jj) 
    173172              END IF 
    174173           ENDDO 
     
    187186         
    188187                 wdmask(ji,jj) = 0 
    189                  IF(tmask(ji, jj, 1) < 0.5_wp) CYCLE  
    190                  IF(bathy(ji,jj) > zdepwd) CYCLE 
     188                 IF( tmask(ji,jj,1) < 0.5_wp) CYCLE  
     189                 IF( ht_0(ji,jj) > zdepwd) CYCLE 
    191190         
    192191                 ztmp = e1e2t(ji,jj) 
     
    198197           
    199198                 zdep1 = (zzflxp + zzflxn) * z2dt / ztmp 
    200                  zdep2 = bathy(ji,jj) + sshb1(ji,jj) - rn_wdmin1 - z2dt * sshemp(ji,jj)  ! this one can be moved out of the loop 
     199                 zdep2 = ht_0(ji,jj) + sshb1(ji,jj) - rn_wdmin1 - z2dt * sshemp(ji,jj)  ! this one can be moved out of the loop 
    201200           
    202201                 IF(zdep1 > zdep2) THEN 
     
    240239        CALL wrk_dealloc( jpi, jpj, zflxp, zflxn, zflxu, zflxv, zflxu1, zflxv1 ) 
    241240        CALL wrk_dealloc( jpi, jpj, zwdlmtu, zwdlmtv) 
    242       ! 
    243       END IF 
    244  
     241         ! 
     242      ENDIF 
     243      ! 
    245244      IF( nn_timing == 1 )  CALL timing_stop('wad_lmt') 
     245      ! 
    246246   END SUBROUTINE wad_lmt 
     247 
    247248 
    248249   SUBROUTINE wad_lmt_bt( zflxu, zflxv, sshn_e, zssh_frc, rdtbt ) 
     
    267268      REAL(wp) ::   ztmp                ! local scalars 
    268269      REAL(wp), POINTER,  DIMENSION(:,:) ::   zwdlmtu, zwdlmtv         !: W/D flux limiters 
    269       REAL(wp), POINTER,  DIMENSION(:,:) ::   zflxp,  zflxn            ! local 2D workspace 
    270       REAL(wp), POINTER,  DIMENSION(:,:) ::   zflxu1, zflxv1           ! local 2D workspace 
    271  
    272       !!---------------------------------------------------------------------- 
    273       ! 
    274  
     270      REAL(wp), POINTER,  DIMENSION(:,:) ::   zflxp,  zflxn            ! 2D workspace 
     271      REAL(wp), POINTER,  DIMENSION(:,:) ::   zflxu1, zflxv1           ! 2D workspace 
     272      !!---------------------------------------------------------------------- 
     273      ! 
    275274      IF( nn_timing == 1 )  CALL timing_start('wad_lmt_bt') 
    276275 
     
    305304           DO ji = 2, jpim1  
    306305 
    307              IF(tmask(ji, jj, 1) < 0.5_wp) CYCLE   ! we don't care about land cells 
    308              IF(bathy(ji,jj) > zdepwd) CYCLE       ! and cells which will unlikely go dried out 
     306             IF(tmask(ji,jj,1) < 0.5_wp) CYCLE   ! we don't care about land cells 
     307             IF(ht_0 (ji,jj)  > zdepwd) CYCLE       ! and cells which will unlikely go dried out 
    309308 
    310309              zflxp(ji,jj) = max(zflxu(ji,jj), 0._wp) - min(zflxu(ji-1,jj),   0._wp) + & 
     
    313312                           & min(zflxv(ji,jj), 0._wp) - max(zflxv(ji,  jj-1), 0._wp)  
    314313 
    315               zdep2 = bathy(ji,jj) + sshn_e(ji,jj) - rn_wdmin1 
     314              zdep2 = ht_0(ji,jj) + sshn_e(ji,jj) - rn_wdmin1 
    316315              IF(zdep2 < 0._wp) THEN  !add more safty, but not necessary 
    317316                !zdep2 = 0._wp 
    318                sshn_e(ji,jj) = rn_wdmin1 - bathy(ji,jj) 
     317               sshn_e(ji,jj) = rn_wdmin1 - ht_0(ji,jj) 
    319318              END IF 
    320319           ENDDO 
     
    333332         
    334333                 wdmask(ji,jj) = 0 
    335                  IF(tmask(ji, jj, 1) < 0.5_wp) CYCLE  
    336                  IF(bathy(ji,jj) > zdepwd) CYCLE 
     334                 IF(tmask(ji,jj,1) < 0.5_wp) CYCLE  
     335                 IF(ht_0 (ji,jj)  > zdepwd) CYCLE 
    337336         
    338337                 ztmp = e1e2t(ji,jj) 
     
    344343           
    345344                 zdep1 = (zzflxp + zzflxn) * z2dt / ztmp 
    346                  zdep2 = bathy(ji,jj) + sshn_e(ji,jj) - rn_wdmin1   ! this one can be moved out of the loop 
     345                 zdep2 = ht_0(ji,jj) + sshn_e(ji,jj) - rn_wdmin1   ! this one can be moved out of the loop 
    347346                 zdep2 = zdep2 - z2dt * zssh_frc(ji,jj) 
    348347           
     
    385384        CALL wrk_dealloc( jpi, jpj, zflxp, zflxn, zflxu1, zflxv1 ) 
    386385        CALL wrk_dealloc( jpi, jpj, zwdlmtu, zwdlmtv) 
    387       ! 
     386         ! 
    388387      END IF 
    389  
     388      ! 
    390389      IF( nn_timing == 1 )  CALL timing_stop('wad_lmt') 
     390      ! 
    391391   END SUBROUTINE wad_lmt_bt 
     392    
     393   !!============================================================================== 
    392394END MODULE wet_dry 
Note: See TracChangeset for help on using the changeset viewer.