Thyra
Version of the Day
|
Abstract strategy interface for reading and writing (multi)vector objects to and from files. More...
#include <Thyra_MultiVectorFileIOBase.hpp>
Public Member Functions | |
virtual bool | isCompatible (const MultiVectorBase< Scalar > &mv) const =0 |
Return if the given multi-vector is compatible with this implementation. More... | |
virtual void | readMultiVectorFromFile (const std::string &fileNameBase, Thyra::MultiVectorBase< Scalar > *mv) const =0 |
Read a (multi)vector from a file given the file base name. More... | |
virtual void | writeMultiVectorToFile (const Thyra::MultiVectorBase< Scalar > &mv, const std::string &fileNameBase) const =0 |
Write a (multi)vector to a file given the file base name. More... | |
Related Functions | |
(Note that these are not member functions.) | |
template<class Scalar > | |
Teuchos::RCP< VectorBase < Scalar > > | readVectorFromFile (const MultiVectorFileIOBase< Scalar > &fileIO, const std::string &fileNameBase, const VectorSpaceBase< Scalar > &vecSpc) |
Read a vector from file(s) given the file base name and a vector space. More... | |
Abstract strategy interface for reading and writing (multi)vector objects to and from files.
The concept of a file is every general and really can be implemented as any type of object data base that is keyed on a string name (i.e. fileNameBase
). In that sense, this interface is really an interface to a general multi-vector serialization/deserialization implementation, but file-based implementations are expected to be the most common.
This interface currently requires the client to know the correct vector space and to pre-create the multi-vectors with the right number of columns before they can be read in. In all current use cases where this interface is used, the client knows what it needs to read so this is fine.
ToDo: Add a form of readMultiFromFile(...) that will accept just a vector space and will create a multi-vector with as many columns as is specified in the file. Right now I don't know this functionality so I am not going to implement this. However, if an important use case is found where this functionality is needed, then we can add this implementation without much trouble.
ToDo: Derive this interface from Teuchos::ParameterListAcceptor so that we can set some options on how the reading and writing gets done (e.g. use binary or ASCII formating).
Definition at line 50 of file Thyra_MultiVectorFileIOBase.hpp.
|
pure virtual |
Return if the given multi-vector is compatible with this implementation.
Implemented in Thyra::DefaultSpmdMultiVectorFileIO< Scalar >.
|
pure virtual |
Read a (multi)vector from a file given the file base name.
fileNameBase | [in] The base name of the file(s) that will be used to read the multi-vector from. |
mv | [in/out] On output, this multi-vector will be filled with the values from the given file(s). This multi-vector must have already been created and structured in such a way that is compatible with the format of the multi-vector stored in the given file and the implementation of this interface. |
Preconditions:
mv!=NULL
this->isCompatible(*mv)==true
. Implemented in Thyra::DefaultSpmdMultiVectorFileIO< Scalar >.
|
pure virtual |
Write a (multi)vector to a file given the file base name.
mv | [in] The multi-vector that will be written to file(s). |
fileNameBase | [in] The base name of the file(s) that will written to with the values of the multi-vector. |
Preconditions:
this->isCompatible(mv)==true
. Implemented in Thyra::DefaultSpmdMultiVectorFileIO< Scalar >.
|
related |
Read a vector from file(s) given the file base name and a vector space.
Definition at line 108 of file Thyra_MultiVectorFileIOBase.hpp.