New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
Changeset 16 for trunk/NEMO/OPA_SRC/SOL/solisl_fdir.h90 – NEMO

Ignore:
Timestamp:
2004-02-17T09:06:15+01:00 (20 years ago)
Author:
opalod
Message:

CT : UPDATE001 : First major NEMO update

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/NEMO/OPA_SRC/SOL/solisl_fdir.h90

    r3 r16  
    109109 
    110110      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 
    114112 
    115113      ! 1.3 Control print 
    116        
    117114      IF(lwp) THEN 
    118115         WRITE(numout,*) 
     
    296293         ! 1.2 Right hand side of the stream FUNCTION equation 
    297294          
    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) 
    350320                  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) 
    355336                  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 
    361356 
    362357         ! 1.4 Preconditioned right hand side and absolute precision 
     
    388383               END DO 
    389384            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 
    393387            IF(lwp) WRITE(numout,*) 'rnorme ', rnorme 
    394388            epsr = epsisl * epsisl * rnorme 
     
    451445            END DO 
    452446         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 
    456448          
    457449          
Note: See TracChangeset for help on using the changeset viewer.