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