The PECOS (Parallel Environment for Creation Of Stochastics) library initiated as a capability to generate samples of random fields (RFs) and stochastic processes (SPs) from a set of user-defined power spectral densities (PSDs). The RF/SP may be either Gaussian or non-Gaussian and either stationary or nonstationary, and the resulting sample is intended for run-time query by parallel finite element simulation codes.
PECOS has grown to include univariate and multivariate polynomial approximations, using either orthogonal or interpolation polynomials, along with numerical integration drivers for computing expansion coefficients.
The Developers Manual documents the class structures used by the PECOS library. It derives directly from annotation of the source code.
The PECOS library collects a variety of utilities for transformation of probability distributions, transformations between frequency and time domain data, and modeling using basis functions.
The use of class hierarchies provides a mechanism for extensibility in PECOS components. In each of the various class hierarchies, adding a new capability typically involves deriving a new class and providing a few virtual function redefinitions. These redefinitions define the coding portions specific to the new derived class, with the common portions already defined at the base class. Thus, with a relatively small amount of new code, the existing facilities can be extended, reused, and leveraged for new purposes.
The software components are presented in the following sections using a top-down order.
Class hierarchy: DataTransformation.
Data transformations provide a mechanism for moving data sets between the frequency domain and the time domain. These transformations typically involve modeling through the use of scalar random variables (transformed to standardized probability distributions) and a set of spatial and/or temporal basis functions. Thus the BasisFunction and ProbabilityTransformation capabilities are components of the DataTransformation capability. Specific data transformations include:
ForwardTransformation: from time domain to frequency domain based on FFT. A placeholder for now.
Class hierarchy: ProbabilityTransformation.
Probability transformations provide a mechanism for modifying an input probability space to have desired modeling characteristics. In particular, by transforming from a given type of probability distribution to a standardized probability distribution, algorithms designed for these standard probability distributions can be applied. Specific transformations include:
NatafTransformation: a nonlinear variable transformation from original, correlated probability distributions to uncorrelated standardized probability distributions. The transformation is based on CDF equivalence and application of the Cholesky factor of a modified correlation matrix. Nataf is currently operational and in use by DAKOTA.
Class hierarchy: IntegrationDriver.
This hierarchy provides a set of drivers for multivariate numerical integration for computing coefficients of a multivariate BasisApproximation. Specific drivers include:
LHSDriver is currently separate from this hierarchy.
Class hierarchy: BasisApproximation.
This hierarchy provides sets of multivariate basis functions for spatial and/or time domains in support of DataTransformation capabilities. Specific basis function sets may include:
Class hierarchy: BasisPolynomial.
This hierarchy provides sets of univariate basis functions in support of the multivariate BasisApproximation capabilities. Specific univariate basis functions options include:
A variety of services are provided in PECOS for parallel computing, memory management, etc. An overview of the classes and member functions involved in performing these services is included below.
A number of test drivers are available in pecos/test that demonstrate interaction with PECOS capabilities. The following drivers demonstrate basis stochastic process sample generation from power spectral density (PSD):
The following drivers demonstrate generation of grids for collocation methods:
pecos_lhs_driver.cpp: generation of an LHS sample set
Finally, the following drivers demonstrate miscellaneous statistical utilities:
Additional development resources include:
1.6.1