Alessio Quaglino wrote:
> Ok very simple thanks (I thought it might have been dependent to the
> finite element shape). I still have one question about the new Funcion
> interface. When I define a User-defined Function, only eval() is used for
> the FEM assembly?

Yes, and note that there are two versions, one for general tensor-valued 
functions and a simple one for scalar functions. You can choose to 
overload any of these.

> I ask this because I have some problems in understanding
> if overloading this method is enough in order to define a source term.

Yes, that should be enough.

> Also this method is defined as const, hence if this happens to be the
> case, I have to redisign a part of my source class. Thanks.

Yes, it needs to be const. If your class needs to modify some data, then 
make the data mutable.

/Anders


> Alessio
> 
> 
>> Just do the following:
>>
>> Mesh mesh; Function f;
>>
>> real* vertex_values = new real[mesh.numVertices()];
>> f.interpolate(vertex_values);
>>
>> Then vertex_values will be an array with the values at all vertices.
>>
>> For a scalar function, you simply get all the vertex values and for a
>> vector (or in general tensor-valued) function, you first get all the
>> values for component 0, then all values for component 1 etc.
>>
>> /Anders
>>
>>
>> Alessio Quaglino wrote:
>>>> On Tue, Jun 26, 2007 at 02:56:52PM +0200, Alessio Quaglino wrote:
>>>>> I'm trying to get my code working with the new dolfin 0.7.0-1 but it
>>>>> seems
>>>>> there are a several problems. For example, a part of the
>>>>> dolfin::Function
>>>>> interface has disappeared. In particular, it is not possible to get
>>>>> the
>>>>> value corresponding to a vertex or the finite element space where the
>>>>> function is living. Have these functionalities been moved somewhere
>>>>> else?
>>>>>
>>>>> Regards,
>>>>> Alessio Quaglino
>>>> Use Function::interpolate() to access the values. Often, one can
>>>> avoid ever needing to access the values directly, but if they should
>>>> be needed, then it is possible to either interpolate the Function to a
>>>> given Cell (getting the expansion coefficients in the local finite
>>>> element basis) or get the values at all vertices.
>>>>
>>>> So, try to avoid accessing the values but if you really need the
>>>> values at vertices you can still get them.
>>>>
>>>> /Anders
>>>> _______________________________________________
>>>> DOLFIN-dev mailing list
>>>> [email protected]
>>>> http://www.fenics.org/mailman/listinfo/dolfin-dev
>>> Ok I see, however with interpolate() I can either get all the Vertex
>>> values or the values at a given Cell. While the latter case is
>>> unefficient
>>> for my purpose  because I'd pass through the same Vertex several times,
>>> in
>>> the former I get a vector with the values at all vertices but no
>>> information about how to access such a vector.
>>>
>>> Regards,
>>> Alessio
>>>
>>>
>>> _______________________________________________
>>> DOLFIN-dev mailing list
>>> [email protected]
>>> http://www.fenics.org/mailman/listinfo/dolfin-dev
> 
> 
> _______________________________________________
> DOLFIN-dev mailing list
> [email protected]
> http://www.fenics.org/mailman/listinfo/dolfin-dev
_______________________________________________
DOLFIN-dev mailing list
[email protected]
http://www.fenics.org/mailman/listinfo/dolfin-dev

Reply via email to