www.mooseframework.org
SamplerData.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 // Stocastic Tools Includes
11 #include "SamplerData.h"
12 
13 // MOOSE includes
14 #include "Sampler.h"
15 
16 registerMooseObject("StochasticToolsApp", SamplerData);
17 
19 
20 InputParameters
22 {
23  InputParameters params = GeneralVectorPostprocessor::validParams();
24  params.addClassDescription(
25  "Tool for extracting Sampler object data and storing in VectorPostprocessor vectors.");
27  params.addRequiredParam<SamplerName>("sampler",
28  "The sample from which to extract distribution data.");
29 
30  // The execute method computes the complete vectors on all processes, so broadcasting the data
31  // is not required.
32  // params.set<bool>("_is_broadcast") = false;
33 
34  // Control for
35  MooseEnum method("get_global_samples get_local_samples get_next_local_row", "get_next_local_row");
36  params.addParam<MooseEnum>(
37  "sampler_method",
38  method,
39  "Control the method of data retrival from the Sampler object; this is mainly for testing.");
40 
41  return params;
42 }
43 
44 SamplerData::SamplerData(const InputParameters & parameters)
45  : GeneralVectorPostprocessor(parameters),
46  SamplerInterface(this),
47  _sampler(getSampler("sampler")),
48  _sampler_method(getParam<MooseEnum>("sampler_method"))
49 {
50  for (dof_id_type j = 0; j < _sampler.getNumberOfCols(); ++j)
51  _sample_vectors.push_back(
52  &declareVector(getParam<SamplerName>("sampler") + "_" + std::to_string(j)));
53 }
54 
55 void
57 {
58  dof_id_type n = (_sampler_method == "get_global_samples") ? _sampler.getNumberOfRows()
59  : _sampler.getNumberOfLocalRows();
60  for (auto & ppv_ptr : _sample_vectors)
61  ppv_ptr->resize(n, 0);
62 }
63 
64 void
66 {
67  if (_sampler_method == "get_global_samples")
68  {
69  DenseMatrix<Real> data = _sampler.getGlobalSamples();
70  for (unsigned int j = 0; j < data.n(); ++j)
71  for (unsigned int i = 0; i < data.m(); ++i)
72  (*_sample_vectors[j])[i] = data(i, j);
73  }
74 
75  else if (_sampler_method == "get_local_samples")
76  {
77  DenseMatrix<Real> data = _sampler.getLocalSamples();
78  for (unsigned int j = 0; j < data.n(); ++j)
79  for (unsigned int i = 0; i < data.m(); ++i)
80  (*_sample_vectors[j])[i] = data(i, j);
81  }
82 
83  else if (_sampler_method == "get_next_local_row")
84  {
85  for (dof_id_type i = _sampler.getLocalRowBegin(); i < _sampler.getLocalRowEnd(); ++i)
86  {
87  std::vector<Real> data = _sampler.getNextLocalRow();
88  for (std::size_t j = 0; j < data.size(); ++j)
89  (*_sample_vectors[j])[i - _sampler.getLocalRowBegin()] = data[j];
90  }
91  }
92 }
93 
94 void
96 {
97  if (_sampler_method != "get_global_samples")
98  for (auto & ppv_ptr : _sample_vectors)
99  _communicator.gather(0, *ppv_ptr);
100 }
101 
102 void
103 SamplerData::threadJoin(const UserObject & /*uo*/)
104 {
106  /*
107  if (_use_local_samples)
108  {
109  const SamplerData & obj = static_cast<const SamplerData &>(uo);
110  for (std::size_t i = 0; i < _sample_vectors.size(); ++i)
111  (*_sample_vectors[i]).insert(_sample_vectors[i]->end(), obj._sample_vectors[i]->begin(),
112  obj._sample_vectors[i]->end());
113  }
114  */
115 }
defineLegacyParams
defineLegacyParams(SamplerData)
SamplerData.h
SamplerData::_sample_vectors
std::vector< VectorPostprocessorValue * > _sample_vectors
Storage for declared vectors, one for each column.
Definition: SamplerData.h:37
SamplerData::validParams
static InputParameters validParams()
Definition: SamplerData.C:21
SamplerData::finalize
virtual void finalize() override
Definition: SamplerData.C:95
SamplerData::SamplerData
SamplerData(const InputParameters &parameters)
Definition: SamplerData.C:44
validParams
InputParameters validParams()
SamplerData
A tool for output Sampler data.
Definition: SamplerData.h:24
SamplerData::execute
virtual void execute() override
Definition: SamplerData.C:65
SamplerData::threadJoin
virtual void threadJoin(const UserObject &uo) override
Definition: SamplerData.C:103
registerMooseObject
registerMooseObject("StochasticToolsApp", SamplerData)
SamplerData::initialize
virtual void initialize() override
Definition: SamplerData.C:56
SamplerData::_sampler
Sampler & _sampler
The sampler to extract data.
Definition: SamplerData.h:40
SamplerData::_sampler_method
const MooseEnum & _sampler_method
The method of data retrival from the Sample.
Definition: SamplerData.h:43