I figured out where the type error came from. Using the fft's returned complex valued arrays. Everything works fine if I use an operation that yields a real valued array. Thanks again for your help.
On Thu, Aug 27, 2009 at 11:48 AM, Ranjit Chacko <[email protected]> wrote: > > > On Wed, Aug 26, 2009 at 3:36 PM, Jonathan Guyer <[email protected]> wrote: > >> >> >> On Aug 26, 2009, at 11:10 AM, Ranjit Chacko wrote: >> >> Thanks, that's really helpful. I tried implementing it though and the >>> program's crashing so I've got a couple of questions about that sample code. >>> >>> What is var.elementshape? It seems to be empty in my program. >>> >> >> var.elementshape is the shape of each element in the variable [ () for a >> scalar field, (2,) for a 2D vector field, and so on]. This has been assigned >> for all _MeshVariables for over two years. What version of FiPy are you >> using? >> >> When you say "empty", do you mean unassigned or is it the empty tuple () ? >> If the latter, then you're fine. >> > > I meant the empty tuple. > >> >> >> What exactly is _calcValue supposed to return? Is it expected to return a >>> single number or an array with all the values of the field? I'm getting an >>> error message that says something about a shape mismatch. >>> >> >> I reshaped the value going to scipy.something(), but I neglected to change >> the shape back for FiPy. Try this: >> >> class ConvolutionVariable(CellVariable): >> def __init__(self, var): >> CellVariable.__init__(self, >> mesh=var.getMesh(), >> elementshape=var.elementshape, >> hasOld=False) >> self.var = self._requires(var) >> >> def _calcValue(self): >> mesh = self.getMesh() >> >> a = self.var.getValue() >> a = a.reshape(mesh.getShape() + self.elementshape) >> >> a = scipy.something(a) >> >> return a.reshape((mesh.getNumberOfCells(),) + self.elementshape) >> >> >> > The shape mismatch error is gone, but now I have a TypeError. It says the > array cannot be safely cast to the required type >
