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
>

Reply via email to