The keywords for the implicit solvers are listed in the table below:
Keyword | Description | Default value |
---|---|---|
time integration | CHARACTER: This is the main keyword for activating the implicit solvers. The value of it should be set to 'implicit' for the BDF solvers and to 'rosenbrock' for Rosenbrock schemes. 'explicit' |
'explicit' |
linear solver | CHARACTER: Specifies the linear solver that has to be used. Options are: - 'petsc': PETSc library Krylov-Subspace methods. Available in serial, but use with care (PETSc is not thread-safe, so OpenMP is not recommended). Only available in parallel (MPI) for preallocated Jacobians (see next section). - 'pardiso': Intel MKL PARDISO. Only available in serial or with OpenMP. - 'matrix-free gmres': A matrix-free version of the GMRES algorithm. Can be used without preconditioner or with a recursive GMRES preconditioner using 'preconditioner=GMRES'. Available in serial and parallel (OpenMP+MPI) - 'smooth': Traditional iterative methods. One can select either 'smoother=WeightedJacobi' or 'smoother=BlockJacobi'. - 'matrix-free smooth': A matrix-free version of the previous solver. Only available with 'smoother=BlockJacobi'. |
'petsc' |
The BDF methods implemented in HORSES3D
use a Newton's method
Keyword | Description | Default value |
---|---|---|
bdf order | INTEGER: If present, the solver uses a BDF solver of the specified order. BDF1 - BDF5 are available, and BDF2 - BDF5 require constant time steps. | 1 |
jacobian by convergence | LOGICAL: When .TRUE., the Jacobian is only computed when the convergence falls beneath a threshold (hard-coded). This improves performance. | .FALSE. |
compute jacobian every | INTEGER: Forces the Jacobian to be computed in an interval of iterations that is specified. | Inf |
print newton info | LOGICAL: If .TRUE., the information of the Newton iterations will be displayed. | '.FALSE.' |
implicit adaptive dt | LOGICAL: Specifies if the time-step should be computed according to the convergence behavior of the Newton iterative method and the linear solver. | .FALSE. |
newton tolerance | REAL: Specifies the tolerance for the Newton's method. | for time-accurate simulations, or for steady-state simulations, where is the keyword newton factor |
newton max iter | INTEGER: Maximum number of Newton iterations for BDF solver. | 30 |
linsolver max iter | INTEGER: Maximum number of iterations to be taken by the linear solver. This keyword only affects iterative linear solvers. | 500 |
newton factor | REAL: In simulations that are not time-accurate, the tolerance of the Newton's method is a function of the residual: , where is the specified value. | |
linsolver tol factor | REAL: The linear solver tolerance is a function of the absolute error of the Newton's method: , where is the absolute error of the Newton's method, is the Newton iteration number, and is the specified value. | |
newton first norm | REAL: Specifies an assumed infinity norm of the absolute error of the Newton's method at the iteration of the time step . This can change the behavior of the first Newton iterative method because of the dependency of the linear system tolerance on the absolute error of the Newton's method (see keyword linsolver tol factor). |
Keyword | Description | Default value |
---|---|---|
rosenbrock scheme | CHARACTER: Rosenbrock scheme to be used. Currently, only the RO6-6 is implemented. | -- |
The Jacobian must be defined using a block of the form:
#define Jacobian
type = 2
print info = .TRUE.
preallocate = .TRUE.
#end
Keyword | Description | Default value |
---|---|---|
type | INTEGER: Specifies the type of Jacobian matrix to be computed. Options are: 1. Numerical Jacobian: Uses a coloring algorithm and a finite difference method to compute the DG Jacobian matrix (only available with shared memory parallelization). 2. Analytical Jacobian: Available with shared (OpenMP) or distributed (MPI) memory parallelization for advective and/or diffusive nonlinear conservation laws, BUT only for the standard DGSEM (no split-form). |
Mandatory Keyword |
print info | LOGICAL: Specifies the verbosity of the Jacobian subroutines | .TRUE. |
preallocate | LOGICAL: Specifies if the Jacobian must be allocated in preprocessing (.TRUE. - only available for advective/diffusive nonlinear conservation laws) or every time it is computed (.FALSE.) | .FALSE. |