31 SUBROUTINE dfuncs(ELBUF_TAB,FUNC ,IFUNC ,IPARG ,
32 2 IXS ,PM ,EL2FA ,NBF ,ISPH3D )
37 use element_mod ,
only : nixs
41#include "implicit_f.inc"
45#include "vect01_c.inc"
55 . func(*), pm(npropm,*)
56 INTEGER IPARG(NPARG,*),EL2FA(*),
57 . ixs(nixs,*),ifunc,nbf,isph3d
58 TYPE (ELBUF_STRUCT_),
DIMENSION(NGROUP),
TARGET :: ELBUF_TAB
66 . off, p, vonm2, vonm, s1, s2, s12, s3,
VALUE
67 INTEGER I, NG, NEL,N, J, MLW,NN, JTURB,MT, IALEL,
68 . nn1,nn2,nn3,offset,ii(6),inod, isolnod,
69 . jhbe, jivf, jclose, jplasol, irep, igtyp,
70 . icsen, isorthg, ifailure, iint
71 TYPE(g_bufel_) ,
POINTER :: GBUF
82 2 mlw ,nel ,nft ,iad ,ity ,
83 3 npt ,jale ,ismstr ,jeul ,jtur ,
84 4 jthe ,jlag ,jmult ,jhbe ,jivf ,
85 5 jpor ,jcvt ,jclose ,jplasol ,
86 6 irep ,iint ,igtyp ,israt ,isrot ,
87 7 icsen ,isorth ,isorthg ,ifailure)
88 DO offset = 0,nel-1,nvsiz
89 nft =iparg(3,ng) + offset
90 isolnod = iparg(28,ng)
92 llt=
min(nvsiz,nel-offset)
103 gbuf => elbuf_tab(ng)%GBUF
105 IF (mlw == 0 .OR. mlw == 13 . or. igtyp == 0)
THEN
110 jturb=iparg(12,ng)*(iparg(7,ng)+iparg(11,ng))
114 IF (gbuf%G_PLA > 0)
THEN
115 evar(i) = gbuf%PLA(i)
118 ELSEIF(ifunc == 2)
THEN
120 evar(i) = gbuf%RHO(i)
122 ELSEIF(ifunc == 3)
THEN
125 ialel=iparg(7,ng)+iparg(11,ng)
128 evar(i) = gbuf%EINT(i)/
max(em30,pm(1,mt))
130 evar(i) = gbuf%EINT(i)/
max(em30,gbuf%RHO(i))
133 ELSEIF (ifunc == 4)
THEN
135 IF (gbuf%G_TEMP > 0)
THEN
136 evar(i) = gbuf%TEMP(i)
139 ELSEIF(ifunc == 6 .OR. ifunc == 7)
THEN
142 p = - (gbuf%SIG(ii(1) + i)
143 . + gbuf%SIG(ii(2) + i)
144 . + gbuf%SIG(ii(3) + i)) * third
147 s1=gbuf%SIG(ii(1) + i)+p
148 s2=gbuf%SIG(ii(2) + i)+p
149 s3=gbuf%SIG(ii(3) + i)+p
150 vonm2= three*(gbuf%SIG(ii(4) + i)**2 +
151 . gbuf%SIG(ii(5) + i)**2 +
152 . gbuf%SIG(ii(6) + i)**2 +
153 . half*(s1*s1+s2*s2+s3*s3) )
160 ELSEIF(ifunc >= 14 .AND. ifunc <= 19)
THEN
162 evar(i) = gbuf%SIG(ii(ifunc-13) + i)
166 IF (isolnod == 16)
THEN
171 func(el2fa(n)+1) = evar(i)
172 func(el2fa(n)+2) = evar(i)
173 func(el2fa(n)+3) = evar(i)
180 func(el2fa(n)) = evar(i)
187 ELSEIF (isph3d == 1.AND.ity == 51)
THEN
190 gbuf => elbuf_tab(ng)%GBUF
191 IF (ifunc >= 14 .AND. ifunc <= 19)
THEN
194 IF (el2fa(nn3+n)/=0)
THEN
195 func(el2fa(nn3+n)) = gbuf%SIG(ii(ifunc-13) + i)
201 IF(el2fa(nn3+n)/=0)
THEN
202 func(el2fa(nn3+n)) = zero
subroutine initbuf(iparg, ng, mtn, llt, nft, iad, ity, npt, jale, ismstr, jeul, jtur, jthe, jlag, jmult, jhbe, jivf, jpor, jcvt, jclose, jpla, irep, iint, igtyp, israt, isrot, icsen, isorth, isorthg, ifailure)