GitHub's inline PDF viewer failed with 'Error loading PDF page number 1'.
Linearize the PDF (fast web view) so a streaming viewer can load page 1
before fetching the whole file. As a side effect qpdf recompresses the
streams (2.8M -> 0.68M). Fonts stay embedded (26/27; the remaining one is
a base-14 standard font), 188 pages, PDF 1.5.
- communication.md: replace the Mermaid state diagram with a plain-text
diagram (Mermaid showed 'Error rendering embedded code' on GitHub)
- regenerate psblas-3.9.pdf as PDF 1.5 (matching the previous build)
instead of TeX Live 2026's default 1.7, which GitHub's viewer failed
to load
Introduce docs/internals/ as a two-layer complement to the user manual:
- README.md: index plus the user-manual vs developer-guide rationale
- communication.md: the psb_halo/psb_ovrl -> psi_swapdata dispatch path,
the psb_comm_handle_type hierarchy and factory, the five MPI schemes
(isend/irecv, neighbor alltoallv, persistent, RMA pull/push), and the
start/wait/sync swap-status state machine
- psb_halo: document tran and mode arguments; note work is array-only
- psb_ovrl: document mode argument
- add psb_comm_status_{sync,start,wait}_ to the Named Constants list
- fix psb_add_ -> psb_sum_ in the psb_ovrl update operator list
- remove duplicated psb_gather synopsis line
- drop spurious alpha from the psb_halo data-type table header
- regenerate psblas-3.9.pdf
The MINRES implementation merged from development calls the vector psb_spmm
and prec%apply with work=aux, but communication_v2 removed the work argument
from the vector interfaces. Remove work=aux from psb_{c,d,s,z}minres so the
vector solvers match the communication_v2 interface; the library now builds.
Realign communication_v2 with the latest development (10 commits, including the
GMRES refactor and the stopping-criterion change), keeping the communication_v2
work intact.
Conflict resolution:
- base/modules/Makefile (veryclean): keep communication_v2's '/bin/rm -f *.h'.
- linsolve/impl/psb_{c,d,s,z}rgmres.f90: keep development's variable
declaration (itmax_, naux), consistent with development's refactored GMRES
body which references itmax_.
The configure step only searched MPI_Fortran_INCLUDE_PATH for mpi.mod, which
is empty for OpenMPI (the wrapper carries includes internally and ships mpi.mod
under lib/). mpi.mod was thus never copied into the module dir, and the
mpi.mod.stamp rule failed on a clean build. Also probe the wrapper
(--showme:inc/libdirs) and lib/ + include/ relative to the Fortran MPI
compiler. MPICH (used in CI) is unaffected.
base/CMakeLists.txt listed only psb_comm_rma_mod.F90 from comm_schemes,
omitting psb_comm_schemes_mod, psb_comm_baseline_mod, psb_comm_neighbor_impl_mod
and psb_comm_factory_mod, so their .mod files were never generated under CMake.
Also psb_comm_mod was listed as .F90 while the file is .f90 (breaks on
case-sensitive filesystems). The autotools Makefile was already correct.