fixed edge display for volume cells
[engrid-github.git] / src / libengrid / drnumwriter.h
blob281dddb885484ab4bea591f080baac20f7939696
1 // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2 // + +
3 // + This file is part of enGrid. +
4 // + +
5 // + Copyright 2008-2014 enGits GmbH +
6 // + +
7 // + enGrid is free software: you can redistribute it and/or modify +
8 // + it under the terms of the GNU General Public License as published by +
9 // + the Free Software Foundation, either version 3 of the License, or +
10 // + (at your option) any later version. +
11 // + +
12 // + enGrid is distributed in the hope that it will be useful, +
13 // + but WITHOUT ANY WARRANTY; without even the implied warranty of +
14 // + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +
15 // + GNU General Public License for more details. +
16 // + +
17 // + You should have received a copy of the GNU General Public License +
18 // + along with enGrid. If not, see <http://www.gnu.org/licenses/>. +
19 // + +
20 // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
22 #ifndef DRNUMWRITER_H
23 #define DRNUMWRITER_H
25 #include "iooperation.h"
26 #include "edgelengthsourcemanager.h"
28 #include <QFile>
29 #include <QTextStream>
31 /**
32 * @brief A very experimental export function for DrNUM grids.
34 class DrNumWriter : public IOOperation
37 protected: // data types
39 struct cart_patch_t
41 vec3_t x0, gi, gj;
42 int Ni, Nj, Nk, sl_i1, sl_i2, sl_j1, sl_j2, sl_k1, sl_k2;
43 double Li, Lj, Lk;
44 QString fx, fy, fz, bx, bX, by, bY, bz, bZ, s;
45 vtkIdType id_cell;
49 protected: // attributes
51 QString m_PatchFile; ///< the name of the DrNUM patches file
52 QString m_ComplexPath; ///< the path to the DrNUM directory for complex patches
54 QVector<cart_patch_t> m_CartPatches;
55 QVector<int> m_CellToCartPatch;
56 int m_OverlapLayers;
57 QVector<double> m_H;
58 double m_MaxEdgeLength;
59 double m_MinEdgeLength;
60 double m_GrowthFactor;
61 EdgeLengthSourceManager m_ELSManager;
65 protected: // methods
67 void computeMeshDensity();
68 void createAllCartPatches();
69 void writeCartPatches(QTextStream &s);
70 QString boundaryCode(vtkIdType id_cell, int i);
72 virtual void operate();
75 public: // methods
77 DrNumWriter();
81 #endif // DRNUMWRITER_H