Dear PFLOTRAN developers,
We currently have some checks in PFLOTRAN that cause it to bail out if it the user has specified that a PETSc AIJ matrix should be used, e.g., in pmc_subsurface.F90:
if (solver%M_mat_type == MATAIJ .and. &
option%iflowmode /= RICHARDS_MODE) then
option%io_buffer = 'AIJ matrix not supported for current &
&mode: '// option%flowmode
call PrintErrMsg(option)
endif
I want to be able to use AIJ and related matrix classes, because currently all of the GPU support in PETSc relies on subclasses of MATAIJ (though I want to add BAIJ support soon), and because many types of preconditioners work only with AIJ matrices.
I would like to submit an MR to remove these nearly all of these checks (the CPR preconditioner ones should remain, since that one depends explicitly on the BAIJ layout); I believe that I have pretty much everything (except the aforementioned CPR preconditioner)
working with AIJ now. Right before the holiday break, I spent a few days tracking down and fixing a very difficult bug in PETSc that has been the cause of mysterious problems with AIJ matrices in PFLOTRAN for several years: See PETSc merge request
https://gitlab.com/petsc/petsc/-/merge_requests/8910
Before submitting a pull request to remove these checks, I want to ask
-
Does anyone on the pflotran-dev list remember specific problems they previously ran into with AIJ, so that I can check to see that these have been resolved?
-
Is it OK to change (in the PR) the supported version of PETSc from v3.24.0 to v.3.24.3? This will bump the PETSc patchlevel up to the latest tag in the 3.24 release that includes my fix; because this is only a
change in the patchlevel, there should be no API changes. (And if this is OK, am I correct in believing that this entails changing the contents of .gitlab/petsc-git-version.txt and PETSC_VERSION_PATCH in pflotran_constants.F90?)
Thanks,
Richard