Changeset 8917 for branches/UKMO
- Timestamp:
- 2017-12-06T13:25:24+01:00 (6 years ago)
- Location:
- branches/UKMO/r6232_HZG_WAVE-coupling/NEMOGCM/NEMO/OPA_SRC/SBC
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/UKMO/r6232_HZG_WAVE-coupling/NEMOGCM/NEMO/OPA_SRC/SBC/sbccpl.F90
r8756 r8917 1062 1062 ! it is possible that the momentum is calculated from the winds (ln_shelf_flx) and a coupled drag coefficient 1063 1063 IF( srcv(jpr_wdrag)%laction .AND. ln_shelf_flx .AND. ln_cdgw .AND. nn_drag == jp_std ) THEN 1064 DO jj = 1, jpj 1065 DO ji = 1, jpi 1066 ! here utau and vtau should contain the wind components as read from the forcing files 1067 zcoef = SQRT(utau(ji,jj)*utau(ji,jj) + vtau(ji,jj)*vtau(ji,jj)) 1068 frcv(jpr_otx1)%z3(ji,jj,1) = zrhoa * frcv(jpr_wdrag)%z3(ji,jj,1) * utau(ji,jj) * zcoef 1069 frcv(jpr_oty1)%z3(ji,jj,1) = zrhoa * frcv(jpr_wdrag)%z3(ji,jj,1) * vtau(ji,jj) * zcoef 1064 DO jj = 1, jpjm1 1065 DO ji = 1, jpim1 1066 ! here utau and vtau should contain the wind components as read from the forcing files, 1067 ! and the wind module should already be properly calculated 1068 frcv(jpr_otx1)%z3(ji,jj,1) = zrhoa * 0.5 * ( frcv(jpr_wdrag)%z3(ji,jj,1) + frcv(jpr_wdrag)%z3(ji+1,jj,1) ) * & 1069 utau(ji,jj) * 0.5 * ( wndm(ji,jj) + wndm(ji+1,jj) ) 1070 frcv(jpr_oty1)%z3(ji,jj,1) = zrhoa * 0.5 * ( frcv(jpr_wdrag)%z3(ji,jj,1) + frcv(jpr_wdrag)%z3(ji,jj+1,1) ) * & 1071 vtau(ji,jj) * 0.5 * ( wndm(ji,jj) + wndm(ji,jj+1) ) 1070 1072 utau(ji,jj) = frcv(jpr_otx1)%z3(ji,jj,1) 1071 1073 vtau(ji,jj) = frcv(jpr_oty1)%z3(ji,jj,1) 1072 1074 END DO 1073 1075 END DO 1076 CALL lbc_lnk_multi( frcv(jpr_otx1)%z3(:,:,1), 'U', -1. , frcv(jpr_oty1)%z3(:,:,1), 'V', -1. , & 1077 utau(:,:), 'U', -1. , vtau(:,:), 'V', -1. ) 1074 1078 llnewtx = .TRUE. 1075 1079 ELSE -
branches/UKMO/r6232_HZG_WAVE-coupling/NEMOGCM/NEMO/OPA_SRC/SBC/sbcflx.F90
r8764 r8917 150 150 151 151 IF( ln_rel_wind ) THEN 152 DO jj = 2, jpjm1153 DO ji = fs_2, fs_jpim1 ! vect. opt.154 zwnd_i(ji,jj) = ( sf(jp_utau)%fnow(ji,jj,1) - rn_wfac * 0.5 * ( ssu_m(ji-1,jj ) + ssu_m(ji,jj) ))155 zwnd_j(ji,jj) = ( sf(jp_vtau)%fnow(ji,jj,1) - rn_wfac * 0.5 * ( ssv_m(ji ,jj-1) + ssv_m(ji,jj) ))152 DO jj = 1, jpj 153 DO ji = 1, jpi 154 zwnd_i(ji,jj) = sf(jp_utau)%fnow(ji,jj,1) - rn_wfac * ssu_m(ji,jj) 155 zwnd_j(ji,jj) = sf(jp_vtau)%fnow(ji,jj,1) - rn_wfac * ssv_m(ji,jj) 156 156 END DO 157 157 END DO 158 CALL lbc_lnk( zwnd_i(:,:) , 'T', -1. )159 CALL lbc_lnk( zwnd_j(:,:) , 'T', -1. )160 158 ELSE 161 159 zwnd_i(:,:) = sf(jp_utau)%fnow(:,:,1) … … 179 177 ! ! this code is inefficient but put here to allow merging with another UKMO branch 180 178 IF( ln_shelf_flx ) THEN 179 ! calculate first the wind module, as it will be used later 180 DO jj = 2, jpjm1 181 DO ji = fs_2, fs_jpim1 ! vect. opt. 182 ztx = zwnd_i(ji-1,jj ) + zwnd_i(ji,jj) 183 zty = zwnd_j(ji ,jj-1) + zwnd_j(ji,jj) 184 wndm(ji,jj) = 0.5 * SQRT( ztx * ztx + zty * zty ) 185 END DO 186 END DO 187 CALL lbc_lnk( wndm(:,:), 'T', 1. ) 188 181 189 IF( ln_cdgw .AND. nn_drag == jp_std ) THEN 182 190 IF( cpl_wdrag ) THEN … … 190 198 END DO 191 199 ELSE 192 DO jj = 1, jpj 193 DO ji = 1, jpi 194 totwind = sqrt(zwnd_i(ji,jj)*zwnd_i(ji,jj) + zwnd_j(ji,jj)*zwnd_j(ji,jj)) 195 utau(ji,jj) = zrhoa * cdn_wave(ji,jj) * zwnd_i(ji,jj) * totwind 196 vtau(ji,jj) = zrhoa * cdn_wave(ji,jj) * zwnd_j(ji,jj) * totwind 200 DO jj = 1, jpjm1 201 DO ji = 1, jpim1 202 utau(ji,jj) = zrhoa * 0.5 * ( cdn_wave(ji,jj) + cdn_wave(ji+1,jj) ) * zwnd_i(ji,jj) * & 203 0.5 * ( wndm(ji,jj) + wndm(ji+1,jj) ) 204 vtau(ji,jj) = zrhoa * 0.5 * ( cdn_wave(ji,jj) + cdn_wave(ji,jj+1) ) * zwnd_j(ji,jj) * & 205 0.5 * ( wndm(ji,jj) + wndm(ji,jj+1) ) 197 206 END DO 198 207 END DO 208 CALL lbc_lnk_multi( utau(:,:), 'U', -1., vtau(:,:), 'V', -1. ) 199 209 ENDIF 200 210 ELSE IF( nn_drag == jp_const ) THEN 201 DO jj = 1, jpj 202 DO ji = 1, jpi 203 totwind = sqrt(zwnd_i(ji,jj)*zwnd_i(ji,jj) + zwnd_j(ji,jj)*zwnd_j(ji,jj)) 204 utau(ji,jj) = zrhoa * zcdrag * zwnd_i(ji,jj) * totwind 205 vtau(ji,jj) = zrhoa * zcdrag * zwnd_j(ji,jj) * totwind 211 DO jj = 1, jpjm1 212 DO ji = 1, jpim1 213 utau(ji,jj) = zrhoa * zcdrag * zwnd_i(ji,jj) * 0.5 * ( wndm(ji,jj) + wndm(ji+1,jj) ) 214 vtau(ji,jj) = zrhoa * zcdrag * zwnd_j(ji,jj) * 0.5 * ( wndm(ji,jj) + wndm(ji,jj+1) ) 206 215 END DO 207 216 END DO 217 CALL lbc_lnk_multi( utau(:,:), 'U', -1., vtau(:,:), 'V', -1. ) 208 218 ENDIF 209 219 ENDIF … … 221 231 zmod = 0.5 * SQRT( ztx * ztx + zty * zty ) 222 232 taum(ji,jj) = zmod 223 IF( ln_shelf_flx ) THEN 224 ! winds as received, not relative to the current 225 ztx = sf(jp_utau)%fnow(ji-1,jj ) + sf(jp_utau)%fnow(ji,jj) 226 zty = sf(jp_vtau)%fnow(ji ,jj-1) + sf(jp_vtau)%fnow(ji,jj) 227 wndm(ji,jj) = 0.5 * SQRT( ztx * ztx + zty * zty ) 228 ELSE 233 IF( .NOT. ln_shelf_flx ) THEN 229 234 wndm(ji,jj) = SQRT( zmod * zcoef ) 230 235 ENDIF -
branches/UKMO/r6232_HZG_WAVE-coupling/NEMOGCM/NEMO/OPA_SRC/SBC/sbcwave.F90
r8756 r8917 268 268 END DO 269 269 END DO 270 270 CALL lbc_lnk_multi( utau(:,:), 'U', -1. , vtau(:,:), 'V', -1. , taum(:,: ), 'T', -1. ) 271 271 ENDIF 272 272 !
Note: See TracChangeset
for help on using the changeset viewer.