ODT
Loading...
Searching...
No Matches
meshManager.h
Go to the documentation of this file.
1
6#pragma once
7
8#include "dv.h"
9#include <vector>
10
11class domain;
12
14
29using namespace std;
30
32
34
35 public:
36
38
39 vector<dv*> phi;
40
41 vector<double> dx;
42 vector<int> mark;
43
44 vector<double> xf;
45 vector<vector<double> > yf;
46 vector<double> xnf;
47 vector<double> X;
48
49 int ngrd;
50 int ngrdf;
51
52 int iLower;
53 int iUpper;
54 double posLower;
55 double posUpper;
56
57 vector<double> lastDA;
58
60
61 void adaptGrid(int iLower, int iUpper); // Public interface
62
63 inline bool operator()(const int &a, const int &b) const {
64 return dx[mark[a]] < dx[mark[b]];
65 } // Functor used for sorting
66
67 void adaptAfterSufficientDiffTime(const double &time,
68 double &tLastDA,
69 int &cLastDA,
70 double &dtCUmax);
71
72 void adaptEddyRegionOfMesh(const double &time,
73 double &tLastDA,
74 int &cLastDA);
75
76 void splitCell(const int isplt,
77 const int nsplt,
78 const vector<double> &cellFaces);
79
80 void merge2cells(const int imrg, const bool LconstVolume=false);
81
82 void enforceDomainSize();
83 void removeFaceNearZero();
85 void splitCellWithZero();
86
87 //--------------- domain operations
88
89 void setGridDxc(const domain *line, vector<double> &dxc, double C);
90 void setGridDx( const domain *line, vector<double> &dx);
91
92 void setGridFromDxc(const vector<double> &dxc2);
93
94
95
96 private:
97
98 void adaptGrid_details(const int iLower,
99 const int iUpper); // called by adaptGrid
100 void mergeSmallCells();
101 void mergeSmallCellsMP();
102 void impose2point5rule();
104
105 void fix2point5offender(const int mPos,
106 const int &iglobal);
107 void setDxArray();
108
109 int findPos(const vector<double> &x,
110 const double val,
111 const int &istart);
112
113 void interp1pt(const vector<double> &x,
114 const vector<double> &y,
115 const double &xval,
116 double &yval,
117 int &istart);
118
119 void interpVec(const vector<double> &x,
120 const vector<double> &y,
121 const vector<double> &xn,
122 vector<double> &yn);
123
124 double calcDistance(const vector<double> &x,
125 const vector<vector<double> > &y,
126 vector<double> &sDist);
127 void set_iLower_iUpper();
128
129 void updateDA(const double &time, double &tLastDA, int &cLastDA,
130 int iStart, int iEnd);
131
132
134
135 public:
136
137 void init(domain *p_domn, const vector<dv*> p_phi);
140
141};
142
144
145
void mergeSmallCells()
double calcDistance(const vector< double > &x, const vector< vector< double > > &y, vector< double > &sDist)
void set_iLower_iUpper()
void updateDA(const double &time, double &tLastDA, int &cLastDA, int iStart, int iEnd)
vector< double > dx
vector of cell sizes
Definition meshManager.h:41
void removeFaceNearZero()
vector< double > xnf
vector of new cell face positions
Definition meshManager.h:46
void interp1pt(const vector< double > &x, const vector< double > &y, const double &xval, double &yval, int &istart)
void makeCellWithZeroSymmetric()
void adaptEddyRegionOfMesh(const double &time, double &tLastDA, int &cLastDA)
vector< int > mark
dummy small cell index array for sorting
Definition meshManager.h:42
void setGridDx(const domain *line, vector< double > &dx)
void setGridFromDxc(const vector< double > &dxc2)
void init(domain *p_domn, const vector< dv * > p_phi)
int iUpper
region of grid to adapt (the cell w/ right eddy edge)
Definition meshManager.h:53
int iLower
region of grid to adapt (the cell w/ left eddy edge)
Definition meshManager.h:52
domain * domn
pointer to odt domain to adapt
Definition meshManager.h:37
void merge2cells(const int imrg, const bool LconstVolume=false)
void splitLargeCells()
vector< vector< double > > yf
vector of cell values
Definition meshManager.h:45
void mergeSmallCellsMP()
void splitCell(const int isplt, const int nsplt, const vector< double > &cellFaces)
int ngrdf
local number of grid faces
Definition meshManager.h:50
void impose2point5rule()
double posUpper
physical region of eddy (upper bound)
Definition meshManager.h:55
double posLower
physical region of eddy (lower bound)
Definition meshManager.h:54
int findPos(const vector< double > &x, const double val, const int &istart)
vector< double > X
vector of cell center positions
Definition meshManager.h:47
void setGridDxc(const domain *line, vector< double > &dxc, double C)
void splitCellWithZero()
‍** Create cell with r=0 at its center
int ngrd
local number of grid points
Definition meshManager.h:49
void adaptGrid(int iLower, int iUpper)
void adaptGrid_details(const int iLower, const int iUpper)
bool operator()(const int &a, const int &b) const
Definition meshManager.h:63
void setDxArray()
vector< double > lastDA
constant (unif) mesh to list time of last adapt
Definition meshManager.h:57
vector< double > xf
vector of cell face positions
Definition meshManager.h:44
vector< dv * > phi
vector of pointers to domainvariable objects
Definition meshManager.h:39
void adaptAfterSufficientDiffTime(const double &time, double &tLastDA, int &cLastDA, double &dtCUmax)
void interpVec(const vector< double > &x, const vector< double > &y, const vector< double > &xn, vector< double > &yn)
void fix2point5offender(const int mPos, const int &iglobal)
void enforceDomainSize()
Header file for class dv.