30 SUBROUTINE dfuncf(ELBUF_TAB,FUNC ,IFUNC ,IPARG ,GEO ,
31 . IXT ,IXP ,IXR ,MASS ,PM ,
32 . EL2FA ,NBF ,IADP ,NBPART ,XFUNC1)
40#include "implicit_f.inc"
54 . func(*), mass(*), pm(npropm,*), geo(npropg,*),
56 INTEGER IPARG(NPARG,*),EL2FA(*),
57 . IXT(NIXT,*),IXP(NIXP,*),IXR(NIXR,*),IFUNC,NBF,
61 TYPE (ELBUF_STRUCT_),
TARGET,
DIMENSION(NGROUP) :: ELBUF_TAB
68 . off, p, vonm2, vonm, s1, s2, s12, s3,
VALUE,
69 . a1,b1,b2,b3,yeq,f1,m1,m2,m3, xm,
71 INTEGER I, NG, NEL, NFT, ITY, LFT, NPT, ISS, ISC,
72 . IADD, N, J, LLT, MLW,
73 . istrain,nn, k1, k2,jturb,mt,jale, imid, ialel,ipid,
74 . nn1,nn2,nn3,nn4,nn5,nn6,nn7,nn8,nn9,nn10,nf,
75 . offset,k,ii,ii_l,inc,kk,ihbe,jj(3)
78 TYPE(g_bufel_) ,
POINTER :: GBUF
97 gbuf => elbuf_tab(ng)%GBUF
98 DO offset = 0,nel-1,nvsiz
99 nft =iparg(3,ng) + offset
101 llt=
min(nvsiz,nel-offset)
114 func(el2fa(nn6+n))=gbuf%EINT(i)/
115 .
max(em30,mass(el2fa(nn6+n)))
117 ELSEIF (ifunc == 7)
THEN
123 func(el2fa(nn6+n)) = sqrt(feq)/
area
125 ELSEIF (ifunc == 14)
THEN
128 func(el2fa(nn6+n)) = gbuf%FOR(i) / gbuf%AREA(i)
133 func(el2fa(nn6+n)) = zero
139 ELSEIF (ity == 5)
THEN
143 func(el2fa(nn7+n)) = (gbuf%EINT(i) + gbuf%EINT(i+llt))
144 . /
max(em30,mass(el2fa(nn7+n)))
146 ELSEIF (ifunc == 7)
THEN
151 b2 = geo(18,ixp(5,n))
153 f1 = gbuf%FOR(jj(1)+i)
154 m1 = gbuf%MOM(jj(1)+i)
155 m2 = gbuf%MOM(jj(2)+i)
156 m3 = gbuf%MOM(jj(3)+i)
157 yeq= f1*f1 + three* a1 *
158 + ( m1*m1 /
max(b3,em30)
159 + + m2*m2 /
max(b1,em30)
160 + + m3*m3 /
max(b2,em30) )
161 func(el2fa(nn7+n)) = sqrt(yeq)/a1
163 ELSEIF (ifunc == 14)
THEN
166 func(el2fa(nn7+n)) = gbuf%FOR(jj(1)+i)
169 ELSEIF (ifunc == 17)
THEN
172 func(el2fa(nn7+n)) = gbuf%FOR(jj(2)+i)
175 ELSEIF (ifunc == 19)
THEN
178 func(el2fa(nn7+n)) = gbuf%FOR(jj(3)+i)
184 func(el2fa(nn7+n)) = zero
190 ELSEIF (ity == 6)
THEN
193 xm = one/geo(1,ixr(1,1+nft))
196 func(el2fa(nn8+n)) = gbuf%EINT(i)*xm
198 ELSEIF (mlw == 2)
THEN
199 xm = one/geo(1,ixr(1,1+nft))
202 func(el2fa(nn8+n)) = gbuf%EINT(i)*xm
204 ELSEIF (mlw == 3)
THEN
205 xm = one/geo(1,ixr(1,1+nft))
208 func(el2fa(nn8+n)) = gbuf%EINT(i)*xm
210 ELSEIF (mlw == 4)
THEN
211 xm = one/geo(1,ixr(1,1+nft))
214 func(el2fa(nn8+n)) = gbuf%EINT(i)*xm
216 ELSEIF (mlw == 5)
THEN
219 func(el2fa(nn8+n)) = gbuf%EINT(i)/
max(em30,gbuf%MASS(i))
222 ELSEIF (ifunc == 11)
THEN
227 ELSEIF (ifunc == 12)
THEN
228 kk = numelr * anim_fe(11)
233 ELSEIF (ifunc == 13)
THEN
234 kk = numelr * (anim_fe(11)+anim_fe(12))
242 func(el2fa(nn8+n)) = zero
249 func(el2fa(nn8+n)+1) = func(el2fa(nn8+n))
subroutine dfuncf(elbuf_tab, func, ifunc, iparg, geo, ixt, ixp, ixr, mass, pm, el2fa, nbf, iadp, nbpart, xfunc1)