Join GitHub today
GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together.Sign up
Fixed a bug in PETScVector #1797
The bug is in PETScVector::get, which calls VecGetValues. VecGetValues can only get values on the same processor. To fix the bug, the current implementation introduces
Note: In the current implementation of PDE solving part, all global vectors are now created with given ghost IDs. Therefore in the computation of physical process modelling,
2 times, most recently
May 8, 2017
Although with your changes the results of the linear solver look good now, the non-linear solver does not converge in the first time step. Additionally, the parallel linear solver (PETSc bcgs + diagonal preconditioner) still needs much more iterations than the serial linear solver (LIS or Eigen: bicgst + diagonal preconditioner). I guess there is another mistake in at least in the branch https://github.com/TomFischer/ogs/tree/PartitionCellProperties.
@TomFischer The linear convergence criteria implemented in different solver packages are different. Therefore, the difference in the number of convergence iterations is normal. For the non-linear solver convergence, the error calculation under MPI has to be checked.
The included test is a non-linear problem, which is actually similar to the 3D that you are testing.
@wenqing The difference in the number of iterations is huge. The serial algorithm (bicgst + diagonal preconditioner) takes 3 iterations. In contrast the parallel algorithm takes more than 2300 iterations. I think a small difference between serial and parallel algorithms is ok, but this is not a small difference.
Many comments. Most of them regarding whether some setLocalAccessibleVector() calls can be avoided, if you want, we can also discuss that.
Some of the comments might already be obsolete by your subsequent commits.
If you should follow my comments, then it might be necessary to call
I used the commits in my branch and some test are failing. For this reason I checked out this branch and the
Valgrind reports and invalid read at PETScVector.h in line 192. I wonder why the checks are passed.