xref: /petsc/src/snes/linesearch/interface/linesearchregi.c (revision 6188f407cda09d19a743ec1bae486f4512cd7f1f)
1bf7f4e0aSPeter Brune #include <private/linesearchimpl.h>     /*I  "petsclinesearch.h"  I*/
2bf7f4e0aSPeter Brune 
3bf7f4e0aSPeter Brune EXTERN_C_BEGIN
4*6188f407SPeter Brune extern PetscErrorCode  PetscLineSearchCreate_Basic(PetscLineSearch);
5*6188f407SPeter Brune extern PetscErrorCode  PetscLineSearchCreate_L2(PetscLineSearch);
6*6188f407SPeter Brune extern PetscErrorCode  PetscLineSearchCreate_CP(PetscLineSearch);
7*6188f407SPeter Brune extern PetscErrorCode  PetscLineSearchCreate_BT(PetscLineSearch);
8*6188f407SPeter Brune extern PetscErrorCode  PetscLineSearchCreate_Shell(PetscLineSearch);
9bf7f4e0aSPeter Brune EXTERN_C_END
10bf7f4e0aSPeter Brune 
11bf7f4e0aSPeter Brune /*
12*6188f407SPeter Brune extern PetscErrorCode  PetscLineSearchCreate_Cubic(PetscLineSearch);
13*6188f407SPeter Brune extern PetscErrorCode  PetscLineSearchCreate_Quadratic(PetscLineSearch);
14*6188f407SPeter Brune extern PetscErrorCode  PetscLineSearchCreate_BasicNoNorms(PetscLineSearch);
15*6188f407SPeter Brune extern PetscErrorCode  PetscLineSearchCreate_QuadraticSecant(PetscLineSearch);
16*6188f407SPeter Brune extern PetscErrorCode  PetscLineSearchCreate_CriticalSecant(PetscLineSearch);
17bf7f4e0aSPeter Brune  */
18bf7f4e0aSPeter Brune 
19bf7f4e0aSPeter Brune 
20bf7f4e0aSPeter Brune #undef __FUNCT__
21*6188f407SPeter Brune #define __FUNCT__ "PetscLineSearchRegisterAll"
22bf7f4e0aSPeter Brune /*@C
23*6188f407SPeter Brune    PetscLineSearchRegisterAll - Registers all of the nonlinear solver methods in the PetscLineSearch package.
24bf7f4e0aSPeter Brune 
25bf7f4e0aSPeter Brune    Not Collective
26bf7f4e0aSPeter Brune 
27bf7f4e0aSPeter Brune    Level: advanced
28bf7f4e0aSPeter Brune 
29*6188f407SPeter Brune .keywords: PetscLineSearch, register, all
30bf7f4e0aSPeter Brune 
31*6188f407SPeter Brune .seealso:  PetscLineSearchRegisterDestroy()
32bf7f4e0aSPeter Brune @*/
33*6188f407SPeter Brune PetscErrorCode PetscLineSearchRegisterAll(const char path[])
34bf7f4e0aSPeter Brune {
35bf7f4e0aSPeter Brune   PetscErrorCode ierr;
36bf7f4e0aSPeter Brune 
37bf7f4e0aSPeter Brune   PetscFunctionBegin;
38*6188f407SPeter Brune   PetscLineSearchRegisterAllCalled = PETSC_TRUE;
39bf7f4e0aSPeter Brune   /*
40*6188f407SPeter Brune   ierr = PetscLineSearchRegisterDynamic(LINESEARCHCUBIC,             path,"PetscLineSearchCreate_Cubic",             PetscLineSearchCreate_Cubic);CHKERRQ(ierr);
41bf7f4e0aSPeter Brune 
42*6188f407SPeter Brune   ierr = PetscLineSearchRegisterDynamic(LINESEARCHQUADRATIC,         path,"PetscLineSearchCreate_Quadratic",         PetscLineSearchCreate_Quadratic);CHKERRQ(ierr);
43*6188f407SPeter Brune   ierr = PetscLineSearchRegisterDynamic(LINESEARCHCRITICALSECANT,    path,"PetscLineSearchCreate_CriticalSecant",    PetscLineSearchCreate_CriticalSecant);CHKERRQ(ierr);
44bf7f4e0aSPeter Brune 
45bf7f4e0aSPeter Brune    */
46*6188f407SPeter Brune   ierr = PetscLineSearchRegisterDynamic(PETSCLINESEARCHSHELL,             path,"PetscLineSearchCreate_Shell",             PetscLineSearchCreate_Shell);CHKERRQ(ierr);
47*6188f407SPeter Brune   ierr = PetscLineSearchRegisterDynamic(PETSCLINESEARCHBASIC,             path,"PetscLineSearchCreate_Basic",             PetscLineSearchCreate_Basic);CHKERRQ(ierr);
48*6188f407SPeter Brune   ierr = PetscLineSearchRegisterDynamic(PETSCLINESEARCHL2,                path,"PetscLineSearchCreate_L2",                PetscLineSearchCreate_L2);CHKERRQ(ierr);
49*6188f407SPeter Brune   ierr = PetscLineSearchRegisterDynamic(PETSCLINESEARCHBT,                path,"PetscLineSearchCreate_BT",                PetscLineSearchCreate_BT);CHKERRQ(ierr);
50*6188f407SPeter Brune   ierr = PetscLineSearchRegisterDynamic(PETSCLINESEARCHCP,                path,"PetscLineSearchCreate_CP",                PetscLineSearchCreate_CP);CHKERRQ(ierr);
51bf7f4e0aSPeter Brune 
52bf7f4e0aSPeter Brune   PetscFunctionReturn(0);
53bf7f4e0aSPeter Brune }
54bf7f4e0aSPeter Brune 
55bf7f4e0aSPeter Brune #undef __FUNCT__
56*6188f407SPeter Brune #define __FUNCT__ "PetscLineSearchRegisterDestroy"
57*6188f407SPeter Brune PetscErrorCode  PetscLineSearchRegisterDestroy(void)
58bf7f4e0aSPeter Brune {
59bf7f4e0aSPeter Brune   PetscErrorCode ierr;
60bf7f4e0aSPeter Brune 
61bf7f4e0aSPeter Brune   PetscFunctionBegin;
62*6188f407SPeter Brune   ierr = PetscFListDestroy(&PetscLineSearchList);CHKERRQ(ierr);
63*6188f407SPeter Brune   PetscLineSearchRegisterAllCalled = PETSC_FALSE;
64bf7f4e0aSPeter Brune   PetscFunctionReturn(0);
65bf7f4e0aSPeter Brune }
66