32 1 TAB_UMP ,PID_SHELL ,PID_TRI ,PID_SOL,
33 2 MID_PID_SHELL ,MID_PID_TRI ,MID_PID_SOL,
34 3 IPART ,IPM ,GEO ,CPUTIME_MP_OLD_2,
35 4 POIN_PART_SHELL,POIN_PART_TRI,POIN_PART_SOL)
42#include "implicit_f.inc"
53 INTEGER,
INTENT(IN) :: MODE,TAILLE,NUMMAT,NPART
54 INTEGER,
DIMENSION(TAILLE),
INTENT(INOUT) :: CONCORDANCE_MAT
55 INTEGER,
DIMENSION(7,TAILLE),
INTENT(IN) :: TAB_UMP
56 INTEGER,
DIMENSION(2,NPART),
INTENT(INOUT) :: POIN_PART_SHELL,POIN_PART_TRI
57 INTEGER,
DIMENSION(2,NPART,7),
INTENT(INOUT) :: POIN_PART_SOL
58 INTEGER,
DIMENSION(NPROPMI,*),
INTENT(IN) :: IPM
60 INTEGER,
DIMENSION(LIPART1,*),
INTENT(IN) :: IPART
61 INTEGER,
DIMENSION(NUMMAT) :: PID_SHELL,PID_TRI
62 INTEGER,
DIMENSION(NUMMAT,7) :: PID_SOL
64 my_real,
DIMENSION(NPROPG,*),
INTENT(IN) :: geo
65 my_real,
DIMENSION(*) :: cputime_mp_old_2
67 TYPE(
mid_pid_type),
DIMENSION(NUMMAT),
INTENT(INOUT) :: MID_PID_SHELL,MID_PID_TRI
68 TYPE(
mid_pid_type),
DIMENSION(NUMMAT,7),
INTENT(INOUT) :: MID_PID_SOL
72 INTEGER :: ELM_TYP,MID,PID,IPID,ID,IGTYP,INDI,IGTYP_LOC,ILAW
103 concordance_mat(1:taille) = 0
105 elm_typ = tab_ump(7,i)
108 IF(elm_typ==3.OR.elm_typ==7.OR.elm_typ==1.OR.
109 . elm_typ==1004.OR.elm_typ==1006.OR.elm_typ==1008.OR.
110 . elm_typ==1010.OR.elm_typ==1016.OR.elm_typ==1020)
THEN
111 concordance_mat(i) = 1
124 j = concordance_mat(i)
126 elm_typ = tab_ump(7,i)
130 pid_shell(mid) = pid_shell(mid) + 1
131 ELSEIF(elm_typ==7)
THEN
132 pid_tri(mid) = pid_tri(mid) + 1
137 ELSEIF(elm_typ==1004)
THEN
139 ELSEIF(elm_typ==1006)
THEN
141 ELSEIF(elm_typ==1008)
THEN
143 ELSEIF(elm_typ==1010)
THEN
145 ELSEIF(elm_typ==1016)
THEN
147 ELSEIF(elm_typ==1020)
THEN
150 IF(indi/=0) pid_sol(mid,indi) = pid_sol(mid,indi) + 1
159 mid_pid_shell(i)%NBR_PID = 0
160 mid_pid_tri(i)%NBR_PID = 0
161 mid_pid_sol(i,1:7)%NBR_PID = 0
162 IF(pid_shell(i)>0)
THEN
163 ALLOCATE( mid_pid_shell(i)%PID1D( pid_shell(i) ) )
164 ALLOCATE( mid_pid_shell(i)%COST1D( pid_shell(i) ) )
165 mid_pid_shell(i)%PID1D( 1:pid_shell(i) ) = 0
166 mid_pid_shell(i)%COST1D( 1:pid_shell(i) ) = zero
167 mid_pid_shell(i)%NBR_PID = pid_shell(i)
169 IF(pid_tri(i)>0)
THEN
170 ALLOCATE( mid_pid_tri(i)%PID1D( pid_tri(i) ) )
171 ALLOCATE( mid_pid_tri(i)%COST1D
172 mid_pid_tri(i)%PID1D( 1 : pid_tri(i) ) = 0
173 mid_pid_tri(i)%COST1D( 1 : pid_tri(i) ) = zero
174 mid_pid_tri(i)%NBR_PID = pid_tri(i)
177 IF(pid_sol(i,indi)>0)
THEN
178 ALLOCATE( mid_pid_sol(i,indi)%PID1D( pid_sol(i,indi) ) )
179 ALLOCATE( mid_pid_sol(i,indi)%COST1D( pid_sol(i,indi) ) )
180 mid_pid_sol(i,indi)%PID1D( 1:pid_sol(i,indi) ) = 0
181 mid_pid_sol(i,indi)%COST1D( 1:pid_sol(i,indi) ) = zero
182 mid_pid_sol(i,indi)%NBR_PID = pid_sol(i,indi)
184 mid_pid_sol(i,indi)%NBR_PID = 0
197! -----------------------
198 pid_shell(1:nummat) = 0
199 pid_tri(1:nummat) = 0
200 pid_sol(1:nummat,1:7) = 0
202 j = concordance_mat(i)
208 pid_shell(mid) = pid_shell(mid) + 1
209 mid_pid_shell(mid)%PID1D( pid_shell
211 mid_pid_shell(mid)%COST1D( pid_shell(mid) ) = zero
213 mid_pid_shell(mid)%COST1D( pid_shell(mid) ) = cputime_mp_old_2(j
215 ELSEIF(elm_typ==7)
THEN
216 pid_tri(mid) = pid_tri(mid) + 1
217 mid_pid_tri(mid)%PID1D( pid_tri(mid
219 mid_pid_tri(mid)%COST1D( pid_tri(mid) ) = zero
221 mid_pid_tri(mid)%COST1D( pid_tri(mid) ) = cputime_mp_old_2(j)
227 ELSEIF(elm_typ==1004)
THEN
229 ELSEIF(elm_typ==1006)
THEN
231 ELSEIF(elm_typ==1008)
THEN
233 ELSEIF(elm_typ==1010)
THEN
235 ELSEIF(elm_typ==1016)
THEN
241 pid_sol(mid,indi) = pid_sol(mid,indi) + 1
242 mid_pid_sol(mid,indi)%PID1D( pid_sol(mid,indi) ) = pid
244 mid_pid_sol(mid,indi)%COST1D( pid_sol(mid,indi) ) = zero
246 mid_pid_sol(mid,indi)%COST1D
266 igtyp_loc=nint(geo(12,ipid))
267 IF(ipart(1,i) == 0)cycle
268 ilaw = ipm(2,ipart(1,i))
273 IF(ilaw==151.AND.n2d/=0) igtyp_loc = 1
276 IF(igtyp==1 .OR. igtyp==9 .OR. igtyp==10 .OR. igtyp==11 .OR.
277 . igtyp==16 .OR. igtyp==17 .OR. igtyp==19 .OR. igtyp==51 .OR.
278 . igtyp==52 .OR. igtyp==0 )
THEN
282 IF(mid_pid_shell(mid)%NBR_PID>0)
THEN
283 DO j=1,mid_pid_shell(mid)%NBR_PID
284 IF(pid==mid_pid_shell(mid)%PID1D(j))
THEN
285 poin_part_shell(1,i)=mid
286 poin_part_shell(2,i) = j
293 IF(mid_pid_tri(mid)%NBR_PID>0)
THEN
294 DO j=1,mid_pid_tri(mid)%NBR_PID
295 IF(pid==mid_pid_tri(mid)%PID1D(j))
THEN
296 poin_part_tri(1,i)=mid
297 poin_part_tri(2,i) = j
301 ELSEIF(igtyp==6 .OR. igtyp==14 .OR. igtyp==15 .OR.
302 . igtyp==20 .OR. igtyp==21 .OR. igtyp==22 .OR.
308 IF(mid_pid_sol(mid,indi)%NBR_PID>0)
THEN
309 DO j=1,mid_pid_sol(mid,indi)%NBR_PID
310 IF(pid==mid_pid_sol(mid,indi)%PID1D(j))
THEN
311 poin_part_sol(1,i,indi)=mid
317 ELSEIF(igtyp==29.OR.igtyp==30.OR.igtyp==31 )
THEN
322 IF(mid_pid_sol(mid,indi)%NBR_PID>0)
THEN
323 DO j=1,mid_pid_sol(mid,indi)%NBR_PID
324 IF(pid==mid_pid_sol(mid,indi)%PID1D(j))
THEN
325 poin_part_sol(1,i,indi)=mid
326 poin_part_sol(2,i,indi) = j