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)