53 . IPARI,IAD_ELEM,FR_ELEM,X,V,
54 . MS,TEMP,KINET,NODNX_SMS,ITAB,
55 . WEIGHT,INTBUF_TAB,INTER_STRUCT,SORT_COMM,NODNX_SMS_SIZ,
56 . TEMP_SIZ, component )
60! first step of
the sort : creation of coarse & fine grids
82 USE voxel_dimensions_mod,
ONLY : compute_voxel_dimensions
84 use inter_component_bound_mod ,
only : inter_component_bound
85 use spmd_exchange_component_mod ,
only : spmd_exchange_component
90#include "implicit_f.inc"
97#include "tabsiz_c.inc"
101 INTEGER,
INTENT(in) :: ITASK
102 INTEGER,
INTENT(in) :: NB_INTER_SORTED
103 INTEGER,
INTENT(in) :: NODNX_SMS_SIZ
104 INTEGER,
INTENT(in) :: TEMP_SIZ
105 INTEGER,
DIMENSION(NB_INTER_SORTED),
INTENT(in) :: LIST_INTER_SORTED
106 INTEGER,
DIMENSION(NINTER+1,NSPMD+1),
INTENT(in) :: ISENDTO,IRECVFROM
107 INTEGER,
DIMENSION(NPARI,NINTER),
INTENT(inout) ::
108 my_real,
DIMENSION(3*NUMNOD),
INTENT(in) :: x
109 my_real,
DIMENSION(3*NUMNOD),
INTENT(in) :: v
110 my_real,
DIMENSION(NUMNOD),
INTENT(in) :: ms
111 my_real,
DIMENSION(TEMP_SIZ),
INTENT(in) :: temp
112 INTEGER,
DIMENSION(NUMNOD),
INTENT(inout) :: WEIGHT
113 INTEGER,
DIMENSION(NUMNOD),
INTENT(in) :: ITAB
114 INTEGER,
DIMENSION(NUMNOD),
INTENT(in) :: KINET
115 INTEGER,
DIMENSION(NODNX_SMS_SIZ),
INTENT(in) :: NODNX_SMS
116 INTEGER,
DIMENSION(2,NSPMD+1),
INTENT(in) :: IAD_ELEM
117 INTEGER,
DIMENSION(SFR_ELEM),
INTENT(in) :: FR_ELEM
120 TYPE(intbuf_struct_),
DIMENSION(NINTER),
INTENT(inout) :: INTBUF_TAB
121 TYPE(
inter_struct_type),
DIMENSION(NINTER),
INTENT(inout) :: INTER_STRUCT ! structure for interface
122 TYPE(sorting_comm_type),
DIMENSION(NINTER),
INTENT(inout) ::
123 type(component_),
dimension(ninter),
intent(inout) :: component
129 INTEGER :: INACTI,NTY
130 INTEGER :: NB_REQUEST_COARSE_CELL
132 INTEGER,
DIMENSION(NB_INTER_SORTED) :: ARRAY_REQUEST_COARSE_CELL
133 INTEGER,
DIMENSION(NB_INTER_SORTED) :: LIST_INTER_COARSE_CELL
134 integer :: nsn, nsnr, nrtm, nmn
145 IF(nb_inter_sorted>0)
THEN
147 box_limit(1:3) = -ep30
148 box_limit(4:6) = ep30
157 DO kk=1,nb_inter_sorted
158 n = list_inter_sorted(kk)
162 IF(nty == 7 .AND. inacti ==7)type18=.true.
167 tzinf = intbuf_tab(n)%variables(tzinf_index)
168 curv = inter_struct(n)%curv_max_max
169 call inter_component_bound(numnod,tzinf,curv,x,component(n))
199 IF(nb_inter_sorted>0)
THEN
211 do kk=1,nb_inter_sorted
212 n = list_inter_sorted(kk)
213 call spmd_exchange_component(1,nspmd,component(n))
221 IF(nb_inter_sorted>0)
THEN
223 CALL inter_color_voxel( itask,nb_inter_sorted,list_inter_sorted,ipari,intbuf_tab,
224 . x,inter_struct,sort_comm )
226 ! -----------------------------
230 IF(nspmd > 1 .AND. itask == 0)
THEN
231 ! -----------------------------
232 do kk=1,nb_inter_sorted
233 n = list_inter_sorted(kk)
234 call spmd_exchange_component(2,nspmd,component(n))
237 DO kk=1,nb_inter_sorted
238 n = list_inter_sorted(kk)
243 . fr_elem,x,v,ms,temp,
244 . kinet,nodnx_sms,itab,intbuf_tab,ipari,
245 . n,inter_struct,sort_comm,nodnx_sms_siz,temp_siz,
got_preview,component)
252 call compute_voxel_dimensions(nmn, nrtm, inter_struct(n))
260 . fr_elem,x,v,ms,temp,
261 . kinet,nodnx_sms,itab,intbuf_tab,ipari,
262 . n,inter_struct,sort_comm,nodnx_sms_siz,temp_siz,
got_preview,component)
266 CALL fill_voxel_local_partial(nsn,intbuf_tab(n)%nsv,nsnr,nrtm,numnod,x,intbuf_tab(n)%stfns,inter_struct(n),
267 . sort_comm(n)%request_cell_rcv, sort_comm(n)%NB_REQUEST_CELL_RCV)
276 . fr_elem,x,v,ms,temp,
277 . kinet,nodnx_sms,itab,intbuf_tab,ipari,
278 . n,inter_struct,sort_comm,nodnx_sms_siz,temp_siz,
got_preview,component)
281 ELSEIF (itask == 0)
THEN
282 DO kk=1,nb_inter_sorted
283 n = list_inter_sorted(kk)
285 nrtm = ipari(4,n) ; nsn = ipari(5,n) ; nsnr = ipari(24,n) ; nmn = ipari(6,n)
286 call compute_voxel_dimensions(nmn, nrtm, inter_struct(n))
287 CALL fill_voxel_local_partial(nsn,intbuf_tab(n)%nsv,nsnr,nrtm,numnod,x,
288 . intbuf_tab(n)%stfns,inter_struct(n),dummy,0)
303 DO kk=1,nb_inter_sorted
304 n = list_inter_sorted(kk)
309 . fr_elem,x,v,ms,temp,
310 . kinet,nodnx_sms,itab,intbuf_tab,ipari,
311 . n,inter_struct,sort_comm,nodnx_sms_siz,temp_siz,
got_preview,component)
314 nrtm = ipari(4,n) ; nsn = ipari(5,n) ; nsnr = ipari(24,n) ; nmn = ipari(6,n)
315 CALL fill_voxel_local_partial(nsn,intbuf_tab(n)%nsv,nsnr,nrtm,numnod,x,intbuf_tab(n)%stfns,inter_struct(n),
316 . sort_comm(n)%REQUEST_NB_R, sort_comm(n)%NBRECV_NB)