[dune-fem] Solution of a linear system, where blocks have different size

Dedner, Andreas A.S.Dedner at warwick.ac.uk
Tue Apr 24 20:47:18 CEST 2012


If you wanted to do a more standard type method (e.g.
first compute y then x) this might work.

You already have:
OperatorA
OperatorB
OperatorC

Define:
OperatorAinv using for example the ISTL binding
(e.g., Dune::ISTLCGOp< DiscreteFunctionType, LinearOperatorType >)
Then define a SchurOperator evaluating to
    -BA^{inv}B^T+C
e.g.
SchurOperator::evaluate(u,v)
{
  OperatorC(u,v);
  OperatorB(u,bu);
  OperatorAinv(bu,abu);
  OperatorB(abu,babu);
  v += babu;
}
Then you can use one of the matrix free inverse operator
implementation found in dune-fem:
Dune::CGInverseOperator< DiscreteFunctionType >
   solver( SchurOperator, solverEps, solverEps );
then solver(g,y);
should give the right value for y using AInv and B
you should get x

DiscreteFunctionType is in this case the type for y.

I almost think that doing the full system in one go might
be almost more complicated....

Best
Andreas

------------------------------------------------------------------------------------------
From: dune-fem-bounces+a.s.dedner=warwick.ac.uk at dune-project.org [dune-fem-bounces+a.s.dedner=warwick.ac.uk at dune-project.org] on behalf of Sacconi, Andrea [a.sacconi11 at imperial.ac.uk]
Sent: Tuesday, April 24, 2012 5:44 PM
To: dune-fem at dune-project.org
Subject: [dune-fem] Solution of a linear system, where blocks have different size

Hi everyone,

suppose I need to solve the following linear systems:

| A    - B^T| | x | = 0
| B      C    | | y | = g

x = -A^{inv}B^Ty

(-BA^{inv}B^Ty+C)y = g

I have already implemented the three operators A, B and C.
I would like to use a direct / iterative solver in order to solve the entire system, i.e. without any formal elimination of one of the two variables.

Pay attention that x and y are, in practice, a scalar-valued and a vector-valued function, so their algebraic counterparts have different sizes, i.e. the four blocks don't have identical dimensions.
Is it possible to implement such a solver in DUNE-FEM, maybe interfacing with DUNE-ISTL, "gluing" the four blocks to get the solution after the "black-box" solver has been used?

Cheers,

Andrea

__________________________________________________________

Andrea Sacconi
PhD student, Applied Mathematics
AMMP Section, Department of Mathematics, Imperial College London,
London SW7 2AZ, UK
a.sacconi11 at imperial.ac.uk
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.dune-project.org/pipermail/dune-fem/attachments/20120424/affe9a48/attachment.htm>


More information about the dune-fem mailing list