← Back to team overview

dolfin team mailing list archive

Re: Assembler interface

 

2008/10/23 Garth N. Wells <gnw20@xxxxxxxxx>:
>
>
> Anders Logg wrote:
>> On Thu, Oct 23, 2008 at 05:24:54PM +0200, Anders Logg wrote:
>>> Now that we have removed DofMapSet, how should the general assembly
>>> interface look? We have lots of simple assemble() functions and they
>>> all end up calling the main function which is
>>>
>>>   void assemble(GenericTensor& A,
>>>                 const ufc::form& form,
>>>                 const Array<Function*>& coefficients,
>>>                 const DofMapSet& dof_map_set,
>>>                 const MeshFunction<uint>* cell_domains,
>>>                 const MeshFunction<uint>* exterior_facet_domains,
>>>                 const MeshFunction<uint>* interior_facet_domains,
>>>                 bool reset_tensor = true);
>>>
>>> One option would be
>>>
>>>   void assemble(GenericTensor& A,
>>>                 const ufc::form& form,
>>>                 const std::vector<std::tr1::shared_ptr<FunctionSpace> > function_spaces,
>>>                 const std::vector<std::tr1::shared_ptr<Function> > coefficients,
>>>                 const MeshFunction<uint>* cell_domains,
>>>                 const MeshFunction<uint>* exterior_facet_domains,
>>>                 const MeshFunction<uint>* interior_facet_domains,
>>>                 bool reset_tensor = true);
>>
>> I meant
>>
>>     void assemble(GenericTensor& A,
>>                   const ufc::form& form,
>>                   const std::vector<FunctionSpace&> function_spaces,
>>                   const std::vector<Function&> coefficients,
>>                   const MeshFunction<uint>* cell_domains,
>>                   const MeshFunction<uint>* exterior_facet_domains,
>>                   const MeshFunction<uint>* interior_facet_domains,
>>                   bool reset_tensor = true);
>>
>
> That look better.
>
> Why is
>
>   const std::vector<FunctionSpace&> function_spaces
>
> required in the assembler?
>
> Garth

For initialized DofMaps.

Another option is to just require the user to construct dolfin::Form
objects with ufc::form and dolfin::FunctionSpaces.

--
Martin


Follow ups

References