31 1 X ,NSV ,NSN ,INTSTAMP,ITASK ,
32 2 XSAV ,NIN ,STFN ,V ,XSLV_G ,
33 3 XMSR_G,VSLV_G,VMSR_G ,X21MSR ,V21MSR ,
42#include "implicit_f.inc"
52 INTEGER NSN, ITASK, NSV(*), NIN
54 . X(3,*), V(3,*), XSAV(3,*), STFN(*),
55 . XSLV_G(*), (*), VSLV_G(*), VMSR_G(*),
56 . x21msr(*), v21msr(*), xloc(3,*)
61 INTEGER NSNF,NSNL, I, J, II, N, IROT
63 . XSLV(6), VSLV(6), XX, YY, ZZ
82 nsnf = 1 + itask*nsn / nthread
83 nsnl = (itask+1)*nsn / nthread
88#include "vectorize.inc"
92 IF(stfn(i)/=zero)
THEN
94 xloc(1,i)=x(1,j)-intstamp%XG(1)
95 xloc(2,i)=x(2,j)-intstamp%XG(2)
96 xloc(3,i)=x(3,j)-intstamp%XG(3)
100#include "vectorize.inc"
104 IF(stfn(i)/=zero)
THEN
106 xx=x(1,j)-intstamp%XG(1)
107 yy=x(2,j)-intstamp%XG(2)
108 zz=x(3,j)-intstamp%XG(3)
111 . +intstamp%ROT(2)*yy
112 . +intstamp%ROT(3)*zz
115 . +intstamp%ROT(5)*yy
116 . +intstamp%ROT(6)*zz
119 . +intstamp%ROT(8)*yy
120 . +intstamp%ROT(9)*zz
125#include "vectorize.inc"
128 IF(stfn(i)/=zero)
THEN
129 xslv(1)=
max(xslv(1),x(1,j)-xsav(1,i))
130 xslv(2)=
max(xslv(2),x(2,j)-xsav(2,i))
131 xslv(3)=
max(xslv(3),x(3,j)-xsav(3,i))
132 xslv(4)=
min(xslv(4),x(1,j)-xsav(1,i))
133 xslv(5)=
min(xslv(5),x(2,j)-xsav(2,i))
134 xslv(6)=
min(xslv(6),x(3,j)-xsav(3,i))
136 vslv(1)=
max(vslv(1),v(1,j))
137 vslv(2)=
max(vslv(2),v(2,j))
138 vslv(3)=
max(vslv(3),v(3,j))
139 vslv(4)=
min(vslv(4),v(1,j))
140 vslv(5)=
min(vslv(5),v(2,j))
141 vslv(6)=
min(vslv(6),v(3,j))
147 xslv_g(1)=
max(xslv_g(1),xslv(1))
148 xslv_g(2)=
max(xslv_g(2),xslv(2))
149 xslv_g(3)=
max(xslv_g(3),xslv(3))
150 xslv_g(4)=
min(xslv_g(4),xslv(4))
151 xslv_g(5)=
min(xslv_g(5),xslv(5))
152 xslv_g(6)=
min(xslv_g(6),xslv(6))
154 vslv_g(1)=
max(vslv_g(1),vslv(1))
155 vslv_g(2)=
max(vslv_g(2),vslv(2))
156 vslv_g(3)=
max(vslv_g(3),vslv(3))
157 vslv_g(4)=
min(vslv_g(4),vslv(4))
158 vslv_g(5)=
min(vslv_g(5),vslv(5))
159 vslv_g(6)=
min(vslv_g(6),vslv(6))
160#include "lockoff.inc"
162 xmsr_g(1)=intstamp%D(1)-xsav(1,nsn+1)
163 xmsr_g(2)=intstamp%D(2)-xsav(2,nsn+1)
164 xmsr_g(3)=intstamp%D(3)-xsav(3,nsn+1)
165 xmsr_g(4)=intstamp%D(1)-xsav(1,nsn+1)
166 xmsr_g(5)=intstamp%D(2)-xsav(2,nsn+1)
167 xmsr_g(6)=intstamp%D(3)-xsav(3,nsn+1)
169 vmsr_g(1)=intstamp%V(1)
170 vmsr_g(2)=intstamp%V(2)
171 vmsr_g(3)=intstamp%V(3)
172 vmsr_g(4)=intstamp%V(1)
173 vmsr_g(5)=intstamp%V(2)
174 vmsr_g(6)=intstamp%V(3)
178 . intstamp%ROT(1)*intstamp%BRACKET(1)
179 . +intstamp%ROT(4)*intstamp%BRACKET(2)
180 . +intstamp%ROT(7)*intstamp%BRACKET(3)
182 . intstamp%ROT(2)*intstamp%BRACKET(1)
183 . +intstamp%ROT(5)*intstamp%BRACKET(2)
184 . +intstamp%ROT(8)*intstamp%BRACKET(3)
186 . intstamp%ROT(3)*intstamp%BRACKET(1)
187 . +intstamp%ROT(6)*intstamp%BRACKET(2)
188 . +intstamp%ROT(9)*intstamp%BRACKET(3)
195 v21msr(1)= intstamp%VR(2)*intstamp%BRACKET(3)
196 . -intstamp%VR(3)*intstamp%BRACKET(2)
197 v21msr(2)= intstamp%VR(3)*intstamp%BRACKET(1)
198 . -intstamp%VR(1)*intstamp%BRACKET(3)
199 v21msr(3)= intstamp%VR(1)*intstamp%BRACKET(2)
200 . -intstamp%VR(2)*intstamp%BRACKET(1)
216 stfn(i)=
max(stfn(i),zero)
subroutine i21buce_crit(x, nsv, nsn, intstamp, itask, xsav, nin, stfn, v, xslv_g, xmsr_g, vslv_g, vmsr_g, x21msr, v21msr, xloc)