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 MillsPetscErrorCode 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 MillsPetscErrorCode 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