xref: /petsc/src/ksp/ksp/impls/python/pythonksp.c (revision 1ed6e3ff8437baa411029a28c2b08f047df9ad9a)
1 #include <petsc/private/kspimpl.h> /*I "petscksp.h" I*/
2 
3 /*@
4    KSPPythonSetType - Initialize a `KSP` object to a type implemented in Python.
5 
6    Collective
7 
8    Input Parameters:
9 +  ksp - the linear solver `KSP` context.
10 -  pyname - full dotted Python name [package].module[.{class|function}]
11 
12    Options Database Key:
13 .  -ksp_python_type <pyname> - python class
14 
15    Level: intermediate
16 
17 .seealso: [](ch_ksp), `KSPCreate()`, `KSPSetType()`, `KSPPYTHON`, `PetscPythonInitialize()`
18 @*/
KSPPythonSetType(KSP ksp,const char pyname[])19 PetscErrorCode KSPPythonSetType(KSP ksp, const char pyname[])
20 {
21   PetscFunctionBegin;
22   PetscValidHeaderSpecific(ksp, KSP_CLASSID, 1);
23   PetscAssertPointer(pyname, 2);
24   PetscTryMethod(ksp, "KSPPythonSetType_C", (KSP, const char[]), (ksp, pyname));
25   PetscFunctionReturn(PETSC_SUCCESS);
26 }
27 
28 /*@
29    KSPPythonGetType - Get the type of a `KSP` object implemented in Python.
30 
31    Not Collective
32 
33    Input Parameter:
34 .  ksp - the linear solver `KSP` context.
35 
36    Output Parameter:
37 .  pyname - full dotted Python name [package].module[.{class|function}]
38 
39    Level: intermediate
40 
41 .seealso: [](ch_ksp), `KSPCreate()`, `KSPSetType()`, `KSPPYTHON`, `PetscPythonInitialize()`, `KSPPythonSetType()`
42 @*/
KSPPythonGetType(KSP ksp,const char * pyname[])43 PetscErrorCode KSPPythonGetType(KSP ksp, const char *pyname[])
44 {
45   PetscFunctionBegin;
46   PetscValidHeaderSpecific(ksp, KSP_CLASSID, 1);
47   PetscAssertPointer(pyname, 2);
48   PetscUseMethod(ksp, "KSPPythonGetType_C", (KSP, const char *[]), (ksp, pyname));
49   PetscFunctionReturn(PETSC_SUCCESS);
50 }
51