Intrepid
/usr/src/RPM/BUILD/trilinos10-10.6.4/packages/intrepid/test/Discretization/Basis/HGRAD_TET_Cn_FEM_ORTH/test_01.cpp
Go to the documentation of this file.
00001 // @HEADER
00002 // ************************************************************************
00003 //
00004 //                           Intrepid Package
00005 //                 Copyright (2007) Sandia Corporation
00006 //
00007 // Under terms of Contract DE-AC04-94AL85000, there is a non-exclusive
00008 // license for use of this work by or on behalf of the U.S. Government.
00009 //
00010 // This library is free software; you can redistribute it and/or modify
00011 // it under the terms of the GNU Lesser General Public License as
00012 // published by the Free Software Foundation; either version 2.1 of the
00013 // License, or (at your option) any later version.
00014 //
00015 // This library is distributed in the hope that it will be useful, but
00016 // WITHOUT ANY WARRANTY; without even the implied warranty of
00017 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00018 // Lesser General Public License for more details.
00019 //
00020 // You should have received a copy of the GNU Lesser General Public
00021 // License along with this library; if not, write to the Free Software
00022 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
00023 // USA
00024 // Questions? Contact Pavel Bochev (pbboche@sandia.gov) or
00025 //                    Denis Ridzal (dridzal@sandia.gov) or
00026 //                    Robert Kirby (robert.c.kirby@ttu.edu)
00027 //
00028 // ************************************************************************
00029 // @HEADER
00030 
00031 
00037 #include "Intrepid_FieldContainer.hpp"
00038 #include "Teuchos_oblackholestream.hpp"
00039 #include "Teuchos_RCP.hpp"
00040 #include "Teuchos_GlobalMPISession.hpp"
00041 #include "Intrepid_HGRAD_TET_Cn_FEM_ORTH.hpp"
00042 #include "Intrepid_CubatureDirectTetDefault.hpp"
00043 #include "Shards_CellTopology.hpp"
00044 #include "Intrepid_PointTools.hpp"
00045 
00046 #include <iostream>
00047 
00048 using namespace Intrepid;
00049 
00055 int main(int argc, char *argv[]) {
00056 
00057   Teuchos::GlobalMPISession mpiSession(&argc, &argv);
00058   
00059   // This little trick lets us print to std::cout only if a (dummy) command-line argument is provided.
00060   int iprint     = argc - 1;
00061   
00062   Teuchos::RCP<std::ostream> outStream;
00063   Teuchos::oblackholestream bhs; // outputs nothing
00064   
00065   if (iprint > 0)
00066     outStream = Teuchos::rcp(&std::cout, false);
00067   else
00068     outStream = Teuchos::rcp(&bhs, false);
00069   
00070   // Save the format state of the original std::cout.
00071   Teuchos::oblackholestream oldFormatState;
00072   oldFormatState.copyfmt(std::cout);
00073   
00074   *outStream \
00075     << "===============================================================================\n" \
00076     << "|                                                                             |\n" \
00077     << "|                           Unit Test OrthogonalBases                         |\n" \
00078     << "|                                                                             |\n" \
00079     << "|     1) Tests orthogonality of tetrahedral orthogonal basis                  |\n" \
00080     << "|                                                                             |\n" \
00081     << "|  Questions? Contact  Pavel Bochev (pbboche@sandia.gov) or                   |\n" \
00082     << "|                      Denis Ridzal (dridzal@sandia.gov) or                   |\n" \
00083     << "|                      Robert Kirby (robert.c.kirby@ttu.edu)                  |\n" \
00084     << "|                                                                             |\n" \
00085     << "|  Intrepid's website: http://trilinos.sandia.gov/packages/intrepid           |\n" \
00086     << "|  Trilinos website:   http://trilinos.sandia.gov                             |\n" \
00087     << "|                                                                             |\n" \
00088     << "===============================================================================\n";
00089   
00090   int errorFlag  = 0;
00091 
00092   const int deg = 3;
00093 
00094   Basis_HGRAD_TET_Cn_FEM_ORTH<double,FieldContainer<double> > myBasis( deg );
00095   const int polydim = myBasis.getCardinality();
00096   
00097   // First, get a reference quadrature rule
00098 
00099   CubatureDirectTetDefault<double,FieldContainer<double> > myCub(2*deg);
00100   FieldContainer<double> cubPts( myCub.getNumPoints() , 3 );
00101   FieldContainer<double> cubWts( myCub.getNumPoints() );
00102 
00103   myCub.getCubature( cubPts , cubWts );
00104 
00105 
00106   // Tabulate the basis functions at the cubature points
00107   FieldContainer<double> basisAtCubPts( polydim , myCub.getNumPoints() );
00108 
00109   myBasis.getValues( basisAtCubPts , cubPts , OPERATOR_VALUE );
00110 
00111 
00112   // Now let's compute the mass matrix
00113   for (int i=0;i<polydim;i++) {
00114     for (int j=i;j<polydim;j++) {
00115       double cur = 0.0;
00116       for (int k=0;k<myCub.getNumPoints();k++) {
00117         cur += cubWts(k) * basisAtCubPts( i , k ) * basisAtCubPts( j , k );
00118       }
00119       if (i != j && fabs( cur ) > 100. * INTREPID_TOL) {
00120         std::cout << "not diagonal" << i << " " << j << " " << fabs( cur ) << std::endl;
00121         errorFlag++;
00122       }
00123       if (i == j && fabs( cur ) <= 100. * INTREPID_TOL) {
00124         std::cout << "zero on diagonal" << i << " " << j << std::endl;
00125       }
00126     }
00127   }
00128   
00129   shards::CellTopology myTet_4( shards::getCellTopologyData< shards::Tetrahedron<4> >() );  
00130   const int np_lattice = PointTools::getLatticeSize( myTet_4 , deg , 0 );
00131   FieldContainer<double> lattice( np_lattice , 3 );
00132   PointTools::getLattice<double,FieldContainer<double> >( lattice , 
00133                                                           myTet_4 , 
00134                                                           deg , 
00135                                                           0 , 
00136                                                           POINTTYPE_EQUISPACED );        
00137                                 
00138   FieldContainer<double> dBasisAtLattice( polydim , np_lattice , 3 );
00139   myBasis.getValues( dBasisAtLattice , lattice , OPERATOR_D1 );
00140 
00141   const double fiat_vals[] = {
00142     0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00,
00143     0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00,
00144     0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00,
00145     0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00,
00146     0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00,
00147     0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00,
00148     0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00,
00149     0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00,
00150     0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00,
00151     0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00,
00152     0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00,
00153     0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00,
00154     0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00,
00155     0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00,
00156     0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00,
00157     0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00,
00158     0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00,
00159     0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00,
00160     0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00,
00161     0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00,
00162     5.477225575051661e+00, 2.738612787525831e+00, 2.738612787525831e+00,
00163     5.477225575051661e+00, 2.738612787525831e+00, 2.738612787525831e+00,
00164     5.477225575051661e+00, 2.738612787525831e+00, 2.738612787525831e+00,
00165     5.477225575051661e+00, 2.738612787525831e+00, 2.738612787525831e+00,
00166     5.477225575051661e+00, 2.738612787525831e+00, 2.738612787525831e+00,
00167     5.477225575051661e+00, 2.738612787525831e+00, 2.738612787525831e+00,
00168     5.477225575051661e+00, 2.738612787525831e+00, 2.738612787525831e+00,
00169     5.477225575051661e+00, 2.738612787525831e+00, 2.738612787525831e+00,
00170     5.477225575051661e+00, 2.738612787525831e+00, 2.738612787525831e+00,
00171     5.477225575051661e+00, 2.738612787525831e+00, 2.738612787525831e+00,
00172     5.477225575051661e+00, 2.738612787525831e+00, 2.738612787525831e+00,
00173     5.477225575051661e+00, 2.738612787525831e+00, 2.738612787525831e+00,
00174     5.477225575051661e+00, 2.738612787525831e+00, 2.738612787525831e+00,
00175     5.477225575051661e+00, 2.738612787525831e+00, 2.738612787525831e+00,
00176     5.477225575051661e+00, 2.738612787525831e+00, 2.738612787525831e+00,
00177     5.477225575051661e+00, 2.738612787525831e+00, 2.738612787525831e+00,
00178     5.477225575051661e+00, 2.738612787525831e+00, 2.738612787525831e+00,
00179     5.477225575051661e+00, 2.738612787525831e+00, 2.738612787525831e+00,
00180     5.477225575051661e+00, 2.738612787525831e+00, 2.738612787525831e+00,
00181     5.477225575051661e+00, 2.738612787525831e+00, 2.738612787525831e+00,
00182     0.000000000000000e+00, 4.743416490252569e+00, 1.581138830084190e+00,
00183     0.000000000000000e+00, 4.743416490252569e+00, 1.581138830084190e+00,
00184     0.000000000000000e+00, 4.743416490252568e+00, 1.581138830084190e+00,
00185     0.000000000000000e+00, 4.743416490252569e+00, 1.581138830084190e+00,
00186     0.000000000000000e+00, 4.743416490252569e+00, 1.581138830084190e+00,
00187     0.000000000000000e+00, 4.743416490252569e+00, 1.581138830084190e+00,
00188     0.000000000000000e+00, 4.743416490252569e+00, 1.581138830084190e+00,
00189     0.000000000000000e+00, 4.743416490252568e+00, 1.581138830084190e+00,
00190     0.000000000000000e+00, 4.743416490252568e+00, 1.581138830084190e+00,
00191     0.000000000000000e+00, 4.743416490252569e+00, 1.581138830084190e+00,
00192     0.000000000000000e+00, 4.743416490252569e+00, 1.581138830084190e+00,
00193     0.000000000000000e+00, 4.743416490252569e+00, 1.581138830084190e+00,
00194     0.000000000000000e+00, 4.743416490252569e+00, 1.581138830084190e+00,
00195     0.000000000000000e+00, 4.743416490252569e+00, 1.581138830084190e+00,
00196     0.000000000000000e+00, 4.743416490252569e+00, 1.581138830084190e+00,
00197     0.000000000000000e+00, 4.743416490252569e+00, 1.581138830084190e+00,
00198     0.000000000000000e+00, 4.743416490252568e+00, 1.581138830084190e+00,
00199     0.000000000000000e+00, 4.743416490252568e+00, 1.581138830084190e+00,
00200     0.000000000000000e+00, 4.743416490252568e+00, 1.581138830084190e+00,
00201     0.000000000000000e+00, 4.743416490252569e+00, 1.581138830084190e+00,
00202     0.000000000000000e+00, 0.000000000000000e+00, 4.472135954999580e+00,
00203     0.000000000000000e+00, 0.000000000000000e+00, 4.472135954999580e+00,
00204     0.000000000000000e+00, 0.000000000000000e+00, 4.472135954999579e+00,
00205     0.000000000000000e+00, 0.000000000000000e+00, 4.472135954999580e+00,
00206     0.000000000000000e+00, 0.000000000000000e+00, 4.472135954999580e+00,
00207     0.000000000000000e+00, 0.000000000000000e+00, 4.472135954999580e+00,
00208     0.000000000000000e+00, 0.000000000000000e+00, 4.472135954999580e+00,
00209     0.000000000000000e+00, 0.000000000000000e+00, 4.472135954999579e+00,
00210     0.000000000000000e+00, 0.000000000000000e+00, 4.472135954999579e+00,
00211     0.000000000000000e+00, 0.000000000000000e+00, 4.472135954999580e+00,
00212     0.000000000000000e+00, 0.000000000000000e+00, 4.472135954999580e+00,
00213     0.000000000000000e+00, 0.000000000000000e+00, 4.472135954999580e+00,
00214     0.000000000000000e+00, 0.000000000000000e+00, 4.472135954999580e+00,
00215     0.000000000000000e+00, 0.000000000000000e+00, 4.472135954999580e+00,
00216     0.000000000000000e+00, 0.000000000000000e+00, 4.472135954999580e+00,
00217     0.000000000000000e+00, 0.000000000000000e+00, 4.472135954999580e+00,
00218     0.000000000000000e+00, 0.000000000000000e+00, 4.472135954999579e+00,
00219     0.000000000000000e+00, 0.000000000000000e+00, 4.472135954999579e+00,
00220     0.000000000000000e+00, 0.000000000000000e+00, 4.472135954999579e+00,
00221     0.000000000000000e+00, 0.000000000000000e+00, 4.472135954999580e+00,
00222     -3.074085229787880e+01, -1.024695076595960e+01, -1.024695076595960e+01,
00223     -1.024695076595960e+01, 0.000000000000000e+00, 0.000000000000000e+00,
00224     1.024695076595960e+01, 1.024695076595960e+01, 1.024695076595960e+01,
00225     3.074085229787880e+01, 2.049390153191920e+01, 2.049390153191920e+01,
00226     -2.049390153191920e+01, -6.831300510639732e+00, -6.831300510639732e+00,
00227     -1.706460100885310e-15, 3.415650255319865e+00, 3.415650255319865e+00,
00228     2.049390153191919e+01, 1.366260102127946e+01, 1.366260102127946e+01,
00229     -1.024695076595960e+01, -3.415650255319866e+00, -3.415650255319866e+00,
00230     1.024695076595960e+01, 6.831300510639730e+00, 6.831300510639730e+00,
00231     0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00,
00232     -2.049390153191920e+01, -6.831300510639732e+00, -6.831300510639732e+00,
00233     -1.706460100885310e-15, 3.415650255319865e+00, 3.415650255319865e+00,
00234     2.049390153191919e+01, 1.366260102127946e+01, 1.366260102127946e+01,
00235     -1.024695076595960e+01, -3.415650255319866e+00, -3.415650255319866e+00,
00236     1.024695076595960e+01, 6.831300510639730e+00, 6.831300510639730e+00,
00237     -1.706460100885310e-15, -5.688200336284365e-16, -5.688200336284365e-16,
00238     -1.024695076595960e+01, -3.415650255319866e+00, -3.415650255319866e+00,
00239     1.024695076595960e+01, 6.831300510639730e+00, 6.831300510639730e+00,
00240     -1.706460100885310e-15, -5.688200336284365e-16, -5.688200336284365e-16,
00241     0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00,
00242     -7.937253933193772e+00, -2.381176179958132e+01, -7.937253933193772e+00,
00243     -7.937253933193772e+00, -1.058300524425836e+01, -5.291502622129182e+00,
00244     -7.937253933193772e+00, 2.645751311064589e+00, -2.645751311064591e+00,
00245     -7.937253933193772e+00, 1.587450786638754e+01, 0.000000000000000e+00,
00246     5.291502622129181e+00, -1.058300524425837e+01, -4.406061034464155e-16,
00247     5.291502622129181e+00, 2.645751311064589e+00, 2.645751311064590e+00,
00248     5.291502622129181e+00, 1.587450786638754e+01, 5.291502622129181e+00,
00249     1.852025917745213e+01, 2.645751311064588e+00, 7.937253933193770e+00,
00250     1.852025917745213e+01, 1.587450786638754e+01, 1.058300524425836e+01,
00251     3.174901573277509e+01, 1.587450786638754e+01, 1.587450786638754e+01,
00252     -5.291502622129182e+00, -1.587450786638755e+01, -5.291502622129182e+00,
00253     -5.291502622129182e+00, -2.645751311064592e+00, -2.645751311064591e+00,
00254     -5.291502622129182e+00, 1.058300524425836e+01, -8.812122068928310e-16,
00255     7.937253933193772e+00, -2.645751311064592e+00, 2.645751311064591e+00,
00256     7.937253933193772e+00, 1.058300524425836e+01, 5.291502622129181e+00,
00257     2.116601048851673e+01, 1.058300524425836e+01, 1.058300524425836e+01,
00258     -2.645751311064591e+00, -7.937253933193774e+00, -2.645751311064591e+00,
00259     -2.645751311064591e+00, 5.291502622129181e+00, -4.406061034464155e-16,
00260     1.058300524425836e+01, 5.291502622129181e+00, 5.291502622129181e+00,
00261     0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00,
00262     -6.480740698407860e+00, -3.240370349203930e+00, -2.268259244442751e+01,
00263     -6.480740698407860e+00, -3.240370349203930e+00, -9.721111047611791e+00,
00264     -6.480740698407860e+00, -3.240370349203930e+00, 3.240370349203929e+00,
00265     -6.480740698407860e+00, -3.240370349203930e+00, 1.620185174601965e+01,
00266     -6.480740698407860e+00, -3.240370349203930e+00, -1.620185174601965e+01,
00267     -6.480740698407860e+00, -3.240370349203930e+00, -3.240370349203932e+00,
00268     -6.480740698407860e+00, -3.240370349203930e+00, 9.721111047611787e+00,
00269     -6.480740698407860e+00, -3.240370349203930e+00, -9.721111047611791e+00,
00270     -6.480740698407860e+00, -3.240370349203930e+00, 3.240370349203929e+00,
00271     -6.480740698407860e+00, -3.240370349203930e+00, -3.240370349203930e+00,
00272     6.480740698407860e+00, 3.240370349203930e+00, -9.721111047611791e+00,
00273     6.480740698407860e+00, 3.240370349203930e+00, 3.240370349203929e+00,
00274     6.480740698407860e+00, 3.240370349203930e+00, 1.620185174601965e+01,
00275     6.480740698407860e+00, 3.240370349203930e+00, -3.240370349203930e+00,
00276     6.480740698407860e+00, 3.240370349203930e+00, 9.721111047611789e+00,
00277     6.480740698407860e+00, 3.240370349203930e+00, 3.240370349203929e+00,
00278     1.944222209522358e+01, 9.721111047611791e+00, 3.240370349203930e+00,
00279     1.944222209522358e+01, 9.721111047611791e+00, 1.620185174601965e+01,
00280     1.944222209522358e+01, 9.721111047611791e+00, 9.721111047611789e+00,
00281     3.240370349203930e+01, 1.620185174601965e+01, 1.620185174601965e+01,
00282     0.000000000000000e+00, -1.833030277982336e+01, -4.582575694955840e+00,
00283     0.000000000000000e+00, -1.833030277982336e+01, -4.582575694955840e+00,
00284     0.000000000000000e+00, -1.833030277982336e+01, -4.582575694955839e+00,
00285     0.000000000000000e+00, -1.833030277982336e+01, -4.582575694955840e+00,
00286     0.000000000000000e+00, -3.055050463303894e+00, 1.527525231651946e+00,
00287     0.000000000000000e+00, -3.055050463303894e+00, 1.527525231651946e+00,
00288     0.000000000000000e+00, -3.055050463303894e+00, 1.527525231651946e+00,
00289     0.000000000000000e+00, 1.222020185321557e+01, 7.637626158259732e+00,
00290     0.000000000000000e+00, 1.222020185321557e+01, 7.637626158259732e+00,
00291     0.000000000000000e+00, 2.749545416973504e+01, 1.374772708486752e+01,
00292     0.000000000000000e+00, -1.222020185321557e+01, -3.055050463303894e+00,
00293     0.000000000000000e+00, -1.222020185321557e+01, -3.055050463303894e+00,
00294     0.000000000000000e+00, -1.222020185321557e+01, -3.055050463303894e+00,
00295     0.000000000000000e+00, 3.055050463303893e+00, 3.055050463303893e+00,
00296     0.000000000000000e+00, 3.055050463303893e+00, 3.055050463303893e+00,
00297     0.000000000000000e+00, 1.833030277982336e+01, 9.165151389911680e+00,
00298     0.000000000000000e+00, -6.110100926607787e+00, -1.527525231651947e+00,
00299     0.000000000000000e+00, -6.110100926607787e+00, -1.527525231651947e+00,
00300     0.000000000000000e+00, 9.165151389911678e+00, 4.582575694955839e+00,
00301     0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00,
00302     0.000000000000000e+00, -5.612486080160912e+00, -1.309580085370879e+01,
00303     0.000000000000000e+00, -5.612486080160912e+00, -1.309580085370879e+01,
00304     0.000000000000000e+00, -5.612486080160911e+00, -1.309580085370879e+01,
00305     0.000000000000000e+00, -5.612486080160912e+00, -1.309580085370879e+01,
00306     0.000000000000000e+00, -5.612486080160912e+00, -1.870828693386971e+00,
00307     0.000000000000000e+00, -5.612486080160912e+00, -1.870828693386971e+00,
00308     0.000000000000000e+00, -5.612486080160912e+00, -1.870828693386971e+00,
00309     0.000000000000000e+00, -5.612486080160911e+00, 9.354143466934852e+00,
00310     0.000000000000000e+00, -5.612486080160911e+00, 9.354143466934852e+00,
00311     0.000000000000000e+00, -5.612486080160912e+00, 2.057911562725668e+01,
00312     0.000000000000000e+00, 5.612486080160912e+00, -5.612486080160912e+00,
00313     0.000000000000000e+00, 5.612486080160912e+00, -5.612486080160912e+00,
00314     0.000000000000000e+00, 5.612486080160912e+00, -5.612486080160912e+00,
00315     0.000000000000000e+00, 5.612486080160912e+00, 5.612486080160912e+00,
00316     0.000000000000000e+00, 5.612486080160912e+00, 5.612486080160912e+00,
00317     0.000000000000000e+00, 5.612486080160912e+00, 1.683745824048274e+01,
00318     0.000000000000000e+00, 1.683745824048273e+01, 1.870828693386970e+00,
00319     0.000000000000000e+00, 1.683745824048273e+01, 1.870828693386970e+00,
00320     0.000000000000000e+00, 1.683745824048273e+01, 1.309580085370879e+01,
00321     0.000000000000000e+00, 2.806243040080456e+01, 9.354143466934854e+00,
00322     0.000000000000000e+00, 0.000000000000000e+00, -1.322875655532295e+01,
00323     0.000000000000000e+00, 0.000000000000000e+00, -1.322875655532295e+01,
00324     0.000000000000000e+00, 0.000000000000000e+00, -1.322875655532295e+01,
00325     0.000000000000000e+00, 0.000000000000000e+00, -1.322875655532295e+01,
00326     0.000000000000000e+00, 0.000000000000000e+00, -1.322875655532295e+01,
00327     0.000000000000000e+00, 0.000000000000000e+00, -1.322875655532295e+01,
00328     0.000000000000000e+00, 0.000000000000000e+00, -1.322875655532295e+01,
00329     0.000000000000000e+00, 0.000000000000000e+00, -1.322875655532295e+01,
00330     0.000000000000000e+00, 0.000000000000000e+00, -1.322875655532295e+01,
00331     0.000000000000000e+00, 0.000000000000000e+00, -1.322875655532295e+01,
00332     0.000000000000000e+00, 0.000000000000000e+00, -8.812122068928310e-16,
00333     0.000000000000000e+00, 0.000000000000000e+00, -8.812122068928310e-16,
00334     0.000000000000000e+00, 0.000000000000000e+00, -8.812122068928310e-16,
00335     0.000000000000000e+00, 0.000000000000000e+00, -8.812122068928310e-16,
00336     0.000000000000000e+00, 0.000000000000000e+00, -8.812122068928310e-16,
00337     0.000000000000000e+00, 0.000000000000000e+00, -8.812122068928310e-16,
00338     0.000000000000000e+00, 0.000000000000000e+00, 1.322875655532295e+01,
00339     0.000000000000000e+00, 0.000000000000000e+00, 1.322875655532295e+01,
00340     0.000000000000000e+00, 0.000000000000000e+00, 1.322875655532295e+01,
00341     0.000000000000000e+00, 0.000000000000000e+00, 2.645751311064591e+01,
00342     9.524704719832526e+01, 2.381176179958132e+01, 2.381176179958132e+01,
00343     -1.058300524425836e+01, -1.322875655532295e+01, -1.322875655532295e+01,
00344     -1.058300524425837e+01, 2.645751311064586e+00, 2.645751311064586e+00,
00345     9.524704719832526e+01, 7.143528539874394e+01, 7.143528539874394e+01,
00346     4.233202097703347e+01, 1.058300524425837e+01, 1.058300524425837e+01,
00347     -1.058300524425836e+01, -5.291502622129184e+00, -5.291502622129184e+00,
00348     4.233202097703344e+01, 3.174901573277508e+01, 3.174901573277508e+01,
00349     1.058300524425837e+01, 2.645751311064592e+00, 2.645751311064592e+00,
00350     1.058300524425836e+01, 7.937253933193769e+00, 7.937253933193769e+00,
00351     0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00,
00352     4.233202097703347e+01, 1.058300524425837e+01, 1.058300524425837e+01,
00353     -1.058300524425836e+01, -5.291502622129184e+00, -5.291502622129184e+00,
00354     4.233202097703344e+01, 3.174901573277508e+01, 3.174901573277508e+01,
00355     1.058300524425837e+01, 2.645751311064592e+00, 2.645751311064592e+00,
00356     1.058300524425836e+01, 7.937253933193769e+00, 7.937253933193769e+00,
00357     2.935026245019504e-31, 7.337565612548760e-32, 7.337565612548760e-32,
00358     1.058300524425837e+01, 2.645751311064592e+00, 2.645751311064592e+00,
00359     1.058300524425836e+01, 7.937253933193769e+00, 7.937253933193769e+00,
00360     2.935026245019504e-31, 7.337565612548760e-32, 7.337565612548760e-32,
00361     0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00,
00362     4.024922359499622e+01, 6.037383539249433e+01, 2.012461179749811e+01,
00363     1.341640786499874e+01, -1.565247584249853e+01, -2.236067977499790e+00,
00364     -1.341640786499874e+01, -2.906888370749726e+01, -1.565247584249853e+01,
00365     -4.024922359499622e+01, 2.012461179749811e+01, -2.012461179749811e+01,
00366     -3.577708763999664e+01, 8.944271909999161e+00, -8.944271909999159e+00,
00367     -2.979040983896728e-15, -4.472135954999583e+00, 4.472135954999577e+00,
00368     3.577708763999663e+01, 4.472135954999577e+01, 2.683281572999747e+01,
00369     -4.919349550499538e+01, -1.118033988749895e+01, -1.565247584249853e+01,
00370     4.919349550499536e+01, 3.801315561749642e+01, 3.354101966249684e+01,
00371     0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00,
00372     1.788854381999832e+01, 2.683281572999748e+01, 8.944271909999161e+00,
00373     1.489520491948364e-15, -1.341640786499874e+01, -4.472135954999580e+00,
00374     -1.788854381999832e+01, 8.944271909999145e+00, -8.944271909999161e+00,
00375     -2.236067977499789e+01, -2.236067977499788e+00, -6.708203932499368e+00,
00376     2.236067977499789e+01, 2.012461179749810e+01, 1.565247584249852e+01,
00377     -8.937122951690183e-15, -2.979040983896728e-15, -2.979040983896728e-15,
00378     4.472135954999580e+00, 6.708203932499371e+00, 2.236067977499790e+00,
00379     -4.472135954999580e+00, 2.236067977499787e+00, -2.236067977499790e+00,
00380     -4.468561475845092e-15, -1.489520491948364e-15, -1.489520491948364e-15,
00381     0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00,
00382     3.485685011586675e+01, 1.161895003862225e+01, 5.809475019311125e+01,
00383     1.161895003862225e+01, 0.000000000000000e+00, -1.549193338482967e+01,
00384     -1.161895003862225e+01, -1.161895003862225e+01, -2.711088342345191e+01,
00385     -3.485685011586675e+01, -2.323790007724450e+01, 2.323790007724450e+01,
00386     2.323790007724450e+01, 7.745966692414833e+00, 2.840187787218773e+01,
00387     1.934943878227166e-15, -3.872983346207416e+00, -1.420093893609386e+01,
00388     -2.323790007724450e+01, -1.549193338482966e+01, 5.163977794943212e+00,
00389     1.161895003862225e+01, 3.872983346207417e+00, 9.036961141150641e+00,
00390     -1.161895003862225e+01, -7.745966692414831e+00, -2.581988897471612e+00,
00391     0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00,
00392     -3.872983346207416e+01, -1.290994448735805e+01, 7.745966692414837e+00,
00393     -3.224906463711944e-15, 6.454972243679026e+00, -3.872983346207421e+00,
00394     3.872983346207415e+01, 2.581988897471610e+01, 4.647580015448898e+01,
00395     -1.936491673103708e+01, -6.454972243679027e+00, -1.290994448735804e+00,
00396     1.936491673103708e+01, 1.290994448735805e+01, 1.807392228230127e+01,
00397     -3.224906463711944e-15, -1.074968821237314e-15, -1.074968821237314e-15,
00398     -5.034878350069641e+01, -1.678292783356547e+01, -1.161895003862225e+01,
00399     5.034878350069641e+01, 3.356585566713093e+01, 3.872983346207415e+01,
00400     -8.384756805651052e-15, -2.794918935217017e-15, -2.794918935217017e-15,
00401     0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00,
00402     1.039230484541326e+01, 6.754998149518620e+01, 1.558845726811989e+01,
00403     1.039230484541326e+01, 2.598076211353317e+01, 8.660254037844389e+00,
00404     1.039230484541326e+01, -1.558845726811989e+01, 1.732050807568879e+00,
00405     1.039230484541326e+01, -5.715767664977296e+01, -5.196152422706632e+00,
00406     -6.928203230275511e+00, -1.039230484541326e+01, -1.039230484541326e+01,
00407     -6.928203230275511e+00, -3.464101615137756e+00, -3.464101615137756e+00,
00408     -6.928203230275511e+00, 3.464101615137752e+00, 3.464101615137753e+00,
00409     2.424871130596427e+01, -1.558845726811990e+01, 1.732050807568872e+00,
00410     2.424871130596427e+01, 3.983716857408416e+01, 2.251666049839540e+01,
00411     1.039230484541326e+02, 5.196152422706632e+01, 5.196152422706632e+01,
00412     4.618802153517007e+00, 3.002221399786055e+01, 6.928203230275511e+00,
00413     4.618802153517007e+00, 2.309401076758505e+00, 2.309401076758504e+00,
00414     4.618802153517007e+00, -2.540341184434353e+01, -2.309401076758502e+00,
00415     1.154700538379250e+00, -9.814954576223640e+00, -4.041451884327382e+00,
00416     1.154700538379250e+00, 1.096965511460288e+01, 5.196152422706630e+00,
00417     4.618802153517006e+01, 2.309401076758502e+01, 2.309401076758503e+01,
00418     1.154700538379252e+00, 7.505553499465138e+00, 1.732050807568878e+00,
00419     1.154700538379252e+00, -6.350852961085883e+00, -5.773502691896256e-01,
00420     1.154700538379251e+01, 5.773502691896255e+00, 5.773502691896256e+00,
00421     0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00,
00422     9.000000000000000e+00, 2.700000000000000e+01, 4.500000000000000e+01,
00423     9.000000000000000e+00, 1.200000000000000e+01, 1.800000000000000e+01,
00424     9.000000000000000e+00, -2.999999999999998e+00, -8.999999999999996e+00,
00425     9.000000000000000e+00, -1.800000000000000e+01, -3.600000000000000e+01,
00426     -6.000000000000000e+00, 1.200000000000000e+01, -1.600000000000000e+01,
00427     -6.000000000000000e+00, -2.999999999999998e+00, -3.000000000000001e+00,
00428     -6.000000000000000e+00, -1.800000000000000e+01, 9.999999999999996e+00,
00429     -2.100000000000000e+01, -2.999999999999997e+00, -3.700000000000000e+01,
00430     -2.100000000000000e+01, -1.800000000000000e+01, 1.599999999999999e+01,
00431     -3.600000000000000e+01, -1.800000000000000e+01, -1.800000000000000e+01,
00432     -1.000000000000000e+01, -3.000000000000001e+01, 6.000000000000003e+00,
00433     -1.000000000000000e+01, -5.000000000000002e+00, -4.999999999999999e+00,
00434     -1.000000000000000e+01, 1.999999999999999e+01, -1.600000000000000e+01,
00435     1.500000000000000e+01, -5.000000000000002e+00, -7.000000000000002e+00,
00436     1.500000000000000e+01, 1.999999999999999e+01, 2.199999999999999e+01,
00437     3.999999999999999e+01, 1.999999999999999e+01, 1.999999999999999e+01,
00438     -1.300000000000000e+01, -3.900000000000001e+01, -8.999999999999998e+00,
00439     -1.300000000000000e+01, 2.599999999999999e+01, -4.000000000000002e+00,
00440     5.199999999999999e+01, 2.599999999999999e+01, 2.599999999999999e+01,
00441     0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00,
00442     7.348469228349536e+00, 3.674234614174768e+00, 5.511351921262152e+01,
00443     7.348469228349536e+00, 3.674234614174768e+00, 2.082066281365702e+01,
00444     7.348469228349536e+00, 3.674234614174768e+00, -1.347219358530748e+01,
00445     7.348469228349536e+00, 3.674234614174768e+00, -4.776504998427198e+01,
00446     7.348469228349536e+00, 3.674234614174768e+00, 3.796709101313927e+01,
00447     7.348469228349536e+00, 3.674234614174768e+00, 3.674234614174771e+00,
00448     7.348469228349536e+00, 3.674234614174768e+00, -3.061862178478972e+01,
00449     7.348469228349536e+00, 3.674234614174768e+00, 2.082066281365702e+01,
00450     7.348469228349536e+00, 3.674234614174768e+00, -1.347219358530748e+01,
00451     7.348469228349536e+00, 3.674234614174768e+00, 3.674234614174768e+00,
00452     -4.082482904638631e+00, -2.041241452319316e+00, -1.347219358530748e+01,
00453     -4.082482904638631e+00, -2.041241452319316e+00, -2.041241452319317e+00,
00454     -4.082482904638631e+00, -2.041241452319316e+00, 9.389710680668845e+00,
00455     -4.082482904638631e+00, -2.041241452319316e+00, -7.756717518813399e+00,
00456     -4.082482904638631e+00, -2.041241452319316e+00, 3.674234614174765e+00,
00457     -4.082482904638631e+00, -2.041241452319316e+00, -2.041241452319317e+00,
00458     3.021037349432586e+01, 1.510518674716293e+01, -1.347219358530748e+01,
00459     3.021037349432586e+01, 1.510518674716293e+01, 4.368256707963334e+01,
00460     3.021037349432586e+01, 1.510518674716293e+01, 1.510518674716292e+01,
00461     1.102270384252430e+02, 5.511351921262151e+01, 5.511351921262151e+01,
00462     0.000000000000000e+00, 4.500000000000001e+01, 9.000000000000000e+00,
00463     0.000000000000000e+00, 4.500000000000001e+01, 9.000000000000000e+00,
00464     0.000000000000000e+00, 4.499999999999999e+01, 9.000000000000000e+00,
00465     0.000000000000000e+00, 4.500000000000001e+01, 9.000000000000000e+00,
00466     0.000000000000000e+00, -1.000000000000000e+01, -5.999999999999999e+00,
00467     0.000000000000000e+00, -1.000000000000000e+01, -5.999999999999999e+00,
00468     0.000000000000000e+00, -1.000000000000000e+01, -5.999999999999999e+00,
00469     0.000000000000000e+00, 4.999999999999996e+00, 8.999999999999996e+00,
00470     0.000000000000000e+00, 4.999999999999996e+00, 8.999999999999996e+00,
00471     0.000000000000000e+00, 9.000000000000000e+01, 5.400000000000000e+01,
00472     0.000000000000000e+00, 2.000000000000000e+01, 4.000000000000000e+00,
00473     0.000000000000000e+00, 2.000000000000000e+01, 4.000000000000000e+00,
00474     0.000000000000000e+00, 2.000000000000000e+01, 4.000000000000000e+00,
00475     0.000000000000000e+00, -5.000000000000002e+00, -1.000000000000001e+00,
00476     0.000000000000000e+00, -5.000000000000002e+00, -1.000000000000001e+00,
00477     0.000000000000000e+00, 4.000000000000000e+01, 2.400000000000000e+01,
00478     0.000000000000000e+00, 5.000000000000000e+00, 1.000000000000000e+00,
00479     0.000000000000000e+00, 5.000000000000000e+00, 1.000000000000000e+00,
00480     0.000000000000000e+00, 9.999999999999996e+00, 5.999999999999998e+00,
00481     0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00,
00482     0.000000000000000e+00, 2.078460969082653e+01, 2.598076211353316e+01,
00483     0.000000000000000e+00, 2.078460969082653e+01, 2.598076211353316e+01,
00484     0.000000000000000e+00, 2.078460969082652e+01, 2.598076211353316e+01,
00485     0.000000000000000e+00, 2.078460969082653e+01, 2.598076211353316e+01,
00486     0.000000000000000e+00, 3.464101615137756e+00, -1.327905619136139e+01,
00487     0.000000000000000e+00, 3.464101615137756e+00, -1.327905619136139e+01,
00488     0.000000000000000e+00, 3.464101615137756e+00, -1.327905619136139e+01,
00489     0.000000000000000e+00, -1.385640646055102e+01, -6.350852961085886e+00,
00490     0.000000000000000e+00, -1.385640646055102e+01, -6.350852961085886e+00,
00491     0.000000000000000e+00, -3.117691453623979e+01, 4.676537180435969e+01,
00492     0.000000000000000e+00, -2.309401076758503e+01, 3.464101615137756e+00,
00493     0.000000000000000e+00, -2.309401076758503e+01, 3.464101615137756e+00,
00494     0.000000000000000e+00, -2.309401076758503e+01, 3.464101615137756e+00,
00495     0.000000000000000e+00, 5.773502691896256e+00, 1.154700538379249e+00,
00496     0.000000000000000e+00, 5.773502691896256e+00, 1.154700538379249e+00,
00497     0.000000000000000e+00, 3.464101615137754e+01, 4.503332099679081e+01,
00498     0.000000000000000e+00, -3.002221399786054e+01, -5.196152422706631e+00,
00499     0.000000000000000e+00, -3.002221399786054e+01, -5.196152422706631e+00,
00500     0.000000000000000e+00, 4.503332099679080e+01, 2.944486372867091e+01,
00501     0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00,
00502     0.000000000000000e+00, 6.363961030678929e+00, 3.181980515339464e+01,
00503     0.000000000000000e+00, 6.363961030678929e+00, 3.181980515339464e+01,
00504     0.000000000000000e+00, 6.363961030678928e+00, 3.181980515339464e+01,
00505     0.000000000000000e+00, 6.363961030678929e+00, 3.181980515339464e+01,
00506     0.000000000000000e+00, 6.363961030678929e+00, 2.121320343559643e+00,
00507     0.000000000000000e+00, 6.363961030678929e+00, 2.121320343559643e+00,
00508     0.000000000000000e+00, 6.363961030678929e+00, 2.121320343559643e+00,
00509     0.000000000000000e+00, 6.363961030678928e+00, -2.757716446627535e+01,
00510     0.000000000000000e+00, 6.363961030678928e+00, -2.757716446627535e+01,
00511     0.000000000000000e+00, 6.363961030678929e+00, -5.727564927611036e+01,
00512     0.000000000000000e+00, -3.535533905932738e+00, -7.778174593052023e+00,
00513     0.000000000000000e+00, -3.535533905932738e+00, -7.778174593052023e+00,
00514     0.000000000000000e+00, -3.535533905932738e+00, -7.778174593052023e+00,
00515     0.000000000000000e+00, -3.535533905932738e+00, 2.121320343559642e+00,
00516     0.000000000000000e+00, -3.535533905932738e+00, 2.121320343559642e+00,
00517     0.000000000000000e+00, -3.535533905932738e+00, 1.202081528017131e+01,
00518     0.000000000000000e+00, 2.616295090390225e+01, -7.778174593052024e+00,
00519     0.000000000000000e+00, 2.616295090390225e+01, -7.778174593052024e+00,
00520     0.000000000000000e+00, 2.616295090390225e+01, 4.171930009000628e+01,
00521     0.000000000000000e+00, 9.545941546018391e+01, 3.181980515339464e+01,
00522     0.000000000000000e+00, 0.000000000000000e+00, 2.700000000000001e+01,
00523     0.000000000000000e+00, 0.000000000000000e+00, 2.700000000000001e+01,
00524     0.000000000000000e+00, 0.000000000000000e+00, 2.700000000000000e+01,
00525     0.000000000000000e+00, 0.000000000000000e+00, 2.700000000000001e+01,
00526     0.000000000000000e+00, 0.000000000000000e+00, 2.700000000000001e+01,
00527     0.000000000000000e+00, 0.000000000000000e+00, 2.700000000000001e+01,
00528     0.000000000000000e+00, 0.000000000000000e+00, 2.700000000000001e+01,
00529     0.000000000000000e+00, 0.000000000000000e+00, 2.700000000000000e+01,
00530     0.000000000000000e+00, 0.000000000000000e+00, 2.700000000000000e+01,
00531     0.000000000000000e+00, 0.000000000000000e+00, 2.700000000000001e+01,
00532     0.000000000000000e+00, 0.000000000000000e+00, -8.000000000000000e+00,
00533     0.000000000000000e+00, 0.000000000000000e+00, -8.000000000000000e+00,
00534     0.000000000000000e+00, 0.000000000000000e+00, -8.000000000000000e+00,
00535     0.000000000000000e+00, 0.000000000000000e+00, -8.000000000000000e+00,
00536     0.000000000000000e+00, 0.000000000000000e+00, -8.000000000000000e+00,
00537     0.000000000000000e+00, 0.000000000000000e+00, -8.000000000000000e+00,
00538     0.000000000000000e+00, 0.000000000000000e+00, 1.299999999999999e+01,
00539     0.000000000000000e+00, 0.000000000000000e+00, 1.299999999999999e+01,
00540     0.000000000000000e+00, 0.000000000000000e+00, 1.299999999999999e+01,
00541     0.000000000000000e+00, 0.000000000000000e+00, 9.000000000000000e+01
00542   };
00543 
00544   int fiat_index_cur = 0;
00545   for (int i=0;i<polydim;i++) {
00546     for (int j=0;j<np_lattice;j++) {
00547       for (int k=0;k<3;k++) {
00548         if (std::abs( dBasisAtLattice(i,j,k) - fiat_vals[fiat_index_cur] ) > 10.0*INTREPID_TOL ) {
00549           errorFlag++;
00550           *outStream << std::setw(70) << "^^^^----FAILURE!" << "\n";
00551           
00552           // Output the multi-index of the value where the error is:
00553           *outStream << " At multi-index { ";
00554           *outStream << i << " " << j << " " << k;
00555           *outStream << "}  computed value: " << dBasisAtLattice(i,j,k)
00556                      << " but correct value: " << fiat_vals[fiat_index_cur] << "\n";
00557           *outStream << "Difference: " << std::abs( dBasisAtLattice(i,j,k) - fiat_vals[fiat_index_cur] ) << "\n";
00558         }
00559         fiat_index_cur++;
00560       }
00561     }
00562   }
00563 
00564 
00565   if (errorFlag != 0)
00566     std::cout << "End Result: TEST FAILED\n";
00567   else
00568     std::cout << "End Result: TEST PASSED\n";
00569   
00570   // reset format state of std::cout
00571   std::cout.copyfmt(oldFormatState);
00572   
00573   return errorFlag;
00574 }