Actual source code: dlregisdmdm.c
petsc-3.7.7 2017-09-25
2: #include <petsc/private/dmdaimpl.h>
3: #include <petsc/private/dmpleximpl.h>
4: #include <petsc/private/petscdsimpl.h>
5: #include <petsc/private/petscfeimpl.h>
6: #include <petsc/private/petscfvimpl.h>
8: static PetscBool DMPackageInitialized = PETSC_FALSE;
11: /*@C
12: DMFinalizePackage - This function finalizes everything in the DM package. It is called
13: from PetscFinalize().
15: Level: developer
17: .keywords: AO, initialize, package
18: .seealso: PetscInitialize()
19: @*/
20: PetscErrorCode DMFinalizePackage(void)
21: {
25: PetscFunctionListDestroy(&PetscPartitionerList);
26: PetscFunctionListDestroy(&DMList);
27: DMPackageInitialized = PETSC_FALSE;
28: DMRegisterAllCalled = PETSC_FALSE;
29: PetscPartitionerRegisterAllCalled = PETSC_FALSE;
30: return(0);
31: }
33: #if defined(PETSC_HAVE_HYPRE)
34: PETSC_EXTERN PetscErrorCode MatCreate_HYPREStruct(Mat);
35: #endif
39: /*@C
40: DMInitializePackage - This function initializes everything in the DM package. It is called
41: from PetscDLLibraryRegister() when using dynamic libraries, and on the first call to AOCreate()
42: or DMDACreate() when using static libraries.
44: Level: developer
46: .keywords: AO, initialize, package
47: .seealso: PetscInitialize()
48: @*/
49: PetscErrorCode DMInitializePackage(void)
50: {
51: char logList[256];
52: char *className;
53: PetscBool opt;
57: if (DMPackageInitialized) return(0);
58: DMPackageInitialized = PETSC_TRUE;
60: /* Register Classes */
61: PetscClassIdRegister("Distributed Mesh",&DM_CLASSID);
62: PetscClassIdRegister("GraphPartitioner",&PETSCPARTITIONER_CLASSID);
64: #if defined(PETSC_HAVE_HYPRE)
65: MatRegister(MATHYPRESTRUCT, MatCreate_HYPREStruct);
66: #endif
68: /* Register Constructors */
69: DMRegisterAll();
70: /* Register Events */
71: PetscLogEventRegister("DMConvert", DM_CLASSID,&DM_Convert);
72: PetscLogEventRegister("DMGlobalToLocal", DM_CLASSID,&DM_GlobalToLocal);
73: PetscLogEventRegister("DMLocalToGlobal", DM_CLASSID,&DM_LocalToGlobal);
74: PetscLogEventRegister("DMLocatePoints", DM_CLASSID,&DM_LocatePoints);
75: PetscLogEventRegister("DMCoarsen", DM_CLASSID,&DM_Coarsen);
76: PetscLogEventRegister("DMCreateInterp", DM_CLASSID,&DM_CreateInterpolation);
77: PetscLogEventRegister("DMCreateRestrict", DM_CLASSID,&DM_CreateRestriction);
79: PetscLogEventRegister("DMDALocalADFunc", DM_CLASSID,&DMDA_LocalADFunction);
81: PetscLogEventRegister("Mesh Partition", PETSCPARTITIONER_CLASSID,&PETSCPARTITIONER_Partition);
82: PetscLogEventRegister("Mesh Migration", DM_CLASSID,&DMPLEX_Migrate);
83: PetscLogEventRegister("DMPlexInterp", DM_CLASSID,&DMPLEX_Interpolate);
84: PetscLogEventRegister("DMPlexDistribute", DM_CLASSID,&DMPLEX_Distribute);
85: PetscLogEventRegister("DMPlexDistCones", DM_CLASSID,&DMPLEX_DistributeCones);
86: PetscLogEventRegister("DMPlexDistLabels", DM_CLASSID,&DMPLEX_DistributeLabels);
87: PetscLogEventRegister("DMPlexDistribSF", DM_CLASSID,&DMPLEX_DistributeSF);
88: PetscLogEventRegister("DMPlexDistribOL", DM_CLASSID,&DMPLEX_DistributeOverlap);
89: PetscLogEventRegister("DMPlexDistField", DM_CLASSID,&DMPLEX_DistributeField);
90: PetscLogEventRegister("DMPlexDistData", DM_CLASSID,&DMPLEX_DistributeData);
91: PetscLogEventRegister("DMPlexGToNBegin", DM_CLASSID,&DMPLEX_GlobalToNaturalBegin);
92: PetscLogEventRegister("DMPlexGToNEnd", DM_CLASSID,&DMPLEX_GlobalToNaturalEnd);
93: PetscLogEventRegister("DMPlexNToGBegin", DM_CLASSID,&DMPLEX_NaturalToGlobalBegin);
94: PetscLogEventRegister("DMPlexNToGEnd", DM_CLASSID,&DMPLEX_NaturalToGlobalEnd);
95: PetscLogEventRegister("DMPlexStratify", DM_CLASSID,&DMPLEX_Stratify);
96: PetscLogEventRegister("DMPlexPrealloc", DM_CLASSID,&DMPLEX_Preallocate);
97: PetscLogEventRegister("DMPlexResidualFE", DM_CLASSID,&DMPLEX_ResidualFEM);
98: PetscLogEventRegister("DMPlexJacobianFE", DM_CLASSID,&DMPLEX_JacobianFEM);
99: PetscLogEventRegister("DMPlexInterpFE", DM_CLASSID,&DMPLEX_InterpolatorFEM);
100: PetscLogEventRegister("DMPlexInjectorFE", DM_CLASSID,&DMPLEX_InjectorFEM);
101: PetscLogEventRegister("DMPlexIntegralFEM", DM_CLASSID,&DMPLEX_IntegralFEM);
102: PetscLogEventRegister("DMPlexCreateGmsh", DM_CLASSID,&DMPLEX_CreateGmsh);
103: /* Process info exclusions */
104: PetscOptionsGetString(NULL,NULL, "-info_exclude", logList, 256, &opt);
105: if (opt) {
106: PetscStrstr(logList, "da", &className);
107: if (className) {
108: PetscInfoDeactivateClass(DM_CLASSID);
109: }
110: }
111: /* Process summary exclusions */
112: PetscOptionsGetString(NULL,NULL, "-log_exclude", logList, 256, &opt);
113: if (opt) {
114: PetscStrstr(logList, "da", &className);
115: if (className) {
116: PetscLogEventDeactivateClass(DM_CLASSID);
117: }
118: }
119: PetscRegisterFinalize(DMFinalizePackage);
120: return(0);
121: }
122: #include <petscfe.h>
124: static PetscBool PetscFEPackageInitialized = PETSC_FALSE;
127: /*@C
128: PetscFEFinalizePackage - This function finalizes everything in the PetscFE package. It is called
129: from PetscFinalize().
131: Level: developer
133: .keywords: PetscFE, initialize, package
134: .seealso: PetscInitialize()
135: @*/
136: PetscErrorCode PetscFEFinalizePackage(void)
137: {
141: PetscFunctionListDestroy(&PetscSpaceList);
142: PetscFunctionListDestroy(&PetscDualSpaceList);
143: PetscFunctionListDestroy(&PetscFEList);
144: PetscFEPackageInitialized = PETSC_FALSE;
145: PetscSpaceRegisterAllCalled = PETSC_FALSE;
146: PetscDualSpaceRegisterAllCalled = PETSC_FALSE;
147: PetscFERegisterAllCalled = PETSC_FALSE;
148: return(0);
149: }
153: /*@C
154: PetscFEInitializePackage - This function initializes everything in the FE package. It is called
155: from PetscDLLibraryRegister() when using dynamic libraries, and on the first call to PetscSpaceCreate()
156: when using static libraries.
158: Level: developer
160: .keywords: PetscFE, initialize, package
161: .seealso: PetscInitialize()
162: @*/
163: PetscErrorCode PetscFEInitializePackage(void)
164: {
165: char logList[256];
166: char *className;
167: PetscBool opt;
171: if (PetscFEPackageInitialized) return(0);
172: PetscFEPackageInitialized = PETSC_TRUE;
174: /* Register Classes */
175: PetscClassIdRegister("Linear Space", &PETSCSPACE_CLASSID);
176: PetscClassIdRegister("Dual Space", &PETSCDUALSPACE_CLASSID);
177: PetscClassIdRegister("FE Space", &PETSCFE_CLASSID);
179: /* Register Constructors */
180: PetscSpaceRegisterAll();
181: PetscDualSpaceRegisterAll();
182: PetscFERegisterAll();
183: /* Register Events */
184: /* Process info exclusions */
185: PetscOptionsGetString(NULL,NULL, "-info_exclude", logList, 256, &opt);
186: if (opt) {
187: PetscStrstr(logList, "fe", &className);
188: if (className) {PetscInfoDeactivateClass(PETSCFE_CLASSID);}
189: }
190: /* Process summary exclusions */
191: PetscOptionsGetString(NULL,NULL, "-log_exclude", logList, 256, &opt);
192: if (opt) {
193: PetscStrstr(logList, "fe", &className);
194: if (className) {PetscLogEventDeactivateClass(PETSCFE_CLASSID);}
195: }
196: PetscRegisterFinalize(PetscFEFinalizePackage);
197: return(0);
198: }
199: #include <petscfv.h>
201: static PetscBool PetscFVPackageInitialized = PETSC_FALSE;
204: /*@C
205: PetscFVFinalizePackage - This function finalizes everything in the PetscFV package. It is called
206: from PetscFinalize().
208: Level: developer
210: .keywords: PetscFV, initialize, package
211: .seealso: PetscInitialize()
212: @*/
213: PetscErrorCode PetscFVFinalizePackage(void)
214: {
218: PetscFunctionListDestroy(&PetscLimiterList);
219: PetscFunctionListDestroy(&PetscFVList);
220: PetscFVPackageInitialized = PETSC_FALSE;
221: PetscFVRegisterAllCalled = PETSC_FALSE;
222: PetscLimiterRegisterAllCalled = PETSC_FALSE;
223: return(0);
224: }
228: /*@C
229: PetscFVInitializePackage - This function initializes everything in the FV package. It is called
230: from PetscDLLibraryRegister() when using dynamic libraries, and on the first call to PetscFVCreate()
231: when using static libraries.
233: Level: developer
235: .keywords: PetscFV, initialize, package
236: .seealso: PetscInitialize()
237: @*/
238: PetscErrorCode PetscFVInitializePackage(void)
239: {
240: char logList[256];
241: char *className;
242: PetscBool opt;
246: if (PetscFVPackageInitialized) return(0);
247: PetscFVPackageInitialized = PETSC_TRUE;
249: /* Register Classes */
250: PetscClassIdRegister("FV Space", &PETSCFV_CLASSID);
251: PetscClassIdRegister("Limiter", &PETSCLIMITER_CLASSID);
253: /* Register Constructors */
254: PetscFVRegisterAll();
255: /* Register Events */
256: /* Process info exclusions */
257: PetscOptionsGetString(NULL,NULL, "-info_exclude", logList, 256, &opt);
258: if (opt) {
259: PetscStrstr(logList, "fv", &className);
260: if (className) {PetscInfoDeactivateClass(PETSCFV_CLASSID);}
261: PetscStrstr(logList, "limiter", &className);
262: if (className) {PetscInfoDeactivateClass(PETSCLIMITER_CLASSID);}
263: }
264: /* Process summary exclusions */
265: PetscOptionsGetString(NULL,NULL, "-log_exclude", logList, 256, &opt);
266: if (opt) {
267: PetscStrstr(logList, "fv", &className);
268: if (className) {PetscLogEventDeactivateClass(PETSCFV_CLASSID);}
269: PetscStrstr(logList, "limiter", &className);
270: if (className) {PetscLogEventDeactivateClass(PETSCLIMITER_CLASSID);}
271: }
272: PetscRegisterFinalize(PetscFVFinalizePackage);
273: return(0);
274: }
275: #include <petscds.h>
277: static PetscBool PetscDSPackageInitialized = PETSC_FALSE;
280: /*@C
281: PetscDSFinalizePackage - This function finalizes everything in the PetscDS package. It is called
282: from PetscFinalize().
284: Level: developer
286: .keywords: PetscDS, initialize, package
287: .seealso: PetscInitialize()
288: @*/
289: PetscErrorCode PetscDSFinalizePackage(void)
290: {
294: PetscFunctionListDestroy(&PetscDSList);
295: PetscDSPackageInitialized = PETSC_FALSE;
296: PetscDSRegisterAllCalled = PETSC_FALSE;
297: return(0);
298: }
302: /*@C
303: PetscDSInitializePackage - This function initializes everything in the DS package. It is called
304: from PetscDLLibraryRegister() when using dynamic libraries, and on the first call to PetscDSCreate()
305: when using static libraries.
307: Level: developer
309: .keywords: PetscDS, initialize, package
310: .seealso: PetscInitialize()
311: @*/
312: PetscErrorCode PetscDSInitializePackage(void)
313: {
314: char logList[256];
315: char *className;
316: PetscBool opt;
320: if (PetscDSPackageInitialized) return(0);
321: PetscDSPackageInitialized = PETSC_TRUE;
323: /* Register Classes */
324: PetscClassIdRegister("Discrete System", &PETSCDS_CLASSID);
326: /* Register Constructors */
327: PetscDSRegisterAll();
328: /* Register Events */
329: /* Process info exclusions */
330: PetscOptionsGetString(NULL,NULL, "-info_exclude", logList, 256, &opt);
331: if (opt) {
332: PetscStrstr(logList, "ds", &className);
333: if (className) {PetscInfoDeactivateClass(PETSCDS_CLASSID);}
334: }
335: /* Process summary exclusions */
336: PetscOptionsGetString(NULL,NULL, "-log_exclude", logList, 256, &opt);
337: if (opt) {
338: PetscStrstr(logList, "ds", &className);
339: if (className) {PetscLogEventDeactivateClass(PETSCDS_CLASSID);}
340: }
341: PetscRegisterFinalize(PetscDSFinalizePackage);
342: return(0);
343: }
345: #if defined(PETSC_HAVE_DYNAMIC_LIBRARIES)
348: /*
349: PetscDLLibraryRegister - This function is called when the dynamic library it is in is opened.
351: This one registers all the mesh generators and partitioners that are in
352: the basic DM library.
354: */
355: PETSC_EXTERN PetscErrorCode PetscDLLibraryRegister_petscdm(void)
356: {
360: AOInitializePackage();
361: DMInitializePackage();
362: PetscFEInitializePackage();
363: PetscFVInitializePackage();
364: return(0);
365: }
367: #endif /* PETSC_HAVE_DYNAMIC_LIBRARIES */