www.mooseframework.org
ElementalVariableValue.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 "ElementalVariableValue.h"
11 
12 // MOOSE includes
13 #include "MooseMesh.h"
14 #include "MooseVariable.h"
15 #include "SubProblem.h"
16 
18 
21 {
23  params.addRequiredParam<VariableName>("variable", "The variable to be monitored");
24  params.addRequiredParam<unsigned int>("elementid", "The ID of the element where we monitor");
25  params.addClassDescription("Outputs an elemental variable value at a particular location");
26  return params;
27 }
28 
30  : GeneralPostprocessor(parameters),
31  _mesh(_subproblem.mesh()),
32  _var_name(parameters.get<VariableName>("variable")),
33  _value(0)
34 {
35  // This class may be too dangerous to use if renumbering is enabled,
36  // as the nodeid parameter obviously depends on a particular
37  // numbering.
38  if (_mesh.getMesh().allow_renumbering())
39  mooseError("ElementalVariableValue should only be used when node renumbering is disabled.");
40 }
41 
42 void
44 {
45  // Do this in initialSetup instead of the constructor because elements may be deleted after this
46  // object is constructed
47  _element = _mesh.queryElemPtr(getParam<unsigned int>("elementid"));
49 }
50 
51 void
53 {
54  _value = 0;
55  if (_element && (_element->processor_id() == processor_id()))
56  {
60 
63  const VariableValue & u = var.sln();
64  unsigned int n = u.size();
65  for (unsigned int i = 0; i < n; i++)
66  _value += u[i];
67  _value /= n;
68  }
69 }
70 
71 Real
73 {
74  return _value;
75 }
76 
77 void
79 {
81 }
virtual void execute() override
Execute method.
registerMooseObject("MooseApp", ElementalVariableValue)
virtual void finalize() override
This is called after execute() and after threadJoin()! This is probably where you want to do MPI comm...
const std::string & _var_name
virtual MooseVariableFieldBase & getActualFieldVariable(const THREAD_ID tid, const std::string &var_name)=0
Returns the variable reference for requested MooseVariableField which may be in any system...
virtual void reinitElem(const Elem *elem, const THREAD_ID tid)=0
T * get(const std::unique_ptr< T > &u)
The MooseUtils::get() specializations are used to support making forwards-compatible code changes fro...
Definition: MooseUtils.h:1147
MeshBase & mesh
The main MOOSE class responsible for handling user-defined parameters in almost every MOOSE system...
static InputParameters validParams()
This class is here to combine the Postprocessor interface and the base class Postprocessor object alo...
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...
virtual Elem * queryElemPtr(const dof_id_type i)
Definition: MooseMesh.C:2875
SubProblem & _subproblem
Reference to the Subproblem for this user object.
Definition: UserObject.h:207
static InputParameters validParams()
void gatherSum(T &value)
Gather the parallel sum of the variable passed in.
Definition: UserObject.h:125
MeshBase & getMesh()
Accessor for the underlying libMesh Mesh object.
Definition: MooseMesh.C:3198
virtual void prepare(const Elem *elem, const THREAD_ID tid)=0
virtual void setCurrentSubdomainID(const Elem *elem, const THREAD_ID tid) override
OutputTools< Real >::VariableValue VariableValue
Definition: MooseTypes.h:302
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
virtual const FieldVariableValue & sln() const =0
FEProblemBase & _fe_problem
Reference to the FEProblemBase for this user object.
Definition: UserObject.h:210
const THREAD_ID _tid
Thread ID of this postprocessor.
Definition: UserObject.h:217
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type.
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...
virtual void initialSetup()
Gets called at the beginning of the simulation before this object is asked to do its job...
virtual Real getValue() const override
This will get called to actually grab the final value the postprocessor has calculated.
processor_id_type processor_id() const
ElementalVariableValue(const InputParameters &parameters)
virtual void initialSetup() override
Gets called at the beginning of the simulation before this object is asked to do its job...