[EMAIL PROTECTED] wrote: >> 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 think I will look at the Dirichlet conditions in a little while, since I > like symmetric matrices. I think I will enforce the bc at element level so > the assemble function > will need to take in bc. > A = assemble(form, mesh, bc) > or for systems > A = assemble([form00, form01, form10, form11], mesh, [bc0, bc1]) > or something similar. >
Some linear algebra packages only assemble terms with a positive index in the dof map, and ignore negative integers. I'm pretty sure that PETSc does this. A good start would be to use minus signs in the dof map for dofs with Dirichlet bcs. Garth > The element-level-wise elimination should be easy enough > to extend to parallel systems. > > > Kent > > >> 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 >> > > _______________________________________________ DOLFIN-dev mailing list [email protected] http://www.fenics.org/mailman/listinfo/dolfin-dev
