Changeset 12627
- Timestamp:
- 2020-03-30T13:15:30+02:00 (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/UKMO/AMM15_v3_6_STABLE_package_collate_coupling/NEMOGCM/NEMO/OPA_SRC/SBC/sbcflx.F90
r12599 r12627 92 92 REAL :: cs ! UKMO SHELF: Friction co-efficient at surface 93 93 REAL :: totwindspd ! UKMO SHELF: Magnitude of wind speed vector 94 REAL(wp), DIMENSION(:,:), POINTER :: zwnd_i, zwnd_j ! wind speed components at T-point94 REAL(wp), DIMENSION(:,:), POINTER :: zwnd_i, zwnd_j ! wind speed components at U,V-points 95 95 96 96 REAL(wp) :: rhoa = 1.22 ! Air density kg/m3 … … 167 167 ENDIF 168 168 169 !! UKMO SHELF wind speed relative to surface currents - put here to allow merging with coupling branch169 !! UKMO SHELF flux files contain wind speed not wind stress 170 170 IF( ln_shelf_flx ) THEN 171 171 CALL wrk_alloc( jpi,jpj, zwnd_i, zwnd_j ) … … 176 176 !! UKMO SHELF - need atmospheric pressure to calculate Haney forcing 177 177 pressnow(ji,jj) = sf(jp_press)%fnow(ji,jj,1) 178 !! UKMO SHELF flux files contain wind speed not wind stress 178 179 qsr (ji,jj) = sf(jp_qsr )%fnow(ji,jj,1) 180 !! UKMO FOAM flux files contain non-solar heat flux (qns) rather than total heat flux (qtot) 181 qns (ji,jj) = sf(jp_qtot)%fnow(ji,jj,1) 182 !! UKMO FOAM flux files contain the net DOWNWARD freshwater flux P-E rather then E-P 183 emp (ji,jj) = -1. * sf(jp_emp )%fnow(ji,jj,1) 184 185 !!UKMO SHELF wind speed relative to surface currents - put here to allow merging with coupling branch 179 186 IF( ln_rel_wind ) THEN 180 187 zwnd_i(ji,jj) = sf(jp_utau)%fnow(ji,jj,1) - rn_wfac * ssu_m(ji,jj) … … 184 191 zwnd_j(ji,jj) = sf(jp_vtau)%fnow(ji,jj,1) 185 192 ENDIF 186 wndm(ji,jj) = sqrt(zwnd_i(ji,jj)*zwnd_i(ji,jj) + zwnd_j(ji,jj)*zwnd_j(ji,jj)) 187 188 ! add modification due to drag coefficient read from wave forcing 193 END DO 194 END DO 195 196 ! Calculate wind speed from the wind components 197 DO jj = 2, jpjm1 198 DO ji = fs_2, fs_jpim1 ! vect. opt. 199 ztx = zwnd_i(ji-1,jj ) + zwnd_i(ji,jj) 200 zty = zwnd_j(ji ,jj-1) + zwnd_j(ji,jj) 201 wndm(ji,jj) = 0.5 * SQRT( ztx * ztx + zty * zty ) 202 END DO 203 END DO 204 205 ! add modification due to drag coefficient read from wave forcing 206 DO jj = 1, jpjm1 207 DO ji = 1, jpim1 189 208 IF( ln_cdgw .AND. nn_drag == jp_std ) THEN 190 209 IF( cpl_wdrag ) THEN … … 194 213 vtau(ji,jj) = zwnd_j(ji,jj) 195 214 ELSE 196 utau(ji,jj) = zrhoa * cdn_wave(ji,jj) * zwnd_i(ji,jj) * wndm(ji,jj) 197 vtau(ji,jj) = zrhoa * cdn_wave(ji,jj) * zwnd_j(ji,jj) * wndm(ji,jj) 215 utau(ji,jj) = zrhoa * 0.25 * ( cdn_wave(ji,jj) + cdn_wave(ji+1,jj) ) * zwnd_i(ji,jj) * & 216 ( wndm(ji,jj) + wndm(ji+1,jj) ) 217 vtau(ji,jj) = zrhoa * 0.25 * ( cdn_wave(ji,jj) + cdn_wave(ji,jj+1) ) * zwnd_j(ji,jj) * & 218 ( wndm(ji,jj) + wndm(ji,jj+1) ) 198 219 ENDIF 199 220 ELSE IF( nn_drag == jp_const ) THEN 200 utau(ji,jj) = zrhoa * zcdrag * zwnd_i(ji,jj) * wndm(ji,jj)201 vtau(ji,jj) = zrhoa * zcdrag * zwnd_j(ji,jj) * wndm(ji,jj)221 utau(ji,jj) = zrhoa * zcdrag * zwnd_i(ji,jj) * 0.5 * ( wndm(ji,jj) + wndm(ji+1,jj) ) 222 vtau(ji,jj) = zrhoa * zcdrag * zwnd_j(ji,jj) * 0.5 * ( wndm(ji,jj) + wndm(ji,jj+1) ) 202 223 ELSE IF( nn_drag == jp_ukmo ) THEN 203 cs = 0.63 + (0.066 * wndm(ji,jj)) 204 utau(ji,jj) = cs * (rhoa/rau0) * zwnd_i(ji,jj) * wndm(ji,jj) 205 vtau(ji,jj) = cs * (rhoa/rau0) * zwnd_j(ji,jj) * wndm(ji,jj) 224 totwindspd = sqrt(zwnd_i(ji,jj)*zwnd_i(ji,jj) + zwnd_j(ji,jj)*zwnd_j(ji,jj)) 225 cs = 0.63 + (0.066 * totwindspd) 226 utau(ji,jj) = cs * (rhoa/rau0) * zwnd_i(ji,jj) * totwindspd 227 vtau(ji,jj) = cs * (rhoa/rau0) * zwnd_j(ji,jj) * totwindspd 206 228 ENDIF 207 taum(ji,jj) = sqrt(utau(ji,jj)*utau(ji,jj) + vtau(ji,jj)*vtau(ji,jj))208 209 qsr (ji,jj) = sf(jp_qsr )%fnow(ji,jj,1)210 !! UKMO FOAM flux files contain non-solar heat flux (qns) rather than total heat flux (qtot)211 qns (ji,jj) = sf(jp_qtot)%fnow(ji,jj,1)212 !! UKMO FOAM flux files contain the net DOWNWARD freshwater flux P-E rather then E-P213 emp (ji,jj) = -1. * sf(jp_emp )%fnow(ji,jj,1)214 END DO215 END DO216 ! Move tau components to the right grid217 DO jj = 1, jpjm1218 DO ji = 1, jpim1219 utau(ji,jj) = 0.5 * ( utau(ji,jj) + utau(ji+1,jj) )220 vtau(ji,jj) = 0.5 * ( vtau(ji,jj) + vtau(ji,jj+1) )221 229 222 230 !!UKMO SHELF effect of atmospheric pressure on SSH … … 228 236 END DO 229 237 END DO 238 239 CALL wrk_dealloc( jpi,jpj, zwnd_i, zwnd_j ) 230 240 ELSE 231 241 DO jj = 1, jpj ! set the ocean fluxes from read fields … … 245 255 END DO 246 256 END DO 257 ENDIF 247 258 ! ! module of wind stress and wind speed at T-point 248 259 zcoef = 1. / ( zrhoa * zcdrag ) 249 260 !CDIR NOVERRCHK 250 261 DO jj = 2, jpjm1 251 262 !CDIR NOVERRCHK 252 DO ji = fs_2, fs_jpim1 ! vect. opt. 253 ztx = utau(ji-1,jj ) + utau(ji,jj) 254 zty = vtau(ji ,jj-1) + vtau(ji,jj) 255 zmod = 0.5 * SQRT( ztx * ztx + zty * zty ) 256 taum(ji,jj) = zmod 257 wndm(ji,jj) = SQRT( zmod * zcoef ) 258 END DO 259 END DO 260 ENDIF 263 DO ji = fs_2, fs_jpim1 ! vect. opt. 264 ztx = utau(ji-1,jj ) + utau(ji,jj) 265 zty = vtau(ji ,jj-1) + vtau(ji,jj) 266 zmod = 0.5 * SQRT( ztx * ztx + zty * zty ) 267 taum(ji,jj) = zmod 268 IF( .NOT. ln_shelf_flx ) wndm(ji,jj) = SQRT( zmod * zcoef ) 269 END DO 270 END DO 261 271 ! ! add to qns the heat due to e-p 262 272 qns(:,:) = qns(:,:) - emp(:,:) * sst_m(:,:) * rcp ! mass flux is at SST … … 284 294 ENDIF 285 295 ! 286 IF( ln_shelf_flx ) THEN287 CALL wrk_dealloc( jpi,jpj, zwnd_i, zwnd_j )288 ENDIF289 !290 296 ENDIF 291 297 !
Note: See TracChangeset
for help on using the changeset viewer.