In the slepc and petsc docs, is there a way to tell if a function is going to
copy, modify, or just “look” at a petsc object that is a parameter?
Specifically there are two examples that I’m curious about (I’m trying to chase
down a bug):
EPSSetOperators(EPS, Mat, Mat)
I know the first argument is changed, but are the two later arguments modified?
It appears that they are destroyed when EPSSetOperators is called a second
time (in STSetOperators), but this isn’t clear in the API. After looking at
the source, I assume that if I’m running an eigensolve on the same Operator
Matrix, but the matrix values have changed, then I shouldn’t do another
EPSSetOperators (or EPSSetProblemType, EPSSetTarget, EPSSetDimensions, etc?).
Is this correct?
VecDot(Vec,Vec,*PetscScalar)
I assume that the two Vectors will not be changed, however it is hard to tell
even from the source (it calls a function pointer which I don’t know how to
find the source of).
ps. what does “collective on {EPS,Mat,Vec,etc.}” mean?
Thanks for the help,
-Andrew