xref: /petsc/src/mat/utils/gcreate.c (revision 6b5873e37b549cc139dbd34cfb32e6aff4f310b3)
1cb512458SBarry Smith #ifndef lint
2*6b5873e3SBarry Smith static char vcid[] = "$Id: gcreate.c,v 1.10 1995/04/09 20:30:03 curfman Exp bsmith $";
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
17*6b5873e3SBarry Smith .   comm - MPI communicator
187807a1faSBarry Smith 
197807a1faSBarry Smith   Output Parameter:
20df998da4SLois Curfman McInnes .   V - location to stash resulting matrix
217807a1faSBarry Smith @*/
22*6b5873e3SBarry Smith int MatCreateInitialMatrix(MPI_Comm comm,int m,int n,Mat *V)
237807a1faSBarry Smith {
24d6dfbf8fSBarry Smith   int numtid;
25*6b5873e3SBarry Smith   MPI_Comm_size(comm,&numtid);
26d6dfbf8fSBarry Smith   if (OptionsHasName(0,0,"-dense_mat")) {
27*6b5873e3SBarry Smith     return MatCreateSequentialDense(comm,m,n,V);
287807a1faSBarry Smith   }
29df998da4SLois Curfman McInnes   if (OptionsHasName(0,0,"-row_mat")) {
30*6b5873e3SBarry Smith     return MatCreateSequentialRow(comm,m,n,10,0,V);
31df998da4SLois Curfman McInnes   }
32a5a9c739SBarry Smith   if (numtid > 1 || OptionsHasName(0,0,"-mpi_objects")) {
33df998da4SLois Curfman McInnes     if (OptionsHasName(0,0,"-row_mat")) {
34*6b5873e3SBarry Smith       return MatCreateMPIRow(comm,PETSC_DECIDE,PETSC_DECIDE, m,n,5,0,0,0,V);
35df998da4SLois Curfman McInnes     }
367c636fe7SLois Curfman McInnes     if (OptionsHasName(0,0,"-rowbs_mat")) {
37*6b5873e3SBarry Smith       return MatCreateMPIRowbs(comm,PETSC_DECIDE,m,5,0,0,V);
387c636fe7SLois Curfman McInnes     }
39*6b5873e3SBarry Smith     return MatCreateMPIAIJ(comm,PETSC_DECIDE,PETSC_DECIDE, m,n,5,0,0,0,V);
40d6dfbf8fSBarry Smith   }
41*6b5873e3SBarry Smith   return MatCreateSequentialAIJ(comm,m,n,10,0,V);
427807a1faSBarry Smith }
437807a1faSBarry Smith 
44