DataTransferKit - Multiphysics Solution Transfer Services  2.0
DTK_BasicGeometryEntityImpl.hpp
Go to the documentation of this file.
1 //---------------------------------------------------------------------------//
2 /*
3  Copyright (c) 2012, Stuart R. Slattery
4  All rights reserved.
5 
6  Redistribution and use in source and binary forms, with or without
7  modification, are permitted provided that the following conditions are
8  met:
9 
10  *: Redistributions of source code must retain the above copyright
11  notice, this list of conditions and the following disclaimer.
12 
13  *: Redistributions in binary form must reproduce the above copyright
14  notice, this list of conditions and the following disclaimer in the
15  documentation and/or other materials provided with the distribution.
16 
17  *: Neither the name of the University of Wisconsin - Madison nor the
18  names of its contributors may be used to endorse or promote products
19  derived from this software without specific prior written permission.
20 
21  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
22  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
23  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
24  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
25  HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
26  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
27  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
28  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
29  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
30  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
31  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
32 */
33 //---------------------------------------------------------------------------//
39 //---------------------------------------------------------------------------//
40 
41 #ifndef DTK_BASICGEOMETRYENTITYIMPL_HPP
42 #define DTK_BASICGEOMETRYENTITYIMPL_HPP
43 
44 #include <iostream>
45 
46 #include "DTK_BasicGeometryExtraData.hpp"
47 #include "DTK_EntityImpl.hpp"
48 
49 #include <Teuchos_Array.hpp>
50 #include <Teuchos_ArrayView.hpp>
51 #include <Teuchos_Tuple.hpp>
52 
53 namespace DataTransferKit
54 {
55 //---------------------------------------------------------------------------//
66 //---------------------------------------------------------------------------//
68 {
69  public:
70  // Default constructor.
71  BasicGeometryEntityImpl() { /* ... */}
72 
73  // Destructor.
74  virtual ~BasicGeometryEntityImpl() { /* ... */}
75 
77 
82  virtual EntityId id() const override = 0;
83 
88  virtual int ownerRank() const override = 0;
89 
95  virtual int topologicalDimension() const override = 0;
96 
102  virtual int physicalDimension() const override = 0;
103 
109  virtual void
110  boundingBox( Teuchos::Tuple<double, 6> &bounds ) const override = 0;
111 
115  virtual bool inBlock( const int block_id ) const override = 0;
116 
120  virtual bool onBoundary( const int boundary_id ) const override = 0;
121 
125  virtual Teuchos::RCP<EntityExtraData> extraData() const override
126  {
127  return Teuchos::rcp( new BasicGeometryExtraData( this ) );
128  }
129 
133  virtual std::string description() const override = 0;
134 
138  virtual void
139  describe( Teuchos::FancyOStream &out,
140  const Teuchos::EVerbosityLevel verb_level ) const override = 0;
142 
144  // Return the entity measure with respect to the parameteric
146  virtual double measure() const = 0;
147 
148  // Compute the centroid of the entity.
149  virtual void
150  centroid( const Teuchos::ArrayView<double> &centroid ) const = 0;
151 
152  // (Reverse Map) Map a point to the reference space of an entity. Return
153  // the parameterized point.
154  virtual bool mapToReferenceFrame(
155  const Teuchos::ArrayView<const double> &point,
156  const Teuchos::ArrayView<double> &reference_point ) const = 0;
157 
158  // Determine if a reference point is in the parameterized space of an
159  // entity.
160  virtual bool checkPointInclusion(
161  const double tolerance,
162  const Teuchos::ArrayView<const double> &reference_point ) const = 0;
163 
164  // (Forward Map) Map a reference point to the physical space of an entity.
165  virtual void
166  mapToPhysicalFrame( const Teuchos::ArrayView<const double> &reference_point,
167  const Teuchos::ArrayView<double> &point ) const = 0;
169 };
170 
171 //---------------------------------------------------------------------------//
172 
173 } // end namespace DataTransferKit
174 
175 #endif // end DTK_BASICGEOMETRYENTITYIMPL_HPP
176 
177 //---------------------------------------------------------------------------//
178 // end DTK_BasicGeometryEntityImpl.hpp
179 //---------------------------------------------------------------------------//
virtual double measure() const =0
BasicGeometryEntityImpl interface.
virtual bool inBlock(const int block_id) const override=0
Determine if an entity is in the block with the given id.
virtual Teuchos::RCP< EntityExtraData > extraData() const override
Get the extra data on the entity.
virtual EntityId id() const override=0
EntityImpl interface.
virtual void describe(Teuchos::FancyOStream &out, const Teuchos::EVerbosityLevel verb_level) const override=0
Provide a verbose description of the object.
virtual bool onBoundary(const int boundary_id) const override=0
Determine if an entity is on the boundary with the given id.
virtual std::string description() const override=0
Provide a one line description of the object.
unsigned long int EntityId
Entity id type.
Definition: DTK_Types.hpp:50
virtual int ownerRank() const override=0
Get the parallel rank that owns the entity.
A base class for setting extra data with entities.
virtual int topologicalDimension() const override=0
Return the topological dimension of the entity.
virtual int physicalDimension() const override=0
Return the physical dimension of the entity.
virtual void boundingBox(Teuchos::Tuple< double, 6 > &bounds) const override=0
Return the Cartesian bounding box around an entity.
Geometric entity implementation definition.
DTK_BasicEntitySet.cpp.