[Facets-devel] PETSC ERROR

Barry Smith bsmith at mcs.anl.gov
Thu Jun 4 21:43:25 CDT 2009


    That is just ugly shit hack to avoid the pain of changing the  
interface to what it should be.

    We gotta start using a decent language with optional arguments!

     Barry

On Jun 4, 2009, at 9:31 PM, Satish Balay wrote:

> There is another alternative possible [similar to how PETSC_COMM_WORLD
> can be set by user.]
>
> i.e.
>
> PETSC_COMM_WORLD=comm;
> PetscIntialize()..
>
> Since we just can't just set a char avariable - esp from fortran, we -
> we would have to do this with a function:
>
> PetscSetOptionalOptionsFile("petscopt") [stash internally in some  
> global variable
>                                          PETSC_OPTIONS_FILE]
> PetscInitialize() ---> [process PETSC_OPTIONS_FILE in the same way  
> as ~/.petscrc]
>
> Satish
>
> On Thu, 4 Jun 2009, Barry Smith wrote:
>
>>
>>  Matt,
>>
>>    The problem is more general than what FACETS want.
>>
>>    Say Joe would like to write an application that uses an optional  
>> options
>> file if it is there but runs fine without the optional file.  As  
>> Satish points
>> out this is exactly what .petscrc is.
>>
>>    If that optional file contains PETSc startup options like - 
>> malloc_debug
>> etc etc  then this is cumbersome in PETSc.  The application code  
>> would have to
>> see if the file exists (in parallel) and then call  
>> PetscInitialize() with or
>> without that filename depending on when it exists.
>>
>>    One solution is to have PETSc always treat the file you list as  
>> optional;
>> I decided NOT this many years ago because if __I__ call a function  
>> with a file
>> argument I want it to generate an error if it does not exist. Much  
>> later we
>> changed PetscOptionsInsertFile() to take an additional argument  
>> indicating the
>> file existence is optional. This solves the optional file sometimes  
>> but not if
>> the file is going to contain PETSc startup options.  I also debated  
>> allowing a
>> filename like "optional:myfilename" but that is just a cheap trick  
>> to avoid
>> changing the calling sequence and not worthy of PETSc.
>>
>>  The "correct" solution is adding an additional require argument,  
>> yucky
>> though it is.
>>
>>   Barry
>>
>> We could go the GNU route and have them use the environmental  
>> variable
>> PETSC_OPTIONS to pass in their arguments :-)
>>
>>
>> On Jun 4, 2009, at 4:38 PM, Matthew Knepley wrote:
>>
>>> On Thu, Jun 4, 2009 at 4:15 PM, Satish Balay <balay at mcs.anl.gov>  
>>> wrote:
>>> On Thu, 4 Jun 2009, Matthew Knepley wrote:
>>>
>>>> On Thu, Jun 4, 2009 at 3:37 PM, Satish Balay <balay at mcs.anl.gov>  
>>>> wrote:
>>>>
>>>>> Barry/Matt,
>>>>>
>>>>> Should we make optfile in PetscIntialize(optfile) optional?
>>>>
>>>>
>>>> Why would the user give an argument for optfile, but not intend  
>>>> it to be
>>>> found?
>>>
>>> Normally command line options is the way to pass in optional flags  
>>> to
>>> a petsc binary. In this application - command line options are not
>>> possible [due to python/other packages that control main] - hence an
>>> PetscIntialize("petscopt") is used to pass in equivalent optional
>>> flags.
>>>
>>>
>>> Also In this code - PETSc [solver] usage is optional. I guess there
>>> are 2 ways of implementing this.
>>>
>>> The first is to always call PetscInitialize()/Finalize() - but
>>> optionally use PETSc solvers. [in this case optfile should be
>>> optional]
>>>
>>> I have no idea what you mean here. Why does optfile have to be an  
>>> optional
>>> argument?
>>> That makes no sense at all. You provide an argument, but only want  
>>> it used
>>> sometimes?
>>> DONT PROVIDE IT if it should not be used.
>>>
>>> Matt
>>>
>>>
>>> The other mode is to avoid PetscIntialize()/Finalize() - when
>>> non-petsc solvers are selected.  [but this means more complicated
>>> options check - before PetscIntialize()/MPI_Init() is called. The  
>>> code
>>> currently tries to do this - ocassionaly errors such as this pop-up]
>>>
>>>
>>> I guess Ideally - the optional_flag should be exposed all the way to
>>> PetscInitialize() - so the user can make the choice if this opt-file
>>> is optional or required..
>>>
>>> Satish
>>>
>>>
>>>
>>> -- 
>>> 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
>>
>




More information about the petsc-dev mailing list