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? > > _______________________________________________ Mailing list: https://launchpad.net/~dolfin Post to : dolfin@lists.launchpad.net Unsubscribe : https://launchpad.net/~dolfin More help : https://help.launchpad.net/ListHelp