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_Multilevel(PC);
12: extern int PCCreate_Schur(PC);
14: extern int GTSSerialize_BEuler(MPI_Comm, TS *, PetscViewer, PetscTruth);
16: extern int GVecKSPOptionsChecker_Private(KSP);
17: extern int GSNESOptionsChecker_Private(GSNES);
18: extern int GTSOptionsChecker_Private(GTS);
19: EXTERN_C_END
21: /*@C
22: GSolverInitializePackage - This function initializes everything in the GSolver package. It is called
23: from PetscDLLibraryRegister() when using dynamic libraries, and on the first call to GSNESCreate()
24: or GTSCreate() when using static libraries.
26: Input Parameter:
27: path - The dynamic library path, or PETSC_NULL
29: Level: developer
31: .keywords: Mesh, initialize, package
32: .seealso: PetscInitialize()
33: @*/
34: int GSolverInitializePackage(char *path) {
35: static PetscTruth initialized = PETSC_FALSE;
36: int ierr;
39: if (initialized == PETSC_TRUE) return(0);
40: initialized = PETSC_TRUE;
41: /* Register Classes */
42: /* Register Constructors and Serializers */
43: TSRegisterDynamic("gbeuler", path, "GTSCreate_BEuler", GTSCreate_BEuler);
44: TSSerializeRegisterDynamic(GTS_SER_BEULER_BINARY, path, "GTSSerialize_BEuler", GTSSerialize_BEuler);
45: PCRegisterDynamic("jacobic", path, "PCCreate_Jacobi_Constrained", PCCreate_Jacobi_Constrained);
46: PCRegisterDynamic(PCMULTILEVEL, path, "PCCreate_Multilevel", PCCreate_Multilevel);
47: PCRegisterDynamic(PCSCHUR , path, "PCCreate_Schur", PCCreate_Schur);
48: /* Register Events */
49: PetscLogEventRegister(>S_Reform, "GTSReform", TS_COOKIE);
50: PetscLogEventRegister(>S_Reallocate, "GTSReallocate", TS_COOKIE);
51: /* Process info exclusions */
52: /* Process summary exclusions */
53: /* Add options checkers */
54: KSPAddOptionsChecker(GVecKSPOptionsChecker_Private);
55: SNESAddOptionsChecker(GSNESOptionsChecker_Private);
56: /*TSAddOptionsChecker(GTSOptionsChecker_Private); */
57: return(0);
58: }
60: #ifdef PETSC_USE_DYNAMIC_LIBRARIES
61: EXTERN_C_BEGIN
62: /*
63: PetscDLLibraryRegister - This function is called when the dynamic library it is in is opened.
65: This one registers all the solvers in the GSolver library.
67: Input Parameter:
68: path - library path
69: */
70: int PetscDLLibraryRegister(char *path) {
73: PetscInitializeNoArguments();
74: if (ierr) return(1);
75: /*
76: If we got here then PETSc was properly loaded
77: */
78: GSolverInitializePackage(path);
79: return(0);
80: }
81: EXTERN_C_END
83: /* --------------------------------------------------------------------------*/
84: static char *contents = "PETSc Finite Element Solver library";
86: static char *authors = "Matt Knepley knepley@cs.purdue.edun
87: http://www.cs.purdue.edu/homes/knepley/comp_fluidn";
88: static char *version = PETSC_VERSION_NUMBER;
90: /* --------------------------------------------------------------------------*/
91: EXTERN_C_BEGIN
92: int PetscDLLibraryInfo(char *path,char *type,char **mess)
93: {
94: PetscTruth iscontents, isauthors, isversion;
95: int ierr;
97: PetscStrcmp(type, "Contents", &iscontents);
98: PetscStrcmp(type, "Authors", &isauthors);
99: PetscStrcmp(type, "Version", &isversion);
100: if (iscontents == PETSC_TRUE) *mess = contents;
101: else if (isauthors == PETSC_TRUE) *mess = authors;
102: else if (isversion == PETSC_TRUE) *mess = version;
103: else *mess = PETSC_NULL;
105: return(0);
106: }
107: EXTERN_C_END
108: #endif /* PETSC_USE_DYNAMIC_LIBRARIES */