Révision 205
TrouNoir/trou_noir.f (revision 205) | ||
---|---|---|
26 | 26 |
REAL*8 rs,ri,re ! rayons de Schwarzschild,interieur et exterieur |
27 | 27 |
REAL*8 tho ! angle normale-disque & direction-observateur |
28 | 28 |
REAL*8 ro ! distance entre l'observateur et le trou noir |
29 |
INTEGER*4 q ! parametre de spectre
|
|
29 |
REAL*8 q ! parametre de spectre
|
|
30 | 30 |
REAL*4 bss ! borne superieure du spectre |
31 | 31 |
|
32 | 32 |
c |
... | ... | |
34 | 34 |
c |
35 | 35 |
|
36 | 36 |
INTEGER*4 dim ! dimension de la plaque photographique (en pixels) |
37 |
PARAMETER (dim=512)
|
|
37 |
PARAMETER (dim=1024)
|
|
38 | 38 |
REAL*4 stp ! pas d'iteration en pixels sur la plaque |
39 | 39 |
INTEGER*4 nmx ! nombre total d'iterations |
40 | 40 |
REAL*8 d ! distance exploree du centre de la plaque |
... | ... | |
59 | 59 |
c RESULTATS DE L'INTEGRATION DE L'EQUATION DIFFERENTIELLE |
60 | 60 |
c |
61 | 61 |
|
62 |
REAL*8 rp(2000) ! vecteur polaire
|
|
63 |
REAL*8 nh ! nombre d'avancements angulaires
|
|
62 |
REAL*8 rp(2048) ! vecteur polaire
|
|
63 |
INTEGER*4 nh ! nombre d'avancements angulaires
|
|
64 | 64 |
|
65 | 65 |
c |
66 | 66 |
c RESULTATS DE LA SIMULATION |
... | ... | |
68 | 68 |
|
69 | 69 |
REAL*4 zp(dim,dim) ! image en decalage spectral |
70 | 70 |
REAL*4 fp(dim,dim) ! image en flux |
71 |
REAL*8 fx(200) ! flux par tranche de decalage de frequence |
|
72 |
INTEGER*4 nt(200) ! nombre de photon par tranche de decalage |
|
73 | 71 |
|
74 | 72 |
c |
75 | 73 |
c AUTRES VARIABLES... |
... | ... | |
92 | 90 |
LOGICAL raie ! variable interactive de type de spectre |
93 | 91 |
LOGICAL dist ! variable interactive de distance |
94 | 92 |
|
93 |
REAL*4 t_start,t_stop |
|
95 | 94 |
c |
96 | 95 |
c TYPE DE SPECTRE |
97 | 96 |
c |
98 | 97 |
|
99 |
raie=.TRUE. ! TRUE -> raie infiniment fine |
|
100 |
c ! FALSE -> corps noir
|
|
98 |
c raie=.TRUE. ! TRUE -> raie infiniment fine
|
|
99 |
raie=.FALSE. ! FALSE -> corps noir
|
|
101 | 100 |
|
102 | 101 |
c |
103 | 102 |
c TYPE DE DISTANCE |
104 | 103 |
c |
105 | 104 |
|
106 |
dist=.TRUE. ! TRUE -> distance infinie |
|
107 |
c ! FALSE -> distance finie
|
|
105 |
c dist=.TRUE. ! TRUE -> distance infinie
|
|
106 |
dist=.FALSE. ! FALSE -> distance finie
|
|
108 | 107 |
|
109 | 108 |
c |
110 | 109 |
c INITIALISATION DES TABLEAUX |
111 | 110 |
c |
112 | 111 |
|
113 |
DO i=1,200 |
|
114 |
fx(i)=0. |
|
115 |
nt(i)=0 |
|
116 |
END DO |
|
117 |
|
|
118 | 112 |
DO i=1,dim |
119 | 113 |
DO j=1,dim |
120 | 114 |
zp(i,j)=0. |
... | ... | |
148 | 142 |
b=0. |
149 | 143 |
thx=asin(bmx/ro) |
150 | 144 |
pc=0 |
151 |
nbr=200
|
|
145 |
nbr=256
|
|
152 | 146 |
IF (raie .EQV. .TRUE.) THEN |
153 | 147 |
bss=2. |
154 | 148 |
ELSE |
... | ... | |
159 | 153 |
c BOUCLE PRINCIPALE DE LA SIMULATION |
160 | 154 |
c |
161 | 155 |
|
156 |
CALL TIMER(t_start) |
|
157 |
|
|
162 | 158 |
DO n=1,nmx |
163 |
pc=INT(100./nmx*n) |
|
164 |
IF (pc.NE.INT(100./nmx*(n-1))) WRITE (*,*) pc, ' %' |
|
165 | 159 |
|
166 | 160 |
c |
167 | 161 |
c Affectation des conditions initiales de la resolution Runge-Kutta |
168 | 162 |
c ( Premier etage d'imbrication -> n ) |
169 | 163 |
c |
170 |
h=pi/500.
|
|
164 |
h=4*pi/2048.
|
|
171 | 165 |
d=stp*n |
172 | 166 |
IF (dist .EQV. .TRUE.) THEN |
173 | 167 |
db=bmx/nmx |
... | ... | |
206 | 200 |
c ( Deuxieme etage d'imbrication -> n & 1 ) |
207 | 201 |
c |
208 | 202 |
|
209 |
DO i=nh+1,2000
|
|
203 |
DO i=nh+1,2048
|
|
210 | 204 |
rp(i)=0. |
211 | 205 |
END DO |
212 | 206 |
|
... | ... | |
261 | 255 |
c S'il y a impact calcul - du rapport de frequence |
262 | 256 |
c - du spectre de photons et de flux |
263 | 257 |
|
264 |
CALL impact(raie,d,phi,dim,r,b,tho,m,zp,fp,nt,
|
|
265 |
& fx,q,db,h,nbr,bss)
|
|
258 |
CALL impact(raie,d,phi,dim,r,b,tho,m,zp,fp, |
|
259 |
& q,db,h,nbr,bss) |
|
266 | 260 |
|
267 | 261 |
END IF |
268 | 262 |
|
... | ... | |
271 | 265 |
END DO |
272 | 266 |
END DO |
273 | 267 |
|
268 |
|
|
269 |
CALL TIMER(t_stop) |
|
270 |
|
|
271 |
WRITE (*,*) 'Elapsed time = ', t_stop - t_start |
|
272 |
|
|
274 | 273 |
c Appel de la routine d'affichage |
275 | 274 |
|
276 |
CALL affichage(zp,fp,nt,fx,dim,nbr,bss,bmx,m,ri,re,tho,pi)
|
|
275 |
CALL affichage(zp,fp,dim,nbr,bss,bmx,m,ri,re,tho,pi) |
|
277 | 276 |
|
278 | 277 |
WRITE(*,*) |
279 | 278 |
WRITE(*,*) 'C''est TERMINE ! ' |
280 | 279 |
WRITE(*,*) |
281 | 280 |
|
282 | 281 |
STOP |
283 |
END |
|
282 |
END PROGRAM
|
|
284 | 283 |
|
285 | 284 |
c |
286 | 285 |
c Cette fonction permet de trouver un arctangente entre 0 et 2*pi |
... | ... | |
311 | 310 |
END |
312 | 311 |
|
313 | 312 |
c |
313 |
c |
|
314 |
c |
|
315 |
SUBROUTINE timer(ytime) |
|
316 |
REAL*4 ytime |
|
317 |
INTEGER*4 clk_max,clk_rate,clk_read |
|
318 |
|
|
319 |
CALL SYSTEM_CLOCK(clk_read,clk_rate,clk_max) |
|
320 |
|
|
321 |
ytime=FLOAT(clk_read)/FLOAT(clk_rate) |
|
322 |
|
|
323 |
RETURN |
|
324 |
END |
|
325 |
c |
|
314 | 326 |
c Premiere fonction du systeme -> ( d(u)/d(phi)=f(phi,u,v) ) |
315 | 327 |
c |
316 | 328 |
|
... | ... | |
366 | 378 |
c |
367 | 379 |
|
368 | 380 |
SUBROUTINE impact(raie,d,phi,dim,r,b,tho,m,zp,fp, |
369 |
& nt,fx,q,db,h,nbr,bss)
|
|
370 |
REAL*8 d,phi,r,b,tho,m,fx(200),db,h
|
|
371 |
INTEGER*4 dim,nt(200),q,nbr
|
|
381 |
& q,db,h,nbr,bss) |
|
382 |
REAL*8 d,phi,r,b,tho,m,db,h,q
|
|
383 |
INTEGER*4 dim |
|
372 | 384 |
REAL*4 zp(dim,dim),fp(dim,dim),bss |
373 | 385 |
REAL*4 xe,ye |
374 | 386 |
INTEGER*4 xi,yi |
... | ... | |
390 | 402 |
c pour le cas d'une raie infiniment fine ou un corps noir |
391 | 403 |
|
392 | 404 |
IF (raie .EQV. .TRUE.) THEN |
393 |
CALL spectre(nt,fx,rf,q,b,db,h,r,m,nbr,bss,flx)
|
|
405 |
CALL spectre(rf,q,b,db,h,r,m,bss,flx)
|
|
394 | 406 |
ELSE |
395 |
CALL spectre_bb(nt,fx,rf,q,b,db,h,r,m,nbr,bss,flx)
|
|
407 |
CALL spectre_bb(rf,b,db,h,r,m,nbr,bss,flx)
|
|
396 | 408 |
END IF |
397 | 409 |
|
398 | 410 |
c Affectation sur chacune des images du decalage spectral et du flux |
... | ... | |
413 | 425 |
|
414 | 426 |
c Calcul du flux puis du spectre pour une raie infiniment fine |
415 | 427 |
|
416 |
SUBROUTINE spectre(nt,fx,rf,q,b,db,h,r,m,nbr,bss,flx) |
|
417 |
REAL*8 fx(200) |
|
418 |
REAL*8 rf,b,db,h,r,m,flx |
|
428 |
SUBROUTINE spectre(rf,q,b,db,h,r,m,bss,flx) |
|
429 |
REAL*8 rf,b,db,h,r,m,flx,q |
|
419 | 430 |
REAL*4 bss |
420 |
INTEGER*4 nt(200),q,nbr |
|
421 |
INTEGER*4 fi |
|
422 |
fi=INT(rf*nbr/bss) |
|
423 |
nt(fi)=nt(fi)+1 |
|
424 | 431 |
flx=(r/m)**q*rf**4*b*db*h |
425 |
fx(fi)=fx(fi)+flx |
|
426 | 432 |
RETURN |
427 | 433 |
END |
428 | 434 |
|
429 | 435 |
c Calcul du flux puis du spectre pour un corps noir |
430 | 436 |
|
431 |
SUBROUTINE spectre_bb(nr,fx,rf,q,b,db,h,r,m,nbr,bss,flx)
|
|
432 |
REAL*8 fx(200),nu_rec,nu_em,qu,v
|
|
437 |
SUBROUTINE spectre_bb(rf,b,db,h,r,m,nbr,bss,flx)
|
|
438 |
REAL*8 nu_rec,nu_em,qu,v |
|
433 | 439 |
REAL*8 rf,b,db,h,r,m,flx,temp,temp_em,flux_int |
434 | 440 |
REAL*8 m_point |
435 | 441 |
REAL*4 bss |
436 |
INTEGER*4 nr(200),q,nbr
|
|
442 |
INTEGER*4 nbr |
|
437 | 443 |
INTEGER*4 fi,posfreq |
438 |
REAL*8 planck,c,k |
|
439 |
PARAMETER (planck=6.62e-34) ! definition des constantes |
|
440 |
PARAMETER (c=3.e8) |
|
441 |
PARAMETER (k=1.38e-23) |
|
444 |
REAL*8, PARAMETER :: planck=6.62e-34 ! definition des constantes |
|
445 |
REAL*8, PARAMETER :: c=3.e8 |
|
446 |
REAL*8, PARAMETER :: k=1.38e-23 |
|
442 | 447 |
|
443 | 448 |
c |
444 | 449 |
c Definition des parametres pour le calcul de la temperature d'emission |
... | ... | |
454 | 459 |
|
455 | 460 |
c qu -> Q du rapport |
456 | 461 |
|
457 |
qu=((1-3./r)**-.5)*(r**-.5)*((r**.5-6.**.5)+
|
|
458 |
& ((3.**.5)/2.)*log ((r**.5)-(3.**.5))*0.171517)
|
|
462 |
qu=((1-3./r)**-0.5)*(r**-0.5)*(r**0.5-6.**0.5+
|
|
463 |
& (3.**0.5/2.)*log((r**0.5+3.**0.5)/(r**0.5-3**0.5)*0.1715728752))
|
|
459 | 464 |
qu=abs(qu) |
460 |
temp_em=temp*m**.5 |
|
461 |
temp_em=temp_em*m_point**.25 |
|
462 |
temp_em=temp_em*r**(-.75) |
|
463 |
temp_em=temp_em*v**(-1./8.)
|
|
464 |
temp_em=temp_em*qu**.25 |
|
465 |
temp_em=temp*m**0.5
|
|
466 |
temp_em=temp_em*m_point**0.25
|
|
467 |
temp_em=temp_em*r**(-0.75)
|
|
468 |
temp_em=temp_em*v**(-0.125)
|
|
469 |
temp_em=temp_em*qu**0.25
|
|
465 | 470 |
|
466 | 471 |
c |
467 | 472 |
c initialisation des compteurs de flux |
... | ... | |
479 | 484 |
DO fi=1,nbr |
480 | 485 |
nu_em=bss*fi/nbr !frequence d' emission |
481 | 486 |
nu_rec=nu_em*rf !frequence de reception |
482 |
posfreq=INT(nu_rec*200./bss) !case ou se trouve nu rec
|
|
487 |
posfreq=INT(nu_rec*FLOAT(nbr)/bss) !case ou se trouve nu rec
|
|
483 | 488 |
|
484 | 489 |
c |
485 | 490 |
c test pour savoir si la frequence de reception est bien dans le |
... | ... | |
487 | 492 |
c |
488 | 493 |
|
489 | 494 |
if ((posfreq.GE.1).AND.(posfreq.LE.nbr)) THEN |
490 |
nr(posfreq)=nr(posfreq)+1 |
|
491 | 495 |
|
492 | 496 |
c Loi du corps noir |
493 | 497 |
|
494 |
flux_int=(2.*h*(nu_em**3/c**2))*
|
|
495 |
& (1./(exp(planck*nu_em/(k*temp_em))-1.))
|
|
498 |
flux_int=2.*nu_em**3/c**2*planck/
|
|
499 |
& (exp(planck*nu_em/(k*temp_em))-1.)
|
|
496 | 500 |
|
497 | 501 |
c Integration sur le pixel |
498 | 502 |
|
499 | 503 |
flux_int=flux_int*rf**3*b*db*h |
500 | 504 |
|
501 |
c Remplissage du spectre
|
|
505 |
c Integration bolometrique
|
|
502 | 506 |
|
503 |
fx(posfreq)=flux_int+fx(posfreq) |
|
504 |
|
|
505 |
c Intergration bolometrique |
|
506 |
|
|
507 | 507 |
flx=flx+flux_int |
508 | 508 |
ENDIF |
509 | 509 |
END DO |
510 |
|
|
510 | 511 |
RETURN |
511 | 512 |
END |
512 | 513 |
|
... | ... | |
521 | 522 |
c - Dessin du spectre en nombre de photons |
522 | 523 |
c |
523 | 524 |
|
524 |
SUBROUTINE affichage(zp,fp,nt,fx,dim,nbr,bss,bmx,m,ri,re,tho,pi)
|
|
525 |
INTEGER*4 nt(200),dim,nbr
|
|
525 |
SUBROUTINE affichage(zp,fp,dim,nbr,bss,bmx,m,ri,re,tho,pi) |
|
526 |
INTEGER*4 dim
|
|
526 | 527 |
REAL*4 zp(dim,dim),fp(dim,dim),bss |
527 |
REAL*8 fx(200),bmx,m,ri,re,tho,pi
|
|
528 |
REAL*8 bmx,m,ri,re,tho,pi |
|
528 | 529 |
INTEGER*4 np,i,j |
529 | 530 |
REAL*8 fm,nm |
530 |
REAL*4 fmx,zmx,x(200),y(200),tr(6),c(20),bmp
|
|
531 |
REAL*4 fmx,zmx,x(1024),y(1024),tr(6),c(20),bmp
|
|
531 | 532 |
LOGICAL tg |
532 | 533 |
LOGICAL ps |
533 | 534 |
|
534 | 535 |
tg=.TRUE. ! TRUE : affichage en tons de gris |
535 | 536 |
c ! FALSE : affichage en contours |
536 | 537 |
|
537 |
ps=.FALSE. ! TRUE : affichage postscript
|
|
538 |
ps=.TRUE. ! TRUE : affichage postscript
|
|
538 | 539 |
c ! FALSE : affichage fenetre Xwindow |
539 | 540 |
|
540 | 541 |
|
... | ... | |
542 | 543 |
c TRANSFORMATION DE L'IMAGE DES FLUX : FLUX -> FLUX RELATIFS |
543 | 544 |
c |
544 | 545 |
|
545 |
np=0 |
|
546 |
fm=0. |
|
547 |
DO i=1,dim |
|
548 |
DO j=1,dim |
|
549 |
IF (fp(i,j).NE.0.) np=np+1 |
|
550 |
fm=fm+fp(i,j) |
|
551 |
END DO |
|
552 |
END DO |
|
553 |
fm=fm/np |
|
554 |
|
|
555 | 546 |
c |
556 | 547 |
c DETERMINATION DU DECALAGE SPECTRAL MAXIMUM ET DU FLUX MAXIMUM |
557 | 548 |
c |
... | ... | |
560 | 551 |
zmx=0. |
561 | 552 |
DO i=1,dim |
562 | 553 |
DO j=1,dim |
563 |
fp(i,j)=fp(i,j)/fm |
|
564 | 554 |
IF (fmx.LT.fp(i,j)) fmx=fp(i,j) |
565 | 555 |
IF (zmx.LT.zp(i,j)) zmx=zp(i,j) |
566 | 556 |
END DO |
567 | 557 |
END DO |
568 | 558 |
|
559 |
write(*,*) 'Flux max :',fmx |
|
560 |
write(*,*) 'Z max :',zmx |
|
561 |
|
|
562 |
|
|
569 | 563 |
DATA tr/0.,1.,0.,0.,0.,1./ |
570 | 564 |
|
571 | 565 |
c |
... | ... | |
573 | 567 |
c |
574 | 568 |
|
575 | 569 |
if (ps .EQV. .TRUE.) THEN |
576 |
CALL PGBEGIN (0,'image1.ps/ps',1,1)
|
|
570 |
CALL PGBEGIN (0,'z.ps/ps',1,1)
|
|
577 | 571 |
ELSE |
578 | 572 |
CALL PGBEGIN (0,'/xwindow',1,1) |
579 | 573 |
END IF |
... | ... | |
591 | 585 |
DO i=1,20 |
592 | 586 |
c(i)=0.2*(i-1) |
593 | 587 |
END DO |
594 |
CALL PGCONS(zp,dim,dim,1,dim,1,dim,c,12,tr)
|
|
588 |
CALL PGCONS(zp,dim,dim,1,dim,1,dim,c,20,tr)
|
|
595 | 589 |
END IF |
596 | 590 |
CALL PGEND |
597 | 591 |
|
... | ... | |
600 | 594 |
c |
601 | 595 |
|
602 | 596 |
if (ps .EQV. .TRUE.) THEN |
603 |
CALL PGBEGIN (0,'image2.ps/ps',1,1)
|
|
597 |
CALL PGBEGIN (0,'flux.ps/ps',1,1)
|
|
604 | 598 |
ELSE |
605 | 599 |
CALL PGBEGIN (0,'/xwindow',1,1) |
606 | 600 |
END IF |
... | ... | |
622 | 616 |
END IF |
623 | 617 |
CALL PGEND |
624 | 618 |
|
625 |
c |
|
626 |
c AFFICHAGE DES DONNEES PHYSIQUES |
|
627 |
c |
|
628 |
|
|
629 |
bmp=bmx |
|
630 |
|
|
631 |
if (ps .EQV. .TRUE.) THEN |
|
632 |
CALL PGBEGIN (0,'image3.ps/ps',1,1) |
|
633 |
ELSE |
|
634 |
CALL PGBEGIN (0,'/xwindow',1,1) |
|
635 |
END IF |
|
636 |
CALL PGENV (-bmp,bmp,-bmp,bmp,1,0) |
|
637 |
CALL PGLABEL('Rayon de Schwarzschild & |
|
638 |
&Parametre d''impact critique','', |
|
639 |
&'DISQUE D''ACCRETION AUTOUR D''UN TROU NOIR') |
|
640 |
DO i=1,200 |
|
641 |
x(i)=2.*m*cos(2.*pi*i/200.) |
|
642 |
y(i)=2.*m*sin(2.*pi*i/200.) |
|
643 |
END DO |
|
644 |
CALL PGLINE(200,x,y) |
|
645 |
DO i=1,200 |
|
646 |
x(i)=m*SQRT(27.)*cos(2.*pi*i/200.) |
|
647 |
y(i)=m*SQRT(27.)*sin(2.*pi*i/200.) |
|
648 |
END DO |
|
649 |
CALL PGLINE(200,x,y) |
|
650 |
CALL PGEND |
|
651 |
|
|
652 |
c |
|
653 |
c AFFICHAGE DES CONTOURS DU DISQUE |
|
654 |
c |
|
655 |
|
|
656 |
if (ps .EQV. .TRUE.) THEN |
|
657 |
CALL PGBEGIN (0,'image4.ps/ps',1,1) |
|
658 |
ELSE |
|
659 |
CALL PGBEGIN (0,'/xwindow',1,1) |
|
660 |
END IF |
|
661 |
CALL PGENV(-bmp,bmp,-bmp,bmp,1,0) |
|
662 |
CALL PGLABEL('Limites interieure & |
|
663 |
&exterieure du disque a l''infini','', |
|
664 |
&'DISQUE D''ACCRETION AUTOUR D''UN TROU NOIR') |
|
665 |
DO i=1,200 |
|
666 |
x(i)=ri*cos(2.*pi*i/200.) |
|
667 |
y(i)=ri*cos(tho)*sin (2.*pi*i/200.) |
|
668 |
END DO |
|
669 |
CALL PGLINE(200,x,y) |
|
670 |
DO i=1,200 |
|
671 |
x(i)=re*cos(2.*pi*i/200.) |
|
672 |
y(i)=re*cos(tho)*sin(2.*pi*i/200.) |
|
673 |
END DO |
|
674 |
CALL PGLINE(200,x,y) |
|
675 |
CALL PGEND |
|
676 |
|
|
677 |
c |
|
678 |
c DETERMINATION DES FLUX ET NOMBRE D'IMPACTS MOYENS SUR LES SPECTRES |
|
679 |
c |
|
680 |
|
|
681 |
fm=0. |
|
682 |
nm=0. |
|
683 |
stp=bss/nbr |
|
684 |
j=0 |
|
685 |
do i=1,nbr |
|
686 |
x(i)=i*stp |
|
687 |
fm=fm+fx(i) |
|
688 |
nm=nm+1.*nt(i) |
|
689 |
IF (nt(i).GT.0) j=j+1 |
|
690 |
END DO |
|
691 |
fm=fm/j |
|
692 |
nm=nm/j |
|
693 |
|
|
694 |
c |
|
695 |
c AFFICHAGE DU SPECTRE EN FLUX |
|
696 |
c |
|
697 |
|
|
698 |
DO i=1,nbr |
|
699 |
y(i)=fx(i)/fm |
|
700 |
END DO |
|
701 |
if (ps .EQV. .TRUE.) THEN |
|
702 |
CALL PGBEGIN (0,'image5.ps/ps',1,1) |
|
703 |
ELSE |
|
704 |
CALL PGBEGIN (0,'/xwindow',1,1) |
|
705 |
END IF |
|
706 |
CALL PGENV (0.,2.,0.,10.,0,1) |
|
707 |
CALL PGLABEL('Rapport des frequences recue/emise', |
|
708 |
&'Flux relatif','SPECTRE DU DISQUE') |
|
709 |
CALL PGLINE(200,x,y) |
|
710 |
CALL PGEND |
|
711 |
|
|
712 |
c |
|
713 |
c AFFICHAGE DU SPECTRE EN NOMBRE D'IMPACTS |
|
714 |
c |
|
715 |
|
|
716 |
DO i=1,nbr |
|
717 |
y(i)=1.*nt(i)/nm |
|
718 |
END DO |
|
719 |
if (ps .EQV. .TRUE.) THEN |
|
720 |
CALL PGBEGIN (0,'image6.ps/ps',1,1) |
|
721 |
ELSE |
|
722 |
CALL PGBEGIN (0,'/xwindow',1,1) |
|
723 |
END IF |
|
724 |
CALL PGENV(0.,2.,0.,10.,0,1) |
|
725 |
CALL PGLABEL('Rapport des frequences recue/emise', |
|
726 |
&' Nombre relatif d''impacts','SPECTRE DU DISQUE') |
|
727 |
CALL PGLINE(200,x,y) |
|
728 |
CALL PGEND |
|
729 |
|
|
730 |
RETURN |
|
731 | 619 |
END |
732 |
|
|
733 | 620 |
c compilation : |
734 | 621 |
c gfortran --std=gnu -o trou_noir_Fortran trou_noir.f -lpgplot |
735 | 622 |
c SORTIE GRAPHIQUE : -> Envoi sur l'ecran : /xwindow |
Formats disponibles : Unified diff