Actual source code: petscoptions.h
1: /*
2: Routines to determine options set in the options database.
3: */
4: #pragma once
6: #include <petscsys.h>
7: #include <petscviewertypes.h>
9: /* SUBMANSEC = Sys */
11: typedef enum {
12: PETSC_OPT_CODE,
13: PETSC_OPT_COMMAND_LINE,
14: PETSC_OPT_FILE,
15: PETSC_OPT_ENVIRONMENT,
16: NUM_PETSC_OPT_SOURCE
17: } PetscOptionSource;
19: #define PETSC_MAX_OPTION_NAME 512
20: typedef struct _n_PetscOptions *PetscOptions;
21: PETSC_EXTERN PetscErrorCode PetscOptionsCreate(PetscOptions *);
22: PETSC_EXTERN PetscErrorCode PetscOptionsPush(PetscOptions);
23: PETSC_EXTERN PetscErrorCode PetscOptionsPop(void);
24: PETSC_EXTERN PetscErrorCode PetscOptionsDestroy(PetscOptions *);
25: PETSC_EXTERN PetscErrorCode PetscOptionsCreateDefault(void);
26: PETSC_EXTERN PetscErrorCode PetscOptionsDestroyDefault(void);
28: PETSC_EXTERN PetscErrorCode PetscOptionsHasHelp(PetscOptions, PetscBool *);
29: PETSC_EXTERN PetscErrorCode PetscOptionsHasName(PetscOptions, const char[], const char[], PetscBool *);
30: PETSC_EXTERN PetscErrorCode PetscOptionsGetBool(PetscOptions, const char[], const char[], PetscBool *, PetscBool *);
31: PETSC_EXTERN PetscErrorCode PetscOptionsGetInt(PetscOptions, const char[], const char[], PetscInt *, PetscBool *);
32: PETSC_EXTERN PetscErrorCode PetscOptionsGetEnum(PetscOptions, const char[], const char[], const char *const *, PetscEnum *, PetscBool *);
33: PETSC_EXTERN PetscErrorCode PetscOptionsGetEList(PetscOptions, const char[], const char[], const char *const *, PetscInt, PetscInt *, PetscBool *);
34: PETSC_EXTERN PetscErrorCode PetscOptionsGetReal(PetscOptions, const char[], const char[], PetscReal *, PetscBool *);
35: PETSC_EXTERN PetscErrorCode PetscOptionsGetScalar(PetscOptions, const char[], const char[], PetscScalar *, PetscBool *);
36: PETSC_EXTERN PetscErrorCode PetscOptionsGetString(PetscOptions, const char[], const char[], char[], size_t, PetscBool *);
38: PETSC_EXTERN PetscErrorCode PetscOptionsGetBoolArray(PetscOptions, const char[], const char[], PetscBool[], PetscInt *, PetscBool *);
39: PETSC_EXTERN PetscErrorCode PetscOptionsGetEnumArray(PetscOptions, const char[], const char[], const char *const *, PetscEnum *, PetscInt *, PetscBool *);
40: PETSC_EXTERN PetscErrorCode PetscOptionsGetIntArray(PetscOptions, const char[], const char[], PetscInt[], PetscInt *, PetscBool *);
41: PETSC_EXTERN PetscErrorCode PetscOptionsGetRealArray(PetscOptions, const char[], const char[], PetscReal[], PetscInt *, PetscBool *);
42: PETSC_EXTERN PetscErrorCode PetscOptionsGetScalarArray(PetscOptions, const char[], const char[], PetscScalar[], PetscInt *, PetscBool *);
43: PETSC_EXTERN PetscErrorCode PetscOptionsGetStringArray(PetscOptions, const char[], const char[], char *[], PetscInt *, PetscBool *);
45: PETSC_EXTERN PetscErrorCode PetscOptionsValidKey(const char[], PetscBool *);
46: PETSC_EXTERN PetscErrorCode PetscOptionsSetAlias(PetscOptions, const char[], const char[]);
47: PETSC_EXTERN PetscErrorCode PetscOptionsSetValue(PetscOptions, const char[], const char[]);
48: PETSC_EXTERN PetscErrorCode PetscOptionsClearValue(PetscOptions, const char[]);
49: PETSC_EXTERN PetscErrorCode PetscOptionsFindPair(PetscOptions, const char[], const char[], const char *[], PetscBool *);
51: PETSC_EXTERN PetscErrorCode PetscOptionsGetAll(PetscOptions, char *[]);
52: PETSC_EXTERN PetscErrorCode PetscOptionsAllUsed(PetscOptions, PetscInt *);
53: PETSC_EXTERN PetscErrorCode PetscOptionsUsed(PetscOptions, const char[], PetscBool *);
54: PETSC_EXTERN PetscErrorCode PetscOptionsLeft(PetscOptions);
55: PETSC_EXTERN PetscErrorCode PetscOptionsLeftGet(PetscOptions, PetscInt *, char ***, char ***);
56: PETSC_EXTERN PetscErrorCode PetscOptionsLeftRestore(PetscOptions, PetscInt *, char ***, char ***);
57: PETSC_EXTERN PetscErrorCode PetscOptionsView(PetscOptions, PetscViewer);
59: PETSC_EXTERN PetscErrorCode PetscOptionsReject(PetscOptions, const char[], const char[], const char[]);
60: PETSC_EXTERN PetscErrorCode PetscOptionsInsert(PetscOptions, int *, char ***, const char[]);
61: PETSC_EXTERN PetscErrorCode PetscOptionsInsertFile(MPI_Comm, PetscOptions, const char[], PetscBool);
62: PETSC_EXTERN PetscErrorCode PetscOptionsInsertFileYAML(MPI_Comm, PetscOptions, const char[], PetscBool);
63: PETSC_EXTERN PetscErrorCode PetscOptionsInsertString(PetscOptions, const char[]);
64: PETSC_EXTERN PetscErrorCode PetscOptionsInsertStringYAML(PetscOptions, const char[]);
65: PETSC_EXTERN PetscErrorCode PetscOptionsInsertArgs(PetscOptions, int, char **);
66: PETSC_EXTERN PetscErrorCode PetscOptionsClear(PetscOptions);
67: PETSC_EXTERN PetscErrorCode PetscOptionsPrefixPush(PetscOptions, const char[]);
68: PETSC_EXTERN PetscErrorCode PetscOptionsPrefixPop(PetscOptions);
70: PETSC_EXTERN PetscErrorCode PetscOptionsGetenv(MPI_Comm, const char[], char[], size_t, PetscBool *);
71: PETSC_EXTERN PetscErrorCode PetscOptionsStringToBool(const char[], PetscBool *);
72: PETSC_EXTERN PetscErrorCode PetscOptionsStringToInt(const char[], PetscInt *);
73: PETSC_EXTERN PetscErrorCode PetscOptionsStringToReal(const char[], PetscReal *);
74: PETSC_EXTERN PetscErrorCode PetscOptionsStringToScalar(const char[], PetscScalar *);
76: PETSC_EXTERN PetscErrorCode PetscOptionsMonitorSet(PetscErrorCode (*)(const char[], const char[], PetscOptionSource, void *), void *, PetscErrorCode (*)(void **));
77: PETSC_EXTERN PetscErrorCode PetscOptionsMonitorDefault(const char[], const char[], PetscOptionSource, void *);
79: PETSC_EXTERN PetscErrorCode PetscObjectSetOptions(PetscObject, PetscOptions);
80: PETSC_EXTERN PetscErrorCode PetscObjectGetOptions(PetscObject, PetscOptions *);
82: PETSC_EXTERN PetscBool PetscOptionsPublish;
84: /*
85: See manual page for PetscOptionsBegin()
87: PetscOptionsItem and PetscOptionsItems are a single option (such as ksp_type) and a collection of such single
88: options being handled with a PetscOptionsBegin/End()
90: */
91: typedef enum {
92: OPTION_INT,
93: OPTION_BOOL,
94: OPTION_REAL,
95: OPTION_FLIST,
96: OPTION_STRING,
97: OPTION_REAL_ARRAY,
98: OPTION_SCALAR_ARRAY,
99: OPTION_HEAD,
100: OPTION_INT_ARRAY,
101: OPTION_ELIST,
102: OPTION_BOOL_ARRAY,
103: OPTION_STRING_ARRAY
104: } PetscOptionType;
106: typedef struct _n_PetscOptionItem *PetscOptionItem;
107: struct _n_PetscOptionItem {
108: char *option;
109: char *text;
110: void *data; /* used to hold the default value and then any value it is changed to by GUI */
111: PetscFunctionList flist; /* used for available values for PetscOptionsList() */
112: const char *const *list; /* used for available values for PetscOptionsEList() */
113: char nlist; /* number of entries in list */
114: char *man;
115: size_t arraylength; /* number of entries in data in the case that it is an array (of PetscInt etc) */
116: PetscBool set; /* the user has changed this value in the GUI */
117: PetscOptionType type;
118: PetscOptionItem next;
119: char *pman;
120: void *edata;
121: };
123: typedef struct _p_PetscOptionItems {
124: PetscInt count;
125: PetscOptionItem next;
126: char *prefix, *pprefix;
127: char *title;
128: MPI_Comm comm;
129: PetscBool printhelp, changedmethod, alreadyprinted;
130: PetscObject object;
131: PetscOptions options;
132: } PetscOptionItems;
134: #if defined(PETSC_CLANG_STATIC_ANALYZER)
135: extern PetscOptionItems *PetscOptionsObject; /* declare this so that the PetscOptions stubs work */
136: PetscErrorCode PetscOptionsBegin(MPI_Comm, const char *, const char *, const char *);
137: PetscErrorCode PetscObjectOptionsBegin(PetscObject);
138: PetscErrorCode PetscOptionsEnd(void);
139: #else
140: /*MC
141: PetscOptionsBegin - Begins a set of queries on the options database that are related and should be
142: displayed on the same window of a GUI that allows the user to set the options interactively. Often one should
143: use `PetscObjectOptionsBegin()` rather than this call.
145: Synopsis:
146: #include <petscoptions.h>
147: PetscErrorCode PetscOptionsBegin(MPI_Comm comm,const char prefix[],const char title[],const char mansec[])
149: Collective
151: Input Parameters:
152: + comm - communicator that shares GUI
153: . prefix - options prefix for all options displayed on window (optional)
154: . title - short descriptive text, for example "Krylov Solver Options"
155: - mansec - section of manual pages for options, for example `KSP` (optional)
157: Level: intermediate
159: Notes:
160: This is a macro that handles its own error checking, it does not return an error code.
162: The set of queries needs to be ended by a call to `PetscOptionsEnd()`.
164: One can add subheadings with `PetscOptionsHeadBegin()`.
166: Developer Notes:
167: `PetscOptionsPublish` is set in `PetscOptionsCheckInitial_Private()` with `-saws_options`. When `PetscOptionsPublish` is set the
168: loop between `PetscOptionsBegin()` and `PetscOptionsEnd()` is run THREE times with `PetscOptionsPublishCount` of values -1,0,1.
169: Otherwise the loop is run ONCE with a `PetscOptionsPublishCount` of 1.
170: + \-1 - `PetscOptionsInt()` etc. just call `PetscOptionsGetInt()` etc.
171: . 0 - The GUI objects are created in `PetscOptionsInt()` etc. and displayed in `PetscOptionsEnd()` and the options
172: database updated with user changes; `PetscOptionsGetInt()` etc. are also called.
173: - 1 - `PetscOptionsInt()` etc. again call `PetscOptionsGetInt()` etc. (possibly getting new values), in addition the help message and
174: default values are printed if -help was given.
175: When `PetscOptionsObject.changedmethod` is set this causes `PetscOptionsPublishCount` to be reset to -2 (so in the next loop iteration it is -1)
176: and the whole process is repeated. This is to handle when, for example, the `KSPType` is changed thus changing the list of
177: options available so they need to be redisplayed so the user can change the. Changing `PetscOptionsObjects.changedmethod` is never
178: currently set.
180: Fortran Note:
181: Returns ierr error code per PETSc Fortran API
183: .seealso: `PetscOptionsGetReal()`, `PetscOptionsHasName()`, `PetscOptionsGetString()`, `PetscOptionsGetInt()`,
184: `PetscOptionsGetIntArray()`, `PetscOptionsGetRealArray()`, `PetscOptionsBool()`
185: `PetscOptionsInt()`, `PetscOptionsString()`, `PetscOptionsReal()`, `PetscOptionsBool()`,
186: `PetscOptionsName()`, `PetscOptionsEnd()`, `PetscOptionsHeadBegin()`,
187: `PetscOptionsStringArray()`, `PetscOptionsRealArray()`, `PetscOptionsScalar()`,
188: `PetscOptionsBoolGroupBegin()`, `PetscOptionsBoolGroup()`, `PetscOptionsBoolGroupEnd()`,
189: `PetscOptionsFList()`, `PetscOptionsEList()`, `PetscObjectOptionsBegin()`
190: M*/
191: #define PetscOptionsBegin(comm, prefix, mess, sec) \
192: do { \
193: PetscOptionItems PetscOptionsObjectBase; \
194: PetscOptionItems *PetscOptionsObject = &PetscOptionsObjectBase; \
195: PetscCall(PetscMemzero(PetscOptionsObject, sizeof(*PetscOptionsObject))); \
196: for (PetscOptionsObject->count = (PetscOptionsPublish ? -1 : 1); PetscOptionsObject->count < 2; PetscOptionsObject->count++) { \
197: PetscCall(PetscOptionsBegin_Private(PetscOptionsObject, comm, prefix, mess, sec))
199: /*MC
200: PetscObjectOptionsBegin - Begins a set of queries on the options database that are related and should be
201: displayed on the same window of a GUI that allows the user to set the options interactively.
203: Synopsis:
204: #include <petscoptions.h>
205: PetscErrorCode PetscObjectOptionsBegin(PetscObject obj)
207: Collective
209: Input Parameter:
210: . obj - object to set options for
212: Level: intermediate
214: Notes:
215: This is a macro that handles its own error checking, it does not return an error code.
217: Needs to be ended by a call the `PetscOptionsEnd()`
219: Can add subheadings with `PetscOptionsHeadBegin()`
221: .seealso: `PetscOptionsGetReal()`, `PetscOptionsHasName()`, `PetscOptionsGetString()`, `PetscOptionsGetInt()`,
222: `PetscOptionsGetIntArray()`, `PetscOptionsGetRealArray()`, `PetscOptionsBool()`
223: `PetscOptionsInt()`, `PetscOptionsString()`, `PetscOptionsReal()`, `PetscOptionsBool()`,
224: `PetscOptionsName()`, `PetscOptionsBegin()`, `PetscOptionsEnd()`, `PetscOptionsHeadBegin()`,
225: `PetscOptionsStringArray()`, `PetscOptionsRealArray()`, `PetscOptionsScalar()`,
226: `PetscOptionsBoolGroupBegin()`, `PetscOptionsBoolGroup()`, `PetscOptionsBoolGroupEnd()`,
227: `PetscOptionsFList()`, `PetscOptionsEList()`
228: M*/
229: #define PetscObjectOptionsBegin(obj) \
230: do { \
231: PetscOptionItems PetscOptionsObjectBase; \
232: PetscOptionItems *PetscOptionsObject = &PetscOptionsObjectBase; \
233: PetscOptionsObject->options = ((PetscObject)obj)->options; \
234: for (PetscOptionsObject->count = (PetscOptionsPublish ? -1 : 1); PetscOptionsObject->count < 2; PetscOptionsObject->count++) { \
235: PetscCall(PetscObjectOptionsBegin_Private(obj, PetscOptionsObject))
237: /*MC
238: PetscOptionsEnd - Ends a set of queries on the options database that are related and should be
239: displayed on the same window of a GUI that allows the user to set the options interactively.
241: Synopsis:
242: #include <petscoptions.h>
243: PetscErrorCode PetscOptionsEnd(void)
245: Collective on the comm used in `PetscOptionsBegin()` or obj used in `PetscObjectOptionsBegin()`
247: Level: intermediate
249: Notes:
250: Needs to be preceded by a call to `PetscOptionsBegin()` or `PetscObjectOptionsBegin()`
252: This is a macro that handles its own error checking, it does not return an error code.
254: Fortran Note:
255: Returns ierr error code per PETSc Fortran API
257: .seealso: `PetscOptionsGetReal()`, `PetscOptionsHasName()`, `PetscOptionsGetString()`, `PetscOptionsGetInt()`,
258: `PetscOptionsGetIntArray()`, `PetscOptionsGetRealArray()`, `PetscOptionsBool()`
259: `PetscOptionsInt()`, `PetscOptionsString()`, `PetscOptionsReal()`, `PetscOptionsBool()`,
260: `PetscOptionsName()`, `PetscOptionsBegin()`, `PetscOptionsHeadBegin()`,
261: `PetscOptionsStringArray()`, `PetscOptionsRealArray()`, `PetscOptionsScalar()`,
262: `PetscOptionsBoolGroupBegin()`, `PetscOptionsBoolGroup()`, `PetscOptionsBoolGroupEnd()`,
263: `PetscOptionsFList()`, `PetscOptionsEList()`, `PetscObjectOptionsBegin()`
264: M*/
265: #define PetscOptionsEnd() \
266: PetscCall(PetscOptionsEnd_Private(PetscOptionsObject)); \
267: } \
268: } \
269: while (0)
270: #endif /* PETSC_CLANG_STATIC_ANALYZER */
272: PETSC_EXTERN PetscErrorCode PetscOptionsBegin_Private(PetscOptionItems *, MPI_Comm, const char[], const char[], const char[]);
273: PETSC_EXTERN PetscErrorCode PetscObjectOptionsBegin_Private(PetscObject, PetscOptionItems *);
274: PETSC_EXTERN PetscErrorCode PetscOptionsEnd_Private(PetscOptionItems *);
275: PETSC_EXTERN PetscErrorCode PetscOptionsHeadBegin(PetscOptionItems *, const char[]);
277: #if defined(PETSC_CLANG_STATIC_ANALYZER)
278: template <typename... T>
279: void PetscOptionsHeadBegin(T...);
280: void PetscOptionsHeadEnd(void);
281: template <typename... T>
282: PetscErrorCode PetscOptionsEnum(T...);
283: template <typename... T>
284: PetscErrorCode PetscOptionsInt(T...);
285: template <typename... T>
286: PetscErrorCode PetscOptionsBoundedInt(T...);
287: template <typename... T>
288: PetscErrorCode PetscOptionsRangeInt(T...);
289: template <typename... T>
290: PetscErrorCode PetscOptionsReal(T...);
291: template <typename... T>
292: PetscErrorCode PetscOptionsScalar(T...);
293: template <typename... T>
294: PetscErrorCode PetscOptionsName(T...);
295: template <typename... T>
296: PetscErrorCode PetscOptionsString(T...);
297: template <typename... T>
298: PetscErrorCode PetscOptionsBool(T...);
299: template <typename... T>
300: PetscErrorCode PetscOptionsBoolGroupBegin(T...);
301: template <typename... T>
302: PetscErrorCode PetscOptionsBoolGroup(T...);
303: template <typename... T>
304: PetscErrorCode PetscOptionsBoolGroupEnd(T...);
305: template <typename... T>
306: PetscErrorCode PetscOptionsFList(T...);
307: template <typename... T>
308: PetscErrorCode PetscOptionsEList(T...);
309: template <typename... T>
310: PetscErrorCode PetscOptionsRealArray(T...);
311: template <typename... T>
312: PetscErrorCode PetscOptionsScalarArray(T...);
313: template <typename... T>
314: PetscErrorCode PetscOptionsIntArray(T...);
315: template <typename... T>
316: PetscErrorCode PetscOptionsStringArray(T...);
317: template <typename... T>
318: PetscErrorCode PetscOptionsBoolArray(T...);
319: template <typename... T>
320: PetscErrorCode PetscOptionsEnumArray(T...);
321: template <typename... T>
322: PetscErrorCode PetscOptionsDeprecated(T...);
323: template <typename... T>
324: PetscErrorCode PetscOptionsDeprecatedNoObject(T...);
325: #else
326: /*MC
327: PetscOptionsHeadBegin - Puts a heading before listing any more published options. Used, for example,
328: in `KSPSetFromOptions_GMRES()`.
330: Logically Collective on the communicator passed in `PetscOptionsBegin()`
332: Input Parameter:
333: . head - the heading text
335: Level: developer
337: Notes:
338: Handles errors directly, hence does not return an error code
340: Must be between a `PetscOptionsBegin()` and a `PetscOptionsEnd()`, and `PetscOptionsObject` created in `PetscOptionsBegin()` should be the first argument
342: Must be followed by a call to `PetscOptionsHeadEnd()` in the same function.
344: .seealso: `PetscOptionsGetInt()`, `PetscOptionsGetReal()`,
345: `PetscOptionsHasName()`, `PetscOptionsGetIntArray()`, `PetscOptionsGetRealArray()`, `PetscOptionsBool()`,
346: `PetscOptionsName()`, `PetscOptionsBegin()`, `PetscOptionsEnd()`, `PetscOptionsHeadBegin()`,
347: `PetscOptionsStringArray()`, `PetscOptionsRealArray()`, `PetscOptionsScalar()`,
348: `PetscOptionsBoolGroupBegin()`, `PetscOptionsBoolGroup()`, `PetscOptionsBoolGroupEnd()`,
349: `PetscOptionsFList()`, `PetscOptionsEList()`
350: @*/
351: #define PetscOptionsHeadBegin(PetscOptionsObject, head) \
352: do { \
353: if (PetscOptionsObject->printhelp && PetscOptionsObject->count == 1 && !PetscOptionsObject->alreadyprinted) PetscCall((*PetscHelpPrintf)(PetscOptionsObject->comm, " %s\n", head)); \
354: } while (0)
356: #define PetscOptionsHead(...) PETSC_DEPRECATED_MACRO(3, 18, 0, "PetscOptionsHeadBegin()", ) PetscOptionsHeadBegin(__VA_ARGS__)
358: /*MC
359: PetscOptionsHeadEnd - Ends a section of options begun with `PetscOptionsHeadBegin()`
360: See, for example, `KSPSetFromOptions_GMRES()`.
362: Synopsis:
363: #include <petscoptions.h>
364: PetscErrorCode PetscOptionsHeadEnd(void)
366: Collective on the comm used in `PetscOptionsBegin()` or obj used in `PetscObjectOptionsBegin()`
368: Level: intermediate
370: Notes:
371: Must be between a `PetscOptionsBegin()` or `PetscObjectOptionsBegin()` and a `PetscOptionsEnd()`
373: Must be preceded by a call to `PetscOptionsHeadBegin()` in the same function.
375: This needs to be used only if the code below `PetscOptionsHeadEnd()` can be run ONLY once.
376: See, for example, `PCSetFromOptions_Composite()`. This is a `return(0)` in it for early exit
377: from the function.
379: This is only for use with the PETSc options GUI
381: .seealso: `PetscOptionsGetInt()`, `PetscOptionsGetReal()`,
382: `PetscOptionsHasName()`, `PetscOptionsGetIntArray()`, `PetscOptionsGetRealArray()`, `PetscOptionsBool()`,
383: `PetscOptionsName()`, `PetscOptionsBegin()`, `PetscOptionsEnd()`, `PetscOptionsHeadBegin()`,
384: `PetscOptionsStringArray()`, `PetscOptionsRealArray()`, `PetscOptionsScalar()`,
385: `PetscOptionsBoolGroupBegin()`, `PetscOptionsBoolGroup()`, `PetscOptionsBoolGroupEnd()`,
386: `PetscOptionsFList()`, `PetscOptionsEList()`, `PetscOptionsEnum()`
387: M*/
388: #define PetscOptionsHeadEnd() \
389: do { \
390: if (PetscOptionsObject->count != 1) PetscFunctionReturn(PETSC_SUCCESS); \
391: } while (0)
393: #define PetscOptionsTail(...) PETSC_DEPRECATED_MACRO(3, 18, 0, "PetscOptionsHeadEnd()", ) PetscOptionsHeadEnd(__VA_ARGS__)
395: #define PetscOptionsEnum(a, b, c, d, e, f, g) PetscOptionsEnum_Private(PetscOptionsObject, a, b, c, d, e, f, g)
396: #define PetscOptionsInt(a, b, c, d, e, f) PetscOptionsInt_Private(PetscOptionsObject, a, b, c, d, e, f, PETSC_MIN_INT, PETSC_MAX_INT)
397: #define PetscOptionsBoundedInt(a, b, c, d, e, f, g) PetscOptionsInt_Private(PetscOptionsObject, a, b, c, d, e, f, g, PETSC_MAX_INT)
398: #define PetscOptionsRangeInt(a, b, c, d, e, f, g, h) PetscOptionsInt_Private(PetscOptionsObject, a, b, c, d, e, f, g, h)
399: #define PetscOptionsReal(a, b, c, d, e, f) PetscOptionsReal_Private(PetscOptionsObject, a, b, c, d, e, f)
400: #define PetscOptionsScalar(a, b, c, d, e, f) PetscOptionsScalar_Private(PetscOptionsObject, a, b, c, d, e, f)
401: #define PetscOptionsName(a, b, c, d) PetscOptionsName_Private(PetscOptionsObject, a, b, c, d)
402: #define PetscOptionsString(a, b, c, d, e, f, g) PetscOptionsString_Private(PetscOptionsObject, a, b, c, d, e, f, g)
403: #define PetscOptionsBool(a, b, c, d, e, f) PetscOptionsBool_Private(PetscOptionsObject, a, b, c, d, e, f)
404: #define PetscOptionsBoolGroupBegin(a, b, c, d) PetscOptionsBoolGroupBegin_Private(PetscOptionsObject, a, b, c, d)
405: #define PetscOptionsBoolGroup(a, b, c, d) PetscOptionsBoolGroup_Private(PetscOptionsObject, a, b, c, d)
406: #define PetscOptionsBoolGroupEnd(a, b, c, d) PetscOptionsBoolGroupEnd_Private(PetscOptionsObject, a, b, c, d)
407: #define PetscOptionsFList(a, b, c, d, e, f, g, h) PetscOptionsFList_Private(PetscOptionsObject, a, b, c, d, e, f, g, h)
408: #define PetscOptionsEList(a, b, c, d, e, f, g, h) PetscOptionsEList_Private(PetscOptionsObject, a, b, c, d, e, f, g, h)
409: #define PetscOptionsRealArray(a, b, c, d, e, f) PetscOptionsRealArray_Private(PetscOptionsObject, a, b, c, d, e, f)
410: #define PetscOptionsScalarArray(a, b, c, d, e, f) PetscOptionsScalarArray_Private(PetscOptionsObject, a, b, c, d, e, f)
411: #define PetscOptionsIntArray(a, b, c, d, e, f) PetscOptionsIntArray_Private(PetscOptionsObject, a, b, c, d, e, f)
412: #define PetscOptionsStringArray(a, b, c, d, e, f) PetscOptionsStringArray_Private(PetscOptionsObject, a, b, c, d, e, f)
413: #define PetscOptionsBoolArray(a, b, c, d, e, f) PetscOptionsBoolArray_Private(PetscOptionsObject, a, b, c, d, e, f)
414: #define PetscOptionsEnumArray(a, b, c, d, e, f, g) PetscOptionsEnumArray_Private(PetscOptionsObject, a, b, c, d, e, f, g)
415: #define PetscOptionsDeprecated(a, b, c, d) PetscOptionsDeprecated_Private(PetscOptionsObject, a, b, c, d)
416: #define PetscOptionsDeprecatedNoObject(a, b, c, d) PetscOptionsDeprecated_Private(NULL, a, b, c, d)
417: #endif /* PETSC_CLANG_STATIC_ANALYZER */
419: PETSC_EXTERN PetscErrorCode PetscOptionsEnum_Private(PetscOptionItems *, const char[], const char[], const char[], const char *const *, PetscEnum, PetscEnum *, PetscBool *);
420: PETSC_EXTERN PetscErrorCode PetscOptionsInt_Private(PetscOptionItems *, const char[], const char[], const char[], PetscInt, PetscInt *, PetscBool *, PetscInt, PetscInt);
421: PETSC_EXTERN PetscErrorCode PetscOptionsReal_Private(PetscOptionItems *, const char[], const char[], const char[], PetscReal, PetscReal *, PetscBool *);
422: PETSC_EXTERN PetscErrorCode PetscOptionsScalar_Private(PetscOptionItems *, const char[], const char[], const char[], PetscScalar, PetscScalar *, PetscBool *);
423: PETSC_EXTERN PetscErrorCode PetscOptionsName_Private(PetscOptionItems *, const char[], const char[], const char[], PetscBool *);
424: PETSC_EXTERN PetscErrorCode PetscOptionsString_Private(PetscOptionItems *, const char[], const char[], const char[], const char[], char *, size_t, PetscBool *);
425: PETSC_EXTERN PetscErrorCode PetscOptionsBool_Private(PetscOptionItems *, const char[], const char[], const char[], PetscBool, PetscBool *, PetscBool *);
426: PETSC_EXTERN PetscErrorCode PetscOptionsBoolGroupBegin_Private(PetscOptionItems *, const char[], const char[], const char[], PetscBool *);
427: PETSC_EXTERN PetscErrorCode PetscOptionsBoolGroup_Private(PetscOptionItems *, const char[], const char[], const char[], PetscBool *);
428: PETSC_EXTERN PetscErrorCode PetscOptionsBoolGroupEnd_Private(PetscOptionItems *, const char[], const char[], const char[], PetscBool *);
429: PETSC_EXTERN PetscErrorCode PetscOptionsFList_Private(PetscOptionItems *, const char[], const char[], const char[], PetscFunctionList, const char[], char[], size_t, PetscBool *);
430: PETSC_EXTERN PetscErrorCode PetscOptionsEList_Private(PetscOptionItems *, const char[], const char[], const char[], const char *const *, PetscInt, const char[], PetscInt *, PetscBool *);
431: PETSC_EXTERN PetscErrorCode PetscOptionsRealArray_Private(PetscOptionItems *, const char[], const char[], const char[], PetscReal[], PetscInt *, PetscBool *);
432: PETSC_EXTERN PetscErrorCode PetscOptionsScalarArray_Private(PetscOptionItems *, const char[], const char[], const char[], PetscScalar[], PetscInt *, PetscBool *);
433: PETSC_EXTERN PetscErrorCode PetscOptionsIntArray_Private(PetscOptionItems *, const char[], const char[], const char[], PetscInt[], PetscInt *, PetscBool *);
434: PETSC_EXTERN PetscErrorCode PetscOptionsStringArray_Private(PetscOptionItems *, const char[], const char[], const char[], char *[], PetscInt *, PetscBool *);
435: PETSC_EXTERN PetscErrorCode PetscOptionsBoolArray_Private(PetscOptionItems *, const char[], const char[], const char[], PetscBool[], PetscInt *, PetscBool *);
436: PETSC_EXTERN PetscErrorCode PetscOptionsEnumArray_Private(PetscOptionItems *, const char[], const char[], const char[], const char *const *, PetscEnum[], PetscInt *, PetscBool *);
437: PETSC_EXTERN PetscErrorCode PetscOptionsDeprecated_Private(PetscOptionItems *, const char[], const char[], const char[], const char[]);
439: PETSC_EXTERN PetscErrorCode PetscOptionsSAWsDestroy(void);
441: PETSC_EXTERN PetscErrorCode PetscObjectAddOptionsHandler(PetscObject, PetscErrorCode (*)(PetscObject, PetscOptionItems *, void *), PetscErrorCode (*)(PetscObject, void *), void *);
442: PETSC_EXTERN PetscErrorCode PetscObjectProcessOptionsHandlers(PetscObject, PetscOptionItems *);
443: PETSC_EXTERN PetscErrorCode PetscObjectDestroyOptionsHandlers(PetscObject);
445: PETSC_EXTERN PetscErrorCode PetscOptionsLeftError(void);