ExaDG
Loading...
Searching...
No Matches
interface_coupling.h
1/* ______________________________________________________________________
2 *
3 * ExaDG - High-Order Discontinuous Galerkin for the Exa-Scale
4 *
5 * Copyright (C) 2021 by the ExaDG authors
6 *
7 * This program is free software: you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation, either version 3 of the License, or
10 * (at your option) any later version.
11 *
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with this program. If not, see <https://www.gnu.org/licenses/>.
19 * ______________________________________________________________________
20 */
21
22#ifndef INCLUDE_FUNCTIONALITIES_INTERFACE_COUPLING_H_
23#define INCLUDE_FUNCTIONALITIES_INTERFACE_COUPLING_H_
24
25// deal.II
26#include <deal.II/numerics/vector_tools.h>
27
28// ExaDG
29#include <exadg/functions_and_boundary_conditions/container_interface_data.h>
30#include <exadg/utilities/tensor_utilities.h>
31
32namespace ExaDG
33{
34template<int rank, int dim, typename Number>
36{
37private:
38 static unsigned int const n_components = rank_to_n_components<rank, dim>();
39
40 using quad_index = unsigned int;
41
42 using VectorType = dealii::LinearAlgebra::distributed::Vector<Number>;
43
44public:
46
57 void
58 setup(std::shared_ptr<ContainerInterfaceData<rank, dim, double>> interface_data_dst_,
59 dealii::DoFHandler<dim> const & dof_handler_src_,
60 dealii::Mapping<dim> const & mapping_src_,
61 std::vector<bool> const & marked_vertices_src_,
62 double const tolerance_);
63
64 void
65 update_data(VectorType const & dof_vector_src);
66
67private:
68 /*
69 * dst-side
70 */
71 std::shared_ptr<ContainerInterfaceData<rank, dim, double>> interface_data_dst;
72
73 /*
74 * Evaluates solution on src-side in those points specified by dst-side
75 */
76 std::map<quad_index, std::unique_ptr<dealii::Utilities::MPI::RemotePointEvaluation<dim>>>
77 map_evaluator;
78
79 /*
80 * src-side
81 */
82 dealii::DoFHandler<dim> const * dof_handler_src;
83};
84
85} // namespace ExaDG
86
87#endif /* INCLUDE_FUNCTIONALITIES_INTERFACE_COUPLING_H_ */
Definition container_interface_data.h:45
Definition interface_coupling.h:36
void setup(std::shared_ptr< ContainerInterfaceData< rank, dim, double > > interface_data_dst_, dealii::DoFHandler< dim > const &dof_handler_src_, dealii::Mapping< dim > const &mapping_src_, std::vector< bool > const &marked_vertices_src_, double const tolerance_)
Definition interface_coupling.cpp:35
Definition driver.cpp:33