36 SUBROUTINE lecinv(NINIV ,X, V ,VR ,ITAB ,
37 . IFRAME,XFRAME, IGRNOD, FXBIPM, FXBVIT,
47#include "implicit_f.inc"
60 INTEGER NINIV,ITAB(*),IFRAME(LISKN,*)
61 INTEGER,
INTENT(IN) :: FXBIPM(NBIPM,NFXBODY)
63 TYPE (GROUP_) ,
DIMENSION(NGRNOD) :: IGRNOD
66 . x(3,*),v(3,*), vr(3,*), xframe(nxframe,*)
67 my_real,
INTENT(IN) :: fxbrpm(lenrpm)
68 my_real,
INTENT(INOUT) :: fxbvit(lenvar)
72 INTEGER I,J,JJ,K,N,N1,N2,K1,K2,K3,NGR2USR,II
73 INTEGER IDIR,CPT0,CPT1,IFM,IFRA,IGN,CPT20,CPT21
76 . vv ,vtx ,vty ,vtz , nixj(6),
82 WRITE(iout,
'(//,A,/)')
' VELOCITY REINITIALISATION'
92 READ (iin,
'(3I10,F20.0)') n1,n2,idir,vv
94 READ (iin,
'(3F20.0,I10)') vtx,vty,vtz,ifra
98 ign=ngr2usr(-n1,igrnod,ngrnod)
101 CALL ancmsg(msgid=292,anmode=aninfo,i1=-n1)
109 IF (cpt20==0)
WRITE(iout,3000)
110 WRITE(iout,3100) -n1,vv,vtx,vty,vtz,ifra
114 IF (cpt0==0)
WRITE(iout,1000)
115 WRITE(iout,1100) n1,n2,vv,vtx,vty,vtz,ifra
125 DO ii=1,igrnod(ign)%NENTITY
126 n=igrnod(ign)%ENTITY(ii)
135 IF(ifra==iframe(4,k+1))
THEN
136 vx = xframe(1,j)*vtx+xframe(4,j)*vty+xframe(7,j)*vtz
137 vy = xframe(2,j)*vtx+xframe(5,j)*vty+xframe(8,j)*vtz
138 vz = xframe(3,j)*vtx+xframe(6,j)*vty+xframe(9,j)*vtz
142 CALL ancmsg(msgid=222,anmode=aninfo)
145 nixj(1)=xframe(k1,j)*(x(2,n)-xframe(11,j))
146 nixj(2)=xframe(k2,j)*(x(1,n)-xframe(10,j))
147 nixj(3)=xframe(k2,j)*(x(3,n)-xframe(12,j))
148 nixj(4)=xframe(k3,j)*(x(2,n)-xframe(11,j))
149 nixj(5)=xframe(k3,j)*(x(1,n)-xframe(10,j))
150 nixj(6)=xframe(k1,j)*(x(3,n)-xframe(12,j))
152 vr(1,n)= vv*xframe(k1,j)
153 vr(2,n)= vv*xframe(k2,j)
154 vr(3,n)= vv*xframe(k3,j)
160 ELSEIF(-idir==2)
THEN
163 ELSEIF(-idir==3)
THEN
171 IF (idir==-1) vr(1,n)= vv
172 IF (idir==-2) vr(2,n)= vv
173 IF (idir==-3) vr(3,n)= vv
176 v(1,n)= vx+vv*(nixj(3)-nixj(4))
177 v(2,n)= vy+vv*(nixj(5)-nixj(6))
178 v(3,n)= vz+vv*(nixj(1)-nixj(2))
182 IF(itab(n)>=n1.AND.itab(n)<=n2)
THEN
191 IF(ifra==iframe(4,k+1))
THEN
192 vx = xframe(1,j)*vtx+xframe(4,j)*vty+xframe(7,j)*vtz
193 vy = xframe(2,j)*vtx+xframe(5,j)*vty+xframe(8,j
194 vz = xframe(3,j)*vtx+xframe(6,j)*vty+xframe(9,j)*vtz
198 CALL ancmsg(msgid=222,anmode=aninfo)
201 nixj(1)=xframe(k1,j)*(x(2,n)-xframe(11,j))
202 nixj(2)=xframe(k2,j)*(x(1,n)-xframe(10,j))
203 nixj(3)=xframe(k2,j)*(x(3,n)-xframe(12,j))
204 nixj(4)=xframe(k3,j)*(x(2,n)-xframe(11,j))
205 nixj(5)=xframe(k3,j)*(x(1,n)-xframe(10,j))
206 nixj(6)=xframe(k1,j)*(x(3,n)-xframe(12,j))
208 vr(1,n)= vv*xframe(k1,j)
209 vr(2,n)= vv*xframe(k2,j)
210 vr(3,n)= vv*xframe(k3,j)
216 ELSEIF(-idir==2)
THEN
219 ELSEIF(-idir==3)
THEN
227 IF (idir==-1) vr(1,n)= vv
228 IF (idir==-2) vr(2,n)= vv
229 IF (idir==-3) vr(3,n)= vv
232 v(1,n)= vx+vv*(nixj(3)-nixj(4))
233 v(2,n)= vy+vv*(nixj(5)-nixj(6))
234 v(3,n)= vz+vv*(nixj(1)-nixj(2))
242 IF (cpt21==0)
WRITE(iout,4000)
243 WRITE(iout,4100)-n1,idir,vv
249 DO ii=1,igrnod(ign)%NENTITY
250 n=igrnod(ign)%ENTITY(ii)
254 DO ii=1,igrnod(ign)%NENTITY
255 n=igrnod(ign)%ENTITY(ii)
261 IF (cpt1==0)
WRITE(iout,2000)
262 WRITE(iout,2100)n1,n2,idir,vv
269 IF(itab(n)>=n1.AND.itab(n)<=n2)v(idir,n) = vv
273 IF(itab(n)>=n1.AND.itab(n)<=n2)vr(idir-3,n) = vv
283 CALL fxbvini(fxbipm, fxbvit, fxbrpm, v, vr)
288 1000
FORMAT(3x,
'FIRST-N',4x,
'LAST-N',10x,
'ROTATION',8x,
289 +
'TRANSL X',8x,
'TRANSL Y',8x,
'TRANSL Z',3x,
'FRAME_ID')
290 1100
FORMAT(i10,i10,2x,1pe16.9,1pe16.9,1pe16.9,1pe16.9,i10)
292 2000
FORMAT(3x,
'FIRST-N',4x,
'LAST-N',3x,
'DIRECT.',10x,
'VELOCITY')
293 2100
FORMAT(i10,i10,i10,2x,1pe16.9)
294 3000
FORMAT(3x,
'GRN_id ',20x,
'ROTATION',8x,
295 +
'TRANSL X',8x,
'TRANSL Y',8x,
'TRANSL Z',3x,
'FRAME_ID')
296 3100
FORMAT(i10,12x,1pe16.9,1pe16
298 4000
FORMAT(3x,
'GRN_id',13x,
'DIRECT.',10x,
'VELOCITY')
299 4100
FORMAT(i10,i10,12x,1pe16.9)
subroutine ancmsg(msgid, msgtype, anmode, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, r1, r2, r3, r4, r5, r6, r7, r8, r9, c1, c2, c3, c4, c5, c6, c7, c8, c9, prmode)