Changeset 8425
- Timestamp:
- 2017-08-08T16:57:45+02:00 (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/UKMO/CO6_KD490/NEMOGCM/NEMO/OPA_SRC/SBC/sbcflx.F90
r6610 r8425 22 22 USE lib_mpp ! distribued memory computing library 23 23 USE lbclnk ! ocean lateral boundary conditions (or mpp link) 24 USE wrk_nemo ! work arrays 24 25 25 26 IMPLICIT NONE … … 37 38 TYPE(FLD), ALLOCATABLE, DIMENSION(:) :: sf ! structure of input fields (file informations, fields read) 38 39 LOGICAL , PUBLIC :: ln_shelf_flx = .FALSE. ! UKMO SHELF specific flux flag 40 LOGICAL , PUBLIC :: ln_rel_wind = .FALSE. ! UKMO SHELF specific flux flag - relative winds 41 REAL(wp) :: rn_wfac ! multiplication factor for ice/ocean velocity in the calculation of wind stress (clem) 39 42 INTEGER :: jpfld_local ! maximum number of files to read (locally modified depending on ln_shelf_flx) 40 43 … … 87 90 REAL :: cs ! UKMO SHELF: Friction co-efficient at surface 88 91 REAL :: totwindspd ! UKMO SHELF: Magnitude of wind speed vector 92 REAL(wp), DIMENSION(:,:), POINTER :: zwnd_i, zwnd_j ! wind speed components at T-point 89 93 90 94 REAL(wp) :: rhoa = 1.22 ! Air density kg/m3 … … 95 99 TYPE(FLD_N) :: sn_utau, sn_vtau, sn_qtot, sn_qsr, sn_emp, sn_press ! informations about the fields to be read 96 100 LOGICAL :: ln_foam_flx = .FALSE. ! UKMO FOAM specific flux flag 97 NAMELIST/namsbc_flx/ cn_dir, sn_utau, sn_vtau, sn_qtot, sn_qsr, sn_emp, & 98 & ln_foam_flx, sn_press, ln_shelf_flx 101 NAMELIST/namsbc_flx/ cn_dir, sn_utau, sn_vtau, sn_qtot, sn_qsr, sn_emp, & 102 & ln_foam_flx, sn_press, ln_shelf_flx, ln_rel_wind, & 103 & rn_wfac 99 104 !!--------------------------------------------------------------------- 100 105 ! … … 146 151 147 152 IF( MOD( kt-1, nn_fsbc ) == 0 ) THEN ! update ocean fluxes at each SBC frequency 153 154 !!UKMO SHELF wind speed relative to surface currents - put here to allow merging with coupling branch 155 IF( ln_shelf_flx ) THEN 156 CALL wrk_alloc( jpi,jpj, zwnd_i, zwnd_j ) 157 158 IF( ln_rel_wind ) THEN 159 DO jj = 2, jpjm1 160 DO ji = fs_2, fs_jpim1 ! vect. opt. 161 zwnd_i(ji,jj) = ( sf(jp_utau)%fnow(ji,jj,1) - rn_wfac * 0.5 * ( ssu_m(ji-1,jj ) + ssu_m(ji,jj) )) 162 zwnd_j(ji,jj) = ( sf(jp_vtau)%fnow(ji,jj,1) - rn_wfac * 0.5 * ( ssv_m(ji ,jj-1) + ssv_m(ji,jj) )) 163 END DO 164 END DO 165 CALL lbc_lnk( zwnd_i(:,:) , 'T', -1. ) 166 CALL lbc_lnk( zwnd_j(:,:) , 'T', -1. ) 167 ELSE 168 zwnd_i(:,:) = sf(jp_utau)%fnow(:,:,1) 169 zwnd_j(:,:) = sf(jp_vtau)%fnow(:,:,1) 170 ENDIF 171 ENDIF 148 172 149 173 IF( ln_dm2dc ) THEN ; qsr(:,:) = sbc_dcy( sf(jp_qsr)%fnow(:,:,1) ) ! modify now Qsr to include the diurnal cycle … … 168 192 pressnow(ji,jj) = sf(jp_press)%fnow(ji,jj,1) 169 193 !! UKMO SHELF flux files contain wind speed not wind stress 170 totwindspd = sqrt( (sf(jp_utau)%fnow(ji,jj,1))**2.0 + (sf(jp_vtau)%fnow(ji,jj,1))**2.0)194 totwindspd = sqrt(zwnd_i(ji,jj)*zwnd_i(ji,jj) + zwnd_j(ji,jj)*zwnd_j(ji,jj)) 171 195 cs = 0.63 + (0.066 * totwindspd) 172 utau(ji,jj) = cs * (rhoa/rau0) * sf(jp_utau)%fnow(ji,jj,1) * totwindspd173 vtau(ji,jj) = cs * (rhoa/rau0) * sf(jp_vtau)%fnow(ji,jj,1) * totwindspd196 utau(ji,jj) = cs * (rhoa/rau0) * zwnd_i(ji,jj) * totwindspd 197 vtau(ji,jj) = cs * (rhoa/rau0) * zwnd_j(ji,jj) * totwindspd 174 198 ELSE 175 199 utau(ji,jj) = sf(jp_utau)%fnow(ji,jj,1) … … 228 252 ENDIF 229 253 ! 254 IF( ln_shelf_flx ) THEN 255 CALL wrk_dealloc( jpi,jpj, zwnd_i, zwnd_j ) 256 ENDIF 257 ! 230 258 ENDIF 231 259 !
Note: See TracChangeset
for help on using the changeset viewer.