xref: /petsc/src/mat/utils/gcreate.c (revision df998da42b8e01a9f6f165cb1f4d27b92d24edce)
1cb512458SBarry Smith #ifndef lint
2*df998da4SLois Curfman McInnes static char vcid[] = "$Id: gcreate.c,v 1.7 1995/03/21 23:19:28 bsmith 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
13*df998da4SLois Curfman McInnes            number processors in MPI_COMM_WORLD is greater then one.
147807a1faSBarry Smith 
157807a1faSBarry Smith   Input Parameters:
16*df998da4SLois Curfman McInnes .   m,n - global matrix dimensions
177807a1faSBarry Smith 
187807a1faSBarry Smith   Output Parameter:
19*df998da4SLois 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   }
28*df998da4SLois Curfman McInnes   if (OptionsHasName(0,0,"-row_mat")) {
29*df998da4SLois Curfman McInnes     return MatCreateSequentialRow(m,n,10,0,V);
30*df998da4SLois Curfman McInnes   }
31a5a9c739SBarry Smith   if (numtid > 1 || OptionsHasName(0,0,"-mpi_objects")) {
32*df998da4SLois Curfman McInnes     if (OptionsHasName(0,0,"-row_mat")) {
33*df998da4SLois Curfman McInnes       return MatCreateMPIRow(MPI_COMM_WORLD,-1,-1,m,n,5,0,0,0,V);
34*df998da4SLois Curfman McInnes     }
35d6dfbf8fSBarry Smith     return MatCreateMPIAIJ(MPI_COMM_WORLD,-1,-1,m,n,5,0,0,0,V);
36d6dfbf8fSBarry Smith   }
3711d228e4SBarry Smith   return MatCreateSequentialAIJ(m,n,10,0,V);
387807a1faSBarry Smith }
397807a1faSBarry Smith 
40