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