153acd3b1SBarry Smith #define PETSC_DLL 253acd3b1SBarry Smith /* 353acd3b1SBarry Smith These routines simplify the use of command line, file options, etc., 453acd3b1SBarry Smith and are used to manipulate the options database. 553acd3b1SBarry Smith 653acd3b1SBarry Smith This file uses regular malloc and free because it cannot know 753acd3b1SBarry Smith what malloc is being used until it has already processed the input. 853acd3b1SBarry Smith */ 953acd3b1SBarry Smith 1053acd3b1SBarry Smith #include "petsc.h" /*I "petsc.h" I*/ 1153acd3b1SBarry Smith #include "petscsys.h" 1253acd3b1SBarry Smith #if defined(PETSC_HAVE_STDLIB_H) 1353acd3b1SBarry Smith #include <stdlib.h> 1453acd3b1SBarry Smith #endif 1553acd3b1SBarry Smith 1653acd3b1SBarry Smith /* 1753acd3b1SBarry Smith Keep a linked list of options that have been posted and we are waiting for 1853acd3b1SBarry Smith user selection 1953acd3b1SBarry Smith 2053acd3b1SBarry Smith Eventually we'll attach this beast to a MPI_Comm 2153acd3b1SBarry Smith */ 22f8d0b74dSMatthew Knepley PetscOptionsObjectType PetscOptionsObject; 2353acd3b1SBarry Smith PetscInt PetscOptionsPublishCount = 0; 2453acd3b1SBarry Smith 2561b37b28SSatish Balay 2661b37b28SSatish Balay #undef __FUNCT__ 2761b37b28SSatish Balay #define __FUNCT__ "PetscOptionsHelpAddList" 2861b37b28SSatish Balay PetscErrorCode PetscOptionsHelpAddList(const char prefix[],const char title[],const char mansec[]) 2961b37b28SSatish Balay { 3061b37b28SSatish Balay int ierr; 31*e3ed6ec8SBarry Smith PetscOptionsHelp newhelp; 3261b37b28SSatish Balay PetscFunctionBegin; 33*e3ed6ec8SBarry Smith ierr = PetscNew(struct _p_PetscOptionsHelp,&newhelp);CHKERRQ(ierr); 3461b37b28SSatish Balay ierr = PetscStrallocpy(prefix,&newhelp->prefix);CHKERRQ(ierr); 3561b37b28SSatish Balay ierr = PetscStrallocpy(title,&newhelp->title);CHKERRQ(ierr); 3661b37b28SSatish Balay ierr = PetscStrallocpy(mansec,&newhelp->mansec);CHKERRQ(ierr); 3761b37b28SSatish Balay newhelp->next = 0; 3861b37b28SSatish Balay 3961b37b28SSatish Balay if (!PetscOptionsObject.help) { 4061b37b28SSatish Balay PetscOptionsObject.help = newhelp; 4161b37b28SSatish Balay } else { 4261b37b28SSatish Balay newhelp->next = PetscOptionsObject.help; 4361b37b28SSatish Balay PetscOptionsObject.help = newhelp; 4461b37b28SSatish Balay } 4561b37b28SSatish Balay PetscFunctionReturn(0); 4661b37b28SSatish Balay } 4761b37b28SSatish Balay 4861b37b28SSatish Balay #undef __FUNCT__ 4961b37b28SSatish Balay #define __FUNCT__ "PetscOptionsHelpDestroyList" 5061b37b28SSatish Balay PetscErrorCode PetscOptionsHelpDestroyList(void) 5161b37b28SSatish Balay { 5261b37b28SSatish Balay PetscErrorCode ierr; 53*e3ed6ec8SBarry Smith PetscOptionsHelp help = PetscOptionsObject.help, next; 5461b37b28SSatish Balay 5561b37b28SSatish Balay PetscFunctionBegin; 5661b37b28SSatish Balay while (help) { 5761b37b28SSatish Balay next = help->next; 5861b37b28SSatish Balay ierr = PetscStrfree(help->prefix);CHKERRQ(ierr); 5961b37b28SSatish Balay ierr = PetscStrfree(help->title);CHKERRQ(ierr); 6061b37b28SSatish Balay ierr = PetscStrfree(help->mansec);CHKERRQ(ierr); 6161b37b28SSatish Balay ierr = PetscFree(help);CHKERRQ(ierr); 6261b37b28SSatish Balay help = next; 6361b37b28SSatish Balay } 6461b37b28SSatish Balay PetscFunctionReturn(0); 6561b37b28SSatish Balay } 6661b37b28SSatish Balay 6761b37b28SSatish Balay 6861b37b28SSatish Balay #undef __FUNCT__ 6961b37b28SSatish Balay #define __FUNCT__ "PetscOptionsHelpFindList" 7061b37b28SSatish Balay PetscErrorCode PetscOptionsHelpFindList(const char prefix[],const char title[],const char mansec[],PetscTruth *flg) 7161b37b28SSatish Balay { 7261b37b28SSatish Balay PetscErrorCode ierr; 7361b37b28SSatish Balay PetscTruth flg1,flg2,flg3; 74*e3ed6ec8SBarry Smith PetscOptionsHelp help = PetscOptionsObject.help; 752c33bbaeSSatish Balay PetscFunctionBegin; 7661b37b28SSatish Balay while (help) { 7761b37b28SSatish Balay ierr = PetscStrcmp(help->prefix,prefix,&flg1);CHKERRQ(ierr); 7861b37b28SSatish Balay ierr = PetscStrcmp(help->title,title,&flg2);CHKERRQ(ierr); 7961b37b28SSatish Balay ierr = PetscStrcmp(help->mansec,mansec,&flg3);CHKERRQ(ierr); 8061b37b28SSatish Balay if (flg1 && flg2 && flg3) { 81115b5ef7SSatish Balay *flg = PETSC_TRUE; 8261b37b28SSatish Balay break; 8361b37b28SSatish Balay } 8461b37b28SSatish Balay help = help->next; 8561b37b28SSatish Balay } 8661b37b28SSatish Balay PetscFunctionReturn(0); 8761b37b28SSatish Balay 8861b37b28SSatish Balay } 8961b37b28SSatish Balay 9061b37b28SSatish Balay #undef __FUNCT__ 9161b37b28SSatish Balay #define __FUNCT__ "PetscOptionsHelpCheckAddList" 9261b37b28SSatish Balay PetscErrorCode PetscOptionsHelpCheckAddList(const char prefix[],const char title[],const char mansec[],PetscTruth *flg) 9361b37b28SSatish Balay { 9461b37b28SSatish Balay PetscFunctionBegin; 9561b37b28SSatish Balay PetscOptionsHelpFindList(prefix,title,mansec,flg); 9661b37b28SSatish Balay if (!(*flg)) PetscOptionsHelpAddList(prefix,title,mansec); 9761b37b28SSatish Balay PetscFunctionReturn(0); 9861b37b28SSatish Balay } 9961b37b28SSatish Balay 10053acd3b1SBarry Smith #undef __FUNCT__ 10153acd3b1SBarry Smith #define __FUNCT__ "PetscOptionsBegin_Private" 10253acd3b1SBarry Smith /* 10353acd3b1SBarry Smith Handles setting up the data structure in a call to PetscOptionsBegin() 10453acd3b1SBarry Smith */ 10553acd3b1SBarry Smith PetscErrorCode PetscOptionsBegin_Private(MPI_Comm comm,const char prefix[],const char title[],const char mansec[]) 10653acd3b1SBarry Smith { 10753acd3b1SBarry Smith PetscErrorCode ierr; 10853acd3b1SBarry Smith 10953acd3b1SBarry Smith PetscFunctionBegin; 11053acd3b1SBarry Smith PetscOptionsObject.next = 0; 11153acd3b1SBarry Smith PetscOptionsObject.comm = comm; 1126356e834SBarry Smith PetscOptionsObject.changedmethod = PETSC_FALSE; 113f8d0b74dSMatthew Knepley if (PetscOptionsObject.prefix) { 114f8d0b74dSMatthew Knepley ierr = PetscStrfree(PetscOptionsObject.prefix);CHKERRQ(ierr); PetscOptionsObject.prefix = 0; 115f8d0b74dSMatthew Knepley } 11653acd3b1SBarry Smith ierr = PetscStrallocpy(prefix,&PetscOptionsObject.prefix);CHKERRQ(ierr); 117f8d0b74dSMatthew Knepley if (PetscOptionsObject.title) { 118f8d0b74dSMatthew Knepley ierr = PetscStrfree(PetscOptionsObject.title);CHKERRQ(ierr); PetscOptionsObject.title = 0; 119f8d0b74dSMatthew Knepley } 12053acd3b1SBarry Smith ierr = PetscStrallocpy(title,&PetscOptionsObject.title);CHKERRQ(ierr); 12153acd3b1SBarry Smith 12253acd3b1SBarry Smith ierr = PetscOptionsHasName(PETSC_NULL,"-help",&PetscOptionsObject.printhelp);CHKERRQ(ierr); 12353acd3b1SBarry Smith if (PetscOptionsObject.printhelp && PetscOptionsPublishCount == 1) { 12461b37b28SSatish Balay ierr = PetscOptionsHelpCheckAddList(prefix,title,mansec,&PetscOptionsObject.alreadyprinted); 12561b37b28SSatish Balay if (!PetscOptionsObject.alreadyprinted) { 12653acd3b1SBarry Smith ierr = (*PetscHelpPrintf)(comm,"%s -------------------------------------------------\n",title);CHKERRQ(ierr); 12753acd3b1SBarry Smith } 12861b37b28SSatish Balay } 12953acd3b1SBarry Smith PetscFunctionReturn(0); 13053acd3b1SBarry Smith } 13153acd3b1SBarry Smith 13253acd3b1SBarry Smith /* 13353acd3b1SBarry Smith Handles adding another option to the list of options within this particular PetscOptionsBegin() PetscOptionsEnd() 13453acd3b1SBarry Smith */ 13553acd3b1SBarry Smith #undef __FUNCT__ 13653acd3b1SBarry Smith #define __FUNCT__ "PetscOptionsCreate_Private" 137*e3ed6ec8SBarry Smith static int PetscOptionsCreate_Private(const char opt[],const char text[],const char man[],PetscOptionType t,PetscOptions *amsopt) 13853acd3b1SBarry Smith { 13953acd3b1SBarry Smith int ierr; 14053acd3b1SBarry Smith PetscOptions next; 14153acd3b1SBarry Smith 14253acd3b1SBarry Smith PetscFunctionBegin; 143*e3ed6ec8SBarry Smith ierr = PetscNew(struct _p_PetscOptions,amsopt);CHKERRQ(ierr); 14453acd3b1SBarry Smith (*amsopt)->next = 0; 14553acd3b1SBarry Smith (*amsopt)->set = PETSC_FALSE; 1466356e834SBarry Smith (*amsopt)->type = t; 14753acd3b1SBarry Smith (*amsopt)->data = 0; 14853acd3b1SBarry Smith (*amsopt)->edata = 0; 14961b37b28SSatish Balay 15053acd3b1SBarry Smith ierr = PetscStrallocpy(text,&(*amsopt)->text);CHKERRQ(ierr); 15153acd3b1SBarry Smith ierr = PetscStrallocpy(opt,&(*amsopt)->option);CHKERRQ(ierr); 1526356e834SBarry Smith ierr = PetscStrallocpy(man,&(*amsopt)->man);CHKERRQ(ierr); 15353acd3b1SBarry Smith 15453acd3b1SBarry Smith if (!PetscOptionsObject.next) { 15553acd3b1SBarry Smith PetscOptionsObject.next = *amsopt; 15653acd3b1SBarry Smith } else { 15753acd3b1SBarry Smith next = PetscOptionsObject.next; 15853acd3b1SBarry Smith while (next->next) next = next->next; 15953acd3b1SBarry Smith next->next = *amsopt; 16053acd3b1SBarry Smith } 16153acd3b1SBarry Smith PetscFunctionReturn(0); 16253acd3b1SBarry Smith } 16353acd3b1SBarry Smith 16453acd3b1SBarry Smith #undef __FUNCT__ 1656356e834SBarry Smith #define __FUNCT__ "PetscOptionsGetFromGui" 166b47fd4b1SSatish Balay PetscErrorCode PetscOptionsGetFromGUI() 1676356e834SBarry Smith { 1686356e834SBarry Smith PetscErrorCode ierr; 1696356e834SBarry Smith PetscOptions next = PetscOptionsObject.next; 1706356e834SBarry Smith char str[512]; 1716356e834SBarry Smith 1726356e834SBarry Smith ierr = (*PetscPrintf)(PetscOptionsObject.comm,"%s -------------------------------------------------\n",PetscOptionsObject.title);CHKERRQ(ierr); 1736356e834SBarry Smith while (next) { 1746356e834SBarry Smith switch (next->type) { 1756356e834SBarry Smith case OPTION_HEAD: 1766356e834SBarry Smith break; 1776356e834SBarry Smith case OPTION_INT: 1786356e834SBarry Smith ierr = PetscPrintf(PetscOptionsObject.comm,"-%s%s <%d>: %s (%s)\n",PetscOptionsObject.prefix?PetscOptionsObject.prefix:"",next->option,*(int*)next->data,next->text,next->man);CHKERRQ(ierr); 1796356e834SBarry Smith scanf("%s\n",str); 1806356e834SBarry Smith if (str[0] != '\n') { 181b432afdaSMatthew Knepley printf("changing value\n"); 1826356e834SBarry Smith } 1836356e834SBarry Smith break; 184b432afdaSMatthew Knepley default: 185b432afdaSMatthew Knepley break; 1866356e834SBarry Smith } 1876356e834SBarry Smith next = next->next; 1886356e834SBarry Smith } 1896356e834SBarry Smith PetscFunctionReturn(0); 1906356e834SBarry Smith } 1916356e834SBarry Smith 1926356e834SBarry Smith #undef __FUNCT__ 19353acd3b1SBarry Smith #define __FUNCT__ "PetscOptionsEnd_Private" 19453acd3b1SBarry Smith PetscErrorCode PetscOptionsEnd_Private(void) 19553acd3b1SBarry Smith { 19653acd3b1SBarry Smith PetscErrorCode ierr; 1976356e834SBarry Smith PetscOptions last; 1986356e834SBarry Smith char option[256],value[1024],tmp[32]; 1996356e834SBarry Smith PetscInt j; 20053acd3b1SBarry Smith 20153acd3b1SBarry Smith PetscFunctionBegin; 2026356e834SBarry Smith 203265dcc83SBarry Smith /* if (PetscOptionsObject.next) { 2046356e834SBarry Smith ierr = PetscOptionsGetFromGUI(); 205265dcc83SBarry Smith }*/ 2066356e834SBarry Smith 20753acd3b1SBarry Smith ierr = PetscStrfree(PetscOptionsObject.title);CHKERRQ(ierr); PetscOptionsObject.title = 0; 20853acd3b1SBarry Smith ierr = PetscStrfree(PetscOptionsObject.prefix);CHKERRQ(ierr); PetscOptionsObject.prefix = 0; 2096356e834SBarry Smith 2106356e834SBarry Smith /* reset counter to -2; this updates the screen with the new options for the selected method */ 2116356e834SBarry Smith if (PetscOptionsObject.changedmethod) PetscOptionsPublishCount = -2; 21261b37b28SSatish Balay /* reset alreadyprinted flag */ 21361b37b28SSatish Balay PetscOptionsObject.alreadyprinted = PETSC_FALSE; 2146356e834SBarry Smith 2156356e834SBarry Smith while (PetscOptionsObject.next) { 2166356e834SBarry Smith if (PetscOptionsObject.next->set) { 2176356e834SBarry Smith if (PetscOptionsObject.prefix) { 2186356e834SBarry Smith ierr = PetscStrcpy(option,"-");CHKERRQ(ierr); 2196356e834SBarry Smith ierr = PetscStrcat(option,PetscOptionsObject.prefix);CHKERRQ(ierr); 2206356e834SBarry Smith ierr = PetscStrcat(option,PetscOptionsObject.next->option+1);CHKERRQ(ierr); 2216356e834SBarry Smith } else { 2226356e834SBarry Smith ierr = PetscStrcpy(option,PetscOptionsObject.next->option);CHKERRQ(ierr); 2236356e834SBarry Smith } 2246356e834SBarry Smith 2256356e834SBarry Smith switch (PetscOptionsObject.next->type) { 2266356e834SBarry Smith case OPTION_HEAD: 2276356e834SBarry Smith break; 2286356e834SBarry Smith case OPTION_INT: 2296356e834SBarry Smith sprintf(value,"%d",*(PetscInt*)PetscOptionsObject.next->data); 2306356e834SBarry Smith break; 2316356e834SBarry Smith case OPTION_REAL: 2326356e834SBarry Smith sprintf(value,"%g",*(PetscReal*)PetscOptionsObject.next->data); 2336356e834SBarry Smith break; 2346356e834SBarry Smith case OPTION_REAL_ARRAY: 2356356e834SBarry Smith sprintf(value,"%g",((PetscReal*)PetscOptionsObject.next->data)[0]); 2366356e834SBarry Smith for (j=1; j<PetscOptionsObject.next->arraylength; j++) { 2376356e834SBarry Smith sprintf(tmp,"%g",((PetscReal*)PetscOptionsObject.next->data)[j]); 2386356e834SBarry Smith ierr = PetscStrcat(value,",");CHKERRQ(ierr); 2396356e834SBarry Smith ierr = PetscStrcat(value,tmp);CHKERRQ(ierr); 2406356e834SBarry Smith } 2416356e834SBarry Smith break; 2426356e834SBarry Smith case OPTION_LOGICAL: 2436356e834SBarry Smith sprintf(value,"%d",*(PetscInt*)PetscOptionsObject.next->data); 2446356e834SBarry Smith break; 2456356e834SBarry Smith case OPTION_LIST: 2466356e834SBarry Smith ierr = PetscStrcpy(value,*(char**)PetscOptionsObject.next->data);CHKERRQ(ierr); 2476356e834SBarry Smith break; 2486356e834SBarry Smith case OPTION_STRING: /* also handles string arrays */ 2496356e834SBarry Smith ierr = PetscStrcpy(value,*(char**)PetscOptionsObject.next->data);CHKERRQ(ierr); 2506356e834SBarry Smith break; 2516356e834SBarry Smith } 2526356e834SBarry Smith ierr = PetscOptionsSetValue(option,value);CHKERRQ(ierr); 2536356e834SBarry Smith } 2546356e834SBarry Smith ierr = PetscStrfree(PetscOptionsObject.next->text);CHKERRQ(ierr); 2556356e834SBarry Smith ierr = PetscStrfree(PetscOptionsObject.next->option);CHKERRQ(ierr); 2566356e834SBarry Smith ierr = PetscFree(PetscOptionsObject.next->man);CHKERRQ(ierr); 25705b42c5fSBarry Smith ierr = PetscFree(PetscOptionsObject.next->data);CHKERRQ(ierr); 25805b42c5fSBarry Smith ierr = PetscFree(PetscOptionsObject.next->edata);CHKERRQ(ierr); 2596356e834SBarry Smith last = PetscOptionsObject.next; 2606356e834SBarry Smith PetscOptionsObject.next = PetscOptionsObject.next->next; 2616356e834SBarry Smith ierr = PetscFree(last);CHKERRQ(ierr); 2626356e834SBarry Smith } 2636356e834SBarry Smith PetscOptionsObject.next = 0; 26453acd3b1SBarry Smith PetscFunctionReturn(0); 26553acd3b1SBarry Smith } 26653acd3b1SBarry Smith 26753acd3b1SBarry Smith #undef __FUNCT__ 26853acd3b1SBarry Smith #define __FUNCT__ "PetscOptionsEnum" 26953acd3b1SBarry Smith /*@C 27053acd3b1SBarry Smith PetscOptionsEnum - Gets the enum value for a particular option in the database. 27153acd3b1SBarry Smith 27253acd3b1SBarry Smith Collective on the communicator passed in PetscOptionsBegin() 27353acd3b1SBarry Smith 27453acd3b1SBarry Smith Input Parameters: 27553acd3b1SBarry Smith + opt - option name 27653acd3b1SBarry Smith . text - short string that describes the option 27753acd3b1SBarry Smith . man - manual page with additional information on option 27853acd3b1SBarry Smith . list - array containing the list of choices, followed by the enum name, followed by the enum prefix, followed by a null 27953acd3b1SBarry Smith - defaultv - the default (current) value 28053acd3b1SBarry Smith 28153acd3b1SBarry Smith Output Parameter: 28253acd3b1SBarry Smith + value - the value to return 28353acd3b1SBarry Smith - flg - PETSC_TRUE if found, else PETSC_FALSE 28453acd3b1SBarry Smith 28553acd3b1SBarry Smith Level: beginner 28653acd3b1SBarry Smith 28753acd3b1SBarry Smith Concepts: options database 28853acd3b1SBarry Smith 28953acd3b1SBarry Smith Notes: Must be between a PetscOptionsBegin() and a PetscOptionsEnd() 29053acd3b1SBarry Smith 29153acd3b1SBarry Smith list is usually something like PCASMTypes or some other predefined list of enum names 29253acd3b1SBarry Smith 29353acd3b1SBarry Smith .seealso: PetscOptionsGetReal(), PetscOptionsHasName(), PetscOptionsGetString(), PetscOptionsGetInt(), 29453acd3b1SBarry Smith PetscOptionsGetIntArray(), PetscOptionsGetRealArray(), PetscOptionsTruth() 29553acd3b1SBarry Smith PetscOptionsInt(), PetscOptionsString(), PetscOptionsReal(), PetscOptionsTruth(), 29653acd3b1SBarry Smith PetscOptionsName(), PetscOptionsBegin(), PetscOptionsEnd(), PetscOptionsHead(), 29753acd3b1SBarry Smith PetscOptionsStringArray(),PetscOptionsRealArray(), PetscOptionsScalar(), 29853acd3b1SBarry Smith PetscOptionsTruthGroupBegin(), PetscOptionsTruthGroup(), PetscOptionsTruthGroupEnd(), 29953acd3b1SBarry Smith PetscOptionsList(), PetscOptionsEList() 30053acd3b1SBarry Smith @*/ 30153acd3b1SBarry Smith PetscErrorCode PETSC_DLLEXPORT PetscOptionsEnum(const char opt[],const char text[],const char man[],const char **list,PetscEnum defaultv,PetscEnum *value,PetscTruth *set) 30253acd3b1SBarry Smith { 30353acd3b1SBarry Smith PetscErrorCode ierr; 30453acd3b1SBarry Smith PetscInt ntext = 0; 30553acd3b1SBarry Smith 30653acd3b1SBarry Smith PetscFunctionBegin; 30753acd3b1SBarry Smith while (list[ntext++]) { 30853acd3b1SBarry Smith if (ntext > 50) SETERRQ(PETSC_ERR_ARG_WRONG,"List argument appears to be wrong or have more than 50 entries"); 30953acd3b1SBarry Smith } 31053acd3b1SBarry Smith if (ntext < 3) SETERRQ(PETSC_ERR_ARG_WRONG,"List argument must have at least two entries: typename and type prefix"); 31153acd3b1SBarry Smith ntext -= 3; 31253acd3b1SBarry Smith ierr = PetscOptionsEList(opt,text,man,list,ntext,list[defaultv],(PetscInt*)value,set);CHKERRQ(ierr); 31353acd3b1SBarry Smith PetscFunctionReturn(0); 31453acd3b1SBarry Smith } 31553acd3b1SBarry Smith 31653acd3b1SBarry Smith /* -------------------------------------------------------------------------------------------------------------*/ 31753acd3b1SBarry Smith #undef __FUNCT__ 31853acd3b1SBarry Smith #define __FUNCT__ "PetscOptionsInt" 31953acd3b1SBarry Smith /*@C 32053acd3b1SBarry Smith PetscOptionsInt - Gets the integer value for a particular option in the database. 32153acd3b1SBarry Smith 32253acd3b1SBarry Smith Collective on the communicator passed in PetscOptionsBegin() 32353acd3b1SBarry Smith 32453acd3b1SBarry Smith Input Parameters: 32553acd3b1SBarry Smith + opt - option name 32653acd3b1SBarry Smith . text - short string that describes the option 32753acd3b1SBarry Smith . man - manual page with additional information on option 32853acd3b1SBarry Smith - defaultv - the default (current) value 32953acd3b1SBarry Smith 33053acd3b1SBarry Smith Output Parameter: 33153acd3b1SBarry Smith + value - the integer value to return 33253acd3b1SBarry Smith - flg - PETSC_TRUE if found, else PETSC_FALSE 33353acd3b1SBarry Smith 33453acd3b1SBarry Smith Level: beginner 33553acd3b1SBarry Smith 33653acd3b1SBarry Smith Concepts: options database^has int 33753acd3b1SBarry Smith 33853acd3b1SBarry Smith Notes: Must be between a PetscOptionsBegin() and a PetscOptionsEnd() 33953acd3b1SBarry Smith 34053acd3b1SBarry Smith .seealso: PetscOptionsGetReal(), PetscOptionsHasName(), PetscOptionsGetString(), PetscOptionsGetInt(), 34153acd3b1SBarry Smith PetscOptionsGetIntArray(), PetscOptionsGetRealArray(), PetscOptionsTruth() 34253acd3b1SBarry Smith PetscOptionsInt(), PetscOptionsString(), PetscOptionsReal(), PetscOptionsTruth(), 34353acd3b1SBarry Smith PetscOptionsName(), PetscOptionsBegin(), PetscOptionsEnd(), PetscOptionsHead(), 34453acd3b1SBarry Smith PetscOptionsStringArray(),PetscOptionsRealArray(), PetscOptionsScalar(), 34553acd3b1SBarry Smith PetscOptionsTruthGroupBegin(), PetscOptionsTruthGroup(), PetscOptionsTruthGroupEnd(), 34653acd3b1SBarry Smith PetscOptionsList(), PetscOptionsEList() 34753acd3b1SBarry Smith @*/ 34853acd3b1SBarry Smith PetscErrorCode PETSC_DLLEXPORT PetscOptionsInt(const char opt[],const char text[],const char man[],PetscInt defaultv,PetscInt *value,PetscTruth *set) 34953acd3b1SBarry Smith { 35053acd3b1SBarry Smith PetscErrorCode ierr; 3516356e834SBarry Smith PetscOptions amsopt; 35253acd3b1SBarry Smith 35353acd3b1SBarry Smith PetscFunctionBegin; 3546356e834SBarry Smith if (PetscOptionsPublishCount == 1) { 3556356e834SBarry Smith ierr = PetscOptionsCreate_Private(opt,text,man,OPTION_INT,&amsopt);CHKERRQ(ierr); 3566356e834SBarry Smith ierr = PetscMalloc(sizeof(PetscInt),&amsopt->data);CHKERRQ(ierr); 3576356e834SBarry Smith *(PetscInt*)amsopt->data = defaultv; 3586356e834SBarry Smith } 35953acd3b1SBarry Smith ierr = PetscOptionsGetInt(PetscOptionsObject.prefix,opt,value,set);CHKERRQ(ierr); 36061b37b28SSatish Balay if (PetscOptionsObject.printhelp && PetscOptionsPublishCount == 1 && !PetscOptionsObject.alreadyprinted) { 36153acd3b1SBarry Smith ierr = (*PetscHelpPrintf)(PetscOptionsObject.comm," -%s%s <%d>: %s (%s)\n",PetscOptionsObject.prefix?PetscOptionsObject.prefix:"",opt+1,defaultv,text,man);CHKERRQ(ierr); 36253acd3b1SBarry Smith } 36353acd3b1SBarry Smith PetscFunctionReturn(0); 36453acd3b1SBarry Smith } 36553acd3b1SBarry Smith 36653acd3b1SBarry Smith #undef __FUNCT__ 36753acd3b1SBarry Smith #define __FUNCT__ "PetscOptionsString" 36853acd3b1SBarry Smith /*@C 36953acd3b1SBarry Smith PetscOptionsString - Gets the string value for a particular option in the database. 37053acd3b1SBarry Smith 37153acd3b1SBarry Smith Collective on the communicator passed in PetscOptionsBegin() 37253acd3b1SBarry Smith 37353acd3b1SBarry Smith Input Parameters: 37453acd3b1SBarry Smith + opt - option name 37553acd3b1SBarry Smith . text - short string that describes the option 37653acd3b1SBarry Smith . man - manual page with additional information on option 37753acd3b1SBarry Smith - defaultv - the default (current) value 37853acd3b1SBarry Smith 37953acd3b1SBarry Smith Output Parameter: 38053acd3b1SBarry Smith + value - the value to return 38153acd3b1SBarry Smith - flg - PETSC_TRUE if found, else PETSC_FALSE 38253acd3b1SBarry Smith 38353acd3b1SBarry Smith Level: beginner 38453acd3b1SBarry Smith 38553acd3b1SBarry Smith Concepts: options database^has int 38653acd3b1SBarry Smith 38753acd3b1SBarry Smith Notes: Must be between a PetscOptionsBegin() and a PetscOptionsEnd() 38853acd3b1SBarry Smith 38953acd3b1SBarry Smith .seealso: PetscOptionsGetReal(), PetscOptionsHasName(), PetscOptionsGetString(), PetscOptionsGetInt(), 39053acd3b1SBarry Smith PetscOptionsGetIntArray(), PetscOptionsGetRealArray(), PetscOptionsTruth() 39153acd3b1SBarry Smith PetscOptionsInt(), PetscOptionsString(), PetscOptionsReal(), PetscOptionsTruth(), 39253acd3b1SBarry Smith PetscOptionsName(), PetscOptionsBegin(), PetscOptionsEnd(), PetscOptionsHead(), 39353acd3b1SBarry Smith PetscOptionsStringArray(),PetscOptionsRealArray(), PetscOptionsScalar(), 39453acd3b1SBarry Smith PetscOptionsTruthGroupBegin(), PetscOptionsTruthGroup(), PetscOptionsTruthGroupEnd(), 39553acd3b1SBarry Smith PetscOptionsList(), PetscOptionsEList() 39653acd3b1SBarry Smith @*/ 39753acd3b1SBarry Smith PetscErrorCode PETSC_DLLEXPORT PetscOptionsString(const char opt[],const char text[],const char man[],const char defaultv[],char value[],size_t len,PetscTruth *set) 39853acd3b1SBarry Smith { 39953acd3b1SBarry Smith PetscErrorCode ierr; 40053acd3b1SBarry Smith 40153acd3b1SBarry Smith PetscFunctionBegin; 40253acd3b1SBarry Smith ierr = PetscOptionsGetString(PetscOptionsObject.prefix,opt,value,len,set);CHKERRQ(ierr); 40361b37b28SSatish Balay if (PetscOptionsObject.printhelp && PetscOptionsPublishCount == 1 && !PetscOptionsObject.alreadyprinted) { 40453acd3b1SBarry Smith ierr = (*PetscHelpPrintf)(PetscOptionsObject.comm," -%s%s <%s>: %s (%s)\n",PetscOptionsObject.prefix?PetscOptionsObject.prefix:"",opt+1,defaultv,text,man);CHKERRQ(ierr); 40553acd3b1SBarry Smith } 40653acd3b1SBarry Smith PetscFunctionReturn(0); 40753acd3b1SBarry Smith } 40853acd3b1SBarry Smith 40953acd3b1SBarry Smith /* 41053acd3b1SBarry Smith Publishes an AMS double field (with the default value in it) and with a name 41153acd3b1SBarry Smith given by the text string 41253acd3b1SBarry Smith */ 41353acd3b1SBarry Smith #undef __FUNCT__ 41453acd3b1SBarry Smith #define __FUNCT__ "PetscOptionsReal" 41553acd3b1SBarry Smith /*@C 41653acd3b1SBarry Smith PetscOptionsReal - Gets the PetscReal value for a particular option in the database. 41753acd3b1SBarry Smith 41853acd3b1SBarry Smith Collective on the communicator passed in PetscOptionsBegin() 41953acd3b1SBarry Smith 42053acd3b1SBarry Smith Input Parameters: 42153acd3b1SBarry Smith + opt - option name 42253acd3b1SBarry Smith . text - short string that describes the option 42353acd3b1SBarry Smith . man - manual page with additional information on option 42453acd3b1SBarry Smith - defaultv - the default (current) value 42553acd3b1SBarry Smith 42653acd3b1SBarry Smith Output Parameter: 42753acd3b1SBarry Smith + value - the value to return 42853acd3b1SBarry Smith - flg - PETSC_TRUE if found, else PETSC_FALSE 42953acd3b1SBarry Smith 43053acd3b1SBarry Smith Level: beginner 43153acd3b1SBarry Smith 43253acd3b1SBarry Smith Concepts: options database^has int 43353acd3b1SBarry Smith 43453acd3b1SBarry Smith Notes: Must be between a PetscOptionsBegin() and a PetscOptionsEnd() 43553acd3b1SBarry Smith 43653acd3b1SBarry Smith .seealso: PetscOptionsGetReal(), PetscOptionsHasName(), PetscOptionsGetString(), PetscOptionsGetInt(), 43753acd3b1SBarry Smith PetscOptionsGetIntArray(), PetscOptionsGetRealArray(), PetscOptionsTruth() 43853acd3b1SBarry Smith PetscOptionsInt(), PetscOptionsString(), PetscOptionsReal(), PetscOptionsTruth(), 43953acd3b1SBarry Smith PetscOptionsName(), PetscOptionsBegin(), PetscOptionsEnd(), PetscOptionsHead(), 44053acd3b1SBarry Smith PetscOptionsStringArray(),PetscOptionsRealArray(), PetscOptionsScalar(), 44153acd3b1SBarry Smith PetscOptionsTruthGroupBegin(), PetscOptionsTruthGroup(), PetscOptionsTruthGroupEnd(), 44253acd3b1SBarry Smith PetscOptionsList(), PetscOptionsEList() 44353acd3b1SBarry Smith @*/ 44453acd3b1SBarry Smith PetscErrorCode PETSC_DLLEXPORT PetscOptionsReal(const char opt[],const char text[],const char man[],PetscReal defaultv,PetscReal *value,PetscTruth *set) 44553acd3b1SBarry Smith { 44653acd3b1SBarry Smith PetscErrorCode ierr; 44753acd3b1SBarry Smith 44853acd3b1SBarry Smith PetscFunctionBegin; 44953acd3b1SBarry Smith ierr = PetscOptionsGetReal(PetscOptionsObject.prefix,opt,value,set);CHKERRQ(ierr); 45061b37b28SSatish Balay if (PetscOptionsObject.printhelp && PetscOptionsPublishCount == 1 && !PetscOptionsObject.alreadyprinted) { 451a83599f4SBarry Smith ierr = (*PetscHelpPrintf)(PetscOptionsObject.comm," -%s%s <%G>: %s (%s)\n",PetscOptionsObject.prefix?PetscOptionsObject.prefix:"",opt+1,defaultv,text,man);CHKERRQ(ierr); 45253acd3b1SBarry Smith } 45353acd3b1SBarry Smith PetscFunctionReturn(0); 45453acd3b1SBarry Smith } 45553acd3b1SBarry Smith 45653acd3b1SBarry Smith #undef __FUNCT__ 45753acd3b1SBarry Smith #define __FUNCT__ "PetscOptionsScalar" 45853acd3b1SBarry Smith /*@C 45953acd3b1SBarry Smith PetscOptionsScalar - Gets the scalar value for a particular option in the database. 46053acd3b1SBarry Smith 46153acd3b1SBarry Smith Collective on the communicator passed in PetscOptionsBegin() 46253acd3b1SBarry Smith 46353acd3b1SBarry Smith Input Parameters: 46453acd3b1SBarry Smith + opt - option name 46553acd3b1SBarry Smith . text - short string that describes the option 46653acd3b1SBarry Smith . man - manual page with additional information on option 46753acd3b1SBarry Smith - defaultv - the default (current) value 46853acd3b1SBarry Smith 46953acd3b1SBarry Smith Output Parameter: 47053acd3b1SBarry Smith + value - the value to return 47153acd3b1SBarry Smith - flg - PETSC_TRUE if found, else PETSC_FALSE 47253acd3b1SBarry Smith 47353acd3b1SBarry Smith Level: beginner 47453acd3b1SBarry Smith 47553acd3b1SBarry Smith Concepts: options database^has int 47653acd3b1SBarry Smith 47753acd3b1SBarry Smith Notes: Must be between a PetscOptionsBegin() and a PetscOptionsEnd() 47853acd3b1SBarry Smith 47953acd3b1SBarry Smith .seealso: PetscOptionsGetReal(), PetscOptionsHasName(), PetscOptionsGetString(), PetscOptionsGetInt(), 48053acd3b1SBarry Smith PetscOptionsGetIntArray(), PetscOptionsGetRealArray(), PetscOptionsTruth() 48153acd3b1SBarry Smith PetscOptionsInt(), PetscOptionsString(), PetscOptionsReal(), PetscOptionsTruth(), 48253acd3b1SBarry Smith PetscOptionsName(), PetscOptionsBegin(), PetscOptionsEnd(), PetscOptionsHead(), 48353acd3b1SBarry Smith PetscOptionsStringArray(),PetscOptionsRealArray(), PetscOptionsScalar(), 48453acd3b1SBarry Smith PetscOptionsTruthGroupBegin(), PetscOptionsTruthGroup(), PetscOptionsTruthGroupEnd(), 48553acd3b1SBarry Smith PetscOptionsList(), PetscOptionsEList() 48653acd3b1SBarry Smith @*/ 48753acd3b1SBarry Smith PetscErrorCode PETSC_DLLEXPORT PetscOptionsScalar(const char opt[],const char text[],const char man[],PetscScalar defaultv,PetscScalar *value,PetscTruth *set) 48853acd3b1SBarry Smith { 48953acd3b1SBarry Smith PetscErrorCode ierr; 49053acd3b1SBarry Smith 49153acd3b1SBarry Smith PetscFunctionBegin; 49253acd3b1SBarry Smith #if !defined(PETSC_USE_COMPLEX) 49353acd3b1SBarry Smith ierr = PetscOptionsReal(opt,text,man,defaultv,value,set);CHKERRQ(ierr); 49453acd3b1SBarry Smith #else 49553acd3b1SBarry Smith ierr = PetscOptionsGetScalar(PetscOptionsObject.prefix,opt,value,set);CHKERRQ(ierr); 49653acd3b1SBarry Smith #endif 49753acd3b1SBarry Smith PetscFunctionReturn(0); 49853acd3b1SBarry Smith } 49953acd3b1SBarry Smith 50053acd3b1SBarry Smith /* 50153acd3b1SBarry Smith Publishes an AMS logical field (with the default value in it) and with a name 50253acd3b1SBarry Smith given by the text string 50353acd3b1SBarry Smith */ 50453acd3b1SBarry Smith #undef __FUNCT__ 50553acd3b1SBarry Smith #define __FUNCT__ "PetscOptionsName" 50653acd3b1SBarry Smith /*@C 50753acd3b1SBarry Smith PetscOptionsName - Determines if a particular option is in the database 50853acd3b1SBarry Smith 50953acd3b1SBarry Smith Collective on the communicator passed in PetscOptionsBegin() 51053acd3b1SBarry Smith 51153acd3b1SBarry Smith Input Parameters: 51253acd3b1SBarry Smith + opt - option name 51353acd3b1SBarry Smith . text - short string that describes the option 51453acd3b1SBarry Smith - man - manual page with additional information on option 51553acd3b1SBarry Smith 51653acd3b1SBarry Smith Output Parameter: 51753acd3b1SBarry Smith . flg - PETSC_TRUE if found, else PETSC_FALSE 51853acd3b1SBarry Smith 51953acd3b1SBarry Smith Level: beginner 52053acd3b1SBarry Smith 52153acd3b1SBarry Smith Concepts: options database^has int 52253acd3b1SBarry Smith 52353acd3b1SBarry Smith Notes: Must be between a PetscOptionsBegin() and a PetscOptionsEnd() 52453acd3b1SBarry Smith 52553acd3b1SBarry Smith .seealso: PetscOptionsGetReal(), PetscOptionsHasName(), PetscOptionsGetString(), PetscOptionsGetInt(), 52653acd3b1SBarry Smith PetscOptionsGetIntArray(), PetscOptionsGetRealArray(), PetscOptionsTruth() 52753acd3b1SBarry Smith PetscOptionsInt(), PetscOptionsString(), PetscOptionsReal(), PetscOptionsTruth(), 52853acd3b1SBarry Smith PetscOptionsName(), PetscOptionsBegin(), PetscOptionsEnd(), PetscOptionsHead(), 52953acd3b1SBarry Smith PetscOptionsStringArray(),PetscOptionsRealArray(), PetscOptionsScalar(), 53053acd3b1SBarry Smith PetscOptionsTruthGroupBegin(), PetscOptionsTruthGroup(), PetscOptionsTruthGroupEnd(), 53153acd3b1SBarry Smith PetscOptionsList(), PetscOptionsEList() 53253acd3b1SBarry Smith @*/ 53353acd3b1SBarry Smith PetscErrorCode PETSC_DLLEXPORT PetscOptionsName(const char opt[],const char text[],const char man[],PetscTruth *flg) 53453acd3b1SBarry Smith { 53553acd3b1SBarry Smith PetscErrorCode ierr; 53653acd3b1SBarry Smith 53753acd3b1SBarry Smith PetscFunctionBegin; 53853acd3b1SBarry Smith ierr = PetscOptionsHasName(PetscOptionsObject.prefix,opt,flg);CHKERRQ(ierr); 53961b37b28SSatish Balay if (PetscOptionsObject.printhelp && PetscOptionsPublishCount == 1 && !PetscOptionsObject.alreadyprinted) { 54053acd3b1SBarry Smith ierr = (*PetscHelpPrintf)(PetscOptionsObject.comm," -%s%s: %s (%s)\n",PetscOptionsObject.prefix?PetscOptionsObject.prefix:"",opt+1,text,man);CHKERRQ(ierr); 54153acd3b1SBarry Smith } 54253acd3b1SBarry Smith PetscFunctionReturn(0); 54353acd3b1SBarry Smith } 54453acd3b1SBarry Smith 54553acd3b1SBarry Smith #undef __FUNCT__ 54653acd3b1SBarry Smith #define __FUNCT__ "PetscOptionsList" 54753acd3b1SBarry Smith /*@C 54853acd3b1SBarry Smith PetscOptionsList - Puts a list of option values that a single one may be selected from 54953acd3b1SBarry Smith 55053acd3b1SBarry Smith Collective on the communicator passed in PetscOptionsBegin() 55153acd3b1SBarry Smith 55253acd3b1SBarry Smith Input Parameters: 55353acd3b1SBarry Smith + opt - option name 55453acd3b1SBarry Smith . text - short string that describes the option 55553acd3b1SBarry Smith . man - manual page with additional information on option 55653acd3b1SBarry Smith . list - the possible choices 55753acd3b1SBarry Smith - defaultv - the default (current) value 55853acd3b1SBarry Smith 55953acd3b1SBarry Smith Output Parameter: 56053acd3b1SBarry Smith + value - the value to return 56153acd3b1SBarry Smith - set - PETSC_TRUE if found, else PETSC_FALSE 56253acd3b1SBarry Smith 56353acd3b1SBarry Smith Level: intermediate 56453acd3b1SBarry Smith 56553acd3b1SBarry Smith Notes: Must be between a PetscOptionsBegin() and a PetscOptionsEnd() 56653acd3b1SBarry Smith 56753acd3b1SBarry Smith See PetscOptionsEList() for when the choices are given in a string array 56853acd3b1SBarry Smith 56953acd3b1SBarry Smith To get a listing of all currently specified options, 57053acd3b1SBarry Smith see PetscOptionsPrint() or PetscOptionsGetAll() 57153acd3b1SBarry Smith 57253acd3b1SBarry Smith Concepts: options database^list 57353acd3b1SBarry Smith 57453acd3b1SBarry Smith .seealso: PetscOptionsGetInt(), PetscOptionsGetReal(), 57553acd3b1SBarry Smith PetscOptionsHasName(), PetscOptionsGetIntArray(), PetscOptionsGetRealArray(), PetscOptionsTruth(), 57653acd3b1SBarry Smith PetscOptionsName(), PetscOptionsBegin(), PetscOptionsEnd(), PetscOptionsHead(), 57753acd3b1SBarry Smith PetscOptionsStringArray(),PetscOptionsRealArray(), PetscOptionsScalar(), 57853acd3b1SBarry Smith PetscOptionsTruthGroupBegin(), PetscOptionsTruthGroup(), PetscOptionsTruthGroupEnd(), 57953acd3b1SBarry Smith PetscOptionsList(), PetscOptionsEList() 58053acd3b1SBarry Smith @*/ 58153acd3b1SBarry 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) 58253acd3b1SBarry Smith { 58353acd3b1SBarry Smith PetscErrorCode ierr; 58453acd3b1SBarry Smith 58553acd3b1SBarry Smith PetscFunctionBegin; 58653acd3b1SBarry Smith ierr = PetscOptionsGetString(PetscOptionsObject.prefix,opt,value,len,set);CHKERRQ(ierr); 58761b37b28SSatish Balay if (PetscOptionsObject.printhelp && PetscOptionsPublishCount == 1 && !PetscOptionsObject.alreadyprinted) { 5881d280d73SBarry Smith ierr = PetscFListPrintTypes(list,PetscOptionsObject.comm,stdout,PetscOptionsObject.prefix,opt,ltext,man);CHKERRQ(ierr);CHKERRQ(ierr); 58953acd3b1SBarry Smith } 59053acd3b1SBarry Smith PetscFunctionReturn(0); 59153acd3b1SBarry Smith } 59253acd3b1SBarry Smith 59353acd3b1SBarry Smith #undef __FUNCT__ 59453acd3b1SBarry Smith #define __FUNCT__ "PetscOptionsEList" 59553acd3b1SBarry Smith /*@C 59653acd3b1SBarry Smith PetscOptionsEList - Puts a list of option values that a single one may be selected from 59753acd3b1SBarry Smith 59853acd3b1SBarry Smith Collective on the communicator passed in PetscOptionsBegin() 59953acd3b1SBarry Smith 60053acd3b1SBarry Smith Input Parameters: 60153acd3b1SBarry Smith + opt - option name 60253acd3b1SBarry Smith . ltext - short string that describes the option 60353acd3b1SBarry Smith . man - manual page with additional information on option 60453acd3b1SBarry Smith . list - the possible choices 60553acd3b1SBarry Smith . ntext - number of choices 60653acd3b1SBarry Smith - defaultv - the default (current) value 60753acd3b1SBarry Smith 60853acd3b1SBarry Smith Output Parameter: 60953acd3b1SBarry Smith + value - the index of the value to return 61053acd3b1SBarry Smith - set - PETSC_TRUE if found, else PETSC_FALSE 61153acd3b1SBarry Smith 61253acd3b1SBarry Smith Level: intermediate 61353acd3b1SBarry Smith 61453acd3b1SBarry Smith Notes: Must be between a PetscOptionsBegin() and a PetscOptionsEnd() 61553acd3b1SBarry Smith 61653acd3b1SBarry Smith See PetscOptionsList() for when the choices are given in a PetscFList() 61753acd3b1SBarry Smith 61853acd3b1SBarry Smith Concepts: options database^list 61953acd3b1SBarry Smith 62053acd3b1SBarry Smith .seealso: PetscOptionsGetInt(), PetscOptionsGetReal(), 62153acd3b1SBarry Smith PetscOptionsHasName(), PetscOptionsGetIntArray(), PetscOptionsGetRealArray(), PetscOptionsTruth(), 62253acd3b1SBarry Smith PetscOptionsName(), PetscOptionsBegin(), PetscOptionsEnd(), PetscOptionsHead(), 62353acd3b1SBarry Smith PetscOptionsStringArray(),PetscOptionsRealArray(), PetscOptionsScalar(), 62453acd3b1SBarry Smith PetscOptionsTruthGroupBegin(), PetscOptionsTruthGroup(), PetscOptionsTruthGroupEnd(), 62553acd3b1SBarry Smith PetscOptionsList(), PetscOptionsEList() 62653acd3b1SBarry Smith @*/ 62753acd3b1SBarry 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) 62853acd3b1SBarry Smith { 62953acd3b1SBarry Smith PetscErrorCode ierr; 63053acd3b1SBarry Smith PetscInt i; 63153acd3b1SBarry Smith 63253acd3b1SBarry Smith PetscFunctionBegin; 63353acd3b1SBarry Smith ierr = PetscOptionsGetEList(PetscOptionsObject.prefix,opt,list,ntext,value,set);CHKERRQ(ierr); 63461b37b28SSatish Balay if (PetscOptionsObject.printhelp && PetscOptionsPublishCount == 1 && !PetscOptionsObject.alreadyprinted) { 63553acd3b1SBarry Smith ierr = (*PetscHelpPrintf)(PetscOptionsObject.comm," -%s%s <%s> (choose one of)",PetscOptionsObject.prefix?PetscOptionsObject.prefix:"",opt+1,defaultv);CHKERRQ(ierr); 63653acd3b1SBarry Smith for (i=0; i<ntext; i++){ 63753acd3b1SBarry Smith ierr = (*PetscHelpPrintf)(PetscOptionsObject.comm," %s",list[i]);CHKERRQ(ierr); 63853acd3b1SBarry Smith } 63953acd3b1SBarry Smith ierr = (*PetscHelpPrintf)(PetscOptionsObject.comm,"\n");CHKERRQ(ierr); 64053acd3b1SBarry Smith } 64153acd3b1SBarry Smith PetscFunctionReturn(0); 64253acd3b1SBarry Smith } 64353acd3b1SBarry Smith 64453acd3b1SBarry Smith #undef __FUNCT__ 64553acd3b1SBarry Smith #define __FUNCT__ "PetscOptionsTruthGroupBegin" 64653acd3b1SBarry Smith /*@C 64753acd3b1SBarry Smith PetscOptionsTruthGroupBegin - First in a series of logical queries on the options database for 64853acd3b1SBarry Smith which only a single value can be true. 64953acd3b1SBarry Smith 65053acd3b1SBarry Smith Collective on the communicator passed in PetscOptionsBegin() 65153acd3b1SBarry Smith 65253acd3b1SBarry Smith Input Parameters: 65353acd3b1SBarry Smith + opt - option name 65453acd3b1SBarry Smith . text - short string that describes the option 65553acd3b1SBarry Smith - man - manual page with additional information on option 65653acd3b1SBarry Smith 65753acd3b1SBarry Smith Output Parameter: 65853acd3b1SBarry Smith . flg - whether that option was set or not 65953acd3b1SBarry Smith 66053acd3b1SBarry Smith Level: intermediate 66153acd3b1SBarry Smith 66253acd3b1SBarry Smith Notes: Must be between a PetscOptionsBegin() and a PetscOptionsEnd() 66353acd3b1SBarry Smith 66453acd3b1SBarry Smith Must be followed by 0 or more PetscOptionsTruthGroup()s and PetscOptionsTruthGroupEnd() 66553acd3b1SBarry Smith 66653acd3b1SBarry Smith Concepts: options database^logical group 66753acd3b1SBarry Smith 66853acd3b1SBarry Smith .seealso: PetscOptionsGetInt(), PetscOptionsGetReal(), 66953acd3b1SBarry Smith PetscOptionsHasName(), PetscOptionsGetIntArray(), PetscOptionsGetRealArray(), PetscOptionsTruth(), 67053acd3b1SBarry Smith PetscOptionsName(), PetscOptionsBegin(), PetscOptionsEnd(), PetscOptionsHead(), 67153acd3b1SBarry Smith PetscOptionsStringArray(),PetscOptionsRealArray(), PetscOptionsScalar(), 67253acd3b1SBarry Smith PetscOptionsTruthGroupBegin(), PetscOptionsTruthGroup(), PetscOptionsTruthGroupEnd(), 67353acd3b1SBarry Smith PetscOptionsList(), PetscOptionsEList() 67453acd3b1SBarry Smith @*/ 67553acd3b1SBarry Smith PetscErrorCode PETSC_DLLEXPORT PetscOptionsTruthGroupBegin(const char opt[],const char text[],const char man[],PetscTruth *flg) 67653acd3b1SBarry Smith { 67753acd3b1SBarry Smith PetscErrorCode ierr; 67853acd3b1SBarry Smith 67953acd3b1SBarry Smith PetscFunctionBegin; 68053acd3b1SBarry Smith ierr = PetscOptionsHasName(PetscOptionsObject.prefix,opt,flg);CHKERRQ(ierr); 68161b37b28SSatish Balay if (PetscOptionsObject.printhelp && PetscOptionsPublishCount == 1 && !PetscOptionsObject.alreadyprinted) { 68253acd3b1SBarry Smith ierr = (*PetscHelpPrintf)(PetscOptionsObject.comm," Pick at most one of -------------\n");CHKERRQ(ierr); 68353acd3b1SBarry Smith ierr = (*PetscHelpPrintf)(PetscOptionsObject.comm," -%s%s: %s (%s)\n",PetscOptionsObject.prefix?PetscOptionsObject.prefix:"",opt+1,text,man);CHKERRQ(ierr); 68453acd3b1SBarry Smith } 68553acd3b1SBarry Smith PetscFunctionReturn(0); 68653acd3b1SBarry Smith } 68753acd3b1SBarry Smith 68853acd3b1SBarry Smith #undef __FUNCT__ 68953acd3b1SBarry Smith #define __FUNCT__ "PetscOptionsTruthGroup" 69053acd3b1SBarry Smith /*@C 69153acd3b1SBarry Smith PetscOptionsTruthGroup - One in a series of logical queries on the options database for 69253acd3b1SBarry Smith which only a single value can be true. 69353acd3b1SBarry Smith 69453acd3b1SBarry Smith Collective on the communicator passed in PetscOptionsBegin() 69553acd3b1SBarry Smith 69653acd3b1SBarry Smith Input Parameters: 69753acd3b1SBarry Smith + opt - option name 69853acd3b1SBarry Smith . text - short string that describes the option 69953acd3b1SBarry Smith - man - manual page with additional information on option 70053acd3b1SBarry Smith 70153acd3b1SBarry Smith Output Parameter: 70253acd3b1SBarry Smith . flg - PETSC_TRUE if found, else PETSC_FALSE 70353acd3b1SBarry Smith 70453acd3b1SBarry Smith Level: intermediate 70553acd3b1SBarry Smith 70653acd3b1SBarry Smith Notes: Must be between a PetscOptionsBegin() and a PetscOptionsEnd() 70753acd3b1SBarry Smith 70853acd3b1SBarry Smith Must follow a PetscOptionsTruthGroupBegin() and preceded a PetscOptionsTruthGroupEnd() 70953acd3b1SBarry Smith 71053acd3b1SBarry Smith Concepts: options database^logical group 71153acd3b1SBarry Smith 71253acd3b1SBarry Smith .seealso: PetscOptionsGetInt(), PetscOptionsGetReal(), 71353acd3b1SBarry Smith PetscOptionsHasName(), PetscOptionsGetIntArray(), PetscOptionsGetRealArray(), PetscOptionsTruth(), 71453acd3b1SBarry Smith PetscOptionsName(), PetscOptionsBegin(), PetscOptionsEnd(), PetscOptionsHead(), 71553acd3b1SBarry Smith PetscOptionsStringArray(),PetscOptionsRealArray(), PetscOptionsScalar(), 71653acd3b1SBarry Smith PetscOptionsTruthGroupBegin(), PetscOptionsTruthGroup(), PetscOptionsTruthGroupEnd(), 71753acd3b1SBarry Smith PetscOptionsList(), PetscOptionsEList() 71853acd3b1SBarry Smith @*/ 71953acd3b1SBarry Smith PetscErrorCode PETSC_DLLEXPORT PetscOptionsTruthGroup(const char opt[],const char text[],const char man[],PetscTruth *flg) 72053acd3b1SBarry Smith { 72153acd3b1SBarry Smith PetscErrorCode ierr; 72253acd3b1SBarry Smith 72353acd3b1SBarry Smith PetscFunctionBegin; 72453acd3b1SBarry Smith ierr = PetscOptionsHasName(PetscOptionsObject.prefix,opt,flg);CHKERRQ(ierr); 72561b37b28SSatish Balay if (PetscOptionsObject.printhelp && PetscOptionsPublishCount == 1 && !PetscOptionsObject.alreadyprinted) { 72653acd3b1SBarry Smith ierr = (*PetscHelpPrintf)(PetscOptionsObject.comm," -%s%s: %s (%s)\n",PetscOptionsObject.prefix?PetscOptionsObject.prefix:"",opt+1,text,man);CHKERRQ(ierr); 72753acd3b1SBarry Smith } 72853acd3b1SBarry Smith PetscFunctionReturn(0); 72953acd3b1SBarry Smith } 73053acd3b1SBarry Smith 73153acd3b1SBarry Smith #undef __FUNCT__ 73253acd3b1SBarry Smith #define __FUNCT__ "PetscOptionsTruthGroupEnd" 73353acd3b1SBarry Smith /*@C 73453acd3b1SBarry Smith PetscOptionsTruthGroupEnd - Last in a series of logical queries on the options database for 73553acd3b1SBarry Smith which only a single value can be true. 73653acd3b1SBarry Smith 73753acd3b1SBarry Smith Collective on the communicator passed in PetscOptionsBegin() 73853acd3b1SBarry Smith 73953acd3b1SBarry Smith Input Parameters: 74053acd3b1SBarry Smith + opt - option name 74153acd3b1SBarry Smith . text - short string that describes the option 74253acd3b1SBarry Smith - man - manual page with additional information on option 74353acd3b1SBarry Smith 74453acd3b1SBarry Smith Output Parameter: 74553acd3b1SBarry Smith . flg - PETSC_TRUE if found, else PETSC_FALSE 74653acd3b1SBarry Smith 74753acd3b1SBarry Smith Level: intermediate 74853acd3b1SBarry Smith 74953acd3b1SBarry Smith Notes: Must be between a PetscOptionsBegin() and a PetscOptionsEnd() 75053acd3b1SBarry Smith 75153acd3b1SBarry Smith Must follow a PetscOptionsTruthGroupBegin() 75253acd3b1SBarry Smith 75353acd3b1SBarry Smith Concepts: options database^logical group 75453acd3b1SBarry Smith 75553acd3b1SBarry Smith .seealso: PetscOptionsGetInt(), PetscOptionsGetReal(), 75653acd3b1SBarry Smith PetscOptionsHasName(), PetscOptionsGetIntArray(), PetscOptionsGetRealArray(), PetscOptionsTruth(), 75753acd3b1SBarry Smith PetscOptionsName(), PetscOptionsBegin(), PetscOptionsEnd(), PetscOptionsHead(), 75853acd3b1SBarry Smith PetscOptionsStringArray(),PetscOptionsRealArray(), PetscOptionsScalar(), 75953acd3b1SBarry Smith PetscOptionsTruthGroupBegin(), PetscOptionsTruthGroup(), PetscOptionsTruthGroupEnd(), 76053acd3b1SBarry Smith PetscOptionsList(), PetscOptionsEList() 76153acd3b1SBarry Smith @*/ 76253acd3b1SBarry Smith PetscErrorCode PETSC_DLLEXPORT PetscOptionsTruthGroupEnd(const char opt[],const char text[],const char man[],PetscTruth *flg) 76353acd3b1SBarry Smith { 76453acd3b1SBarry Smith PetscErrorCode ierr; 76553acd3b1SBarry Smith 76653acd3b1SBarry Smith PetscFunctionBegin; 76753acd3b1SBarry Smith ierr = PetscOptionsHasName(PetscOptionsObject.prefix,opt,flg);CHKERRQ(ierr); 76861b37b28SSatish Balay if (PetscOptionsObject.printhelp && PetscOptionsPublishCount == 1 && !PetscOptionsObject.alreadyprinted) { 76953acd3b1SBarry Smith ierr = (*PetscHelpPrintf)(PetscOptionsObject.comm," -%s%s: %s (%s)\n",PetscOptionsObject.prefix?PetscOptionsObject.prefix:"",opt+1,text,man);CHKERRQ(ierr); 77053acd3b1SBarry Smith } 77153acd3b1SBarry Smith PetscFunctionReturn(0); 77253acd3b1SBarry Smith } 77353acd3b1SBarry Smith 77453acd3b1SBarry Smith #undef __FUNCT__ 77553acd3b1SBarry Smith #define __FUNCT__ "PetscOptionsTruth" 77653acd3b1SBarry Smith /*@C 77753acd3b1SBarry Smith PetscOptionsTruth - Determines if a particular option is in the database with a true or false 77853acd3b1SBarry Smith 77953acd3b1SBarry Smith Collective on the communicator passed in PetscOptionsBegin() 78053acd3b1SBarry Smith 78153acd3b1SBarry Smith Input Parameters: 78253acd3b1SBarry Smith + opt - option name 78353acd3b1SBarry Smith . text - short string that describes the option 78453acd3b1SBarry Smith - man - manual page with additional information on option 78553acd3b1SBarry Smith 78653acd3b1SBarry Smith Output Parameter: 78753acd3b1SBarry Smith . flg - PETSC_TRUE or PETSC_FALSE 78853acd3b1SBarry Smith . set - PETSC_TRUE if found, else PETSC_FALSE 78953acd3b1SBarry Smith 79053acd3b1SBarry Smith Level: beginner 79153acd3b1SBarry Smith 79253acd3b1SBarry Smith Concepts: options database^logical 79353acd3b1SBarry Smith 79453acd3b1SBarry Smith Notes: Must be between a PetscOptionsBegin() and a PetscOptionsEnd() 79553acd3b1SBarry Smith 79653acd3b1SBarry Smith .seealso: PetscOptionsGetReal(), PetscOptionsHasName(), PetscOptionsGetString(), PetscOptionsGetInt(), 79753acd3b1SBarry Smith PetscOptionsGetIntArray(), PetscOptionsGetRealArray(), PetscOptionsTruth() 79853acd3b1SBarry Smith PetscOptionsInt(), PetscOptionsString(), PetscOptionsReal(), PetscOptionsTruth(), 79953acd3b1SBarry Smith PetscOptionsName(), PetscOptionsBegin(), PetscOptionsEnd(), PetscOptionsHead(), 80053acd3b1SBarry Smith PetscOptionsStringArray(),PetscOptionsRealArray(), PetscOptionsScalar(), 80153acd3b1SBarry Smith PetscOptionsTruthGroupBegin(), PetscOptionsTruthGroup(), PetscOptionsTruthGroupEnd(), 80253acd3b1SBarry Smith PetscOptionsList(), PetscOptionsEList() 80353acd3b1SBarry Smith @*/ 80453acd3b1SBarry Smith PetscErrorCode PETSC_DLLEXPORT PetscOptionsTruth(const char opt[],const char text[],const char man[],PetscTruth deflt,PetscTruth *flg,PetscTruth *set) 80553acd3b1SBarry Smith { 80653acd3b1SBarry Smith PetscErrorCode ierr; 80753acd3b1SBarry Smith PetscTruth iset; 80853acd3b1SBarry Smith 80953acd3b1SBarry Smith PetscFunctionBegin; 81053acd3b1SBarry Smith ierr = PetscOptionsGetTruth(PetscOptionsObject.prefix,opt,flg,&iset);CHKERRQ(ierr); 81153acd3b1SBarry Smith if (!iset) { 81253acd3b1SBarry Smith if (flg) *flg = deflt; 81353acd3b1SBarry Smith } 81453acd3b1SBarry Smith if (set) *set = iset; 81561b37b28SSatish Balay if (PetscOptionsObject.printhelp && PetscOptionsPublishCount == 1 && !PetscOptionsObject.alreadyprinted) { 81653acd3b1SBarry Smith const char *v = PetscTruths[deflt]; 81753acd3b1SBarry Smith ierr = (*PetscHelpPrintf)(PetscOptionsObject.comm," -%s%s: <%s> %s (%s)\n",PetscOptionsObject.prefix?PetscOptionsObject.prefix:"",opt+1,v,text,man);CHKERRQ(ierr); 81853acd3b1SBarry Smith } 81953acd3b1SBarry Smith PetscFunctionReturn(0); 82053acd3b1SBarry Smith } 82153acd3b1SBarry Smith 82253acd3b1SBarry Smith #undef __FUNCT__ 82353acd3b1SBarry Smith #define __FUNCT__ "PetscOptionsRealArray" 82453acd3b1SBarry Smith /*@C 82553acd3b1SBarry Smith PetscOptionsRealArray - Gets an array of double values for a particular 82653acd3b1SBarry Smith option in the database. The values must be separated with commas with 82753acd3b1SBarry Smith no intervening spaces. 82853acd3b1SBarry Smith 82953acd3b1SBarry Smith Collective on the communicator passed in PetscOptionsBegin() 83053acd3b1SBarry Smith 83153acd3b1SBarry Smith Input Parameters: 83253acd3b1SBarry Smith + opt - the option one is seeking 83353acd3b1SBarry Smith . text - short string describing option 83453acd3b1SBarry Smith . man - manual page for option 83553acd3b1SBarry Smith - nmax - maximum number of values 83653acd3b1SBarry Smith 83753acd3b1SBarry Smith Output Parameter: 83853acd3b1SBarry Smith + value - location to copy values 83953acd3b1SBarry Smith . nmax - actual number of values found 84053acd3b1SBarry Smith - set - PETSC_TRUE if found, else PETSC_FALSE 84153acd3b1SBarry Smith 84253acd3b1SBarry Smith Level: beginner 84353acd3b1SBarry Smith 84453acd3b1SBarry Smith Notes: 84553acd3b1SBarry Smith The user should pass in an array of doubles 84653acd3b1SBarry Smith 84753acd3b1SBarry Smith Must be between a PetscOptionsBegin() and a PetscOptionsEnd() 84853acd3b1SBarry Smith 84953acd3b1SBarry Smith Concepts: options database^array of strings 85053acd3b1SBarry Smith 85153acd3b1SBarry Smith .seealso: PetscOptionsGetInt(), PetscOptionsGetReal(), 85253acd3b1SBarry Smith PetscOptionsHasName(), PetscOptionsGetIntArray(), PetscOptionsGetRealArray(), PetscOptionsTruth(), 85353acd3b1SBarry Smith PetscOptionsName(), PetscOptionsBegin(), PetscOptionsEnd(), PetscOptionsHead(), 85453acd3b1SBarry Smith PetscOptionsStringArray(),PetscOptionsRealArray(), PetscOptionsScalar(), 85553acd3b1SBarry Smith PetscOptionsTruthGroupBegin(), PetscOptionsTruthGroup(), PetscOptionsTruthGroupEnd(), 85653acd3b1SBarry Smith PetscOptionsList(), PetscOptionsEList() 85753acd3b1SBarry Smith @*/ 85853acd3b1SBarry Smith PetscErrorCode PETSC_DLLEXPORT PetscOptionsRealArray(const char opt[],const char text[],const char man[],PetscReal value[],PetscInt *n,PetscTruth *set) 85953acd3b1SBarry Smith { 86053acd3b1SBarry Smith PetscErrorCode ierr; 86153acd3b1SBarry Smith PetscInt i; 86253acd3b1SBarry Smith 86353acd3b1SBarry Smith PetscFunctionBegin; 86453acd3b1SBarry Smith ierr = PetscOptionsGetRealArray(PetscOptionsObject.prefix,opt,value,n,set);CHKERRQ(ierr); 86561b37b28SSatish Balay if (PetscOptionsObject.printhelp && PetscOptionsPublishCount == 1 && !PetscOptionsObject.alreadyprinted) { 866a83599f4SBarry Smith ierr = (*PetscHelpPrintf)(PetscOptionsObject.comm," -%s%s <%G",PetscOptionsObject.prefix?PetscOptionsObject.prefix:"",opt+1,value[0]);CHKERRQ(ierr); 86753acd3b1SBarry Smith for (i=1; i<*n; i++) { 868a83599f4SBarry Smith ierr = (*PetscHelpPrintf)(PetscOptionsObject.comm,",%G",value[i]);CHKERRQ(ierr); 86953acd3b1SBarry Smith } 87053acd3b1SBarry Smith ierr = (*PetscHelpPrintf)(PetscOptionsObject.comm,">: %s (%s)\n",text,man);CHKERRQ(ierr); 87153acd3b1SBarry Smith } 87253acd3b1SBarry Smith PetscFunctionReturn(0); 87353acd3b1SBarry Smith } 87453acd3b1SBarry Smith 87553acd3b1SBarry Smith 87653acd3b1SBarry Smith #undef __FUNCT__ 87753acd3b1SBarry Smith #define __FUNCT__ "PetscOptionsIntArray" 87853acd3b1SBarry Smith /*@C 87953acd3b1SBarry Smith PetscOptionsIntArray - Gets an array of integers for a particular 88053acd3b1SBarry Smith option in the database. The values must be separated with commas with 88153acd3b1SBarry Smith no intervening spaces. 88253acd3b1SBarry Smith 88353acd3b1SBarry Smith Collective on the communicator passed in PetscOptionsBegin() 88453acd3b1SBarry Smith 88553acd3b1SBarry Smith Input Parameters: 88653acd3b1SBarry Smith + opt - the option one is seeking 88753acd3b1SBarry Smith . text - short string describing option 88853acd3b1SBarry Smith . man - manual page for option 88953acd3b1SBarry Smith - nmax - maximum number of values 89053acd3b1SBarry Smith 89153acd3b1SBarry Smith Output Parameter: 89253acd3b1SBarry Smith + value - location to copy values 89353acd3b1SBarry Smith . nmax - actual number of values found 89453acd3b1SBarry Smith - set - PETSC_TRUE if found, else PETSC_FALSE 89553acd3b1SBarry Smith 89653acd3b1SBarry Smith Level: beginner 89753acd3b1SBarry Smith 89853acd3b1SBarry Smith Notes: 89953acd3b1SBarry Smith The user should pass in an array of integers 90053acd3b1SBarry Smith 90153acd3b1SBarry Smith Must be between a PetscOptionsBegin() and a PetscOptionsEnd() 90253acd3b1SBarry Smith 90353acd3b1SBarry Smith Concepts: options database^array of strings 90453acd3b1SBarry Smith 90553acd3b1SBarry Smith .seealso: PetscOptionsGetInt(), PetscOptionsGetReal(), 90653acd3b1SBarry Smith PetscOptionsHasName(), PetscOptionsGetIntArray(), PetscOptionsGetRealArray(), PetscOptionsTruth(), 90753acd3b1SBarry Smith PetscOptionsName(), PetscOptionsBegin(), PetscOptionsEnd(), PetscOptionsHead(), 90853acd3b1SBarry Smith PetscOptionsStringArray(),PetscOptionsRealArray(), PetscOptionsScalar(), 90953acd3b1SBarry Smith PetscOptionsTruthGroupBegin(), PetscOptionsTruthGroup(), PetscOptionsTruthGroupEnd(), 91053acd3b1SBarry Smith PetscOptionsList(), PetscOptionsEList(), PetscOptionsRealArray() 91153acd3b1SBarry Smith @*/ 91253acd3b1SBarry Smith PetscErrorCode PETSC_DLLEXPORT PetscOptionsIntArray(const char opt[],const char text[],const char man[],PetscInt value[],PetscInt *n,PetscTruth *set) 91353acd3b1SBarry Smith { 91453acd3b1SBarry Smith PetscErrorCode ierr; 91553acd3b1SBarry Smith PetscInt i; 91653acd3b1SBarry Smith 91753acd3b1SBarry Smith PetscFunctionBegin; 91853acd3b1SBarry Smith ierr = PetscOptionsGetIntArray(PetscOptionsObject.prefix,opt,value,n,set);CHKERRQ(ierr); 91961b37b28SSatish Balay if (PetscOptionsObject.printhelp && PetscOptionsPublishCount == 1 && !PetscOptionsObject.alreadyprinted) { 92053acd3b1SBarry Smith ierr = (*PetscHelpPrintf)(PetscOptionsObject.comm," -%s%s <%d",PetscOptionsObject.prefix?PetscOptionsObject.prefix:"",opt+1,value[0]);CHKERRQ(ierr); 92153acd3b1SBarry Smith for (i=1; i<*n; i++) { 92253acd3b1SBarry Smith ierr = (*PetscHelpPrintf)(PetscOptionsObject.comm,",%d",value[i]);CHKERRQ(ierr); 92353acd3b1SBarry Smith } 92453acd3b1SBarry Smith ierr = (*PetscHelpPrintf)(PetscOptionsObject.comm,">: %s (%s)\n",text,man);CHKERRQ(ierr); 92553acd3b1SBarry Smith } 92653acd3b1SBarry Smith PetscFunctionReturn(0); 92753acd3b1SBarry Smith } 92853acd3b1SBarry Smith 92953acd3b1SBarry Smith #undef __FUNCT__ 93053acd3b1SBarry Smith #define __FUNCT__ "PetscOptionsStringArray" 93153acd3b1SBarry Smith /*@C 93253acd3b1SBarry Smith PetscOptionsStringArray - Gets an array of string values for a particular 93353acd3b1SBarry Smith option in the database. The values must be separated with commas with 93453acd3b1SBarry Smith no intervening spaces. 93553acd3b1SBarry Smith 93653acd3b1SBarry Smith Collective on the communicator passed in PetscOptionsBegin() 93753acd3b1SBarry Smith 93853acd3b1SBarry Smith Input Parameters: 93953acd3b1SBarry Smith + opt - the option one is seeking 94053acd3b1SBarry Smith . text - short string describing option 94153acd3b1SBarry Smith . man - manual page for option 94253acd3b1SBarry Smith - nmax - maximum number of strings 94353acd3b1SBarry Smith 94453acd3b1SBarry Smith Output Parameter: 94553acd3b1SBarry Smith + value - location to copy strings 94653acd3b1SBarry Smith . nmax - actual number of strings found 94753acd3b1SBarry Smith - set - PETSC_TRUE if found, else PETSC_FALSE 94853acd3b1SBarry Smith 94953acd3b1SBarry Smith Level: beginner 95053acd3b1SBarry Smith 95153acd3b1SBarry Smith Notes: 95253acd3b1SBarry Smith The user should pass in an array of pointers to char, to hold all the 95353acd3b1SBarry Smith strings returned by this function. 95453acd3b1SBarry Smith 95553acd3b1SBarry Smith The user is responsible for deallocating the strings that are 95653acd3b1SBarry Smith returned. The Fortran interface for this routine is not supported. 95753acd3b1SBarry Smith 95853acd3b1SBarry Smith Must be between a PetscOptionsBegin() and a PetscOptionsEnd() 95953acd3b1SBarry Smith 96053acd3b1SBarry Smith Concepts: options database^array of strings 96153acd3b1SBarry Smith 96253acd3b1SBarry Smith .seealso: PetscOptionsGetInt(), PetscOptionsGetReal(), 96353acd3b1SBarry Smith PetscOptionsHasName(), PetscOptionsGetIntArray(), PetscOptionsGetRealArray(), PetscOptionsTruth(), 96453acd3b1SBarry Smith PetscOptionsName(), PetscOptionsBegin(), PetscOptionsEnd(), PetscOptionsHead(), 96553acd3b1SBarry Smith PetscOptionsStringArray(),PetscOptionsRealArray(), PetscOptionsScalar(), 96653acd3b1SBarry Smith PetscOptionsTruthGroupBegin(), PetscOptionsTruthGroup(), PetscOptionsTruthGroupEnd(), 96753acd3b1SBarry Smith PetscOptionsList(), PetscOptionsEList() 96853acd3b1SBarry Smith @*/ 96953acd3b1SBarry Smith PetscErrorCode PETSC_DLLEXPORT PetscOptionsStringArray(const char opt[],const char text[],const char man[],char *value[],PetscInt *nmax,PetscTruth *set) 97053acd3b1SBarry Smith { 97153acd3b1SBarry Smith PetscErrorCode ierr; 97253acd3b1SBarry Smith 97353acd3b1SBarry Smith PetscFunctionBegin; 97453acd3b1SBarry Smith ierr = PetscOptionsGetStringArray(PetscOptionsObject.prefix,opt,value,nmax,set);CHKERRQ(ierr); 97561b37b28SSatish Balay if (PetscOptionsObject.printhelp && PetscOptionsPublishCount == 1 && !PetscOptionsObject.alreadyprinted) { 97653acd3b1SBarry Smith ierr = (*PetscHelpPrintf)(PetscOptionsObject.comm," -%s%s <string1,string2,...>: %s (%s)\n",PetscOptionsObject.prefix?PetscOptionsObject.prefix:"",opt+1,text,man);CHKERRQ(ierr); 97753acd3b1SBarry Smith } 97853acd3b1SBarry Smith PetscFunctionReturn(0); 97953acd3b1SBarry Smith } 98053acd3b1SBarry Smith 98153acd3b1SBarry Smith 98253acd3b1SBarry Smith #undef __FUNCT__ 98353acd3b1SBarry Smith #define __FUNCT__ "PetscOptionsHead" 98453acd3b1SBarry Smith /*@C 985b52f573bSBarry Smith PetscOptionsHead - Puts a heading before listing any more published options. Used, for example, 98653acd3b1SBarry Smith in KSPSetFromOptions_GMRES(). 98753acd3b1SBarry Smith 98853acd3b1SBarry Smith Collective on the communicator passed in PetscOptionsBegin() 98953acd3b1SBarry Smith 99053acd3b1SBarry Smith Input Parameter: 99153acd3b1SBarry Smith . head - the heading text 99253acd3b1SBarry Smith 99353acd3b1SBarry Smith 99453acd3b1SBarry Smith Level: intermediate 99553acd3b1SBarry Smith 99653acd3b1SBarry Smith Notes: Must be between a PetscOptionsBegin() and a PetscOptionsEnd() 99753acd3b1SBarry Smith 998b52f573bSBarry Smith Can be followed by a call to PetscOptionsTail() in the same function. 99953acd3b1SBarry Smith 100053acd3b1SBarry Smith Concepts: options database^subheading 100153acd3b1SBarry Smith 100253acd3b1SBarry Smith .seealso: PetscOptionsGetInt(), PetscOptionsGetReal(), 100353acd3b1SBarry Smith PetscOptionsHasName(), PetscOptionsGetIntArray(), PetscOptionsGetRealArray(), PetscOptionsTruth(), 100453acd3b1SBarry Smith PetscOptionsName(), PetscOptionsBegin(), PetscOptionsEnd(), PetscOptionsHead(), 100553acd3b1SBarry Smith PetscOptionsStringArray(),PetscOptionsRealArray(), PetscOptionsScalar(), 100653acd3b1SBarry Smith PetscOptionsTruthGroupBegin(), PetscOptionsTruthGroup(), PetscOptionsTruthGroupEnd(), 100753acd3b1SBarry Smith PetscOptionsList(), PetscOptionsEList() 100853acd3b1SBarry Smith @*/ 100953acd3b1SBarry Smith PetscErrorCode PETSC_DLLEXPORT PetscOptionsHead(const char head[]) 101053acd3b1SBarry Smith { 101153acd3b1SBarry Smith PetscErrorCode ierr; 101253acd3b1SBarry Smith 101353acd3b1SBarry Smith PetscFunctionBegin; 101461b37b28SSatish Balay if (PetscOptionsObject.printhelp && PetscOptionsPublishCount == 1 && !PetscOptionsObject.alreadyprinted) { 101553acd3b1SBarry Smith ierr = (*PetscHelpPrintf)(PetscOptionsObject.comm," %s\n",head);CHKERRQ(ierr); 101653acd3b1SBarry Smith } 101753acd3b1SBarry Smith PetscFunctionReturn(0); 101853acd3b1SBarry Smith } 101953acd3b1SBarry Smith 102053acd3b1SBarry Smith 102153acd3b1SBarry Smith 102253acd3b1SBarry Smith 102353acd3b1SBarry Smith 102453acd3b1SBarry Smith 1025