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 13027 for vendors/AGRIF/dev_r12970_AGRIF_CMEMS/AGRIF_FILES/modinterp.F90 – NEMO

Ignore:
Timestamp:
2020-06-03T16:36:09+02:00 (4 years ago)
Author:
rblod
Message:

New AGRIF library, see ticket #2129

File:
1 edited

Legend:

Unmodified
Added
Removed
  • vendors/AGRIF/dev_r12970_AGRIF_CMEMS/AGRIF_FILES/modinterp.F90

    r7752 r13027  
    127127! 
    128128    INTEGER                       :: i,j,k,l,m,n 
     129    integer :: i1,j1,k1 
    129130    INTEGER, DIMENSION(nbdim)     :: pttruetab,cetruetab 
    130131    INTEGER, DIMENSION(nbdim)     :: indmin,     indmax 
     
    132133#if defined AGRIF_MPI 
    133134    INTEGER, DIMENSION(nbdim)     :: indminglob2,indmaxglob2 
     135    INTEGER, DIMENSION(nbdim)     :: indminglob3,indmaxglob3 
     136    INTEGER, DIMENSION(:,:),ALLOCATABLE :: indminglob_chunks, indmaxglob_chunks 
     137    INTEGER, DIMENSION(:,:),ALLOCATABLE :: indminglob2_chunks,indmaxglob2_chunks 
     138    INTEGER, DIMENSION(:,:),ALLOCATABLE :: indminglob3_chunks,indmaxglob3_chunks 
    134139#endif 
    135140    LOGICAL, DIMENSION(nbdim)     :: noraftab 
     
    138143    INTEGER, DIMENSION(nbdim,2,2), INTENT(OUT) :: childarray 
    139144    INTEGER, DIMENSION(nbdim,2,2)              :: parentarray 
     145    INTEGER, DIMENSION(nbdim,2,2)              :: parentarray_decal 
    140146    LOGICAL :: member 
     147    LOGICAL,DIMENSION(:),ALLOCATABLE :: member_chuncks 
     148    INTEGER,DIMENSION(:,:),ALLOCATABLE :: decal_chunks 
    141149    LOGICAL :: find_list_interp 
    142150! 
     
    148156    INTEGER, DIMENSION(nbdim,4,0:Agrif_Nbprocs-1)   :: tab4 
    149157    INTEGER, DIMENSION(nbdim,0:Agrif_Nbprocs-1,8)   :: tab4t 
     158    INTEGER, DIMENSION(nbdim,2) :: tab5 
     159    INTEGER, DIMENSION(nbdim,2,0:Agrif_Nbprocs-1) :: tab6 
     160    INTEGER, DIMENSION(nbdim,0:Agrif_Nbprocs-1,2) :: tab5t 
    150161    LOGICAL, DIMENSION(0:Agrif_Nbprocs-1)           :: memberinall 
    151162    LOGICAL, DIMENSION(0:Agrif_Nbprocs-1)           :: sendtoproc1, recvfromproc1 
     
    154165! 
    155166#endif 
     167! CHUNK (periodicity) 
     168    INTEGER :: nb_chunks 
     169    INTEGER :: agrif_external_switch_index 
     170    INTEGER, DIMENSION(2) :: test_orientation 
     171    !INTEGER, DIMENSION(2,nbdim,2,2) :: parentarray_chunk 
     172    INTEGER, DIMENSION(:,:,:,:), ALLOCATABLE :: parentarray_chunk 
     173    INTEGER, DIMENSION(:,:,:,:), ALLOCATABLE :: parentarray_chunk_decal 
     174    INTEGER, DIMENSION(:,:,:), ALLOCATABLE :: bounds_chunks 
     175    logical,dimension(:),allocatable :: correction_required 
    156176! 
    157177    type(Agrif_Variable), pointer, save :: tempC => NULL()        ! Temporary child grid variable 
     
    168188            pttab, petab, pttab_Child, pttab_Parent, nbdim,         & 
    169189            indmin, indmax, indminglob, indmaxglob,                 & 
    170             pttruetab, cetruetab, memberin                          & 
     190            pttruetab, cetruetab, memberin,                         & 
     191            parentarray_chunk,parentarray_chunk_decal,decal_chunks,  & 
     192            correction_required,member_chuncks,nb_chunks            & 
    171193#if defined AGRIF_MPI 
    172194           ,indminglob2, indmaxglob2, parentarray,                  & 
     
    181203                               pttab, petab, Agrif_Procrank, coords,        & 
    182204                               pttruetab, cetruetab, memberin) 
     205 
     206        if (agrif_debug_interp) then 
     207        print *,'************CHILDBOUNDS*********************************' 
     208#ifdef AGRIF_MPI 
     209         print *,'Processeur ',Agrif_Procrank 
     210#endif 
     211        print *,'memberin ',memberin 
     212        do i = 1 , nbdim 
     213        print *,'Direction ',i,' indices debut: ',pttab(i),pttruetab(i) 
     214        print *,'Direction ',i,' indices fin  : ',petab(i),cetruetab(i) 
     215        enddo 
     216        print *,'*********************************************' 
     217        endif 
     218 
    183219        call Agrif_Parentbounds(type_interp,nbdim,indminglob,indmaxglob,    & 
    184220                                s_Parent_temp,s_Child_temp,                 & 
     
    188224                                pttab_Child,pttab_Parent,                   & 
    189225                                child%root_var % posvar, coords) 
     226 
     227        if (agrif_debug_interp) then 
     228        print *,'************PARENTBOUNDS*********************************' 
     229#ifdef AGRIF_MPI 
     230         print *,'Processeur ',Agrif_Procrank 
     231#endif 
     232        do i = 1 , nbdim 
     233        print *,'Direction ',i,' indices debut: ',pttab(i),indminglob(i) 
     234        print *,'Direction ',i,' indices fin  : ',petab(i),indmaxglob(i) 
     235        enddo 
     236 
     237        do i = 1 , nbdim 
     238        print *,'Direction ',i,' s_parent_temp: ',s_parent_temp(i) 
     239        print *,'Direction ',i,' s_Child_temp : ',s_Child_temp(i) 
     240        enddo 
     241        print *,'*********************************************' 
     242        endif 
     243 
    190244#if defined AGRIF_MPI 
    191245        if (memberin) then 
     
    197251                                    pttab_Child,pttab_Parent,               & 
    198252                                    child%root_var % posvar, coords) 
     253 
     254        endif 
     255        if (agrif_debug_interp) then 
     256        print *,'************PARENTBOUNDSMPI*********************************' 
     257#ifdef AGRIF_MPI 
     258         print *,'Processeur ',Agrif_Procrank 
     259#endif 
     260        do i = 1 , nbdim 
     261        print *,'Direction ',i,' indices debut: ',pttruetab(i),indmin(i) 
     262        print *,'Direction ',i,' indices fin  : ',cetruetab(i),indmax(i) 
     263        enddo 
     264 
     265        do i = 1 , nbdim 
     266        print *,'Direction ',i,' s_parent_temp: ',s_parent_temp(i) 
     267        print *,'Direction ',i,' s_Child_temp : ',s_Child_temp(i) 
     268        enddo 
     269        print *,'*********************************************' 
    199270        endif 
    200271 
     
    202273        call Agrif_get_var_bounds_array(parent,lowerbound,upperbound,nbdim) 
    203274        call Agrif_ChildGrid_to_ParentGrid() 
    204 ! 
    205         call Agrif_Childbounds(nbdim,lowerbound,upperbound,                 & 
    206                                indminglob,indmaxglob, local_proc, coords,   & 
    207                                indminglob2,indmaxglob2,member) 
    208 ! 
    209         if (member) then 
    210             call Agrif_GlobalToLocalBounds(parentarray,                     & 
    211                                            lowerbound,  upperbound,         & 
    212                                            indminglob2, indmaxglob2, coords,& 
    213                                            nbdim, local_proc, member) 
     275 
     276          parentarray(:,1,1) = indminglob 
     277          parentarray(:,2,1) = indmaxglob 
     278          parentarray(:,1,2) = indminglob 
     279          parentarray(:,2,2) = indmaxglob 
     280 
     281        if (associated(agrif_external_mapping)) then 
     282 
     283          call agrif_external_mapping(nbdim,child%root_var % posvar(1),child%root_var % posvar(2), & 
     284                                      parentarray,parentarray_chunk,correction_required,nb_chunks) 
     285          allocate(decal_chunks(nb_chunks,nbdim)) 
     286          do i=1,nb_chunks 
     287            decal_chunks(i,:)=parentarray_chunk(i,:,1,1)-parentarray_chunk(i,:,1,2) 
     288          enddo 
     289        else 
     290            nb_chunks=1 
     291            allocate(correction_required(nb_chunks)) 
     292            correction_required=.FALSE. 
     293            allocate(parentarray_chunk(nb_chunks,nbdim,2,2)) 
     294            parentarray_chunk(1,:,:,:)=parentarray 
     295            allocate(decal_chunks(nb_chunks,nbdim)) 
     296            decal_chunks=0 
    214297        endif 
     298        if (agrif_debug_interp) then 
     299        print *,'AVANT PARENTCHILDBOUNDS' 
     300        print *,'nombre de chunks ',nb_chunks 
     301        do i=1,nb_chunks 
     302          print *,'CHUNK Number : ',i 
     303          do j=1,nbdim 
     304           print *,'Direction ',j 
     305           print *,'MIN MAX (2) = ',parentarray_chunk(i,j,1,2),parentarray_chunk(i,j,2,2) 
     306           print *,'MIN MAX (1) = ',parentarray_chunk(i,j,1,1),parentarray_chunk(i,j,2,1) 
     307          enddo 
     308        enddo 
     309        print *,'APRES PARENTCHILDBOUNDS' 
     310        endif 
     311 
     312        allocate(indminglob_chunks(nb_chunks,nbdim)) 
     313        allocate(indmaxglob_chunks(nb_chunks,nbdim)) 
     314        allocate(indminglob2_chunks(nb_chunks,nbdim)) 
     315        allocate(indmaxglob2_chunks(nb_chunks,nbdim)) 
     316        allocate(indminglob3_chunks(nb_chunks,nbdim)) 
     317        allocate(indmaxglob3_chunks(nb_chunks,nbdim)) 
     318        allocate(member_chuncks(nb_chunks)) 
     319 
     320        do i=1,nb_chunks 
     321          indminglob_chunks(i,:) = parentarray_chunk(i,:,1,2) 
     322          indmaxglob_chunks(i,:) = parentarray_chunk(i,:,2,2) 
     323        enddo 
     324 
     325        do i=1,nb_chunks 
     326 
     327              call Agrif_Childbounds(nbdim,lowerbound,upperbound,         & 
     328                   indminglob_chunks(i,:),indmaxglob_chunks(i,:), local_proc, coords,   & 
     329                   indminglob2_chunks(i,:),indmaxglob2_chunks(i,:),member_chuncks(i),   & 
     330                   indminglob3_chunks(i,:),indmaxglob3_chunks(i,:)) 
     331        enddo 
     332! 
     333        ! call Agrif_Childbounds(nbdim,lowerbound,upperbound,                 & 
     334                               ! indminglob,indmaxglob, local_proc, coords,   & 
     335                               ! indminglob2,indmaxglob2,member,              & 
     336                               ! indminglob3,indmaxglob3,check_perio=.TRUE.) 
     337 
     338        if (agrif_debug_interp) then 
     339        print *,'************CHILDBOUNDSPARENTMPI*********************************' 
     340#ifdef AGRIF_MPI 
     341         print *,'Processeur ',Agrif_Procrank 
     342#endif 
     343        do j=1,nb_chunks 
     344        print *,'Chunk number ',j 
     345 
     346        do i = 1 , nbdim 
     347        print *,'Direction ',i,' indices debut: ',indminglob_chunks(j,i),indminglob2_chunks(j,i),indminglob3_chunks(j,i) 
     348        print *,'Direction ',i,' indices fin  : ',indmaxglob_chunks(j,i),indmaxglob2_chunks(j,i),indmaxglob3_chunks(j,i) 
     349        enddo 
     350        enddo 
     351        print *,'*********************************************' 
     352        endif 
     353! 
     354        ! if (member) then 
     355            ! call Agrif_GlobalToLocalBounds(parentarray,                     & 
     356                                           ! lowerbound,  upperbound,         & 
     357                                           ! indminglob2, indmaxglob2, coords,& 
     358                                           ! nbdim, local_proc, member,check_perio=.TRUE.) 
     359            ! if (agrif_debug_interp) then 
     360            ! do i=1,nbdim 
     361            ! print *,'parentarray = ',i,parentarray(i,1,1),parentarray(i,2,1), & 
     362                ! parentarray(i,1,2),parentarray(i,2,2) 
     363            ! enddo 
     364            ! endif 
     365        ! endif 
     366 
     367        allocate(parentarray_chunk_decal(nb_chunks,nbdim,2,2)) 
     368        do j=1,nb_chunks 
     369        if (agrif_debug_interp) print *,'CHUNK = ',j 
     370        if (member_chuncks(j)) then 
     371            ! call Agrif_GlobalToLocalBounds(parentarray_chunk(j,:,:,:),                               & 
     372                                           ! lowerbound,  upperbound,                                  & 
     373                                           ! indminglob2_chunks(j,:), indmaxglob2_chunks(j,:), coords, & 
     374                                           ! nbdim, local_proc, member_chuncks(j),check_perio=.TRUE.) 
     375 
     376            call Agrif_GlobalToLocalBounds(parentarray_chunk(j,:,:,:),                               & 
     377                                           lowerbound,  upperbound,                                  & 
     378                                           indminglob2_chunks(j,:), indmaxglob2_chunks(j,:), coords, & 
     379                                           nbdim, local_proc, member_chuncks(j)) 
     380 
     381            if (correction_required(j)) then 
     382                do i=1,2 
     383                    test_orientation(1)=agrif_external_switch_index(child%root_var % posvar(1),child%root_var % posvar(2), & 
     384                    parentarray_chunk(j,i,1,1),i) 
     385                    test_orientation(2)=agrif_external_switch_index(child%root_var % posvar(1),child%root_var % posvar(2), & 
     386                    parentarray_chunk(j,i,2,1),i) 
     387                    parentarray_chunk_decal(j,i,1,1)=minval(test_orientation) 
     388                    parentarray_chunk_decal(j,i,2,1)=maxval(test_orientation) 
     389                enddo 
     390                do i=3,nbdim 
     391                  parentarray_chunk_decal(j,i,:,1) = parentarray_chunk(j,i,:,1)+decal_chunks(j,i) 
     392                enddo 
     393            else 
     394            do i=1,nbdim 
     395            parentarray_chunk_decal(j,i,:,1) = parentarray_chunk(j,i,:,1)+decal_chunks(j,i) 
     396            enddo 
     397            endif 
     398 
     399            if (agrif_debug_interp) then 
     400            do i=1,nbdim 
     401            print *,'parentarray = ',i,parentarray_chunk(j,i,1,1),parentarray_chunk(j,i,2,1), & 
     402                parentarray_chunk(j,i,1,2),parentarray_chunk(j,i,2,2) 
     403                print *,'parentarraydecal = ',i,parentarray_chunk_decal(j,i,1,1),parentarray_chunk_decal(j,i,2,1) 
     404            enddo 
     405            endif 
     406        endif 
     407        enddo 
     408 
     409        parentarray(:,1,:)=Huge(1) 
     410        parentarray(:,2,:)=-Huge(1) 
     411        indminglob2=Huge(1) 
     412        indmaxglob2=-Huge(1) 
     413        indminglob3=Huge(1) 
     414        indmaxglob3=-Huge(1) 
     415        member = .FALSE. 
     416        do j=1,nb_chunks 
     417          if (member_chuncks(j)) then 
     418                           do i=1,nbdim 
     419             parentarray(i,1,1) = min(parentarray(i,1,1),parentarray_chunk_decal(j,i,1,1)) 
     420             parentarray(i,1,2) = min(parentarray(i,1,2),parentarray_chunk(j,i,1,2)) 
     421             parentarray(i,2,1) = max(parentarray(i,2,1),parentarray_chunk_decal(j,i,2,1)) 
     422             parentarray(i,2,2) = max(parentarray(i,2,2),parentarray_chunk(j,i,2,2)) 
     423                         enddo 
     424            if (correction_required(j)) then 
     425               if (agrif_debug_interp) then 
     426                  do i=1,nbdim 
     427                     print *,'direction ',i 
     428                  print *,'glob2_chuk = ',indminglob2_chunks(j,i),indmaxglob2_chunks(j,i) 
     429                  print *,'glob3_chuk = ',indminglob3_chunks(j,i),indmaxglob3_chunks(j,i) 
     430               enddo 
     431               endif 
     432                do i=1,2 
     433                    test_orientation(1)=agrif_external_switch_index(child%root_var % posvar(1),child%root_var % posvar(2), & 
     434                    indminglob2_chunks(j,i),i) 
     435                    test_orientation(2)=agrif_external_switch_index(child%root_var % posvar(1),child%root_var % posvar(2), & 
     436                    indmaxglob2_chunks(j,i),i) 
     437                    indminglob2(i)=min(indminglob2(i),minval(test_orientation)) 
     438                    indmaxglob2(i)=max(indmaxglob2(i),maxval(test_orientation)) 
     439                enddo 
     440 
     441                do i=1,2 
     442                    test_orientation(1)=agrif_external_switch_index(child%root_var % posvar(1),child%root_var % posvar(2), & 
     443                    indminglob3_chunks(j,i),i) 
     444                    test_orientation(2)=agrif_external_switch_index(child%root_var % posvar(1),child%root_var % posvar(2), & 
     445                    indmaxglob3_chunks(j,i),i) 
     446                    indminglob3(i)=min(indminglob3(i),minval(test_orientation)) 
     447                    indmaxglob3(i)=max(indmaxglob3(i),maxval(test_orientation)) 
     448                enddo 
     449 
     450                do i=3,nbdim 
     451             indminglob2(i)=min(indminglob2(i),indminglob2_chunks(j,i)+decal_chunks(j,i)) 
     452             indmaxglob2(i)=max(indmaxglob2(i),indmaxglob2_chunks(j,i)+decal_chunks(j,i)) 
     453             indminglob3(i)=min(indminglob3(i),indminglob3_chunks(j,i)+decal_chunks(j,i)) 
     454             indmaxglob3(i)=max(indmaxglob3(i),indmaxglob3_chunks(j,i)+decal_chunks(j,i)) 
     455                enddo 
     456            else 
     457                           do i=1,nbdim 
     458             indminglob2(i)=min(indminglob2(i),indminglob2_chunks(j,i)+decal_chunks(j,i)) 
     459             indmaxglob2(i)=max(indmaxglob2(i),indmaxglob2_chunks(j,i)+decal_chunks(j,i)) 
     460             indminglob3(i)=min(indminglob3(i),indminglob3_chunks(j,i)+decal_chunks(j,i)) 
     461             indmaxglob3(i)=max(indmaxglob3(i),indmaxglob3_chunks(j,i)+decal_chunks(j,i)) 
     462                         enddo 
     463         endif 
     464 
     465            member = .TRUE. 
     466          endif 
     467        enddo 
    215468 
    216469        call Agrif_ParentGrid_to_ChildGrid() 
     470 
     471        if (agrif_debug_interp) then 
     472        print *,'************ FINAL PARENTARRAY *****************' 
     473#ifdef AGRIF_MPI 
     474        print *,'Processeur ',Agrif_Procrank,' MEMBER = ',member 
     475        do i=1,nbdim 
     476         print *,'Direction ',i,' indices debut = ',parentarray(i,1,1),parentarray(i,1,2) 
     477         print *,'Direction ',i,' indices fin = ',parentarray(i,2,1),parentarray(i,2,2) 
     478        enddo 
     479#endif 
     480        endif 
     481 
     482        if (agrif_debug_interp) then 
     483        print *,'************ FINAL INDMINGLOB *****************' 
     484#ifdef AGRIF_MPI 
     485        print *,'Processeur ',Agrif_Procrank,' MEMBER = ',member 
     486        do i=1,nbdim 
     487         print *,'Direction ',i,' indices debut = ',indminglob2(i),indminglob3(i) 
     488         print *,'Direction ',i,' indices fin = ',indmaxglob2(i),indmaxglob3(i) 
     489        enddo 
     490#endif 
     491        endif 
     492 
    217493#else 
    218494        parentarray(:,1,1) = indminglob 
     
    220496        parentarray(:,1,2) = indminglob 
    221497        parentarray(:,2,2) = indmaxglob 
     498 
     499 
     500        if (associated(agrif_external_mapping)) then 
     501          call Agrif_ChildGrid_to_ParentGrid() 
     502          call agrif_external_mapping(nbdim,child%root_var % posvar(1),child%root_var % posvar(2), & 
     503                                      parentarray,parentarray_chunk,correction_required,nb_chunks) 
     504          call Agrif_ParentGrid_to_ChildGrid() 
     505          allocate(decal_chunks(nb_chunks,nbdim)) 
     506          do i=1,nb_chunks 
     507            decal_chunks(i,:)=parentarray_chunk(i,:,1,1)-parentarray_chunk(i,:,1,2) 
     508          enddo 
     509        else 
     510            nb_chunks=1 
     511            allocate(correction_required(nb_chunks)) 
     512            correction_required=.FALSE. 
     513            allocate(parentarray_chunk(nb_chunks,nbdim,2,2)) 
     514            parentarray_chunk(1,:,:,:)=parentarray 
     515        endif 
     516        if (agrif_debug_interp) then 
     517        print *,'AVANT PARENTCHILDBOUNDS' 
     518        print *,'nombre de chunks ',nb_chunks 
     519        do i=1,nb_chunks 
     520          print *,'CHUNK Number : ',i 
     521          do j=1,nbdim 
     522           print *,'Direction ',j 
     523           print *,'MIN MAX (2) = ',parentarray_chunk(i,j,1,2),parentarray_chunk(i,j,2,2) 
     524           print *,'MIN MAX (1) = ',parentarray_chunk(i,j,1,1),parentarray_chunk(i,j,2,1) 
     525          enddo 
     526        enddo 
     527        print *,'APRES PARENTCHILDBOUNDS' 
     528        endif 
     529        allocate(member_chuncks(nb_chunks)) 
     530        allocate(parentarray_chunk_decal(nb_chunks,nbdim,2,2)) 
     531        member_chuncks = .TRUE. 
     532        member = .TRUE. 
     533        do j=1,nb_chunks 
     534        if (agrif_debug_interp) print *,'CHUNK = ',j 
     535        if (member_chuncks(j)) then 
     536            do i=1,nbdim 
     537            parentarray_chunk_decal(j,i,:,1) = parentarray_chunk(j,i,:,1)   !+decal_chunks(j,i) 
     538            if (agrif_debug_interp) then 
     539                print *,'ENCORE = ',parentarray_chunk(j,i,:,1),parentarray_chunk_decal(j,i,:,1) 
     540            endif 
     541            enddo 
     542            if (agrif_debug_interp) then 
     543            do i=1,nbdim 
     544            print *,'parentarray = ',i,parentarray_chunk(j,i,1,1),parentarray_chunk(j,i,2,1), & 
     545                parentarray_chunk(j,i,1,2),parentarray_chunk(j,i,2,2) 
     546                print *,'parentarraydecal = ',i,parentarray_chunk_decal(j,i,1,1),parentarray_chunk_decal(j,i,2,1) 
     547            enddo 
     548            endif 
     549        endif 
     550        enddo 
     551 
     552 
    222553        indmin = indminglob 
    223554        indmax = indmaxglob 
    224555        member = .TRUE. 
    225556#endif 
     557!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 
     558! Correct for non refined directions 
     559!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 
     560        do i=1,nbdim 
     561          if (coords(i) == 0) then 
     562             indmin(i) = indminglob(i) 
     563             indmax(i) = indmaxglob(i) 
     564             pttruetab(i) = indminglob(i) 
     565             cetruetab(i) = indmaxglob(i) 
     566          endif 
     567        enddo 
    226568 
    227569    else 
     
    241583        s_Child_temp  = s_Child + (pttab - pttab_Child) * ds_Child 
    242584#endif 
     585 
    243586    endif 
     587 
     588        if (agrif_debug_interp) then 
     589        print *,'************SPARENTCHILD*********************************' 
     590#ifdef AGRIF_MPI 
     591         print *,'Processeur ',Agrif_Procrank 
     592#endif 
     593        do i = 1 , nbdim 
     594        print *,'Direction ',i,' s_Parent_temp : ',s_Parent_temp(i),indmin(i) 
     595        print *,'Direction ',i,' s_Child_temp  : ',s_Child_temp(i),pttruetab(i) 
     596        enddo 
     597        print *,'*********************************************' 
     598        endif 
     599 
     600    call Agrif_get_var_bounds_array(parent,lowerbound,upperbound,nbdim) 
    244601! 
    245602    if (member) then 
     
    248605        call Agrif_array_allocate(tempP,parentarray(:,1,1),parentarray(:,2,1),nbdim) 
    249606        call Agrif_var_set_array_tozero(tempP,nbdim) 
    250  
    251         call Agrif_ChildGrid_to_ParentGrid() 
    252 ! 
     607    endif 
     608    Agrif_CurChildgrid=>Agrif_Curgrid 
     609    call Agrif_ChildGrid_to_ParentGrid() 
     610    do i=1,nb_chunks 
     611    if (agrif_debug_interp) then 
     612    print *,'PROCNAME POUR CHUCNK ',i 
     613    endif 
     614 
     615    if (member_chuncks(i)) then 
    253616        select case (nbdim) 
    254617        case(1) 
    255             call procname(tempP%array1,                         & 
    256                       parentarray(1,1,2),parentarray(1,2,2),.TRUE.,nb,ndir) 
     618            ! call procname(tempP%array1,                         & 
     619            !           parentarray(1,1,2),parentarray(1,2,2),.TRUE.,nb,ndir) 
     620 
     621            call procname(tempP%array1(parentarray_chunk_decal(i,1,1,1):parentarray_chunk_decal(i,1,2,1)),         & 
     622                      parentarray_chunk(i,1,1,2),parentarray_chunk(i,1,2,2),.TRUE.,nb,ndir) 
     623 
    257624        case(2) 
    258             call procname(tempP%array2,                         & 
    259                       parentarray(1,1,2),parentarray(1,2,2),    & 
    260                       parentarray(2,1,2),parentarray(2,2,2),.TRUE.,nb,ndir) 
     625            ! call procname(tempP%array2,                         & 
     626                      ! parentarray(1,1,2),parentarray(1,2,2),    & 
     627                      ! parentarray(2,1,2),parentarray(2,2,2),.TRUE.,nb,ndir) 
     628 
     629            call procname(tempP%array2(parentarray_chunk_decal(i,1,1,1):parentarray_chunk_decal(i,1,2,1), & 
     630                      parentarray_chunk_decal(i,2,1,1):parentarray_chunk_decal(i,2,2,1)),         & 
     631                      parentarray_chunk(i,1,1,2),parentarray_chunk(i,1,2,2),    & 
     632                      parentarray_chunk(i,2,1,2),parentarray_chunk(i,2,2,2),.TRUE.,nb,ndir) 
     633            if (agrif_debug_interp) print *,'SORTIE DE PROCNAME' 
     634            if (correction_required(i)) then 
     635             call correct_field(tempP%array2(parentarray_chunk_decal(i,1,1,1):parentarray_chunk_decal(i,1,2,1), & 
     636                      parentarray_chunk_decal(i,2,1,1):parentarray_chunk_decal(i,2,2,1)), & 
     637                      parentarray_chunk_decal(i,1,1,1),parentarray_chunk_decal(i,1,2,1), & 
     638                      parentarray_chunk_decal(i,2,1,1),parentarray_chunk_decal(i,2,2,1)) 
     639            endif 
     640 
    261641        case(3) 
    262             call procname(tempP%array3,                         & 
    263                       parentarray(1,1,2),parentarray(1,2,2),    & 
    264                       parentarray(2,1,2),parentarray(2,2,2),    & 
    265                       parentarray(3,1,2),parentarray(3,2,2),.TRUE.,nb,ndir) 
     642            call procname(tempP%array3(parentarray_chunk_decal(i,1,1,1):parentarray_chunk_decal(i,1,2,1), & 
     643                      parentarray_chunk_decal(i,2,1,1):parentarray_chunk_decal(i,2,2,1), & 
     644                      parentarray_chunk_decal(i,3,1,1):parentarray_chunk_decal(i,3,2,1)),                 & 
     645                      parentarray_chunk(i,1,1,2),parentarray_chunk(i,1,2,2),    & 
     646                      parentarray_chunk(i,2,1,2),parentarray_chunk(i,2,2,2),    & 
     647                      parentarray_chunk(i,3,1,2),parentarray_chunk(i,3,2,2),.TRUE.,nb,ndir) 
     648 
     649            if (agrif_debug_interp) then 
     650                print *,'CHUNK = ',i 
     651                print *,'NBNDIR = ',nb,ndir,correction_required(i) 
     652                print *,'TEMPARRAY3 INDEX LOCAUX PUIS GLOBAUX' 
     653                print *,parentarray_chunk_decal(i,1,1,1),parentarray_chunk_decal(i,1,2,1) 
     654                print *,parentarray_chunk_decal(i,2,1,1),parentarray_chunk_decal(i,2,2,1) 
     655                print *,parentarray_chunk_decal(i,3,1,1),parentarray_chunk_decal(i,3,2,1) 
     656                print *,parentarray_chunk(i,1,1,2),parentarray_chunk(i,1,2,2) 
     657                print *,parentarray_chunk(i,2,1,2),parentarray_chunk(i,2,2,2) 
     658                print *,parentarray_chunk(i,3,1,2),parentarray_chunk(i,3,2,2) 
     659                do j1=parentarray_chunk_decal(i,2,1,1),parentarray_chunk_decal(i,2,2,1) 
     660                    do i1=parentarray_chunk_decal(i,1,1,1),parentarray_chunk_decal(i,1,2,1) 
     661                        print *,'valprocname = ',i1,j1,tempP%array3(i1,j1,1) 
     662                    enddo 
     663                enddo 
     664            endif 
     665            if (correction_required(i)) then 
     666                do k=parentarray_chunk(i,3,1,2),parentarray_chunk(i,3,2,2) 
     667             call correct_field(tempP%array3(parentarray_chunk_decal(i,1,1,1):parentarray_chunk_decal(i,1,2,1), & 
     668                      parentarray_chunk_decal(i,2,1,1):parentarray_chunk_decal(i,2,2,1),k), & 
     669                      parentarray_chunk_decal(i,1,1,1),parentarray_chunk_decal(i,1,2,1), & 
     670                      parentarray_chunk_decal(i,2,1,1),parentarray_chunk_decal(i,2,2,1)) 
     671                enddo 
     672            if (agrif_debug_interp) then 
     673                do j1=parentarray_chunk_decal(i,2,1,1),parentarray_chunk_decal(i,2,2,1) 
     674                    do i1=parentarray_chunk_decal(i,1,1,1),parentarray_chunk_decal(i,1,2,1) 
     675                        print *,'valprocname apres correction = ',i1,j1,tempP%array3(i1,j1,1) 
     676                    enddo 
     677                enddo 
     678            endif 
     679            endif 
     680 
     681            ! call procname(tempP%array3,                         & 
     682                      ! parentarray_chunk(i,1,1,2),parentarray_chunk(i,1,2,2),    & 
     683                      ! parentarray_chunk(i,2,1,2),parentarray_chunk(i,2,2,2),    & 
     684                      ! parentarray_chunk(i,3,1,2),parentarray_chunk(i,3,2,2),.TRUE.,nb,ndir) 
    266685        case(4) 
    267             call procname(tempP%array4,                         & 
    268                       parentarray(1,1,2),parentarray(1,2,2),    & 
    269                       parentarray(2,1,2),parentarray(2,2,2),    & 
    270                       parentarray(3,1,2),parentarray(3,2,2),    & 
    271                       parentarray(4,1,2),parentarray(4,2,2),.TRUE.,nb,ndir) 
     686 
     687            call procname(tempP%array4(parentarray_chunk_decal(i,1,1,1):parentarray_chunk_decal(i,1,2,1), & 
     688                      parentarray_chunk_decal(i,2,1,1):parentarray_chunk_decal(i,2,2,1), & 
     689                      parentarray_chunk_decal(i,3,1,1):parentarray_chunk_decal(i,3,2,1), & 
     690                      parentarray_chunk_decal(i,4,1,1):parentarray_chunk_decal(i,4,2,1)),                 & 
     691                      parentarray_chunk(i,1,1,2),parentarray_chunk(i,1,2,2),    & 
     692                      parentarray_chunk(i,2,1,2),parentarray_chunk(i,2,2,2),    & 
     693                      parentarray_chunk(i,3,1,2),parentarray_chunk(i,3,2,2),    & 
     694                      parentarray_chunk(i,4,1,2),parentarray_chunk(i,4,2,2),.TRUE.,nb,ndir) 
     695 
     696            if (correction_required(i)) then 
     697                do l=parentarray_chunk(i,4,1,2),parentarray_chunk(i,4,2,2) 
     698                do k=parentarray_chunk(i,3,1,2),parentarray_chunk(i,3,2,2) 
     699             call correct_field(tempP%array4(parentarray_chunk_decal(i,1,1,1):parentarray_chunk_decal(i,1,2,1), & 
     700                      parentarray_chunk_decal(i,2,1,1):parentarray_chunk_decal(i,2,2,1),k,l), & 
     701                      parentarray_chunk_decal(i,1,1,1),parentarray_chunk_decal(i,1,2,1), & 
     702                      parentarray_chunk_decal(i,2,1,1),parentarray_chunk_decal(i,2,2,1)) 
     703                enddo 
     704            enddo 
     705            endif 
     706 
     707            ! call procname(tempP%array4,                         & 
     708            !           parentarray(1,1,2),parentarray(1,2,2),    & 
     709            !           parentarray(2,1,2),parentarray(2,2,2),    & 
     710            !           parentarray(3,1,2),parentarray(3,2,2),    & 
     711            !           parentarray(4,1,2),parentarray(4,2,2),.TRUE.,nb,ndir) 
    272712        case(5) 
    273             call procname(tempP%array5,                         & 
    274                       parentarray(1,1,2),parentarray(1,2,2),    & 
    275                       parentarray(2,1,2),parentarray(2,2,2),    & 
    276                       parentarray(3,1,2),parentarray(3,2,2),    & 
    277                       parentarray(4,1,2),parentarray(4,2,2),    & 
    278                       parentarray(5,1,2),parentarray(5,2,2),.TRUE.,nb,ndir) 
     713 
     714            call procname(tempP%array5(parentarray_chunk_decal(i,1,1,1):parentarray_chunk_decal(i,1,2,1), & 
     715                      parentarray_chunk_decal(i,2,1,1):parentarray_chunk_decal(i,2,2,1), & 
     716                      parentarray_chunk_decal(i,3,1,1):parentarray_chunk_decal(i,3,2,1), & 
     717                      parentarray_chunk_decal(i,4,1,1):parentarray_chunk_decal(i,4,2,1), & 
     718                      parentarray_chunk_decal(i,5,1,1):parentarray_chunk_decal(i,5,2,1)),                 & 
     719                      parentarray_chunk(i,1,1,2),parentarray_chunk(i,1,2,2),    & 
     720                      parentarray_chunk(i,2,1,2),parentarray_chunk(i,2,2,2),    & 
     721                      parentarray_chunk(i,3,1,2),parentarray_chunk(i,3,2,2),    & 
     722                      parentarray_chunk(i,4,1,2),parentarray_chunk(i,4,2,2),    & 
     723                      parentarray_chunk(i,5,1,2),parentarray_chunk(i,5,2,2),.TRUE.,nb,ndir) 
     724 
     725            if (correction_required(i)) then 
     726                do m=parentarray_chunk(i,5,1,2),parentarray_chunk(i,5,2,2) 
     727                do l=parentarray_chunk(i,4,1,2),parentarray_chunk(i,4,2,2) 
     728                do k=parentarray_chunk(i,3,1,2),parentarray_chunk(i,3,2,2) 
     729             call correct_field(tempP%array5(parentarray_chunk_decal(i,1,1,1):parentarray_chunk_decal(i,1,2,1), & 
     730                      parentarray_chunk_decal(i,2,1,1):parentarray_chunk_decal(i,2,2,1),k,l,m), & 
     731                      parentarray_chunk_decal(i,1,1,1),parentarray_chunk_decal(i,1,2,1), & 
     732                      parentarray_chunk_decal(i,2,1,1),parentarray_chunk_decal(i,2,2,1)) 
     733                enddo 
     734            enddo 
     735            enddo 
     736            endif 
     737 
     738            ! call procname(tempP%array5,                         & 
     739            !           parentarray(1,1,2),parentarray(1,2,2),    & 
     740            !           parentarray(2,1,2),parentarray(2,2,2),    & 
     741            !           parentarray(3,1,2),parentarray(3,2,2),    & 
     742            !           parentarray(4,1,2),parentarray(4,2,2),    & 
     743            !           parentarray(5,1,2),parentarray(5,2,2),.TRUE.,nb,ndir) 
    279744        case(6) 
    280             call procname(tempP%array6,                         & 
    281                       parentarray(1,1,2),parentarray(1,2,2),    & 
    282                       parentarray(2,1,2),parentarray(2,2,2),    & 
    283                       parentarray(3,1,2),parentarray(3,2,2),    & 
    284                       parentarray(4,1,2),parentarray(4,2,2),    & 
    285                       parentarray(5,1,2),parentarray(5,2,2),    & 
    286                       parentarray(6,1,2),parentarray(6,2,2),.TRUE.,nb,ndir) 
     745 
     746            call procname(tempP%array6(parentarray_chunk_decal(i,1,1,1):parentarray_chunk_decal(i,1,2,1), & 
     747                      parentarray_chunk_decal(i,2,1,1):parentarray_chunk_decal(i,2,2,1), & 
     748                      parentarray_chunk_decal(i,3,1,1):parentarray_chunk_decal(i,3,2,1), & 
     749                      parentarray_chunk_decal(i,4,1,1):parentarray_chunk_decal(i,4,2,1), & 
     750                      parentarray_chunk_decal(i,5,1,1):parentarray_chunk_decal(i,5,2,1), & 
     751                      parentarray_chunk_decal(i,6,1,1):parentarray_chunk_decal(i,6,2,1)),                 & 
     752                      parentarray_chunk(i,1,1,2),parentarray_chunk(i,1,2,2),    & 
     753                      parentarray_chunk(i,2,1,2),parentarray_chunk(i,2,2,2),    & 
     754                      parentarray_chunk(i,3,1,2),parentarray_chunk(i,3,2,2),    & 
     755                      parentarray_chunk(i,4,1,2),parentarray_chunk(i,4,2,2),    & 
     756                      parentarray_chunk(i,5,1,2),parentarray_chunk(i,5,2,2),    & 
     757                      parentarray_chunk(i,6,1,2),parentarray_chunk(i,6,2,2),.TRUE.,nb,ndir) 
     758 
     759            ! call procname(tempP%array6,                         & 
     760            !           parentarray(1,1,2),parentarray(1,2,2),    & 
     761            !           parentarray(2,1,2),parentarray(2,2,2),    & 
     762            !           parentarray(3,1,2),parentarray(3,2,2),    & 
     763            !           parentarray(4,1,2),parentarray(4,2,2),    & 
     764            !           parentarray(5,1,2),parentarray(5,2,2),    & 
     765            !           parentarray(6,1,2),parentarray(6,2,2),.TRUE.,nb,ndir) 
    287766        end select 
    288767! 
    289         call Agrif_ParentGrid_to_ChildGrid() 
    290768! 
    291769    endif 
     770    enddo 
     771    call Agrif_ParentGrid_to_ChildGrid() 
     772    nullify(Agrif_CurChildgrid) 
    292773 
    293774#if defined AGRIF_MPI 
     
    298779        tab3(:,3) = indmin(:) 
    299780        tab3(:,4) = indmax(:) 
     781        tab5(:,1) = indminglob3(:) 
     782        tab5(:,2) = indmaxglob3(:) 
     783        if (agrif_debug_interp) then 
     784         print *,'********************' 
     785         print *,'MPI VARIABLES' 
     786         print *,'INDMINGLOB2' 
     787         do i=1,nbdim 
     788            print *,'Direction ',i,indminglob2(i),indmaxglob2(i) 
     789         enddo 
     790         print *,'INDMIN' 
     791         do i=1,nbdim 
     792            print *,'Direction ',i,indmin(i),indmax(i) 
     793         enddo 
     794         print *,'INDMINGLOB3' 
     795         do i=1,nbdim 
     796            print *,'Direction ',i,indminglob3(i),indmaxglob3(i) 
     797         enddo 
     798        endif 
    300799! 
    301800        call MPI_ALLGATHER(tab3,4*nbdim,MPI_INTEGER,tab4,4*nbdim,MPI_INTEGER,Agrif_mpi_comm,code) 
    302  
     801        call MPI_ALLGATHER(tab5,2*nbdim,MPI_INTEGER,tab6,2*nbdim,MPI_INTEGER,Agrif_mpi_comm,code) 
    303802        if (.not.associated(tempPextend))   allocate(tempPextend) 
    304803 
     
    309808                enddo 
    310809            enddo 
     810        enddo 
     811 
     812        do k=0,Agrif_Nbprocs-1 
     813          do j=1,2 
     814            do i=1,nbdim 
     815               tab5t(i,k,j) = tab6(i,j,k) 
     816            enddo 
     817          enddo 
    311818        enddo 
    312819 
     
    319826                                     sendtoproc1,recvfromproc1,         & 
    320827                                     tab4t(:,:,5),tab4t(:,:,6),         & 
    321                                      tab4t(:,:,7),tab4t(:,:,8) ) 
     828                                     tab4t(:,:,7),tab4t(:,:,8),         & 
     829                                     tab5t(:,:,1),tab5t(:,:,2)) 
    322830    endif 
    323831 
     
    335843                indminglob,indmaxglob,                          & 
    336844                pttruetab,cetruetab,                            & 
    337                 memberin,nbdim                                  & 
     845                memberin,nbdim,                                 & 
     846                parentarray_chunk,parentarray_chunk_decal,decal_chunks,& 
     847                correction_required,member_chuncks,nb_chunks    & 
    338848#if defined AGRIF_MPI 
    339849               ,indminglob2,indmaxglob2,                        & 
     
    391901                                                ds_Child(1:2),    ds_Parent(1:2) ) 
    392902            case(3) 
     903                        if (agrif_debug_interp) then 
     904        print *,'APRES ECHANGE' 
     905        print *,'nombre de chunks ',nb_chunks 
     906        print *,'indmin = ',indmin 
     907        print *,'indmax = ',indmax 
     908        do i=1,nb_chunks 
     909          print *,'CHUNK Number : ',i 
     910          print *,'MEMBER = ',member_chuncks(i) 
     911          print *,'Correction = ',correction_required(i) 
     912        enddo 
     913        endif 
     914 
     915                if (agrif_debug_interp) then 
     916                !    if ((nb==1).AND.(ndir==1)) then 
     917                        print *,'valeur parent = ' 
     918                        do j=indmin(2),indmax(2) 
     919                            do i=indmin(1),indmax(1) 
     920                                print *,'par = ',i,j,tempPextend%array3(i,j,1) 
     921                            enddo 
     922                        enddo 
     923 
     924                 !   endif 
     925                endif 
    393926                call Agrif_Interp_3D_recursive( type_interp(1:3),                       & 
    394927                                                tempPextend % array3,                   & 
     
    398931                                                s_Child_temp(1:3), s_Parent_temp(1:3),  & 
    399932                                                ds_Child(1:3),    ds_Parent(1:3) ) 
     933                if (agrif_debug_interp) then 
     934                  !  if ((nb==1).AND.(ndir==1)) then 
     935                        print *,'valeur enfnat = ' 
     936                        do j=pttruetab(2),cetruetab(2) 
     937                            do i=pttruetab(1),cetruetab(1) 
     938                                print *,'par = ',i,j,tempC%array3(i,j,1) 
     939                            enddo 
     940                        enddo 
     941 
     942                  !  endif 
     943                endif 
    400944            case(4) 
    401945                call Agrif_Interp_4D_recursive( type_interp(1:4),                       & 
     
    6761220                                      childarray(2,1,1):childarray(2,2,1),      & 
    6771221                                      childarray(3,1,1):childarray(3,2,1)) 
     1222                if (agrif_debug_interp) then 
     1223                    if ((nb==1).AND.(ndir==1)) then 
     1224                        print *,'valeur enfnat2 = ' 
     1225                        do j=childarray(2,1,2),childarray(2,2,2) 
     1226                            do i=childarray(1,1,2),childarray(1,2,2) 
     1227                                print *,'par = ',i,j,parray3(i,j,1) 
     1228                            enddo 
     1229                        enddo 
     1230 
     1231                    endif 
     1232                endif 
    6781233                    case (4) 
    6791234                        parray4(childarray(1,1,2):childarray(1,2,2),      & 
     
    7231278#if defined AGRIF_MPI 
    7241279    if (member) then 
     1280    if (agrif_debug_interp) then 
     1281    print *,'ALLCOATED 0 = ',allocated(tempP%array3),size(tempP%array3) 
     1282    endif 
    7251283        call Agrif_array_deallocate(tempP,nbdim) 
    7261284    endif 
     
    7741332            indmin(i) = indmin(i) - 2 
    7751333            indmax(i) = indmax(i) + 2 
    776  
    777             if (Agrif_UseSpecialValue) then 
    778                indmin(i) = indmin(i)-MaxSearch 
    779                indmax(i) = indmax(i)+MaxSearch 
    780             endif 
    781  
    7821334        elseif ( (type_interp(i) /= Agrif_constant) .and.   & 
    7831335                 (type_interp(i) /= Agrif_linear) ) then 
    7841336            indmin(i) = indmin(i) - 1 
    7851337            indmax(i) = indmax(i) + 1 
    786  
    787             if (Agrif_UseSpecialValue) then 
    788                indmin(i) = indmin(i)-MaxSearch 
    789                indmax(i) = indmax(i)+MaxSearch 
    790             endif 
    791  
    792         elseif ( (type_interp(i) == Agrif_constant) .or.   & 
    793                  (type_interp(i) == Agrif_linear) ) then 
    794             if (Agrif_UseSpecialValue) then 
    795                indmin(i) = indmin(i)-MaxSearch 
    796                indmax(i) = indmax(i)+MaxSearch 
    797             endif 
    798  
    7991338        endif 
    8001339! 
     
    13721911function Agrif_Find_list_interp ( list_interp, pttab, petab, pttab_Child, pttab_Parent,     & 
    13731912                                    nbdim, indmin, indmax, indminglob,  indmaxglob,         & 
    1374                                     pttruetab, cetruetab, memberin                          & 
     1913                                    pttruetab, cetruetab, memberin,                         & 
     1914                                    parentarray_chunk,parentarray_chunk_decal,decal_chunks,   & 
     1915                                    correction_required,member_chuncks,nb_chunks            & 
    13751916#if defined AGRIF_MPI 
    13761917                                   ,indminglob2, indmaxglob2, parentarray,                  & 
     
    13861927    integer, dimension(nbdim),     intent(out) :: pttruetab, cetruetab 
    13871928    logical,                       intent(out) :: memberin 
     1929    integer :: nb_chunks 
     1930    integer, dimension(:,:,:,:), allocatable :: parentarray_chunk 
     1931    integer, dimension(:,:,:,:), allocatable :: parentarray_chunk_decal 
     1932    integer, dimension(:,:),allocatable :: decal_chunks 
     1933    logical, dimension(:),allocatable :: correction_required 
     1934    logical, dimension(:),allocatable :: member_chuncks 
    13881935#if defined AGRIF_MPI 
    13891936    integer, dimension(nbdim),     intent(out) :: indminglob2, indmaxglob2 
     
    14411988#endif 
    14421989        memberin = pil % memberin 
     1990 
     1991! chunks 
     1992        nb_chunks = pil % nb_chunks 
     1993        Allocate(parentarray_chunk(nb_chunks,nbdim,2,2)) 
     1994        parentarray_chunk = pil % parentarray_chunk 
     1995        Allocate(parentarray_chunk_decal(nb_chunks,nbdim,2,2)) 
     1996        parentarray_chunk_decal = pil % parentarray_chunk_decal 
     1997        Allocate(correction_required(nb_chunks)) 
     1998        correction_required = pil % correction_required 
     1999        Allocate(decal_chunks(nb_chunks,nbdim)) 
     2000        decal_chunks = pil % decal_chunks 
     2001        Allocate(member_chuncks(nb_chunks)) 
     2002        member_chuncks = pil % member_chuncks 
     2003 
    14432004        find_list_interp = .true. 
    14442005        exit find_loop 
     
    14542015                                     indmin, indmax, indminglob, indmaxglob,                & 
    14552016                                     pttruetab, cetruetab,                                  & 
    1456                                      memberin, nbdim                                        & 
     2017                                     memberin, nbdim,                                       & 
     2018                                    parentarray_chunk,parentarray_chunk_decal,decal_chunks,  & 
     2019                                    correction_required,member_chuncks,nb_chunks            & 
    14572020#if defined AGRIF_MPI 
    14582021                                    ,indminglob2, indmaxglob2,                              & 
     
    14702033    integer, dimension(nbdim)               :: pttruetab, cetruetab 
    14712034    logical                                 :: memberin 
     2035    integer :: nb_chunks 
     2036    integer, dimension(:,:,:,:), allocatable :: parentarray_chunk 
     2037    integer, dimension(:,:,:,:), allocatable :: parentarray_chunk_decal 
     2038    integer, dimension(:,:),allocatable :: decal_chunks 
     2039    logical, dimension(:),allocatable :: correction_required 
     2040    logical, dimension(:),allocatable :: member_chuncks 
    14722041#if defined AGRIF_MPI 
    14732042    integer, dimension(nbdim,2,2)           :: parentarray 
     
    15182087    pil % cetruetab(1:nbdim) = cetruetab(1:nbdim) 
    15192088 
     2089! chunks 
     2090    pil % nb_chunks = nb_chunks 
     2091    allocate(pil % parentarray_chunk(nb_chunks,nbdim,2,2)) 
     2092    allocate(pil % parentarray_chunk_decal(nb_chunks,nbdim,2,2)) 
     2093    allocate(pil % correction_required(nb_chunks)) 
     2094    allocate(pil % decal_chunks(nb_chunks,nbdim)) 
     2095    allocate(pil % member_chuncks(nb_chunks)) 
     2096 
     2097    pil % parentarray_chunk   = parentarray_chunk 
     2098    pil % parentarray_chunk_decal = parentarray_chunk_decal 
     2099    pil % correction_required = correction_required 
     2100    pil % decal_chunks        = decal_chunks 
     2101    pil % member_chuncks      = member_chuncks 
     2102 
     2103 
    15202104    parcours % suiv => list_interp 
    15212105    list_interp => parcours 
Note: See TracChangeset for help on using the changeset viewer.