36 . NEED_COMM_INT25_SOLID_EROSION,COMM_INT25_SOLID_EROSION )
57 USE spmd_comm_world_mod,
ONLY : spmd_comm_world
58#include "implicit_f.inc"
75integer,
intent(in) :: NBINTC
76 integer,
dimension(NINTER),
intent(in) :: INTLIST
77 integer,
dimension(NPARI,NINTER),
intent(in) :: IPARI
78 integer,
dimension(NINTER+1,NSPMD+1),
intent(in) :: ISENDTO,IRCVFROM
81 LOGICAL,
DIMENSION(NSPMD),
INTENT(inout) :: NEED_COMM_INT25_SOLID_EROSION
82 INTEGER,
INTENT(inout) :: COMM_INT25_SOLID_EROSION
89 INTEGER :: KEY,CODE,I,P
91 INTEGER :: COLOR_INACTI,COLOR_INT25_SOLID_EROSION
93 INTEGER :: IDEL,IDELKEEP,SOLID_EROSION
105 need_comm_int25_solid_erosion(1:nspmd) = .false.
111 IF(ircvfrom(nin,ispmd+1)==0.or.isendto(nin,ispmd+1)==0)
THEN
112 color_crit = mpi_undefined
113 intbuf_tab(nin)%belongs_to_comm_crit = .false.
117 intbuf_tab(nin)%belongs_to_comm_crit = .true.
120 CALL mpi_comm_split(spmd_comm_world,color_crit,key,intbuf_tab(nin)%MPI_COMM_CRIT,code)
127 ALLOCATE(sort_comm(nin)%PROC_LIST(nspmd))
132 IF(ircvfrom(nin,p)/=0.or.isendto(nin,p)/=0)
THEN
137 sort_comm(nin)%PROC_LIST(1:nspmd) =
comm_tri7vox(nin)%PROC_LIST(1:nspmd)
139 sort_comm(nin)%PROC_NUMBER = i
148 IF(ircvfrom(nin,ispmd+1)==0.and.isendto(nin,ispmd+1)==0)
THEN
164 inacti = ipari(22,nin)
166 itied = ipari(85,nin)
167 IF(impl_s==0.OR.neig==0)
THEN
168 IF( inacti==5.OR.inacti==6.OR.ifq>0.OR.itied/=0)
THEN
179 solid_erosion = ipari(100,nin)
181 idelkeep = ipari(61,nin)
182 IF(nty==25.AND.ipari(100,nin)>0.AND.idelkeep/=1)
THEN
186 IF(isendto(nin,p)>0.OR.ircvfrom(nin,p)>0)
THEN
187 need_comm_int25_solid_erosion(p) = .true.
210 IF(.NOT.need_comm_int25_solid_erosion(ispmd+1))
THEN
211 color_int25_solid_erosion = 0
214 color_int25_solid_erosion = 1
218 CALL mpi_comm_split(spmd_comm_world,color_int25_solid_erosion,key,comm_int25_solid_erosion,code)
subroutine spmd_split_comm_inter(intbuf_tab, nbintc, intlist, ipari, isendto, ircvfrom, sort_comm, need_comm_int25_solid_erosion, comm_int25_solid_erosion)