30 SUBROUTINE dfuncc(ELBUF_TAB,BUFEL,FUNC ,IFUNC,IPARG,
31 . IXQ ,IXC ,IXTG ,PM ,EL2FA,
37 use element_mod ,
only : nixq,nixc,nixtg
41#include "implicit_f.inc"
45#include "vect01_c.inc"
55 . bufel(*),func(*),pm(npropm,*)
56 INTEGER IPARG(NPARG,*),IXC(NIXC,*),IXTG(NIXTG,*),EL2FA(*),
57 . IXQ(NIXQ,*),IFUNC,NBF
58 TYPE (ELBUF_STRUCT_),
TARGET,
DIMENSION(NGROUP) :: ELBUF_TAB
65 . p, vonm2, s1, s2, s12, s3,
VALUE
66 INTEGER I,II(6), NG, NEL, N, MLW, IUS,MT,IALEL,
67 . NN1,NN3,NN4,NN5,NN6,NN7,NN8,NN9,
69 TYPE(g_bufel_) ,
POINTER :: GBUF
87 DO offset = 0,nel-1,nvsiz
89 llt=
min(nvsiz,nel-offset)
99 gbuf => elbuf_tab(ng)%GBUF
104 ialel=iparg(7,ng)+iparg(11,ng)
107 VALUE = gbuf%EINT(i)/
max(em30,pm(1,mt))
109 VALUE = gbuf%EINT(i)/
max(em30,gbuf%RHO(i))
111 func(el2fa(nn3+n)) =
VALUE
114 ELSEIF (ifunc == 6 .or. ifunc == 7)
THEN
117 p = -(gbuf%SIG(ii(1) + i)
118 . + gbuf%SIG(ii(2) + i)
119 . + gbuf%SIG(ii(3) + i))*third
120 func(el2fa(nn3+nft+i)) = p
123 s1 = gbuf%SIG(ii(1) + i) + p
124 s2 = gbuf%SIG(ii(2) + i) + p
125 s3 = gbuf%SIG(ii(3) + i) + p
126 vonm2 = three*(gbuf%SIG(ii(4) + i)**2
127 . + half*(s1**2+s2**2+s3**2))
130 func(el2fa(nn3+n)) =
VALUE
133 ELSEIF(ifunc == 14)
THEN
136 func(el2fa(nn3+n)) = gbuf%SIG(ii(3) + i)
139 ELSEIF(ifunc == 15)
THEN
142 func(el2fa(nn3+n)) = gbuf%SIG(ii(1) + i)
145 ELSEIF(ifunc == 16)
THEN
148 func(el2fa(nn3+n)) = gbuf%SIG(ii(2) + i)
151 ELSEIF(ifunc == 17.OR.ifunc == 18)
THEN
154 func(el2fa(nn3+n)) = gbuf%SIG(ii(4) + i)
160 func(el2fa(nn3+n)) = zero
164 ELSEIF (ity == 3 .OR. ity == 7)
THEN
167 gbuf => elbuf_tab(ng)%GBUF
174 ELSEIF (ifunc == 3)
THEN
176 evar(i) = gbuf%EINT(i) + gbuf%EINT(i+llt)
179 ELSEIF(ifunc == 7)
THEN
181 s1 = gbuf%FOR(ii(1)+i)
182 s2 = gbuf%FOR(ii(2)+i)
183 s12= gbuf%FOR(ii(3)+i)
184 vonm2= s1*s1 + s2*s2 - s1*s2 + three*s12*s12
185 evar(i) = sqrt(vonm2)
188 ELSEIF(ifunc>=14 .and. ifunc<=15)
THEN
191 evar(i) = gbuf%FOR(ii(ius)+i)
194 ELSEIF(ifunc>=17 .and. ifunc<=19)
THEN
197 evar(i) = gbuf%FOR(ii(ius)+i)
204 func(el2fa(nn4+n)) = evar(i)
209 func(el2fa(nn5+n)) = evar(i)
subroutine dfuncc(elbuf_tab, bufel, func, ifunc, iparg, ixq, ixc, ixtg, pm, el2fa, nbf)