1#ifndef CS_SLES_IT_PRIV_H
2#define CS_SLES_IT_PRIV_H
89#define HUGE_VAL 1.E+12
130typedef struct _cs_sles_it_setup_t {
132 double initial_residual;
148typedef struct _cs_sles_it_add_t {
157struct _cs_sles_it_t {
166 bool ignore_convergence;
170 int restart_interval;
175 cs_sles_it_solve_t *solve;
187 unsigned n_iterations_last;
189 unsigned n_iterations_min;
191 unsigned n_iterations_max;
193 unsigned long long n_iterations_tot;
209# if defined(HAVE_MPI)
211 MPI_Comm caller_comm;
215#if defined(HAVE_NCCL)
216 ncclComm_t nccl_comm;
219 const struct _cs_sles_it_t *shared;
223 cs_sles_it_add_t *add_data;
225 cs_sles_it_setup_t *setup_data;
231 int fallback_n_max_iter;
242struct _cs_sles_it_convergence_t {
248 unsigned n_iterations;
249 unsigned n_iterations_max;
281 aux[ii] = (c[ii] - b[ii]);
285 x[ii] = mat[3*ii + 0]*aux[0]
286 + mat[3*ii + 1]*aux[1]
287 + mat[3*ii + 2]*aux[2];
310 assert(db_size <= DB_SIZE_MAX);
314 for (
cs_lnum_t ii = 0; ii < db_size; ii++) {
315 aux[ii] = (c[ii] - b[ii]);
318 for (
cs_lnum_t ii = 0; ii < db_size; ii++) {
320 for (
cs_lnum_t jj = 0; jj < db_size; jj++) {
321 x[ii] += aux[jj]*mat[ii*db_size + jj];
342cs_sles_it_set_exec_location
359cs_sles_it_restore_exec_location([[maybe_unused]]
bool &local_stream);
379 const char *solver_name,
409 bool block_nn_inverse,
Definition: cs_dispatch.h:2288
#define restrict
Definition: cs_defs.h:148
void * cs_stream_t
Definition: cs_defs.h:135
double cs_real_t
Floating-point value.
Definition: cs_defs.h:332
int cs_lnum_t
local mesh entity id
Definition: cs_defs.h:325
struct _cs_matrix_t cs_matrix_t
Definition: cs_matrix.h:108
cs_sles_convergence_state_t
Definition: cs_sles.h:57
struct _cs_sles_it_t cs_sles_it_t
Definition: cs_sles_it.h:95
struct _cs_sles_it_convergence_t cs_sles_it_convergence_t
Definition: cs_sles_it.h:99
cs_sles_it_type_t
Definition: cs_sles_it.h:55
cs_sles_pc_state_t() cs_sles_pc_apply_t(void *context, const cs_real_t *x_in, cs_real_t *x_out)
Function pointer for application of a preconditioner.
Definition: cs_sles_pc.h:144
struct _cs_sles_pc_t cs_sles_pc_t
Definition: cs_sles_pc.h:65
struct _cs_time_plot_t cs_time_plot_t
Definition: cs_time_plot.h:44
Definition: cs_timer.h:51