38 . NIR ,RS ,RX ,RY ,RZ ,
39 . FMX ,FMY ,FMZ ,H ,STIFM )
43#include "implicit_f.inc"
50 . rs(3),rx(4),ry(4),rz(4),fmx(4),fmy(4),fmz(4),h(4),stifm
61 my_real MX,MY,MZ,D1,D2,DD,RAX,RBX,RAY,RBY, MXY,MYX,MYZ,MZY,MXZ,MZX,MXX,MYY,MZZ,RXX,RYY,FXX,FYY,FA,FB
62 my_real rsx(4),rsy(4),rsz(4),df(nir),mat(3,3),mati(3,3),bx,by,bz
66 rsx(1) = rx(1) - rs(1)
67 rsy(1) = ry(1) - rs(2)
68 rsz(1) = rz(1) - rs(3)
69 rsx(2) = rx(2) - rs(1)
70 rsy(2) = ry(2) - rs(2)
71 rsz(2) = rz(2) - rs(3)
72 rsx(3) = rx(3) - rs(1)
73 rsy(3) = ry(3) - rs(2)
74 rsz(3) = rz(3) - rs(3)
75 rsx(4) = rx(4) - rs(1)
76 rsy(4) = ry(4) - rs(2)
77 rsz(4) = rz(4) - rs(3)
83 mx = mx + rsy(j)*fmz(j) - rsz(j)*fmy(j)
84 my = my + rsz(j)*fmx(j) - rsx(j)*fmz(j)
85 mz = mz + rsx(j)*fmy(j) - rsy(j)*fmx(j)
88 bx= rsx(1)*h(1)+rsx(2)*h(2)+rsx(3)*h(3)+rsx(4)*h(4)
89 by= rsy(1)*h(1)+rsy(2)*h(2)+rsy(3)*h(3)+rsy(4)*h(4)
90 bz= rsz(1)*h(1)+rsz(2)*h(2)+rsz(3)*h(3)+rsz(4)*h(4)
93 rxx = rx(2)+rx(3)-rx(1)-rx(4)
94 ryy = ry(3)+ry(4)-ry(1)-ry(2)
99 mxy = rsx(1)*fmy(1)+rsx(2)*fmy(2)+rsx(3)*fmy(3)+rsx(4)*fmy(4)
100 myx = rsy(1)*fmx(1)+rsy(2)*fmx(2)+rsy(3)*fmx(3)+rsy(4)*fmx(4)
105 stifm=
max(abs(bx) / abs(rxx),abs(by) / abs(ryy))
107 fmx(1) = fmx(1) - fxx
108 fmx(2) = fmx(2) - fxx
109 fmx(3) = fmx(3) + fxx
110 fmx(4) = fmx(4) + fxx
112 fmy(1) = fmy(1) + fyy
113 fmy(2) = fmy(2) - fyy
114 fmy(3) = fmy(3) - fyy
115 fmy(4) = fmy(4) + fyy
119 myz = rsy(1)*fmz(1)+rsy(2)*fmz(2)+rsy(3)*fmz(3)+rsy(4)*fmz(4)
120 mzy = rsz(1)*fmy(1)+rsz(2)*fmy(2)+rsz(3)*fmy(3)+rsz(4)*fmy(4)
122 mzx = rsz(1)*fmx(1)+rsz(2)*fmx(2)+rsz
123 mxz = rsx(1)*fmz(1)+rsx(2)*fmz(2)+rsx(3)*fmz(3)+rsx(4)*fmz(4)
130 d1 = -mxx*rbx - myy*rby
131 d2 = mxx*rax + myy*ray
132 dd = ray*rbx - rax*rby
137 . sqrt((by*by+bz*bz)*rbx*rbx+(bz*bz+bx*bx)*rby*rby)/abs(dd),
138 . sqrt((by*by+bz*bz)*rax*rax+(bz*bz+bx*bx)*ray*ray)/abs(dd))
146 ELSEIF (nir == 3)
THEN
147 rxx = rx(2)+rx(3)-two*rx(1)
148 ryy = two*ry(3)-ry(1)-ry(2)
151 mxy = rsx(1)*fmy(1)+rsx(2)*fmy(2)+rsx(3)*fmy(3)
152 myx = rsy(1)*fmx(1)+rsy(2)*fmx(2)+rsy(3)*fmx(3)
158 stifm=
max(abs(bx) / abs(rxx),abs(by) / abs(ryy))
160 fmx(1) = fmx(1) - fxx
161 fmx(2) = fmx(2) - fxx
162 fmx(3) = fmx(3) + two * fxx
164 fmy(1) = fmy(1) - two * fyy
165 fmy(2) = fmy(2) + fyy
166 fmy(3) = fmy(3) + fyy
168 mx=mx+(two*rsz(1)-rsz(2)-rsz(3))*fyy
169 my=my+(two*rsz(3)-rsz(1)-rsz(2))*fxx
182 df(1) = -mati(1,1)*mx + mati(1,2)*my
183 df(2) = -mati(2,1)*mx + mati(2,2)*my
184 df(3) = -mati(3,1)*mx + mati(3,2)*my
186 fmz(j) = fmz(j) + df(j)
189 bx= rsx(1)*h(1)+rsx(2)*h(2)+rsx(3)*h(3)
190 by= rsy(1)*h(1)+rsy(2)*h(2)+rsy(3)*h(3)
191 bz= rsz(1)*h(1)+rsz(2)*h(2)+rsz(3)*h(3)
192 stifm=
max(stifm,sqrt(bx*bx+by*by+bz*bz)*sqrt(
max(
193 . mati(1,1)*mati(1,1)+mati(2,1)*mati(2,1)+mati(3,1)*mati(3,1),
194 . mati(1,2)*mati(1,2)+mati(2,2)*mati(2,2)+mati(3,2)*mati(3,2),
195 . mati(1,3)*mati(1,3)+mati(2,3)*mati(2,3)+mati(3,3)*mati(3,3))))
220 . NIR ,RS ,RX ,RY ,RZ ,
221 . FMX ,FMY ,FMZ ,H ,STIFM ,
222 . MXS ,MYS ,MZS ,STIFMR ,BETAX ,
227#include
"implicit_f.inc"
234 . RS(3),RX(4),RY(4),RZ(4),FMX(4),FMY(4),FMZ(4),H(4),STIFM,MXS,MYS,MZS,STIFMR,
239#include "units_c.inc"
240#include "param_c.inc"
241#include "com01_c.inc"
246 my_real MX,MY,MZ,D1,D2,DD,RAX,RBX,RAY,RBY,MXY,MYX,MYZ,MZY,MXZ,MZX,MXX,MYY,MZZ,RXX,RYY,FXX,FYY,FA,FB
247 my_real RSX(4),RSY(4),RSZ(4),DF(NIR),MAT(3,3),MATI(3,3),BX,BY,BZ,ALPHA
251 rsx(1) = rx(1) - rs(1)
252 rsy(1) = ry(1) - rs(2)
253 rsz(1) = rz(1) - rs(3)
254 rsx(2) = rx(2) - rs(1)
255 rsy(2) = ry(2) - rs(2)
256 rsz(2) = rz(2) - rs(3)
257 rsx(3) = rx(3) - rs(1)
258 rsy(3) = ry(3) - rs(2)
259 rsz(3) = rz(3) - rs(3)
260 rsx(4) = rx(4) - rs(1)
261 rsy(4) = ry(4) - rs(2)
262 rsz(4) = rz(4) - rs(3)
268 mx = mx + rsy(j)*fmz(j) - rsz(j)*fmy(j)
269 my = my + rsz(j)*fmx(j) - rsx(j)*fmz(j)
270 mz = mz + rsx(j)*fmy(j) - rsy(j)*fmx(j)
273 bx= rsx(1)*h(1)+rsx(2)*h(2)+rsx(3)*h(3)+rsx(4)*h(4)
274 by= rsy(1)*h(1)+rsy(2)*h(2)+rsy(3)*h(3)+rsy(4)*h(4)
275 bz= rsz(1)*h(1)+rsz(2)*h(2)+rsz(3)*h(3)+rsz(4)*h(4)
279 rxx = rx(2)+rx(3)-rx(1)-rx(4)
280 ryy = ry(3)+ry(4)-ry(1)-ry(2)
285 alpha = abs(rxx)/(abs(rxx)+abs(ryy))
289 mxy = rsx(1)*fmy(1)+rsx(2)*fmy(2)+rsx(3)*fmy(3)+rsx(4)*fmy(4)-alpha*mzs
290 myx = rsy(1)*fmx(1)+rsy(2)*fmx(2)+rsy(3)*fmx(3)+rsy(4)*fmx(4)+(one-alpha)*mzs
298 fyy = (betay*mxy-(one-betax)*myx)/rxx
299 fxx = ((one-betay)*mxy-betax*myx)/ryy
301 stifm=
max(sqrt((one-betax)*by*by+ betay*bx*bx)/abs(rxx),sqrt(betax*by
302 stifmr=one/(abs(rxx)+abs(ryy))
304 fmx(1) = fmx(1) - fxx
305 fmx(2) = fmx(2) - fxx
306 fmx(3) = fmx(3) + fxx
307 fmx(4) = fmx(4) + fxx
309 fmy(1) = fmy(1) + fyy
310 fmy(2) = fmy(2) - fyy
311 fmy(3) = fmy(3) - fyy
312 fmy(4) = fmy(4) + fyy
318 myz = rsy(1)*fmz(1)+rsy(2)*fmz(2)+rsy(3)*fmz(3)+rsy(4)*fmz(4)
319 mzy = rsz(1)*fmy(1)+rsz(2)*fmy(2)+rsz(3)*fmy(3)+rsz(4)*fmy(4)
320 mxx = betax*(myz - mzy - mxs)
321 mzx = rsz(1)*fmx(1)+rsz(2)*fmx(2)+rsz(3)*fmx(3)+rsz(4)*fmx(4)
322 mxz = rsx(1)*fmz(1)+rsx(2)*fmz(2)+rsx(3)*fmz(3)+rsx(4)*fmz(4)
323 myy = betay*(mzx - mxz - mys)
329 d1 = -mxx*rbx - myy*rby
330 d2 = mxx*rax + myy*ray
331 dd = ray*rbx - rax*rby
336 . sqrt((by*by+bz*bz)*rbx*rbx*betax+(bz*bz+bx*bx)*rby*rby*betay
337 . sqrt((by*by+bz*bz)*rax*rax*betax+(bz*bz+bx*bx)*ray*ray*betay)/abs(dd))
339 stifmr=
max(stifmr,(abs(rbx*betax)+abs(rby*betay))/abs(dd),(abs(rax*betax)+abs(ray*betay)
347 ELSEIF (nir == 3)
THEN
348 rxx = rx(2)+rx(3)-two*rx(1)
349 ryy = two*ry(3)-ry(1)-ry(2)
353 alpha = abs(rxx)/(abs(rxx)+abs(ryy))
358 mxy = rsx(1)*fmy(1)+rsx(2)*fmy(2)+rsx(3)*fmy(3)-alpha*mzs
359 myx = rsy(1)*fmx(1)+rsy(2)*fmx(2)+rsy(3)*fmx(3)+(one-alpha)*mzs
367 fyy = -(betay*mxy-(one-betax)*myx)/rxx
368 fxx = ((one-betay)*mxy-betax*myx)/ryy
370 stifm=
max(sqrt((one-betax)*by*by+ betay*bx*bx)/abs(rxx),sqrt(betax*by*by+ (one-betay)*bx*bx)/abs(ryy))
371 stifmr=one/(abs(rxx)+abs(ryy))
373 fmx(1) = fmx(1) - fxx
374 fmx(2) = fmx(2) - fxx
375 fmx(3) = fmx(3) + two * fxx
377 fmy(1) = fmy(1) - two * fyy
378 fmy(2) = fmy(2) + fyy
379 fmy(3) = fmy(3) + fyy
385 mx=betax*(mx+(two*rsz(1)-rsz(2)-rsz(3))*fyy - mxs)
386 my=betay*(my+(two*rsz(3)-rsz(1)-rsz(2))*fxx - mys)
398 df(1) = -mati(1,1)*mx + mati(1,2)*my
399 df(2) = -mati(2,1)*mx + mati(2,2)*my
400 df(3) = -mati(3,1)*mx + mati(3,2)*my
402 fmz(j) = fmz(j) + df(j)
405 bx= rsx(1)*h(1)+rsx(2)*h(2)+rsx(3)*h(3)
406 by= rsy(1)*h(1)+rsy(2)*h(2)+rsy(3)*h(3)
407 bz= rsz(1)*h(1)+rsz(2)*h(2)+rsz(3)*h(3)
408 stifm=
max(stifm,sqrt(bx*bx+by*by+bz*bz)*sqrt(
max(
409 . betax*(mati(1,1)*mati(1,1)+mati(2,1)*mati(2,1)+mati(3,1)*mati(3,1)),
410 . betay*(mati(1,2)*mati(1,2)+mati(2,2)*mati(2,2)+mati(3,2)*mati(3,2)),
411 . mati(1,3)*mati(1,3)+mati(2,3)*mati(2,3)+mati(3,3)*mati(3,3))))
413 stifmr=
max(stifmr,abs(mati(1,1))+abs(mati(1,2)),abs(mati(2,1))+abs(mati(2,2)),abs(mati(3,1))+abs(mati(3,2)))