DDM solvers

Builder

template<typename CoefficientPrecision, typename CoordinatePrecision = underlying_type<CoefficientPrecision>>
class DDMSolverBuilder

Public Functions

inline DDMSolverBuilder(DistributedOperator<CoefficientPrecision> &distributed_operator, HMatrix<CoefficientPrecision, CoordinatePrecision> &block_diagonal_hmatrix)
inline DDMSolverBuilder(DistributedOperator<CoefficientPrecision> &distributed_operator, HMatrix<CoefficientPrecision, CoordinatePrecision> &block_diagonal_hmatrix, const VirtualGenerator<CoefficientPrecision> &generator, const std::vector<int> &ovr_subdomain_to_global, const std::vector<int> &cluster_to_ovr_subdomain, const std::vector<int> &neighbors, const std::vector<std::vector<int>> &intersections)
inline DDMSolverBuilder(DistributedOperator<CoefficientPrecision> &distributed_operator, const std::vector<int> &ovr_subdomain_to_global, const std::vector<int> &cluster_to_ovr_subdomain, const std::vector<int> &neighbors, const std::vector<std::vector<int>> &intersections, const VirtualGenerator<CoefficientPrecision> &generator, int spatial_dimension, const CoordinatePrecision *global_geometry, const CoordinatePrecision *radii, const CoordinatePrecision *weights, const ClusterTreeBuilder<CoordinatePrecision> &cluster_tree_builder, const HMatrixTreeBuilder<CoefficientPrecision, CoordinatePrecision> &local_hmatrix_builder)
inline DDMSolverBuilder(DistributedOperator<CoefficientPrecision> &distributed_operator, const std::vector<int> &ovr_subdomain_to_global, const std::vector<int> &cluster_to_ovr_subdomain, const std::vector<int> &neighbors, const std::vector<std::vector<int>> &intersections, const VirtualGenerator<CoefficientPrecision> &generator, int spatial_dimension, const CoordinatePrecision *global_geometry, const ClusterTreeBuilder<CoordinatePrecision> &cluster_tree_builder, const HMatrixTreeBuilder<CoefficientPrecision, CoordinatePrecision> &local_hmatrix_builder)

Public Members

const std::vector<int> &local_to_global_numbering
std::unique_ptr<HMatrix<CoefficientPrecision, CoordinatePrecision>> local_hmatrix
std::array<Matrix<CoefficientPrecision>, 3> blocks_in_overlap
DDM<CoefficientPrecision, HPDDMCustomLocalSolver> solver

DDM

template<typename CoefficientPrecision, template<class> class LocalSolver>
class DDM

Public Functions

DDM(const DDM&) = delete
DDM &operator=(const DDM&) = delete
DDM(DDM &&cluster) noexcept = default
DDM &operator=(DDM &&cluster) noexcept = default
virtual ~DDM() = default
inline void clean()
inline DDM(int size_w_overlap, const DistributedOperator<CoefficientPrecision> &distributed_operator, std::unique_ptr<HPDDMOperator<CoefficientPrecision, LocalSolver>> hpddm_op)
inline void facto_one_level()
inline void build_coarse_space(VirtualCoarseSpaceBuilder<CoefficientPrecision> &coarse_space_builder, VirtualCoarseOperatorBuilder<CoefficientPrecision> &coarse_operator_builder)
inline void solve(const CoefficientPrecision *const rhs, CoefficientPrecision *const x, const int &mu = 1)
inline void print_infos() const
inline void save_infos(const std::string &outputname, std::ios_base::openmode mode = std::ios_base::app, const std::string &sep = " = ") const
inline void add_infos(std::string key, std::string value) const
inline void set_infos(std::string key, std::string value) const
inline std::string get_information(const std::string &key) const
inline std::map<std::string, std::string> get_information() const
inline int get_nevi() const
inline int get_local_size() const