38 . IXTG ,IPARTC ,IPARTTG ,DYNAIN_DATA ,
39 . NODTAG ,DYNAIN_INDXC,DYNAIN_INDXTG,IPARG ,
40 . ELBUF_TAB,THKE ,LENGC ,LENGTG ,IPART )
46 use element_mod ,
only : nixc,nixtg
50#include "implicit_f.inc"
65 INTEGER ITAB(*), ITABG(*), LENG,
66 . IGEO(NPROPGI,*), IXC(NIXC,*), IXTG(NIXTG,*),
67 . IPARTC(*), IPARTTG(*),NODTAG(*),
68 . dynain_indxc(*), dynain_indxtg(*),
69 . lengc, lengtg, iparg(nparg,*),ipart(lipart1,*)
70 TYPE (ELBUF_STRUCT_),
DIMENSION(NGROUP),
TARGET :: ELBUF_TAB
73 TYPE (DYNAIN_DATABASE),
INTENT(INOUT) ::
77 INTEGER I, N, JJ, IPRT, K, II
78 INTEGER NG, NEL, NFT, LFT, LLT, ITY, LEN, ITHK, MLW,IOFF,IPROP,
79 . ID_PROP, IERR, N4SHELL , N3SHELL ,IGTYP ,IGTYP0
80 INTEGER IADD(NPART+1), IADG(NSPMD,NPART)
82 INTEGER ,
DIMENSION(:),
ALLOCATABLE :: NPC , NPTG ,NPGLOBC ,NPGLOBTG
83 INTEGER ,
DIMENSION(:,:),
ALLOCATABLE :: CLEF
84 double precision THKN ,BETA
85 double precision ,
DIMENSION(:),
ALLOCATABLE :: THKC, THKC0 , THKTG, THKTG0,
86 . betac, betac0, betatg, betatg0
87 TYPE(g_bufel_) ,
POINTER :: GBUF
94 ALLOCATE(npc(8*numelc),stat=ierr)
95 ALLOCATE(nptg(7*numeltg),stat=ierr)
96 ALLOCATE(npglobc(8*lengc),stat=ierr)
97 ALLOCATE(npglobtg(7*lengtg),stat=ierr)
98 ALLOCATE(clef(2,
max(numelcg,numeltgg)),stat=ierr)
99 ALLOCATE(thkc(
max(1,numelc)),stat=ierr)
100 ALLOCATE(thktg(
max(1,numeltg)),stat=ierr)
101 ALLOCATE(thkc0(
max(1,numelcg)),stat=ierr)
102 ALLOCATE(thktg0(
max(1,numeltgg)),stat=ierr)
103 ALLOCATE(betac(
max(1,numelc)),stat=ierr)
104 ALLOCATE(betatg(
max(1,numeltg)),stat=ierr)
105 ALLOCATE(betac0(
max(1,numelcg)),stat=ierr)
106 ALLOCATE(betatg0(
max(1,numeltgg)),stat=ierr)
111 npglobc(1:8*lengc) = 0
112 npglobtg(1:7*lengtg) = 0
122 gbuf => elbuf_tab(ng)%GBUF
126 id_prop=igeo(1,iprop)
128 IF(igtyp/= 1) igtyp = 2
135 IF(dynain_data%IPART_DYNAIN(iprt)==0)cycle
137 npc(jj+1) = ixc(nixc,n)
138 npc(jj+2) = itab(ixc(2,n))
139 npc(jj+3) = itab(ixc(3,n))
140 npc(jj+4) = itab(ixc(4,n))
141 npc(jj+5) = itab(ixc(5,n))
142 npc(jj+6) = ipart(4,iprt)
143 npc(jj+7) = nint(gbuf%OFF(i))
146 IF (mlw /= 0 .AND. mlw /= 13)
THEN
148 thkc(ii) = gbuf%THK(i)
157 dynain_data%DYNAIN_NUMELC =dynain_data%DYNAIN_NUMELC+1
165 betac(ii) = (hundred80*acos(gbuf%BETAORTH(i)))/pi
172 dynain_data%DYNAIN_NUMELC_G=0
173 CALL spmd_iget_partn_sta(8,dynain_data%DYNAIN_NUMELC,dynain_data%DYNAIN_NUMELC_G,lengc,npc,
174 . iadg,npglobc,dynain_indxc)
194 gbuf => elbuf_tab(ng)%GBUF
198 id_prop=igeo(1,iprop)
200 IF(igtyp/= 1) igtyp = 2
208 IF(dynain_data%IPART_DYNAIN(iprt)==0)cycle
210 nptg(jj+1) = ixtg(nixtg,n)
211 nptg(jj+2) = itab(ixtg(2,n))
212 nptg(jj+3) = itab(ixtg(3,n))
213 nptg(jj+4) = itab(ixtg(4,n))
214 nptg(jj+5) = ipart(4,iprt)
215 nptg(jj+6) = nint(gbuf%OFF(i))
218 IF (mlw /= 0 .AND. mlw /= 13)
THEN
220 thktg(ii) = gbuf%THK(i)
230 dynain_data%DYNAIN_NUMELTG =dynain_data%DYNAIN_NUMELTG+1
237 betatg(ii) = (hundred80*acos(gbuf%BETAORTH(i)))/pi
244 dynain_data%DYNAIN_NUMELTG_G=0
245 CALL spmd_iget_partn_sta(7,dynain_data%DYNAIN_NUMELTG,dynain_data%DYNAIN_NUMELTG_G,lengtg,nptg,
246 . iadg,npglobtg,dynain_indxtg)
261 DO n=1,dynain_data%DYNAIN_NUMELC_G
263 clef(1,n)=npglobc(8*(n-1)+8)
264 clef(2,n)=npglobc(8*(n-1)+1)
266 CALL my_orders(0,work,clef,dynain_indxc,dynain_data%DYNAIN_NUMELC_G,2)
268 DO n=1,dynain_data%DYNAIN_NUMELTG_G
270 clef(1,n)=npglobtg(7*(n-1)+7)
271 clef(2,n)=npglobtg(7*(n-1)+1)
273 CALL my_orders(0,work,clef,dynain_indxtg,dynain_data%DYNAIN_NUMELTG_G,2)
277 DO n=1,dynain_data%DYNAIN_NUMELC_G
281 igtyp = npglobc(jj+8)
285 IF(igtyp/=igtyp0)
THEN
287 IF(dynain_data%ZIPDYNAIN==0)
THEN
288 WRITE(iudynain,
'(A)')
'*ELEMENT_SHELL_THICKNESS'
289 WRITE(iudynain,
'(A)')
290 .
'$SHELLID PART_ID NOD1 NOD2 NOD3 NOD4'
291 WRITE(iudynain,
'(A)')
292 .
'$ THIC1 THIC2 THIC3 THIC4'
294 WRITE(line,'(a)
') '*element_shell_thickness
'
295 CALL STRS_TXT50(LINE,100)
297 . '$shellid part_id nod1 nod2 nod3 nod4
'
298 CALL STRS_TXT50(LINE,100)
300 . '$ thic1 thic2 thic3 thic4
'
301 CALL STRS_TXT50(LINE,100)
305 IF(DYNAIN_DATA%ZIPDYNAIN==0) THEN
306 WRITE(IUDYNAIN,'(6i8)
')
307 . NPGLOBC(JJ+1),NPGLOBC(JJ+6),
308 . NPGLOBC(JJ+2),NPGLOBC(JJ+3),NPGLOBC(JJ+4),NPGLOBC(JJ+5)
309 WRITE(IUDYNAIN,'(1p4g16.9)
')
310 . THKN,THKN,THKN,THKN
313 . NPGLOBC(JJ+1),NPGLOBC(JJ+6),
314 . NPGLOBC(JJ+2),NPGLOBC(JJ+3),NPGLOBC(JJ+4),NPGLOBC(JJ+5)
315 CALL STRS_TXT50(LINE,100)
316 WRITE(LINE,'(1p4g16.9)
')
317 . THKN,THKN,THKN,THKN
318 CALL STRS_TXT50(LINE,100)
329 DO N=1,DYNAIN_DATA%DYNAIN_NUMELTG_G
333 IGTYP = NPGLOBTG(JJ+7)
337 IF(DYNAIN_DATA%ZIPDYNAIN==0) THEN
338 WRITE(IUDYNAIN,'(5i8)
')
339 . NPGLOBTG(JJ+1),NPGLOBTG(JJ+5),
340 . NPGLOBTG(JJ+2),NPGLOBTG(JJ+3),NPGLOBTG(JJ+4)
341 WRITE(IUDYNAIN,'(1p3g16.9)
')
345 . NPGLOBTG(JJ+1),NPGLOBTG(JJ+5),
346 . NPGLOBTG(JJ+2),NPGLOBTG(JJ+3),NPGLOBTG(JJ+4)
347 CALL STRS_TXT50(LINE,100)
348 WRITE(LINE,'(1p3g16.9)
')
350 CALL STRS_TXT50(LINE,100)
364 DO N=N4SHELL,DYNAIN_DATA%DYNAIN_NUMELC_G
368 IGTYP = NPGLOBC(JJ+8)
373 IF(IGTYP/=IGTYP0) THEN
375 IF(DYNAIN_DATA%ZIPDYNAIN==0) THEN
376 WRITE(IUDYNAIN,'(a)
')'*element_shell_thickness_beta
'
377 WRITE(IUDYNAIN,'(a)
')
378 . '$shellid part_id nod1 nod2 nod3 nod4
'
379 WRITE(IUDYNAIN,'(a)
')
380 . '$ thic1 thic2 thic3 thic4 beta
'
382 WRITE(LINE,'(a)
') '*element_shell_thickness_beta
'
383 CALL STRS_TXT50(LINE,100)
385 . '$shellid part_id nod1 nod2 nod3 nod4
'
386 CALL STRS_TXT50(LINE,100)
388 . '$ thic1 thic2 thic3 thic4 beta
'
389 CALL STRS_TXT50(LINE,100)
394 IF(DYNAIN_DATA%ZIPDYNAIN==0) THEN
395 WRITE(IUDYNAIN,'(6i8)
')
396 . NPGLOBC(JJ+1),NPGLOBC(JJ+6),
397 . NPGLOBC(JJ+2),NPGLOBC(JJ+3),NPGLOBC(JJ+4),NPGLOBC(JJ+5)
398 WRITE(IUDYNAIN,'(1p5g16.9)
')
399 . THKN,THKN,THKN,THKN,BETA
402 . NPGLOBC(JJ+1),NPGLOBC(JJ+6),
403 . NPGLOBC(JJ+2),NPGLOBC(JJ+3),NPGLOBC(JJ+4),NPGLOBC(JJ+5)
404 CALL STRS_TXT50(LINE,100)
405 WRITE(LINE,'(1p5g16.9)
')
406 . THKN,THKN,THKN,THKN,BETA
407 CALL STRS_TXT50(LINE,100)
413 DO N=N3SHELL,DYNAIN_DATA%DYNAIN_NUMELTG
420 IF(DYNAIN_DATA%ZIPDYNAIN==0) THEN
421 WRITE(IUDYNAIN,'(5i8)
')
422 . NPGLOBTG(JJ+1),NPGLOBTG(JJ+5),
423 . NPGLOBTG(JJ+2),NPGLOBTG(JJ+3),NPGLOBTG(JJ+4)
424 WRITE(IUDYNAIN,'(1p3g16.9,16x,1pg16.9)
')
425 . THKN,THKN,THKN,BETA
428 . NPGLOBTG(JJ+1),NPGLOBTG(JJ+5),
429 . NPGLOBTG(JJ+2),NPGLOBTG(JJ+3),NPGLOBTG(JJ+4)
430 CALL STRS_TXT50(LINE,100)
431 WRITE(LINE,'(1p3g16.9,16x,1pg16.9)
')
432 . THKN,THKN,THKN,BETA
433 CALL STRS_TXT50(LINE,100)
444 DEALLOCATE(NPC,NPTG,NPGLOBC,NPGLOBTG,CLEF,THKC,THKTG,THKC0,THKTG0,BETAC,BETATG,BETAC0,BETATG0)