Changeset 7193


Ignore:
Timestamp:
2016-11-04T15:23:32+01:00 (4 years ago)
Author:
jcastill
Message:

Update latest changes to the INGV branch, fix small bug (read ln_zdfqiao from the namelist)

Location:
branches/UKMO/r5936_INGV1_WAVE-coupling/NEMOGCM/NEMO/OPA_SRC
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • branches/UKMO/r5936_INGV1_WAVE-coupling/NEMOGCM/NEMO/OPA_SRC/DYN/dynspg_ts.F90

    r7167 r7193  
    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/UKMO/r5936_INGV1_WAVE-coupling/NEMOGCM/NEMO/OPA_SRC/DYN/sshwzv.F90

    r7167 r7193  
    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/UKMO/r5936_INGV1_WAVE-coupling/NEMOGCM/NEMO/OPA_SRC/SBC/sbcmod.F90

    r7167 r7193  
    5353   USE sbcwave          ! Wave module 
    5454   USE bdy_par          ! Require lk_bdy 
     55   USE zdf_oce,  ONLY : ln_zdfqiao 
    5556 
    5657   IMPLICIT NONE 
     
    8889         &             ln_blk_mfs, ln_apr_dyn, nn_ice, nn_ice_embd, ln_dm2dc   , ln_rnf   ,   & 
    8990         &             ln_ssr    , nn_isf    , nn_fwb, ln_cdgw    , ln_wave    , ln_sdw   ,   & 
    90          &             ln_tauoc  , ln_stcor  , nn_lsm, nn_limflx  , nn_components, ln_cpl  
     91         &             ln_tauoc  , ln_stcor  , nn_lsm, nn_limflx  , nn_components, ln_cpl ,   & 
     92         &             ln_zdfqiao 
    9193      INTEGER  ::   ios 
    9294      INTEGER  ::   ierr, ierr0, ierr1, ierr2, ierr3, jpm 
  • branches/UKMO/r5936_INGV1_WAVE-coupling/NEMOGCM/NEMO/OPA_SRC/SBC/sbcwave.F90

    r7168 r7193  
    5656   REAL(wp), PUBLIC, ALLOCATABLE, DIMENSION(:,:)       :: usd2d, vsd2d 
    5757   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)     :: usd3d, vsd3d, wsd3d  
     58   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)     :: usd3dt, vsd3dt 
    5859   REAL(wp), PUBLIC, ALLOCATABLE, DIMENSION(:,:)       :: zusd2dt, zvsd2dt 
    5960 
     
    9495            ztransp = 2.0_wp*rpi*swh(ji,jj)**2.0_wp/(16.0_wp*MAX(wmp(ji,jj),0.0000001_wp)) 
    9596            ! Stokes surface speed 
    96             zsp0 = SQRT( sf_sd(jp_usd)%fnow(ji,jj,1)**2 + sf_sd(jp_vsd)%fnow(ji,jj,1)**2) 
     97            zsp0 = SQRT( zusd2dt(ji,jj)**2 + zvsd2dt(ji,jj)**2) 
    9798            ! Wavenumber scale 
    9899            zk = ABS(zsp0)/MAX(ABS(5.97_wp*ztransp),0.0000001_wp) 
     
    101102            END DO 
    102103         END DO 
    103  
     104         ! 
     105         DO jj = 1, jpj 
     106            DO ji = 1, jpi 
     107               usd3dt(ji,jj,jk) = zfac(ji,jj) * zusd2dt(ji,jj) * tmask(ji,jj,jk)  
     108               vsd3dt(ji,jj,jk) = zfac(ji,jj) * zvsd2dt (ji,jj) * tmask(ji,jj,jk)  
     109            END DO  
     110         END DO  
     111      END DO  
     112      ! Into the U and V Grid  
     113      DO jk = 1, jpkm1  
    104114         DO jj = 1, jpjm1 
    105115            DO ji = 1, jpim1 
    106                ! Into the U and V Grid  
    107                zus = 0.5 * ( 2. - umask(ji,jj,1) ) * ( zfac(ji,jj) * tmask(ji,jj,1) & 
    108                   &                                + zfac(ji+1,jj) * tmask(ji+1,jj,1) ) 
    109                zvs = 0.5 * ( 2. - vmask(ji,jj,1) ) * ( zfac(ji,jj) * tmask(ji,jj,1) & 
    110                   &                                + zfac(ji,jj+1) * tmask(ji,jj+1,1) ) 
    111                usd2d(ji,jj) = 0.5 * ( 2. - umask(ji,jj,1) ) * ( zusd2dt(ji,jj) * tmask(ji,jj,1) & 
    112                   &                                         + zusd2dt(ji+1,jj) * tmask(ji+1,jj,1) ) 
    113                vsd2d(ji,jj) = 0.5 * ( 2. - vmask(ji,jj,1) ) * ( zvsd2dt(ji,jj) * tmask(ji,jj,1) & 
    114                   &                                         + zvsd2dt(ji,jj+1) * tmask(ji,jj+1,1) ) 
    115                usd3d(ji,jj,jk) = usd2d(ji,jj) * zus 
    116                vsd3d(ji,jj,jk) = vsd2d(ji,jj) * zvs 
     116               usd3d(ji,jj,jk) =   0.5 *  umask(ji,jj,jk)  *        & 
     117                               &  (usd3dt(ji,jj,jk) + usd3dt(ji+1,jj,jk)) 
     118               vsd3d(ji,jj,jk) =  0.5 *  vmask(ji,jj,jk)  *           & 
     119                               &  (vsd3dt(ji,jj,jk) + vsd3dt(ji,jj+1,jk)) 
    117120            END DO 
    118121         END DO 
     
    170173      DO jj = 1, jpj 
    171174         DO ji = 1, jpi 
    172             tsd2d(ji,jj) = ((zusd2dt(ji,jj) * tmask(ji,jj,1))**2.0  + & 
    173             &               (zvsd2dt(ji,jj) * tmask(ji,jj,1))**2.0)**0.5 
     175            tsd2d(ji,jj) = SQRT( zusd2dt(ji,jj)**2 + zvsd2dt(ji,jj)**2) 
    174176         END DO 
    175177      END DO 
     
    287289            ALLOCATE( usd2d(jpi,jpj),vsd2d(jpi,jpj) ) 
    288290            ALLOCATE( usd3d(jpi,jpj,jpk),vsd3d(jpi,jpj,jpk),wsd3d(jpi,jpj,jpk) ) 
     291            ALLOCATE( usd3dt(jpi,jpj,jpk),vsd3dt(jpi,jpj,jpk) ) 
    289292            ALLOCATE( swh(jpi,jpj), wmp(jpi,jpj) ) 
    290293            ALLOCATE( zusd2dt(jpi,jpj), zvsd2dt(jpi,jpj) ) 
     
    292295            vsd3d(:,:,:) = 0._wp   ;   vsd2d(:,:) = 0._wp   ;  
    293296            wsd3d(:,:,:) = 0._wp   ; 
     297            usd3dt(:,:,:) = 0._wp  ;   vsd3dt(:,:,:) = 0._wp   ; 
    294298            swh  (:,:)   = 0._wp   ;    wmp (:,:) = 0._wp ; 
    295299            IF ( ln_zdfqiao ) THEN     !==  Vertical mixing enhancement using Qiao,2010  ==! 
  • branches/UKMO/r5936_INGV1_WAVE-coupling/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfqiao.F90

    r7167 r7193  
    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.