【发布时间】:2021-02-11 22:38:56
【问题描述】:
我正在尝试使用 fipy 解决球体 PDE 的第二扩散定律。我已经检查了文档,但是没有这种情况的示例,所以我想知道是否真的可以这样做,因为我没有成功地获得足够的方程定义结构。我考虑了方位角和天顶角对称性,因此我需要求解的方程如下所示。
当然,边界条件固定在 r=0 和 r=R 固定值,并且初始浓度也是已知的。我也尝试遵循here 中提出的想法,但没有得到任何明确的结果。欢迎任何想法。
我目前使用的代码如下:
from fipy import Viewer, TransientTerm, DiffusionTerm, SphericalGrid1D, CellVariable
from builtins import range
nr = 100 #number of cells on the mesh
r_ca = 8.5e-6 #sphere radius
Iapp = -1*1.656 #Current [A] discharge
F = 96485.33212331001 #Faraday constant
S_ca = 1.1167 #Surface of cathode
D_ca = 1e-14 #Diffusion coef.
Xinit_ca = 0.4952 #[p.u.]
Xinit_an = 0.7522
BoundaryR0 = 0 #Fixed flux at r=0
BoundaryR1_ca = -Iapp/(S_ca*F) #Fixed flux at r=r_ca
mesh = SphericalGrid1D(nr=nr, Lr=r_ca)
X_ca = CellVariable(mesh=mesh, name='Concentration cathode', value=Xinit_ca)
X_ca.faceGrad.constrain(BoundaryR1_ca, mesh.facesRight) #Fixed flux boundary condition
X_ca.faceGrad.constrain(BoundaryR0, mesh.facesLeft)
eq_ca = TransientTerm() == DiffusionTerm(coeff=D_ca) # dX/dt = D/r^2 * d/dr(r^2*dX/dr)
tstep = 1 #s
Nstep = 1000
for step in range(Nstep):
eq_ca.solve(var=X_ca, dt=tstep)
viewer = Viewer(vars=X_ca, datamin=0.45, datamax=0.8)
【问题讨论】: