[petsc-users] help about my first petsc program
Xuan YU
xxy113 at psu.edu
Mon Jun 28 13:21:57 CDT 2010
On Jun 23, 2010, at 1:17 PM, Jed Brown wrote:
> On Wed, 23 Jun 2010 12:45:37 -0400, Xuan YU <xxy113 at psu.edu> wrote:
>> I changed dt=0.4 and the Monitor function, so GL doesn't work.
>
> Choosing a smaller dt (only an initial value in this case) fixes that
> problem, but I still see some difficulties unless I give
> -ts_gl_max_order 2 (seems like I don't have enough stabilization for
> the
> higher-order error estimators). But feel free to keep using the
> simpler
> methods, I'm sure they will be more predictable.
>
>> PetscErrorCode Monitor(TS ts,PetscInt step,PetscReal time,Vec u, void
>> *ctx)
>> {
>> PetscScalar *y;
>> PetscReal dt;
>> TSGetTimeStep(ts,&dt);
>> VecGetArray(u,&y);
>> PetscPrintf(PETSC_COMM_WORLD,"At t =%e y =%e %e %e,
>> \n",time,y[0],y[1],y[2]);
>> VecRestoreArray(u,&y);
>> if(step>0)dt=time*9;
>> TSSetTimeStep(ts,dt);
>> return 0;
>> }
>
> TSGL has an adaptive controller, based on a local error estimator. It
> surely won't work right if the monitor changes it (because it doesn't
> happen in the correct place; GL can't change the step size
> arbitrarily,
> it needs to know the size of the next step when it "completes" the
> current one). You should be able to TSGLAdaptRegisterDynamic() you
> own
> adaptive scheme, there is currently NONE, SIZE (only step size, not
> order), and BOTH (default). If you do this, and it works better than
> the builtin ones, let me know and I'll add it to the library.
>
>> Why Petsc is faster than cvode? How fast it will be?
>
> It might not be faster, but at least you can get back CVODE as a
> runtime
> option. And since PETSc offers a lot more preconditioning options,
> you
> can probably beat it that way. Whether PETSc-native integrators
> (e.g. TSTHETA, TSGL) are faster or not is very problem dependent.
>
> Jed
>
I have successfully solve my problem with TS. But it is slower than
Cvode. I don't know how to choose preconditioner. I only found
preconditioner option in SNES. Is that means I should use SNES to
solve my problem?
Many thanks!
Xuan YU
xxy113 at psu.edu
More information about the petsc-users
mailing list