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 
15 template <>
18 {
20 
21  params.addRequiredParam<processor_id_type>("pid", "The PID to see the ghosting for");
22 
23  MooseEnum functor_type("geometric algebraic", "geometric");
24  params.addParam<MooseEnum>("functor_type", functor_type, "The type of ghosting functor to use");
25 
26  params.addParam<bool>("include_local_elements",
27  false,
28  "Whether or not to include local elements as part of the ghosting set");
29 
30  params.addRequiredParam<UserObjectName>(
31  "ghost_uo", "The GhostUserObject from which to obtain ghosting information from.");
32 
33  params.set<ExecFlagEnum>("execute_on") = {EXEC_INITIAL, EXEC_TIMESTEP_END};
34 
35  params.addClassDescription("Colors the elements ghosted to the chosen PID.");
36  return params;
37 }
38 
40  : AuxKernel(parameters),
41  _pid(getParam<processor_id_type>("pid")),
42  _rm_type(getParam<MooseEnum>("functor_type") == "geometric"
43  ? Moose::RelationshipManagerType::GEOMETRIC
44  : Moose::RelationshipManagerType::ALGEBRAIC),
45  _include_local(getParam<bool>("include_local_elements")),
46  _value(0.),
47  _ghost_uo(getUserObject<GhostingUserObject>("ghost_uo"))
48 {
49  if (isNodal())
50  mooseError("GhostingAux only works on elemental fields.");
51 }
52 
53 void
55 {
56  if (_current_elem->processor_id() == _pid && _include_local)
57  _value = 1;
58  else if (_current_elem->processor_id() != _pid)
60  else
61  _value = 0.;
62 }
63 
64 Real
66 {
67  return _value;
68 }
bool _include_local
Whether or not to include local elements in the display field.
Definition: GhostingAux.h:38
A MultiMooseEnum object to hold "execute_on" flags.
Definition: ExecFlagEnum.h:24
RelationshipManagerType
Main types of Relationship Managers.
Definition: MooseTypes.h:716
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
void mooseError(Args &&... args) const
Definition: MooseObject.h:147
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:54
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...
InputParameters validParams< GhostingAux >()
Definition: GhostingAux.C:17
Moose::RelationshipManagerType _rm_type
The type of ghosting functor to get.
Definition: GhostingAux.h:35
registerMooseObject("MooseApp", GhostingAux)
InputParameters validParams< AuxKernel >()
Definition: AuxKernel.C:25
processor_id_type _pid
The PID to show the ghosting for.
Definition: GhostingAux.h:32
This is a "smart" enum class intended to replace many of the shortcomings in the C++ enum type It sho...
Definition: MooseEnum.h:31
bool isNodal()
Nodal or elemental kernel?
Definition: AuxKernel.h:84
GhostingAux(const InputParameters &parameters)
Definition: GhostingAux.C:39
virtual Real computeValue() override
Compute and return the value of the aux variable.
Definition: GhostingAux.C:65
const Elem *const & _current_elem
Current element (valid only for elemental kernels)
Definition: AuxKernel.h:203
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...
Base class for creating new auxiliary kernels and auxiliary boundary conditions.
Definition: AuxKernel.h:33
Definition: Moose.h:112
Real _value
precalculated element value
Definition: GhostingAux.h:41
const ExecFlagType EXEC_INITIAL
const GhostingUserObject & _ghost_uo
The reference to the ghosting user object.
Definition: GhostingAux.h:44