1 #include <petsc/private/matimpl.h> /*I "petscmat.h" I*/ 2 3 /*@C 4 MatPythonSetType - Initalize a Mat object implemented in Python. 5 6 Collective on Mat 7 8 Input Parameter: 9 + mat - the matrix (Mat) object. 10 - pyname - full dotted Python name [package].module[.{class|function}] 11 12 Options Database Key: 13 . -mat_python_type <pyname> 14 15 Level: intermediate 16 17 .keywords: Mat, Python 18 19 .seealso: MatCreate(), MatSetType(), MATPYTHON, PetscPythonInitialize() 20 @*/ 21 PetscErrorCode MatPythonSetType(Mat mat,const char pyname[]) 22 { 23 PetscErrorCode ierr; 24 25 PetscFunctionBegin; 26 PetscValidHeaderSpecific(mat,MAT_CLASSID,1); 27 PetscValidCharPointer(pyname,2); 28 ierr = PetscTryMethod(mat,"MatPythonSetType_C",(Mat, const char[]),(mat,pyname));CHKERRQ(ierr); 29 PetscFunctionReturn(0); 30 } 31 32 33 /*@C 34 MatPythonCreate - Create a Mat object implemented in Python. 35 36 Collective on Mat 37 38 Input Parameters: 39 + comm - MPI communicator 40 . m - number of local rows (or PETSC_DECIDE to have calculated if M is given) 41 . n - number of local columns (or PETSC_DECIDE to have calculated if N is given) 42 . M - number of global rows (or PETSC_DECIDE to have calculated if m is given) 43 . N - number of global columns (or PETSC_DECIDE to have calculated if n is given) 44 - pyname - full dotted Python name [package].module[.{class|function}] 45 46 Output Parameter: 47 . A - the matrix 48 49 Level: intermediate 50 51 .keywords: Mat, Python 52 53 .seealso: MATPYTHON, MatPythonSetType(), PetscPythonInitialize() 54 55 @*/ 56 PetscErrorCode MatPythonCreate(MPI_Comm comm,PetscInt m,PetscInt n,PetscInt M,PetscInt N,const char pyname[],Mat *A) 57 { 58 PetscErrorCode ierr; 59 60 PetscFunctionBegin; 61 PetscValidCharPointer(pyname,6); 62 PetscValidPointer(A,6); 63 ierr = MatCreate(comm,A);CHKERRQ(ierr); 64 ierr = MatSetSizes(*A,m,n,M,N);CHKERRQ(ierr); 65 ierr = MatSetType(*A,MATPYTHON);CHKERRQ(ierr); 66 ierr = MatPythonSetType(*A,pyname);CHKERRQ(ierr); 67 PetscFunctionReturn(0); 68 } 69