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