Only if you did MatSetValues(val=0) for those extra locations - the subsequent assembly will be efficient.
You can alway verify with -info Satish On Thu, 14 Mar 2013, Sanjay Govindjee wrote: > When I pre-allocated, I preallocated sufficient on and off and off processor > memory for > all possible non-zero patterns. So I assume that there will not be any > mallocs necessary. > Or am I mis-understanding how the preallocation works? > > -sanjay > > > > On 3/14/13 12:52 PM, Satish Balay wrote: > > But you might have mallocs with the new nonzero structure. Its proably > > more efficient to destroy/create a new mat with the new structure. > > > > Satish > > > > On Thu, 14 Mar 2013, Sanjay Govindjee wrote: > > > > > Found my answer, use > > > > > > call > > > MatSetOption(Kmat,MAT_NEW_NONZERO_LOCATIONS,PETSC_TRUE,ierr) > > > > > > after the MatAssemblyEnd( ). > > > > > > > > > On 3/14/13 11:28 AM, Sanjay Govindjee wrote: > > > > Is there a mechanism for resetting a matrix's non-zero pattern? > > > > > > > > In particular, I have a preallocated a matrix, set the values, and > > > > assembled it. > > > > And used it to solve a problem. > > > > > > > > Now I would like to zero it, and reassemble it with a different non-zero > > > > pattern. > > > > Note the matrix has been preallocated so that it can accommodate both > > > > non-zero > > > > patterns. > > > > > > > > -sanjay > > > > >
