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?