gmsh-TingyuanDoc  0.1
An Open-Source Timing-driven Analytical Mixed-size FPGA Placer
adaptiveData.h
Go to the documentation of this file.
1 // Gmsh - Copyright (C) 1997-2022 C. Geuzaine, J.-F. Remacle
2 //
3 // See the LICENSE.txt file in the Gmsh root directory for license information.
4 // Please report all issues on https://gitlab.onelab.info/gmsh/gmsh/issues.
5 
6 #ifndef ADAPTIVE_DATA_H
7 #define ADAPTIVE_DATA_H
8 
9 #include <list>
10 #include <set>
11 #include <vector>
12 #include <cstdlib>
13 #include <algorithm>
14 #include <sys/stat.h>
15 #include <assert.h>
16 #include <fstream>
17 #include <stdio.h>
18 #include <string>
19 #include <sstream>
20 #include "fullMatrix.h"
21 
22 #if defined(WIN32)
23 typedef unsigned __int8 uint8_t; // Valid for _MSC_VER >= 1300
24 typedef unsigned __int64 uint64_t;
25 #define PRIu8 "u"
26 #define PRIu64 "I64u"
27 #else
28 #define __STDC_FORMAT_MACROS
29 #include <inttypes.h>
30 #endif
31 
32 typedef std::vector<int> vectInt;
33 
34 class PViewData;
35 class PViewDataList;
36 class GMSH_PostPlugin;
37 
38 // For old compilers that do not support yet std::to_string()
39 template <class T> std::string ToString(const T &val)
40 {
41  std::stringstream stream;
42  stream << val;
43  return stream.str();
44 }
45 
47 public:
48  float x, y, z;
49  double X, Y, Z;
50  double val, valy, valz;
51  double valyx, valyy, valyz;
52  double valzx, valzy, valzz;
53 
54 public:
55  static adaptiveVertex *add(double x, double y, double z,
56  std::set<adaptiveVertex> &allVertice);
57  bool operator<(const adaptiveVertex &other) const
58  {
59  if(other.x < x) return true;
60  if(other.x > x) return false;
61  if(other.y < y) return true;
62  if(other.y > y) return false;
63  if(other.z < z) return true;
64  return false;
65  }
66 };
67 
68 template <class T> class nodMap {
69 public:
70  std::vector<int> mapping;
71 
72 public:
73  void cleanMapping() { mapping.clear(); }
75  int getSize() { return (int)mapping.size(); }
76 };
77 
79 public:
80  bool visible;
83  static std::list<adaptivePoint *> all;
84  static std::set<adaptiveVertex> allVertices;
85  static int numNodes, numEdges;
86 
87 public:
89  {
90  p[0] = p1;
91  e[0] = nullptr;
92  }
93  inline double V() const { return p[0]->val; }
94  inline static void GSF(double u, double v, double w, fullVector<double> &sf)
95  {
96  sf(0) = 1;
97  }
98  static void create(int maxlevel);
99  static void recurCreate(adaptivePoint *e, int maxlevel, int level);
100  static void error(double AVG, double tol);
101  static void recurError(adaptivePoint *e, double AVG, double tol);
102 };
103 
105 public:
106  bool visible;
109  static std::list<adaptiveLine *> all;
110  static std::set<adaptiveVertex> allVertices;
111  static int numNodes, numEdges;
112 
113 public:
115  {
116  p[0] = p1;
117  p[1] = p2;
118  e[0] = e[1] = nullptr;
119  }
120  inline double V() const { return (p[0]->val + p[1]->val) / 2.; }
121  inline static void GSF(double u, double v, double w, fullVector<double> &sf)
122  {
123  sf(0) = (1 - u) / 2.;
124  sf(1) = (1 + u) / 2.;
125  }
126  static void create(int maxlevel);
127  static void recurCreate(adaptiveLine *e, int maxlevel, int level);
128  static void error(double AVG, double tol);
129  static void recurError(adaptiveLine *e, double AVG, double tol);
130 };
131 
133 public:
134  bool visible;
137  static std::list<adaptiveTriangle *> all;
138  static std::set<adaptiveVertex> allVertices;
139  static int numNodes, numEdges;
140 
141 public:
143  : visible(false)
144  {
145  p[0] = p1;
146  p[1] = p2;
147  p[2] = p3;
148  e[0] = e[1] = e[2] = e[3] = nullptr;
149  }
150  inline double V() const { return (p[0]->val + p[1]->val + p[2]->val) / 3.; }
151  inline static void GSF(double u, double v, double w, fullVector<double> &sf)
152  {
153  sf(0) = 1. - u - v;
154  sf(1) = u;
155  sf(2) = v;
156  }
157  static void create(int maxlevel);
158  static void recurCreate(adaptiveTriangle *t, int maxlevel, int level);
159  static void error(double AVG, double tol);
160  static void recurError(adaptiveTriangle *t, double AVG, double tol);
161 };
162 
164 public:
165  bool visible;
168  static std::list<adaptiveQuadrangle *> all;
169  static std::set<adaptiveVertex> allVertices;
170  static int numNodes, numEdges;
171 
172 public:
174  adaptiveVertex *p4)
175  : visible(false)
176  {
177  p[0] = p1;
178  p[1] = p2;
179  p[2] = p3;
180  p[3] = p4;
181  e[0] = e[1] = e[2] = e[3] = nullptr;
182  }
183  inline double V() const
184  {
185  return (p[0]->val + p[1]->val + p[2]->val + p[3]->val) / 4.;
186  }
187  inline static void GSF(double u, double v, double w, fullVector<double> &sf)
188  {
189  sf(0) = 0.25 * (1. - u) * (1. - v);
190  sf(1) = 0.25 * (1. + u) * (1. - v);
191  sf(2) = 0.25 * (1. + u) * (1. + v);
192  sf(3) = 0.25 * (1. - u) * (1. + v);
193  }
194  static void create(int maxlevel);
195  static void recurCreate(adaptiveQuadrangle *q, int maxlevel, int level);
196  static void error(double AVG, double tol);
197  static void recurError(adaptiveQuadrangle *q, double AVG, double tol);
198 };
199 
201 public:
202  bool visible;
205  static std::list<adaptivePrism *> all;
206  static std::set<adaptiveVertex> allVertices;
207  static int numNodes, numEdges;
208 
209 public:
212  : visible(false)
213  {
214  p[0] = p1;
215  p[1] = p2;
216  p[2] = p3;
217  p[3] = p4;
218  p[4] = p5;
219  p[5] = p6;
220  e[0] = e[1] = e[2] = e[3] = nullptr;
221  e[4] = e[5] = e[6] = e[7] = nullptr;
222  }
223  inline double V() const
224  {
225  return (p[0]->val + p[1]->val + p[2]->val + p[3]->val + p[4]->val +
226  p[5]->val) /
227  6.;
228  }
229  inline static void GSF(double u, double v, double w, fullVector<double> &sf)
230  {
231  sf(0) = (1. - u - v) * (1 - w) / 2;
232  sf(1) = u * (1 - w) / 2;
233  sf(2) = v * (1 - w) / 2;
234  sf(3) = (1. - u - v) * (1 + w) / 2;
235  sf(4) = u * (1 + w) / 2;
236  sf(5) = v * (1 + w) / 2;
237  }
238  static void create(int maxlevel);
239  static void recurCreate(adaptivePrism *p, int maxlevel, int level);
240  static void error(double AVG, double tol);
241  static void recurError(adaptivePrism *p, double AVG, double tol);
242 };
243 
245 public:
246  bool visible;
249  static std::list<adaptiveTetrahedron *> all;
250  static std::set<adaptiveVertex> allVertices;
251  static int numNodes, numEdges;
252 
253 public:
256  : visible(false)
257  {
258  p[0] = p1;
259  p[1] = p2;
260  p[2] = p3;
261  p[3] = p4;
262  e[0] = e[1] = e[2] = e[3] = nullptr;
263  e[4] = e[5] = e[6] = e[7] = nullptr;
264  }
265  inline double V() const
266  {
267  return (p[0]->val + p[1]->val + p[2]->val + p[3]->val) / 4.;
268  }
269  inline static void GSF(double u, double v, double w, fullVector<double> &sf)
270  {
271  sf(0) = 1. - u - v - w;
272  sf(1) = u;
273  sf(2) = v;
274  sf(3) = w;
275  }
276  static void create(int maxlevel);
277  static void recurCreate(adaptiveTetrahedron *t, int maxlevel, int level);
278  static void error(double AVG, double tol);
279  static void recurError(adaptiveTetrahedron *t, double AVG, double tol);
280 };
281 
283 public:
284  bool visible;
287  static std::list<adaptiveHexahedron *> all;
288  static std::set<adaptiveVertex> allVertices;
289  static int numNodes, numEdges;
290 
291 public:
295  : visible(false)
296  {
297  p[0] = p1;
298  p[1] = p2;
299  p[2] = p3;
300  p[3] = p4;
301  p[4] = p5;
302  p[5] = p6;
303  p[6] = p7;
304  p[7] = p8;
305  e[0] = e[1] = e[2] = e[3] = nullptr;
306  e[4] = e[5] = e[6] = e[7] = nullptr;
307  }
308  inline double V() const
309  {
310  return (p[0]->val + p[1]->val + p[2]->val + p[3]->val + p[4]->val +
311  p[5]->val + p[6]->val + p[7]->val) /
312  8.;
313  }
314  inline static void GSF(double u, double v, double w, fullVector<double> &sf)
315  {
316  sf(0) = 0.125 * (1 - u) * (1 - v) * (1 - w);
317  sf(1) = 0.125 * (1 + u) * (1 - v) * (1 - w);
318  sf(2) = 0.125 * (1 + u) * (1 + v) * (1 - w);
319  sf(3) = 0.125 * (1 - u) * (1 + v) * (1 - w);
320  sf(4) = 0.125 * (1 - u) * (1 - v) * (1 + w);
321  sf(5) = 0.125 * (1 + u) * (1 - v) * (1 + w);
322  sf(6) = 0.125 * (1 + u) * (1 + v) * (1 + w);
323  sf(7) = 0.125 * (1 - u) * (1 + v) * (1 + w);
324  }
325  static void create(int maxlevel);
326  static void recurCreate(adaptiveHexahedron *h, int maxlevel, int level);
327  static void error(double AVG, double tol);
328  static void recurError(adaptiveHexahedron *h, double AVG, double tol);
329 };
330 
331 // modif koen.hillewaert@cenaero.be, 31/07/2014
332 
334 public:
335  bool visible;
338  static std::list<adaptivePyramid *> all;
339  static std::set<adaptiveVertex> allVertices;
340  static int numNodes, numEdges;
341 
342 public:
345  : visible(false)
346  {
347  p[0] = p1;
348  p[1] = p2;
349  p[2] = p3;
350  p[3] = p4;
351  p[4] = p5;
352  for(int i = 0; i < 10; i++) e[i] = nullptr;
353  }
354  inline double V() const
355  {
356  return (p[0]->val + p[1]->val + p[2]->val + p[3]->val + p[4]->val) / 5.;
357  }
358  // barycentric coordinates ?
359  inline static void GSF(double u, double v, double w, fullVector<double> &sf)
360  {
361  double ww = 0.25 / std::max(1e-14, 1. - w);
362  sf(0) = (1 - u - w) * (1 - v - w) * ww;
363  sf(1) = (1 + u - w) * (1 - v - w) * ww;
364  sf(2) = (1 + u - w) * (1 + v - w) * ww;
365  sf(3) = (1 - u - w) * (1 + v - w) * ww;
366  sf(4) = w;
367  }
368  static void create(int maxlevel);
369  static void recurCreate(adaptivePyramid *h, int maxlevel, int level);
370  static void error(double AVG, double tol);
371  static void recurError(adaptivePyramid *h, double AVG, double tol);
372 };
373 
374 class PCoords {
375 public:
376  double c[3];
377  PCoords(double x, double y, double z)
378  {
379  c[0] = x;
380  c[1] = y;
381  c[2] = z;
382  }
383 };
384 
385 class PValues {
386 public:
387  short int sizev; // acceptable values: 1 (scalar), 3 (vector), 9 (tensor)
388  double *v;
389  PValues(const PValues &obj)
390  {
391  sizev = obj.sizev;
392  v = new double[sizev];
393  for(int i = 0; i < sizev; i++) { v[i] = obj.v[i]; }
394  }
395  PValues(int size)
396  {
397  sizev = size;
398  v = new double[sizev];
399  for(int i = 0; i < sizev; i++) { v[i] = 0.0; }
400  }
401  PValues(double vx)
402  {
403  sizev = 1;
404  v = new double[sizev];
405  v[0] = vx;
406  }
407  PValues(double vx, double vy, double vz)
408  {
409  sizev = 3;
410  v = new double[sizev];
411  v[0] = vx;
412  v[1] = vy;
413  v[2] = vz;
414  }
415  PValues(double vxx, double vxy, double vxz, double vyx, double vyy,
416  double vyz, double vzx, double vzy, double vzz)
417  {
418  sizev = 9;
419  v = new double[sizev];
420  v[0] = vxx;
421  v[1] = vxy;
422  v[2] = vxz;
423  v[3] = vyx;
424  v[4] = vyy;
425  v[5] = vyz;
426  v[6] = vzx;
427  v[7] = vzy;
428  v[8] = vzz;
429  }
430  ~PValues() { delete[] v; }
431  void operator=(const PValues &obj)
432  {
433  // Assume PValues object has already been generated
434  // and v allocated when the operator = is called
435  if(sizev != obj.sizev)
436  Msg::Error("In PValues overlodaing operator: size mistmatch %d %d",
437  sizev);
438  for(int i = 0; i < sizev; i++) { v[i] = obj.v[i]; }
439  }
440 };
441 
443 public:
444  static std::vector<vectInt>
445  vtkGlobalConnectivity; // conectivity (vector of vector)
446  static std::vector<int> vtkGlobalCellType; // topology
447  static std::vector<PCoords> vtkGlobalCoords; // coordinates
448  static std::vector<PValues>
449  vtkGlobalValues; // nodal values (either scalar or vector)
452  {
453  for(auto it = vtkGlobalConnectivity.begin();
454  it != vtkGlobalConnectivity.end(); ++it) {
455  it->clear();
456  }
457  vtkGlobalConnectivity.clear();
458  std::vector<vectInt>().swap(vtkGlobalConnectivity);
459  }
460  static void clearGlobalCellType()
461  {
462  vtkGlobalCellType.clear();
463  std::vector<int>().swap(vtkGlobalCellType);
464  }
465  static void clearGlobalCoords()
466  {
467  vtkGlobalCoords.clear();
468  std::vector<PCoords>().swap(vtkGlobalCoords);
469  }
470  static void clearGlobalValues()
471  {
472  vtkGlobalValues.clear();
473  std::vector<PValues>().swap(vtkGlobalValues);
474  }
475  static void clearGlobalData()
476  {
481  }
483 };
484 
485 class VTKData {
486 public:
487  // Data container to write output files readable for ParaView
488  // vtk legacy and vtu for now
489  std::string vtkFieldName;
490  std::string vtkFileName;
491  std::string vtkFormat;
492  std::string vtkDirName;
493 
494  int vtkStep;
495  int vtkLevel;
497  double vtkTol;
498  int vtkNpart;
499 
503 
504  // File variables
505  FILE *vtkFile;
512 
520  int vtkCountCellOffset; // used only for ascii output
521  int vtkCountCellType; // used only for ascii output
522 
523  std::vector<vectInt> vtkLocalConnectivity; // conectivity (vector of vector)
524  std::vector<int> vtkLocalCellType; // topology
525  std::vector<PCoords> vtkLocalCoords; // coordinates
526  std::vector<PValues> vtkLocalValues; // nodal values (either scalar or vector)
527 
528 public:
529  VTKData(std::string fieldName = "unknown", int numComp = -1, int step = -1,
530  int level = -1, double tol = 0.0, std::string filename = "unknown",
531  int useDefaultName = 1, int npart = -1, bool isBinary = true)
532  {
533  vtkIsBinary = isBinary; // choice: true, false
534  vtkFormat =
535  std::string("vtu"); // choice: vtk (VTK legacy), vtu (XML appended)
536 
537  vtkFieldName = fieldName;
538  vtkFileName = filename;
539  vtkUseDefaultName = useDefaultName;
540  vtkNumComp = numComp;
541  vtkStep = step;
542  vtkLevel = level;
543  vtkTol = tol;
544  vtkNpart = npart;
545 
546  vtkCountFile = 0;
547  vtkTotNumElmLev0 = 0;
548  vtkCountTotElmLev0 = 0;
549  vtkCountTotNod = 0;
550  vtkCountTotElm = 0;
551  vtkCountCoord = 0;
553  vtkCountTotVal = 0;
554  vtkCountCellOffset = 0; // used only for ascii output
555  vtkCountCellType = 0;
556  }
558  {
559  for(auto it = vtkLocalConnectivity.begin();
560  it != vtkLocalConnectivity.end(); ++it) {
561  it->clear();
562  }
563  vtkLocalConnectivity.clear();
564  vtkLocalCellType.clear();
565  vtkLocalCoords.clear();
566  vtkLocalValues.clear();
567  }
569  void incrementTotNod(int increment) { vtkCountTotNod += increment; }
570  void incrementTotElm(int increment) { vtkCountTotElm += increment; }
571  void incrementTotElmLev0(int increment) { vtkCountTotElmLev0 += increment; }
572  bool isLittleEndian();
573  void SwapArrayByteOrder(void *array, int nbytes,
574  int nItems); // used only for VTK
575  int getPVCellType(int numEdges);
576  // void writeParaViewData();
577  void writeVTKElmData();
578  void initVTKFile();
579  void finalizeVTKFile();
581  {
582  int tmpmod = vtkTotNumElmLev0 % vtkNpart;
583  minElmPerPart = (vtkTotNumElmLev0 - tmpmod) / vtkNpart;
584  numPartMinElm = vtkNpart - tmpmod;
585 
586  if(tmpmod == 0)
588  else
590  numPartMaxElm = tmpmod;
591  assert(vtkTotNumElmLev0 ==
593  }
594 };
595 
596 template <class T> class adaptiveElements {
597 private:
600 
601 public:
604  // create the _interpolVal and _interpolGeom matrices at the given
605  // refinement level
606  void init(int level);
607  // process the element data in coords/values and return the refined
608  // elements in coords/values
609  bool adapt(double tol, int numComp, std::vector<PCoords> &coords,
610  std::vector<PValues> &values, double &minVal, double &maxVal,
611  GMSH_PostPlugin *plug = nullptr, bool onlyComputeMinMax = false);
612  // adapt all the T-type elements in the input view and add the
613  // refined elements in the output view (we will remove this when we
614  // switch to true on-the-fly local refinement in drawPost())
615  void addInView(double tol, int step, PViewData *in, PViewDataList *out,
616  GMSH_PostPlugin *plug = nullptr);
617 
618  // Routines for
619  // - export of adapted views to pvtu file format for parallel visualization
620  // with paraview,
621  // - and/or generation of VTK data structure for ParaView plugin.
622 
623  // Clone of adapt for VTK output files
624  void adaptForVTK(double tol, int numComp, std::vector<PCoords> &coords,
625  std::vector<PValues> &values, double &minVal,
626  double &maxVal);
627 
628  // Clone of addInView for VTK output files
629  void addInViewForVTK(int step, PViewData *in, VTKData &myVTKData,
630  bool writeVtk = true, bool buildStaticData = false);
631 
632  int countElmLev0(int step, PViewData *in);
633 
634  // Build a mapping between all the nodes of the refined element
635  // and the node of the canonical refined element in order to
636  // generate a connectivity related to the canonical element
637  void buildMapping(nodMap<T> &myNodMap, double tol, int &numNodInsert);
638 };
639 
641 private:
642  int _step, _level;
643  double _tol;
654 
655  // When set to true, this builds a global VTK data structure (connectivity,
656  // coords, etc) for the adaptive views. This can be very memory consuming for
657  // high adaptation levels. Use with caution. Useful when GMSH is used as an
658  // external library to provide for instance a GMSH reader in a ParaView
659  // plugin. By default, set to false in the constructor.
661 
662  // This variable helps limit memory consumption (no global data structure)
663  // when GMSH is requested to write the data structure of adapted view under
664  // pvtu format In this case, one adapted element is considered at a time so
665  // that it can generate billions of adapted elements on a single core, as long
666  // as disk space allows it. This variable is set to true by default in the
667  // constructor.
668  bool writeVTK;
669 
670 public:
671  static double timerInit, timerAdapt;
672  adaptiveData(PViewData *data, bool outDataInit = true);
673  ~adaptiveData();
675  void changeResolution(int step, int level, double tol,
676  GMSH_PostPlugin *plug = nullptr);
677  int countTotElmLev0(int step, PViewData *in);
678  void changeResolutionForVTK(int step, int level, double tol, int npart = 1,
679  bool isBinary = true,
680  const std::string &guifileName = "unknown",
681  int useDefaultName = 1);
682  void upBuildStaticData(bool newValue) { buildStaticData = newValue; }
683  void upWriteVTK(bool newValue) { writeVTK = newValue; }
684 };
685 
686 #endif
adaptiveData::_triangles
adaptiveElements< adaptiveTriangle > * _triangles
Definition: adaptiveData.h:648
adaptiveQuadrangle::GSF
static void GSF(double u, double v, double w, fullVector< double > &sf)
Definition: adaptiveData.h:187
adaptiveLine::all
static std::list< adaptiveLine * > all
Definition: adaptiveData.h:109
adaptiveVertex::valzx
double valzx
Definition: adaptiveData.h:52
adaptiveElements::_coeffsVal
fullMatrix< double > * _coeffsVal
Definition: adaptiveData.h:598
adaptiveData::~adaptiveData
~adaptiveData()
Definition: adaptiveData.cpp:1548
adaptiveData::_tol
double _tol
Definition: adaptiveData.h:643
adaptivePyramid::create
static void create(int maxlevel)
Definition: adaptiveData.cpp:932
adaptiveQuadrangle::allVertices
static std::set< adaptiveVertex > allVertices
Definition: adaptiveData.h:169
adaptiveLine::adaptiveLine
adaptiveLine(adaptiveVertex *p1, adaptiveVertex *p2)
Definition: adaptiveData.h:114
PCoords::PCoords
PCoords(double x, double y, double z)
Definition: adaptiveData.h:377
VTKData::initVTKFile
void initVTKFile()
Definition: adaptiveData.cpp:1800
PValues::PValues
PValues(double vx)
Definition: adaptiveData.h:401
adaptiveData::countTotElmLev0
int countTotElmLev0(int step, PViewData *in)
Definition: adaptiveData.cpp:2635
adaptivePyramid::numEdges
static int numEdges
Definition: adaptiveData.h:340
adaptiveLine::GSF
static void GSF(double u, double v, double w, fullVector< double > &sf)
Definition: adaptiveData.h:121
adaptiveHexahedron::allVertices
static std::set< adaptiveVertex > allVertices
Definition: adaptiveData.h:288
adaptivePyramid::p
adaptiveVertex * p[5]
Definition: adaptiveData.h:336
adaptivePyramid
Definition: adaptiveData.h:333
VTKData::vtkCountTotElm
int vtkCountTotElm
Definition: adaptiveData.h:516
adaptiveTriangle::V
double V() const
Definition: adaptiveData.h:150
adaptiveHexahedron::recurCreate
static void recurCreate(adaptiveHexahedron *h, int maxlevel, int level)
Definition: adaptiveData.cpp:611
adaptiveElements::countElmLev0
int countElmLev0(int step, PViewData *in)
Definition: adaptiveData.cpp:2620
VTKData::getPVCellType
int getPVCellType(int numEdges)
Definition: adaptiveData.cpp:2198
VTKData::setFileDistribution
void setFileDistribution()
Definition: adaptiveData.h:580
adaptivePyramid::allVertices
static std::set< adaptiveVertex > allVertices
Definition: adaptiveData.h:339
fullVector< double >
adaptiveVertex::operator<
bool operator<(const adaptiveVertex &other) const
Definition: adaptiveData.h:57
adaptivePoint::adaptivePoint
adaptivePoint(adaptiveVertex *p1)
Definition: adaptiveData.h:88
PCoords
Definition: adaptiveData.h:374
adaptivePoint::V
double V() const
Definition: adaptiveData.h:93
PValues::PValues
PValues(double vxx, double vxy, double vxz, double vyx, double vyy, double vyz, double vzx, double vzy, double vzz)
Definition: adaptiveData.h:415
adaptiveTetrahedron::numNodes
static int numNodes
Definition: adaptiveData.h:251
adaptivePrism::create
static void create(int maxlevel)
Definition: adaptiveData.cpp:793
adaptivePyramid::all
static std::list< adaptivePyramid * > all
Definition: adaptiveData.h:338
globalVTKData
Definition: adaptiveData.h:442
adaptiveElements::adaptiveElements
adaptiveElements(std::vector< fullMatrix< double > * > &interpolationMatrices)
Definition: adaptiveData.cpp:1082
adaptiveHexahedron::adaptiveHexahedron
adaptiveHexahedron(adaptiveVertex *p1, adaptiveVertex *p2, adaptiveVertex *p3, adaptiveVertex *p4, adaptiveVertex *p5, adaptiveVertex *p6, adaptiveVertex *p7, adaptiveVertex *p8)
Definition: adaptiveData.h:292
adaptivePrism::numEdges
static int numEdges
Definition: adaptiveData.h:207
adaptiveHexahedron::e
adaptiveHexahedron * e[8]
Definition: adaptiveData.h:286
PViewDataList
Definition: PViewDataList.h:17
adaptiveTriangle::all
static std::list< adaptiveTriangle * > all
Definition: adaptiveData.h:137
Msg::Error
static void Error(const char *fmt,...)
Definition: GmshMessage.cpp:482
adaptiveElements::_eexpsGeom
fullMatrix< double > * _eexpsGeom
Definition: adaptiveData.h:599
adaptivePoint::allVertices
static std::set< adaptiveVertex > allVertices
Definition: adaptiveData.h:84
VTKData::vtkIsBinary
bool vtkIsBinary
Definition: adaptiveData.h:500
PCoords::c
double c[3]
Definition: adaptiveData.h:376
adaptivePoint::recurCreate
static void recurCreate(adaptivePoint *e, int maxlevel, int level)
Definition: adaptiveData.cpp:133
VTKData::finalizeVTKFile
void finalizeVTKFile()
Definition: adaptiveData.cpp:1874
adaptiveVertex::valzz
double valzz
Definition: adaptiveData.h:52
adaptiveVertex::val
double val
Definition: adaptiveData.h:50
adaptiveTriangle::numNodes
static int numNodes
Definition: adaptiveData.h:139
adaptiveElements::buildMapping
void buildMapping(nodMap< T > &myNodMap, double tol, int &numNodInsert)
Definition: adaptiveData.cpp:2381
adaptivePyramid::numNodes
static int numNodes
Definition: adaptiveData.h:340
adaptiveData::_step
int _step
Definition: adaptiveData.h:642
globalVTKData::vtkGlobalValues
static std::vector< PValues > vtkGlobalValues
Definition: adaptiveData.h:449
adaptiveTetrahedron
Definition: adaptiveData.h:244
ToString
std::string ToString(const T &val)
Definition: adaptiveData.h:39
globalVTKData::vtkGlobalCellType
static std::vector< int > vtkGlobalCellType
Definition: adaptiveData.h:446
adaptivePrism::error
static void error(double AVG, double tol)
Definition: adaptiveData.cpp:874
adaptivePoint::all
static std::list< adaptivePoint * > all
Definition: adaptiveData.h:83
adaptiveQuadrangle
Definition: adaptiveData.h:163
adaptiveHexahedron::p
adaptiveVertex * p[8]
Definition: adaptiveData.h:285
adaptiveHexahedron::create
static void create(int maxlevel)
Definition: adaptiveData.cpp:595
adaptiveTriangle::GSF
static void GSF(double u, double v, double w, fullVector< double > &sf)
Definition: adaptiveData.h:151
adaptiveQuadrangle::recurError
static void recurError(adaptiveQuadrangle *q, double AVG, double tol)
Definition: adaptiveData.cpp:395
adaptiveData::changeResolution
void changeResolution(int step, int level, double tol, GMSH_PostPlugin *plug=nullptr)
Definition: adaptiveData.cpp:1564
adaptiveHexahedron::numEdges
static int numEdges
Definition: adaptiveData.h:289
adaptivePoint::error
static void error(double AVG, double tol)
Definition: adaptiveData.cpp:138
adaptivePyramid::visible
bool visible
Definition: adaptiveData.h:335
PValues::PValues
PValues(int size)
Definition: adaptiveData.h:395
adaptiveLine::create
static void create(int maxlevel)
Definition: adaptiveData.cpp:149
adaptivePoint::create
static void create(int maxlevel)
Definition: adaptiveData.cpp:125
adaptiveVertex::y
float y
Definition: adaptiveData.h:48
adaptiveTetrahedron::create
static void create(int maxlevel)
Definition: adaptiveData.cpp:459
adaptiveVertex::valyz
double valyz
Definition: adaptiveData.h:51
adaptiveTriangle::allVertices
static std::set< adaptiveVertex > allVertices
Definition: adaptiveData.h:138
PValues::v
double * v
Definition: adaptiveData.h:388
adaptiveHexahedron
Definition: adaptiveData.h:282
VTKData::vtkFormat
std::string vtkFormat
Definition: adaptiveData.h:491
adaptiveData::changeResolutionForVTK
void changeResolutionForVTK(int step, int level, double tol, int npart=1, bool isBinary=true, const std::string &guifileName="unknown", int useDefaultName=1)
Definition: adaptiveData.cpp:2649
adaptiveQuadrangle::p
adaptiveVertex * p[4]
Definition: adaptiveData.h:166
adaptiveTriangle::adaptiveTriangle
adaptiveTriangle(adaptiveVertex *p1, adaptiveVertex *p2, adaptiveVertex *p3)
Definition: adaptiveData.h:142
adaptiveTriangle::create
static void create(int maxlevel)
Definition: adaptiveData.cpp:223
adaptivePrism::visible
bool visible
Definition: adaptiveData.h:202
adaptiveHexahedron::recurError
static void recurError(adaptiveHexahedron *h, double AVG, double tol)
Definition: adaptiveData.cpp:725
VTKData::vtkFileCellType
FILE * vtkFileCellType
Definition: adaptiveData.h:509
nodMap::getSize
int getSize()
Definition: adaptiveData.h:75
adaptiveLine::V
double V() const
Definition: adaptiveData.h:120
VTKData::vtkUseDefaultName
int vtkUseDefaultName
Definition: adaptiveData.h:501
globalVTKData::clearGlobalData
static void clearGlobalData()
Definition: adaptiveData.h:475
adaptiveElements::adapt
bool adapt(double tol, int numComp, std::vector< PCoords > &coords, std::vector< PValues > &values, double &minVal, double &maxVal, GMSH_PostPlugin *plug=nullptr, bool onlyComputeMinMax=false)
Definition: adaptiveData.cpp:1206
fullMatrix< double >
PValues::PValues
PValues(const PValues &obj)
Definition: adaptiveData.h:389
adaptiveData::timerInit
static double timerInit
Definition: adaptiveData.h:671
adaptiveTetrahedron::visible
bool visible
Definition: adaptiveData.h:246
adaptivePrism::GSF
static void GSF(double u, double v, double w, fullVector< double > &sf)
Definition: adaptiveData.h:229
adaptiveLine::allVertices
static std::set< adaptiveVertex > allVertices
Definition: adaptiveData.h:110
adaptiveElements
Definition: adaptiveData.h:596
adaptiveHexahedron::visible
bool visible
Definition: adaptiveData.h:284
VTKData::vtkCountTotNodConnect
int vtkCountTotNodConnect
Definition: adaptiveData.h:518
VTKData::vtkCountCellOffset
int vtkCountCellOffset
Definition: adaptiveData.h:520
VTKData::vtkFieldName
std::string vtkFieldName
Definition: adaptiveData.h:489
adaptiveTriangle::error
static void error(double AVG, double tol)
Definition: adaptiveData.cpp:267
adaptiveVertex::valz
double valz
maximal three values
Definition: adaptiveData.h:50
adaptiveQuadrangle::error
static void error(double AVG, double tol)
Definition: adaptiveData.cpp:389
adaptiveQuadrangle::V
double V() const
Definition: adaptiveData.h:183
adaptiveLine::p
adaptiveVertex * p[2]
Definition: adaptiveData.h:107
PValues::sizev
short int sizev
Definition: adaptiveData.h:387
VTKData::clearLocalData
void clearLocalData()
Definition: adaptiveData.h:557
adaptivePrism::adaptivePrism
adaptivePrism(adaptiveVertex *p1, adaptiveVertex *p2, adaptiveVertex *p3, adaptiveVertex *p4, adaptiveVertex *p5, adaptiveVertex *p6)
Definition: adaptiveData.h:210
adaptiveTriangle::recurCreate
static void recurCreate(adaptiveTriangle *t, int maxlevel, int level)
Definition: adaptiveData.cpp:233
VTKData::vtkCountCellType
int vtkCountCellType
Definition: adaptiveData.h:521
adaptivePyramid::GSF
static void GSF(double u, double v, double w, fullVector< double > &sf)
Definition: adaptiveData.h:359
adaptiveData
Definition: adaptiveData.h:640
adaptiveElements::~adaptiveElements
~adaptiveElements()
Definition: adaptiveData.cpp:1096
VTKData::isLittleEndian
bool isLittleEndian()
Definition: adaptiveData.cpp:1602
VTKData::vtkCountTotNod
int vtkCountTotNod
Definition: adaptiveData.h:515
adaptiveTetrahedron::V
double V() const
Definition: adaptiveData.h:265
adaptiveTetrahedron::numEdges
static int numEdges
Definition: adaptiveData.h:251
adaptiveData::buildStaticData
bool buildStaticData
Definition: adaptiveData.h:660
adaptiveData::_lines
adaptiveElements< adaptiveLine > * _lines
Definition: adaptiveData.h:647
VTKData::vtkNpart
int vtkNpart
Definition: adaptiveData.h:498
adaptiveData::_outData
PViewDataList * _outData
Definition: adaptiveData.h:645
adaptiveQuadrangle::recurCreate
static void recurCreate(adaptiveQuadrangle *q, int maxlevel, int level)
Definition: adaptiveData.cpp:346
VTKData::vtkFileCoord
FILE * vtkFileCoord
Definition: adaptiveData.h:506
VTKData::vtkFileCellOffset
FILE * vtkFileCellOffset
Definition: adaptiveData.h:508
VTKData::vtkLocalConnectivity
std::vector< vectInt > vtkLocalConnectivity
Definition: adaptiveData.h:523
adaptiveData::_tetrahedra
adaptiveElements< adaptiveTetrahedron > * _tetrahedra
Definition: adaptiveData.h:650
adaptiveTriangle::recurError
static void recurError(adaptiveTriangle *t, double AVG, double tol)
Definition: adaptiveData.cpp:273
adaptiveQuadrangle::all
static std::list< adaptiveQuadrangle * > all
Definition: adaptiveData.h:168
adaptiveElements::_eexpsVal
fullMatrix< double > * _eexpsVal
Definition: adaptiveData.h:598
globalVTKData::~globalVTKData
~globalVTKData()
Definition: adaptiveData.h:482
adaptiveTetrahedron::error
static void error(double AVG, double tol)
Definition: adaptiveData.cpp:524
adaptiveVertex::z
float z
parametric coordinates
Definition: adaptiveData.h:48
adaptiveTriangle
Definition: adaptiveData.h:132
VTKData
Definition: adaptiveData.h:485
adaptiveTetrahedron::allVertices
static std::set< adaptiveVertex > allVertices
Definition: adaptiveData.h:250
VTKData::vtkTol
double vtkTol
Definition: adaptiveData.h:497
VTKData::numPartMaxElm
int numPartMaxElm
Definition: adaptiveData.h:502
adaptivePoint::e
adaptivePoint * e[1]
Definition: adaptiveData.h:82
adaptiveData::timerAdapt
static double timerAdapt
Definition: adaptiveData.h:671
adaptiveVertex::valzy
double valzy
Definition: adaptiveData.h:52
adaptiveElements::_interpolVal
fullMatrix< double > * _interpolVal
Definition: adaptiveData.h:598
adaptivePyramid::recurError
static void recurError(adaptivePyramid *h, double AVG, double tol)
Definition: adaptiveData.cpp:1038
PValues::operator=
void operator=(const PValues &obj)
Definition: adaptiveData.h:431
adaptiveHexahedron::numNodes
static int numNodes
Definition: adaptiveData.h:289
adaptivePyramid::V
double V() const
Definition: adaptiveData.h:354
adaptiveData::getData
PViewData * getData()
Definition: adaptiveData.h:674
adaptivePrism::p
adaptiveVertex * p[6]
Definition: adaptiveData.h:203
adaptiveQuadrangle::visible
bool visible
Definition: adaptiveData.h:165
VTKData::SwapArrayByteOrder
void SwapArrayByteOrder(void *array, int nbytes, int nItems)
Definition: adaptiveData.cpp:1611
globalVTKData::clearGlobalConnectivity
static void clearGlobalConnectivity()
Definition: adaptiveData.h:451
adaptiveLine::visible
bool visible
Definition: adaptiveData.h:106
adaptivePoint::numNodes
static int numNodes
Definition: adaptiveData.h:85
adaptiveTetrahedron::all
static std::list< adaptiveTetrahedron * > all
Definition: adaptiveData.h:249
adaptiveVertex::Z
double Z
cartesian coordinates
Definition: adaptiveData.h:49
adaptiveLine::recurError
static void recurError(adaptiveLine *e, double AVG, double tol)
Definition: adaptiveData.cpp:183
VTKData::vtkLevel
int vtkLevel
Definition: adaptiveData.h:495
VTKData::vtkDirName
std::string vtkDirName
Definition: adaptiveData.h:492
adaptivePyramid::e
adaptivePyramid * e[10]
Definition: adaptiveData.h:337
adaptiveLine::e
adaptiveLine * e[2]
Definition: adaptiveData.h:108
adaptiveTriangle::p
adaptiveVertex * p[3]
Definition: adaptiveData.h:135
VTKData::maxElmPerPart
int maxElmPerPart
Definition: adaptiveData.h:502
adaptivePoint
Definition: adaptiveData.h:78
adaptiveData::_level
int _level
Definition: adaptiveData.h:642
PViewData
Definition: PViewData.h:29
VTKData::vtkLocalCoords
std::vector< PCoords > vtkLocalCoords
Definition: adaptiveData.h:525
adaptiveLine::error
static void error(double AVG, double tol)
Definition: adaptiveData.cpp:177
adaptivePrism::e
adaptivePrism * e[8]
Definition: adaptiveData.h:204
adaptiveQuadrangle::numNodes
static int numNodes
Definition: adaptiveData.h:170
adaptiveVertex::X
double X
Definition: adaptiveData.h:49
adaptivePrism::recurCreate
static void recurCreate(adaptivePrism *p, int maxlevel, int level)
Definition: adaptiveData.cpp:806
adaptivePrism::recurError
static void recurError(adaptivePrism *p, double AVG, double tol)
Definition: adaptiveData.cpp:880
nodMap::mapping
std::vector< int > mapping
Definition: adaptiveData.h:70
adaptiveHexahedron::V
double V() const
Definition: adaptiveData.h:308
adaptiveData::_points
adaptiveElements< adaptivePoint > * _points
Definition: adaptiveData.h:646
adaptiveData::_pyramids
adaptiveElements< adaptivePyramid > * _pyramids
Definition: adaptiveData.h:653
adaptiveVertex::x
float x
Definition: adaptiveData.h:48
interpolationMatrices
std::map< int, std::vector< fullMatrix< double > * > > interpolationMatrices
Definition: PViewData.h:24
adaptiveLine::recurCreate
static void recurCreate(adaptiveLine *e, int maxlevel, int level)
Definition: adaptiveData.cpp:158
VTKData::vtkFileNodVal
FILE * vtkFileNodVal
Definition: adaptiveData.h:510
adaptiveVertex::add
static adaptiveVertex * add(double x, double y, double z, std::set< adaptiveVertex > &allVertice)
Definition: adaptiveData.cpp:110
adaptiveQuadrangle::adaptiveQuadrangle
adaptiveQuadrangle(adaptiveVertex *p1, adaptiveVertex *p2, adaptiveVertex *p3, adaptiveVertex *p4)
Definition: adaptiveData.h:173
VTKData::incrementTotElmLev0
void incrementTotElmLev0(int increment)
Definition: adaptiveData.h:571
adaptivePrism::allVertices
static std::set< adaptiveVertex > allVertices
Definition: adaptiveData.h:206
nodMap::~nodMap
~nodMap()
Definition: adaptiveData.h:74
adaptiveVertex::valyy
double valyy
Definition: adaptiveData.h:51
adaptiveData::_hexahedra
adaptiveElements< adaptiveHexahedron > * _hexahedra
Definition: adaptiveData.h:651
adaptiveData::upBuildStaticData
void upBuildStaticData(bool newValue)
Definition: adaptiveData.h:682
adaptiveTetrahedron::p
adaptiveVertex * p[4]
Definition: adaptiveData.h:247
adaptiveElements::adaptForVTK
void adaptForVTK(double tol, int numComp, std::vector< PCoords > &coords, std::vector< PValues > &values, double &minVal, double &maxVal)
Definition: adaptiveData.cpp:2240
adaptiveTetrahedron::recurCreate
static void recurCreate(adaptiveTetrahedron *t, int maxlevel, int level)
Definition: adaptiveData.cpp:470
z
const double z
Definition: GaussQuadratureQuad.cpp:56
adaptiveQuadrangle::create
static void create(int maxlevel)
Definition: adaptiveData.cpp:335
adaptiveTriangle::visible
bool visible
Definition: adaptiveData.h:134
GMSH_PostPlugin
Definition: Plugin.h:83
adaptiveTriangle::numEdges
static int numEdges
Definition: adaptiveData.h:139
VTKData::writeVTKElmData
void writeVTKElmData()
Definition: adaptiveData.cpp:1624
adaptiveTetrahedron::adaptiveTetrahedron
adaptiveTetrahedron(adaptiveVertex *p1, adaptiveVertex *p2, adaptiveVertex *p3, adaptiveVertex *p4)
Definition: adaptiveData.h:254
adaptivePrism::V
double V() const
Definition: adaptiveData.h:223
adaptiveData::_prisms
adaptiveElements< adaptivePrism > * _prisms
Definition: adaptiveData.h:652
VTKData::vtkStep
int vtkStep
Definition: adaptiveData.h:494
adaptiveTetrahedron::e
adaptiveTetrahedron * e[8]
Definition: adaptiveData.h:248
VTKData::vtkNumComp
int vtkNumComp
Definition: adaptiveData.h:496
VTKData::minElmPerPart
int minElmPerPart
Definition: adaptiveData.h:502
picojson::array
value::array array
Definition: picojson.h:194
nodMap::cleanMapping
void cleanMapping()
Definition: adaptiveData.h:73
VTKData::vtkCountFile
int vtkCountFile
Definition: adaptiveData.h:511
PValues::~PValues
~PValues()
Definition: adaptiveData.h:430
globalVTKData::globalVTKData
globalVTKData()
VTKData::~VTKData
~VTKData()
Definition: adaptiveData.h:568
adaptiveElements::addInViewForVTK
void addInViewForVTK(int step, PViewData *in, VTKData &myVTKData, bool writeVtk=true, bool buildStaticData=false)
Definition: adaptiveData.cpp:2452
adaptiveData::adaptiveData
adaptiveData(PViewData *data, bool outDataInit=true)
Definition: adaptiveData.cpp:1496
adaptivePoint::p
adaptiveVertex * p[1]
Definition: adaptiveData.h:81
VTKData::vtkTotNumElmLev0
int vtkTotNumElmLev0
Definition: adaptiveData.h:513
adaptiveData::_quadrangles
adaptiveElements< adaptiveQuadrangle > * _quadrangles
Definition: adaptiveData.h:649
VTKData::vtkCountTotElmLev0
int vtkCountTotElmLev0
Definition: adaptiveData.h:514
adaptivePyramid::adaptivePyramid
adaptivePyramid(adaptiveVertex *p1, adaptiveVertex *p2, adaptiveVertex *p3, adaptiveVertex *p4, adaptiveVertex *p5)
Definition: adaptiveData.h:343
VTKData::incrementTotElm
void incrementTotElm(int increment)
Definition: adaptiveData.h:570
nodMap
Definition: adaptiveData.h:68
adaptiveData::_inData
PViewData * _inData
Definition: adaptiveData.h:644
VTKData::vtkFileName
std::string vtkFileName
Definition: adaptiveData.h:490
adaptiveLine
Definition: adaptiveData.h:104
adaptivePrism::all
static std::list< adaptivePrism * > all
Definition: adaptiveData.h:205
adaptivePyramid::recurCreate
static void recurCreate(adaptivePyramid *h, int maxlevel, int level)
Definition: adaptiveData.cpp:944
adaptiveHexahedron::error
static void error(double AVG, double tol)
Definition: adaptiveData.cpp:719
adaptivePoint::recurError
static void recurError(adaptivePoint *e, double AVG, double tol)
Definition: adaptiveData.cpp:144
VTKData::vtkFileConnect
FILE * vtkFileConnect
Definition: adaptiveData.h:507
VTKData::vtkCountTotVal
int vtkCountTotVal
Definition: adaptiveData.h:519
VTKData::VTKData
VTKData(std::string fieldName="unknown", int numComp=-1, int step=-1, int level=-1, double tol=0.0, std::string filename="unknown", int useDefaultName=1, int npart=-1, bool isBinary=true)
Definition: adaptiveData.h:529
VTKData::vtkLocalCellType
std::vector< int > vtkLocalCellType
Definition: adaptiveData.h:524
globalVTKData::vtkGlobalCoords
static std::vector< PCoords > vtkGlobalCoords
Definition: adaptiveData.h:447
adaptivePrism::numNodes
static int numNodes
Definition: adaptiveData.h:207
adaptiveHexahedron::GSF
static void GSF(double u, double v, double w, fullVector< double > &sf)
Definition: adaptiveData.h:314
adaptiveVertex
Definition: adaptiveData.h:46
adaptivePyramid::error
static void error(double AVG, double tol)
Definition: adaptiveData.cpp:1032
VTKData::numPartMinElm
int numPartMinElm
Definition: adaptiveData.h:502
PValues::PValues
PValues(double vx, double vy, double vz)
Definition: adaptiveData.h:407
adaptivePoint::GSF
static void GSF(double u, double v, double w, fullVector< double > &sf)
Definition: adaptiveData.h:94
adaptiveTetrahedron::GSF
static void GSF(double u, double v, double w, fullVector< double > &sf)
Definition: adaptiveData.h:269
globalVTKData::clearGlobalValues
static void clearGlobalValues()
Definition: adaptiveData.h:470
adaptiveData::writeVTK
bool writeVTK
Definition: adaptiveData.h:668
adaptiveElements::init
void init(int level)
Definition: adaptiveData.cpp:1103
adaptiveVertex::valy
double valy
Definition: adaptiveData.h:50
adaptiveData::upWriteVTK
void upWriteVTK(bool newValue)
Definition: adaptiveData.h:683
adaptiveElements::_interpolGeom
fullMatrix< double > * _interpolGeom
Definition: adaptiveData.h:599
adaptiveTetrahedron::recurError
static void recurError(adaptiveTetrahedron *t, double AVG, double tol)
Definition: adaptiveData.cpp:530
adaptiveQuadrangle::numEdges
static int numEdges
Definition: adaptiveData.h:170
VTKData::vtkFile
FILE * vtkFile
Definition: adaptiveData.h:505
adaptivePoint::numEdges
static int numEdges
Definition: adaptiveData.h:85
adaptiveHexahedron::all
static std::list< adaptiveHexahedron * > all
Definition: adaptiveData.h:287
globalVTKData::vtkGlobalConnectivity
static std::vector< vectInt > vtkGlobalConnectivity
Definition: adaptiveData.h:445
PValues
Definition: adaptiveData.h:385
adaptiveLine::numEdges
static int numEdges
Definition: adaptiveData.h:111
adaptiveElements::addInView
void addInView(double tol, int step, PViewData *in, PViewDataList *out, GMSH_PostPlugin *plug=nullptr)
Definition: adaptiveData.cpp:1356
vectInt
std::vector< int > vectInt
Definition: adaptiveData.h:32
adaptiveQuadrangle::e
adaptiveQuadrangle * e[4]
Definition: adaptiveData.h:167
adaptiveTriangle::e
adaptiveTriangle * e[4]
Definition: adaptiveData.h:136
adaptivePoint::visible
bool visible
Definition: adaptiveData.h:80
fullMatrix.h
VTKData::vtkCountCoord
int vtkCountCoord
Definition: adaptiveData.h:517
globalVTKData::clearGlobalCoords
static void clearGlobalCoords()
Definition: adaptiveData.h:465
VTKData::vtkLocalValues
std::vector< PValues > vtkLocalValues
Definition: adaptiveData.h:526
adaptivePrism
Definition: adaptiveData.h:200
VTKData::incrementTotNod
void incrementTotNod(int increment)
Definition: adaptiveData.h:569
globalVTKData::clearGlobalCellType
static void clearGlobalCellType()
Definition: adaptiveData.h:460
adaptiveVertex::valyx
double valyx
Definition: adaptiveData.h:51
adaptiveLine::numNodes
static int numNodes
Definition: adaptiveData.h:111
adaptiveElements::_coeffsGeom
fullMatrix< double > * _coeffsGeom
Definition: adaptiveData.h:599
adaptiveVertex::Y
double Y
Definition: adaptiveData.h:49