[firedrake] difference between matrix-action and form-action

Lawrence Mitchell lawrence.mitchell at imperial.ac.uk
Mon Apr 27 12:19:46 BST 2015


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On 27/04/15 12:04, Eike Mueller wrote:
> Dear firedrakers,
> 
> Assume I have assembled a UFL form in the HDiv space:
> 
> form_uu = [a UFL form] mat_uu = assemble(form_uu,bcs=bcs)

This assembles an operator with bcs applied, useable in a linear
solver.  The rows /and/ columns corresponding to the BC nodes are the
identity.

> then shouldn’t the following two experssions fo exactly the same
> thing?
> 
> version A: with v.dat.vec as y: with u.dat.vec_ro as x: 
> mat_uu.M.handle.mult(x,y)

So this computes I_{Gamma} + A_{Omega \ Gamma}, i.e. on the boundary
nodes y is x elsewhere it's Ax.

> version B: v = self._mutilde._form_action(u)

This computes the action of A on u /without/ boundary conditions.
What are you expecting to see?, Ax on the non-boundary condition
nodes, bc-value on the boundary values?

> as fas as I can tell, only version B gives the correct result in my
> case.

Lawrence
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1

iQEcBAEBAgAGBQJVPhtOAAoJECOc1kQ8PEYv+VAIAMqhJa+dIZSlSu20g2BSecv6
WFTlDq/gyTu1kQs3mYrwrPTzAUbLt5jMjZMZdUdQVyXnQC4H1i3zBJch5z9smMmT
SDL6zIn120XYK+CjAD8snbpRLU/DPvdJ9DMo0QQ1c9swUSLdLxFEnxYuB2OQXqKI
nDF2c0T13+uiYQe9m7DzEHMEmN0TB4NZvez8X/6xPb/2lp0U1wwJDxU/7+nk9DDw
Qe5RIf5VVzUg21RhtvDAdZqp4AylBPq7GEpUwmcetv4PqYnjgcQMOYQaZGUW1AuC
qxVMP29VsjIUCjUlyE9KL7oBBshBjwci4icpkpgP8DC7YnuQrGvqWrgLBOIMHfI=
=NtfA
-----END PGP SIGNATURE-----



More information about the firedrake mailing list