Newsgroup: it.scienza.fisica
Titolo: Simulatore - Gestione collisioni

Salve,
avevo postato un po' di tempo fa per chiedere informazioni 
sull'implementazione di un simulatore di fisica dei punti materiali 2D 
in C++. Il simulatore non fa altro che "integrare" l'equazione F = ma 
(vettoriale, in 2D), nota F.
Il problema ora riguarda la gestione delle collisioni...
Facciamo subito un esempio, cosi' cerco di farmi capire...
Vorrei simulare il moto di pianeti (in 2D, quindi ogni posizione e' 
individuata da due numeri reali (x,y)). Uso la legge di Newton della 
gravita'. Quando pero' i pianti [assunti puntiformi] diventano molto 
vicini, la forza diverge, per la presenza del termine 1/r^2.
In realta', pero', quando i punti si avvicinano (fino a toccarsi) 
dovrebbe entrare in gioco un meccanismo di collisione...
Ora mi sono bloccato qui: cioe', come gestisco il caso in cui la 
distanza tra due punti materiali sia zero (o diciamo sia minore di 
epsilon) ??
Grazie per qualsiasi informazioni a riguardo.
E Auguroni a tutti!
Dan

 epsilon) ??
In generale e' poco probabile che nel corso della simulazione si
verifichi una "collisione" se i pianeti sono assunti puntiformi e se le
loro coordinate sono rappresentate con un numero di cifre
significative sufficiente, diciamo ad es. con variabili a 64 bit;
una collisione potrebbe essere invece provocata con una scelta
ad hoc delle condizioni iniziali, come nel caso di due pianeti isolati
e inizialmente a riposo, che vengono inesorabilmente attratti l'uno
verso l'altro fino a collidere.
Un problema sostanziale nasce invece quando la distanza tra
due pianeti e' sufficientemente piccola perche' la forza di
attrazione gravitazionale diventi tanto grande da causare un
errore inaccettabile nel procedimento di calcolo numerico iterativo,
un modo per ovviare a cio' consiste ad es. nel ridurre la durata
dell'intervallo di tempo tra due iterazioni successive quando i
pianeti subiscono passaggi ravvicinati.
Ciao
--
Giorgio Bibbiani

 Il problema ora riguarda la gestione delle collisioni...
Danguard, secondo me il seguente link potrebbe esserti molto utile:
http://www.unisi.it/fisica/luciana/articoli/stardance/index.htm
Pasquale Galianni 

 
http://www.unisi.it/fisica/luciana/articoli/stardance/index.htm
Ci do' un'occhiata grazie!

 errore inaccettabile nel procedimento di calcolo numerico iterativo,
Mi potresti dare dei valori numerici, perche' "sufficientemente 
piccola" non so come tradurlo in codice... :(
Devo porre un limite tipo 1.0E-5[metri] ?
E la costante G0 [di gravita'] devo porla uguale al suo valore S.I.?
O e' meglio usare altre scale?
Ciao e grazie,
Dan

Idea veloce ma non so se funziona...
potresti cambiare il verso del vettore velocità (in C il segno delle due
componenti vx e vy) del punto quando questo arriva a distanza epsilon.
occhio però alla distanza epsilon... potrebbe essere troppo piccola e le
velocità troopo grandi, pericolo di overflow...
ciao

 gestire le collisioni??
Nessuna regola. Direi che la soluzione che hai ipotizzato 
(essenzialmente una collisione anelastica con creazione di un corpo a 
massa somma dei costituenti) potrebbe essere valida solo per il caso di 
urto tra due corpi di massa molto diversa (es. terra-asteroide). Ma per 
eventi del tipo di quello ipotizzato per la formazione della luna sono 
necessari modelli stremamente piu' sofisticati di un integratore del 
problema a N corpi.
Giorgio

 O e' meglio usare altre scale?
Potresti anche usare unita' per cui si abbia G = 1 in modo da
eliminarla dalle equazioni del moto, ti consiglio pero' di usare
unita' SI in questo primo programma, ti semplifichi la vita
perche' eviti di fare conversioni per riportare i risultati finali
in unita' SI, e faciliti il debugging (i numeri che ottieni sono
piu' "leggibili", cioe' vedi piu' facilmente se hanno senso o no).
Ciao
--
Giorgio Bibbiani

 [...CUT - cose interessanti!]
....OK, mi avete convinto :)
Allora rinuncio alle collisioni.
Questo e' un semplice progettino per me per imparare a scrivere un 
simulatore e giocherellare con le leggi di Newton; non ho idea di come 
realizzare calcoli per la struttura termodinamica interna dei pianeti, 
sforzi, deformazioni, maree e delle altre cose che hai detto.
Per me effettivamente i pianeti sono semplici punti materiali.
Ciao e grazie a tutti!
....e Buon 2005! :)
Dan

 Devo porre un limite tipo 1.0E-5[metri] ?
Difficile dirlo a priori. Prova a sperimentare con dei timestep di varia 
lunghezza e controlla sempre che l'energia sia conservata. Se noti segni 
di un cambiamento sistematico dell'energia (non semplicemente 
oscillazioni, che sono normali) accorcia lo step.
-- 
Enrico Smargiassi
http://www-dft.ts.infn.it/~esmargia