【问题标题】:How to start this "Number Density of Particles" homework in Python?如何在 Python 中开始这个“粒子数密度”作业?
【发布时间】:2016-10-27 04:34:58
【问题描述】:

第 2 部分 - 粒子数密度的测定

如果我们说 q 是特定尺寸粒子的生产速率,那么在区间 dt 中,生产的粒子总数就是 q dt。为了具体说明以下内容,请采用案例:

a = 0.9amax

q = 100000

考虑距原子核一定距离 r 的粒子数。粒子的数密度将是数除以体积,因此要计算数密度,我们必须计算半径为 r 的壳的体积,其厚度对应于粒子在我们的时间间隔 dt 内行进的距离。显然这只是半径 r 处粒子的速度乘以时间间隔 v(r) dt,所以我们壳的体积是:

体积 = 壳表面积×壳厚 = 4πr2v(r)dt

因此,半径 r 处的数密度 n 为:

n(r) = q dt /4πr2v(r)dt = q /4πr2v(r)(方程5)

你会注意到,我们上面的表达式将在原子核表面的粒子数密度具有奇点,因为在该位置向外的速度 v(R) 为 0。显然,这表明我们预计随着尘埃加速离开表面,粒子密度 n 会迅速下降。现在,我们不用担心这一点——我们以后不需要它——只需绘制数密度如何随与核的距离而变化的图表,从表面值之后的第一个点开始

• 使用上面给定的 q 和 a 的参数为所有计算点评估公式 5。

• 制作数字密度与半径的对数图。你应该会发现,在达到最终速度后,数量密度随着 r-2 减小,对应于对数图上的 -2 斜率

当前代码:

% 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

我以前从未编写过这样的程序,我的课对我来说很难,我不明白。我在教授的帮助下开发了上面的代码,我几乎没有时间完成这个项目。我只是想帮助理解问题。

当我只有 v(t), r(t) 时如何找到 v(r)? 我该如何计算 r 值以及我什至使用哪些 r 值?

【问题讨论】:

    标签: python-3.x computer-science physics


    【解决方案1】:

    你有v 作为一个已知的时间函数,还有r 作为另一个已知的时间函数。您可以反转这些以获得tvtr。要将v 作为r 的函数,请消除t

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-02-14
      • 2021-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多