xref: /petsc/src/mat/utils/gcreate.c (revision 3dfeaf313efef0ac3b5db23c4fb3f1556ae8106f)
1cb512458SBarry Smith #ifndef lint
2*3dfeaf31SLois Curfman McInnes static char vcid[] = "$Id: gcreate.c,v 1.12 1995/04/15 17:23:18 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
176b5873e3SBarry Smith .   comm - MPI communicator
187807a1faSBarry Smith 
197807a1faSBarry Smith   Output Parameter:
20df998da4SLois Curfman McInnes .   V - location to stash resulting matrix
217807a1faSBarry Smith @*/
226b5873e3SBarry Smith int MatCreateInitialMatrix(MPI_Comm comm,int m,int n,Mat *V)
237807a1faSBarry Smith {
24d6dfbf8fSBarry Smith   int numtid;
256b5873e3SBarry Smith   MPI_Comm_size(comm,&numtid);
26d6dfbf8fSBarry Smith   if (OptionsHasName(0,0,"-dense_mat")) {
276b5873e3SBarry Smith     return MatCreateSequentialDense(comm,m,n,V);
287807a1faSBarry Smith   }
29a5a9c739SBarry Smith   if (numtid > 1 || OptionsHasName(0,0,"-mpi_objects")) {
30df998da4SLois Curfman McInnes     if (OptionsHasName(0,0,"-row_mat")) {
316b5873e3SBarry Smith       return MatCreateMPIRow(comm,PETSC_DECIDE,PETSC_DECIDE, m,n,5,0,0,0,V);
32df998da4SLois Curfman McInnes     }
335f05bc04SLois Curfman McInnes #if defined(HAVE_BLOCKSOLVE) && !defined(PETSC_COMPLEX)
347c636fe7SLois Curfman McInnes     if (OptionsHasName(0,0,"-rowbs_mat")) {
356b5873e3SBarry Smith       return MatCreateMPIRowbs(comm,PETSC_DECIDE,m,5,0,0,V);
367c636fe7SLois Curfman McInnes     }
375f05bc04SLois Curfman McInnes #endif
386b5873e3SBarry Smith     return MatCreateMPIAIJ(comm,PETSC_DECIDE,PETSC_DECIDE, m,n,5,0,0,0,V);
39d6dfbf8fSBarry Smith   }
40*3dfeaf31SLois Curfman McInnes   if (OptionsHasName(0,0,"-row_mat")) {
41*3dfeaf31SLois Curfman McInnes     return MatCreateSequentialRow(comm,m,n,10,0,V);
42*3dfeaf31SLois Curfman McInnes   }
436b5873e3SBarry Smith   return MatCreateSequentialAIJ(comm,m,n,10,0,V);
447807a1faSBarry Smith }
457807a1faSBarry Smith 
46