Changeset 7171


Ignore:
Timestamp:
2016-11-03T11:18:03+01:00 (4 years ago)
Author:
emanuelaclementi
Message:

#1643 Updates and bug fix on development branch 2015/dev_r5936_INGV1_WAVE

Location:
branches/2015/dev_r5936_INGV1_WAVE/NEMOGCM/NEMO/OPA_SRC
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • branches/2015/dev_r5936_INGV1_WAVE/NEMOGCM/NEMO/OPA_SRC/DYN/dynspg_ts.F90

    r6253 r7171  
    4141   USE sbcapr          ! surface boundary condition: atmospheric pressure 
    4242   USE dynadv, ONLY: ln_dynadv_vec 
    43    USE sbcwave, ONLY: usd2d, vsd2d 
    4443#if defined key_agrif 
    4544   USE agrif_opa_interp ! agrif 
  • branches/2015/dev_r5936_INGV1_WAVE/NEMOGCM/NEMO/OPA_SRC/DYN/sshwzv.F90

    r6253 r7171  
    3939   USE wrk_nemo        ! Memory Allocation 
    4040   USE timing          ! Timing 
    41    USE sbcwave,  ONLY:  zusd2dt, zvsd2dt,wsd3d 
     41   USE sbcwave,  ONLY:  usd3dt, vsd3dt,wsd3d 
    4242 
    4343   IMPLICIT NONE 
     
    162162      REAL(wp), POINTER, DIMENSION(:,:  ) ::  z2d 
    163163      REAL(wp), POINTER, DIMENSION(:,:,:) ::  z3d, zhdiv 
    164       REAL(wp), ALLOCATABLE, DIMENSION(:,:  ) ::  sshnu, sshnv, dsshnu, dsshnv 
     164      REAL(wp) :: dsshnu, dsshnv 
    165165      !!---------------------------------------------------------------------- 
    166166      ! 
     
    210210      ENDIF 
    211211! 
    212 !     In case ln_wave and ln_sdw the surface vertical velocity is modified 
     212!     In case ln_wave and ln_sdw, the surface vertical velocity is modified 
    213213!     accounting for Sokes Drift velocity 
     214! 
    214215      IF ( ln_wave .AND. ln_sdw )  THEN 
    215        ALLOCATE(sshnu(jpi,jpj),sshnv(jpi,jpj),dsshnu(jpi,jpj),dsshnv(jpi,jpj)) 
    216        sshnu (:,:) = 0._wp 
    217        sshnv (:,:) = 0._wp 
    218        dsshnu(:,:) = 0._wp 
    219        dsshnv(:,:) = 0._wp 
    220        ! sshn interpolated on U-V grid 
    221        !--------------------------------- 
    222        DO jj = 1 , jpjm1 
    223          DO ji = 1 , jpim1 
    224            sshnu(ji,jj) =  0.5 * ( 2. - umask(ji,jj,1) ) *               & 
    225                         &        ( sshn(ji  ,jj) * tmask(ji  ,jj,1)      & 
    226                         &        + sshn(ji+1,jj) * tmask(ji+1,jj,1) ) 
    227            sshnv(ji,jj) =  0.5 * ( 2. - vmask(ji,jj,1) ) *               & 
    228                         &        ( sshn(ji,jj  ) * tmask(ji,jj  ,1)      & 
    229                         &        + sshn(ji,jj+1) * tmask(ji,jj+1,1) ) 
    230          ENDDO 
     216      ! Compute d(ssh)/dx  and d(ssh)/dy   
     217      ! Compute the surface vertical velocity accounting for the Stokes Drift 
     218      !--------------------------------- 
     219       DO jj = 2 , jpjm1 
     220        DO ji = 2 , jpim1 
     221          dsshnu = ( ssha(ji+1,jj) - ssha(ji,jj) ) / e1u(ji,jj) 
     222          dsshnv = ( ssha(ji,jj+1) - ssha(ji,jj) ) / e2v(ji,jj) 
     223          wn(ji,jj,1) = wn(ji,jj,1) +( usd3dt(ji,jj,1) * dsshnu     & 
     224                &     + vsd3dt(ji,jj,1) * dsshnv                    & 
     225                &     - ( wsd3d (ji,jj,1) )) * tmask(ji,jj,1) 
     226        ENDDO 
    231227       ENDDO 
    232        ! Compute d(ssh)/dx  and d(ssh)/dy   
    233        !--------------------------------- 
    234        DO jj = 1 , jpjm1 
    235          DO ji = 1 , jpim1 
    236            dsshnu(ji,jj) = ( sshnu(ji+1,jj) - sshnu(ji,jj) ) / e1u(ji,jj) 
    237            dsshnv(ji,jj) = ( sshnv(ji,jj+1) - sshnv(ji,jj) ) / e2v(ji,jj) 
    238          ENDDO 
    239        ENDDO 
    240        ! Compute the surface vertical velocity accounting for the Stokes Drift  
    241        !--------------------------------------------------------------------- 
    242        wn(:,:,1) = wn(:,:,1) + zusd2dt(:,:) * dsshnu(:,:)     & 
    243                  &           + zvsd2dt(:,:) * dsshnv(:,:)      & 
    244                  &           - ( wsd3d (:,:,1) ) * tmask(:,:,1) 
    245228      ENDIF 
    246229      ! 
  • branches/2015/dev_r5936_INGV1_WAVE/NEMOGCM/NEMO/OPA_SRC/SBC/sbcwave.F90

    r7078 r7171  
    4545   REAL(wp), PUBLIC, ALLOCATABLE, DIMENSION(:,:)       :: usd2d, vsd2d 
    4646   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)     :: usd3d, vsd3d, wsd3d  
     47   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)     :: usd3dt, vsd3dt 
    4748   REAL(wp), PUBLIC, ALLOCATABLE, DIMENSION(:,:)       :: zusd2dt, zvsd2dt 
    4849 
     
    138139            ALLOCATE( usd2d(jpi,jpj),vsd2d(jpi,jpj) ) 
    139140            ALLOCATE( usd3d(jpi,jpj,jpk),vsd3d(jpi,jpj,jpk),wsd3d(jpi,jpj,jpk) ) 
     141            ALLOCATE( usd3dt(jpi,jpj,jpk),vsd3dt(jpi,jpj,jpk) ) 
    140142            ALLOCATE( swh(jpi,jpj), wmp(jpi,jpj) ) 
    141143            ALLOCATE( zusd2dt(jpi,jpj), zvsd2dt(jpi,jpj) ) 
     
    143145            vsd3d(:,:,:) = 0._wp   ;   vsd2d(:,:) = 0._wp   ;  
    144146            wsd3d(:,:,:) = 0._wp   ; 
     147            usd3dt(:,:,:) = 0._wp  ;   vsd3dt(:,:,:) = 0._wp   ; 
    145148            swh  (:,:)   = 0._wp   ;    wmp (:,:) = 0._wp ; 
    146149            IF ( ln_zdfqiao ) THEN     !==  Vertical mixing enhancement using Qiao,2010  ==! 
     
    185188               ztransp = 2.0_wp*rpi*swh(ji,jj)**2.0_wp/(16.0_wp*MAX(wmp(ji,jj),0.0000001_wp)) 
    186189               ! Stokes surface speed 
    187                zsp0 = SQRT( sf_sd(jp_usd)%fnow(ji,jj,1)**2 +  sf_sd(jp_vsd)%fnow(ji,jj,1)**2) 
     190               zsp0 = SQRT( zusd2dt(ji,jj)**2 + zvsd2dt(ji,jj)**2) 
    188191               ! Wavenumber scale 
    189192               zk = ABS(zsp0)/MAX(ABS(5.97_wp*ztransp),0.0000001_wp) 
     
    192195               END DO 
    193196            END DO 
    194  
     197            ! 
     198            DO jj = 1, jpj 
     199               DO ji = 1, jpi 
     200                 usd3dt(ji,jj,jk) = zfac(ji,jj) * zusd2dt (ji,jj) * tmask(ji,jj,jk) 
     201                 vsd3dt(ji,jj,jk) = zfac(ji,jj) * zvsd2dt (ji,jj) * tmask(ji,jj,jk) 
     202               END DO 
     203            END DO 
     204         END DO 
     205         ! Into the U and V Grid 
     206         DO jk = 1, jpkm1 
    195207            DO jj = 1, jpjm1 
    196208               DO ji = 1, jpim1 
    197                   ! Into the U and V Grid  
    198                   zus = 0.5 * ( 2. - umask(ji,jj,1) ) * ( zfac(ji,jj) * tmask(ji,jj,1) & 
    199                  &                                + zfac(ji+1,jj) * tmask(ji+1,jj,1) ) 
    200  
    201                   zvs = 0.5 * ( 2. - vmask(ji,jj,1) ) * ( zfac(ji,jj) * tmask(ji,jj,1) & 
    202                  &                                + zfac(ji,jj+1) * tmask(ji,jj+1,1) ) 
    203  
    204                   usd2d(ji,jj) = 0.5 * ( 2. - umask(ji,jj,1) ) * ( zusd2dt(ji,jj) * tmask(ji,jj,1) & 
    205                  &                                             +  zusd2dt(ji+1,jj) * tmask(ji+1,jj,1) ) 
    206  
    207                   vsd2d(ji,jj) = 0.5 * ( 2. - vmask(ji,jj,1) ) * ( zvsd2dt(ji,jj) * tmask(ji,jj,1) & 
    208                  &                                              + zvsd2dt(ji,jj+1) * tmask(ji,jj+1,1) ) 
    209  
    210                   usd3d(ji,jj,jk) = usd2d(ji,jj) * zus 
    211                   vsd3d(ji,jj,jk) = vsd2d(ji,jj) * zvs 
     209               usd3d(ji,jj,jk) =   0.5 *  umask(ji,jj,jk)  *        & 
     210                               &  (usd3dt(ji,jj,jk) + usd3dt(ji+1,jj,jk)) 
     211               vsd3d(ji,jj,jk) =  0.5 *  vmask(ji,jj,jk)  *           & 
     212                               &  (vsd3dt(ji,jj,jk) + vsd3dt(ji,jj+1,jk)) 
    212213               END DO 
    213214            END DO 
     
    254255            DO jj = 1, jpj 
    255256               DO ji = 1, jpi 
    256                    tsd2d(ji,jj) = ((sf_sd(jp_usd)%fnow(ji,jj,1) * tmask(ji,jj,1))**2.0  +     & 
    257                 &               (sf_sd(jp_vsd)%fnow(ji,jj,1) * tmask(ji,jj,1))**2.0)**0.5 
     257                   tsd2d(ji,jj) = SQRT( zusd2dt(ji,jj)**2 + zvsd2dt(ji,jj)**2) 
    258258               END DO 
    259259            END DO 
  • branches/2015/dev_r5936_INGV1_WAVE/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfqiao.F90

    r6253 r7171  
    3131   REAL(wp),PUBLIC,ALLOCATABLE,DIMENSION (:,:,:)     :: QBv, QBvu, QBvv 
    3232 
     33   !! * Substitutions 
     34#  include "domzgr_substitute.h90" 
    3335   !!---------------------------------------------------------------------- 
    3436   !! NEMO/OPA 4.0 , NEMO Consortium (2011)  
     
    8284                  QBv(ji,jj,jk) = 1.0 * 0.353553 * swh(ji,jj) * tsd2d(ji,jj) *       & 
    8385               &              exp(3.0 * wnum(ji,jj) *                                &                      
    84                &              (-MIN( gdept_0(ji  ,jj  ,jk) , gdept_0(ji+1,jj  ,jk),  &  
    85                &               gdept_0(ji  ,jj+1,jk),gdept_0(ji+1,jj+1,jk)))) 
     86               &              (-MIN( fsdept(ji  ,jj  ,jk) , fsdept(ji+1,jj  ,jk),    & 
     87               &                     fsdept(ji  ,jj+1,jk) , fsdept(ji+1,jj+1,jk)))) 
    8688               END DO 
    8789            END DO 
     
    98100            DO jj = 1, jpjm1 
    99101               DO ji = 1, jpim1 
    100                   QBvu(ji,jj,jk)=0.5 * ( 2. - umask(ji,jj,jk) ) *                 & 
    101                &           ( QBv(ji,jj,jk) * tmask(ji,jj,jk)                      &  
    102                &           + QBv(ji+1,jj,jk) * tmask(ji+1,jj,jk) )                
    103                   QBvv(ji,jj,jk)=0.5 * ( 2. - vmask(ji,jj,jk) ) *                 & 
    104                &           ( QBv(ji,jj,jk) * tmask(ji,jj,jk)                      & 
     102                  QBvu(ji,jj,jk) = 0.5 *  umask(ji,jj,jk)  *               & 
     103               &           ( QBv(ji  ,jj,jk) * tmask(ji  ,jj,jk)           & 
     104               &           + QBv(ji+1,jj,jk) * tmask(ji+1,jj,jk) ) 
     105                  QBvv(ji,jj,jk) = 0.5 *  vmask(ji,jj,jk)  *               & 
     106               &           ( QBv(ji,jj  ,jk) * tmask(ji,jj  ,jk)           & 
    105107               &           + QBv(ji,jj+1,jk) * tmask(ji,jj+1,jk) ) 
    106  
    107108               END DO 
    108109            END DO 
Note: See TracChangeset for help on using the changeset viewer.