36
37
38
39#include "implicit_f.inc"
40
41
42
43#include "param_c.inc"
44
45
46
47 INTEGER IXC(NIXC,*),NUMELC_L, NODLOCAL(*),
48 * NUMNOD_L,CEL(*),CEP(*),PROC
49
50
51
52 INTEGER I,K,P,ELEM,ND,NDSZ_L,ELSZ_L,ELPL,NCOUNT,EMPL
53 INTEGER, DIMENSION(:), ALLOCATABLE :: ELNUM,ELEMIPT,ELEMXFEMID,
54 * NODNUM,NODEXTN,
55 . NODTAG,ELEMTAG,PLYSIZNG
56 INTEGER GET_PLY_NOD
58
59
60 ALLOCATE( nodtag(numnod_l),elemtag(numelc_l) )
61 ALLOCATE( plysizng(nplymax) )
62
63
66
67 DO k=1,nplymax
68 nodtag=0
69 elemtag=0
70
71 plysizng(k)=
plynod(k)%PLYNUMNODS
72
73
76 IF (cep(elem)==proc)THEN
77 elemtag(cel(elem))=i
78 nd = ixc(2,elem)
79 nodtag(nodlocal(nd))=nd
80 nd = ixc(3,elem)
81 nodtag(nodlocal(nd))=nd
82 nd = ixc(4,elem)
83 nodtag(nodlocal(nd))=nd
84 nd = ixc(5,elem)
85 nodtag(nodlocal(nd))=nd
86 ENDIF
87 ENDDO
88
89
90 elsz_l=0
91 ndsz_l =0
92 DO i=1,numelc_l
93 IF (elemtag(i) > 0) elsz_l=elsz_l+1
94 ENDDO
95 DO i=1,numnod_l
96 IF (nodtag(i) > 0) ndsz_l=ndsz_l+1
97 ENDDO
98
99
100 elpl = 0
101 ALLOCATE ( elnum(elsz_l),elemipt(elsz_l),elemxfemid(elsz_l) )
102
103
104 DO i=1,numelc_l
105 IF (elemtag(i) > 0) THEN
106 elpl=elpl+1
107 nd = elemtag(i)
108
109 elnum(elpl) = i
110 elemipt(elpl) =
plyshell(k)%SHELLIPT(nd)
111 elemxfemid(elpl) =
plyshell(k)%SHELLID(nd)
112 ENDIF
113 ENDDO
114
115 ncount = 0
116 ALLOCATE ( nodnum(ndsz_l), nodextn(ndsz_l) )
117 DO i=1,numnod_l
118 IF (nodtag(i) > 0) THEN
119 ncount = ncount + 1
120 nd=nodtag(i)
121
123 nodnum(ncount) = i
124 nodextn(ncount) =
plynod(k)%PLYNODID(empl)
125 ENDIF
126 ENDDO
127
128
133
137
138
139 DEALLOCATE ( nodextn,nodnum,elnum,elemipt,elemxfemid)
140 ENDDO
141
143
145
146
147 DEALLOCATE( nodtag,elemtag )
148 DEALLOCATE( plysizng )
149
150 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)