Skip to content
Snippets Groups Projects
ElementFileWriter.h 2.65 KiB
Newer Older
#ifndef ELEMENTFILEWRITER_H
#define ELEMENTFILEWRITER_H

#include "FileWriter.h"
#include "FiniteElemSpace.h"
#include "MatrixVector.h"
#include "Mesh.h"

Thomas Witkowski's avatar
Thomas Witkowski committed
  /** \brief
   * Filewriter that make it possible to create mesh files, where the values
   * are not defined on DOFs, but instead are defined on the elements.
   *
   * It can be necessary to visualize data defined on elements, e.g. residual
   * error that is defined on elements and not on DOFs. This class takes as
   * input a mesh and a map, which defines for each element index a (double)
   * value, and outputs a TecPlot/AMDiS/VTK mesh.
   */
  class ElementFileWriter : public FileWriterInterface
  {
  public:
Thomas Witkowski's avatar
Thomas Witkowski committed
    /// Constructor.
    ElementFileWriter(std::string name, 
Thomas Witkowski's avatar
Thomas Witkowski committed
		      std::map<int, double> &vec);
Thomas Witkowski's avatar
Thomas Witkowski committed
    /// Implementation of FileWriterInterface::writeFiles().
    void writeFiles(AdaptInfo *adaptInfo, bool force,
		    int level = -1,
		    Flag traverseFlag = Mesh::CALL_LEAF_EL,
		    bool (*writeElem)(ElInfo*) = NULL);

Thomas Witkowski's avatar
Thomas Witkowski committed
    /// Simple writing procedure for one element map.
    static void writeFile(std::map<int, double> &vec,
			  std::string filename);
Thomas Witkowski's avatar
Thomas Witkowski committed
    /// Writes element data in tecplot format.
    void writeTecPlotValues(std::string filename);
Thomas Witkowski's avatar
Thomas Witkowski committed
    /// Writes element data in AMDiS format (1 file !).
    void writeMeshDatValues(std::string filename, double time);
Thomas Witkowski's avatar
Thomas Witkowski committed
    /// Writes element data in VTK format.
    void writeVtkValues(std::string filename);
Thomas Witkowski's avatar
Thomas Witkowski committed
    /// Name.
Thomas Witkowski's avatar
Thomas Witkowski committed
    /// Used filename prefix.
Thomas Witkowski's avatar
Thomas Witkowski committed
    /// TecPlot file extension.
Thomas Witkowski's avatar
Thomas Witkowski committed
    /// AMDiS mesh-data-file extension.
    std::string amdisMeshDatExt;

Thomas Witkowski's avatar
Thomas Witkowski committed
    /// VTK file extension.
    std::string vtkExt;

    /** \brief
     * 0: Don't write TecPlot files.
     * 1: Write TecPlot files. 
     */
    int writeTecPlotFormat;

    /** \brief
     * 0: Don't write AMDiS files.
     * 1: Write AMDiS files. 
     */
    int writeAMDiSFormat;

    /** \brief
     * 0: Don't write VTK files.
     * 1: Write VTK files. 
     */
    int writeVtkFormat;

    /** \brief
     * 0: Don't append time index to filename prefix.
     * 1: Append time index to filename prefix.
     */
    int appendIndex;

Thomas Witkowski's avatar
Thomas Witkowski committed
    /// Total length of appended time index.
Thomas Witkowski's avatar
Thomas Witkowski committed
    /// Number of decimals in time index.
Thomas Witkowski's avatar
Thomas Witkowski committed
    /// Timestep modulo: write only every tsModulo-th timestep! 
Thomas Witkowski's avatar
Thomas Witkowski committed
    ///
Thomas Witkowski's avatar
Thomas Witkowski committed
    /// Mesh used for output.
Thomas Witkowski's avatar
Thomas Witkowski committed
    /// Vector that stores the solution.

#endif  // ELEMENTFILEWRITER_H