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.


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)


Reply via email to