dolfin team mailing list archive
-
dolfin team
-
Mailing list archive
-
Message #15045
Re: reset_tensor in assemble
On ti., 2009-09-01 at 17:59 +0100, Garth N. Wells wrote:
>
> 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
>
Does it matter if it is booleans ?
Calling the assemble function, the way I want would be:
E = assemble(mass, D, None, None, None, None, None, True, False)
Anyway, if it is ok, I update the assemble functions with both
reset_tensor_sparsity and add_values.
Kent
Kent
Follow ups
References