GEOS
PerfectlyMatchedLayer.hpp
1 /*
2  * ------------------------------------------------------------------------------------------------------------
3  * SPDX-License-Identifier: LGPL-2.1-only
4  *
5  * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC
6  * Copyright (c) 2018-2024 Total, S.A
7  * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University
8  * Copyright (c) 2023-2024 Chevron
9  * Copyright (c) 2019- GEOS/GEOSX Contributors
10  * All rights reserved
11  *
12  * See top level LICENSE, COPYRIGHT, CONTRIBUTORS, NOTICE, and ACKNOWLEDGEMENTS files for details.
13  * ------------------------------------------------------------------------------------------------------------
14  */
15 
16 /*
17  * PerfectlyMatchedLayer.hpp
18  *
19  */
20 
21 #ifndef GEOS_FIELDSPECIFICATION_PERFECTLYMATCHEDLAYER_HPP_
22 #define GEOS_FIELDSPECIFICATION_PERFECTLYMATCHEDLAYER_HPP_
23 
25 
26 namespace geos
27 {
28 
34 {
35 public:
41  PerfectlyMatchedLayer( string const & name, dataRepository::Group * const parent );
42 
47 
51  virtual ~PerfectlyMatchedLayer() = default;
52 
57  static string catalogName() { return "PML"; }
58 
63  R1Tensor32 getMin() const { return m_xMin; }
64 
69  R1Tensor32 getMax() const { return m_xMax; }
70 
75  real64 getReflectivity() const { return m_reflectivity; }
76 
81  R1Tensor32 getThicknessMinXYZ() const { return m_thicknessMinXYZ; }
82 
87  R1Tensor32 getThicknessMaxXYZ() const { return m_thicknessMaxXYZ; }
88 
93  R1Tensor32 getWaveSpeedMinXYZ() const { return m_waveSpeedMinXYZ; }
94 
99  R1Tensor32 getWaveSpeedMaxXYZ() const { return m_waveSpeedMaxXYZ; }
100 
105  {
107  static constexpr char const * xMinString() { return "xMin"; }
108 
110  static constexpr char const * xMaxString() { return "xMax"; }
111 
113  static constexpr char const * reflectivityString() { return "reflectivity"; }
114 
116  static constexpr char const * thicknessMinXYZString() { return "thicknessMinXYZ"; }
117 
119  static constexpr char const * thicknessMaxXYZString() { return "thicknessMaxXYZ"; }
120 
122  static constexpr char const * waveSpeedMinXYZString() { return "waveSpeedMinXYZ"; }
123 
125  static constexpr char const * waveSpeedMaxXYZString() { return "waveSpeedMaxXYZ"; }
126 
127  };
128 
132  static constexpr real64 minThickness = 0.001;
133 
137  static constexpr real64 smallestXMin = -999999.0;
138 
142  static constexpr real64 largestXMax = 999999.0;
143 
144 protected:
145 
146  virtual void postInputInitialization() override final;
147 
148 private:
149 
151  R1Tensor32 m_xMin;
152 
154  R1Tensor32 m_xMax;
155 
157  real32 m_reflectivity;
158 
160  R1Tensor32 m_thicknessMinXYZ;
161  R1Tensor32 m_thicknessMaxXYZ;
162 
164  R1Tensor32 m_waveSpeedMinXYZ;
165  R1Tensor32 m_waveSpeedMaxXYZ;
166 
167 };
168 
169 } /* namespace geos */
170 
171 #endif /* GEOS_FIELDSPECIFICATION_PERFECTLYMATCHEDLAYER_HPP_ */
real64 getReflectivity() const
Getter for the PML reflectivity.
R1Tensor32 getThicknessMinXYZ() const
Getter for the PML thickness.
R1Tensor32 getThicknessMaxXYZ() const
Getter for the PML thickness.
PerfectlyMatchedLayer()=delete
destructor
static constexpr real64 smallestXMin
Smallest possible values for xMin, below which they are computed internally.
R1Tensor32 getWaveSpeedMaxXYZ() const
Getter for the PML wave speed.
static string catalogName()
Static Factory Catalog Functions.
virtual ~PerfectlyMatchedLayer()=default
destructor
R1Tensor32 getMin() const
Getter for the PML minimum coordinates.
PerfectlyMatchedLayer(string const &name, dataRepository::Group *const parent)
constructor
R1Tensor32 getMax() const
Getter for the PML maximum coordinates.
static constexpr real64 minThickness
Safeguard for the minimum allowed PML thickness.
static constexpr real64 largestXMax
Largest possible values for xMax, below which they are computed internally.
R1Tensor32 getWaveSpeedMinXYZ() const
Getter for the PML wave speed.
virtual void postInputInitialization() override final
float real32
32-bit floating point type.
Definition: DataTypes.hpp:97
double real64
64-bit floating point type.
Definition: DataTypes.hpp:99
static constexpr char const * waveSpeedMaxXYZString()
static constexpr char const * thicknessMinXYZString()
static constexpr char const * waveSpeedMinXYZString()
static constexpr char const * reflectivityString()
static constexpr char const * thicknessMaxXYZString()