xref: /petsc/src/mat/utils/gcreate.c (revision 7c636fe7c3638c0801beabbe7f7a05deae901f67)
1cb512458SBarry Smith #ifndef lint
2*7c636fe7SLois Curfman McInnes static char vcid[] = "$Id: gcreate.c,v 1.8 1995/04/01 21:29:16 curfman Exp curfman $";
3cb512458SBarry Smith #endif
47807a1faSBarry Smith 
57807a1faSBarry Smith #include "sys.h"
67807a1faSBarry Smith #include "options.h"
77807a1faSBarry Smith #include "sysio.h"
87807a1faSBarry Smith #include "mat.h"
97807a1faSBarry Smith 
107807a1faSBarry Smith /*@C
117807a1faSBarry Smith       MatCreateInitialMatrix - Reads from command line to determine
12d6dfbf8fSBarry Smith            what type of matrix to create.  Also uses MPI matrices if
13df998da4SLois Curfman McInnes            number processors in MPI_COMM_WORLD is greater then one.
147807a1faSBarry Smith 
157807a1faSBarry Smith   Input Parameters:
16df998da4SLois Curfman McInnes .   m,n - global matrix dimensions
177807a1faSBarry Smith 
187807a1faSBarry Smith   Output Parameter:
19df998da4SLois Curfman McInnes .   V - location to stash resulting matrix
207807a1faSBarry Smith @*/
217807a1faSBarry Smith int MatCreateInitialMatrix(int m,int n,Mat *V)
227807a1faSBarry Smith {
23d6dfbf8fSBarry Smith   int numtid;
24d6dfbf8fSBarry Smith   MPI_Comm_size(MPI_COMM_WORLD,&numtid);
25d6dfbf8fSBarry Smith   if (OptionsHasName(0,0,"-dense_mat")) {
267807a1faSBarry Smith     return MatCreateSequentialDense(m,n,V);
277807a1faSBarry Smith   }
28df998da4SLois Curfman McInnes   if (OptionsHasName(0,0,"-row_mat")) {
29df998da4SLois Curfman McInnes     return MatCreateSequentialRow(m,n,10,0,V);
30df998da4SLois Curfman McInnes   }
31a5a9c739SBarry Smith   if (numtid > 1 || OptionsHasName(0,0,"-mpi_objects")) {
32df998da4SLois Curfman McInnes     if (OptionsHasName(0,0,"-row_mat")) {
33df998da4SLois Curfman McInnes       return MatCreateMPIRow(MPI_COMM_WORLD,-1,-1,m,n,5,0,0,0,V);
34df998da4SLois Curfman McInnes     }
35*7c636fe7SLois Curfman McInnes     if (OptionsHasName(0,0,"-rowbs_mat")) {
36*7c636fe7SLois Curfman McInnes       return MatCreateMPIRowbs(MPI_COMM_WORLD,-1,m,n,5,0,V);
37*7c636fe7SLois Curfman McInnes     }
38d6dfbf8fSBarry Smith     return MatCreateMPIAIJ(MPI_COMM_WORLD,-1,-1,m,n,5,0,0,0,V);
39d6dfbf8fSBarry Smith   }
4011d228e4SBarry Smith   return MatCreateSequentialAIJ(m,n,10,0,V);
417807a1faSBarry Smith }
427807a1faSBarry Smith 
43