Actual source code: dlregismat.c
1: #define PETSCMAT_DLL
3: #include private/matimpl.h
5: const char *MatOptions[] = {"ROW_ORIENTED","NEW_NONZERO_LOCATIONS",
6: "SYMMETRIC",
7: "STRUCTURALLY_SYMMETRIC",
8: "NEW_DIAGONALS",
9: "IGNORE_OFF_PROC_ENTRIES",
10: "NEW_NONZERO_LOCATION_ERR",
11: "NEW_NONZERO_ALLOCATION_ERR","USE_HASH_TABLE",
12: "KEEP_ZEROED_ROWS","IGNORE_ZERO_ENTRIES","USE_INODES",
13: "HERMITIAN",
14: "SYMMETRY_ETERNAL",
15: "USE_COMPRESSEDROW",
16: "IGNORE_LOWER_TRIANGULAR","ERROR_LOWER_TRIANGULAR","GETROW_UPPERTRIANGULAR","MatOption","MAT_",0};
18: EXTERN PetscErrorCode MatMFFDInitializePackage(const char[]);
22: /*@C
23: MatInitializePackage - This function initializes everything in the Mat package. It is called
24: from PetscDLLibraryRegister() when using dynamic libraries, and on the first call to MatCreate()
25: when using static libraries.
27: Input Parameter:
28: path - The dynamic library path, or PETSC_NULL
30: Level: developer
32: .keywords: Mat, initialize, package
33: .seealso: PetscInitialize()
34: @*/
35: PetscErrorCode MatInitializePackage(const char path[])
36: {
37: static PetscTruth initialized = PETSC_FALSE;
38: char logList[256];
39: char *className;
40: PetscTruth opt;
41: PetscErrorCode ierr;
44: if (initialized) return(0);
45: initialized = PETSC_TRUE;
46: /* Inialize subpackage */
47: MatMFFDInitializePackage(path);
48: /* Register Classes */
49: PetscCookieRegister("Matrix",&MAT_COOKIE);
50: PetscCookieRegister("Matrix FD Coloring",&MAT_FDCOLORING_COOKIE);
51: PetscCookieRegister("Matrix Partitioning",&MAT_PARTITIONING_COOKIE);
52: PetscCookieRegister("Matrix Null Space",&MAT_NULLSPACE_COOKIE);
53: /* Register Constructors */
54: MatRegisterAll(path);
55: MatOrderingRegisterAll(path);
56: MatColoringRegisterAll(path);
57: MatPartitioningRegisterAll(path);
58: /* Register Events */
59: PetscLogEventRegister("MatMult", MAT_COOKIE,&MAT_Mult);
60: PetscLogEventRegister("MatMults", MAT_COOKIE,&MAT_Mults);
61: PetscLogEventRegister("MatMultConstr", MAT_COOKIE,&MAT_MultConstrained);
62: PetscLogEventRegister("MatMultAdd", MAT_COOKIE,&MAT_MultAdd);
63: PetscLogEventRegister("MatMultTranspose", MAT_COOKIE,&MAT_MultTranspose);
64: PetscLogEventRegister("MatMultTrConstr", MAT_COOKIE,&MAT_MultTransposeConstrained);
65: PetscLogEventRegister("MatMultTrAdd", MAT_COOKIE,&MAT_MultTransposeAdd);
66: PetscLogEventRegister("MatSolve", MAT_COOKIE,&MAT_Solve);
67: PetscLogEventRegister("MatSolves", MAT_COOKIE,&MAT_Solves);
68: PetscLogEventRegister("MatSolveAdd", MAT_COOKIE,&MAT_SolveAdd);
69: PetscLogEventRegister("MatSolveTranspos", MAT_COOKIE,&MAT_SolveTranspose);
70: PetscLogEventRegister("MatSolveTrAdd", MAT_COOKIE,&MAT_SolveTransposeAdd);
71: PetscLogEventRegister("MatRelax", MAT_COOKIE,&MAT_Relax);
72: PetscLogEventRegister("MatForwardSolve", MAT_COOKIE,&MAT_ForwardSolve);
73: PetscLogEventRegister("MatBackwardSolve", MAT_COOKIE,&MAT_BackwardSolve);
74: PetscLogEventRegister("MatLUFactor", MAT_COOKIE,&MAT_LUFactor);
75: PetscLogEventRegister("MatLUFactorSym", MAT_COOKIE,&MAT_LUFactorSymbolic);
76: PetscLogEventRegister("MatLUFactorNum", MAT_COOKIE,&MAT_LUFactorNumeric);
77: PetscLogEventRegister("MatCholeskyFctr", MAT_COOKIE,&MAT_CholeskyFactor);
78: PetscLogEventRegister("MatCholFctrSym", MAT_COOKIE,&MAT_CholeskyFactorSymbolic);
79: PetscLogEventRegister("MatCholFctrNum", MAT_COOKIE,&MAT_CholeskyFactorNumeric);
80: PetscLogEventRegister("MatILUFactor", MAT_COOKIE,&MAT_ILUFactor);
81: PetscLogEventRegister("MatILUFactorSym", MAT_COOKIE,&MAT_ILUFactorSymbolic);
82: PetscLogEventRegister("MatICCFactorSym", MAT_COOKIE,&MAT_ICCFactorSymbolic);
83: PetscLogEventRegister("MatCopy", MAT_COOKIE,&MAT_Copy);
84: PetscLogEventRegister("MatConvert", MAT_COOKIE,&MAT_Convert);
85: PetscLogEventRegister("MatScale", MAT_COOKIE,&MAT_Scale);
86: PetscLogEventRegister("MatAssemblyBegin", MAT_COOKIE,&MAT_AssemblyBegin);
87: PetscLogEventRegister("MatAssemblyEnd", MAT_COOKIE,&MAT_AssemblyEnd);
88: PetscLogEventRegister("MatSetValues", MAT_COOKIE,&MAT_SetValues);
89: PetscLogEventRegister("MatGetValues", MAT_COOKIE,&MAT_GetValues);
90: PetscLogEventRegister("MatGetRow", MAT_COOKIE,&MAT_GetRow);
91: PetscLogEventRegister("MatGetRowIJ", MAT_COOKIE,&MAT_GetRowIJ);
92: PetscLogEventRegister("MatGetSubMatrice", MAT_COOKIE,&MAT_GetSubMatrices);
93: PetscLogEventRegister("MatGetColoring", MAT_COOKIE,&MAT_GetColoring);
94: PetscLogEventRegister("MatGetOrdering", MAT_COOKIE,&MAT_GetOrdering);
95: PetscLogEventRegister("MatIncreaseOvrlp", MAT_COOKIE,&MAT_IncreaseOverlap);
96: PetscLogEventRegister("MatPartitioning", MAT_PARTITIONING_COOKIE,&MAT_Partitioning);
97: PetscLogEventRegister("MatZeroEntries", MAT_COOKIE,&MAT_ZeroEntries);
98: PetscLogEventRegister("MatLoad", MAT_COOKIE,&MAT_Load);
99: PetscLogEventRegister("MatView", MAT_COOKIE,&MAT_View);
100: PetscLogEventRegister("MatAXPY", MAT_COOKIE,&MAT_AXPY);
101: PetscLogEventRegister("MatFDColorCreate", MAT_FDCOLORING_COOKIE,&MAT_FDColoringCreate);
102: PetscLogEventRegister("MatFDColorApply", MAT_FDCOLORING_COOKIE,&MAT_FDColoringApply);
103: PetscLogEventRegister("MatFDColorFunc", MAT_FDCOLORING_COOKIE,&MAT_FDColoringFunction);
104: PetscLogEventRegister("MatTranspose", MAT_COOKIE,&MAT_Transpose);
105: PetscLogEventRegister("MatMatMult", MAT_COOKIE,&MAT_MatMult);
106: PetscLogEventRegister("MatMatSolve", MAT_COOKIE,&MAT_MatSolve);
107: PetscLogEventRegister("MatMatMultSym", MAT_COOKIE,&MAT_MatMultSymbolic);
108: PetscLogEventRegister("MatMatMultNum", MAT_COOKIE,&MAT_MatMultNumeric);
109: PetscLogEventRegister("MatPtAP", MAT_COOKIE,&MAT_PtAP);
110: PetscLogEventRegister("MatPtAPSymbolic", MAT_COOKIE,&MAT_PtAPSymbolic);
111: PetscLogEventRegister("MatPtAPNumeric", MAT_COOKIE,&MAT_PtAPNumeric);
112: PetscLogEventRegister("MatMatMultTrans", MAT_COOKIE,&MAT_MatMultTranspose);
113: PetscLogEventRegister("MatMatMultTrnSym" ,MAT_COOKIE,&MAT_MatMultTransposeSymbolic);
114: PetscLogEventRegister("MatMatMultTrnNum", MAT_COOKIE,&MAT_MatMultTransposeNumeric);
115: PetscLogEventRegister("MatGetRedundant", MAT_COOKIE,&MAT_GetRedundantMatrix);
116: PetscLogEventRegister("MatGetSeqNZStrct", MAT_COOKIE,&MAT_GetSequentialNonzeroStructure);
118: /* these may be specific to MPIAIJ matrices */
119: PetscLogEventRegister("MatMerge_SeqsToMPINumeric",MAT_COOKIE,&MAT_Seqstompinum);
120: PetscLogEventRegister("MatMerge_SeqsToMPISymbolic",MAT_COOKIE,&MAT_Seqstompisym);
121: PetscLogEventRegister("MatMerge_SeqsToMPI",MAT_COOKIE,&MAT_Seqstompi);
122: PetscLogEventRegister("MatGetLocalMat",MAT_COOKIE,&MAT_Getlocalmat);
123: PetscLogEventRegister("MatGetLocalMatCondensed",MAT_COOKIE,&MAT_Getlocalmatcondensed);
124: PetscLogEventRegister("MatGetBrowsOfAcols",MAT_COOKIE,&MAT_GetBrowsOfAcols);
125: PetscLogEventRegister("MatGetBrAoCol",MAT_COOKIE,&MAT_GetBrowsOfAocols);
127: PetscLogEventRegister("MatApplyPAPt_Symbolic",MAT_COOKIE,&MAT_Applypapt_symbolic);
128: PetscLogEventRegister("MatApplyPAPt_Numeric",MAT_COOKIE,&MAT_Applypapt_numeric);
129: PetscLogEventRegister("MatApplyPAPt",MAT_COOKIE,&MAT_Applypapt);
131: PetscLogEventRegister("MatGetSymTrans",MAT_COOKIE,&MAT_Getsymtranspose);
132: PetscLogEventRegister("MatGetSymTransR",MAT_COOKIE,&MAT_Getsymtransreduced);
133: PetscLogEventRegister("MatTranspose_SeqAIJ_FAST",MAT_COOKIE,&MAT_Transpose_SeqAIJ);
135: /* Turn off high traffic events by default */
136: PetscLogEventSetActiveAll(MAT_SetValues, PETSC_FALSE);
137: /* Process info exclusions */
138: PetscOptionsGetString(PETSC_NULL, "-info_exclude", logList, 256, &opt);
139: if (opt) {
140: PetscStrstr(logList, "mat", &className);
141: if (className) {
142: PetscInfoDeactivateClass(MAT_COOKIE);
143: }
144: }
145: /* Process summary exclusions */
146: PetscOptionsGetString(PETSC_NULL, "-log_summary_exclude", logList, 256, &opt);
147: if (opt) {
148: PetscStrstr(logList, "mat", &className);
149: if (className) {
150: PetscLogEventDeactivateClass(MAT_COOKIE);
151: }
152: }
153: return(0);
154: }
156: #ifdef PETSC_USE_DYNAMIC_LIBRARIES
160: /*
161: PetscDLLibraryRegister - This function is called when the dynamic library it is in is opened.
163: This one registers all the matrix methods that are in the basic PETSc Matrix library.
165: Input Parameter:
166: path - library path
167: */
168: PetscErrorCode PetscDLLibraryRegister_petscmat(const char path[])
169: {
172: PetscInitializeNoArguments(); if (ierr) return 1;
175: /*
176: If we got here then PETSc was properly loaded
177: */
178: MatInitializePackage(path);
179: return(0);
180: }
184: #endif /* PETSC_USE_DYNAMIC_LIBRARIES */