Handle the settings of saddle-point systems. These systems arise from the monolithic coupling of the Navier-Stokes equations or in mixed formulation of scalar-valued equations.
More...
|
enum | cs_param_saddle_precond_t {
CS_PARAM_SADDLE_PRECOND_NONE
, CS_PARAM_SADDLE_PRECOND_DIAG
, CS_PARAM_SADDLE_PRECOND_LOWER
, CS_PARAM_SADDLE_PRECOND_SGS
,
CS_PARAM_SADDLE_PRECOND_UPPER
, CS_PARAM_SADDLE_PRECOND_UZAWA
, CS_PARAM_SADDLE_N_PRECOND
} |
| Type of preconditioner used to solve a saddle-point system. Up to now, this happens only in two cases: (1) with CDO cell-based schemes and (2) with the Stokes or Navier-Stokes equations with CDO face-based schemes and a monolithic approach (fully coupled) velocity-pressure coupling. More...
|
|
enum | cs_param_saddle_solver_t {
CS_PARAM_SADDLE_SOLVER_NONE
, CS_PARAM_SADDLE_SOLVER_ALU
, CS_PARAM_SADDLE_SOLVER_FGMRES
, CS_PARAM_SADDLE_SOLVER_GCR
,
CS_PARAM_SADDLE_SOLVER_GKB
, CS_PARAM_SADDLE_SOLVER_MINRES
, CS_PARAM_SADDLE_SOLVER_MUMPS
, CS_PARAM_SADDLE_SOLVER_NOTAY_TRANSFORM
,
CS_PARAM_SADDLE_SOLVER_UZAWA_CG
, CS_PARAM_SADDLE_N_SOLVERS
} |
| Type of solver used to solve a saddle-point system. Up to now, this happens only with CDO cell-based schemes or when solving the fully coupled Navier-Stokes system (monolithic) with CDO face-based schemes. A saddle-point system is an indefinite system. More...
|
|
enum | cs_param_saddle_schur_approx_t {
CS_PARAM_SADDLE_SCHUR_NONE
, CS_PARAM_SADDLE_SCHUR_DIAG_INVERSE
, CS_PARAM_SADDLE_SCHUR_IDENTITY
, CS_PARAM_SADDLE_SCHUR_LUMPED_INVERSE
,
CS_PARAM_SADDLE_SCHUR_MASS_SCALED
, CS_PARAM_SADDLE_SCHUR_MASS_SCALED_DIAG_INVERSE
, CS_PARAM_SADDLE_SCHUR_MASS_SCALED_LUMPED_INVERSE
, CS_PARAM_SADDLE_N_SCHUR_APPROX
} |
| Strategy to build the Schur complement approximation. This appears in block preconditioning or Uzawa algorithms when a fully coupled (also called monolithic) approach) is used. More...
|
|
|
void | cs_param_saddle_set_restart_range (cs_param_saddle_t *saddlep, int restart_range) |
| Set the number of iterations to store before starting a Krylov solver. More...
|
|
void | cs_param_saddle_set_notay_scaling (cs_param_saddle_t *saddlep, double scaling_coef) |
| Set the scaling coefficient used in the Notay's transformation devised in "Algebraic multigrid for Stokes equations" SIAM J. Sci. Comput. Vol. 39 (5), 2017 In this article, this scaling is denoted by alpha. More...
|
|
void | cs_param_saddle_set_augmentation_coef (cs_param_saddle_t *saddlep, double coef) |
| Set the scaling in front of the augmentation term when an ALU or a GKB algorithm is considered. More...
|
|
double | cs_param_saddle_get_augmentation_coef (const cs_param_saddle_t *saddlep) |
| Get the scaling coefficient in front of the augmentation term when an ALU or a GKB algorithm is considered. More...
|
|
const char * | cs_param_saddle_get_type_name (cs_param_saddle_solver_t type) |
| Retrieve the name of the type of saddle-point solver. More...
|
|
cs_param_saddle_t * | cs_param_saddle_create (void) |
| Create a cs_param_saddle_t structure No solver is set by default. More...
|
|
void | cs_param_saddle_free (cs_param_saddle_t **p_saddlep) |
| Free the structure storing the parameter settings for a saddle-point system. More...
|
|
const char * | cs_param_saddle_get_name (const cs_param_saddle_t *saddlep) |
| Retrieve the name of the saddle-point solver. More...
|
|
void | cs_param_saddle_set_name (const char *name, cs_param_saddle_t *saddlep) |
| Set the name of the saddle-point system. More...
|
|
void | cs_param_saddle_set_block11_sles_param (cs_param_saddle_t *saddlep, const cs_param_sles_t *block11_slesp) |
| Assign the cs_param_sles_t structure (shared) related to the (1,1)-block to the structure managing the resolution of the saddle-point problems. More...
|
|
int | cs_param_saddle_set_precond (const char *keyval, cs_param_saddle_t *saddlep) |
| Set the type of preconditioning to apply for this saddle-point system. More...
|
|
int | cs_param_saddle_set_schur_approx (const char *keyval, cs_param_saddle_t *saddlep) |
| Set the type of Schur approximation to apply to this saddle-point system. More...
|
|
int | cs_param_saddle_set_solver_class (const char *keyval, cs_param_saddle_t *saddlep) |
| Set the class of solver to apply for this saddle-point system. More...
|
|
int | cs_param_saddle_set_solver (const char *keyval, cs_param_saddle_t *saddlep) |
| Set the type of solver to apply for this saddle-point system. More...
|
|
void | cs_param_saddle_try_init_schur_sles_param (cs_param_saddle_t *saddlep) |
| Initialize a cs_param_sles_t structure for the Schur approximation nested inside a cs_param_saddle_t structure. By default, this member is not allocated. Do nothing if the related structure is already allocated. More...
|
|
cs_param_sles_t * | cs_param_saddle_get_schur_sles_param (const cs_param_saddle_t *saddlep) |
| Get the pointer to the set of parameters to handle a SLES. This SLES is associated to the approximation of the Schur complement. This is only useful for solving a saddle-point problem relying on an elaborated approximation of the Schur complement. More...
|
|
cs_param_sles_t * | cs_param_saddle_get_xtra_sles_param (const cs_param_saddle_t *saddlep) |
| Get the pointer to the set of parameters to handle a SLES. This SLES is associated to an extra-operation specific to a saddle-point solver It returns a non NULL pointer only for some sadlle-point solver relying on a more elaborated Schur complement approximation. More...
|
|
cs_param_sles_t * | cs_param_saddle_get_init_sles_param (const cs_param_saddle_t *saddlep) |
| Get the pointer to the set of parameters to handle a SLES. This SLES is associated to the initial saddle-point problem. It returns a non NULL pointer only for some sadlle-point solver. More...
|
|
void | cs_param_saddle_copy (const cs_param_saddle_t *ref, cs_param_saddle_t *dest) |
| Copy a cs_param_saddle_t structure from ref to dest. More...
|
|
void | cs_param_saddle_log (const cs_param_saddle_t *saddlep) |
| Log the setup information for the given cs_param_saddle_t structure. More...
|
|
Handle the settings of saddle-point systems. These systems arise from the monolithic coupling of the Navier-Stokes equations or in mixed formulation of scalar-valued equations.
Strategy to build the Schur complement approximation. This appears in block preconditioning or Uzawa algorithms when a fully coupled (also called monolithic) approach) is used.
\[ \begin{bmatrix} A&B^t\\ B&O \end{bmatrix}\]
The exact Schur complement is then
\[ S = -B \cdot A^{-1} \cdot B \]
Enumerator |
---|
CS_PARAM_SADDLE_SCHUR_NONE | There is no Schur complement approximation.
|
CS_PARAM_SADDLE_SCHUR_DIAG_INVERSE | The Schur complement approximation is defined as
\[ S \approx -B \cdot diag(A)^{-1} \cdot B^t \]
|
CS_PARAM_SADDLE_SCHUR_IDENTITY | The Schur complement approximation is simply the identity matrix
|
CS_PARAM_SADDLE_SCHUR_LUMPED_INVERSE | The Schur complement approximation is defined as
\[ B \cdot lumped(A^{-1}) \cdot B^t \]
where \(x=lumped(A^{-1})\) results from \(A.x = \bf{1}\) ( \(\bf{1}\) is the array fills with 1 in each entry)
|
CS_PARAM_SADDLE_SCHUR_MASS_SCALED | The Schur complement approximation is simply a scaled diagonal mass matrix related to the (2,2)-block
|
CS_PARAM_SADDLE_SCHUR_MASS_SCALED_DIAG_INVERSE | The Schur complement approximation is defined as
\[ S \approx \alpha M_{22} + \frac{1}{dt} B.diag(A)^{-1}.B^t \]
where \(M_{22}\) is the mass matrix related to the (2,2)-block
|
CS_PARAM_SADDLE_SCHUR_MASS_SCALED_LUMPED_INVERSE | The Schur complement approximation is defined as
\[ S \approx \alpha \cdot M_{22} + \frac{1}{dt} B\cdot lumped(A^{-1}) \cdot B^t \]
where \( M_{22} \) is the mass matrix related to the (2,2) block and where \(x=lumped(A^{-1})\) results from \(A.x = \bf{1}\) ( \(\bf{1}\) is the array fills with 1 in each entry)
|
CS_PARAM_SADDLE_N_SCHUR_APPROX | |