xref: /petsc/src/snes/linesearch/interface/linesearchregi.c (revision ebead697dbf761eb322f829370bbe90b3bd93fa3)
1 #include <petsc/private/linesearchimpl.h>     /*I  "petscsnes.h"  I*/
2 
3 PETSC_EXTERN PetscErrorCode SNESLineSearchCreate_Basic(SNESLineSearch);
4 PETSC_EXTERN PetscErrorCode SNESLineSearchCreate_L2(SNESLineSearch);
5 PETSC_EXTERN PetscErrorCode SNESLineSearchCreate_CP(SNESLineSearch);
6 PETSC_EXTERN PetscErrorCode SNESLineSearchCreate_BT(SNESLineSearch);
7 PETSC_EXTERN PetscErrorCode SNESLineSearchCreate_NLEQERR(SNESLineSearch);
8 PETSC_EXTERN PetscErrorCode SNESLineSearchCreate_Shell(SNESLineSearch);
9 PETSC_EXTERN PetscErrorCode SNESLineSearchCreate_NCGLinear(SNESLineSearch);
10 
11 /*@C
12    SNESLineSearchRegisterAll - Registers all of the nonlinear solver methods in the SNESLineSearch package.
13 
14    Not Collective
15 
16    Level: advanced
17 
18 .seealso: `SNESLineSearchRegisterDestroy()`
19 @*/
20 PetscErrorCode SNESLineSearchRegisterAll(void)
21 {
22   PetscFunctionBegin;
23   if (SNESLineSearchRegisterAllCalled) PetscFunctionReturn(0);
24   SNESLineSearchRegisterAllCalled = PETSC_TRUE;
25   PetscCall(SNESLineSearchRegister(SNESLINESEARCHSHELL,     SNESLineSearchCreate_Shell));
26   PetscCall(SNESLineSearchRegister(SNESLINESEARCHBASIC,     SNESLineSearchCreate_Basic));
27   PetscCall(SNESLineSearchRegister(SNESLINESEARCHNONE,      SNESLineSearchCreate_Basic));
28   PetscCall(SNESLineSearchRegister(SNESLINESEARCHL2,        SNESLineSearchCreate_L2));
29   PetscCall(SNESLineSearchRegister(SNESLINESEARCHBT,        SNESLineSearchCreate_BT));
30   PetscCall(SNESLineSearchRegister(SNESLINESEARCHNLEQERR,   SNESLineSearchCreate_NLEQERR));
31   PetscCall(SNESLineSearchRegister(SNESLINESEARCHCP,        SNESLineSearchCreate_CP));
32   PetscCall(SNESLineSearchRegister(SNESLINESEARCHNCGLINEAR, SNESLineSearchCreate_NCGLinear));
33   PetscFunctionReturn(0);
34 }
35