schwz
Generated automatically from develop
|
The initialization class that provides methods for initialization of the solver. More...
#include <initialization.hpp>
Public Member Functions | |
Initialize (Settings &settings, Metadata< ValueType, IndexType > &metadata) | |
void | generate_rhs (std::vector< ValueType > &rhs) |
Generates the right hand side vector. More... | |
void | setup_global_matrix (const std::string &filename, const gko::size_type &oned_laplacian_size, std::shared_ptr< gko::matrix::Csr< ValueType, IndexType >> &global_matrix) |
Generates the 2D global laplacian matrix. More... | |
void | partition (const Settings &settings, const Metadata< ValueType, IndexType > &metadata, const std::shared_ptr< gko::matrix::Csr< ValueType, IndexType >> &global_matrix, std::vector< unsigned int > &partition_indices) |
The partitioning function. More... | |
void | setup_vectors (const Settings &settings, const Metadata< ValueType, IndexType > &metadata, std::vector< ValueType > &rhs, std::shared_ptr< gko::matrix::Dense< ValueType >> &local_rhs, std::shared_ptr< gko::matrix::Dense< ValueType >> &global_rhs, std::shared_ptr< gko::matrix::Dense< ValueType >> &local_solution) |
Setup the vectors with default values and allocate mameory if not allocated. More... | |
virtual void | setup_local_matrices (Settings &settings, Metadata< ValueType, IndexType > &metadata, std::vector< unsigned int > &partition_indices, std::shared_ptr< gko::matrix::Csr< ValueType, IndexType >> &global_matrix, std::shared_ptr< gko::matrix::Csr< ValueType, IndexType >> &local_matrix, std::shared_ptr< gko::matrix::Csr< ValueType, IndexType >> &interface_matrix)=0 |
Sets up the local and the interface matrices from the global matrix and the partition indices. More... | |
Public Member Functions inherited from schwz::Settings | |
Settings (std::string executor_string="reference") | |
Public Attributes | |
std::vector< unsigned int > | partition_indices |
The partition indices containing the subdomains to which each row(vertex) of the matrix(graph) belongs to. | |
std::vector< unsigned int > | cell_weights |
The cell weights for the partition algorithm. | |
Public Attributes inherited from schwz::Settings | |
std::string | executor_string |
The string that contains the ginkgo executor paradigm. | |
std::shared_ptr< gko::Executor > | executor = gko::ReferenceExecutor::create() |
The ginkgo executor the code is to be executed on. | |
std::shared_ptr< device_guard > | cuda_device_guard |
The ginkgo executor the code is to be executed on. | |
partition_settings | partition = partition_settings::partition_regular |
gko::int32 | overlap = 2 |
The overlap between the subdomains. | |
std::string | matrix_filename = "null" |
The string that contains the matrix file name to read from . | |
bool | explicit_laplacian = true |
Flag if the laplacian matrix should be generated within the library. More... | |
bool | use_mixed_precision = false |
Flag if mixed precision should be used. | |
bool | enable_random_rhs = false |
Flag to enable a random rhs. | |
bool | print_matrices = false |
Flag to enable printing of matrices. | |
bool | debug_print = false |
Flag to enable some debug printing. | |
local_solver_settings | local_solver |
bool | non_symmetric_matrix = false |
Is the matrix non-symmetric ? , Use GMRES for local solves. | |
unsigned int | restart_iter = 1u |
The restart iter for the GMRES solver. | |
int | reset_local_crit_iter = -1 |
The global iter at which to reset the local solver criterion. | |
bool | naturally_ordered_factor = false |
Disables the re-ordering of the matrix before computing the triangular factors during the CHOLMOD factorization. More... | |
std::string | metis_objtype |
This setting defines the objective type for the metis partitioning. | |
bool | use_precond = false |
Enable the block jacobi local preconditioner for the local solver. | |
bool | write_debug_out = false |
Enable the writing of debug out to file. | |
bool | write_iters_and_residuals = false |
Enable writing the iters and residuals to a file. | |
bool | enable_logging = false |
Flag to enable logging for local iterative solvers. More... | |
bool | write_perm_data = false |
Enable the local permutations from CHOLMOD to a file. | |
int | shifted_iter = 1 |
Iteration shift for node local communication. | |
comm_settings | comm_settings |
convergence_settings | convergence_settings |
std::string | factorization = "cholmod" |
The factorization for the local direct solver. | |
std::string | reorder |
The reordering for the local solve. | |
Public Attributes inherited from schwz::Metadata< ValueType, IndexType > | |
MPI_Comm | mpi_communicator |
The MPI communicator. | |
gko::size_type | global_size = 0 |
The size of the global matrix. | |
gko::size_type | oned_laplacian_size = 0 |
The size of the 1 dimensional laplacian grid. | |
gko::size_type | local_size = 0 |
The size of the local subdomain matrix. | |
gko::size_type | local_size_x = 0 |
The size of the local subdomain matrix + the overlap. | |
gko::size_type | local_size_o = 0 |
The size of the local subdomain matrix + the overlap. | |
gko::size_type | overlap_size = 0 |
The size of the overlap between the subdomains. | |
gko::size_type | num_subdomains = 1 |
The number of subdomains used within the solver. | |
int | my_rank |
The rank of the subdomain. | |
int | my_local_rank |
The local rank of the subdomain. | |
int | local_num_procs |
The local number of procs in the subdomain. | |
int | comm_size |
The number of subdomains used within the solver, size of the communicator. | |
int | num_threads |
The number of threads used within the solver for each subdomain. | |
IndexType | iter_count |
The iteration count of the solver. | |
ValueType | tolerance |
The tolerance of the complete solver. More... | |
ValueType | local_solver_tolerance |
The tolerance of the local solver in case of an iterative solve. More... | |
IndexType | max_iters |
The maximum iteration count of the Schwarz solver. | |
IndexType | local_max_iters |
The maximum iteration count of the local iterative solver. | |
IndexType | updated_max_iters |
The updated maximum iteration count of the local iterative solver. | |
std::string | local_precond |
Local preconditioner. | |
unsigned int | precond_max_block_size |
The maximum block size for the preconditioner. | |
ValueType | current_residual_norm = -1.0 |
The current residual norm of the subdomain. | |
ValueType | min_residual_norm = -1.0 |
The minimum residual norm of the subdomain. | |
std::vector< std::tuple< int, int, int, std::string, std::vector< ValueType > > > | time_struct |
The struct used to measure the timings of each function within the solver loop. | |
std::vector< std::tuple< int, std::vector< std::tuple< int, int > >, std::vector< std::tuple< int, int > >, int, int > > | comm_data_struct |
The struct used to measure the timings of each function within the solver loop. | |
post_process_data | post_process_data |
double | init_mpi_wtime = 0.0 |
std::shared_ptr< gko::Array< IndexType > > | global_to_local |
The mapping containing the global to local indices. | |
std::shared_ptr< gko::Array< IndexType > > | local_to_global |
The mapping containing the local to global indices. | |
gko::Array< IndexType > | overlap_row |
The overlap row indices. | |
std::shared_ptr< gko::Array< IndexType > > | first_row |
The starting row of each subdomain in the matrix. | |
std::shared_ptr< gko::Array< IndexType > > | permutation |
The permutation used for the re-ordering. | |
std::shared_ptr< gko::Array< IndexType > > | i_permutation |
The inverse permutation used for the re-ordering. | |
Additional Inherited Members | |
Public Types inherited from schwz::Settings | |
enum | partition_settings { partition_regular = 0x0, partition_regular2d = 0x4, partition_metis = 0x1, partition_zoltan = 0x2, partition_custom = 0x3 } |
The partition algorithm to be used for partitioning the matrix. | |
enum | local_solver_settings { direct_solver_cholmod = 0x0, direct_solver_umfpack = 0x5, direct_solver_ginkgo = 0x1, iterative_solver_ginkgo = 0x2, iterative_solver_dealii = 0x3, solver_custom = 0x4 } |
The local solver algorithm for the local subdomain solves. | |
The initialization class that provides methods for initialization of the solver.
ValueType | The type of the floating point values. |
IndexType | The type of the index type values. |
void schwz::Initialize< ValueType, IndexType >::generate_rhs | ( | std::vector< ValueType > & | rhs | ) |
Generates the right hand side vector.
rhs | The rhs vector. |
References schwz::Initialize< ValueType, IndexType >::setup_global_matrix().
Referenced by schwz::SchwarzBase< ValueType, IndexType, MixedValueType >::initialize().
void schwz::Initialize< ValueType, IndexType >::partition | ( | const Settings & | settings, |
const Metadata< ValueType, IndexType > & | metadata, | ||
const std::shared_ptr< gko::matrix::Csr< ValueType, IndexType >> & | global_matrix, | ||
std::vector< unsigned int > & | partition_indices | ||
) |
The partitioning function.
Allows the partition of the global matrix depending with METIS and a regular 1D decomposition.
settings | The settings struct. |
metadata | The metadata struct. |
global_matrix | The global matrix. |
partition_indices | The partition indices [OUTPUT]. |
References schwz::Metadata< ValueType, IndexType >::global_size, schwz::Metadata< ValueType, IndexType >::my_rank, schwz::Metadata< ValueType, IndexType >::num_subdomains, and schwz::Settings::write_debug_out.
Referenced by schwz::SchwarzBase< ValueType, IndexType, MixedValueType >::initialize().
void schwz::Initialize< ValueType, IndexType >::setup_global_matrix | ( | const std::string & | filename, |
const gko::size_type & | oned_laplacian_size, | ||
std::shared_ptr< gko::matrix::Csr< ValueType, IndexType >> & | global_matrix | ||
) |
Generates the 2D global laplacian matrix.
oned_laplacian_size | The size of the one d laplacian grid. |
global_matrix | The global matrix. |
Referenced by schwz::Initialize< ValueType, IndexType >::generate_rhs(), and schwz::SchwarzBase< ValueType, IndexType, MixedValueType >::initialize().
|
pure virtual |
Sets up the local and the interface matrices from the global matrix and the partition indices.
settings | The settings struct. |
metadata | The metadata struct. |
partition_indices | The array containing the partition indices. |
global_matrix | The global system matrix. |
local_matrix | The local system matrix. |
interface_matrix | The interface matrix containing the interface and the overlap data mainly used for exchanging values between different sub-domains. |
local_perm | The local permutation, obtained through RCM or METIS. |
Implemented in schwz::SolverRAS< ValueType, IndexType, MixedValueType >.
Referenced by schwz::SchwarzBase< ValueType, IndexType, MixedValueType >::initialize().
void schwz::Initialize< ValueType, IndexType >::setup_vectors | ( | const Settings & | settings, |
const Metadata< ValueType, IndexType > & | metadata, | ||
std::vector< ValueType > & | rhs, | ||
std::shared_ptr< gko::matrix::Dense< ValueType >> & | local_rhs, | ||
std::shared_ptr< gko::matrix::Dense< ValueType >> & | global_rhs, | ||
std::shared_ptr< gko::matrix::Dense< ValueType >> & | local_solution | ||
) |
Setup the vectors with default values and allocate mameory if not allocated.
settings | The settings struct. |
metadata | The metadata struct. |
local_rhs | The local right hand side vector in the subdomain. |
global_rhs | The global right hand side vector. |
local_solution | The local solution vector in the subdomain. |
References schwz::Settings::executor, schwz::Metadata< ValueType, IndexType >::first_row, schwz::Metadata< ValueType, IndexType >::local_size_x, and schwz::Metadata< ValueType, IndexType >::my_rank.
Referenced by schwz::SchwarzBase< ValueType, IndexType, MixedValueType >::initialize().