|
Intrepid
|
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 }
1.7.4