xref: /petsc/src/snes/linesearch/interface/linesearchregi.c (revision bf7f4e0aa335b99ab1a0e3a31a22f19305ab3c54)
1*bf7f4e0aSPeter Brune #include <private/linesearchimpl.h>     /*I  "petsclinesearch.h"  I*/
2*bf7f4e0aSPeter Brune 
3*bf7f4e0aSPeter Brune EXTERN_C_BEGIN
4*bf7f4e0aSPeter Brune extern PetscErrorCode  LineSearchCreate_Basic(LineSearch);
5*bf7f4e0aSPeter Brune extern PetscErrorCode  LineSearchCreate_L2(LineSearch);
6*bf7f4e0aSPeter Brune EXTERN_C_END
7*bf7f4e0aSPeter Brune 
8*bf7f4e0aSPeter Brune /*
9*bf7f4e0aSPeter Brune extern PetscErrorCode  LineSearchCreate_Cubic(LineSearch);
10*bf7f4e0aSPeter Brune extern PetscErrorCode  LineSearchCreate_Quadratic(LineSearch);
11*bf7f4e0aSPeter Brune extern PetscErrorCode  LineSearchCreate_BasicNoNorms(LineSearch);
12*bf7f4e0aSPeter Brune extern PetscErrorCode  LineSearchCreate_Shell(LineSearch);
13*bf7f4e0aSPeter Brune extern PetscErrorCode  LineSearchCreate_QuadraticSecant(LineSearch);
14*bf7f4e0aSPeter Brune extern PetscErrorCode  LineSearchCreate_CriticalSecant(LineSearch);
15*bf7f4e0aSPeter Brune  */
16*bf7f4e0aSPeter Brune 
17*bf7f4e0aSPeter Brune 
18*bf7f4e0aSPeter Brune #undef __FUNCT__
19*bf7f4e0aSPeter Brune #define __FUNCT__ "LineSearchRegisterAll"
20*bf7f4e0aSPeter Brune /*@C
21*bf7f4e0aSPeter Brune    LineSearchRegisterAll - Registers all of the nonlinear solver methods in the LineSearch package.
22*bf7f4e0aSPeter Brune 
23*bf7f4e0aSPeter Brune    Not Collective
24*bf7f4e0aSPeter Brune 
25*bf7f4e0aSPeter Brune    Level: advanced
26*bf7f4e0aSPeter Brune 
27*bf7f4e0aSPeter Brune .keywords: LineSearch, register, all
28*bf7f4e0aSPeter Brune 
29*bf7f4e0aSPeter Brune .seealso:  LineSearchRegisterDestroy()
30*bf7f4e0aSPeter Brune @*/
31*bf7f4e0aSPeter Brune PetscErrorCode LineSearchRegisterAll(const char path[])
32*bf7f4e0aSPeter Brune {
33*bf7f4e0aSPeter Brune   PetscErrorCode ierr;
34*bf7f4e0aSPeter Brune 
35*bf7f4e0aSPeter Brune   PetscFunctionBegin;
36*bf7f4e0aSPeter Brune   LineSearchRegisterAllCalled = PETSC_TRUE;
37*bf7f4e0aSPeter Brune   /*
38*bf7f4e0aSPeter Brune   ierr = LineSearchRegisterDynamic(LINESEARCHCUBIC,             path,"LineSearchCreate_Cubic",             LineSearchCreate_Cubic);CHKERRQ(ierr);
39*bf7f4e0aSPeter Brune 
40*bf7f4e0aSPeter Brune   ierr = LineSearchRegisterDynamic(LINESEARCHQUADRATIC,         path,"LineSearchCreate_Quadratic",         LineSearchCreate_Quadratic);CHKERRQ(ierr);
41*bf7f4e0aSPeter Brune   ierr = LineSearchRegisterDynamic(LINESEARCHCRITICALSECANT,    path,"LineSearchCreate_CriticalSecant",    LineSearchCreate_CriticalSecant);CHKERRQ(ierr);
42*bf7f4e0aSPeter Brune   ierr = LineSearchRegisterDynamic(LINESEARCHSHELL,             path,"LineSearchCreate_Shell",             LineSearchCreate_Shell);CHKERRQ(ierr);
43*bf7f4e0aSPeter Brune 
44*bf7f4e0aSPeter Brune    */
45*bf7f4e0aSPeter Brune   ierr = LineSearchRegisterDynamic(LINESEARCHBASIC,             path,"LineSearchCreate_Basic",             LineSearchCreate_Basic);CHKERRQ(ierr);
46*bf7f4e0aSPeter Brune   ierr = LineSearchRegisterDynamic(LINESEARCHL2,                path,"LineSearchCreate_L2",                LineSearchCreate_L2);CHKERRQ(ierr);
47*bf7f4e0aSPeter Brune 
48*bf7f4e0aSPeter Brune   PetscFunctionReturn(0);
49*bf7f4e0aSPeter Brune }
50*bf7f4e0aSPeter Brune 
51*bf7f4e0aSPeter Brune #undef __FUNCT__
52*bf7f4e0aSPeter Brune #define __FUNCT__ "LineSearchRegisterDestroy"
53*bf7f4e0aSPeter Brune PetscErrorCode  LineSearchRegisterDestroy(void)
54*bf7f4e0aSPeter Brune {
55*bf7f4e0aSPeter Brune   PetscErrorCode ierr;
56*bf7f4e0aSPeter Brune 
57*bf7f4e0aSPeter Brune   PetscFunctionBegin;
58*bf7f4e0aSPeter Brune   ierr = PetscFListDestroy(&LineSearchList);CHKERRQ(ierr);
59*bf7f4e0aSPeter Brune   LineSearchRegisterAllCalled = PETSC_FALSE;
60*bf7f4e0aSPeter Brune   PetscFunctionReturn(0);
61*bf7f4e0aSPeter Brune }
62