A class used to perform Monte Carlo sampling for performing Sobol sensitivity analysis. More...
#include <SobolSampler.h>
Public Types | |
enum | SampleMode { SampleMode::GLOBAL, SampleMode::LOCAL } |
typedef DataFileName | DataFileParameterType |
Public Member Functions | |
SobolSampler (const InputParameters ¶meters) | |
bool | resample () const |
Resampling flag, see SobolStatistics. More... | |
std::vector< Real > | getNextLocalRow () |
dof_id_type | getNumberOfRows () const |
dof_id_type | getNumberOfCols () const |
dof_id_type | getNumberOfLocalRows () const |
const LocalRankConfig & | getRankConfig (bool batch_mode) const |
virtual bool | isAdaptiveSamplingCompleted () const |
libMesh::Parallel::Communicator & | getLocalComm () |
virtual bool | enabled () const |
std::shared_ptr< MooseObject > | getSharedPtr () |
std::shared_ptr< const MooseObject > | getSharedPtr () const |
MooseApp & | getMooseApp () const |
const std::string & | type () const |
virtual const std::string & | name () const |
std::string | typeAndName () const |
std::string | errorPrefix (const std::string &error_type) const |
void | callMooseError (std::string msg, const bool with_prefix) const |
MooseObjectParameterName | uniqueParameterName (const std::string ¶meter_name) const |
const InputParameters & | parameters () const |
MooseObjectName | uniqueName () const |
const T & | getParam (const std::string &name) const |
std::vector< std::pair< T1, T2 > > | getParam (const std::string ¶m1, const std::string ¶m2) const |
const T & | getRenamedParam (const std::string &old_name, const std::string &new_name) const |
T | getCheckedPointerParam (const std::string &name, const std::string &error_string="") const |
bool | isParamValid (const std::string &name) const |
bool | isParamSetByUser (const std::string &nm) const |
void | paramError (const std::string ¶m, Args... args) const |
void | paramWarning (const std::string ¶m, Args... args) const |
void | paramInfo (const std::string ¶m, Args... args) const |
void | connectControllableParams (const std::string ¶meter, const std::string &object_type, const std::string &object_name, const std::string &object_parameter) const |
void | mooseError (Args &&... args) const |
void | mooseErrorNonPrefixed (Args &&... args) const |
void | mooseDocumentedError (const std::string &repo_name, const unsigned int issue_num, Args &&... args) const |
void | mooseWarning (Args &&... args) const |
void | mooseWarningNonPrefixed (Args &&... args) const |
void | mooseDeprecated (Args &&... args) const |
void | mooseInfo (Args &&... args) const |
std::string | getDataFileName (const std::string ¶m) const |
std::string | getDataFileNameByName (const std::string &name, const std::string *param=nullptr) const |
virtual void | initialSetup () |
virtual void | timestepSetup () |
virtual void | jacobianSetup () |
virtual void | residualSetup () |
virtual void | subdomainSetup () |
virtual void | customSetup (const ExecFlagType &) |
const ExecFlagEnum & | getExecuteOnEnum () const |
PerfGraph & | perfGraph () |
T & | getSampler (const std::string &name) |
Sampler & | getSampler (const std::string &name) |
T & | getSamplerByName (const SamplerName &name) |
Sampler & | getSamplerByName (const SamplerName &name) |
const VectorPostprocessorValue & | getVectorPostprocessorValue (const std::string ¶m_name, const std::string &vector_name) const |
const VectorPostprocessorValue & | getVectorPostprocessorValue (const std::string ¶m_name, const std::string &vector_name, bool needs_broadcast) const |
const VectorPostprocessorValue & | getVectorPostprocessorValueByName (const VectorPostprocessorName &name, const std::string &vector_name) const |
const VectorPostprocessorValue & | getVectorPostprocessorValueByName (const VectorPostprocessorName &name, const std::string &vector_name, bool needs_broadcast) const |
const VectorPostprocessorValue & | getVectorPostprocessorValueOld (const std::string ¶m_name, const std::string &vector_name) const |
const VectorPostprocessorValue & | getVectorPostprocessorValueOld (const std::string ¶m_name, const std::string &vector_name, bool needs_broadcast) const |
const VectorPostprocessorValue & | getVectorPostprocessorValueOldByName (const VectorPostprocessorName &name, const std::string &vector_name) const |
const VectorPostprocessorValue & | getVectorPostprocessorValueOldByName (const VectorPostprocessorName &name, const std::string &vector_name, bool needs_broadcast) const |
const ScatterVectorPostprocessorValue & | getScatterVectorPostprocessorValue (const std::string ¶m_name, const std::string &vector_name) const |
const ScatterVectorPostprocessorValue & | getScatterVectorPostprocessorValueByName (const VectorPostprocessorName &name, const std::string &vector_name) const |
const ScatterVectorPostprocessorValue & | getScatterVectorPostprocessorValueOld (const std::string ¶m_name, const std::string &vector_name) const |
const ScatterVectorPostprocessorValue & | getScatterVectorPostprocessorValueOldByName (const VectorPostprocessorName &name, const std::string &vector_name) const |
bool | hasVectorPostprocessor (const std::string ¶m_name, const std::string &vector_name) const |
bool | hasVectorPostprocessor (const std::string ¶m_name) const |
bool | hasVectorPostprocessorByName (const VectorPostprocessorName &name, const std::string &vector_name) const |
bool | hasVectorPostprocessorByName (const VectorPostprocessorName &name) const |
const VectorPostprocessorName & | getVectorPostprocessorName (const std::string ¶m_name) const |
DenseMatrix< Real > | getGlobalSamples () |
DenseMatrix< Real > | getGlobalSamples () |
DenseMatrix< Real > | getLocalSamples () |
DenseMatrix< Real > | getLocalSamples () |
dof_id_type | getLocalRowBegin () const |
dof_id_type | getLocalRowBegin () const |
dof_id_type | getLocalRowEnd () const |
dof_id_type | getLocalRowEnd () const |
const Distribution & | getDistribution (const std::string &name) const |
const T & | getDistribution (const std::string &name) const |
const Distribution & | getDistribution (const std::string &name) const |
const T & | getDistribution (const std::string &name) const |
const Distribution & | getDistributionByName (const DistributionName &name) const |
const T & | getDistributionByName (const std::string &name) const |
const Distribution & | getDistributionByName (const DistributionName &name) const |
const T & | getDistributionByName (const std::string &name) const |
bool | isVectorPostprocessorDistributed (const std::string ¶m_name) const |
bool | isVectorPostprocessorDistributed (const std::string ¶m_name) const |
bool | isVectorPostprocessorDistributedByName (const VectorPostprocessorName &name) const |
bool | isVectorPostprocessorDistributedByName (const VectorPostprocessorName &name) const |
const Parallel::Communicator & | comm () const |
processor_id_type | n_processors () const |
processor_id_type | processor_id () const |
Static Public Member Functions | |
static InputParameters | validParams () |
Public Attributes | |
const ConsoleStream | _console |
Protected Types | |
enum | CommMethod |
Protected Member Functions | |
virtual Real | computeSample (dof_id_type row_index, dof_id_type col_index) override |
virtual LocalRankConfig | constructRankConfig (bool batch_mode) const override |
Sobol sampling should have a slightly different partitioning in order to keep the sample and resample samplers distributed and make computing indices more efficient. More... | |
void | setNumberOfRandomSeeds (std::size_t number) |
Real | getRand (unsigned int index=0) |
uint32_t | getRandl (unsigned int index, uint32_t lower, uint32_t upper) |
PerfID | registerTimedSection (const std::string §ion_name, const unsigned int level) const |
PerfID | registerTimedSection (const std::string §ion_name, const unsigned int level, const std::string &live_message, const bool print_dots=true) const |
std::string | timedSectionName (const std::string §ion_name) const |
virtual void | addVectorPostprocessorDependencyHelper (const VectorPostprocessorName &) const |
const ReporterName & | getReporterName (const std::string ¶m_name) const |
virtual void | addReporterDependencyHelper (const ReporterName &) |
void | setNumberOfRows (dof_id_type n_rows) |
void | setNumberOfRows (dof_id_type n_rows) |
void | setNumberOfCols (dof_id_type n_cols) |
void | setNumberOfCols (dof_id_type n_cols) |
virtual void | sampleSetUp (const SampleMode) |
virtual void | sampleSetUp (const SampleMode) |
virtual void | sampleTearDown (const SampleMode) |
virtual void | sampleTearDown (const SampleMode) |
virtual void | computeSampleMatrix (DenseMatrix< Real > &matrix) |
virtual void | computeSampleMatrix (DenseMatrix< Real > &matrix) |
virtual void | computeLocalSampleMatrix (DenseMatrix< Real > &matrix) |
virtual void | computeLocalSampleMatrix (DenseMatrix< Real > &matrix) |
virtual void | computeSampleRow (dof_id_type i, std::vector< Real > &data) |
virtual void | computeSampleRow (dof_id_type i, std::vector< Real > &data) |
virtual void | advanceGenerators (const dof_id_type count) |
virtual void | advanceGenerators (const dof_id_type count) |
virtual void | advanceGenerator (const unsigned int seed_index, const dof_id_type count) |
virtual void | advanceGenerator (const unsigned int seed_index, const dof_id_type count) |
void | setAutoAdvanceGenerators (const bool state) |
void | setAutoAdvanceGenerators (const bool state) |
void | shuffle (std::vector< T > &data, const std::size_t seed_index=0, const CommMethod method=CommMethod::LOCAL) |
void | shuffle (std::vector< T > &data, const std::size_t seed_index=0, const CommMethod method=CommMethod::LOCAL) |
virtual void | executeSetUp () |
virtual void | executeSetUp () |
virtual void | executeTearDown () |
virtual void | executeTearDown () |
void | saveGeneratorState () |
void | saveGeneratorState () |
void | restoreGeneratorState () |
void | restoreGeneratorState () |
const T & | getReporterValue (const std::string ¶m_name, const std::size_t time_index=0) |
const T & | getReporterValue (const std::string ¶m_name, ReporterMode mode, const std::size_t time_index=0) |
const T & | getReporterValue (const std::string ¶m_name, const std::size_t time_index=0) |
const T & | getReporterValue (const std::string ¶m_name, ReporterMode mode, const std::size_t time_index=0) |
const T & | getReporterValueByName (const ReporterName &reporter_name, const std::size_t time_index=0) |
const T & | getReporterValueByName (const ReporterName &reporter_name, ReporterMode mode, const std::size_t time_index=0) |
const T & | getReporterValueByName (const ReporterName &reporter_name, const std::size_t time_index=0) |
const T & | getReporterValueByName (const ReporterName &reporter_name, ReporterMode mode, const std::size_t time_index=0) |
bool | hasReporterValue (const std::string ¶m_name) const |
bool | hasReporterValue (const std::string ¶m_name) const |
bool | hasReporterValue (const std::string ¶m_name) const |
bool | hasReporterValue (const std::string ¶m_name) const |
bool | hasReporterValueByName (const ReporterName &reporter_name) const |
bool | hasReporterValueByName (const ReporterName &reporter_name) const |
bool | hasReporterValueByName (const ReporterName &reporter_name) const |
bool | hasReporterValueByName (const ReporterName &reporter_name) const |
Protected Attributes | |
Sampler & | _sampler_a |
Sampler matrix. More... | |
Sampler & | _sampler_b |
Re-sample matrix. More... | |
const bool & | _resample |
Flag for building the re-sampling matrix for computing second order sensitivity indices. More... | |
NONE | |
LOCAL | |
SEMI_LOCAL | |
const dof_id_type | _min_procs_per_row |
const dof_id_type | _max_procs_per_row |
libMesh::Parallel::Communicator | _local_comm |
const bool & | _enabled |
MooseApp & | _app |
const std::string | _type |
const std::string | _name |
const InputParameters & | _pars |
Factory & | _factory |
ActionFactory & | _action_factory |
const ExecFlagEnum & | _execute_enum |
const ExecFlagType & | _current_execute_flag |
MooseApp & | _pg_moose_app |
const std::string | _prefix |
const Parallel::Communicator & | _communicator |
std::vector< Real > | _row_a |
std::vector< Real > | _row_b |
Private Attributes | |
const dof_id_type | _num_matrices |
Number of matrices. More... | |
A class used to perform Monte Carlo sampling for performing Sobol sensitivity analysis.
The created matrices are stacked in the following order, following the nomenclature from Saltelli (2002), "Making best use of model evaluations to compute sensitivity indices"
with re-sampling: [M2, N_1, ..., N_n, N_-1, ..., N-n, M1] without re-sampling: [M2, N_1, ..., N_n, M1]
Definition at line 23 of file SobolSampler.h.
SobolSampler::SobolSampler | ( | const InputParameters & | parameters | ) |
Definition at line 27 of file SobolSampler.C.
|
overrideprotectedvirtual |
Implements Sampler.
Definition at line 50 of file SobolSampler.C.
|
overrideprotectedvirtual |
Sobol sampling should have a slightly different partitioning in order to keep the sample and resample samplers distributed and make computing indices more efficient.
Reimplemented from Sampler.
Definition at line 94 of file SobolSampler.C.
|
inline |
Resampling flag, see SobolStatistics.
Definition at line 31 of file SobolSampler.h.
Referenced by SobolStatistics::execute(), and SobolReporter::store().
|
static |
Definition at line 17 of file SobolSampler.C.
|
private |
Number of matrices.
Definition at line 60 of file SobolSampler.h.
Referenced by computeSample(), constructRankConfig(), and SobolSampler().
|
protected |
Flag for building the re-sampling matrix for computing second order sensitivity indices.
Definition at line 56 of file SobolSampler.h.
Referenced by resample().
|
protected |
|
protected |
Definition at line 46 of file SobolSampler.h.
Referenced by computeSample().
|
protected |
Sampler matrix.
Definition at line 50 of file SobolSampler.h.
Referenced by computeSample(), constructRankConfig(), and SobolSampler().
|
protected |
Re-sample matrix.
Definition at line 53 of file SobolSampler.h.
Referenced by computeSample(), and SobolSampler().