The issue is within Trilinos itself.
The TrilinosPayload (thanks JP!) provides an interface to Epetra_LinearOperator (Trilinos version of our LinearOperator). However, it cannot access matrix elements, as it is not thought for matrix based operations.
You can, however, create a direct solver, wrap it into a LinearOperator, and use the direct solver as a preconditioner, or as one block of a Block preconditioner/solver. Simple workflow:
YourDirectSolverHere Ainv;
Ainv.initialze(A); // A is the actual Trilinos Matrix here, not a linear operator, since direct solvers need access to the matrix entries
auto Aop = linear_operator(A);
auto AinvOp = linear_operator(A, Ainv);
Now you can use Aop and AinvOp, i.e.,
auto S = Bt*AinvOp*B;
would crate a Schur complement.
Take a look at step-70, in the solve() function. There you have an example on how to use them with a block system.
L.
> To view this discussion on the web visit
https://groups.google.com/d/msgid/dealii/3CCBC467-91F0-47CB-8F49-465FE5DB49E5%40gmail.com.