1#ifndef included_AMP_Writer
2#define included_AMP_Writer
4#include "AMP/mesh/MeshID.h"
5#include "AMP/utils/AMP_MPI.h"
6#include "AMP/utils/Array.h"
7#include "AMP/utils/Database.h"
67 static std::shared_ptr<AMP::IO::Writer>
buildWriter( std::string type,
75 static std::shared_ptr<AMP::IO::Writer>
buildWriter( std::shared_ptr<AMP::Database> db );
106 virtual void readFile(
const std::string &fname ) = 0;
109 virtual void writeFile(
const std::string &fname,
size_t iteration,
double time = 0 ) = 0;
126 const std::string &
path = std::string() );
149 std::shared_ptr<AMP::Mesh::Mesh> mesh,
151 const std::string &name =
"",
153 bool isStatic =
false );
164 const std::string &name =
"" );
175 const std::string &name =
"" );
226 std::shared_ptr<AMP::LinearAlgebra::Vector>
vec;
228 VectorData( std::shared_ptr<AMP::LinearAlgebra::Vector>,
const std::string & );
234 std::shared_ptr<AMP::LinearAlgebra::Matrix>
mat;
236 MatrixData( std::shared_ptr<AMP::LinearAlgebra::Matrix>,
const std::string & );
242 std::shared_ptr<AMP::Mesh::Mesh>
mesh;
262 std::shared_ptr<AMP::Mesh::Mesh>
mesh;
286 static std::vector<AMP::Mesh::MeshID>
getMeshIDs( std::shared_ptr<AMP::Mesh::Mesh> mesh );
293 std::vector<AMP::Mesh::MeshElementID> &nodelist_ids );
298 const std::string &
path,
299 std::set<GlobalID> &base_ids );
302 std::tuple<std::vector<multiMeshData>, std::map<GlobalID, baseMeshData>>
313 void syncData( std::vector<TYPE> &data,
int root )
const;
Provides C++ wrapper around MPI routines.
A class used to abstract away reading/writing files.
virtual void registerVector(std::shared_ptr< AMP::LinearAlgebra::Vector > vec, std::shared_ptr< AMP::Mesh::Mesh > mesh, AMP::Mesh::GeomType type, const std::string &name="", VectorType precision=VectorType::DOUBLE, bool isStatic=false)
Function to register a vector.
std::map< GlobalID, baseMeshData > d_baseMeshes
virtual void setDecomposition(int decomposition)
Function to set the file decomposition.
std::map< GlobalID, MatrixData > d_matrices
virtual void writeFile(const std::string &fname, size_t iteration, double time=0)=0
Function to write a file.
std::tuple< std::vector< multiMeshData >, std::map< GlobalID, baseMeshData > > syncMultiMeshData(int root=-1) const
static std::shared_ptr< AMP::IO::Writer > buildWriter(std::shared_ptr< AMP::Database > db)
Function to build a writer.
void registerMesh(std::shared_ptr< AMP::Mesh::Mesh > mesh, int level=1, const std::string &path=std::string())
Function to register a mesh.
void syncData(std::vector< TYPE > &data, int root) const
void registerVector(std::shared_ptr< AMP::LinearAlgebra::Vector > vec, const std::string &name="")
Function to register a vector.
GlobalID getID(const AMP_MPI &comm) const
static void getNodeElemList(std::shared_ptr< const AMP::Mesh::Mesh > mesh, const AMP::Mesh::MeshIterator &elements, AMP::Array< double > *x, AMP::Array< int > &nodelist, std::vector< AMP::Mesh::MeshElementID > &nodelist_ids)
Writer(const Writer &)=delete
Delete copy constructor.
std::map< GlobalID, multiMeshData > d_multiMeshes
void createDirectories(const std::string &filename)
void registerMesh2(std::shared_ptr< AMP::Mesh::Mesh > mesh, int level, const std::string &path, std::set< GlobalID > &base_ids)
std::string getExtension() const
Function to return the file extension.
DecompositionType d_decomposition
virtual WriterProperties getProperties() const =0
Function to get the writer properties.
static std::shared_ptr< AMP::IO::Writer > buildWriter(std::string type, AMP_MPI comm=AMP_COMM_WORLD)
Function to build a writer.
std::map< GlobalID, VectorData > d_vectors
std::vector< std::shared_ptr< AMP::LinearAlgebra::Vector > > d_vectorsMesh
virtual ~Writer()=default
Default destructor.
void registerMatrix(std::shared_ptr< AMP::LinearAlgebra::Matrix > mat, const std::string &name="")
Function to register a matrix.
virtual void readFile(const std::string &fname)=0
Function to read a file.
static std::vector< AMP::Mesh::MeshID > getMeshIDs(std::shared_ptr< AMP::Mesh::Mesh > mesh)
A class used to iterate over elements in a Mesh.
std::string filename(const std::string &filename)
Return the filename (strip the path)
std::string path(const std::string &filename)
Return the path to the file.
GeomType
Enumeration for basic mesh-based quantities.
bool operator<=(const GlobalID &rhs) const
bool operator<(const GlobalID &rhs) const
bool operator!=(const GlobalID &rhs) const
bool operator==(const GlobalID &rhs) const
GlobalID(uint64_t obj, uint32_t rank)
bool operator>(const GlobalID &rhs) const
bool operator>=(const GlobalID &rhs) const
std::shared_ptr< AMP::LinearAlgebra::Matrix > mat
MatrixData(std::shared_ptr< AMP::LinearAlgebra::Matrix >, const std::string &)
VectorData(std::shared_ptr< AMP::LinearAlgebra::Vector >, const std::string &)
std::shared_ptr< AMP::LinearAlgebra::Vector > vec
bool registerVectorWithMesh
std::shared_ptr< AMP::Mesh::Mesh > mesh
static baseMeshData unpack(const char *)
std::vector< VectorData > vectors
std::shared_ptr< AMP::Mesh::Mesh > mesh
std::vector< std::string > varName
static multiMeshData unpack(const char *)
std::vector< GlobalID > meshes