37
38
39
41 USE elbufdef_mod
43 use element_mod , only : nixs
44
45
46
47#include "implicit_f.inc"
48
49
50
51#include "mvsiz_p.inc"
52#include "com01_c.inc"
53#include "com04_c.inc"
54#include "param_c.inc"
55
56
57
58
59 INTEGER, DIMENSION(NPARG,NGROUP),INTENT(IN):: IPARG
60 INTEGER, DIMENSION(NIXS,NUMELS),INTENT(IN):: IXS
61 INTEGER, DIMENSION(6,NUMELS10),INTENT(IN):: IXS10
62 INTEGER, DIMENSION(NUMELS),INTENT(IN):: TAG_SKINS6
63 my_real,
DIMENSION(NUMSKIN),
INTENT(OUT):: skin_off
64 TYPE (ELBUF_STRUCT_), DIMENSION(NGROUP), TARGET :: ELBUF_TAB
65
66
67
68 INTEGER I,NSKIN,ISOLNOD,ICS,NG,N,J
69 INTEGER
70 . MLW ,NEL ,NFT ,IAD ,ITY ,
71 . NPT ,JALE ,ISMSTR ,JEUL ,JTUR ,
72 . JTHE ,JLAG ,JMULT ,JHBE ,JIVF ,
73 . NVAUX ,JPOR ,KCVT ,JCLOSE ,JPLASOL ,
74 . IREP ,IINT ,IGTYP ,ISRAT ,ISROT ,
75 . ICSEN ,ISORTH ,ISORTHG ,IFAILURE,JSMS ,
76 . NN,N1
77 INTEGER NC(10,MVSIZ),PWR(7),LL
78 INTEGER FACES(4,6),NS(4),JJ,II,K1,K2,TIA4S(3,4)
79 TYPE(G_BUFEL_) ,POINTER :: GBUF
80 DATA pwr/1,2,4,8,16,32,64/
81 DATA faces/4,3,2,1,
82 . 5,6,7,8,
83 . 1,2,6,5,
84 . 3,4,8,7,
85 . 2,3,7,6,
86 . 1,5,8,4/
87 DATA tia4s/3,5,6,
88 . 2,4,5,
89 . 1,6,4,
90 . 4,6,5/
91
92 nskin =0
94 DO ng=1,ngroup
95 isolnod = iparg(28,ng)
96 ics = iparg(17,ng)
98 2 mlw ,nel ,nft ,iad ,ity ,
99 3 npt ,jale ,ismstr ,jeul ,jtur ,
100 4 jthe ,jlag ,jmult ,jhbe ,jivf ,
101 5 nvaux ,jpor ,kcvt ,jclose ,jplasol ,
102 6 irep ,iint ,igtyp ,israt ,isrot ,
103 7 icsen ,isorth ,isorthg ,ifailure,jsms )
104
105 gbuf => elbuf_tab(ng)%GBUF
106 IF(mlw == 13 .OR. mlw == 0) cycle
107
108
109
110
111
112
113
114
115
116
117 IF (ity == 1.AND.(igtyp==20 .OR. igtyp==21 .OR. igtyp==22)) THEN
118
119
120 DO i=1,nel
121 skin_off(nskin+i) = nint(
min(gbuf%OFF(i),one))
122 END DO
123 nskin = nskin + nel
124
125 DO i=1,nel
126 skin_off(nskin+i) = nint(
min(gbuf%OFF(i),one))
127 END DO
128 nskin = nskin + nel
129
130 ENDIF
131 END DO
133
134 nft = nskin
136
137 DO ng=1,ngroup
139 2 mlw ,nel ,nft ,iad ,ity ,
140 3 npt ,jale ,ismstr ,jeul ,jtur ,
141 4 jthe ,jlag ,jmult ,jhbe ,jivf ,
142 5 nvaux ,jpor ,kcvt ,jclose ,jplasol ,
143 6 irep ,iint ,igtyp ,israt ,isrot ,
144 7 icsen ,isorth ,isorthg ,ifailure,jsms )
145
146 gbuf => elbuf_tab(ng)%GBUF
147 IF(mlw == 13 .OR. mlw == 0.OR.ity /= 1) cycle
148
149 IF (igtyp==6 .OR. igtyp==14 ) THEN
150 isolnod = iparg(28,ng)
151 ics = iparg(17,ng)
152 IF(isolnod == 4)THEN
153
154 DO i=1,nel
155 n = i + nft
156 ll=tag_skins6(n)
157 jj = 5
158 IF(mod(ll,pwr(jj+1))/pwr(jj) == 0) THEN
159
160 nskin = nskin + 1
161 skin_off(nskin) = nint(
min(gbuf%OFF(i),one))
162 END IF
163
164 jj = 4
165 IF(mod(ll,pwr(jj+1))/pwr(jj) == 0) THEN
166 nskin = nskin + 1
167 skin_off(nskin) = nint(
min(gbuf%OFF(i),one))
168 END IF
169
170 jj = 3
171 IF(mod(ll,pwr(jj+1))/pwr(jj) == 0) THEN
172 nskin = nskin + 1
173 skin_off(nskin) = nint(
min(gbuf%OFF(i),one))
174 END IF
175
176 jj = 6
177 IF(mod(ll,pwr(jj+1))/pwr(jj) == 0) THEN
178 nskin = nskin + 1
179 skin_off(nskin) = nint(
min(gbuf%OFF(i),one))
180 END IF
181 ENDDO
182 ELSEIF(isolnod == 6)THEN
183 ELSEIF(isolnod == 10)THEN
184
185 DO i=1,nel
186 n = i + nft
187 ll=tag_skins6(n)
188
189 jj = 5
190 IF(mod(ll,pwr(jj+1))/pwr(jj) == 0) THEN
191 DO j=1,4
192 nskin = nskin + 1
193 skin_off(nskin) = nint(
min(gbuf%OFF(i),one))
194 END DO
195 END IF
196
197 jj = 4
198 IF(mod(ll,pwr(jj+1))/pwr(jj) == 0) THEN
199 DO j=1,4
200 nskin = nskin + 1
201 skin_off(nskin) = nint(
min(gbuf%OFF(i),one))
202 END DO
203 END IF
204
205 jj = 3
206 IF(mod(ll,pwr(jj+1))/pwr(jj) == 0) THEN
207 DO j=1,4
208 nskin = nskin + 1
209 skin_off(nskin) = nint(
min(gbuf%OFF(i),one))
210 END DO
211 END IF
212
213 jj = 6
214 IF(mod(ll,pwr(jj+1))/pwr(jj) == 0) THEN
215 DO j=1,4
216 nskin = nskin + 1
217 skin_off(nskin) = nint(
min(gbuf%OFF(i),one))
218 END DO
219 END IF
220 ENDDO
221
222 ELSE
223 DO i=1,nel
224 n = i + nft
225 nc(1:8,i) = ixs(2:9,n)
226 ll=tag_skins6(n)
227
228 DO jj=1,6
229 IF(mod(ll,pwr(jj+1))/pwr(jj) /= 0)cycle
230 DO ii=1,4
231 ns(ii)=nc(faces(ii,jj),i)
232 END DO
233
234 DO k1=1,3
235 DO k2=k1+1,4
236 IF(ns(k2)==ns(k1))ns(k2)=0
237 END DO
238 END DO
239 nn=0
240 DO k1=1,4
241 n1=ns(k1)
242 IF(n1/=0)THEN
243 nn=nn+1
244 ns(nn)= n1
245 END IF
246 END DO
247 IF (nn>2) THEN
248 nskin = nskin + 1
249 skin_off(nskin) = nint(
min(gbuf%OFF(i),one))
250 END IF
251 ENDDO
252 ENDDO
253 ENDIF
254 ENDIF
255 END DO
256 END IF
257
258 nft = nskin
260 DO i=nft+1,numskin
261 skin_off(i) = one
262 END DO
263 END IF
264
265 RETURN
subroutine initbuf(iparg, ng, mtn, llt, nft, iad, ity, npt, jale, ismstr, jeul, jtur, jthe, jlag, jmult, jhbe, jivf, mid, jpor, jcvt, jclose, jpla, irep, iint, igtyp, israt, isrot, icsen, isorth, isorthg, ifailure, jsms)