← Back to team overview

dolfin team mailing list archive

Re: Additions to assembler interface

 

On Mon, Sep 26, 2011 at 12:06:55AM -0700, Johan Hake wrote:
> On Sunday September 25 2011 23:54:57 Anders Logg wrote:
> > As part of assembling systems on overlapping meshes (for Nitsche type
> > methods), my student Andre Massing is calling the regular DOLFIN
> > assemble function for part of the domain and then calling a special
> > purpose assembler (currently residing in a branch called dolfin-olm)
> > for terms that are not supported by the regular assembler.
> >
> > For this to work out well, I'd like to propose the following changes
> > to the assembler:
> >
> > 1. Make the assemble_cells, assemble_exterior/interior_facets public
> >
> > We need to access these separately.
> >
> > 2. Add options for controlling if and how we call A.apply()
>
> Wouldn't this be unnesseary if 1 is implemented? Then you just impement your
> own more flexible assemble routine?

Good point.

Andre: Would that be enough? Note that apply() is not called from the
assemble_cells/interior/exterior_facets functions, only from the main
(currently public) assemble function.

--
Anders


> Johan
>
> > A.apply() calls PETSc MatAssemblyBegin/End with MAT_FINAL_ASSEMBLY.
> > This makes it *very* expensive for us since we need to switch between
> > inserting and adding values to the matrix. We need to instead use the
> > option MAT_FLUSH_ASSEMBLY. It would further be useful to have an
> > option of not calling A.apply() at all.
> >
> > I'm not sure how this should be handled in the GenericTensor interface
> > since Trilinos does not seem to have a corresponding option.
> >
> > A first step would be to just add a boolean option to the assembler:
> >
> >   call_apply=false
> >
> > Then we could manually flush the values in between calls.
> >
> > Opinions?
> >


Follow ups

References