- Timestamp:
- 2016-10-18T15:32:04+02:00 (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2016/dev_r6519_HPC_4/NEMOGCM/NEMO/OPA_SRC/SBC/sbcrnf.F90
r6460 r7037 124 124 ! ! set temperature & salinity content of runoffs 125 125 IF( ln_rnf_tem ) THEN ! use runoffs temperature data 126 !$OMP PARALLEL WORKSHARE 126 127 rnf_tsc(:,:,jp_tem) = ( sf_t_rnf(1)%fnow(:,:,1) ) * rnf(:,:) * r1_rau0 128 !$OMP END PARALLEL WORKSHARE 127 129 CALL eos_fzp( sss_m(:,:), ztfrz(:,:) ) 130 !$OMP PARALLEL WORKSHARE 128 131 WHERE( sf_t_rnf(1)%fnow(:,:,1) == -999._wp ) ! if missing data value use SST as runoffs temperature 129 132 rnf_tsc(:,:,jp_tem) = sst_m(:,:) * rnf(:,:) * r1_rau0 … … 132 135 rnf_tsc(:,:,jp_tem) = ztfrz(:,:) * rnf(:,:) * r1_rau0 - rnf(:,:) * rlfusisf * r1_rau0_rcp 133 136 END WHERE 137 !$OMP END PARALLEL WORKSHARE 134 138 ELSE ! use SST as runoffs temperature 139 !$OMP PARALLEL WORKSHARE 135 140 rnf_tsc(:,:,jp_tem) = sst_m(:,:) * rnf(:,:) * r1_rau0 141 !$OMP END PARALLEL WORKSHARE 136 142 ENDIF 137 143 ! ! use runoffs salinity data 138 IF( ln_rnf_sal ) rnf_tsc(:,:,jp_sal) = ( sf_s_rnf(1)%fnow(:,:,1) ) * rnf(:,:) * r1_rau0 144 IF( ln_rnf_sal ) THEN 145 !$OMP PARALLEL WORKSHARE 146 rnf_tsc(:,:,jp_sal) = ( sf_s_rnf(1)%fnow(:,:,1) ) * rnf(:,:) * r1_rau0 147 !$OMP END PARALLEL WORKSHARE 148 END IF 139 149 ! ! else use S=0 for runoffs (done one for all in the init) 140 150 CALL iom_put( "runoffs", rnf ) ! output runoffs arrays … … 152 162 ELSE !* no restart: set from nit000 values 153 163 IF(lwp) WRITE(numout,*) ' nit000-1 runoff forcing fields set to nit000' 164 !$OMP PARALLEL WORKSHARE 154 165 rnf_b (:,: ) = rnf (:,: ) 155 166 rnf_tsc_b(:,:,:) = rnf_tsc(:,:,:) 167 !$OMP END PARALLEL WORKSHARE 156 168 ENDIF 157 169 ENDIF … … 197 209 DO jj = 1, jpj 198 210 DO ji = 1, jpi 211 !$OMP PARALLEL DO schedule(static) private(jk) 199 212 DO jk = 1, nk_rnf(ji,jj) 200 213 phdivn(ji,jj,jk) = phdivn(ji,jj,jk) - ( rnf(ji,jj) + rnf_b(ji,jj) ) * zfact * r1_rau0 / h_rnf(ji,jj) … … 203 216 END DO 204 217 ELSE !* variable volume case 218 !$OMP PARALLEL 205 219 DO jj = 1, jpj ! update the depth over which runoffs are distributed 206 220 DO ji = 1, jpi 207 221 h_rnf(ji,jj) = 0._wp 222 !$OMP DO schedule(static) private(jk) 208 223 DO jk = 1, nk_rnf(ji,jj) ! recalculates h_rnf to be the depth in metres 209 224 h_rnf(ji,jj) = h_rnf(ji,jj) + e3t_n(ji,jj,jk) ! to the bottom of the relevant grid box 210 225 END DO 211 226 ! ! apply the runoff input flow 227 !$OMP DO schedule(static) private(jk) 212 228 DO jk = 1, nk_rnf(ji,jj) 213 229 phdivn(ji,jj,jk) = phdivn(ji,jj,jk) - ( rnf(ji,jj) + rnf_b(ji,jj) ) * zfact * r1_rau0 / h_rnf(ji,jj) 214 230 END DO 231 !$OMP END DO NOWAIT 215 232 END DO 216 233 END DO 234 !$OMP END PARALLEL 217 235 ENDIF 218 236 ELSE !== runoff put only at the surface ==! 237 !$OMP PARALLEL WORKSHARE 219 238 h_rnf (:,:) = e3t_n (:,:,1) ! update h_rnf to be depth of top box 220 239 phdivn(:,:,1) = phdivn(:,:,1) - ( rnf(:,:) + rnf_b(:,:) ) * zfact * r1_rau0 / e3t_n(:,:,1) 240 !$OMP END PARALLEL WORKSHARE 221 241 ENDIF 222 242 ! … … 256 276 ln_rnf_mouth = .FALSE. ! default definition needed for example by sbc_ssr or by tra_adv_muscl 257 277 nkrnf = 0 278 !$OMP PARALLEL WORKSHARE 258 279 rnf (:,:) = 0.0_wp 259 280 rnf_b (:,:) = 0.0_wp 260 281 rnfmsk (:,:) = 0.0_wp 261 282 rnfmsk_z(:) = 0.0_wp 283 !$OMP END PARALLEL WORKSHARE 262 284 RETURN 263 285 ENDIF … … 357 379 DO ji = 1, jpi 358 380 h_rnf(ji,jj) = 0._wp 381 !$OMP PARALLEL DO schedule(static) private(jk) 359 382 DO jk = 1, nk_rnf(ji,jj) 360 383 h_rnf(ji,jj) = h_rnf(ji,jj) + e3t_n(ji,jj,jk) … … 415 438 DO ji = 1, jpi 416 439 h_rnf(ji,jj) = 0._wp 440 !$OMP PARALLEL DO schedule(static) private(jk) 417 441 DO jk = 1, nk_rnf(ji,jj) 418 442 h_rnf(ji,jj) = h_rnf(ji,jj) + e3t_n(ji,jj,jk) … … 432 456 ENDIF 433 457 ! 458 !$OMP PARALLEL WORKSHARE 434 459 rnf(:,:) = 0._wp ! runoff initialisation 435 460 rnf_tsc(:,:,:) = 0._wp ! runoffs temperature & salinty contents initilisation 461 !$OMP END PARALLEL WORKSHARE 436 462 ! 437 463 ! ! ========================
Note: See TracChangeset
for help on using the changeset viewer.