37 . X,INTER_STRUCT,SORT_COMM)
55#include "implicit_f.inc"
67 INTEGER,
INTENT(in) :: ITASK
68 INTEGER,
INTENT(in) :: NB_INTER_SORTED
69 INTEGER,
DIMENSION(NB_INTER_SORTED),
INTENT(in) :: LIST_INTER_SORTED
70 INTEGER,
DIMENSION(NPARI,NINTER),
INTENT(in) :: IPARI
71 TYPE(intbuf_struct_),
DIMENSION(NINTER),
INTENT(in) :: INTBUF_TAB
72 my_real,
DIMENSION(3*NUMNOD),
INTENT(in) :: x
81 INTEGER :: SIZE_INDEX_CELL,TOTAL_NB_CELL
82 INTEGER :: NRTM,NRTM_T
83 INTEGER :: ADRESS,ESHIFT,SHIFT
84 INTEGER,
DIMENSION(:),
ALLOCATABLE :: INDEX_CELL
90 my_real :: tzinf,gapmin,gapmax,gap,drad
92! ----------------------------------------
104 ALLOCATE(index_cell(size_index_cell))
107 ! --------------------
109 DO kk=1,nb_inter_sorted
110 nin = list_inter_sorted(kk)
112 nrtm_t = nrtm/nthread
113 eshift = itask*nrtm_t
114 adress = 1 + itask*(ipari(4,nin)/nthread)
115 IF(itask==nthread-1) nrtm_t= nrtm - adress + 1
118 tzinf = intbuf_tab(nin)%VARIABLES(tzinf_index)
119 gap =intbuf_tab(nin)%VARIABLES(gap_index)
120 gapmin=intbuf_tab(nin)%VARIABLES(gapmin_index)
121 gapmax=intbuf_tab(nin)%VARIABLES(gapmax_index)
123 IF(ipari(7,nin)==7) drad =intbuf_tab(nin)%VARIABLES(drad_index)
124 dgapload = intbuf_tab(nin)%VARIABLES(bgapemx_index)
127 inacti = ipari(22,nin)
129 IF(nty==7 .AND. inacti==7)type18=.true.
133 IF(sort_comm(nin)%PROC_NUMBER>nspmd/2)
THEN
135 IF(.NOT.
ALLOCATEDTHEN
136 ALLOCATE(sort_comm(nin)%MAIN_COARSE_GRID(
139 sort_comm(nin)%MAIN_COARSE_GRID(:,:,:) = 0
146 CALL inter_cell_color( x,ipari(21,nin) ,nrtm_t ,intbuf_tab(nin)%STFM(1+eshift) ,
147 2 tzinf,inter_struct(nin)%CURV_MAX(adress
148 3 gapmin ,gapmax,intbuf_tab(nin)%GAP_M(1+eshift) ,
149 4 intbuf_tab(nin)%IRECTM(1+4*eshift),gap,intbuf_tab(nin)%VARIABLES(bgapsmx_index),drad,
151 6
coarse_grid,sort_comm(nin)%MAIN_COARSE_GRID,dgapload)
161 sort_comm(nin)%SIZE_CELL_LIST(1) = total_nb_cell
162 sort_comm(nin)%SIZE_CELL_LIST(2) = 0
163 ALLOCATE( sort_comm(nin)%CELL_LIST(total_nb_cell) )
169 VALUE = index_cell(i)
170 iz = (
VALUE - mod(
VALUE,1000000) ) / 1000000
171 VALUE =
VALUE - iz * 1000000
172 iy = (
VALUE - mod(
VALUE,1000) ) / 1000
173 VALUE =
VALUE - iy * 1000
201 DEALLOCATE(index_cell)
subroutine inter_cell_color(x, igap, nrtm, stf, tzinf, curv_max, gapmin, gapmax, gap_m, irect, gap, bgapsmx, drad, nb_index_cell, size_index_cell, index_cell, needed, main_coarse_grid, dgapload)
subroutine inter_color_voxel(itask, nb_inter_sorted, list_inter_sorted, ipari, intbuf_tab, x, inter_struct, sort_comm)