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