【发布时间】:2014-07-28 15:46:12
【问题描述】:
我正在使用 Scipy 14.0 求解一个常微分方程组,该方程组描述了由于浮力而在静止流体中垂直(沿 z 方向)上升的气泡的动力学。特别是,我有一个方程将上升速度 U 表示为气泡半径 R 的函数,即 U=dz/dt=f(R),还有一个方程将半径变化表示为 R 和 U 的函数,即 dR/dT =f(R,U)。下面代码中出现的所有其余部分都是材料属性。 我想实现一些东西来解释对 z 的物理约束,这显然受到液体高度 H 的限制。因此,我实现了一种 z
提前致谢
埃米
from scipy.integrate import ode
Db0 = 0.001 # init bubble radius
y0, t0 = [ Db0/2 , 0. ], 0. #init conditions
H = 1
def y_(t,y,g,p0,rho_g,mi_g,sig_g,H):
R = y[0]
z = y[1]
z_ = ( R**2 * g * rho_g ) / ( 3*mi_g ) #velocity
R_ = ( R/3 * g * rho_g * z_ ) / ( p0 + rho_g*g*(H-z) + 4/3*sig_g/R ) #R dynamics
return [R_, z_]
def z_constraint(t,y):
H = 1 #should rather be a variable..
z = y[1]
if z >= H:
flag = -1
else:
flag = 0
return flag
r = ode( y_ )
r.set_integrator('dopri5')
r.set_initial_value(y0, t0)
r.set_f_params(g, 5*1e5, 2000, 40, 0.31, H)
r.set_solout(z_constraint)
t1 = 6
dt = 0.1
while r.successful() and r.t < t1:
r.integrate(r.t+dt)
【问题讨论】: