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

Ignore:
Timestamp:
2016-10-04T17:46:55+02:00 (8 years ago)
Author:
acc
Message:

Branch dev_r6393_NOC_WAD. Introduced some WAD test cases, tidied and corrected WAD code

File:
1 edited

Legend:

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

    r6678 r6986  
    4646   PUBLIC   wad_lmt                   ! routine called by sshwzv.F90 
    4747   PUBLIC   wad_lmt_bt                ! routine called by dynspg_ts.F90 
     48   PUBLIC   wad_istate                ! routine called by istate.F90 and domvvl.F90 
    4849 
    4950   !! * Substitutions 
     
    132133        
    133134        zflag  = 0 
    134         zdepwd = 150._wp   !maximum depth on which that W/D could possibly happen 
     135        zdepwd = 50._wp   !maximum depth on which that W/D could possibly happen 
    135136 
    136137        
     
    156157        zflxv(:,:) = zflxv(:,:) * e1v(:,:) 
    157158        
     159        wdmask(:,:) = 1 
    158160        DO jj = 2, jpjm1 
    159161           DO ji = 2, jpim1  
     
    168170 
    169171              zdep2 = bathy(ji,jj) + sshb1(ji,jj) - rn_wdmin1 
    170               IF(zdep2 < 0._wp) THEN  !add more safty, but not necessary 
     172              IF(zdep2 .le. 0._wp) THEN  !add more safty, but not necessary 
    171173                !zdep2 = 0._wp 
    172174                sshb1(ji,jj) = rn_wdmin1 - bathy(ji,jj) 
     175                wdmask(ji,jj) = 0._wp 
    173176              END IF 
    174177           ENDDO 
     
    186189              DO ji = 2, jpim1  
    187190         
    188                  wdmask(ji,jj) = 0 
    189191                 IF(tmask(ji, jj, 1) < 0.5_wp) CYCLE  
    190192                 IF(bathy(ji,jj) > zdepwd) CYCLE 
     
    201203           
    202204                 IF(zdep1 > zdep2) THEN 
    203                    IF(jk1 .eq. 1) wdmask(ji,jj) = 1 
    204205                   zflag = 1 
     206                   wdmask(ji, jj) = 0 
    205207                   zcoef = ( ( zdep2 - rn_wdmin2 ) * ztmp - zzflxn * z2dt ) / ( zflxp(ji,jj) * z2dt ) 
    206208                   zcoef = max(zcoef, 0._wp) 
     
    231233        CALL lbc_lnk( un, 'U', -1. ) 
    232234        CALL lbc_lnk( vn, 'V', -1. ) 
     235      ! 
     236        un_b(:,:) = un_b(:,:) * zwdlmtu(:, :) 
     237        vn_b(:,:) = vn_b(:,:) * zwdlmtv(:, :) 
     238        CALL lbc_lnk( un_b, 'U', -1. ) 
     239        CALL lbc_lnk( vn_b, 'V', -1. ) 
    233240        
    234241        IF(zflag == 1 .AND. lwp) WRITE(numout,*) 'Need more iterations in wad_lmt!!!' 
     
    390397      IF( nn_timing == 1 )  CALL timing_stop('wad_lmt') 
    391398   END SUBROUTINE wad_lmt_bt 
     399 
     400   SUBROUTINE wad_istate 
     401      !!---------------------------------------------------------------------- 
     402      !!                   ***  ROUTINE wad_istate  *** 
     403      !!  
     404      !! ** Purpose :   Initialization of the dynamics and tracers for WAD test 
     405      !!      configurations (channels or bowls with initial ssh gradients) 
     406      !! 
     407      !! ** Method  : - set temperature field 
     408      !!              - set salinity field 
     409      !!              - set ssh slope (needs to be repeated in domvvl_rst_init to 
     410      !!                               set vertical metrics ) 
     411      !!---------------------------------------------------------------------- 
     412      ! 
     413      INTEGER  ::   ji, jj            ! dummy loop indices 
     414      !!---------------------------------------------------------------------- 
     415      ! 
     416      ! Uniform T & S in all test cases 
     417      tsn(:,:,:,jp_tem) = 10._wp 
     418      tsb(:,:,:,jp_tem) = 10._wp 
     419      tsn(:,:,:,jp_sal) = 35._wp 
     420      tsb(:,:,:,jp_sal) = 35._wp 
     421      SELECT CASE ( jp_cfg )  
     422         !                                        ! ==================== 
     423         CASE ( 1 )                               ! WAD 1 configuration 
     424            !                                     ! ==================== 
     425            ! 
     426            IF(lwp) WRITE(numout,*) 
     427            IF(lwp) WRITE(numout,*) 'istate_wad : Closed box with EW linear bottom slope' 
     428            IF(lwp) WRITE(numout,*) '~~~~~~~~~~' 
     429            ! 
     430            do ji = 1,jpi 
     431             sshn(ji,:) = ( -5.5_wp + 5.5_wp*FLOAT(mig(ji))/FLOAT(jpidta-1))*tmask(ji,:,1) 
     432            end do 
     433            !                                     ! ==================== 
     434         CASE ( 2 )                               ! WAD 2 configuration 
     435            !                                     ! ==================== 
     436            ! 
     437            IF(lwp) WRITE(numout,*) 
     438            IF(lwp) WRITE(numout,*) 'istate_wad : Parobolic EW channel, mid-range initial ssh slope' 
     439            IF(lwp) WRITE(numout,*) '~~~~~~~~~~' 
     440            ! 
     441            do ji = 1,jpi 
     442             sshn(ji,:) = ( -5.5_wp + 3.9_wp*FLOAT(jpidta - mig(ji))/FLOAT(jpidta-1))*tmask(ji,:,1) 
     443            end do 
     444            !                                     ! ==================== 
     445         CASE ( 3 )                               ! WAD 3 configuration 
     446            !                                     ! ==================== 
     447            ! 
     448            IF(lwp) WRITE(numout,*) 
     449            IF(lwp) WRITE(numout,*) 'istate_wad : Parobolic EW channel, extreme initial ssh slope'  
     450            IF(lwp) WRITE(numout,*) '~~~~~~~~~~' 
     451            ! 
     452            do ji = 1,jpi 
     453             sshn(ji,:) = ( -7.5_wp + 6.9_wp*FLOAT(jpidta - mig(ji))/FLOAT(jpidta-1))*tmask(ji,:,1) 
     454            end do 
     455 
     456            ! 
     457            !                                     ! ==================== 
     458         CASE ( 4 )                               ! WAD 4 configuration 
     459            !                                     ! ==================== 
     460            ! 
     461            IF(lwp) WRITE(numout,*) 
     462            IF(lwp) WRITE(numout,*) 'istate_wad : Parobolic bowl, mid-range initial ssh slope'  
     463            IF(lwp) WRITE(numout,*) '~~~~~~~~~~' 
     464            ! 
     465            do ji = 1,jpi 
     466             sshn(ji,:) = ( -5.5_wp + 3.9_wp*FLOAT(jpidta - mig(ji))/FLOAT(jpidta-1))*tmask(ji,:,1) 
     467             ! very small displacement test: 
     468             !sshn(ji,:) = ( -0.05_wp + 0.05_wp*FLOAT(jpidta - mig(ji))/FLOAT(jpidta-1))*tmask(ji,:,1) 
     469            end do 
     470 
     471            ! 
     472            !                                    ! =========================== 
     473         CASE DEFAULT                            ! NONE existing configuration 
     474            !                                    ! =========================== 
     475            WRITE(ctmp1,*) 'WAD test with a ', jp_cfg,' option is not coded' 
     476            ! 
     477            CALL ctl_stop( ctmp1 ) 
     478            ! 
     479      END SELECT 
     480      ! 
     481      ! Apply minimum wetdepth criterion 
     482      ! 
     483      do jj = 1,jpj 
     484         do ji = 1,jpi 
     485            IF( bathy(ji,jj) + sshn(ji,jj) < 0.4_wp) THEN 
     486               sshn(ji,jj) = tmask(ji,jj,1)*(0.4_wp - bathy(ji,jj)) 
     487            ENDIF 
     488         end do 
     489      end do 
     490      sshb = sshn 
     491      ssha = sshn 
     492      ! 
     493   END SUBROUTINE wad_istate 
     494 
     495   !!===================================================================== 
    392496END MODULE wet_dry 
Note: See TracChangeset for help on using the changeset viewer.