Actual source code: dlregis.c
1: #ifdef PETSC_RCS_HEADER
2: static char vcid[] = "$Id: dlregis.c,v 1.1 2000/01/10 03:54:20 knepley Exp $";
3: #endif
5: #include petscts.h
6: #include gsolver.h
8: EXTERN_C_BEGIN
9: extern int GTSCreate_BEuler(TS);
10: extern int PCCreate_Jacobi_Constrained(PC);
11: extern int PCCreate_Schur(PC);
12: extern int GTSSerialize_BEuler(MPI_Comm, TS *, PetscViewer, PetscTruth);
13: extern int GVecKSPOptionsChecker_Private(KSP);
14: extern int GSNESOptionsChecker_Private(GSNES);
15: extern int GTSOptionsChecker_Private(GTS);
17: #if !defined (PETSC_USE_COMPLEX)
18: extern int PCCreate_Multilevel(PC);
19: #endif
21: EXTERN_C_END
23: /*@C
24: GSolverInitializePackage - This function initializes everything in the GSolver package. It is called
25: from PetscDLLibraryRegister() when using dynamic libraries, and on the first call to GSNESCreate()
26: or GTSCreate() when using static libraries.
28: Input Parameter:
29: path - The dynamic library path, or PETSC_NULL
31: Level: developer
33: .keywords: Mesh, initialize, package
34: .seealso: PetscInitialize()
35: @*/
36: int GSolverInitializePackage(char *path) {
37: static PetscTruth initialized = PETSC_FALSE;
38: int ierr;
41: if (initialized == PETSC_TRUE) return(0);
42: initialized = PETSC_TRUE;
43: /* Register Classes */
44: /* Register Constructors and Serializers */
45: TSRegisterDynamic("gbeuler", path, "GTSCreate_BEuler", GTSCreate_BEuler);
46: TSSerializeRegisterDynamic(GTS_SER_BEULER_BINARY, path, "GTSSerialize_BEuler", GTSSerialize_BEuler);
47: PCRegisterDynamic("jacobic", path, "PCCreate_Jacobi_Constrained", PCCreate_Jacobi_Constrained);
48: #if !defined (PETSC_USE_COMPLEX)
49: PCRegisterDynamic(PCMULTILEVEL, path, "PCCreate_Multilevel", PCCreate_Multilevel);
50: #endif
51: PCRegisterDynamic(PCSCHUR , path, "PCCreate_Schur", PCCreate_Schur);
52: /* Register Events */
53: PetscLogEventRegister(>S_Reform, "GTSReform", TS_COOKIE);
54: PetscLogEventRegister(>S_Reallocate, "GTSReallocate", TS_COOKIE);
55: /* Process info exclusions */
56: /* Process summary exclusions */
57: /* Add options checkers */
58: KSPAddOptionsChecker(GVecKSPOptionsChecker_Private);
59: SNESAddOptionsChecker(GSNESOptionsChecker_Private);
60: /*TSAddOptionsChecker(GTSOptionsChecker_Private); */
61: return(0);
62: }
64: #ifdef PETSC_USE_DYNAMIC_LIBRARIES
65: EXTERN_C_BEGIN
66: /*
67: PetscDLLibraryRegister - This function is called when the dynamic library it is in is opened.
69: This one registers all the solvers in the GSolver library.
71: Input Parameter:
72: path - library path
73: */
74: int PetscDLLibraryRegister(char *path) {
77: PetscInitializeNoArguments();
78: if (ierr) return(1);
79: /*
80: If we got here then PETSc was properly loaded
81: */
82: GSolverInitializePackage(path);
83: return(0);
84: }
85: EXTERN_C_END
87: /* --------------------------------------------------------------------------*/
88: static char *contents = "PETSc Finite Element Solver library";
90: static char *authors = "Matt Knepley knepley@cs.purdue.edun
91: http://www.cs.purdue.edu/homes/knepley/comp_fluidn";
93: #include src/sys/src/utils/dlregis.h
95: /* --------------------------------------------------------------------------*/
97: #endif /* PETSC_USE_DYNAMIC_LIBRARIES */