1*53acd3b1SBarry Smith #define PETSC_DLL 2*53acd3b1SBarry Smith /* 3*53acd3b1SBarry Smith These routines simplify the use of command line, file options, etc., 4*53acd3b1SBarry Smith and are used to manipulate the options database. 5*53acd3b1SBarry Smith 6*53acd3b1SBarry Smith This file uses regular malloc and free because it cannot know 7*53acd3b1SBarry Smith what malloc is being used until it has already processed the input. 8*53acd3b1SBarry Smith */ 9*53acd3b1SBarry Smith 10*53acd3b1SBarry Smith #include "petsc.h" /*I "petsc.h" I*/ 11*53acd3b1SBarry Smith #include "petscsys.h" 12*53acd3b1SBarry Smith #if defined(PETSC_HAVE_STDLIB_H) 13*53acd3b1SBarry Smith #include <stdlib.h> 14*53acd3b1SBarry Smith #endif 15*53acd3b1SBarry Smith 16*53acd3b1SBarry Smith /* 17*53acd3b1SBarry Smith Keep a linked list of options that have been posted and we are waiting for 18*53acd3b1SBarry Smith user selection 19*53acd3b1SBarry Smith 20*53acd3b1SBarry Smith Eventually we'll attach this beast to a MPI_Comm 21*53acd3b1SBarry Smith */ 22*53acd3b1SBarry Smith typedef enum {OPTION_INT,OPTION_LOGICAL,OPTION_REAL,OPTION_LIST,OPTION_STRING,OPTION_REAL_ARRAY,OPTION_HEAD} OptionType; 23*53acd3b1SBarry Smith typedef struct _p_Options* PetscOptions; 24*53acd3b1SBarry Smith struct _p_Options { 25*53acd3b1SBarry Smith char *option; 26*53acd3b1SBarry Smith char *text; 27*53acd3b1SBarry Smith void *data; 28*53acd3b1SBarry Smith void *edata; 29*53acd3b1SBarry Smith int arraylength; 30*53acd3b1SBarry Smith PetscTruth set; 31*53acd3b1SBarry Smith OptionType type; 32*53acd3b1SBarry Smith PetscOptions next; 33*53acd3b1SBarry Smith char *man; 34*53acd3b1SBarry Smith }; 35*53acd3b1SBarry Smith 36*53acd3b1SBarry Smith static struct { 37*53acd3b1SBarry Smith PetscOptions next; 38*53acd3b1SBarry Smith char *prefix,*mprefix; 39*53acd3b1SBarry Smith char *title; 40*53acd3b1SBarry Smith MPI_Comm comm; 41*53acd3b1SBarry Smith PetscTruth printhelp; 42*53acd3b1SBarry Smith } PetscOptionsObject; 43*53acd3b1SBarry Smith PetscInt PetscOptionsPublishCount = 0; 44*53acd3b1SBarry Smith 45*53acd3b1SBarry Smith #undef __FUNCT__ 46*53acd3b1SBarry Smith #define __FUNCT__ "PetscOptionsBegin_Private" 47*53acd3b1SBarry Smith /* 48*53acd3b1SBarry Smith Handles setting up the data structure in a call to PetscOptionsBegin() 49*53acd3b1SBarry Smith */ 50*53acd3b1SBarry Smith PetscErrorCode PetscOptionsBegin_Private(MPI_Comm comm,const char prefix[],const char title[],const char mansec[]) 51*53acd3b1SBarry Smith { 52*53acd3b1SBarry Smith PetscErrorCode ierr; 53*53acd3b1SBarry Smith 54*53acd3b1SBarry Smith PetscFunctionBegin; 55*53acd3b1SBarry Smith PetscOptionsObject.next = 0; 56*53acd3b1SBarry Smith PetscOptionsObject.comm = comm; 57*53acd3b1SBarry Smith ierr = PetscStrallocpy(prefix,&PetscOptionsObject.prefix);CHKERRQ(ierr); 58*53acd3b1SBarry Smith ierr = PetscStrallocpy(title,&PetscOptionsObject.title);CHKERRQ(ierr); 59*53acd3b1SBarry Smith 60*53acd3b1SBarry Smith ierr = PetscOptionsHasName(PETSC_NULL,"-help",&PetscOptionsObject.printhelp);CHKERRQ(ierr); 61*53acd3b1SBarry Smith if (PetscOptionsObject.printhelp && PetscOptionsPublishCount == 1) { 62*53acd3b1SBarry Smith ierr = (*PetscHelpPrintf)(comm,"%s -------------------------------------------------\n",title);CHKERRQ(ierr); 63*53acd3b1SBarry Smith } 64*53acd3b1SBarry Smith PetscFunctionReturn(0); 65*53acd3b1SBarry Smith } 66*53acd3b1SBarry Smith 67*53acd3b1SBarry Smith /* 68*53acd3b1SBarry Smith Handles adding another option to the list of options within this particular PetscOptionsBegin() PetscOptionsEnd() 69*53acd3b1SBarry Smith */ 70*53acd3b1SBarry Smith #undef __FUNCT__ 71*53acd3b1SBarry Smith #define __FUNCT__ "PetscOptionsCreate_Private" 72*53acd3b1SBarry Smith static int PetscOptionsCreate_Private(const char opt[],const char text[],const char man[],PetscOptions *amsopt) 73*53acd3b1SBarry Smith { 74*53acd3b1SBarry Smith int ierr; 75*53acd3b1SBarry Smith PetscOptions next; 76*53acd3b1SBarry Smith 77*53acd3b1SBarry Smith PetscFunctionBegin; 78*53acd3b1SBarry Smith ierr = PetscNew(struct _p_Options,amsopt);CHKERRQ(ierr); 79*53acd3b1SBarry Smith (*amsopt)->next = 0; 80*53acd3b1SBarry Smith (*amsopt)->set = PETSC_FALSE; 81*53acd3b1SBarry Smith (*amsopt)->data = 0; 82*53acd3b1SBarry Smith (*amsopt)->edata = 0; 83*53acd3b1SBarry Smith ierr = PetscStrallocpy(text,&(*amsopt)->text);CHKERRQ(ierr); 84*53acd3b1SBarry Smith ierr = PetscStrallocpy(opt,&(*amsopt)->option);CHKERRQ(ierr); 85*53acd3b1SBarry Smith ierr = PetscStrallocpy(opt,&(*amsopt)->man);CHKERRQ(ierr); 86*53acd3b1SBarry Smith 87*53acd3b1SBarry Smith if (!PetscOptionsObject.next) { 88*53acd3b1SBarry Smith PetscOptionsObject.next = *amsopt; 89*53acd3b1SBarry Smith } else { 90*53acd3b1SBarry Smith next = PetscOptionsObject.next; 91*53acd3b1SBarry Smith while (next->next) next = next->next; 92*53acd3b1SBarry Smith next->next = *amsopt; 93*53acd3b1SBarry Smith } 94*53acd3b1SBarry Smith PetscFunctionReturn(0); 95*53acd3b1SBarry Smith } 96*53acd3b1SBarry Smith 97*53acd3b1SBarry Smith #undef __FUNCT__ 98*53acd3b1SBarry Smith #define __FUNCT__ "PetscOptionsEnd_Private" 99*53acd3b1SBarry Smith PetscErrorCode PetscOptionsEnd_Private(void) 100*53acd3b1SBarry Smith { 101*53acd3b1SBarry Smith PetscErrorCode ierr; 102*53acd3b1SBarry Smith 103*53acd3b1SBarry Smith PetscFunctionBegin; 104*53acd3b1SBarry Smith ierr = PetscStrfree(PetscOptionsObject.title);CHKERRQ(ierr); PetscOptionsObject.title = 0; 105*53acd3b1SBarry Smith ierr = PetscStrfree(PetscOptionsObject.prefix);CHKERRQ(ierr); PetscOptionsObject.prefix = 0; 106*53acd3b1SBarry Smith PetscFunctionReturn(0); 107*53acd3b1SBarry Smith } 108*53acd3b1SBarry Smith 109*53acd3b1SBarry Smith #undef __FUNCT__ 110*53acd3b1SBarry Smith #define __FUNCT__ "PetscOptionsEnum" 111*53acd3b1SBarry Smith /*@C 112*53acd3b1SBarry Smith PetscOptionsEnum - Gets the enum value for a particular option in the database. 113*53acd3b1SBarry Smith 114*53acd3b1SBarry Smith Collective on the communicator passed in PetscOptionsBegin() 115*53acd3b1SBarry Smith 116*53acd3b1SBarry Smith Input Parameters: 117*53acd3b1SBarry Smith + opt - option name 118*53acd3b1SBarry Smith . text - short string that describes the option 119*53acd3b1SBarry Smith . man - manual page with additional information on option 120*53acd3b1SBarry Smith . list - array containing the list of choices, followed by the enum name, followed by the enum prefix, followed by a null 121*53acd3b1SBarry Smith - defaultv - the default (current) value 122*53acd3b1SBarry Smith 123*53acd3b1SBarry Smith Output Parameter: 124*53acd3b1SBarry Smith + value - the value to return 125*53acd3b1SBarry Smith - flg - PETSC_TRUE if found, else PETSC_FALSE 126*53acd3b1SBarry Smith 127*53acd3b1SBarry Smith Level: beginner 128*53acd3b1SBarry Smith 129*53acd3b1SBarry Smith Concepts: options database 130*53acd3b1SBarry Smith 131*53acd3b1SBarry Smith Notes: Must be between a PetscOptionsBegin() and a PetscOptionsEnd() 132*53acd3b1SBarry Smith 133*53acd3b1SBarry Smith list is usually something like PCASMTypes or some other predefined list of enum names 134*53acd3b1SBarry Smith 135*53acd3b1SBarry Smith .seealso: PetscOptionsGetReal(), PetscOptionsHasName(), PetscOptionsGetString(), PetscOptionsGetInt(), 136*53acd3b1SBarry Smith PetscOptionsGetIntArray(), PetscOptionsGetRealArray(), PetscOptionsTruth() 137*53acd3b1SBarry Smith PetscOptionsInt(), PetscOptionsString(), PetscOptionsReal(), PetscOptionsTruth(), 138*53acd3b1SBarry Smith PetscOptionsName(), PetscOptionsBegin(), PetscOptionsEnd(), PetscOptionsHead(), 139*53acd3b1SBarry Smith PetscOptionsStringArray(),PetscOptionsRealArray(), PetscOptionsScalar(), 140*53acd3b1SBarry Smith PetscOptionsTruthGroupBegin(), PetscOptionsTruthGroup(), PetscOptionsTruthGroupEnd(), 141*53acd3b1SBarry Smith PetscOptionsList(), PetscOptionsEList() 142*53acd3b1SBarry Smith @*/ 143*53acd3b1SBarry Smith PetscErrorCode PETSC_DLLEXPORT PetscOptionsEnum(const char opt[],const char text[],const char man[],const char **list,PetscEnum defaultv,PetscEnum *value,PetscTruth *set) 144*53acd3b1SBarry Smith { 145*53acd3b1SBarry Smith PetscErrorCode ierr; 146*53acd3b1SBarry Smith PetscInt ntext = 0; 147*53acd3b1SBarry Smith 148*53acd3b1SBarry Smith PetscFunctionBegin; 149*53acd3b1SBarry Smith while (list[ntext++]) { 150*53acd3b1SBarry Smith if (ntext > 50) SETERRQ(PETSC_ERR_ARG_WRONG,"List argument appears to be wrong or have more than 50 entries"); 151*53acd3b1SBarry Smith } 152*53acd3b1SBarry Smith if (ntext < 3) SETERRQ(PETSC_ERR_ARG_WRONG,"List argument must have at least two entries: typename and type prefix"); 153*53acd3b1SBarry Smith ntext -= 3; 154*53acd3b1SBarry Smith ierr = PetscOptionsEList(opt,text,man,list,ntext,list[defaultv],(PetscInt*)value,set);CHKERRQ(ierr); 155*53acd3b1SBarry Smith PetscFunctionReturn(0); 156*53acd3b1SBarry Smith } 157*53acd3b1SBarry Smith 158*53acd3b1SBarry Smith /* -------------------------------------------------------------------------------------------------------------*/ 159*53acd3b1SBarry Smith #undef __FUNCT__ 160*53acd3b1SBarry Smith #define __FUNCT__ "PetscOptionsInt" 161*53acd3b1SBarry Smith /*@C 162*53acd3b1SBarry Smith PetscOptionsInt - Gets the integer value for a particular option in the database. 163*53acd3b1SBarry Smith 164*53acd3b1SBarry Smith Collective on the communicator passed in PetscOptionsBegin() 165*53acd3b1SBarry Smith 166*53acd3b1SBarry Smith Input Parameters: 167*53acd3b1SBarry Smith + opt - option name 168*53acd3b1SBarry Smith . text - short string that describes the option 169*53acd3b1SBarry Smith . man - manual page with additional information on option 170*53acd3b1SBarry Smith - defaultv - the default (current) value 171*53acd3b1SBarry Smith 172*53acd3b1SBarry Smith Output Parameter: 173*53acd3b1SBarry Smith + value - the integer value to return 174*53acd3b1SBarry Smith - flg - PETSC_TRUE if found, else PETSC_FALSE 175*53acd3b1SBarry Smith 176*53acd3b1SBarry Smith Level: beginner 177*53acd3b1SBarry Smith 178*53acd3b1SBarry Smith Concepts: options database^has int 179*53acd3b1SBarry Smith 180*53acd3b1SBarry Smith Notes: Must be between a PetscOptionsBegin() and a PetscOptionsEnd() 181*53acd3b1SBarry Smith 182*53acd3b1SBarry Smith .seealso: PetscOptionsGetReal(), PetscOptionsHasName(), PetscOptionsGetString(), PetscOptionsGetInt(), 183*53acd3b1SBarry Smith PetscOptionsGetIntArray(), PetscOptionsGetRealArray(), PetscOptionsTruth() 184*53acd3b1SBarry Smith PetscOptionsInt(), PetscOptionsString(), PetscOptionsReal(), PetscOptionsTruth(), 185*53acd3b1SBarry Smith PetscOptionsName(), PetscOptionsBegin(), PetscOptionsEnd(), PetscOptionsHead(), 186*53acd3b1SBarry Smith PetscOptionsStringArray(),PetscOptionsRealArray(), PetscOptionsScalar(), 187*53acd3b1SBarry Smith PetscOptionsTruthGroupBegin(), PetscOptionsTruthGroup(), PetscOptionsTruthGroupEnd(), 188*53acd3b1SBarry Smith PetscOptionsList(), PetscOptionsEList() 189*53acd3b1SBarry Smith @*/ 190*53acd3b1SBarry Smith PetscErrorCode PETSC_DLLEXPORT PetscOptionsInt(const char opt[],const char text[],const char man[],PetscInt defaultv,PetscInt *value,PetscTruth *set) 191*53acd3b1SBarry Smith { 192*53acd3b1SBarry Smith PetscErrorCode ierr; 193*53acd3b1SBarry Smith 194*53acd3b1SBarry Smith PetscFunctionBegin; 195*53acd3b1SBarry Smith ierr = PetscOptionsGetInt(PetscOptionsObject.prefix,opt,value,set);CHKERRQ(ierr); 196*53acd3b1SBarry Smith if (PetscOptionsObject.printhelp && PetscOptionsPublishCount == 1) { 197*53acd3b1SBarry Smith ierr = (*PetscHelpPrintf)(PetscOptionsObject.comm," -%s%s <%d>: %s (%s)\n",PetscOptionsObject.prefix?PetscOptionsObject.prefix:"",opt+1,defaultv,text,man);CHKERRQ(ierr); 198*53acd3b1SBarry Smith } 199*53acd3b1SBarry Smith PetscFunctionReturn(0); 200*53acd3b1SBarry Smith } 201*53acd3b1SBarry Smith 202*53acd3b1SBarry Smith #undef __FUNCT__ 203*53acd3b1SBarry Smith #define __FUNCT__ "PetscOptionsString" 204*53acd3b1SBarry Smith /*@C 205*53acd3b1SBarry Smith PetscOptionsString - Gets the string value for a particular option in the database. 206*53acd3b1SBarry Smith 207*53acd3b1SBarry Smith Collective on the communicator passed in PetscOptionsBegin() 208*53acd3b1SBarry Smith 209*53acd3b1SBarry Smith Input Parameters: 210*53acd3b1SBarry Smith + opt - option name 211*53acd3b1SBarry Smith . text - short string that describes the option 212*53acd3b1SBarry Smith . man - manual page with additional information on option 213*53acd3b1SBarry Smith - defaultv - the default (current) value 214*53acd3b1SBarry Smith 215*53acd3b1SBarry Smith Output Parameter: 216*53acd3b1SBarry Smith + value - the value to return 217*53acd3b1SBarry Smith - flg - PETSC_TRUE if found, else PETSC_FALSE 218*53acd3b1SBarry Smith 219*53acd3b1SBarry Smith Level: beginner 220*53acd3b1SBarry Smith 221*53acd3b1SBarry Smith Concepts: options database^has int 222*53acd3b1SBarry Smith 223*53acd3b1SBarry Smith Notes: Must be between a PetscOptionsBegin() and a PetscOptionsEnd() 224*53acd3b1SBarry Smith 225*53acd3b1SBarry Smith .seealso: PetscOptionsGetReal(), PetscOptionsHasName(), PetscOptionsGetString(), PetscOptionsGetInt(), 226*53acd3b1SBarry Smith PetscOptionsGetIntArray(), PetscOptionsGetRealArray(), PetscOptionsTruth() 227*53acd3b1SBarry Smith PetscOptionsInt(), PetscOptionsString(), PetscOptionsReal(), PetscOptionsTruth(), 228*53acd3b1SBarry Smith PetscOptionsName(), PetscOptionsBegin(), PetscOptionsEnd(), PetscOptionsHead(), 229*53acd3b1SBarry Smith PetscOptionsStringArray(),PetscOptionsRealArray(), PetscOptionsScalar(), 230*53acd3b1SBarry Smith PetscOptionsTruthGroupBegin(), PetscOptionsTruthGroup(), PetscOptionsTruthGroupEnd(), 231*53acd3b1SBarry Smith PetscOptionsList(), PetscOptionsEList() 232*53acd3b1SBarry Smith @*/ 233*53acd3b1SBarry Smith PetscErrorCode PETSC_DLLEXPORT PetscOptionsString(const char opt[],const char text[],const char man[],const char defaultv[],char value[],size_t len,PetscTruth *set) 234*53acd3b1SBarry Smith { 235*53acd3b1SBarry Smith PetscErrorCode ierr; 236*53acd3b1SBarry Smith 237*53acd3b1SBarry Smith PetscFunctionBegin; 238*53acd3b1SBarry Smith ierr = PetscOptionsGetString(PetscOptionsObject.prefix,opt,value,len,set);CHKERRQ(ierr); 239*53acd3b1SBarry Smith if (PetscOptionsObject.printhelp && PetscOptionsPublishCount == 1) { 240*53acd3b1SBarry Smith ierr = (*PetscHelpPrintf)(PetscOptionsObject.comm," -%s%s <%s>: %s (%s)\n",PetscOptionsObject.prefix?PetscOptionsObject.prefix:"",opt+1,defaultv,text,man);CHKERRQ(ierr); 241*53acd3b1SBarry Smith } 242*53acd3b1SBarry Smith PetscFunctionReturn(0); 243*53acd3b1SBarry Smith } 244*53acd3b1SBarry Smith 245*53acd3b1SBarry Smith /* 246*53acd3b1SBarry Smith Publishes an AMS double field (with the default value in it) and with a name 247*53acd3b1SBarry Smith given by the text string 248*53acd3b1SBarry Smith */ 249*53acd3b1SBarry Smith #undef __FUNCT__ 250*53acd3b1SBarry Smith #define __FUNCT__ "PetscOptionsReal" 251*53acd3b1SBarry Smith /*@C 252*53acd3b1SBarry Smith PetscOptionsReal - Gets the PetscReal value for a particular option in the database. 253*53acd3b1SBarry Smith 254*53acd3b1SBarry Smith Collective on the communicator passed in PetscOptionsBegin() 255*53acd3b1SBarry Smith 256*53acd3b1SBarry Smith Input Parameters: 257*53acd3b1SBarry Smith + opt - option name 258*53acd3b1SBarry Smith . text - short string that describes the option 259*53acd3b1SBarry Smith . man - manual page with additional information on option 260*53acd3b1SBarry Smith - defaultv - the default (current) value 261*53acd3b1SBarry Smith 262*53acd3b1SBarry Smith Output Parameter: 263*53acd3b1SBarry Smith + value - the value to return 264*53acd3b1SBarry Smith - flg - PETSC_TRUE if found, else PETSC_FALSE 265*53acd3b1SBarry Smith 266*53acd3b1SBarry Smith Level: beginner 267*53acd3b1SBarry Smith 268*53acd3b1SBarry Smith Concepts: options database^has int 269*53acd3b1SBarry Smith 270*53acd3b1SBarry Smith Notes: Must be between a PetscOptionsBegin() and a PetscOptionsEnd() 271*53acd3b1SBarry Smith 272*53acd3b1SBarry Smith .seealso: PetscOptionsGetReal(), PetscOptionsHasName(), PetscOptionsGetString(), PetscOptionsGetInt(), 273*53acd3b1SBarry Smith PetscOptionsGetIntArray(), PetscOptionsGetRealArray(), PetscOptionsTruth() 274*53acd3b1SBarry Smith PetscOptionsInt(), PetscOptionsString(), PetscOptionsReal(), PetscOptionsTruth(), 275*53acd3b1SBarry Smith PetscOptionsName(), PetscOptionsBegin(), PetscOptionsEnd(), PetscOptionsHead(), 276*53acd3b1SBarry Smith PetscOptionsStringArray(),PetscOptionsRealArray(), PetscOptionsScalar(), 277*53acd3b1SBarry Smith PetscOptionsTruthGroupBegin(), PetscOptionsTruthGroup(), PetscOptionsTruthGroupEnd(), 278*53acd3b1SBarry Smith PetscOptionsList(), PetscOptionsEList() 279*53acd3b1SBarry Smith @*/ 280*53acd3b1SBarry Smith PetscErrorCode PETSC_DLLEXPORT PetscOptionsReal(const char opt[],const char text[],const char man[],PetscReal defaultv,PetscReal *value,PetscTruth *set) 281*53acd3b1SBarry Smith { 282*53acd3b1SBarry Smith PetscErrorCode ierr; 283*53acd3b1SBarry Smith 284*53acd3b1SBarry Smith PetscFunctionBegin; 285*53acd3b1SBarry Smith ierr = PetscOptionsGetReal(PetscOptionsObject.prefix,opt,value,set);CHKERRQ(ierr); 286*53acd3b1SBarry Smith if (PetscOptionsObject.printhelp && PetscOptionsPublishCount == 1) { 287*53acd3b1SBarry Smith ierr = (*PetscHelpPrintf)(PetscOptionsObject.comm," -%s%s <%g>: %s (%s)\n",PetscOptionsObject.prefix?PetscOptionsObject.prefix:"",opt+1,defaultv,text,man);CHKERRQ(ierr); 288*53acd3b1SBarry Smith } 289*53acd3b1SBarry Smith PetscFunctionReturn(0); 290*53acd3b1SBarry Smith } 291*53acd3b1SBarry Smith 292*53acd3b1SBarry Smith #undef __FUNCT__ 293*53acd3b1SBarry Smith #define __FUNCT__ "PetscOptionsScalar" 294*53acd3b1SBarry Smith /*@C 295*53acd3b1SBarry Smith PetscOptionsScalar - Gets the scalar value for a particular option in the database. 296*53acd3b1SBarry Smith 297*53acd3b1SBarry Smith Collective on the communicator passed in PetscOptionsBegin() 298*53acd3b1SBarry Smith 299*53acd3b1SBarry Smith Input Parameters: 300*53acd3b1SBarry Smith + opt - option name 301*53acd3b1SBarry Smith . text - short string that describes the option 302*53acd3b1SBarry Smith . man - manual page with additional information on option 303*53acd3b1SBarry Smith - defaultv - the default (current) value 304*53acd3b1SBarry Smith 305*53acd3b1SBarry Smith Output Parameter: 306*53acd3b1SBarry Smith + value - the value to return 307*53acd3b1SBarry Smith - flg - PETSC_TRUE if found, else PETSC_FALSE 308*53acd3b1SBarry Smith 309*53acd3b1SBarry Smith Level: beginner 310*53acd3b1SBarry Smith 311*53acd3b1SBarry Smith Concepts: options database^has int 312*53acd3b1SBarry Smith 313*53acd3b1SBarry Smith Notes: Must be between a PetscOptionsBegin() and a PetscOptionsEnd() 314*53acd3b1SBarry Smith 315*53acd3b1SBarry Smith .seealso: PetscOptionsGetReal(), PetscOptionsHasName(), PetscOptionsGetString(), PetscOptionsGetInt(), 316*53acd3b1SBarry Smith PetscOptionsGetIntArray(), PetscOptionsGetRealArray(), PetscOptionsTruth() 317*53acd3b1SBarry Smith PetscOptionsInt(), PetscOptionsString(), PetscOptionsReal(), PetscOptionsTruth(), 318*53acd3b1SBarry Smith PetscOptionsName(), PetscOptionsBegin(), PetscOptionsEnd(), PetscOptionsHead(), 319*53acd3b1SBarry Smith PetscOptionsStringArray(),PetscOptionsRealArray(), PetscOptionsScalar(), 320*53acd3b1SBarry Smith PetscOptionsTruthGroupBegin(), PetscOptionsTruthGroup(), PetscOptionsTruthGroupEnd(), 321*53acd3b1SBarry Smith PetscOptionsList(), PetscOptionsEList() 322*53acd3b1SBarry Smith @*/ 323*53acd3b1SBarry Smith PetscErrorCode PETSC_DLLEXPORT PetscOptionsScalar(const char opt[],const char text[],const char man[],PetscScalar defaultv,PetscScalar *value,PetscTruth *set) 324*53acd3b1SBarry Smith { 325*53acd3b1SBarry Smith PetscErrorCode ierr; 326*53acd3b1SBarry Smith 327*53acd3b1SBarry Smith PetscFunctionBegin; 328*53acd3b1SBarry Smith #if !defined(PETSC_USE_COMPLEX) 329*53acd3b1SBarry Smith ierr = PetscOptionsReal(opt,text,man,defaultv,value,set);CHKERRQ(ierr); 330*53acd3b1SBarry Smith #else 331*53acd3b1SBarry Smith ierr = PetscOptionsGetScalar(PetscOptionsObject.prefix,opt,value,set);CHKERRQ(ierr); 332*53acd3b1SBarry Smith #endif 333*53acd3b1SBarry Smith PetscFunctionReturn(0); 334*53acd3b1SBarry Smith } 335*53acd3b1SBarry Smith 336*53acd3b1SBarry Smith /* 337*53acd3b1SBarry Smith Publishes an AMS logical field (with the default value in it) and with a name 338*53acd3b1SBarry Smith given by the text string 339*53acd3b1SBarry Smith */ 340*53acd3b1SBarry Smith #undef __FUNCT__ 341*53acd3b1SBarry Smith #define __FUNCT__ "PetscOptionsName" 342*53acd3b1SBarry Smith /*@C 343*53acd3b1SBarry Smith PetscOptionsName - Determines if a particular option is in the database 344*53acd3b1SBarry Smith 345*53acd3b1SBarry Smith Collective on the communicator passed in PetscOptionsBegin() 346*53acd3b1SBarry Smith 347*53acd3b1SBarry Smith Input Parameters: 348*53acd3b1SBarry Smith + opt - option name 349*53acd3b1SBarry Smith . text - short string that describes the option 350*53acd3b1SBarry Smith - man - manual page with additional information on option 351*53acd3b1SBarry Smith 352*53acd3b1SBarry Smith Output Parameter: 353*53acd3b1SBarry Smith . flg - PETSC_TRUE if found, else PETSC_FALSE 354*53acd3b1SBarry Smith 355*53acd3b1SBarry Smith Level: beginner 356*53acd3b1SBarry Smith 357*53acd3b1SBarry Smith Concepts: options database^has int 358*53acd3b1SBarry Smith 359*53acd3b1SBarry Smith Notes: Must be between a PetscOptionsBegin() and a PetscOptionsEnd() 360*53acd3b1SBarry Smith 361*53acd3b1SBarry Smith .seealso: PetscOptionsGetReal(), PetscOptionsHasName(), PetscOptionsGetString(), PetscOptionsGetInt(), 362*53acd3b1SBarry Smith PetscOptionsGetIntArray(), PetscOptionsGetRealArray(), PetscOptionsTruth() 363*53acd3b1SBarry Smith PetscOptionsInt(), PetscOptionsString(), PetscOptionsReal(), PetscOptionsTruth(), 364*53acd3b1SBarry Smith PetscOptionsName(), PetscOptionsBegin(), PetscOptionsEnd(), PetscOptionsHead(), 365*53acd3b1SBarry Smith PetscOptionsStringArray(),PetscOptionsRealArray(), PetscOptionsScalar(), 366*53acd3b1SBarry Smith PetscOptionsTruthGroupBegin(), PetscOptionsTruthGroup(), PetscOptionsTruthGroupEnd(), 367*53acd3b1SBarry Smith PetscOptionsList(), PetscOptionsEList() 368*53acd3b1SBarry Smith @*/ 369*53acd3b1SBarry Smith PetscErrorCode PETSC_DLLEXPORT PetscOptionsName(const char opt[],const char text[],const char man[],PetscTruth *flg) 370*53acd3b1SBarry Smith { 371*53acd3b1SBarry Smith PetscErrorCode ierr; 372*53acd3b1SBarry Smith 373*53acd3b1SBarry Smith PetscFunctionBegin; 374*53acd3b1SBarry Smith ierr = PetscOptionsHasName(PetscOptionsObject.prefix,opt,flg);CHKERRQ(ierr); 375*53acd3b1SBarry Smith if (PetscOptionsObject.printhelp && PetscOptionsPublishCount == 1) { 376*53acd3b1SBarry Smith ierr = (*PetscHelpPrintf)(PetscOptionsObject.comm," -%s%s: %s (%s)\n",PetscOptionsObject.prefix?PetscOptionsObject.prefix:"",opt+1,text,man);CHKERRQ(ierr); 377*53acd3b1SBarry Smith } 378*53acd3b1SBarry Smith PetscFunctionReturn(0); 379*53acd3b1SBarry Smith } 380*53acd3b1SBarry Smith 381*53acd3b1SBarry Smith #undef __FUNCT__ 382*53acd3b1SBarry Smith #define __FUNCT__ "PetscOptionsList" 383*53acd3b1SBarry Smith /*@C 384*53acd3b1SBarry Smith PetscOptionsList - Puts a list of option values that a single one may be selected from 385*53acd3b1SBarry Smith 386*53acd3b1SBarry Smith Collective on the communicator passed in PetscOptionsBegin() 387*53acd3b1SBarry Smith 388*53acd3b1SBarry Smith Input Parameters: 389*53acd3b1SBarry Smith + opt - option name 390*53acd3b1SBarry Smith . text - short string that describes the option 391*53acd3b1SBarry Smith . man - manual page with additional information on option 392*53acd3b1SBarry Smith . list - the possible choices 393*53acd3b1SBarry Smith - defaultv - the default (current) value 394*53acd3b1SBarry Smith 395*53acd3b1SBarry Smith Output Parameter: 396*53acd3b1SBarry Smith + value - the value to return 397*53acd3b1SBarry Smith - set - PETSC_TRUE if found, else PETSC_FALSE 398*53acd3b1SBarry Smith 399*53acd3b1SBarry Smith Level: intermediate 400*53acd3b1SBarry Smith 401*53acd3b1SBarry Smith Notes: Must be between a PetscOptionsBegin() and a PetscOptionsEnd() 402*53acd3b1SBarry Smith 403*53acd3b1SBarry Smith See PetscOptionsEList() for when the choices are given in a string array 404*53acd3b1SBarry Smith 405*53acd3b1SBarry Smith To get a listing of all currently specified options, 406*53acd3b1SBarry Smith see PetscOptionsPrint() or PetscOptionsGetAll() 407*53acd3b1SBarry Smith 408*53acd3b1SBarry Smith Concepts: options database^list 409*53acd3b1SBarry Smith 410*53acd3b1SBarry Smith .seealso: PetscOptionsGetInt(), PetscOptionsGetReal(), 411*53acd3b1SBarry Smith PetscOptionsHasName(), PetscOptionsGetIntArray(), PetscOptionsGetRealArray(), PetscOptionsTruth(), 412*53acd3b1SBarry Smith PetscOptionsName(), PetscOptionsBegin(), PetscOptionsEnd(), PetscOptionsHead(), 413*53acd3b1SBarry Smith PetscOptionsStringArray(),PetscOptionsRealArray(), PetscOptionsScalar(), 414*53acd3b1SBarry Smith PetscOptionsTruthGroupBegin(), PetscOptionsTruthGroup(), PetscOptionsTruthGroupEnd(), 415*53acd3b1SBarry Smith PetscOptionsList(), PetscOptionsEList() 416*53acd3b1SBarry Smith @*/ 417*53acd3b1SBarry Smith PetscErrorCode PETSC_DLLEXPORT PetscOptionsList(const char opt[],const char ltext[],const char man[],PetscFList list,const char defaultv[],char value[],PetscInt len,PetscTruth *set) 418*53acd3b1SBarry Smith { 419*53acd3b1SBarry Smith PetscErrorCode ierr; 420*53acd3b1SBarry Smith 421*53acd3b1SBarry Smith PetscFunctionBegin; 422*53acd3b1SBarry Smith ierr = PetscOptionsGetString(PetscOptionsObject.prefix,opt,value,len,set);CHKERRQ(ierr); 423*53acd3b1SBarry Smith if (PetscOptionsObject.printhelp && PetscOptionsPublishCount == 1) { 424*53acd3b1SBarry Smith ierr = PetscFListPrintTypes(PetscOptionsObject.comm,stdout,PetscOptionsObject.prefix,opt,ltext,man,list);CHKERRQ(ierr);CHKERRQ(ierr); 425*53acd3b1SBarry Smith } 426*53acd3b1SBarry Smith PetscFunctionReturn(0); 427*53acd3b1SBarry Smith } 428*53acd3b1SBarry Smith 429*53acd3b1SBarry Smith #undef __FUNCT__ 430*53acd3b1SBarry Smith #define __FUNCT__ "PetscOptionsEList" 431*53acd3b1SBarry Smith /*@C 432*53acd3b1SBarry Smith PetscOptionsEList - Puts a list of option values that a single one may be selected from 433*53acd3b1SBarry Smith 434*53acd3b1SBarry Smith Collective on the communicator passed in PetscOptionsBegin() 435*53acd3b1SBarry Smith 436*53acd3b1SBarry Smith Input Parameters: 437*53acd3b1SBarry Smith + opt - option name 438*53acd3b1SBarry Smith . ltext - short string that describes the option 439*53acd3b1SBarry Smith . man - manual page with additional information on option 440*53acd3b1SBarry Smith . list - the possible choices 441*53acd3b1SBarry Smith . ntext - number of choices 442*53acd3b1SBarry Smith - defaultv - the default (current) value 443*53acd3b1SBarry Smith 444*53acd3b1SBarry Smith Output Parameter: 445*53acd3b1SBarry Smith + value - the index of the value to return 446*53acd3b1SBarry Smith - set - PETSC_TRUE if found, else PETSC_FALSE 447*53acd3b1SBarry Smith 448*53acd3b1SBarry Smith Level: intermediate 449*53acd3b1SBarry Smith 450*53acd3b1SBarry Smith Notes: Must be between a PetscOptionsBegin() and a PetscOptionsEnd() 451*53acd3b1SBarry Smith 452*53acd3b1SBarry Smith See PetscOptionsList() for when the choices are given in a PetscFList() 453*53acd3b1SBarry Smith 454*53acd3b1SBarry Smith Concepts: options database^list 455*53acd3b1SBarry Smith 456*53acd3b1SBarry Smith .seealso: PetscOptionsGetInt(), PetscOptionsGetReal(), 457*53acd3b1SBarry Smith PetscOptionsHasName(), PetscOptionsGetIntArray(), PetscOptionsGetRealArray(), PetscOptionsTruth(), 458*53acd3b1SBarry Smith PetscOptionsName(), PetscOptionsBegin(), PetscOptionsEnd(), PetscOptionsHead(), 459*53acd3b1SBarry Smith PetscOptionsStringArray(),PetscOptionsRealArray(), PetscOptionsScalar(), 460*53acd3b1SBarry Smith PetscOptionsTruthGroupBegin(), PetscOptionsTruthGroup(), PetscOptionsTruthGroupEnd(), 461*53acd3b1SBarry Smith PetscOptionsList(), PetscOptionsEList() 462*53acd3b1SBarry Smith @*/ 463*53acd3b1SBarry Smith PetscErrorCode PETSC_DLLEXPORT PetscOptionsEList(const char opt[],const char ltext[],const char man[],const char **list,PetscInt ntext,const char defaultv[],PetscInt *value,PetscTruth *set) 464*53acd3b1SBarry Smith { 465*53acd3b1SBarry Smith PetscErrorCode ierr; 466*53acd3b1SBarry Smith PetscInt i; 467*53acd3b1SBarry Smith 468*53acd3b1SBarry Smith PetscFunctionBegin; 469*53acd3b1SBarry Smith ierr = PetscOptionsGetEList(PetscOptionsObject.prefix,opt,list,ntext,value,set);CHKERRQ(ierr); 470*53acd3b1SBarry Smith if (PetscOptionsObject.printhelp && PetscOptionsPublishCount == 1) { 471*53acd3b1SBarry Smith ierr = (*PetscHelpPrintf)(PetscOptionsObject.comm," -%s%s <%s> (choose one of)",PetscOptionsObject.prefix?PetscOptionsObject.prefix:"",opt+1,defaultv);CHKERRQ(ierr); 472*53acd3b1SBarry Smith for (i=0; i<ntext; i++){ 473*53acd3b1SBarry Smith ierr = (*PetscHelpPrintf)(PetscOptionsObject.comm," %s",list[i]);CHKERRQ(ierr); 474*53acd3b1SBarry Smith } 475*53acd3b1SBarry Smith ierr = (*PetscHelpPrintf)(PetscOptionsObject.comm,"\n");CHKERRQ(ierr); 476*53acd3b1SBarry Smith } 477*53acd3b1SBarry Smith PetscFunctionReturn(0); 478*53acd3b1SBarry Smith } 479*53acd3b1SBarry Smith 480*53acd3b1SBarry Smith #undef __FUNCT__ 481*53acd3b1SBarry Smith #define __FUNCT__ "PetscOptionsTruthGroupBegin" 482*53acd3b1SBarry Smith /*@C 483*53acd3b1SBarry Smith PetscOptionsTruthGroupBegin - First in a series of logical queries on the options database for 484*53acd3b1SBarry Smith which only a single value can be true. 485*53acd3b1SBarry Smith 486*53acd3b1SBarry Smith Collective on the communicator passed in PetscOptionsBegin() 487*53acd3b1SBarry Smith 488*53acd3b1SBarry Smith Input Parameters: 489*53acd3b1SBarry Smith + opt - option name 490*53acd3b1SBarry Smith . text - short string that describes the option 491*53acd3b1SBarry Smith - man - manual page with additional information on option 492*53acd3b1SBarry Smith 493*53acd3b1SBarry Smith Output Parameter: 494*53acd3b1SBarry Smith . flg - whether that option was set or not 495*53acd3b1SBarry Smith 496*53acd3b1SBarry Smith Level: intermediate 497*53acd3b1SBarry Smith 498*53acd3b1SBarry Smith Notes: Must be between a PetscOptionsBegin() and a PetscOptionsEnd() 499*53acd3b1SBarry Smith 500*53acd3b1SBarry Smith Must be followed by 0 or more PetscOptionsTruthGroup()s and PetscOptionsTruthGroupEnd() 501*53acd3b1SBarry Smith 502*53acd3b1SBarry Smith Concepts: options database^logical group 503*53acd3b1SBarry Smith 504*53acd3b1SBarry Smith .seealso: PetscOptionsGetInt(), PetscOptionsGetReal(), 505*53acd3b1SBarry Smith PetscOptionsHasName(), PetscOptionsGetIntArray(), PetscOptionsGetRealArray(), PetscOptionsTruth(), 506*53acd3b1SBarry Smith PetscOptionsName(), PetscOptionsBegin(), PetscOptionsEnd(), PetscOptionsHead(), 507*53acd3b1SBarry Smith PetscOptionsStringArray(),PetscOptionsRealArray(), PetscOptionsScalar(), 508*53acd3b1SBarry Smith PetscOptionsTruthGroupBegin(), PetscOptionsTruthGroup(), PetscOptionsTruthGroupEnd(), 509*53acd3b1SBarry Smith PetscOptionsList(), PetscOptionsEList() 510*53acd3b1SBarry Smith @*/ 511*53acd3b1SBarry Smith PetscErrorCode PETSC_DLLEXPORT PetscOptionsTruthGroupBegin(const char opt[],const char text[],const char man[],PetscTruth *flg) 512*53acd3b1SBarry Smith { 513*53acd3b1SBarry Smith PetscErrorCode ierr; 514*53acd3b1SBarry Smith 515*53acd3b1SBarry Smith PetscFunctionBegin; 516*53acd3b1SBarry Smith ierr = PetscOptionsHasName(PetscOptionsObject.prefix,opt,flg);CHKERRQ(ierr); 517*53acd3b1SBarry Smith if (PetscOptionsObject.printhelp && PetscOptionsPublishCount == 1) { 518*53acd3b1SBarry Smith ierr = (*PetscHelpPrintf)(PetscOptionsObject.comm," Pick at most one of -------------\n");CHKERRQ(ierr); 519*53acd3b1SBarry Smith ierr = (*PetscHelpPrintf)(PetscOptionsObject.comm," -%s%s: %s (%s)\n",PetscOptionsObject.prefix?PetscOptionsObject.prefix:"",opt+1,text,man);CHKERRQ(ierr); 520*53acd3b1SBarry Smith } 521*53acd3b1SBarry Smith PetscFunctionReturn(0); 522*53acd3b1SBarry Smith } 523*53acd3b1SBarry Smith 524*53acd3b1SBarry Smith #undef __FUNCT__ 525*53acd3b1SBarry Smith #define __FUNCT__ "PetscOptionsTruthGroup" 526*53acd3b1SBarry Smith /*@C 527*53acd3b1SBarry Smith PetscOptionsTruthGroup - One in a series of logical queries on the options database for 528*53acd3b1SBarry Smith which only a single value can be true. 529*53acd3b1SBarry Smith 530*53acd3b1SBarry Smith Collective on the communicator passed in PetscOptionsBegin() 531*53acd3b1SBarry Smith 532*53acd3b1SBarry Smith Input Parameters: 533*53acd3b1SBarry Smith + opt - option name 534*53acd3b1SBarry Smith . text - short string that describes the option 535*53acd3b1SBarry Smith - man - manual page with additional information on option 536*53acd3b1SBarry Smith 537*53acd3b1SBarry Smith Output Parameter: 538*53acd3b1SBarry Smith . flg - PETSC_TRUE if found, else PETSC_FALSE 539*53acd3b1SBarry Smith 540*53acd3b1SBarry Smith Level: intermediate 541*53acd3b1SBarry Smith 542*53acd3b1SBarry Smith Notes: Must be between a PetscOptionsBegin() and a PetscOptionsEnd() 543*53acd3b1SBarry Smith 544*53acd3b1SBarry Smith Must follow a PetscOptionsTruthGroupBegin() and preceded a PetscOptionsTruthGroupEnd() 545*53acd3b1SBarry Smith 546*53acd3b1SBarry Smith Concepts: options database^logical group 547*53acd3b1SBarry Smith 548*53acd3b1SBarry Smith .seealso: PetscOptionsGetInt(), PetscOptionsGetReal(), 549*53acd3b1SBarry Smith PetscOptionsHasName(), PetscOptionsGetIntArray(), PetscOptionsGetRealArray(), PetscOptionsTruth(), 550*53acd3b1SBarry Smith PetscOptionsName(), PetscOptionsBegin(), PetscOptionsEnd(), PetscOptionsHead(), 551*53acd3b1SBarry Smith PetscOptionsStringArray(),PetscOptionsRealArray(), PetscOptionsScalar(), 552*53acd3b1SBarry Smith PetscOptionsTruthGroupBegin(), PetscOptionsTruthGroup(), PetscOptionsTruthGroupEnd(), 553*53acd3b1SBarry Smith PetscOptionsList(), PetscOptionsEList() 554*53acd3b1SBarry Smith @*/ 555*53acd3b1SBarry Smith PetscErrorCode PETSC_DLLEXPORT PetscOptionsTruthGroup(const char opt[],const char text[],const char man[],PetscTruth *flg) 556*53acd3b1SBarry Smith { 557*53acd3b1SBarry Smith PetscErrorCode ierr; 558*53acd3b1SBarry Smith 559*53acd3b1SBarry Smith PetscFunctionBegin; 560*53acd3b1SBarry Smith ierr = PetscOptionsHasName(PetscOptionsObject.prefix,opt,flg);CHKERRQ(ierr); 561*53acd3b1SBarry Smith if (PetscOptionsObject.printhelp && PetscOptionsPublishCount == 1) { 562*53acd3b1SBarry Smith ierr = (*PetscHelpPrintf)(PetscOptionsObject.comm," -%s%s: %s (%s)\n",PetscOptionsObject.prefix?PetscOptionsObject.prefix:"",opt+1,text,man);CHKERRQ(ierr); 563*53acd3b1SBarry Smith } 564*53acd3b1SBarry Smith PetscFunctionReturn(0); 565*53acd3b1SBarry Smith } 566*53acd3b1SBarry Smith 567*53acd3b1SBarry Smith #undef __FUNCT__ 568*53acd3b1SBarry Smith #define __FUNCT__ "PetscOptionsTruthGroupEnd" 569*53acd3b1SBarry Smith /*@C 570*53acd3b1SBarry Smith PetscOptionsTruthGroupEnd - Last in a series of logical queries on the options database for 571*53acd3b1SBarry Smith which only a single value can be true. 572*53acd3b1SBarry Smith 573*53acd3b1SBarry Smith Collective on the communicator passed in PetscOptionsBegin() 574*53acd3b1SBarry Smith 575*53acd3b1SBarry Smith Input Parameters: 576*53acd3b1SBarry Smith + opt - option name 577*53acd3b1SBarry Smith . text - short string that describes the option 578*53acd3b1SBarry Smith - man - manual page with additional information on option 579*53acd3b1SBarry Smith 580*53acd3b1SBarry Smith Output Parameter: 581*53acd3b1SBarry Smith . flg - PETSC_TRUE if found, else PETSC_FALSE 582*53acd3b1SBarry Smith 583*53acd3b1SBarry Smith Level: intermediate 584*53acd3b1SBarry Smith 585*53acd3b1SBarry Smith Notes: Must be between a PetscOptionsBegin() and a PetscOptionsEnd() 586*53acd3b1SBarry Smith 587*53acd3b1SBarry Smith Must follow a PetscOptionsTruthGroupBegin() 588*53acd3b1SBarry Smith 589*53acd3b1SBarry Smith Concepts: options database^logical group 590*53acd3b1SBarry Smith 591*53acd3b1SBarry Smith .seealso: PetscOptionsGetInt(), PetscOptionsGetReal(), 592*53acd3b1SBarry Smith PetscOptionsHasName(), PetscOptionsGetIntArray(), PetscOptionsGetRealArray(), PetscOptionsTruth(), 593*53acd3b1SBarry Smith PetscOptionsName(), PetscOptionsBegin(), PetscOptionsEnd(), PetscOptionsHead(), 594*53acd3b1SBarry Smith PetscOptionsStringArray(),PetscOptionsRealArray(), PetscOptionsScalar(), 595*53acd3b1SBarry Smith PetscOptionsTruthGroupBegin(), PetscOptionsTruthGroup(), PetscOptionsTruthGroupEnd(), 596*53acd3b1SBarry Smith PetscOptionsList(), PetscOptionsEList() 597*53acd3b1SBarry Smith @*/ 598*53acd3b1SBarry Smith PetscErrorCode PETSC_DLLEXPORT PetscOptionsTruthGroupEnd(const char opt[],const char text[],const char man[],PetscTruth *flg) 599*53acd3b1SBarry Smith { 600*53acd3b1SBarry Smith PetscErrorCode ierr; 601*53acd3b1SBarry Smith 602*53acd3b1SBarry Smith PetscFunctionBegin; 603*53acd3b1SBarry Smith ierr = PetscOptionsHasName(PetscOptionsObject.prefix,opt,flg);CHKERRQ(ierr); 604*53acd3b1SBarry Smith if (PetscOptionsObject.printhelp && PetscOptionsPublishCount == 1) { 605*53acd3b1SBarry Smith ierr = (*PetscHelpPrintf)(PetscOptionsObject.comm," -%s%s: %s (%s)\n",PetscOptionsObject.prefix?PetscOptionsObject.prefix:"",opt+1,text,man);CHKERRQ(ierr); 606*53acd3b1SBarry Smith } 607*53acd3b1SBarry Smith PetscFunctionReturn(0); 608*53acd3b1SBarry Smith } 609*53acd3b1SBarry Smith 610*53acd3b1SBarry Smith #undef __FUNCT__ 611*53acd3b1SBarry Smith #define __FUNCT__ "PetscOptionsTruth" 612*53acd3b1SBarry Smith /*@C 613*53acd3b1SBarry Smith PetscOptionsTruth - Determines if a particular option is in the database with a true or false 614*53acd3b1SBarry Smith 615*53acd3b1SBarry Smith Collective on the communicator passed in PetscOptionsBegin() 616*53acd3b1SBarry Smith 617*53acd3b1SBarry Smith Input Parameters: 618*53acd3b1SBarry Smith + opt - option name 619*53acd3b1SBarry Smith . text - short string that describes the option 620*53acd3b1SBarry Smith - man - manual page with additional information on option 621*53acd3b1SBarry Smith 622*53acd3b1SBarry Smith Output Parameter: 623*53acd3b1SBarry Smith . flg - PETSC_TRUE or PETSC_FALSE 624*53acd3b1SBarry Smith . set - PETSC_TRUE if found, else PETSC_FALSE 625*53acd3b1SBarry Smith 626*53acd3b1SBarry Smith Level: beginner 627*53acd3b1SBarry Smith 628*53acd3b1SBarry Smith Concepts: options database^logical 629*53acd3b1SBarry Smith 630*53acd3b1SBarry Smith Notes: Must be between a PetscOptionsBegin() and a PetscOptionsEnd() 631*53acd3b1SBarry Smith 632*53acd3b1SBarry Smith .seealso: PetscOptionsGetReal(), PetscOptionsHasName(), PetscOptionsGetString(), PetscOptionsGetInt(), 633*53acd3b1SBarry Smith PetscOptionsGetIntArray(), PetscOptionsGetRealArray(), PetscOptionsTruth() 634*53acd3b1SBarry Smith PetscOptionsInt(), PetscOptionsString(), PetscOptionsReal(), PetscOptionsTruth(), 635*53acd3b1SBarry Smith PetscOptionsName(), PetscOptionsBegin(), PetscOptionsEnd(), PetscOptionsHead(), 636*53acd3b1SBarry Smith PetscOptionsStringArray(),PetscOptionsRealArray(), PetscOptionsScalar(), 637*53acd3b1SBarry Smith PetscOptionsTruthGroupBegin(), PetscOptionsTruthGroup(), PetscOptionsTruthGroupEnd(), 638*53acd3b1SBarry Smith PetscOptionsList(), PetscOptionsEList() 639*53acd3b1SBarry Smith @*/ 640*53acd3b1SBarry Smith PetscErrorCode PETSC_DLLEXPORT PetscOptionsTruth(const char opt[],const char text[],const char man[],PetscTruth deflt,PetscTruth *flg,PetscTruth *set) 641*53acd3b1SBarry Smith { 642*53acd3b1SBarry Smith PetscErrorCode ierr; 643*53acd3b1SBarry Smith PetscTruth iset; 644*53acd3b1SBarry Smith 645*53acd3b1SBarry Smith PetscFunctionBegin; 646*53acd3b1SBarry Smith ierr = PetscOptionsGetTruth(PetscOptionsObject.prefix,opt,flg,&iset);CHKERRQ(ierr); 647*53acd3b1SBarry Smith if (!iset) { 648*53acd3b1SBarry Smith if (flg) *flg = deflt; 649*53acd3b1SBarry Smith } 650*53acd3b1SBarry Smith if (set) *set = iset; 651*53acd3b1SBarry Smith if (PetscOptionsObject.printhelp && PetscOptionsPublishCount == 1) { 652*53acd3b1SBarry Smith const char *v = PetscTruths[deflt]; 653*53acd3b1SBarry Smith ierr = (*PetscHelpPrintf)(PetscOptionsObject.comm," -%s%s: <%s> %s (%s)\n",PetscOptionsObject.prefix?PetscOptionsObject.prefix:"",opt+1,v,text,man);CHKERRQ(ierr); 654*53acd3b1SBarry Smith } 655*53acd3b1SBarry Smith PetscFunctionReturn(0); 656*53acd3b1SBarry Smith } 657*53acd3b1SBarry Smith 658*53acd3b1SBarry Smith #undef __FUNCT__ 659*53acd3b1SBarry Smith #define __FUNCT__ "PetscOptionsRealArray" 660*53acd3b1SBarry Smith /*@C 661*53acd3b1SBarry Smith PetscOptionsRealArray - Gets an array of double values for a particular 662*53acd3b1SBarry Smith option in the database. The values must be separated with commas with 663*53acd3b1SBarry Smith no intervening spaces. 664*53acd3b1SBarry Smith 665*53acd3b1SBarry Smith Collective on the communicator passed in PetscOptionsBegin() 666*53acd3b1SBarry Smith 667*53acd3b1SBarry Smith Input Parameters: 668*53acd3b1SBarry Smith + opt - the option one is seeking 669*53acd3b1SBarry Smith . text - short string describing option 670*53acd3b1SBarry Smith . man - manual page for option 671*53acd3b1SBarry Smith - nmax - maximum number of values 672*53acd3b1SBarry Smith 673*53acd3b1SBarry Smith Output Parameter: 674*53acd3b1SBarry Smith + value - location to copy values 675*53acd3b1SBarry Smith . nmax - actual number of values found 676*53acd3b1SBarry Smith - set - PETSC_TRUE if found, else PETSC_FALSE 677*53acd3b1SBarry Smith 678*53acd3b1SBarry Smith Level: beginner 679*53acd3b1SBarry Smith 680*53acd3b1SBarry Smith Notes: 681*53acd3b1SBarry Smith The user should pass in an array of doubles 682*53acd3b1SBarry Smith 683*53acd3b1SBarry Smith Must be between a PetscOptionsBegin() and a PetscOptionsEnd() 684*53acd3b1SBarry Smith 685*53acd3b1SBarry Smith Concepts: options database^array of strings 686*53acd3b1SBarry Smith 687*53acd3b1SBarry Smith .seealso: PetscOptionsGetInt(), PetscOptionsGetReal(), 688*53acd3b1SBarry Smith PetscOptionsHasName(), PetscOptionsGetIntArray(), PetscOptionsGetRealArray(), PetscOptionsTruth(), 689*53acd3b1SBarry Smith PetscOptionsName(), PetscOptionsBegin(), PetscOptionsEnd(), PetscOptionsHead(), 690*53acd3b1SBarry Smith PetscOptionsStringArray(),PetscOptionsRealArray(), PetscOptionsScalar(), 691*53acd3b1SBarry Smith PetscOptionsTruthGroupBegin(), PetscOptionsTruthGroup(), PetscOptionsTruthGroupEnd(), 692*53acd3b1SBarry Smith PetscOptionsList(), PetscOptionsEList() 693*53acd3b1SBarry Smith @*/ 694*53acd3b1SBarry Smith PetscErrorCode PETSC_DLLEXPORT PetscOptionsRealArray(const char opt[],const char text[],const char man[],PetscReal value[],PetscInt *n,PetscTruth *set) 695*53acd3b1SBarry Smith { 696*53acd3b1SBarry Smith PetscErrorCode ierr; 697*53acd3b1SBarry Smith PetscInt i; 698*53acd3b1SBarry Smith 699*53acd3b1SBarry Smith PetscFunctionBegin; 700*53acd3b1SBarry Smith ierr = PetscOptionsGetRealArray(PetscOptionsObject.prefix,opt,value,n,set);CHKERRQ(ierr); 701*53acd3b1SBarry Smith if (PetscOptionsObject.printhelp && PetscOptionsPublishCount == 1) { 702*53acd3b1SBarry Smith ierr = (*PetscHelpPrintf)(PetscOptionsObject.comm," -%s%s <%g",PetscOptionsObject.prefix?PetscOptionsObject.prefix:"",opt+1,value[0]);CHKERRQ(ierr); 703*53acd3b1SBarry Smith for (i=1; i<*n; i++) { 704*53acd3b1SBarry Smith ierr = (*PetscHelpPrintf)(PetscOptionsObject.comm,",%g",value[i]);CHKERRQ(ierr); 705*53acd3b1SBarry Smith } 706*53acd3b1SBarry Smith ierr = (*PetscHelpPrintf)(PetscOptionsObject.comm,">: %s (%s)\n",text,man);CHKERRQ(ierr); 707*53acd3b1SBarry Smith } 708*53acd3b1SBarry Smith PetscFunctionReturn(0); 709*53acd3b1SBarry Smith } 710*53acd3b1SBarry Smith 711*53acd3b1SBarry Smith 712*53acd3b1SBarry Smith #undef __FUNCT__ 713*53acd3b1SBarry Smith #define __FUNCT__ "PetscOptionsIntArray" 714*53acd3b1SBarry Smith /*@C 715*53acd3b1SBarry Smith PetscOptionsIntArray - Gets an array of integers for a particular 716*53acd3b1SBarry Smith option in the database. The values must be separated with commas with 717*53acd3b1SBarry Smith no intervening spaces. 718*53acd3b1SBarry Smith 719*53acd3b1SBarry Smith Collective on the communicator passed in PetscOptionsBegin() 720*53acd3b1SBarry Smith 721*53acd3b1SBarry Smith Input Parameters: 722*53acd3b1SBarry Smith + opt - the option one is seeking 723*53acd3b1SBarry Smith . text - short string describing option 724*53acd3b1SBarry Smith . man - manual page for option 725*53acd3b1SBarry Smith - nmax - maximum number of values 726*53acd3b1SBarry Smith 727*53acd3b1SBarry Smith Output Parameter: 728*53acd3b1SBarry Smith + value - location to copy values 729*53acd3b1SBarry Smith . nmax - actual number of values found 730*53acd3b1SBarry Smith - set - PETSC_TRUE if found, else PETSC_FALSE 731*53acd3b1SBarry Smith 732*53acd3b1SBarry Smith Level: beginner 733*53acd3b1SBarry Smith 734*53acd3b1SBarry Smith Notes: 735*53acd3b1SBarry Smith The user should pass in an array of integers 736*53acd3b1SBarry Smith 737*53acd3b1SBarry Smith Must be between a PetscOptionsBegin() and a PetscOptionsEnd() 738*53acd3b1SBarry Smith 739*53acd3b1SBarry Smith Concepts: options database^array of strings 740*53acd3b1SBarry Smith 741*53acd3b1SBarry Smith .seealso: PetscOptionsGetInt(), PetscOptionsGetReal(), 742*53acd3b1SBarry Smith PetscOptionsHasName(), PetscOptionsGetIntArray(), PetscOptionsGetRealArray(), PetscOptionsTruth(), 743*53acd3b1SBarry Smith PetscOptionsName(), PetscOptionsBegin(), PetscOptionsEnd(), PetscOptionsHead(), 744*53acd3b1SBarry Smith PetscOptionsStringArray(),PetscOptionsRealArray(), PetscOptionsScalar(), 745*53acd3b1SBarry Smith PetscOptionsTruthGroupBegin(), PetscOptionsTruthGroup(), PetscOptionsTruthGroupEnd(), 746*53acd3b1SBarry Smith PetscOptionsList(), PetscOptionsEList(), PetscOptionsRealArray() 747*53acd3b1SBarry Smith @*/ 748*53acd3b1SBarry Smith PetscErrorCode PETSC_DLLEXPORT PetscOptionsIntArray(const char opt[],const char text[],const char man[],PetscInt value[],PetscInt *n,PetscTruth *set) 749*53acd3b1SBarry Smith { 750*53acd3b1SBarry Smith PetscErrorCode ierr; 751*53acd3b1SBarry Smith PetscInt i; 752*53acd3b1SBarry Smith 753*53acd3b1SBarry Smith PetscFunctionBegin; 754*53acd3b1SBarry Smith ierr = PetscOptionsGetIntArray(PetscOptionsObject.prefix,opt,value,n,set);CHKERRQ(ierr); 755*53acd3b1SBarry Smith if (PetscOptionsObject.printhelp && PetscOptionsPublishCount == 1) { 756*53acd3b1SBarry Smith ierr = (*PetscHelpPrintf)(PetscOptionsObject.comm," -%s%s <%d",PetscOptionsObject.prefix?PetscOptionsObject.prefix:"",opt+1,value[0]);CHKERRQ(ierr); 757*53acd3b1SBarry Smith for (i=1; i<*n; i++) { 758*53acd3b1SBarry Smith ierr = (*PetscHelpPrintf)(PetscOptionsObject.comm,",%d",value[i]);CHKERRQ(ierr); 759*53acd3b1SBarry Smith } 760*53acd3b1SBarry Smith ierr = (*PetscHelpPrintf)(PetscOptionsObject.comm,">: %s (%s)\n",text,man);CHKERRQ(ierr); 761*53acd3b1SBarry Smith } 762*53acd3b1SBarry Smith PetscFunctionReturn(0); 763*53acd3b1SBarry Smith } 764*53acd3b1SBarry Smith 765*53acd3b1SBarry Smith #undef __FUNCT__ 766*53acd3b1SBarry Smith #define __FUNCT__ "PetscOptionsStringArray" 767*53acd3b1SBarry Smith /*@C 768*53acd3b1SBarry Smith PetscOptionsStringArray - Gets an array of string values for a particular 769*53acd3b1SBarry Smith option in the database. The values must be separated with commas with 770*53acd3b1SBarry Smith no intervening spaces. 771*53acd3b1SBarry Smith 772*53acd3b1SBarry Smith Collective on the communicator passed in PetscOptionsBegin() 773*53acd3b1SBarry Smith 774*53acd3b1SBarry Smith Input Parameters: 775*53acd3b1SBarry Smith + opt - the option one is seeking 776*53acd3b1SBarry Smith . text - short string describing option 777*53acd3b1SBarry Smith . man - manual page for option 778*53acd3b1SBarry Smith - nmax - maximum number of strings 779*53acd3b1SBarry Smith 780*53acd3b1SBarry Smith Output Parameter: 781*53acd3b1SBarry Smith + value - location to copy strings 782*53acd3b1SBarry Smith . nmax - actual number of strings found 783*53acd3b1SBarry Smith - set - PETSC_TRUE if found, else PETSC_FALSE 784*53acd3b1SBarry Smith 785*53acd3b1SBarry Smith Level: beginner 786*53acd3b1SBarry Smith 787*53acd3b1SBarry Smith Notes: 788*53acd3b1SBarry Smith The user should pass in an array of pointers to char, to hold all the 789*53acd3b1SBarry Smith strings returned by this function. 790*53acd3b1SBarry Smith 791*53acd3b1SBarry Smith The user is responsible for deallocating the strings that are 792*53acd3b1SBarry Smith returned. The Fortran interface for this routine is not supported. 793*53acd3b1SBarry Smith 794*53acd3b1SBarry Smith Must be between a PetscOptionsBegin() and a PetscOptionsEnd() 795*53acd3b1SBarry Smith 796*53acd3b1SBarry Smith Concepts: options database^array of strings 797*53acd3b1SBarry Smith 798*53acd3b1SBarry Smith .seealso: PetscOptionsGetInt(), PetscOptionsGetReal(), 799*53acd3b1SBarry Smith PetscOptionsHasName(), PetscOptionsGetIntArray(), PetscOptionsGetRealArray(), PetscOptionsTruth(), 800*53acd3b1SBarry Smith PetscOptionsName(), PetscOptionsBegin(), PetscOptionsEnd(), PetscOptionsHead(), 801*53acd3b1SBarry Smith PetscOptionsStringArray(),PetscOptionsRealArray(), PetscOptionsScalar(), 802*53acd3b1SBarry Smith PetscOptionsTruthGroupBegin(), PetscOptionsTruthGroup(), PetscOptionsTruthGroupEnd(), 803*53acd3b1SBarry Smith PetscOptionsList(), PetscOptionsEList() 804*53acd3b1SBarry Smith @*/ 805*53acd3b1SBarry Smith PetscErrorCode PETSC_DLLEXPORT PetscOptionsStringArray(const char opt[],const char text[],const char man[],char *value[],PetscInt *nmax,PetscTruth *set) 806*53acd3b1SBarry Smith { 807*53acd3b1SBarry Smith PetscErrorCode ierr; 808*53acd3b1SBarry Smith 809*53acd3b1SBarry Smith PetscFunctionBegin; 810*53acd3b1SBarry Smith ierr = PetscOptionsGetStringArray(PetscOptionsObject.prefix,opt,value,nmax,set);CHKERRQ(ierr); 811*53acd3b1SBarry Smith if (PetscOptionsObject.printhelp && PetscOptionsPublishCount == 1) { 812*53acd3b1SBarry Smith ierr = (*PetscHelpPrintf)(PetscOptionsObject.comm," -%s%s <string1,string2,...>: %s (%s)\n",PetscOptionsObject.prefix?PetscOptionsObject.prefix:"",opt+1,text,man);CHKERRQ(ierr); 813*53acd3b1SBarry Smith } 814*53acd3b1SBarry Smith PetscFunctionReturn(0); 815*53acd3b1SBarry Smith } 816*53acd3b1SBarry Smith 817*53acd3b1SBarry Smith 818*53acd3b1SBarry Smith #undef __FUNCT__ 819*53acd3b1SBarry Smith #define __FUNCT__ "PetscOptionsHead" 820*53acd3b1SBarry Smith /*@C 821*53acd3b1SBarry Smith PetscOptionsHead - Puts a heading before list any more published options. Used, for example, 822*53acd3b1SBarry Smith in KSPSetFromOptions_GMRES(). 823*53acd3b1SBarry Smith 824*53acd3b1SBarry Smith Collective on the communicator passed in PetscOptionsBegin() 825*53acd3b1SBarry Smith 826*53acd3b1SBarry Smith Input Parameter: 827*53acd3b1SBarry Smith . head - the heading text 828*53acd3b1SBarry Smith 829*53acd3b1SBarry Smith 830*53acd3b1SBarry Smith Level: intermediate 831*53acd3b1SBarry Smith 832*53acd3b1SBarry Smith Notes: Must be between a PetscOptionsBegin() and a PetscOptionsEnd() 833*53acd3b1SBarry Smith 834*53acd3b1SBarry Smith Must be followed by a call to PetscOptionsTail() in the same function. 835*53acd3b1SBarry Smith 836*53acd3b1SBarry Smith Concepts: options database^subheading 837*53acd3b1SBarry Smith 838*53acd3b1SBarry Smith .seealso: PetscOptionsGetInt(), PetscOptionsGetReal(), 839*53acd3b1SBarry Smith PetscOptionsHasName(), PetscOptionsGetIntArray(), PetscOptionsGetRealArray(), PetscOptionsTruth(), 840*53acd3b1SBarry Smith PetscOptionsName(), PetscOptionsBegin(), PetscOptionsEnd(), PetscOptionsHead(), 841*53acd3b1SBarry Smith PetscOptionsStringArray(),PetscOptionsRealArray(), PetscOptionsScalar(), 842*53acd3b1SBarry Smith PetscOptionsTruthGroupBegin(), PetscOptionsTruthGroup(), PetscOptionsTruthGroupEnd(), 843*53acd3b1SBarry Smith PetscOptionsList(), PetscOptionsEList() 844*53acd3b1SBarry Smith @*/ 845*53acd3b1SBarry Smith PetscErrorCode PETSC_DLLEXPORT PetscOptionsHead(const char head[]) 846*53acd3b1SBarry Smith { 847*53acd3b1SBarry Smith PetscErrorCode ierr; 848*53acd3b1SBarry Smith 849*53acd3b1SBarry Smith PetscFunctionBegin; 850*53acd3b1SBarry Smith if (PetscOptionsObject.printhelp && PetscOptionsPublishCount == 1) { 851*53acd3b1SBarry Smith ierr = (*PetscHelpPrintf)(PetscOptionsObject.comm," %s\n",head);CHKERRQ(ierr); 852*53acd3b1SBarry Smith } 853*53acd3b1SBarry Smith PetscFunctionReturn(0); 854*53acd3b1SBarry Smith } 855*53acd3b1SBarry Smith 856*53acd3b1SBarry Smith 857*53acd3b1SBarry Smith 858*53acd3b1SBarry Smith 859*53acd3b1SBarry Smith 860*53acd3b1SBarry Smith 861