61 Teuchos::ParameterList solverParams;
62 solverParams.set(
"Nonlinear Solver Tolerance", 1e-8);
64 typedef cov_type::eigen_pair_type eigen_pair_type;
65 cov_type cov(M, a, b, L, 0, solverParams);
68 const Teuchos::Array<eigen_pair_type>& eigs = cov.getEigenPairs();
72 for (
int i=0; i<M-1; i++) {
73 out <<
"eigs[" << i <<
"] = " << eigs[i].eig_val << std::endl;
74 if (eigs[i].eig_val < eigs[i+1].eig_val)
86 Teuchos::ParameterList solverParams;
87 solverParams.set(
"Nonlinear Solver Tolerance", 1e-8);
89 typedef cov_type::eigen_pair_type eigen_pair_type;
90 cov_type cov(M, a, b, L, 0, solverParams);
93 const Teuchos::Array<eigen_pair_type>& eigs = cov.getEigenPairs();
97 double pi = 4.0*std::atan(1.0);
98 for (
int i=0; i<M-1; i++) {
99 double omega1 = eigs[i].eig_func.getFrequency();
100 double omega2 = eigs[i].eig_func.getFrequency();
102 out <<
"eigs[" << i <<
"].frequency = " << omega1 << std::endl;
103 if (omega2 - omega1 > pi)
114 double center = (b+a)/2.0;
115 double width = (b-a)/2.0;
116 double w_coeff = 2.0*width;
120 Teuchos::Array<double> quad_points, quad_weights;
121 Teuchos::Array< Teuchos::Array<double> > quad_values;
122 basis.
getQuadPoints(p, quad_points, quad_weights, quad_values);
125 Teuchos::ParameterList solverParams;
127 typedef cov_type::eigen_pair_type eigen_pair_type;
128 cov_type cov(M, a, b, L, 0, solverParams);
131 const Teuchos::Array<eigen_pair_type>& eigs = cov.getEigenPairs();
133 int nqp = quad_weights.size();
138 for (
int i=0; i<M; i++) {
141 double integral = 0.0;
143 for (
int qp=0; qp<nqp; qp++) {
144 double xp = center + quad_points[qp]*width;
145 double w = w_coeff*quad_weights[qp];
146 double val = eigs[i].eig_func.evaluate(xp);
150 out <<
"lambda = " << eigs[i].eig_val <<
", integral = " << integral
151 <<
", rhs = " << rhs <<
", error = " << integral-rhs << std::endl;
164 double center = (b+a)/2.0;
165 double width = (b-a)/2.0;
166 double w_coeff = 2.0*width;
170 Teuchos::Array<double> quad_points, quad_weights;
171 Teuchos::Array< Teuchos::Array<double> > quad_values;
172 basis.
getQuadPoints(p, quad_points, quad_weights, quad_values);
175 Teuchos::ParameterList solverParams;
177 typedef cov_type::eigen_pair_type eigen_pair_type;
178 cov_type cov(M, a, b, L, 0, solverParams);
181 const Teuchos::Array<eigen_pair_type>& eigs = cov.getEigenPairs();
183 int nqp = quad_weights.size();
187 for (
int i=0; i<M; i++) {
188 for (
int j=0;
j<i;
j++) {
191 double integral = 0.0;
193 for (
int qp=0; qp<nqp; qp++) {
194 double xp = center + quad_points[qp]*width;
195 double w = w_coeff*quad_weights[qp];
196 double val1 = eigs[i].eig_func.evaluate(xp);
197 double val2 = eigs[
j].eig_func.evaluate(xp);
198 integral += w*val1*val2;
201 out <<
"lambda = " << eigs[i].eig_val <<
", integral = " << integral
202 <<
", rhs = " << rhs <<
", error = " << integral-rhs << std::endl;
216 double center = (b+a)/2.0;
217 double width = (b-a)/2.0;
218 double x = center + 0.25*width;
219 double w_coeff = 2.0*width;
223 Teuchos::Array<double> quad_points, quad_weights;
224 Teuchos::Array< Teuchos::Array<double> > quad_values;
225 basis.
getQuadPoints(p, quad_points, quad_weights, quad_values);
228 Teuchos::ParameterList solverParams;
230 typedef cov_type::eigen_pair_type eigen_pair_type;
231 cov_type cov(M, a, b, L, 0, solverParams);
234 const Teuchos::Array<eigen_pair_type>& eigs = cov.getEigenPairs();
236 int nqp = quad_weights.size();
241 for (
int i=0; i<M; i++) {
244 double integral = 0.0;
245 for (
int qp=0; qp<nqp; qp++) {
246 double xp = center + quad_points[qp]*width;
247 double w = w_coeff*quad_weights[qp];
249 w*cov.evaluateCovariance(x,xp)*eigs[i].eig_func.evaluate(xp);
253 double rhs = eigs[i].eig_val*eigs[i].eig_func.evaluate(x);
254 out <<
"lambda = " << eigs[i].eig_val <<
", integral = " << integral
255 <<
", rhs = " << rhs <<
", error = " << integral-rhs << std::endl;
267 Teuchos::Array< Teuchos::RCP<const Stokhos::OneDOrthogPolyBasis<int,double> > > bases(d);
268 for (
int i=0; i<d; i++)
270 Teuchos::RCP<const Stokhos::CompletePolynomialBasis<int,double> > basis =
275 const Teuchos::Array< Teuchos::Array<double> >& quad_points =
277 const Teuchos::Array<double>& quad_weights = quad.
getQuadWeights();
280 Teuchos::ParameterList solverParams;
281 solverParams.set(
"Number of KL Terms", M);
282 solverParams.set(
"Mean", 0.5);
283 solverParams.set(
"Standard Deviation", 1.25);
284 Teuchos::Array<double> domain_upper(d);
285 Teuchos::Array<double> domain_lower(d);
286 Teuchos::Array<double>correlation_length(d);
287 for (
int i=0; i<d; i++) {
288 domain_upper[i] = 1.5;
289 domain_lower[i] = -1.0;
290 correlation_length[i] = 10.0;
292 solverParams.set(
"Domain Upper Bounds", domain_upper);
293 solverParams.set(
"Domain Lower Bounds", domain_lower);
294 solverParams.set(
"Correlation Lengths", correlation_length);
300 int nqp = quad_weights.size();
305 Teuchos::Array<double> x(d);
306 Teuchos::Array<double> domain_center(d), domain_width(d);
307 double w_coeff = 1.0;
308 for (
int i=0; i<d; i++) {
309 domain_center[i] = (domain_upper[i] + domain_lower[i])/2.0;
310 domain_width[i] = (domain_upper[i] - domain_lower[i])/2.0;
311 x[i] = domain_center[i] + 0.25*domain_width[i];
312 w_coeff *= 2.0*domain_width[i];
317 for (
int i=0; i<M; i++) {
320 double integral = 0.0;
321 for (
int qp=0; qp<nqp; qp++) {
322 Teuchos::Array<double> xp = quad_points[qp];
323 for (
int j=0;
j<d;
j++)
324 xp[
j] = domain_center[
j] + xp[
j]*domain_width[
j];
326 for (
int j=0;
j<d;
j++)
327 val += std::abs(x[
j] - xp[
j])/correlation_length[
j];
328 double w = w_coeff*quad_weights[qp];
335 out <<
"lambda = " << rf.
eigenvalue(i) <<
", integral = " << integral
336 <<
", rhs = " << rhs <<
", error = " << integral-rhs << std::endl;