www.mooseframework.org
SlopeLimitingBase.h
Go to the documentation of this file.
1 //* This file is part of the MOOSE framework
2 //* https://www.mooseframework.org
3 //*
4 //* All rights reserved, see COPYRIGHT for full restrictions
5 //* https://github.com/idaholab/moose/blob/master/COPYRIGHT
6 //*
7 //* Licensed under LGPL 2.1, please see LICENSE for details
8 //* https://www.gnu.org/licenses/lgpl-2.1.html
9 
10 #pragma once
11 
12 #include "ElementLoopUserObject.h"
13 
14 // Forward Declarations
15 
21 {
22 public:
24 
26 
27  virtual void initialize();
28  virtual void finalize();
29 
30  virtual void computeElement();
31 
33  virtual const std::vector<RealGradient> & getElementSlope(dof_id_type elementid) const;
34 
36  virtual std::vector<RealGradient> limitElementSlope() const = 0;
37 
38 protected:
39  virtual void serialize(std::string & serialized_buffer);
40  virtual void deserialize(std::vector<std::string> & serialized_buffers);
41 
43  std::map<dof_id_type, std::vector<RealGradient>> & _lslope;
44 
46  const bool _include_bc;
47 
50  const QBase * const & _qrule_face;
53 
55  const unsigned int & _side;
56 
57  const Elem * const & _side_elem;
58  const Real & _side_volume;
59 
61  const Elem * const & _neighbor_elem;
62 
63 private:
64  static Threads::spin_mutex _mutex;
65 };
virtual const std::vector< RealGradient > & getElementSlope(dof_id_type elementid) const
accessor function call
virtual void serialize(std::string &serialized_buffer)
const Elem *const & _neighbor_elem
the neighboring element
const QBase *const & _qrule_face
A base class that loops over elements and do things.
static InputParameters validParams()
const MooseArray< Point > & _q_point_face
required data for face assembly
const MooseArray< Real > & _JxW_face
std::map< dof_id_type, std::vector< RealGradient > > & _lslope
store the updated slopes into this map indexed by element ID
const MooseArray< Point > & _normals_face
virtual void finalize()
const bool _include_bc
option whether to include BCs
const Elem *const & _side_elem
virtual void computeElement()
static Threads::spin_mutex _mutex
SlopeLimitingBase(const InputParameters &parameters)
virtual void deserialize(std::vector< std::string > &serialized_buffers)
const Real & _side_volume
Base class for slope limiting to limit the slopes of cell average variables.
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
virtual void initialize()
virtual std::vector< RealGradient > limitElementSlope() const =0
compute the slope of the cell
const InputParameters & parameters() const
uint8_t dof_id_type
const unsigned int & _side
current side of the current element