184 Teuchos::RCP<const Epetra_MpiComm> mpiComm = Teuchos::rcp(
new Epetra_MpiComm(MPI_COMM_WORLD));
185 Teuchos::RCP<const EpetraExt::MultiComm> multiComm = Teuchos::rcp(
new EpetraExt::MultiMpiComm(*mpiComm,-1));
186 Teuchos::RCP<const Epetra_Comm> comm = mpiComm;
189 Teuchos::RCP<const EpetraExt::MultiComm> multiComm = Teuchos::rcp(
new EpetraExt::MultiSerialComm(-1));
195 Teuchos::RCP<const Stokhos::CompletePolynomialBasis<int,double> > basis =
buildBasis(num_KL,porder);
196 Teuchos::RCP<Stokhos::Sparse3Tensor<int,double> > Cijk = basis->computeTripleProductTensor();
198 std::vector<int> order(3);
199 order[0] = 2; order[1] = 3; order[2] = 1;
200 std::vector<Teuchos::RCP<const Stokhos::ProductBasis<int,double> > > sa_BasisPerDRow(3);
203 sa_BasisPerDRow[2] =
buildBasis(num_KL,order);
205 Teuchos::RCP<Teuchos::ParameterList> params = Teuchos::rcp(
new Teuchos::ParameterList);
211 TEST_EQUALITY(adaptMngr.
getGlobalRowId(1,0),sa_BasisPerDRow[0]->size());
214 TEST_EQUALITY(adaptMngr.
getGlobalColId(1,0),sa_BasisPerDRow[0]->size());
229 Teuchos::RCP<const Epetra_MpiComm> mpiComm = Teuchos::rcp(
new Epetra_MpiComm(MPI_COMM_WORLD));
230 Teuchos::RCP<const EpetraExt::MultiComm> multiComm = Teuchos::rcp(
new EpetraExt::MultiMpiComm(*mpiComm,-1));
231 Teuchos::RCP<const Epetra_Comm> comm = mpiComm;
234 Teuchos::RCP<const EpetraExt::MultiComm> multiComm = Teuchos::rcp(
new EpetraExt::MultiSerialComm(-1));
239 int numDetermUnks = 3;
241 double stencil[] = {-1.0,2.0,-1.0};
245 Teuchos::RCP<const Stokhos::CompletePolynomialBasis<int,double> > basis =
buildBasis(num_KL,porder);
246 Teuchos::RCP<Stokhos::Sparse3Tensor<int,double> > Cijk = basis->computeTripleProductTensor();
247 Teuchos::RCP<Stokhos::EpetraSparse3Tensor> epetraCijk =
250 std::vector<Teuchos::RCP<const Stokhos::ProductBasis<int,double> > > sa_BasisPerDRow(numDetermUnks);
256 Teuchos::RCP<Teuchos::ParameterList> params = Teuchos::rcp(
new Teuchos::ParameterList);
257 params->set(
"Scale Operator by Inverse Basis Norms",
true);
262 TEST_EQUALITY(sg_A->NumGlobalRows(),sg_A->NumGlobalCols());
263 TEST_EQUALITY(sg_A->NumGlobalRows(),3*numDetermUnks);
269 for(
int stochBasis=0;stochBasis<sa_BasisPerDRow[determDof]->size();stochBasis++) {
271 std::vector<std::size_t> order;
272 std::vector<int> stor_indices(9), indices;
273 std::vector<double> stor_values(9), values;
275 sg_A->ExtractGlobalRowCopy(adaptMngr.
getGlobalRowId(determDof,stochBasis),9,numEntries,&stor_values[0],&stor_indices[0]);
277 TEST_EQUALITY(numEntries,9);
280 for(
int i=0;i<numEntries;i++) {
281 indices.push_back(stor_indices[i]);
282 values.push_back(stor_values[i]);
290 int rowTerm = basis->index(sa_BasisPerDRow[determDof]->term(stochBasis));
294 double normValue = basis->norm_squared(rowTerm);
297 TEST_EQUALITY(values[0],stencil[0]*Cijk->getValue(rowTerm,colTerm0,0)/normValue);
298 TEST_EQUALITY(values[1],stencil[0]*Cijk->getValue(rowTerm,colTerm1,0)/normValue);
299 TEST_EQUALITY(values[2],stencil[0]*Cijk->getValue(rowTerm,colTerm2,0)/normValue);
301 TEST_EQUALITY(values[3],stencil[1]*Cijk->getValue(rowTerm,colTerm0,0)/normValue);
302 TEST_EQUALITY(values[4],stencil[1]*Cijk->getValue(rowTerm,colTerm1,0)/normValue);
303 TEST_EQUALITY(values[5],stencil[1]*Cijk->getValue(rowTerm,colTerm2,0)/normValue);
305 TEST_EQUALITY(values[6],stencil[2]*Cijk->getValue(rowTerm,colTerm0,0)/normValue);
306 TEST_EQUALITY(values[7],stencil[2]*Cijk->getValue(rowTerm,colTerm1,0)/normValue);
307 TEST_EQUALITY(values[8],stencil[2]*Cijk->getValue(rowTerm,colTerm2,0)/normValue);
310 TEST_ASSERT(sg_A->Filled());
314 Teuchos::RCP<Teuchos::ParameterList> params = Teuchos::rcp(
new Teuchos::ParameterList);
315 params->set(
"Scale Operator by Inverse Basis Norms",
false);
320 TEST_EQUALITY(sg_A->NumGlobalRows(),sg_A->NumGlobalCols());
321 TEST_EQUALITY(sg_A->NumGlobalRows(),3*numDetermUnks);
327 for(
int stochBasis=0;stochBasis<sa_BasisPerDRow[determDof]->size();stochBasis++) {
329 std::vector<std::size_t> order;
330 std::vector<int> stor_indices(9), indices;
331 std::vector<double> stor_values(9), values;
333 sg_A->ExtractGlobalRowCopy(adaptMngr.
getGlobalRowId(determDof,stochBasis),9,numEntries,&stor_values[0],&stor_indices[0]);
335 TEST_EQUALITY(numEntries,9);
338 for(
int i=0;i<numEntries;i++) {
339 indices.push_back(stor_indices[i]);
340 values.push_back(stor_values[i]);
348 int rowTerm = basis->index(sa_BasisPerDRow[determDof]->term(stochBasis));
354 TEST_EQUALITY(values[0],stencil[0]*Cijk->getValue(rowTerm,colTerm0,0));
355 TEST_EQUALITY(values[1],stencil[0]*Cijk->getValue(rowTerm,colTerm1,0));
356 TEST_EQUALITY(values[2],stencil[0]*Cijk->getValue(rowTerm,colTerm2,0));
358 TEST_EQUALITY(values[3],stencil[1]*Cijk->getValue(rowTerm,colTerm0,0));
359 TEST_EQUALITY(values[4],stencil[1]*Cijk->getValue(rowTerm,colTerm1,0));
360 TEST_EQUALITY(values[5],stencil[1]*Cijk->getValue(rowTerm,colTerm2,0));
362 TEST_EQUALITY(values[6],stencil[2]*Cijk->getValue(rowTerm,colTerm0,0));
363 TEST_EQUALITY(values[7],stencil[2]*Cijk->getValue(rowTerm,colTerm1,0));
364 TEST_EQUALITY(values[8],stencil[2]*Cijk->getValue(rowTerm,colTerm2,0));
367 TEST_ASSERT(sg_A->Filled());
374 Teuchos::RCP<const Epetra_MpiComm> mpiComm = Teuchos::rcp(
new Epetra_MpiComm(MPI_COMM_WORLD));
375 Teuchos::RCP<const EpetraExt::MultiComm> multiComm = Teuchos::rcp(
new EpetraExt::MultiMpiComm(*mpiComm,-1));
376 Teuchos::RCP<const Epetra_Comm> comm = mpiComm;
379 Teuchos::RCP<const EpetraExt::MultiComm> multiComm = Teuchos::rcp(
new EpetraExt::MultiSerialComm(-1));
384 int numDetermUnks = 3;
386 double stencil[] = {-1.0,2.0,-1.0};
390 Teuchos::RCP<const Stokhos::CompletePolynomialBasis<int,double> > basis =
buildBasis(num_KL,porder);
391 Teuchos::RCP<Stokhos::Sparse3Tensor<int,double> > Cijk = basis->computeTripleProductTensor();
392 Teuchos::RCP<Stokhos::EpetraSparse3Tensor> epetraCijk =
397 std::vector<int> vorder(4);
398 vorder[0] = 2; vorder[1] = 3; vorder[2] = 2; vorder[3] = 0;
399 std::vector<Teuchos::RCP<const Stokhos::ProductBasis<int,double> > > sa_BasisPerDRow(numDetermUnks);
402 sa_BasisPerDRow[2] =
buildBasis(num_KL,vorder);
405 Teuchos::RCP<Teuchos::ParameterList> params = Teuchos::rcp(
new Teuchos::ParameterList);
406 params->set(
"Scale Operator by Inverse Basis Norms",
false);
411 TEST_EQUALITY(sg_A->NumGlobalRows(),sg_A->NumGlobalCols());
415 out <<
"Summed into" << std::endl;
419 for(
int stochBasis=0;stochBasis<sa_BasisPerDRow[determDof]->size();stochBasis++) {
421 std::vector<std::size_t> order;
422 std::vector<int> stor_indices(400), indices;
423 std::vector<double> stor_values(400), values;
425 out <<
"grabbing row " << stochBasis <<
" values" << std::endl;
426 TEST_ASSERT(sg_A->ExtractGlobalRowCopy(adaptMngr.
getGlobalRowId(determDof,stochBasis),400,numEntries,&stor_values[0],&stor_indices[0])==0);
427 out <<
"num entries " << numEntries << std::endl;
429 TEST_ASSERT(numEntries<400);
432 for(
int i=0;i<numEntries;i++) {
433 indices.push_back(stor_indices[i]);
434 values.push_back(stor_values[i]);
438 out <<
"sort row" << std::endl;
443 out <<
"grabbing row index, and row norm" << std::endl;
444 int rowTerm = basis->index(sa_BasisPerDRow[determDof]->term(stochBasis));
446 out <<
"checking matrix" << std::endl;
449 for(
int stochColBasisIndex = 0;stochColBasisIndex<3;stochColBasisIndex++) {
453 if(big(rowTerm,colTerm)) {
454 TEST_EQUALITY(indices[offset],adaptMngr.
getGlobalColId(stochColBasisIndex,stochCol));
455 TEST_EQUALITY(values[offset],stencil[stochColBasisIndex]*Cijk->getValue(rowTerm,colTerm,0));
459 out <<
"offset = " << offset << std::endl;
463 TEST_ASSERT(sg_A->Filled());
471 Teuchos::RCP<const Epetra_Comm> comm = Teuchos::rcp(
new Epetra_MpiComm(MPI_COMM_WORLD));
479 Teuchos::RCP<const Stokhos::CompletePolynomialBasis<int,double> > basis =
buildBasis(num_KL,porder);
482 std::vector<Teuchos::RCP<const Stokhos::ProductBasis<int,double> > > sa_BasisPerDRow(determGraph->NumMyRows(),basis);
485 Teuchos::RCP<Epetra_Map> rowMap;
486 std::vector<int> sa_RowGidOffsets;
488 int determMyRows = determGraph->RowMap().NumMyElements();
489 int determGlobalRows = determGraph->RowMap().NumGlobalElements();
494 TEST_EQUALITY(rowMap->NumMyElements(),determMyRows*basis->size());
495 TEST_EQUALITY(rowMap->NumGlobalElements(),determGlobalRows*basis->size());
496 TEST_EQUALITY(
int(sa_RowGidOffsets.size()),determMyRows);
497 TEST_ASSERT(rowMap->LinearMap());
502 for(std::size_t i=0;i<sa_RowGidOffsets.size();i++)
503 result &= (sa_RowGidOffsets[i]==rowMap->GID(i*basis->size()));
509 std::vector<int> sa_ColGidOffsets;
520 TEST_EQUALITY(
int(sa_ColGidOffsets.size()),determMyCols);
523 bool checkOne =
false;
524 for(
int localColId=0;localColId<determMyCols;localColId++) {
525 int localRowId = d_rowMap.LID(d_colMap.GID(localColId));
531 result &= (sa_ColGidOffsets[localColId]==sa_RowGidOffsets[localRowId]);
534 TEST_ASSERT(checkOne);
542 Teuchos::RCP<const Epetra_Comm> comm = Teuchos::rcp(
new Epetra_MpiComm(MPI_COMM_WORLD));
547 int numProc = comm->NumProc();
548 int rank = comm->MyPID();
550 out <<
"NumProc = " << numProc <<
", Rank = " << rank << std::endl;
552 int numDetermRows = 3;
556 Teuchos::RCP<const Stokhos::CompletePolynomialBasis<int,double> > basis =
buildBasis(num_KL,porder);
559 std::vector<Teuchos::RCP<const Stokhos::ProductBasis<int,double> > > sa_BasisPerDRow(numDetermRows);
560 for(
int i=0;i<numDetermRows;i+=3) {
562 if(i+1<numDetermRows)
564 if(i+2<numDetermRows)
568 for(
int i=0;i<numDetermRows;i++) {
569 out <<
"Row " << i <<
":\n";
574 for(
int i=1;i<numDetermRows;i++) {
575 out <<
"Pair row " << i-1 <<
", col " << i <<
":\n";
579 out <<
"Pair row " << i <<
", col " << i-1 <<
":\n";
587 TEST_ASSERT(graph!=Teuchos::null);
591 for(
int i=0;i<numDetermRows;i++) {
592 int gid = determGraph->GRID(i);
594 int numRowEntries = 0;
596 determGraph->ExtractGlobalRowCopy(gid,3,numRowEntries,indices);
598 for(
int c=0;c<numRowEntries;c++)
602 TEST_EQUALITY(graph->NumMyNonzeros(),
int(nnz));