1a5eb4965SSatish Balay #ifdef PETSC_RCS_HEADER 2*cb13003dSBarry Smith static char vcid[] = "$Id: gcreate.c,v 1.108 1998/04/15 22:51:03 curfman Exp bsmith $"; 3cb512458SBarry Smith #endif 47807a1faSBarry Smith 57807a1faSBarry Smith #include "sys.h" 648b35521SBarry Smith #include "mat.h" /*I "mat.h" I*/ 77807a1faSBarry Smith 85615d1e5SSatish Balay #undef __FUNC__ 95615d1e5SSatish Balay #define __FUNC__ "MatCreate" 10325ab940SBarry Smith /*@C 1169dd0797SLois Curfman McInnes MatCreate - Creates a matrix where the type is determined 1202a82ca1SLois Curfman McInnes from the options database. Generates a parallel MPI matrix if the 1383e1b59cSLois Curfman McInnes communicator has more than one processor. The default matrix type is 1483e1b59cSLois Curfman McInnes AIJ, using the routines MatCreateSeqAIJ() and MatCreateMPIAIJ(). 1583e1b59cSLois Curfman McInnes 16*cb13003dSBarry Smith Collective on MPI_Comm 17*cb13003dSBarry Smith 187807a1faSBarry Smith Input Parameters: 19*cb13003dSBarry Smith + m - number of global rows 20e0b365e2SLois Curfman McInnes . n - number of global columns 21*cb13003dSBarry Smith - comm - MPI communicator 227807a1faSBarry Smith 237807a1faSBarry Smith Output Parameter: 24dc401e71SLois Curfman McInnes . A - the matrix 25e0b365e2SLois Curfman McInnes 26dc401e71SLois Curfman McInnes Basic Options Database Keys: 27dc401e71SLois Curfman McInnes These options use MatCreateSeqXXX or MatCreateMPIXXX, 28dc401e71SLois Curfman McInnes depending on the communicator, comm. 29*cb13003dSBarry Smith + -mat_aij - AIJ type 30*cb13003dSBarry Smith . -mat_baij - block AIJ type 31*cb13003dSBarry Smith . -mat_dense - dense type 32*cb13003dSBarry Smith - -mat_bdiag - block diagonal type 33dc401e71SLois Curfman McInnes 34dc401e71SLois Curfman McInnes More Options Database Keys: 35*cb13003dSBarry Smith + -mat_seqaij - AIJ type, uses MatCreateSeqAIJ() 36*cb13003dSBarry Smith . -mat_mpiaij - AIJ type, uses MatCreateMPIAIJ() 37*cb13003dSBarry Smith . -mat_seqbdiag - block diagonal type, uses MatCreateSeqBDiag() 38*cb13003dSBarry Smith . -mat_mpibdiag - block diagonal type, uses MatCreateMPIBDiag() 39*cb13003dSBarry Smith . -mat_mpirowbs - rowbs type, uses MatCreateMPIRowbs() 40*cb13003dSBarry Smith . -mat_seqdense - dense type, uses MatCreateSeqDense() 41*cb13003dSBarry Smith . -mat_mpidense - dense type, uses MatCreateMPIDense() 42*cb13003dSBarry Smith . -mat_seqbaij - block AIJ type, uses MatCreateSeqBAIJ() 43*cb13003dSBarry Smith - -mat_mpibaij - block AIJ type, uses MatCreateMPIBAIJ() 44e0b365e2SLois Curfman McInnes 4583e1b59cSLois Curfman McInnes Even More Options Database Keys: 4683e1b59cSLois Curfman McInnes See the manpages for particular formats (e.g., MatCreateSeqAIJ()) 4783e1b59cSLois Curfman McInnes for additional format-specific options. 48e0b365e2SLois Curfman McInnes 49bd9ce289SLois Curfman McInnes Notes: 503ffaccefSLois Curfman McInnes This routine calls MatGetTypeFromOptions() to determine the matrix type. 51bd9ce289SLois Curfman McInnes 52dc401e71SLois Curfman McInnes .keywords: matrix, create 53e0b365e2SLois Curfman McInnes 54fafbff53SBarry Smith .seealso: MatCreateSeqAIJ((), MatCreateMPIAIJ(), 55fafbff53SBarry Smith MatCreateSeqBDiag(),MatCreateMPIBDiag(), 5639ddd567SLois Curfman McInnes MatCreateSeqDense(), MatCreateMPIDense(), 57ce4fbee9SSatish Balay MatCreateMPIRowbs(), MatCreateSeqBAIJ, 58ce4fbee9SSatish Balay MatConvert(), MatGetTypeFromOptions() 597807a1faSBarry Smith @*/ 6087bddb72SLois Curfman McInnes int MatCreate(MPI_Comm comm,int m,int n,Mat *A) 617807a1faSBarry Smith { 62dbb450caSBarry Smith MatType type; 6356cd22aeSBarry Smith PetscTruth set; 6456cd22aeSBarry Smith int ierr, bs=1, flg; 65dbb450caSBarry Smith 663a40ed3dSBarry Smith PetscFunctionBegin; 6777c4ece6SBarry Smith ierr = MatGetTypeFromOptions(comm,0,&type,&set); CHKERRQ(ierr); 68dfa27b74SSatish Balay switch (type) { 69dfa27b74SSatish Balay case MATSEQDENSE: 7087bddb72SLois Curfman McInnes ierr = MatCreateSeqDense(comm,m,n,PETSC_NULL,A); CHKERRQ(ierr); 71dfa27b74SSatish Balay break; 72dfa27b74SSatish Balay case MATMPIBDIAG: 73ed1f4bc7SLois Curfman McInnes ierr = MatCreateMPIBDiag(comm,PETSC_DECIDE,m,n,PETSC_DEFAULT,PETSC_DEFAULT, 7487bddb72SLois Curfman McInnes PETSC_NULL,PETSC_NULL,A); CHKERRQ(ierr); 75dfa27b74SSatish Balay break; 76dfa27b74SSatish Balay case MATSEQBDIAG: 77ed1f4bc7SLois Curfman McInnes ierr = MatCreateSeqBDiag(comm,m,n,PETSC_DEFAULT,PETSC_DEFAULT,PETSC_NULL, 7887bddb72SLois Curfman McInnes PETSC_NULL,A); CHKERRQ(ierr); 79dfa27b74SSatish Balay break; 80dfa27b74SSatish Balay case MATMPIROWBS: 81ed1f4bc7SLois Curfman McInnes ierr = MatCreateMPIRowbs(comm,PETSC_DECIDE,m,PETSC_DEFAULT,PETSC_NULL, 8287bddb72SLois Curfman McInnes PETSC_NULL,A); CHKERRQ(ierr); 83dfa27b74SSatish Balay break; 84dfa27b74SSatish Balay case MATMPIDENSE: 8587bddb72SLois Curfman McInnes ierr = MatCreateMPIDense(comm,PETSC_DECIDE,PETSC_DECIDE,m,n,PETSC_NULL,A); CHKERRQ(ierr); 86dfa27b74SSatish Balay break; 87dfa27b74SSatish Balay case MATMPIAIJ: 88ed1f4bc7SLois Curfman McInnes ierr = MatCreateMPIAIJ(comm,PETSC_DECIDE,PETSC_DECIDE,m,n,PETSC_DEFAULT, 8987bddb72SLois Curfman McInnes PETSC_NULL,PETSC_DEFAULT,PETSC_NULL,A); CHKERRQ(ierr); 90dfa27b74SSatish Balay break; 91dfa27b74SSatish Balay case MATSEQBAIJ: 92cd0e1443SSatish Balay ierr = OptionsGetInt(PETSC_NULL,"-mat_block_size",&bs,&flg); CHKERRQ(ierr); 9387bddb72SLois Curfman McInnes ierr = MatCreateSeqBAIJ(comm,bs,m,n,PETSC_DEFAULT,PETSC_NULL,A); CHKERRQ(ierr); 94ed1f4bc7SLois Curfman McInnes break; 958130634dSSatish Balay case MATMPIBAIJ: 968130634dSSatish Balay ierr = OptionsGetInt(PETSC_NULL,"-mat_block_size",&bs,&flg); CHKERRQ(ierr); 97bf39df47SSatish Balay ierr = MatCreateMPIBAIJ(comm,bs,PETSC_DECIDE,PETSC_DECIDE,m,n,PETSC_DEFAULT,PETSC_NULL,PETSC_DEFAULT,PETSC_NULL,A); CHKERRQ(ierr); 988130634dSSatish Balay break; 9924b2b559SSatish Balay default: 10087bddb72SLois Curfman McInnes ierr = MatCreateSeqAIJ(comm,m,n,PETSC_DEFAULT,PETSC_NULL,A); CHKERRQ(ierr); 10124b2b559SSatish Balay break; 102dfa27b74SSatish Balay } 1033a40ed3dSBarry Smith PetscFunctionReturn(0); 1047807a1faSBarry Smith } 1057807a1faSBarry Smith 106dae03382SLois Curfman McInnes 107dae03382SLois Curfman McInnes 108d5d45c9bSBarry Smith 109d5d45c9bSBarry Smith 110