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 6c3339decSBarry Smith Collective 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 171cc06b55SBarry Smith .seealso: [](ch_matrices), `Mat`, `MatType`, `MatCreate()`, `MatSetType()`, `MATPYTHON`, `PetscPythonInitialize()` 18c4aff060SBarry Smith @*/ 19d71ae5a4SJacob Faibussowitsch PetscErrorCode MatPythonSetType(Mat mat, const char pyname[]) 20d71ae5a4SJacob Faibussowitsch { 21c4aff060SBarry Smith PetscFunctionBegin; 220700a824SBarry Smith PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); 23*4f572ea9SToby Isaac PetscAssertPointer(pyname, 2); 24cac4c232SBarry Smith PetscTryMethod(mat, "MatPythonSetType_C", (Mat, const char[]), (mat, pyname)); 253ba16761SJacob Faibussowitsch PetscFunctionReturn(PETSC_SUCCESS); 26c4aff060SBarry Smith } 27c4aff060SBarry Smith 28c4aff060SBarry Smith /*@C 292ef1f0ffSBarry Smith MatPythonGetType - Get the Python name of a `Mat` object implemented in Python. 30ebead697SStefano Zampini 312ef1f0ffSBarry Smith 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 411cc06b55SBarry Smith .seealso: [](ch_matrices), `Mat`, `MatType`, `MatCreate()`, `MatSetType()`, `MATPYTHON`, `PetscPythonInitialize()`, `MatPythonSetType()` 42ebead697SStefano Zampini @*/ 43d71ae5a4SJacob Faibussowitsch PetscErrorCode MatPythonGetType(Mat mat, const char *pyname[]) 44d71ae5a4SJacob Faibussowitsch { 45ebead697SStefano Zampini PetscFunctionBegin; 46ebead697SStefano Zampini PetscValidHeaderSpecific(mat, MAT_CLASSID, 1); 47*4f572ea9SToby Isaac PetscAssertPointer(pyname, 2); 48ebead697SStefano Zampini PetscUseMethod(mat, "MatPythonGetType_C", (Mat, const char *[]), (mat, pyname)); 493ba16761SJacob Faibussowitsch PetscFunctionReturn(PETSC_SUCCESS); 50ebead697SStefano Zampini } 51ebead697SStefano Zampini 52ebead697SStefano Zampini /*@C 5311a5261eSBarry Smith MatPythonCreate - Create a `Mat` object implemented in Python. 54c4aff060SBarry Smith 55c3339decSBarry Smith Collective 56c4aff060SBarry Smith 57c4aff060SBarry Smith Input Parameters: 58c4aff060SBarry Smith + comm - MPI communicator 592ef1f0ffSBarry Smith . m - number of local rows (or `PETSC_DECIDE` to have calculated if `M` is given) 602ef1f0ffSBarry Smith . n - number of local columns (or `PETSC_DECIDE` to have calculated if `N` is given) 612ef1f0ffSBarry Smith . M - number of global rows (or `PETSC_DECIDE` to have calculated if `m` is given) 622ef1f0ffSBarry 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 701cc06b55SBarry Smith .seealso: [](ch_matrices), `Mat`, `MatType`, `MATPYTHON`, `MatPythonSetType()`, `PetscPythonInitialize()` 71c4aff060SBarry Smith @*/ 72d71ae5a4SJacob Faibussowitsch PetscErrorCode MatPythonCreate(MPI_Comm comm, PetscInt m, PetscInt n, PetscInt M, PetscInt N, const char pyname[], Mat *A) 73d71ae5a4SJacob Faibussowitsch { 74c4aff060SBarry Smith PetscFunctionBegin; 75*4f572ea9SToby Isaac PetscAssertPointer(pyname, 6); 76*4f572ea9SToby Isaac PetscAssertPointer(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)); 823ba16761SJacob Faibussowitsch PetscFunctionReturn(PETSC_SUCCESS); 83c4aff060SBarry Smith } 84