This code looks wrong. I get a valgrind warning if the option is not set. *I
think this code should be added.*
PetscErrorCode PetscOptionsBool_Private(PetscOptionItems
*PetscOptionsObject,const char opt[],const char text[],const char
man[],PetscBool currentvalue,PetscBool *flg,PetscBool *set)
{
PetscErrorCode ierr;
PetscBool iset;
PetscOptionItem amsopt;
PetscFunctionBegin;
if (!PetscOptionsObject->count) {
ierr =
PetscOptionItemCreate_Private(PetscOptionsObject,opt,text,man,OPTION_BOOL,&amsopt);CHKERRQ(ierr);
ierr = PetscMalloc(sizeof(PetscBool),&amsopt->data);CHKERRQ(ierr);
*(PetscBool*)amsopt->data = currentvalue;
}
*flg = currentvalue;*
ierr =
PetscOptionsGetBool(PetscOptionsObject->options,PetscOptionsObject->prefix,opt,flg,&iset);CHKERRQ(ierr);
if (set) *set = iset;
if (PetscOptionsObject->printhelp && PetscOptionsObject->count == 1 &&
!PetscOptionsObject->alreadyprinted) {
const char *v = PetscBools[currentvalue];
ierr = (*PetscHelpPrintf)(PetscOptionsObject->comm," -%s%s: <%s> %s
(%s)\n",PetscOptionsObject->prefix?PetscOptionsObject->prefix:"",opt+1,v,text,ManSection(man));CHKERRQ(ierr);
}
PetscFunctionReturn(0);
}