Changeset 16 for trunk/NEMO/OPA_SRC/SOL/solisl_fdir.h90
- Timestamp:
- 2004-02-17T09:06:15+01:00 (20 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/NEMO/OPA_SRC/SOL/solisl_fdir.h90
r3 r16 109 109 110 110 END DO 111 # if defined key_mpp 112 CALL mpp_sum( aisl, jpisl*jpisl ) 113 # endif 111 IF( lk_mpp ) CALL mpp_sum( aisl, jpisl*jpisl ) ! sum over the global domain 114 112 115 113 ! 1.3 Control print 116 117 114 IF(lwp) THEN 118 115 WRITE(numout,*) … … 296 293 ! 1.2 Right hand side of the stream FUNCTION equation 297 294 298 # if defined key_mpp 299 300 ! north fold treatment 301 IF( npolj == 3 ) iloc = jpiglo -(nimpp-1+nimppt(nono+1)-1) 302 IF( npolj == 4 ) iloc = jpiglo - 2*(nimpp-1) 303 t2p1(:,1,1) = 0. 304 ! north and south grid-points 305 DO jii = 1, 2 306 DO jnp = 1, mnisl(jii,jni) 307 ii = miisl(jnp,jii,jni) 308 ij = mjisl(jnp,jii,jni) 309 IF( ( npolj == 3 .OR. npolj == 4 ) .AND. ( ij == nlcj-1 .AND. jii == 1) ) THEN 310 iju=iloc-ii+1 311 t2p1(iju,1,1) = t2p1(iju,1,1) + hur(ii,ij) * e1u(ii,ij) / e2u(ii,ij) 312 ELSE 313 gcb(ii,ij-jii+1) = gcb(ii,ij-jii+1) + hur(ii,ij) * e1u(ii,ij) / e2u(ii,ij) 314 ENDIF 315 END DO 316 END DO 317 318 ! east and west grid-points 319 320 DO jii = 3, 4 321 DO jnp = 1, mnisl(jii,jni) 322 ii = miisl(jnp,jii,jni) 323 ij = mjisl(jnp,jii,jni) 324 gcb(ii-jii+3,ij) = gcb(ii-jii+3,ij) + hvr(ii,ij) * e2v(ii,ij) / e1v(ii,ij) 325 END DO 326 END DO 327 CALL mpplnks( gcb ) 328 329 # else 330 331 ! north and south grid-points 332 DO jii = 1, 2 333 DO jnp = 1, mnisl(jii,jni) 334 ii = miisl(jnp,jii,jni) 335 ij = mjisl(jnp,jii,jni) 336 IF( ( nperio == 3 .OR. nperio == 4 ) .AND. ( ij == jpj-1 .AND. jii == 1) ) THEN 337 gcb(jpi-ii+1,ij-1) = gcb(jpi-ii+1,ij-1) + hur(ii,ij) * e1u(ii,ij) / e2u(ii,ij) 338 ELSE 339 gcb(ii,ij-jii+1) = gcb(ii,ij-jii+1) + hur(ii,ij) * e1u(ii,ij) / e2u(ii,ij) 340 ENDIF 341 END DO 342 END DO 343 344 ! east and west grid-points 345 DO jii = 3, 4 346 DO jnp = 1, mnisl(jii,jni) 347 ii = miisl(jnp,jii,jni) 348 ij = mjisl(jnp,jii,jni) 349 IF( bmask(ii-jii+3,ij) /= 0. ) THEN 295 IF( lk_mpp ) THEN 296 ! north fold treatment 297 IF( npolj == 3 ) iloc = jpiglo -(nimpp-1+nimppt(nono+1)-1) 298 IF( npolj == 4 ) iloc = jpiglo - 2*(nimpp-1) 299 t2p1(:,1,1) = 0. 300 ! north and south grid-points 301 DO jii = 1, 2 302 DO jnp = 1, mnisl(jii,jni) 303 ii = miisl(jnp,jii,jni) 304 ij = mjisl(jnp,jii,jni) 305 IF( ( npolj == 3 .OR. npolj == 4 ) .AND. ( ij == nlcj-1 .AND. jii == 1) ) THEN 306 iju=iloc-ii+1 307 t2p1(iju,1,1) = t2p1(iju,1,1) + hur(ii,ij) * e1u(ii,ij) / e2u(ii,ij) 308 ELSE 309 gcb(ii,ij-jii+1) = gcb(ii,ij-jii+1) + hur(ii,ij) * e1u(ii,ij) / e2u(ii,ij) 310 ENDIF 311 END DO 312 END DO 313 314 ! east and west grid-points 315 316 DO jii = 3, 4 317 DO jnp = 1, mnisl(jii,jni) 318 ii = miisl(jnp,jii,jni) 319 ij = mjisl(jnp,jii,jni) 350 320 gcb(ii-jii+3,ij) = gcb(ii-jii+3,ij) + hvr(ii,ij) * e2v(ii,ij) / e1v(ii,ij) 351 ELSE 352 ! east-west cyclic boundary conditions 353 IF( ii-jii+3 == 1 ) THEN 354 gcb(jpim1,ij) = gcb(jpim1,ij) + hvr(ii,ij) * e2v(ii,ij) / e1v(ii,ij) 321 END DO 322 END DO 323 324 IF( lk_mpp ) CALL mpplnks( gcb ) !!bug ? should use an lbclnk ? is it possible??? 325 326 ELSE 327 ! north and south grid-points 328 DO jii = 1, 2 329 DO jnp = 1, mnisl(jii,jni) 330 ii = miisl(jnp,jii,jni) 331 ij = mjisl(jnp,jii,jni) 332 IF( ( nperio == 3 .OR. nperio == 4 ) .AND. ( ij == jpj-1 .AND. jii == 1) ) THEN 333 gcb(jpi-ii+1,ij-1) = gcb(jpi-ii+1,ij-1) + hur(ii,ij) * e1u(ii,ij) / e2u(ii,ij) 334 ELSE 335 gcb(ii,ij-jii+1) = gcb(ii,ij-jii+1) + hur(ii,ij) * e1u(ii,ij) / e2u(ii,ij) 355 336 ENDIF 356 ENDIF 357 END DO 358 END DO 359 360 # endif 337 END DO 338 END DO 339 340 ! east and west grid-points 341 DO jii = 3, 4 342 DO jnp = 1, mnisl(jii,jni) 343 ii = miisl(jnp,jii,jni) 344 ij = mjisl(jnp,jii,jni) 345 IF( bmask(ii-jii+3,ij) /= 0. ) THEN 346 gcb(ii-jii+3,ij) = gcb(ii-jii+3,ij) + hvr(ii,ij) * e2v(ii,ij) / e1v(ii,ij) 347 ELSE 348 ! east-west cyclic boundary conditions 349 IF( ii-jii+3 == 1 ) THEN 350 gcb(jpim1,ij) = gcb(jpim1,ij) + hvr(ii,ij) * e2v(ii,ij) / e1v(ii,ij) 351 ENDIF 352 ENDIF 353 END DO 354 END DO 355 ENDIF 361 356 362 357 ! 1.4 Preconditioned right hand side and absolute precision … … 388 383 END DO 389 384 END DO 390 #if defined key_mpp 391 CALL mpp_sum( rnorme ) 392 #endif 385 IF( lk_mpp ) CALL mpp_sum( rnorme ) ! sum over the global domain 386 393 387 IF(lwp) WRITE(numout,*) 'rnorme ', rnorme 394 388 epsr = epsisl * epsisl * rnorme … … 451 445 END DO 452 446 ENDIF 453 #if defined key_mpp 454 CALL lbc_lnk( bsfisl(:,:,jni), 'G', 1. ) 455 #endif 447 IF( lk_mpp ) CALL lbc_lnk( bsfisl(:,:,jni), 'G', 1. ) ! link at G-point 456 448 457 449
Note: See TracChangeset
for help on using the changeset viewer.