53 #include "Teuchos_oblackholestream.hpp"
54 #include "Teuchos_RCP.hpp"
55 #include "Teuchos_GlobalMPISession.hpp"
57 using namespace Intrepid;
62 long double evalQuad(
int order,
int power, EIntrepidBurkardt rule) {
66 lineCub.update(-1.0,lineCub2,1.0);
67 int size = lineCub.getNumPoints();
70 lineCub.getCubature(cubPoints,cubWeights);
73 for (
int i=0; i<size; i++) {
74 Q += cubWeights(i)*powl(cubPoints(i),(
long double)power);
92 int main(
int argc,
char *argv[]) {
94 Teuchos::GlobalMPISession mpiSession(&argc, &argv);
98 int iprint = argc - 1;
99 Teuchos::RCP<std::ostream> outStream;
100 Teuchos::oblackholestream bhs;
102 outStream = Teuchos::rcp(&std::cout,
false);
104 outStream = Teuchos::rcp(&bhs,
false);
107 Teuchos::oblackholestream oldFormatState;
108 oldFormatState.copyfmt(std::cout);
111 <<
"===============================================================================\n" \
113 <<
"| Unit Test (CubatureLineSorted) |\n" \
115 <<
"| 1) Computing differential integrals of monomials in 1D |\n" \
117 <<
"| Questions? Contact Drew Kouri (dpkouri@sandia.gov) or |\n" \
118 <<
"| Denis Ridzal (dridzal@sandia.gov). |\n" \
120 <<
"| Intrepid's website: http://trilinos.sandia.gov/packages/intrepid |\n" \
121 <<
"| Trilinos website: http://trilinos.sandia.gov |\n" \
123 <<
"===============================================================================\n"\
124 <<
"| TEST 15: differential integrals of monomials in 1D |\n"\
125 <<
"===============================================================================\n";
129 long double abstol = 1.0e+05*INTREPID_TOL;
131 long double analyticInt = 0;
132 long double testInt = 0;
134 EIntrepidBurkardt rule = BURK_LEGENDRE;
136 *outStream <<
"\nDifferential integrals of monomials on a reference line:\n";
139 *outStream <<
"Testing " << EIntrepidBurkardtToString(rule) <<
"\n";
141 for (
int i=2; i <= maxOrder; i++) {
143 for (
int j=0; j <= maxDeg; j++) {
144 testInt = evalQuad(i,j,rule);
145 long double absdiff = std::fabs(testInt);
146 *outStream <<
"Cubature order " << std::setw(2) << std::left << i
148 <<
"x^" << std::setw(2) << std::left << j <<
":" <<
" "
149 << std::scientific << std::setprecision(16) << testInt
150 <<
" " << analyticInt
151 <<
" " << std::setprecision(4) << absdiff <<
" "
152 <<
"<?" <<
" " << abstol
154 if (absdiff > abstol) {
156 *outStream << std::right << std::setw(104) <<
"^^^^---FAILURE!\n";
162 catch (std::logic_error err) {
163 *outStream << err.what() <<
"\n";
169 std::cout <<
"End Result: TEST FAILED\n";
171 std::cout <<
"End Result: TEST PASSED\n";
174 std::cout.copyfmt(oldFormatState);
Utilizes cubature (integration) rules contained in the library sandia_rules (John Burkardt...
Header file for the Intrepid::CubatureLineSorted class.
Implementation of a templated lexicographical container for a multi-indexed scalar quantity...