25 #include <queso/ExponentialMatrixCovarianceFunction.h>
30 template<
class P_V,
class P_M,
class Q_V,
class Q_M>
43 *
m_env.
subDisplayFile() <<
"Entering ExponentialMatrixCovarianceFunction<P_V,P_M,Q_V,Q_M>::constructor()"
55 "ExponentialMatrixCovarianceFunction<P_V,P_M,Q_V,Q_M>::Constructor()",
56 "m_sigmas has invalid number of rows");
60 "ExponentialMatrixCovarianceFunction<P_V,P_M,Q_V,Q_M>::Constructor()",
61 "m_sigmas has invalid number of columns");
65 "ExponentialMatrixCovarianceFunction<P_V,P_M,Q_V,Q_M>::Constructor()",
66 "m_as has invalid number of rows");
70 "ExponentialMatrixCovarianceFunction<P_V,P_M,Q_V,Q_M>::Constructor()",
71 "m_as has invalid number of columns");
74 *
m_env.
subDisplayFile() <<
"Leaving ExponentialMatrixCovarianceFunction<P_V,P_M,Q_V,Q_M>::constructor()"
80 template<
class P_V,
class P_M,
class Q_V,
class Q_M>
83 if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 54)) {
84 *m_env.subDisplayFile() <<
"Entering ExponentialMatrixCovarianceFunction<P_V,P_M,Q_V,Q_M>::destructor()"
85 <<
": prefix = " << m_prefix
92 if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 54)) {
93 *m_env.subDisplayFile() <<
"Leaving ExponentialMatrixCovarianceFunction<P_V,P_M,Q_V,Q_M>::destructor()"
94 <<
": prefix = " << m_prefix
99 template<
class P_V,
class P_M,
class Q_V,
class Q_M>
103 if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 54)) {
104 *m_env.subDisplayFile() <<
"Entering ExponentialMatrixCovarianceFunction<P_V,P_M,Q_V,Q_M>::covMatrix()"
108 unsigned int matrixOrder = m_imageSet.vectorSpace().dimLocal();
112 "ExponentialMatrixCovarianceFunction<P_V,P_M,Q_V,Q_M>::covMatrix()",
113 "imageMatrix has invalid number of rows");
117 "ExponentialMatrixCovarianceFunction<P_V,P_M,Q_V,Q_M>::covMatrix()",
118 "imageMatrix has invalid number of columns");
120 double tmpSq = -(domainVector1 - domainVector2).norm2Sq();
122 for (
unsigned int i = 0; i < matrixOrder; ++i) {
123 for (
unsigned int j = 0; j < matrixOrder; ++j) {
124 double tmp = tmpSq/( (*m_sigmas)(i,j) * (*m_sigmas)(i,j) );
125 imageMatrix(i,j) = (*m_as)(i,j) * std::exp(tmp);
129 if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 54)) {
130 *m_env.subDisplayFile() <<
"Leaving ExponentialMatrixCovarianceFunction<P_V,P_M,Q_V,Q_M>::covMatrix()"
unsigned int dimLocal() const
const VectorSet< Q_V, Q_M > & m_imageSet
int worldRank() const
Returns the process world rank.
std::ofstream * subDisplayFile() const
Access function for m_subDisplayFile (displays file on stream).
virtual ~ExponentialMatrixCovarianceFunction()
Virtual destructor.
A templated (base) class to accommodate covariance matrix of (random) vector functions.
ExponentialMatrixCovarianceFunction(const char *prefix, const VectorSet< P_V, P_M > &basicDomainSet, const VectorSet< Q_V, Q_M > &imageSet, const Q_M &sigmas, const Q_M &as)
Default constructor.
const BaseEnvironment & m_env
unsigned int displayVerbosity() const
virtual const VectorSpace< V, M > & vectorSpace() const =0
Vector space to which this set belongs to. See template specialization.
void covMatrix(const P_V &domainVector1, const P_V &domainVector2, Q_M &imageMatrix) const
Calculates the covariance matrix, given two parameter domains.
#define UQ_FATAL_TEST_MACRO(test, givenRank, where, what)