www.mooseframework.org
GhostingAux.C
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 #include "GhostingAux.h"
11 #include "GhostingUserObject.h"
12 
13 registerMooseObject("MooseApp", GhostingAux);
14 
17 {
19 
20  params.addRequiredParam<processor_id_type>("pid", "The PID to see the ghosting for");
21 
22  MooseEnum functor_type("geometric algebraic", "geometric");
23  params.addParam<MooseEnum>("functor_type", functor_type, "The type of ghosting functor to use");
24 
25  params.addParam<bool>("include_local_elements",
26  false,
27  "Whether or not to include local elements as part of the ghosting set");
28 
29  params.addRequiredParam<UserObjectName>(
30  "ghost_uo", "The GhostUserObject from which to obtain ghosting information from.");
31 
32  params.set<ExecFlagEnum>("execute_on") = {EXEC_INITIAL, EXEC_TIMESTEP_END};
33 
34  params.addClassDescription("Colors the elements ghosted to the chosen PID.");
35  return params;
36 }
37 
39  : AuxKernel(parameters),
40  _pid(getParam<processor_id_type>("pid")),
41  _rm_type(getParam<MooseEnum>("functor_type") == "geometric"
42  ? Moose::RelationshipManagerType::GEOMETRIC
43  : Moose::RelationshipManagerType::ALGEBRAIC),
44  _include_local(getParam<bool>("include_local_elements")),
45  _value(0.),
46  _ghost_uo(getUserObject<GhostingUserObject>("ghost_uo"))
47 {
48  if (isNodal())
49  mooseError("GhostingAux only works on elemental fields.");
50 }
51 
52 void
54 {
55  if (_current_elem->processor_id() == _pid && _include_local)
56  _value = 1;
57  else if (_current_elem->processor_id() != _pid)
59  else
60  _value = 0.;
61 }
62 
63 Real
65 {
66  return _value;
67 }
bool _include_local
Whether or not to include local elements in the display field.
Definition: GhostingAux.h:36
A MultiMooseEnum object to hold "execute_on" flags.
Definition: ExecFlagEnum.h:21
RelationshipManagerType
Main types of Relationship Managers.
Definition: MooseTypes.h:876
T & set(const std::string &name, bool quiet_mode=false)
Returns a writable reference to the named parameters.
Real getElementalValue(const Elem *elem, Moose::RelationshipManagerType rm_type, processor_id_type pid) const
The main MOOSE class responsible for handling user-defined parameters in almost every MOOSE system...
const ExecFlagType EXEC_TIMESTEP_END
Definition: Moose.C:32
This object loops over all of the underlying ghosting functors added by libMesh or MOOSE through Rela...
virtual void precalculateValue() override
This callback is used for AuxKernelTempls that need to perform a per-element calculation.
Definition: GhostingAux.C:53
void addRequiredParam(const std::string &name, const std::string &doc_string)
This method adds a parameter and documentation string to the InputParameters object that will be extr...
uint8_t processor_id_type
Moose::RelationshipManagerType _rm_type
The type of ghosting functor to get.
Definition: GhostingAux.h:33
registerMooseObject("MooseApp", GhostingAux)
processor_id_type _pid
The PID to show the ghosting for.
Definition: GhostingAux.h:30
This is a "smart" enum class intended to replace many of the shortcomings in the C++ enum type It sho...
Definition: MooseEnum.h:31
GhostingAux(const InputParameters &parameters)
Definition: GhostingAux.C:38
virtual Real computeValue() override
Compute and return the value of the aux variable.
Definition: GhostingAux.C:64
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type.
const Elem *const & _current_elem
Current element (valid only for elemental kernels)
Definition: AuxKernel.h:204
void addClassDescription(const std::string &doc_string)
This method adds a description of the class that will be displayed in the input file syntax dump...
void addParam(const std::string &name, const S &value, const std::string &doc_string)
These methods add an option parameter and a documentation string to the InputParameters object...
static InputParameters validParams()
Definition: AuxKernel.C:27
MOOSE now contains C++17 code, so give a reasonable error message stating what the user can do to add...
static InputParameters validParams()
Definition: GhostingAux.C:16
bool isNodal() const
Nodal or elemental kernel?
Definition: AuxKernel.h:86
Real _value
precalculated element value
Definition: GhostingAux.h:39
const ExecFlagType EXEC_INITIAL
Definition: Moose.C:28
const GhostingUserObject & _ghost_uo
The reference to the ghosting user object.
Definition: GhostingAux.h:42