Changeset 10478 for branches/UKMO/AMM15_v3_6_STABLE_package_collate_coupling/NEMOGCM/NEMO/OPA_SRC/SBC/sbcflx.F90
- Timestamp:
- 2019-01-09T12:11:55+01: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
r8918 r10478 20 20 USE iom ! IOM library 21 21 USE in_out_manager ! I/O manager 22 USE sbcwave ! wave physics 22 23 USE lib_mpp ! distribued memory computing library 23 24 USE lbclnk ! ocean lateral boundary conditions (or mpp link) … … 87 88 REAL(wp) :: zrhoa = 1.22 ! Air density kg/m3 88 89 REAL(wp) :: zcdrag = 1.5e-3 ! drag coefficient 90 REAL(wp) :: totwind ! UKMO SHELF: Module of wind speed 89 91 REAL(wp) :: ztx, zty, zmod, zcoef ! temporary variables 90 92 REAL :: cs ! UKMO SHELF: Friction co-efficient at surface … … 115 117 IF(lwm) WRITE ( numond, namsbc_flx ) 116 118 ! 119 IF(lwp) THEN ! Namelist print 120 WRITE(numout,*) 121 WRITE(numout,*) 'sbc_flx : Flux forcing' 122 WRITE(numout,*) '~~~~~~~~~~~' 123 WRITE(numout,*) ' Namelist namsbc_flx : shelf seas configuration (force with winds instead of momentum)' 124 WRITE(numout,*) ' shelf seas configuration ln_shelf_flx = ', ln_shelf_flx 125 WRITE(numout,*) ' relative wind speed ln_rel_wind = ', ln_rel_wind 126 WRITE(numout,*) ' wind multiplication factor rn_wfac = ', rn_wfac 127 ENDIF 117 128 ! ! check: do we plan to use ln_dm2dc with non-daily forcing? 118 129 IF( ln_dm2dc .AND. sn_qsr%nfreqh /= 24 ) & … … 210 221 END DO 211 222 END DO 223 ! ! add modification due to drag coefficient read from wave forcing 224 ! ! this code is inefficient but put here to allow merging with another UKMO branch 225 IF( ln_shelf_flx ) THEN 226 ! calculate first the wind module, as it will be used later 227 DO jj = 2, jpjm1 228 DO ji = fs_2, fs_jpim1 ! vect. opt. 229 ztx = zwnd_i(ji-1,jj ) + zwnd_i(ji,jj) 230 zty = zwnd_j(ji ,jj-1) + zwnd_j(ji,jj) 231 wndm(ji,jj) = 0.5 * SQRT( ztx * ztx + zty * zty ) 232 END DO 233 END DO 234 CALL lbc_lnk( wndm(:,:), 'T', 1. ) 235 236 IF( ln_cdgw .AND. nn_drag == jp_std ) THEN 237 IF( cpl_wdrag ) THEN 238 ! reset utau and vtau to the wind components: the momentum will 239 ! be calculated from the coupled value of the drag coefficient 240 DO jj = 1, jpj 241 DO ji = 1, jpi 242 utau(ji,jj) = zwnd_i(ji,jj) 243 vtau(ji,jj) = zwnd_j(ji,jj) 244 END DO 245 END DO 246 ELSE 247 DO jj = 1, jpjm1 248 DO ji = 1, jpim1 249 utau(ji,jj) = zrhoa * 0.5 * ( cdn_wave(ji,jj) + cdn_wave(ji+1,jj) ) * zwnd_i(ji,jj) * & 250 0.5 * ( wndm(ji,jj) + wndm(ji+1,jj) ) 251 vtau(ji,jj) = zrhoa * 0.5 * ( cdn_wave(ji,jj) + cdn_wave(ji,jj+1) ) * zwnd_j(ji,jj) * & 252 0.5 * ( wndm(ji,jj) + wndm(ji,jj+1) ) 253 END DO 254 END DO 255 CALL lbc_lnk_multi( utau(:,:), 'U', -1., vtau(:,:), 'V', -1. ) 256 ENDIF 257 ELSE IF( nn_drag == jp_const ) THEN 258 DO jj = 1, jpjm1 259 DO ji = 1, jpim1 260 utau(ji,jj) = zrhoa * zcdrag * zwnd_i(ji,jj) * 0.5 * ( wndm(ji,jj) + wndm(ji+1,jj) ) 261 vtau(ji,jj) = zrhoa * zcdrag * zwnd_j(ji,jj) * 0.5 * ( wndm(ji,jj) + wndm(ji,jj+1) ) 262 END DO 263 END DO 264 CALL lbc_lnk_multi( utau(:,:), 'U', -1., vtau(:,:), 'V', -1. ) 265 ENDIF 266 ENDIF 212 267 ! ! add to qns the heat due to e-p 213 268 qns(:,:) = qns(:,:) - emp(:,:) * sst_m(:,:) * rcp ! mass flux is at SST … … 230 285 zmod = 0.5 * SQRT( ztx * ztx + zty * zty ) 231 286 taum(ji,jj) = zmod 287 IF( .NOT. ln_shelf_flx ) THEN 232 288 wndm(ji,jj) = SQRT( zmod * zcoef ) 289 ENDIF 233 290 END DO 234 291 END DO
Note: See TracChangeset
for help on using the changeset viewer.