Go to the source code of this file.
Macros | |
#define | CS_SLES_AMGX_PREFER_COMM_FROM_MAPS (1 << 0) |
Typedefs | |
typedef struct _cs_sles_amgx_t | cs_sles_amgx_t |
Functions | |
cs_sles_amgx_t * | cs_sles_amgx_define (int f_id, const char *name) |
Define and associate an AmgX linear system solver for a given field or equation name. More... | |
cs_sles_amgx_t * | cs_sles_amgx_create (void) |
Create AmgX linear system solver info and context. More... | |
void * | cs_sles_amgx_copy (const void *context) |
Create AmgX linear system solver info and context based on existing info and context. More... | |
void | cs_sles_amgx_destroy (void **context) |
Destroy AmgX linear system solver info and context. More... | |
const char * | cs_sles_amgx_get_config (void *context) |
return the solver configuration for an AmgX solver. More... | |
void | cs_sles_amgx_set_config (void *context, const char *config) |
Define the configuration for an AmgX solver. More... | |
const char * | cs_sles_amgx_get_config_file (void *context) |
return the name of the solver configuration file for an AmgX solver. More... | |
void | cs_sles_amgx_set_config_file (void *context, const char *path) |
Set the solver configuration file for an AmgX solver. More... | |
bool | cs_sles_amgx_get_use_device (void *context) |
Define whether an AmgX solver should use the device or host. More... | |
void | cs_sles_amgx_set_use_device (void *context, bool use_device) |
Define whether an AmgX solver should use the device or host. More... | |
void | cs_sles_amgx_set_flags (void *context, int flags) |
Define additional AmgX solver usage flags. More... | |
int | cs_sles_amgx_get_flags (void *context) |
Query additional AmgX solver usage flags. More... | |
void | cs_sles_amgx_setup (void *context, const char *name, const cs_matrix_t *a, int verbosity) |
Setup AmgX linear equation solver. More... | |
cs_sles_convergence_state_t | cs_sles_amgx_solve (void *context, const char *name, const cs_matrix_t *a, int verbosity, double precision, double r_norm, int *n_iter, double *residue, const cs_real_t *rhs, cs_real_t *vx, size_t aux_size, void *aux_vectors) |
Call AmgX linear equation solver. More... | |
void | cs_sles_amgx_free (void *context) |
Free AmgX linear equation solver setup context. More... | |
void | cs_sles_amgx_log (const void *context, cs_log_t log_type) |
Log sparse linear equation solver info. More... | |
void | cs_sles_amgx_library_info (cs_log_t log_type) |
Print information on AmgX library. More... | |
#define CS_SLES_AMGX_PREFER_COMM_FROM_MAPS (1 << 0) |
AmgX wrapper option flags
Use AMGX_comm_from_maps_1_ring instead of AMGX_distribution for parallel matrices when its use seems possible
typedef struct _cs_sles_amgx_t cs_sles_amgx_t |
void* cs_sles_amgx_copy | ( | const void * | context | ) |
Create AmgX linear system solver info and context based on existing info and context.
[in] | context | pointer to reference info and context (actual type: cs_sles_amgx_t *) |
cs_sles_amgx_t* cs_sles_amgx_create | ( | void | ) |
Create AmgX linear system solver info and context.
In case of rotational periodicity for a block (non-scalar) matrix, the matrix type will be forced to MATSHELL ("shell") regardless of the option used.
cs_sles_amgx_t* cs_sles_amgx_define | ( | int | f_id, |
const char * | name | ||
) |
Define and associate an AmgX linear system solver for a given field or equation name.
If this system did not previously exist, it is added to the list of "known" systems. Otherwise, its definition is replaced by the one defined here.
This is a utility function: if finer control is needed, see cs_sles_define and cs_sles_amgx_create.
In case of rotational periodicity for a block (non-scalar) matrix, the matrix type will be forced to MATSHELL ("shell") regardless of the option used.
Note that this function returns a pointer directly to the solver management structure. This may be used to set further options. If needed, cs_sles_find may be used to obtain a pointer to the matching cs_sles_t container.
[in] | f_id | associated field id, or < 0 |
[in] | name | associated name if f_id < 0, or NULL |
void cs_sles_amgx_destroy | ( | void ** | context | ) |
Destroy AmgX linear system solver info and context.
[in,out] | context | pointer to AmgX solver info and context (actual type: cs_sles_amgx_t **) |
void cs_sles_amgx_free | ( | void * | context | ) |
Free AmgX linear equation solver setup context.
This function frees resolution-related data, such as buffers and preconditioning but does not free the whole context, as info used for logging (especially performance data) is maintained.
[in,out] | context | pointer to AmgX solver info and context (actual type: cs_sles_amgx_t *) |
const char* cs_sles_amgx_get_config | ( | void * | context | ) |
return the solver configuration for an AmgX solver.
Check the AmgX docummentation for configuration strings syntax.
[in,out] | context | pointer to AmgX solver info and context |
return the solver configuration for an AmgX solver.
Check the AmgX docummentation for configuration strings syntax.
[in,out] | context | pointer to AmgX solver info and context |
const char* cs_sles_amgx_get_config_file | ( | void * | context | ) |
return the name of the solver configuration file for an AmgX solver.
Check the AmgX docummentation for configuration file syntax.
[in,out] | context | pointer to AmgX solver info and context |
int cs_sles_amgx_get_flags | ( | void * | context | ) |
Query additional AmgX solver usage flags.
[in] | context | pointer to AmgX solver info and context |
bool cs_sles_amgx_get_use_device | ( | void * | context | ) |
Define whether an AmgX solver should use the device or host.
By default, the device will be used, but by callingg this function with "use_device = false", only the host will be used.
[in] | context | pointer to AmgX solver info and context |
Define whether an AmgX solver should use the device or host.
[in] | context | pointer to AmgX solver info and context |
void cs_sles_amgx_library_info | ( | cs_log_t | log_type | ) |
Print information on AmgX library.
[in] | log_type | log type |
void cs_sles_amgx_log | ( | const void * | context, |
cs_log_t | log_type | ||
) |
Log sparse linear equation solver info.
[in] | context | pointer to AmgX solver info and context (actual type: cs_sles_amgx_t *) |
[in] | log_type | log type |
void cs_sles_amgx_set_config | ( | void * | context, |
const char * | config | ||
) |
Define the configuration for an AmgX solver.
Check the AmgX docummentation for configuration strings syntax.
If this function is not called, a default configuration will be used.
[in,out] | context | pointer to AmgX solver info and context |
[in] | config | string defining configuration to use |
Define the configuration for an AmgX solver.
Check the AmgX docummentation for configuration strings syntax.
If this function is not called, a default configuration will be used.
[in,out] | context | pointer to AmgX solver info and context |
[in] | config | string defining configuration to use |
void cs_sles_amgx_set_config_file | ( | void * | context, |
const char * | path | ||
) |
Set the solver configuration file for an AmgX solver.
Check the AmgX docummentation for configuration file syntax.
If this function is not called, a default configuration will be used.
[in,out] | context | pointer to AmgX solver info and context |
[in] | path | path to configuration file |
void cs_sles_amgx_set_flags | ( | void * | context, |
int | flags | ||
) |
Define additional AmgX solver usage flags.
By default, the device will be used, but by calling this function with "use_device = false", only the host will be used.
[in,out] | context | pointer to AmgX solver info and context |
[in] | flags | flags (sum/bitwise of) for AmgX usage options. |
void cs_sles_amgx_set_use_device | ( | void * | context, |
bool | use_device | ||
) |
Define whether an AmgX solver should use the device or host.
By default, the device will be used, but by callingg this function with "use_device = false", only the host will be used.
[in,out] | context | pointer to AmgX solver info and context |
[in] | use_device | true for devince, false for host only |
By default, the device will be used, but by calling this function with "use_device = false", only the host will be used.
[in,out] | context | pointer to AmgX solver info and context |
[in] | use_device | true for devince, false for host only |
void cs_sles_amgx_setup | ( | void * | context, |
const char * | name, | ||
const cs_matrix_t * | a, | ||
int | verbosity | ||
) |
Setup AmgX linear equation solver.
[in,out] | context | pointer to AmgX solver info and context (actual type: cs_sles_amgx_t *) |
[in] | name | pointer to system name |
[in] | a | associated matrix |
[in] | verbosity | associated verbosity |
cs_sles_convergence_state_t cs_sles_amgx_solve | ( | void * | context, |
const char * | name, | ||
const cs_matrix_t * | a, | ||
int | verbosity, | ||
double | precision, | ||
double | r_norm, | ||
int * | n_iter, | ||
double * | residue, | ||
const cs_real_t * | rhs, | ||
cs_real_t * | vx, | ||
size_t | aux_size, | ||
void * | aux_vectors | ||
) |
Call AmgX linear equation solver.
[in,out] | context | pointer to AmgX solver info and context (actual type: cs_sles_amgx_t *) |
[in] | name | pointer to system name |
[in] | a | matrix |
[in] | verbosity | associated verbosity |
[in] | precision | solver precision |
[in] | r_norm | residue normalization |
[out] | n_iter | number of "equivalent" iterations |
[out] | residue | residue |
[in] | rhs | right hand side |
[in,out] | vx | system solution |
[in] | aux_size | number of elements in aux_vectors (in bytes) |
aux_vectors | optional working area (internal allocation if NULL) |