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 PetscOptionsGetBool3(PetscOptions, const char[], const char[], PetscBool3 *, PetscBool *);
32: PETSC_EXTERN PetscErrorCode PetscOptionsGetInt(PetscOptions, const char[], const char[], PetscInt *, PetscBool *);
33: PETSC_EXTERN PetscErrorCode PetscOptionsGetMPIInt(PetscOptions, const char[], const char[], PetscMPIInt *, PetscBool *);
34: PETSC_EXTERN PetscErrorCode PetscOptionsGetEnum(PetscOptions, const char[], const char[], const char *const *, PetscEnum *, PetscBool *);
35: PETSC_EXTERN PetscErrorCode PetscOptionsGetEList(PetscOptions, const char[], const char[], const char *const *, PetscInt, PetscInt *, PetscBool *);
36: PETSC_EXTERN PetscErrorCode PetscOptionsGetReal(PetscOptions, const char[], const char[], PetscReal *, PetscBool *);
37: PETSC_EXTERN PetscErrorCode PetscOptionsGetScalar(PetscOptions, const char[], const char[], PetscScalar *, PetscBool *);
38: PETSC_EXTERN PetscErrorCode PetscOptionsGetString(PetscOptions, const char[], const char[], char[], size_t, PetscBool *);
40: PETSC_EXTERN PetscErrorCode PetscOptionsGetBoolArray(PetscOptions, const char[], const char[], PetscBool[], PetscInt *, PetscBool *);
41: PETSC_EXTERN PetscErrorCode PetscOptionsGetEnumArray(PetscOptions, const char[], const char[], const char *const *, PetscEnum *, PetscInt *, PetscBool *);
42: PETSC_EXTERN PetscErrorCode PetscOptionsGetIntArray(PetscOptions, const char[], const char[], PetscInt[], PetscInt *, PetscBool *);
43: PETSC_EXTERN PetscErrorCode PetscOptionsGetRealArray(PetscOptions, const char[], const char[], PetscReal[], PetscInt *, PetscBool *);
44: PETSC_EXTERN PetscErrorCode PetscOptionsGetScalarArray(PetscOptions, const char[], const char[], PetscScalar[], PetscInt *, PetscBool *);
45: PETSC_EXTERN PetscErrorCode PetscOptionsGetStringArray(PetscOptions, const char[], const char[], char *[], PetscInt *, PetscBool *);
47: PETSC_EXTERN PetscErrorCode PetscOptionsValidKey(const char[], PetscBool *);
48: PETSC_EXTERN PetscErrorCode PetscOptionsSetAlias(PetscOptions, const char[], const char[]);
49: PETSC_EXTERN PetscErrorCode PetscOptionsSetValue(PetscOptions, const char[], const char[]);
50: PETSC_EXTERN PetscErrorCode PetscOptionsClearValue(PetscOptions, const char[]);
51: PETSC_EXTERN PetscErrorCode PetscOptionsFindPair(PetscOptions, const char[], const char[], const char *[], PetscBool *);
53: PETSC_EXTERN PetscErrorCode PetscOptionsGetAll(PetscOptions, char *[]);
54: PETSC_EXTERN PetscErrorCode PetscOptionsAllUsed(PetscOptions, PetscInt *);
55: PETSC_EXTERN PetscErrorCode PetscOptionsUsed(PetscOptions, const char[], PetscBool *);
56: PETSC_EXTERN PetscErrorCode PetscOptionsLeft(PetscOptions);
57: PETSC_EXTERN PetscErrorCode PetscOptionsLeftGet(PetscOptions, PetscInt *, char ***, char ***);
58: PETSC_EXTERN PetscErrorCode PetscOptionsLeftRestore(PetscOptions, PetscInt *, char ***, char ***);
59: PETSC_EXTERN PetscErrorCode PetscOptionsView(PetscOptions, PetscViewer);
61: PETSC_EXTERN PetscErrorCode PetscOptionsReject(PetscOptions, const char[], const char[], const char[]);
62: PETSC_EXTERN PetscErrorCode PetscOptionsInsert(PetscOptions, int *, char ***, const char[]);
63: PETSC_EXTERN PetscErrorCode PetscOptionsInsertFile(MPI_Comm, PetscOptions, const char[], PetscBool);
64: PETSC_EXTERN PetscErrorCode PetscOptionsInsertFileYAML(MPI_Comm, PetscOptions, const char[], PetscBool);
65: PETSC_EXTERN PetscErrorCode PetscOptionsInsertString(PetscOptions, const char[]);
66: PETSC_EXTERN PetscErrorCode PetscOptionsInsertStringYAML(PetscOptions, const char[]);
67: PETSC_EXTERN PetscErrorCode PetscOptionsInsertArgs(PetscOptions, int, char **);
68: PETSC_EXTERN PetscErrorCode PetscOptionsClear(PetscOptions);
69: PETSC_EXTERN PetscErrorCode PetscOptionsPrefixPush(PetscOptions, const char[]);
70: PETSC_EXTERN PetscErrorCode PetscOptionsPrefixPop(PetscOptions);
72: PETSC_EXTERN PetscErrorCode PetscOptionsGetenv(MPI_Comm, const char[], char[], size_t, PetscBool *);
73: PETSC_EXTERN PetscErrorCode PetscOptionsStringToBool(const char[], PetscBool *);
74: PETSC_EXTERN PetscErrorCode PetscOptionsStringToInt(const char[], PetscInt *);
75: PETSC_EXTERN PetscErrorCode PetscOptionsStringToReal(const char[], PetscReal *);
76: PETSC_EXTERN PetscErrorCode PetscOptionsStringToScalar(const char[], PetscScalar *);
78: PETSC_EXTERN PetscErrorCode PetscOptionsMonitorSet(PetscErrorCode (*)(const char[], const char[], PetscOptionSource, void *), void *, PetscErrorCode (*)(void **));
79: PETSC_EXTERN PetscErrorCode PetscOptionsMonitorDefault(const char[], const char[], PetscOptionSource, void *);
81: PETSC_EXTERN PetscErrorCode PetscObjectSetOptions(PetscObject, PetscOptions);
82: PETSC_EXTERN PetscErrorCode PetscObjectGetOptions(PetscObject, PetscOptions *);
84: PETSC_EXTERN PetscBool PetscOptionsPublish;
86: /*
87: See manual page for PetscOptionsBegin()
89: PetscOptionsItem and PetscOptionsItems are a single option (such as ksp_type) and a collection of such single
90: options being handled with a PetscOptionsBegin/End()
92: */
93: typedef enum {
94: OPTION_INT,
95: OPTION_BOOL,
96: OPTION_REAL,
97: OPTION_FLIST,
98: OPTION_STRING,
99: OPTION_REAL_ARRAY,
100: OPTION_SCALAR_ARRAY,
101: OPTION_HEAD,
102: OPTION_INT_ARRAY,
103: OPTION_ELIST,
104: OPTION_BOOL_ARRAY,
105: OPTION_STRING_ARRAY
106: } PetscOptionType;
108: typedef struct _n_PetscOptionItem *PetscOptionItem;
109: struct _n_PetscOptionItem {
110: char *option;
111: char *text;
112: void *data; /* used to hold the default value and then any value it is changed to by GUI */
113: PetscFunctionList flist; /* used for available values for PetscOptionsList() */
114: const char *const *list; /* used for available values for PetscOptionsEList() */
115: char nlist; /* number of entries in list */
116: char *man;
117: PetscInt arraylength; /* number of entries in data in the case that it is an array (of PetscInt etc), never a giant value */
118: PetscBool set; /* the user has changed this value in the GUI */
119: PetscOptionType type;
120: PetscOptionItem next;
121: char *pman;
122: void *edata;
123: };
125: typedef struct _p_PetscOptionItems {
126: PetscInt count;
127: PetscOptionItem next;
128: char *prefix, *pprefix;
129: char *title;
130: MPI_Comm comm;
131: PetscBool printhelp, changedmethod, alreadyprinted;
132: PetscObject object;
133: PetscOptions options;
134: } PetscOptionItems;
136: #if defined(PETSC_CLANG_STATIC_ANALYZER)
137: extern PetscOptionItems *PetscOptionsObject; /* declare this so that the PetscOptions stubs work */
138: PetscErrorCode PetscOptionsBegin(MPI_Comm, const char *, const char *, const char *);
139: PetscErrorCode PetscObjectOptionsBegin(PetscObject);
140: PetscErrorCode PetscOptionsEnd(void);
141: #else
142: /*MC
143: PetscOptionsBegin - Begins a set of queries on the options database that are related and should be
144: displayed on the same window of a GUI that allows the user to set the options interactively. Often one should
145: use `PetscObjectOptionsBegin()` rather than this call.
147: Synopsis:
148: #include <petscoptions.h>
149: PetscErrorCode PetscOptionsBegin(MPI_Comm comm,const char prefix[],const char title[],const char mansec[])
151: Collective
153: Input Parameters:
154: + comm - communicator that shares GUI
155: . prefix - options prefix for all options displayed on window (optional)
156: . title - short descriptive text, for example "Krylov Solver Options"
157: - mansec - section of manual pages for options, for example `KSP` (optional)
159: Level: intermediate
161: Notes:
162: This is a macro that handles its own error checking, it does not return an error code.
164: The set of queries needs to be ended by a call to `PetscOptionsEnd()`.
166: One can add subheadings with `PetscOptionsHeadBegin()`.
168: Developer Notes:
169: `PetscOptionsPublish` is set in `PetscOptionsCheckInitial_Private()` with `-saws_options`. When `PetscOptionsPublish` is set the
170: loop between `PetscOptionsBegin()` and `PetscOptionsEnd()` is run THREE times with `PetscOptionsPublishCount` of values -1,0,1.
171: Otherwise the loop is run ONCE with a `PetscOptionsPublishCount` of 1.
172: + \-1 - `PetscOptionsInt()` etc. just call `PetscOptionsGetInt()` etc.
173: . 0 - The GUI objects are created in `PetscOptionsInt()` etc. and displayed in `PetscOptionsEnd()` and the options
174: database updated with user changes; `PetscOptionsGetInt()` etc. are also called.
175: - 1 - `PetscOptionsInt()` etc. again call `PetscOptionsGetInt()` etc. (possibly getting new values), in addition the help message and
176: default values are printed if -help was given.
177: When `PetscOptionsObject.changedmethod` is set this causes `PetscOptionsPublishCount` to be reset to -2 (so in the next loop iteration it is -1)
178: and the whole process is repeated. This is to handle when, for example, the `KSPType` is changed thus changing the list of
179: options available so they need to be redisplayed so the user can change the. Changing `PetscOptionsObjects.changedmethod` is never
180: currently set.
182: Fortran Note:
183: Returns ierr error code per PETSc Fortran API
185: .seealso: `PetscOptionsGetReal()`, `PetscOptionsHasName()`, `PetscOptionsGetString()`, `PetscOptionsGetInt()`,
186: `PetscOptionsGetIntArray()`, `PetscOptionsGetRealArray()`, `PetscOptionsBool()`
187: `PetscOptionsInt()`, `PetscOptionsString()`, `PetscOptionsReal()`, `PetscOptionsBool()`,
188: `PetscOptionsName()`, `PetscOptionsEnd()`, `PetscOptionsHeadBegin()`,
189: `PetscOptionsStringArray()`, `PetscOptionsRealArray()`, `PetscOptionsScalar()`,
190: `PetscOptionsBoolGroupBegin()`, `PetscOptionsBoolGroup()`, `PetscOptionsBoolGroupEnd()`,
191: `PetscOptionsFList()`, `PetscOptionsEList()`, `PetscObjectOptionsBegin()`
192: M*/
193: #define PetscOptionsBegin(comm, prefix, mess, sec) \
194: do { \
195: PetscOptionItems PetscOptionsObjectBase; \
196: PetscOptionItems *PetscOptionsObject = &PetscOptionsObjectBase; \
197: PetscCall(PetscMemzero(PetscOptionsObject, sizeof(*PetscOptionsObject))); \
198: for (PetscOptionsObject->count = (PetscOptionsPublish ? -1 : 1); PetscOptionsObject->count < 2; PetscOptionsObject->count++) { \
199: PetscCall(PetscOptionsBegin_Private(PetscOptionsObject, comm, prefix, mess, sec))
201: /*MC
202: PetscObjectOptionsBegin - Begins a set of queries on the options database that are related and should be
203: displayed on the same window of a GUI that allows the user to set the options interactively.
205: Synopsis:
206: #include <petscoptions.h>
207: PetscErrorCode PetscObjectOptionsBegin(PetscObject obj)
209: Collective
211: Input Parameter:
212: . obj - object to set options for
214: Level: intermediate
216: Notes:
217: This is a macro that handles its own error checking, it does not return an error code.
219: Needs to be ended by a call the `PetscOptionsEnd()`
221: Can add subheadings with `PetscOptionsHeadBegin()`
223: .seealso: `PetscOptionsGetReal()`, `PetscOptionsHasName()`, `PetscOptionsGetString()`, `PetscOptionsGetInt()`,
224: `PetscOptionsGetIntArray()`, `PetscOptionsGetRealArray()`, `PetscOptionsBool()`
225: `PetscOptionsInt()`, `PetscOptionsString()`, `PetscOptionsReal()`, `PetscOptionsBool()`,
226: `PetscOptionsName()`, `PetscOptionsBegin()`, `PetscOptionsEnd()`, `PetscOptionsHeadBegin()`,
227: `PetscOptionsStringArray()`, `PetscOptionsRealArray()`, `PetscOptionsScalar()`,
228: `PetscOptionsBoolGroupBegin()`, `PetscOptionsBoolGroup()`, `PetscOptionsBoolGroupEnd()`,
229: `PetscOptionsFList()`, `PetscOptionsEList()`
230: M*/
231: #define PetscObjectOptionsBegin(obj) \
232: do { \
233: PetscOptionItems PetscOptionsObjectBase; \
234: PetscOptionItems *PetscOptionsObject = &PetscOptionsObjectBase; \
235: PetscOptionsObject->options = ((PetscObject)obj)->options; \
236: for (PetscOptionsObject->count = (PetscOptionsPublish ? -1 : 1); PetscOptionsObject->count < 2; PetscOptionsObject->count++) { \
237: PetscCall(PetscObjectOptionsBegin_Private(obj, PetscOptionsObject))
239: /*MC
240: PetscOptionsEnd - Ends a set of queries on the options database that are related and should be
241: displayed on the same window of a GUI that allows the user to set the options interactively.
243: Synopsis:
244: #include <petscoptions.h>
245: PetscErrorCode PetscOptionsEnd(void)
247: Collective on the comm used in `PetscOptionsBegin()` or obj used in `PetscObjectOptionsBegin()`
249: Level: intermediate
251: Notes:
252: Needs to be preceded by a call to `PetscOptionsBegin()` or `PetscObjectOptionsBegin()`
254: This is a macro that handles its own error checking, it does not return an error code.
256: Fortran Note:
257: Returns ierr error code per PETSc Fortran API
259: .seealso: `PetscOptionsGetReal()`, `PetscOptionsHasName()`, `PetscOptionsGetString()`, `PetscOptionsGetInt()`,
260: `PetscOptionsGetIntArray()`, `PetscOptionsGetRealArray()`, `PetscOptionsBool()`
261: `PetscOptionsInt()`, `PetscOptionsString()`, `PetscOptionsReal()`, `PetscOptionsBool()`,
262: `PetscOptionsName()`, `PetscOptionsBegin()`, `PetscOptionsHeadBegin()`,
263: `PetscOptionsStringArray()`, `PetscOptionsRealArray()`, `PetscOptionsScalar()`,
264: `PetscOptionsBoolGroupBegin()`, `PetscOptionsBoolGroup()`, `PetscOptionsBoolGroupEnd()`,
265: `PetscOptionsFList()`, `PetscOptionsEList()`, `PetscObjectOptionsBegin()`
266: M*/
267: #define PetscOptionsEnd() \
268: PetscCall(PetscOptionsEnd_Private(PetscOptionsObject)); \
269: } \
270: } \
271: while (0)
272: #endif /* PETSC_CLANG_STATIC_ANALYZER */
274: PETSC_EXTERN PetscErrorCode PetscOptionsBegin_Private(PetscOptionItems *, MPI_Comm, const char[], const char[], const char[]);
275: PETSC_EXTERN PetscErrorCode PetscObjectOptionsBegin_Private(PetscObject, PetscOptionItems *);
276: PETSC_EXTERN PetscErrorCode PetscOptionsEnd_Private(PetscOptionItems *);
277: PETSC_EXTERN PetscErrorCode PetscOptionsHeadBegin(PetscOptionItems *, const char[]);
279: #if defined(PETSC_CLANG_STATIC_ANALYZER)
280: template <typename... T>
281: void PetscOptionsHeadBegin(T...);
282: void PetscOptionsHeadEnd(void);
283: template <typename... T>
284: PetscErrorCode PetscOptionsEnum(T...);
285: template <typename... T>
286: PetscErrorCode PetscOptionsInt(T...);
287: template <typename... T>
288: PetscErrorCode PetscOptionsBoundedInt(T...);
289: template <typename... T>
290: PetscErrorCode PetscOptionsRangeInt(T...);
291: template <typename... T>
292: PetscErrorCode PetscOptionsReal(T...);
293: template <typename... T>
294: PetscErrorCode PetscOptionsScalar(T...);
295: template <typename... T>
296: PetscErrorCode PetscOptionsName(T...);
297: template <typename... T>
298: PetscErrorCode PetscOptionsString(T...);
299: template <typename... T>
300: PetscErrorCode PetscOptionsBool(T...);
301: template <typename... T>
302: PetscErrorCode PetscOptionsBoolGroupBegin(T...);
303: template <typename... T>
304: PetscErrorCode PetscOptionsBoolGroup(T...);
305: template <typename... T>
306: PetscErrorCode PetscOptionsBoolGroupEnd(T...);
307: template <typename... T>
308: PetscErrorCode PetscOptionsFList(T...);
309: template <typename... T>
310: PetscErrorCode PetscOptionsEList(T...);
311: template <typename... T>
312: PetscErrorCode PetscOptionsRealArray(T...);
313: template <typename... T>
314: PetscErrorCode PetscOptionsScalarArray(T...);
315: template <typename... T>
316: PetscErrorCode PetscOptionsIntArray(T...);
317: template <typename... T>
318: PetscErrorCode PetscOptionsStringArray(T...);
319: template <typename... T>
320: PetscErrorCode PetscOptionsBoolArray(T...);
321: template <typename... T>
322: PetscErrorCode PetscOptionsEnumArray(T...);
323: template <typename... T>
324: PetscErrorCode PetscOptionsDeprecated(T...);
325: template <typename... T>
326: PetscErrorCode PetscOptionsDeprecatedNoObject(T...);
327: #else
328: /*MC
329: PetscOptionsHeadBegin - Puts a heading before listing any more published options. Used, for example,
330: in `KSPSetFromOptions_GMRES()`.
332: Logically Collective on the communicator passed in `PetscOptionsBegin()`
334: Input Parameter:
335: . head - the heading text
337: Level: developer
339: Notes:
340: Handles errors directly, hence does not return an error code
342: Must be between a `PetscOptionsBegin()` and a `PetscOptionsEnd()`, and `PetscOptionsObject` created in `PetscOptionsBegin()` should be the first argument
344: Must be followed by a call to `PetscOptionsHeadEnd()` in the same function.
346: .seealso: `PetscOptionsGetInt()`, `PetscOptionsGetReal()`,
347: `PetscOptionsHasName()`, `PetscOptionsGetIntArray()`, `PetscOptionsGetRealArray()`, `PetscOptionsBool()`,
348: `PetscOptionsName()`, `PetscOptionsBegin()`, `PetscOptionsEnd()`, `PetscOptionsHeadBegin()`,
349: `PetscOptionsStringArray()`, `PetscOptionsRealArray()`, `PetscOptionsScalar()`,
350: `PetscOptionsBoolGroupBegin()`, `PetscOptionsBoolGroup()`, `PetscOptionsBoolGroupEnd()`,
351: `PetscOptionsFList()`, `PetscOptionsEList()`
352: M*/
353: #define PetscOptionsHeadBegin(PetscOptionsObject, head) \
354: do { \
355: if (PetscOptionsObject->printhelp && PetscOptionsObject->count == 1 && !PetscOptionsObject->alreadyprinted) PetscCall((*PetscHelpPrintf)(PetscOptionsObject->comm, " %s\n", head)); \
356: } while (0)
358: #define PetscOptionsHead(...) PETSC_DEPRECATED_MACRO(3, 18, 0, "PetscOptionsHeadBegin()", ) PetscOptionsHeadBegin(__VA_ARGS__)
360: /*MC
361: PetscOptionsHeadEnd - Ends a section of options begun with `PetscOptionsHeadBegin()`
362: See, for example, `KSPSetFromOptions_GMRES()`.
364: Synopsis:
365: #include <petscoptions.h>
366: PetscErrorCode PetscOptionsHeadEnd(void)
368: Collective on the comm used in `PetscOptionsBegin()` or obj used in `PetscObjectOptionsBegin()`
370: Level: intermediate
372: Notes:
373: Must be between a `PetscOptionsBegin()` or `PetscObjectOptionsBegin()` and a `PetscOptionsEnd()`
375: Must be preceded by a call to `PetscOptionsHeadBegin()` in the same function.
377: This needs to be used only if the code below `PetscOptionsHeadEnd()` can be run ONLY once.
378: See, for example, `PCSetFromOptions_Composite()`. This is a `return(0)` in it for early exit
379: from the function.
381: This is only for use with the PETSc options GUI
383: .seealso: `PetscOptionsGetInt()`, `PetscOptionsGetReal()`,
384: `PetscOptionsHasName()`, `PetscOptionsGetIntArray()`, `PetscOptionsGetRealArray()`, `PetscOptionsBool()`,
385: `PetscOptionsName()`, `PetscOptionsBegin()`, `PetscOptionsEnd()`, `PetscOptionsHeadBegin()`,
386: `PetscOptionsStringArray()`, `PetscOptionsRealArray()`, `PetscOptionsScalar()`,
387: `PetscOptionsBoolGroupBegin()`, `PetscOptionsBoolGroup()`, `PetscOptionsBoolGroupEnd()`,
388: `PetscOptionsFList()`, `PetscOptionsEList()`, `PetscOptionsEnum()`
389: M*/
390: #define PetscOptionsHeadEnd() \
391: do { \
392: if (PetscOptionsObject->count != 1) PetscFunctionReturn(PETSC_SUCCESS); \
393: } while (0)
395: #define PetscOptionsTail(...) PETSC_DEPRECATED_MACRO(3, 18, 0, "PetscOptionsHeadEnd()", ) PetscOptionsHeadEnd(__VA_ARGS__)
397: /*MC
398: PetscOptionsEnum - Gets the enum value for a particular option in the database.
400: Synopsis:
401: #include <petscoptions.h>
402: PetscErrorCode PetscOptionsEnum(const char opt[], const char text[], const char man[], const char *const *list, PetscEnum currentvalue, PetscEnum *value, PetscBool *set)
404: Logically Collective on the communicator passed in `PetscOptionsBegin()`
406: Input Parameters:
407: + opt - option name
408: . text - short string that describes the option
409: . man - manual page with additional information on option
410: . list - array containing the list of choices, followed by the enum name, followed by the enum prefix, followed by a null
411: - currentvalue - the current value; caller is responsible for setting this value correctly. Normally this is done with either
412: .vb
413: PetscOptionsEnum(..., obj->value,&object->value,...) or
414: value = defaultvalue
415: PetscOptionsEnum(..., value,&value,&set);
416: if (set) {
417: .ve
419: Output Parameters:
420: + value - the value to return
421: - set - `PETSC_TRUE` if found, else `PETSC_FALSE`
423: Level: beginner
425: Notes:
426: Must be between a `PetscOptionsBegin()` and a `PetscOptionsEnd()`
428: `list` is usually something like `PCASMTypes` or some other predefined list of enum names
430: If the user does not supply the option at all `value` is NOT changed. Thus
431: you should ALWAYS initialize `value` if you access it without first checking that `set` is `PETSC_TRUE`.
433: The `currentvalue` passed into this routine does not get transferred to the output `value` variable automatically.
435: .seealso: `PetscOptionsGetReal()`, `PetscOptionsHasName()`, `PetscOptionsGetString()`, `PetscOptionsGetInt()`,
436: `PetscOptionsGetIntArray()`, `PetscOptionsGetRealArray()`, `PetscOptionsGetBool()`,
437: `PetscOptionsInt()`, `PetscOptionsString()`, `PetscOptionsReal()`, `PetscOptionsBool()`,
438: `PetscOptionsName()`, `PetscOptionsBegin()`, `PetscOptionsEnd()`, `PetscOptionsHeadBegin()`,
439: `PetscOptionsStringArray()`, `PetscOptionsRealArray()`, `PetscOptionsScalar()`,
440: `PetscOptionsBoolGroupBegin()`, `PetscOptionsBoolGroup()`, `PetscOptionsBoolGroupEnd()`,
441: `PetscOptionsFList()`, `PetscOptionsEList()`
442: M*/
443: #define PetscOptionsEnum(opt, text, man, list, currentvalue, value, set) PetscOptionsEnum_Private(PetscOptionsObject, opt, text, man, list, currentvalue, value, set)
445: /*MC
446: PetscOptionsInt - Gets the integer value for a particular option in the database.
448: Synopsis:
449: #include <petscoptions.h>
450: PetscErrorCode PetscOptionsInt(const char opt[], const char text[], const char man[], PetscInt currentvalue, PetscInt *value, PetscBool *set)
452: Logically Collective on the communicator passed in `PetscOptionsBegin()`
454: Input Parameters:
455: + opt - option name
456: . text - short string that describes the option
457: . man - manual page with additional information on option
458: - currentvalue - the current value; caller is responsible for setting this value correctly. Normally this is done with either
459: .vb
460: PetscOptionsInt(..., obj->value, &obj->value, ...) or
461: value = defaultvalue
462: PetscOptionsInt(..., value, &value, &set);
463: if (set) {
464: .ve
466: Output Parameters:
467: + value - the integer value to return
468: - set - `PETSC_TRUE` if found, else `PETSC_FALSE`
470: Level: beginner
472: Notes:
473: If the user does not supply the option at all `value` is NOT changed. Thus
474: you should ALWAYS initialize `value` if you access it without first checking that `set` is `PETSC_TRUE`.
476: The `currentvalue` passed into this routine does not get transferred to the output `value` variable automatically.
478: Must be between a `PetscOptionsBegin()` and a `PetscOptionsEnd()`
480: .seealso: `PetscOptionsBoundedInt()`, `PetscOptionsGetReal()`, `PetscOptionsHasName()`, `PetscOptionsGetString()`, `PetscOptionsGetInt()`,
481: `PetscOptionsGetIntArray()`, `PetscOptionsGetRealArray()`, `PetscOptionsGetBool()`, `PetscOptionsRangeInt()`
482: `PetscOptionsInt()`, `PetscOptionsString()`, `PetscOptionsReal()`, `PetscOptionsBool()`,
483: `PetscOptionsName()`, `PetscOptionsBegin()`, `PetscOptionsEnd()`, `PetscOptionsHeadBegin()`,
484: `PetscOptionsStringArray()`, `PetscOptionsRealArray()`, `PetscOptionsScalar()`,
485: `PetscOptionsBoolGroupBegin()`, `PetscOptionsBoolGroup()`, `PetscOptionsBoolGroupEnd()`,
486: `PetscOptionsFList()`, `PetscOptionsEList()`, `PetscOptionsBoundedReal()`, `PetscOptionsRangeReal()`
487: M*/
488: #define PetscOptionsInt(opt, text, man, currentvalue, value, set) PetscOptionsInt_Private(PetscOptionsObject, opt, text, man, currentvalue, value, set, PETSC_INT_MIN, PETSC_INT_MAX)
490: /*MC
491: PetscOptionsMPIInt - Gets the MPI integer value for a particular option in the database.
493: Synopsis:
494: #include <petscoptions.h>
495: PetscErrorCode PetscOptionsMPIInt(const char opt[], const char text[], const char man[], PetscMPIInt currentvalue, PetscMPIInt *value, PetscBool *set)
497: Logically Collective on the communicator passed in `PetscOptionsBegin()`
499: Input Parameters:
500: + opt - option name
501: . text - short string that describes the option
502: . man - manual page with additional information on option
503: - currentvalue - the current value; caller is responsible for setting this value correctly. Normally this is done with either
504: .vb
505: PetscOptionsInt(..., obj->value, &obj->value, ...) or
506: value = defaultvalue
507: PetscOptionsInt(..., value, &value, &set);
508: if (set) {
509: .ve
511: Output Parameters:
512: + value - the MPI integer value to return
513: - set - `PETSC_TRUE` if found, else `PETSC_FALSE`
515: Level: beginner
517: Notes:
518: If the user does not supply the option at all `value` is NOT changed. Thus
519: you should ALWAYS initialize `value` if you access it without first checking that `set` is `PETSC_TRUE`.
521: The `currentvalue` passed into this routine does not get transferred to the output `value` variable automatically.
523: Must be between a `PetscOptionsBegin()` and a `PetscOptionsEnd()`
525: .seealso: `PetscOptionsBoundedInt()`, `PetscOptionsGetReal()`, `PetscOptionsHasName()`, `PetscOptionsGetString()`, `PetscOptionsGetInt()`,
526: `PetscOptionsGetIntArray()`, `PetscOptionsGetRealArray()`, `PetscOptionsGetBool()`, `PetscOptionsRangeInt()`
527: `PetscOptionsInt()`, `PetscOptionsString()`, `PetscOptionsReal()`, `PetscOptionsBool()`,
528: `PetscOptionsName()`, `PetscOptionsBegin()`, `PetscOptionsEnd()`, `PetscOptionsHeadBegin()`,
529: `PetscOptionsStringArray()`, `PetscOptionsRealArray()`, `PetscOptionsScalar()`,
530: `PetscOptionsBoolGroupBegin()`, `PetscOptionsBoolGroup()`, `PetscOptionsBoolGroupEnd()`,
531: `PetscOptionsFList()`, `PetscOptionsEList()`, `PetscOptionsBoundedReal()`, `PetscOptionsRangeReal()`
532: M*/
533: #define PetscOptionsMPIInt(opt, text, man, currentvalue, value, set) PetscOptionsMPIInt_Private(PetscOptionsObject, opt, text, man, currentvalue, value, set, PETSC_MPI_INT_MIN, PETSC_MPI_INT_MAX)
535: /*MC
536: PetscOptionsBoundedInt - Gets an integer value greater than or equal to a given bound for a particular option in the database.
538: Synopsis:
539: #include <petscoptions.h>
540: PetscErrorCode PetscOptionsBoundedInt(const char opt[], const char text[], const char man[], PetscInt currentvalue, PetscInt *value, PetscBool *set, PetscInt bound)
542: Logically Collective on the communicator passed in `PetscOptionsBegin()`
544: Input Parameters:
545: + opt - option name
546: . text - short string that describes the option
547: . man - manual page with additional information on option
548: . currentvalue - the current value; caller is responsible for setting this value correctly. Normally this is done with either
549: .vb
550: PetscOptionsBoundedInt(..., obj->value, &obj->value, ...)
551: .ve
552: or
553: .vb
554: value = defaultvalue
555: PetscOptionsBoundedInt(..., value, &value, &set, ...);
556: if (set) {
557: .ve
558: - bound - the requested value should be greater than or equal to this bound or an error is generated
560: Output Parameters:
561: + value - the integer value to return
562: - set - `PETSC_TRUE` if found, else `PETSC_FALSE`
564: Level: beginner
566: Notes:
567: If the user does not supply the option at all `value` is NOT changed. Thus
568: you should ALWAYS initialize `value` if you access it without first checking that `set` is `PETSC_TRUE`.
570: The `currentvalue` passed into this routine does not get transferred to the output `value` variable automatically.
572: Must be used between a `PetscOptionsBegin()` and a `PetscOptionsEnd()`
574: .seealso: `PetscOptionsInt()`, `PetscOptionsGetReal()`, `PetscOptionsHasName()`, `PetscOptionsGetString()`, `PetscOptionsGetInt()`,
575: `PetscOptionsGetIntArray()`, `PetscOptionsGetRealArray()`, `PetscOptionsGetBool()`, `PetscOptionsRangeInt()`
576: `PetscOptionsInt()`, `PetscOptionsString()`, `PetscOptionsReal()`, `PetscOptionsBool()`,
577: `PetscOptionsName()`, `PetscOptionsBegin()`, `PetscOptionsEnd()`, `PetscOptionsHeadBegin()`,
578: `PetscOptionsStringArray()`, `PetscOptionsRealArray()`, `PetscOptionsScalar()`,
579: `PetscOptionsBoolGroupBegin()`, `PetscOptionsBoolGroup()`, `PetscOptionsBoolGroupEnd()`,
580: `PetscOptionsFList()`, `PetscOptionsEList()`, `PetscOptionsBoundedReal()`, `PetscOptionsRangeReal()`
581: M*/
582: #define PetscOptionsBoundedInt(opt, text, man, currentvalue, value, set, lb) PetscOptionsInt_Private(PetscOptionsObject, opt, text, man, currentvalue, value, set, lb, PETSC_INT_MAX)
584: /*MC
585: PetscOptionsRangeInt - Gets an integer value within a range of values for a particular option in the database.
587: Synopsis:
588: #include <petscoptions.h>
589: PetscErrorCode PetscOptionsRangeInt(const char opt[], const char text[], const char man[], PetscInt currentvalue, PetscInt *value, PetscBool *set, PetscInt lb, PetscInt ub)
591: Logically Collective on the communicator passed in `PetscOptionsBegin()`
593: Input Parameters:
594: + opt - option name
595: . text - short string that describes the option
596: . man - manual page with additional information on option
597: . currentvalue - the current value; caller is responsible for setting this value correctly. Normally this is done with either
598: .vb
599: PetscOptionsRangeInt(..., obj->value, &obj->value, ...)
600: .ve
601: or
602: .vb
603: value = defaultvalue
604: PetscOptionsRangeInt(..., value, &value, &set, ...);
605: if (set) {
606: .ve
607: . lb - the lower bound, provided value must be greater than or equal to this value or an error is generated
608: - ub - the upper bound, provided value must be less than or equal to this value or an error is generated
610: Output Parameters:
611: + value - the integer value to return
612: - set - `PETSC_TRUE` if found, else `PETSC_FALSE`
614: Level: beginner
616: Notes:
617: If the user does not supply the option at all `value` is NOT changed. Thus
618: you should ALWAYS initialize `value` if you access it without first checking that `set` is `PETSC_TRUE`.
620: The `currentvalue` passed into this routine does not get transferred to the output `value` variable automatically.
622: Must be used between a `PetscOptionsBegin()` and a `PetscOptionsEnd()`
624: .seealso: `PetscOptionsInt()`, `PetscOptionsGetReal()`, `PetscOptionsHasName()`, `PetscOptionsGetString()`, `PetscOptionsGetInt()`,
625: `PetscOptionsGetIntArray()`, `PetscOptionsGetRealArray()`, `PetscOptionsGetBool()`, `PetscOptionsBoundedInt()`
626: `PetscOptionsInt()`, `PetscOptionsString()`, `PetscOptionsReal()`, `PetscOptionsBool()`,
627: `PetscOptionsName()`, `PetscOptionsBegin()`, `PetscOptionsEnd()`, `PetscOptionsHeadBegin()`,
628: `PetscOptionsStringArray()`, `PetscOptionsRealArray()`, `PetscOptionsScalar()`,
629: `PetscOptionsBoolGroupBegin()`, `PetscOptionsBoolGroup()`, `PetscOptionsBoolGroupEnd()`,
630: `PetscOptionsFList()`, `PetscOptionsEList()`, `PetscOptionsBoundedReal()`, `PetscOptionsRangeReal()`
631: M*/
632: #define PetscOptionsRangeInt(opt, text, man, currentvalue, value, set, lb, ub) PetscOptionsInt_Private(PetscOptionsObject, opt, text, man, currentvalue, value, set, lb, ub)
634: /*MC
635: PetscOptionsReal - Gets a `PetscReal` value for a particular option in the database.
637: Synopsis:
638: #include <petscoptions.h>
639: PetscErrorCode PetscOptionsReal(const char opt[], const char text[], const char man[], PetscReal currentvalue, PetscReal *value, PetscBool *set)
641: Logically Collective on the communicator passed in `PetscOptionsBegin()`
643: Input Parameters:
644: + opt - option name
645: . text - short string that describes the option
646: . man - manual page with additional information on option
647: - currentvalue - the current value; caller is responsible for setting this value correctly. Normally this is done with either
648: .vb
649: PetscOptionsReal(..., obj->value,&obj->value,...) or
650: value = defaultvalue
651: PetscOptionsReal(..., value,&value,&set);
652: if (set) {
653: .ve
655: Output Parameters:
656: + value - the value to return
657: - set - `PETSC_TRUE` if found, else `PETSC_FALSE`
659: Level: beginner
661: Notes:
662: If the user does not supply the option at all `value` is NOT changed. Thus
663: you should ALWAYS initialize `value` if you access it without first checking that `set` is `PETSC_TRUE`.
665: The `currentvalue` passed into this routine does not get transferred to the output `value` variable automatically.
667: Must be used between a `PetscOptionsBegin()` and a `PetscOptionsEnd()`
669: .seealso: `PetscOptionsGetReal()`, `PetscOptionsHasName()`, `PetscOptionsGetString()`, `PetscOptionsGetInt()`,
670: `PetscOptionsGetIntArray()`, `PetscOptionsGetRealArray()`, `PetscOptionsGetBool()`,
671: `PetscOptionsInt()`, `PetscOptionsString()`, `PetscOptionsReal()`, `PetscOptionsBool()`,
672: `PetscOptionsName()`, `PetscOptionsBegin()`, `PetscOptionsEnd()`, `PetscOptionsHeadBegin()`,
673: `PetscOptionsStringArray()`, `PetscOptionsRealArray()`, `PetscOptionsScalar()`,
674: `PetscOptionsBoolGroupBegin()`, `PetscOptionsBoolGroup()`, `PetscOptionsBoolGroupEnd()`,
675: `PetscOptionsFList()`, `PetscOptionsEList()`, `PetscOptionsBoundedReal()`, `PetscOptionsRangeReal()`
676: M*/
677: #define PetscOptionsReal(opt, text, man, currentvalue, value, set) PetscOptionsReal_Private(PetscOptionsObject, opt, text, man, currentvalue, value, set, PETSC_MIN_REAL, PETSC_MAX_REAL)
679: /*MC
680: PetscOptionsBoundedReal - Gets a `PetscReal` value greater than or equal to a given bound for a particular option in the database.
682: Synopsis:
683: #include <petscoptions.h>
684: PetscErrorCode PetscOptionsBoundedReal(const char opt[], const char text[], const char man[], PetscReal currentvalue, PetscReal *value, PetscBool *set, PetscReal bound)
686: Logically Collective on the communicator passed in `PetscOptionsBegin()`
688: Input Parameters:
689: + opt - option name
690: . text - short string that describes the option
691: . man - manual page with additional information on option
692: . currentvalue - the current value; caller is responsible for setting this value correctly. Normally this is done with either
693: .vb
694: PetscOptionsBoundedReal(..., obj->value, &obj->value, ...)
695: .ve
696: or
697: .vb
698: value = defaultvalue
699: PetscOptionsBoundedReal(..., value, &value, &set, ...);
700: if (set) {
701: .ve
702: - bound - the requested value should be greater than or equal to this bound or an error is generated
704: Output Parameters:
705: + value - the real value to return
706: - set - `PETSC_TRUE` if found, else `PETSC_FALSE`
708: Level: beginner
710: Notes:
711: If the user does not supply the option at all `value` is NOT changed. Thus
712: you should ALWAYS initialize `value` if you access it without first checking that `set` is `PETSC_TRUE`.
714: The `currentvalue` passed into this routine does not get transferred to the output `value` variable automatically.
716: Must be used between a `PetscOptionsBegin()` and a `PetscOptionsEnd()`
718: .seealso: `PetscOptionsInt()`, `PetscOptionsGetReal()`, `PetscOptionsHasName()`, `PetscOptionsGetString()`, `PetscOptionsGetInt()`,
719: `PetscOptionsGetIntArray()`, `PetscOptionsGetRealArray()`, `PetscOptionsGetBool()`, `PetscOptionsRangeInt()`
720: `PetscOptionsInt()`, `PetscOptionsString()`, `PetscOptionsReal()`, `PetscOptionsBool()`,
721: `PetscOptionsName()`, `PetscOptionsBegin()`, `PetscOptionsEnd()`, `PetscOptionsHeadBegin()`,
722: `PetscOptionsStringArray()`, `PetscOptionsRealArray()`, `PetscOptionsScalar()`,
723: `PetscOptionsBoolGroupBegin()`, `PetscOptionsBoolGroup()`, `PetscOptionsBoolGroupEnd()`,
724: `PetscOptionsFList()`, `PetscOptionsEList()`, `PetscOptionsBoundedInt()`, `PetscOptionsRangeReal()`
725: M*/
726: #define PetscOptionsBoundedReal(opt, text, man, currentvalue, value, set, lb) PetscOptionsReal_Private(PetscOptionsObject, opt, text, man, currentvalue, value, set, lb, PETSC_MAX_REAL)
728: /*MC
729: PetscOptionsRangeReal - Gets a `PetscReal` value within a range of values for a particular option in the database.
731: Synopsis:
732: #include <petscoptions.h>
733: PetscErrorCode PetscOptionsRangeReal(const char opt[], const char text[], const char man[], PetscReal currentvalue, PetscReal *value, PetscBool *set, PetscReal lb, PetscReal ub)
735: Logically Collective on the communicator passed in `PetscOptionsBegin()`
737: Input Parameters:
738: + opt - option name
739: . text - short string that describes the option
740: . man - manual page with additional information on option
741: . currentvalue - the current value; caller is responsible for setting this value correctly. Normally this is done with either
742: .vb
743: PetscOptionsRangeReal(..., obj->value, &obj->value, ...)
744: .ve
745: or
746: .vb
747: value = defaultvalue
748: PetscOptionsRangeReal(..., value, &value, &set, ...);
749: if (set) {
750: .ve
751: . lb - the lower bound, provided value must be greater than or equal to this value or an error is generated
752: - ub - the upper bound, provided value must be less than or equal to this value or an error is generated
754: Output Parameters:
755: + value - the value to return
756: - set - `PETSC_TRUE` if found, else `PETSC_FALSE`
758: Level: beginner
760: Notes:
761: If the user does not supply the option at all `value` is NOT changed. Thus
762: you should ALWAYS initialize `value` if you access it without first checking that `set` is `PETSC_TRUE`.
764: The `currentvalue` passed into this routine does not get transferred to the output `value` variable automatically.
766: Must be used between a `PetscOptionsBegin()` and a `PetscOptionsEnd()`
768: .seealso: `PetscOptionsInt()`, `PetscOptionsGetReal()`, `PetscOptionsHasName()`, `PetscOptionsGetString()`, `PetscOptionsGetInt()`,
769: `PetscOptionsGetIntArray()`, `PetscOptionsGetRealArray()`, `PetscOptionsGetBool()`, `PetscOptionsBoundedInt()`
770: `PetscOptionsInt()`, `PetscOptionsString()`, `PetscOptionsReal()`, `PetscOptionsBool()`,
771: `PetscOptionsName()`, `PetscOptionsBegin()`, `PetscOptionsEnd()`, `PetscOptionsHeadBegin()`,
772: `PetscOptionsStringArray()`, `PetscOptionsRealArray()`, `PetscOptionsScalar()`,
773: `PetscOptionsBoolGroupBegin()`, `PetscOptionsBoolGroup()`, `PetscOptionsBoolGroupEnd()`,
774: `PetscOptionsFList()`, `PetscOptionsEList()`, `PetscOptionsRangeInt()`, `PetscOptionsBoundedReal()`
775: M*/
776: #define PetscOptionsRangeReal(opt, text, man, currentvalue, value, set, lb, ub) PetscOptionsReal_Private(PetscOptionsObject, opt, text, man, currentvalue, value, set, lb, ub)
778: /*MC
779: PetscOptionsScalar - Gets the `PetscScalar` value for a particular option in the database.
781: Synopsis:
782: #include <petscoptions.h>
783: PetscErrorCode PetscOptionsScalar(const char opt[], const char text[], const char man[], PetscScalar currentvalue, PetscScalar *value, PetscBool *set)
785: Logically Collective on the communicator passed in `PetscOptionsBegin()`
787: Input Parameters:
788: + opt - option name
789: . text - short string that describes the option
790: . man - manual page with additional information on option
791: - currentvalue - the current value; caller is responsible for setting this value correctly. Normally this is done with either
792: .vb
793: PetscOptionsScalar(..., obj->value,&obj->value,...) or
794: value = defaultvalue
795: PetscOptionsScalar(..., value,&value,&set);
796: if (set) {
797: .ve
799: Output Parameters:
800: + value - the value to return
801: - set - `PETSC_TRUE` if found, else `PETSC_FALSE`
803: Level: beginner
805: Notes:
806: If the user does not supply the option at all `value` is NOT changed. Thus
807: you should ALWAYS initialize `value` if you access it without first checking that `set` is `PETSC_TRUE`.
809: The `currentvalue` passed into this routine does not get transferred to the output `value` variable automatically.
811: Must be used between a `PetscOptionsBegin()` and a `PetscOptionsEnd()`
813: .seealso: `PetscOptionsGetReal()`, `PetscOptionsHasName()`, `PetscOptionsGetString()`, `PetscOptionsGetInt()`,
814: `PetscOptionsGetIntArray()`, `PetscOptionsGetRealArray()`, `PetscOptionsGetBool()`,
815: `PetscOptionsInt()`, `PetscOptionsString()`, `PetscOptionsReal()`, `PetscOptionsBool()`,
816: `PetscOptionsName()`, `PetscOptionsBegin()`, `PetscOptionsEnd()`, `PetscOptionsHeadBegin()`,
817: `PetscOptionsStringArray()`, `PetscOptionsRealArray()`, `PetscOptionsScalar()`,
818: `PetscOptionsBoolGroupBegin()`, `PetscOptionsBoolGroup()`, `PetscOptionsBoolGroupEnd()`,
819: `PetscOptionsFList()`, `PetscOptionsEList()`
820: M*/
821: #define PetscOptionsScalar(opt, text, man, currentvalue, value, set) PetscOptionsScalar_Private(PetscOptionsObject, opt, text, man, currentvalue, value, set)
823: /*MC
824: PetscOptionsName - Determines if a particular option has been set in the database. This returns true whether the option is a number, string or boolean, even
825: its value is set to false.
827: Synopsis:
828: #include <petscoptions.h>
829: PetscErrorCode PetscOptionsName(const char opt[], const char text[], const char man[], PetscBool *set)
831: Logically Collective on the communicator passed in `PetscOptionsBegin()`
833: Input Parameters:
834: + opt - option name
835: . text - short string that describes the option
836: - man - manual page with additional information on option
838: Output Parameter:
839: . set - `PETSC_TRUE` if found, else `PETSC_FALSE`
841: Level: beginner
843: Note:
844: Must be used between a `PetscOptionsBegin()` and a `PetscOptionsEnd()`
846: .seealso: `PetscOptionsGetReal()`, `PetscOptionsHasName()`, `PetscOptionsGetString()`, `PetscOptionsGetInt()`,
847: `PetscOptionsGetIntArray()`, `PetscOptionsGetRealArray()`, `PetscOptionsGetBool()`,
848: `PetscOptionsInt()`, `PetscOptionsString()`, `PetscOptionsReal()`, `PetscOptionsBool()`,
849: `PetscOptionsName()`, `PetscOptionsBegin()`, `PetscOptionsEnd()`, `PetscOptionsHeadBegin()`,
850: `PetscOptionsStringArray()`, `PetscOptionsRealArray()`, `PetscOptionsScalar()`,
851: `PetscOptionsBoolGroupBegin()`, `PetscOptionsBoolGroup()`, `PetscOptionsBoolGroupEnd()`,
852: `PetscOptionsFList()`, `PetscOptionsEList()`
853: M*/
854: #define PetscOptionsName(opt, text, man, set) PetscOptionsName_Private(PetscOptionsObject, opt, text, man, set)
856: /*MC
857: PetscOptionsString - Gets the string value for a particular option in the database.
859: Synopsis:
860: #include <petscoptions.h>
861: PetscErrorCode PetscOptionsString(const char opt[], const char text[], const char man[], const char currentvalue[], char value[], size_t len, PetscBool *set)
863: Logically Collective on the communicator passed in `PetscOptionsBegin()`
865: Input Parameters:
866: + opt - option name
867: . text - short string that describes the option
868: . man - manual page with additional information on option
869: . currentvalue - the current value; caller is responsible for setting this value correctly. This is not used to set value
870: - len - length of the result string including null terminator
872: Output Parameters:
873: + value - the value to return
874: - set - `PETSC_TRUE` if found, else `PETSC_FALSE`
876: Level: beginner
878: Notes:
879: Must be used between a `PetscOptionsBegin()` and a `PetscOptionsEnd()`
881: If the user provided no string (for example `-optionname` `-someotheroption`) `set` is set to `PETSC_TRUE` (and the string is filled with nulls).
883: If the user does not supply the option at all `value` is NOT changed. Thus
884: you should ALWAYS initialize `value` if you access it without first checking that `set` is `PETSC_TRUE`.
886: The `currentvalue` passed into this routine does not get transferred to the output `value` variable automatically.
888: .seealso: `PetscOptionsGetReal()`, `PetscOptionsHasName()`, `PetscOptionsGetString()`, `PetscOptionsGetInt()`,
889: `PetscOptionsGetIntArray()`, `PetscOptionsGetRealArray()`, `PetscOptionsGetBool()`,
890: `PetscOptionsInt()`, `PetscOptionsReal()`, `PetscOptionsBool()`,
891: `PetscOptionsName()`, `PetscOptionsBegin()`, `PetscOptionsEnd()`, `PetscOptionsHeadBegin()`,
892: `PetscOptionsStringArray()`, `PetscOptionsRealArray()`, `PetscOptionsScalar()`,
893: `PetscOptionsBoolGroupBegin()`, `PetscOptionsBoolGroup()`, `PetscOptionsBoolGroupEnd()`,
894: `PetscOptionsFList()`, `PetscOptionsEList()`
895: M*/
896: #define PetscOptionsString(opt, text, man, currentvalue, value, len, set) PetscOptionsString_Private(PetscOptionsObject, opt, text, man, currentvalue, value, len, set)
898: /*MC
899: PetscOptionsBool - Determines if a particular option is in the database with a true or false
901: Synopsis:
902: #include <petscoptions.h>
903: PetscErrorCode PetscOptionsBool(const char opt[], const char text[], const char man[], PetscBool currentvalue, PetscBool *flg, PetscBool *set)
905: Logically Collective on the communicator passed in `PetscOptionsBegin()`
907: Input Parameters:
908: + opt - option name
909: . text - short string that describes the option
910: . man - manual page with additional information on option
911: - currentvalue - the current value
913: Output Parameters:
914: + flg - `PETSC_TRUE` or `PETSC_FALSE`
915: - set - `PETSC_TRUE` if found, else `PETSC_FALSE`
917: Level: beginner
919: Notes:
920: TRUE, true, YES, yes, nostring, and 1 all translate to `PETSC_TRUE`
921: FALSE, false, NO, no, and 0 all translate to `PETSC_FALSE`
923: If the option is given, but no value is provided, then `flg` and `set` are both given the value `PETSC_TRUE`. That is `-requested_bool`
924: is equivalent to `-requested_bool true`
926: If the user does not supply the option at all `flg` is NOT changed. Thus
927: you should ALWAYS initialize the `flg` variable if you access it without first checking that the `set` flag is `PETSC_TRUE`.
929: Must be between a `PetscOptionsBegin()` and a `PetscOptionsEnd()`
931: .seealso: `PetscOptionsGetReal()`, `PetscOptionsHasName()`, `PetscOptionsGetString()`, `PetscOptionsGetInt()`,
932: `PetscOptionsGetIntArray()`, `PetscOptionsGetRealArray()`, `PetscOptionsGetBool()`,
933: `PetscOptionsInt()`, `PetscOptionsString()`, `PetscOptionsReal()`,
934: `PetscOptionsName()`, `PetscOptionsBegin()`, `PetscOptionsEnd()`, `PetscOptionsHeadBegin()`,
935: `PetscOptionsStringArray()`, `PetscOptionsRealArray()`, `PetscOptionsScalar()`,
936: `PetscOptionsBoolGroupBegin()`, `PetscOptionsBoolGroup()`, `PetscOptionsBoolGroupEnd()`,
937: `PetscOptionsFList()`, `PetscOptionsEList()`
938: M*/
939: #define PetscOptionsBool(opt, text, man, currentvalue, value, set) PetscOptionsBool_Private(PetscOptionsObject, opt, text, man, currentvalue, value, set)
941: /*MC
942: PetscOptionsBoolGroupBegin - First in a series of logical queries on the options database for
943: which at most a single value can be true.
945: Synopsis:
946: #include <petscoptions.h>
947: PetscErrorCode PetscOptionsBoolGroupBegin(const char opt[], const char text[], const char man[], PetscBool *set)
949: Logically Collective on the communicator passed in `PetscOptionsBegin()`
951: Input Parameters:
952: + opt - option name
953: . text - short string that describes the option
954: - man - manual page with additional information on option
956: Output Parameter:
957: . set - whether that option was set or not
959: Level: intermediate
961: Notes:
962: Must be used between a `PetscOptionsBegin()` and a `PetscOptionsEnd()`
964: Must be followed by 0 or more `PetscOptionsBoolGroup()`s and `PetscOptionsBoolGroupEnd()`
966: .seealso: `PetscOptionsGetInt()`, `PetscOptionsGetReal()`,
967: `PetscOptionsHasName()`, `PetscOptionsGetIntArray()`, `PetscOptionsGetRealArray()`, `PetscOptionsBool()`,
968: `PetscOptionsName()`, `PetscOptionsBegin()`, `PetscOptionsEnd()`, `PetscOptionsHeadBegin()`,
969: `PetscOptionsStringArray()`, `PetscOptionsRealArray()`, `PetscOptionsScalar()`,
970: `PetscOptionsBoolGroupBegin()`, `PetscOptionsBoolGroup()`, `PetscOptionsBoolGroupEnd()`,
971: `PetscOptionsFList()`, `PetscOptionsEList()`
972: M*/
973: #define PetscOptionsBoolGroupBegin(opt, text, man, set) PetscOptionsBoolGroupBegin_Private(PetscOptionsObject, opt, text, man, set)
975: /*MC
976: PetscOptionsBoolGroup - One in a series of logical queries on the options database for
977: which at most a single value can be true.
979: Synopsis:
980: #include <petscoptions.h>
981: PetscErrorCode PetscOptionsBoolGroup(const char opt[], const char text[], const char man[], PetscBool *set)
983: Logically Collective on the communicator passed in `PetscOptionsBegin()`
985: Input Parameters:
986: + opt - option name
987: . text - short string that describes the option
988: - man - manual page with additional information on option
990: Output Parameter:
991: . set - `PETSC_TRUE` if found, else `PETSC_FALSE`
993: Level: intermediate
995: Notes:
996: Must be used between a `PetscOptionsBegin()` and a `PetscOptionsEnd()`
998: Must follow a `PetscOptionsBoolGroupBegin()` and preceded a `PetscOptionsBoolGroupEnd()`
1000: .seealso: `PetscOptionsGetInt()`, `PetscOptionsGetReal()`,
1001: `PetscOptionsHasName()`, `PetscOptionsGetIntArray()`, `PetscOptionsGetRealArray()`, `PetscOptionsBool()`,
1002: `PetscOptionsName()`, `PetscOptionsBegin()`, `PetscOptionsEnd()`, `PetscOptionsHeadBegin()`,
1003: `PetscOptionsStringArray()`, `PetscOptionsRealArray()`, `PetscOptionsScalar()`,
1004: `PetscOptionsBoolGroupBegin()`, `PetscOptionsBoolGroup()`, `PetscOptionsBoolGroupEnd()`,
1005: `PetscOptionsFList()`, `PetscOptionsEList()`
1006: M*/
1007: #define PetscOptionsBoolGroup(opt, text, man, set) PetscOptionsBoolGroup_Private(PetscOptionsObject, opt, text, man, set)
1009: /*MC
1010: PetscOptionsBoolGroupEnd - Last in a series of logical queries on the options database for
1011: which at most a single value can be true.
1013: Synopsis:
1014: #include <petscoptions.h>
1015: PetscErrorCode PetscOptionsBoolGroupEnd(const char opt[], const char text[], const char man[], PetscBool *set)
1017: Logically Collective on the communicator passed in `PetscOptionsBegin()`
1019: Input Parameters:
1020: + opt - option name
1021: . text - short string that describes the option
1022: - man - manual page with additional information on option
1024: Output Parameter:
1025: . set - `PETSC_TRUE` if found, else `PETSC_FALSE`
1027: Level: intermediate
1029: Notes:
1030: Must be used between a `PetscOptionsBegin()` and a `PetscOptionsEnd()`
1032: Must follow a `PetscOptionsBoolGroupBegin()`
1034: .seealso: `PetscOptionsGetInt()`, `PetscOptionsGetReal()`,
1035: `PetscOptionsHasName()`, `PetscOptionsGetIntArray()`, `PetscOptionsGetRealArray()`, `PetscOptionsBool()`,
1036: `PetscOptionsName()`, `PetscOptionsBegin()`, `PetscOptionsEnd()`, `PetscOptionsHeadBegin()`,
1037: `PetscOptionsStringArray()`, `PetscOptionsRealArray()`, `PetscOptionsScalar()`,
1038: `PetscOptionsBoolGroupBegin()`, `PetscOptionsBoolGroup()`, `PetscOptionsBoolGroupEnd()`,
1039: `PetscOptionsFList()`, `PetscOptionsEList()`
1040: M*/
1041: #define PetscOptionsBoolGroupEnd(opt, text, man, set) PetscOptionsBoolGroupEnd_Private(PetscOptionsObject, opt, text, man, set)
1043: /*MC
1044: PetscOptionsFList - Puts a list of option values that a single one may be selected from
1046: Synopsis:
1047: #include <petscoptions.h>
1048: PetscErrorCode PetscOptionsFList(const char opt[], const char ltext[], const char man[], PetscFunctionList list, const char currentvalue[], char value[], size_t len, PetscBool *set)
1050: Logically Collective on the communicator passed in `PetscOptionsBegin()`
1052: Input Parameters:
1053: + opt - option name
1054: . ltext - short string that describes the option
1055: . man - manual page with additional information on option
1056: . list - the possible choices
1057: . currentvalue - the current value; caller is responsible for setting this value correctly. Normally this is done with
1058: .vb
1059: PetscOptionsFlist(..., obj->value,value,len,&set);
1060: if (set) {
1061: .ve
1062: - len - the length of the character array value
1064: Output Parameters:
1065: + value - the value to return
1066: - set - `PETSC_TRUE` if found, else `PETSC_FALSE`
1068: Level: intermediate
1070: Notes:
1071: Must be used between a `PetscOptionsBegin()` and a `PetscOptionsEnd()`
1073: If the user does not supply the option at all `value` is NOT changed. Thus
1074: you should ALWAYS initialize `value` if you access it without first checking that the `set` flag is `PETSC_TRUE`.
1076: The `currentvalue` passed into this routine does not get transferred to the output `value` variable automatically.
1078: See `PetscOptionsEList()` for when the choices are given in a string array
1080: To get a listing of all currently specified options,
1081: see `PetscOptionsView()` or `PetscOptionsGetAll()`
1083: Developer Note:
1084: This cannot check for invalid selection because of things like `MATAIJ` that are not included in the list
1086: .seealso: `PetscOptionsGetInt()`, `PetscOptionsGetReal()`,
1087: `PetscOptionsHasName()`, `PetscOptionsGetIntArray()`, `PetscOptionsGetRealArray()`, `PetscOptionsBool()`,
1088: `PetscOptionsName()`, `PetscOptionsBegin()`, `PetscOptionsEnd()`, `PetscOptionsHeadBegin()`,
1089: `PetscOptionsStringArray()`, `PetscOptionsRealArray()`, `PetscOptionsScalar()`,
1090: `PetscOptionsBoolGroupBegin()`, `PetscOptionsBoolGroup()`, `PetscOptionsBoolGroupEnd()`,
1091: `PetscOptionsFList()`, `PetscOptionsEList()`, `PetscOptionsEnum()`
1092: M*/
1093: #define PetscOptionsFList(opt, ltext, man, list, currentvalue, value, len, set) PetscOptionsFList_Private(PetscOptionsObject, opt, ltext, man, list, currentvalue, value, len, set)
1095: /*MC
1096: PetscOptionsEList - Puts a list of option values that a single one may be selected from
1098: Synopsis:
1099: #include <petscoptions.h>
1100: PetscErrorCode PetscOptionsEList(const char opt[], const char ltext[], const char man[], const char *const *list, PetscInt ntext, const char currentvalue[], PetscInt *value, PetscBool *set)
1102: Logically Collective on the communicator passed in `PetscOptionsBegin()`
1104: Input Parameters:
1105: + opt - option name
1106: . ltext - short string that describes the option
1107: . man - manual page with additional information on option
1108: . list - the possible choices (one of these must be selected, anything else is invalid)
1109: . ntext - number of choices
1110: - currentvalue - the current value; caller is responsible for setting this value correctly. Normally this is done with
1111: .vb
1112: PetscOptionsEList(..., obj->value,&value,&set);
1113: .ve if (set) {
1115: Output Parameters:
1116: + value - the index of the value to return
1117: - set - `PETSC_TRUE` if found, else `PETSC_FALSE`
1119: Level: intermediate
1121: Notes:
1122: Must be used between a `PetscOptionsBegin()` and a `PetscOptionsEnd()`
1124: If the user does not supply the option at all `value` is NOT changed. Thus
1125: you should ALWAYS initialize `value` if you access it without first checking that the `set` flag is `PETSC_TRUE`.
1127: See `PetscOptionsFList()` for when the choices are given in a `PetscFunctionList()`
1129: .seealso: `PetscOptionsGetInt()`, `PetscOptionsGetReal()`,
1130: `PetscOptionsHasName()`, `PetscOptionsGetIntArray()`, `PetscOptionsGetRealArray()`, `PetscOptionsBool()`,
1131: `PetscOptionsName()`, `PetscOptionsBegin()`, `PetscOptionsEnd()`, `PetscOptionsHeadBegin()`,
1132: `PetscOptionsStringArray()`, `PetscOptionsRealArray()`, `PetscOptionsScalar()`,
1133: `PetscOptionsBoolGroupBegin()`, `PetscOptionsBoolGroup()`, `PetscOptionsBoolGroupEnd()`,
1134: `PetscOptionsFList()`, `PetscOptionsEnum()`
1135: M*/
1136: #define PetscOptionsEList(opt, ltext, man, list, ntext, currentvalue, value, set) PetscOptionsEList_Private(PetscOptionsObject, opt, ltext, man, list, ntext, currentvalue, value, set)
1138: /*MC
1139: PetscOptionsRealArray - Gets an array of double values for a particular
1140: option in the database. The values must be separated with commas with
1141: no intervening spaces.
1143: Synopsis:
1144: #include <petscoptions.h>
1145: PetscErrorCode PetscOptionsRealArray(const char opt[], const char text[], const char man[], PetscReal value[], PetscInt *n, PetscBool *set)
1147: Logically Collective on the communicator passed in `PetscOptionsBegin()`
1149: Input Parameters:
1150: + opt - the option one is seeking
1151: . text - short string describing option
1152: . man - manual page for option
1153: - n - maximum number of values that value has room for
1155: Output Parameters:
1156: + value - location to copy values
1157: . n - actual number of values found
1158: - set - `PETSC_TRUE` if found, else `PETSC_FALSE`
1160: Level: beginner
1162: Note:
1163: Must be used between a `PetscOptionsBegin()` and a `PetscOptionsEnd()`
1165: .seealso: `PetscOptionsGetInt()`, `PetscOptionsGetReal()`,
1166: `PetscOptionsHasName()`, `PetscOptionsGetIntArray()`, `PetscOptionsGetRealArray()`, `PetscOptionsBool()`,
1167: `PetscOptionsName()`, `PetscOptionsBegin()`, `PetscOptionsEnd()`, `PetscOptionsHeadBegin()`,
1168: `PetscOptionsStringArray()`, `PetscOptionsRealArray()`, `PetscOptionsScalar()`,
1169: `PetscOptionsBoolGroupBegin()`, `PetscOptionsBoolGroup()`, `PetscOptionsBoolGroupEnd()`,
1170: `PetscOptionsFList()`, `PetscOptionsEList()`
1171: M*/
1172: #define PetscOptionsRealArray(opt, text, man, currentvalue, value, set) PetscOptionsRealArray_Private(PetscOptionsObject, opt, text, man, currentvalue, value, set)
1174: /*MC
1175: PetscOptionsScalarArray - Gets an array of `PetscScalar` values for a particular
1176: option in the database. The values must be separated with commas with
1177: no intervening spaces.
1179: Synopsis:
1180: #include <petscoptions.h>
1181: PetscErrorCode PetscOptionsScalarArray(const char opt[], const char text[], const char man[], PetscScalar value[], PetscInt *n, PetscBool *set)
1183: Logically Collective on the communicator passed in `PetscOptionsBegin()`
1185: Input Parameters:
1186: + opt - the option one is seeking
1187: . text - short string describing option
1188: . man - manual page for option
1189: - n - maximum number of values allowed in the value array
1191: Output Parameters:
1192: + value - location to copy values
1193: . n - actual number of values found
1194: - set - `PETSC_TRUE` if found, else `PETSC_FALSE`
1196: Level: beginner
1198: Note:
1199: Must be used between a `PetscOptionsBegin()` and a `PetscOptionsEnd()`
1201: .seealso: `PetscOptionsGetInt()`, `PetscOptionsGetReal()`,
1202: `PetscOptionsHasName()`, `PetscOptionsGetIntArray()`, `PetscOptionsGetRealArray()`, `PetscOptionsBool()`,
1203: `PetscOptionsName()`, `PetscOptionsBegin()`, `PetscOptionsEnd()`, `PetscOptionsHeadBegin()`,
1204: `PetscOptionsStringArray()`, `PetscOptionsRealArray()`, `PetscOptionsScalar()`,
1205: `PetscOptionsBoolGroupBegin()`, `PetscOptionsBoolGroup()`, `PetscOptionsBoolGroupEnd()`,
1206: `PetscOptionsFList()`, `PetscOptionsEList()`
1207: M*/
1208: #define PetscOptionsScalarArray(opt, text, man, currentvalue, value, set) PetscOptionsScalarArray_Private(PetscOptionsObject, opt, text, man, currentvalue, value, set)
1210: /*MC
1211: PetscOptionsIntArray - Gets an array of integers for a particular
1212: option in the database.
1214: Synopsis:
1215: #include <petscoptions.h>
1216: PetscErrorCode PetscOptionsIntArray(const char opt[], const char text[], const char man[], PetscInt value[], PetscInt *n, PetscBool *set)
1218: Logically Collective on the communicator passed in `PetscOptionsBegin()`
1220: Input Parameters:
1221: + opt - the option one is seeking
1222: . text - short string describing option
1223: . man - manual page for option
1224: - n - maximum number of values
1226: Output Parameters:
1227: + value - location to copy values
1228: . n - actual number of values found
1229: - set - `PETSC_TRUE` if found, else `PETSC_FALSE`
1231: Level: beginner
1233: Notes:
1234: The array can be passed as
1235: + a comma separated list - 0,1,2,3,4,5,6,7
1236: . a range (start\-end+1) - 0-8
1237: . a range with given increment (start\-end+1:inc) - 0-7:2
1238: - a combination of values and ranges separated by commas - 0,1-8,8-15:2
1240: There must be no intervening spaces between the values.
1242: Must be used between a `PetscOptionsBegin()` and a `PetscOptionsEnd()`
1244: .seealso: `PetscOptionsGetInt()`, `PetscOptionsGetReal()`,
1245: `PetscOptionsHasName()`, `PetscOptionsGetIntArray()`, `PetscOptionsGetRealArray()`, `PetscOptionsBool()`,
1246: `PetscOptionsName()`, `PetscOptionsBegin()`, `PetscOptionsEnd()`, `PetscOptionsHeadBegin()`,
1247: `PetscOptionsStringArray()`, `PetscOptionsRealArray()`, `PetscOptionsScalar()`,
1248: `PetscOptionsBoolGroupBegin()`, `PetscOptionsBoolGroup()`, `PetscOptionsBoolGroupEnd()`,
1249: `PetscOptionsFList()`, `PetscOptionsEList()`
1250: M*/
1251: #define PetscOptionsIntArray(opt, text, man, currentvalue, value, set) PetscOptionsIntArray_Private(PetscOptionsObject, opt, text, man, currentvalue, value, set)
1253: /*MC
1254: PetscOptionsStringArray - Gets an array of string values for a particular
1255: option in the database. The values must be separated with commas with
1256: no intervening spaces.
1258: Synopsis:
1259: #include <petscoptions.h>
1260: PetscErrorCode PetscOptionsStringArray(const char opt[], const char text[], const char man[], char *value[], PetscInt *nmax, PetscBool *set)
1262: Logically Collective on the communicator passed in `PetscOptionsBegin()`; No Fortran Support
1264: Input Parameters:
1265: + opt - the option one is seeking
1266: . text - short string describing option
1267: . man - manual page for option
1268: - nmax - maximum number of strings
1270: Output Parameters:
1271: + value - location to copy strings
1272: . nmax - actual number of strings found
1273: - set - `PETSC_TRUE` if found, else `PETSC_FALSE`
1275: Level: beginner
1277: Notes:
1278: The user should pass in an array of pointers to char, to hold all the
1279: strings returned by this function.
1281: The user is responsible for deallocating the strings that are
1282: returned.
1284: Must be used between a `PetscOptionsBegin()` and a `PetscOptionsEnd()`
1286: .seealso: `PetscOptionsGetInt()`, `PetscOptionsGetReal()`,
1287: `PetscOptionsHasName()`, `PetscOptionsGetIntArray()`, `PetscOptionsGetRealArray()`, `PetscOptionsBool()`,
1288: `PetscOptionsName()`, `PetscOptionsBegin()`, `PetscOptionsEnd()`, `PetscOptionsHeadBegin()`,
1289: `PetscOptionsStringArray()`, `PetscOptionsRealArray()`, `PetscOptionsScalar()`,
1290: `PetscOptionsBoolGroupBegin()`, `PetscOptionsBoolGroup()`, `PetscOptionsBoolGroupEnd()`,
1291: `PetscOptionsFList()`, `PetscOptionsEList()`
1292: M*/
1293: #define PetscOptionsStringArray(opt, text, man, currentvalue, value, set) PetscOptionsStringArray_Private(PetscOptionsObject, opt, text, man, currentvalue, value, set)
1295: /*MC
1296: PetscOptionsBoolArray - Gets an array of logical values (true or false) for a particular
1297: option in the database. The values must be separated with commas with
1298: no intervening spaces.
1300: Synopsis:
1301: #include <petscoptions.h>
1302: PetscErrorCode PetscOptionsBoolArray(const char opt[], const char text[], const char man[], PetscBool value[], PetscInt *n, PetscBool *set)
1304: Logically Collective on the communicator passed in `PetscOptionsBegin()`
1306: Input Parameters:
1307: + opt - the option one is seeking
1308: . text - short string describing option
1309: . man - manual page for option
1310: - n - maximum number of values allowed in the value array
1312: Output Parameters:
1313: + value - location to copy values
1314: . n - actual number of values found
1315: - set - `PETSC_TRUE` if found, else `PETSC_FALSE`
1317: Level: beginner
1319: Notes:
1320: The user should pass in an array of `PetscBool`
1322: Must be used between a `PetscOptionsBegin()` and a `PetscOptionsEnd()`
1324: .seealso: `PetscOptionsGetInt()`, `PetscOptionsGetReal()`,
1325: `PetscOptionsHasName()`, `PetscOptionsGetIntArray()`, `PetscOptionsGetRealArray()`, `PetscOptionsBool()`,
1326: `PetscOptionsName()`, `PetscOptionsBegin()`, `PetscOptionsEnd()`, `PetscOptionsHeadBegin()`,
1327: `PetscOptionsStringArray()`, `PetscOptionsRealArray()`, `PetscOptionsScalar()`,
1328: `PetscOptionsBoolGroupBegin()`, `PetscOptionsBoolGroup()`, `PetscOptionsBoolGroupEnd()`,
1329: `PetscOptionsFList()`, `PetscOptionsEList()`
1330: M*/
1331: #define PetscOptionsBoolArray(opt, text, man, currentvalue, value, set) PetscOptionsBoolArray_Private(PetscOptionsObject, opt, text, man, currentvalue, value, set)
1333: /*MC
1334: PetscOptionsEnumArray - Gets an array of enum values for a particular
1335: option in the database.
1337: Synopsis:
1338: #include <petscoptions.h>
1339: PetscErrorCode PetscOptionsEnumArray(const char opt[], const char text[], const char man[], const char *const *list, PetscEnum value[], PetscInt *n, PetscBool *set)
1341: Logically Collective on the communicator passed in `PetscOptionsBegin()`
1343: Input Parameters:
1344: + opt - the option one is seeking
1345: . text - short string describing option
1346: . man - manual page for option
1347: . list - array containing the list of choices, followed by the enum name, followed by the enum prefix, followed by a null
1348: - n - maximum number of values allowed in the value array
1350: Output Parameters:
1351: + value - location to copy values
1352: . n - actual number of values found
1353: - set - `PETSC_TRUE` if found, else `PETSC_FALSE`
1355: Level: beginner
1357: Notes:
1358: The array must be passed as a comma separated list.
1360: There must be no intervening spaces between the values.
1362: Must be used between a `PetscOptionsBegin()` and a `PetscOptionsEnd()`
1364: .seealso: `PetscOptionsGetInt()`, `PetscOptionsGetReal()`,
1365: `PetscOptionsHasName()`, `PetscOptionsGetIntArray()`, `PetscOptionsGetRealArray()`, `PetscOptionsGetBool()`,
1366: `PetscOptionsName()`, `PetscOptionsBegin()`, `PetscOptionsEnd()`, `PetscOptionsHeadBegin()`,
1367: `PetscOptionsStringArray()`, `PetscOptionsRealArray()`, `PetscOptionsScalar()`,
1368: `PetscOptionsBoolGroupBegin()`, `PetscOptionsBoolGroup()`, `PetscOptionsBoolGroupEnd()`,
1369: `PetscOptionsFList()`, `PetscOptionsEList()`
1370: M*/
1371: #define PetscOptionsEnumArray(opt, text, man, list, value, n, set) PetscOptionsEnumArray_Private(PetscOptionsObject, opt, text, man, list, value, n, set)
1373: /*MC
1374: PetscOptionsDeprecated - mark an option as deprecated, optionally replacing it with `newname`
1376: Prints a deprecation warning, unless an option is supplied to suppress.
1378: Logically Collective
1380: Input Parameters:
1381: + oldname - the old, deprecated option
1382: . newname - the new option, or `NULL` if option is purely removed
1383: . version - a string describing the version of first deprecation, e.g. "3.9"
1384: - info - additional information string, or `NULL`.
1386: Options Database Key:
1387: . -options_suppress_deprecated_warnings - do not print deprecation warnings
1389: Level: developer
1391: Notes:
1392: If `newname` is provided then the options database will automatically check the database for `oldname`.
1394: The old call `PetscOptionsXXX`(`oldname`) should be removed from the source code when both (1) the call to `PetscOptionsDeprecated()` occurs before the
1395: new call to `PetscOptionsXXX`(`newname`) and (2) the argument handling of the new call to `PetscOptionsXXX`(`newname`) is identical to the previous call.
1396: See `PTScotch_PartGraph_Seq()` for an example of when (1) fails and `SNESTestJacobian()` where an example of (2) fails.
1398: Must be called between `PetscOptionsBegin()` (or `PetscObjectOptionsBegin()`) and `PetscOptionsEnd()`.
1399: Only the process of MPI rank zero that owns the `PetscOptionsItems` are argument (managed by `PetscOptionsBegin()` or `PetscObjectOptionsBegin()` prints the information
1400: If newname is provided, the old option is replaced. Otherwise, it remains in the options database.
1401: If an option is not replaced, the info argument should be used to advise the user on how to proceed.
1402: There is a limit on the length of the warning printed, so very long strings provided as info may be truncated.
1404: .seealso: `PetscOptionsBegin()`, `PetscOptionsEnd()`, `PetscOptionsScalar()`, `PetscOptionsBool()`, `PetscOptionsString()`, `PetscOptionsSetValue()`
1405: M*/
1406: #define PetscOptionsDeprecated(opt, text, man, info) PetscOptionsDeprecated_Private(PetscOptionsObject, opt, text, man, info)
1408: /*MC
1409: PetscOptionsDeprecatedMoObject - mark an option as deprecated in the global PetscOptionsObject, optionally replacing it with `newname`
1411: Prints a deprecation warning, unless an option is supplied to suppress.
1413: Logically Collective
1415: Input Parameters:
1416: + oldname - the old, deprecated option
1417: . newname - the new option, or `NULL` if option is purely removed
1418: . version - a string describing the version of first deprecation, e.g. "3.9"
1419: - info - additional information string, or `NULL`.
1421: Options Database Key:
1422: . -options_suppress_deprecated_warnings - do not print deprecation warnings
1424: Level: developer
1426: Notes:
1427: If `newname` is provided then the options database will automatically check the database for `oldname`.
1429: The old call `PetscOptionsXXX`(`oldname`) should be removed from the source code when both (1) the call to `PetscOptionsDeprecated()` occurs before the
1430: new call to `PetscOptionsXXX`(`newname`) and (2) the argument handling of the new call to `PetscOptionsXXX`(`newname`) is identical to the previous call.
1431: See `PTScotch_PartGraph_Seq()` for an example of when (1) fails and `SNESTestJacobian()` where an example of (2) fails.
1433: Only the process of MPI rank zero that owns the `PetscOptionsItems` are argument (managed by `PetscOptionsBegin()` or `PetscObjectOptionsBegin()` prints the information
1434: If newname is provided, the old option is replaced. Otherwise, it remains in the options database.
1435: If an option is not replaced, the info argument should be used to advise the user on how to proceed.
1436: There is a limit on the length of the warning printed, so very long strings provided as info may be truncated.
1438: .seealso: `PetscOptionsBegin()`, `PetscOptionsEnd()`, `PetscOptionsScalar()`, `PetscOptionsBool()`, `PetscOptionsString()`, `PetscOptionsSetValue()`
1439: M*/
1440: #define PetscOptionsDeprecatedNoObject(opt, text, man, info) PetscOptionsDeprecated_Private(NULL, opt, text, man, info)
1441: #endif /* PETSC_CLANG_STATIC_ANALYZER */
1443: PETSC_EXTERN PetscErrorCode PetscOptionsEnum_Private(PetscOptionItems *, const char[], const char[], const char[], const char *const *, PetscEnum, PetscEnum *, PetscBool *);
1444: PETSC_EXTERN PetscErrorCode PetscOptionsInt_Private(PetscOptionItems *, const char[], const char[], const char[], PetscInt, PetscInt *, PetscBool *, PetscInt, PetscInt);
1445: PETSC_EXTERN PetscErrorCode PetscOptionsMPIInt_Private(PetscOptionItems *, const char[], const char[], const char[], PetscMPIInt, PetscMPIInt *, PetscBool *, PetscMPIInt, PetscMPIInt);
1446: PETSC_EXTERN PetscErrorCode PetscOptionsReal_Private(PetscOptionItems *, const char[], const char[], const char[], PetscReal, PetscReal *, PetscBool *, PetscReal, PetscReal);
1447: PETSC_EXTERN PetscErrorCode PetscOptionsScalar_Private(PetscOptionItems *, const char[], const char[], const char[], PetscScalar, PetscScalar *, PetscBool *);
1448: PETSC_EXTERN PetscErrorCode PetscOptionsName_Private(PetscOptionItems *, const char[], const char[], const char[], PetscBool *);
1449: PETSC_EXTERN PetscErrorCode PetscOptionsString_Private(PetscOptionItems *, const char[], const char[], const char[], const char[], char *, size_t, PetscBool *);
1450: PETSC_EXTERN PetscErrorCode PetscOptionsBool_Private(PetscOptionItems *, const char[], const char[], const char[], PetscBool, PetscBool *, PetscBool *);
1451: PETSC_EXTERN PetscErrorCode PetscOptionsBoolGroupBegin_Private(PetscOptionItems *, const char[], const char[], const char[], PetscBool *);
1452: PETSC_EXTERN PetscErrorCode PetscOptionsBoolGroup_Private(PetscOptionItems *, const char[], const char[], const char[], PetscBool *);
1453: PETSC_EXTERN PetscErrorCode PetscOptionsBoolGroupEnd_Private(PetscOptionItems *, const char[], const char[], const char[], PetscBool *);
1454: PETSC_EXTERN PetscErrorCode PetscOptionsFList_Private(PetscOptionItems *, const char[], const char[], const char[], PetscFunctionList, const char[], char[], size_t, PetscBool *);
1455: PETSC_EXTERN PetscErrorCode PetscOptionsEList_Private(PetscOptionItems *, const char[], const char[], const char[], const char *const *, PetscInt, const char[], PetscInt *, PetscBool *);
1456: PETSC_EXTERN PetscErrorCode PetscOptionsRealArray_Private(PetscOptionItems *, const char[], const char[], const char[], PetscReal[], PetscInt *, PetscBool *);
1457: PETSC_EXTERN PetscErrorCode PetscOptionsScalarArray_Private(PetscOptionItems *, const char[], const char[], const char[], PetscScalar[], PetscInt *, PetscBool *);
1458: PETSC_EXTERN PetscErrorCode PetscOptionsIntArray_Private(PetscOptionItems *, const char[], const char[], const char[], PetscInt[], PetscInt *, PetscBool *);
1459: PETSC_EXTERN PetscErrorCode PetscOptionsStringArray_Private(PetscOptionItems *, const char[], const char[], const char[], char *[], PetscInt *, PetscBool *);
1460: PETSC_EXTERN PetscErrorCode PetscOptionsBoolArray_Private(PetscOptionItems *, const char[], const char[], const char[], PetscBool[], PetscInt *, PetscBool *);
1461: PETSC_EXTERN PetscErrorCode PetscOptionsEnumArray_Private(PetscOptionItems *, const char[], const char[], const char[], const char *const *, PetscEnum[], PetscInt *, PetscBool *);
1462: PETSC_EXTERN PetscErrorCode PetscOptionsDeprecated_Private(PetscOptionItems *, const char[], const char[], const char[], const char[]);
1464: PETSC_EXTERN PetscErrorCode PetscOptionsSAWsDestroy(void);
1466: PETSC_EXTERN PetscErrorCode PetscObjectAddOptionsHandler(PetscObject, PetscErrorCode (*)(PetscObject, PetscOptionItems *, void *), PetscErrorCode (*)(PetscObject, void *), void *);
1467: PETSC_EXTERN PetscErrorCode PetscObjectProcessOptionsHandlers(PetscObject, PetscOptionItems *);
1468: PETSC_EXTERN PetscErrorCode PetscObjectDestroyOptionsHandlers(PetscObject);
1470: PETSC_EXTERN PetscErrorCode PetscOptionsLeftError(void);