40 use element_mod , only : nixs
41
42
43
44#include "implicit_f.inc"
45
46
47
48 INTEGER ELEM(3,*), IXS(NIXS,*), NEL, NBRIC,NELA, NNA, ELEMA(3,*), TAGELA(*), BRNA(8,*), NB_NODE
49 INTEGER, DIMENSION(NNA), INTENT(IN) :: IBUFA
50 INTEGER, DIMENSION(NEL), INTENT(IN) :: TAGELS
51 INTEGER, DIMENSION(2, NBRIC), INTENT(IN) :: TBRIC
52 INTEGER, DIMENSION(12, NBRIC), INTENT(IN) :: TFAC
53
54
55
56 INTEGER I, II, ITABINV(NB_NODE), NFAC, J, KK, JJ
57 INTEGER FAC4(3,4), FAC8(4,6), FAC6(4,5), NOD6(5)
58 INTEGER FAC5(4,5), NOD5(5), NFACE(4), NTYPE
59 DATA fac4 /1,5,3,
60 . 3,5,6,
61 . 6,5,1,
62 . 1,3,6/
63 DATA fac8 /1,4,3,2,
64 . 5,6,7,8,
65 . 1,2,6,5,
66 . 2,3,7,6,
67 . 3,4,8,7,
68 . 4,1,5,8/
69 DATA fac6 /1,3,2,0,
70 . 5,6,7,0,
71 . 1,2,6,5,
72 . 2,3,7,6,
73 . 3,4,8,7/
74 DATA nod6 /3,3,4,4,4/
75 DATA fac5 /2,1,5,0,
76 . 3,2,5,0,
77 . 3,5,4,0,
78 . 1,4,5,0,
79 . 1,4,3,2/
80 DATA nod5 /3,3,3,3,4/
81 DATA nface/6,4,5,5/
82
83 nela=0
84 DO i=1,nel
85 IF (tagels(i)==0) THEN
86 nela=nela+1
87 tagela(nela)=i
88 elema(1,nela)=elem(1,i)
89 elema(2,nela)=elem(2,i)
90 elema(3,nela)=elem(3,i)
91 ENDIF
92 ENDDO
93 DO i=1,nna
94 ii=ibufa(i)
95 itabinv(ii)=i
96 ENDDO
97
98 DO i=1,nbric
99 ii=tbric(1,i)
100 ntype=tbric(2,i)
101 nfac=nface(ntype)
102 DO j=1,nfac
103 IF (tfac(2*(j-1)+1,i)==3) THEN
104
105 IF (ntype==2) THEN
106 nela=nela+1
107 kk=fac4(1,j)
108 kk=itabinv(ixs(1+kk,ii))
109 elema(1,nela)=kk
110 kk=fac4(2,j)
111 kk=itabinv(ixs(1+kk,ii))
112 elema(3,nela)=kk
113 kk=fac4(3,j)
114 kk=itabinv(ixs(1+kk,ii))
115 elema(2,nela)=kk
116 tagela(nela)=-i
117 ELSEIF (ntype==3) THEN
118 nela=nela+1
119 kk=fac6(1,j)
120 kk=itabinv(ixs(1+kk,ii))
121 elema(1,nela)=kk
122 kk=fac6(2,j)
123 kk=itabinv(ixs(1+kk,ii))
124 elema(3,nela)=kk
125 kk=fac6(3,j)
126 kk=itabinv(ixs(1+kk,ii))
127 elema(2,nela)=kk
128 tagela(nela)=-i
129
130 IF(nod6(j)==4) THEN
131 nela=nela+1
132 kk=fac6(1,j)
133 kk=itabinv(ixs(1+kk,ii))
134 elema(1,nela)=kk
135 kk=fac6(3,j)
136 kk=itabinv(ixs(1+kk,ii))
137 elema(3,nela)=kk
138 kk=fac6(4,j)
139 kk=itabinv(ixs(1+kk,ii))
140 elema(2,nela)=kk
141 tagela(nela)=-i
142 ENDIF
143 ELSEIF (ntype==4) THEN
144 nela=nela+1
145 kk=fac5(1,j)
146 kk=itabinv(ixs(1+kk,ii))
147 elema(1,nela)=kk
148 kk=fac5(2,j)
149 kk=itabinv(ixs(1+kk,ii))
150 elema(3,nela)=kk
151 kk=fac5(3,j)
152 kk=itabinv(ixs(1+kk,ii))
153 elema(2,nela)=kk
154 tagela(nela)=-i
155
156 IF(nod5(j)==4) THEN
157 nela=nela+1
158 kk=fac5(1,j)
159 kk=itabinv(ixs(1+kk,ii))
160 elema(1,nela)=kk
161 kk=fac5(3,j)
162 kk=itabinv(ixs(1+kk,ii))
163 elema(3,nela)=kk
164 kk=fac5(4,j)
165 kk=itabinv(ixs(1+kk,ii))
166 elema(2,nela)=kk
167 tagela(nela)=-i
168 ENDIF
169 ELSEIF (ntype==1) THEN
170 nela=nela+1
171 kk=fac8(1,j)
172 kk=itabinv(ixs(1+kk,ii))
173 elema(1,nela)=kk
174 kk=fac8(2,j)
175 kk=itabinv(ixs(1+kk,ii))
176 elema(3,nela)=kk
177 kk=fac8(3,j)
178 kk=itabinv(ixs(1+kk,ii))
179 elema(2,nela)=kk
180 tagela(nela)=-i
181
182 nela=nela+1
183 kk=fac8(1,j)
184 kk=itabinv(ixs(1+kk,ii))
185 elema(1,nela)=kk
186 kk=fac8(3,j)
187 kk=itabinv(ixs(1+kk,ii))
188 elema(3,nela)=kk
189 kk=fac8(4,j)
190 kk=itabinv(ixs(1+kk,ii))
191 elema(2,nela)=kk
192 tagela(nela)=-i
193 ENDIF
194 ENDIF
195 ENDDO
196
197 DO j=1,8
198 jj=ixs(1+j,ii)
199 brna(j,i)=itabinv(jj)
200 ENDDO
201 ENDDO
202
203 RETURN