www.mooseframework.org
ElementValueSampler.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 "ElementValueSampler.h"
11 
12 // MOOSE includes
13 #include "MooseVariableFE.h"
14 
15 // C++ includes
16 #include <numeric>
17 
19 
20 template <>
23 {
25 
26  params.addClassDescription("Samples values of elemental variable(s).");
27 
28  params += validParams<SamplerBase>();
29 
30  return params;
31 }
32 
34  : ElementVariableVectorPostprocessor(parameters), SamplerBase(parameters, this, _communicator)
35 {
36  // ensure that variables are elemental, i.e., not scalar and and not nodal
37  for (unsigned int i = 0; i < _coupled_moose_vars.size(); i++)
38  if (_coupled_moose_vars[i]->feType().family == SCALAR || _coupled_moose_vars[i]->isNodal())
39  paramError(
40  "variable", "The variable '", _coupled_moose_vars[i]->name(), "' is not elemental.");
41 
42  std::vector<std::string> var_names(_coupled_moose_vars.size());
43  _values.resize(_coupled_moose_vars.size());
44 
45  for (unsigned int i = 0; i < _coupled_moose_vars.size(); i++)
46  var_names[i] = _coupled_moose_vars[i]->name();
47 
48  // Initialize the data structures in SamplerBase
49  SamplerBase::setupVariables(var_names);
50 }
51 
52 void
54 {
56 }
57 
58 void
60 {
61  for (unsigned int i = 0; i < _coupled_moose_vars.size(); i++)
62  _values[i] = _coupled_moose_vars[i]->getElementalValue(_current_elem);
63 
65 }
66 
67 void
69 {
71 }
72 
73 void
75 {
76  const ElementValueSampler & vpp = static_cast<const ElementValueSampler &>(y);
77 
79 }
Base class for VectorPostprocessors that need to do "sampling" of values in the domain.
Definition: SamplerBase.h:40
virtual void threadJoin(const UserObject &y) override
Must override.
virtual void initialize()
Initialize the datastructures.
Definition: SamplerBase.C:76
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 void finalize() override
Finalize the values.
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:52
virtual void threadJoin(const SamplerBase &y)
Join the values.
Definition: SamplerBase.C:146
InputParameters validParams< ElementVariableVectorPostprocessor >()
void paramError(const std::string &param, Args... args)
Emits an error prefixed with the file and line number of the given param (from the input file) along ...
Definition: MooseObject.h:108
virtual void finalize()
Finalize the values.
Definition: SamplerBase.C:92
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:62
const Elem *const & _current_elem
The current element pointer (available during execute())
std::vector< MooseVariableFEBase * > _coupled_moose_vars
Vector of all coupled variables.
Definition: Coupleable.h:740
InputParameters validParams< SamplerBase >()
Definition: SamplerBase.C:23
Samples values of elemental variable(s).
const std::string & name() const
Get the name of the object.
Definition: MooseObject.h:59
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)
InputParameters validParams< ElementValueSampler >()
Base class for user-specific data.
Definition: UserObject.h:37