2016-10-27 2 views
0

Partie 2 - Détermination du nombre Densité de particulesComment démarrer ce devoir de "Densité numérique des particules" en Python?

Si nous disons que q est le taux de production de particules d'une taille spécifique c, puis dans un intervalle dt le nombre total de particules produites est juste q dt. Pour rendre les choses concrètes dans ce qui suit, s'il vous plaît adopter le cas:

a = 0.9amax

q = 100000

ce nombre de Tenir compte des particules à une certaine distance r du noyau. La densité numérique des particules sera divisée par le nombre, donc pour trouver la densité numérique, nous devons calculer le volume d'une coquille de rayon r avec une épaisseur qui correspond à la distance parcourue par les particules dans notre intervalle de temps dt. Il est évident que ce n'est que la vitesse de la particule au temps rayon r de l'intervalle de temps v (r) dt, de sorte que le volume de notre coquille est:

Volume = Surface Shell × Shell Epaisseur = 4πr2v (r) dt

Par conséquent, la densité du nombre, n, au rayon r est:

n (r) = q dt/4πr2v (r) dt = q/4πr2v (r) (equation5)

Vous remarquerez que notre l'expression ci-dessus aura une singularité pour la densité de nombre de particules à la surface du noyau, puisque à cette position la vitesse vers l'extérieur, v (R), est nulle. On s'attend à ce que la densité des particules n chute très rapidement à mesure que la poussière s'accélère de la surface. Pour l'instant, ne nous préoccupons pas de ce point - nous n'en avons pas besoin plus tard - et représentons simplement comment la densité du nombre varie avec la distance du noyau, en commençant par le 1er point après la valeur de la surface

• Évaluer Eqaution 5 pour tous les points calculés en utilisant les paramètres pour q et a donnés ci-dessus.

• Créez un graphique log-log de la densité numérique en fonction du rayon. Vous devriez trouver ci que, après la vitesse terminale est obtenue, la densité du nombre diminue à mesure que r-2, ce qui correspond à une pente de -2 sur un terrain log-log

Code actuel:

% matplotlib inline 
import numpy as np 
import matplotlib.pyplot as pl 

R = 2000 #Nucleus Radius (m) 
GM_n = 667 #Nucleus Mass (m^3 s^-2) 
Q = 7*10**27 #Gas Production Rate (molecules s^-1) 
V_g = 1000 #Gas Velocity (m s^-1) 
C_D = 4 #Drag Coefficient Dimensionless 
p_d = 500 #Grain Density (kg m^-3) 
M_h2o = .01801528/(6.022*10**23) #Mass of a water molecule (g/mol) 
pi = np.pi 
p_g_R = M_h2o*Q/(4*np.pi*R**2*V_g) 
print ('Gas Density at the comets nucleus: ', p_g_R) 
a_max = (3/8)*C_D*(V_g**2)*p_g_R*(1/p_d)*((R**2)/GM_n) 
print ('Radius of Maximum Size Particle: ', a_max) 

def drag_force(C_D,V_g,p_g_R,pi,a,v): 
    drag = .5*C_D*((V_g - v)**2)*p_g_R*pi*a**2 
    return drag 
def grav_force(GM_n,M_d,r): 
    grav = -(GM_n*M_d)/(r**2) 
    return grav 
def p_g_r(p_g_R,R,r): 
    p_g_r = p_g_R*(R**2/r**2) 
    return p_g_r 
dt = 1 
tfinal = 100000 
v0 = 0 
t = np.arange(0.,tfinal+dt,dt) 
npoints = len(t) 
r = np.zeros(npoints) 
v = np.zeros(npoints) 
r[0]= R 
v[0]= v0 

a = np.array([0.9,0.5,0.1,0.01,0.001])*a_max 

for j in range(len(a)): 
    M_d = 4/3*pi*a[j]**3*p_d 
    for i in range(len(t)-1): 
     rmid = r[i] + v[i]*dt/2. 
     vmid = v[i] + (grav_force(GM_n,M_d,r[i])+drag_force(C_D,V_g,p_g_r(p_g_R,R,r[i]),pi,a[j],v[i]))*dt/2.   
    r[i+1] = r[i] + vmid*dt 
    v[i+1] = v[i] + (grav_force(GM_n,M_d,rmid)+drag_force(C_D,V_g,p_g_r(p_g_R,R,rmid),pi,a[j],vmid))*dt 
    pl.plot(r,v) 

pl.show() 

a_2= 0.9*a_max 
q = 100000 

I Je n'ai jamais programmé quelque chose comme ça avant, ma classe est très difficile pour moi et je ne la comprends pas. J'ai développé le code ci-dessus avec l'aide du professeur, et je n'ai presque plus de temps pour terminer ce projet. Je veux juste aider à comprendre le problème.

Comment puis-je trouver v (r) quand j'ai seulement v (t), r (t)? Que dois-je faire pour calculer les valeurs r et quelles valeurs r dois-je utiliser?

Répondre

1

Vous avez v comme une fonction connue du temps et aussi comme une autre fonction connue du temps. Vous pouvez les inverser pour obtenir t vs v et t vs r. Pour obtenir v en fonction de r, éliminer t.