Чтобы понять, как работает FiPy, я хочу решить уравнение пучка Эйлера – Бернулли с фиксированными конечными точками:
w''''(x) = q(x,t), w(0) = w(1) = 0, w'(0) = w'(1) = 0.
Для простоты пусть q(x,t) = sin(x)
.
Как я могу определить и решить это в FiPy? Как указать исходный член sin(x)
относительно единственной независимой переменной в уравнении?
from fipy import CellVariable, Grid1D, DiffusionTerm, ExplicitDiffusionTerm
from fipy.tools import numerix
nx = 50
dx = 1/nx
mesh = Grid1D(nx=nx, dx=dx)
w = CellVariable(name="deformation",mesh=mesh,value=0.0)
valueLeft = 0.0
valueRight = 0.0
w.constrain(valueLeft, mesh.facesLeft)
w.constrain(valueRight, mesh.facesRight)
w.faceGrad.constrain(valueLeft, mesh.facesLeft)
w.faceGrad.constrain(valueRight, mesh.facesRight)
# does not work:
eqX = DiffusionTerm((1.0, 1.0)) == numerix.sin(x)
eqX.solve(var=w)