<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Nov 6, 2017 at 9:54 AM, Smith, Barry F. <span dir="ltr"><<a href="mailto:bsmith@mcs.anl.gov" target="_blank">bsmith@mcs.anl.gov</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><br>
   Hmm, I think this perhaps an issue of documentation.<br>
<br>
   It seems the various PetscOptionsGetXXX() DO NOT set the value unless the options database indicates it should be set (and when the options database does indicate it has been set the set flag is set).<br>
<br>
   But this is only documented for PetscOptionsGetBool()<br>
<br>
   The PetscOptionsXXX() also do not set the value unless the options database indicates it should be set.<br>
<br>
   So my conclusion is that the code is correct but the documentation needs work. I will make a pull request where I "fix" the documentation.<br></blockquote><div><br></div><div>This seems bad/wrong, if I have </div><div><br></div><div>*flg = PETSC_TRUE</div><div><br></div><div><span style="font-size:12.8px">PetscOptionsBool(...,PETSC_<wbr>FALSE, flg, ..)</span><br></div><div><span style="font-size:12.8px"><br></span></div><div><span style="font-size:12.8px">and the option is NOT set then *flg == </span>PETSC_TRUE<span style="font-size:12.8px">, but my code and -help (I assume) say the default is </span><span style="font-size:12.8px">false</span><span style="font-size:12.8px">.</span></div><div><span style="font-size:12.8px"><br></span></div><div><span style="font-size:12.8px">Am I missing something? Not a big deal, I assume there was a good reason to split the default value into a new argument.</span></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<span class="m_6556887515032797722gmail-HOEnZb"><font color="#888888"><br>
  Barry<br>
</font></span><div class="m_6556887515032797722gmail-HOEnZb"><div class="m_6556887515032797722gmail-h5"><br>
<br>
<br>
<br>
> On Nov 6, 2017, at 8:25 AM, Mark Adams <<a href="mailto:mfadams@lbl.gov" target="_blank">mfadams@lbl.gov</a>> wrote:<br>
><br>
> This code looks wrong. I get a valgrind warning if the option is not set. I think this code should be added.<br>
><br>
> PetscErrorCode  PetscOptionsBool_Private(Petsc<wbr>OptionItems *PetscOptionsObject,const char opt[],const char text[],const char man[],PetscBool currentvalue,PetscBool  *flg,PetscBool  *set)<br>
> {<br>
>   PetscErrorCode  ierr;<br>
>   PetscBool       iset;<br>
>   PetscOptionItem amsopt;<br>
><br>
>   PetscFunctionBegin;<br>
>   if (!PetscOptionsObject->count) {<br>
>     ierr = PetscOptionItemCreate_Private(<wbr>PetscOptionsObject,opt,text,ma<wbr>n,OPTION_BOOL,&amsopt);CHKERRQ<wbr>(ierr);<br>
>     ierr = PetscMalloc(sizeof(PetscBool),<wbr>&amsopt->data);CHKERRQ(ierr);<br>
><br>
>     *(PetscBool*)amsopt->data = currentvalue;<br>
>   }<br>
>   flg = currentvalue;<br>
>   ierr = PetscOptionsGetBool(PetscOptio<wbr>nsObject->options,PetscOptions<wbr>Object->prefix,opt,flg,&iset);<wbr>CHKERRQ(ierr);<br>
>   if (set) *set = iset;<br>
>   if (PetscOptionsObject->printhelp && PetscOptionsObject->count == 1 && !PetscOptionsObject->alreadypr<wbr>inted) {<br>
>     const char *v = PetscBools[currentvalue];<br>
>     ierr = (*PetscHelpPrintf)(PetscOption<wbr>sObject->comm,"  -%s%s: <%s> %s (%s)\n",PetscOptionsObject->pr<wbr>efix?PetscOptionsObject->prefi<wbr>x:"",opt+1,v,text,ManSection(<wbr>man));CHKERRQ(ierr);<br>
>   }<br>
>   PetscFunctionReturn(0);<br>
> }<br>
><br>
<br>
</div></div></blockquote></div><br></div></div>