BaseVTKWriter< H > Class Template Referenceabstract

#include <BaseVTKWriter.h>

Public Member Functions

 BaseVTKWriter (H &handler)
 
 BaseVTKWriter (const BaseVTKWriter &other)
 
virtual void writeVTK () const =0
 
unsigned getFileCounter () const
 
void setFileCounter (unsigned fileCounter)
 
void setOutputDirectory (const std::string &dir)
 
const std::string & getOutputDirectory () const
 
std::string getFileName () const
 

Protected Member Functions

std::fstream makeVTKFileWithHeader () const
 
void writeVTKFooterAndClose (std::fstream &file) const
 

Protected Attributes

Hhandler_
 particle handler from which the particles should be written More...
 
unsigned int fileCounter
 
std::string outputDirectory_
 

Detailed Description

template<typename H>
class BaseVTKWriter< H >

Template Parameters
Hsome handler, e.g. particleHandler

Constructor & Destructor Documentation

◆ BaseVTKWriter() [1/2]

template<typename H >
BaseVTKWriter< H >::BaseVTKWriter ( H handler)
inline
22  : handler_(handler)
23  {
24  fileCounter = 0;
25  outputDirectory_ = ".";
26  }
H & handler_
particle handler from which the particles should be written
Definition: BaseVTKWriter.h:71
std::string outputDirectory_
Definition: BaseVTKWriter.h:75
unsigned int fileCounter
Definition: BaseVTKWriter.h:73

References BaseVTKWriter< H >::fileCounter, and BaseVTKWriter< H >::outputDirectory_.

◆ BaseVTKWriter() [2/2]

template<typename H >
BaseVTKWriter< H >::BaseVTKWriter ( const BaseVTKWriter< H > &  other)
inline

Member Function Documentation

◆ getFileCounter()

template<typename H >
unsigned BaseVTKWriter< H >::getFileCounter ( ) const
inline
37  {
38  return fileCounter;
39  }

References BaseVTKWriter< H >::fileCounter.

Referenced by DPMBase::write(), and DPMBase::writeVTKFiles().

◆ getFileName()

template<typename T >
std::string BaseVTKWriter< T >::getFileName
Todo:
vtw wall files only need to be written by one processor
82 {
83  //extract the word "Wall" or "Particle" from the VTK writer name
84  std::string name = handler_.getName();
85  name = name.substr(0, name.length() - 7);
86 
87  //determine name of output file
89 #ifdef MERCURYDPM_USE_MPI
90  if (NUMBER_OF_PROCESSORS > 1 && name != "Wall")
91  {
92  fileName = handler_.getDPMBase()->getName() + "Processor_" + std::to_string(PROCESSOR_ID) +
93  '_' + name + '_' + std::to_string(fileCounter) + ".vtu";
94  }
95  else
96  {
97  fileName = handler_.getDPMBase()->getName() +
98  name + '_' +
99  std::to_string(fileCounter) + ".vtu";
100  }
101 #else
102  fileName = handler_.getDPMBase()->getName() +
103  name + '_' +
104  std::to_string(fileCounter) + ".vtu";
105 #endif
106  return fileName;
107 };
#define PROCESSOR_ID
Definition: GeneralDefine.h:42
#define NUMBER_OF_PROCESSORS
For the MPI communication routines this quantity is often required. defining this macro makes the cod...
Definition: GeneralDefine.h:41
string fileName
Definition: UniformPSDSelfTest.py:10
std::string string(const unsigned &i)
Definition: oomph_definitions.cc:286
std::string to_string(T object, unsigned float_precision=8)
Definition: oomph_utilities.h:189
string name
Definition: plotDoE.py:33

References UniformPSDSelfTest::fileName, plotDoE::name, NUMBER_OF_PROCESSORS, PROCESSOR_ID, oomph::Global_string_for_annotation::string(), and oomph::StringConversion::to_string().

◆ getOutputDirectory()

template<typename H >
const std::string& BaseVTKWriter< H >::getOutputDirectory ( ) const
inline

◆ makeVTKFileWithHeader()

template<typename T >
std::fstream BaseVTKWriter< T >::makeVTKFileWithHeader
protected
Todo:
vtw wall files only need to be written by one processor
113 {
115  fileCounter++;
116 
117  // open output file
118  char filePath[2048];
119  const int n = snprintf(filePath, sizeof(filePath), "%s/%s", outputDirectory_.c_str(), fileName.c_str());
120  if (n <= 0) {
121  logger(ERROR, "unable to create file path");
122  }
123 
124  std::fstream file;
125  file.open(filePath, std::ios_base::out);
126  if (file.fail())
127  {
128  logger(WARN, "File % could not be opened", filePath);
129  }
130 
131  // write output file header
132  file << "<?xml version=\"1.0\"?>\n";
133  file << "<!-- time " << handler_.getDPMBase()->getTime() << "-->\n";
134  file << "<VTKFile type=\"UnstructuredGrid\" version=\"0.1\" byte_order=\"LittleEndian\">\n";
135  file << "<UnstructuredGrid>\n";
136  return file;
137 }
const unsigned n
Definition: CG3DPackingUnitTest.cpp:11
Logger< MERCURYDPM_LOGLEVEL > logger("MercuryKernel")
Definition of different loggers with certain modules. A user can define its own custom logger here.
@ WARN
@ ERROR
std::string getFileName() const
Definition: BaseVTKWriter.h:81
std::ofstream out("Result.txt")

References ERROR, UniformPSDSelfTest::fileName, logger, n, out(), oomph::Global_string_for_annotation::string(), and WARN.

◆ setFileCounter()

template<typename H >
void BaseVTKWriter< H >::setFileCounter ( unsigned  fileCounter)
inline
42  {
43  this->fileCounter = fileCounter;
44  }

References BaseVTKWriter< H >::fileCounter.

Referenced by DPMBase::read(), and DPMBase::resetFileCounter().

◆ setOutputDirectory()

template<typename H >
void BaseVTKWriter< H >::setOutputDirectory ( const std::string &  dir)
inline
47  {
48  logger.assert_always(!dir.empty(), "Invalid VTK directory");
49 
50  if (dir.at(dir.size() - 1) == '/'){
51  outputDirectory_ = dir.substr(0, dir.size() - 1);
52  } else {
53  outputDirectory_ = dir;
54  }
55  }

References logger, and BaseVTKWriter< H >::outputDirectory_.

Referenced by DPMBase::read(), and DPMBase::setVTKOutputDirectory().

◆ writeVTK()

template<typename H >
virtual void BaseVTKWriter< H >::writeVTK ( ) const
pure virtual

◆ writeVTKFooterAndClose()

template<typename T >
void BaseVTKWriter< T >::writeVTKFooterAndClose ( std::fstream &  file) const
protected
141 {
142  // write output file footer
143  file << "<Cells>\n";
144  file << " <DataArray type=\"Int32\" Name=\"connectivity\" format=\"ascii\">\n";
145  file << " </DataArray>\n";
146  file << " <DataArray type=\"Int32\" Name=\"offsets\" format=\"ascii\">\n";
147  file << " </DataArray>\n";
148  file << " <DataArray type=\"UInt8\" Name=\"types\" format=\"ascii\">\n";
149  file << " </DataArray>\n";
150  file << "</Cells>\n";
151  file << "</Piece>\n";
152  file << "</UnstructuredGrid>\n";
153  file << "</VTKFile>\n";
154  // close output file
155  file.close();
156 }

Member Data Documentation

◆ fileCounter

◆ handler_

template<typename H >
H& BaseVTKWriter< H >::handler_
protected

particle handler from which the particles should be written

◆ outputDirectory_

template<typename H >
std::string BaseVTKWriter< H >::outputDirectory_
protected

The documentation for this class was generated from the following file: