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