42
43
44
46 USE mat_elem_mod
47 USE elbufdef_mod
49
50
51
52#include "implicit_f.inc"
53
54
55
56#include "mvsiz_p.inc"
57#include "com01_c.inc"
58#include "com04_c.inc"
59#include "param_c.inc"
60#include "scr19_c.inc"
61
62
63
64
65 INTEGER IPARG(NPARG,*),IXS(NIXS,*),IPARTS(*),
66 . IXS10(6,*) ,TAG_SKINS6(*) ,NSKIN , NPF(*),H3D_PART(*),
67 . IS_WRITTEN_SKIN(*)
68 TYPE (ELBUF_STRUCT_), DIMENSION(NGROUP), TARGET :: ELBUF_TAB
69 my_real,
INTENT(IN),
TARGET :: tf(*)
70 my_real,
INTENT(IN),
TARGET :: t6gps(6,*),x(3,*)
71 my_real,
INTENT(OUT),
TARGET :: skin_scalar(*)
72 CHARACTER(LEN=NCHARLINE100):: KEYWORD
73 TYPE (MATPARAM_STRUCT_) ,DIMENSION(NUMMAT) ,INTENT(IN) :: MAT_PARAM
74
75
76
77 INTEGER I,ISOLNOD,ICS,NG,N,J
78 INTEGER
79 . MLW ,NEL ,NFT ,IAD ,ITY ,
80 . NPT ,JALE ,ISMSTR ,JEUL ,JTUR ,
81 . JTHE ,JLAG ,JMULT ,JHBE ,JIVF ,
82 . NVAUX ,JPOR ,KCVT ,JCLOSE ,JPLASOL ,
83 . IREP ,IINT ,IGTYP ,ISRAT ,ISROT ,
84 . ICSEN ,ISORTH ,ISORTHG ,IFAILURE,JSMS ,
85 . NN,NN1,N1,IOK_PART(MVSIZ),IS_WRITTEN_VALUE(MVSIZ)
86 INTEGER NC(10,MVSIZ),PWR(7),LL,IXSK(5,6*MVSIZ)
87 INTEGER FACES(4,6),NS(4),JJ,II,K1,K2,T3(3),T6(6),TIA4S(3,4)
88 INTEGER IFUNC(MAXFUNC),IDEB
89 INTEGER NPAR,NFUNC,MX,NSK,,IR,IS,IT,NFAIL,IFAIL,NSKI,NIPAR
90 my_real evar(3,mvsiz),value(mvsiz)
91 TYPE(BUF_LAY_) ,POINTER :: BUFLY
92 TYPE(BUF_FAIL_) ,POINTER :: FBUF
93 DATA pwr/1,2,4,8,16,32,64/
94 DATA faces/4,3,2,1,
95 . 5,6,7,8,
96 . 1,2,6,5,
97 . 3,4,8,7,
98 . 2,3,7,6,
99 . 1,5,8,4/
100 DATA tia4s/3,5,6,
101 . 2,4,5,
102 . 1,6,4,
103 . 4,6,5/
104
105
106
107
108
109
110
111
112
113
114 DO ng=1,ngroup
116 2 mlw ,nel ,nft ,iad ,ity ,
117 3 npt ,jale ,ismstr ,jeul ,jtur ,
118 4 jthe ,jlag ,jmult ,jhbe ,jivf ,
119 5 nvaux ,jpor ,kcvt ,jclose ,jplasol ,
120 6 irep ,iint ,igtyp ,israt ,isrot ,
121 7 icsen ,isorth ,isorthg ,ifailure,jsms )
122
123 IF(mlw == 13 .OR. mlw == 0.OR.ity /= 1) cycle
124
125 IF (igtyp==6 .OR. igtyp==14 ) THEN
126 isolnod = iparg(28,ng)
127 ics = iparg
128 nsk = 0
129 iok_part(1:nel) = 0
130 IF(isolnod == 4)THEN
131 DO i=1,nel
132
133 nc(1,i)=ixs(2,n)
134 nc(2,i)=ixs(4,n)
135 nc(3,i)=ixs(7,n)
136 nc(4,i)=ixs(6,n)
137 ENDDO
138
139 DO i=1,nel
140 n = i + nft
141 ll=tag_skins6(n)
142 jj = 5
143 IF(mod(ll,pwr(jj+1))/pwr(jj) == 0) THEN
144
145 nsk = nsk + 1
146 ixsk(1,nsk) = iparts(n)
147 ixsk(2,nsk) = nc(3,i)
148 ixsk(3,nsk) = nc(2,i)
149 ixsk(4,nsk) = nc(1,i)
150 ixsk(5,nsk) = ixsk(4,nsk)
151 END IF
152
153 jj = 4
154 IF(mod(ll,pwr(jj+1))/pwr(jj) == 0) THEN
155 nsk = nsk + 1
156 ixsk(1,nsk) = iparts(n)
157 ixsk(2,nsk) = nc(2,i)
158 ixsk(3,nsk) = nc(3,i)
159 ixsk(4,nsk) = nc(4,i)
160 ixsk(5,nsk) = ixsk(4,nsk)
161 END IF
162
163 jj = 3
164 IF(mod(ll,pwr(jj+1))/pwr(jj) == 0) THEN
165 nsk = nsk + 1
166 ixsk(1,nsk) = iparts(n)
167 ixsk(2,nsk) = nc(1,i)
168 ixsk(3,nsk) = nc(4,i)
169 ixsk(4,nsk) = nc(3,i)
170 ixsk(5,nsk) = ixsk(4,nsk)
171 END IF
172
173 jj = 6
174 IF(mod(ll,pwr(jj+1))/pwr(jj) == 0) THEN
175 nsk = nsk + 1
176 ixsk(1,nsk) = iparts(n)
177 ixsk(2,nsk) = nc(1,i)
178 ixsk(3,nsk) = nc(2,i)
179 ixsk(4,nsk) = nc(4,i)
180 ixsk(5,nsk) = ixsk(4,nsk)
181 END IF
182 ENDDO
183 ELSEIF(isolnod == 6)THEN
184 ELSEIF(isolnod == 10)THEN
185 DO i=1,nel
186 n = i + nft
187 nc(1,i)=ixs(2,n)
188 nc(2,i)=ixs(4,n)
189 nc(3,i)=ixs(7,n)
190 nc(4,i)=ixs(6,n)
191 nn1 = n - numels8
192 nc(5:10,i) = ixs10(1:6,nn1)
193 ENDDO
194
195 DO i=1,nel
196 n = i + nft
197 ll=tag_skins6(n)
198
199 jj = 5
200 IF(mod(ll,pwr(jj+1))/pwr(jj) == 0) THEN
201 t6(1:3) = nc(1:3,i)
202 t6(4:6) = nc(5:7,i)
203 DO j=1,4
204 nsk = nsk + 1
205 ixsk(1,nsk) = iparts(n)
206 t3(1:3) = t6(tia4s(1:3,j))
207 ixsk(2:4,nsk) = t3(1:3)
208 ixsk(5,nsk) = ixsk(4,nsk)
209 END DO
210 END IF
211
212 jj = 4
213 IF(mod(ll,pwr(jj+1))/pwr(jj) == 0) THEN
214 t6(1:3) = nc(2:4,i)
215 t6(4) = nc(6,i)
216 t6(5) = nc(10,i)
217 t6(6) = nc(9,i)
218 DO j=1,4
219 nsk = nsk + 1
220 ixsk(1,nsk) = h3d_part(iparts(n))
221 t3(1:3) = t6(tia4s(1:3,j))
222 ixsk(2:4,nsk) = t3(1:3)
223 ixsk(5,nsk) = ixsk(4,nsk)
224 END DO
225 END IF
226
227 jj = 3
228 IF(mod(ll,pwr(jj+1))/pwr(jj) == 0) THEN
229 t6(1) = nc(3,i)
230 t6(2) = nc(1,i)
231 t6(3) = nc(4,i)
232 t6(4) = nc(7,i)
233 t6(5) = nc(8,i)
234 t6(6) = nc(10,i)
235 DO j=1,4
236 nsk = nsk + 1
237 ixsk(1,nsk) = iparts(n)
238 t3(1:3) = t6(tia4s(1:3,j))
239 ixsk(2:4,nsk) = t3(1:3)
240 ixsk(5,nsk) = ixsk(4,nsk)
241 END DO
242 END IF
243
244 jj = 6
245 IF(mod(ll,pwr(jj+1))/pwr(jj) == 0) THEN
246 t6(1:2) = nc(1:2,i)
247 t6(3) = nc(4,i)
248 t6(4) = nc(5,i)
249 t6(5) = nc(9,i)
250 t6(6) = nc(8,i)
251 DO j=1,4
252 nsk = nsk + 1
253 ixsk(1,nsk) = iparts(n)
254 t3(1:3) = t6(tia4s(1:3,j))
255 ixsk(2:4,nsk) = t3(1:3)
256 ixsk(5,nsk) = ixsk(4,nsk)
257 END DO
258 END IF
259 ENDDO
260
261 ELSE
262 DO i=1,nel
263 n = i + nft
264 nc(1:8,i) = ixs(2:9,n)
265 ll=tag_skins6(n)
266
267 DO jj=1,6
268 IF(mod(ll,pwr(jj+1))/pwr(jj) /= 0)cycle
269 DO ii=1,4
270 ns(ii)=nc(faces(ii,jj),i)
271 END DO
272
273 DO k1=1,3
274 DO k2=k1+1,4
275 IF(ns(k2)==ns(k1))ns(k2)=0
276 END DO
277 END DO
278 nn=0
279 DO k1=1,4
280 n1=ns(k1)
281 IF(n1/=0)THEN
282 nn=nn+1
283 ns(nn)= n1
284 END IF
285 END DO
286 IF (nn>2) THEN
287 nsk = nsk + 1
288 ixsk(1,nsk) = iparts(n)
289 ixsk(2:4,nsk) = ns(1:3)
290 IF (nn > 3) THEN
291 ixsk(5,nsk) = ns(4)
292 ELSE
293 ixsk(5,nsk) = ixsk(4,nsk)
294 END IF
295 END IF
296 ENDDO
297 ENDDO
298 ENDIF
299
300 IF (nsk>0) THEN
301 il = 1
302 ir = 1
303 is = 1
304 it = 1
305 bufly => elbuf_tab(ng)%BUFLY(il)
306 nfail = elbuf_tab(ng)%BUFLY(il)%NFAIL
307 fbuf => bufly%FAIL(ir,is,it)
308 mx = ixs(1,1+nft)
309 ideb = 0
310 DO ii=1,nsk,mvsiz
311 nski =
min(nsk-ideb,mvsiz)
312 n = 1+ideb
314 DO i=1,nski
315 value(i) = zero
316 is_written_value(i) = 0
317 iok_part(i) = h3d_part(ixsk(1,i+ideb))
318 ENDDO
319
320 IF (keyword == 'FLDZ/OUTER') THEN
321
322 is_written_value(1:nski) = 1
323 DO ifail=1,nfail
324 IF (fbuf%FLOC(ifail)%ILAWF == 7) THEN
325 npar = mat_param(mx)%FAIL(ifail)%NUPARAM
326 nfunc = mat_param(mx)%FAIL(ifail)%NFUNC
327 nipar = mat_param(mx)%FAIL(ifail)%NIPARAM
328 DO i=1,nfunc
329 ifunc(i) = mat_param(mx)%FAIL(ifail)%IFUNC(i)
330 END DO
332 1 nski ,npar ,nfunc ,ifunc ,
333 2 npf ,tf ,mat_param(mx)%FAIL(ifail)%UPARAM,
334 3 evar ,VALUE ,nipar ,mat_param(mx)%FAIL(ifail)%IPARAM,
335 4 bufly%LBUF(ir,is,it)%PLA)
336
337 ENDIF
338 ENDDO
339 DO i=1,nski
340 skin_scalar(nskin+i) = value(i)
341 IF(iok_part(i) == 1 ) is_written_skin(nskin+i) = is_written_value(i)
342 END DO
343
344 ELSEIF (keyword == 'FLDF/OUTER') THEN
345
346 is_written_value(1:nski) = 1
347 DO ifail=1,nfail
348 IF (fbuf%FLOC(ifail)%ILAWF == 7) THEN
349 npar = mat_param(mx)%FAIL(ifail)%NUPARAM
350 nipar = mat_param(mx)%FAIL(ifail)%NIPARAM
351 nfunc = mat_param(mx)%FAIL(ifail)%NFUNC
352 DO i=1,nfunc
353 ifunc(i) = mat_param(mx)%FAIL(ifail)%IFUNC(i)
354 END DO
356 1 nski ,npar ,nfunc ,ifunc ,
357 2 npf ,tf ,mat_param(mx)%FAIL(ifail)%UPARAM,
358 3 evar ,VALUE ,nipar ,mat_param(mx)%FAIL(ifail)%IPARAM,
359 4 bufly%LBUF(ir,is,it)%PLA)
360
361 ENDIF
362 ENDDO
363 DO i=1,nski
364 skin_scalar(nskin+i) = value(i)
365 IF(iok_part(i) == 1 ) is_written_skin(nskin+i) = is_written_value(i)
366 END DO
367 END IF
368 nskin = nskin + nski
369 ideb = ideb + nski
370 END DO
371 END IF
372 ENDIF
373 END DO
374
375 RETURN
subroutine tens3dto2d(nel, ixc, x, ten3, ten2)
subroutine idx_fld_sol(nel, nuparam, nfunc, ifunc, npf, tf, uparam, eps3, fld_idx, niparam, iparam, pla)
subroutine dam_fld_sol(nel, nuparam, nfunc, ifunc, npf, tf, uparam, eps3, dam, niparam, iparam, pla)
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)
integer, parameter ncharline100