Skip to content
Snippets Groups Projects
ElementFileWriter.h 3.2 KiB
Newer Older
// ============================================================================
// ==                                                                        ==
// == AMDiS - Adaptive multidimensional simulations                          ==
// ==                                                                        ==
// ==  http://www.amdis-fem.org                                              ==
// ==                                                                        ==
// ============================================================================
//
// Software License for AMDiS
//
// Copyright (c) 2010 Dresden University of Technology 
// All rights reserved.
// Authors: Simon Vey, Thomas Witkowski et al.
//
// This file is part of AMDiS
//
// See also license.opensource.txt in the distribution.



/** \file ElementFileWriter.h */

#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)
Thomas Witkowski's avatar
Thomas Witkowski committed
   */
  class ElementFileWriter : public FileWriterInterface
  {
  public:
Thomas Witkowski's avatar
Thomas Witkowski committed
    /// Constructor.
    ElementFileWriter(string name, 
		      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(map<int, double> &vec,
			  string filename,
			  string postfix = ".vtu",
Thomas Witkowski's avatar
Thomas Witkowski committed
    /// Writes element data in AMDiS format (1 file !).
    void writeMeshDatValues(string filename, double time);
Thomas Witkowski's avatar
Thomas Witkowski committed
    /// Writes element data in VTK format.
    void writeVtkValues(string filename, string postfix,
			int level = -1);
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
    /// AMDiS mesh-data-file extension.
    string amdisMeshDatExt;
Thomas Witkowski's avatar
Thomas Witkowski committed
    /// VTK file extension.
    /// 0: Don't write AMDiS files.
    /// 1: Write AMDiS files. 
    /// 0: Don't append time index to filename prefix.
    /// 1: Append time index to filename prefix.
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.
    map<int, double> vec;

#endif  // ELEMENTFILEWRITER_H