[petsc-users] TSBEULER vs TSPSEUDO

Jed Brown jed at jedbrown.org
Tue Nov 8 11:45:28 CST 2022


Francesc Levrero-Florencio <francesc.levrero-florencio at ansys.com> writes:

> Hi Jed,
>
> Thanks for the answer.
>
> We do have a monolithic arc-length implementation based on the TS/SNES logic, but we are also exploring having a custom SNESSHELL because the arc-length logic is substantially more complex than that of traditional load-controlled continuation methods. It works quite well, the only "issue" is its initiation; we are currently performing load-control (or displacement loading as you mentioned) in the first time increment. Besides load-control and arc-length control, what other continuation methods would you suggest exploring?

Those are the main ones, and they're all simple expressions for the constraint condition that you have to handle for arc-length methods, thus suitable to make extensible. Wriggers' book has a nice discussion and table. I imagine we'll get some more experience with the tradeoffs after I add it to SNES.

> The test problem we are dealing with assumes plasticity but with small strains so we will not see any snap-throughs, snap-backs or similar. TSBEULER works quite well for this specific case and converges in a few time steps within around 5-10 SNES iterations per time step. What PETSc functions do you suggest exploring for implementing the TS time step extension control you mentioned?

Check out src/ts/adapt/impls/ for the current implementations.

> Since you mentioned -ts_theta_initial_guess_extrapolate, is it worth using it in highly nonlinear mechanical problems (such as plasticity)? It sounds quite useful if it consistently reduces SNES iterations by one per time step, as each linear solve is quite expensive for large problems.

I found sometimes it overshoots and thus causes problems, so effectiveness was problem-dependent. It's just a run-time flag so check it out.

I'm curious if you have experience using BFGS with Jacobian scaling (either a V-cycle or a sparse direct solve) instead of Newton. You can try it using -snes_type qn -snes_qn_scale_type jacobian. This can greatly reduce the number of assemblies and preconditioner setups, and we find it also reduces total number of V-cycles so is effective even with our matrix-free p-MG (which are very fast and have much lower setup costs, https://arxiv.org/abs/2204.01722).


More information about the petsc-users mailing list