1af0996ceSBarry Smith #include <petsc/private/matimpl.h> /*I "petscmat.h" I*/ 2c4aff060SBarry Smith 3c4aff060SBarry Smith /*@C 411a5261eSBarry Smith MatPythonSetType - Initialize a `Mat` object implemented in Python. 5c4aff060SBarry Smith 6c4aff060SBarry Smith Collective on Mat 7c4aff060SBarry Smith 8d8d19677SJose E. Roman Input Parameters: 911a5261eSBarry Smith + mat - the matrix 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 1711a5261eSBarry Smith .seealso: `Mat`, `MatType`, `MatCreate()`, `MatSetType()`, `MATPYTHON`, `PetscPythonInitialize()` 18c4aff060SBarry Smith @*/ 19*d71ae5a4SJacob Faibussowitsch PetscErrorCode MatPythonSetType(Mat mat, const char pyname[]) 20*d71ae5a4SJacob Faibussowitsch { 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 2911a5261eSBarry Smith MatPythonGetType - Get the type of a `Mat` object implemented in Python. 30ebead697SStefano Zampini 31ebead697SStefano Zampini Not collective 32ebead697SStefano Zampini 33ebead697SStefano Zampini Input Parameter: 3411a5261eSBarry Smith . mat - the matrix 35ebead697SStefano Zampini 36ebead697SStefano Zampini Output Parameter: 37ebead697SStefano Zampini . pyname - full dotted Python name [package].module[.{class|function}] 38ebead697SStefano Zampini 39ebead697SStefano Zampini Level: intermediate 40ebead697SStefano Zampini 4111a5261eSBarry Smith .seealso: `Mat`, `MatType`, `MatCreate()`, `MatSetType()`, `MATPYTHON`, `PetscPythonInitialize()`, `MatPythonSetType()` 42ebead697SStefano Zampini @*/ 43*d71ae5a4SJacob Faibussowitsch PetscErrorCode MatPythonGetType(Mat mat, const char *pyname[]) 44*d71ae5a4SJacob Faibussowitsch { 45ebead697SStefano Zampini PetscFunctionBegin; 46ebead697SStefano Zampini PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); 47ebead697SStefano Zampini PetscValidPointer(pyname, 2); 48ebead697SStefano Zampini PetscUseMethod(mat, "MatPythonGetType_C", (Mat, const char *[]), (mat, pyname)); 49ebead697SStefano Zampini PetscFunctionReturn(0); 50ebead697SStefano Zampini } 51ebead697SStefano Zampini 52ebead697SStefano Zampini /*@C 5311a5261eSBarry 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 5911a5261eSBarry Smith . m - number of local rows (or `PETSC_DECIDE` to have calculated if M is given) 6011a5261eSBarry Smith . n - number of local columns (or `PETSC_DECIDE` to have calculated if N is given) 6111a5261eSBarry Smith . M - number of global rows (or `PETSC_DECIDE` to have calculated if m is given) 6211a5261eSBarry 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 7011a5261eSBarry Smith .seealso: `Mat`, `MatType`, `MATPYTHON`, `MatPythonSetType()`, `PetscPythonInitialize()` 71c4aff060SBarry Smith @*/ 72*d71ae5a4SJacob Faibussowitsch PetscErrorCode MatPythonCreate(MPI_Comm comm, PetscInt m, PetscInt n, PetscInt M, PetscInt N, const char pyname[], Mat *A) 73*d71ae5a4SJacob Faibussowitsch { 74c4aff060SBarry Smith PetscFunctionBegin; 75c4aff060SBarry Smith PetscValidCharPointer(pyname, 6); 76c4aff060SBarry Smith PetscValidPointer(A, 6); 779566063dSJacob Faibussowitsch PetscCall(MatCreate(comm, A)); 789566063dSJacob Faibussowitsch PetscCall(MatSetSizes(*A, m, n, M, N)); 799566063dSJacob Faibussowitsch PetscCall(MatSetType(*A, MATPYTHON)); 809566063dSJacob Faibussowitsch PetscCall(MatPythonSetType(*A, pyname)); 81486bdcd3SStefano Zampini PetscCall(MatBindToCPU(*A, PETSC_FALSE)); 82c4aff060SBarry Smith PetscFunctionReturn(0); 83c4aff060SBarry Smith } 84