It would be useful to lay out a plan for tackling DofMaps. Getting this right is the key to parallel assembly, assembly optimisations and applying Dirichlet boundary conditions by eliminating Dirichlet dofs from the global system.
I'm happy to take a look, but I'll need some time because I've lost my overview of DofMaps. If someone else is already on top of it, I'd be happy to provide feedback. Garth Anders Logg wrote: > On Mon, Jun 16, 2008 at 10:45:18PM +0200, Martin Sandve Alnæs wrote: >> 2008/6/16 Anders Logg <[EMAIL PROTECTED]>: >>> On Mon, Jun 16, 2008 at 10:10:32PM +0200, Martin Sandve Alnæs wrote: >>>> 2008/6/16 Anders Logg <[EMAIL PROTECTED]>: >>>>> On Mon, Jun 16, 2008 at 09:46:23PM +0200, Martin Sandve Alnæs wrote: >>>>>> 2008/6/16 Anders Logg <[EMAIL PROTECTED]>: >>>>>>> On Mon, Jun 16, 2008 at 07:06:20PM +0200, Martin Sandve Alnæs wrote: >>>>>>>> I think DofMapSet should be independent of the form it was initialized >>>>>>>> with. >>>>>>>> I believe the sharing of a single set of dofmaps among different forms >>>>>>>> is one >>>>>>>> of the key tasks of this class, and that the vector with form argument >>>>>>>> dofmaps >>>>>>>> should rather be obtained on demand: >>>>>>> Agree. >>>>>>> >>>>>>>> // Get vector of dofmaps (possibly not unique) for each argument of >>>>>>>> form >>>>>>>> dofmapvector = dofmapset.getDofMaps(form); >>>>>>> What does this function do? >>>>>> Gets a vector<DofMap*> with length equal to form.rank() + >>>>>> form.num_coefficients(), >>>>>> where each DofMap* is the same if the signature is the same. >>>>>> In other words, constructs and returns what is currently a member: >>>>>> >>>>>> // Array of dof maps for current form >>>>>> std::vector<DofMap*> dof_map_set; >>>>>> >>>>>> but on the fly for a given form such that DofMapSet isn't >>>>>> associated with any particular form. >>>>> ok, now I understand what you mean. But I would suggest >>>>> >>>>> DofMap& dof_map = dofmapset.extractDofMap(form, i); >>>> Agree, that was the second function I suggested. >>> ok. >>> >>>>> Or are we going to pass around Arrays of DofMaps? >>>> It was just a convenience function to replace the existing >>>> functionality, but this functionality should probably rather >>>> be in UFC or something. >>> DofMapSet? Perhaps, but that would mean putting *functionality* into >>> UFC which we haven't done so far (except the Python boilerplate). >> I'm just guessing here, I imagine the vector of dofmaps for a form >> is only used in the context of assembly, and then they can be >> picked out together with other data in UFC. You or Garth put >> this vector<DofMap*> in DofMapSet in the first place, feel free >> to decide where to have it :) > > It's also used in assemble.py for things like initializing Functions, > but I think this can be greatly enhanced once the DofMapSet is not > tied to a particular form. > > > > ------------------------------------------------------------------------ > > _______________________________________________ > 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
