我是新来fipy,所以我道歉,如果这是一个愚蠢的问题(和this似乎并没有帮助我)。 但有存储在人类可读(或Python可读)形式fipy对象的方式,除了在上面的问题提出?这只适用于单元格变量。 如果我想做一些更看中/自定义绘制比什么是默认fipy观众,我该怎么办呢?存储术语数组,而不是fipy对象
采取例如一个简单的一维扩散:
from fipy import *
# USER-DEFINED PARAMETERS
nx = 100
dx = 0.1
D = 1.0
bound1 = 30
bound2 = 70
# PREPARED FOR SOLUTION
mesh = Grid1D(nx=nx, dx=dx)
print "mesh", mesh
# define some parameters specific to this solution
T0 = bound2
Tinf = bound1
hour = 3600
day = hour*24
ndays = 1
duration = ndays*day
T = CellVariable(name="Temperature", mesh=mesh, value=bound1)
# Constant temperature boundary condition
T.constrain(T0, mesh.facesLeft)
T.constrain(Tinf, mesh.facesRight)
# SOLUTION
eq = (TransientTerm() == DiffusionTerm(coeff=D))
timeStepDuration = 0.5*hour
steps = int(duration/timeStepDuration)
for step in range(steps):
eqCirc.solve(var=T,dt=timeStepDuration)
但是可以我,例如,存储所述网状作为数组?或者我能存储DiffusionTerm
,而不是在每一步CellVariable
的价值?
在我的情况,我想为每个时间步长的距离绘制的热梯度(因此从扩散项提取它)。 我可以做到吗?怎么样?
另一种选择是'fipy.TSVViewer(T.faceGrad).plot('dump.tsv.gz')',这也是非常有前途的证据,但不是检查点数据返回到FiPy最简单的格式。 pickle,numpy和TSV(使用.gz压缩)都采用大致相同的磁盘空间顺序。 – jeguyer