15#ifndef dealii_psblas_precondition_h
16#define dealii_psblas_precondition_h
22#ifdef DEAL_II_WITH_AMG4PSBLAS
24# include <amg_cbind.h>
29#ifdef DEAL_II_WITH_AMG4PSBLAS
30namespace PSCToolkitWrappers
57 explicit AdditionalData(
const char *cycle_type =
"VCYCLE",
58 const unsigned int n_cycles = 1,
59 const double aggregation_threshold = 1e-2,
60 const char *aggregation_type =
"SOC1",
61 const unsigned int aggregation_size = 8,
62 const char *smoother_type =
"FBGS",
63 const unsigned int smoother_sweeps = 2,
64 const char *aggr_prol =
"SMOOTHED",
65 const char *aggr_filter =
"FILTER",
66 const char *parallel_aggr_algorithm =
"DECOUPLED",
67 const char *coarse_type =
"BJAC",
68 const char *coarse_mat_type =
"DIST",
69 const bool output_details =
false)
70 : cycle_type(cycle_type)
72 , aggregation_threshold(aggregation_threshold)
73 , aggregation_type(strdup(aggregation_type))
74 , aggregation_size(aggregation_size)
75 , smoother_type(smoother_type)
76 , smoother_sweeps(smoother_sweeps)
77 , aggr_prol(aggr_prol)
78 , aggr_filter(aggr_filter)
79 , parallel_aggr_algorithm(parallel_aggr_algorithm)
80 , coarse_type(coarse_type)
81 , coarse_mat_type(coarse_mat_type)
82 , output_details(output_details)
90 const char *cycle_type;
95 unsigned int n_cycles;
100 double aggregation_threshold;
106 const char *aggregation_type;
114 unsigned int aggregation_size;
119 const char *smoother_type;
128 unsigned int smoother_sweeps;
134 const char *aggr_prol;
140 const char *aggr_filter;
146 const char *parallel_aggr_algorithm;
152 const char *coarse_type;
158 const char *coarse_mat_type;
186 const AdditionalData &additional_data = AdditionalData());
201 get_psblas_preconditioner();
225 amg_c_dprec *psblas_preconditioner;
230 std::shared_ptr<psb_c_descriptor> psblas_descriptor;
#define DEAL_II_NAMESPACE_OPEN
#define DEAL_II_NAMESPACE_CLOSE
types::global_dof_index size_type
PETScWrappers::PreconditionBoomerAMG PreconditionAMG
unsigned int global_dof_index