Thanks Barry - this is a very helpful clarification.
Randy
> On Jul 6, 2025, at 9:59 AM, Barry Smith wrote:
>
>
>Yes, they are automatically initialized to something ((void*)-2 actually).
> They are NOT automatically initialized to PETSC_NULL_XXX
>
>#define PetscObjectIsNull(obj) (
Yes, they are automatically initialized to something ((void*)-2 actually).
They are NOT automatically initialized to PETSC_NULL_XXX
#define PetscObjectIsNull(obj) (obj%v == 0 .or. obj%v == -2 .or. obj%v == -3)
PETSc Fortran has multiple representations of NULL objects. When you want t
Thanks Barry
We were confused because the online manual says:
PETSc objects are always automatically initialized when declared so you do not
need to (and should not) do
type(tXXX) x = PETSC_NULL_XXX
XXX x = PETSC_NULL_XXX
Randy
> On Jul 4, 2025, at 6:56 PM, Barry Smith wrote:
>
>
>You
You need to pass PETSC_NULL_MAT in those locations, you cannot just pass a
Mat that has never been created (that is a different kind of NULL matrix :-). I
have added clearer error checking in
https://urldefense.us/v3/__https://gitlab.com/petsc/petsc/-/merge_requests/8526__;!!G_uCfscf7eWS!c7m
In the process of upgrading our code to version 3.23, we have run into another issue, this time with nest matrices.In previous versions (well to at least 3.21) it was perfectly fine to pass in null matrix blocks to create a nest matrix. There are situations where we have, for example, only diagonal