Program uniformemente_accelerato
!
! Questo programma dimostra che anche le galassie piu' lontane sono
! raggiungibili da una astronave che sia capace di mantenere, per
! qualche anno, una accelerazione costante di 1 g (ossia quella
! che siamo abituati a sopportare sulla Terra).
! Ovviamente l'energia usata sarebbe mostruosamente grande.
! E' comunque un fatto che tutte le stelle della nostra galassia
! siano raggiungibili con pochi anni di accelerazione.
! La stella piu' vicina dopo il Sole, a 4.3 anni luce, si raggiunge
! in circa 2.3 anni di tempo proprio (quello che gli astronauti
! credono di avere trascorso leggendo i loro stessi orologi sulla
! astronave).
!
! Ponendo g=9.8 m/s**2 in 5 anni di tempo proprio si percorrono
! circa 83 anni luce e in 10 anni di tempo proprio si arriva alla
! distanza di circa 14600 anni luce.
!
! Moto uniformemente accelerato in relativita' ristretta.
! Espressioni tratte da:
! L.D.Landau-E.M.Lifsits,"Teoria dei Campi", sesta edizione,
! giugno 1975, pag. 42, Editori Riuniti.
!
IMPLICIT NONE
INTEGER:: K
REAL(8):: C ! Velocita' della luce in metri/secondo
REAL(8):: A ! Accelerazione costante in metri/secondo**2.
REAL(8):: X ! Spazio percorso (metri)
REAL(8):: V ! Velocita' raggiunta (metri/secondo)
REAL(8):: T ! Tempo trascorso
REAL(8):: S ! Tempo proprio
REAL(8):: TANNO,ANLUCE
!
TANNO=3600.D0*24.0D0*365.25D0 ! Secondi in un anno
C=2.998D8 ! m/s
ANLUCE=C*TANNO ! anno luce in m.
WRITE(*,*)"Moto uniformemente accelerato relativistico"
WRITE(*,*)" "
WRITE(*,*)"Assegna l'accelerazione dell'astronave (m/(s*s)) ... "
READ(*,*) A
WRITE(*,*)"Quanti secondi (un anno vale circa=3.1D7 s) ?... "
READ(*,*) T
WRITE(*,*)"Ossia, in anni terrestri: ",T/TANNO
!
V=A*T/SQRT(1.0D0+(A*T/C)**2)
X=(C**2/A)*(SQRT(1.0D0+(A*T/C)**2)-1.D0)
S=(C/A)*LOG(A*T/C+SQRT(1.0D0+(A*T/C)**2))
!
WRITE(*,*)"Tempo trascorso =",T," s"
WRITE(*,*)" =",T/TANNO ," anni"
WRITE(*,*)"Velocita' finale raggiunta =",V," m/s"
WRITE(*,*)"Spazio percorso =",X," m"
WRITE(*,*)" =",X/ANLUCE," anni luce"
WRITE(*,*)"Tempo proprio trascorso =",S," s"
WRITE(*,*)" =",S/TANNO ," anni"
WRITE(*,*)"N.B. Tempo proprio == tempo misurato dagli astronauti"
WRITE(*,*)" "
WRITE(*,*)"...invia per fare altri calcoli..."
READ(*,*)
calcoli :DO
WRITE(*,*)"Quanti anni luce vuoi percorrere? (-1 == amen)... "
READ(*,*) X
IF(X.LE.0.D0) EXIT calcoli
X=X*ANLUCE
T=SQRT(X*( 2.0D0/A + X/(C*C) ) )
!
V=A*T/SQRT(1.0D0+(A*T/C)**2)
X=(C**2/A)*(SQRT(1.0D0+(A*T/C)**2)-1.D0)
S=(C/A)*LOG(A*T/C+SQRT(1.0D0+(A*T/C)**2))
!
WRITE(*,*)"Tempo trascorso =",T," s"
WRITE(*,*)" =",T/TANNO," anni"
WRITE(*,*)"Velocita' raggiunta =",V," m/s"
WRITE(*,*)"Spazio percorso =",X," m"
WRITE(*,*)" =",X/ANLUCE," anni luce"
WRITE(*,*)"Tempo proprio trascorso=",S," s"
WRITE(*,*)" =",S/TANNO ," anni."
WRITE(*,*)" "
END DO calcoli
!
! Altre prove imponendo la distanza da percorrere.
!
WRITE(*,*)"Ora calcola imponendo la distanza da percorrere"
WRITE(*,*)" "
DO K=1,10
X=ANLUCE*K**3
T=SQRT(X*( 2.0D0/A + X/(C*C) ) )
V=A*T/SQRT(1.0D0+(A*T/C)**2)
X=(C**2/A)*(SQRT(1.0D0+(A*T/C)**2)-1.D0) ! Verifica
S=(C/A)*LOG(A*T/C+SQRT(1.0D0+(A*T/C)**2))
!
WRITE(*,*)"Tempo trascorso =",T," s"
WRITE(*,*)" =",T/TANNO ," anni"
WRITE(*,*)"Velocita' raggiunta =",V," m/s"
WRITE(*,*)"Spazio percorso =",X," m"
WRITE(*,*)" =",X/ANLUCE," anni luce"
WRITE(*,*)"Tempo proprio trascorso=",S," s"
WRITE(*,*)" =",S/TANNO ," anni. Invia..."
READ(*,*)
END DO
STOP
END PROGRAM uniformemente_accelerato !
|