[petsc-users] TSDefaultComputeJacobian

Matthew Knepley knepley at gmail.com
Wed Jul 21 21:35:57 CDT 2010


http://www.mcs.anl.gov/petsc/petsc-as/snapshots/petsc-current/docs/manualpages/TS/TSSetRHSFunction.html

  Matt

On Thu, Jul 22, 2010 at 12:25 PM, XUAN YU <xxy113 at psu.edu> wrote:

>
>
> ---------------- Forwarded Message ----------------
> From: Matthew Knepley <knepley at gmail.com>
> Date: Wed, Jul 21, 2010 09:50 PM
> Subject: Re: [petsc-users] TSDefaultComputeJacobian
> To: PETSc users list <petsc-users at mcs.anl.gov>
>
> Yes, you have setup the Jacobian function, but you never setup the residual
> function, which
> is what the error is complaining about.
>
> -----------------------------------------
>
>
> Could you please give me some suggestions about how to setup residual
> function? Is there some example?
>
>
>
>
>
>    Matt
>
> On Thu, Jul 22, 2010 at 11:43 AM, Xuan YU <xxy113 at psu.edu<#129f7f8b5b43d140_>
> > wrote:
>
>>
>>
>> Begin forwarded message:
>>
>>  *From: *Jed Brown <jed at 59A2.org <#129f7f8b5b43d140_>>
>>  *Date: *July 21, 2010 8:04:17 PM EDT
>>  *To: *Xuan YU <xxy113 at psu.edu <#129f7f8b5b43d140_>>, PETSc users list <
>> petsc-users at mcs.anl.gov <#129f7f8b5b43d140_>>
>>  *Subject: **Re: [petsc-users] TSDefaultComputeJacobian*
>>
>>  On Wed, 21 Jul 2010 19:52:23 -0400, Xuan YU <xxy113 at psu.edu<#129f7f8b5b43d140_>>
>> 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
>>
>>
>>
>
>
> --
> What most experimenters take for granted before they begin their
> experiments is infinitely more interesting than any results to which their
> experiments lead.
> -- Norbert Wiener
>
>
>
>


-- 
What most experimenters take for granted before they begin their experiments
is infinitely more interesting than any results to which their experiments
lead.
-- Norbert Wiener
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20100722/46efb0f0/attachment.htm>


More information about the petsc-users mailing list