Nektar++
Movement.h
Go to the documentation of this file.
1////////////////////////////////////////////////////////////////////////////////
2//
3// File: Movement.h
4//
5// For more information, please see: http://www.nektar.info/
6//
7// The MIT License
8//
9// Copyright (c) 2006 Division of Applied Mathematics, Brown University (USA),
10// Department of Aeronautics, Imperial College London (UK), and Scientific
11// Computing and Imaging Institute, University of Utah (USA).
12//
13// License for the specific language governing rights and limitations under
14// Permission is hereby granted, free of charge, to any person obtaining a
15// copy of this software and associated documentation files (the "Software"),
16// to deal in the Software without restriction, including without limitation
17// the rights to use, copy, modify, merge, publish, distribute, sublicense,
18// and/or sell copies of the Software, and to permit persons to whom the
19// Software is furnished to do so, subject to the following:
20//
21// The above copyright notice and this permission notice shall be included
22// in all copies or substantial portions of the Software.
23//
24// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
25// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
26// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
27// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
28// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
29// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
30// DEALINGS IN THE SOFTWARE.
31//
32// Description: This file contains the base class for implementing
33// non-conformal geometry using the Movement object
34//
35////////////////////////////////////////////////////////////////////////////////
36#ifndef NEKTAR_SPATIALDOMAINS_MOVEMENT_H
37#define NEKTAR_SPATIALDOMAINS_MOVEMENT_H
38
40
44
46{
47
48typedef std::map<std::pair<int, std::string>, InterfacePairShPtr>
50
52{
53public:
54 /// Default constructor
56 {
57 }
58 /// Constructor to read from XML file
61 MeshGraph *meshGraph);
62
63 /// Default destructor
65
66 /// Write the MOVEMENT section of the XML file
67 SPATIAL_DOMAINS_EXPORT void WriteMovement(TiXmlElement *root);
68
69 inline const InterfaceCollection &GetInterfaces() const
70 {
71 return m_interfaces;
72 }
73
74 inline const std::map<int, ZoneBaseShPtr> &GetZones() const
75 {
76 return m_zones;
77 }
78
79 // Unused - placeholder for ALE merge request
81
82 // Methods for manipulating the MOVEMENT data programatically
83 /// Add a zone object to this Movement data.
85 /// Add pair of interfaces to this data
87 InterfaceShPtr left,
88 InterfaceShPtr right);
89
90protected:
92 std::map<int, ZoneBaseShPtr> m_zones;
93 bool m_moveFlag = false; // Flags presence of moving zones
94
95private:
96 /// Read zones given TiXmlDocument
97 void ReadZones(TiXmlElement *zonesTag, MeshGraph *meshGraph,
99 /// Read interfaces given TiXmlDocument
100 void ReadInterfaces(TiXmlElement *interfacesTag, MeshGraph *meshGraph);
101};
102
103typedef std::shared_ptr<Movement> MovementSharedPtr;
104
105} // namespace Nektar::SpatialDomains
106
107#endif // NEKTAR_SPATIALDOMAINS_MOVEMENT_H
#define SPATIAL_DOMAINS_EXPORT
Base class for a spectral/hp element mesh.
Definition: MeshGraph.h:181
const std::map< int, ZoneBaseShPtr > & GetZones() const
Definition: Movement.h:74
const InterfaceCollection & GetInterfaces() const
Definition: Movement.h:69
void PerformMovement(NekDouble timeStep)
Movement()
Default constructor.
Definition: Movement.h:55
void ReadZones(TiXmlElement *zonesTag, MeshGraph *meshGraph, const LibUtilities::SessionReaderSharedPtr &pSession)
Read zones given TiXmlDocument.
void AddInterface(std::string name, InterfaceShPtr left, InterfaceShPtr right)
Add pair of interfaces to this data.
void ReadInterfaces(TiXmlElement *interfacesTag, MeshGraph *meshGraph)
Read interfaces given TiXmlDocument.
~Movement()=default
Default destructor.
void AddZone(ZoneBaseShPtr zone)
Add a zone object to this Movement data.
void WriteMovement(TiXmlElement *root)
Write the MOVEMENT section of the XML file.
InterfaceCollection m_interfaces
Definition: Movement.h:91
std::map< int, ZoneBaseShPtr > m_zones
Definition: Movement.h:92
std::shared_ptr< SessionReader > SessionReaderSharedPtr
std::shared_ptr< ZoneBase > ZoneBaseShPtr
Definition: Zones.h:144
std::shared_ptr< InterfacePair > InterfacePairShPtr
std::shared_ptr< Interface > InterfaceShPtr
std::shared_ptr< Movement > MovementSharedPtr
Definition: MeshGraph.h:177
std::map< std::pair< int, std::string >, InterfacePairShPtr > InterfaceCollection
Definition: Movement.h:49
double NekDouble