- Timestamp:
- 2018-05-22T11:09:09+02:00 (6 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
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 !
Note: See TracChangeset
for help on using the changeset viewer.