Come indicato sopra, il potenziale è definito dalla
subroutine potential separata, e quindi è in un
certo senso esterno al programma principale. Per un dato
, potential ritorna il potenziale
e la
corrispondente forza
. Solo quest'ultima
è, strettamente parlando, necessaria per portare avanti
l'integrazione; ma conoscere anche il potenziale permette
di verificare la legge di conservazione dell'energia passo
per passo.
Il programma chiede i seguenti dati di input: time step ,
posizione iniziale
, energia totale
, numero
di time steps (verrà seguita l'evoluzione temporale per
un tempo totale
), e nome del file di uscita
(è anche possibile convogliare l'output sullo standard output).
L'energia totale serve a calcolare la velocità iniziale
, secondo
![]() |
(1.7) |
![]() |
(1.8) |
Assegnare la velocità iniziale significa, nell'ottica
dell'algoritmo di Størmer-Verlet, assegnare la posizione
al "tempo precedente". Tale algoritmo però opera su
posizioni ed accelerazioni. La velocità alla posizione
può essere in generale ottenuta come
La velocità iniziale è sempre definita positiva dal programma,
ossia il punto inizia a muoversi verso gli positivi. Data la
simmetria del potenziale, questa non è una limitazione (invertire
la velocità è equivalente a lasciarla invariata
e cambiare il segno della coordinata di posizione iniziale).
Il loop sul numero di time steps è la parte centrale del programma. Il punto su cui va posta particolare attenzione è il trasferimento dell'informazione della "posizione precedente" da una iterazione alla successiva, effettuato usando tre variabili x, xprev, xprevsav.
A fini di controllo sulla conservazione dell'energia, viene
calcolata anche la velocità e l'energia cinetica.
Per ottenere una precisione accettabile, le velocità
vengono definite utilizzando la (1.9).
Questo però comporta che per definire è
necessario conoscere
, e quindi che alla conclusione
di ogni iterazione le velocità calcolate sono riferite
all'iterazione precedente, ossia alla posizione che
aveva la particella all'inizio dell'iterazione,
prima di essere spostata.
I dati emessi sul file di output sono, nell'ordine, il numero dell'iterazione, la posizione, la velocità, la forza, l'energia cinetica, l'energia potenziale e l'energia totale: tutte riferite alla posizione che aveva la particella all'inizio dell'iterazione.