[petsc-users] function set by TSSetRHSJacobian() not being called

Hong Zhang hongzhang at anl.gov
Tue Aug 9 14:34:52 CDT 2016


I guess Barry meant “implicit method”. 

To use backward Euler, change TSEULER to TSBEULER in the function call of TSSetType().

Hong

> On Aug 9, 2016, at 2:13 PM, Barry Smith <bsmith at mcs.anl.gov> wrote:
> 
> 
>   The Euler method is an explicit method that does not require the Jacobian. Hence the Jacobian you provide is never used.
> 
>    If you use any implement method, for example backward Euler beuler then you will see the Jacobian being used.
> 
>   Barry
> 
>> On Aug 9, 2016, at 2:08 PM, Scott Dossa <doss0032 at umn.edu> wrote:
>> 
>> Hi all,
>> 
>> I adapted ex13.c from .../ts/examples/tutorials/ex13.c to solve a 1D TD PDE (swift-hohenberg).
>> Long story short: the function which sets the Jacobian is never being called despite being assigned by TSSetRHSJacobian().
>> 
>> I create the TS environment with the following commands (omitting some code before and after -- Full code attached):
>> 
>> ---------------------------------------------------------------------------------------------------------------------------------------------------------------------
>>  ierr = DMDACreate1d(PETSC_COMM_WORLD, DM_BOUNDARY_NONE, 15, 1, 1, NULL, &da); CHKERRQ(ierr);
>> 
>>  /*==================================================================                                                                                                                                                                        
>>    Let DMDA create vector                                                                                                                                                                                                                    
>>    ==================================================================*/
>> 
>>  ierr = DMCreateGlobalVector(da, &x);CHKERRQ(ierr);
>> 
>>  /*==================================================================                                                                                                                                                                        
>>    Create timestepper context which will use Euler Method                                                                                                                                                                                            
>>    ==================================================================*/
>> 
>>  ierr = TSCreate(PETSC_COMM_WORLD,&ts);CHKERRQ(ierr);
>>  ierr = TSSetDM(ts, da);CHKERRQ(ierr);
>>  ierr = TSSetType(ts, TSEULER);CHKERRQ(ierr);
>> 
>>  ierr = TSSetRHSFunction(ts, x, RHSFunction, NULL);CHKERRQ(ierr);
>> 
>>  /*=================================================================                                                                                                                                                                         
>>    Create Jacobian for Euler Method                                                                                                                                                                                                          
>>    =================================================================*/
>>  ierr = DMSetMatType(da, MATAIJ);CHKERRQ(ierr);
>>  ierr = DMCreateMatrix(da,&J);CHKERRQ(ierr);
>>  ierr = TSSetRHSJacobian(ts,J,J,RHSJacobian,NULL); CHKERRQ(ierr)
>> ---------------------------------------------------------------------------------------------------------------------------------------------------------------------
>> 
>> I define the function RHSJacobian later, PetscPrintf(PETSC_COMM_WORLD, "Jacobian function called") is used to see if the function is ever called.
>> 
>> Neither is the message ever called, nor is the Jacobian matrix ever non-zero. The J matrix is checked with MatView( ). No error messages are produced either at compiling nor runtime.
>> 
>> Has anyone else run into such an issue or have any advice of how best to probe the problem? 
>> Thanks so much!
>> -Scott Dossa
>> 
>> 
>> <swift.cpp>
> 



More information about the petsc-users mailing list