Stokhos Development
Public Member Functions | Protected Attributes
Stokhos::KL::ExponentialRandomField< value_type > Class Template Reference

Class representing a KL expansion of an exponential random field. More...

#include <Stokhos_KL_ExponentialRandomField.hpp>

List of all members.

Public Member Functions

 ExponentialRandomField (Teuchos::ParameterList &solverParams)
 ~ExponentialRandomField ()
int spatialDimension () const
 Return spatial dimension of the field.
int stochasticDimension () const
 Return stochastic dimension of the field.
template<typename rvar_type >
< rvar_type, value_type >
evaluate (const Teuchos::Array< value_type > &point, const Teuchos::Array< rvar_type > &random_variables) const
 Evaluate random field at a point.
value_type evaluate_mean (const Teuchos::Array< value_type > &point) const
 Evaluate mean of random field at a point.
value_type evaluate_standard_deviation (const Teuchos::Array< value_type > &point) const
 Evaluate standard deviation of random field at a point.
value_type evaluate_eigenfunction (const Teuchos::Array< value_type > &point, int i) const
 Evaluate given eigenfunction at a point.
const Teuchos::Array
< ProductEigenPair< value_type > > & 
getEigenPairs () const
 Get eigenpairs.
void print (std::ostream &os) const
 Print KL expansion.

Protected Attributes

int num_KL
 Number of KL terms.
int dim
 Dimension of expansion.
Teuchos::Array< value_type > domain_upper_bound
 Domain upper bounds.
Teuchos::Array< value_type > domain_lower_bound
 Domeain lower bounds.
Teuchos::Array< value_type > correlation_length
 Correlation lengths.
value_type mean
 Mean of random field.
value_type std_dev
 Standard deviation of random field.
< ProductEigenPair< value_type > > 
 Product eigenfunctions.

Detailed Description

template<typename value_type>
class Stokhos::KL::ExponentialRandomField< value_type >

Class representing a KL expansion of an exponential random field.

This class provides a means for evaluating a random field $a(x,\theta)$, $x\in D$, $\theta\in\Omega$ through the KL expansion

\[ a(x,\theta) \approx a_0 + \sigma\sum_{k=1}^M \sqrt{\lambda_k}b_k(x)\xi_k(\theta) \]

where $D$ is a $d$-dimensional hyper-rectangle, for the case when the covariance function of $a$ is exponential:

\[ \mbox{cov}(x,x') = \sigma\exp(-|x_1-x_1'|/L_1-...-|x_d-x_d'|/L_d). \]

In this case, the covariance function and domain factor into a product 1-dimensional covariance functions over 1-dimensional domains, and thus the eigenfunctions $b_k$ and eigenvalues $\lambda_k$ factor into a product of corresponding 1-dimensional eigenfunctions and values. These are computed by the OneDExponentialCovarianceFunction class For a given value of $M$, the code works by computing the $M$ eigenfunctions for each direction using this class. Then all possible tensor products of these one-dimensional eigenfunctions are formed, with corresponding eigenvalue given by the product of the one-dimensional eigenvalues. These eigenvalues are then sorted in increasing order, and the first $M$ are chosen as the $M$ KL eigenpairs. Then given values for the random variables $\xi_k$, the class provides a routine for evaluating a realization of the random field.

The idea for this approach was provided by Chris Miller.

All data is passed into this class through a Teuchos::ParameterList, which accepts the following parameters:

Additionally parameters for the OneDExponentialCovarianceFunction are also accepted.

The documentation for this class was generated from the following files:
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator