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 898 for trunk/AGRIF/AGRIF_FILES/modinterp.F – NEMO

Ignore:
Timestamp:
2008-04-22T17:35:20+02:00 (16 years ago)
Author:
rblod
Message:

Correct some bugs in agrif optimization and add MPP optimization, see #42

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/AGRIF/AGRIF_FILES/modinterp.F

    r779 r898  
    631631      INTEGER,DIMENSION(nbdim,4)           :: tab3 
    632632      INTEGER,DIMENSION(nbdim,4,0:Agrif_Nbprocs-1) :: tab4 
    633       INTEGER,DIMENSION(nbdim,0:Agrif_Nbprocs-1,4) :: tab4t 
     633      INTEGER,DIMENSION(nbdim,0:Agrif_Nbprocs-1,8) :: tab4t 
    634634      LOGICAL, DIMENSION(0:Agrif_Nbprocs-1) :: memberinall 
     635      LOGICAL, DIMENSION(0:Agrif_Nbprocs-1) :: sendtoproc1,recvfromproc1       
    635636      LOGICAL, DIMENSION(1) :: memberin1 
    636637C 
     
    650651     &       pttruetab,cetruetab,member,memberin,find_list_interp 
    651652#if defined AGRIF_MPI 
    652      &       ,tab4t,memberinall 
     653     &       ,tab4t,memberinall,sendtoproc1,recvfromproc1 
    653654#endif 
    654655     &    ) 
     
    823824      CALL MPI_ALLGATHER(memberin1,1,MPI_LOGICAL,memberinall, 
    824825     &                  1,MPI_LOGICAL,MPI_COMM_WORLD,code) 
    825       
     826 
     827       Call Get_External_Data_first(tab4t(:,:,1), 
     828     &            tab4t(:,:,2), 
     829     &            tab4t(:,:,3),tab4t(:,:,4),nbdim,member,memberin, 
     830     &            memberinall,sendtoproc1,recvfromproc1,tab4t(:,:,5), 
     831     & tab4t(:,:,6),tab4t(:,:,7),tab4t(:,:,8)) 
     832           
    826833      endif      
    827834            
    828       Call Get_External_Data(tempP,tempPextend,tab4t(:,:,1), 
    829      &            tab4t(:,:,2), 
    830      &            tab4t(:,:,3),tab4t(:,:,4),nbdim,member,memberin, 
    831      &            memberinall) 
     835!      Call Get_External_Data(tempP,tempPextend,tab4t(:,:,1), 
     836!     &            tab4t(:,:,2), 
     837!     &            tab4t(:,:,3),tab4t(:,:,4),nbdim,member,memberin, 
     838!     &            memberinall) 
     839      
     840      Call ExchangeSameLevel2(sendtoproc1,recvfromproc1,nbdim, 
     841     &            tab4t(:,:,3),tab4t(:,:,4),tab4t(:,:,5),tab4t(:,:,6), 
     842     &            tab4t(:,:,7),tab4t(:,:,8),memberin,tempP, 
     843     &            tempPextend) 
    832844#else 
    833845      tempPextend%var => tempP%var 
     
    840852     &   pttruetab,cetruetab,member,memberin,nbdim 
    841853#if defined AGRIF_MPI 
    842      &   ,tab4t,memberinall 
     854     &   ,tab4t,memberinall,sendtoproc1,recvfromproc1 
    843855#endif 
    844856     &    ) 
     
    20482060     &      find_list_interp 
    20492061#if defined AGRIF_MPI 
    2050      &     ,tab4t,memberinall 
     2062     &     ,tab4t,memberinall,sendtoproc1,recvfromproc1 
    20512063#endif 
    20522064     &    )      
     
    20652077#ifdef AGRIF_MPI 
    20662078C 
    2067       INTEGER,DIMENSION(nbdim,0:Agrif_Nbprocs-1,4) :: tab4t 
     2079      INTEGER,DIMENSION(nbdim,0:Agrif_Nbprocs-1,8) :: tab4t 
    20682080      LOGICAL, DIMENSION(0:Agrif_Nbprocs-1) :: memberinall 
     2081      LOGICAL, DIMENSION(0:Agrif_Nbprocs-1) :: sendtoproc1,recvfromproc1 
    20692082#endif  
    20702083                     
     
    20982111        parentarray = parcours%interp_loc%parentarray(1:nbdim,:,:) 
    20992112        member = parcours%interp_loc%member 
    2100         tab4t = parcours%interp_loc%tab4t(1:nbdim,0:Agrif_Nbprocs-1,1:4) 
     2113        tab4t = parcours%interp_loc%tab4t(1:nbdim,0:Agrif_Nbprocs-1,1:8) 
    21012114        memberinall = parcours%interp_loc%memberinall(0:Agrif_Nbprocs-1) 
     2115        sendtoproc1 = parcours%interp_loc%sendtoproc1(0:Agrif_Nbprocs-1) 
     2116        recvfromproc1 =  
     2117     &    parcours%interp_loc%recvfromproc1(0:Agrif_Nbprocs-1) 
    21022118#endif         
    21032119        memberin = parcours%interp_loc%memberin 
     
    21152131     &                          member,memberin,nbdim 
    21162132#if defined AGRIF_MPI 
    2117      &      ,tab4t,memberinall 
     2133     &      ,tab4t,memberinall,sendtoproc1,recvfromproc1 
    21182134#endif 
    21192135     &    ) 
     
    21302146#ifdef AGRIF_MPI 
    21312147C 
    2132       INTEGER,DIMENSION(nbdim,0:Agrif_Nbprocs-1,4) :: tab4t 
     2148      INTEGER,DIMENSION(nbdim,0:Agrif_Nbprocs-1,8) :: tab4t 
    21332149      LOGICAL,DIMENSION(0:Agrif_Nbprocs-1) :: memberinall 
     2150      LOGICAL,DIMENSION(0:Agrif_Nbprocs-1) :: sendtoproc1 
     2151      LOGICAL,DIMENSION(0:Agrif_Nbprocs-1) :: recvfromproc1 
    21342152#endif                    
    21352153      Type(Agrif_List_Interp_loc), Pointer :: parcours 
     
    21572175     &       = parentarray(1:nbdim,:,:) 
    21582176      parcours%interp_loc%member = member 
    2159       Allocate(parcours%interp_loc%tab4t(nbdim,0:Agrif_Nbprocs-1,4)) 
     2177      Allocate(parcours%interp_loc%tab4t(nbdim,0:Agrif_Nbprocs-1,8)) 
    21602178      Allocate(parcours%interp_loc%memberinall(0:Agrif_Nbprocs-1)) 
     2179      Allocate(parcours%interp_loc%sendtoproc1(0:Agrif_Nbprocs-1)) 
     2180      Allocate(parcours%interp_loc%recvfromproc1(0:Agrif_Nbprocs-1))                   
    21612181      parcours%interp_loc%tab4t=tab4t    
    21622182      parcours%interp_loc%memberinall=memberinall    
     2183      parcours%interp_loc%sendtoproc1=sendtoproc1 
     2184      parcours%interp_loc%recvfromproc1=recvfromproc1             
    21632185#endif       
    21642186 
Note: See TracChangeset for help on using the changeset viewer.