17 #ifndef pdes_linear_problem_h
18 #define pdes_linear_problem_h
61 #include <boost/signals2.hpp>
95 template <
int dim,
int spacedim = dim,
class LacType = LAC::LAdealii>
103 const std::string &problem_name =
"");
151 setup_transient(
ARKode &arkode);
156 static constexpr
bool lac_is_dealii =
157 std::is_same<LAC::LAdealii, LacType>::value;
162 static constexpr
bool lac_is_petsc =
163 std::is_same<LAC::LAPETSc, LacType>::value;
168 static constexpr
bool lac_is_trilinos =
169 std::is_same<LAC::LATrilinos, LacType>::value;
178 dealii::parallel::shared::Triangulation<dim, spacedim>,
179 dealii::parallel::distributed::Triangulation<dim, spacedim>>
::type;
217 assemble_system_one_cell(
229 copy_one_cell(
const CopyData ©);
270 custom_estimator(dealii::Vector<float> &error_per_cell)
const;
305 output_results(
const unsigned cycle)
const;
311 print_system_info()
const;
323 boost::signals2::signal<void(
const double &time,
324 const double &time_step,
325 const unsigned int &time_step_number)>
367 int number_of_threads = 1;
372 unsigned int verbosity_level = 4;
477 std::unique_ptr<Mapping<dim, spacedim>>
mapping;
523 typename LacType::BlockSparseMatrix
matrix;
545 typename LacType::BlockVector
rhs;
755 double start_time = 0.0;
760 double end_time = 1.0;
765 double desired_start_step_size = .0625;
770 unsigned int output_frequency = 1;
Construct a LinearProblem.
EvolutionType evolution_type
Describe the type of time evolution of the problem.
boost::signals2::signal< void()> check_consistency_call_back
Check consistency of the problem.
boost::signals2::signal< void()> add_constraints_call_back
A signal that is called at the end of setup_system()
boost::signals2::signal< void(const double &time, const double &time_step, const unsigned int &time_step_number)> advance_time_call_back
Connect to this signal to receive time information.
std::unique_ptr< Mapping< dim, spacedim > > mapping
The Mapping between reference and real elements.
Vector< float > error_per_cell
Storage for local error estimator.
ParsedTools::FiniteElement< dim, spacedim > finite_element
A wrapper around deal.II FiniteElement classes.
LacType::BlockVector solution
Solution vector.
ParsedLAC::InverseOperator inverse_operator
Inverse operator.
Triangulation triangulation
The problem triangulation.
LacType::BlockSparseMatrix mass_matrix
System matrix.
boost::signals2::signal< void()> assemble_system_call_back
A signal that is called at the end of assemble_system()
boost::signals2::signal< void(ParsedTools::DataOut< dim, spacedim > &)> add_data_vector
Connect to this signal to add data additional vectors to the output system.
boost::signals2::signal< void(ARKode &)> setup_arkode_call_back
Signal that is triggered after creating the arkode object.
ParsedTools::ConvergenceTable error_table
This is a wrapper around the ParsedConvergenceTable class, that allows you to specify what error to c...
const std::string component_names
Comma seperated names of components.
TimerOutput timer
Timing information.
ParsedTools::Function< spacedim > exact_solution
The actual function to use as a exact solution when computing the errors.
ParsedTools::GridGenerator< dim, spacedim > grid_generator
A wrapper around GridIn, GridOut, and GridGenerator namespace.
LacType::BlockSparseMatrix matrix
System matrix.
const std::string problem_name
Name of the problem to solve.
ConditionalOStream pcout
Output stream, only active on process 0.
ParsedTools::GridRefinement grid_refinement
Grid refinement and error estimation.
boost::signals2::signal< void()> setup_system_call_back
A signal that is called at the end of setup_system()
boost::signals2::signal< void()> output_results_call_back
A signal that is called at the end of output_results()
ParsedTools::Function< spacedim > initial_value
Only used for transient problems.
LacType::AMG mass_preconditioner
Preconditioner for the mass matrix.
const unsigned int n_components
Number of components.
ParsedLAC::InverseOperator mass_inverse_operator
Inverse operator for the mass matrix.
std::vector< IndexSet > locally_owned_dofs
All degrees of freedom owned by this MPI process.
const unsigned int mpi_rank
The mpi rank of this process.
typename BlockVectorType::BlockType VectorType
Vector type.
typename LacType::BlockVector BlockVectorType
Block vector type.
LacType::BlockSparsityPattern sparsity
System sparsity pattern.
ParsedTools::DataOut< dim, spacedim > data_out
Wrapper around the DataOut class.
ParsedTools::BoundaryConditions< spacedim > boundary_conditions
Boundary conditions used in this class.
virtual ~LinearProblem()=default
Virtual destructor.
std::vector< IndexSet > locally_relevant_dofs
All degrees of freedom needed for output and error estimation.
LacType::AMG preconditioner
Preconditioner.
LacType::BlockVector rhs
The system right hand side.
AffineConstraints< double > constraints
Hanging nodes and essential boundary conditions.
typename LacType::BlockSparseMatrix BlockMatrixType
Block matrix type.
Quadrature< dim > cell_quadrature
A quadrature used for cell integration.
const unsigned int mpi_size
The number of mpi processes.
std::vector< types::global_dof_index > dofs_per_block
Dofs per block.
MPI_Comm mpi_communicator
Global mpi communicator.
LacType::BlockVector locally_relevant_solution
A read only copy of the solution vector used for output and error estimation.
Quadrature< dim - 1 > face_quadrature
A quadrature used for face integration.
ParsedTools::Function< spacedim > forcing_term
The actual function to use as a forcing term.
typename SUNDIALS::ARKode< typename LacType::BlockVector > ARKode
SUNDIALS time integrator.
DoFHandler< dim, spacedim > dof_handler
Handler of degrees of freedom.
const std::string section_name
Name of the section to use within the parameter file.
ParsedTools::Proxy< typename SUNDIALS::ARKode< typename LacType::BlockVector >::AdditionalData > ark_ode_data
Configuration used to setup transient simulations.
A factory that can generate inverse operators according to parameter files.
We collect in this namespace all PDEs that are relevant to Fluid Structure Interaction Problems.
EvolutionType
Describe the dependencies of the linear problem w.r.t.
void run(char **argv, const std::string &input_parameter_file, const std::string &output_parameter_file)
Setup parameters from the command line, and call the Class::run() method.