8.2
general documentation
Loading...
Searching...
No Matches
cs_param_sles.h
Go to the documentation of this file.
1#ifndef __CS_PARAM_SLES_H__
2#define __CS_PARAM_SLES_H__
3
4/*============================================================================
5 * Routines to handle the SLES (Sparse Linear Equation Solver) settings
6 *============================================================================*/
7
8/*
9 This file is part of code_saturne, a general-purpose CFD tool.
10
11 Copyright (C) 1998-2024 EDF S.A.
12
13 This program is free software; you can redistribute it and/or modify it under
14 the terms of the GNU General Public License as published by the Free Software
15 Foundation; either version 2 of the License, or (at your option) any later
16 version.
17
18 This program is distributed in the hope that it will be useful, but WITHOUT
19 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
20 FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
21 details.
22
23 You should have received a copy of the GNU General Public License along with
24 this program; if not, write to the Free Software Foundation, Inc., 51 Franklin
25 Street, Fifth Floor, Boston, MA 02110-1301, USA.
26*/
27
28/*----------------------------------------------------------------------------*/
29
30/*----------------------------------------------------------------------------
31 * Local headers
32 *----------------------------------------------------------------------------*/
33
34#include "cs_param_amg.h"
35#include "cs_param_mumps.h"
36#include "cs_param_types.h"
37
38/*----------------------------------------------------------------------------*/
39
41
49
50/*============================================================================
51 * Macro definitions
52 *============================================================================*/
53
54/*============================================================================
55 * Type definitions
56 *============================================================================*/
57
63
112
113/*============================================================================
114 * Global variables
115 *============================================================================*/
116
117/*============================================================================
118 * Public function prototypes
119 *============================================================================*/
120
121/*----------------------------------------------------------------------------*/
131/*----------------------------------------------------------------------------*/
132
134cs_param_sles_create(int field_id,
135 const char *system_name);
136
137/*----------------------------------------------------------------------------*/
143/*----------------------------------------------------------------------------*/
144
145void
147
148/*----------------------------------------------------------------------------*/
155/*----------------------------------------------------------------------------*/
156
157void
159
160/*----------------------------------------------------------------------------*/
167/*----------------------------------------------------------------------------*/
168
169void
171 cs_param_sles_t *dst);
172
173/*----------------------------------------------------------------------------*/
182/*----------------------------------------------------------------------------*/
183
184int
185cs_param_sles_set_solver(const char *keyval,
186 cs_param_sles_t *slesp);
187
188/*----------------------------------------------------------------------------*/
197/*----------------------------------------------------------------------------*/
198
199int
200cs_param_sles_set_precond(const char *keyval,
201 cs_param_sles_t *slesp);
202
203/*----------------------------------------------------------------------------*/
213/*----------------------------------------------------------------------------*/
214
215int
216cs_param_sles_set_solver_class(const char *keyval,
217 cs_param_sles_t *slesp);
218
219/*----------------------------------------------------------------------------*/
229/*----------------------------------------------------------------------------*/
230
231int
232cs_param_sles_set_amg_type(const char *keyval,
233 cs_param_sles_t *slesp);
234
235/*----------------------------------------------------------------------------*/
245/*----------------------------------------------------------------------------*/
246
247int
248cs_param_sles_set_precond_block_type(const char *keyval,
249 cs_param_sles_t *slesp);
250
251/*----------------------------------------------------------------------------*/
263/*----------------------------------------------------------------------------*/
264
265void
267 double rtol,
268 double atol,
269 double dtol,
270 int max_iter);
271
272/*----------------------------------------------------------------------------*/
281/*----------------------------------------------------------------------------*/
282
283void
285 bool used_as_solver,
286 bool used_as_k_cycle);
287
288/*----------------------------------------------------------------------------*/
306/*----------------------------------------------------------------------------*/
307
308void
310 int n_down_iter,
311 cs_param_amg_inhouse_solver_t down_smoother,
312 int down_poly_deg,
313 int n_up_iter,
315 int up_poly_deg,
316 cs_param_amg_inhouse_solver_t coarse_solver,
317 int coarse_poly_deg,
319 int aggreg_limit);
320
321/*----------------------------------------------------------------------------*/
334/*----------------------------------------------------------------------------*/
335
336void
338 int max_levels,
339 cs_gnum_t min_n_g_rows,
340 double p0p1_relax,
341 int coarse_max_iter,
342 double coarse_rtol_mult);
343
344/*----------------------------------------------------------------------------*/
351/*----------------------------------------------------------------------------*/
352
353void
355
356/*----------------------------------------------------------------------------*/
371/*----------------------------------------------------------------------------*/
372
373void
375 int n_down_iter,
376 cs_param_amg_boomer_smoother_t down_smoother,
377 int n_up_iter,
379 cs_param_amg_boomer_smoother_t coarse_solver,
381
382/*----------------------------------------------------------------------------*/
396/*----------------------------------------------------------------------------*/
397
398void
400 double strong_thr,
402 int p_max,
403 int n_agg_lv,
404 int n_agg_paths);
405
406/*----------------------------------------------------------------------------*/
413/*----------------------------------------------------------------------------*/
414
415void
417
418/*----------------------------------------------------------------------------*/
429/*----------------------------------------------------------------------------*/
430
431void
433 bool is_single,
434 cs_param_mumps_facto_type_t facto_type);
435
436/*----------------------------------------------------------------------------*/
452/*----------------------------------------------------------------------------*/
453
454void
456 cs_param_mumps_analysis_algo_t analysis_algo,
457 int block_analysis,
458 double mem_coef,
459 double blr_threshold,
460 int ir_steps,
462 bool advanced_optim);
463
464/*----------------------------------------------------------------------------*/
470/*----------------------------------------------------------------------------*/
471
472bool
474
475/*----------------------------------------------------------------------------*/
485/*----------------------------------------------------------------------------*/
486
489
490/*----------------------------------------------------------------------------*/
491
493
494#endif /* __CS_PARAM_SLES_H__ */
#define BEGIN_C_DECLS
Definition cs_defs.h:528
#define END_C_DECLS
Definition cs_defs.h:529
Routines to handle the set of parameters for algebraic multigrids (AMG) like boomerAMG of the HYPRE l...
cs_param_amg_boomer_interp_algo_t
Type of algorithm used in boomerAMG to coarsen a level. Only a selection of algorithms is available h...
Definition cs_param_amg.h:102
cs_param_amg_boomer_coarsen_algo_t
Type of algorithm used in boomerAMG to coarsen a level. Only a selection of algorithms is available h...
Definition cs_param_amg.h:85
cs_param_amg_inhouse_solver_t
Type of algorithm used in the in-house algorithm for smoothing each level or solving the coarse level...
Definition cs_param_amg.h:181
cs_param_amg_type_t
Definition cs_param_amg.h:64
cs_param_amg_boomer_smoother_t
Type of algorithm used in boomerAMG to smooth a level. Only a selection of algorithms is available he...
Definition cs_param_amg.h:121
cs_param_amg_inhouse_coarsen_t
Type of algorithm used in the in-house algorithm to coarsen each level. This enum avoids using the as...
Definition cs_param_amg.h:205
Routines and structure to handle the MUMPS setup. The structure is used as a context structure of a c...
cs_param_mumps_facto_type_t
type of factorization to consider when using the MUMPS solver to solve a linear system
Definition cs_param_mumps.h:71
cs_param_mumps_memory_usage_t
Strategy for the memory usage inside MUMPS.
Definition cs_param_mumps.h:149
cs_param_mumps_analysis_algo_t
Type of algorithm to consider when using the MUMPS solver to perform the analysis step (renumbering a...
Definition cs_param_mumps.h:119
void cs_param_sles_amg_inhouse(cs_param_sles_t *slesp, int n_down_iter, cs_param_amg_inhouse_solver_t down_smoother, int down_poly_deg, int n_up_iter, cs_param_amg_inhouse_solver_t up_smoother, int up_poly_deg, cs_param_amg_inhouse_solver_t coarse_solver, int coarse_poly_deg, cs_param_amg_inhouse_coarsen_t coarsen_algo, int aggreg_limit)
Set the main members of a cs_param_amg_inhouse_t structure. This structure is not reset before applyi...
Definition cs_param_sles.c:1360
void cs_param_sles_mumps(cs_param_sles_t *slesp, bool is_single, cs_param_mumps_facto_type_t facto_type)
Set the main members of a cs_param_mumps_t structure. This structure is allocated and initialized wit...
Definition cs_param_sles.c:1591
bool cs_param_sles_hypre_from_petsc(void)
Check the availability of Hypre solvers from the PETSc library.
Definition cs_param_sles.c:1662
void cs_param_sles_copy_from(const cs_param_sles_t *src, cs_param_sles_t *dst)
Copy a cs_param_sles_t structure from src to dst.
Definition cs_param_sles.c:435
void cs_param_sles_boomeramg_advanced(cs_param_sles_t *slesp, double strong_thr, cs_param_amg_boomer_interp_algo_t interp_algo, int p_max, int n_agg_lv, int n_agg_paths)
Set the members of a cs_param_amg_boomer_t structure used in advanced settings. This structure is all...
Definition cs_param_sles.c:1529
void cs_param_sles_amg_inhouse_advanced(cs_param_sles_t *slesp, int max_levels, cs_gnum_t min_n_g_rows, double p0p1_relax, int coarse_max_iter, double coarse_rtol_mult)
Set the members of a cs_param_amg_inhouse_t structure used in advanced settings. CS_CDO_KEEP_DEFAULT ...
Definition cs_param_sles.c:1419
void cs_param_sles_amg_inhouse_reset(cs_param_sles_t *slesp, bool used_as_solver, bool used_as_k_cycle)
Allocate and initialize a new context structure for the in-house AMG settings.
Definition cs_param_sles.c:1325
int cs_param_sles_set_solver_class(const char *keyval, cs_param_sles_t *slesp)
Set the class of solvers associated to this SLES from its keyval Common choices are "petsc",...
Definition cs_param_sles.c:976
int cs_param_sles_set_solver(const char *keyval, cs_param_sles_t *slesp)
Set the solver associated to this SLES from its keyval.
Definition cs_param_sles.c:488
int cs_param_sles_set_precond(const char *keyval, cs_param_sles_t *slesp)
Set the preconditioner associated to this SLES from its keyval.
Definition cs_param_sles.c:679
void cs_param_sles_mumps_reset(cs_param_sles_t *slesp)
Allocate and initialize a new context structure for the MUMPS settings.
Definition cs_param_sles.c:1563
void cs_param_sles_free(cs_param_sles_t **p_slesp)
Free a cs_param_sles_t structure.
Definition cs_param_sles.c:284
cs_param_solver_class_t cs_param_sles_check_class(cs_param_solver_class_t wanted_class)
Check the availability of a solver library and return the requested one if this is possible or an alt...
Definition cs_param_sles.c:1688
void cs_param_sles_set_cvg_param(cs_param_sles_t *slesp, double rtol, double atol, double dtol, int max_iter)
Set the convergence criteria for the given SLES parameters. One can use the parameter value CS_CDO_KE...
Definition cs_param_sles.c:1283
void cs_param_sles_boomeramg_reset(cs_param_sles_t *slesp)
Allocate and initialize a new context structure for the boomerAMG settings.
Definition cs_param_sles.c:1458
int cs_param_sles_set_precond_block_type(const char *keyval, cs_param_sles_t *slesp)
Set the type of block preconditioner associated to this SLES from its keyval.
Definition cs_param_sles.c:1218
cs_param_sles_t * cs_param_sles_create(int field_id, const char *system_name)
Create a cs_param_sles_t structure and assign a default settings.
Definition cs_param_sles.c:236
int cs_param_sles_set_amg_type(const char *keyval, cs_param_sles_t *slesp)
Set the type of algebraic multigrid (AMG) associated to this SLES from its keyval.
Definition cs_param_sles.c:1076
void cs_param_sles_mumps_advanced(cs_param_sles_t *slesp, cs_param_mumps_analysis_algo_t analysis_algo, int block_analysis, double mem_coef, double blr_threshold, int ir_steps, cs_param_mumps_memory_usage_t mem_usage, bool advanced_optim)
Set the members related to an advanced settings of a cs_param_mumps_t structure. This structure is al...
Definition cs_param_sles.c:1625
void cs_param_sles_boomeramg(cs_param_sles_t *slesp, int n_down_iter, cs_param_amg_boomer_smoother_t down_smoother, int n_up_iter, cs_param_amg_boomer_smoother_t up_smoother, cs_param_amg_boomer_smoother_t coarse_solver, cs_param_amg_boomer_coarsen_algo_t coarsen_algo)
Set the main members of a cs_param_amg_boomer_t structure. This structure is allocated and initialize...
Definition cs_param_sles.c:1487
void cs_param_sles_log(cs_param_sles_t *slesp)
Log information related to the linear settings stored in the structure.
Definition cs_param_sles.c:315
cs_param_resnorm_type_t
Definition cs_param_types.h:835
cs_param_solver_class_t
Class of iterative solvers to consider for solver the linear system.
Definition cs_param_types.h:617
cs_param_precond_type_t
Definition cs_param_types.h:726
cs_param_precond_block_t
Definition cs_param_types.h:652
cs_param_solver_type_t
Definition cs_param_types.h:806
Set of parameters to check the convergence (or the divergence) of an iterative process (tolerances or...
Definition cs_param_types.h:537
Structure storing all metadata related to the resolution of a linear system with an iterative solver.
Definition cs_param_sles.h:64
int field_id
Definition cs_param_sles.h:67
int verbosity
Definition cs_param_sles.h:69
void * context_param
Definition cs_param_sles.h:109
char * name
Definition cs_param_sles.h:66
cs_param_convergence_t cvg_param
Definition cs_param_sles.h:102
cs_param_precond_block_t precond_block_type
Definition cs_param_sles.h:82
cs_param_resnorm_type_t resnorm_type
Definition cs_param_sles.h:88
cs_param_precond_type_t precond
Definition cs_param_sles.h:72
cs_param_solver_class_t solver_class
Definition cs_param_sles.h:71
bool allow_no_op
Definition cs_param_sles.h:95
int restart
Definition cs_param_sles.h:75
cs_param_amg_type_t amg_type
Definition cs_param_sles.h:76
bool flexible
Definition cs_param_sles.h:74
cs_param_solver_type_t solver
Definition cs_param_sles.h:73