43
44
45
47 USE elbufdef_mod
48 USE my_alloc_mod
49
50
51
52#include "implicit_f.inc"
53
54
55
56#include "mvsiz_p.inc"
57
58
59
60#include "com01_c.inc"
61#include "com04_c.inc"
62#include "param_c.inc"
63#include "units_c.inc"
64#include "task_c.inc"
65#include "scr14_c.inc"
66#include "scr16_c.inc"
67#include "vect01_c.inc"
68#include "scr17_c.inc"
69#include "tabsiz_c.inc"
70
71
72
73 INTEGER SIZLOC,SIZP0
74 INTEGER IXS(NIXS,*),IXS10(6,*),IXS16(8,*),IXS20(12,*),
75 . IPARG(NPARG,*),IPM(NPROPMI,*),IGEO(NPROPGI,*),
76 . IPARTS(*), IPART_STATE(*), STAT_INDXS(*),IPART(LIPART1,*)
78 . x(3,*), dr
79 TYPE (ELBUF_STRUCT_), DIMENSION(NGROUP), TARGET :: ELBUF_TAB
80 double precision WA(*),WAP0(*)
81
82
83
84 INTEGER I,N,J,K,II,JJ,LEN,NLAY,NPTR,NPTS,NPTT,ISOLNOD0,
85 . ISOLNOD,ISTRAIN,NG, NEL, MLW, ID, IPRT0, IPRT,IE,
86 . NPG,IPG,IPT,IL,IR,IS,IT,IPID,PID,IOFF,KK(8),NC(20),
87 . NN1,NN,NSROT
88 INTEGER,DIMENSION(:),ALLOCATABLE :: PTWA
89 INTEGER,DIMENSION(:),ALLOCATABLE :: PTWA_P0
90 my_real x0(mvsiz,20), y0(mvsiz,20), z0(mvsiz,20)
91 CHARACTER*100 DELIMIT,LINE
92 DATA delimit(1:60)
93 ./'#---1----|----2----|----3----|----4----|----5----|----6----|'/
94 DATA delimit(61:100)
95 ./'----7----|----8----|----9----|----10---|'/
96
97 TYPE(L_BUFEL_) ,POINTER :: LBUF
98 TYPE(G_BUFEL_) ,POINTER :: GBUF
99
100 CALL my_alloc(ptwa,stat_numels)
101 ALLOCATE(ptwa_p0(0:
max(1,stat_numels_g)))
102
103 jj = 0
104 IF(stat_numels==0) GOTO 200
105
106 ie=0
107
108 DO ng=1,ngroup
109 ity =iparg(5,ng)
110 isolnod = iparg(28,ng)
111 mlw =iparg(1,ng)
112 nel =iparg(2,ng)
113 nft =iparg(3,ng)
114 iad =iparg(4,ng)
115 istrain = iparg(44,ng)
116 lft = 1
117 llt = nel
118
119 DO i=1,8
120 kk(i) = nel*(i-1)
121 ENDDO
122
123 IF (ity == 1) THEN
125 2 mlw ,nel ,nft ,iad ,ity ,
126 3 npt ,jale ,ismstr ,jeul ,jtur ,
127 4 jthe ,jlag ,jmult ,jhbe ,jivf ,
128 5 nvaux ,jpor ,jcvt ,jclose ,jplasol ,
129 6 irep ,iint ,igtyp ,israt ,isrot ,
130 7 icsen ,isorth ,isorthg ,ifailure,jsms )
131 IF (jhbe==17.AND.iint==2) jhbe = 18
132 IF (jhbe==1.AND.iint==3) jhbe = 5
133 isolnod0 = isolnod
134 nsrot = 0
135 IF (isolnod0==4 .AND. isrot==1) THEN
136 isolnod=10
137 nsrot = 4
138 END IF
139 gbuf => elbuf_tab(ng)%GBUF
140 iprt=iparts(lft+nft)
141 pid = ipart(2,iprt)
142
143 IF(ismstr==1.OR.ismstr>=10) THEN
144 CALL getconfig(lft,llt,isolnod,ismstr,x0,y0,z0,
145 1 gbuf%SMSTR,nel)
146 END IF
147 DO i=lft,llt
148 n = i + nft
149 iprt=iparts(n)
150 IF(ipart_state(iprt)==0)cycle
151 wa(jj+ 1)= iprt
152 wa(jj+ 2)= ixs(nixs,n)
153 wa(jj+ 3)= isolnod
154 wa(jj+ 4)= jhbe
155 wa(jj+ 5)= ismstr
156 wa(jj+ 6)= gbuf%OFF(i)
157 wa(jj+ 7)= nsrot
158 jj =
159 IF(ismstr==1.OR.ismstr>=10) THEN
160 IF(isolnod == 8)THEN
161 DO j = 1,isolnod
162 nc(j) = ixs(j+1,n)
163 ENDDO
164 ELSEIF(isolnod0== 4)THEN
165 nc(1)=ixs(2,n)
166 nc(2)=ixs(4,n)
167 nc(3)=ixs(7,n)
168 nc(4)=ixs(6,n)
169 ELSEIF(isolnod == 6)THEN
170 nc(1)=ixs(2,n)
171 nc(2)=ixs(3,n)
172 nc(3)=ixs(4,n)
173 nc(4)=ixs(6,n)
174 nc(5)=ixs(7,n)
175 nc(6)=ixs(8,n)
176 ELSEIF(isolnod0== 10)THEN
177 nc(1)=ixs(2,n)
178 nc(2)=ixs(4,n)
179 nc(3)=ixs(7,n)
180 nc(4)=ixs(6,n)
181 nn1 = n - numels8
182 DO j=1,6
183 nc(j+4) = ixs10(j,nn1)
184 ENDDO
185 ELSEIF(isolnod == 16)THEN
186 nc(1:8) = ixs(2:9,n)
187 nn1 = n - (numels8+numels10+numels20)
188 DO j=1,8
189 nc(j+8) = ixs16(j,nn1)
190 ENDDO
191 ELSEIF(isolnod == 20)THEN
192 nc(1:8) = ixs(2:9,n)
193 nn1 = n - (numels8+numels10)
194 DO j=1,12
195 nc(j+8) = ixs20(j,nn1)
196 ENDDO
197 ENDIF
198 DO j= 1, isolnod
199 jj = jj + 1
200 wa(jj)= x0(i,j)
201 jj = jj + 1
202 wa(jj)= y0(i,j)
203 jj = jj + 1
204 wa(jj)= z0(i,j)
205 END DO
206 DO j= 1, nsrot
207 nn = 3*(nc(j)-1)
208 jj = jj + 1
209 wa(jj)= dr(1+nn)
210 jj = jj + 1
211 wa(jj)= dr(2+nn)
212 jj = jj + 1
213 wa(jj)= dr(3+nn)
214 END DO
215 END IF
216 ie=ie+1
217
218 ptwa(ie)=jj
219 END DO
220
221 ENDIF
222 ENDDO
223 200 CONTINUE
224
225 IF(nspmd == 1)THEN
226
227 ptwa_p0(0)=0
228 DO n=1,stat_numels
229 ptwa_p0(n)=ptwa(n)
230 END DO
231 len=jj
232 DO j=1,len
233 wap0(j)=wa(j)
234 END DO
235 ELSE
236
238 len = 0
240 END IF
241
242 IF(ispmd == 0.AND.len>0) THEN
243
244 iprt0=0
245 DO n=1,stat_numels_g
246
247
248 k=stat_indxs(n)
249
250 j=ptwa_p0(k-1)
251 ioff = nint(wap0(j + 6))
252 iprt = nint(wap0(j + 1))
253 ismstr = nint(wap0(j + 5))
254 IF (ioff >= 1.AND.(ismstr==1.OR.ismstr>=10)) THEN
255 IF(iprt /= iprt0)THEN
256 IF (izipstrs == 0) THEN
257 WRITE(iugeo,'(A)') delimit
258 WRITE(iugeo,'(A)')'/INIBRI/EREF'
259 WRITE(iugeo,'(A)')
260 . '#------------------------ REPEAT -------------------------'
261 WRITE(iugeo,'(A)')
262 . '# BRICKID ISOLNOD ISOLID ISMSTR NSROT'
263 WRITE(iugeo,'(A/A)')
264 . '# REPEAT K=1,ISOLNOD ',
265 . '# X, Y, Z'
266 WRITE(iugeo,'(A)')
267 . '#------------------------ REPEAT -------------------------'
268 WRITE(iugeo,'(A)') delimit
269 ELSE
270 WRITE(line,'(A)') delimit
272 WRITE(line,'(A)')'/INIBRI/EREF'
274 WRITE(line,'(A)')
275 . '#------------------------ REPEAT -------------------------'
277 WRITE(line,'(A)')
278 . '# BRICKID ISOLNOD ISOLID ISMSTR NSROT'
280 WRITE(line,'(A)')
281 . '# REPEAT K=1,ISOLNOD '
283 WRITE(line,'(A)')'# X, Y, Z'
285 WRITE(line,'(A)')
286 . '# REPEAT K=1,NSROT '
288 WRITE(line,'(A)')'# RX, RY, RZ'
290 WRITE(line,'(A)')
291 . '#------------------------ REPEAT -------------------------'
293 WRITE(line,'(A)') delimit
295 END IF
296 iprt0=iprt
297 END IF
298 id = nint(wap0(j + 2))
299 isolnod = nint(wap0(j + 3))
300 jhbe = nint(wap0(j + 4))
301 nsrot = nint(wap0(j + 7))
302
303 j = j + 7
304
305 IF (izipstrs == 0) THEN
306 WRITE(iugeo,
'(I10,10X,4I10)')
id,isolnod,jhbe,ismstr,nsrot
307 ELSE
308 WRITE(line,
'(I10,10X,4I10)')
id,isolnod,jhbe,ismstr,nsrot
310 ENDIF
311 DO ipt = 1, isolnod+nsrot
312 IF (izipstrs == 0) THEN
313 WRITE(iugeo,'(1P3E20.13)')(wap0(j + k),k=1,3)
314 ELSE
316 ENDIF
317 j = j + 3
318 ENDDO
319 ENDIF
320
321 ENDDO
322 ENDIF
323
324 DEALLOCATE(ptwa)
325 DEALLOCATE(ptwa_p0)
326
327 RETURN
subroutine initbuf(iparg, ng, mtn, llt, nft, iad, ity, npt, jale, ismstr, jeul, jtur, jthe, jlag, jmult, jhbe, jivf, mid, jpor, jcvt, jclose, jpla, irep, iint, igtyp, israt, isrot, icsen, isorth, isorthg, ifailure, jsms)
subroutine spmd_rgather9_dp(v, len, vp0, lenp0, iad)
subroutine spmd_stat_pgather(ptv, ptlen, ptv_p0, ptlen_p0)
subroutine strs_txt50(text, length)
subroutine tab_strs_txt50(wap0, cpt, j, sizp0, nbpline)
subroutine getconfig(ift, ilt, npe, ismstr, x0, y0, z0, sav, nel)