[petsc-users] help about my ts program

Xuan YU xxy113 at psu.edu
Fri Jul 2 13:08:14 CDT 2010


On Jun 23, 2010, at 10:44 AM, Jed Brown wrote:

> On Wed, 23 Jun 2010 10:22:19 -0400, Xuan YU <xxy113 at psu.edu> wrote:
>> I got the correct results! Thanks!
>>
>> Could you please tell me whether I can use TS to solve ODE without
>> providing Jacobian matrix?
>
> Sure, use -snes_mf to solve it without assembling any matrix (linear
> systems are solved with an unpreconditioned Krylov method).  Note that
> this usually will not converge for larger problems.  To assemble a  
> dense
> matrix by finite differencing, you can use -snes_fd.

If I don't provide Jacobian, it will be:  type: euler
                   						  total number of nonlinear solver iterations=0
								  total number of linear solver iterations=0





>
> To use coloring to compute a sparse matrix efficiently, you have to  
> know
> the sparsity pattern of the Jacobian, try something like (this is
> somewhat different in petsc-dev than release).
>
>    ISColoring     iscoloring;
>    ierr = DAGetColoring(rd- 
> >da,IS_COLORING_GLOBAL,MATAIJ,&iscoloring);CHKERRQ(ierr);
>    ierr =  
> MatFDColoringCreate(B,iscoloring,&matfdcoloring);CHKERRQ(ierr);
>    ierr = ISColoringDestroy(iscoloring);CHKERRQ(ierr);
>    ierr = MatFDColoringSetFunction(matfdcoloring,(PetscErrorCode(*) 
> (void))SNESTSFormFunction,ts);CHKERRQ(ierr);
>    ierr = MatFDColoringSetFromOptions(matfdcoloring);CHKERRQ(ierr);
>    ierr =  
> SNESSetJacobian 
> (snes 
> ,A,B,SNESDefaultComputeJacobianColor,matfdcoloring);CHKERRQ(ierr);
>
> Jed
>


Now I added coloring

         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=DACreate2d(PETSC_COMM_WORLD,DA_NONPERIODIC,DA_STENCIL_STAR, 
1,1,PETSC_DECIDE,PETSC_DECIDE,
                     1,1,PETSC_NULL,PETSC_NULL,&da);CHKERRQ(ierr);
         DACreateGlobalVector(da,&CV_Y);
         ierr =  
DAGetColoring(da,IS_COLORING_GLOBAL,MATAIJ,&iscoloring);CHKERRQ(ierr);
         DAGetMatrix(da,MATAIJ,&J);
         MatFDColoringCreate(J,iscoloring,&matfdcoloring);
         ISColoringDestroy(iscoloring);
         ierr = MatFDColoringSetFunction(matfdcoloring,(PetscErrorCode  
(*)(void))f,da);CHKERRQ(ierr);
         MatFDColoringSetFromOptions(matfdcoloring);
          
TSSetRHSJacobian(ts,J,J,TSDefaultComputeJacobianColor,matfdcoloring);
         ierr = TSSetType(ts,TSPSEUDO);CHKERRQ(ierr);
         ierr = TSSetInitialTimeStep(ts,0,1.0);CHKERRQ(ierr);
         ierr =  
TSSetDuration(ts,cData.EndTime,cData.EndTime);CHKERRQ(ierr);
         ierr = TSSetFromOptions(ts);CHKERRQ(ierr);
         ierr = TSSetUp(ts);CHKERRQ(ierr);
         ierr = TSStep(ts,&its,&ftime);CHKERRQ(ierr);


When I run the code, I got the following:

[0]PETSC ERROR: --------------------- Error Message  
------------------------------------
[0]PETSC ERROR: Floating point exception!
[0]PETSC ERROR: User provided compute function generated a Not-a-Number!
[0]PETSC ERROR:  
------------------------------------------------------------------------
[0]PETSC ERROR: Petsc Release Version 3.1.0, Patch 2, Fri Apr 30  
20:23:44 CDT 2010
[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 linux-gnu named lionxi.rcc.psu.edu by  
xxy113 Fri Jul  2 13:53:44 2010
[0]PETSC ERROR: Libraries linked from /gpfs/home/xxy113/soft/petsc-3.1- 
p2/linux-gnu-c-debug/lib
[0]PETSC ERROR: Configure run at Tue May 11 13:53:58 2010
[0]PETSC ERROR: Configure options --with-cc=gcc --download-f-blas- 
lapack=1 --download-mpich=1
[0]PETSC ERROR:  
------------------------------------------------------------------------
[0]PETSC ERROR: SNESSolve_LS() line 168 in src/snes/impls/ls/ls.c
[0]PETSC ERROR: SNESSolve() line 2255 in src/snes/interface/snes.c
[0]PETSC ERROR: TSStep_Pseudo() line 163 in src/ts/impls/pseudo/ 
posindep.c
[0]PETSC ERROR: TSStep() line 1693 in src/ts/interface/ts.c
[0]PETSC ERROR: User provided function() line 216 in /work/petsc/ 
pihm.c(which is ierr = TSStep(ts,&its,&ftime);CHKERRQ(ierr);)

Could you please tell me how to check where is my problem?


Xuan YU
xxy113 at psu.edu






More information about the petsc-users mailing list