|
@@ -25,19 +25,32 @@ namespace Lemma {
|
25
|
25
|
/// \brief 1D layered earth. Attributes include all aspects of
|
26
|
26
|
/// Cole-Cole model.
|
27
|
27
|
/// \details Primarily used for EM calculations.
|
|
28
|
+ /** @todo Layer 0 can be set right now, but all logic ignores and assumes
|
|
29
|
+ air layer. This is surprising to users and constitutes a bug.
|
|
30
|
+ */
|
28
|
31
|
// =======================================================================
|
29
|
32
|
class LayeredEarthEM : public LayeredEarth {
|
30
|
33
|
|
31
|
|
- public:
|
|
34
|
+ // ==================== FRIENDS ===========================
|
|
35
|
+ /** Recursively streams information about this class */
|
|
36
|
+ friend std::ostream &operator<<(std::ostream &stream, const LayeredEarthEM &ob);
|
|
37
|
+
|
32
|
38
|
|
33
|
|
- // ==================== FRIENDS ===========================
|
|
39
|
+ struct ctor_key {};
|
34
|
40
|
|
35
|
|
- /** Recursively streams information about this class */
|
36
|
|
- friend std::ostream &operator<<(std::ostream &stream,
|
37
|
|
- const LayeredEarthEM &ob);
|
|
41
|
+ public:
|
38
|
42
|
|
39
|
43
|
// ==================== LIFECYCLE ===========================
|
40
|
44
|
|
|
45
|
+ /** Default protected constructor. */
|
|
46
|
+ explicit LayeredEarthEM ( const ctor_key& );
|
|
47
|
+
|
|
48
|
+ /** Default protected constructor. */
|
|
49
|
+ LayeredEarthEM ( const YAML::Node& node, const ctor_key& );
|
|
50
|
+
|
|
51
|
+ /** Default protected constructor. */
|
|
52
|
+ virtual ~LayeredEarthEM ();
|
|
53
|
+
|
41
|
54
|
/**
|
42
|
55
|
* Factory method for generating concrete class.
|
43
|
56
|
* @return a std::shared_ptr of type LayeredEarthEM
|
|
@@ -240,23 +253,8 @@ namespace Lemma {
|
240
|
253
|
|
241
|
254
|
protected:
|
242
|
255
|
|
243
|
|
- // ==================== LIFECYCLE ===========================
|
244
|
|
-
|
245
|
|
- /** Default protected constructor. */
|
246
|
|
- LayeredEarthEM ( );
|
247
|
|
-
|
248
|
|
- /** Default protected constructor. */
|
249
|
|
- LayeredEarthEM (const YAML::Node& node);
|
250
|
|
-
|
251
|
|
- /** Default protected constructor. */
|
252
|
|
- ~LayeredEarthEM ();
|
253
|
|
-
|
254
|
|
- /**
|
255
|
|
- * @copybrief LemmaObject::Release()
|
256
|
|
- * @copydetails LemmaObject::Release()
|
257
|
|
- */
|
258
|
|
- void Release();
|
259
|
256
|
|
|
257
|
+ private:
|
260
|
258
|
// ==================== DATA MEMBERS ===========================
|
261
|
259
|
|
262
|
260
|
/** Vector of layer Conductivity */
|
|
@@ -304,8 +302,6 @@ namespace Lemma {
|
304
|
302
|
/** Relaxation breath for each layer */
|
305
|
303
|
VectorXr LayerBreathPermitivity;
|
306
|
304
|
|
307
|
|
- private:
|
308
|
|
-
|
309
|
305
|
/** ASCII string representation of the class name */
|
310
|
306
|
static constexpr auto CName = "LayeredEarthEM";
|
311
|
307
|
|