- Timestamp:
- 2018-05-22T11:09:09+02:00 (6 years ago)
- Location:
- branches/UKMO/dev_r5518_GO6_package_OMP/NEMOGCM/NEMO/OPA_SRC
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/UKMO/dev_r5518_GO6_package_OMP/NEMOGCM/NEMO/OPA_SRC/DOM/domhgr.F90
r6487 r9616 482 482 r1_e2v (:,:) = 1._wp / e2v(:,:) 483 483 r1_e2f (:,:) = 1._wp / e2f(:,:) 484 485 484 ! Control printing : Grid informations (if not restart) 486 485 ! ---------------- … … 527 526 528 527 CASE ( 0, 1, 4 ) ! mesh on the sphere 529 530 528 ff(:,:) = 2. * omega * SIN( rad * gphif(:,:) ) 531 532 529 CASE ( 2 ) ! f-plane at ppgphi0 533 530 … … 676 673 e2f=1.0e2 677 674 END WHERE 678 679 675 END SUBROUTINE hgr_read 680 676 -
branches/UKMO/dev_r5518_GO6_package_OMP/NEMOGCM/NEMO/OPA_SRC/DYN/divcur.F90
r9176 r9616 287 287 ENDIF 288 288 289 !$OMP PARALLEL DO ! =============== 290 DO jk = 1, jpkm1 ! Horizontal slab 291 ! ! =============== 292 ! 293 hdivb(:,:,jk) = hdivn(:,:,jk) ! time swap of div arrays 294 rotb (:,:,jk) = rotn (:,:,jk) ! time swap of rot arrays 295 ! 289 hdivb(:,:,1:jpkm1) = hdivn(:,:,1:jpkm1) ! time swap of div arrays 290 rotb (:,:,1:jpkm1) = rotn (:,:,1:jpkm1) ! time swap of rot arrays 291 296 292 ! ! -------- 297 293 ! Horizontal divergence ! div 298 294 ! ! -------- 295 !$OMP PARALLEL DO 296 DO jk = 1, jpkm1 299 297 DO jj = 2, jpjm1 300 298 DO ji = fs_2, fs_jpim1 ! vector opt. … … 312 310 IF ((nbondj == -1).OR.(nbondj == 2)) hdivn(: ,2 ,jk) = 0.e0 ! south 313 311 ENDIF 312 END DO 314 313 315 314 ! ! -------- 316 315 ! relative vorticity ! rot 317 316 ! ! -------- 317 !$OMP PARALLEL DO 318 DO jk = 1, jpkm1 318 319 DO jj = 1, jpjm1 319 320 DO ji = 1, fs_jpim1 ! vector opt. -
branches/UKMO/dev_r5518_GO6_package_OMP/NEMOGCM/NEMO/OPA_SRC/DYN/dynzdf_imp.F90
r6795 r9616 99 99 100 100 IF( ln_bfrimp ) THEN 101 !$OMP PARALLEL DO PRIVATE(ikbu, ikbv) SHARED(mbku, mbkv) 101 102 DO jj = 2, jpjm1 102 103 DO ji = 2, jpim1 … … 108 109 END DO 109 110 IF ( ln_isfcav ) THEN 111 !$OMP PARALLEL DO PRIVATE(ikbu, ikbv) SHARED(miku, mikv) 110 112 DO jj = 2, jpjm1 111 113 DO ji = 2, jpim1 … … 121 123 #if defined key_dynspg_ts 122 124 IF( ln_dynadv_vec .OR. .NOT. lk_vvl ) THEN ! applied on velocity 125 !$OMP PARALLEL DO 123 126 DO jk = 1, jpkm1 124 127 ua(:,:,jk) = ( ub(:,:,jk) + p2dt * ua(:,:,jk) ) * umask(:,:,jk) … … 126 129 END DO 127 130 ELSE ! applied on thickness weighted velocity 131 !$OMP PARALLEL DO 128 132 DO jk = 1, jpkm1 129 133 ua(:,:,jk) = ( ub(:,:,jk) * fse3u_b(:,:,jk) & … … 138 142 IF ( ln_bfrimp .AND.lk_dynspg_ts ) THEN 139 143 ! remove barotropic velocities: 144 !$OMP PARALLEL DO 140 145 DO jk = 1, jpkm1 141 146 ua(:,:,jk) = (ua(:,:,jk) - ua_b(:,:)) * umask(:,:,jk) … … 143 148 END DO 144 149 ! Add bottom/top stress due to barotropic component only: 150 !$OMP PARALLEL DO PRIVATE(ikbu, ikbv, ze3ua, ze3va) 145 151 DO jj = 2, jpjm1 146 152 DO ji = fs_2, fs_jpim1 ! vector opt. … … 154 160 END DO 155 161 IF ( ln_isfcav ) THEN 162 !$OMP PARALLEL DO PRIVATE(ikbu, ikbv, ze3ua, ze3va) 156 163 DO jj = 2, jpjm1 157 164 DO ji = fs_2, fs_jpim1 ! vector opt. … … 174 181 ! non zero value at the ocean bottom depending on the bottom friction used. 175 182 ! 183 !$OMP PARALLEL DO PRIVATE(ze3ua, zcoef, zzwi, zzws) 176 184 DO jk = 1, jpkm1 ! Matrix 177 185 DO jj = 2, jpjm1 … … 187 195 END DO 188 196 END DO 197 !$OMP PARALLEL DO 189 198 DO jj = 2, jpjm1 ! Surface boundary conditions 190 199 DO ji = fs_2, fs_jpim1 ! vector opt. … … 210 219 ! 211 220 !== First recurrence : Dk = Dk - Lk * Uk-1 / Dk-1 (increasing k) == 221 !$OMP PARALLEL 212 222 DO jk = 2, jpkm1 223 !$OMP DO 213 224 DO jj = 2, jpjm1 214 225 DO ji = fs_2, fs_jpim1 ! vector opt. … … 217 228 END DO 218 229 END DO 219 ! 230 !$OMP END PARALLEL 231 ! 232 #if defined key_dynspg_ts 233 !$OMP PARALLEL DO PRIVATE(ze3ua) 220 234 DO jj = 2, jpjm1 !== second recurrence: SOLk = RHSk - Lk / Dk-1 Lk-1 == 221 235 DO ji = fs_2, fs_jpim1 ! vector opt. 222 #if defined key_dynspg_ts223 236 ze3ua = ( 1._wp - r_vvl ) * fse3u_n(ji,jj,1) + r_vvl * fse3u_a(ji,jj,1) 224 237 ua(ji,jj,1) = ua(ji,jj,1) + p2dt * 0.5_wp * ( utau_b(ji,jj) + utau(ji,jj) ) & 225 238 & / ( ze3ua * rau0 ) * umask(ji,jj,1) 239 END DO 240 END DO 226 241 #else 242 !$OMP PARALLEL DO 243 DO jj = 2, jpjm1 !== second recurrence: SOLk = RHSk - Lk / Dk-1 Lk-1 == 244 DO ji = fs_2, fs_jpim1 ! vector opt. 227 245 ua(ji,jj,1) = ub(ji,jj,1) & 228 246 & + p2dt *(ua(ji,jj,1) + 0.5_wp * ( utau_b(ji,jj) + utau(ji,jj) ) & 229 247 & / ( fse3u(ji,jj,1) * rau0 ) * umask(ji,jj,1) ) 230 #endif 231 END DO 232 END DO 248 END DO 249 END DO 250 #endif 251 !$OMP PARALLEL PRIVATE(zrhs) 233 252 DO jk = 2, jpkm1 253 !$OMP DO 234 254 DO jj = 2, jpjm1 235 255 DO ji = fs_2, fs_jpim1 … … 243 263 END DO 244 264 END DO 245 ! 265 !$OMP END PARALLEL 266 ! 267 !$OMP PARALLEL DO 246 268 DO jj = 2, jpjm1 !== thrid recurrence : SOLk = ( Lk - Uk * Ek+1 ) / Dk == 247 269 DO ji = fs_2, fs_jpim1 ! vector opt. … … 249 271 END DO 250 272 END DO 273 !$OMP PARALLEL 251 274 DO jk = jpk-2, 1, -1 275 !$OMP DO 252 276 DO jj = 2, jpjm1 253 277 DO ji = fs_2, fs_jpim1 … … 256 280 END DO 257 281 END DO 282 !$OMP END PARALLEL 258 283 259 284 #if ! defined key_dynspg_ts 260 285 ! Normalization to obtain the general momentum trend ua 286 !$OMP PARALLEL DO 261 287 DO jk = 1, jpkm1 262 288 DO jj = 2, jpjm1 … … 274 300 ! non zero value at the ocean bottom depending on the bottom friction used 275 301 ! 302 !$OMP PARALLEL 303 !$OMP DO PRIVATE(ze3va, zcoef, zzwi, zzws) 276 304 DO jk = 1, jpkm1 ! Matrix 277 305 DO jj = 2, jpjm1 … … 287 315 END DO 288 316 END DO 317 !$OMP DO 289 318 DO jj = 2, jpjm1 ! Surface boundary conditions 290 319 DO ji = fs_2, fs_jpim1 ! vector opt. … … 293 322 END DO 294 323 END DO 324 !$OMP END PARALLEL 295 325 296 326 ! Matrix inversion … … 310 340 ! 311 341 !== First recurrence : Dk = Dk - Lk * Uk-1 / Dk-1 (increasing k) == 342 !$OMP PARALLEL 312 343 DO jk = 2, jpkm1 344 !$OMP DO 313 345 DO jj = 2, jpjm1 314 346 DO ji = fs_2, fs_jpim1 ! vector opt. … … 317 349 END DO 318 350 END DO 319 ! 351 !$OMP END PARALLEL 352 ! 353 !$OMP PARALLEL DO PRIVATE(ze3va) 320 354 DO jj = 2, jpjm1 !== second recurrence: SOLk = RHSk - Lk / Dk-1 Lk-1 == 321 355 DO ji = fs_2, fs_jpim1 ! vector opt. … … 331 365 END DO 332 366 END DO 367 !$OMP PARALLEL 333 368 DO jk = 2, jpkm1 369 !$OMP DO PRIVATE(zrhs) 334 370 DO jj = 2, jpjm1 335 371 DO ji = fs_2, fs_jpim1 ! vector opt. … … 343 379 END DO 344 380 END DO 345 ! 381 !$OMP END PARALLEL 382 ! 383 !$OMP PARALLEL DO 346 384 DO jj = 2, jpjm1 !== third recurrence : SOLk = ( Lk - Uk * SOLk+1 ) / Dk == 347 385 DO ji = fs_2, fs_jpim1 ! vector opt. … … 349 387 END DO 350 388 END DO 389 390 !$OMP PARALLEL 351 391 DO jk = jpk-2, 1, -1 392 !$OMP DO 352 393 DO jj = 2, jpjm1 353 394 DO ji = fs_2, fs_jpim1 … … 356 397 END DO 357 398 END DO 399 !$OMP END PARALLEL 358 400 359 401 ! Normalization to obtain the general momentum trend va 360 402 #if ! defined key_dynspg_ts 403 !$OMP PARALLEL DO 361 404 DO jk = 1, jpkm1 362 405 DO jj = 2, jpjm1 … … 371 414 !! restore bottom layer avmu(v) 372 415 IF( ln_bfrimp ) THEN 416 !$OMP PARALLEL PRIVATE(ikbu, ikbv) 417 !$OMP DO 373 418 DO jj = 2, jpjm1 374 419 DO ji = 2, jpim1 … … 380 425 END DO 381 426 IF (ln_isfcav) THEN 427 !$OMP DO 382 428 DO jj = 2, jpjm1 383 429 DO ji = 2, jpim1 … … 389 435 END DO 390 436 END IF 437 !$OMP END PARALLEL 391 438 ENDIF 392 439 ! -
branches/UKMO/dev_r5518_GO6_package_OMP/NEMOGCM/NEMO/OPA_SRC/SBC/sbcrnf.F90
r6498 r9616 216 216 END DO 217 217 ELSE ! constant volume case : just apply the runoff input flow 218 !$OMP PARALLEL DO 218 219 DO jj = 1, jpj 219 220 DO ji = 1, jpi -
branches/UKMO/dev_r5518_GO6_package_OMP/NEMOGCM/NEMO/OPA_SRC/TRA/traqsr.F90
r6498 r9616 153 153 IF( lk_qsr_bio .AND. ln_qsr_bio ) THEN ! bio-model fluxes : all vertical coordinates ! 154 154 ! ! ============================================== ! 155 !$OMP PARALLEL DO 155 156 DO jk = 1, jpkm1 156 157 qsr_hc(:,:,jk) = r1_rau0_rcp * ( etot3(:,:,jk) - etot3(:,:,jk+1) ) 157 158 END DO 158 159 ! Add to the general trend 160 !$OMP PARALLEL DO PRIVATE (z1_e3t) 159 161 DO jk = 1, jpkm1 160 162 DO jj = 2, jpjm1 … … 198 200 ! 199 201 CALL fld_read( kt, 1, sf_chl ) ! Read Chl data and provides it at the current time step 200 !CDIR NOVERRCHK ! 202 !$OMP PARALLEL DO PRIVATE(zchl, zCtot, zze, zlogc, zlogc2, zlogc3, zCb, zCmax, & 203 !$OMP& zpsimax, zdelpsi, zCze, zpsi, jk) SHARED (nksr) 201 204 DO jj = 1, jpj 202 !CDIR NOVERRCHK203 205 DO ji = 1, jpi 204 206 zchl = sf_chl(1)%fnow(ji,jj,1) … … 264 266 END DO 265 267 ! 268 !$OMP PARALLEL DO 266 269 DO jk = 1, nksr ! compute and add qsr trend to ta 267 270 qsr_hc(:,:,jk) = r1_rau0_rcp * ( zea(:,:,jk) - zea(:,:,jk+1) ) … … 271 274 ! 272 275 IF ( ln_qsr_ice ) THEN ! store attenuation coefficient of the first ocean level 273 !CDIR NOVERRCHK274 276 DO jj = 1, jpj ! Separation in R-G-B depending of the surface Chl 275 !CDIR NOVERRCHK276 277 DO ji = 1, jpi 277 278 zchl = MIN( 10. , MAX( 0.03, zchl3d(ji,jj,1) ) ) … … 283 284 END DO 284 285 ! 286 !$OMP PARALLEL DO PRIVATE(zc0, zc1, zc2, zc3) 285 287 DO jj = 1, jpj 286 288 DO ji = 1, jpi … … 313 315 zz0 = rn_abs * r1_rau0_rcp 314 316 zz1 = ( 1. - rn_abs ) * r1_rau0_rcp 317 !$OMP PARALLEL DO PRIVATE (zc0, zc1) 315 318 DO jk = 1, nksr ! solar heat absorbed at T-point in the top 400m 316 319 DO jj = 1, jpj … … 324 327 ! clem: store attenuation coefficient of the first ocean level 325 328 IF ( ln_qsr_ice ) THEN 329 !$OMP PARALLEL DO PRIVATE (zc0, zc1) 326 330 DO jj = 1, jpj 327 331 DO ji = 1, jpi … … 333 337 ENDIF 334 338 ELSE !* constant volume: coef. computed one for all 339 !$OMP PARALLEL DO 335 340 DO jk = 1, nksr 336 341 DO jj = 2, jpjm1 … … 351 356 ! 352 357 ! Add to the general trend 358 !$OMP PARALLEL DO PRIVATE (z1_e3t) 353 359 DO jk = 1, nksr 354 360 DO jj = 2, jpjm1 … … 538 544 ze3(:,:,1) = zcoef 539 545 zea(:,:,1) = tmask(:,:,1) ! = ( ze0+ze1+z2+ze3 ) * tmask 540 546 !$OMP PARALLEL DO PRIVATE(zc0, zc1, zc2, zc3) 541 547 DO jk = 2, nksr+1 542 !CDIR NOVERRCHK543 548 DO jj = 1, jpj 544 !CDIR NOVERRCHK545 549 DO ji = 1, jpi 546 550 zc0 = ze0(ji,jj,jk-1) * EXP( - e3t_0(ji,jj,jk-1) * xsi0r ) … … 557 561 END DO 558 562 ! 563 !$OMP PARALLEL DO 559 564 DO jk = 1, nksr 560 565 ! (ISF) no light penetration below the ice shelves … … 582 587 zz0 = rn_abs * r1_rau0_rcp 583 588 zz1 = ( 1. - rn_abs ) * r1_rau0_rcp 589 !$OMP PARALLEL DO PRIVATE(zc0, zc1) 584 590 DO jk = 1, nksr !* solar heat absorbed at T-point computed once for all 585 591 DO jj = 1, jpj ! top 400 meters -
branches/UKMO/dev_r5518_GO6_package_OMP/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfddm.F90
r6498 r9616 109 109 ! 110 110 ! ! =============== 111 !$OMP PARALLEL 111 112 DO jk = 2, jpkm1 ! Horizontal slab 112 113 ! ! =============== 113 114 ! Define the mask 114 115 ! --------------- 116 !$OMP DO PRIVATE(zrw, zaw, zbw, zdt, zds) 115 117 DO jj = 1, jpj ! R=zrau = (alpha / beta) (dk[t] / dk[s]) 116 118 DO ji = 1, jpi … … 130 132 END DO 131 133 134 !$OMP DO 132 135 DO jj = 1, jpj ! indicators: 133 136 DO ji = 1, jpi … … 156 159 END DO 157 160 ! mask zmsk in order to have avt and avs masked 158 zmsks(:,:) = zmsks(:,:) * wmask(:,:,jk) 159 161 !$OMP DO 162 DO jj = 1, jpj 163 DO ji = 1, jpi 164 zmsks(ji,jj) = zmsks(ji,jj) * wmask(ji,jj,jk) 165 END DO 166 ENDDO 160 167 161 168 ! Update avt and avs 162 169 ! ------------------ 163 170 ! Constant eddy coefficient: reset to the background value 164 ! CDIR NOVERRCHK171 !$OMP DO PRIVATE(zinr, zrr, zavfs, zavft, zavdt, zavds) 165 172 DO jj = 1, jpj 166 !CDIR NOVERRCHK167 173 DO ji = 1, jpi 168 174 zinr = 1._wp / zrau(ji,jj) … … 192 198 ! -------------------------------- 193 199 !!gm to be changed following the definition of avm. 200 !$OMP DO 194 201 DO jj = 1, jpjm1 195 202 DO ji = 1, fs_jpim1 ! vector opt. … … 204 211 ! ! =============== 205 212 END DO ! End of slab 213 !$OMP END PARALLEL 206 214 ! ! =============== 207 215 !
Note: See TracChangeset
for help on using the changeset viewer.