33
34
35
38 use element_mod , only : nixc,nixtg
39
40
41
42#include "implicit_f.inc"
43
44
45
46#include "com01_c.inc"
47#include "com04_c.inc"
48#include "param_c.inc"
49
50
51
52
54 . geo(npropg,*)
55 INTEGER IXC(NIXC,*),IPARTQ(*),IPARTTG(*),IXTG(NIXTG,*),
56 . IPARG(NPARG,*), IPARTC(*),IGEO(NPROPGI,*)
57
58 TYPE (STACK_PLY) :: STACK
59
60
61
62 LOGICAL :: COMPUTATION_NEEDED
63 INTEGER IE,NG, ITY, LFT, LLT, NPT, N, I,
64 . IPRT, NEL, IAD, NFT,MTN,
65 . K, IHBE,ISHPLYXFEM,IPID,IPT,
66 . IPLY,IPPID,JPID,
67 . NCOUNT,SHCOUNT,MATER(NPART),ISUBSTACK
68 INTEGER, DIMENSION(:), ALLOCATABLE :: TAG_ARRAY,TAG_SHELLS
69
70
71 ALLOCATE(tag_array(numnod))
72 ALLOCATE(tag_shells(numelc))
73 DO i=1,npart
74 mater(i)=0
75 ENDDO
76
77 computation_needed = .false.
78 DO ng = 1, ngroup
79 nel =iparg(2,ng)
80 nft =iparg(3,ng)
81 ity =iparg(5,ng)
82 IF(ity==2)THEN
83 DO i = 1, nel
84 n = i + nft
85 mater(ipartq(n)) = 1
86 ENDDO
87 ELSEIF(ity==3)THEN
88 DO i = 1, nel
89 n = i + nft
90 mater(ipartc(n)) = 1
91 ENDDO
92 ELSEIF(ity==7)THEN
93 DO i = 1, nel
94 n = i + nft
95 mater(iparttg(n)) = 1
96 ENDDO
97 ENDIF
98 ishplyxfem = iparg(50,ng)
99 IF(ishplyxfem/=0) computation_needed = .true.
100 ENDDO
101
102
103
104
105
107
108 DO i=1,nplymax
110 ENDDO
111
113 DO i=1,nplymax
115 ENDDO
116
117
118
119 ie = 0
120
121 ippid = 100
122
123
124
127 IF(computation_needed) THEN
128 DO k=1,nplymax
129 tag_array=0
130 tag_shells=0
131 shcount=0
132 DO 500 iprt=1,npart
133 IF(mater(iprt) == 0)GOTO 500
134 DO 490 ng=1,ngroup
135 mtn =iparg(1,ng)
136 nel =iparg(2,ng)
137 nft =iparg(3,ng)
138 iad =iparg(4,ng)
139 ity =iparg(5,ng)
140 ishplyxfem = iparg(50,ng)
141 lft=1
142 llt=nel
143
144 IF(ishplyxfem > 0) THEN
145
146
147
148 IF(ity==3)THEN
149 npt =iparg(6,ng)
150 ihbe = iparg(23,ng)
151 isubstack = iparg(71,ng)
152 ippid = 2
153 DO 130 i=lft,llt
154 n = i + nft
155 IF(ipartc(n)/=iprt)GOTO 130
156 ipid = ixc(6,n)
157 DO ipt=1,npt
158 jpid = stack%IGEO(ippid + ipt, isubstack)
159 iply = igeo(102 ,jpid)
161 IF (iply == k) THEN
162 tag_array(ixc(2,n))=1
163 tag_array(ixc(3,n))=1
164 tag_array(ixc(4,n))=1
165 tag_array(ixc(5,n))=1
166
167 tag_shells(n) = ipt
169 ENDIF
170
171 ENDDO
172130 CONTINUE
173
174
175
176
177 ELSEIF(ity==7)THEN
178
179 ENDIF
180 ENDIF
181 490 CONTINUE
182
183 500 CONTINUE
184
185
186
187 DO i=1,numnod
188 IF (tag_array(i)==1)
plynod(k)%PLYNUMNODS =
plynod(k)%PLYNUMNODS + 1
189 ENDDO
191
192 ncount = 0
193 DO i=1,numnod
194 IF (tag_array(i)==1) THEN
195 ncount=ncount+1
197 ENDIF
198 ENDDO
199
200
201
204
205
206
207 shcount=0
208 DO i=1, numelc
209 IF (tag_shells(i) > 0)THEN
210 shcount=shcount+1
212 plyshell(k)%SHELLIPT(shcount)=tag_shells(i)
213 ENDIF
214 ENDDO
215 ENDDO
216
217 ELSE
218 DO k=1,nplymax
222 ENDDO
223 ENDIF
224
225
226
227 ncount = 0
228 DO k=1,nplymax
231 ncount=ncount+1
233 ENDDO
234 ENDDO
235
236
237
238
239 ncount = 0
240 DO k=1,nplymax
242 DO i=1,
plynod(k)%PLYNUMNODS
243 ncount=ncount+1
244 plynod(k)%PLYNODID(i)=ncount
245 ENDDO
246 ENDDO
247
248
249
250
254 DO k=1,nplymax
255 IF (
plyshell(k)%PLYNUMSHELL >0)
THEN
259 ENDIF
260 ENDDO
261
262 nplynodg = 0
263 DO k=1,nplymax
264 nplynodg = nplynodg +
plynod(k)%PLYNUMNODS
265 ENDDO
266
267 DEALLOCATE(tag_array)
268 DEALLOCATE(tag_shells)
269
270
271 RETURN
integer, dimension(:), allocatable indx_ply
integer, dimension(:), allocatable idpid_ply
type(plyshells), dimension(:), allocatable plyshell