Thanks Hong. On Tue, Apr 24, 2012 at 4:25 PM, Hong Zhang <hzhang at mcs.anl.gov> wrote:
> See > http://www.mcs.anl.gov/petsc/documentation/changes/dev.html: > > You MUST now call MatXXXSetPreallocation() or MatSetUp() on any matrix you > create directly (not using DMCreateMatrix()) before calling MatSetValues(), > MatSetValuesBlocked() etc. > > > On Tue, Apr 24, 2012 at 6:01 PM, Mohammad Mirzadeh <mirzadeh at > gmail.com>wrote: > >> Hi, >> >> While trying to figure out a problem, I came across the following >> situation. Consider the following code: >> >> int main (int argc, char **argv){ >> >> PetscInitialize(&argc, &argv, (char*)0, help); >> >> >> Mat m; >> >> MatCreate(PETSC_COMM_WORLD, &m); >> >> MatSetSizes(m, 10, 10, PETSC_DECIDE, PETSC_DECIDE); >> >> MatSetFromOptions(m); >> >> MatAssemblyBegin(m, MAT_FINAL_ASSEMBLY); >> >> MatAssemblyEnd(m, MAT_FINAL_ASSEMBLY); >> >> MatView(m, PETSC_VIEWER_STDOUT_WORLD); >> >> MatDestroy(&m); >> >> >> PetscFinalize(); >> >> return 0; >> >> } >> >> >> This runs without any problem under 3.2-p6 but fails with petsc-dev: >> >> [0]PETSC ERROR: --------------------- Error Message >> ------------------------------------ >> [0]PETSC ERROR: Object is in wrong state! >> [0]PETSC ERROR: Must call MatXXXSetPreallocation() or MatSetUp() on >> argument 1 "mat" before MatAssemblyBegin()! >> [0]PETSC ERROR: >> ------------------------------------------------------------------------ >> >> Eventually I could fix this by adding MatSetUp(m) after setting the >> options. Why do I need this in petsc-dev? Does this somehow preallocate the >> matrix? >> > Yes. > > Hong > >> >> Thanks, >> Mohammad >> > > -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20120424/9a1919e2/attachment.htm>