← Back to team overview

dolfin team mailing list archive

Re: reset_tensor in assemble

 



Kent Andre wrote:
On ti., 2009-09-01 at 17:16 +0100, Garth N. Wells wrote:
Kent Andre wrote:
Hi, A.zero() is called both when reset_tensor is true and false in Assembler::init_global_tensor. The code is as follows:
void Assembler::init_global_tensor(GenericTensor& A,
                                   const Form& a,
                                   UFC& ufc, bool reset_tensor)
{
  if (reset_tensor)
  {
... } else A.zero();
}

Is this on purpose or is it a bug ?
The code is correct. 'A.zero()' zeroes the entries but preserves the non-zero structure of the matrix.

Garth


Then maybe reset_sparsity_pattern is a better name ?

We could extend the assembler interface to

  assemble(GenericTensor& A, const Form& a,
           bool reset_tensor_sparsity=true, bool add_values=false);

I'm not a big fan of booleans though because they make no sense to the reader in the calling code, e,g. what does

  assemble(A, a, true, true);

mean? We could use the parameter system instead.

Garth




(I would like to not zero out the matrix before assembly, but I guess I can do this by some backend-spesific code where I add the matrices together afterwords.)

Kent





Follow ups

References