1af0996ceSBarry Smith #include <petsc/private/matimpl.h> /*I "petscmat.h" I*/ 2c4aff060SBarry Smith 3c4aff060SBarry Smith /*@C 4a5b23f4aSJose E. Roman MatPythonSetType - Initialize a Mat object implemented in Python. 5c4aff060SBarry Smith 6c4aff060SBarry Smith Collective on Mat 7c4aff060SBarry Smith 8d8d19677SJose E. Roman Input Parameters: 9c4aff060SBarry Smith + mat - the matrix (Mat) object. 10c4aff060SBarry Smith - pyname - full dotted Python name [package].module[.{class|function}] 11c4aff060SBarry Smith 12c4aff060SBarry Smith Options Database Key: 1367b8a455SSatish Balay . -mat_python_type <pyname> - python class 14c4aff060SBarry Smith 15c4aff060SBarry Smith Level: intermediate 16c4aff060SBarry Smith 17db781477SPatrick Sanan .seealso: `MatCreate()`, `MatSetType()`, `MATPYTHON`, `PetscPythonInitialize()` 18c4aff060SBarry Smith @*/ 197087cfbeSBarry Smith PetscErrorCode MatPythonSetType(Mat mat,const char pyname[]) 20c4aff060SBarry Smith { 21c4aff060SBarry Smith PetscFunctionBegin; 220700a824SBarry Smith PetscValidHeaderSpecific(mat,MAT_CLASSID,1); 23c4aff060SBarry Smith PetscValidCharPointer(pyname,2); 24cac4c232SBarry Smith PetscTryMethod(mat,"MatPythonSetType_C",(Mat, const char[]),(mat,pyname)); 25c4aff060SBarry Smith PetscFunctionReturn(0); 26c4aff060SBarry Smith } 27c4aff060SBarry Smith 28c4aff060SBarry Smith /*@C 29*ebead697SStefano Zampini MatPythonGetType - Get the type of a Mat object implemented in Python. 30*ebead697SStefano Zampini 31*ebead697SStefano Zampini Not collective 32*ebead697SStefano Zampini 33*ebead697SStefano Zampini Input Parameter: 34*ebead697SStefano Zampini . mat - the matrix object 35*ebead697SStefano Zampini 36*ebead697SStefano Zampini Output Parameter: 37*ebead697SStefano Zampini . pyname - full dotted Python name [package].module[.{class|function}] 38*ebead697SStefano Zampini 39*ebead697SStefano Zampini Level: intermediate 40*ebead697SStefano Zampini 41*ebead697SStefano Zampini .seealso: `MatCreate()`, `MatSetType()`, `MATPYTHON`, `PetscPythonInitialize()`, `MatPythonSetType()` 42*ebead697SStefano Zampini @*/ 43*ebead697SStefano Zampini PetscErrorCode MatPythonGetType(Mat mat,const char *pyname[]) 44*ebead697SStefano Zampini { 45*ebead697SStefano Zampini PetscFunctionBegin; 46*ebead697SStefano Zampini PetscValidHeaderSpecific(mat,MAT_CLASSID,1); 47*ebead697SStefano Zampini PetscValidPointer(pyname,2); 48*ebead697SStefano Zampini PetscUseMethod(mat,"MatPythonGetType_C",(Mat, const char*[]),(mat,pyname)); 49*ebead697SStefano Zampini PetscFunctionReturn(0); 50*ebead697SStefano Zampini } 51*ebead697SStefano Zampini 52*ebead697SStefano Zampini /*@C 53c4aff060SBarry Smith MatPythonCreate - Create a Mat object implemented in Python. 54c4aff060SBarry Smith 55c4aff060SBarry Smith Collective on Mat 56c4aff060SBarry Smith 57c4aff060SBarry Smith Input Parameters: 58c4aff060SBarry Smith + comm - MPI communicator 59c4aff060SBarry Smith . m - number of local rows (or PETSC_DECIDE to have calculated if M is given) 60c4aff060SBarry Smith . n - number of local columns (or PETSC_DECIDE to have calculated if N is given) 61c4aff060SBarry Smith . M - number of global rows (or PETSC_DECIDE to have calculated if m is given) 62c4aff060SBarry Smith . N - number of global columns (or PETSC_DECIDE to have calculated if n is given) 63c4aff060SBarry Smith - pyname - full dotted Python name [package].module[.{class|function}] 64c4aff060SBarry Smith 65c4aff060SBarry Smith Output Parameter: 66c4aff060SBarry Smith . A - the matrix 67c4aff060SBarry Smith 68c4aff060SBarry Smith Level: intermediate 69c4aff060SBarry Smith 70db781477SPatrick Sanan .seealso: `MATPYTHON`, `MatPythonSetType()`, `PetscPythonInitialize()` 71c4aff060SBarry Smith 72c4aff060SBarry Smith @*/ 737087cfbeSBarry Smith PetscErrorCode MatPythonCreate(MPI_Comm comm,PetscInt m,PetscInt n,PetscInt M,PetscInt N,const char pyname[],Mat *A) 74c4aff060SBarry Smith { 75c4aff060SBarry Smith PetscFunctionBegin; 76c4aff060SBarry Smith PetscValidCharPointer(pyname,6); 77c4aff060SBarry Smith PetscValidPointer(A,6); 789566063dSJacob Faibussowitsch PetscCall(MatCreate(comm,A)); 799566063dSJacob Faibussowitsch PetscCall(MatSetSizes(*A,m,n,M,N)); 809566063dSJacob Faibussowitsch PetscCall(MatSetType(*A,MATPYTHON)); 819566063dSJacob Faibussowitsch PetscCall(MatPythonSetType(*A,pyname)); 82486bdcd3SStefano Zampini PetscCall(MatBindToCPU(*A,PETSC_FALSE)); 83c4aff060SBarry Smith PetscFunctionReturn(0); 84c4aff060SBarry Smith } 85