Changeset 4686


Ignore:
Timestamp:
2014-06-24T13:03:50+02:00 (7 years ago)
Author:
epico
Message:

the update is needed in order to synchronise the routines lbc_nfd_3d and mpp_lbc_nfd_3d. Indeed when a modification is inserted in the folding algorithm it must be reported both in the mpp_lbc_nfd_3d routine (this is invoked if the optimisation is active) and in the lbc_nfd_3d (this is invoked when the optimisation is inactive). The same behaviour happens with lbc_nfd_2d and mpp_lbc_nfd_2d

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/NEMOGCM/NEMO/OPA_SRC/LBC/lbcnfd.F90

    r4671 r4686  
    423423                     pt3dl(ji,ijpj,jk) = psgn * pt3dr(ijt,ijpj-2,jk) 
    424424                  END DO 
     425                  IF(nimpp .eq. 1) THEN 
     426                     pt3dl(1,ijpj,jk) = psgn * pt3dl(3,ijpj-2,jk) 
     427                  ENDIF 
    425428               END DO 
    426429 
     
    459462                     pt3dl(ji,ijpj,jk) = psgn * pt3dr(iju,ijpj-2,jk) 
    460463                  END DO 
     464                  IF(nimpp .eq. 1) THEN 
     465                     pt3dl(   1  ,ijpj,jk) = psgn * pt3dl(    2   ,ijpj-2,jk) 
     466                  ENDIF 
     467                  IF((nimpp + nlci - 1) .eq. jpiglo) THEN 
     468                     pt3dl(nlci,ijpj,jk) = psgn * pt3dl(nlci-1,ijpj-2,jk) 
     469                  ENDIF 
    461470               END DO 
    462471 
     
    500509                     pt3dl(ji,ijpj  ,jk) = psgn * pt3dr(ijt,ijpj-3,jk) 
    501510                  END DO 
     511                  IF(nimpp .eq. 1) THEN 
     512                     pt3dl(1,ijpj,jk) = psgn * pt3dl(3,ijpj-3,jk) 
     513                  ENDIF 
    502514               END DO 
    503515            CASE ( 'F' )                               ! F-point 
     
    513525                     pt3dl(ji,ijpj  ,jk) = psgn * pt3dr(iju,ijpj-3,jk) 
    514526                  END DO 
     527                  IF(nimpp .eq. 1) THEN 
     528                     pt3dl(   1  ,ijpj,jk) = psgn * pt3dl(    2   ,ijpj-3,jk) 
     529                  ENDIF 
     530                  IF((nimpp + nlci - 1) .eq. jpiglo) THEN 
     531                     pt3dl(nlci,ijpj,jk) = psgn * pt3dl(nlci-1,ijpj-3,jk) 
     532                  ENDIF 
    515533               END DO 
    516534            END SELECT 
     
    539557                     pt3dl(ji,ijpj,jk) = psgn * pt3dr(iju,ijpj-1,jk) 
    540558                  END DO 
     559                  IF((nimpp + nlci - 1) .eq. jpiglo) THEN 
     560                     pt3dl(nlci,ijpj,jk) = psgn * pt3dr(1,ijpj-1,jk) 
     561                  ENDIF 
    541562               END DO 
    542563 
     
    576597                     pt3dl(ji,ijpj ,jk) = psgn * pt3dr(iju,ijpj-2,jk) 
    577598                  END DO 
     599                  IF((nimpp + nlci - 1) .eq. jpiglo) THEN 
     600                     pt3dl(nlci,ijpj,jk) = psgn * pt3dr(1,ijpj-2,jk) 
     601                  ENDIF 
    578602               END DO 
    579603 
     
    664688              pt2dl(ji,ijpj) = psgn * pt2dr(ijt,ijpjm1-1) 
    665689            END DO 
     690            IF (nimpp .eq. 1) THEN 
     691              pt2dl(1,ijpj)   = psgn * pt2dl(3,ijpj-2) 
     692            ENDIF 
    666693 
    667694            IF(nimpp .ge. (jpiglo/2+1)) THEN 
     
    694721            END DO 
    695722 
     723            IF (nimpp .eq. 1) THEN 
     724              pt2dl(   1  ,ijpj  ) = psgn * pt2dl(    2   ,ijpj-2) 
     725              pt2dl(1     ,ijpj-1) = psgn * pt2dr(jpiglo - nfiimpp(isendto(1), jpnj) + 1, ijpj-1) 
     726            ENDIF 
     727            IF((nimpp + nlci - 1) .eq. jpiglo) THEN 
     728              pt2dl(nlci,ijpj  ) = psgn * pt2dl(nlci-1,ijpj-2) 
     729            ENDIF 
     730 
    696731            IF ((nimpp + nlci - 1) .ne. jpiglo) THEN 
    697732               endloop = nlci 
     
    728763              pt2dl(ji,ijpj) = psgn * pt2dr(ijt,ijpjm1-2) 
    729764            END DO 
     765            IF (nimpp .eq. 1) THEN 
     766              pt2dl( 1 ,ijpj)   = psgn * pt2dl( 3 ,ijpj-3)  
     767            ENDIF 
    730768 
    731769         CASE ( 'F' )                                     ! F-point 
     
    740778               pt2dl(ji,ijpj) = psgn * pt2dr(iju,ijpjm1-2) 
    741779            END DO 
     780            IF (nimpp .eq. 1) THEN 
     781              pt2dl(   1  ,ijpj)   = psgn * pt2dl(    2   ,ijpj-3) 
     782              pt2dl(   1  ,ijpj-1) = psgn * pt2dl(    2   ,ijpj-2) 
     783            ENDIF 
     784            IF((nimpp + nlci - 1) .eq. jpiglo) THEN 
     785              pt2dl(nlci,ijpj)   = psgn * pt2dl(nlci-1,ijpj-3) 
     786              pt2dl(nlci,ijpj-1) = psgn * pt2dl(nlci-1,ijpj-2)  
     787            ENDIF 
    742788 
    743789         CASE ( 'I' )                                     ! ice U-V point (I-point) 
     
    798844               pt2dl(ji,ijpj) = psgn * pt2dr(iju,ijpjm1) 
    799845            END DO 
     846            IF((nimpp + nlci - 1) .eq. jpiglo) THEN 
     847               pt2dl(nlci,ijpj) = psgn * pt2dr(1,ijpj-1) 
     848            ENDIF 
    800849 
    801850         CASE ( 'V' )                                     ! V-point 
     
    826875               pt2dl(ji,ijpj) = psgn * pt2dr(iju,ijpjm1-1) 
    827876            END DO 
     877            IF((nimpp + nlci - 1) .eq. jpiglo) THEN 
     878                pt2dl(nlci,ijpj) = psgn * pt2dr(1,ijpj-2) 
     879            ENDIF 
    828880 
    829881            IF ((nimpp + nlci - 1) .ne. jpiglo) THEN 
Note: See TracChangeset for help on using the changeset viewer.