36 use element_mod , only : nixc
37
38
39
40#include "implicit_f.inc"
41
42
43
44#include "param_c.inc"
45
46
47
48 INTEGER IXC(NIXC,*),NUMELC_L, NODLOCAL(*),
49 * NUMNOD_L,CEL(*),CEP(*),PROC
50
51
52
53 INTEGER I, K, ELEM, ND, NDSZ_L, ELSZ_L, ELPL, NCOUNT, EMPL
54 INTEGER, DIMENSION(:), ALLOCATABLE :: ELNUM,ELEMIPT,ELEMXFEMID,
55 * NODNUM,NODEXTN,
56 . NODTAG,ELEMTAG,PLYSIZNG
57 INTEGER GET_PLY_NOD
59
60
61 ALLOCATE( nodtag(numnod_l),elemtag(numelc_l) )
62 ALLOCATE( plysizng(nplymax) )
63
64
67
68 DO k=1,nplymax
69 nodtag=0
70 elemtag=0
71
72 plysizng(k)=
plynod(k)%PLYNUMNODS
73
74
77 IF (cep(elem)==proc)THEN
78 elemtag(cel(elem))=i
79 nd = ixc(2,elem)
80 nodtag(nodlocal(nd))=nd
81 nd = ixc(3,elem)
82 nodtag(nodlocal(nd))=nd
83 nd = ixc(4,elem)
84 nodtag(nodlocal(nd))=nd
85 nd = ixc(5,elem)
86 nodtag(nodlocal(nd))=nd
87 ENDIF
88 ENDDO
89
90
91 elsz_l=0
92 ndsz_l =0
93 DO i=1,numelc_l
94 IF (elemtag(i) > 0) elsz_l=elsz_l+1
95 ENDDO
96 DO i=1,numnod_l
97 IF (nodtag(i) > 0) ndsz_l=ndsz_l+1
98 ENDDO
99
100
101 elpl = 0
102 ALLOCATE ( elnum(elsz_l),elemipt(elsz_l),elemxfemid(elsz_l) )
103
104
105 DO i=1,numelc_l
106 IF (elemtag(i) > 0) THEN
107 elpl=elpl+1
108 nd = elemtag(i)
109
110 elnum(elpl) = i
111 elemipt(elpl) =
plyshell(k)%SHELLIPT(nd)
112 elemxfemid(elpl) =
plyshell(k)%SHELLID(nd)
113 ENDIF
114 ENDDO
115
116 ncount = 0
117 ALLOCATE ( nodnum(ndsz_l), nodextn(ndsz_l) )
118 DO i=1,numnod_l
119 IF (nodtag(i) > 0) THEN
120 ncount = ncount + 1
121 nd=nodtag(i)
122
124 nodnum(ncount) = i
125 nodextn(ncount) =
plynod(k)%PLYNODID(empl)
126 ENDIF
127 ENDDO
128
129
134
138
139
140 DEALLOCATE ( nodextn,nodnum,elnum,elemipt,elemxfemid)
141 ENDDO
142
144
146
147
148 DEALLOCATE( nodtag,elemtag )
149 DEALLOCATE( plysizng )
150
151 RETURN
type(plynods), dimension(:), allocatable plynod
integer, dimension(:), allocatable indx_ply
integer, dimension(:), allocatable idpid_ply
type(plyshells), dimension(:), allocatable plyshell
integer function get_ply_nod(iply, nodid)
void write_i_c(int *w, int *len)