Tpetra: In-place conversion from BlockMultiVector to BlockVector
Created by: wfspotz
@trilinos/tpetra
Expectations
Given a Tpetra::BlockMultiVector
, it should be possible to extract a const or non-const Tpetra::BlockVector
with view semantics.
The Tpetra::MultiVector
class has getVector()
and getVectorNonConst()
methods, but no operator()
or operator[]
operators. The Tpetra::BlockMultiVector
interface should mimic the Tpetra::MultiVector
interface with getBlockVector()
and getBlockVectorNonConst()
methods.
Current Behavior
There are currently no methods or operators to do this.
Motivation and Context
In SPARC, I am trying to add support for LINSYS_TPETRA_BLOCK_CRS
linear systems with the NonlinearSolverNox
solver. The conversion from the SPARC type VectorTpetraBlock
to a Thyra::Vector
for the NOX ModelEvaluator solver requires this capability.
Definition of Done
-
Develop tests for BlockVector
constructor that takes aTpetra::Vector
as an argument -
Implement new BlockVector
constructor -
Verify that tests of new constructor work as expected -
Develop tests for Thyra::createVector()
factory function that takes aTpetra::BlockMultiVector
-
Implement new Thyra::createVector()
factory function -
Verify that tests of new factory function work as expected