[petsc-users] TSDefaultComputeJacobian

Xuan YU xxy113 at psu.edu
Wed Jul 21 20:43:29 CDT 2010



Begin forwarded message:

> From: Jed Brown <jed at 59A2.org>
> Date: July 21, 2010 8:04:17 PM EDT
> To: Xuan YU <xxy113 at psu.edu>, PETSc users list <petsc-users at mcs.anl.gov 
> >
> Subject: Re: [petsc-users] TSDefaultComputeJacobian
>
> On Wed, 21 Jul 2010 19:52:23 -0400, Xuan YU <xxy113 at psu.edu> wrote:
>> Hi,
>>
>> In SNES, Petsc can compute Jacobian by:
>>
>> ierr =
>> SNESSetJacobian
>> (snes,J,J,SNESDefaultComputeJacobian,PETSC_NULL);CHKERRQ(ierr);
>>
>> How about TS? I don't want to provide Jacobian function by myself,  
>> but
>> I didn't find something like TSDefaultComputeJacobian.
>
> You can use -snes_fd (or -snes_mf or -snes_mf_operator) with TS.
> Programmatically,
>
>  TSGetSNES(ts,&snes);
>  SNESSetJacobian(snes,A,B,SNESDefaultComputeJacobian,ts);
>

I have already tried this function.

I want to use Finite Difference Jacobian Approximations

So, before I call the function:  
MatGetColoring(J,MATCOLORINGSL,&iscoloring);CHKERRQ(ierr); I should  
assemble J. I tried to use SNESComputeJacobian(snes,x,&J,&J,&flag) to  
assemble J.

Here is the code



         ierr = MatCreateSeqAIJ(PETSC_COMM_SELF,N,N, 
10,PETSC_NULL,&J);CHKERRQ(ierr);
         ierr = TSCreate(PETSC_COMM_WORLD,&ts);CHKERRQ(ierr);
         ierr = TSSetProblemType(ts,TS_NONLINEAR);CHKERRQ(ierr);
         ierr =  
TSMonitorSet(ts,Monitor,&appctx,PETSC_NULL);CHKERRQ(ierr);
         ierr = TSSetSolution(ts,CV_Y);CHKERRQ(ierr);
         ierr = TSSetRHSFunction(ts,f,&appctx);CHKERRQ(ierr);
         ierr = TSSetType(ts,TSBEULER);CHKERRQ(ierr);
         ierr = TSGetSNES(ts,&ts_snes);
         ierr=  
SNESSetJacobian 
(ts_snes,J,J,SNESDefaultComputeJacobian,PETSC_NULL);CHKERRQ(ierr);
         MatStructure  flag;
         ierr =  
SNESComputeJacobian(ts_snes,CV_Y,&J,&J,&flag);CHKERRQ(ierr);
         ierr =  
MatGetColoring(J,MATCOLORINGSL,&iscoloring);CHKERRQ(ierr);
         ierr =  
MatFDColoringCreate(J,iscoloring,&matfdcoloring);CHKERRQ(ierr);
         ISColoringDestroy(iscoloring);

         ierr = MatFDColoringSetFunction(matfdcoloring,(PetscErrorCode  
(*)(void))f,(void*)&appctx);CHKERRQ(ierr);
         ierr =  
MatFDColoringSetFromOptions(matfdcoloring);CHKERRQ(ierr);
         ierr =  
TSSetRHSJacobian(ts,J,J,TSDefaultComputeJacobianColor,matfdcoloring);

But I got the error:
[0]PETSC ERROR: --------------------- Error Message  
------------------------------------
[0]PETSC ERROR: Object is in wrong state!
[0]PETSC ERROR: Must call SNESSetFunction() before  
SNESComputeFunction(), likely called from SNESSolve().!
[0]PETSC ERROR:  
------------------------------------------------------------------------
[0]PETSC ERROR: Petsc Development HG revision:  
fdc7be12de37b8a400b6e561de9850bcc7e79f4f  HG Date: Fri Jul 02 21:17:36  
2010 -0500
[0]PETSC ERROR: See docs/changes/index.html for recent updates.
[0]PETSC ERROR: See docs/faq.html for hints about trouble shooting.
[0]PETSC ERROR: See docs/index.html for manual pages.
[0]PETSC ERROR:  
------------------------------------------------------------------------
[0]PETSC ERROR: ./pihm on a arch-linu named kernighan.aset.psu.edu by  
xxy113 Wed Jul 21 21:35:01 2010
[0]PETSC ERROR: Libraries linked from /gpfs/home/xxy113/soft/petsc-dev/ 
arch-linux-gnu-c-debug/lib
[0]PETSC ERROR: Configure run at Sun Jul  4 14:09:16 2010
[0]PETSC ERROR: Configure options --download-f-blas-lapack=1 -- 
download-mpich=1
[0]PETSC ERROR:  
------------------------------------------------------------------------
[0]PETSC ERROR: SNESComputeFunction() line 1180 in src/snes/interface/ 
snes.c
[0]PETSC ERROR: SNESDefaultComputeJacobian() line 77 in src/snes/ 
interface/snesj.c
[0]PETSC ERROR: SNESComputeJacobian() line 1264 in src/snes/interface/ 
snes.c
[0]PETSC ERROR: VecRestoreArrayPrivate3() line 234 in /work/petsc/pihm.c



> Jed
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20100721/6ef2f3b7/attachment.htm>


More information about the petsc-users mailing list