38
39
40
42 USE elbufdef_mod
43
44
45
46#include "implicit_f.inc"
47
48
49
50#include "com01_c.inc"
51#include "com06_c.inc"
52#include "com08_c.inc"
53#include "param_c.inc"
54
55
56
57 INTEGER NL, N1, N2, IFUNC, IAFUNC
58 INTEGER LAS(2,*), IPARG(NPARG,*), IXQ(7,*), NPF(*)
59 my_real xlas(*),x(3,*),wa(3,*),tf(*),pm(npropm,*)
60 TYPE(ELBUF_STRUCT_), TARGET, DIMENSION(NGROUP) :: ELBUF_TAB
61 DOUBLE PRECISION, INTENT(INOUT) :: WFEXT
62
63
64
65 INTEGER IL, NG, I, NEL, NFT, II, NP1, NPOINT, IC, NELC, NB1C, NFTC, M4C, M13C,MX, M11C
66 INTEGER MTN,IAD,ITY,NPT,JALE,ISMSTR,
67 . JEUL,JTUR,JTHE,JLAG,NVAUX,JMULT,JHBE,JIVF,JPOR,JPLA,JCLOSE,
68 . IREP,IINT,IGTYP,JCVT,ISROT,ISRAT,ISORTH,ISORTHG,ICSEN,IFAILURE,
69 . JSMS
71 . chaleur, fi,
alpha, z1, z2, z3, z4, zz, t, ddfi,
72 . dfi, de, bid, rhoc, c0, zm, zmc, y1, y2, y3, y4,
73 . d, vm, dar, fi0, vol, xkzz, rhoa2, rho0,
74 . a1,a2,aire,atom,af,tc, dfi1, xk0,hnuk,xk,rho,z,te,tscal,fifun
75 TYPE(G_BUFEL_) ,POINTER :: GBUF
76 TYPE(L_BUFEL_) ,POINTER :: LBUF
77
78 chaleur = xlas(1)
79 fi = xlas(2)
81 xk0 = xlas(4)
82 hnuk = xlas(5)
83 dar = xlas(6)
84 tscal = xlas(7)
85
86 IF(ifunc > 0) THEN
87 tscal = tscal*tt
88 npoint = (npf(ifunc+1)-npf(ifunc))/2
89 CALL interp(tf(npf(ifunc)),tscal,npoint,fifun,bid)
90 fi = fi * fifun
91 ENDIF
92 fi0 = fi
93
94 i = 1
95 mx = 1
96 NULLIFY(gbuf)
97 te =zero
98 tscal = zero
99 vol = zero
100 z1 = zero
101 z2 = zero
102 z3 = zero
103 z4 = zero
104 zz = zero
105 jsms = 0
106
108 ng = las(1,il)
109 i = las(2,il)
110 gbuf => elbuf_tab(ng)%GBUF
111 lbuf => elbuf_tab(ng)%BUFLY(1)%LBUF(1,1,1)
112
114 1 iparg ,ng ,
115 2 mtn ,nel ,nft ,iad ,ity ,
116 3 npt ,jale ,ismstr ,jeul ,jtur ,
117 4 jthe ,jlag ,jmult ,jhbe ,jivf ,
118 5 nvaux ,jpor ,jcvt ,jclose ,jpla ,
119 6 irep ,iint ,igtyp ,israt ,isrot ,
120 7 icsen ,isorth ,isorthg ,ifailure,jsms )
121
122 ii = i + nft
123 z1 = x(3,ixq(2,ii))
124 z2 = x(3,ixq(3,ii))
125 z3 = x(3,ixq(4,ii))
126 z4 = x(3,ixq(5,ii))
127 zz = half * (abs(z1
128
129
130
131 rho = gbuf%RHO(i
132 vol = gbuf%VOL
133 te
134 z = lbuf%Z(i)
135 mx = ixq(1,ii)
136 atom = pm(37,mx)
137 rho0 = pm(1,mx)
138
139 rhoa2 = (rho/atom)**2
140
141 xkzz = xk * (one - exp(-hnuk/te)) * zz
142 rhoa2 = ((rho-rho0)/atom)**2
143 IF(te<=ep04) xkzz = xkzz + dar * rhoa2
144
145 ddfi = (one - exp(-xkzz))
146 dfi = fi * ddfi
147 fi = fi - dfi
148 de = dfi * dt2 / zz
149
150 gbuf%EINT(i) = gbuf%EINT(i) + de
151 wfext = wfext + de * vol
152
153 wa(1,il) = zz
154 wa(2,il) = ddfi
155
156 200 CONTINUE
157
158
159
160
161
162 IF(iafunc>0)THEN
163 np1 = npf(iafunc)
164 npoint =(npf(iafunc+1)-np1)/2
165 t = te*tscal
166 CALL interp(tf(np1),t,npoint,af,bid)
168 ENDIF
170 fi = fi - dfi
171 de = dfi * dt2 / zz
172
173 gbuf%EINT(i) = gbuf%EINT(i) + de
174
175
176
177
179 ng = las(1,il)
180 ic = las(2,il)
181
182 gbuf => elbuf_tab(ng)%GBUF
183
184 nelc = iparg(2,ng)
185 nb1c = iparg(4,ng)
186 nftc = iparg(3,ng)
187 ii = ic + nftc
188 m4c = nb1c+8*nelc+ic-1
189 m11c = nb1c+12*nelc+ic-1
190 m13c = nb1c+14*nelc+ic-1
191
192 rhoc = gbuf%RHO(ic)
193 c0 = gbuf%EPSD(ic)
194
195 zm = z1 + z2 + z3 + z4
196 z1 = x(3,ixq(2,ii))
197 z2 = x(3,ixq(3,ii))
198 z3 = x(3,ixq(4,ii))
199 z4 = x(3,ixq(5,ii))
200 zmc = z1 + z2 + z3 + z4
201 y1 = x(2,ixq(2,ii))
202 y2 = x(2,ixq(3,ii))
203 y3 = x(2,ixq(4,ii))
204 y4 = x(2,ixq(5,ii))
205 a1 = y2*(z3-z4)+y3*(z4-z2)+y4*(z2-z3)
206 a2 = y2*(z4-z1)+y4*(z1-z2)+y1*(z2-z4)
207 aire = (a1+a2)/two
208
209 tc = gbuf%TEMP(ic)
210 dfi1 = pm(75,mx) * (two*(te - tc)/zz) / dt2
211
212 d = (dfi+dfi1) / (rhoc*chaleur)
213
214 vm = d * aire * rhoc * fourth
215 IF(zmc>zm) vm = -vm
216 wa(3,n1) = wa(3,n1) + vm
217 wa(3,n2) = wa(3,n2) + vm
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
239
240
241
242 ng = las(1,il)
243 i = las(2,il)
244 gbuf => elbuf_tab(ng)%GBUF
245 zz = wa(1,il)
246 ddfi = wa(2,il)
247 dfi = fi * ddfi
248 fi = fi - dfi
249 de = dfi * dt2 / zz
250 gbuf%EINT(i) = gbuf%EINT(i) + de
251 vol = gbuf%VOL(i)
252 wfext = wfext + de * vol
253 ENDDO
254
255 RETURN
subroutine interp(tf, tt, npoint, f, tg)
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)
character *2 function nl()