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