[petsc-users] TSSetTimeStep or -ts_dt not working
Ali Berk Kahraman
aliberkkahraman at yahoo.com
Wed Oct 11 12:12:50 CDT 2017
Hello All,
I am trying to use timesteppers, however I have a problem. Whenever I
want to set a dt for the timstepping integration, I cannot succeed.
Neither the function TSSetTimeStep nor the command line option seems to
work. Using either of them(but not at the same time) and setting it to
1, when I call TSGetTimeStep to learn the value of dt, it gives me the
answer 0.002871. Perhaps this is the default value, however I cannot
work with this, since the equation I have is slowly evolving.
Any ideas what might be causing this?
The part of the code I use,
PetscReal time=0, timestep=1;
int maxsteps=30;
float maxtime=300;
TS ts;
ierr= TSCreate(PETSC_COMM_WORLD,&ts);
CHKERRQ(ierr);
ierr= TSSetProblemType(ts,TS_LINEAR);
CHKERRQ(ierr);
ierr= TSSetSolution(ts, dummyvec);
CHKERRQ(ierr);
ierr= TSSetType(ts,TSRK);
CHKERRQ(ierr);
ierr= TSSetTime(ts,time);
CHKERRQ(ierr);
ierr= TSSetTimeStep(ts,timestep);
CHKERRQ(ierr);
ierr=TSSetExactFinalTime(ts,TS_EXACTFINALTIME_STEPOVER);
CHKERRQ(ierr);
TSSetMaxSteps(ts,maxsteps);
TSSetMaxTime(ts,maxtime);
ierr=TSSetFromOptions(ts);CHKERRQ(ierr);
TSSetRHSFunction(ts,residual,
FormRHSFunction,&mycontext);
ierr= TSSolve(ts,uJi);
CHKERRQ(ierr);
TSView(ts,PETSC_VIEWER_STDOUT_SELF);
TSConvergedReason reason;
ierr=TSGetConvergedReason(ts,&reason);CHKERRQ(ierr);
printf("Why Converged: %d\n",reason);
PetscReal usedtimestep;
TSGetTimeStep(ts,&usedtimestep);
printf("Used timestep: %f\n",usedtimestep);
More information about the petsc-users
mailing list