33 SUBROUTINE i6ass3(OUTPUT ,E ,MSR ,NSV ,ES ,
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)
46 USE output_mod,
ONLY: output_
50#include "implicit_f.inc"
65 TYPE(output_),
INTENT(inout) :: OUTPUT
66 INTEGER NELTST,ITYPTST, IFUNC,IFUN2, NOINT, NSN, NMN,HFLAG,ICOR
67 INTEGER MSR(*), NSV(*), NPC(*), ISKY(*)
70 . DT2T,ANSMX,ANSMX0,FF0,FMX,FMY,FMZ,XMAS,FFAC,FACX,FAC2,STIFF,
73 . e(*),es(*),em(*),tf(*),v(*),fsav(*),fskyi(lskyi,nfskyi),
79 INTEGER IL, IG, IG3, , IG1, IL3, IL2, IL1, NISKYL
82 . vsmax, vmmax, vmax, ft,fu, xk, dtmi, fac, facdt, dx, finter
90 IF (hflag == 1) ff0 = finter(ifun2,abs(peni)*facx,npc,tf,xk)
104 vsmax =
max(vsmax,v(ig1)**2+v(ig2)**2+v(ig3)**2)
112 vmmax =
max(vmmax,v(ig1)**2+v(ig2)**2+v(ig3)**2)
115 vmax = sqrt(vsmax)+sqrt(vmmax)+ em15
116 ft = finter(ifunc,zero,npc,tf,xk)
118 dtmi =
max(em01*sqrt(xmas/xk),ansmx/vmax)
120 ELSEIF (ansmx == zero)
THEN
121 ft = finter(ifunc,ansmx*facx,npc,tf,xk)
122 xk =
max(em15,xk*ffac)
124 dtmi = em01*sqrt(xmas/xk)
129 ft = finter(ifunc,ansmx*facx,npc,tf,xk)
130 xk =
max(em15,xk*ffac)
134 fu = finter(ifun2,ansmx*facx,npc,tf,xk)
142 ft =
min(ft, ff0 + stiff*dx)
145 ft =
max(fu, ff0 + stiff*dx)
147 xk = ft - ff0 /
max(em15,dx)
151 fac = ft /
max(em15,sqrt(fmx**2+fmy**2+fmz**2))
154 fsav(1)=fsav(1)+fmx*facdt
155 fsav(2)=fsav(2)+fmy*facdt
156 fsav(3)=fsav(3)+fmz*facdt
157 fsav(4)=fsav(4)-fmx*facdt
158 fsav(5)=fsav(5)-fmy*facdt
159 fsav(6)=fsav(6)-fmz*facdt
161 IF (iparit == 0)
THEN
186 fsav(4)=fsav(4)-em(il1)*facdt
187 fsav(5)=fsav(5)-em(il2)*facdt
188 fsav(6)=fsav(6)-em(il3)*facdt
195 nisky = nisky + nsn + nmn
196#include "lockoff.inc"
197 IF (kdtint == 0)
THEN
203 fskyi(niskyl,1)=es(il1)*fac
204 fskyi(niskyl,2)=es(il2)*fac
205 fskyi(niskyl,3)=es(il3)*fac
207 isky(niskyl) = nsv(il)
215 fskyi(niskyl,1)=em(il1)*fac
216 fskyi(niskyl,2)=em(il2)*fac
217 fskyi(niskyl,3)=em(il3)*fac
219 isky(niskyl) = msr(il)
220 fsav(4)=fsav(4)-em(il1)*facdt
221 fsav(5)=fsav(5)-em(il2)*facdt
222 fsav(6)=fsav(6)-em(il3)*facdt
230 fskyi(niskyl,1)=es(il1)*fac
231 fskyi(niskyl,2)=es(il2)*fac
232 fskyi(niskyl,3)=es(il3)*fac
235 isky(niskyl) = nsv(il)
243 fskyi(niskyl,1)=em(il1)*fac
244 fskyi(niskyl,2)=em(il2)*fac
245 fskyi(niskyl,3)=em(il3)*fac
248 isky(niskyl) = msr(il)
249 fsav(4)=fsav(4)-em(il1)*facdt
250 fsav(5)=fsav(5)-em(il2)*facdt
251 fsav(6)=fsav(6)-em(il3)*facdt
256 IF(anim_v(4)+outp_v(4)+h3d_data%N_VECT_CONT>0.AND.
257 . ((tt>=output%TANIM .AND. tt<=output%TANIM_STOP).OR.tt>=toutp.OR.(tt>=h3d_data%TH3D.AND.tt<=h3d_data%TH3D_STOP).OR.
258 . (manim>=4.AND.manim<=15).OR. h3d_data%MH3D /= 0))
THEN
264 fcont(1,nsv(il)) =fcont(1,nsv(il)) + es(il1)*fac
265 fcont(2,nsv(il)) =fcont(2,nsv(il)) + es(il2)*fac
266 fcont(3,nsv(il)) =fcont(3,nsv(il)) + es(il3)*fac
273 fcont(1,msr(il)) =fcont(1,msr(il)) + em(il1)*fac
274 fcont(2,msr(il)) =fcont(2,msr(il)) + em(il2)*fac
275 fcont(3,msr(il)) =fcont(3,msr(il)) + em(il3)*fac
277#include "lockoff.inc"
280 xk =
max(xk,ft /
max(em15,ansmx))
281 dtmi = em01*sqrt(xmas/
max(xk,em20))
subroutine i6ass3(output, 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)