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 - [x] Develop tests for `BlockVector` constructor that takes a `Tpetra::Vector` as an argument - [x] Implement new `BlockVector` constructor - [x] Verify that tests of new constructor work as expected - [ ] Develop tests for `Thyra::createVector()` factory function that takes a `Tpetra::BlockMultiVector` - [ ] Implement new `Thyra::createVector()` factory function - [ ] Verify that tests of new factory function work as expected
issue