[petsc-dev] MatCreateVecs from Fortran problem

Matthew Knepley knepley at gmail.com
Tue Mar 17 13:25:18 CDT 2020


On Tue, Mar 17, 2020 at 2:16 PM Mark Adams <mfadams at lbl.gov> wrote:

>
>
>> Passing NULL to MatCreateVecs() means that you do not want a vector out:
>>
>>
> Yes, I want both vectors out and we pass it Vec that have been initialized
> with PETSC_NULL_VEC
>

That is wrong.


>
>
>>
>> https://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/Mat/MatCreateVecs.html
>>
>> I am guessing that this was broken in 3.7 so that it ignored NULL input,
>> but we fixed that.
>>
>>
> v3.7 has these CHKFORTRANNULLOBJECT. Well the "fix" broke working code
>

How could v3.7 have the check? If so, you code would be broken.


> ex73f90t does not initialize the "x" vector that it gives
> to matcreatevecs_. Should we just remove initialization of our vectors to
> PETSC_NUILL_VEC?
>

Yes.


> Is the PETSc model that you don't inialized PETSc object to NULL because
> you check that pointers are valid PETSc pointers instead of testing on
> NULL? So maybe we should remove all these initializations.
>

I am not sure what you are asking here.

  Matt


> Thanks,
> Mark
>
>
>>   Thanks,
>>
>>     Matt
>>
>>
>>> call MatCreateVecs(solver%KKTmat,solver%xVec2,solver%bVec2,ierr)
>>>
>>> Petsc code:
>>> PETSC_EXTERN void PETSC_STDCALL matcreatevecs_(Mat *mat,Vec *right,Vec
>>> *left, int *ierr)
>>> {
>>> PetscPrintf(PETSC_COMM_SELF,"ZZZ 1) matcreatevecs_ start right=%p
>>> left=%p\n",right,left);
>>>   CHKFORTRANNULLOBJECT(right);
>>>   CHKFORTRANNULLOBJECT(left);
>>> PetscPrintf(PETSC_COMM_SELF,"ZZZ 2) matcreatevecs_ start right=%p
>>> left=%p\n",right,left);
>>>   *ierr = MatCreateVecs(*mat,right,left);
>>> }
>>>
>>> produces this:
>>>
>>> ZZZ 1) matcreatevecs_ start right=0x7fffffff3758 left=0x7fffffff3760
>>> ZZZ 2) matcreatevecs_ start right=(nil) left=(nil)
>>>
>>> Shouldn't  this be?
>>>
>>> PETSC_EXTERN void PETSC_STDCALL matcreatevecs_(Mat *mat,Vec *right,Vec
>>> *left, int *ierr)
>>> {
>>>   *ierr = MatCreateVecs(*mat,right,left);
>>> }
>>>
>>>
>>
>> --
>> 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
>>
>> https://www.cse.buffalo.edu/~knepley/
>> <http://www.cse.buffalo.edu/~knepley/>
>>
>

-- 
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

https://www.cse.buffalo.edu/~knepley/ <http://www.cse.buffalo.edu/~knepley/>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-dev/attachments/20200317/6c1e81e3/attachment-0001.html>


More information about the petsc-dev mailing list