52 #include "Shards_CellTopology.hpp"
54 #include "Teuchos_oblackholestream.hpp"
55 #include "Teuchos_RCP.hpp"
56 #include "Teuchos_GlobalMPISession.hpp"
57 #include "Teuchos_ScalarTraits.hpp"
60 using namespace Intrepid;
61 using namespace shards;
63 #define INTREPID_TEST_COMMAND( S , throwCounter, nException ) \
69 catch (const std::logic_error & err) { \
71 *outStream << "Expected Error " << nException << " -------------------------------------------------------------\n"; \
72 *outStream << err.what() << '\n'; \
73 *outStream << "-------------------------------------------------------------------------------" << "\n\n"; \
79 int main(
int argc,
char *argv[]) {
81 Teuchos::GlobalMPISession mpiSession(&argc, &argv);
87 int iprint = argc - 1;
89 Teuchos::RCP<std::ostream> outStream;
90 Teuchos::oblackholestream bhs;
93 outStream = Teuchos::rcp(&std::cout,
false);
95 outStream = Teuchos::rcp(&bhs,
false);
98 Teuchos::oblackholestream oldFormatState;
99 oldFormatState.copyfmt(std::cout);
102 <<
"===============================================================================\n" \
104 <<
"| Unit Test CellTools |\n" \
106 <<
"| 1) Mapping to and from reference cells with base and extended topologies|\n" \
107 <<
"| using default initial guesses when computing the inverse F^{-1} |\n" \
108 <<
"| 2) Repeat all tests from 1) using user-defined initial guess for F^{-1} |\n" \
109 <<
"| 3) Exception testing |\n" \
111 <<
"| Questions? Contact Pavel Bochev (pbboche@sandia.gov) |\n" \
112 <<
"| Denis Ridzal (dridzal@sandia.gov), or |\n" \
113 <<
"| Kara Peterson (kjpeter@sandia.gov) |\n" \
115 <<
"| Intrepid's website: http://trilinos.sandia.gov/packages/intrepid |\n" \
116 <<
"| Trilinos website: http://trilinos.sandia.gov |\n" \
118 <<
"===============================================================================\n";
123 std::vector<shards::CellTopology> supportedTopologies;
124 supportedTopologies.push_back(shards::getCellTopologyData<Triangle<3> >() );
125 supportedTopologies.push_back(shards::getCellTopologyData<Triangle<6> >() );
126 supportedTopologies.push_back(shards::getCellTopologyData<Quadrilateral<4> >() );
127 supportedTopologies.push_back(shards::getCellTopologyData<Quadrilateral<9> >() );
128 supportedTopologies.push_back(shards::getCellTopologyData<Tetrahedron<4> >() );
129 supportedTopologies.push_back(shards::getCellTopologyData<Tetrahedron<10> >() );
130 supportedTopologies.push_back(shards::getCellTopologyData<Hexahedron<8> >() );
131 supportedTopologies.push_back(shards::getCellTopologyData<Hexahedron<20> >() );
132 supportedTopologies.push_back(shards::getCellTopologyData<Hexahedron<27> >() );
133 supportedTopologies.push_back(shards::getCellTopologyData<Wedge<6> >() );
134 supportedTopologies.push_back(shards::getCellTopologyData<Wedge<15> >() );
135 supportedTopologies.push_back(shards::getCellTopologyData<Wedge<18> >() );
136 supportedTopologies.push_back(shards::getCellTopologyData<Pyramid<5> >() );
137 supportedTopologies.push_back(shards::getCellTopologyData<Pyramid<13> >() );
140 std::vector<shards::CellTopology>::iterator topo_iterator;
147 <<
"===============================================================================\n"\
148 <<
"| Test 1: computing F(x) and F^{-1}(x) using default initial guesses. |\n"\
149 <<
"===============================================================================\n\n";
175 for(topo_iterator = supportedTopologies.begin(); topo_iterator != supportedTopologies.end(); ++topo_iterator){
178 Teuchos::RCP<Cubature<double> > cellCubature = cubFactory.
create( (*topo_iterator), 4);
179 int cubDim = cellCubature -> getDimension();
180 int numPts = cellCubature -> getNumPoints();
181 cubPoints.
resize(numPts, cubDim);
182 cubWeights.
resize(numPts);
183 cellCubature -> getCubature(cubPoints, cubWeights);
187 int numNodes = (*topo_iterator).getNodeCount();
188 int cellDim = (*topo_iterator).getDimension();
189 cellWorkset.
resize(numCells, numNodes, cellDim);
193 CellTools::getReferenceSubcellNodes(refCellNodes, cellDim, 0, (*topo_iterator) );
196 for(
int cellOrd = 0; cellOrd < numCells; cellOrd++){
199 for(
int nodeOrd = 0; nodeOrd < numNodes; nodeOrd++){
200 for(
int d = 0; d < cellDim; d++){
201 double delta = Teuchos::ScalarTraits<double>::random()/16.0;
202 cellWorkset(cellOrd, nodeOrd, d) = refCellNodes(nodeOrd, d) + delta;
211 physPoints.
resize(numPts, cubDim);
212 controlPoints.
resize(numPts, cubDim);
215 <<
" Mapping a set of " << numPts <<
" points to one cell in a workset of " << numCells <<
" "
216 << (*topo_iterator).getName() <<
" cells. \n";
218 for(
int cellOrd = 0; cellOrd < numCells; cellOrd++){
221 CellTools::mapToPhysicalFrame(physPoints, cubPoints, cellWorkset, (*topo_iterator), cellOrd);
223 CellTools::mapToReferenceFrame(controlPoints, physPoints, cellWorkset, (*topo_iterator), cellOrd);
226 for(
int pt = 0; pt < numPts; pt++){
227 for(
int d = 0; d < cellDim; d++){
229 if( abs( controlPoints(pt, d) - cubPoints(pt, d) ) > 100.0*INTREPID_TOL ){
232 << std::setw(70) <<
"^^^^----FAILURE!" <<
"\n"
233 <<
" Mapping a single point set to a single physical cell in a workset failed for: \n"
234 <<
" Cell Topology = " << (*topo_iterator).getName() <<
"\n"
235 <<
" Physical cell ordinal in workset = " << cellOrd <<
"\n"
236 <<
" Reference point ordinal = " << setprecision(12) << pt <<
"\n"
237 <<
" At reference point coordinate = " << setprecision(12) << d <<
"\n"
238 <<
" Original value = " << cubPoints(pt, d) <<
"\n"
239 <<
" F^{-1}F(P_d) = " << controlPoints(pt, d) <<
"\n";
250 controlPoints.
clear();
251 physPoints.
resize(numCells, numPts, cubDim);
252 controlPoints.
resize(numCells, numPts, cubDim);
255 <<
" Mapping a set of " << numPts <<
" points to all cells in workset of " << numCells <<
" "
256 << (*topo_iterator).getName() <<
" cells. \n";
259 CellTools::mapToPhysicalFrame(physPoints, cubPoints, cellWorkset, (*topo_iterator));
261 CellTools::mapToReferenceFrame(controlPoints, physPoints, cellWorkset, (*topo_iterator));
264 for(
int cellOrd = 0; cellOrd < numCells; cellOrd++){
265 for(
int pt = 0; pt < numPts; pt++){
266 for(
int d = 0; d < cellDim; d++){
268 if( abs( controlPoints(cellOrd, pt, d) - cubPoints(pt, d) ) > 100.0*INTREPID_TOL ){
271 << std::setw(70) <<
"^^^^----FAILURE!" <<
"\n"
272 <<
" Mapping a single point set to all physical cells in a workset failed for: \n"
273 <<
" Cell Topology = " << (*topo_iterator).getName() <<
"\n"
274 <<
" Physical cell ordinal in workset = " << cellOrd <<
"\n"
275 <<
" Reference point ordinal = " << setprecision(12) << pt <<
"\n"
276 <<
" At reference point coordinate = " << setprecision(12) << d <<
"\n"
277 <<
" Original value = " << cubPoints(pt, d) <<
"\n"
278 <<
" F^{-1}F(P_d) = " << controlPoints(cellOrd, pt, d) <<
"\n";
289 controlPoints.
clear();
290 refPoints.
resize(numCells, numPts, cubDim);
291 physPoints.
resize(numCells, numPts, cubDim);
292 controlPoints.
resize(numCells, numPts, cubDim);
295 for(
int c = 0; c < numCells; c++){
296 for(
int pt = 0; pt < numPts; pt++){
297 for(
int d = 0; d < cellDim; d++){
298 refPoints(c, pt, d) = cubPoints(pt, d);
304 <<
" Mapping " << numCells <<
" sets of " << numPts <<
" points to corresponding cells in workset of " << numCells <<
" "
305 << (*topo_iterator).getName() <<
" cells. \n";
308 CellTools::mapToPhysicalFrame(physPoints, refPoints, cellWorkset, (*topo_iterator));
310 CellTools::mapToReferenceFrame(controlPoints, physPoints, cellWorkset, (*topo_iterator));
313 for(
int cellOrd = 0; cellOrd < numCells; cellOrd++){
314 for(
int pt = 0; pt < numPts; pt++){
315 for(
int d = 0; d < cellDim; d++){
317 if( abs( controlPoints(cellOrd, pt, d) - cubPoints(pt, d) ) > 100.0*INTREPID_TOL ){
320 << std::setw(70) <<
"^^^^----FAILURE!" <<
"\n"
321 <<
" Mapping multiple point sets to corresponding physical cells in a workset failed for: \n"
322 <<
" Cell Topology = " << (*topo_iterator).getName() <<
"\n"
323 <<
" Physical cell ordinal in workset = " << cellOrd <<
"\n"
324 <<
" Reference point ordinal = " << setprecision(12) << pt <<
"\n"
325 <<
" At reference point coordinate = " << setprecision(12) << d <<
"\n"
326 <<
" Original value = " << refPoints(cellOrd, pt, d) <<
"\n"
327 <<
" F^{-1}F(P_d) = " << controlPoints(cellOrd, pt, d) <<
"\n";
339 catch (
const std::logic_error & err) {
340 *outStream << err.what() <<
"\n";
350 <<
"===============================================================================\n"\
351 <<
"| Test 2: computing F(x) and F^{-1}(x) using user-defined initial guess. |\n"\
352 <<
"===============================================================================\n\n";
378 for(topo_iterator = supportedTopologies.begin(); topo_iterator != supportedTopologies.end(); ++topo_iterator){
381 Teuchos::RCP<Cubature<double> > cellCubature = cubFactory.
create( (*topo_iterator), 4);
382 int cubDim = cellCubature -> getDimension();
383 int numPts = cellCubature -> getNumPoints();
384 cubPoints.
resize(numPts, cubDim);
385 cubWeights.
resize(numPts);
386 cellCubature -> getCubature(cubPoints, cubWeights);
390 int numNodes = (*topo_iterator).getNodeCount();
391 int cellDim = (*topo_iterator).getDimension();
392 cellWorkset.
resize(numCells, numNodes, cellDim);
396 CellTools::getReferenceSubcellNodes(refCellNodes, cellDim, 0, (*topo_iterator) );
399 for(
int cellOrd = 0; cellOrd < numCells; cellOrd++){
402 for(
int nodeOrd = 0; nodeOrd < numNodes; nodeOrd++){
403 for(
int d = 0; d < cellDim; d++){
404 double delta = Teuchos::ScalarTraits<double>::random()/16.0;
405 cellWorkset(cellOrd, nodeOrd, d) = refCellNodes(nodeOrd, d) + delta;
414 physPoints.
resize(numPts, cubDim);
415 controlPoints.
resize(numPts, cubDim);
418 <<
" Mapping a set of " << numPts <<
" points to one cell in a workset of " << numCells <<
" "
419 << (*topo_iterator).getName() <<
" cells. \n";
421 for(
int cellOrd = 0; cellOrd < numCells; cellOrd++){
424 CellTools::mapToPhysicalFrame(physPoints, cubPoints, cellWorkset, (*topo_iterator), cellOrd);
426 CellTools::mapToReferenceFrameInitGuess(controlPoints, cubPoints, physPoints, cellWorkset, (*topo_iterator), cellOrd);
429 for(
int pt = 0; pt < numPts; pt++){
430 for(
int d = 0; d < cellDim; d++){
432 if( abs( controlPoints(pt, d) - cubPoints(pt, d) ) > 100.0*INTREPID_TOL ){
435 << std::setw(70) <<
"^^^^----FAILURE!" <<
"\n"
436 <<
" Mapping a single point set to a single physical cell in a workset failed for: \n"
437 <<
" Cell Topology = " << (*topo_iterator).getName() <<
"\n"
438 <<
" Physical cell ordinal in workset = " << cellOrd <<
"\n"
439 <<
" Reference point ordinal = " << setprecision(12) << pt <<
"\n"
440 <<
" At reference point coordinate = " << setprecision(12) << d <<
"\n"
441 <<
" Original value = " << cubPoints(pt, d) <<
"\n"
442 <<
" F^{-1}F(P_d) = " << controlPoints(pt, d) <<
"\n";
453 controlPoints.
clear();
454 physPoints.
resize(numCells, numPts, cubDim);
455 controlPoints.
resize(numCells, numPts, cubDim);
458 initialGuess.
resize(numCells, numPts, cubDim);
459 for(
int c = 0; c < numCells; c++){
460 for(
int pt = 0; pt < numPts; pt++){
461 for(
int d = 0; d < cellDim; d++){
462 initialGuess(c, pt, d) = cubPoints(pt, d);
468 <<
" Mapping a set of " << numPts <<
" points to all cells in workset of " << numCells <<
" "
469 << (*topo_iterator).getName() <<
" cells. \n";
472 CellTools::mapToPhysicalFrame(physPoints, cubPoints, cellWorkset, (*topo_iterator));
474 CellTools::mapToReferenceFrameInitGuess(controlPoints, initialGuess, physPoints, cellWorkset, (*topo_iterator));
477 for(
int cellOrd = 0; cellOrd < numCells; cellOrd++){
478 for(
int pt = 0; pt < numPts; pt++){
479 for(
int d = 0; d < cellDim; d++){
481 if( abs( controlPoints(cellOrd, pt, d) - cubPoints(pt, d) ) > 100.0*INTREPID_TOL ){
484 << std::setw(70) <<
"^^^^----FAILURE!" <<
"\n"
485 <<
" Mapping a single point set to all physical cells in a workset failed for: \n"
486 <<
" Cell Topology = " << (*topo_iterator).getName() <<
"\n"
487 <<
" Physical cell ordinal in workset = " << cellOrd <<
"\n"
488 <<
" Reference point ordinal = " << setprecision(12) << pt <<
"\n"
489 <<
" At reference point coordinate = " << setprecision(12) << d <<
"\n"
490 <<
" Original value = " << cubPoints(pt, d) <<
"\n"
491 <<
" F^{-1}F(P_d) = " << controlPoints(cellOrd, pt, d) <<
"\n";
503 controlPoints.
clear();
504 physPoints.
resize(numCells, numPts, cubDim);
505 controlPoints.
resize(numCells, numPts, cubDim);
508 <<
" Mapping " << numCells <<
" sets of " << numPts <<
" points to corresponding cells in workset of " << numCells <<
" "
509 << (*topo_iterator).getName() <<
" cells. \n";
512 CellTools::mapToPhysicalFrame(physPoints, initialGuess, cellWorkset, (*topo_iterator));
514 CellTools::mapToReferenceFrameInitGuess(controlPoints, initialGuess, physPoints, cellWorkset, (*topo_iterator));
517 for(
int cellOrd = 0; cellOrd < numCells; cellOrd++){
518 for(
int pt = 0; pt < numPts; pt++){
519 for(
int d = 0; d < cellDim; d++){
521 if( abs( controlPoints(cellOrd, pt, d) - cubPoints(pt, d) ) > 100.0*INTREPID_TOL ){
524 << std::setw(70) <<
"^^^^----FAILURE!" <<
"\n"
525 <<
" Mapping multiple point sets to corresponding physical cells in a workset failed for: \n"
526 <<
" Cell Topology = " << (*topo_iterator).getName() <<
"\n"
527 <<
" Physical cell ordinal in workset = " << cellOrd <<
"\n"
528 <<
" Reference point ordinal = " << setprecision(12) << pt <<
"\n"
529 <<
" At reference point coordinate = " << setprecision(12) << d <<
"\n"
530 <<
" Original value = " << initialGuess(cellOrd, pt, d) <<
"\n"
531 <<
" F^{-1}F(P_d) = " << controlPoints(cellOrd, pt, d) <<
"\n";
543 catch (
const std::logic_error & err) {
544 *outStream << err.what() <<
"\n";
550 <<
"===============================================================================\n"\
551 <<
"| Test 3: Exception testing - only when HAVE_INTREPID_DEBUG is defined. |\n"\
552 <<
"===============================================================================\n\n";
562 int throwCounter = 0;
566 #ifdef HAVE_INTREPID_DEBUG
589 topo_iterator = supportedTopologies.begin() + 1;
590 D = (*topo_iterator).getDimension();
591 N = (*topo_iterator).getNodeCount();
592 V = (*topo_iterator).getVertexCount();
597 cellWorkset.
resize(C, N, D);
598 INTREPID_TEST_COMMAND( CellTools::setJacobian(jacobian, points, cellWorkset, (*topo_iterator) ),
599 throwCounter, nException );
603 INTREPID_TEST_COMMAND( CellTools::setJacobian(jacobian, points, cellWorkset, (*topo_iterator) ),
604 throwCounter, nException );
607 cellWorkset.
resize(C, N, D);
609 INTREPID_TEST_COMMAND( CellTools::setJacobian(jacobian, points, cellWorkset, (*topo_iterator) ),
610 throwCounter, nException );
614 INTREPID_TEST_COMMAND( CellTools::setJacobian(jacobian, points, cellWorkset, (*topo_iterator), 0 ),
615 throwCounter, nException );
618 jacobian.
resize(C, P, D, D);
619 points.
resize(C, P, D - 1);
620 INTREPID_TEST_COMMAND( CellTools::setJacobian(jacobian, points, cellWorkset, (*topo_iterator) ),
621 throwCounter, nException );
624 jacobian.
resize(C, P, D, D);
625 points.
resize(C, P - 1, D);
626 INTREPID_TEST_COMMAND( CellTools::setJacobian(jacobian, points, cellWorkset, (*topo_iterator) ),
627 throwCounter, nException );
630 jacobian.
resize(C, P, D, D);
631 points.
resize(C - 1, P, D);
632 INTREPID_TEST_COMMAND( CellTools::setJacobian(jacobian, points, cellWorkset, (*topo_iterator) ),
633 throwCounter, nException );
636 jacobian.
resize(C, P, D, D);
638 cellWorkset.
resize(C, N, D - 1);
639 INTREPID_TEST_COMMAND( CellTools::setJacobian(jacobian, points, cellWorkset, (*topo_iterator) ),
640 throwCounter, nException );
643 jacobian.
resize(C, P, D, D);
645 cellWorkset.
resize(C - 1, N, D);
646 INTREPID_TEST_COMMAND( CellTools::setJacobian(jacobian, points, cellWorkset, (*topo_iterator) ),
647 throwCounter, nException );
652 cellWorkset.
resize(C, N, D);
653 INTREPID_TEST_COMMAND( CellTools::setJacobian(jacobian, points, cellWorkset, (*topo_iterator) ),
654 throwCounter, nException );
661 jacobian.
resize(C, P, D, D);
662 jacobianInv.
resize(P, D, D);
663 INTREPID_TEST_COMMAND( CellTools::setJacobianInv(jacobianInv, jacobian),
664 throwCounter, nException );
669 INTREPID_TEST_COMMAND( CellTools::setJacobianInv(jacobianInv, jacobian),
670 throwCounter, nException );
673 jacobian.
resize(C, P, D, D - 1);
674 jacobianInv.
resize(C, P, D, D);
675 INTREPID_TEST_COMMAND( CellTools::setJacobianInv(jacobianInv, jacobian),
676 throwCounter, nException );
679 jacobian.
resize(C, P, D - 1, D);
680 jacobianInv.
resize(C, P, D, D);
681 INTREPID_TEST_COMMAND( CellTools::setJacobianInv(jacobianInv, jacobian),
682 throwCounter, nException );
685 jacobian.
resize(C, P - 1, D, D);
686 jacobianInv.
resize(C, P, D, D);
687 INTREPID_TEST_COMMAND( CellTools::setJacobianInv(jacobianInv, jacobian),
688 throwCounter, nException );
691 jacobian.
resize(C - 1, P, D, D);
692 jacobianInv.
resize(C, P, D, D);
693 INTREPID_TEST_COMMAND( CellTools::setJacobianInv(jacobianInv, jacobian),
694 throwCounter, nException );
701 jacobian.
resize(C, P, D, D);
702 jacobianDet.
resize(C, P, D);
703 INTREPID_TEST_COMMAND( CellTools::setJacobianDet(jacobianDet, jacobian),
704 throwCounter, nException );
709 INTREPID_TEST_COMMAND( CellTools::setJacobianDet(jacobianDet, jacobian),
710 throwCounter, nException );
715 INTREPID_TEST_COMMAND( CellTools::setJacobianDet(jacobianDet, jacobian),
716 throwCounter, nException );
719 jacobian.
resize(C, P, D, D);
721 INTREPID_TEST_COMMAND( CellTools::setJacobianDet(jacobianDet, jacobian),
722 throwCounter, nException );
725 jacobian.
resize(C, P, D, D);
726 jacobianDet.
resize(C, P-1);
727 INTREPID_TEST_COMMAND( CellTools::setJacobianDet(jacobianDet, jacobian),
728 throwCounter, nException );
731 jacobian.
resize(C - 1, P, D, D);
733 INTREPID_TEST_COMMAND( CellTools::setJacobianDet(jacobianDet, jacobian),
734 throwCounter, nException );
743 cellWorkset.
resize(C, N, D);
744 INTREPID_TEST_COMMAND( CellTools::mapToPhysicalFrame(physPoints, refPoints, cellWorkset, (*topo_iterator) ),
745 throwCounter, nException );
749 physPoints.
resize(C, P, D);
750 INTREPID_TEST_COMMAND( CellTools::mapToPhysicalFrame(physPoints, refPoints, cellWorkset, (*topo_iterator) ),
751 throwCounter, nException );
754 refPoints.
resize(C, P, D);
756 cellWorkset.
resize(C, N, D);
757 INTREPID_TEST_COMMAND( CellTools::mapToPhysicalFrame(physPoints, refPoints, cellWorkset, (*topo_iterator) ),
758 throwCounter, nException );
761 refPoints.
resize(C, P, D);
762 physPoints.
resize(C, P, D - 1);
763 INTREPID_TEST_COMMAND( CellTools::mapToPhysicalFrame(physPoints, refPoints, cellWorkset, (*topo_iterator) ),
764 throwCounter, nException );
767 refPoints.
resize(C, P, D);
768 physPoints.
resize(C, P - 1, D);
769 INTREPID_TEST_COMMAND( CellTools::mapToPhysicalFrame(physPoints, refPoints, cellWorkset, (*topo_iterator) ),
770 throwCounter, nException );
773 refPoints.
resize(C, P, D);
774 physPoints.
resize(C - 1, P, D);
775 INTREPID_TEST_COMMAND( CellTools::mapToPhysicalFrame(physPoints, refPoints, cellWorkset, (*topo_iterator) ),
776 throwCounter, nException );
780 physPoints.
resize(C, P, D);
781 INTREPID_TEST_COMMAND( CellTools::mapToPhysicalFrame(physPoints, refPoints, cellWorkset, (*topo_iterator), 0 ),
782 throwCounter, nException );
789 refPoints.
resize(C, P, D);
791 cellWorkset.
resize(C, N, D);
792 INTREPID_TEST_COMMAND( CellTools::mapToReferenceFrame(refPoints, physPoints, cellWorkset, (*topo_iterator) ),
793 throwCounter, nException );
796 refPoints.
resize(C, P, D);
797 physPoints.
resize(C, P, D);
798 INTREPID_TEST_COMMAND( CellTools::mapToReferenceFrame(refPoints, physPoints, cellWorkset, (*topo_iterator), 0 ),
799 throwCounter, nException );
804 INTREPID_TEST_COMMAND( CellTools::mapToReferenceFrame(refPoints, physPoints, cellWorkset, (*topo_iterator)),
805 throwCounter, nException );
808 refPoints.
resize(C, P, D - 1);
809 physPoints.
resize(C, P, D);
810 INTREPID_TEST_COMMAND( CellTools::mapToReferenceFrame(refPoints, physPoints, cellWorkset, (*topo_iterator)),
811 throwCounter, nException );
814 refPoints.
resize(C, P - 1, D);
815 physPoints.
resize(C, P, D);
816 INTREPID_TEST_COMMAND( CellTools::mapToReferenceFrame(refPoints, physPoints, cellWorkset, (*topo_iterator)),
817 throwCounter, nException );
820 refPoints.
resize(C - 1, P, D);
821 physPoints.
resize(C, P, D);
822 INTREPID_TEST_COMMAND( CellTools::mapToReferenceFrame(refPoints, physPoints, cellWorkset, (*topo_iterator)),
823 throwCounter, nException );
826 refPoints.
resize(C, P, D);
827 physPoints.
resize(C, P, D);
829 INTREPID_TEST_COMMAND( CellTools::mapToReferenceFrame(refPoints, physPoints, cellWorkset, (*topo_iterator)),
830 throwCounter, nException );
837 refPoints.
resize(C, P, D);
838 physPoints.
resize(C, P, D);
840 cellWorkset.
resize(C, N, D);
841 INTREPID_TEST_COMMAND( CellTools::mapToReferenceFrameInitGuess(refPoints, initGuess, physPoints, cellWorkset, (*topo_iterator) ),
842 throwCounter, nException );
847 initGuess.
resize(C, P, D);
848 INTREPID_TEST_COMMAND( CellTools::mapToReferenceFrameInitGuess(refPoints, initGuess, physPoints, cellWorkset, (*topo_iterator), 0),
849 throwCounter, nException );
852 refPoints.
resize(C, P, D);
853 physPoints.
resize(C, P, D);
854 initGuess.
resize(C, P, D - 1);
855 INTREPID_TEST_COMMAND( CellTools::mapToReferenceFrameInitGuess(refPoints, initGuess, physPoints, cellWorkset, (*topo_iterator)),
856 throwCounter, nException );
859 initGuess.
resize(C, P - 1, D);
860 INTREPID_TEST_COMMAND( CellTools::mapToReferenceFrameInitGuess(refPoints, initGuess, physPoints, cellWorkset, (*topo_iterator)),
861 throwCounter, nException );
864 initGuess.
resize(C - 1, P, D);
865 INTREPID_TEST_COMMAND( CellTools::mapToReferenceFrameInitGuess(refPoints, initGuess, physPoints, cellWorkset, (*topo_iterator)),
866 throwCounter, nException );
879 D = (*topo_iterator).getDimension();
882 refSubcellPoints.
resize(P,3);
884 INTREPID_TEST_COMMAND( CellTools::mapToReferenceSubcell(refSubcellPoints, paramPoints, subcellDim, subcellOrd, (*topo_iterator)),
885 throwCounter, nException );
888 refSubcellPoints.
resize(P);
890 INTREPID_TEST_COMMAND( CellTools::mapToReferenceSubcell(refSubcellPoints, paramPoints, subcellDim, subcellOrd, (*topo_iterator)),
891 throwCounter, nException );
894 refSubcellPoints.
resize(P, 2);
896 INTREPID_TEST_COMMAND( CellTools::mapToReferenceSubcell(refSubcellPoints, paramPoints, subcellDim, subcellOrd, (*topo_iterator)),
897 throwCounter, nException );
900 refSubcellPoints.
resize(P, 3);
902 INTREPID_TEST_COMMAND( CellTools::mapToReferenceSubcell(refSubcellPoints, paramPoints, subcellDim, subcellOrd, (*topo_iterator)),
903 throwCounter, nException );
912 refEdgeTangent.
resize(C,P,D);
913 INTREPID_TEST_COMMAND( CellTools::getReferenceEdgeTangent(refEdgeTangent, 0, (*topo_iterator)),
914 throwCounter, nException );
918 INTREPID_TEST_COMMAND( CellTools::getReferenceEdgeTangent(refEdgeTangent, 0, (*topo_iterator)),
919 throwCounter, nException );
922 refEdgeTangent.
resize(C,P,D);
923 INTREPID_TEST_COMMAND( CellTools::getReferenceEdgeTangent(refEdgeTangent, 10, (*topo_iterator)),
924 throwCounter, nException );
936 INTREPID_TEST_COMMAND( CellTools::getReferenceFaceTangents(refFaceTanU, refFaceTanV, 0, (*topo_iterator)),
937 throwCounter, nException );
942 INTREPID_TEST_COMMAND( CellTools::getReferenceFaceTangents(refFaceTanU, refFaceTanV, 0, (*topo_iterator)),
943 throwCounter, nException );
946 refFaceTanU.
resize(D - 1);
948 INTREPID_TEST_COMMAND( CellTools::getReferenceFaceTangents(refFaceTanU, refFaceTanV, 0, (*topo_iterator)),
949 throwCounter, nException );
953 refFaceTanV.
resize(D - 1);
954 INTREPID_TEST_COMMAND( CellTools::getReferenceFaceTangents(refFaceTanU, refFaceTanV, 0, (*topo_iterator)),
955 throwCounter, nException );
960 INTREPID_TEST_COMMAND( CellTools::getReferenceFaceTangents(refFaceTanU, refFaceTanV, 10, (*topo_iterator)),
961 throwCounter, nException );
970 refSideNormal.
resize(C,P);
971 INTREPID_TEST_COMMAND( CellTools::getReferenceSideNormal(refSideNormal, 0, (*topo_iterator)),
972 throwCounter, nException );
973 INTREPID_TEST_COMMAND( CellTools::getReferenceFaceNormal(refSideNormal, 0, (*topo_iterator)),
974 throwCounter, nException );
977 refSideNormal.
resize(D - 1);
978 INTREPID_TEST_COMMAND( CellTools::getReferenceSideNormal(refSideNormal, 0, (*topo_iterator)),
979 throwCounter, nException );
980 INTREPID_TEST_COMMAND( CellTools::getReferenceFaceNormal(refSideNormal, 0, (*topo_iterator)),
981 throwCounter, nException );
985 INTREPID_TEST_COMMAND( CellTools::getReferenceSideNormal(refSideNormal, 10, (*topo_iterator)),
986 throwCounter, nException );
987 INTREPID_TEST_COMMAND( CellTools::getReferenceFaceNormal(refSideNormal, 10, (*topo_iterator)),
988 throwCounter, nException );
991 topo_iterator = supportedTopologies.begin();
992 D = (*topo_iterator).getDimension();
993 refSideNormal.
resize(D - 1);
994 INTREPID_TEST_COMMAND( CellTools::getReferenceSideNormal(refSideNormal, 0, (*topo_iterator)),
995 throwCounter, nException );
999 INTREPID_TEST_COMMAND( CellTools::getReferenceSideNormal(refSideNormal, 10, (*topo_iterator)),
1000 throwCounter, nException );
1004 INTREPID_TEST_COMMAND( CellTools::getReferenceFaceNormal(refSideNormal, 0, (*topo_iterator)),
1005 throwCounter, nException );
1015 INTREPID_TEST_COMMAND(CellTools::checkPointInclusion(point, (*topo_iterator).getDimension() + 1, (*topo_iterator) ),
1016 throwCounter, nException );
1019 CellTopology pentagon_5(shards::getCellTopologyData<shards::Pentagon<> >() );
1020 INTREPID_TEST_COMMAND(CellTools::checkPointInclusion(point, pentagon_5.getDimension(), pentagon_5 ),
1021 throwCounter, nException );
1024 points.
resize(10, 10, (*topo_iterator).getDimension() + 1);
1025 INTREPID_TEST_COMMAND(CellTools::checkPointsetInclusion(points, (*topo_iterator) ),
1026 throwCounter, nException );
1029 points.
resize(10,10,10,3);
1030 INTREPID_TEST_COMMAND(CellTools::checkPointsetInclusion(points, (*topo_iterator) ),
1031 throwCounter, nException );
1034 points.
resize(10,10,(*topo_iterator).getDimension() );
1036 INTREPID_TEST_COMMAND(CellTools::checkPointwiseInclusion(inCell, points, (*topo_iterator) ),
1037 throwCounter, nException );
1040 points.
resize(10, (*topo_iterator).getDimension() );
1042 INTREPID_TEST_COMMAND(CellTools::checkPointwiseInclusion(inCell, points, (*topo_iterator) ),
1043 throwCounter, nException );
1046 points.
resize((*topo_iterator).getDimension() );
1048 INTREPID_TEST_COMMAND(CellTools::checkPointwiseInclusion(inCell, points, (*topo_iterator) ),
1049 throwCounter, nException );
1052 points.
resize(10, 10, (*topo_iterator).getDimension() );
1054 INTREPID_TEST_COMMAND(CellTools::checkPointwiseInclusion(inCell, points, (*topo_iterator) ),
1055 throwCounter, nException );
1058 points.
resize(10, 10, (*topo_iterator).getDimension() );
1060 INTREPID_TEST_COMMAND(CellTools::checkPointwiseInclusion(inCell, points, (*topo_iterator) ),
1061 throwCounter, nException );
1064 points.
resize(10, (*topo_iterator).getDimension() );
1066 INTREPID_TEST_COMMAND(CellTools::checkPointwiseInclusion(inCell, points, (*topo_iterator) ),
1067 throwCounter, nException );
1070 points.
resize(10, 10, (*topo_iterator).getDimension() + 1);
1072 INTREPID_TEST_COMMAND(CellTools::checkPointwiseInclusion(inCell, points, (*topo_iterator) ),
1073 throwCounter, nException );
1076 points.
resize(10,10,10,3);
1077 INTREPID_TEST_COMMAND(CellTools::checkPointwiseInclusion(inCell, points, (*topo_iterator) ),
1078 throwCounter, nException );
1081 physPoints.
resize(C, P, D);
1084 cellWorkset.
resize(C, N, D, D);
1085 INTREPID_TEST_COMMAND(CellTools::checkPointwiseInclusion(inCell, physPoints, cellWorkset, (*topo_iterator) ),
1086 throwCounter, nException );
1089 cellWorkset.
resize(C, N + 1, D);
1090 INTREPID_TEST_COMMAND(CellTools::checkPointwiseInclusion(inCell, physPoints, cellWorkset, (*topo_iterator) ),
1091 throwCounter, nException );
1094 cellWorkset.
resize(C, N, D + 1);
1095 INTREPID_TEST_COMMAND(CellTools::checkPointwiseInclusion(inCell, physPoints, cellWorkset, (*topo_iterator) ),
1096 throwCounter, nException );
1099 cellWorkset.
resize(C, N, D);
1100 INTREPID_TEST_COMMAND(CellTools::checkPointwiseInclusion(inCell, physPoints, cellWorkset, (*topo_iterator), C + 1 ),
1101 throwCounter, nException );
1104 INTREPID_TEST_COMMAND(CellTools::checkPointwiseInclusion(inCell, physPoints, cellWorkset, (*topo_iterator), 0 ),
1105 throwCounter, nException );
1110 INTREPID_TEST_COMMAND(CellTools::checkPointwiseInclusion(inCell, physPoints, cellWorkset, (*topo_iterator) ),
1111 throwCounter, nException );
1114 physPoints.
resize(C, P, D);
1116 INTREPID_TEST_COMMAND(CellTools::checkPointwiseInclusion(inCell, physPoints, cellWorkset, (*topo_iterator)),
1117 throwCounter, nException );
1122 INTREPID_TEST_COMMAND(CellTools::checkPointwiseInclusion(inCell, physPoints, cellWorkset, (*topo_iterator), 0),
1123 throwCounter, nException );
1126 physPoints.
resize(C, P, D);
1128 INTREPID_TEST_COMMAND(CellTools::checkPointwiseInclusion(inCell, physPoints, cellWorkset, (*topo_iterator)),
1129 throwCounter, nException );
1132 physPoints.
resize(C + 1, P, D);
1134 INTREPID_TEST_COMMAND(CellTools::checkPointwiseInclusion(inCell, physPoints, cellWorkset, (*topo_iterator)),
1135 throwCounter, nException );
1140 INTREPID_TEST_COMMAND(CellTools::checkPointwiseInclusion(inCell, physPoints, cellWorkset, (*topo_iterator), 0 ),
1141 throwCounter, nException );
1151 INTREPID_TEST_COMMAND(CellTools::getReferenceVertex(pentagon_5, 0), throwCounter, nException);
1152 INTREPID_TEST_COMMAND(CellTools::getReferenceNode(pentagon_5, 0), throwCounter, nException);
1153 INTREPID_TEST_COMMAND(CellTools::getReferenceSubcellVertices(subcellNodes, 0, 0, pentagon_5), throwCounter, nException);
1154 INTREPID_TEST_COMMAND(CellTools::getReferenceSubcellNodes(subcellNodes, 0, 0, pentagon_5), throwCounter, nException);
1157 topo_iterator = supportedTopologies.end() - 1;
1158 D = (*topo_iterator).getDimension();
1159 int subcDim = D - 1;
1160 int S = (*topo_iterator).getSubcellCount(subcDim);
1161 V = (*topo_iterator).getVertexCount(subcDim, S - 1);
1162 subcellNodes.
resize(V, D);
1164 INTREPID_TEST_COMMAND(CellTools::getReferenceSubcellVertices(subcellNodes, subcDim, S + 1, (*topo_iterator)),
1165 throwCounter, nException);
1168 INTREPID_TEST_COMMAND(CellTools::getReferenceSubcellVertices(subcellNodes, D + 1, S, (*topo_iterator)),
1169 throwCounter, nException);
1172 subcellNodes.
resize(V, D, D);
1173 INTREPID_TEST_COMMAND(CellTools::getReferenceSubcellVertices(subcellNodes, subcDim, S - 1, (*topo_iterator)),
1174 throwCounter, nException);
1177 subcellNodes.
resize(V - 1, D);
1178 INTREPID_TEST_COMMAND(CellTools::getReferenceSubcellVertices(subcellNodes, subcDim, S - 1, (*topo_iterator)),
1179 throwCounter, nException);
1182 subcellNodes.
resize(V, D - 1);
1183 INTREPID_TEST_COMMAND(CellTools::getReferenceSubcellVertices(subcellNodes, subcDim, S - 1, (*topo_iterator)),
1184 throwCounter, nException);
1187 N = (*topo_iterator).getNodeCount(subcDim, S - 1);
1188 subcellNodes.
resize(N, D);
1190 INTREPID_TEST_COMMAND(CellTools::getReferenceSubcellNodes(subcellNodes, subcDim, S + 1, (*topo_iterator)),
1191 throwCounter, nException);
1194 INTREPID_TEST_COMMAND(CellTools::getReferenceSubcellNodes(subcellNodes, D + 1, S, (*topo_iterator)),
1195 throwCounter, nException);
1198 subcellNodes.
resize(N, D, D);
1199 INTREPID_TEST_COMMAND(CellTools::getReferenceSubcellNodes(subcellNodes, subcDim, S - 1, (*topo_iterator)),
1200 throwCounter, nException);
1203 subcellNodes.
resize(N - 1, D);
1204 INTREPID_TEST_COMMAND(CellTools::getReferenceSubcellNodes(subcellNodes, subcDim, S - 1, (*topo_iterator)),
1205 throwCounter, nException);
1208 subcellNodes.
resize(N, D - 1);
1209 INTREPID_TEST_COMMAND(CellTools::getReferenceSubcellNodes(subcellNodes, subcDim, S - 1, (*topo_iterator)),
1210 throwCounter, nException);
1219 catch (
const std::logic_error & err) {
1220 *outStream << err.what() <<
"\n";
1225 if (throwCounter != nException) {
1227 *outStream << std::setw(70) <<
"^^^^----FAILURE!" <<
"\n";
1232 std::cout <<
"End Result: TEST FAILED\n";
1234 std::cout <<
"End Result: TEST PASSED\n";
1237 std::cout.copyfmt(oldFormatState);
void clear()
Clears FieldContainer to trivial container (one with rank = 0 and size = 0)
Header file for utility class to provide multidimensional containers.
Header file for the abstract base class Intrepid::DefaultCubatureFactory.
void resize(const int dim0)
Resizes FieldContainer to a rank-1 container with the specified dimension, initialized by 0...
A factory class that generates specific instances of cubatures.
Teuchos::RCP< Cubature< Scalar, ArrayPoint, ArrayWeight > > create(const shards::CellTopology &cellTopology, const std::vector< int > °ree)
Factory method.