13#ifndef dealii_psblas_precondition_h
14#define dealii_psblas_precondition_h
20#ifdef DEAL_II_WITH_AMG4PSBLAS
22# include <amg_cbind.h>
27#ifdef DEAL_II_WITH_AMG4PSBLAS
28namespace PSCToolkitWrappers
55 explicit AdditionalData(
const char *cycle_type =
"VCYCLE",
56 const unsigned int n_cycles = 1,
57 const double aggregation_threshold = 1e-2,
58 const char *aggregation_type =
"SOC1",
59 const unsigned int aggregation_size = 8,
60 const char *smoother_type =
"FBGS",
61 const unsigned int smoother_sweeps = 2,
62 const char *aggr_prol =
"SMOOTHED",
63 const char *aggr_filter =
"FILTER",
64 const char *parallel_aggr_algorithm =
"DECOUPLED",
65 const char *coarse_type =
"BJAC",
66 const char *coarse_mat_type =
"DIST",
67 const bool output_details =
false)
68 : cycle_type(cycle_type)
70 , aggregation_threshold(aggregation_threshold)
71 , aggregation_type(strdup(aggregation_type))
72 , aggregation_size(aggregation_size)
73 , smoother_type(smoother_type)
74 , smoother_sweeps(smoother_sweeps)
75 , aggr_prol(aggr_prol)
76 , aggr_filter(aggr_filter)
77 , parallel_aggr_algorithm(parallel_aggr_algorithm)
78 , coarse_type(coarse_type)
79 , coarse_mat_type(coarse_mat_type)
80 , output_details(output_details)
88 const char *cycle_type;
93 unsigned int n_cycles;
98 double aggregation_threshold;
104 const char *aggregation_type;
112 unsigned int aggregation_size;
117 const char *smoother_type;
126 unsigned int smoother_sweeps;
132 const char *aggr_prol;
138 const char *aggr_filter;
144 const char *parallel_aggr_algorithm;
150 const char *coarse_type;
156 const char *coarse_mat_type;
184 const AdditionalData &additional_data = AdditionalData());
199 get_psblas_preconditioner();
223 amg_c_dprec *psblas_preconditioner;
228 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