44 #include <Teuchos_ConfigDefs.hpp> 45 #include <Teuchos_UnitTestHarness.hpp> 46 #include <Teuchos_TimeMonitor.hpp> 47 #include <Teuchos_RCP.hpp> 66 Teuchos::RCP<const Epetra_Comm> comm = Teuchos::rcp(
new Epetra_MpiComm(MPI_COMM_WORLD));
71 int numProc = comm->NumProc();
76 Teuchos::RCP<const Stokhos::CompletePolynomialBasis<int,double> > basis =
buildBasis(num_KL,porder);
77 Teuchos::RCP<Stokhos::Sparse3Tensor<int,double> > Cijk = basis->computeTripleProductTensor();
78 Teuchos::RCP<Stokhos::ParallelData> sg_parallel_data;
81 Teuchos::ParameterList parallelParams;
82 parallelParams.set(
"Number of Spatial Processors", numProc);
86 Teuchos::RCP<const EpetraExt::MultiComm> sg_comm = sg_parallel_data->getMultiComm();
87 Teuchos::RCP<Stokhos::EpetraSparse3Tensor> epetraCijk =
95 for(std::size_t i=0;i<big.
rowCount();i++) {
97 out <<
" " << (big(i,
j) ?
"*" :
" " ) <<
" ";
103 Teuchos::RCP<const Epetra_CrsGraph> graph = epetraCijk->getStochasticGraph();
104 TEST_EQUALITY(graph->NumMyRows(),graph->NumGlobalRows());
105 TEST_EQUALITY(
int(big.
rowCount()),graph->NumMyRows());
106 TEST_EQUALITY(
int(big.
colCount()),graph->NumMyCols());
108 for(
int i=0;i<graph->NumGlobalRows();i++) {
109 bool rowPassed =
true;
111 std::vector<bool> row(graph->NumGlobalRows(),
false);
112 std::vector<int> activeRow(graph->NumGlobalRows());
113 graph->ExtractGlobalRowCopy(i,graph->NumGlobalRows(),count,&activeRow[0]);
116 for(
int j=0;
j<count;
j++)
117 row[activeRow[
j]] =
true;
120 for(std::size_t
j=0;
j<row.size();
j++)
121 rowPassed = rowPassed && (row[
j]==big(i,
j));
123 TEST_ASSERT(rowPassed);
130 Teuchos::RCP<const Epetra_Comm> comm = Teuchos::rcp(
new Epetra_MpiComm(MPI_COMM_WORLD));
138 Teuchos::RCP<const Stokhos::ProductBasis<int,double> > masterBasis =
buildBasis(num_KL,porder);
139 Teuchos::RCP<const Stokhos::ProductBasis<int,double> > rowBasis =
buildBasis(num_KL,2);
140 Teuchos::RCP<const Stokhos::ProductBasis<int,double> > colBasis =
buildBasis(num_KL,3);
142 out <<
"Master Array Basis = \n";
143 for(
int i=0;i<masterBasis->size();i++) {
145 for(
int i=0;i<num_KL;i++) {
146 out << masterArray[i] <<
" ";
151 out <<
"Row Array Basis = \n";
152 for(
int i=0;i<rowBasis->size();i++) {
154 for(
int i=0;i<num_KL;i++) {
155 out << rowArray[i] <<
" ";
163 out <<
"rowBasis.size = " << rowBasis->size() << std::endl;
164 out <<
"colBasis.size = " << colBasis->size() << std::endl;
167 out <<
"Size = " << rectBig.
rowCount() <<
" x " << rectBig.
colCount() << std::endl;
168 for(std::size_t i=0;i<rectBig.
rowCount();i++) {
170 out <<
" " << (rectBig(i,
j) ?
"*" :
" " ) <<
" ";
175 out <<
"Size = " << masterBig.
rowCount() <<
" x " << masterBig.
colCount() << std::endl;
176 for(std::size_t i=0;i<masterBig.
rowCount();i++) {
178 out <<
" " << (masterBig(i,
j) ?
"*" :
" " ) <<
" ";
184 bool graphs_match =
true;
185 for(std::size_t i=0;i<rectBig.
rowCount();i++) {
186 std::size_t masterI = masterBasis->index(rowBasis->term(i));
188 std::size_t masterJ = masterBasis->index(colBasis->term(
j));
189 graphs_match &= (rectBig(i,
j)==masterBig(masterI,masterJ));
193 TEST_ASSERT(graphs_match);
TEUCHOS_UNIT_TEST(basis_interaction_graph, test_square)
A multidimensional index.
std::size_t colCount() const
What is the number of columns.
std::size_t rowCount() const
What is the number of rows.
Teuchos::RCP< const Stokhos::CompletePolynomialBasis< int, double > > buildBasis(int num_KL, int porder)