Jonathan Guyer schrieb: > > On Jun 8, 2010, at 2:28 PM, Philipp Stephani wrote: > >> I've checked out and installed the 2.1 branch and now I'm trying to >> solve a simple time-independent PDE with a non-constant diffusion >> tensor. The FAQ says that such diffusion terms can be created as follows: >> >>>>> x, y = mesh.getCellCenters() >>>>> DiffusionTerm([[[x**2, x * y], [-x * y, -y**2]]]) >> However, the following example leads to an error: >> >> #!/usr/bin/env python2.6 >> from fipy import * >> mesh = Grid2D(nx=5, ny=5) >> var = CellVariable(mesh=mesh) >> x, y = mesh.getCellCenters() >> diff = DiffusionTerm([[[x**2, x * y], [-x * y, -y**2]]]) >> bc = FixedValue(faces=mesh.getExteriorFaces(), value=0) >> diff.solve(var=var, boundaryConditions=bc) > : >> TypeError: 'NoneType' object is unsubscriptable >> >> What am I doing wrong? > > You're not doing anything wrong (other than trusting the FAQ) > > Try either: > > D = CellVariable(mesh=mesh, value=[[x**2, x * y], [-x * y, -y**2]], > rank=2) > diff = DiffusionTerm([D]) > > or > > X, Y = mesh.getFaceCenters() > diff = DiffusionTerm([[[X**2, X * Y], [-X * Y, -Y**2]]]) > > > The issue is that DiffusionTerm needs a FaceVariable coefficient. If > presented with a CellVariable, it interpolates automatically, but x and y are > not CellVariables (and even if they were, [[x**2, x * y], [-x * y, -y**2]] > would not be a CellVariable, but a list of lists of CellVariables). > > > Filed for correct to FAQ and/or code as http://matforge.org/fipy/ticket/296. > Thanks for the succinct demonstration of the problem. > > >
Thanks a lot for the quick response and the explanation.
