Dear PETSc community, I am currently struggling with the ADD_VALUE mode of the Scatter object. Here is a simple piece of (Python) code to illustrate the issue:
vec_1 = PETSc.Vec().createMPI(size=10) vec_1.shift(2.0) vec_2 = PETSc.Vec().createMPI(size=10) vec_2.shift(1.0) index_set = PETSc.IS().createStride(10, step=1) scatter = PETSc.Scatter().create(vec_1, index_set, vec_2, index_set) scatter.scatter(vec_1, vec_2, addv=True) Vectors vec_1 and vec_2 are respectively filled-in with 2.0 and 1.0. After the scattering, I would expect to have in vec_2 the sum of the values initially in vec_2 (that is 1.0) plus the values coming from vec_1 (that is 2.0). But instead of having vec_2 filled in with 3.0 it is filled-in with 9.0. My understanding is that the number of processes (here 4 processes) plays a role since 9.0 = 1.0 (initial value) + 2.0 (values coming from vec_1) x 4 (number of processes). Is there a way to have simply 3.0 as a result? Hoping to have been clear enough, best regards, Alexandre.