ElementFileWriter.h 2.56 KB
Newer Older
1
2
3
4
5
6
7
8
9
#ifndef ELEMENTFILEWRITER_H
#define ELEMENTFILEWRITER_H

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

10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
namespace AMDiS {

  class ElementFileWriter : public FileWriterInterface
  {
  public:
    MEMORY_MANAGED(ElementFileWriter);

    /**
     * Constructor.
     */
    ElementFileWriter(const std::string& name_, 
		      Mesh *mesh_,
		      const FiniteElemSpace *feSpace_,
		      std::map<int, double> &vec_);

    /**
     * Implementation of FileWriterInterface::writeFiles().
     */
    void writeFiles(AdaptInfo *adaptInfo, bool force,
		    int level = -1,
		    Flag traverseFlag = Mesh::CALL_LEAF_EL,
		    bool (*writeElem)(ElInfo*) = NULL);

  protected:
    /**
     * Writes element data in tecplot format.
     */
    void writeTecPlotValues(const char* filename);

    /**
     * Writes element data in AMDiS format (1 file !).
     */
    void writeMeshDatValues(const char* filename, double time);

    /**
     * Writes element data in VTK format.
     */
    void writeVtkValues(const char* filename);

  protected:
    /** \brief
     * Name.
     */
    std::string name;

    /** \brief
     * Used filename prefix.
     */
    std::string filename;

    /** \brief
     * TecPlot file extension.
     */
    std::string tecplotExt;

    /** \brief
     * AMDiS mesh-data-file extension.
     */
    std::string amdisMeshDatExt;

    /** \brief
     * 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;

    /** \brief
     * Total length of appended time index.
     */
    int indexLength;

    /** \brief
     * Number of decimals in time index.
     */
    int indexDecimals;

    /** \brief
     * Timestep modulo: write only every tsModulo-th timestep! 
     */
    int tsModulo;

    /**
     */
    int timestepNumber;

    /** \brief
     * Mesh used for output.
     */
    Mesh *mesh;

    /** \brief
     * fespace used for output.
     */
    const FiniteElemSpace *feSpace;

    /** \brief
     * Vector that stores the solution.
     */
    std::map<int, double> vec;
  };

}

136
137

#endif  // ELEMENTFILEWRITER_H