Fluid structure interaction suite
distributed_lagrange.h
Go to the documentation of this file.
1 // ---------------------------------------------------------------------
2 //
3 // Copyright (C) 2022 by Luca Heltai
4 //
5 // This file is part of the FSI-suite platform, based on the deal.II library.
6 //
7 // The FSI-suite platform is free software; you can use it, redistribute it,
8 // and/or modify it under the terms of the GNU Lesser General Public License as
9 // published by the Free Software Foundation; either version 3.0 of the License,
10 // or (at your option) any later version. The full text of the license can be
11 // found in the file LICENSE at the top level of the FSI-suite platform
12 // distribution.
13 //
14 // ---------------------------------------------------------------------
15 
16 #ifndef pdes_distributed_lagrange_h
17 #define pdes_distributed_lagrange_h
18 
19 #include <deal.II/base/config.h>
20 
22 #include <deal.II/base/timer.h>
23 #include <deal.II/base/utilities.h>
24 
25 #include <deal.II/fe/mapping_fe.h>
26 
28 #include <deal.II/grid/tria.h>
29 
33 #include <deal.II/lac/vector.h>
34 
35 #include "lac.h"
36 #include "parsed_lac/amg.h"
39 #include "parsed_tools/constants.h"
40 #include "parsed_tools/data_out.h"
42 #include "parsed_tools/function.h"
47 #include "pdes/linear_problem.h"
48 
49 using namespace dealii;
50 namespace PDEs
51 {
52  template <int dim, int spacedim = dim, typename LacType = LAC::LAdealii>
53  class DistributedLagrange : public dealii::ParameterAcceptor
54  {
55  public:
57 
58  void
59  run();
60 
61  private:
62  void
63  generate_grids();
64 
65  void
66  setup_system();
67 
68  void
69  assemble_system();
70 
71  void
72  solve();
73 
74  void
75  output_results(const unsigned int cycle);
76 
78 
81 
84 
86 
87  typename LacType::SparsityPattern coupling_sparsity;
88  typename LacType::SparseMatrix coupling_matrix;
89 
91  };
92 
93  // namespace Serial
94  // {
95  // template <int dim, int spacedim = dim>
96  // using DistributedLagrange =
97  // PDEs::DistributedLagrange<dim, spacedim, LAC::LAdealii>;
98  // }
99 
100  // namespace MPI
101  // {
102  // template <int dim, int spacedim = dim>
103  // using DistributedLagrange =
104  // PDEs::DistributedLagrange<dim, spacedim, LAC::LAPETSc>;
105  // }
106 
107  namespace MPI
108  {
109  template <int dim, int spacedim = dim>
112  }
113 
114 } // namespace PDEs
115 
116 #endif
ParsedTools::NonMatchingCoupling< dim, spacedim > coupling
LacType::SparseMatrix coupling_matrix
PDEs::LinearProblem< dim, spacedim, LacType > embedded
GridTools::Cache< dim, spacedim > embedded_cache
PDEs::LinearProblem< spacedim, spacedim, LacType > space
GridTools::Cache< spacedim, spacedim > space_cache
LacType::SparsityPattern coupling_sparsity
ParsedLAC::InverseOperator mass_solver
Construct a LinearProblem.
A factory that can generate inverse operators according to parameter files.
Wrapper around several functions in the NonMatching namespace.
PDEs::DistributedLagrange< dim, spacedim, LAC::LATrilinos > DistributedLagrange
We collect in this namespace all PDEs that are relevant to Fluid Structure Interaction Problems.
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.
Definition: runner.h:219