49 SUBROUTINE dfuncs(ELBUF_TAB ,FUNC ,IFUNC ,IPARG ,GEO ,
50 2 IXS ,MASS ,PM ,EL2FA ,NBF ,
51 3 IPM ,IGEO ,NBPART ,EHOUR ,ANIM ,
52 4 IADG ,SPBUF ,IPART ,IPARTSP ,ISPH3D ,
53 5 X ,V ,W ,ALE_CONNECTIVITY,
54 6 NERCVOIS ,NESDVOIS ,LERCVOIS ,LESDVOIS ,BUFMAT ,
55 7 FANI_CELL ,MULTI_FVM ,MAT_PARAM ,ITHERM )
68 USE multimat_param_mod ,
ONLY : m51_n0phas, m51_nvphas
69 USE matparam_def_mod ,
ONLY : matparam_struct_
71 use element_mod ,
only : nixs
75#include "implicit_f.inc"
79#include "vect01_c.inc"
91#include "tabsiz_c.inc"
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(*)
98 INTEGER IPARG(,*),(*),IXS(NIXS,NUMELS),IFUNC,NBF,ISPH3D,
99 . NBPART,IADG(NSPMD,*),IPM(NPROPMI,NUMMAT),
100 . IPART(LIPART1,*),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
105 TYPE (MATPARAM_STRUCT_) ,
DIMENSION(NUMMAT) ,
INTENT(IN) :: MAT_PARAM
109 INTEGER I,J,L,N, NG, NEL, MLW,
110 . nn, k1, k2,jturb,mt, ialel,irupt,
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
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
133 my_real,
DIMENSION(:),
POINTER :: uvarf, damf,dfmax,tdele
134 my_real,
DIMENSION(:) ,
POINTER :: uparam
146 CALL my_alloc(wal,nbf)
150 nn4 = nn3 + isph3d*(numsph+maxpjet)
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 )
173 DO offset = 0,nel-1,nvsiz
174 nft = iparg(3,ng) + offset
175 isolnod = iparg(28,ng)
178 llt=
min(nvsiz,nel-offset)
180 is_euler=iparg(11,ng)
189 IF (jcvt==1.AND.isorth/=0) jcvt=2
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
201 IF (igtyp==20 .OR. igtyp==21 .OR. igtyp==22) tshell = 1
202 IF (igtyp==21 .OR. igtyp==22) tsh_ort = 1
215 IF (mlw /= 0 .and. mlw /= 13 .and. igtyp /= 0)
THEN
216 jturb=iparg(12,ng)*(iparg(7,ng)+iparg(11,ng))
218 IF(ifunc == 1 .AND. (mlw /= 12 .AND. mlw /=14 .AND. mlw /= 25))
THEN
220 IF (gbuf%G_PLA > 0)
THEN
221 evar(i) = gbuf%PLA(i)
225 ELSEIF(ifunc == 2)
THEN
227 evar(i) = gbuf%RHO(i)
230 ELSEIF(ifunc == 3)
THEN
233 ialel=iparg(7,ng)+iparg(11,ng)
236 evar(i) = gbuf%EINT(i)/
max(em30,pm(1,mt))
238 evar(i) = gbuf%EINT(i)/
max(em30,gbuf%RHO(i))
240 IF( nfilsol /= 0 .AND. gbuf%G_FILL /=
241 . evar(i) = evar(i) * gbuf%FILL(i)
244 ELSEIF (ifunc == 4)
THEN
246 evar(1:nel) = elbuf_tab(ng)%GBUF%TEMP(1:nel)
250 IF (elbuf_tab(ng)%BUFLY(il)%L_TEMP > 0)
THEN
251 DO it=1,elbuf_tab(ng)%BUFLY(il)%NPTT
254 lbuf => elbuf_tab(ng)%BUFLY(il)%LBUF(ir,is,it)
255 evar(1:nel) = evar(1:nel) + lbuf%TEMP(1:nel)/nptg
263 ELSEIF(ifunc == 6 .OR. ifunc == 7)
THEN
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)
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)
280 p = - (s11 + s22 + s33 ) * third
286 vonm2 = three*(s4*s4 + s5*s5 + s6*s6 +
287 . half*(s1*s1 + s2*s2 + s3*s3))
290 IF( nfilsol /= 0 .AND. gbuf%G_FILL /= 0 )
291 .
VALUE =
VALUE * gbuf%FILL(i)
297 ELSEIF(ifunc == 8 .and. jturb /= 0)
THEN
303 ELSEIF(ifunc == 9)
THEN
307 IF((mlw == 6 .OR. mlw == 17).AND.jturb/=0)
THEN
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)
318 ELSEIF(ifunc == 10)
THEN
321 evar(i) = fani_cell%VORT_X(i+nft)
325 ELSEIF((ifunc == 11.OR.ifunc == 12.OR.ifunc == 13) .AND.mlw == 24)
THEN
328 evar(i) = lbuf%DAM(jj(ifunc-10) + i)
332 ELSEIF(ifunc>=14.AND.ifunc<=19)
THEN
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)
340 evar(i) = evar(i) + lbuf%VISC(jj(ifunc - 13)+i
344 ELSEIF(ifunc>=20 .AND. ifunc<=24)
THEN
351 IF (isolnod == 8 .AND. mlw == 59)
THEN
354 nfail = elbuf_tab(ng)%BUFLY(1)%NFAIL
356 irupt = mat_param(mt)%FAIL(1)%IRUPT
357 IF (irupt == 20)
THEN
362 . elbuf_tab(ng)%BUFLY(1)%FAIL(ipt,1,1)%FLOC(ir)%VAR
364 user(i) =
max(user(i),uvarf(ius*nel + i))
380 IF (nuvar > ius) user(i) = user(i)
394 ELSEIF (nuvar > ius)
THEN
402 ELSEIF(ifunc == 25)
THEN
408 ELSEIF(ifunc == 26)
THEN
409 IF (gbuf%G_EPSD > 0)
THEN
411 evar(i) = gbuf%EPSD(i)
419 ELSEIF(ifunc == 28 .AND. int22>0)
THEN
421 evar(i) = int22_fcell_anim(i+nft)
424 ELSEIF(ifunc>=27.AND.ifunc<=81.AND.mlw
THEN
431 IF (isolnod == 8 .AND. mlw == 59)
THEN
434 nfail = elbuf_tab(ng)%BUFLY(1)%NFAIL
436 irupt = mat_param(mt)%FAIL(1)%IRUPT
437 IF (irupt == 20)
THEN
442 . elbuf_tab(ng)%BUFLY(1)%FAIL(ipt,1,1)%FLOC(ir)%VAR
444 user(i) =
max(user(i),uvarf(ius*nel + i))
455 mbuf => elbuf_tab(ng)%BUFLY(il)%MAT(ir,is,it)
460 IF (nuvar > ius) user(i) = user(i)
461 . + mbuf%VAR(i+ius*nel)/nptg
472 IF (isolnod == 8 .AND. mlw == 59)
THEN
474 ELSEIF (nuvar > ius)
THEN
481 ELSEIF(ifunc>=283.AND.ifunc<=286)
THEN
494 uparam => bufmat(iadbuf:iadbuf+nuparam-1)
495 isubmat = (ifunc-282)
497 ius=m51_n0phas+(isubmat-1)*m51_nvphas
500 k = llt * ((ius )+ipos-1)
507 IF (mlw==51 .OR. (mlw==37.AND.ifrac<=2))
THEN
512 mbuf => elbuf_tab(ng)%BUFLY(il)%MAT(ir,is,it)
514 user(i) = mbuf%VAR(k+i)
520 ELSEIF (mlw == 151)
THEN
522 lbuf => elbuf_tab(ng)%BUFLY(ifunc-282)%LBUF(1,1,1)
524 user(i) = lbuf%VOL(i) / gbuf%VOL(i)
535 evar(lft:llt) = user(lft:llt)
538 ELSEIF(ifunc>=82.AND.ifunc<=281.AND.mlw == 25)
THEN
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
550 IF (elbuf_tab(ng)%BUFLY(il)%L_PLA > 0)
THEN
554 lbuf=>elbuf_tab(ng)%BUFLY(il)%LBUF(ir,is,it)
556 evar(i) = evar(i) + lbuf%PLA(i)
566 ELSEIF (ifunc == 282 .AND. mlw == 25)
THEN
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
575 npg_plane = nptr * npts * 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
592 ELSEIF (ifunc >= 287 .AND. ifunc < 887)
THEN
594 numlay = ((ifunc - 287)/3)+1
595 IF(numlay <= nlay)
THEN
596 lbuf => elbuf_tab(ng)%BUFLY(numlay)%LBUF(1,1,1)
602 gama(1)= lbuf%GAMA(jj(1)+i)
603 gama(2)= lbuf%GAMA(jj(2)+i)
608 ELSEIF(igtyp == 21)
THEN
609 gama(1)= gbuf%GAMA(jj(1)+i)
610 gama(2)= gbuf%GAMA(jj(2)+i)
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)
624 . gama,jhbe,igtyp,iparg(17,ng) )
635 IF (abs(t31) - one < em20)
THEN
639 my_value =
max(abs(cos(teta)),em20) * sign(my_one,cos(teta))
640 IF(t32==zero.AND.t33==zero)
THEN
645 IF(t21==zero.AND.t11==zero)
THEN
648 phi = atan2(t21/my_value,t11/my_value)
657 psi = atan2(-t12,-t13)
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
676 ELSEIF (ifunc == 887 )
THEN
678 IF(gbuf%G_BFRAC > 0)
THEN
683 evar(i) =
max(evar(i),multi_fvm%BFRAC(ifrac,i+nft))
687 evar(lft:llt) = gbuf%BFRAC(lft:llt)
689 ELSEIF (mlw == 41)
THEN
691 evar(i) = mbuf%VAR(7 * nel + i)
697 ELSEIF(ifunc>= 888 .AND.ifunc<= 3888 .AND. mlw>=28)
THEN
703 IF (isolnod == 8 .AND. mlw == 83)
THEN
706 nfail = elbuf_tab(ng)%BUFLY(1)%NFAIL
708 irupt = mat_param(mt)%FAIL(1)%IRUPT
709 IF (irupt == 26)
THEN
710 IF(ifunc <= 890 )
THEN
717 . elbuf_tab(ng)%BUFLY(1)%FAIL(ipt,1,1)%FLOC(ir)%DAM
719 evar(i) =
max(evar(i) ,damf(ius*nel + i))
723 ELSEIF(ifunc <= 1890 )
THEN
726 is = (mod(ijk,100)-mod(ijk,10))/10
730 . elbuf_tab(ng)%BUFLY(1)%FAIL(iir,1,1)%FLOC(ir)%DAM
735 ELSEIF(ifunc <= 2890 )
THEN
738 is = (mod(ijk,100)-mod(ijk,10))/10
742 . elbuf_tab(ng)%BUFLY(1)%FAIL(iir,1,1)%FLOC(ir)%DAM
744 evar(i) = damf(nel+i)
750 is = (mod(ijk,100)-mod(ijk,10))/10
754 . elbuf_tab(ng)%BUFLY(1)%FAIL(iir,1,1)%FLOC(ir)%DAM
756 evar(i) = damf(2*nel+i)
764 ELSEIF (ifunc >= 3891.AND.ifunc <= 4889 )
THEN
771 il = (mod(ijk,100)-mod(ijk,10))/10
776 is = (mod(ijk,100)-mod(ijk,10))/10
782 IF (iir <= nptr.AND.is <= npts.AND.it <= nptt)
THEN
783 nfail = elbuf_tab(ng)%BUFLY(il)%NFAIL
786 . elbuf_tab(ng)%BUFLY(il)%FAIL(iir,is,it)%FLOC(ir)%DAMMX
788 evar(i) =
max(evar(i),dfmax(i))
792 ELSEIF (ifunc >= 5911.AND.ifunc <= 9920 .AND. tshell>0)
THEN
797 IF ((isolnod == 6 .OR. isolnod == 8).AND.jhbe == 15)
THEN
798 il = mod(abs(ijk)/10,201)
802 ELSEIF (isolnod == 16.OR.(isolnod == 8 .AND.jhbe == 14))
THEN
806 il=mod(abs(ijk)/10,201)
811 IF (iir <= nptr.AND.is <= npts.AND.it <= nptt)
THEN
812 nfail = elbuf_tab(ng)%BUFLY(il)%NFAIL
815 . elbuf_tab(ng)%BUFLY(il)%FAIL(iir,is,it)%FLOC(ir)%DAMMX
817 evar(i) =
max(evar(i),dfmax(i))
821 ELSEIF(ifunc == 3890)
THEN
827 nfail = elbuf_tab(ng)%BUFLY(il)%NFAIL
833 . elbuf_tab(ng)%BUFLY(il)%FAIL(iir,is,it)%FLOC(ir)%DAMMX
835 evar(i) =
max(evar(i),dfmax(i))
842 ELSEIF(ifunc == 4890)
THEN
847 nfail = elbuf_tab(ng)%BUFLY(il)%NFAIL
853 . elbuf_tab(ng)%BUFLY(il)%FAIL(iir,is,it)%FLOC(ir)%TDEL
855 evar(i) =
max(evar(i),tdele(i))
863 ELSEIF(ifunc == 4891)
THEN
866 evar(i) = multi_fvm%SOUND_SPEED(i + nft)
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)
873 evar(i) = lbuf%SSP(i)
877 ELSEIF(ifunc == 4892)
THEN
878 ialel=iparg(7,ng)+iparg(11,ng)
884 2 iparg ,wa_l ,elbuf_tab ,ale_connectivity ,gbuf%VOL,
888 ELSEIF(ifunc == 4893)
THEN
893 ELSEIF(ifunc == 4894)
THEN
895 evar(i) = gbuf%FILL(i)
898 ELSEIF (ifunc == 4895)
THEN
900 IF (gbuf%G_SEQ > 0)
THEN
945 uparam => bufmat(iadbuf:iadbuf+nuparam-1)
951 evar(i) = gbuf%SEQ(i)
954 ELSEIF (mlw == 74)
THEN
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)
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)
977 p = - (s11 + s22 + s33) * third
982 crit = ff0*(s2 - s3)**2
991 ELSEIF (mlw == 93)
THEN
994 evar(i) = gbuf%SEQ(i)
996 ELSEIF (mlw == 104)
THEN
1004 lbuf => elbuf_tab(ng)%BUFLY(il)%LBUF(ir,is,it)
1006 evar(i) = evar(i) + lbuf%SEQ(i)/nptg
1012 ELSEIF (mlw == 115)
THEN
1015 evar(i) = gbuf%SEQ(i)
1020 lbuf => elbuf_tab(ng)%BUFLY(1)%LBUF(1,1,1)
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)
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)
1036 p = - (s11 + s22 + s33) * third
1040 vonm2 = three*(s4*s4 + s5*s5 + s6*s6 +
1041 . half*(s1*s1 + s2*s2 + s3*s3))
1045 ENDIF !
IF (gbuf%G_SEQ > 0)
1047 ELSEIF (ifunc == 4896)
THEN
1048 IF (gbuf%G_QVIS > 0)
THEN
1050 evar(i) = gbuf%QVIS(i)
1057 ELSEIF (ifunc >= 4931 .AND. ifunc <= 4934)
THEN
1059 itrimat = ifunc - 4930
1062 iadbuf = ipm(7,imat)
1063 nuparam= ipm(9,imat)
1064 uparam => bufmat(iadbuf:iadbuf+nuparam-1)
1066 isubmat = uparam(276+isubmat)
1067 ius=m51_n0phas+(isubmat-1)*m51_nvphas
1071 k = llt * ((ius )+ipos-1)
1073 evar(i) = mbuf%VAR(k+i)
1081 ELSEIF (ifunc == 4921)
THEN
1082 IF (gbuf%G_VOL > 0)
THEN
1083 ialel=iparg(7,ng)+iparg(11,ng)
1087 evar(i) = pm(1,mt)*gbuf%VOL(i)
1088 IF(gbuf%RHO(i)>zero)evar(i)=evar(i)/gbuf%RHO(i)
1092 evar(i) = gbuf%VOL(i)
1101 ELSEIF(ifunc>=4897 .AND. ifunc<=4929 .AND. ifunc/=4921)
THEN
1105 IF( ifunc>=4897 .AND. ifunc<=4900)
THEN
1108 ELSEIF(ifunc>=4901 .AND. ifunc<=4904)
THEN
1111 ELSEIF(ifunc>=4905 .AND. ifunc<=4908)
THEN
1114 ELSEIF(ifunc>=4909 .AND. ifunc<=4912)
THEN
1117 ELSEIF(ifunc>=4913 .AND. ifunc<=4916)
THEN
1120 ELSEIF(ifunc>=4917 .AND. ifunc<=4920)
THEN
1123 ELSEIF(ifunc>=4922 .AND. ifunc<=4925)
THEN
1126 ELSEIF(ifunc>=4926 .AND. ifunc<=4929)
THEN
1131 iadbuf = ipm(7,imat)
1132 nuparam = ipm(9,imat)
1133 uparam => bufmat(iadbuf:iadbuf+nuparam-1)
1134 itrimat = ifunc - ideb
1137 isubmat = uparam(276+isubmat)
1138 ius = m51_n0phas+(isubmat-1)*m51_nvphas
1142 IF(ipos /=0 .AND. ipos /= 08 )
THEN
1143 k = llt * ((ius )+ipos-1)
1145 evar(i) = mbuf%VAR(k+i)
1148 ELSEIF(ipos == 08)
THEN
1149 k1 = llt * ((ius )+08-1)
1150 k2 = llt * ((ius )+12-1)
1151 evar(lft:llt) = zero
1153 IF(mbuf%VAR(k2+i) /= zero) evar(i) = mbuf%VAR
1157 itrimat = ifunc - ideb
1159 k1 = llt * ((ius )+12-1)
1160 k2 = llt * ((ius )+11-1)
1162 evar(i) = mbuf%VAR(k1+i) * mbuf%VAR(k2+i)
1166 evar(lft:llt) = zero
1174 ELSEIF (ifunc == 4930)
THEN
1175 IF (gbuf%G_TB > 0)
THEN
1177 evar(i) = -gbuf%TB(i)
1185 ELSEIF (ifunc == 4935 .OR. ifunc == 4936)
THEN
1187 evar(lft:llt) = zero
1189 user(lft:llt) = zero
1195 mbuf => elbuf_tab(ng)%BUFLY(il)%MAT(ir,is,it)
1197 user(i) = user(i) + mbuf%VAR(i+(ius-1)*nel)/nptg
1203 evar(lft:llt) = user(lft:llt)
1206 ELSEIF (ifunc == 4937)
THEN
1209 evar(i) = gbuf%DT(i)
1214 ELSEIF (ifunc>=4938 .AND. ifunc<=4944)
THEN
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
1221 evar(i) = gbuf%MOM(jj(ifunc-4937) + i)
1223 ELSEIF(ifunc==4941)
THEN
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) )
1229 ELSEIF(ifunc==4942)
THEN
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) )
1235 ELSEIF(ifunc==4943)
THEN
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) )
1241 ELSEIF(ifunc==4944)
THEN
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) )
1255 ELSEIF (ifunc>=4945 .AND. ifunc<=4951)
THEN
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
1262 evar(i) = gbuf%MOM(jj(ifunc-4944)+i) / gbuf%RHO(i)
1264 ELSEIF(ifunc==4948)
THEN
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)
1270 ELSEIF(ifunc==4949)
THEN
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)
1276 ELSEIF(ifunc==4950)
THEN
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)
1282 ELSEIF(ifunc==4951)
THEN
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)
1296 ELSEIF (ifunc>=4952 .AND. ifunc<=4958)
THEN
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
1306 ELSEIF(ifunc==4955)
THEN
1312 ELSEIF(ifunc==4956)
THEN
1318 ELSEIF(ifunc==4957)
THEN
1324 ELSEIF(ifunc==4958)
THEN
1337 ELSEIF (ifunc == 4959)
THEN
1338 IF(gbuf%G_ISMS>0)
THEN
1340 evar(i) = gbuf%ISMS(i)
1344 ELSEIF(ifunc == 4960)
THEN
1347 evar(i) = fani_cell%VORT_Y(i+nft)
1350 ELSEIF(ifunc == 4961)
THEN
1353 evar(i) = fani_cell%VORT_Z(i+nft)
1356 ELSEIF(ifunc == 4962)
THEN
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)
1366 ELSEIF(ifunc == 4963)
THEN
1369 evar(i) = gbuf%EINT(i)*gbuf%VOL(i)
1372 ELSEIF(ifunc == 4964 .AND. (mlw == 12 .OR. mlw ==14 .OR. mlw == 25))
THEN
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
1381 IF (elbuf_tab(ng)%BUFLY(il)%L_PLA > 0)
THEN
1385 lbuf=>elbuf_tab(ng)%BUFLY(il)%LBUF(ir,is,it)
1387 evar(i) = evar(i) + lbuf%PLA(i)/nptg
1396 IF (gbuf%G_PLA > 0) evar(i) = gbuf%PLA(i)
1400 ELSEIF(ifunc == 4965)
THEN
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)
1413 ELSEIF(ifunc == 4966)
THEN
1414 IF (mlw == 151)
THEN
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)
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)
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)
1435 IF(elbuf_tab(ng)%BUFLY(1)%L_SSP /= 0)
THEN
1436 lbuf => elbuf_tab(ng)%BUFLY(1)%LBUF(1,1,1)
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)
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)
1463 ELSEIF(ifunc == 4967)
THEN
1464 gbuf => elbuf_tab(ng)%GBUF
1465 IF (mlw == 151)
THEN
1468 lbuf => elbuf_tab(ng)%BUFLY(imat)%LBUF(1,1,1)
1470 vfrac(i,imat) = lbuf%VOL(i) / gbuf%VOL(i)
1473 ELSEIF(mlw == 20)
THEN
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)
1479 ELSEIF(mlw == 37)
THEN
1480 mbuf => elbuf_tab(ng)%BUFLY(1)%MAT(1,1,1)
1483 vfrac(i,1) = mbuf%VAR(i+3*nel)
1484 vfrac(i,2) = mbuf%VAR(i+4*nel)
1486 ELSEIF(mlw == 51)
THEN
1489 iadbuf = ipm(7,imat)
1490 nuparam= ipm(9,imat)
1491 uparam => bufmat(iadbuf:iadbuf+nuparam-1)
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)
1500 vfrac(i,1) = mbuf%VAR(i+iu(1)*nel)
1501 vfrac(i,2) = mbuf%VAR(i+iu(2)*nel)
1502 vfrac(i,3) = mbuf%VAR(i+iu(3)*nel)
1503 vfrac(i,4) = mbuf%VAR(i+iu(4)*nel)
1507 vfrac(1:nel,1:21)=zero
1513 values(i) = values(i) + vfrac(i,imat)*imat
1521 ELSEIF ((ifunc == 4968).AND.gbuf%G_DMG>0)
THEN
1529 lbuf => elbuf_tab(ng)%BUFLY(il)%LBUF(ir,is,it)
1531 evar(i) = evar(i) + lbuf%DMG(i)/nptg
1538 ELSEIF ((ifunc == 4969).AND.gbuf%G_PLANL>0)
THEN
1546 lbuf => elbuf_tab(ng)%BUFLY(1)%LBUF(ir,is,it)
1548 evar(i) = evar(i) + lbuf%PLANL(i)/nptg
1554 ELSEIF ((ifunc == 4970).AND.gbuf%G_EPSDNL>0)
THEN
1562 lbuf => elbuf_tab(ng)%BUFLY(1)%LBUF(ir,is,it)
1564 evar(i) = evar(i) + lbuf%EPSDNL(i)/nptg
1571 ELSEIF(ifunc == 4971 .AND. gbuf%G_TSAIWU > 0)
THEN
1577 IF (elbuf_tab(ng)%BUFLY(il)%L_TSAIWU > 0)
THEN
1581 lbuf=>elbuf_tab(ng)%BUFLY(il)%LBUF(ir,is,it)
1583 evar(i) = evar(i) + lbuf%TSAIWU(i)/nptg
1592 ELSEIF(ifunc >= 4971+1 .AND. ifunc<= 4971+200 .AND. gbuf%G_TSAIWU > 0)
THEN
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
1602 IF (elbuf_tab(ng)%BUFLY(il)%L_TSAIWU > 0)
THEN
1606 lbuf=>elbuf_tab(ng)%BUFLY(il)%LBUF(ir,is,it)
1608 evar(i) = evar(i) + lbuf%TSAIWU(i)
1619 ELSEIF( ifunc == 5172 )
THEN
1622 IF (mlw == 151)
THEN
1623 nlay = elbuf_tab(ng)%NLAY
1627 ieos = ipm(4, mat_param(mt)%MULTIMAT%MID(imat) )
1629 ntillotson = ntillotson + 1
1630 imat_tillotson = imat
1634 IF(ntillotson > 1)
THEN
1637 ieos = ipm(4, mat_param(mt)%MULTIMAT%MID(imat) )
1639 ebuf => elbuf_tab(ng)%BUFLY(imat)%EOS(1,1,1)
1640 nvareos = elbuf_tab(ng)%BUFLY(imat)%NVAR_EOS
1642 evar(i) = evar(i) + ebuf%VAR(i) * fac
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
1652 evar(i) = ebuf%VAR(i)
1659 ebuf => elbuf_tab(ng)%BUFLY(1)%EOS(1,1,1)
1660 nvareos = elbuf_tab(ng)%BUFLY(1)%NVAR_EOS
1662 evar(i) = ebuf%VAR(i)
1668 elseif(ifunc == 5173)
then
1671 func(el2fa(nn1+nft+i)) = zero
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)
1688 do ilay=1,multi_fvm%nbmat
1689 rho0g = rho0g + rho0i(ilay)*v0i(ilay)
1692 func(el2fa(nn1+nft+i)) = multi_fvm%rho(i+nft) / rho0g - one
1694 elseif(mlw == 51)
then
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)
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)
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 + ipos-1
1716 isubmat = nint(uparam(276+4)); iu(4)=m51_n0phas+(isubmat-1)*m51_nvphas + ipos-1
1717 rhoi(1) = mbuf%var(i+iu(1)*nel)
1718 rhoi(2) = mbuf%var(i+iu(2)*nel)
1719 rhoi(3) = mbuf%var(i+iu(3)*nel)
1720 rhoi(4) = mbuf%var(i+iu(4)*nel)
1722 mid = mat_param(mt)%multimat%mid(ilay)
1723 rho0i(ilay) = pm(89,mid)
1724 vi(ilay) = vfrac(i,ilay) * gbuf%vol(i)
1726 v0i(ilay) = rhoi(ilay) * vi(ilay) / rho0i(ilay)
1731 rho0g = rho0g + rho0i(ilay)*v0i(ilay)
1734 func(el2fa(nn1+nft+i)) = gbuf%rho(i) / rho0g - one
1736 elseif(mlw == 37)
then
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)
1754 rho0g = rho0g + rho0i(ilay)*v0i(ilay)
1757 func(el2fa(nn1+nft+i)) = gbuf%rho(i) / rho0g - one
1759 elseif(mlw == 20)
then
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)
1776 rho0g = rho0g + rho0i(ilay)*v0i(ilay)
1779 func(el2fa(nn1+nft+i)) = gbuf%rho(i) / rho0g - one
1783 if(pm(89,mt) > zero)
then
1784 func(el2fa(nn1+nft+i)) = gbuf%rho(i) / pm(89,mt) - one
1790 elseif(ifunc >= 5173+1 .and. ifunc <= 5173+10)
then
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.
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,i+nft) / rho0i(ilay) - one
1813 elseif(mlw == 51)
then
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)
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)
1829 isubmat = nint(uparam(276+ilay)); iu(ilay)=m51_n0phas+(isubmat-1)*m51_nvphas + ipos-1
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
1834 elseif(mlw == 37)
then
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(1,1,1)
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+nft+i)) = rhoi(ilay) / rho0i(ilay) - one
1847 elseif(mlw == 20)
then
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
1859 func(el2fa(nn1+nft+i)) = zero
1876 IF (isolnod == 16)
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)
1890 func(el2fa(n)) = evar(i)
1896 ELSEIF (isph3d == 1.AND.ity == 51)
THEN
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))
1913 IF (el2fa(nn3+n)/=0)
THEN
1915 VALUE = lbuf%EPSQ(i)
1916 ELSEIF (gbuf%G_PLA > 0)
THEN
1919 func(el2fa(nn3+n)) =
VALUE
1923 ELSEIF(ifunc == 2)
THEN
1926 IF(el2fa(nn3+n)/=0)
THEN
1928 func(el2fa(nn3+n)) =
VALUE
1932 ELSEIF(ifunc == 3)
THEN
1935 ialel=iparg(7,ng)+iparg(11,ng)
1939 VALUE = gbuf%EINT(i)/
max(em30,pm(1,mt))
1941 VALUE = gbuf%EINT(i)/
max(em30,gbuf%RHO(i))
1943 func(el2fa(nn3+n)) =
VALUE
1946 ELSEIF(ifunc == 4)
THEN
1949 IF(el2fa(nn3+n)/=0)
THEN
1950 IF (gbuf%G_TEMP > 0)
THEN
1951 VALUE = gbuf%TEMP(i)
1955 func(el2fa(nn3+n)) =
VALUE
1959 ELSEIF(ifunc == 6.OR.ifunc == 7)
THEN
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)
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)
1977 p = - (s11 + s22 + s33 ) * third
1983 vonm2= three*(s4*s4 + s5*s5 + s6*s6 +
1984 . half*(s1*s1+s2*s2+s3*s3) )
1988 func(el2fa(nn3+n)) =
VALUE
1992 ELSEIF(ifunc == 8.AND.jturb/=0)
THEN
1995 nn = el2fa(nn3 + i + nft)
1997 func(nn) = gbuf%RK(i)
2001 ELSEIF(ifunc == 9)
THEN
2005 nn = el2fa(nn3 + i + nft)
2007 IF((mlw == 6 .OR. mlw == 17).AND.jturb/=0)
THEN
2010 VALUE=pm(81,mt)*gbuf%RK(i)**2/
2011 .
max(em15,gbuf%RE(i))
2012 ELSEIF(mlw == 46 .OR. mlw == 47)
THEN
2021 ELSEIF(ifunc == 10)
THEN
2024 nn = el2fa(nn3 + i + nft)
2026 IF(mlw == 6 .OR. mlw == 17)
THEN
2028 ELSEIF(mlw == 46 .OR. mlw == 47)
THEN
2029 VALUE = mbuf%VAR(nel+i)
2037 ELSEIF((ifunc == 11.OR.ifunc == 12.OR.ifunc == 13)
2038 . .AND.mlw == 24)
THEN
2041 func(el2fa(nn3+n)) = lbuf%DAM(jj(ifunc-10) + i)
2044 ELSEIF(ifunc>=14.AND.ifunc<=19)
THEN
2048 IF(el2fa(nn3+n)/=0)
THEN
2049 VALUE = gbuf%SIG(jj(ifunc - 13) + i)
2050 func(el2fa(nn3+n)) =
VALUE
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
2065 ELSEIF(ifunc>=20.AND.ifunc<=24)
THEN
2071 IF(el2fa(nn3+n)/=0 . and. ius <= nuvar)
THEN
2072 VALUE = mbuf%VAR(i + ius*nel)
2073 func(el2fa(nn3+n)) =
VALUE
2078 ELSEIF(ifunc == 25)
THEN
2081 IF(el2fa(nn3+n)/=0)
THEN
2084 func(el2fa(nn3+n)) =
VALUE
2088 ELSEIF(ifunc == 887)
THEN
2092 IF (el2fa(nn3+n)/=0)
THEN
2093 IF (gbuf%G_BFRAC > 0)
THEN
2094 VALUE = gbuf%BFRAC(i)
2096 func(el2fa(nn3+n)) =
VALUE
2100 ELSEIF(ifunc == 3890)
THEN
2102 nfail = elbuf_tab(ng)%BUFLY(1)%NFAIL
2105 . elbuf_tab(ng)%BUFLY(1)%FAIL(1,1,1)%FLOC(ir)%DAMMX
2108 func(el2fa(nn3+n)) = dfmax(i)
2112 ELSEIF(ifunc == 4893)
THEN
2115 IF (el2fa(nn3+n)/=0)
THEN
2116 func(el2fa(nn3+n)) = ispmd
2120 ELSEIF(ifunc == 4894)
THEN
2123 IF (el2fa(nn3+n)/=0)
THEN
2124 func(el2fa(nn3+n)) = gbuf%FILL(i)
2128 ELSEIF (ifunc == 4895)
THEN
2130 IF (gbuf%G_SEQ > 0)
THEN
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)
2186 IF (el2fa(nn3+n) /= 0)
THEN
2187 func(el2fa(nn3+n)) = gbuf%SEQ(i)
2190 ELSEIF (mlw == 74)
THEN
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)
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)
2215 p = - (s11 + s22 + s33) * third
2220 crit = ff0*(s2 - s3)**2
2221 . + gg0*(s3 - s1)**2
2222 . + hh0*(s1 - s2)**2
2227 func(el2fa(nn3+n)) = sqrt(crit)
2230 ELSEIF (mlw == 93)
THEN
2234 IF (el2fa(nn3+n) /= 0)
THEN
2235 func(el2fa(nn3+n)) = gbuf%SEQ(i)
2238 ELSEIF (mlw == 104)
THEN
2243 lbuf => elbuf_tab(ng)%BUFLY(il)%LBUF(ir,is,it)
2246 IF (el2fa(nn3+n) /= 0)
THEN
2247 func(el2fa(nn3+n)) = func(el2fa(nn3+n)) + lbuf%SEQ(i)/nptg
2254 ELSEIF (mlw == 115)
THEN
2258 IF (el2fa(nn3+n) /= 0)
THEN
2259 func(el2fa(nn3+n)) = gbuf%SEQ(i)
2265 IF (ivisc == 0)
THEN
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))
2280 func(el2fa(nn3+n)) = vonm
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
2297 vonm2 = three*(s4*s4 + s5*s5 + s6*s6 +
2298 . half*(s1*s1 + s2*s2 + s3*s3))
2300 func(el2fa(nn3+n)) = vonm
2306 ELSEIF(ifunc == 4965)
THEN
2307 IF (gbuf%G_OFF > 0)
THEN
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)
2315 func(el2fa(nn3+n)) = -one
2323 IF(el2fa(nn3+n)/=0)
THEN
2324 func(el2fa(nn3+n)) = zero
2329 ELSEIF (ity == 101)
THEN
2332 gbuf => elbuf_tab(ng)%GBUF
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)
2343 ELSEIF(ifunc == 6 .OR. ifunc == 7)
THEN
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)
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)
2360 p = - (s11 + s22 + s33) * third
2366 vonm2= three*(s4*s4 + s5*s5 + s6*s6+
2367 . half*(s1*s1+s2*s2+s3*s3) )
2374 ELSEIF(ifunc==2)
THEN
2376 evar(i) = gbuf%RHO(i)
2379 ELSEIF(ifunc==3)
THEN
2381 VALUE = gbuf%EINT(i)/
max(em30,gbuf%RHO(i))
2385 ELSEIF (ifunc == 26)
THEN
2386 evar(lft:llt) = gbuf%EPSD(lft:llt)
2398 func(el2fa(nn4+n)+j-1) = evar(i)
2410 IF (nspmd == 1)
THEN
2419 IF (ispmd == 0)
THEN
2420 buf = numelsg+3*numels16g+numsphg
2427 IF(
ALLOCATED(wa_l))
DEALLOCATE(wa_l)
subroutine resol(timers, element, nodes, coupling, af, iaf, iskwn, neth, ipart, nom_opt, kxx, ixx, ixtg, ixs, ixq, ixt, ixp, ixr, ifill, mat_elem, ims, npc, ibcl, ibfv, idum, las, laccelm, nnlink, lnlink, iparg, dd_iad, igrv, iexlnk, ipari, iconx, npby, lpby, lrivet, nstrf, ljoint, nodpor, monvol, ilink, llink, linale, neflsw, nnflsw, icut, cluster, itask, inoise, thke, damp, pm, skews, geo, eani, bufmat, bufgeo, bufsf, w, veul, fill, dfill, alph, wb, dsave, asave, msnf, tf, forc, vel, fsav, fzero, xlas, accelm, agrv, fr_wave, failwave, parts0, elbuf, sensors, rby, rivet, secbuf, volmon, lambda, wa, fv, partsav, uwa, val2, phi, segvar, r, crflsw, flsw, xcut, tani, secfcum, bufnois, idata, rdata, iframe, kxsp, ixsp, nod2sp, ispsym, ispcond, xframe, spbuf, xspsym, vspsym, pv, fsavd, ibvel, lbvel, wasph, w16, isphio, lprtsph, lonfsph, vsphio, fbvel, lagbuf, ibcslag, iactiv, dampr, gjbufi, gjbufr, rbmpc, ibmpc, sphveln, nbrcvois, nbsdvois, lnrcvois, lnsdvois, nercvois, nesdvois, lercvois, lesdvois, npsegcom, lsegcom, nporgeo, ixtg1, npbyl, lpbyl, rbyl, igeo, ipm, madprt, madsh4, madsh3, madsol, madnod, madfail, iad_rby, fr_rby, iad_rby2, fr_rby2, iad_i2m, fr_i2m, addcni2, procni2, iadi2, fr_mv, iadmv2, fr_ll, fr_rl, iadcj, fr_cj, fr_sec, iad_sec, iad_cut, fr_cut, rg_cut, newfront, fr_mad, fxbipm, fxbrpm, fxbnod, fxbmod, fxbglm, fxbcpm, fxbcps, fxblm, fxbfls, fxbdls, fxbdep, fxbvit, fxbacc, fxbelm, fxbsig, fxbgrvi, fxbgrvr, eigipm, eigibuf, eigrpm, lnodpor, fr_i18, graphe, iflow, rflow, lgrav, dd_r2r, fasolfr, fr_lagf, llagf, icontact, rcontact, sh4tree, sh3tree, ipadmesh, padmesh, msc, mstg, inc, intg, ptg, iskwp, nskwp, isensp, nsensp, iaccp, naccp, ipart_state, acontact, pcontact, factiv, sh4trim, sh3trim, mscnd, incnd, ibfflux, fbfflux, rbym, irbym, lnrbym, icodrbym, ibcv, fconv, ibftemp, fbftemp, iad_rbym, fr_rbym, weight_rm, ms_ply, zi_ply, inod_pxfem, iel_pxfem, iadc_pxfem, adsky_pxfem, icode_ply, icodt_ply, iskew_ply, admsms, madclnod, nom_sect, mcpc, mcptg, dmelc, dmeltg, mssa, dmels, mstr, dmeltr, msp, dmelp, msrt, dmelrt, ibcr, fradia, res_sms, table, irbe2, lrbe2, iad_rbe2, fr_rbe2, phie, msf, procne_pxfem, iadsdp_pxfem, iadrcp_pxfem, icfield, lcfield, cfield, msz2, diag_sms, iloadp, lloadp, loadp, inod_crk, iel_crk, iadc_crk, adsky_crk, cne_crk, procne_crk, iadsdp_crk, iadrcp_crk, ibufssg_io, ibc_ply, dmint2, ibordnode, elbuf_tab, por, nodedge, iad_edge, fr_edge, fr_nbedge, crknodiad, lgauge, gauge, igaup, ngaup, nodlevxf, dd_r2r_elem, nodglobxfe, sph2sol, sol2sph, irst, dmsph, wagap, xfem_tab, elcutc, nodenr, kxfenod2elc, enrtag, rthbu f, kxig3d, ixig3d, knot, wige, wsmcomp, stack, cputime_mp_glob, cputime_mp, tab_ump, poin_ump, sol2sph_typ, irunn_bis, addcsrect, iad_frnor, fr_nor, procnor, iad_fredg, fr_edg, drape_sh4n, drape_sh3n, tab_mat, nativ0_sms, multi_fvm, segquadfr, ms_2d, h3d_data, subsets, igrnod, igrbric, igrquad, igrsh4n, igrsh3n, igrtruss, igrbeam, igrspring, igrpart, igrsurf, forneqs, nloc_dmg, iskwp_l, knotlocpc, knotlocel, pinch_data, tag_skins6, ale_connectivity, xcell, xface, ne_nercvois, ne_nesdvois, ne_lercvois, ne_lesdvois, ibcscyc, lbcscyc, t_monvol, id_global_vois, face_vois, dynain_data, fcont_max, ebcs_tab, diffusion, kloadpinter, loadpinter, dgaploadint, drapeg, user_windows, output, interfaces, dt, loads, python, dpl0cld, vel0cld, ndamp_vrel, id_damp_vrel, fr_damp_vrel, ndamp_vrel_rbyg, names_and_titles, unitab, liflow, lrflow, glob_therm, pblast, rbe3, rwall)