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