Date: 2022-03-04T17:37:55+00:00

Actual source code: pythonmat.c

      1: #include <petsc/private/matimpl.h>

      3: /*@C
      4:    MatPythonSetType - Initialize a Mat object implemented in Python.

      6:    Collective on Mat

      8:    Input Parameters:
      9: +  mat - the matrix (Mat) object.
     10: -  pyname - full dotted Python name [package].module[.{class|function}]

     12:    Options Database Key:
     13: .  -mat_python_type <pyname>

     15:    Level: intermediate

     17: .seealso: MatCreate(), MatSetType(), MATPYTHON, PetscPythonInitialize()
     18: @*/
     19: PetscErrorCode  MatPythonSetType(Mat mat,const char pyname[])
     20: {

     26:   PetscTryMethod(mat,"MatPythonSetType_C",(Mat, const char[]),(mat,pyname));
     27:   return(0);
     28: }

     30: /*@C
     31:    MatPythonCreate - Create a Mat object implemented in Python.

     33:    Collective on Mat

     35:    Input Parameters:
     36: +  comm - MPI communicator
     37: .  m - number of local rows (or PETSC_DECIDE to have calculated if M is given)
     38: .  n - number of local columns (or PETSC_DECIDE to have calculated if N is given)
     39: .  M - number of global rows (or PETSC_DECIDE to have calculated if m is given)
     40: .  N - number of global columns (or PETSC_DECIDE to have calculated if n is given)
     41: -  pyname - full dotted Python name [package].module[.{class|function}]

     43:    Output Parameter:
     44: .  A - the matrix

     46:    Level: intermediate

     48: .seealso: MATPYTHON, MatPythonSetType(), PetscPythonInitialize()

     50: @*/
     51: PetscErrorCode  MatPythonCreate(MPI_Comm comm,PetscInt m,PetscInt n,PetscInt M,PetscInt N,const char pyname[],Mat *A)
     52: {

     58:   MatCreate(comm,A);
     59:   MatSetSizes(*A,m,n,M,N);
     60:   MatSetType(*A,MATPYTHON);
     61:   MatPythonSetType(*A,pyname);
     62:   return(0);
     63: }