← Back to team overview

dolfin team mailing list archive

Re: [Question #124031]: Symmetry-Preserving DirichletBCs

 



On 04/09/10 01:00, Peter Brune wrote:
Cool.  Thanks.

Why is this a special case (under VariationalProblem) rather than the
normal way of doing things?

History, plus is hasn't been generalised to assemble just a matrix or just a vector.

It should work for general operators and
effectively eliminates unnecessary unknowns from the system.


We don't eliminate the constrained dofs - eliminating them makes handling the concept of a 'Function' difficult.

Garth

- Peter

On Fri, Sep 3, 2010 at 6:46 PM, Garth N. Wells <gnw20@xxxxxxxxx
<mailto:gnw20@xxxxxxxxx>> wrote:

    Look at SystemAssembler. It preserves any symmetries.

    Garth


    On 04/09/10 00:44, Peter Brune wrote:

        New question #124031 on DOLFIN:
        https://answers.launchpad.net/dolfin/+question/124031

        I have gotten into a problem where it's important for the
        symmetry of
        my operator to be preserved during the application of boundary
        conditions.  I was able to quickly write up an implementation of
        them
        that, when applied, made the following changes to A and b to create
        A_bc and b_bc (I still have to think about exactly what to do with
        the nonlinear x) where x_boundary is given as boundary conditions.
        the subscripts _boundary and _interior refer to the part of the
        vector or operator restricted to the boundary (both in rows and
        columns).

        b_bc = (b - A(x_boundary + zero_interior))_interior + x_boundary
        A_bc
        = A_interior + I_boundary

        Is there any particular reason that DOLFIN does it just by setting
        certain rows to the identity?  I'm trying to use solvers and
        preconditioners that only work on symmetric problems, so the present
        way of doing things won't work.  I asked around about this with
        respect to matrix properties and apparently the way I described
        above
        (or variants) is the only way you can really prove anything about.
        This includes weak application.

        My implementation works, but given that there is no reliable column
        access on the matrix classes it is potentially broken in parallel.
        Is there any reason why there are no facilities for column
        get/set in
        the matrix interface?


    _______________________________________________
    Mailing list: https://launchpad.net/~dolfin
    <https://launchpad.net/%7Edolfin>
    Post to     : dolfin@xxxxxxxxxxxxxxxxxxx
    <mailto:dolfin@xxxxxxxxxxxxxxxxxxx>
    Unsubscribe : https://launchpad.net/~dolfin
    <https://launchpad.net/%7Edolfin>
    More help   : https://help.launchpad.net/ListHelp





References