2
$\begingroup$

For a given discontinuous galerkin (DG) implementation for Navier-Stokes, targeting 10,000 to 1,000,000 4th order cells in 3D, I'm using PETSc's suite of linear/non-linear solvers on the back-end. It seems to me that there are two broad methods of implicitly solving the discretization. One can explicitly form the Jacobian in a sparse format and use whatever tools are available to solve it, or use a Jacobian-Free Newton-Krylov method that approximates the jacobian-vector products by evaluating the right-hand-side by finite differences. Advantages and disadvantages I see of each:

Explicit Jacobian

  • Con - Requires a large amount of memory (precisely how much? can I do this with <100GB total memory?)
  • Con - Requires writing code to evaluate the Jacobian and store it
  • Pro - Allows the use of black-box preconditioners already present in PETSc

Jacobian-Free Newton-Krylov

  • Pro - Minimal memory needs
  • Con - Unknown how often to re-linearize or what finite difference steps to use, how often to restart, etc.
  • Con - must write own preconditioners.

I'd like some input from those more familiar with these methods as to the advantages and disadvantages of them. Am I right to assume the explicit jacobian would be much faster?

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.