Newsgroup: it.scienza.fisica
Titolo: Espansione libera acollisionale: simulazione.

    Il problema è quello di scrivere in modo sintetico un' espressione per la
densità di particelle nello spazio delle fasi per un gas che al tempo zero
si trova in una scatola parallepipeda di lati L,L,2L, confinato, ed in
equilibrio
termodinamico alla temperatura T in una metà cubica della scatola,
nell'ipotesi che per un certo tempo caratteristico il moto avvenga senza
un numero significativo di collisioni. E quindi andare a disegnare la
densità in funzione del tempo, magari costruendo un'animazione.
Assumo che la scatola si estenda lungo x in [0,2L] lungo y e lungo
z in [0,L]. La soluzione più semplice che ho trovato ha questa forma:
la distribuzione f( x, y, z, v_x, v_y, v_z) è inizialmente fattorizzata
nella
forma:
n chi ( y/L) chi (z/L) chi(x/L) N( v_x/ sqrt(2 m k T)) N(v_y/ sqrt( 2 m k
T)) N(v_z/ sqrt(2 m k T))
dove n è la densità di volume, chi è una funzione caratteristica
dell'intervallo [0,1] ed infine N è la distribuzione normale.
Al tempo t i fattori nelle variabili y,z,v_y,v_z rimangono
invariati, mentre i fattori in x, v_x sono sostituiti da:
N( v_x / sqrt(2 m k T)) ( 1 + Sign ( cos( pi ((x - v_x t)/2L)) Chi(x/2L).
nonostante l'apparente complicazione l'idea è semplice:
l'espressione che contiene il segno è costruita in modo da
valere zero se la posizione che aveva al tempo zero
la particella che sta in x al tempo t con velocità v_x
era in [0,L] e da valere zero altrimenti.
Ora questa espressione mi sembra non separabile, per ottenere
l'evoluzione temporale della densità occorre considerare l'integrale
in v_x da -oo a +oo. In termini pratici quello che succede è che
al crescere del tempo la distribuzione assume una forma a bande
nella velocità che dipende dalla posizione considerata. Queste
bande sono alternate ed equidistanti. In pratica stiamo moltiplicando
la distribuzione gaussiana per una funzione a muretti di altezza
 alternativamente 0,1, ma la larghezza di questi muretti uguaglia
la loro distanza ed è inversamente proporzionale a t. In pratica
per tempi abbastanza grandi si ottiene una densità di particelle
circa dimezzata nella direzione x, con velocità praticamente
equidistribuite (anche se andando a guardare in dettaglio alcune
velocità saranno completamente assenti). Ora mi piacerebbe
costruire un'applet che illustra graficamente l'evoluzione temporale
della densità spaziale. Il problema è quello di andare ad integrare
quelle espressioni ottengo una serie di termini erfc che per fissati
L, m, T dipende dal tempo e da x. Esistono delle routine che evitano
di dovere utilizzare questa espansione analitica in modo numericamente
efficiente?
 
Quale programma pronto è più conveniente utilizzare per costruire
questa animazione? Grazie a chi volesse cimentarsi.
 
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 questa animazione? Grazie a chi volesse cimentarsi.
Intanto che aspetto suggerimenti per migliorare la resa grafica e
numerica, vi dico cosa ho ottenuto con Mathematica.ll problema
era dunque sommare:
Int N( v_x * sqrt(m / k T)) ( 1 + Sign ( cos( pi ((x - v_x t)/2L)) Chi(x/2L)
sqrt( m/kT) d v_x
con chi funzione caratteristica in [0,1]
[ si vede dallo studio della funzione sommanda che per ogni
x lo spettro delle velocità è strutturato in bande ed è asimmetrico,
nei punti più lontani dal setto le velocità cominciano da (x - L/2)/t
e specie per tempi piccoli le bande più estreme, dovute alle riflessioni
sono praticamente vuote (nelle code estreme della gaussiana ]
Ho scelto unità arbitrarie in modo che m/kT = 1 ed L = 1.
Mathematica fornisce un risultato grafico molto leggibile con due
righe di codice, tuttavia corre l'obbligo di un'avvertenza:
provando ad integrare direttamente il risultato
è molto irregolare per via delle approssimazioni numeriche del
programma, usando la funzione Erf ,che è implementata, il risultato
migliora notevolmente. Si tratta di tradurre tutto in una serie , ma in
effetti per tempi non troppo esagerati (dell'ordine di quelli richiesti
a raggiungere l'equilibrio) basta sommare pochi termini: io ne ho
sommati venti.
Ad ogni modo non occorre esagerare:
aumentando il numero dei termini sommati, ad
esempio volendo sommarne qualche migliaio, il programma
si preoccupa che i numerini piccoletti che è costretto ad approssimare
per valori elevati della variabile possano dare un contributo non
trascurabile e non potendo stimare l'ordine dell'errore
si rifiuta di fornire un risultato, con venti termini, che per t fino ad 1
non sono piccoli, invece non ci sono difficoltà.
Il risultato che ottengo è molto regolare, ha una forma che somiglia
strettamente, specie a tempi brevi ad un tratto della funzione d'errore
centrata
dove inizialmente è presente il setto, dove si mantiene costante a tutti i
tempi ed assume sempre, rigorosamente, il valore 1/2, come si può
dimostrare guardando la funzione integranda in quel punto. Si può anche
dimostrare che la funzione è somma della funzione costante 1/2 più
una funzione dispari rispetto alla posizione del setto. Un fatto che
mi ha un poco meravigliato, lì per lì, è che le riflessioni alle pareti non
alterano in nessun momento il carattere mono-tòno della densità, densità
che converge abbastanza rapidamente a metà del valore iniziale. Invece,
come mi aspettavo dalle stime analitiche, quello che si nota è che facendo
una
scansione a tempi .1, .2 , .3 lo spessore della curva nel lato inizialmente
vuoto cresce linearmente, così se dopo il tempo (in unità arbitrarie) di .1
abbiamo un 10% di gas nella metà inizialmente vuota, dopo un tempo 1
la curva di densità è già praticamente costante in tutta la scatola.
Appena mi riesce di mettere un filmato con un numero ragionevole di
fotogrammi on line vi mando il link. Intanto, per chi avesse Mathematica e
volesse divertirsi a vedere cosa risulta il programma è questo:
f[x_, t_] := NSum[Erf[(x - 2z - 1/2)/t, (x - 2z + 1/2)/t], {z, -10, 10}]/2
Plot[{f[x, .1], f[x, .35], f[x, .5], f[x, 1], f[x, 2]}, {x, 0, 1}]
