#include "cs_defs.h"
#include <assert.h>
#include <stdlib.h>
#include <string.h>
#include <bft_error.h>
#include <bft_mem.h>
#include <bft_printf.h>
#include "cs_fp_exception.h"
#include "cs_log.h"
#include "cs_multigrid.h"
#include "cs_sles.h"
#include "cs_param_sles.h"
Functions | |
static bool | _system_should_be_sym (cs_param_itsol_type_t solver) |
Return true if the prescribed solver implies a symmetric linear system. More... | |
static void | _check_settings (cs_param_sles_t *slesp) |
Check if the settings are consitent. Can apply minor modifications. More... | |
static int | _get_poly_degree (const cs_param_sles_t *slesp) |
Retrieve the value of the polynomial degree to consider according to the settings. Only for in-house solvers. More... | |
static void | _set_saturne_sles (bool use_field_id, cs_param_sles_t *slesp) |
Set parameters for initializing SLES structures used for the resolution of the linear system. Case of saturne's own solvers. More... | |
static void | _set_mumps_sles (bool use_field_id, cs_param_sles_t *slesp) |
Set parameters for initializing SLES structures used for the resolution of the linear system. Case of MUMPS's own solvers. More... | |
static void | _set_petsc_hypre_sles (bool use_field_id, cs_param_sles_t *slesp) |
Set parameters for initializing SLES structures used for the resolution of the linear system. Case of PETSc and Hypre families of solvers. More... | |
cs_param_sles_saddle_t * | cs_param_sles_saddle_create (void) |
Create a cs_param_sles_saddle_t structure and assign a minimalist default settings. More... | |
void | cs_param_sles_saddle_init_schur (const char *basename, cs_param_sles_saddle_t *saddlep) |
Initialize a cs_param_sles_t structure for the Schur approximation nested inside a ref cs_param_sles_saddle_t structure. By default, this member is not allocated. Do nothing if the related structure is already allocated. More... | |
void | cs_param_sles_saddle_copy (const cs_param_sles_saddle_t *ref, cs_param_sles_saddle_t *dest) |
Copy a cs_param_sles_saddle_t structure from ref to dest. More... | |
void | cs_param_sles_saddle_free (cs_param_sles_saddle_t **p_saddlep) |
Free the structure storing the parameter settings for a saddle-point system. More... | |
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. More... | |
void | cs_param_sles_free (cs_param_sles_t **p_slesp) |
Free a cs_param_sles_t structure. More... | |
void | cs_param_sles_log (cs_param_sles_t *slesp) |
Log information related to the linear settings stored in the structure. More... | |
void | cs_param_sles_copy_from (cs_param_sles_t *src, cs_param_sles_t *dst) |
Copy a cs_param_sles_t structure from src to dst. More... | |
int | cs_param_sles_set (bool use_field_id, cs_param_sles_t *slesp) |
Define cs_sles_t structure in accordance with the settings of a cs_param_sles_t structure (SLES = Sparse Linear Equation Solver) More... | |
void | cs_param_sles_update_cvg_settings (bool use_field_id, const cs_param_sles_t *slesp) |
Update the settings associated to a cs_sles_t structure and apply those defined in the given cs_param_sles_t structure. This function is used only when a first setup has been performed. More... | |
cs_param_sles_class_t | cs_param_sles_get_class_from_amg (cs_param_amg_type_t amg_type) |
Retrieve the related solver class from the amg type. More... | |
cs_param_sles_class_t | cs_param_sles_check_class (cs_param_sles_class_t wanted_class) |
Check the availability of a solver library and return the requested one if this is possible or an alternative or CS_PARAM_SLES_N_CLASSES if no alternative is available. More... | |
void | cs_param_sles_check_amg (cs_param_sles_t *slesp) |
Check if the setting related to the AMG is consistent with the solver class. More... | |
|
static |
Check if the settings are consitent. Can apply minor modifications.
[in,out] | slesp | pointer to a cs_param_sles_t structure |
|
static |
Retrieve the value of the polynomial degree to consider according to the settings. Only for in-house solvers.
[in] | slesp | pointer to a cs_param_sles_t structure |
|
static |
Set parameters for initializing SLES structures used for the resolution of the linear system. Case of MUMPS's own solvers.
[in] | use_field_id | if false use system name |
[in,out] | slesp | pointer to a cs_param_sles_t structure |
|
static |
Set parameters for initializing SLES structures used for the resolution of the linear system. Case of PETSc and Hypre families of solvers.
[in] | use_field_id | if false use system name |
[in,out] | slesp | pointer to a cs_param_sles_t structure |
|
static |
Set parameters for initializing SLES structures used for the resolution of the linear system. Case of saturne's own solvers.
[in] | use_field_id | if false use system name |
[in,out] | slesp | pointer to a cs_param_sles_t structure |
|
inlinestatic |
Return true if the prescribed solver implies a symmetric linear system.
void cs_param_sles_check_amg | ( | cs_param_sles_t * | slesp | ) |
Check if the setting related to the AMG is consistent with the solver class.
[in,out] | slesp | pointer to a cs_pparam_sles_t structure |
cs_param_sles_class_t cs_param_sles_check_class | ( | cs_param_sles_class_t | wanted_class | ) |
Check the availability of a solver library and return the requested one if this is possible or an alternative or CS_PARAM_SLES_N_CLASSES if no alternative is available.
[in] | wanted_class | requested class of solvers |
void cs_param_sles_copy_from | ( | cs_param_sles_t * | src, |
cs_param_sles_t * | dst | ||
) |
Copy a cs_param_sles_t structure from src to dst.
[in] | src | reference cs_param_sles_t structure to copy |
[in,out] | dst | copy of the reference at exit |
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.
[in] | field_id | id related to to the variable field or -1 |
[in] | system_name | name of the system to solve or NULL |
void cs_param_sles_free | ( | cs_param_sles_t ** | p_slesp | ) |
Free a cs_param_sles_t structure.
[in,out] | slesp | pointer to a \cs_param_sles_t structure to free |
cs_param_sles_class_t cs_param_sles_get_class_from_amg | ( | cs_param_amg_type_t | amg_type | ) |
Retrieve the related solver class from the amg type.
[in] | amg_type | type of AMG to consider |
void cs_param_sles_log | ( | cs_param_sles_t * | slesp | ) |
Log information related to the linear settings stored in the structure.
[in] | slesp | pointer to a cs_param_sles_log |
void cs_param_sles_saddle_copy | ( | const cs_param_sles_saddle_t * | ref, |
cs_param_sles_saddle_t * | dest | ||
) |
Copy a cs_param_sles_saddle_t structure from ref to dest.
[in] | ref | reference structure to be copied |
[in,out] | dest | destination structure |
cs_param_sles_saddle_t* cs_param_sles_saddle_create | ( | void | ) |
Create a cs_param_sles_saddle_t structure and assign a minimalist default settings.
void cs_param_sles_saddle_free | ( | cs_param_sles_saddle_t ** | p_saddlep | ) |
Free the structure storing the parameter settings for a saddle-point system.
[in,out] | p_saddlep | double pointer to the structure to free |
void cs_param_sles_saddle_init_schur | ( | const char * | basename, |
cs_param_sles_saddle_t * | saddlep | ||
) |
Initialize a cs_param_sles_t structure for the Schur approximation nested inside a ref cs_param_sles_saddle_t structure. By default, this member is not allocated. Do nothing if the related structure is already allocated.
[in] | basename | prefix for the naming of the Schur system |
[in,out] | saddlep | pointer to the structure to update |
int cs_param_sles_set | ( | bool | use_field_id, |
cs_param_sles_t * | slesp | ||
) |
Define cs_sles_t structure in accordance with the settings of a cs_param_sles_t structure (SLES = Sparse Linear Equation Solver)
[in] | use_field_id | if false use system name to define a SLES |
[in,out] | slesp | pointer to a cs_param_sles_t structure |
void cs_param_sles_update_cvg_settings | ( | bool | use_field_id, |
const cs_param_sles_t * | slesp | ||
) |
Update the settings associated to a cs_sles_t structure and apply those defined in the given cs_param_sles_t structure. This function is used only when a first setup has been performed.
One modifies only some specific options like the max. number of iterations or the relative tolerance
[in] | use_field_id | if false use a name to retrieve the cs_sles_t struc. |
[in] | slesp | pointer to a cs_param_sles_t structure |