www.mooseframework.org
Public Member Functions | Protected Member Functions | Protected Attributes | Static Private Attributes | List of all members
AEFVSlopeLimitingOneD Class Reference

One-dimensional slope limiting to get the limited slope of cell average variable for the advection equation using a cell-centered finite volume method. More...

#include <AEFVSlopeLimitingOneD.h>

Inheritance diagram for AEFVSlopeLimitingOneD:
[legend]

Public Member Functions

 AEFVSlopeLimitingOneD (const InputParameters &parameters)
 
virtual std::vector< RealGradient > limitElementSlope () const override
 compute the limited slope of the cell More...
 
virtual void initialize ()
 
virtual void finalize ()
 
virtual void computeElement ()
 
virtual const std::vector< RealGradient > & getElementSlope (dof_id_type elementid) const
 accessor function call More...
 
virtual void execute ()
 
virtual void pre ()
 
virtual void preElement (const Elem *elem)
 
virtual void onElement (const Elem *elem)
 
virtual void onBoundary (const Elem *elem, unsigned int side, BoundaryID bnd_id)
 
virtual void onInternalSide (const Elem *elem, unsigned int side)
 
virtual void onInterface (const Elem *elem, unsigned int side, BoundaryID bnd_id)
 
virtual void post ()
 
virtual void subdomainChanged ()
 
virtual bool keepGoing ()
 
virtual void meshChanged ()
 
void join (const ElementLoopUserObject &)
 

Protected Member Functions

virtual void serialize (std::string &serialized_buffer)
 
virtual void deserialize (std::vector< std::string > &serialized_buffers)
 
virtual void caughtMooseException (MooseException &e)
 
virtual void computeBoundary ()
 
virtual void computeInternalSide ()
 
virtual void computeInterface ()
 

Protected Attributes

MooseVariable * _u
 the input variable More...
 
MooseEnum _scheme
 One-D slope limiting scheme. More...
 
std::map< dof_id_type, std::vector< RealGradient > > & _lslope
 store the updated slopes into this map indexed by element ID More...
 
const bool _include_bc
 option whether to include BCs More...
 
const MooseArray< Point > & _q_point_face
 required data for face assembly More...
 
const QBase *const & _qrule_face
 
const MooseArray< Real > & _JxW_face
 
const MooseArray< Point > & _normals_face
 
const unsigned int & _side
 current side of the current element More...
 
const Elem *const & _side_elem
 
const Real & _side_volume
 
const Elem *const & _neighbor_elem
 the neighboring element More...
 
MooseMesh & _mesh
 
const Elem * _current_elem
 
const Real & _current_elem_volume
 
unsigned int _current_side
 
const Elem * _current_neighbor
 
const MooseArray< Point > & _q_point
 
const QBase *const & _qrule
 
const MooseArray< Real > & _JxW
 
const MooseArray< Real > & _coord
 
bool _have_interface_elems
 true if we have cached interface elements, false if they need to be cached. We want to (re)cache only when mesh changed More...
 
std::set< dof_id_type > _interface_elem_ids
 List of element IDs that are on the processor boundary and need to be send to other processors. More...
 
SubdomainID _subdomain
 The subdomain for the current element. More...
 
SubdomainID _old_subdomain
 The subdomain for the last element. More...
 

Static Private Attributes

static Threads::spin_mutex _mutex
 

Detailed Description

One-dimensional slope limiting to get the limited slope of cell average variable for the advection equation using a cell-centered finite volume method.

Definition at line 26 of file AEFVSlopeLimitingOneD.h.

Constructor & Destructor Documentation

◆ AEFVSlopeLimitingOneD()

AEFVSlopeLimitingOneD::AEFVSlopeLimitingOneD ( const InputParameters &  parameters)

Definition at line 28 of file AEFVSlopeLimitingOneD.C.

29  : SlopeLimitingBase(parameters), _u(getVar("u", 0)), _scheme(getParam<MooseEnum>("scheme"))
30 {
31 }

Member Function Documentation

◆ caughtMooseException()

void ElementLoopUserObject::caughtMooseException ( MooseException &  e)
protectedvirtualinherited

Definition at line 260 of file ElementLoopUserObject.C.

261 {
262  std::string what(e.what());
263  _fe_problem.setException(what);
264 }

Referenced by ElementLoopUserObject::execute().

◆ computeBoundary()

void ElementLoopUserObject::computeBoundary ( )
protectedvirtualinherited

Definition at line 238 of file ElementLoopUserObject.C.

239 {
240 }

Referenced by ElementLoopUserObject::onBoundary().

◆ computeElement()

void SlopeLimitingBase::computeElement ( )
virtualinherited

Reimplemented from ElementLoopUserObject.

Definition at line 70 of file SlopeLimitingBase.C.

71 {
72  dof_id_type _elementID = _current_elem->id();
73 
74  _lslope[_elementID] = limitElementSlope();
75 }

◆ computeInterface()

void ElementLoopUserObject::computeInterface ( )
protectedvirtualinherited

Definition at line 248 of file ElementLoopUserObject.C.

249 {
250 }

Referenced by ElementLoopUserObject::onInterface().

◆ computeInternalSide()

void ElementLoopUserObject::computeInternalSide ( )
protectedvirtualinherited

Definition at line 243 of file ElementLoopUserObject.C.

244 {
245 }

Referenced by ElementLoopUserObject::onInternalSide().

◆ deserialize()

void SlopeLimitingBase::deserialize ( std::vector< std::string > &  serialized_buffers)
protectedvirtualinherited

Definition at line 97 of file SlopeLimitingBase.C.

98 {
99  // The input string stream used for deserialization
100  std::istringstream iss;
101 
102  mooseAssert(serialized_buffers.size() == _app.n_processors(),
103  "Unexpected size of serialized_buffers: " << serialized_buffers.size());
104 
105  for (auto rank = decltype(_app.n_processors())(0); rank < serialized_buffers.size(); ++rank)
106  {
107  if (rank == processor_id())
108  continue;
109 
110  iss.str(serialized_buffers[rank]); // populate the stream with a new buffer
111  iss.clear(); // reset the string stream state
112 
113  // Load the communicated data into all of the other processors' slots
114 
115  unsigned int size = 0;
116  iss.read((char *)&size, sizeof(size));
117 
118  for (unsigned int i = 0; i < size; i++)
119  {
120  dof_id_type key;
121  loadHelper(iss, key, this);
122 
123  std::vector<RealGradient> value;
124  loadHelper(iss, value, this);
125 
126  // merge the data we received from other procs
127  _lslope.insert(std::pair<dof_id_type, std::vector<RealGradient>>(key, value));
128  }
129  }
130 }

Referenced by SlopeLimitingBase::finalize().

◆ execute()

void ElementLoopUserObject::execute ( )
virtualinherited

Definition at line 75 of file ElementLoopUserObject.C.

76 {
77  ConstElemRange & elem_range = *_mesh.getActiveLocalElementRange();
78 
79  try
80  {
81  pre();
82 
83  _subdomain = std::numeric_limits<SubdomainID>::max();
84  ConstElemRange::const_iterator el = elem_range.begin();
85  for (el = elem_range.begin(); el != elem_range.end(); ++el)
86  {
87  if (!keepGoing())
88  break;
89 
90  const Elem * elem = *el;
91  unsigned int cur_subdomain = elem->subdomain_id();
92  preElement(elem);
93 
95  _subdomain = cur_subdomain;
96 
97  if (this->hasBlocks(_subdomain))
98  {
101 
102  onElement(elem);
103 
104  for (unsigned int side = 0; side < elem->n_sides(); side++)
105  {
106  std::vector<BoundaryID> boundary_ids = _mesh.getBoundaryIDs(elem, side);
107 
108  if (boundary_ids.size() > 0)
109  for (std::vector<BoundaryID>::iterator it = boundary_ids.begin();
110  it != boundary_ids.end();
111  ++it)
112  onBoundary(elem, side, *it);
113 
114  if (elem->neighbor_ptr(side) != NULL)
115  {
116  if (this->hasBlocks(elem->neighbor_ptr(side)->subdomain_id()))
117  onInternalSide(elem, side);
118  if (boundary_ids.size() > 0)
119  for (std::vector<BoundaryID>::iterator it = boundary_ids.begin();
120  it != boundary_ids.end();
121  ++it)
122  onInterface(elem, side, *it);
123  }
124  } // sides
125  }
126  } // range
127 
128  post();
129  }
130  catch (MooseException & e)
131  {
133  }
134 }

◆ finalize()

void SlopeLimitingBase::finalize ( )
virtualinherited

Reimplemented from ElementLoopUserObject.

Definition at line 133 of file SlopeLimitingBase.C.

134 {
136 
137  if (_app.n_processors() > 1)
138  {
139  std::vector<std::string> send_buffers(1);
140  std::vector<std::string> recv_buffers;
141 
142  recv_buffers.reserve(_app.n_processors());
143  serialize(send_buffers[0]);
144  comm().allgather_packed_range((void *)(nullptr),
145  send_buffers.begin(),
146  send_buffers.end(),
147  std::back_inserter(recv_buffers));
148  deserialize(recv_buffers);
149  }
150 }

◆ getElementSlope()

const std::vector< RealGradient > & SlopeLimitingBase::getElementSlope ( dof_id_type  elementid) const
virtualinherited

accessor function call

Definition at line 58 of file SlopeLimitingBase.C.

59 {
60  Threads::spin_mutex::scoped_lock lock(_mutex);
61  std::map<dof_id_type, std::vector<RealGradient>>::const_iterator pos = _lslope.find(elementid);
62 
63  if (pos == _lslope.end())
64  mooseError("Limited slope is not cached for element id '", elementid, "' in ", __FUNCTION__);
65 
66  return pos->second;
67 }

Referenced by AEFVMaterial::computeQpProperties().

◆ initialize()

void SlopeLimitingBase::initialize ( )
virtualinherited

Reimplemented from ElementLoopUserObject.

Definition at line 50 of file SlopeLimitingBase.C.

51 {
53 
54  _lslope.clear();
55 }

◆ join()

void ElementLoopUserObject::join ( const ElementLoopUserObject )
inherited

Definition at line 228 of file ElementLoopUserObject.C.

229 {
230 }

◆ keepGoing()

virtual bool ElementLoopUserObject::keepGoing ( )
inlinevirtualinherited

Definition at line 80 of file ElementLoopUserObject.h.

80 { return true; }

Referenced by ElementLoopUserObject::execute().

◆ limitElementSlope()

std::vector< RealGradient > AEFVSlopeLimitingOneD::limitElementSlope ( ) const
overridevirtual

compute the limited slope of the cell

Implements SlopeLimitingBase.

Definition at line 34 of file AEFVSlopeLimitingOneD.C.

35 {
36  // you should know how many equations you are solving and assign this number
37  // e.g. = 1 (for the advection equation)
38  unsigned int nvars = 1;
39 
40  const Elem * elem = _current_elem;
41 
42  // index of conserved variable
43  unsigned int iv;
44 
45  // index of sides around an element
46  unsigned int is;
47 
48  // index of the neighbor element
49  unsigned int in;
50 
51  // number of sides surrounding an element = 2 in 1D
52  unsigned int nside = elem->n_sides();
53 
54  // number of reconstruction stencils = 3 in 1D
55  unsigned int nsten = nside + 1;
56 
57  // vector for the gradients of primitive variables
58  std::vector<RealGradient> ugrad(nvars, RealGradient(0., 0., 0.));
59 
60  // array to store center coordinates of this cell and its neighbor cells
61  std::vector<Real> xc(nsten, 0.);
62 
63  // the first always stores the current cell
64  xc[0] = elem->centroid()(0);
65 
66  // array for the cell-average values in the current cell and its neighbors
67  std::vector<std::vector<Real>> ucell(nsten, std::vector<Real>(nvars, 0.));
68 
69  // central slope:
70  // u_{i+1} - u {i-1}
71  // -----------------
72  // x_{i+1} - x_{i-1}
73 
74  // left-side slope:
75  // u_{i} - u {i-1}
76  // ---------------
77  // x_{i} - x_{i-1}
78 
79  // right-side slope:
80  // u_{i+1} - u {i}
81  // ---------------
82  // x_{i+1} - x_{i}
83 
84  // array to store the central and one-sided slopes, where the first should be central slope
85  std::vector<std::vector<Real>> sigma(nsten, std::vector<Real>(nvars, 0.));
86 
87  // get the cell-average variable in the central cell
88  if (_is_implicit)
89  ucell[0][0] = _u->getElementalValue(elem);
90  else
91  ucell[0][0] = _u->getElementalValueOld(elem);
92 
93  // a flag to indicate the boundary side of the current cell
94 
95  unsigned int bflag = 0;
96 
97  // loop over the sides to compute the one-sided slopes
98 
99  for (is = 0; is < nside; is++)
100  {
101  in = is + 1;
102 
103  // when the current element is an internal cell
104  if (elem->neighbor_ptr(is) != NULL)
105  {
106  const Elem * neig = elem->neighbor_ptr(is);
107  if (this->hasBlocks(neig->subdomain_id()))
108  {
109  xc[in] = neig->centroid()(0);
110 
111  // get the cell-average variable in this neighbor cell
112  if (_is_implicit)
113  ucell[in][0] = _u->getElementalValue(neig);
114  else
115  ucell[in][0] = _u->getElementalValueOld(neig);
116 
117  // calculate the one-sided slopes of primitive variables
118 
119  for (iv = 0; iv < nvars; iv++)
120  sigma[in][iv] = (ucell[0][iv] - ucell[in][iv]) / (xc[0] - xc[in]);
121  }
122  else
123  bflag = in;
124  }
125  // when the current element is at the boundary,
126  // we choose not to construct the slope in 1D just for convenience.
127  else
128  {
129  bflag = in;
130  }
131  }
132 
133  // calculate the slope of the current element
134  // according to the choice of the slope limiter algorithm
135 
136  switch (_scheme)
137  {
138  // first-order, zero slope
139  case 0:
140  break;
141 
142  // ==============
143  // minmod limiter
144  // ==============
145  case 1:
146 
147  if (bflag == 0)
148  {
149  for (iv = 0; iv < nvars; iv++)
150  {
151  if ((sigma[1][iv] * sigma[2][iv]) > 0.)
152  {
153  if (std::abs(sigma[1][iv]) < std::abs(sigma[2][iv]))
154  ugrad[iv](0) = sigma[1][iv];
155  else
156  ugrad[iv](0) = sigma[2][iv];
157  }
158  }
159  }
160  break;
161 
162  // ===========================================
163  // MC (monotonized central-difference limiter)
164  // ===========================================
165  case 2:
166 
167  if (bflag == 0)
168  {
169  for (iv = 0; iv < nvars; iv++)
170  sigma[0][iv] = (ucell[1][iv] - ucell[2][iv]) / (xc[1] - xc[2]);
171 
172  for (iv = 0; iv < nvars; iv++)
173  {
174  if (sigma[0][iv] > 0. && sigma[1][iv] > 0. && sigma[2][iv] > 0.)
175  ugrad[iv](0) = std::min(sigma[0][iv], 2. * std::min(sigma[1][iv], sigma[2][iv]));
176  else if (sigma[0][iv] < 0. && sigma[1][iv] < 0. && sigma[2][iv] < 0.)
177  ugrad[iv](0) = std::max(sigma[0][iv], 2. * std::max(sigma[1][iv], sigma[2][iv]));
178  }
179  }
180  break;
181 
182  // ================
183  // Superbee limiter
184  // ================
185  case 3:
186 
187  if (bflag == 0)
188  {
189  for (iv = 0; iv < nvars; iv++)
190  {
191  Real sigma1 = 0.;
192  Real sigma2 = 0.;
193 
194  // calculate sigma1 with minmod
195  if (sigma[2][iv] > 0. && sigma[1][iv] > 0.)
196  sigma1 = std::min(sigma[2][iv], 2. * sigma[1][iv]);
197  else if (sigma[2][iv] < 0. && sigma[1][iv] < 0.)
198  sigma1 = std::max(sigma[2][iv], 2. * sigma[1][iv]);
199 
200  // calculate sigma2 with minmod
201  if (sigma[2][iv] > 0. && sigma[1][iv] > 0.)
202  sigma2 = std::min(2. * sigma[2][iv], sigma[1][iv]);
203  else if (sigma[2][iv] < 0. && sigma[1][iv] < 0.)
204  sigma2 = std::max(2. * sigma[2][iv], sigma[1][iv]);
205 
206  // calculate sigma with maxmod
207  if (sigma1 > 0. && sigma2 > 0.)
208  ugrad[iv](0) = std::max(sigma1, sigma2);
209  else if (sigma1 < 0. && sigma2 < 0.)
210  ugrad[iv](0) = std::min(sigma1, sigma2);
211  }
212  }
213  break;
214 
215  default:
216  mooseError("Unknown 1D TVD-type slope limiter scheme");
217  break;
218  }
219 
220  return ugrad;
221 }

◆ meshChanged()

void ElementLoopUserObject::meshChanged ( )
virtualinherited

Reimplemented in SlopeReconstructionBase.

Definition at line 253 of file ElementLoopUserObject.C.

254 {
255  _interface_elem_ids.clear();
256  _have_interface_elems = false;
257 }

Referenced by SlopeReconstructionBase::meshChanged().

◆ onBoundary()

void ElementLoopUserObject::onBoundary ( const Elem *  elem,
unsigned int  side,
BoundaryID  bnd_id 
)
virtualinherited

Definition at line 160 of file ElementLoopUserObject.C.

161 {
162  _current_side = side;
163  computeBoundary();
164 }

Referenced by ElementLoopUserObject::execute().

◆ onElement()

void ElementLoopUserObject::onElement ( const Elem *  elem)
virtualinherited

Definition at line 153 of file ElementLoopUserObject.C.

154 {
155  _current_elem = elem;
156  computeElement();
157 }

Referenced by ElementLoopUserObject::execute().

◆ onInterface()

void ElementLoopUserObject::onInterface ( const Elem *  elem,
unsigned int  side,
BoundaryID  bnd_id 
)
virtualinherited

Definition at line 195 of file ElementLoopUserObject.C.

196 {
197  _current_elem = elem;
198  // Pointer to the neighbor we are currently working on.
199  _current_neighbor = elem->neighbor_ptr(side);
200 
201  // Get the global id of the element and the neighbor
202  const dof_id_type elem_id = elem->id();
203  const dof_id_type neighbor_id = _current_neighbor->id();
204 
205  // TODO: add if-statement to check if this needs to be executed
206  if ((_current_neighbor->active() && (_current_neighbor->level() == elem->level()) &&
207  (elem_id < neighbor_id)) ||
208  (_current_neighbor->level() < elem->level()))
209  {
211  }
212 
213  if (!_have_interface_elems &&
214  (_current_elem->processor_id() != _current_neighbor->processor_id()))
215  {
216  // if my current neighbor is on another processor store the current element
217  // ID for later communication
218  _interface_elem_ids.insert(_current_elem->id());
219  }
220 }

Referenced by ElementLoopUserObject::execute().

◆ onInternalSide()

void ElementLoopUserObject::onInternalSide ( const Elem *  elem,
unsigned int  side 
)
virtualinherited

Definition at line 167 of file ElementLoopUserObject.C.

168 {
169  _current_elem = elem;
170  // Pointer to the neighbor we are currently working on.
171  _current_neighbor = elem->neighbor_ptr(side);
172 
173  // Get the global id of the element and the neighbor
174  const dof_id_type elem_id = elem->id();
175  const dof_id_type neighbor_id = _current_neighbor->id();
176 
177  // TODO: add if-statement to check if this needs to be executed
178  if ((_current_neighbor->active() && (_current_neighbor->level() == elem->level()) &&
179  (elem_id < neighbor_id)) ||
180  (_current_neighbor->level() < elem->level()))
181  {
183  }
184 
185  if (!_have_interface_elems &&
186  (_current_elem->processor_id() != _current_neighbor->processor_id()))
187  {
188  // if my current neighbor is on another processor store the current element ID for later
189  // communication
190  _interface_elem_ids.insert(_current_elem->id());
191  }
192 }

Referenced by ElementLoopUserObject::execute().

◆ post()

void ElementLoopUserObject::post ( )
virtualinherited

Definition at line 223 of file ElementLoopUserObject.C.

224 {
225 }

Referenced by ElementLoopUserObject::execute().

◆ pre()

void ElementLoopUserObject::pre ( )
virtualinherited

Definition at line 143 of file ElementLoopUserObject.C.

144 {
145 }

Referenced by ElementLoopUserObject::execute().

◆ preElement()

void ElementLoopUserObject::preElement ( const Elem *  elem)
virtualinherited

Definition at line 69 of file ElementLoopUserObject.C.

70 {
71  _fe_problem.setCurrentSubdomainID(elem, _tid);
72 }

Referenced by ElementLoopUserObject::execute().

◆ serialize()

void SlopeLimitingBase::serialize ( std::string &  serialized_buffer)
protectedvirtualinherited

Definition at line 78 of file SlopeLimitingBase.C.

79 {
80  std::ostringstream oss;
81 
82  // First store the number of elements to send
83  unsigned int size = _interface_elem_ids.size();
84  oss.write((char *)&size, sizeof(size));
85 
86  for (auto it = _interface_elem_ids.begin(); it != _interface_elem_ids.end(); ++it)
87  {
88  storeHelper(oss, *it, this);
89  storeHelper(oss, _lslope[*it], this);
90  }
91 
92  // Populate the passed in string pointer with the string stream's buffer contents
93  serialized_buffer.assign(oss.str());
94 }

Referenced by SlopeLimitingBase::finalize().

◆ subdomainChanged()

void ElementLoopUserObject::subdomainChanged ( )
virtualinherited

Definition at line 148 of file ElementLoopUserObject.C.

149 {
150 }

Referenced by ElementLoopUserObject::execute().

Member Data Documentation

◆ _coord

const MooseArray<Real>& ElementLoopUserObject::_coord
protectedinherited

Definition at line 99 of file ElementLoopUserObject.h.

◆ _current_elem

const Elem* ElementLoopUserObject::_current_elem
protectedinherited

◆ _current_elem_volume

const Real& ElementLoopUserObject::_current_elem_volume
protectedinherited

Definition at line 92 of file ElementLoopUserObject.h.

◆ _current_neighbor

const Elem* ElementLoopUserObject::_current_neighbor
protectedinherited

◆ _current_side

unsigned int ElementLoopUserObject::_current_side
protectedinherited

Definition at line 93 of file ElementLoopUserObject.h.

Referenced by ElementLoopUserObject::onBoundary().

◆ _have_interface_elems

bool ElementLoopUserObject::_have_interface_elems
protectedinherited

true if we have cached interface elements, false if they need to be cached. We want to (re)cache only when mesh changed

Definition at line 102 of file ElementLoopUserObject.h.

Referenced by ElementLoopUserObject::finalize(), ElementLoopUserObject::meshChanged(), ElementLoopUserObject::onInterface(), and ElementLoopUserObject::onInternalSide().

◆ _include_bc

const bool SlopeLimitingBase::_include_bc
protectedinherited

option whether to include BCs

Definition at line 48 of file SlopeLimitingBase.h.

◆ _interface_elem_ids

std::set<dof_id_type> ElementLoopUserObject::_interface_elem_ids
protectedinherited

List of element IDs that are on the processor boundary and need to be send to other processors.

Definition at line 104 of file ElementLoopUserObject.h.

Referenced by ElementLoopUserObject::meshChanged(), ElementLoopUserObject::onInterface(), ElementLoopUserObject::onInternalSide(), SlopeLimitingBase::serialize(), and SlopeReconstructionBase::serialize().

◆ _JxW

const MooseArray<Real>& ElementLoopUserObject::_JxW
protectedinherited

Definition at line 98 of file ElementLoopUserObject.h.

◆ _JxW_face

const MooseArray<Real>& SlopeLimitingBase::_JxW_face
protectedinherited

Definition at line 53 of file SlopeLimitingBase.h.

◆ _lslope

std::map<dof_id_type, std::vector<RealGradient> >& SlopeLimitingBase::_lslope
protectedinherited

◆ _mesh

MooseMesh& ElementLoopUserObject::_mesh
protectedinherited

◆ _mutex

Threads::spin_mutex SlopeLimitingBase::_mutex
staticprivateinherited

Definition at line 66 of file SlopeLimitingBase.h.

Referenced by SlopeLimitingBase::getElementSlope().

◆ _neighbor_elem

const Elem* const & SlopeLimitingBase::_neighbor_elem
protectedinherited

the neighboring element

Definition at line 63 of file SlopeLimitingBase.h.

◆ _normals_face

const MooseArray<Point>& SlopeLimitingBase::_normals_face
protectedinherited

Definition at line 54 of file SlopeLimitingBase.h.

◆ _old_subdomain

SubdomainID ElementLoopUserObject::_old_subdomain
protectedinherited

The subdomain for the last element.

Definition at line 110 of file ElementLoopUserObject.h.

Referenced by ElementLoopUserObject::execute().

◆ _q_point

const MooseArray<Point>& ElementLoopUserObject::_q_point
protectedinherited

Definition at line 96 of file ElementLoopUserObject.h.

◆ _q_point_face

const MooseArray<Point>& SlopeLimitingBase::_q_point_face
protectedinherited

required data for face assembly

Definition at line 51 of file SlopeLimitingBase.h.

◆ _qrule

const QBase* const & ElementLoopUserObject::_qrule
protectedinherited

Definition at line 97 of file ElementLoopUserObject.h.

◆ _qrule_face

const QBase* const & SlopeLimitingBase::_qrule_face
protectedinherited

Definition at line 52 of file SlopeLimitingBase.h.

◆ _scheme

MooseEnum AEFVSlopeLimitingOneD::_scheme
protected

One-D slope limiting scheme.

Definition at line 39 of file AEFVSlopeLimitingOneD.h.

Referenced by limitElementSlope().

◆ _side

const unsigned int& SlopeLimitingBase::_side
protectedinherited

current side of the current element

Definition at line 57 of file SlopeLimitingBase.h.

◆ _side_elem

const Elem* const & SlopeLimitingBase::_side_elem
protectedinherited

Definition at line 59 of file SlopeLimitingBase.h.

◆ _side_volume

const Real& SlopeLimitingBase::_side_volume
protectedinherited

Definition at line 60 of file SlopeLimitingBase.h.

◆ _subdomain

SubdomainID ElementLoopUserObject::_subdomain
protectedinherited

The subdomain for the current element.

Definition at line 107 of file ElementLoopUserObject.h.

Referenced by ElementLoopUserObject::execute().

◆ _u

MooseVariable* AEFVSlopeLimitingOneD::_u
protected

the input variable

Definition at line 36 of file AEFVSlopeLimitingOneD.h.

Referenced by limitElementSlope().


The documentation for this class was generated from the following files:
ElementLoopUserObject::initialize
virtual void initialize()
Definition: ElementLoopUserObject.C:64
AEFVSlopeLimitingOneD::_u
MooseVariable * _u
the input variable
Definition: AEFVSlopeLimitingOneD.h:36
SlopeLimitingBase::serialize
virtual void serialize(std::string &serialized_buffer)
Definition: SlopeLimitingBase.C:78
ElementLoopUserObject::_mesh
MooseMesh & _mesh
Definition: ElementLoopUserObject.h:89
ElementLoopUserObject::computeInternalSide
virtual void computeInternalSide()
Definition: ElementLoopUserObject.C:243
ElementLoopUserObject::computeBoundary
virtual void computeBoundary()
Definition: ElementLoopUserObject.C:238
ElementLoopUserObject::_current_side
unsigned int _current_side
Definition: ElementLoopUserObject.h:93
AEFVSlopeLimitingOneD::_scheme
MooseEnum _scheme
One-D slope limiting scheme.
Definition: AEFVSlopeLimitingOneD.h:39
libMesh::RealGradient
VectorValue< Real > RealGradient
Definition: GrainForceAndTorqueInterface.h:17
SlopeLimitingBase::_lslope
std::map< dof_id_type, std::vector< RealGradient > > & _lslope
store the updated slopes into this map indexed by element ID
Definition: SlopeLimitingBase.h:45
ElementLoopUserObject::_interface_elem_ids
std::set< dof_id_type > _interface_elem_ids
List of element IDs that are on the processor boundary and need to be send to other processors.
Definition: ElementLoopUserObject.h:104
ElementLoopUserObject::keepGoing
virtual bool keepGoing()
Definition: ElementLoopUserObject.h:80
ElementLoopUserObject::computeInterface
virtual void computeInterface()
Definition: ElementLoopUserObject.C:248
ElementLoopUserObject::_subdomain
SubdomainID _subdomain
The subdomain for the current element.
Definition: ElementLoopUserObject.h:107
ElementLoopUserObject::preElement
virtual void preElement(const Elem *elem)
Definition: ElementLoopUserObject.C:69
SlopeLimitingBase::_mutex
static Threads::spin_mutex _mutex
Definition: SlopeLimitingBase.h:66
SlopeLimitingBase::SlopeLimitingBase
SlopeLimitingBase(const InputParameters &parameters)
Definition: SlopeLimitingBase.C:33
ElementLoopUserObject::onBoundary
virtual void onBoundary(const Elem *elem, unsigned int side, BoundaryID bnd_id)
Definition: ElementLoopUserObject.C:160
ElementLoopUserObject::_have_interface_elems
bool _have_interface_elems
true if we have cached interface elements, false if they need to be cached. We want to (re)cache only...
Definition: ElementLoopUserObject.h:102
ElementLoopUserObject::pre
virtual void pre()
Definition: ElementLoopUserObject.C:143
ElementLoopUserObject::onElement
virtual void onElement(const Elem *elem)
Definition: ElementLoopUserObject.C:153
SlopeLimitingBase::deserialize
virtual void deserialize(std::vector< std::string > &serialized_buffers)
Definition: SlopeLimitingBase.C:97
ElementLoopUserObject::post
virtual void post()
Definition: ElementLoopUserObject.C:223
ElementLoopUserObject::onInternalSide
virtual void onInternalSide(const Elem *elem, unsigned int side)
Definition: ElementLoopUserObject.C:167
ElementLoopUserObject::_old_subdomain
SubdomainID _old_subdomain
The subdomain for the last element.
Definition: ElementLoopUserObject.h:110
ElementLoopUserObject::caughtMooseException
virtual void caughtMooseException(MooseException &e)
Definition: ElementLoopUserObject.C:260
ElementLoopUserObject::onInterface
virtual void onInterface(const Elem *elem, unsigned int side, BoundaryID bnd_id)
Definition: ElementLoopUserObject.C:195
ElementLoopUserObject::subdomainChanged
virtual void subdomainChanged()
Definition: ElementLoopUserObject.C:148
ElementLoopUserObject::computeElement
virtual void computeElement()
Definition: ElementLoopUserObject.C:233
ElementLoopUserObject::_current_elem
const Elem * _current_elem
Definition: ElementLoopUserObject.h:91
SlopeLimitingBase::limitElementSlope
virtual std::vector< RealGradient > limitElementSlope() const =0
compute the slope of the cell
ElementLoopUserObject::finalize
virtual void finalize()
Definition: ElementLoopUserObject.C:137
ElementLoopUserObject::_current_neighbor
const Elem * _current_neighbor
Definition: ElementLoopUserObject.h:94