Hi all,
In solving problems such as laplacian/poisson equations with dirichlet
boundary conditions with finite difference methods, I set explicity the
required values to the diagonal of the boundary rows of the system matrix,
and the corresponding rhs vector.
i.e. typically my matrix building loop would be like:
e.g. in 2d problems, using DMDA:
FOR (i=0 to xn-1, j = 0 to yn-1)
set row.i = i, row. j = j
IF (i = 0 or xn-1) or (j = 0 or yn-1)
set diagonal value of matrix A to 1 in current row.
ELSE
normal interior points: set the values accordingly
ENDIF
ENDFOR
Is there another preferred method instead of doing this ? I saw functions
such as MatZeroRows()
when following the answer in the FAQ regarding this at:
http://www.mcs.anl.gov/petsc/documentation/faq.html#redistribute
but I did not understand what it is trying to say in the last sentence of
the answer "An alternative approach is ... into the load"
Thanks,
Bishesh