https://mooseframework.inl.gov
ElementValueSampler.C
Go to the documentation of this file.
1 //* This file is part of the MOOSE framework
2 //* https://mooseframework.inl.gov
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 "ElementValueSampler.h"
11 
12 // MOOSE includes
13 #include "MooseVariableFE.h"
14 
15 // C++ includes
16 #include <numeric>
17 
19 
22 {
24 
25  params.addClassDescription("Samples values of variables on elements.");
26 
27  params += SamplerBase::validParams();
28 
29  return params;
30 }
31 
33  : ElementVariableVectorPostprocessor(parameters), SamplerBase(parameters, this, _communicator)
34 {
35  // ensure that variables are 'elemental'
36  for (unsigned int i = 0; i < _coupled_moose_vars.size(); i++)
37  {
38  if (_coupled_moose_vars[i]->isNodal())
39  paramError("variable",
40  "The variable '",
42  "' is a nodal variable. Nodal variables can be sampled using a "
43  "'NodalValueSampler'.");
45  }
46  std::vector<std::string> var_names(_coupled_moose_vars.size());
47  _values.resize(_coupled_moose_vars.size());
48 
49  for (unsigned int i = 0; i < _coupled_moose_vars.size(); i++)
50  var_names[i] = _coupled_moose_vars[i]->name();
51 
52  // Initialize the data structures in SamplerBase
53  SamplerBase::setupVariables(var_names);
54 }
55 
56 void
58 {
60 }
61 
62 void
64 {
65  unsigned int i_fe = 0, i_fv = 0;
66  for (unsigned int i = 0; i < _coupled_moose_vars.size(); i++)
67  if (_coupled_moose_vars[i]->isFV())
68  _values[i] = _coupled_standard_fv_moose_vars[i_fv++]->getElementalValue(_current_elem);
69  else
70  _values[i] = _coupled_standard_moose_vars[i_fe++]->getElementalValue(_current_elem);
71 
72  SamplerBase::addSample(_current_elem->vertex_average(), _current_elem->id(), _values);
73 }
74 
75 void
77 {
79 }
80 
81 void
83 {
84  const auto & vpp = static_cast<const ElementValueSampler &>(y);
85 
87 }
Base class for VectorPostprocessors that need to do "sampling" of values in the domain.
Definition: SamplerBase.h:36
virtual void threadJoin(const UserObject &y) override
Must override.
virtual void initialize()
Initialize the datastructures.
Definition: SamplerBase.C:77
std::vector< MooseVariableFV< Real > * > _coupled_standard_fv_moose_vars
Vector of standard finite volume coupled variables.
Definition: Coupleable.h:1424
ElementValueSampler(const InputParameters &parameters)
virtual void execute() override
Execute method.
std::vector< Real > _values
So we don&#39;t have to create and destroy this vector over and over again.
The main MOOSE class responsible for handling user-defined parameters in almost every MOOSE system...
virtual void initialize() override
Initialize the datastructures.
virtual const std::string & name() const
Get the name of the class.
Definition: MooseBase.h:57
virtual void finalize() override
Finalize the values.
std::vector< MooseVariable * > _coupled_standard_moose_vars
Vector of standard coupled variables.
Definition: Coupleable.h:1415
Base class VectorPostprocessors operating on elemental variables.
void setupVariables(const std::vector< std::string > &variable_names)
You MUST call this in the constructor of the child class and pass down the name of the variables...
Definition: SamplerBase.C:53
virtual void threadJoin(const SamplerBase &y)
Join the values.
Definition: SamplerBase.C:174
void paramError(const std::string &param, Args... args) const
Emits an error prefixed with the file and line number of the given param (from the input file) along ...
static InputParameters validParams()
bool isNodal() const
static InputParameters validParams()
Definition: SamplerBase.C:24
std::vector< MooseVariableFieldBase * > _coupled_moose_vars
Vector of all coupled variables.
Definition: Coupleable.h:1412
virtual void finalize()
Finalize the values.
Definition: SamplerBase.C:120
virtual void addSample(const Point &p, const Real &id, const std::vector< Real > &values)
Call this with the value of every variable at each point you want to sample at.
Definition: SamplerBase.C:63
const Elem *const & _current_elem
The current element pointer (available during execute())
Samples values of elemental variable(s).
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...
registerMooseObject("MooseApp", ElementValueSampler)
void checkForStandardFieldVariableType(const MooseVariableFieldBase *const var_ptr, const std::string &var_param_name="variable") const
Checks whether the passed variable pointer corresponds to a regular single-valued field variable...
Definition: SamplerBase.C:93
Base class for user-specific data.
Definition: UserObject.h:40