Fluid structure interaction suite
compute_intersections.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 #ifndef compute_intersections_h
16 #define compute_intersections_h
17 
18 #include <deal.II/base/config.h>
19 
22 
23 #include <deal.II/fe/mapping.h>
24 #include <deal.II/fe/mapping_q1.h>
25 
28 #include <deal.II/grid/tria.h>
29 
30 #include <set>
31 #include <tuple>
32 #include <vector>
33 
34 
35 namespace dealii
36 {
37  namespace NonMatching
38  {
55  template <int dim0, int dim1, int spacedim>
56  dealii::Quadrature<spacedim>
58  const typename dealii::Triangulation<dim0, spacedim>::cell_iterator
59  &cell0,
60  const typename dealii::Triangulation<dim1, spacedim>::cell_iterator
61  &cell1,
62  const unsigned int degree,
63  const dealii::Mapping<dim0, spacedim> &mapping0 =
64  (dealii::ReferenceCells::get_hypercube<dim0>()
65  .template get_default_linear_mapping<dim0, spacedim>()),
66  const dealii::Mapping<dim1, spacedim> &mapping1 =
67  (dealii::ReferenceCells::get_hypercube<dim1>()
68  .template get_default_linear_mapping<dim1, spacedim>()));
69 
70 
87  template <int dim0, int dim1, int spacedim>
88  std::vector<
89  std::tuple<typename dealii::Triangulation<dim0, spacedim>::cell_iterator,
90  typename dealii::Triangulation<dim1, spacedim>::cell_iterator,
91  dealii::Quadrature<spacedim>>>
93  const GridTools::Cache<dim1, spacedim> &immersed_cache,
94  const unsigned int degree,
95  const double tol = 0.);
96 
97 
98 
99  } // namespace NonMatching
100 } // namespace dealii
101 #endif
Quadrature< spacedim > compute_intersection(const typename Triangulation< dim0, spacedim >::cell_iterator &cell0, const typename Triangulation< dim1, spacedim >::cell_iterator &cell1, const unsigned int degree, const Mapping< dim0, spacedim > &mapping0=(ReferenceCells::get_hypercube< dim0 >() .template get_default_linear_mapping< dim0, spacedim >()), const Mapping< dim1, spacedim > &mapping1=(ReferenceCells::get_hypercube< dim1 >() .template get_default_linear_mapping< dim1, spacedim >()))
Intersect cell0 and cell1 and construct a Quadrature<spacedim> of degree degreeover the intersection,...