Changeset 5441


Ignore:
Timestamp:
2015-06-19T15:28:47+02:00 (5 years ago)
Author:
hliu
Message:

new vertical length scale updating/interpolation for wetting and drying

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2015/dev_r4826_NOC_WAD/NEMOGCM/NEMO/OPA_SRC/DOM/domvvl.F90

    r5019 r5441  
    145145      fse3t_a(:,:,jpk) = e3t_0(:,:,jpk) 
    146146 
    147       IF(ln_wd) THEN 
    148         DO jj = 1, jpj 
    149           DO ji = 1, jpi 
    150             IF(mbathy(ji,jj) == 2 .AND. e3t_0(ji,jj,1) <= 0.5_wp * rn_wdmin1) THEN 
    151              fse3t_a(ji,jj,1:2) = 0.5_wp * rn_wdmin1  
    152             END IF 
    153           ENDDO 
    154         ENDDO 
    155       END IF 
     147      !IF(ln_wd) THEN 
     148      !  DO jj = 1, jpj 
     149      !    DO ji = 1, jpi 
     150      !      IF(mbathy(ji,jj) == 2 .AND. e3t_0(ji,jj,1) <= 0.5_wp * rn_wdmin1) THEN 
     151      !       fse3t_a(ji,jj,1:2) = 0.5_wp * rn_wdmin1  
     152      !       fse3t_n(ji,jj,1:2) = 0.5_wp * rn_wdmin1  
     153      !       fse3t_b(ji,jj,1:2) = 0.5_wp * rn_wdmin1  
     154      !      END IF 
     155      !    ENDDO 
     156      !  ENDDO 
     157      !END IF 
    156158 
    157159      ! Reconstruction of all vertical scale factors at now and before time steps 
     
    687689      !                                                                !   =  'U', 'V', 'W, 'F', 'UW' or 'VW' 
    688690      !! * Local declarations 
     691      REAL(wp) ::  zwad                                                ! = 1.0 when ln_wd = .true. 
     692                                                                       ! = 0.0 when ln_wd = .false. 
     693                                                                       !  
    689694      INTEGER ::   ji, jj, jk                                          ! dummy loop indices 
    690695      LOGICAL ::   l_is_orca                                           ! local logical 
     
    692697      IF( nn_timing == 1 )  CALL timing_start('dom_vvl_interpol') 
    693698         ! 
     699      IF(ln_wd) THEN 
     700        zwad = 1.0_wp 
     701      ELSE 
     702        zwad = 0.0_wp 
     703      END IF 
     704 
    694705      l_is_orca = .FALSE. 
    695706      IF( cp_cfg == "orca" .AND. jp_cfg == 2 ) l_is_orca = .TRUE.      ! ORCA R2 configuration - will need to correct some locations 
     
    703714            DO jj = 1, jpjm1 
    704715               DO ji = 1, fs_jpim1   ! vector opt. 
    705                   pe3_out(ji,jj,jk) = 0.5_wp * umask(ji,jj,jk) * r1_e12u(ji,jj)                                   & 
     716                  !pe3_out(ji,jj,jk) = 0.5_wp * umask(ji,jj,jk) * r1_e12u(ji,jj)                                   & 
     717                  pe3_out(ji,jj,jk) = 0.5_wp * (umask(ji,jj,jk) * (1.0_wp - zwad) + zwad) * r1_e12u(ji,jj)        & 
    706718                     &                       * (   e12t(ji  ,jj) * ( pe3_in(ji  ,jj,jk) - e3t_0(ji  ,jj,jk) )     & 
    707719                     &                           + e12t(ji+1,jj) * ( pe3_in(ji+1,jj,jk) - e3t_0(ji+1,jj,jk) ) ) 
     
    721733            DO jj = 1, jpjm1 
    722734               DO ji = 1, fs_jpim1   ! vector opt. 
    723                   pe3_out(ji,jj,jk) = 0.5_wp * vmask(ji,jj,jk) * r1_e12v(ji,jj)                                   & 
     735                  !pe3_out(ji,jj,jk) = 0.5_wp * vmask(ji,jj,jk) * r1_e12v(ji,jj)                                   & 
     736                  pe3_out(ji,jj,jk) = 0.5_wp * (vmask(ji,jj,jk) * (1.0_wp - zwad) + zwad) * r1_e12v(ji,jj)        & 
    724737                     &                       * (   e12t(ji,jj  ) * ( pe3_in(ji,jj  ,jk) - e3t_0(ji,jj  ,jk) )     & 
    725738                     &                           + e12t(ji,jj+1) * ( pe3_in(ji,jj+1,jk) - e3t_0(ji,jj+1,jk) ) ) 
     
    739752            DO jj = 1, jpjm1 
    740753               DO ji = 1, fs_jpim1   ! vector opt. 
    741                   pe3_out(ji,jj,jk) = 0.5_wp * umask(ji,jj,jk) * umask(ji,jj+1,jk) * r1_e12f(ji,jj)               & 
     754                  !pe3_out(ji,jj,jk) = 0.5_wp * umask(ji,jj,jk) * umask(ji,jj+1,jk) * r1_e12f(ji,jj)               & 
     755                  pe3_out(ji,jj,jk) = 0.5_wp * (umask(ji,jj,jk) * umask(ji,jj+1,jk) * (1.0_wp - zwad) + zwad)     & 
     756                     &                       * r1_e12f(ji,jj)                                                     & 
    742757                     &                       * (   e12u(ji,jj  ) * ( pe3_in(ji,jj  ,jk) - e3u_0(ji,jj  ,jk) )     & 
    743758                     &                           + e12u(ji,jj+1) * ( pe3_in(ji,jj+1,jk) - e3u_0(ji,jj+1,jk) ) ) 
     
    757772         ! - ML - The use of mask in this formaula enables the special treatment of the last w- point without indirect adressing 
    758773         DO jk = 2, jpk 
    759             pe3_out(:,:,jk) = e3w_0(:,:,jk) + ( 1.0_wp - 0.5_wp * tmask(:,:,jk) ) * ( pe3_in(:,:,jk-1) - e3t_0(:,:,jk-1) )   & 
    760                &                            +            0.5_wp * tmask(:,:,jk)   * ( pe3_in(:,:,jk  ) - e3t_0(:,:,jk  ) ) 
     774            !pe3_out(:,:,jk) = e3w_0(:,:,jk) + ( 1.0_wp - 0.5_wp * tmask(:,:,jk) ) * ( pe3_in(:,:,jk-1) - e3t_0(:,:,jk-1) )   & 
     775            !   &                            +            0.5_wp * tmask(:,:,jk)   * ( pe3_in(:,:,jk  ) - e3t_0(:,:,jk  ) ) 
     776            pe3_out(:,:,jk) = e3w_0(:,:,jk) + ( 1.0_wp - 0.5_wp * (tmask(:,:,jk) * (1.0_wp - zwad) + zwad) ) & 
     777               &                            * ( pe3_in(:,:,jk-1) - e3t_0(:,:,jk-1) )                         & 
     778               &                            +            0.5_wp * (tmask(:,:,jk) * (1.0_wp - zwad) + zwad)   & 
     779               &                            * ( pe3_in(:,:,jk  ) - e3t_0(:,:,jk  ) ) 
    761780         END DO 
    762781         !               ! -------------------------------------- ! 
     
    767786         ! - ML - The use of mask in this formaula enables the special treatment of the last w- point without indirect adressing 
    768787         DO jk = 2, jpk 
    769             pe3_out(:,:,jk) = e3uw_0(:,:,jk) + ( 1.0_wp - 0.5_wp * umask(:,:,jk) ) * ( pe3_in(:,:,jk-1) - e3u_0(:,:,jk-1) )   & 
    770                &                             +            0.5_wp * umask(:,:,jk)   * ( pe3_in(:,:,jk  ) - e3u_0(:,:,jk  ) ) 
     788            !pe3_out(:,:,jk) = e3uw_0(:,:,jk) + ( 1.0_wp - 0.5_wp * umask(:,:,jk) ) * ( pe3_in(:,:,jk-1) - e3u_0(:,:,jk-1) )   & 
     789            !   &                             +            0.5_wp * umask(:,:,jk)   * ( pe3_in(:,:,jk  ) - e3u_0(:,:,jk  ) ) 
     790            pe3_out(:,:,jk) = e3uw_0(:,:,jk) + ( 1.0_wp - 0.5_wp * (umask(:,:,jk) * (1.0_wp - zwad) + zwad) ) & 
     791               &                             * ( pe3_in(:,:,jk-1) - e3u_0(:,:,jk-1) )                         & 
     792               &                             +            0.5_wp * (umask(:,:,jk) * (1.0_wp - zwad) + zwad)   & 
     793               &                             * ( pe3_in(:,:,jk  ) - e3u_0(:,:,jk  ) ) 
    771794         END DO 
    772795         !               ! -------------------------------------- ! 
     
    777800         ! - ML - The use of mask in this formaula enables the special treatment of the last w- point without indirect adressing 
    778801         DO jk = 2, jpk 
    779             pe3_out(:,:,jk) = e3vw_0(:,:,jk) + ( 1.0_wp - 0.5_wp * vmask(:,:,jk) ) * ( pe3_in(:,:,jk-1) - e3v_0(:,:,jk-1) )   & 
    780                &                             +            0.5_wp * vmask(:,:,jk)   * ( pe3_in(:,:,jk  ) - e3v_0(:,:,jk  ) ) 
     802            !pe3_out(:,:,jk) = e3vw_0(:,:,jk) + ( 1.0_wp - 0.5_wp * vmask(:,:,jk) ) * ( pe3_in(:,:,jk-1) - e3v_0(:,:,jk-1) )   & 
     803            !   &                             +            0.5_wp * vmask(:,:,jk)   * ( pe3_in(:,:,jk  ) - e3v_0(:,:,jk  ) ) 
     804            pe3_out(:,:,jk) = e3vw_0(:,:,jk) + ( 1.0_wp - 0.5_wp * (vmask(:,:,jk) * (1.0_wp - zwad) + zwad) ) & 
     805               &                             * ( pe3_in(:,:,jk-1) - e3v_0(:,:,jk-1) )                         & 
     806               &                             +            0.5_wp * (vmask(:,:,jk) * (1.0_wp - zwad) + zwad)   & 
     807               &                             * ( pe3_in(:,:,jk  ) - e3v_0(:,:,jk  ) ) 
    781808         END DO 
    782809      END SELECT 
     
    882909                DO ji = 1, jpi 
    883910                  !IF(e3t_0(ji,jj,1) < 0._wp) THEN 
    884                   IF(mbathy(ji,jj) == 2 .AND. e3t_0(ji,jj,1) <= 0.5_wp * rn_wdmin1) THEN 
    885                     fse3t_b(ji,jj,1:2) = 0.5_wp * rn_wdmin1  
    886                     fse3t_n(ji,jj,1:2) = 0.5_wp * rn_wdmin1  
     911                  !IF(mbathy(ji,jj) == 2 .AND. e3t_0(ji,jj,1) <= 0.5_wp * rn_wdmin1) THEN 
     912                  IF( e3t_0(ji,jj,1) <= 0.5_wp * rn_wdmin1) THEN 
     913                    fse3t_b(ji,jj,:) = 0.5_wp * rn_wdmin1  
     914                    fse3t_n(ji,jj,:) = 0.5_wp * rn_wdmin1  
     915                    fse3t_a(ji,jj,:) = 0.5_wp * rn_wdmin1  
    887916                    sshb(ji,jj) = rn_wdmin1 - bathy(ji,jj) 
    888917                    sshn(ji,jj) = rn_wdmin1 - bathy(ji,jj) 
     918                    ssha(ji,jj) = rn_wdmin1 - bathy(ji,jj) 
    889919                  ENDIF 
    890920                ENDDO 
Note: See TracChangeset for help on using the changeset viewer.