xref: /petsc/src/snes/impls/python/pythonsnes.c (revision c4aff0603fc492ff1b8f7cea5c0683e73afe702f)
1*c4aff060SBarry Smith #include "private/snesimpl.h"          /*I "petscsnes.h" I*/
2*c4aff060SBarry Smith 
3*c4aff060SBarry Smith #undef __FUNCT__
4*c4aff060SBarry Smith #define __FUNCT__ "SNESPythonSetType"
5*c4aff060SBarry Smith /*@C
6*c4aff060SBarry Smith    SNESPythonSetType - Initalize a SNES object implemented in Python.
7*c4aff060SBarry Smith 
8*c4aff060SBarry Smith    Collective on SNES
9*c4aff060SBarry Smith 
10*c4aff060SBarry Smith    Input Parameter:
11*c4aff060SBarry Smith +  snes - the nonlinear solver (SNES) context.
12*c4aff060SBarry Smith -  pyname - full dotted Python name [package].module[.{class|function}]
13*c4aff060SBarry Smith 
14*c4aff060SBarry Smith    Options Database Key:
15*c4aff060SBarry Smith .  -snes_python_type <pyname>
16*c4aff060SBarry Smith 
17*c4aff060SBarry Smith    Level: intermediate
18*c4aff060SBarry Smith 
19*c4aff060SBarry Smith .keywords: SNES, Python
20*c4aff060SBarry Smith 
21*c4aff060SBarry Smith .seealso: SNESCreate(), SNESSetType(), SNESPYTHON, PetscPythonInitialize()
22*c4aff060SBarry Smith @*/
23*c4aff060SBarry Smith PetscErrorCode PETSCSNES_DLLEXPORT SNESPythonSetType(SNES snes,const char pyname[])
24*c4aff060SBarry Smith {
25*c4aff060SBarry Smith   PetscErrorCode (*f)(SNES, const char[]) = 0;
26*c4aff060SBarry Smith   PetscErrorCode ierr;
27*c4aff060SBarry Smith   PetscFunctionBegin;
28*c4aff060SBarry Smith   PetscValidHeaderSpecific(snes,SNES_COOKIE,1);
29*c4aff060SBarry Smith   PetscValidCharPointer(pyname,2);
30*c4aff060SBarry Smith   ierr = PetscObjectQueryFunction((PetscObject)snes,"SNESPythonSetType_C",
31*c4aff060SBarry Smith 				  (PetscVoidFunction*)&f);CHKERRQ(ierr);
32*c4aff060SBarry Smith   if (f) {ierr = (*f)(snes,pyname);CHKERRQ(ierr);}
33*c4aff060SBarry Smith   PetscFunctionReturn(0);
34*c4aff060SBarry Smith }
35