Changeset 7193
- Timestamp:
- 2016-11-04T15:23:32+01:00 (7 years ago)
- 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 41 41 USE sbcapr ! surface boundary condition: atmospheric pressure 42 42 USE dynadv, ONLY: ln_dynadv_vec 43 USE sbcwave, ONLY: usd2d, vsd2d44 43 #if defined key_agrif 45 44 USE agrif_opa_interp ! agrif -
branches/UKMO/r5936_INGV1_WAVE-coupling/NEMOGCM/NEMO/OPA_SRC/DYN/sshwzv.F90
r7167 r7193 39 39 USE wrk_nemo ! Memory Allocation 40 40 USE timing ! Timing 41 USE sbcwave, ONLY: zusd2dt, zvsd2dt,wsd3d41 USE sbcwave, ONLY: usd3dt, vsd3dt,wsd3d 42 42 43 43 IMPLICIT NONE … … 162 162 REAL(wp), POINTER, DIMENSION(:,: ) :: z2d 163 163 REAL(wp), POINTER, DIMENSION(:,:,:) :: z3d, zhdiv 164 REAL(wp) , ALLOCATABLE, DIMENSION(:,: ) :: sshnu, sshnv,dsshnu, dsshnv164 REAL(wp) :: dsshnu, dsshnv 165 165 !!---------------------------------------------------------------------- 166 166 ! … … 210 210 ENDIF 211 211 ! 212 ! In case ln_wave and ln_sdw the surface vertical velocity is modified212 ! In case ln_wave and ln_sdw, the surface vertical velocity is modified 213 213 ! accounting for Sokes Drift velocity 214 ! 214 215 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 231 227 ENDDO 232 ! Compute d(ssh)/dx and d(ssh)/dy233 !---------------------------------234 DO jj = 1 , jpjm1235 DO ji = 1 , jpim1236 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 ENDDO239 ENDDO240 ! Compute the surface vertical velocity accounting for the Stokes Drift241 !---------------------------------------------------------------------242 wn(:,:,1) = wn(:,:,1) + zusd2dt(:,:) * dsshnu(:,:) &243 & + zvsd2dt(:,:) * dsshnv(:,:) &244 & - ( wsd3d (:,:,1) ) * tmask(:,:,1)245 228 ENDIF 246 229 ! -
branches/UKMO/r5936_INGV1_WAVE-coupling/NEMOGCM/NEMO/OPA_SRC/SBC/sbcmod.F90
r7167 r7193 53 53 USE sbcwave ! Wave module 54 54 USE bdy_par ! Require lk_bdy 55 USE zdf_oce, ONLY : ln_zdfqiao 55 56 56 57 IMPLICIT NONE … … 88 89 & ln_blk_mfs, ln_apr_dyn, nn_ice, nn_ice_embd, ln_dm2dc , ln_rnf , & 89 90 & 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 91 93 INTEGER :: ios 92 94 INTEGER :: ierr, ierr0, ierr1, ierr2, ierr3, jpm -
branches/UKMO/r5936_INGV1_WAVE-coupling/NEMOGCM/NEMO/OPA_SRC/SBC/sbcwave.F90
r7168 r7193 56 56 REAL(wp), PUBLIC, ALLOCATABLE, DIMENSION(:,:) :: usd2d, vsd2d 57 57 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: usd3d, vsd3d, wsd3d 58 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: usd3dt, vsd3dt 58 59 REAL(wp), PUBLIC, ALLOCATABLE, DIMENSION(:,:) :: zusd2dt, zvsd2dt 59 60 … … 94 95 ztransp = 2.0_wp*rpi*swh(ji,jj)**2.0_wp/(16.0_wp*MAX(wmp(ji,jj),0.0000001_wp)) 95 96 ! 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) 97 98 ! Wavenumber scale 98 99 zk = ABS(zsp0)/MAX(ABS(5.97_wp*ztransp),0.0000001_wp) … … 101 102 END DO 102 103 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 104 114 DO jj = 1, jpjm1 105 115 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)) 117 120 END DO 118 121 END DO … … 170 173 DO jj = 1, jpj 171 174 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) 174 176 END DO 175 177 END DO … … 287 289 ALLOCATE( usd2d(jpi,jpj),vsd2d(jpi,jpj) ) 288 290 ALLOCATE( usd3d(jpi,jpj,jpk),vsd3d(jpi,jpj,jpk),wsd3d(jpi,jpj,jpk) ) 291 ALLOCATE( usd3dt(jpi,jpj,jpk),vsd3dt(jpi,jpj,jpk) ) 289 292 ALLOCATE( swh(jpi,jpj), wmp(jpi,jpj) ) 290 293 ALLOCATE( zusd2dt(jpi,jpj), zvsd2dt(jpi,jpj) ) … … 292 295 vsd3d(:,:,:) = 0._wp ; vsd2d(:,:) = 0._wp ; 293 296 wsd3d(:,:,:) = 0._wp ; 297 usd3dt(:,:,:) = 0._wp ; vsd3dt(:,:,:) = 0._wp ; 294 298 swh (:,:) = 0._wp ; wmp (:,:) = 0._wp ; 295 299 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 31 31 REAL(wp),PUBLIC,ALLOCATABLE,DIMENSION (:,:,:) :: QBv, QBvu, QBvv 32 32 33 !! * Substitutions 34 # include "domzgr_substitute.h90" 33 35 !!---------------------------------------------------------------------- 34 36 !! NEMO/OPA 4.0 , NEMO Consortium (2011) … … 82 84 QBv(ji,jj,jk) = 1.0 * 0.353553 * swh(ji,jj) * tsd2d(ji,jj) * & 83 85 & 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)))) 86 88 END DO 87 89 END DO … … 98 100 DO jj = 1, jpjm1 99 101 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) & 105 107 & + QBv(ji,jj+1,jk) * tmask(ji,jj+1,jk) ) 106 107 108 END DO 108 109 END DO
Note: See TracChangeset
for help on using the changeset viewer.