22 params.
addParam<
bool>(
"contains_complete_history",
24 "Set this flag to indicate that the values in all vectors declared by this "
25 "VPP represent a time history (e.g. with each invocation, new values are "
26 "added and old values are never removed). This changes the output so that "
27 "only a single file is output and updated with each invocation");
35 MooseEnum parallel_type(
"DISTRIBUTED REPLICATED",
"REPLICATED");
39 "Set how the data is represented within the VectorPostprocessor (VPP); 'distributed' "
40 "indicates that data within the VPP is distributed and no auto communication is performed, "
41 "this setting will result in parallel output within the CSV output; 'replicated' indicates "
42 "that the data within the VPP is correct on processor 0, the data will automatically be "
43 "broadcast to all processors unless the '_auto_broadcast' param is set to false within the "
44 "validParams function.");
54 _vpp_name(moose_object->name()),
56 *moose_object->parameters().getCheckedPointerParam<
FEProblemBase *>(
"_fe_problem_base")),
57 _parallel_type(moose_object->parameters().get<
MooseEnum>(
"parallel_type")),
58 _vpp_moose_object(*moose_object),
59 _vpp_tid(moose_object->parameters().isParamValid(
"_tid")
60 ? moose_object->parameters().get<
THREAD_ID>(
"_tid")
62 _contains_complete_history(moose_object->parameters().get<bool>(
"contains_complete_history")),
63 _is_distributed(_parallel_type ==
"DISTRIBUTED"),
64 _is_broadcast(_is_distributed || !moose_object->parameters().get<bool>(
"_auto_broadcast"))
68#ifdef MOOSE_KOKKOS_ENABLED
73 _vpp_name(object._vpp_name),
74 _vpp_fe_problem(object._vpp_fe_problem),
75 _parallel_type(object._parallel_type),
76 _vpp_moose_object(object._vpp_moose_object),
77 _vpp_tid(object._vpp_tid),
78 _contains_complete_history(object._contains_complete_history),
79 _is_distributed(object._is_distributed),
80 _is_broadcast(object._is_broadcast)
106const std::set<std::string> &
128 const auto & consumer_modes = this->state().getConsumers();
129 auto func = [](
const std::pair<ReporterMode, const MooseObject *> & mode_pair)
131 if (std::find_if(consumer_modes.begin(), consumer_modes.end(), func) != consumer_modes.end())
133 const T & value = this->state().value();
134 if (this->processor_id() == 0 && value.size() != this->n_processors())
135 mooseError(
"The VectorPostprocessor value to be scatter has a length of ",
137 "; it must be the same length as the number of processors (",
138 this->n_processors(),
141 this->comm().scatter(value, _scatter_value);
150 _scatter_value_old = _scatter_value;
157 return _scatter_value;
164 return _scatter_value_old;
void mooseError(Args &&... args)
Emit an error message with the given stringified, concatenated args and terminate the application.
Real ScatterVectorPostprocessorValue
std::vector< Real > VectorPostprocessorValue
const ReporterMode REPORTER_MODE_REPLICATED
const ReporterMode REPORTER_MODE_DISTRIBUTED
const ReporterMode REPORTER_MODE_ROOT
const ReporterMode REPORTER_MODE_VPP_SCATTER("VPP_SCATTER")
Specialization of SubProblem for solving nonlinear equations plus auxiliary equations.
const ReporterData & getReporterData() const
Provides const access the ReporterData object.
This is a "smart" enum class intended to replace many of the shortcomings in the C++ enum type It sho...
Every object that can be built by the factory should be derived from this class.
An interface for accessing Moose::Functors for systems that do not care about automatic differentiati...
static InputParameters validParams()
A class to provide an common interface to objects requiring "outputs" option.
static InputParameters validParams()
virtual void copyValuesBack()=0
Called by FEProblemBase::advanceState via ReporterData.
virtual void finalize()=0
Called by FEProblemBase::joinAndFinalize via ReporterData.
T & declareReporterValue(const ReporterName &reporter_name, const ReporterMode &mode, const MooseObject &producer, Args &&... args)
Method for returning a writable reference to the current Reporter value.
MooseEnumItem that automatically creates the ID and doesn't allow the ID to be assigned.
A special version of RestartableData to aid in storing Reporter values.
const ScatterVectorPostprocessorValue & getScatterValueOld() const
VectorPostprocessorContext(const libMesh::ParallelObject &other, const MooseObject &producer, ReporterState< T > &state)
virtual void copyValuesBack() override
Called by FEProblemBase::advanceState via ReporterData.
const ScatterVectorPostprocessorValue & getScatterValue() const
virtual void finalize() override
Perform automatic parallel communication based on the producer/consumer modes.
A ReporterName that represents a VectorPostprocessor.
Base class for Postprocessors that produce a vector of values.
const MooseObject & _vpp_moose_object
std::set< std::string > _vector_names
std::map< std::string, VectorPostprocessorValue > _thread_local_vectors
VectorPostprocessor(const MooseObject *moose_object)
const std::set< std::string > & getVectorNames() const
Return the names of the vectors associated with this object.
VectorPostprocessorValue & declareVector(const std::string &vector_name)
Register a new vector to fill up.
const bool _is_distributed
FEProblemBase & _vpp_fe_problem
The FEProblemBase.
const std::string _vpp_name
The name of the VectorPostprocessor.
static InputParameters validParams()