Our code broke in moving from v3.7 to current. The problem seems to be in MatCreateVecs
Our code has:
Vec::XVec
Vec::BVec
this%xVec2 = PETSC_NULL_VEC
this%bVec2 = PETSC_NULL_VEC
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);
}