libMesh
Loading...
Searching...
No Matches
dtk_adapter.h
Go to the documentation of this file.
1// The libMesh Finite Element Library.
2// Copyright (C) 2002-2026 Benjamin S. Kirk, John W. Peterson, Roy H. Stogner
3
4// This library is free software; you can redistribute it and/or
5// modify it under the terms of the GNU Lesser General Public
6// License as published by the Free Software Foundation; either
7// version 2.1 of the License, or (at your option) any later version.
8
9// This library is distributed in the hope that it will be useful,
10// but WITHOUT ANY WARRANTY; without even the implied warranty of
11// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12// Lesser General Public License for more details.
13
14// You should have received a copy of the GNU Lesser General Public
15// License along with this library; if not, write to the Free Software
16// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17
18
19
20#ifndef DTKADAPTER_H
21#define DTKADAPTER_H
22
23#include "libmesh/libmesh_config.h"
24
25#ifdef LIBMESH_TRILINOS_HAVE_DTK
26
27#include "libmesh/dtk_evaluator.h"
28
29#include "libmesh/ignore_warnings.h"
30#include <DTK_MeshManager.hpp>
31#include <DTK_MeshContainer.hpp>
32#include <DTK_MeshTraits.hpp>
33#include <DTK_MeshTraitsFieldAdapter.hpp>
34#include <DTK_FieldManager.hpp>
35#include <DTK_FieldContainer.hpp>
36#include <DTK_FieldEvaluator.hpp>
37
38#include <Teuchos_RCP.hpp>
39#include <Teuchos_ArrayRCP.hpp>
40#include "libmesh/restore_warnings.h"
41
42namespace libMesh
43{
44
53{
54public:
55 DTKAdapter(Teuchos::RCP<const Teuchos::Comm<int>> in_comm, EquationSystems & in_es);
56
57 typedef DataTransferKit::MeshContainer<int> MeshContainerType;
58 typedef DataTransferKit::FieldContainer<double> FieldContainerType;
59 typedef DataTransferKit::MeshTraits<MeshContainerType>::global_ordinal_type GlobalOrdinal;
60 typedef DataTransferKit::FieldEvaluator<GlobalOrdinal,FieldContainerType> EvaluatorType;
61 typedef Teuchos::RCP<EvaluatorType> RCP_Evaluator;
62
63
64 Teuchos::RCP<DataTransferKit::MeshManager<MeshContainerType>> get_mesh_manager() { return mesh_manager; }
65 RCP_Evaluator get_variable_evaluator(std::string var_name);
66 Teuchos::RCP<DataTransferKit::FieldManager<MeshContainerType>> get_target_coords() { return target_coords; }
67 Teuchos::RCP<DataTransferKit::FieldManager<FieldContainerType>> get_values_to_fill(std::string var_name);
68
73 void update_variable_values(std::string var_name);
74
75protected:
81 System * find_sys(std::string var_name);
82
86 DataTransferKit::DTK_ElementTopology get_element_topology(const Elem * elem);
87
92 void get_semi_local_nodes(std::set<unsigned int> & semi_local_nodes);
93
94 Teuchos::RCP<const Teuchos::Comm<int>> comm;
96 const MeshBase & mesh;
97 unsigned int dim;
98
99 unsigned int num_local_nodes;
100 Teuchos::ArrayRCP<int> vertices;
101
102 Teuchos::RCP<DataTransferKit::MeshManager<MeshContainerType>> mesh_manager;
104 Teuchos::RCP<DataTransferKit::FieldManager<MeshContainerType>> target_coords;
105
107 std::map<std::string, Teuchos::RCP<DataTransferKit::FieldManager<FieldContainerType>>> values_to_fill;
108
110 std::map<std::string, RCP_Evaluator> evaluators;
111};
112
113} // namespace libMesh
114
115#endif // #ifdef LIBMESH_TRILINOS_HAVE_DTK
116
117#endif // #define DTKADAPTER_H
The DTKAdapter is used with the DTKSolutionTransfer object to adapt libmesh data to the DTK interface...
Definition dtk_adapter.h:53
Teuchos::RCP< DataTransferKit::FieldManager< MeshContainerType > > target_coords
Teuchos::RCP< DataTransferKit::FieldManager< FieldContainerType > > get_values_to_fill(std::string var_name)
const MeshBase & mesh
Definition dtk_adapter.h:96
Teuchos::RCP< DataTransferKit::FieldManager< MeshContainerType > > get_target_coords()
Definition dtk_adapter.h:66
DataTransferKit::MeshContainer< int > MeshContainerType
Definition dtk_adapter.h:57
Teuchos::ArrayRCP< int > vertices
DataTransferKit::FieldEvaluator< GlobalOrdinal, FieldContainerType > EvaluatorType
Definition dtk_adapter.h:60
Teuchos::RCP< DataTransferKit::MeshManager< MeshContainerType > > mesh_manager
std::map< std::string, RCP_Evaluator > evaluators
Map of variable names to RCP_Evaluator objects.
Teuchos::RCP< EvaluatorType > RCP_Evaluator
Definition dtk_adapter.h:61
DataTransferKit::MeshTraits< MeshContainerType >::global_ordinal_type GlobalOrdinal
Definition dtk_adapter.h:59
DataTransferKit::DTK_ElementTopology get_element_topology(const Elem *elem)
RCP_Evaluator field_evaluator
unsigned int dim
Definition dtk_adapter.h:97
void get_semi_local_nodes(std::set< unsigned int > &semi_local_nodes)
Helper function that fills the std::set with all of the node numbers of nodes connected to local elem...
Teuchos::RCP< DataTransferKit::MeshManager< MeshContainerType > > get_mesh_manager()
Definition dtk_adapter.h:64
System * find_sys(std::string var_name)
Small helper function for finding the system containing the variable.
std::map< std::string, Teuchos::RCP< DataTransferKit::FieldManager< FieldContainerType > > > values_to_fill
Map of variable names to arrays to be filled by a transfer.
RCP_Evaluator get_variable_evaluator(std::string var_name)
DataTransferKit::FieldContainer< double > FieldContainerType
Definition dtk_adapter.h:58
EquationSystems & es
Definition dtk_adapter.h:95
void update_variable_values(std::string var_name)
After computing values for a variable in this EquationSystems we need to take those values and put th...
unsigned int num_local_nodes
Definition dtk_adapter.h:99
Teuchos::RCP< const Teuchos::Comm< int > > comm
Definition dtk_adapter.h:94
This is the base class from which all geometric element types are derived.
Definition elem.h:96
This is the EquationSystems class.
This is the MeshBase class.
Definition mesh_base.h:81
Manages consistently variables, degrees of freedom, and coefficient vectors.
Definition system.h:100
The libMesh namespace provides an interface to certain functionality in the library.