libMesh
Loading...
Searching...
No Matches
dtk_solution_transfer.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 DTKSOLUTIONTRANSFER_H
21#define DTKSOLUTIONTRANSFER_H
22
23#include "libmesh/libmesh_config.h"
24
25#ifdef LIBMESH_TRILINOS_HAVE_DTK
26
27// libMesh includes
28#include "libmesh/solution_transfer.h"
29#include "libmesh/dtk_adapter.h"
30
31#include "libmesh/ignore_warnings.h"
32
33// Trilinos includes
34#include <Teuchos_CommHelpers.hpp>
35#include <Teuchos_DefaultComm.hpp>
36
37// DTK includes
38#include <DTK_SharedDomainMap.hpp>
39
40#include "libmesh/restore_warnings.h"
41
42// C++ includes
43#include <string>
44#include <memory>
45
46namespace libMesh
47{
48
58{
59public:
62
74 virtual void transfer(const Variable & from_var, const Variable & to_var) override;
75
76protected:
77 typedef DataTransferKit::SharedDomainMap<DTKAdapter::MeshContainerType,DTKAdapter::MeshContainerType> shared_domain_map_type;
78
80 Teuchos::RCP<const Teuchos::Comm<int>> comm_default;
81
83 std::map<EquationSystems *, std::unique_ptr<DTKAdapter>> adapters;
84
86 std::map<std::pair<EquationSystems *, EquationSystems *>, std::unique_ptr<shared_domain_map_type>> dtk_maps;
87};
88
89} // namespace libMesh
90
91#endif // #ifdef LIBMESH_TRILINOS_HAVE_DTK
92
93#endif // #define DTKSOLUTIONTRANSFER_H
Implementation of a SolutionTransfer object that uses the DataTransferKit (https://github....
std::map< std::pair< EquationSystems *, EquationSystems * >, std::unique_ptr< shared_domain_map_type > > dtk_maps
The dtk shared domain maps for pairs of EquationSystems (from, to)
std::map< EquationSystems *, std::unique_ptr< DTKAdapter > > adapters
The DTKAdapter associated with each EquationSystems.
Teuchos::RCP< const Teuchos::Comm< int > > comm_default
COMM_WORLD for now.
DataTransferKit::SharedDomainMap< DTKAdapter::MeshContainerType, DTKAdapter::MeshContainerType > shared_domain_map_type
virtual void transfer(const Variable &from_var, const Variable &to_var) override
Transfer the values of a variable to another.
const Parallel::Communicator & comm() const
Base class for objects that allow transferring variable values between different systems with differe...
This class defines the notion of a variable in the system.
Definition variable.h:51
The libMesh namespace provides an interface to certain functionality in the library.