home *** CD-ROM | disk | FTP | other *** search
-
- SUBROUTINE BHOLE 0222
- C ...GRAVITATIONAL EFFECTS OF BLACK HOLES. HGRAV 0223
- C ...IS GRAVITATIONAL CONSTANT. ONLY E,K,G,T ARE EFFECTED. 0224
-
- c include 'tcommon.for'
- %include tcommon.for
-
- DATA HGRAV/.6/ 0244
- X=IHOLE 0245
- Y=JHOLE 0246
- IF(IDOCK.EQ.2)GO TO 50 0247
- CALL GETBRG(DELTA,XQE,X,YQE,Y,VPX,VPY) 0248
- D=VPX*VPX+VPY*VPY 0249
- DX=COSD(DELTA)*HGRAV/D 0250
- DY=SIND(DELTA)*HGRAV/D 0251
- XQE=XQE+DX 0252
- YQE=YQE+DY 0253
- DX=DX+COSD(PDEG)*PSP 0254
- DY=DY+SIND(PDEG)*PSP 0255
- PRSPD=PSP 0256
- PRDEG=PDEG 0257
- PSP=SQRT(DX*DX+DY*DY) 0258
- CALL GETBRG(PDEG,0.,DX,0.,DY,VPX,VPY) 0259
- IF(DSP.EQ.PRSPD)DSP=PSP 0260
- IF(DDEG.EQ.PRDEG)DDEG=PDEG 0261
- 50 IF(IGH.EQ.0)GO TO 100 0262
- CALL GETBRG(DELTA,GHOST(1),X,GHOST(2),Y,VPX,VPY) 0263
- D=VPX*VPX+VPY*VPY 0264
- DX=COSD(DELTA)*HGRAV/D 0265
- DY=SIND(DELTA)*HGRAV/D 0266
- GHOST(1)=GHOST(1)+DX 0267
- GHOST(2)=GHOST(2)+DY 0268
- DX=DX+COSD(GHOST(5))*GHOST(4) 0269
- DY=DY+SIND(GHOST(5))*GHOST(4) 0270
- PRSPD=GHOST(4) 0271
- PRDEG=GHOST(5) 0272
- GHOST(4)=SQRT(DX*DX+DY*DY) 0273
- CALL GETBRG(GHOST(5),0.,DX,0.,DY,VPX,VPY) 0274
- IF(GHOST(6).EQ.PRSPD)GHOST(6)=GHOST(4) 0275
- IF(GHOST(7).EQ.PRDEG)GHOST(7)=GHOST(5) 0276
- 100 IF(KLNGNS.EQ.0)GO TO 200 0277
- DO 150 J=1,KLNGNS 0278
- IF(XKL(J,1).EQ.0.)GO TO 150 0279
- CALL GETBRG(DELTA,XKL(J,1),X,XKL(J,2),Y,VPX,VPY) 0280
- D=VPX*VPX+VPY*VPY 0281
- DX=COSD(DELTA)*HGRAV/D 0282
- DY=SIND(DELTA)*HGRAV/D 0283
- XKL(J,1)=XKL(J,1)+DX 0284
- XKL(J,2)=XKL(J,2)+DY 0285
- DX=DX+COSD(XKL(J,4))*XKL(J,3) 0286
- DY=DY+SIND(XKL(J,4))*XKL(J,3) 0287
- PRSPD=XKL(J,3) 0288
- PRDEG=XKL(J,4) 0289
- XKL(J,3)=SQRT(DX*DX+DY*DY) 0290
- CALL GETBRG(XKL(J,4),0.,DX,0.,DY,VPX,VPY) 0291
- IF(XKL(J,5).EQ.PRSPD)XKL(J,5)=XKL(J,3) 0292
- IF(XKL(J,6).EQ.PRDEG)XKL(J,6)=XKL(J,4) 0293
- 150 CONTINUE 0294
- 200 IF(NTORPS.EQ.0)GO TO 999 0295
- DO 250 J=1,NTORPS 0296
- IF(TORPS(J,1).EQ.0.)GO TO 250 0297
- ZPLUS=0. 0298
- IF(TORPS(J,4).LT.0.)ZPLUS=-360. 0299
- IF(TORPS(J,4).GE.360.)ZPLUS=360. 0300
- CALL GETBRG(DELTA,TORPS(J,1),X,TORPS(J,2),Y,VPX,VPY) 0301
- D=VPX*VPX+VPY*VPY 0302
- DX=COSD(DELTA)*HGRAV/D 0303
- DY=SIND(DELTA)*HGRAV/D 0304
- TORPS(J,1)=TORPS(J,1)+DX 0305
- TORPS(J,2)=TORPS(J,2)+DY 0306
- DX=DX+COSD(TORPS(J,4))*TORPS(J,3) 0307
- DY=DY+SIND(TORPS(J,4))*TORPS(J,3) 0308
- TORPS(J,3)=SQRT(DX*DX+DY*DY) 0309
- CALL GETBRG(TORPS(J,4),0.,DX,0.,DY,VPX,VPY) 0310
- IF(TORPS(J,4).LT.ZPLUS)TORPS(J,4)=TORPS(J,4)+360. 0311
- IF(TORPS(J,4).GE.ZPLUS+360.)TORPS(J,4)=TORPS(J,4)-360. 0312
- 250 CONTINUE 0313
- 999 RETURN 0314
- END 0315