[petsc-dev] Broken dense output in TSRK

Emil Constantinescu emconsta at mcs.anl.gov
Thu Nov 17 12:36:55 CST 2016


Stefano, a fix was pushed in maint/master.

That was an issue (stack overflow) not flagged by the compiler or 
valgrind directly for that matter - good catch.

To register a method without dense output:
     const PetscReal
       A[2][2] = {{0,0},
                  {1.,0}},
       b[2] = {0.5,0.5},
       *bembed = NULL,*Binterp = NULL;
     ierr = 
TSRKRegister("myrk",2,2,&A[0][0],&b[0],NULL,bembed,0,Binterp);CHKERRQ(ierr);


or with dense output:
     const PetscReal
        A[2][2] = {{0,0},
                  {1.,0}},
       b[2] = {0.5,0.5},
       *bembed = NULL,Binterp[2][2] ={{1.,-0.5},{0,0.5}};
     ierr = 
TSRKRegister("myrk",2,2,&A[0][0],&b[0],NULL,bembed,2,&Binterp[0][0]);CHKERRQ(ierr);



Emil

On 11/16/16 6:51 AM, Stefano Zampini wrote:
> Emil,
>
> I think that TSInterpolate_RK is broken.
>
> From the manual page of TSRKRegister
>
> http://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/TS/TSRKRegister.html
>
> binterp is supposed to be a matrix but we are passing in the b vector in
> TSRKRegisterAll. Also, the NULL case for binterp is not taken into account.
>
> Could you please provide a fix in maint?
>
> Thanks,
> --
> Stefano



More information about the petsc-dev mailing list