[petsc-dev] correspondence between include file and library ?
Barry Smith
bsmith at petsc.dev
Thu Dec 21 21:28:25 CST 2023
Certain Mat implementations (and associated utility user-level functions) need to go in the KSP library because they use KSP even though, from the user point of view, they only have a Mat-level API.
Where should the information needed in the include files go? For MATLMVM they are mixed up some in petscmat.h and some in petscksp.h
$ grep MAT include/petscksp.h
. `KSP_DIVERGED_INDEFINITE_MAT` - the operator was indefinite for a `KSPType` that requires it be definite
KSP_DIVERGED_INDEFINITE_MAT = -10,
MAT_SCHUR_COMPLEMENT_AINV_DIAG,
MAT_SCHUR_COMPLEMENT_AINV_LUMP,
MAT_SCHUR_COMPLEMENT_AINV_BLOCK_DIAG,
MAT_SCHUR_COMPLEMENT_AINV_FULL
MAT_LMVM_SYMBROYDEN_SCALE_NONE = 0,
MAT_LMVM_SYMBROYDEN_SCALE_SCALAR = 1,
MAT_LMVM_SYMBROYDEN_SCALE_DIAGONAL = 2,
MAT_LMVM_SYMBROYDEN_SCALE_USER = 3
~/Src/petsc (barry/2023-12-21/fix-dmproject/release *>) arch-fix-dmproject
$ grep MATLMVM include/petscmat.h
#define MATLMVM "lmvm"
#define MATLMVMDFP "lmvmdfp"
#define MATLMVMBFGS "lmvmbfgs"
#define MATLMVMSR1 "lmvmsr1"
#define MATLMVMBROYDEN "lmvmbroyden"
#define MATLMVMBADBROYDEN "lmvmbadbroyden"
#define MATLMVMSYMBROYDEN "lmvmsymbroyden"
#define MATLMVMSYMBADBROYDEN "lmvmsymbadbroyden"
#define MATLMVMDIAGBROYDEN "lmvmdiagbroyden"
Should they all go in petscksp.h or all in petscmat.h ? Seems bad to have some arbitrarily in each? I vote for petscmat.h since then their docs also go in the Mat docs and users don't need to think "Oh, because MATLMVM uses a KSP in its implementation (why should users need to know or care about this?) I also need include petscksp.h even though MY code does not use KSP at all."
Thoughts
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-dev/attachments/20231221/871a93db/attachment.html>
More information about the petsc-dev
mailing list