← Back to team overview

dolfin team mailing list archive

Re: Assembler interface

 

On Thu, Oct 23, 2008 at 04:46:28PM +0100, Garth N. Wells wrote:
> 
> 
> Anders Logg wrote:
> > On Thu, Oct 23, 2008 at 04:29:16PM +0100, Garth N. Wells wrote:
> >>
> >> 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
> > 
> > What about dolfin::Array vs std::vector?
> >
> 
> OK with me. Can't remember any more if there was a reason for using 
> std::vector instead of Array.

The initial reason was to avoid confusion with dolfin::Vector, but we
always use the std:: prefix anyway so there is little chance for
confusion. And we've started to use quite a bit of std:: stuff anyway
and we don't want to start wrapping dolfin::Map, dolfin::SharePointer
etc... :-)

Let's try to avoid it and then remove it at some point.

> Does PyDOLFIN wrap the member functions of Array which are inherited 
> from std:vector?

I don't know, but there are some standard wrappers for std stuff that
we can rely on.

-- 
Anders


> Garth
> 
> > 
> > 
> > ------------------------------------------------------------------------
> > 
> > _______________________________________________
> > DOLFIN-dev mailing list
> > DOLFIN-dev@xxxxxxxxxx
> > http://www.fenics.org/mailman/listinfo/dolfin-dev
> 
> 
> _______________________________________________
> DOLFIN-dev mailing list
> DOLFIN-dev@xxxxxxxxxx
> http://www.fenics.org/mailman/listinfo/dolfin-dev

Attachment: signature.asc
Description: Digital signature


Follow ups

References