56
57
58
60 USE mat_elem_mod
64 USE multi_fvm_mod
67 USE elbufdef_mod
68 USE multimat_param_mod , ONLY : m51_n0phas, m51_nvphas
69 USE matparam_def_mod , ONLY : matparam_struct_
70 USE my_alloc_mod
71 use element_mod , only : nixs
72
73
74
75#include "implicit_f.inc"
76
77
78
79#include "vect01_c.inc"
80#include "mvsiz_p.inc"
81#include "com01_c.inc"
82#include "com04_c.inc"
83#include "sphcom.inc"
84#include "scr14_c.inc"
85#include "scr17_c.inc"
86#include "scr25_c.inc"
87#include "param_c.inc"
88#include "task_c.inc"
89#include "spmd_c.inc"
90#include "inter22.inc"
91#include "tabsiz_c.inc"
92
93
94
95 my_real func(*), mass(*) ,pm(npropm,nummat), geo(npropg,numgeo),
96 . ehour(*),anim(*), spbuf(*),x(3,numnod),v(3,numnod), w(3,numnod),bufmat(*)
97 TYPE(FANI_CELL_), INTENT(IN) :: FANI_CELL
98 INTEGER IPARG(NPARG,*),EL2FA(*),IXS(NIXS,NUMELS),IFUNC,NBF,ISPH3D,
99 . NBPART,IADG(NSPMD,*),IPM(,NUMMAT),
100 . IPART(,*),IPARTSP(*),BUF,IGEO(NPROPGI,NUMGEO)
101 INTEGER, INTENT(IN) :: ITHERM
102 TYPE (ELBUF_STRUCT_), DIMENSION(NGROUP), TARGET :: ELBUF_TAB
103 TYPE(MULTI_FVM_STRUCT), INTENT(IN) :: MULTI_FVM
104 TYPE(t_ale_connectivity), INTENT(IN) :: ALE_CONNECTIVITY
105 TYPE (MATPARAM_STRUCT_) ,DIMENSION(NUMMAT) ,INTENT(IN) ::
106
107
108
109 INTEGER I,J,L,N, NG, NEL, MLW,
110 . NN, K1, K2,JTURB,MT, IALEL,IRUPT,
111 . NN1,NN2,NN3,NN4,
112 . OFFSET,K,II, IUS, NUVAR,TSHELL,TSH_ORT,
113 . ISOLNOD, IPRT, NPTR, NPTS, NPTT, NLAY, IPT,
114 . IL,IS,IR,IT, NPTG, ICSIG,
115 . PID, NPG_PLANE,NFAIL,NUMLAY,IJK,IIR,IOFF,IALEFVM_FLG,
116 . NERCVOIS(*),NESDVOIS(*),LERCVOIS(*),LESDVOIS(*),
117 . IDEB, IPOS, ITRIMAT,IVISC,JJ(6),IFRAC,IMAT,IADBUF,
118 . NUPARAM,ISUBMAT,IU(4),NFRAC,IS_ALE,IS_EULER,
119 . IMAT_TILLOTSON,NTILLOTSON,FAC,NVAREOS,IEOS
120 my_real evar(mvsiz), user(mvsiz),
121 . p, vonm2, vonm, s1, s2, s3, VALUE,values(mvsiz),gama(6),
122 . t11,t21,t31,t12,t22,t32,t13,t23,t33,
123 . phi,teta,psi,dammax,s11,s22,s33,s4,s5,s6,
124 . sig1(mvsiz),sig2(mvsiz),sig3(mvsiz),sig4(mvsiz),sig5(mvsiz),
125 . sig6(mvsiz),ff0,gg0,hh0,ll0,mm0,nn0,crit,vel(0:4),vfrac(mvsiz,21),tmp(3,8)
126 REAL R4
127 REAL,DIMENSION(:),ALLOCATABLE::WAL
128 TYPE(G_BUFEL_) ,POINTER :: GBUF
129 TYPE(L_BUFEL_) ,POINTER :: LBUF,LBUF1,LBUF2
130 TYPE(BUF_MAT_) ,POINTER :: MBUF
131 TYPE(BUF_EOS_) ,POINTER :: EBUF
132
133 my_real,
DIMENSION(:),
POINTER :: uvarf, damf,dfmax,tdele
134 my_real,
DIMENSION(:) ,
POINTER :: uparam
135 TARGET :: bufmat
137 INTEGER MID,ILAY
144 LOGICAL detected
145
146 CALL my_alloc
147 nn1 = 1
148 nn2 = 1
149 nn3 = nn2 + numels
150 nn4 = nn3 + isph3d*(numsph+maxpjet)
151 gama = zero
152 ioff = 0
153
154
155
156
157
158 IF(ifunc==4892)THEN
160 endif
161
162
163
164 DO ng=1,ngroup
166 2 mlw ,nel ,nft ,iad ,ity ,
167 3 npt ,jale ,ismstr ,jeul ,jtur ,
168 4 jthe ,jlag ,jmult ,jhbe ,jivf ,
169 5 nvaux ,jpor ,jcvt ,jclose ,jplasol ,
170 6 irep ,iint ,igtyp ,israt ,isrot ,
171 7 icsen ,isorth ,isorthg ,ifailure,jsms )
172 IF (mlw /= 13) THEN
173 DO offset = 0,nel-1,nvsiz
174 nft = iparg(3,ng) + offset
175 isolnod = iparg(28,ng)
176 ivisc = iparg(61,ng)
177 lft=1
178 llt=
min(nvsiz,nel-offset)
179 is_ale=iparg(7,ng)
180 is_euler=iparg(11,ng)
181
182 DO i=1,6
183 jj(i) = nel*(i-1)
184 ENDDO
185
186
187 IF (ity == 1) THEN
188
189 IF (jcvt==1.AND.isorth/=0) jcvt=2
190
191 gbuf => elbuf_tab(ng)%GBUF
192 mbuf => elbuf_tab(ng)%BUFLY(1)%MAT(1,1,1)
193 lbuf => elbuf_tab(ng)%BUFLY(1)%LBUF(1,1,1)
194 nlay = elbuf_tab(ng)%NLAY
195 nptr = elbuf_tab(ng)%NPTR
196 npts = elbuf_tab(ng)%NPTS
197 nptt = elbuf_tab(ng)%NPTT
198 nptg = nptt*npts*nptr*nlay
199 tshell = 0
200 tsh_ort = 0
201 IF (igtyp==20 .OR. igtyp==21 .OR. igtyp==22) tshell = 1
202 IF (igtyp==21 .OR. igtyp==22) tsh_ort = 1
203 pid=ixs(10,1 + nft)
204
205 DO i=lft,llt
206 evar(i) = zero
207 sig1(i) = zero
208 sig2(i) = zero
209 sig3(i) = zero
210 sig4(i) = zero
211 sig5(i) = zero
212 sig6(i) = zero
213 ENDDO
214
215 IF (mlw /= 0 .and. mlw /= 13 .and. igtyp /= 0) THEN
216 jturb=iparg(12,ng)*(iparg(7,ng)+iparg(11,ng))
217
218 IF(ifunc == 1 .AND. (mlw /= 12 .AND. mlw /=14 .AND. mlw /= 25))THEN
219 DO i=lft,llt
220 IF (gbuf%G_PLA > 0) THEN
221 evar(i) = gbuf%PLA(i)
222 ENDIF
223 ENDDO
224
225 ELSEIF(ifunc == 2)THEN
226 DO i=lft,llt
227 evar(i) = gbuf%RHO(i)
228 ENDDO
229
230 ELSEIF(ifunc == 3)THEN
231 DO i=lft,llt
232 n = i + nft
233 ialel=iparg(7,ng)+iparg(11,ng)
234 IF (ialel == 0) THEN
235 mt=ixs(1,n)
236 evar(i) = gbuf%EINT(i)/
max(em30,pm(1,mt))
237 ELSE
238 evar(i) = gbuf%EINT(i)/
max(em30,gbuf%RHO(i))
239 ENDIF
240 IF( nfilsol /= 0 .AND. gbuf%G_FILL /= 0 )
241 . evar(i) = evar(i) * gbuf%FILL(i)
242 ENDDO
243
244 ELSEIF (ifunc == 4) THEN
245 IF (jthe /= 0) THEN
246 evar(1:nel) = elbuf_tab(ng)%GBUF%TEMP(1:nel)
247 ELSE
248 evar(1:nel) = zero
249 DO il=1,nlay
250 IF (elbuf_tab(ng)%BUFLY(il)%L_TEMP > 0) THEN
251 DO it=1,elbuf_tab(ng)%BUFLY(il)%NPTT
252 DO is=1,npts
253 DO ir=1,nptr
254 lbuf => elbuf_tab(ng)%BUFLY(il)%LBUF(ir,is,it)
255 evar(1:nel) = evar(1:nel) + lbuf%TEMP(1:nel)/nptg
256 ENDDO
257 ENDDO
258 ENDDO
259 ENDIF
260 ENDDO
261 ENDIF
262
263 ELSEIF(ifunc == 6 .OR. ifunc == 7)THEN
264 DO i=lft,llt
265 n = i + nft
266 s11 = gbuf%SIG(jj(1) + i)
267 s22 = gbuf%SIG(jj(2) + i)
268 s33 = gbuf%SIG(jj(3) + i)
269 s4 = gbuf%SIG(jj(4) + i)
270 s5 = gbuf%SIG(jj(5) + i)
271 s6 = gbuf%SIG(jj(6) + i)
272 IF (ivisc > 0) THEN
273 s11 = s11 + lbuf%VISC(jj(1) + i)
274 s22 = s22 + lbuf%VISC(jj(2) + i)
275 s33 = s33 + lbuf%VISC(jj(3) + i)
276 s4 = s4 + lbuf%VISC(jj(4) + i)
277 s5 = s5 + lbuf%VISC(jj(5) + i)
278 s6 = s6 + lbuf%VISC(jj(6) + i)
279 ENDIF
280 p = - (s11 + s22 + s33 ) * third
281 VALUE = p
282 IF (ifunc == 7) THEN
283 s1= s11 + p
284 s2= s22 + p
285 s3= s33 + p
286 vonm2 = three*(s4*s4 + s5*s5 + s6*s6 +
287 . half*(s1*s1 + s2*s2 + s3*s3))
288 vonm = sqrt(vonm2)
289 VALUE = vonm
290 IF( nfilsol /= 0 .AND. gbuf%G_FILL /= 0 )
291 . VALUE = VALUE * gbuf%FILL(i)
292 ENDIF
293 evar(i) = VALUE
294 ENDDO
295
296
297 ELSEIF(ifunc == 8 .and. jturb /= 0)THEN
298
299 DO i=lft,llt
300 evar(i) = gbuf%RK(i)
301 ENDDO
302
303 ELSEIF(ifunc == 9)THEN
304
305 DO i=lft,llt
306 n = i + nft
307 IF((mlw == 6 .OR. mlw == 17).AND.jturb/=0)THEN
308 mt=ixs(1,n)
309 evar(i) = pm(81,mt) * gbuf%RK(i)**2
310 . /
max(em15,gbuf%RE(i))
311 ELSEIF(mlw == 46 .OR. mlw == 47)THEN
312 evar(i) = mbuf%VAR(i)
313 ELSE
314
315 ENDIF
316 ENDDO
317
318 ELSEIF(ifunc == 10)THEN
319
320 DO i=lft,llt
321 evar(i) = fani_cell%VORT_X(i+nft)
322 ENDDO
323
324
325 ELSEIF((ifunc == 11.OR.ifunc == 12.OR.ifunc == 13) .AND.mlw == 24)THEN
326
327 DO i=lft,llt
328 evar(i) = lbuf%DAM(jj(ifunc-10) + i)
329 ENDDO
330
331
332 ELSEIF(ifunc>=14.AND.ifunc<=19)THEN
333 DO i=lft,llt
334 evar(i) = gbuf%SIG(jj(ifunc - 13) + i)
335 IF( nfilsol /= 0 .AND. gbuf%G_FILL /= 0 )
336 . evar(i) = evar(i) * gbuf%FILL(i)
337 ENDDO
338 IF(ivisc > 0) THEN
339 DO i=lft,llt
340 evar(i) = evar(i) + lbuf%VISC(jj(ifunc - 13)+i)
341 ENDDO
342 ENDIF
343
344 ELSEIF(ifunc>=20 .AND. ifunc<=24) THEN
345 IF(mlw >= 28)THEN
346
347 ius = ifunc - 20
348 DO i=lft,llt
349 user(i) = zero
350 ENDDO
351 IF (isolnod == 8 .AND. mlw == 59)
THEN ! exception
for connect rupture
352
353 mt = ixs(1,nft+1)
354 nfail = elbuf_tab(ng)%BUFLY(1)%NFAIL
355 IF (nfail > 0) THEN
356 irupt = mat_param(mt)%FAIL(1)%IRUPT
357 IF (irupt == 20) THEN
358 nptg = 4
359 DO ir=1,nfail
360 DO ipt = 1,nptg
361 uvarf =>
362 . elbuf_tab(ng)%BUFLY(1)%FAIL(ipt,1,1)%FLOC(ir)%VAR
363 DO i=lft,llt
364 user(i) =
max(user(i),uvarf(ius*nel + i))
365 ENDDO
366 ENDDO
367 ENDDO
368 ENDIF
369 ENDIF
370 ELSE
371 DO il=1,nlay
372 DO is=1,npts
373 DO it=1,nptt
374 DO ir=1,nptr
375 mbuf => elbuf_tab(ng)%BUFLY(il)%MAT(ir,is,it)
376 DO i=lft,llt
377 n = i + nft
378 mt=ixs(1,n)
379 nuvar = ipm(8,mt)
380 IF (nuvar > ius) user(i) = user(i)
381 . + mbuf%VAR(i+ius*nel)/nptg
382 ENDDO
383 ENDDO
384 ENDDO
385 ENDDO
386 ENDDO
387 ENDIF
388 DO i=lft,llt
389 n = i + nft
390 mt=ixs(1,n)
391 nuvar = ipm(8,mt)
392 IF (isolnod == 8 .AND. mlw == 59) THEN
393 evar(i) = user(i)
394 ELSEIF (nuvar > ius) THEN
395 evar(i) = user(i)
396 ELSE
397 evar(i) = zero
398 ENDIF
399 ENDDO
400 endif
401
402 ELSEIF(ifunc == 25)THEN
403 DO i=lft,llt
404 n = i + nft
405 evar(i) = ehour(n)
406 ENDDO
407
408 ELSEIF(ifunc == 26) THEN
409 IF (gbuf%G_EPSD > 0) THEN
410 DO i=lft,llt
411 evar(i) = gbuf%EPSD(i)
412 ENDDO
413 ELSE
414 DO i=lft,llt
415 evar(i) = zero
416 ENDDO
417 ENDIF
418
419 ELSEIF(ifunc == 28 .AND. int22>0) THEN
420 DO i=lft,llt
421 evar(i) = int22_fcell_anim(i+nft)
422 ENDDO
423
424 ELSEIF(ifunc>=27.AND.ifunc<=81.AND.mlw>=28.AND.mlw/=51) THEN
425
426
427 ius = ifunc - 22
428 DO i=lft,llt
429 user(i) = zero
430 ENDDO
431 IF (isolnod == 8 .AND. mlw == 59) THEN
432
433 mt = ixs(1,nft+1)
434 nfail = elbuf_tab(ng)%BUFLY(1)%NFAIL
435 IF (nfail > 0) THEN
436 irupt = mat_param(mt)%FAIL(1)%IRUPT
437 IF (irupt == 20) THEN
438 nptg = 4
439 DO ir=1,nfail
440 DO ipt = 1,nptg
441 uvarf =>
442 . elbuf_tab(ng)%BUFLY(1)%FAIL(ipt,1,1)%FLOC(ir)%VAR
443 DO i=lft,llt
444 user(i) =
max(user(i),uvarf(ius*nel + i))
445 ENDDO
446 ENDDO
447 ENDDO
448 ENDIF
449 ENDIF
450 ELSE
451 DO il=1,nlay
452 DO is=1,npts
453 DO it=1,nptt
454 DO ir=1,nptr
455 mbuf => elbuf_tab(ng)%BUFLY(il)%MAT(ir,is,it)
456 DO i=lft,llt
457 n = i + nft
458 mt=ixs(1,n)
459 nuvar = ipm(8,mt)
460 IF (nuvar > ius) user(i) = user(i)
461 . + mbuf%VAR(i+ius*nel)/nptg
462 ENDDO
463 ENDDO
464 ENDDO
465 ENDDO
466 ENDDO
467 ENDIF
468 DO i=lft,llt
469 n = i + nft
470 mt=ixs(1,n)
471 nuvar = ipm(8,mt)
472 IF (isolnod == 8 .AND. mlw == 59) THEN
473 evar(i) = user(i)
474 ELSEIF (nuvar > ius) THEN
475 evar(i)= user(i)
476 ELSE
477 evar(i) = zero
478 ENDIF
479 ENDDO
480
481 ELSEIF(ifunc>=283.AND.ifunc<=286) THEN
482
483
484
485 user(lft:llt) = zero
486
487 IF(mlw==37)THEN
488 ius=3+(ifunc-283)
489 k=ius*nel
490 ELSEIF(mlw==51)THEN
491 imat = ixs(1,nft+1)
492 iadbuf = ipm(7,imat)
493 nuparam= ipm(9,imat)
494 uparam => bufmat(iadbuf:iadbuf+nuparam-1)
495 isubmat = (ifunc-282)
496
497 ius=m51_n0phas+(isubmat-1)*m51_nvphas
498 llt = iparg(2,ng)
499 ipos = 1
500 k = llt * ((ius )+ipos-1)
501
502
503 ENDIF
504 ifrac=ifunc-283+1
505
506
507 IF (mlw==51 .OR. (mlw==37.AND.ifrac<=2))THEN
508 DO il=1,nlay
509 DO is=1,npts
510 DO it=1,nptt
511 DO ir=1,nptr
512 mbuf => elbuf_tab(ng)%BUFLY(il)%MAT(ir,is,it)
513 DO i=lft,llt
514 user(i) = mbuf%VAR(k+i)
515 ENDDO
516 ENDDO
517 ENDDO
518 ENDDO
519 ENDDO
520 ELSEIF (mlw == 151) THEN
521 IF(ifrac<=nlay)THEN
522 lbuf => elbuf_tab(ng)%BUFLY(ifunc-282)%LBUF(1,1,1)
523 DO i=1,nel
524 user(i) = lbuf%VOL(i) / gbuf%VOL(i)
525 ENDDO
526 ELSE
527 user(lft:llt) = zero
528 ENDIF
529
530
531 ELSE
532 user(lft:llt) = zero
533 ENDIF
534
535 evar(lft:llt) = user(lft:llt)
536
537
538 ELSEIF(ifunc>=82.AND.ifunc<=281.AND.mlw == 25) THEN
539
540 DO i=lft,llt
541 evar(i) = zero
542 ENDDO
543
544 ius = ifunc - 81
545 IF (isolnod == 16.OR.isolnod == 20.OR.
546 . (isolnod == 8.AND.jhbe == 14).OR.
547 . ((isolnod == 6.OR.isolnod == 8).AND.jhbe == 15))THEN
548 IF (ius <= nptg) THEN
549 DO il=1,nlay
550 IF (elbuf_tab(ng)%BUFLY(il)%L_PLA > 0) THEN
551 DO is=1,npts
552 DO it=1,nptt
553 DO ir=1,nptr
554 lbuf=>elbuf_tab(ng)%BUFLY(il)%LBUF(ir,is,it)
555 DO i=lft,llt
556 evar(i) = evar(i) + lbuf%PLA(i)
557 ENDDO
558 ENDDO
559 ENDDO
560 ENDDO
561 ENDIF
562 ENDDO
563 ENDIF
564 ENDIF
565
566 ELSEIF (ifunc == 282 .AND. mlw == 25) THEN
567
568 DO i=lft,llt
569 evar(i) = zero
570 ENDDO
571 IF( isolnod == 16.OR.isolnod == 20.OR.
572 . (isolnod == 8.AND.jhbe == 14).OR.
573 . ((isolnod == 6 .OR. isolnod == 8).AND.jhbe == 15))THEN
574
575 npg_plane = nptr * npts * nptt
576 DO i=lft,llt
577 DO il=1,nlay
578 VALUE = zero
579 DO j=1,nptr
580 DO k=1,npts
581 DO l=1,nptt
582 lbuf=>elbuf_tab(ng)%BUFLY(il)%LBUF(j,k,l)
583 IF (lbuf%OFF(i) == 0) VALUE = VALUE + one
584 IF(int(VALUE)>=npg_plane) evar(i)=evar(i)+one
585 ENDDO
586 ENDDO
587 ENDDO
588 ENDDO
589 ENDDO
590 ENDIF
591
592 ELSEIF (ifunc >= 287 .AND. ifunc < 887)THEN
593
594 numlay = ((ifunc - 287)/3)+1
595 IF(numlay <= nlay)THEN
596 lbuf => elbuf_tab(ng)%BUFLY(numlay)%LBUF(1,1,1)
597 DO i=lft,llt
598 n = i + nft
599 IF(isorth ==1) THEN
600
601 IF(igtyp == 22) THEN
602 gama(1)= lbuf%GAMA(jj(1)+i)
603 gama(2)= lbuf%GAMA(jj(2)+i)
604 gama(3)= zero
605 gama(4)= zero
606 gama(5)= zero
607 gama(6)= zero
608 ELSEIF(igtyp == 21) THEN
609 gama(1)= gbuf%GAMA(jj(1)+i)
610 gama(2)= gbuf%GAMA(jj(2)+i)
611 gama(3)= zero
612 gama(4)= zero
613 gama(5)= zero
614 gama(6)= zero
615 ELSE
616 gama(1) = gbuf%GAMA(jj(1)+i)
617 gama(2) = gbuf%GAMA(jj(2)+i)
618 gama(3) = gbuf%GAMA(jj(3)+i)
619 gama(4) = gbuf%GAMA(jj(4)+i)
620 gama(5) = gbuf%GAMA(jj(5)+i)
621 gama(6) = gbuf%GAMA(jj(6)+i)
622 ENDIF
624 . gama,jhbe,igtyp,iparg(17,ng) )
625
626 t11=gama(1)
627 t21=gama(2)
628 t31=gama(3)
629 t12=gama(4)
630 t22=gama(5)
631 t32=gama(6)
632 t13=t21*t32-t31*t22
633 t23=t31*t12-t11*t32
634 t33=t11*t22-t21*t12
635 IF (abs(t31) - one < em20)THEN
636
637 teta = -asin(t31)
638 my_one = one
639 my_value =
max(abs(cos(teta)),em20) * sign(my_one,cos(teta))
640 IF(t32==zero.AND.t33==zero) THEN
641 psi = 0
642 ELSE
643 psi = atan2( t32/my_value,t33/my_value )
644 ENDIF
645 IF(t21==zero.AND.t11==zero) THEN
646 phi = 0
647 ELSE
648 phi = atan2(t21/my_value,t11/my_value)
649 ENDIF
650 ELSE
651 phi = zero
652 IF(t31 == -one)THEN
653 teta = pi / two
654 psi = atan2(t12,t13)
655 ELSE
656 teta = - pi / two
657 psi = atan2(-t12,-t13)
658 ENDIF
659 ENDIF
660 IF (mod(ifunc - 287,3) == 0)
661 . evar(i) = psi*hundred80/pi
662 IF (mod(ifunc - 287,3) == 1)
663 . evar(i) = teta*hundred80/pi
664 IF (mod(ifunc - 287,3) == 2)
665 . evar(i) = phi*hundred80/pi
666 ELSE
667 evar(i) = zero
668 ENDIF
669 ENDDO
670 ELSE
671 DO i=lft,llt
672 evar(i) = zero
673 ENDDO
674 ENDIF
675
676 ELSEIF (ifunc == 887 )THEN
677
678 IF(gbuf%G_BFRAC > 0) THEN
679 IF (mlw==151)THEN
680 DO i=lft,llt
681 evar(i)=-ep30
682 DO ifrac=1,nlay
683 evar(i) =
max(evar(i),multi_fvm%BFRAC(ifrac,i+nft))
684 ENDDO
685 ENDDO
686 ELSE
687 evar(lft:llt) = gbuf%BFRAC(lft:llt)
688 ENDIF
689 ELSEIF (mlw == 41) THEN
690 DO i = lft, llt
691 evar(i) = mbuf%VAR(7 * nel + i)
692 ENDDO
693 ELSE
694 evar(lft:llt) = zero
695 ENDIF
696
697 ELSEIF(ifunc>= 888 .AND.ifunc<= 3888 .AND. mlw>=28) THEN
698
699 DO i=lft,llt
700 evar(i) = zero
701 ENDDO
702
703 IF (isolnod == 8 .AND. mlw == 83) THEN
704
705 mt = ixs(1,nft+1)
706 nfail = elbuf_tab(ng)%BUFLY(1)%NFAIL
707 IF (nfail > 0) THEN
708 irupt = mat_param(mt)%FAIL(1)%IRUPT
709 IF (irupt == 26) THEN
710 IF(ifunc <= 890 ) THEN
711 ius = ifunc - 888
712
713 nptg = 4
714 DO ir=1,nfail
715 DO ipt = 1,nptg
716 damf =>
717 . elbuf_tab(ng)%BUFLY(1)%FAIL(ipt,1,1)%FLOC(ir)%DAM
718 DO i=lft,llt
719 evar(i) =
max(evar(i) ,damf(ius*nel + i))
720 ENDDO
721 ENDDO
722 ENDDO
723 ELSEIF(ifunc <= 1890 )THEN
724 ijk = ifunc - 890
725 iir = ijk/100
726 is = (mod(ijk,100)-mod(ijk,10))/10
727 it = mod(ijk,10)
728 DO ir=1,nfail
729 damf =>
730 . elbuf_tab(ng)%BUFLY(1)%FAIL(iir,1,1)%FLOC(ir)%DAM
731 DO i=lft,llt
732 evar(i) = damf(i)
733 ENDDO
734 ENDDO
735 ELSEIF(ifunc <= 2890 )THEN
736 ijk = ifunc - 1890
737 iir = ijk/100
738 is = (mod(ijk,100)-mod(ijk,10))/10
739 it = mod(ijk,10)
740 DO ir=1,nfail
741 damf =>
742 . elbuf_tab(ng)%BUFLY(1)%FAIL(iir,1,1)%FLOC(ir)%DAM
743 DO i=lft,llt
744 evar(i) = damf(nel+i)
745 ENDDO
746 ENDDO
747 ELSE
748 ijk = ifunc - 2890
749 iir = ijk/100
750 is = (mod(ijk,100)-mod(ijk,10))/10
751 it = mod(ijk,10)
752 DO ir=1,nfail
753 damf =>
754 . elbuf_tab(ng)%BUFLY(1)%FAIL(iir,1,1)%FLOC(ir)%DAM
755 DO i=lft,llt
756 evar(i) = damf(2*nel+i)
757 ENDDO
758 ENDDO
759 ENDIF
760 ENDIF
761 ENDIF
762 ENDIF
763
764 ELSEIF (ifunc >= 3891.AND.ifunc <= 4889 )THEN
765 DO i=lft,llt
766 evar(i) = zero
767 ENDDO
768 ijk = ifunc - 3890
769 IF (tshell>0) THEN
770 iir = ijk/100
771 il = (mod(ijk,100)-mod(ijk,10))/10
772 is = mod(ijk,10)
773 it =1
774 ELSE
775 iir = ijk/100
776 is = (mod(ijk,100)-mod(ijk,10))/10
777 it = mod(ijk,10)
778 il =1
779 END IF
780 ius = nlay*iir*is*it
781 dammax = zero
782 IF (iir <= nptr.AND.is <= npts.AND.it <= nptt) THEN
783 nfail = elbuf_tab(ng)%BUFLY(il)%NFAIL
784 DO ir=1,nfail
785 dfmax=>
786 . elbuf_tab(ng)%BUFLY(il)%FAIL(iir,is,it)%FLOC(ir
787 DO i=lft,llt
788 evar(i) =
max(evar(i),dfmax(i))
789 ENDDO
790 ENDDO
791 ENDIF
792 ELSEIF (ifunc >= 5911.AND.ifunc <= 9920 .AND. tshell>0)THEN
793 DO i=lft,llt
794 evar(i) = zero
795 ENDDO
796 ijk = ifunc - 3890
797 IF ((isolnod == 6 .OR. isolnod == 8).AND.jhbe == 15) THEN
798 il = mod(abs(ijk)/10,201)
799 iir = 1
800 is = 1
801 it = 1
802 ELSEIF (isolnod == 16.OR.(isolnod == 8 .AND.jhbe == 14)) THEN
803
804 icsig = iparg(17,ng)
805 iir=abs(ijk)/2010
806 il=mod(abs(ijk)/10,201)
807 is=mod(abs(ijk),10)
808 it = 1
809 END IF
810 dammax = zero
811 IF (iir <= nptr.AND.is <= npts.AND.it <= nptt) THEN
812 nfail = elbuf_tab(ng)%BUFLY(il)%NFAIL
813 DO ir=1,nfail
814 dfmax=>
815 . elbuf_tab(ng)%BUFLY(il)%FAIL(iir,is,it)%FLOC(ir)%DAMMX
816 DO i=lft,llt
817 evar(i) =
max(evar(i),dfmax(i))
818 ENDDO
819 ENDDO
820 ENDIF
821 ELSEIF(ifunc == 3890) THEN
822 DO i=lft,llt
823 evar(i) = zero
824 ENDDO
825
826 DO il=1,nlay
827 nfail = elbuf_tab(ng)%BUFLY(il)%NFAIL
828 DO is=1,npts
829 DO it=1,nptt
830 DO iir=1,nptr
831 DO ir=1,nfail
832 dfmax=>
833 . elbuf_tab(ng)%BUFLY(il)%FAIL(iir,is,it)%FLOC(ir)%DAMMX
834 DO i=lft,llt
835 evar(i) =
max(evar(i),dfmax(i))
836 ENDDO
837 ENDDO
838 ENDDO
839 ENDDO
840 ENDDO
841 ENDDO
842 ELSEIF(ifunc == 4890) THEN
843 DO i=lft,llt
844 evar(i) = zero
845 ENDDO
846 DO il=1,nlay
847 nfail = elbuf_tab(ng)%BUFLY(il)%NFAIL
848 DO is=1,npts
849 DO it=1,nptt
850 DO iir=1,nptr
851 DO ir=1,nfail
852 tdele=>
853 . elbuf_tab(ng)%BUFLY(il)%FAIL(iir,is,it)%FLOC(ir)%TDEL
854 DO i=lft,llt
855 evar(i) =
max(evar(i),tdele(i))
856 ENDDO
857 ENDDO
858 ENDDO
859 ENDDO
860 ENDDO
861 ENDDO
862
863 ELSEIF(ifunc == 4891) THEN
864 IF (mlw == 151) THEN
865 DO i = 1, nel
866 evar(i) = multi_fvm%SOUND_SPEED(i + nft)
867 ENDDO
868 ELSE
869 l = elbuf_tab(ng)%BUFLY(1)%L_SSP
870 IF(elbuf_tab(ng)%BUFLY(1)%L_SSP /= 0)THEN
871 lbuf => elbuf_tab(ng)%BUFLY(1)%LBUF(1,1,1)
872 DO i=1,nel
873 evar(i) = lbuf%SSP(i)
874 ENDDO
875 ENDIF
876 ENDIF
877 ELSEIF(ifunc == 4892) THEN
878 ialel=iparg(7,ng)+iparg(11,ng)
879 IF(ialel == 0)THEN
880 evar(lft:llt) = zero
881 ELSE
883 1 evar ,ixs ,x ,
884 2 iparg ,wa_l ,elbuf_tab ,ale_connectivity ,gbuf%VOL,
885 3 ng ,nixs ,ity)
886 ENDIF
887
888 ELSEIF(ifunc == 4893) THEN
889 DO i=lft,llt
890 evar(i) = ispmd
891 ENDDO
892
893 ELSEIF(ifunc == 4894) THEN
894 DO i=lft,llt
895 evar(i) = gbuf%FILL(i)
896 ENDDO
897
898 ELSEIF (ifunc == 4895) THEN
899
900 IF (gbuf%G_SEQ > 0) THEN
901
902
903
904
905
906
907
908
909
910! evar_tmp = evar_tmp + lbuf%SEQ(i)/nptg
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926! p = - (s11 + s22 + s33) * third
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942 imat = ixs(1,nft+1)
943 iadbuf = ipm(7,imat)
944 nuparam= ipm(9,imat)
945 uparam => bufmat(iadbuf:iadbuf+nuparam-1)
946 lbuf => elbuf_tab(ng)%BUFLY(1)%LBUF(1,1,1)
947
948 IF (mlw == 72) THEN
949
950 DO i=lft,llt
951 evar(i) = gbuf%SEQ(i)
952 ENDDO
953
954 ELSEIF (mlw == 74) THEN
955
956 ff0 = uparam(7)
957 gg0 = uparam(8)
958 hh0 = uparam(9)
959 ll0 = uparam(10)
960 mm0 = uparam(11)
961 nn0 = uparam(12)
962 DO i=lft,llt
963 s11 = gbuf%SIG(jj(1) + i)
964 s22 = gbuf%SIG(jj(2) + i)
965 s33 = gbuf%SIG(jj(3) + i)
966 s4 = gbuf%SIG(jj(4) + i)
967 s5 = gbuf%SIG(jj(5) + i)
968 s6 = gbuf%SIG(jj(6) + i)
969 IF (ivisc > 0) THEN
970 s11 = s11 + lbuf%VISC(jj(1) + i)
971 s22 = s22 + lbuf%VISC(jj(2) + i)
972 s33 = s33 + lbuf%VISC(jj(3) + i)
973 s4 = s4 + lbuf%VISC(jj(4) + i)
974 s5 = s5 + lbuf%VISC(jj(5) + i)
975 s6 = s6 + lbuf%VISC(jj(6) + i)
976 ENDIF
977 p = - (s11 + s22 + s33) * third
978 s1 = s11 + p
979 s2 = s22 + p
980 s3 = s33 + p
981
982 crit = ff0*(s2 - s3)**2
983 . + gg0*(s3 - s1)**2
984 . + hh0*(s1 - s2)**2
985 . + two*ll0*s5**2
986 . + two*mm0*s6**2
987 . + two*nn0*s4**2
988
989 evar(i) = sqrt(crit)
990 ENDDO
991 ELSEIF (mlw == 93) THEN
992
993 DO i=lft,llt
994 evar(i) = gbuf%SEQ(i)
995 ENDDO
996 ELSEIF (mlw == 104) THEN
997 DO i = lft, llt
998 evar(i) = zero
999 ENDDO
1000 DO il=1,nlay
1001 DO is=1,npts
1002 DO it=1,nptt
1003 DO ir=1,nptr
1004 lbuf => elbuf_tab(ng)%BUFLY(il)%LBUF(ir,is,it)
1005 DO i=lft,llt
1006 evar(i) = evar(i) + lbuf%SEQ(i)/nptg
1007 ENDDO
1008 ENDDO
1009 ENDDO
1010 ENDDO
1011 ENDDO
1012 ELSEIF (mlw == 115) THEN
1013
1014 DO i=lft,llt
1015 evar(i) = gbuf%SEQ(i)
1016 ENDDO
1017 ENDIF
1018
1019 ELSE
1020 lbuf => elbuf_tab(ng)%BUFLY(1)%LBUF(1,1,1)
1021 DO i=lft,llt
1022 s11 = gbuf%SIG(jj(1) + i)
1023 s22 = gbuf%SIG(jj(2) + i)
1024 s33 = gbuf%SIG(jj(3) + i)
1025 s4 = gbuf%SIG(jj(4) + i)
1026 s5 = gbuf%SIG(jj(5) + i)
1027 s6 = gbuf%SIG(jj(6) + i)
1028 IF (ivisc > 0) THEN
1029 s11 = s11 + lbuf%VISC(jj(1) + i)
1030 s22 = s22 + lbuf%VISC(jj(2) + i)
1031 s33 = s33 + lbuf%VISC(jj(3) + i)
1032 s4 = s4 + lbuf%VISC(jj(4) + i)
1033 s5 = s5 + lbuf%VISC(jj(5) + i)
1034 s6 = s6 + lbuf%VISC(jj(6) + i)
1035 ENDIF
1036 p = - (s11 + s22 + s33) * third
1037 s1 = s11 + p
1038 s2 = s22 + p
1039 s3 = s33 + p
1040 vonm2 = three*(s4*s4 + s5*s5 + s6*s6 +
1041 . half*(s1*s1 + s2*s2 + s3*s3))
1042 vonm = sqrt(vonm2)
1043 evar(i) = vonm
1044 ENDDO
1045 ENDIF
1046
1047 ELSEIF (ifunc == 4896) THEN
1048 IF (gbuf%G_QVIS > 0) THEN
1049 DO i=lft,llt
1050 evar(i) = gbuf%QVIS(i)
1051 ENDDO
1052 ELSE
1053 DO i=lft,llt
1054 evar(i) = zero
1055 ENDDO
1056 ENDIF
1057 ELSEIF (ifunc >= 4931 .AND. ifunc <= 4934) THEN
1058 IF (mlw == 51) THEN
1059 itrimat = ifunc - 4930
1060
1061 imat = ixs(1,nft+1)
1062 iadbuf = ipm(7,imat)
1063 nuparam= ipm(9,imat)
1064 uparam => bufmat(iadbuf:iadbuf+nuparam-1)
1065 isubmat = itrimat
1066 isubmat = uparam(276+isubmat)
1067 ius=m51_n0phas+(isubmat-1)*m51_nvphas
1068
1069 llt = iparg(2,ng)
1070 ipos = 10
1071 k = llt * ((ius )+ipos-1)
1072 DO i=lft,llt
1073 evar(i) = mbuf%VAR(k+i)
1074 ENDDO
1075 ELSE
1076 DO i=lft,llt
1077 evar(i) = zero
1078 ENDDO
1079 ENDIF
1080
1081 ELSEIF (ifunc == 4921) THEN
1082 IF (gbuf%G_VOL > 0) THEN
1083 ialel=iparg(7,ng)+iparg(11,ng
1084 IF(ialel==0)THEN
1085 DO i=lft,llt
1086 mt = ixs(1,nft+1)
1087 evar(i) = pm(1,mt)*gbuf%VOL(i)
1088 IF(gbuf%RHO(i)>zero)evar(i)=evar(i)/gbuf%RHO(i)
1089 ENDDO
1090 ELSE
1091 DO i=lft,llt
1092 evar(i) = gbuf%VOL(i)
1093 ENDDO
1094 ENDIF
1095 ELSE
1096 DO i=lft,llt
1097 evar(i) = zero
1098 ENDDO
1099 ENDIF
1100
1101 ELSEIF(ifunc>=4897 .AND. ifunc<=4929 .AND. ifunc/=4921)THEN
1102 IF(mlw == 51)THEN
1103
1104 ipos = 0
1105 IF( ifunc>=4897 .AND. ifunc<=4900)THEN
1106 ideb = 4896
1107 ipos = 12
1108 ELSEIF(ifunc>=4901 .AND. ifunc<=4904)THEN
1109 ideb = 4900
1110 ipos = 08
1111 ELSEIF(ifunc>=4905 .AND. ifunc<=4908)THEN
1112 ideb = 4904
1113 ipos = 16
1114 ELSEIF(ifunc>=4909 .AND. ifunc<=4912)THEN
1115 ideb = 4908
1116 ipos = 18
1117 ELSEIF(ifunc>=4913 .AND. ifunc<=4916)THEN
1118 ideb = 4912
1119 ipos = 15
1120 ELSEIF(ifunc>=4917 .AND. ifunc<=4920)THEN
1121 ideb = 4916
1122 ipos = 14
1123 ELSEIF(ifunc>=4922 .AND. ifunc<=4925)THEN
1124 ideb = 4921
1125 ipos = 11
1126 ELSEIF(ifunc>=4926 .AND. ifunc<=4929)THEN
1127 ideb = 4925
1128 ipos = 0
1129 ENDIF
1130 imat = ixs(1,nft+1)
1131 iadbuf = ipm(7,imat)
1132 nuparam = ipm(9,imat)
1133 uparam => bufmat(iadbuf:iadbuf+nuparam-1)
1134 itrimat = ifunc - ideb
1135
1136 isubmat = itrimat
1137 isubmat = uparam(276+isubmat)
1138 ius = m51_n0phas+(isubmat-1)*m51_nvphas
1139
1140 llt = iparg(2,ng)
1141
1142 IF(ipos /=0 .AND. ipos /= 08 )THEN
1143 k = llt * ((ius )+ipos-1)
1144 DO i=lft,llt
1145 evar(i) = mbuf%VAR(k+i)
1146 ENDDO
1147
1148 ELSEIF(ipos == 08)THEN
1149 k1 = llt * ((ius )+08-1)
1150 k2 = llt * ((ius )+12-1)
1151 evar(lft:llt) = zero
1152 DO i=lft,llt
1153 IF(mbuf%VAR(k2+i) /= zero) evar(i) = mbuf%VAR(k1+i) / mbuf%VAR(k2+i)
1154 ENDDO
1155 ELSEIF(ipos==0)THEN
1156
1157 itrimat = ifunc - ideb
1158 llt = iparg(2,ng)
1159 k1 = llt * ((ius )+12-1)
1160 k2 = llt * ((ius )+11-1)
1161 DO i=lft,llt
1162 evar(i) = mbuf%VAR(k1+i) * mbuf%VAR(k2+i)
1163 ENDDO
1164 ELSE
1165
1166 evar(lft:llt) = zero
1167 ENDIF
1168 ELSE
1169 DO i=lft,llt
1170 evar(i) = zero
1171 ENDDO
1172 endif
1173
1174 ELSEIF (ifunc == 4930) THEN
1175 IF (gbuf%G_TB > 0) THEN
1176 DO i=lft,llt
1177 evar(i) = -gbuf%TB(i)
1178 ENDDO
1179 ELSE
1180 DO i=lft,llt
1181 evar(i) = zero
1182 ENDDO
1183 ENDIF
1184
1185 ELSEIF (ifunc == 4935 .OR. ifunc == 4936) THEN
1186 IF (mlw /= 37) THEN
1187 evar(lft:llt) = zero
1188 ELSE
1189 user(lft:llt) = zero
1190 ius=3-ifunc+4935
1191 DO il=1,nlay
1192 DO is=1,npts
1193 DO it=1,nptt
1194 DO ir=1,nptr
1195 mbuf => elbuf_tab(ng)%BUFLY(il)%MAT(ir,is,it)
1196 DO i=lft,llt
1197 user(i) = user(i) + mbuf%VAR(i+(ius-1)*nel)/nptg
1198 ENDDO
1199 ENDDO
1200 ENDDO
1201 ENDDO
1202 ENDDO
1203 evar(lft:llt) = user(lft:llt)
1204 ENDIF
1205
1206 ELSEIF (ifunc == 4937) THEN
1207 IF(gbuf%G_DT>0)THEN
1208 DO i=lft,llt
1209 evar(i) = gbuf%DT(i)
1210 ENDDO
1211 ENDIF
1212
1213
1214 ELSEIF (ifunc>=4938 .AND. ifunc<=4944)THEN
1215 mt = ixs(1,nft+1)
1216 ialefvm_flg = ipm(251,mt)
1217 IF(ialefvm_flg >= 2)THEN
1218 IF (isolnod == 8)THEN
1219 IF(ifunc>=4938 .AND. ifunc<=4940)THEN
1220 DO i=lft,llt
1221 evar(i) = gbuf%MOM(jj(ifunc
1222 ENDDO
1223 ELSEIF(ifunc==4941)THEN
1224 DO i=lft,llt
1225
1226 evar(i) = sqrt( gbuf%MOM(jj(1)+i)*gbuf%MOM(jj(1)+i)+
1227 + gbuf%MOM(jj(2)+i)*gbuf%MOM(jj(2)+i) )
1228 ENDDO
1229 ELSEIF(ifunc==4942)THEN
1230 DO i=lft,llt
1231
1232 evar(i) = sqrt( gbuf%MOM(jj(2)+i)*gbuf%MOM(jj(2)+i)+
1233 + gbuf%MOM(jj(3)+i)*gbuf%MOM(jj(3)+i) )
1234 ENDDO
1235 ELSEIF(ifunc==4943)THEN
1236 DO i=lft,llt
1237
1238 evar(i) = sqrt( gbuf%MOM(jj(1)+i)*gbuf%MOM(jj(1)+i)+
1239 + gbuf%MOM(jj(3)+i)*gbuf%MOM(jj(3)+i) )
1240 ENDDO
1241 ELSEIF(ifunc==4944)THEN
1242 DO i=lft,llt
1243
1244 evar(i) = sqrt( gbuf%MOM(jj(1)+i)*gbuf%MOM(jj(1)+i)+
1245 + gbuf%MOM(jj(2)+i)*gbuf%MOM(jj(2)+i)+
1246 + gbuf%MOM(jj(3)+i)*gbuf%MOM(jj(3)+i) )
1247 ENDDO
1248 ENDIF
1249 ENDIF
1250 ELSE
1251 evar(lft:llt)=zero
1252 endif
1253
1254
1255 ELSEIF (ifunc>=4945 .AND. ifunc<=4951)THEN
1256 mt = ixs(1,nft+1)
1257 ialefvm_flg = ipm(251,mt)
1258 IF(ialefvm_flg >= 2)THEN
1259 IF (isolnod == 8)THEN
1260 IF(ifunc>=4945 .AND. ifunc<=4947)THEN
1261 DO i=lft,llt
1262 evar(i) = gbuf%MOM(jj(ifunc-4944)+i) / gbuf%RHO(i)
1263 ENDDO
1264 ELSEIF(ifunc==4948)THEN
1265 DO i=lft,llt
1266
1267 evar(i) = sqrt( gbuf%MOM(jj(1)+i)*gbuf%MOM(jj(1)+i)+
1268 + gbuf%MOM(jj(2)+i)*gbuf%MOM(jj(2)+i) ) / gbuf%RHO(i)
1269 ENDDO
1270 ELSEIF(ifunc==4949)THEN
1271 DO i=lft,llt
1272
1273 evar(i) = sqrt( gbuf%MOM(jj(2)+i)*gbuf%MOM(jj(2)+i)+
1274 + gbuf%MOM(jj(3)+i)*gbuf%MOM(jj(3)+i) ) / gbuf%RHO(i)
1275 ENDDO
1276 ELSEIF(ifunc==4950)THEN
1277 DO i=lft,llt
1278
1279 evar(i) = sqrt( gbuf%MOM(jj(1)+i)*gbuf%MOM(jj(1)+i)+
1280 + gbuf%MOM(jj(3)+i)*gbuf%MOM(jj(3)+i) ) / gbuf%RHO(i)
1281 ENDDO
1282 ELSEIF(ifunc==4951)THEN
1283 DO i=lft,llt
1284
1285 evar(i) = sqrt( gbuf%MOM(jj(1)+i)*gbuf%MOM(jj(1)+i)+
1286 + gbuf%MOM(jj(2)+i)*gbuf%MOM(jj(2)+i)+
1287 + gbuf%MOM(jj(3)+i)*gbuf%MOM(jj(3)+i) ) / gbuf%RHO(i)
1288 ENDDO
1289 ENDIF
1290 ENDIF
1291 ELSE
1292 evar(lft:llt)=zero
1293 endif
1294
1295
1296 ELSEIF (ifunc>=4952 .AND. ifunc<=4958)THEN
1297 mt = ixs(1,nft+1)
1298 ialefvm_flg = ipm(251,mt)
1299 IF(ialefvm_flg >= 2)THEN
1300 IF (isolnod == 8)THEN
1301 IF(ifunc>=4952 .AND. ifunc<=4954)THEN
1302 DO i=lft,llt
1303 ii = i+nft
1305 ENDDO
1306 ELSEIF(ifunc==4955)THEN
1307 DO i=lft,llt
1308 ii = i+nft
1311 ENDDO
1312 ELSEIF(ifunc==4956)THEN
1313 DO i=lft,llt
1314 ii = i+nft
1317 ENDDO
1318 ELSEIF(ifunc==4957)THEN
1319 DO i=lft,llt
1320 ii = i+nft
1323 ENDDO
1324 ELSEIF(ifunc==4958)THEN
1325 DO i=lft,llt
1326 ii = i+nft
1330 ENDDO
1331 ENDIF
1332 ENDIF
1333 ELSE
1334 evar(lft:llt)=zero
1335 endif
1336
1337 ELSEIF (ifunc == 4959) THEN
1338 IF(gbuf%G_ISMS>0)THEN
1339 DO i=lft,llt
1340 evar(i) = gbuf%ISMS(i)
1341 ENDDO
1342 ENDIF
1343
1344 ELSEIF(ifunc == 4960)THEN
1345
1346 DO i=lft,llt
1347 evar(i) = fani_cell%VORT_Y(i+nft)
1348 ENDDO
1349
1350 ELSEIF(ifunc == 4961)THEN
1351
1352 DO i=lft,llt
1353 evar(i) = fani_cell%VORT_Z(i+nft)
1354 ENDDO
1355
1356 ELSEIF(ifunc == 4962)THEN
1357
1358 DO i=lft,llt
1359 IF(mlw == 6 .OR. mlw == 17)THEN
1360 evar(i) = lbuf%VK(i)
1361 ELSEIF(mlw == 46 .OR. mlw == 47)THEN
1362 evar(i) = mbuf%VAR(nel+i)
1363 ENDIF
1364 ENDDO
1365
1366 ELSEIF(ifunc == 4963)THEN
1367
1368 DO i=lft,llt
1369 evar(i) = gbuf%EINT(i)*gbuf%VOL(i)
1370 ENDDO
1371
1372 ELSEIF(ifunc == 4964 .AND. (mlw == 12 .OR. mlw ==14 .OR. mlw == 25))THEN
1373
1374 DO i=lft,llt
1375 evar(i) = zero
1376 ENDDO
1377 IF (isolnod == 16.OR.isolnod == 20.OR.
1378 . (isolnod == 8.AND.jhbe == 14).OR.
1379 . ((isolnod == 6.OR.isolnod == 8).AND.jhbe == 15))THEN
1380 DO il=1,nlay
1381 IF (elbuf_tab(ng)%BUFLY(il)%L_PLA > 0) THEN
1382 DO is=1,npts
1383 DO it=1,nptt
1384 DO ir=1,nptr
1385 lbuf=>elbuf_tab(ng)%BUFLY(il)%LBUF(ir,is,it)
1386 DO i=lft,llt
1387 evar(i) = evar(i) + lbuf%PLA(i)/nptg
1388 ENDDO
1389 ENDDO
1390 ENDDO
1391 ENDDO
1392 ENDIF
1393 ENDDO
1394 ELSE
1395 DO i=lft,llt
1396 IF (gbuf%G_PLA > 0) evar(i) = gbuf%PLA(i)
1397 ENDDO
1398 ENDIF
1399
1400 ELSEIF(ifunc == 4965)THEN
1401 DO i=lft,llt
1402 IF (gbuf%G_OFF > 0) THEN
1403 IF(gbuf%OFF(i) > one) THEN
1404 evar(i) = gbuf%OFF(i) - one
1405 ELSEIF((gbuf%OFF(i) >= zero .AND. gbuf%OFF(i) <= one)) THEN
1406 evar(i) = gbuf%OFF(i)
1407 ELSE
1408 evar(i) = -one
1409 ENDIF
1410 ENDIF
1411 ENDDO
1412
1413 ELSEIF(ifunc == 4966) THEN
1414 IF (mlw == 151) THEN
1415 DO i = 1, nel
1416 vel(1) = multi_fvm%VEL(1, i + nft)
1417 vel(2) = multi_fvm%VEL(2, i + nft)
1418 vel(3) = multi_fvm%VEL(3, i + nft)
1419 vel(0) = sqrt(vel(1)*vel(1)+vel(2)*vel(2)+vel(3)*vel(3))
1420 evar(i) = vel(0)/multi_fvm%SOUND_SPEED(i + nft)
1421 ENDDO
1423 l = elbuf_tab(ng)%BUFLY(1)%L_SSP
1424 IF(elbuf_tab(ng)%BUFLY(1)%L_SSP /= 0)THEN
1425 lbuf => elbuf_tab(ng)%BUFLY(1)%LBUF(1,1,1)
1426 DO i=1,nel
1427 vel(1) = gbuf%MOM(jj(1) + i) / gbuf%RHO(i)
1428 vel(2) = gbuf%MOM(jj(2) + i) / gbuf%RHO(i)
1429 vel(3) = gbuf%MOM(jj(3) + i) / gbuf%RHO(i)
1430 vel(0) = sqrt(vel(1)*vel(1)+vel(2)*vel(2)+vel(3)*vel(3))
1431 evar(i) = vel(0)/lbuf%SSP(i)
1432 ENDDO
1433 ENDIF
1434 ELSE
1435 IF(elbuf_tab(ng)%BUFLY(1)%L_SSP /= 0)THEN
1436 lbuf => elbuf_tab(ng)%BUFLY(1)%LBUF(1,1,1)
1437 IF(is_ale /= 0)THEN
1438
1439 DO i=1,nel
1440 tmp(1,1:8)=v(1,ixs(2:9,i+nft))-w(1,ixs(2:9,i+nft))
1441 tmp(2,1:8)=v(2,ixs(2:9,i+nft))-w(2,ixs(2:9,i+nft))
1442 tmp(3,1:8)=v(3,ixs(2:9,i+nft))-w(3,ixs(2:9,i+nft))
1443 vel(1) = sum(tmp(1,1:8))*one_over_8
1444 vel(2) = sum(tmp(2,1:8))*one_over_8
1445 vel(3) = sum(tmp(3,1:8))*one_over_8
1446 evar(i) = sqrt(vel(1)*vel(1)+vel(2)*vel(2)+vel(3)*vel(3))/lbuf%SSP(i)
1447 ENDDO
1448 ELSE
1449
1450 DO i=1,nel
1451 tmp(1,1:8)=v(1,ixs(2:9,i+nft))
1452 tmp(2,1:8)=v(2,ixs(2:9,i+nft))
1453 tmp(3,1:8)=v(3,ixs(2:9,i+nft))
1454 vel(1) = sum(tmp(1,1:8))*one_over_8
1455 vel(2) = sum(tmp(2,1:8))*one_over_8
1456 vel(3) = sum(tmp(3,1:8))*one_over_8
1457 evar(i) = sqrt(vel(1)*vel(1)+vel(2)*vel(2)+vel(3)*vel(3))/lbuf%SSP(i)
1458 ENDDO
1459 ENDIF
1460 ENDIF
1461 ENDIF
1462
1463 ELSEIF(ifunc == 4967)THEN
1464 gbuf => elbuf_tab(ng)%GBUF
1465 IF (mlw == 151) THEN
1466 nfrac=nlay
1467 DO imat=1,nlay
1468 lbuf => elbuf_tab(ng)%BUFLY(imat)%LBUF(1,1,1)
1469 DO i=1,nel
1470 vfrac(i,imat
1471 ENDDO
1472 ENDDO
1473 ELSEIF(mlw == 20)THEN
1474 nfrac=2
1475 DO i=1,nel
1476 vfrac(i,1) = elbuf_tab(ng)%BUFLY(1)%LBUF(1,1,1)%VOL(i) / gbuf%VOL(i)
1477 vfrac(i,2) = elbuf_tab(ng)%BUFLY(2)%LBUF(1,1,1)%VOL(i) / gbuf%VOL(i)
1478 ENDDO
1479 ELSEIF(mlw == 37)THEN
1480 mbuf => elbuf_tab(ng)%BUFLY(1)%MAT(1,1,1)
1481 nfrac=2
1482 DO i=1,nel
1483 vfrac(i,1) = mbuf%VAR(i+3*nel)
1484 vfrac(i
1485 ENDDO
1486 ELSEIF(mlw == 51)THEN
1487
1488 imat = ixs(1,nft+1)
1489 iadbuf = ipm(7,imat)
1490 nuparam= ipm(9,imat)
1491 uparam => bufmat(iadbuf:iadbuf+nuparam-1)
1492
1493 isubmat = uparam(276+1); iu(1)=m51_n0phas+(isubmat-1)*m51_nvphas
1494 isubmat = uparam(276+2); iu(2)=m51_n0phas+(isubmat-1)*m51_nvphas
1495 isubmat = uparam(276+3); iu(3)=m51_n0phas+(isubmat-1)*m51_nvphas
1496 isubmat = uparam(276+4); iu(4)=m51_n0phas+(isubmat-1)*m51_nvphas
1497 mbuf => elbuf_tab(ng)%BUFLY(1)%MAT(1,1,1)
1498 nfrac=4
1499 DO i=1,nel
1500 vfrac(i,1) = mbuf%VAR(i+iu(1)*nel)
1501 vfrac(i,2) = mbuf%VAR(i+iu
1502 vfrac(i,3) = mbuf%VAR
1503 vfrac(i,4) = mbuf%VAR(i
1504 ENDDO
1505 ELSE
1506 nfrac = 0
1507 vfrac(1:nel,1:21)=zero
1508 ENDIF
1509 IF(nfrac>0)THEN
1510 DO i=1,nel
1511 values(i)=zero
1512 DO imat=1,nfrac
1513 values(i) = values(i) + vfrac(i,imat)*imat
1514 ENDDO
1515 evar(i)=values(i)
1516 ENDDO
1517 ELSE
1518 evar(1:nel)=zero
1519 ENDIF
1520
1521 ELSEIF ((ifunc == 4968).AND.gbuf%G_DMG>0) THEN
1522 DO i = lft, llt
1523 evar(i) = zero
1524 ENDDO
1525 DO il=1,nlay
1526 DO is=1,npts
1527 DO it=1,nptt
1528 DO ir=1,nptr
1529 lbuf => elbuf_tab(ng)%BUFLY(il)%LBUF(ir,is,it)
1530 DO i=lft,llt
1531 evar(i) = evar(i) + lbuf%DMG(i)/nptg
1532 ENDDO
1533 ENDDO
1534 ENDDO
1535 ENDDO
1536 ENDDO
1537
1538 ELSEIF ((ifunc == 4969).AND.gbuf%G_PLANL>0) THEN
1539 DO i = lft, llt
1540 evar(i) = zero
1541 ENDDO
1542
1543 DO is=1,npts
1544 DO it=1,nptt
1545 DO ir=1,nptr
1546 lbuf => elbuf_tab(ng)%BUFLY(1)%LBUF(ir,is,it)
1547 DO i=lft,llt
1548 evar(i) = evar(i) + lbuf%PLANL(i)/nptg
1549 ENDDO
1550 ENDDO
1551 ENDDO
1552 ENDDO
1553
1554 ELSEIF ((ifunc == 4970).AND.gbuf%G_EPSDNL>0) THEN
1555 DO i = lft, llt
1556 evar(i) = zero
1557 ENDDO
1558
1559 DO is=1,npts
1560 DO it=1,nptt
1561 DO ir=1,nptr
1562 lbuf => elbuf_tab(ng)%BUFLY(1)%LBUF(ir,is,it)
1563 DO i=lft,llt
1564 evar(i) = evar(i) + lbuf%EPSDNL(i)/nptg
1565 ENDDO
1566 ENDDO
1567 ENDDO
1568 ENDDO
1569
1570
1571 ELSEIF(ifunc == 4971 .AND. gbuf%G_TSAIWU > 0)THEN
1572
1573 DO i=lft,llt
1574 evar(i) = zero
1575 ENDDO
1576 DO il=1,nlay
1577 IF (elbuf_tab(ng)%BUFLY(il)%L_TSAIWU > 0) THEN
1578 DO is=1,npts
1579 DO it=1,nptt
1580 DO ir=1,nptr
1581 lbuf=>elbuf_tab(ng)%BUFLY(il)%LBUF(ir,is,it)
1582 DO i=lft,llt
1583 evar(i) = evar(i) + lbuf%TSAIWU(i)/nptg
1584 ENDDO
1585 ENDDO
1586 ENDDO
1587 ENDDO
1588 ENDIF
1589 ENDDO
1590
1591
1592 ELSEIF(ifunc >= 4971+1 .AND. ifunc<= 4971+200 .AND. gbuf%G_TSAIWU > 0) THEN
1593 DO i=lft,llt
1594 evar(i) = zero
1595 ENDDO
1596 ius = ifunc - 4971
1597 IF (isolnod == 16.OR.isolnod == 20.OR.
1598 . (isolnod == 8.AND.jhbe == 14).OR.
1599 . ((isolnod == 6.OR.isolnod == 8).AND.jhbe == 15))THEN
1600 IF (ius <= nptg) THEN
1601 DO il=1,nlay
1602 IF (elbuf_tab(ng)%BUFLY(il)%L_TSAIWU > 0) THEN
1603 DO is=1,npts
1604 DO it=1,nptt
1605 DO ir=1,nptr
1606 lbuf=>elbuf_tab(ng)%BUFLY(il)%LBUF(ir,is,it)
1607 DO i=lft,llt
1608 evar(i) = evar(i) + lbuf%TSAIWU(i)
1609 ENDDO
1610 ENDDO
1611 ENDDO
1612 ENDDO
1613 ENDIF
1614 ENDDO
1615 ENDIF
1616 ENDIF
1617
1618
1619 ELSEIF( ifunc == 5172 ) THEN
1620 evar(1:nel) = zero
1621 mt = ixs(1,nft+1)
1622 IF (mlw == 151) THEN
1623 nlay = elbuf_tab(ng)%NLAY
1624
1625 ntillotson = 0
1626 DO imat=1,nlay
1627 ieos = ipm(4, mat_param(mt)%MULTIMAT%MID(imat) )
1628 IF(ieos == 3)THEN
1629 ntillotson = ntillotson + 1
1630 imat_tillotson = imat
1631 ENDIF
1632 ENDDO
1633
1634 IF(ntillotson > 1)THEN
1635 fac=one
1636 DO imat=1,nlay
1637 ieos = ipm(4, mat_param(mt)%MULTIMAT%MID(imat) )
1638 IF(ieos == 3)THEN
1639 ebuf => elbuf_tab(ng)%BUFLY(imat)%EOS(1,1,1)
1640 nvareos = elbuf_tab(ng)%BUFLY(imat)%NVAR_EOS
1641 DO i=1,nel
1642 evar(i) = evar(i) + ebuf%VAR(i) * fac
1643 ENDDO
1644 ENDIF
1645 fac=fac*ten
1646 ENDDO
1647
1648 ELSEIF(ntillotson == 1)THEN
1649 ebuf => elbuf_tab(ng)%BUFLY(imat_tillotson)%EOS(1,1,1)
1650 nvareos = elbuf_tab(ng)%BUFLY(imat_tillotson)%NVAR_EOS
1651 DO i=1,nel
1652 evar(i) = ebuf%VAR(i)
1653 ENDDO
1654 ENDIF
1655 ELSE
1656
1657 ieos = ipm(4,mt)
1658 IF(ieos == 3)THEN
1659 ebuf => elbuf_tab(ng)%BUFLY(1)%EOS(1,1,1)
1660 nvareos = elbuf_tab(ng)%BUFLY(1)%NVAR_EOS
1661 DO i=1,nel
1662 evar(i) = ebuf%VAR(i)
1663 ENDDO
1664 ENDIF
1665 ENDIF
1666
1667
1668 elseif(ifunc == 5173) then
1669
1670 DO i=1,nel
1671 func(el2fa(nn1+nft+i)) = zero
1672 ENDDO
1673
1674 mt = ixs(1,nft+1)
1675
1676 do i=1,nel
1677
1678 if(mlw == 151)then
1679
1680 do ilay=1,multi_fvm%nbmat
1681 mid = mat_param(mt)%multimat%mid(ilay)
1682 rho0i(ilay) = pm(89,mid)
1683 vi(ilay) = multi_fvm%phase_alpha(ilay,i+nft) * gbuf%vol(i)
1684 v0i(ilay) = multi_fvm%phase_rho(ilay,i+nft) * vi(ilay) / rho0i(ilay)
1685 enddo
1686 v0g = sum(v0i)
1687 rho0g = zero
1688 do ilay=1,multi_fvm%nbmat
1689 rho0g = rho0g + rho0i(ilay)*v0i(ilay)
1690 end do
1691 rho0g = rho0g / v0g
1692 func(el2fa(nn1+nft+i)) = multi_fvm%rho(i+nft) / rho0g - one
1693
1694 elseif(mlw == 51)then
1695
1696 imat = ixs(1,nft+1)
1697 iadbuf = ipm(7,imat)
1698 nuparam= ipm(9,imat)
1699 uparam => bufmat(iadbuf:iadbuf+nuparam-1)
1700 mbuf => elbuf_tab(ng)%bufly(1)%mat(1,1,1)
1701 ipos = 1
1702
1703 isubmat = nint(uparam(276+1)); iu(1)=m51_n0phas+(isubmat-1)*m51_nvphas + ipos-1
1704 isubmat = nint(uparam(276+2)); iu(2)=m51_n0phas+(isubmat-1)*m51_nvphas + ipos-1
1705 isubmat = nint(uparam(276+3)); iu(3)=m51_n0phas+(isubmat-1)*m51_nvphas + ipos-1
1706 isubmat = nint(uparam(276+4)); iu(4)=m51_n0phas+(isubmat-1)*m51_nvphas + ipos-1
1707 vfrac(i,1) = mbuf%var(i+iu(1)*nel)
1708 vfrac(i,2) = mbuf%var(i+iu(2)*nel)
1709 vfrac(i,3) = mbuf%var(i+iu(3)*nel)
1710 vfrac(i,4) = mbuf%var(i+iu(4)*nel)
1711 ipos = 12
1712
1713 isubmat = nint(uparam(276+1)); iu(1)=m51_n0phas+(isubmat-1)*m51_nvphas + ipos-1
1714 isubmat = nint(uparam(276+2)); iu(2)=m51_n0phas+(isubmat-1)*m51_nvphas + ipos-1
1715 isubmat = nint(uparam(276+3)); iu(3)=m51_n0phas+(isubmat-1)*m51_nvphas +
1716 isubmat = nint(uparam(276+4)); iu(4)=m51_n0phas+(isubmat-1)*m51_nvphas
1717 rhoi(1) = mbuf%var(i
1718 rhoi(2) = mbuf%var(i+iu(2)*nel)
1719
1720 rhoi(4) = mbuf%var(i+iu(4)*nel)
1721 do
1722 mid = mat_param(mt)%multimat%mid(ilay)
1723 rho0i(ilay) = pm(89,mid)
1724 vi(ilay) = vfrac(i,ilay) * gbuf%vol(i)
1725 ipos = 12
1726 v0i(ilay) = rhoi(ilay) * vi(ilay) / rho0i(ilay)
1727 enddo
1728 v0g = sum(v0i)
1729 rho0g = zero
1730 do ilay=1,4
1731 rho0g = rho0g + rho0i(ilay)*v0i(ilay)
1732 end do
1733 rho0g = rho0g / v0g
1734 func(el2fa(nn1+nft+i)) = gbuf%rho(i) / rho0g - one
1735
1736 elseif(mlw == 37)then
1737
1738 imat = ixs(1,nft+1)
1739 iadbuf = ipm(7,imat)
1740 nuparam= ipm(9,imat)
1741 uparam => bufmat(iadbuf:iadbuf+nuparam-1)
1742 mbuf => elbuf_tab(ng)%bufly(1)%mat(1,1,1)
1743 rho0i(1) = uparam(11)
1744 rho0i(2) = uparam(12)
1745 vi(1) = mbuf%var(i+3*nel) * gbuf%vol(i)
1746 vi(2) = mbuf%var(i+4*nel) * gbuf%vol(i)
1747 rhoi(1) = mbuf%var(i+2*nel)
1748 rhoi(2) = mbuf%var(i+1*nel)
1749 v0i(1) = rhoi(1) * vi(1) / rho0i(1)
1750 v0i(2) = rhoi(2) * vi(2) / rho0i(2)
1751 v0g = sum(v0i)
1752 rho0g = zero
1753 do ilay=1,2
1754 rho0g = rho0g + rho0i(ilay)*v0i(ilay)
1755 end do
1756 rho0g = rho0g / v0g
1757 func(el2fa(nn1+nft+i)) = gbuf%rho(i) / rho0g - one
1758
1759 elseif(mlw == 20)then
1760
1761 lbuf1 => elbuf_tab(ng)%bufly(1)%lbuf(1,1,1)
1762 lbuf2 => elbuf_tab(ng)%bufly(2)%lbuf(1,1,1)
1763 mid = mat_param(mt)%multimat%mid(1)
1764 rho0i(1) = pm(89,mid)
1765 mid = mat_param(mt)%multimat%mid(2)
1766 rho0i(2) = pm(89,mid)
1767 vi(1) = lbuf1%vol(i)
1768 vi(2) = lbuf2%vol(i)
1769 rhoi(1) = lbuf1%rho(i)
1770 rhoi(2) = lbuf2%rho(i)
1771 v0i(1) = rhoi(1) * vi(1) / rho0i(1)
1772 v0i(2) = rhoi(2) * vi(2) / rho0i(2)
1773 v0g = sum(v0i)
1774 rho0g = zero
1775 do ilay=1,2
1776 rho0g = rho0g + rho0i(ilay)*v0i(ilay)
1777 end do
1778 rho0g = rho0g / v0g
1779 func(el2fa(nn1+nft+i
1780
1781 else
1782
1783 if(pm(89,mt) > zero)then
1784 func(el2fa(nn1+nft+i)) = gbuf%rho(i) / pm(89,mt) - one
1785 end if
1786 end if
1787
1788 enddo
1789
1790 elseif(ifunc >= 5173+1 .and. ifunc <= 5173+10) then
1791
1792 detected = .false.
1793 ilay = ifunc - (15899 + 4*mx_ply_anim)
1794 if(mlw == 151 .and. ilay <=
min(10,multi_fvm%nbmat))detected = .true.
1795 if(mlw == 51 .and. ilay <= 4 )detected = .true.
1796 if(mlw == 37 .and. ilay <= 2 )detected = .true.
1797 if(mlw == 20 .and. ilay <= 2 )detected = .true.
1798
1799 if(detected)then
1800
1801 mt = ixs(1,nft+1)
1802
1803 do i=1,nel
1804
1805 if(mlw == 151)then
1806
1807 mid = mat_param(mt)%multimat%mid(ilay)
1808 rho0i(ilay) = pm(89,mid)
1809 vi(ilay) = multi_fvm%phase_alpha(ilay,i+nft) * gbuf%vol(i)
1810 v0i(ilay) = multi_fvm%phase_rho(ilay,i+nft) * vi(ilay) / rho0i(ilay)
1811 func(el2fa(nn1+nft+i)) = multi_fvm%phase_rho(ilay
1812
1813 elseif(mlw == 51)then
1814
1815 imat = ixs(1,nft+1)
1816 iadbuf = ipm(7,imat)
1817 nuparam= ipm(9,imat)
1818 uparam => bufmat(iadbuf:iadbuf+nuparam-1)
1819 mbuf => elbuf_tab(ng)%bufly(1)%mat(1,1,1)
1820 mid = mat_param(mt)%multimat%mid(ilay)
1821 rho0i(ilay) = pm(89,mid)
1822 ipos = 1
1823
1824 isubmat = nint(uparam(276+ilay)); iu(1)=m51_n0phas+(isubmat-1)*m51_nvphas + ipos-1
1825 vfrac(i,ilay) = mbuf%var(i+iu(ilay)*nel)
1826 vi(ilay) = vfrac(i,ilay) * gbuf%vol(i)
1827 ipos = 12
1828
1829 isubmat = nint(uparam(276+ilay)); iu(ilay)=m51_n0phas
1830 rhoi(ilay) = mbuf%var(i+iu(ilay)*nel)
1831 v0i(ilay) = rhoi(ilay) * vi(ilay) / rho0i(ilay)
1832 func(el2fa(nn1+nft+i)) = rhoi(ilay) / rho0i(ilay) - one
1833
1834 elseif(mlw == 37)then
1835
1836 imat = ixs(1,nft+1)
1837 iadbuf = ipm(7,imat)
1838 nuparam= ipm(9,imat)
1839 uparam => bufmat(iadbuf:iadbuf+nuparam-1)
1840 mbuf => elbuf_tab(ng)%bufly(1)%mat
1841 rho0i(ilay) = uparam(10+ilay)
1842 vi(ilay) = mbuf%var(i+(ilay+2)*nel) * gbuf%vol(i)
1843 rhoi(ilay) = mbuf%var(i+(3-ilay)*nel)
1844 v0i(ilay) = rhoi(ilay) * vi(ilay) / rho0i(ilay)
1845 func(el2fa(nn1
1846
1847 elseif(mlw == 20)then
1848
1849 lbuf => elbuf_tab(ng)%bufly(ilay)%lbuf(1,1,1)
1850 mid = mat_param(mt)%multimat%mid(ilay)
1851 rho0i(ilay) = pm(89,mid)
1852 vi(ilay) = lbuf%vol(i)
1853 rhoi(ilay) = lbuf%rho(i)
1854 v0i(ilay) = rhoi(ilay) * vi(ilay) / rho0i(ilay)
1855 func(el2fa(nn1+nft+i)) = rhoi(ilay) / rho0i(ilay) - one
1856
1857 else
1858
1859 func(el2fa(nn1+nft+i)) = zero
1860 end if
1861 enddo
1862
1863 end if
1864
1865
1866
1867 ELSE
1868 DO i=lft,llt
1869 evar(i) = zero
1870 ENDDO
1871 ENDIF
1872
1873 ENDIF
1874
1875
1876 IF (isolnod == 16)THEN
1877 DO i=lft,llt
1878 n = nn2 + i + nft
1879 IF(el2fa(n)/=0)THEN
1880 func(el2fa(n)) = evar(i)
1881 func(el2fa(n)+1) = evar(i)
1882 func(el2fa(n)+2) = evar(i)
1883 func(el2fa(n)+3) = evar(i)
1884 ENDIF
1885 ENDDO
1886 ELSE
1887 DO i=lft,llt
1888 n = nn2 + i + nft
1889 IF(el2fa(n)/=0)THEN
1890 func(el2fa(n)) = evar(i)
1891 ENDIF
1892 ENDDO
1893 ENDIF
1894
1895
1896 ELSEIF (isph3d == 1.AND.ity == 51) THEN
1897
1898
1899 gbuf => elbuf_tab(ng)%GBUF
1900 mbuf => elbuf_tab(ng)%BUFLY(1)%MAT(1,1,1)
1901 lbuf => elbuf_tab(ng)%BUFLY(1)%LBUF(1,1,1)
1902 nlay = elbuf_tab(ng)%NLAY
1903 nptr = elbuf_tab(ng)%NPTR
1904 npts = elbuf_tab(ng)%NPTS
1905 nptt = elbuf_tab(ng)%NPTT
1906 nptg = nptt*npts*nptr*nlay
1907 jturb= iparg(12,ng)*(iparg(7,ng)+iparg(11,ng))
1908
1909 IF(ifunc == 1)THEN
1910 DO i=lft,llt
1911 n = i + nft
1912 VALUE = zero
1913 IF (el2fa(nn3+n)/=0)THEN
1914 IF (mlw == 21)THEN
1915 VALUE = lbuf%EPSQ(i)
1916 ELSEIF (gbuf%G_PLA > 0) THEN
1917 VALUE = gbuf%PLA(i)
1918 ENDIF
1919 func(el2fa(nn3+n)) = VALUE
1920 ENDIF
1921 ENDDO
1922
1923 ELSEIF(ifunc == 2)THEN
1924 DO i=lft,llt
1925 n = i + nft
1926 IF(el2fa(nn3+n)/=0)THEN
1927 VALUE = gbuf%RHO(i)
1928 func(el2fa(nn3+n)) = VALUE
1929 ENDIF
1930 ENDDO
1931
1932 ELSEIF(ifunc == 3)THEN
1933 DO i=lft,llt
1934 n = i + nft
1935 ialel=iparg(7,ng)+iparg(11,ng)
1936 IF(ialel == 0)THEN
1937 iprt=ipartsp(n)
1938 mt =ipart(1,iprt)
1939 VALUE = gbuf%EINT(i)/
max(em30,pm(1,mt))
1940 ELSE
1941 VALUE = gbuf%EINT(i)/
max(em30,gbuf%RHO(i))
1942 ENDIF
1943 func(el2fa(nn3+n)) = VALUE
1944 ENDDO
1945
1946 ELSEIF(ifunc == 4)THEN
1947 DO i=lft,llt
1948 n = i + nft
1949 IF(el2fa(nn3+n)/=0)THEN
1950 IF (gbuf%G_TEMP > 0) THEN
1951 VALUE = gbuf%TEMP(i)
1952 ELSE
1953 VALUE = zero
1954 ENDIF
1955 func(el2fa(nn3+n)) = VALUE
1956 ENDIF
1957 ENDDO
1958
1959 ELSEIF(ifunc == 6.OR.ifunc == 7)THEN
1960 DO i=lft,llt
1961 n = i + nft
1962 IF(el2fa(nn3+n)/=0)THEN
1963 s11 = gbuf%SIG(jj(1) + i)
1964 s22 = gbuf%SIG(jj(2) + i)
1965 s33 = gbuf%SIG(jj(3) + i)
1966 s4 = gbuf%SIG(jj(4) + i)
1967 s5 = gbuf%SIG(jj(5) + i)
1968 s6 = gbuf%SIG(jj(6) + i)
1969 IF(ivisc > 0 ) THEN
1970 s11 =s11 + lbuf%VISC(jj(1) + i)
1971 s22 =s22 + lbuf%VISC(jj(2) + i)
1972 s33 =s33 + lbuf%VISC(jj(3) + i)
1973 s4 =s4 + lbuf%VISC(jj(4) + i)
1974 s5 =s5 + lbuf%VISC(jj(5) + i)
1975 s6 =s6 + lbuf%VISC(jj(6) + i)
1976 ENDIF
1977 p = - (s11 + s22 + s33 ) * third
1978 VALUE = p
1979 IF(ifunc == 7) THEN
1980 s1=s11 + p
1981 s2=s22 + p
1982 s3=s33 + p
1983 vonm2= three*(s4*s4 + s5*s5 + s6*s6 +
1984 . half*(s1*s1+s2*s2+s3*s3) )
1985 vonm= sqrt(vonm2)
1986 VALUE = vonm
1987 ENDIF
1988 func(el2fa(nn3+n)) = VALUE
1989 ENDIF
1990 ENDDO
1991
1992 ELSEIF(ifunc == 8.AND.jturb/=0)THEN
1993
1994 DO i=lft,llt
1995 nn = el2fa(nn3 + i + nft)
1996 IF(nn/=0)THEN
1997 func(nn) = gbuf%RK(i)
1998 ENDIF
1999 ENDDO
2000
2001 ELSEIF(ifunc == 9)THEN
2002
2003 DO i=lft,llt
2004 n = i + nft
2005 nn = el2fa(nn3 + i + nft)
2006 IF(nn/=0)THEN
2007 IF((mlw == 6 .OR. mlw == 17).AND.jturb/=0)THEN
2008 iprt=ipartsp(n)
2009 mt =ipart(1,iprt)
2010 VALUE=pm(81,mt)*gbuf%RK(i)**2/
2011 .
max(em15,gbuf%RE(i))
2012 ELSEIF(mlw == 46 .OR. mlw == 47)THEN
2013 VALUE = mbuf%VAR(i)
2014 ELSE
2015 VALUE = zero
2016 ENDIF
2017 func(nn) = VALUE
2018 ENDIF
2019 ENDDO
2020
2021 ELSEIF(ifunc == 10)THEN
2022
2023 DO i=lft,llt
2024 nn = el2fa(nn3 + i + nft)
2025 IF(nn/=0)THEN
2026 IF(mlw == 6 .OR. mlw == 17)THEN
2027 VALUE = lbuf%VK(i)
2028 ELSEIF(mlw == 46 .OR. mlw == 47)THEN
2029 VALUE = mbuf%VAR(nel+i)
2030 ELSE
2031 VALUE = zero
2032 ENDIF
2033 func(nn) = VALUE
2034 ENDIF
2035 ENDDO
2036
2037 ELSEIF((ifunc == 11.OR.ifunc == 12.OR.ifunc == 13)
2038 . .AND.mlw == 24)THEN
2039 DO i=lft,llt
2040 n = i + nft
2041 func(el2fa(nn3+n)) = lbuf%DAM(jj(ifunc-10) + i)
2042 ENDDO
2043
2044 ELSEIF(ifunc>=14.AND.ifunc<=19)THEN
2045 IF(ivisc == 0) THEN
2046 DO i=lft,llt
2047 n = i + nft
2048 IF(el2fa(nn3+n)/=0)THEN
2049 VALUE = gbuf%SIG(jj(ifunc - 13) + i)
2050 func(el2fa(nn3+n)) = VALUE
2051 ENDIF
2052 ENDDO
2053 ELSE
2054 DO i=lft,llt
2055 n = i + nft
2056 IF(el2fa(nn3+n)/=0)THEN
2057 VALUE = gbuf%SIG(jj(ifunc - 13) + i) +
2058 . lbuf%VISC(jj(ifunc - 13) + i)
2059 func(el2fa(nn3+n)) = VALUE
2060 ENDIF
2061 ENDDO
2062 ENDIF
2063
2064
2065 ELSEIF(ifunc>=20.AND.ifunc<=24)THEN
2066 ius = ifunc - 20
2067 nuvar = ipm(8,mt)
2068 IF (nuvar > 0) THEN
2069 DO i=lft,llt
2070 n = i + nft
2071 IF(el2fa(nn3+n)/=0 . and. ius <= nuvar)THEN
2072 VALUE = mbuf%VAR(i + ius*nel)
2073 func(el2fa(nn3+n)) = VALUE
2074 ENDIF
2075 ENDDO
2076 ENDIF
2077
2078 ELSEIF(ifunc == 25)THEN
2079 DO i=lft,llt
2080 n = i + nft
2081 IF(el2fa(nn3+n)/=0)THEN
2082
2083 VALUE=0.
2084 func(el2fa(nn3+n)) = VALUE
2085 ENDIF
2086 ENDDO
2087
2088 ELSEIF(ifunc == 887)THEN
2089 DO i=lft,llt
2090 n = i + nft
2091 VALUE = zero
2092 IF (el2fa(nn3+n)/=0)THEN
2093 IF (gbuf%G_BFRAC > 0)THEN
2094 VALUE = gbuf%BFRAC(i)
2095 ENDIF
2096 func(el2fa(nn3+n)) = VALUE
2097 ENDIF
2098 ENDDO
2099
2100 ELSEIF(ifunc == 3890) THEN
2101
2102 nfail = elbuf_tab(ng)%BUFLY(1)%NFAIL
2103 DO ir=1,nfail
2104 dfmax=>
2105 . elbuf_tab(ng)%BUFLY(1)%FAIL(1,1,1)%FLOC(ir)%DAMMX
2106 DO i=lft,llt
2107 n = i + nft
2108 func(el2fa(nn3+n)) = dfmax(i)
2109 ENDDO
2110 ENDDO
2111
2112 ELSEIF(ifunc == 4893)THEN
2113 DO i=lft,llt
2114 n = i + nft
2115 IF (el2fa(nn3+n)/=0)THEN
2116 func(el2fa(nn3+n)) = ispmd
2117 ENDIF
2118 ENDDO
2119
2120 ELSEIF(ifunc == 4894)THEN
2121 DO i=lft,llt
2122 n = i + nft
2123 IF (el2fa(nn3+n)/=0)THEN
2124 func(el2fa(nn3+n)) = gbuf%FILL(i)
2125 ENDIF
2126 ENDDO
2127
2128 ELSEIF (ifunc == 4895) THEN
2129
2130 IF (gbuf%G_SEQ > 0) THEN
2131
2132
2133
2134
2135
2136
2137
2138
2139
2140
2141
2142
2143
2144
2145! s22 = lbuf%SIG(jj(2) + i)
2146
2147
2148
2149
2150
2151
2152
2153
2154
2155
2156
2157
2158
2159
2160
2161
2162
2163
2164
2165
2166
2167
2168
2169
2170
2171
2172
2173
2174
2175 iprt = ipartsp(nft+1)
2176 imat = ipart(1,iprt)
2177 iadbuf = ipm(7,imat)
2178 nuparam= ipm(9,imat)
2179 uparam => bufmat(iadbuf:iadbuf+nuparam-1)
2180 lbuf => elbuf_tab(ng)%BUFLY(1)%LBUF(1,1,1)
2181
2182 IF (mlw == 72) THEN
2183
2184 DO i=lft,llt
2185 n = i + nft
2186 IF (el2fa(nn3+n) /= 0) THEN
2187 func(el2fa(nn3+n)) = gbuf%SEQ(i)
2188 ENDIF
2189 ENDDO
2190 ELSEIF (mlw == 74) THEN
2191
2192 ff0 = uparam(7)
2193 gg0 = uparam(8)
2194 hh0 = uparam(9)
2195 ll0 = uparam(10)
2196 mm0 = uparam(11)
2197 nn0 = uparam(12)
2198 DO i=lft,llt
2199 n = i + nft
2200 IF (el2fa(nn3+n) /= 0) THEN
2201 s11 = gbuf%SIG(jj(1) + i)
2202 s22 = gbuf%SIG(jj(2) + i)
2203 s33 = gbuf%SIG(jj(3) + i)
2204 s4 = gbuf%SIG(jj(4) + i)
2205 s5 = gbuf%SIG(jj(5) + i)
2206 s6 = gbuf%SIG(jj(6) + i)
2207 IF (ivisc > 0) THEN
2208 s11 = s11 + lbuf%VISC(jj(1) + i)
2209 s22 = s22 + lbuf%VISC(jj(2) + i)
2210 s33 = s33 + lbuf%VISC(jj(3) + i)
2211 s4 = s4 + lbuf%VISC(jj(4) + i)
2212 s5 = s5 + lbuf%VISC(jj(5) + i)
2213 s6 = s6 + lbuf%VISC(jj(6) + i)
2214 ENDIF
2215 p = - (s11 + s22 + s33) * third
2216 s1 = s11 + p
2217 s2 = s22 + p
2218 s3 = s33 + p
2219
2220 crit = ff0*(s2 - s3)**2
2221 . + gg0*(s3 - s1)**2
2222 . + hh0*(s1 - s2)**2
2223 . + two*ll0*s5**2
2224 . + two*mm0*s6**2
2225 . + two*nn0*s4**2
2226
2227 func(el2fa(nn3+n)) = sqrt(crit)
2228 ENDIF
2229 ENDDO
2230 ELSEIF (mlw == 93) THEN
2231
2232 DO i=lft,llt
2233 n = i + nft
2234 IF (el2fa(nn3+n) /= 0) THEN
2235 func(el2fa(nn3+n)) = gbuf%SEQ(i)
2236 ENDIF
2237 ENDDO
2238 ELSEIF (mlw == 104) THEN
2239 DO il=1,nlay
2240 DO is=1,npts
2241 DO it=1,nptt
2242 DO ir=1,nptr
2243 lbuf => elbuf_tab(ng)%BUFLY(il)%LBUF(ir,is,it)
2244 DO i=lft,llt
2245 n = i + nft
2246 IF (el2fa(nn3+n) /= 0) THEN
2247 func(el2fa(nn3+n)) = func(el2fa(nn3+n)) + lbuf%SEQ(i)/nptg
2248 ENDIF
2249 ENDDO
2250 ENDDO
2251 ENDDO
2252 ENDDO
2253 ENDDO
2254 ELSEIF (mlw == 115) THEN
2255
2256 DO i=lft,llt
2257 n = i + nft
2258 IF (el2fa(nn3+n) /= 0) THEN
2259 func(el2fa(nn3+n)) = gbuf%SEQ(i)
2260 ENDIF
2261 ENDDO
2262 ENDIF
2263
2264 ELSE
2265 IF (ivisc == 0) THEN
2266 DO i=lft,llt
2267 n = i + nft
2268 IF (el2fa(nn3+n) /= 0) THEN
2269 p = - (gbuf%SIG(jj(1) + i)
2270 . + gbuf%SIG(jj(2) + i)
2271 . + gbuf%SIG(jj(3) + i)) * third
2272 s1 = gbuf%SIG(jj(1) + i)+p
2273 s2 = gbuf%SIG(jj(2) + i)+p
2274 s3 = gbuf%SIG(jj(3) + i)+p
2275 vonm2 = three*(gbuf%SIG(jj(4) + i)**2 +
2276 . gbuf%SIG(jj(5) + i)**2 +
2277 . gbuf%SIG(jj(6) + i)**2 +
2278 . half*(s1*s1+s2*s2+s3*s3))
2279 vonm = sqrt(vonm2)
2280 func(el2fa(nn3+n)) = vonm
2281 ENDIF
2282 ENDDO
2283 ELSE
2284 DO i=lft,llt
2285 n = i + nft
2286 IF (el2fa(nn3+n) /= 0) THEN
2287 s11 = gbuf%SIG(jj(1) + i) + lbuf%VISC(jj(1) + i)
2288 s22 = gbuf%SIG(jj(2) + i) + lbuf%VISC(jj(2) + i)
2289 s33 = gbuf%SIG(jj(3) + i) + lbuf%VISC(jj(3) + i)
2290 s4 = gbuf%SIG(jj(4) + i) + lbuf%VISC(jj(4) + i)
2291 s5 = gbuf%SIG(jj(5) + i) + lbuf%VISC(jj(5) + i)
2292 s6 = gbuf%SIG(jj(6) + i) + lbuf%VISC(jj(6) + i)
2293 p = - (s11 + s22 + s33) * third
2294 s1 = s11 + p
2295 s2 = s22 + p
2296 s3 = s33 + p
2297 vonm2 = three*(s4*s4 + s5*s5 + s6*s6 +
2298 . half*(s1*s1 + s2*s2 + s3*s3))
2299 vonm = sqrt(vonm2)
2300 func(el2fa(nn3+n)) = vonm
2301 ENDIF
2302 ENDDO
2303 ENDIF
2304 ENDIF
2305
2306 ELSEIF(ifunc == 4965)THEN
2307 IF (gbuf%G_OFF > 0) THEN
2308 DO i=lft,llt
2309 n = i + nft
2310 IF(gbuf%OFF(i) > one) THEN
2311 func(el2fa(nn3+n)) = gbuf%OFF(i) - one
2312 ELSEIF((gbuf%OFF(i) >= zero .AND. gbuf%OFF(i) <= one)) THEN
2313 func(el2fa(nn3+n)) = gbuf%OFF(i)
2314 ELSE
2315 func(el2fa(nn3+n)) = -one
2316 ENDIF
2317 ENDDO
2318 ENDIF
2319
2320 ELSE
2321 DO i=lft,llt
2322 n = i + nft
2323 IF(el2fa(nn3+n)/=0)THEN
2324 func(el2fa(nn3+n)) = zero
2325 ENDIF
2326 ENDDO
2327 ENDIF
2328
2329 ELSEIF (ity == 101) THEN
2330
2331
2332 gbuf => elbuf_tab(ng)%GBUF
2333
2334 IF(ifunc == 1)THEN
2335 DO i=lft,llt
2336 IF (mlw == 10 .OR. mlw == 21) THEN
2337 evar(i) = lbuf%EPSQ(i)
2338 ELSEIF (gbuf%G_PLA > 0) THEN
2339 evar(i) = gbuf%PLA(i)
2340 ENDIF
2341 ENDDO
2342
2343 ELSEIF(ifunc == 6 .OR. ifunc == 7)THEN
2344 DO i=lft,llt
2345 n = i + nft
2346 s11 = gbuf%SIG(jj(1) + i)
2347 s22 = gbuf%SIG(jj(2) + i)
2348 s33 = gbuf%SIG(jj(3) + i)
2349 s4 = gbuf%SIG(jj(4) + i)
2350 s5 = gbuf%SIG(jj(5) + i)
2351 s6 = gbuf%SIG(jj(6) + i)
2352 IF(ivisc > 0)THEN
2353 s11 = s11 + lbuf%VISC(jj(1) + i)
2354 s22 = s22 + lbuf%VISC(jj(2) + i)
2355 s33 = s33 + lbuf%VISC(jj(3) + i)
2356 s4 = s4 + lbuf%VISC(jj(4) + i)
2357 s5 = s5 + lbuf%VISC(jj(5) + i)
2358 s6 = s6 + lbuf%VISC(jj(6) + i)
2359 ENDIF
2360 p = - (s11 + s22 + s33) * third
2361 VALUE = p
2362 IF (ifunc==7) THEN
2363 s1= s11 + p
2364 s2= s22 + p
2365 s3= s33 + p
2366 vonm2= three*(s4*s4 + s5*s5 + s6*s6+
2367 . half*(s1*s1+s2*s2+s3*s3) )
2368 vonm= sqrt(vonm2)
2369 VALUE = vonm
2370 ENDIF
2371 evar(i) = VALUE
2372 ENDDO
2373
2374 ELSEIF(ifunc==2)THEN
2375 DO i=lft,llt
2376 evar(i) = gbuf%RHO(i)
2377 ENDDO
2378
2379 ELSEIF(ifunc==3)THEN
2380 DO i=lft,llt
2381 VALUE = gbuf%EINT(i)/
max(em30,gbuf%RHO(i))
2382 evar(i) = VALUE
2383 ENDDO
2384
2385 ELSEIF (ifunc == 26) THEN
2386 evar(lft:llt) = gbuf%EPSD(lft:llt)
2387
2388 ELSE
2389 DO i=lft,llt
2390 n = i + nft
2391 evar(i) = zero
2392 ENDDO
2393 ENDIF
2394
2395 DO i=lft,llt
2396 n = i + nft
2397 DO j=1,27
2398 func(el2fa(nn4+n)+j-1) = evar(i)
2399 ENDDO
2400 ENDDO
2401 ELSE
2402 CONTINUE
2403 ENDIF
2404
2405 ENDDO
2406 ENDIF
2407 ENDDO
2408
2409
2410 IF (nspmd == 1) THEN
2411 DO n=1,nbf
2412 r4 = func(n)
2414 ENDDO
2415 ELSE
2416 DO n = 1, nbf
2417 wal(n) = func(n)
2418 ENDDO
2419 IF (ispmd == 0) THEN
2420 buf = numelsg+3*numels16g+numsphg
2421 ELSE
2422 buf=1
2423 ENDIF
2425 ENDIF
2426
2427 IF(ALLOCATED(wa_l))DEALLOCATE(wa_l)
2428 RETURN
for(i8=*sizetab-1;i8 >=0;i8--)
type(alefvm_buffer_), target alefvm_buffer
type(alefvm_param_), target alefvm_param
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)
subroutine output_schlieren(evar, ix, x, iparg, wa_l, elbuf_tab, ale_connectivity, vol, ng, nix, ityp)
subroutine schlieren_buffer_gathering(nercvois, nesdvois, lercvois, lesdvois, iparg, elbuf_tab, multi_fvm, itherm)
subroutine spmd_r4get_partn(size, nbf_l, nbpart, iadg, wal, buf)
subroutine srotorth(x, ixs, gama, khbe, ityp, icsig)
void write_r_c(float *w, int *len)