1af0996ceSBarry Smith #include <petsc/private/matimpl.h> /*I "petscmat.h" I*/
2c4aff060SBarry Smith
3*cc4c1da9SBarry Smith /*@
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 @*/
MatPythonSetType(Mat mat,const char pyname[])19d71ae5a4SJacob Faibussowitsch PetscErrorCode MatPythonSetType(Mat mat, const char pyname[])
20d71ae5a4SJacob Faibussowitsch {
21c4aff060SBarry Smith PetscFunctionBegin;
220700a824SBarry Smith PetscValidHeaderSpecific(mat, MAT_CLASSID, 1);
234f572ea9SToby Isaac PetscAssertPointer(pyname, 2);
24cac4c232SBarry Smith PetscTryMethod(mat, "MatPythonSetType_C", (Mat, const char[]), (mat, pyname));
253ba16761SJacob Faibussowitsch PetscFunctionReturn(PETSC_SUCCESS);
26c4aff060SBarry Smith }
27c4aff060SBarry Smith
28*cc4c1da9SBarry Smith /*@
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 @*/
MatPythonGetType(Mat mat,const char * pyname[])43d71ae5a4SJacob Faibussowitsch PetscErrorCode MatPythonGetType(Mat mat, const char *pyname[])
44d71ae5a4SJacob Faibussowitsch {
45ebead697SStefano Zampini PetscFunctionBegin;
46ebead697SStefano Zampini PetscValidHeaderSpecific(mat, MAT_CLASSID, 1);
474f572ea9SToby Isaac PetscAssertPointer(pyname, 2);
48ebead697SStefano Zampini PetscUseMethod(mat, "MatPythonGetType_C", (Mat, const char *[]), (mat, pyname));
493ba16761SJacob Faibussowitsch PetscFunctionReturn(PETSC_SUCCESS);
50ebead697SStefano Zampini }
51ebead697SStefano Zampini
52*cc4c1da9SBarry Smith /*@
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 @*/
MatPythonCreate(MPI_Comm comm,PetscInt m,PetscInt n,PetscInt M,PetscInt N,const char pyname[],Mat * A)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;
754f572ea9SToby Isaac PetscAssertPointer(pyname, 6);
764f572ea9SToby 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