150 cs_tree_node_t *config);
225 int aggregation_limit,
230 int postprocess_block_size);
249 int f_settings_threshold,
250 int aggregation_limit,
287 int n_max_iter_descent,
288 int n_max_iter_ascent,
289 int n_max_iter_coarse,
290 int poly_degree_descent,
291 int poly_degree_ascent,
292 int poly_degree_coarse,
293 double precision_mult_descent,
294 double precision_mult_ascent,
295 double precision_mult_coarse);
327 int n_max_iter_descent,
328 int n_max_iter_ascent,
329 int n_max_iter_coarse,
330 int poly_degree_descent,
331 int poly_degree_ascent,
332 int poly_degree_coarse);
513 const char *base_name,
533 int *rows_mean_threshold,
553 int rows_mean_threshold,
570 float *max_row_factor);
586 float max_row_factor);
#define BEGIN_C_DECLS
Definition: cs_defs.h:528
double cs_real_t
Floating-point value.
Definition: cs_defs.h:332
unsigned cs_gnum_t
global mesh entity number
Definition: cs_defs.h:317
#define END_C_DECLS
Definition: cs_defs.h:529
cs_grid_coarsening_t
Definition: cs_grid.h:48
cs_log_t
Definition: cs_log.h:44
struct _cs_matrix_t cs_matrix_t
Definition: cs_matrix.h:108
cs_tree_node_t * cs_multigrid_get_config(cs_multigrid_t *mg)
void cs_multigrid_setup(void *context, const char *name, const cs_matrix_t *a, int verbosity)
Setup multigrid sparse linear equation solver.
Definition: cs_multigrid.cpp:5275
void cs_multigrid_set_coarsening_options_fine_grid(cs_multigrid_t *mg, int f_settings_threshold, int aggregation_limit, cs_grid_coarsening_t coarsening_type)
Set specific multigrid coarsening parameters for fine grids.
Definition: cs_multigrid.cpp:4983
void cs_multigrid_setup_conv_diff(void *context, const char *name, const cs_matrix_t *a, bool conv_diff, int verbosity)
void cs_multigrid_get_merge_bottom_options(const cs_multigrid_t *mg, int *n_max_ranks, float *max_row_factor)
Query the global multigrid parameters for parallel grid merging.
Definition: cs_multigrid.cpp:6066
void cs_multigrid_set_solver_options_d(cs_multigrid_t *mg, cs_sles_it_type_t descent_smoother_type, cs_sles_it_type_t ascent_smoother_type, cs_sles_it_type_t coarse_solver_type, int n_max_iter_descent, int n_max_iter_ascent, int n_max_iter_coarse, int poly_degree_descent, int poly_degree_ascent, int poly_degree_coarse)
Set multigrid device solver parameters for associated iterative solvers.
Definition: cs_multigrid.cpp:5166
struct _cs_multigrid_t cs_multigrid_t
Definition: cs_multigrid.h:69
cs_multigrid_type_t
Definition: cs_multigrid.h:58
@ CS_MULTIGRID_K_CYCLE
Definition: cs_multigrid.h:61
@ CS_MULTIGRID_N_TYPES
Definition: cs_multigrid.h:63
@ CS_MULTIGRID_K_CYCLE_HPC
Definition: cs_multigrid.h:62
@ CS_MULTIGRID_V_CYCLE
Definition: cs_multigrid.h:60
void cs_multigrid_get_merge_options(const cs_multigrid_t *mg, int *rank_stride, int *rows_mean_threshold, cs_gnum_t *rows_glob_threshold)
Query the global multigrid parameters for parallel grid merging.
Definition: cs_multigrid.cpp:6003
void cs_multigrid_set_max_grid_level_for_device(int level)
Set maximum grid level which should run on device (i.e. GPU).
Definition: cs_multigrid.cpp:4574
cs_multigrid_t * cs_multigrid_define(int f_id, const char *name, cs_multigrid_type_t mg_type)
Define and associate a multigrid sparse linear system solver for a given field or equation name.
Definition: cs_multigrid.cpp:4607
void * cs_multigrid_copy(const void *context)
Create multigrid sparse linear system solver info and context based on existing info and context.
Definition: cs_multigrid.cpp:4851
void cs_multigrid_set_coarsening_options(cs_multigrid_t *mg, int aggregation_limit, cs_grid_coarsening_t coarsening_type, int n_max_levels, cs_gnum_t min_g_rows, double p0p1_relax, int postprocess_block_size)
Set multigrid coarsening parameters.
Definition: cs_multigrid.cpp:4946
cs_sles_pc_t * cs_multigrid_pc_create(cs_multigrid_type_t mg_type)
Create a multigrid preconditioner.
Definition: cs_multigrid.cpp:5682
void cs_multigrid_set_conv_diff(cs_multigrid_t *mg, bool conv_diff)
Definition: cs_multigrid.cpp:4919
cs_sles_convergence_state_t cs_multigrid_solve(void *context, const char *name, const cs_matrix_t *a, int verbosity, double precision, double r_norm, int *n_iter, double *residual, const cs_real_t *rhs, cs_real_t *vx_ini, cs_real_t *vx, size_t aux_size, void *aux_vectors)
Call multigrid sparse linear equation solver.
Definition: cs_multigrid.cpp:5362
void cs_multigrid_set_merge_options(cs_multigrid_t *mg, int rank_stride, int rows_mean_threshold, cs_gnum_t rows_glob_threshold)
Set global multigrid parameters for parallel grid merging behavior.
Definition: cs_multigrid.cpp:6040
void cs_multigrid_set_merge_bottom_options(cs_multigrid_t *mg, int n_max_ranks, float max_row_factor)
Set global multigrid parameters for parallel grid merging behavior.
Definition: cs_multigrid.cpp:6095
void cs_multigrid_set_plot_options(cs_multigrid_t *mg, const char *base_name, bool use_iteration)
Set plotting options for multigrid.
Definition: cs_multigrid.cpp:5957
bool cs_multigrid_error_post_and_abort(cs_sles_t *sles, cs_sles_convergence_state_t state, const cs_matrix_t *a, const cs_real_t *rhs, cs_real_t *vx)
void cs_multigrid_set_solver_options(cs_multigrid_t *mg, cs_sles_it_type_t descent_smoother_type, cs_sles_it_type_t ascent_smoother_type, cs_sles_it_type_t coarse_solver_type, int n_max_cycles, int n_max_iter_descent, int n_max_iter_ascent, int n_max_iter_coarse, int poly_degree_descent, int poly_degree_ascent, int poly_degree_coarse, double precision_mult_descent, double precision_mult_ascent, double precision_mult_coarse)
Set multigrid parameters for associated iterative solvers.
Definition: cs_multigrid.cpp:5032
void cs_multigrid_free(void *context)
Free multigrid sparse linear equation solver setup context.
Definition: cs_multigrid.cpp:5604
bool cs_multigrid_need_msr(const cs_multigrid_t *mg)
Indicate if a multigrid solver requires an MSR matrix input.
Definition: cs_multigrid.cpp:5239
void cs_multigrid_initialize(void)
Initialize multigrid solver API.
Definition: cs_multigrid.cpp:4551
cs_multigrid_t * cs_multigrid_create(cs_multigrid_type_t mg_type, cs_tree_node_t *config)
Create multigrid linear system solver info and context.
Definition: cs_multigrid.cpp:4644
void cs_multigrid_log(const void *context, cs_log_t log_type)
Log multigrid solver info.
Definition: cs_multigrid.cpp:4898
void cs_multigrid_set_max_cycles(cs_multigrid_t *mg, int n_max_cycles)
Set the max. number of cycles for a multigrid.
Definition: cs_multigrid.cpp:5217
void cs_multigrid_finalize(void)
Finalize multigrid solver API.
Definition: cs_multigrid.cpp:4562
const char * cs_multigrid_type_name[]
void cs_multigrid_destroy(void **context)
Destroy multigrid linear system solver info and context.
Definition: cs_multigrid.cpp:4793
cs_sles_convergence_state_t
Definition: cs_sles.h:57
struct _cs_sles_t cs_sles_t
Definition: cs_sles.h:72
cs_sles_it_type_t
Definition: cs_sles_it.h:55
struct _cs_sles_pc_t cs_sles_pc_t
Definition: cs_sles_pc.h:65