If I want to get the residual vector from a SNES, what is the correct calling 
order?

Currently, I have

    VecDuplicate(U,&F);


  SNESSetFunction(snes, F, form_function, ctx);

  SNESSolve(snes, NULL, U);

SNESGetFunction(snes,&F,NULL,NULL);
VecDestroy(&U);
VecDestroy(&F);

But this generates an error, 

[0]PETSC ERROR: --------------------- Error Message 
--------------------------------------------------------------
[0]PETSC ERROR: Invalid argument
[0]PETSC ERROR: Wrong type of object: Parameter # 1
[0]PETSC ERROR: See http://www.mcs.anl.gov/petsc/documentation/faq.html for 
trouble shooting.
[0]PETSC ERROR: Petsc Release Version 3.6.1, unknown 
[0]PETSC ERROR: ./blowup_refine on a arch-darwin-c-debug named gs_air by gideon 
Thu Sep 10 11:36:10 2015
[0]PETSC ERROR: Configure options --download-mpich=yes 
--download-suitesparse=yes --download-superlu=yes --download-superlu_dist=yes 
--download-mumps=yes --download-sprng=yes --with-cxx=clang++ --with-cc=clang 
--with-fc=gfortran --download-metis=yes --download-parmetis=yes 
--download-scalapack=yes
[0]PETSC ERROR: #1 VecDestroy() line 424 in 
/opt/petsc/src/vec/vec/interface/vector.c



-gideon

Reply via email to