55 #include "Teuchos_ParameterList.hpp"
59 int main(
int argc,
char *argv[])
66 MPI_Init(&argc,&argv);
69 MPI_Comm_size(MPI_COMM_WORLD, &size);
70 MPI_Comm_rank(MPI_COMM_WORLD, &rank);
83 int num_local_blocks=2;
91 for(
int i=0;i<Nrows;i++){
109 Teuchos::ParameterList List;
110 List.set(
"contiguous block size",blocksize);
111 List.set(
"number of local blocks",num_local_blocks);
134 int* block_lids=
new int [Nrows];
135 int* block_starts=
new int[num_local_blocks+1];
136 for(
int i=0;i<num_local_blocks;i++){
137 block_starts[i]=i*blocksize;
138 for(
int j=0;j<blocksize;j++){
139 block_lids[i*blocksize+j] = i*blocksize+(blocksize-j-1);
143 block_starts[num_local_blocks]=Nrows;
146 Teuchos::ParameterList List;
147 List.set(
"number of local blocks",num_local_blocks);
148 List.set(
"block start index",block_starts);
149 List.set(
"block entry lids",block_lids);
165 delete [] block_lids;
166 delete [] block_starts;
175 int* block_gids=
new int [Nrows];
176 int* block_starts=
new int[num_local_blocks+1];
177 for(
int i=0;i<num_local_blocks;i++){
178 block_starts[i]=i*blocksize;
179 for(
int j=0;j<blocksize;j++){
180 block_gids[i*blocksize+j] = Map.
GID(i*blocksize+(blocksize-j-1));
184 block_starts[num_local_blocks]=Nrows;
187 Teuchos::ParameterList List;
188 List.set(
"number of local blocks",num_local_blocks);
189 List.set(
"block start index",block_starts);
190 List.set(
"block entry gids",block_gids);
206 delete [] block_gids;
207 delete [] block_starts;
213 if(total_norm > 1e-15){
214 if (Comm.
MyPID()==0) std::cout <<
"EpetraExt:: PointToBlockDiagPermute tests FAILED (||res||="<<total_norm<<
")." << std::endl;
221 if (Comm.
MyPID()==0) std::cout <<
"EpetraExt:: PointToBlockDiagPermute tests passed (||res||="<<total_norm<<
")." << std::endl;