- file_nameName of the CSV file with configuration values.
C++ Type:FileName
Unit:(no unit assumed)
Controllable:No
Description:Name of the CSV file with configuration values.
- initial_valuesThe starting values of the inputs to be calibrated.
C++ Type:std::vector<double>
Unit:(no unit assumed)
Controllable:No
Description:The starting values of the inputs to be calibrated.
- num_parallel_proposalsNumber of proposals to make and corresponding subApps executed in parallel.
C++ Type:unsigned int
Unit:(no unit assumed)
Controllable:No
Description:Number of proposals to make and corresponding subApps executed in parallel.
- prior_distributionsThe prior distributions of the parameters to be calibrated.
C++ Type:std::vector<DistributionName>
Unit:(no unit assumed)
Controllable:No
Description:The prior distributions of the parameters to be calibrated.
PMCMCBase (PMCMCBase)
Parallel Markov chain Monte Carlo base.
Overview
The PMCMCBase
is the base class for performing MCMC sampling in STM and it derives from the MonteCarloSampler object. PMCMCBase
overrides the computeSample
function in the MonteCarloSampler which is the link to send new samples to the MultiApps system for execution. PMCMCBase
takes as inputs the priors, number of parallel proposals, the experimental configurations, upper and lower bounds of the model parameters, and the initial values for the parameters representing the starting state of the Markov chain. The PMCMCBase
object itself performs a regular Monte Carlo sampling, rather than a MCMC sampling. However, it provides functionalities to perform MCMC sampling through derived classes via several protected and public functions. An overview of these functions is presented in the table below.
Description of the functions in the PMCMCBase
class.
Function | Description |
---|---|
proposeSamples | Proposes new samples |
sampleSetUp | Sets up new samples and stores random numbers for later decision making |
combineWithExperimentalConfig | Combines the proposed samples with the experimental configurations |
computeSample | Sends a sample of a parameter to the MultiApps system |
getNumberofConfigValues | Returns the number of experimental configurations |
getNumberofConfigParams | Returns the number of experimental configuration parameters |
getNumberofParallelProposals | Returns the number of parallel proposals |
getRandomNumbers | Returns a vector of random number for decision making |
getVarSamples | Returns a vector of samples of variances over the model predictions |
getPriors | Returns a vector of distribution objects of priors over the model parameters |
getVarPrior | Returns a distribution object of prior over the variance term |
decisionStep | Get number of serial steps after which decision making starts |
For classes deriving off of the PMCMCBase
, it would suffice to override the proposeSamples
function and fill in the protected _new_samples
vector of vectors with new proposals. Then, the PMCMCBase
will automatically combine these proposals with the experimental configurations and send the resulting samples to the MultiApps
system. This treatment of combining the experimental configurations with the proposals only in the base class is very convenient. That is, if a new recipe needs to be implemented for combining experimental configurations and the proposals, this can only be done in the base class and this change will be reflected in all the derived classes. The specific re-definition of the proposeSamples
function in the derived classes to propose samples can be found in IndependentGaussianMH, AffineInvariantStretchSampler, or AffineInvariantDES.
Input Parameters
- execute_onLINEARThe list of flag(s) indicating when this object should be executed. For a description of each flag, see https://mooseframework.inl.gov/source/interfaces/SetupInterface.html.
Default:LINEAR
C++ Type:ExecFlagEnum
Unit:(no unit assumed)
Controllable:No
Description:The list of flag(s) indicating when this object should be executed. For a description of each flag, see https://mooseframework.inl.gov/source/interfaces/SetupInterface.html.
- file_column_nameName of column in CSV file to use, by default first column is used.
C++ Type:std::string
Unit:(no unit assumed)
Controllable:No
Description:Name of column in CSV file to use, by default first column is used.
- limit_get_global_samples429496729The maximum allowed number of items in the DenseMatrix returned by getGlobalSamples method.
Default:429496729
C++ Type:unsigned long
Unit:(no unit assumed)
Controllable:No
Description:The maximum allowed number of items in the DenseMatrix returned by getGlobalSamples method.
- limit_get_local_samples429496729The maximum allowed number of items in the DenseMatrix returned by getLocalSamples method.
Default:429496729
C++ Type:unsigned long
Unit:(no unit assumed)
Controllable:No
Description:The maximum allowed number of items in the DenseMatrix returned by getLocalSamples method.
- limit_get_next_local_row429496729The maximum allowed number of items in the std::vector returned by getNextLocalRow method.
Default:429496729
C++ Type:unsigned long
Unit:(no unit assumed)
Controllable:No
Description:The maximum allowed number of items in the std::vector returned by getNextLocalRow method.
- lower_boundLower bounds for making the next proposal.
C++ Type:std::vector<double>
Unit:(no unit assumed)
Controllable:No
Description:Lower bounds for making the next proposal.
- max_procs_per_row4294967295This will ensure that the sampler is partitioned properly when 'MultiApp/*/max_procs_per_app' is specified. It is not recommended to use otherwise.
Default:4294967295
C++ Type:unsigned int
Unit:(no unit assumed)
Controllable:No
Description:This will ensure that the sampler is partitioned properly when 'MultiApp/*/max_procs_per_app' is specified. It is not recommended to use otherwise.
- min_procs_per_row1This will ensure that the sampler is partitioned properly when 'MultiApp/*/min_procs_per_app' is specified. It is not recommended to use otherwise.
Default:1
C++ Type:unsigned int
Unit:(no unit assumed)
Controllable:No
Description:This will ensure that the sampler is partitioned properly when 'MultiApp/*/min_procs_per_app' is specified. It is not recommended to use otherwise.
- num_columnsNumber of columns to be used in the CSV file with the configuration values.
C++ Type:unsigned int
Unit:(no unit assumed)
Controllable:No
Description:Number of columns to be used in the CSV file with the configuration values.
- num_random_seeds100000Initialize a certain number of random seeds. Change from the default only if you have to.
Default:100000
C++ Type:unsigned int
Unit:(no unit assumed)
Controllable:No
Description:Initialize a certain number of random seeds. Change from the default only if you have to.
- prior_varianceThe prior distribution of the variance parameter to be calibrated.
C++ Type:DistributionName
Unit:(no unit assumed)
Controllable:No
Description:The prior distribution of the variance parameter to be calibrated.
- seed0Random number generator initial seed
Default:0
C++ Type:unsigned int
Unit:(no unit assumed)
Controllable:No
Description:Random number generator initial seed
- upper_boundUpper bounds for making the next proposal.
C++ Type:std::vector<double>
Unit:(no unit assumed)
Controllable:No
Description:Upper bounds for making the next proposal.
Optional Parameters
- control_tagsAdds user-defined labels for accessing object parameters via control logic.
C++ Type:std::vector<std::string>
Unit:(no unit assumed)
Controllable:No
Description:Adds user-defined labels for accessing object parameters via control logic.
- enableTrueSet the enabled status of the MooseObject.
Default:True
C++ Type:bool
Unit:(no unit assumed)
Controllable:No
Description:Set the enabled status of the MooseObject.