I have added to petsc-dev the following
#undef __FUNCT__
#define __FUNCT__ "PetscOptionsUsed"
/*@C
PetscOptionsUsed - Indicates if PETSc has used a particular option set in
the database
Not Collective
Input Parameter:
. option - string name of option
Output Parameter:
. used - PETSC_TRUE if the option was used, otherwise false, including if
option was not found in options database
Level: advanced
.seealso: PetscOptionsView(), PetscOptionsLeft(), PetscOptionsAllUsed()
@*/
PetscErrorCode PetscOptionsUsed(const char *option,PetscBool *used)
{
PetscInt i;
PetscErrorCode ierr;
PetscFunctionBegin;
*used = PETSC_FALSE;
for (i=0; i<options->N; i++) {
ierr = PetscStrcmp(options->names[i],option,used);CHKERRQ(ierr);
if (*used) {
*used = options->used[i];
break;
}
}
PetscFunctionReturn(0);
}
On Nov 14, 2011, at 5:06 PM, Cody Permann wrote:
>
> On Nov 14, 2011, at 2:20 PM, Matthew Knepley wrote:
>
>> On Mon, Nov 14, 2011 at 9:16 PM, Cody Permann <codypermann at gmail.com>
>> wrote:
>> How about a function that would fill in a char *[] with the options used or
>> a function that would return a boolean for a single option indicating
>> whether it was used or not? Basically we just need a public way to get at
>> the data in PetscOptionTable::used.
>>
>> I don't like the whole table of options used, and we definitely need
>> PetscOptionsOptionUsed(). What about providing
>> the number of options, and an array of all option names?
>
> That will work fine. Anything is better than what we have now ;)
>
>>
>> Matt
>>
>> Thanks,
>> Cody
>>
>> On Nov 14, 2011, at 12:41 PM, Barry Smith wrote:
>>
>> >
>> > Cody,
>> >
>> > What would you like the API to look like?
>> >
>> > Barry
>> >
>> >
>> > On Nov 14, 2011, at 1:39 PM, Cody Permann wrote:
>> >
>> >> There doesn't appear to be an API in PETSc for getting back the command
>> >> line options "used" or "unused" for a simulation. Yes I am aware that
>> >> the options unused can be printed but there doesn't appear to be a
>> >> mechanism for returning them back through a function call. I'd like to
>> >> add an option to MOOSE that would work like PETSc's "-options_left" CLI
>> >> argument, but in order to do so I need to combine the options recognized
>> >> for both libraries to report the global unused list. Right now both
>> >> MOOSE and PETSc have full access to the raw ARGV vector and each library
>> >> recognizes it's own options and ignores the rest.
>> >>
>> >> I could strip out the options from ARGV before passing it to PETSc in
>> >> conjunction with "-options_left" but that doesn't give me quite as much
>> >> flexibility as I'd like. It looks like there are about two dozen or so
>> >> PETSc related options functions in the API but none of them return unused
>> >> options, or otherwise allow me to query whether any particular option was
>> >> recognized or not. Is this assumption correct?
>> >>
>> >> Thanks,
>> >> Cody
>> >
>>
>>
>>
>>
>> --
>> What most experimenters take for granted before they begin their experiments
>> is infinitely more interesting than any results to which their experiments
>> lead.
>> -- Norbert Wiener
>