Data Structure: Solver_control |
|
Description |
Solver Control data structure |
Usage |
Solver_control NUM=ival where ival is the data structure number |
Description |
Overview The Solver_control structure defines additional data to define the solver to be used for the implicit fields; i.e. the thermal and porous flow field. In particular it can be used to select the partition method used by the Mumps solver. Note that in some cases MUMPS may throw an error with a particular partition method, in which case an alternative method must be selected. |
Solver_type Implicit solver type |
Usage |
||||
|
||||
Description |
||||
Defines the implicit solver type. Valid values are: • "Mumps" - Mumps (MUltifrontal Massively Parallel Solver). Default if number of freedoms > 50. • "Direct" - Simple direct solver using LU factorisation for non symmetric matrices and Cholesky factorisation for symmetric matrices. Sequential analysis only. Default if number of freedoms < 50. • "Petsc" - PETSc (Portable, Extensible Toolkit for Scientific computation, Revision 3.18.5). The PETSc library contains a large number of iterative solvers and associated pre-conditioners.
Direct
Simple direct solver using LU factorisation for non symmetric matrices and Cholesky factorisation for symmetric matrices. This option is only available in sequential analysis and is the default if the number of freedoms is less than 50.
Mumps
The Mumps (MUltifrontal Massively Parallel Solver) is the default solver (if number of freedoms > 50) both sequentially and in parallel and is usually the most effective solver in terms of accuracy and stability if the number of equations is moderate < = 1M). The MUMPS direct solver has only one optional setting Mumps_partition_type which can generally be left as the default value of "Pord". Being a direct solver (i.e. a multifrontal implementation of Gaussion factorisation) it requires no tuning parameters. However for some systems the estimated memory need to be increased using the keyword Mumps_ICNTL14 (see Mumps manual for more explanation).
Petsc
PETSc (Portable, Extensible Toolkit for Scientific computation, Revision 3.18.5, https://petsc.org/release). For an overview see https://petsc.org/release/overview/nutshell/#solvers. The PETSc library contains a large number of iterative solvers and associated pre-conditioners. The default settings are PCGAMG (GAMG - Geometric algebraic multigrid) preconditioner together with the KSPBCGS (BCGS - Stabilized Biconjugate Gradient (BiCGStab)) solver. The options for Petsc can be defined using the petsc_options.set file; either in the PARAGEOHOME directory or by creating a petsc_options.set file in the project directory. The PETSc runtime options are defined in Chapter 15 of the PETSc manual.
In the ParaGeo implementation the key components are:
The Iterative solver (Krylov Subspace Method (KSP)) The KSP object is the heart of PETSc, and provides access to all of the package�s linear system solvers, including parallel and sequential, direct and iterative (depending on the build configuration). In ParaGeo only the iterative solvers are built and direct solution is provided directly through the MUMPS native interface. The type of iterative solver can be set using the keyword /k1 - ksp_type in the petsc_options.set file, with the default setting being bcgs (BiCGStab method). See the petsc website for a full list of KSP options. The KSP method also has many different options for tuning performance and also for monitoring convergence. In particular the keywords - ksp_rtol (the absolute size of the residual norm) and - ksp_max_it (maximum number of iterations) may be used to tighten/loosen the convergence tolerance and prevent excessive number of iterations.
Pre-Conditioner (PC) The rate of convergence of KSP methods for a particular linear system is strongly dependent on its spectrum, and preconditioning is typically used to alter the spectrum and hence accelerate the convergence rate of iterative techniques. The pre-conditioner may be defined using the - pc_type keyword in petsc_options.set, with the default setting being GAMG (Algebraic Multigrid). In addition to the standard PETsc pre-conditioners, the HYPRE pre-conditioners (https://hypre.readthedocs.io/en/latest/ch-intro.html) may also be used. This includes BoomerAMG (algebraic multigrid method) which is envoked using the keywords - pc_type hypre together with - pc_hypre_type boomeramg. Petsc allows a range of setting to be defined for the boomerang preconditioner, for example
HYPRE preconditioner options •- pc_hypre_type (choose one of) pilut parasails boomeramg ams (PCHYPRESetType)
HYPRE BoomerAMG Options •- pc_hypre_boomeramg_cycle_type (Default V) (choose one of) V W (None) •- pc_hypre_boomeramg_max_levels (Default 25): Number of levels (of grids) allowed (None) •- pc_hypre_boomeramg_max_iter (Default 1): Maximum iterations used PER hypre call (None) •- pc_hypre_boomeramg_tol (Default 0.0): Convergence tolerance PER hypre call (0.0 = use a fixed number of iterations) (None) •- pc_hypre_boomeramg_truncfactor (Default 0.0): Truncation factor for interpolation (0 =no truncation) (None) •- pc_hypre_boomeramg_P_max (Default 0): Max elements per row for interpolation operator (0 =unlimited) (None) •- pc_hypre_boomeramg_agg_nl (Default 0): Number of levels of aggressive coarsening (None) •- pc_hypre_boomeramg_agg_num_paths (Default 1): Number of paths for aggressive coarsening (None) •- pc_hypre_boomeramg_strong_threshold (Default 0.25): Threshold for being strongly connected (None) •- pc_hypre_boomeramg_max_row_sum (Default 0.9): Maximum row sum (None) •- pc_hypre_boomeramg_grid_sweeps_all (Default 1): Number of sweeps for the up and down grid levels (None) •- pc_hypre_boomeramg_nodal_coarsen (Default 0): Use a nodal based coarsening 1-6 (HYPRE_BoomerAMGSetNodal) •- pc_hypre_boomeramg_vec_interp_variant (Default 0): Variant of algorithm 1-3 (HYPRE_BoomerAMGSetInterpVecVariant) •- pc_hypre_boomeramg_grid_sweeps_down (Default 1): Number of sweeps for the down cycles (None) •- pc_hypre_boomeramg_grid_sweeps_up (Default 1): Number of sweeps for the up cycles (None) •- pc_hypre_boomeramg_grid_sweeps_coarse (Default 1): Number of sweeps for the coarse level (None) •- pc_hypre_boomeramg_smooth_type (Default Schwarz-smoothers) (choose one of) Schwarz-smoothers Pilut ParaSails Euclid (None) •- pc_hypre_boomeramg_smooth_num_levels (Default 25): Number of levels on which more complex smoothers are used (None) •- pc_hypre_boomeramg_eu_level (Default 0): Number of levels for ILU(k) in Euclid smoother (None) •- pc_hypre_boomeramg_eu_droptolerance (Default 0.0): Drop tolerance for ILU(k) in Euclid smoother (None) •- pc_hypre_boomeramg_eu_bj: (Default FALSE) Use Block Jacobi for ILU in Euclid smoother? (None) •- pc_hypre_boomeramg_relax_type_all (Default symmetric-SOR/Jacobi) (choose one of) Jacobi sequential-Gauss-Seidel seqboundary-Gauss-Seidel SOR/Jacobi backward-SOR/Jacobi symmetric-SOR/Jacobi l1scaled-SOR/Jacobi Gaussian-elimination CG Chebyshev FCF-Jacobi l1scaled-Jacobi (None) •- pc_hypre_boomeramg_relax_type_down (Default symmetric-SOR/Jacobi) (choose one of) Jacobi sequential-Gauss-Seidel seqboundary-Gauss-Seidel SOR/Jacobi backward-SOR/Jacobi symmetric-SOR/Jacobi l1scaled-SOR/Jacobi Gaussian-elimination CG Chebyshev FCF-Jacobi l1scaled-Jacobi (None) •- pc_hypre_boomeramg_relax_type_up (Default symmetric-SOR/Jacobi) (choose one of) Jacobi sequential-Gauss-Seidel seqboundary-Gauss-Seidel SOR/Jacobi backward-SOR/Jacobi symmetric-SOR/Jacobi l1scaled-SOR/Jacobi Gaussian-elimination CG Chebyshev FCF-Jacobi l1scaled-Jacobi (None) •- pc_hypre_boomeramg_relax_type_coarse (Default Gaussian-elimination) (choose one of) Jacobi sequential-Gauss-Seidel seqboundary-Gauss-Seidel SOR/Jacobi backward-SOR/Jacobi symmetric-SOR/Jacobi l1scaled-SOR/Jacobi Gaussian-elimination CG Chebyshev FCF-Jacobi l1scaled-Jacobi (None) •- pc_hypre_boomeramg_relax_weight_all (Default 1.0): Relaxation weight for all levels (0 = hypre estimates, - k = determined with k CG steps) (None) •- pc_hypre_boomeramg_relax_weight_level (Default 1.0): Set the relaxation weight for a particular level (weight,level) (None) •- pc_hypre_boomeramg_outer_relax_weight_all (Default 1.0): Outer relaxation weight for all levels (-k = determined with k CG steps) (None) •- pc_hypre_boomeramg_outer_relax_weight_level (Default 1.0): Set the outer relaxation weight for a particular level (weight,level) (None) •- pc_hypre_boomeramg_no_CF: (Default FALSE) Do not use CF-relaxation (None) •- pc_hypre_boomeramg_measure_type (Default local) (choose one of) local global (None) •- pc_hypre_boomeramg_coarsen_type (Default Falgout) (choose one of) CLJP Ruge-Stueben modifiedRuge-Stueben Falgout PMIS HMIS (None) •- pc_hypre_boomeramg_interp_type (Default classical) (choose one of) classical direct multipass multipass-wts ext+i ext+i-cc standard standard-wts FF FF1 (None) •- pc_hypre_boomeramg_print_statistics: Print statistics (None) •- pc_hypre_boomeramg_print_statistics (Default 3): Print statistics (None) •- pc_hypre_boomeramg_print_debug: Print debug information (None) •- pc_hypre_boomeramg_nodal_relaxation: (Default FALSE) Nodal relaxation via Schwarz (None)
|
Mumps_partition_type Domain decomposition type |
Usage |
||||
|
||||
Description |
||||
Domain decomposition type. Valid values are: • "Metis" - Metis partition • "Pord" - Pord partition (Default)
|
Output_level Output data for debugging |
Usage |
||||
|
||||
Description |
||||
Output data for debugging: • 0 - No output (default) • 1 - Minimal output • 2 - Output stiffness matrices
|
Mumps_ICNTL11 Mumps parameter INCTL(11): Error Analysis |
Usage |
||||
|
||||
Description |
||||
ICNTL(11) defines the level of error analysis on the equation system • 0 - No error analysis (default: mimum CPU requirement) • 1 - Full statistics (includes the condition number of the matrix) • 2 - Main statistics (recommended if error analysis is required)
|
Mumps_ICNTL14 Mumps parameter INCTL(14): Workspace parameters |
Usage |
||||
|
||||
Description |
||||
ICNTL(14) corresponds to the percentage increase in the estimated working space. •Phase: accessed by the host both during the analysis and the factorization phases. •Default value: 20 (which corresponds to a 20 % increase). •Related parameters: ICNTL(23)
Notes •When significant extra fill-in is caused by numerical pivoting, increasing ICNTL(14) may help.
|
Mumps_sequential_flag Specify to solve the equations sequentially with Mumps in a parallel run |
Usage |
||||
|
||||
Description |
||||
Specify to solve the equations sequentially with Mumps in a parallel run. Valid values are: • 0 - Use parallel solve • 1 - Use sequential solve
|
Mumps_statistics Flag for output Mumps statistics |
Usage |
||||
|
||||
Description |
||||
Flag for output of mumps statistics (ICNTL(2) and ICNTL(3)). Valid values are: • 0 - Do not output mumps statistics • 1 - Output mumps statistics
|
Matrix_output_flag Matrix output flag |
Usage |
||||
|
||||
Description |
||||
Flag for output of stiffness matrix and right hand side vector. Valid values are: • 0 - Do not output solution vectors • 1 - Output solution vectors
|
Pflow_stiff_output_flag Matrix output flag |
Usage |
||||
|
||||
Description |
||||
Flag for output of flow field stiffness matrix and right hand side vector. Valid values are: • 0 - Do not output flow field stiffness matrix nor right hand vector • 1 - Output flow field stiffness matrix and right hand vector
|
Therm_stiff_output_flag Matrix output flag |
Usage |
||||
|
||||
Description |
||||
Flag for output of thermal field stiffness matrix and right hand side vector. Valid values are: • 0 - Do not output thermal field stiffness matrix nor right hand vector • 1 - Output thermal field stiffness matrix and right hand vector
|
Petsc_options_file_name Name of petsc options file |
Usage |
||||
|
||||
Description |
||||
Name of he petsc options file (Default: petsc_options.set). ParaGeo will search for the file in the current directory first then in the PARAGEOHOME/x64 and PARAGEOHOME/bin directories
|
Petsc_ctol Petsc convergence rate tolerance |
Usage |
||||
|
||||
Description |
||||
Petsc convergence rate tolerance (default: 0.5E-5). If the convergence rate of the residual norm during a KSP solve is consistently below Petsc_ctol the iterative solution will be terminated
Notes •If Petsc_ctol is defined as zero then the convergence rate tolerance is disabled.
|
Petsc_mtol Petsc solution acceptance tolerance |
Usage |
||||
|
||||
Description |
||||
Petsc solution acceptance tolerance (default: 1.0E-4). If the residual norm for the last iteration of a KSP solve is below Petsc_mtol * the residual norm for the first iteration the solution will be accepted. Otherwise the solution will terminate
Notes •If Petsc_ctol is defined as zero then the any case where convergence is not achieved during the KSP solve will terminate the analysis
|
Petsc_converge_flag Flag indicating that the user defined petsc convergence check should be used |
Usage |
||||
|
||||
Description |
||||
Flag indicating that the user defined petsc convergence check should be used. Valid values are: • 0 - Use standerd petsc convergence check routine • 1 - Use ParaGeo convergence check routine for Petsc Solver(Default)
|
Petsc_converge_count Number of times the Petsc convergence check fails before termination |
Usage |
||||
|
||||
Description |
||||
Number of times the Petsc convergence check fails before termination (Default: 5)
|
petsc_resolve_tol Skips solve phase if the rhs norm is less that tol(resolve) * rhs norm on the first iteration of |
Usage |
||||
|
||||
Description |
||||
Skips solve phase if the rhs(right hand side) norm is less that tol(resolve) * rhs norm on the first iteration of the step (default: 1.0E-4). will terminate
Notes •As Petsc is an iterative solver a convergence norm is used (atol, rtol) to check when the solution has converged. The solution is therefore not exact and the error will be dependent on the convergence tolerance and to some extent the nature/size of the problem being solved. The error is sometimes large enough that the residual norm computed using the solved values will be large enough to trigger another solve step, even if the problem is essentially elastic. This can be optional surpressed by specifying petsc_resolve_tol to prevent resolves if the current rhs norm is below a factor (petsc_resolve_tol) of the rhs norm for the first iteration of the step
|
Petsc_ksp_monitor Flag for monitoring the convergence of the Petsc KSP solver |
Usage |
||||
|
||||
Description |
||||
Flag for monitoring the convergence of the Petsc KSP solver. Valid values are: • 0 - No output (default) • 1 - Output to par_rank 0 .res file • 2 - Output to par_rank 0 .res file and screen
|
Pre_solve_dyn_alloc_fact Flag for monitoring the convergence of the Petsc KSP solver |
Usage |
||||
|
||||
Description |
||||
Factor for dynamic allocation of values for pre-solve operations (Default 0.05). May need to be increased if a large number of neighbou nodes present (e.g. when coupled freedoms are present)
|