xref: /petsc/src/ml/regressor/interface/dlregisregressor.c (revision c12c126234ed623246a63bfa78c9f75a3aa00323)
1*34b254c5SRichard Tran Mills #include <petsc/private/regressorimpl.h>
2*34b254c5SRichard Tran Mills 
3*34b254c5SRichard Tran Mills static PetscBool PetscRegressorPackageInitialized = PETSC_FALSE;
4*34b254c5SRichard Tran Mills 
5*34b254c5SRichard Tran Mills /*@C
6*34b254c5SRichard Tran Mills   PetscRegressorInitializePackage - Initialize `PetscRegressor` package
7*34b254c5SRichard Tran Mills 
8*34b254c5SRichard Tran Mills   Logically Collective
9*34b254c5SRichard Tran Mills 
10*34b254c5SRichard Tran Mills   Level: developer
11*34b254c5SRichard Tran Mills 
12*34b254c5SRichard Tran Mills .seealso: `PetscRegressorFinalizePackage()`
13*34b254c5SRichard Tran Mills @*/
PetscRegressorInitializePackage(void)14*34b254c5SRichard Tran Mills PetscErrorCode PetscRegressorInitializePackage(void)
15*34b254c5SRichard Tran Mills {
16*34b254c5SRichard Tran Mills   PetscFunctionBegin;
17*34b254c5SRichard Tran Mills   if (PetscRegressorPackageInitialized) PetscFunctionReturn(PETSC_SUCCESS);
18*34b254c5SRichard Tran Mills   PetscRegressorPackageInitialized = PETSC_TRUE;
19*34b254c5SRichard Tran Mills   /* Register Class */
20*34b254c5SRichard Tran Mills   PetscCall(PetscClassIdRegister("Regressor", &PETSCREGRESSOR_CLASSID));
21*34b254c5SRichard Tran Mills   /* Register Constructors */
22*34b254c5SRichard Tran Mills   PetscCall(PetscRegressorRegisterAll());
23*34b254c5SRichard Tran Mills   /* Register Events */
24*34b254c5SRichard Tran Mills   PetscCall(PetscLogEventRegister("PetscRegressorSetUp", PETSCREGRESSOR_CLASSID, &PetscRegressor_SetUp));
25*34b254c5SRichard Tran Mills   PetscCall(PetscLogEventRegister("PetscRegressorFit", PETSCREGRESSOR_CLASSID, &PetscRegressor_Fit));
26*34b254c5SRichard Tran Mills   PetscCall(PetscLogEventRegister("PetscRegressorPredict", PETSCREGRESSOR_CLASSID, &PetscRegressor_Predict));
27*34b254c5SRichard Tran Mills   /* Process Info */
28*34b254c5SRichard Tran Mills   {
29*34b254c5SRichard Tran Mills     PetscClassId classids[1];
30*34b254c5SRichard Tran Mills 
31*34b254c5SRichard Tran Mills     classids[0] = PETSCREGRESSOR_CLASSID;
32*34b254c5SRichard Tran Mills     PetscCall(PetscInfoProcessClass("petscregressor", 1, classids));
33*34b254c5SRichard Tran Mills   }
34*34b254c5SRichard Tran Mills   /* Register package finalizer */
35*34b254c5SRichard Tran Mills   PetscCall(PetscRegisterFinalize(PetscRegressorFinalizePackage));
36*34b254c5SRichard Tran Mills   PetscFunctionReturn(PETSC_SUCCESS);
37*34b254c5SRichard Tran Mills }
38*34b254c5SRichard Tran Mills 
39*34b254c5SRichard Tran Mills /*@C
40*34b254c5SRichard Tran Mills   PetscRegressorFinalizePackage - Finalize `PetscRegressor` package; it is called from `PetscFinalize()`
41*34b254c5SRichard Tran Mills 
42*34b254c5SRichard Tran Mills   Logically Collective
43*34b254c5SRichard Tran Mills 
44*34b254c5SRichard Tran Mills   Level: developer
45*34b254c5SRichard Tran Mills 
46*34b254c5SRichard Tran Mills .seealso: `PetscRegressorInitializePackage()`
47*34b254c5SRichard Tran Mills @*/
PetscRegressorFinalizePackage(void)48*34b254c5SRichard Tran Mills PetscErrorCode PetscRegressorFinalizePackage(void)
49*34b254c5SRichard Tran Mills {
50*34b254c5SRichard Tran Mills   PetscFunctionBegin;
51*34b254c5SRichard Tran Mills   PetscCall(PetscFunctionListDestroy(&PetscRegressorList));
52*34b254c5SRichard Tran Mills   PetscRegressorPackageInitialized = PETSC_FALSE;
53*34b254c5SRichard Tran Mills   PetscRegressorRegisterAllCalled  = PETSC_FALSE;
54*34b254c5SRichard Tran Mills   PetscFunctionReturn(PETSC_SUCCESS);
55*34b254c5SRichard Tran Mills }
56