34 2 EM ,NPC ,TF ,ANSMX ,
35 3 FMX ,FMY ,FMZ ,XMAS ,
36 4 IFUNC ,V ,NOINT ,NSN ,
37 5 NMN ,FSAV ,DT2T ,NELTST ,
38 6 ITYPTST ,FFAC ,FSKYI ,ISKY ,
39 7 FCONT ,FACX ,FAC2 ,STIFF ,
40 8 HFLAG ,IFUN2 ,ICOR ,PENI ,
41 9 ANSMX0 ,FF0 ,H3D_DATA)
50#include
"implicit_f.inc"
65 INTEGER NELTST,ITYPTST, IFUNC,IFUN2, NOINT, NSN, NMN,HFLAG,ICOR
66 INTEGER MSR(*), NSV(*), NPC(*), ISKY(*)
69 . DT2T,ANSMX,ANSMX0,FF0,FMX,FMY,FMZ,,FFAC,FACX,FAC2,STIFF,
72 . E(*),ES(*),EM(*),TF(*),V(*),FSAV(*),FSKYI(LSKYI,NFSKYI),
78 INTEGER NPOINT, IL, IG, IG3, IG2, IG1, IL3, IL2, IL1, NISKYL
81 . vsmax, vmmax, vmax, ft,fu,ff, xk, dtmi, fac, facdt, dx, finter
89 IF (hflag == 1) ff0 = finter(ifun2,abs(peni)*facx,npc,tf,xk)
103 vsmax =
max(vsmax,v(ig1)**2+v(ig2)**2+v(ig3)**2)
111 vmmax =
max(vmmax,v(ig1)**2+v(ig2)**2+v(ig3)**2)
114 vmax = sqrt(vsmax)+sqrt(vmmax)+ em15
115 ft = finter(ifunc,zero,npc,tf,xk)
117 dtmi =
max(em01*sqrt(xmas/xk),ansmx/vmax)
119 ELSEIF (ansmx == zero)
THEN
120 ft = finter(ifunc,ansmx*facx,npc,tf,xk)
121 xk =
max(em15,xk*ffac)
123 dtmi = em01*sqrt(xmas/xk)
128 ft = finter(ifunc,ansmx*facx,npc,tf,xk)
129 xk =
max(em15,xk*ffac)
133 fu = finter(ifun2,ansmx*facx,npc,tf,xk)
141 ft =
min(ft, ff0 + stiff*dx)
144 ft =
max(fu, ff0 + stiff*dx)
146 xk = ft - ff0 /
max(em15,dx)
150 fac = ft /
max(em15,sqrt(fmx**2+fmy**2+fmz**2))
153 fsav(1)=fsav(1)+fmx*facdt
154 fsav(2)=fsav(2)+fmy*facdt
155 fsav(3)=fsav(3)+fmz*facdt
156 fsav(4)=fsav(4)-fmx*facdt
157 fsav(5)=fsav(5)-fmy*facdt
158 fsav(6)=fsav(6)-fmz*facdt
160 IF (iparit == 0)
THEN
185 fsav(4)=fsav(4)-em(il1)*facdt
186 fsav(5)=fsav(5)-em(il2)*facdt
187 fsav(6)=fsav(6)-em(il3)*facdt
194 nisky = nisky + nsn + nmn
195#include "lockoff.inc"
196 IF (kdtint == 0)
THEN
202 fskyi(niskyl,1)=es(il1)*fac
203 fskyi(niskyl,2)=es(il2)*fac
204 fskyi(niskyl,3)=es(il3)*fac
206 isky(niskyl) = nsv(il)
214 fskyi(niskyl,1)=em(il1)*fac
215 fskyi(niskyl,2)=em(il2)*fac
216 fskyi(niskyl,3)=em(il3)*fac
218 isky(niskyl) = msr(il)
219 fsav(4)=fsav(4)-em(il1)*facdt
220 fsav(5)=fsav(5)-em(il2)*facdt
221 fsav(6)=fsav(6)-em(il3)*facdt
229 fskyi(niskyl,1)=es(il1)*fac
230 fskyi(niskyl,2)=es(il2)*fac
231 fskyi(niskyl,3)=es(il3)*fac
234 isky(niskyl) = nsv(il)
242 fskyi(niskyl,1)=em(il1)*fac
243 fskyi(niskyl,2)=em(il2)*fac
244 fskyi(niskyl,3)=em(il3)*fac
247 isky(niskyl) = msr(il)
248 fsav(4)=fsav(4)-em(il1)*facdt
249 fsav(5)=fsav(5)-em(il2)*facdt
250 fsav(6)=fsav(6)-em(il3)*facdt
255 IF(anim_v(4)+outp_v(4)+h3d_data%N_VECT_CONT>0.AND.
256 . ((tt>=tanim .AND. tt<=tanim_stop).OR.tt>=toutp.OR.(tt>=h3d_data%TH3D.AND.tt<=h3d_data%TH3D_STOP).OR.
257 . (manim>=4.AND.manim<=15).OR. h3d_data%MH3D /= 0))
THEN
263 fcont(1,nsv(il)) =fcont(1,nsv(il)) + es(il1)*fac
264 fcont(2,nsv(il)) =fcont(2,nsv(il)) + es(il2)*fac
265 fcont(3,nsv(il)) =fcont(3,nsv(il)) + es(il3)*fac
272 fcont(1,msr(il)) =fcont(1,msr(il)) + em(il1)*fac
273 fcont(2,msr(il)) =fcont(2,msr(il)) + em(il2)*fac
274 fcont(3,msr(il)) =fcont(3,msr(il)) + em(il3)*fac
276#include "lockoff.inc"
279 xk =
max(xk,ft /
max(em15,ansmx))
280 dtmi = em01*sqrt(xmas/
max(xk,em20))
subroutine i6ass3(e, msr, nsv, es, em, npc, tf, ansmx, fmx, fmy, fmz, xmas, ifunc, v, noint, nsn, nmn, fsav, dt2t, neltst, ityptst, ffac, fskyi, isky, fcont, facx, fac2, stiff, hflag, ifun2, icor, peni, ansmx0, ff0, h3d_data)