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 @*/ 19*9371c9d4SSatish Balay PetscErrorCode MatPythonSetType(Mat mat, const char pyname[]) { 20c4aff060SBarry Smith PetscFunctionBegin; 210700a824SBarry Smith PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); 22c4aff060SBarry Smith PetscValidCharPointer(pyname, 2); 23cac4c232SBarry Smith PetscTryMethod(mat, "MatPythonSetType_C", (Mat, const char[]), (mat, pyname)); 24c4aff060SBarry Smith PetscFunctionReturn(0); 25c4aff060SBarry Smith } 26c4aff060SBarry Smith 27c4aff060SBarry Smith /*@C 28ebead697SStefano Zampini MatPythonGetType - Get the type of a Mat object implemented in Python. 29ebead697SStefano Zampini 30ebead697SStefano Zampini Not collective 31ebead697SStefano Zampini 32ebead697SStefano Zampini Input Parameter: 33ebead697SStefano Zampini . mat - the matrix object 34ebead697SStefano Zampini 35ebead697SStefano Zampini Output Parameter: 36ebead697SStefano Zampini . pyname - full dotted Python name [package].module[.{class|function}] 37ebead697SStefano Zampini 38ebead697SStefano Zampini Level: intermediate 39ebead697SStefano Zampini 40ebead697SStefano Zampini .seealso: `MatCreate()`, `MatSetType()`, `MATPYTHON`, `PetscPythonInitialize()`, `MatPythonSetType()` 41ebead697SStefano Zampini @*/ 42*9371c9d4SSatish Balay PetscErrorCode MatPythonGetType(Mat mat, const char *pyname[]) { 43ebead697SStefano Zampini PetscFunctionBegin; 44ebead697SStefano Zampini PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); 45ebead697SStefano Zampini PetscValidPointer(pyname, 2); 46ebead697SStefano Zampini PetscUseMethod(mat, "MatPythonGetType_C", (Mat, const char *[]), (mat, pyname)); 47ebead697SStefano Zampini PetscFunctionReturn(0); 48ebead697SStefano Zampini } 49ebead697SStefano Zampini 50ebead697SStefano Zampini /*@C 51c4aff060SBarry Smith MatPythonCreate - Create a Mat object implemented in Python. 52c4aff060SBarry Smith 53c4aff060SBarry Smith Collective on Mat 54c4aff060SBarry Smith 55c4aff060SBarry Smith Input Parameters: 56c4aff060SBarry Smith + comm - MPI communicator 57c4aff060SBarry Smith . m - number of local rows (or PETSC_DECIDE to have calculated if M is given) 58c4aff060SBarry Smith . n - number of local columns (or PETSC_DECIDE to have calculated if N is given) 59c4aff060SBarry Smith . M - number of global rows (or PETSC_DECIDE to have calculated if m is given) 60c4aff060SBarry Smith . N - number of global columns (or PETSC_DECIDE to have calculated if n is given) 61c4aff060SBarry Smith - pyname - full dotted Python name [package].module[.{class|function}] 62c4aff060SBarry Smith 63c4aff060SBarry Smith Output Parameter: 64c4aff060SBarry Smith . A - the matrix 65c4aff060SBarry Smith 66c4aff060SBarry Smith Level: intermediate 67c4aff060SBarry Smith 68db781477SPatrick Sanan .seealso: `MATPYTHON`, `MatPythonSetType()`, `PetscPythonInitialize()` 69c4aff060SBarry Smith 70c4aff060SBarry Smith @*/ 71*9371c9d4SSatish Balay PetscErrorCode MatPythonCreate(MPI_Comm comm, PetscInt m, PetscInt n, PetscInt M, PetscInt N, const char pyname[], Mat *A) { 72c4aff060SBarry Smith PetscFunctionBegin; 73c4aff060SBarry Smith PetscValidCharPointer(pyname, 6); 74c4aff060SBarry Smith PetscValidPointer(A, 6); 759566063dSJacob Faibussowitsch PetscCall(MatCreate(comm, A)); 769566063dSJacob Faibussowitsch PetscCall(MatSetSizes(*A, m, n, M, N)); 779566063dSJacob Faibussowitsch PetscCall(MatSetType(*A, MATPYTHON)); 789566063dSJacob Faibussowitsch PetscCall(MatPythonSetType(*A, pyname)); 79486bdcd3SStefano Zampini PetscCall(MatBindToCPU(*A, PETSC_FALSE)); 80c4aff060SBarry Smith PetscFunctionReturn(0); 81c4aff060SBarry Smith } 82